diff options
author | Gaudenz Alder <gaudenz@jgraph.com> | 2019-02-04 13:57:34 +0300 |
---|---|---|
committer | Gaudenz Alder <gaudenz@jgraph.com> | 2019-02-04 13:57:34 +0300 |
commit | 67fe80b89c6ea97b616435cc57d696561a496de6 (patch) | |
tree | 0fff94a9e439a2d4fe37879a81184eea1dde2da3 | |
parent | 7751370818bb5843567f5b4454a01db6524320d0 (diff) |
10.1.7 releasev10.1.7
Former-commit-id: 7afbb1fb4e3d6079306e02543a645595a9c88030
130 files changed, 11724 insertions, 8688 deletions
@@ -1,3 +1,30 @@ +04-FEB-2019: 10.1.7 + +- Adds auto-resolution for Google add-ons +- Fixes minimum height for empty viewer +- Fixes shadow in SVG export/embed +- Fixes possible 404 in GitHub + +29-JAN-2019: 10.1.6 + +- Removes alert for link errors +- Removes sync button + +28-JAN-2019: 10.1.5 + +- Uses mxGraph 3.9.13 beta 14 + +25-JAN-2019: 10.1.4 + +- Adds download button in save dialog +- Adds shift to ignore current style +- Uses mxGraph 3.9.13 beta 13 + +21-JAN-2019: 10.1.3 + +- Fixes possible NPEs +- Uses mxGraph 3.9.13 beta 12 + 18-JAN-2019: 10.1.2 - Adds debug output @@ -1 +1 @@ -10.1.2
\ No newline at end of file +10.1.7
\ No newline at end of file diff --git a/etc/mxgraph/mxClient.js b/etc/mxgraph/mxClient.js index 43df709a..f1b1d443 100644 --- a/etc/mxgraph/mxClient.js +++ b/etc/mxgraph/mxClient.js @@ -47,50 +47,50 @@ b(g.childNodes),e<a.length-1&&0<=mxUtils.indexOf(c,a[e+1].nodeName)&&d.push("\n" a.innerText=b:a[void 0===a.textContent?"text":"textContent"]=b},getInnerHtml:function(){return mxClient.IS_IE?function(a){return null!=a?a.innerHTML:""}:function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),getOuterHtml:function(){return mxClient.IS_IE?function(a){if(null!=a){if(null!=a.outerHTML)return a.outerHTML;var b=[];b.push("<"+a.nodeName);var c=a.attributes;if(null!=c)for(var d=0;d<c.length;d++){var e=c[d].value;null!=e&&0<e.length&&(b.push(" "),b.push(c[d].nodeName), b.push('="'),b.push(e),b.push('"'))}0==a.innerHTML.length?b.push("/>"):(b.push(">"),b.push(a.innerHTML),b.push("</"+a.nodeName+">"));return b.join("")}return""}:function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),write:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&a.appendChild(c);return c},writeln:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&(a.appendChild(c),a.appendChild(document.createElement("br")));return c},br:function(a,b){b=b||1;for(var c= null,d=0;d<b;d++)null!=a&&(c=a.ownerDocument.createElement("br"),a.appendChild(c));return c},button:function(a,b,c){c=null!=c?c:document;c=c.createElement("button");mxUtils.write(c,a);mxEvent.addListener(c,"click",function(a){b(a)});return c},para:function(a,b){var c=document.createElement("p");mxUtils.write(c,b);null!=a&&a.appendChild(c);return c},addTransparentBackgroundFilter:function(a){a.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"}, -linkAction:function(a,b,c,d,e){return mxUtils.link(a,b,function(){c.execute(d)},e)},linkInvoke:function(a,b,c,d,e,f){return mxUtils.link(a,b,function(){c[d](e)},f)},link:function(a,b,c,d){var e=document.createElement("span");e.style.color="blue";e.style.textDecoration="underline";e.style.cursor="pointer";null!=d&&(e.style.paddingLeft=d+"px");mxEvent.addListener(e,"click",c);mxUtils.write(e,b);null!=a&&a.appendChild(e);return e},fit:function(a){var b=parseInt(a.offsetLeft),c=parseInt(a.offsetWidth), -d=mxUtils.getDocumentScrollOrigin(a.ownerDocument),e=d.x,d=d.y,f=document.body,g=document.documentElement,k=e+(f.clientWidth||g.clientWidth);b+c>k&&(a.style.left=Math.max(e,k-c)+"px");b=parseInt(a.offsetTop);c=parseInt(a.offsetHeight);f=d+Math.max(f.clientHeight||0,g.clientHeight);b+c>f&&(a.style.top=Math.max(d,f-c)+"px")},load:function(a){a=new mxXmlRequest(a,null,"GET",!1);a.send();return a},get:function(a,b,c,d,e,f){a=new mxXmlRequest(a,null,"GET");null!=d&&a.setBinary(d);a.send(b,c,e,f);return a}, -getAll:function(a,b,c){for(var d=a.length,e=[],f=0,g=function(){0==f&&null!=c&&c();f++},k=0;k<a.length;k++)(function(a,c){mxUtils.get(a,function(a){var f=a.getStatus();200>f||299<f?g():(e[c]=a,d--,0==d&&b(e))},g)})(a[k],k);0==d&&b(e)},post:function(a,b,c,d){return(new mxXmlRequest(a,b)).send(c,d)},submit:function(a,b,c,d){return(new mxXmlRequest(a,b)).simulate(c,d)},loadInto:function(a,b,c){mxClient.IS_IE?b.onreadystatechange=function(){4==b.readyState&&c()}:b.addEventListener("load",c,!1);b.load(a)}, -getValue:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c);return a},getNumber:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c||0);return Number(a)},getColor:function(a,b,c){a=null!=a?a[b]:null;null==a?a=c:a==mxConstants.NONE&&(a=null);return a},clone:function(a,b,c){c=null!=c?c:!1;var d=null;if(null!=a&&"function"==typeof a.constructor){var d=new a.constructor,e;for(e in a)e!=mxObjectIdentity.FIELD_NAME&&(null==b||0>mxUtils.indexOf(b,e))&&(d[e]=c||"object"!=typeof a[e]?a[e]:mxUtils.clone(a[e]))}return d}, -equalPoints:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b)for(var c=0;c<a.length;c++)if(a[c]==b[c]||null!=a[c]&&!a[c].equals(b[c]))return!1;return!0},equalEntries:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b){var c=0,d;for(d in b)c++;for(d in a)if(c--,!(mxUtils.isNaN(a[d])&&mxUtils.isNaN(b[d])||a[d]==b[d]))return!1}return 0==c},removeDuplicates:function(a){for(var b= -new mxDictionary,c=[],d=0;d<a.length;d++)b.get(a[d])||(c.push(a[d]),b.put(a[d],!0));return c},isNaN:function(a){return"number"==typeof a&&isNaN(a)},extend:function(a,b){var c=function(){};c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a},toString:function(a){var b="",c;for(c in a)try{if(null==a[c])b+=c+" = [null]\n";else if("function"==typeof a[c])b+=c+" => [Function]\n";else if("object"==typeof a[c])var d=mxUtils.getFunctionName(a[c].constructor),b=b+(c+" => ["+d+"]\n");else b+= -c+" = "+a[c]+"\n"}catch(e){b+=c+"="+e.message}return b},toRadians:function(a){return Math.PI*a/180},toDegree:function(a){return 180*a/Math.PI},arcToCurves:function(a,b,c,d,e,f,g,k,l){k-=a;l-=b;if(0===c||0===d)return q;c=Math.abs(c);d=Math.abs(d);var m=-k/2,n=-l/2,p=Math.cos(e*Math.PI/180),q=Math.sin(e*Math.PI/180);e=p*m+q*n;var m=-1*q*m+p*n,n=e*e,r=m*m,t=c*c,u=d*d,x=n/t+r/u;1<x?(c*=Math.sqrt(x),d*=Math.sqrt(x),f=0):(x=1,f===g&&(x=-1),f=x*Math.sqrt((t*u-t*r-u*n)/(t*r+u*n)));n=f*c*m/d;r=-1*f*d*e/c; -k=p*n-q*r+k/2;l=q*n+p*r+l/2;t=Math.atan2((m-r)/d,(e-n)/c)-Math.atan2(0,1);f=0<=t?t:2*Math.PI+t;t=Math.atan2((-m-r)/d,(-e-n)/c)-Math.atan2((m-r)/d,(e-n)/c);e=0<=t?t:2*Math.PI+t;0==g&&0<e?e-=2*Math.PI:0!=g&&0>e&&(e+=2*Math.PI);g=2*e/Math.PI;g=Math.ceil(0>g?-1*g:g);e/=g;m=8/3*Math.sin(e/4)*Math.sin(e/4)/Math.sin(e/2);n=p*c;p*=d;c*=q;d*=q;for(var y=Math.cos(f),A=Math.sin(f),r=-m*(n*A+d*y),t=-m*(c*A-p*y),q=[],z=0;z<g;++z){f+=e;var y=Math.cos(f),A=Math.sin(f),u=n*y-d*A+k,x=c*y+p*A+l,v=-m*(n*A+d*y),y=-m* -(c*A-p*y),A=6*z;q[A]=Number(r+a);q[A+1]=Number(t+b);q[A+2]=Number(u-v+a);q[A+3]=Number(x-y+b);q[A+4]=Number(u+a);q[A+5]=Number(x+b);r=u+v;t=x+y}return q},getBoundingBox:function(a,b,c){var d=null;if(null!=a&&null!=b&&0!=b){b=mxUtils.toRadians(b);var d=Math.cos(b),e=Math.sin(b);c=null!=c?c:new mxPoint(a.x+a.width/2,a.y+a.height/2);var f=new mxPoint(a.x,a.y);b=new mxPoint(a.x+a.width,a.y);var g=new mxPoint(b.x,a.y+a.height);a=new mxPoint(a.x,g.y);f=mxUtils.getRotatedPoint(f,d,e,c);b=mxUtils.getRotatedPoint(b, -d,e,c);g=mxUtils.getRotatedPoint(g,d,e,c);a=mxUtils.getRotatedPoint(a,d,e,c);d=new mxRectangle(f.x,f.y,0,0);d.add(new mxRectangle(b.x,b.y,0,0));d.add(new mxRectangle(g.x,g.y,0,0));d.add(new mxRectangle(a.x,a.y,0,0))}return d},getRotatedPoint:function(a,b,c,d){d=null!=d?d:new mxPoint;var e=a.x-d.x;a=a.y-d.y;return new mxPoint(e*b-a*c+d.x,a*b+e*c+d.y)},getPortConstraints:function(a,b,c,d){b=mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT,mxUtils.getValue(b.style,c?mxConstants.STYLE_SOURCE_PORT_CONSTRAINT: -mxConstants.STYLE_TARGET_PORT_CONSTRAINT,null));if(null==b)return d;d=b.toString();b=mxConstants.DIRECTION_MASK_NONE;c=0;1==mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT_ROTATION,0)&&(c=mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION,0));a=0;45<c?(a=1,135<=c&&(a=2)):-45>c&&(a=3,-135>=c&&(a=2));if(0<=d.indexOf(mxConstants.DIRECTION_NORTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 1:b|=mxConstants.DIRECTION_MASK_EAST;break;case 2:b|=mxConstants.DIRECTION_MASK_SOUTH; -break;case 3:b|=mxConstants.DIRECTION_MASK_WEST}if(0<=d.indexOf(mxConstants.DIRECTION_WEST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_WEST;break;case 1:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 2:b|=mxConstants.DIRECTION_MASK_EAST;break;case 3:b|=mxConstants.DIRECTION_MASK_SOUTH}if(0<=d.indexOf(mxConstants.DIRECTION_SOUTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 1:b|=mxConstants.DIRECTION_MASK_WEST;break;case 2:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 3:b|= -mxConstants.DIRECTION_MASK_EAST}if(0<=d.indexOf(mxConstants.DIRECTION_EAST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_EAST;break;case 1:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 2:b|=mxConstants.DIRECTION_MASK_WEST;break;case 3:b|=mxConstants.DIRECTION_MASK_NORTH}return b},reversePortConstraints:function(a){var b;b=(a&mxConstants.DIRECTION_MASK_WEST)<<3;b|=(a&mxConstants.DIRECTION_MASK_NORTH)<<1;b|=(a&mxConstants.DIRECTION_MASK_SOUTH)>>1;return b|=(a&mxConstants.DIRECTION_MASK_EAST)>>3}, -findNearestSegment:function(a,b,c){var d=-1;if(0<a.absolutePoints.length)for(var e=a.absolutePoints[0],f=null,g=1;g<a.absolutePoints.length;g++){var k=a.absolutePoints[g],e=mxUtils.ptSegDistSq(e.x,e.y,k.x,k.y,b,c);if(null==f||e<f)f=e,d=g-1;e=k}return d},getDirectedBounds:function(a,b,c,d,e){var f=mxUtils.getValue(c,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);d=null!=d?d:mxUtils.getValue(c,mxConstants.STYLE_FLIPH,!1);e=null!=e?e:mxUtils.getValue(c,mxConstants.STYLE_FLIPV,!1);b.x=Math.round(Math.max(0, -Math.min(a.width,b.x)));b.y=Math.round(Math.max(0,Math.min(a.height,b.y)));b.width=Math.round(Math.max(0,Math.min(a.width,b.width)));b.height=Math.round(Math.max(0,Math.min(a.height,b.height)));if(e&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||d&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.x,b.x=b.width,b.width=c;if(d&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||e&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.y, -b.y=b.height,b.height=c;d=mxRectangle.fromRectangle(b);f==mxConstants.DIRECTION_SOUTH?(d.y=b.x,d.x=b.height,d.width=b.y,d.height=b.width):f==mxConstants.DIRECTION_WEST?(d.y=b.height,d.x=b.width,d.width=b.x,d.height=b.y):f==mxConstants.DIRECTION_NORTH&&(d.y=b.width,d.x=b.y,d.width=b.height,d.height=b.x);return new mxRectangle(a.x+d.x,a.y+d.y,a.width-d.width-d.x,a.height-d.height-d.y)},getPerimeterPoint:function(a,b,c){for(var d=null,e=0;e<a.length-1;e++){var f=mxUtils.intersection(a[e].x,a[e].y,a[e+ -1].x,a[e+1].y,b.x,b.y,c.x,c.y);if(null!=f){var g=c.x-f.x,k=c.y-f.y,f={p:f,distSq:k*k+g*g};null!=f&&(null==d||d.distSq>f.distSq)&&(d=f)}}return null!=d?d.p:null},rectangleIntersectsSegment:function(a,b,c){var d=a.y,e=a.x,f=d+a.height,g=e+a.width;a=b.x;var k=c.x;b.x>c.x&&(a=c.x,k=b.x);k>g&&(k=g);a<e&&(a=e);if(a>k)return!1;var e=b.y,g=c.y,l=c.x-b.x;1E-7<Math.abs(l)&&(c=(c.y-b.y)/l,b=b.y-c*b.x,e=c*a+b,g=c*k+b);e>g&&(b=g,g=e,e=b);g>f&&(g=f);e<d&&(e=d);return e>g?!1:!0},contains:function(a,b,c){return a.x<= -b&&a.x+a.width>=b&&a.y<=c&&a.y+a.height>=c},intersects:function(a,b){var c=a.width,d=a.height,e=b.width,f=b.height;if(0>=e||0>=f||0>=c||0>=d)return!1;var g=a.x,k=a.y,l=b.x,m=b.y,e=e+l,f=f+m,c=c+g,d=d+k;return(e<l||e>g)&&(f<m||f>k)&&(c<g||c>l)&&(d<k||d>m)},intersectsHotspot:function(a,b,c,d,e,f){d=null!=d?d:1;e=null!=e?e:0;f=null!=f?f:0;if(0<d){var g=a.getCenterX(),k=a.getCenterY(),l=a.width,m=a.height,n=mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE)*a.view.scale;0<n&&(mxUtils.getValue(a.style, -mxConstants.STYLE_HORIZONTAL,!0)?(k=a.y+n/2,m=n):(g=a.x+n/2,l=n));l=Math.max(e,l*d);m=Math.max(e,m*d);0<f&&(l=Math.min(l,f),m=Math.min(m,f));d=new mxRectangle(g-l/2,k-m/2,l,m);g=mxUtils.toRadians(mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION)||0);0!=g&&(e=Math.cos(-g),f=Math.sin(-g),g=new mxPoint(a.getCenterX(),a.getCenterY()),a=mxUtils.getRotatedPoint(new mxPoint(b,c),e,f,g),b=a.x,c=a.y);return mxUtils.contains(d,b,c)}return!0},getOffset:function(a,b){for(var c=0,d=0,e=!1,f=a,g=document.body, -k=document.documentElement;null!=f&&f!=g&&f!=k&&!e;){var l=mxUtils.getCurrentStyle(f);null!=l&&(e=e||"fixed"==l.position);f=f.parentNode}b||e||(e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),c+=e.x,d+=e.y);e=a.getBoundingClientRect();null!=e&&(c+=e.left,d+=e.top);return new mxPoint(c,d)},getDocumentScrollOrigin:function(a){if(mxClient.IS_QUIRKS)return new mxPoint(a.body.scrollLeft,a.body.scrollTop);a=a.defaultView||a.parentWindow;return new mxPoint(null!=a&&void 0!==window.pageXOffset?window.pageXOffset: -(document.documentElement||document.body.parentNode||document.body).scrollLeft,null!=a&&void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop)},getScrollOrigin:function(a,b,c){b=null!=b?b:!1;c=null!=c?c:!0;for(var d=null!=a?a.ownerDocument:document,e=d.body,f=d.documentElement,g=new mxPoint,k=!1;null!=a&&a!=e&&a!=f;){isNaN(a.scrollLeft)||isNaN(a.scrollTop)||(g.x+=a.scrollLeft,g.y+=a.scrollTop);var l=mxUtils.getCurrentStyle(a); -null!=l&&(k=k||"fixed"==l.position);a=b?a.parentNode:null}!k&&c&&(a=mxUtils.getDocumentScrollOrigin(d),g.x+=a.x,g.y+=a.y);return g},convertPoint:function(a,b,c){var d=mxUtils.getScrollOrigin(a,!1);a=mxUtils.getOffset(a);a.x-=d.x;a.y-=d.y;return new mxPoint(b-a.x,c-a.y)},ltrim:function(a,b){return null!=a?a.replace(new RegExp("^["+(b||"\\s")+"]+","g"),""):null},rtrim:function(a,b){return null!=a?a.replace(new RegExp("["+(b||"\\s")+"]+$","g"),""):null},trim:function(a,b){return mxUtils.ltrim(mxUtils.rtrim(a, -b),b)},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)&&("string"!=typeof a||0>a.toLowerCase().indexOf("0x"))},isInteger:function(a){return String(parseInt(a))===String(a)},mod:function(a,b){return(a%b+b)%b},intersection:function(a,b,c,d,e,f,g,k){var l=(k-f)*(c-a)-(g-e)*(d-b);g=((g-e)*(b-f)-(k-f)*(a-e))/l;e=((c-a)*(b-f)-(d-b)*(a-e))/l;return 0<=g&&1>=g&&0<=e&&1>=e?new mxPoint(a+g*(c-a),b+g*(d-b)):null},ptSegDistSq:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;0>=e*c+f*d?c=0:(e=c-e,f=d- -f,a=e*c+f*d,c=0>=a?0:a*a/(c*c+d*d));e=e*e+f*f-c;0>e&&(e=0);return e},ptLineDist:function(a,b,c,d,e,f){return Math.abs((d-b)*e-(c-a)*f+c*b-d*a)/Math.sqrt((d-b)*(d-b)+(c-a)*(c-a))},relativeCcw:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;a=e*d-f*c;0==a&&(a=e*c+f*d,0<a&&(a=(e-c)*c+(f-d)*d,0>a&&(a=0)));return 0>a?-1:0<a?1:0},animateChanges:function(a,b){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(a,b,c){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(a,b,c,d, -e,f){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(a,b){mxUtils.isVml(a)?a.style.filter=100<=b?"":"alpha(opacity="+b/5+")":mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?a.style.filter=100<=b?"":"alpha(opacity="+b+")":a.style.opacity=b/100},createImage:function(a){var b;mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?(b=document.createElement(mxClient.VML_PREFIX+":image"),b.setAttribute("src",a),b.style.borderStyle="none"):(b=document.createElement("img"), -b.setAttribute("src",a),b.setAttribute("border","0"));return b},sortCells:function(a,b){b=null!=b?b:!0;var c=new mxDictionary;a.sort(function(a,e){var d=c.get(a);null==d&&(d=mxCellPath.create(a).split(mxCellPath.PATH_SEPARATOR),c.put(a,d));var g=c.get(e);null==g&&(g=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),c.put(e,g));d=mxCellPath.compare(d,g);return 0==d?0:0<d==b?1:-1});return a},getStylename:function(a){return null!=a&&(a=a.split(";")[0],0>a.indexOf("="))?a:""},getStylenames:function(a){var b= -[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0>a[c].indexOf("=")&&b.push(a[c])}return b},indexOfStylename:function(a,b){if(null!=a&&null!=b)for(var c=a.split(";"),d=0,e=0;e<c.length;e++){if(c[e]==b)return d;d+=c[e].length+1}return-1},addStylename:function(a,b){0>mxUtils.indexOfStylename(a,b)&&(null==a?a="":0<a.length&&";"!=a.charAt(a.length-1)&&(a+=";"),a+=b);return a},removeStylename:function(a,b){var c=[];if(null!=a)for(var d=a.split(";"),e=0;e<d.length;e++)d[e]!=b&&c.push(d[e]);return c.join(";")}, -removeAllStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0<=a[c].indexOf("=")&&b.push(a[c])}return b.join(";")},setCellStyles:function(a,b,c,d){if(null!=b&&0<b.length){a.beginUpdate();try{for(var e=0;e<b.length;e++)if(null!=b[e]){var f=mxUtils.setStyle(a.getStyle(b[e]),c,d);a.setStyle(b[e],f)}}finally{a.endUpdate()}}},setStyle:function(a,b,c){var d=null!=c&&("undefined"==typeof c.length||0<c.length);if(null==a||0==a.length)d&&(a=b+"="+c+";");else if(a.substring(0, -b.length+1)==b+"="){var e=a.indexOf(";");a=d?b+"="+c+(0>e?";":a.substring(e)):0>e||e==a.length-1?"":a.substring(e+1)}else{var f=a.indexOf(";"+b+"=");0>f?d&&(d=";"==a.charAt(a.length-1)?"":";",a=a+d+b+"="+c+";"):(e=a.indexOf(";",f+1),a=d?a.substring(0,f+1)+b+"="+c+(0>e?";":a.substring(e)):a.substring(0,f)+(0>e?";":a.substring(e)))}return a},setCellStyleFlags:function(a,b,c,d,e){if(null!=b&&0<b.length){a.beginUpdate();try{for(var f=0;f<b.length;f++)if(null!=b[f]){var g=mxUtils.setStyleFlag(a.getStyle(b[f]), -c,d,e);a.setStyle(b[f],g)}}finally{a.endUpdate()}}},setStyleFlag:function(a,b,c,d){if(null==a||0==a.length)a=d||null==d?b+"="+c:b+"=0";else{var e=a.indexOf(b+"=");if(0>e)e=";"==a.charAt(a.length-1)?"":";",a=d||null==d?a+e+b+"="+c:a+e+b+"=0";else{var f=a.indexOf(";",e),g;g=0>f?a.substring(e+b.length+1):a.substring(e+b.length+1,f);g=null==d?parseInt(g)^c:d?parseInt(g)|c:parseInt(g)&~c;a=a.substring(0,e)+b+"="+g+(0<=f?a.substring(f):"")}}return a},getAlignmentAsPoint:function(a,b){var c=0,d=0;a==mxConstants.ALIGN_CENTER? -c=-.5:a==mxConstants.ALIGN_RIGHT&&(c=-1);b==mxConstants.ALIGN_MIDDLE?d=-.5:b==mxConstants.ALIGN_BOTTOM&&(d=-1);return new mxPoint(c,d)},getSizeForString:function(a,b,c,d){b=null!=b?b:mxConstants.DEFAULT_FONTSIZE;c=null!=c?c:mxConstants.DEFAULT_FONTFAMILY;var e=document.createElement("div");e.style.fontFamily=c;e.style.fontSize=Math.round(b)+"px";e.style.lineHeight=Math.round(b*mxConstants.LINE_HEIGHT)+"px";e.style.position="absolute";e.style.visibility="hidden";e.style.display=mxClient.IS_QUIRKS? -"inline":"inline-block";e.style.zoom="1";null!=d?(e.style.width=d+"px",e.style.whiteSpace="normal"):e.style.whiteSpace="nowrap";e.innerHTML=a;document.body.appendChild(e);a=new mxRectangle(0,0,e.offsetWidth,e.offsetHeight);document.body.removeChild(e);return a},getViewXml:function(a,b,c,d,e){d=null!=d?d:0;e=null!=e?e:0;b=null!=b?b:1;null==c&&(c=[a.getModel().getRoot()]);var f=a.getView(),g=null,k=f.isEventsEnabled();f.setEventsEnabled(!1);var l=f.drawPane,m=f.overlayPane;a.dialect==mxConstants.DIALECT_SVG? -(f.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),f.canvas.appendChild(f.drawPane),f.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(f.drawPane=f.drawPane.cloneNode(!1),f.canvas.appendChild(f.drawPane),f.overlayPane=f.overlayPane.cloneNode(!1));f.canvas.appendChild(f.overlayPane);var n=f.getTranslate();f.translate=new mxPoint(d,e);b=new mxTemporaryCellStates(a.getView(),b,c);try{g=(new mxCodec).encode(a.getView())}finally{b.destroy(),f.translate=n,f.canvas.removeChild(f.drawPane), -f.canvas.removeChild(f.overlayPane),f.drawPane=l,f.overlayPane=m,f.setEventsEnabled(k)}return g},getScaleForPageCount:function(a,b,c,d){if(1>a)return 1;c=null!=c?c:mxConstants.PAGE_FORMAT_A4_PORTRAIT;d=null!=d?d:0;var e=c.width-2*d;c=c.height-2*d;d=b.getGraphBounds().clone();b=b.getView().getScale();d.width/=b;d.height/=b;b=d.width;var f=Math.sqrt(a);d=Math.sqrt(b/d.height/(e/c));c=f*d;d=f/d;if(1>c&&d>a){var g=d/a;d=a;c/=g}1>d&&c>a&&(g=c/a,c=a,d/=g);g=Math.ceil(c)*Math.ceil(d);for(f=0;g>a;){var g= -Math.floor(c)/c,k=Math.floor(d)/d;1==g&&(g=Math.floor(c-1)/c);1==k&&(k=Math.floor(d-1)/d);g=g>k?g:k;c*=g;d*=g;g=Math.ceil(c)*Math.ceil(d);f++;if(10<f)break}return e*c/b*.99999},show:function(a,b,c,d,e,f){c=null!=c?c:0;d=null!=d?d:0;null==b?b=window.open().document:b.open();9==document.documentMode&&b.writeln('\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=9"><![endif]--\x3e');var g=a.getGraphBounds(),k=Math.ceil(c-g.x),l=Math.ceil(d-g.y);null==e&&(e=Math.ceil(g.width+c)+Math.ceil(Math.ceil(g.x)- -g.x));null==f&&(f=Math.ceil(g.height+d)+Math.ceil(Math.ceil(g.y)-g.y));if(mxClient.IS_IE||11==document.documentMode){d="<html><head>";g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)d+=g[c].outerHTML;d+="<style>";for(c=0;c<document.styleSheets.length;c++)try{d+=document.styleSheets[c].cssText}catch(m){}d=d+'</style></head><body style="margin:0px;">'+('<div style="position:absolute;overflow:hidden;width:'+e+"px;height:"+f+'px;"><div style="position:relative;left:'+k+"px;top:"+l+'px;">')+ -a.container.innerHTML;b.writeln(d+"</div></div></body><html>");b.close()}else{b.writeln("<html><head>");g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)b.writeln(mxUtils.getOuterHtml(g[c]));d=document.getElementsByTagName("link");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));d=document.getElementsByTagName("style");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));b.writeln('</head><body style="margin:0px;"></body></html>');b.close();c=b.createElement("div"); -c.position="absolute";c.overflow="hidden";c.style.width=e+"px";c.style.height=f+"px";e=b.createElement("div");e.style.position="absolute";e.style.left=k+"px";e.style.top=l+"px";f=a.container.firstChild;for(d=null;null!=f;)g=f.cloneNode(!0),f==a.view.drawPane.ownerSVGElement?(c.appendChild(g),d=g):e.appendChild(g),f=f.nextSibling;b.body.appendChild(c);null!=e.firstChild&&b.body.appendChild(e);null!=d&&(d.style.minWidth="",d.style.minHeight="",d.firstChild.setAttribute("transform","translate("+k+","+ -l+")"))}mxUtils.removeCursors(b.body);return b},printScreen:function(a){var b=window.open();a.getGraphBounds();mxUtils.show(a,b.document);a=function(){b.focus();b.print();b.close()};mxClient.IS_GC?b.setTimeout(a,500):a()},popup:function(a,b){if(b){var c=document.createElement("div");c.style.overflow="scroll";c.style.width="636px";c.style.height="460px";var d=document.createElement("pre");d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g," ");c.appendChild(d);c=new mxWindow("Popup Window", -c,document.body.clientWidth/2-320,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight)/2-240,640,480,!1,!0);c.setClosable(!0);c.setVisible(!0)}else mxClient.IS_NS?(c=window.open(),c.document.writeln("<pre>"+mxUtils.htmlEntities(a)+"</pre"),c.document.close()):(c=window.open(),d=c.document.createElement("pre"),d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g," "),c.document.body.appendChild(d))},alert:function(a){alert(a)},prompt:function(a,b){return prompt(a, -null!=b?b:"")},confirm:function(a){return confirm(a)},error:function(a,b,c,d){var e=document.createElement("div");e.style.padding="20px";var f=document.createElement("img");f.setAttribute("src",d||mxUtils.errorImage);f.setAttribute("valign","bottom");f.style.verticalAlign="middle";e.appendChild(f);e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));mxUtils.write(e,a);a=document.body.clientWidth;d=document.body.clientHeight|| -document.documentElement.clientHeight;var g=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,e,(a-b)/2,d/4,b,null,!1,!0);c&&(mxUtils.br(e),b=document.createElement("p"),c=document.createElement("button"),mxClient.IS_IE?c.style.cssText="float:right":c.setAttribute("style","float:right"),mxEvent.addListener(c,"click",function(a){g.destroy()}),mxUtils.write(c,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),b.appendChild(c),e.appendChild(b),mxUtils.br(e),g.setClosable(!0)); -g.setVisible(!0);return g},makeDraggable:function(a,b,c,d,e,f,g,k,l,m){a=new mxDragSource(a,c);a.dragOffset=new mxPoint(null!=e?e:0,null!=f?f:mxConstants.TOOLTIP_VERTICAL_OFFSET);a.autoscroll=g;a.setGuidesEnabled(!1);null!=l&&(a.highlightDropTargets=l);null!=m&&(a.getDropTarget=m);a.getGraphForEvent=function(a){return"function"==typeof b?b(a):b};null!=d&&(a.createDragElement=function(){return d.cloneNode(!0)},k&&(a.createPreviewElement=function(a){var b=d.cloneNode(!0),c=parseInt(b.style.width),e= -parseInt(b.style.height);b.style.width=Math.round(c*a.view.scale)+"px";b.style.height=Math.round(e*a.view.scale)+"px";return b}));return a}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml", +linkAction:function(a,b,c,d,e){return mxUtils.link(a,b,function(){c.execute(d)},e)},linkInvoke:function(a,b,c,d,e,f){return mxUtils.link(a,b,function(){c[d](e)},f)},link:function(a,b,c,d){var e=document.createElement("span");e.style.color="blue";e.style.textDecoration="underline";e.style.cursor="pointer";null!=d&&(e.style.paddingLeft=d+"px");mxEvent.addListener(e,"click",c);mxUtils.write(e,b);null!=a&&a.appendChild(e);return e},getDocumentSize:function(){var a=document.body,b=document.documentElement; +try{return new mxRectangle(0,0,a.clientWidth||b.clientWidth,Math.max(a.clientHeight||0,b.clientHeight))}catch(c){return new mxRectangle}},fit:function(a){var b=mxUtils.getDocumentSize(),c=parseInt(a.offsetLeft),d=parseInt(a.offsetWidth),e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),f=e.x,e=e.y,g=f+b.width;c+d>g&&(a.style.left=Math.max(f,g-d)+"px");c=parseInt(a.offsetTop);d=parseInt(a.offsetHeight);b=e+b.height;c+d>b&&(a.style.top=Math.max(e,b-d)+"px")},load:function(a){a=new mxXmlRequest(a,null, +"GET",!1);a.send();return a},get:function(a,b,c,d,e,f){a=new mxXmlRequest(a,null,"GET");null!=d&&a.setBinary(d);a.send(b,c,e,f);return a},getAll:function(a,b,c){for(var d=a.length,e=[],f=0,g=function(){0==f&&null!=c&&c();f++},k=0;k<a.length;k++)(function(a,c){mxUtils.get(a,function(a){var f=a.getStatus();200>f||299<f?g():(e[c]=a,d--,0==d&&b(e))},g)})(a[k],k);0==d&&b(e)},post:function(a,b,c,d){return(new mxXmlRequest(a,b)).send(c,d)},submit:function(a,b,c,d){return(new mxXmlRequest(a,b)).simulate(c, +d)},loadInto:function(a,b,c){mxClient.IS_IE?b.onreadystatechange=function(){4==b.readyState&&c()}:b.addEventListener("load",c,!1);b.load(a)},getValue:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c);return a},getNumber:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c||0);return Number(a)},getColor:function(a,b,c){a=null!=a?a[b]:null;null==a?a=c:a==mxConstants.NONE&&(a=null);return a},clone:function(a,b,c){c=null!=c?c:!1;var d=null;if(null!=a&&"function"==typeof a.constructor){var d=new a.constructor, +e;for(e in a)e!=mxObjectIdentity.FIELD_NAME&&(null==b||0>mxUtils.indexOf(b,e))&&(d[e]=c||"object"!=typeof a[e]?a[e]:mxUtils.clone(a[e]))}return d},equalPoints:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b)for(var c=0;c<a.length;c++)if(a[c]==b[c]||null!=a[c]&&!a[c].equals(b[c]))return!1;return!0},equalEntries:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b){var c= +0,d;for(d in b)c++;for(d in a)if(c--,!(mxUtils.isNaN(a[d])&&mxUtils.isNaN(b[d])||a[d]==b[d]))return!1}return 0==c},removeDuplicates:function(a){for(var b=new mxDictionary,c=[],d=0;d<a.length;d++)b.get(a[d])||(c.push(a[d]),b.put(a[d],!0));return c},isNaN:function(a){return"number"==typeof a&&isNaN(a)},extend:function(a,b){var c=function(){};c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a},toString:function(a){var b="",c;for(c in a)try{if(null==a[c])b+=c+" = [null]\n";else if("function"== +typeof a[c])b+=c+" => [Function]\n";else if("object"==typeof a[c])var d=mxUtils.getFunctionName(a[c].constructor),b=b+(c+" => ["+d+"]\n");else b+=c+" = "+a[c]+"\n"}catch(e){b+=c+"="+e.message}return b},toRadians:function(a){return Math.PI*a/180},toDegree:function(a){return 180*a/Math.PI},arcToCurves:function(a,b,c,d,e,f,g,k,l){k-=a;l-=b;if(0===c||0===d)return q;c=Math.abs(c);d=Math.abs(d);var m=-k/2,n=-l/2,p=Math.cos(e*Math.PI/180),q=Math.sin(e*Math.PI/180);e=p*m+q*n;var m=-1*q*m+p*n,n=e*e,r=m*m, +t=c*c,u=d*d,x=n/t+r/u;1<x?(c*=Math.sqrt(x),d*=Math.sqrt(x),f=0):(x=1,f===g&&(x=-1),f=x*Math.sqrt((t*u-t*r-u*n)/(t*r+u*n)));n=f*c*m/d;r=-1*f*d*e/c;k=p*n-q*r+k/2;l=q*n+p*r+l/2;t=Math.atan2((m-r)/d,(e-n)/c)-Math.atan2(0,1);f=0<=t?t:2*Math.PI+t;t=Math.atan2((-m-r)/d,(-e-n)/c)-Math.atan2((m-r)/d,(e-n)/c);e=0<=t?t:2*Math.PI+t;0==g&&0<e?e-=2*Math.PI:0!=g&&0>e&&(e+=2*Math.PI);g=2*e/Math.PI;g=Math.ceil(0>g?-1*g:g);e/=g;m=8/3*Math.sin(e/4)*Math.sin(e/4)/Math.sin(e/2);n=p*c;p*=d;c*=q;d*=q;for(var y=Math.cos(f), +A=Math.sin(f),r=-m*(n*A+d*y),t=-m*(c*A-p*y),q=[],z=0;z<g;++z){f+=e;var y=Math.cos(f),A=Math.sin(f),u=n*y-d*A+k,x=c*y+p*A+l,v=-m*(n*A+d*y),y=-m*(c*A-p*y),A=6*z;q[A]=Number(r+a);q[A+1]=Number(t+b);q[A+2]=Number(u-v+a);q[A+3]=Number(x-y+b);q[A+4]=Number(u+a);q[A+5]=Number(x+b);r=u+v;t=x+y}return q},getBoundingBox:function(a,b,c){var d=null;if(null!=a&&null!=b&&0!=b){b=mxUtils.toRadians(b);var d=Math.cos(b),e=Math.sin(b);c=null!=c?c:new mxPoint(a.x+a.width/2,a.y+a.height/2);var f=new mxPoint(a.x,a.y); +b=new mxPoint(a.x+a.width,a.y);var g=new mxPoint(b.x,a.y+a.height);a=new mxPoint(a.x,g.y);f=mxUtils.getRotatedPoint(f,d,e,c);b=mxUtils.getRotatedPoint(b,d,e,c);g=mxUtils.getRotatedPoint(g,d,e,c);a=mxUtils.getRotatedPoint(a,d,e,c);d=new mxRectangle(f.x,f.y,0,0);d.add(new mxRectangle(b.x,b.y,0,0));d.add(new mxRectangle(g.x,g.y,0,0));d.add(new mxRectangle(a.x,a.y,0,0))}return d},getRotatedPoint:function(a,b,c,d){d=null!=d?d:new mxPoint;var e=a.x-d.x;a=a.y-d.y;return new mxPoint(e*b-a*c+d.x,a*b+e*c+d.y)}, +getPortConstraints:function(a,b,c,d){b=mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT,mxUtils.getValue(b.style,c?mxConstants.STYLE_SOURCE_PORT_CONSTRAINT:mxConstants.STYLE_TARGET_PORT_CONSTRAINT,null));if(null==b)return d;d=b.toString();b=mxConstants.DIRECTION_MASK_NONE;c=0;1==mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT_ROTATION,0)&&(c=mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION,0));a=0;45<c?(a=1,135<=c&&(a=2)):-45>c&&(a=3,-135>=c&&(a=2));if(0<=d.indexOf(mxConstants.DIRECTION_NORTH))switch(a){case 0:b|= +mxConstants.DIRECTION_MASK_NORTH;break;case 1:b|=mxConstants.DIRECTION_MASK_EAST;break;case 2:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 3:b|=mxConstants.DIRECTION_MASK_WEST}if(0<=d.indexOf(mxConstants.DIRECTION_WEST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_WEST;break;case 1:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 2:b|=mxConstants.DIRECTION_MASK_EAST;break;case 3:b|=mxConstants.DIRECTION_MASK_SOUTH}if(0<=d.indexOf(mxConstants.DIRECTION_SOUTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_SOUTH; +break;case 1:b|=mxConstants.DIRECTION_MASK_WEST;break;case 2:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 3:b|=mxConstants.DIRECTION_MASK_EAST}if(0<=d.indexOf(mxConstants.DIRECTION_EAST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_EAST;break;case 1:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 2:b|=mxConstants.DIRECTION_MASK_WEST;break;case 3:b|=mxConstants.DIRECTION_MASK_NORTH}return b},reversePortConstraints:function(a){var b;b=(a&mxConstants.DIRECTION_MASK_WEST)<<3;b|=(a&mxConstants.DIRECTION_MASK_NORTH)<< +1;b|=(a&mxConstants.DIRECTION_MASK_SOUTH)>>1;return b|=(a&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(a,b,c){var d=-1;if(0<a.absolutePoints.length)for(var e=a.absolutePoints[0],f=null,g=1;g<a.absolutePoints.length;g++){var k=a.absolutePoints[g],e=mxUtils.ptSegDistSq(e.x,e.y,k.x,k.y,b,c);if(null==f||e<f)f=e,d=g-1;e=k}return d},getDirectedBounds:function(a,b,c,d,e){var f=mxUtils.getValue(c,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);d=null!=d?d:mxUtils.getValue(c,mxConstants.STYLE_FLIPH, +!1);e=null!=e?e:mxUtils.getValue(c,mxConstants.STYLE_FLIPV,!1);b.x=Math.round(Math.max(0,Math.min(a.width,b.x)));b.y=Math.round(Math.max(0,Math.min(a.height,b.y)));b.width=Math.round(Math.max(0,Math.min(a.width,b.width)));b.height=Math.round(Math.max(0,Math.min(a.height,b.height)));if(e&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||d&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.x,b.x=b.width,b.width=c;if(d&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)|| +e&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.y,b.y=b.height,b.height=c;d=mxRectangle.fromRectangle(b);f==mxConstants.DIRECTION_SOUTH?(d.y=b.x,d.x=b.height,d.width=b.y,d.height=b.width):f==mxConstants.DIRECTION_WEST?(d.y=b.height,d.x=b.width,d.width=b.x,d.height=b.y):f==mxConstants.DIRECTION_NORTH&&(d.y=b.width,d.x=b.y,d.width=b.height,d.height=b.x);return new mxRectangle(a.x+d.x,a.y+d.y,a.width-d.width-d.x,a.height-d.height-d.y)},getPerimeterPoint:function(a,b,c){for(var d= +null,e=0;e<a.length-1;e++){var f=mxUtils.intersection(a[e].x,a[e].y,a[e+1].x,a[e+1].y,b.x,b.y,c.x,c.y);if(null!=f){var g=c.x-f.x,k=c.y-f.y,f={p:f,distSq:k*k+g*g};null!=f&&(null==d||d.distSq>f.distSq)&&(d=f)}}return null!=d?d.p:null},rectangleIntersectsSegment:function(a,b,c){var d=a.y,e=a.x,f=d+a.height,g=e+a.width;a=b.x;var k=c.x;b.x>c.x&&(a=c.x,k=b.x);k>g&&(k=g);a<e&&(a=e);if(a>k)return!1;var e=b.y,g=c.y,l=c.x-b.x;1E-7<Math.abs(l)&&(c=(c.y-b.y)/l,b=b.y-c*b.x,e=c*a+b,g=c*k+b);e>g&&(b=g,g=e,e=b); +g>f&&(g=f);e<d&&(e=d);return e>g?!1:!0},contains:function(a,b,c){return a.x<=b&&a.x+a.width>=b&&a.y<=c&&a.y+a.height>=c},intersects:function(a,b){var c=a.width,d=a.height,e=b.width,f=b.height;if(0>=e||0>=f||0>=c||0>=d)return!1;var g=a.x,k=a.y,l=b.x,m=b.y,e=e+l,f=f+m,c=c+g,d=d+k;return(e<l||e>g)&&(f<m||f>k)&&(c<g||c>l)&&(d<k||d>m)},intersectsHotspot:function(a,b,c,d,e,f){d=null!=d?d:1;e=null!=e?e:0;f=null!=f?f:0;if(0<d){var g=a.getCenterX(),k=a.getCenterY(),l=a.width,m=a.height,n=mxUtils.getValue(a.style, +mxConstants.STYLE_STARTSIZE)*a.view.scale;0<n&&(mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,!0)?(k=a.y+n/2,m=n):(g=a.x+n/2,l=n));l=Math.max(e,l*d);m=Math.max(e,m*d);0<f&&(l=Math.min(l,f),m=Math.min(m,f));d=new mxRectangle(g-l/2,k-m/2,l,m);g=mxUtils.toRadians(mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION)||0);0!=g&&(e=Math.cos(-g),f=Math.sin(-g),g=new mxPoint(a.getCenterX(),a.getCenterY()),a=mxUtils.getRotatedPoint(new mxPoint(b,c),e,f,g),b=a.x,c=a.y);return mxUtils.contains(d,b,c)}return!0}, +getOffset:function(a,b){for(var c=0,d=0,e=!1,f=a,g=document.body,k=document.documentElement;null!=f&&f!=g&&f!=k&&!e;){var l=mxUtils.getCurrentStyle(f);null!=l&&(e=e||"fixed"==l.position);f=f.parentNode}b||e||(e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),c+=e.x,d+=e.y);e=a.getBoundingClientRect();null!=e&&(c+=e.left,d+=e.top);return new mxPoint(c,d)},getDocumentScrollOrigin:function(a){if(mxClient.IS_QUIRKS)return new mxPoint(a.body.scrollLeft,a.body.scrollTop);a=a.defaultView||a.parentWindow; +return new mxPoint(null!=a&&void 0!==window.pageXOffset?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft,null!=a&&void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop)},getScrollOrigin:function(a,b,c){b=null!=b?b:!1;c=null!=c?c:!0;for(var d=null!=a?a.ownerDocument:document,e=d.body,f=d.documentElement,g=new mxPoint,k=!1;null!=a&&a!=e&&a!=f;){isNaN(a.scrollLeft)||isNaN(a.scrollTop)|| +(g.x+=a.scrollLeft,g.y+=a.scrollTop);var l=mxUtils.getCurrentStyle(a);null!=l&&(k=k||"fixed"==l.position);a=b?a.parentNode:null}!k&&c&&(a=mxUtils.getDocumentScrollOrigin(d),g.x+=a.x,g.y+=a.y);return g},convertPoint:function(a,b,c){var d=mxUtils.getScrollOrigin(a,!1);a=mxUtils.getOffset(a);a.x-=d.x;a.y-=d.y;return new mxPoint(b-a.x,c-a.y)},ltrim:function(a,b){return null!=a?a.replace(new RegExp("^["+(b||"\\s")+"]+","g"),""):null},rtrim:function(a,b){return null!=a?a.replace(new RegExp("["+(b||"\\s")+ +"]+$","g"),""):null},trim:function(a,b){return mxUtils.ltrim(mxUtils.rtrim(a,b),b)},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)&&("string"!=typeof a||0>a.toLowerCase().indexOf("0x"))},isInteger:function(a){return String(parseInt(a))===String(a)},mod:function(a,b){return(a%b+b)%b},intersection:function(a,b,c,d,e,f,g,k){var l=(k-f)*(c-a)-(g-e)*(d-b);g=((g-e)*(b-f)-(k-f)*(a-e))/l;e=((c-a)*(b-f)-(d-b)*(a-e))/l;return 0<=g&&1>=g&&0<=e&&1>=e?new mxPoint(a+g*(c-a),b+g*(d-b)):null},ptSegDistSq:function(a, +b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;0>=e*c+f*d?c=0:(e=c-e,f=d-f,a=e*c+f*d,c=0>=a?0:a*a/(c*c+d*d));e=e*e+f*f-c;0>e&&(e=0);return e},ptLineDist:function(a,b,c,d,e,f){return Math.abs((d-b)*e-(c-a)*f+c*b-d*a)/Math.sqrt((d-b)*(d-b)+(c-a)*(c-a))},relativeCcw:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;a=e*d-f*c;0==a&&(a=e*c+f*d,0<a&&(a=(e-c)*c+(f-d)*d,0>a&&(a=0)));return 0>a?-1:0<a?1:0},animateChanges:function(a,b){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(a,b,c){mxEffects.cascadeOpacity.apply(this, +arguments)},fadeOut:function(a,b,c,d,e,f){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(a,b){mxUtils.isVml(a)?a.style.filter=100<=b?"":"alpha(opacity="+b/5+")":mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?a.style.filter=100<=b?"":"alpha(opacity="+b+")":a.style.opacity=b/100},createImage:function(a){var b;mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?(b=document.createElement(mxClient.VML_PREFIX+":image"),b.setAttribute("src",a),b.style.borderStyle= +"none"):(b=document.createElement("img"),b.setAttribute("src",a),b.setAttribute("border","0"));return b},sortCells:function(a,b){b=null!=b?b:!0;var c=new mxDictionary;a.sort(function(a,e){var d=c.get(a);null==d&&(d=mxCellPath.create(a).split(mxCellPath.PATH_SEPARATOR),c.put(a,d));var g=c.get(e);null==g&&(g=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),c.put(e,g));d=mxCellPath.compare(d,g);return 0==d?0:0<d==b?1:-1});return a},getStylename:function(a){return null!=a&&(a=a.split(";")[0],0>a.indexOf("="))? +a:""},getStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0>a[c].indexOf("=")&&b.push(a[c])}return b},indexOfStylename:function(a,b){if(null!=a&&null!=b)for(var c=a.split(";"),d=0,e=0;e<c.length;e++){if(c[e]==b)return d;d+=c[e].length+1}return-1},addStylename:function(a,b){0>mxUtils.indexOfStylename(a,b)&&(null==a?a="":0<a.length&&";"!=a.charAt(a.length-1)&&(a+=";"),a+=b);return a},removeStylename:function(a,b){var c=[];if(null!=a)for(var d=a.split(";"),e=0;e< +d.length;e++)d[e]!=b&&c.push(d[e]);return c.join(";")},removeAllStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0<=a[c].indexOf("=")&&b.push(a[c])}return b.join(";")},setCellStyles:function(a,b,c,d){if(null!=b&&0<b.length){a.beginUpdate();try{for(var e=0;e<b.length;e++)if(null!=b[e]){var f=mxUtils.setStyle(a.getStyle(b[e]),c,d);a.setStyle(b[e],f)}}finally{a.endUpdate()}}},setStyle:function(a,b,c){var d=null!=c&&("undefined"==typeof c.length||0<c.length);if(null== +a||0==a.length)d&&(a=b+"="+c+";");else if(a.substring(0,b.length+1)==b+"="){var e=a.indexOf(";");a=d?b+"="+c+(0>e?";":a.substring(e)):0>e||e==a.length-1?"":a.substring(e+1)}else{var f=a.indexOf(";"+b+"=");0>f?d&&(d=";"==a.charAt(a.length-1)?"":";",a=a+d+b+"="+c+";"):(e=a.indexOf(";",f+1),a=d?a.substring(0,f+1)+b+"="+c+(0>e?";":a.substring(e)):a.substring(0,f)+(0>e?";":a.substring(e)))}return a},setCellStyleFlags:function(a,b,c,d,e){if(null!=b&&0<b.length){a.beginUpdate();try{for(var f=0;f<b.length;f++)if(null!= +b[f]){var g=mxUtils.setStyleFlag(a.getStyle(b[f]),c,d,e);a.setStyle(b[f],g)}}finally{a.endUpdate()}}},setStyleFlag:function(a,b,c,d){if(null==a||0==a.length)a=d||null==d?b+"="+c:b+"=0";else{var e=a.indexOf(b+"=");if(0>e)e=";"==a.charAt(a.length-1)?"":";",a=d||null==d?a+e+b+"="+c:a+e+b+"=0";else{var f=a.indexOf(";",e),g;g=0>f?a.substring(e+b.length+1):a.substring(e+b.length+1,f);g=null==d?parseInt(g)^c:d?parseInt(g)|c:parseInt(g)&~c;a=a.substring(0,e)+b+"="+g+(0<=f?a.substring(f):"")}}return a},getAlignmentAsPoint:function(a, +b){var c=0,d=0;a==mxConstants.ALIGN_CENTER?c=-.5:a==mxConstants.ALIGN_RIGHT&&(c=-1);b==mxConstants.ALIGN_MIDDLE?d=-.5:b==mxConstants.ALIGN_BOTTOM&&(d=-1);return new mxPoint(c,d)},getSizeForString:function(a,b,c,d){b=null!=b?b:mxConstants.DEFAULT_FONTSIZE;c=null!=c?c:mxConstants.DEFAULT_FONTFAMILY;var e=document.createElement("div");e.style.fontFamily=c;e.style.fontSize=Math.round(b)+"px";e.style.lineHeight=Math.round(b*mxConstants.LINE_HEIGHT)+"px";e.style.position="absolute";e.style.visibility="hidden"; +e.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";e.style.zoom="1";null!=d?(e.style.width=d+"px",e.style.whiteSpace="normal"):e.style.whiteSpace="nowrap";e.innerHTML=a;document.body.appendChild(e);a=new mxRectangle(0,0,e.offsetWidth,e.offsetHeight);document.body.removeChild(e);return a},getViewXml:function(a,b,c,d,e){d=null!=d?d:0;e=null!=e?e:0;b=null!=b?b:1;null==c&&(c=[a.getModel().getRoot()]);var f=a.getView(),g=null,k=f.isEventsEnabled();f.setEventsEnabled(!1);var l=f.drawPane,m=f.overlayPane; +a.dialect==mxConstants.DIALECT_SVG?(f.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),f.canvas.appendChild(f.drawPane),f.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(f.drawPane=f.drawPane.cloneNode(!1),f.canvas.appendChild(f.drawPane),f.overlayPane=f.overlayPane.cloneNode(!1));f.canvas.appendChild(f.overlayPane);var n=f.getTranslate();f.translate=new mxPoint(d,e);b=new mxTemporaryCellStates(a.getView(),b,c);try{g=(new mxCodec).encode(a.getView())}finally{b.destroy(),f.translate= +n,f.canvas.removeChild(f.drawPane),f.canvas.removeChild(f.overlayPane),f.drawPane=l,f.overlayPane=m,f.setEventsEnabled(k)}return g},getScaleForPageCount:function(a,b,c,d){if(1>a)return 1;c=null!=c?c:mxConstants.PAGE_FORMAT_A4_PORTRAIT;d=null!=d?d:0;var e=c.width-2*d;c=c.height-2*d;d=b.getGraphBounds().clone();b=b.getView().getScale();d.width/=b;d.height/=b;b=d.width;var f=Math.sqrt(a);d=Math.sqrt(b/d.height/(e/c));c=f*d;d=f/d;if(1>c&&d>a){var g=d/a;d=a;c/=g}1>d&&c>a&&(g=c/a,c=a,d/=g);g=Math.ceil(c)* +Math.ceil(d);for(f=0;g>a;){var g=Math.floor(c)/c,k=Math.floor(d)/d;1==g&&(g=Math.floor(c-1)/c);1==k&&(k=Math.floor(d-1)/d);g=g>k?g:k;c*=g;d*=g;g=Math.ceil(c)*Math.ceil(d);f++;if(10<f)break}return e*c/b*.99999},show:function(a,b,c,d,e,f){c=null!=c?c:0;d=null!=d?d:0;null==b?b=window.open().document:b.open();9==document.documentMode&&b.writeln('\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=9"><![endif]--\x3e');var g=a.getGraphBounds(),k=Math.ceil(c-g.x),l=Math.ceil(d-g.y);null==e&&(e= +Math.ceil(g.width+c)+Math.ceil(Math.ceil(g.x)-g.x));null==f&&(f=Math.ceil(g.height+d)+Math.ceil(Math.ceil(g.y)-g.y));if(mxClient.IS_IE||11==document.documentMode){d="<html><head>";g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)d+=g[c].outerHTML;d+="<style>";for(c=0;c<document.styleSheets.length;c++)try{d+=document.styleSheets[c].cssText}catch(m){}d=d+'</style></head><body style="margin:0px;">'+('<div style="position:absolute;overflow:hidden;width:'+e+"px;height:"+f+'px;"><div style="position:relative;left:'+ +k+"px;top:"+l+'px;">')+a.container.innerHTML;b.writeln(d+"</div></div></body><html>");b.close()}else{b.writeln("<html><head>");g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)b.writeln(mxUtils.getOuterHtml(g[c]));d=document.getElementsByTagName("link");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));d=document.getElementsByTagName("style");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));b.writeln('</head><body style="margin:0px;"></body></html>');b.close(); +c=b.createElement("div");c.position="absolute";c.overflow="hidden";c.style.width=e+"px";c.style.height=f+"px";e=b.createElement("div");e.style.position="absolute";e.style.left=k+"px";e.style.top=l+"px";f=a.container.firstChild;for(d=null;null!=f;)g=f.cloneNode(!0),f==a.view.drawPane.ownerSVGElement?(c.appendChild(g),d=g):e.appendChild(g),f=f.nextSibling;b.body.appendChild(c);null!=e.firstChild&&b.body.appendChild(e);null!=d&&(d.style.minWidth="",d.style.minHeight="",d.firstChild.setAttribute("transform", +"translate("+k+","+l+")"))}mxUtils.removeCursors(b.body);return b},printScreen:function(a){var b=window.open();a.getGraphBounds();mxUtils.show(a,b.document);a=function(){b.focus();b.print();b.close()};mxClient.IS_GC?b.setTimeout(a,500):a()},popup:function(a,b){if(b){var c=document.createElement("div");c.style.overflow="scroll";c.style.width="636px";c.style.height="460px";var d=document.createElement("pre");d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g," ");c.appendChild(d); +c=new mxWindow("Popup Window",c,document.body.clientWidth/2-320,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight)/2-240,640,480,!1,!0);c.setClosable(!0);c.setVisible(!0)}else mxClient.IS_NS?(c=window.open(),c.document.writeln("<pre>"+mxUtils.htmlEntities(a)+"</pre"),c.document.close()):(c=window.open(),d=c.document.createElement("pre"),d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g," "),c.document.body.appendChild(d))},alert:function(a){alert(a)}, +prompt:function(a,b){return prompt(a,null!=b?b:"")},confirm:function(a){return confirm(a)},error:function(a,b,c,d){var e=document.createElement("div");e.style.padding="20px";var f=document.createElement("img");f.setAttribute("src",d||mxUtils.errorImage);f.setAttribute("valign","bottom");f.style.verticalAlign="middle";e.appendChild(f);e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));mxUtils.write(e,a);a=document.body.clientWidth; +d=document.body.clientHeight||document.documentElement.clientHeight;var g=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,e,(a-b)/2,d/4,b,null,!1,!0);c&&(mxUtils.br(e),b=document.createElement("p"),c=document.createElement("button"),mxClient.IS_IE?c.style.cssText="float:right":c.setAttribute("style","float:right"),mxEvent.addListener(c,"click",function(a){g.destroy()}),mxUtils.write(c,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),b.appendChild(c),e.appendChild(b), +mxUtils.br(e),g.setClosable(!0));g.setVisible(!0);return g},makeDraggable:function(a,b,c,d,e,f,g,k,l,m){a=new mxDragSource(a,c);a.dragOffset=new mxPoint(null!=e?e:0,null!=f?f:mxConstants.TOOLTIP_VERTICAL_OFFSET);a.autoscroll=g;a.setGuidesEnabled(!1);null!=l&&(a.highlightDropTargets=l);null!=m&&(a.getDropTarget=m);a.getGraphForEvent=function(a){return"function"==typeof b?b(a):b};null!=d&&(a.createDragElement=function(){return d.cloneNode(!0)},k&&(a.createPreviewElement=function(a){var b=d.cloneNode(!0), +c=parseInt(b.style.width),e=parseInt(b.style.height);b.style.width=Math.round(c*a.view.scale)+"px";b.style.height=Math.round(e*a.view.scale)+"px";return b}));return a}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml", NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",VML_SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",OUTLINE_HIGHLIGHT_COLOR:"#00FF00", OUTLINE_HIGHLIGHT_STROKEWIDTH:5,HIGHLIGHT_STROKEWIDTH:3,HIGHLIGHT_SIZE:2,HIGHLIGHT_OPACITY:100,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_TERMINAL_HANDLE:"pointer",CURSOR_BEND_HANDLE:"crosshair",CURSOR_VIRTUAL_BEND_HANDLE:"crosshair",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00", VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:6,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF", @@ -1085,7 +1085,8 @@ mxGraph.prototype.createTooltipHandler=function(){return new mxTooltipHandler(th mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)};mxGraph.prototype.createStylesheet=function(){return new mxStylesheet};mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)};mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer};mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)};mxGraph.prototype.getModel=function(){return this.model};mxGraph.prototype.getView=function(){return this.view}; mxGraph.prototype.getStylesheet=function(){return this.stylesheet};mxGraph.prototype.setStylesheet=function(a){this.stylesheet=a};mxGraph.prototype.getSelectionModel=function(){return this.selectionModel};mxGraph.prototype.setSelectionModel=function(a){this.selectionModel=a}; mxGraph.prototype.getSelectionCellsForChanges=function(a){for(var b=new mxDictionary,c=[],d=mxUtils.bind(this,function(a){if(!b.get(a)&&this.model.contains(a))if(this.model.isEdge(a)||this.model.isVertex(a))b.put(a,!0),c.push(a);else for(var e=this.model.getChildCount(a),f=0;f<e;f++)d(this.model.getChildAt(a,f))}),e=0;e<a.length;e++){var f=a[e];if(f.constructor!=mxRootChange){var g=null;f instanceof mxChildChange?g=f.child:null!=f.cell&&f.cell instanceof mxCell&&(g=f.cell);null!=g&&d(g)}}return c}; -mxGraph.prototype.graphModelChanged=function(a){for(var b=0;b<a.length;b++)this.processChange(a[b]);this.updateSelection();this.view.validate();this.sizeDidChange()};mxGraph.prototype.updateSelection=function(){for(var a=this.getSelectionCells(),b=[],c=0;c<a.length;c++)if(this.model.contains(a[c]))for(var d=this.model.getParent(a[c]);null!=d&&d!=this.view.currentRoot;){if(this.isCellCollapsed(d)||!this.isCellVisible(d)){b.push(a[c]);break}d=this.model.getParent(d)}else b.push(a[c]);this.removeSelectionCells(b)}; +mxGraph.prototype.graphModelChanged=function(a){for(var b=0;b<a.length;b++)this.processChange(a[b]);this.updateSelection();this.view.validate();this.sizeDidChange()}; +mxGraph.prototype.updateSelection=function(){for(var a=this.getSelectionCells(),b=[],c=0;c<a.length;c++)if(this.model.contains(a[c])&&this.isCellVisible(a[c]))for(var d=this.model.getParent(a[c]);null!=d&&d!=this.view.currentRoot;){if(this.isCellCollapsed(d)||!this.isCellVisible(d)){b.push(a[c]);break}d=this.model.getParent(d)}else b.push(a[c]);this.removeSelectionCells(b)}; mxGraph.prototype.processChange=function(a){if(a instanceof mxRootChange)this.clearSelection(),this.setDefaultParent(null),this.removeStateForCell(a.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(a instanceof mxChildChange){var b=this.model.getParent(a.child);this.view.invalidate(a.child,!0,!0);if(!this.model.contains(b)||this.isCellCollapsed(b))this.view.invalidate(a.child,!0,!0),this.removeStateForCell(a.child), this.view.currentRoot==a.child&&this.home();b!=a.previous&&(null!=b&&this.view.invalidate(b,!1,!1),null!=a.previous&&this.view.invalidate(a.previous,!1,!1))}else a instanceof mxTerminalChange||a instanceof mxGeometryChange?(a instanceof mxTerminalChange||null==a.previous&&null!=a.geometry||null!=a.previous&&!a.previous.equals(a.geometry))&&this.view.invalidate(a.cell):a instanceof mxValueChange?this.view.invalidate(a.cell,!1,!1):a instanceof mxStyleChange?(this.view.invalidate(a.cell,!0,!0),a=this.view.getState(a.cell), null!=a&&(a.style=null)):null!=a.cell&&a.cell instanceof mxCell&&this.removeStateForCell(a.cell)};mxGraph.prototype.removeStateForCell=function(a){for(var b=this.model.getChildCount(a),c=0;c<b;c++)this.removeStateForCell(this.model.getChildAt(a,c));this.view.invalidate(a,!1,!0);this.view.removeState(a)}; @@ -1135,17 +1136,17 @@ mxGraph.prototype.updateGroupBounds=function(a,b,c,d,e,f,g){null==a&&(a=this.get r.height;l=l.clone();c&&(l.x=Math.round(l.x+n.x-b-p-g),l.y=Math.round(l.y+n.y-b-q-d));l.width=Math.round(n.width+2*b+p+g+e);l.height=Math.round(n.height+2*b+q+d+f);this.model.setGeometry(a[k],l);this.moveCells(m,b+p-n.x+g,b+q-n.y+d)}}}}}finally{this.model.endUpdate()}return a}; mxGraph.prototype.getBoundingBox=function(a){var b=null;if(null!=a&&0<a.length)for(var c=0;c<a.length;c++)if(this.model.isVertex(a[c])||this.model.isEdge(a[c])){var d=this.view.getBoundingBox(this.view.getState(a[c]),!0);null!=d&&(null==b?b=mxRectangle.fromRectangle(d):b.add(d))}return b};mxGraph.prototype.cloneCell=function(a,b,c,d){return this.cloneCells([a],b,c,d)[0]}; mxGraph.prototype.cloneCells=function(a,b,c,d){b=null!=b?b:!0;var e=null;if(null!=a){for(var f=new mxDictionary,e=[],g=0;g<a.length;g++)f.put(a[g],!0),e.push(a[g]);if(0<e.length)for(var k=this.view.scale,l=this.view.translate,e=this.model.cloneCells(a,!0,c),g=0;g<a.length;g++)if(!b&&this.model.isEdge(e[g])&&null!=this.getEdgeValidationError(e[g],this.model.getTerminal(e[g],!0),this.model.getTerminal(e[g],!1)))e[g]=null;else{var m=this.model.getGeometry(e[g]);if(null!=m){var n=this.view.getState(a[g]), -p=this.view.getState(this.model.getParent(a[g]));if(null!=n&&null!=p)if(c=d?0:p.origin.x,p=d?0:p.origin.y,this.model.isEdge(e[g])){for(var n=n.absolutePoints,q=this.model.getTerminal(a[g],!0);null!=q&&!f.get(q);)q=this.model.getParent(q);null==q&&m.setTerminalPoint(new mxPoint(n[0].x/k-l.x,n[0].y/k-l.y),!0);for(q=this.model.getTerminal(a[g],!1);null!=q&&!f.get(q);)q=this.model.getParent(q);null==q&&(q=n.length-1,m.setTerminalPoint(new mxPoint(n[q].x/k-l.x,n[q].y/k-l.y),!1));m=m.points;if(null!=m)for(n= -0;n<m.length;n++)m[n].x+=c,m[n].y+=p}else m.translate(c,p)}}else e=[]}return e};mxGraph.prototype.insertVertex=function(a,b,c,d,e,f,g,k,l){b=this.createVertex(a,b,c,d,e,f,g,k,l);return this.addCell(b,a)};mxGraph.prototype.createVertex=function(a,b,c,d,e,f,g,k,l){a=new mxGeometry(d,e,f,g);a.relative=null!=l?l:!1;c=new mxCell(c,a,k);c.setId(b);c.setVertex(!0);c.setConnectable(!0);return c};mxGraph.prototype.insertEdge=function(a,b,c,d,e,f){b=this.createEdge(a,b,c,d,e,f);return this.addEdge(b,a,d,e)}; -mxGraph.prototype.createEdge=function(a,b,c,d,e,f){a=new mxCell(c,new mxGeometry,f);a.setId(b);a.setEdge(!0);a.geometry.relative=!0;return a};mxGraph.prototype.addEdge=function(a,b,c,d,e){return this.addCell(a,b,e,c,d)};mxGraph.prototype.addCell=function(a,b,c,d,e){return this.addCells([a],b,c,d,e)[0]}; +p=this.view.getState(this.model.getParent(a[g]));if(null!=n&&null!=p)if(c=d?0:p.origin.x,p=d?0:p.origin.y,this.model.isEdge(e[g])){if(n=n.absolutePoints,null!=n){for(var q=this.model.getTerminal(a[g],!0);null!=q&&!f.get(q);)q=this.model.getParent(q);null==q&&m.setTerminalPoint(new mxPoint(n[0].x/k-l.x,n[0].y/k-l.y),!0);for(q=this.model.getTerminal(a[g],!1);null!=q&&!f.get(q);)q=this.model.getParent(q);null==q&&(q=n.length-1,m.setTerminalPoint(new mxPoint(n[q].x/k-l.x,n[q].y/k-l.y),!1));m=m.points; +if(null!=m)for(n=0;n<m.length;n++)m[n].x+=c,m[n].y+=p}}else m.translate(c,p)}}else e=[]}return e};mxGraph.prototype.insertVertex=function(a,b,c,d,e,f,g,k,l){b=this.createVertex(a,b,c,d,e,f,g,k,l);return this.addCell(b,a)};mxGraph.prototype.createVertex=function(a,b,c,d,e,f,g,k,l){a=new mxGeometry(d,e,f,g);a.relative=null!=l?l:!1;c=new mxCell(c,a,k);c.setId(b);c.setVertex(!0);c.setConnectable(!0);return c}; +mxGraph.prototype.insertEdge=function(a,b,c,d,e,f){b=this.createEdge(a,b,c,d,e,f);return this.addEdge(b,a,d,e)};mxGraph.prototype.createEdge=function(a,b,c,d,e,f){a=new mxCell(c,new mxGeometry,f);a.setId(b);a.setEdge(!0);a.geometry.relative=!0;return a};mxGraph.prototype.addEdge=function(a,b,c,d,e){return this.addCell(a,b,e,c,d)};mxGraph.prototype.addCell=function(a,b,c,d,e){return this.addCells([a],b,c,d,e)[0]}; mxGraph.prototype.addCells=function(a,b,c,d,e){null==b&&(b=this.getDefaultParent());null==c&&(c=this.model.getChildCount(b));this.model.beginUpdate();try{this.cellsAdded(a,b,c,d,e,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",a,"parent",b,"index",c,"source",d,"target",e))}finally{this.model.endUpdate()}return a}; mxGraph.prototype.cellsAdded=function(a,b,c,d,e,f,g,k){if(null!=a&&null!=b&&null!=c){this.model.beginUpdate();try{for(var l=f?this.view.getState(b):null,m=null!=l?l.origin:null,n=new mxPoint(0,0),l=0;l<a.length;l++)if(null==a[l])c--;else{var p=this.model.getParent(a[l]);if(null!=m&&a[l]!=b&&b!=p){var q=this.view.getState(p),r=null!=q?q.origin:n,t=this.model.getGeometry(a[l]);if(null!=t){var u=r.x-m.x,x=r.y-m.y,t=t.clone();t.translate(u,x);t.relative||!this.model.isVertex(a[l])||this.isAllowNegativeCoordinates()|| (t.x=Math.max(0,t.x),t.y=Math.max(0,t.y));this.model.setGeometry(a[l],t)}}b==p&&c+l>this.model.getChildCount(b)&&c--;this.model.add(b,a[l],c+l);this.autoSizeCellsOnAdd&&this.autoSizeCell(a[l],!0);(null==k||k)&&this.isExtendParentsOnAdd(a[l])&&this.isExtendParent(a[l])&&this.extendParent(a[l]);(null==g||g)&&this.constrainChild(a[l]);null!=d&&this.cellConnected(a[l],d,!0);null!=e&&this.cellConnected(a[l],e,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",a,"parent",b,"index",c,"source", d,"target",e,"absolute",f))}finally{this.model.endUpdate()}}};mxGraph.prototype.autoSizeCell=function(a,b){if(null!=b?b:1)for(var c=this.model.getChildCount(a),d=0;d<c;d++)this.autoSizeCell(this.model.getChildAt(a,d));this.getModel().isVertex(a)&&this.isAutoSizeCell(a)&&this.updateCellSize(a)}; mxGraph.prototype.removeCells=function(a,b){b=null!=b?b:!0;null==a&&(a=this.getDeletableCells(this.getSelectionCells()));if(b)a=this.getDeletableCells(this.addAllEdges(a));else{a=a.slice();for(var c=this.getDeletableCells(this.getAllEdges(a)),d=new mxDictionary,e=0;e<a.length;e++)d.put(a[e],!0);for(e=0;e<c.length;e++)null!=this.view.getState(c[e])||d.get(c[e])||(d.put(c[e],!0),a.push(c[e]))}this.model.beginUpdate();try{this.cellsRemoved(a),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells", a,"includeEdges",b))}finally{this.model.endUpdate()}return a}; -mxGraph.prototype.cellsRemoved=function(a){if(null!=a&&0<a.length){var b=this.view.scale,c=this.view.translate;this.model.beginUpdate();try{for(var d=new mxDictionary,e=0;e<a.length;e++)d.put(a[e],!0);for(e=0;e<a.length;e++){for(var f=this.getAllEdges([a[e]]),g=mxUtils.bind(this,function(d,f){var g=this.model.getGeometry(d);if(null!=g){for(var k=this.model.getTerminal(d,f),l=!1,m=k;null!=m;){if(a[e]==m){l=!0;break}m=this.model.getParent(m)}l&&(g=g.clone(),l=this.view.getState(d),null!=l?(k=l.absolutePoints, -m=f?0:k.length-1,g.setTerminalPoint(new mxPoint(k[m].x/b-c.x-l.origin.x,k[m].y/b-c.y-l.origin.y),f)):(k=this.view.getState(k),null!=k&&g.setTerminalPoint(new mxPoint(k.getCenterX()/b-c.x,k.getCenterY()/b-c.y),f)),this.model.setGeometry(d,g),this.model.setTerminal(d,null,f))}}),k=0;k<f.length;k++)d.get(f[k])||(d.put(f[k],!0),g(f[k],!0),g(f[k],!1));this.model.remove(a[e])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",a))}finally{this.model.endUpdate()}}}; +mxGraph.prototype.cellsRemoved=function(a){if(null!=a&&0<a.length){var b=this.view.scale,c=this.view.translate;this.model.beginUpdate();try{for(var d=new mxDictionary,e=0;e<a.length;e++)d.put(a[e],!0);for(e=0;e<a.length;e++){for(var f=this.getAllEdges([a[e]]),g=mxUtils.bind(this,function(d,f){var g=this.model.getGeometry(d);if(null!=g){for(var k=this.model.getTerminal(d,f),l=!1,m=k;null!=m;){if(a[e]==m){l=!0;break}m=this.model.getParent(m)}l&&(g=g.clone(),l=this.view.getState(d),null!=l&&null!=l.absolutePoints? +(k=l.absolutePoints,m=f?0:k.length-1,g.setTerminalPoint(new mxPoint(k[m].x/b-c.x-l.origin.x,k[m].y/b-c.y-l.origin.y),f)):(k=this.view.getState(k),null!=k&&g.setTerminalPoint(new mxPoint(k.getCenterX()/b-c.x,k.getCenterY()/b-c.y),f)),this.model.setGeometry(d,g),this.model.setTerminal(d,null,f))}}),k=0;k<f.length;k++)d.get(f[k])||(d.put(f[k],!0),g(f[k],!0),g(f[k],!1));this.model.remove(a[e])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",a))}finally{this.model.endUpdate()}}}; mxGraph.prototype.splitEdge=function(a,b,c,d,e){d=d||0;e=e||0;var f=this.model.getParent(a),g=this.model.getTerminal(a,!0);this.model.beginUpdate();try{if(null==c){c=this.cloneCell(a);var k=this.view.getState(a),l=this.getCellGeometry(c);if(null!=l&&null!=l.points&&null!=k){var m=this.view.translate,n=this.view.scale,p=mxUtils.findNearestSegment(k,(d+m.x)*n,(e+m.y)*n);l.points=l.points.slice(0,p);l=this.getCellGeometry(a);null!=l&&null!=l.points&&(l=l.clone(),l.points=l.points.slice(p),this.model.setGeometry(a, l))}}this.cellsMoved(b,d,e,!1,!1);this.cellsAdded(b,f,this.model.getChildCount(f),null,null,!0);this.cellsAdded([c],f,this.model.getChildCount(f),g,b[0],!1);this.cellConnected(a,b[0],!0);this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",a,"cells",b,"newEdge",c,"dx",d,"dy",e))}finally{this.model.endUpdate()}return c}; mxGraph.prototype.toggleCells=function(a,b,c){null==b&&(b=this.getSelectionCells());c&&(b=this.addAllEdges(b));this.model.beginUpdate();try{this.cellsToggled(b,a),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",a,"cells",b,"includeEdges",c))}finally{this.model.endUpdate()}return b};mxGraph.prototype.cellsToggled=function(a,b){if(null!=a&&0<a.length){this.model.beginUpdate();try{for(var c=0;c<a.length;c++)this.model.setVisible(a[c],b)}finally{this.model.endUpdate()}}}; @@ -1786,8 +1787,9 @@ mxObjectCodec.prototype.afterEncode=function(a,b,c){return c};mxObjectCodec.prot mxObjectCodec.prototype.decodeAttributes=function(a,b,c){b=b.attributes;if(null!=b)for(var d=0;d<b.length;d++)this.decodeAttribute(a,b[d],c)};mxObjectCodec.prototype.isIgnoredAttribute=function(a,b,c){return"as"==b.nodeName||"id"==b.nodeName}; mxObjectCodec.prototype.decodeAttribute=function(a,b,c){if(!this.isIgnoredAttribute(a,b,c)){var d=b.nodeName;b=this.convertAttributeFromXml(a,b,c);var e=this.getFieldName(d);if(this.isReference(c,e,b,!1)){a=a.getObject(b);if(null==a){mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+d+"="+b);return}b=a}this.isExcluded(c,d,b,!1)||(c[d]=b)}}; mxObjectCodec.prototype.decodeChildren=function(a,b,c){for(b=b.firstChild;null!=b;){var d=b.nextSibling;b.nodeType!=mxConstants.NODETYPE_ELEMENT||this.processInclude(a,b,c)||this.decodeChild(a,b,c);b=d}}; -mxObjectCodec.prototype.decodeChild=function(a,b,c){var d=this.getFieldName(b.getAttribute("as"));if(null==d||!this.isExcluded(c,d,b,!1)){var e=this.getFieldTemplate(c,d,b);"add"==b.nodeName?(a=b.getAttribute("value"),null==a&&mxObjectCodec.allowEval&&(a=mxUtils.eval(mxUtils.getTextContent(b)))):a=a.decode(b,e);this.addObjectValue(c,d,a,e)}};mxObjectCodec.prototype.getFieldTemplate=function(a,b,c){a=a[b];a instanceof Array&&0<a.length&&(a=null);return a}; -mxObjectCodec.prototype.addObjectValue=function(a,b,c,d){null!=c&&c!=d&&(null!=b&&0<b.length?a[b]=c:a.push(c))};mxObjectCodec.prototype.processInclude=function(a,b,c){if("include"==b.nodeName){b=b.getAttribute("name");if(null!=b)try{var d=mxUtils.load(b).getDocumentElement();null!=d&&a.decode(d,c)}catch(e){}return!0}return!1};mxObjectCodec.prototype.beforeDecode=function(a,b,c){return b};mxObjectCodec.prototype.afterDecode=function(a,b,c){return c}; +mxObjectCodec.prototype.decodeChild=function(a,b,c){var d=this.getFieldName(b.getAttribute("as"));if(null==d||!this.isExcluded(c,d,b,!1)){var e=this.getFieldTemplate(c,d,b);"add"==b.nodeName?(a=b.getAttribute("value"),null==a&&mxObjectCodec.allowEval&&(a=mxUtils.eval(mxUtils.getTextContent(b)))):a=a.decode(b,e);try{this.addObjectValue(c,d,a,e)}catch(f){throw Error(f.message+" for "+b.nodeName);}}}; +mxObjectCodec.prototype.getFieldTemplate=function(a,b,c){a=a[b];a instanceof Array&&0<a.length&&(a=null);return a};mxObjectCodec.prototype.addObjectValue=function(a,b,c,d){null!=c&&c!=d&&(null!=b&&0<b.length?a[b]=c:a.push(c))};mxObjectCodec.prototype.processInclude=function(a,b,c){if("include"==b.nodeName){b=b.getAttribute("name");if(null!=b)try{var d=mxUtils.load(b).getDocumentElement();null!=d&&a.decode(d,c)}catch(e){}return!0}return!1};mxObjectCodec.prototype.beforeDecode=function(a,b,c){return b}; +mxObjectCodec.prototype.afterDecode=function(a,b,c){return c}; mxCodecRegistry.register(function(){var a=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);a.isCellCodec=function(){return!0};a.isNumericAttribute=function(a,c,d){return"value"!==c.nodeName&&mxObjectCodec.prototype.isNumericAttribute.apply(this,arguments)};a.isExcluded=function(a,c,d,e){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||e&&"value"==c&&d.nodeType==mxConstants.NODETYPE_ELEMENT};a.afterEncode=function(a,c,d){if(null!= c.value&&c.value.nodeType==mxConstants.NODETYPE_ELEMENT){var b=d;d=mxUtils.importNode(a.document,c.value,!0);d.appendChild(b);a=b.getAttribute("id");d.setAttribute("id",a);b.removeAttribute("id")}return d};a.beforeDecode=function(a,c,d){var b=c.cloneNode(!0),f=this.getName();c.nodeName!=f?(b=c.getElementsByTagName(f)[0],null!=b&&b.parentNode==c?(mxUtils.removeWhitespace(b,!0),mxUtils.removeWhitespace(b,!1),b.parentNode.removeChild(b)):b=null,d.value=c.cloneNode(!0),c=d.value.getAttribute("id"),null!= c&&(d.setId(c),d.value.removeAttribute("id"))):d.setId(c.getAttribute("id"));if(null!=b)for(c=0;c<this.idrefs.length;c++){var f=this.idrefs[c],g=b.getAttribute(f);if(null!=g){b.removeAttribute(f);var k=a.objects[g]||a.lookup(g);null==k&&(g=a.getElementById(g),null!=g&&(k=(mxCodecRegistry.codecs[g.nodeName]||this).decode(a,g)));d[f]=k}}return b};return a}()); diff --git a/src/main/java/com/mxgraph/io/gliffy/importer/GliffyDiagramConverter.java b/src/main/java/com/mxgraph/io/gliffy/importer/GliffyDiagramConverter.java index 543977e5..6ac09676 100644 --- a/src/main/java/com/mxgraph/io/gliffy/importer/GliffyDiagramConverter.java +++ b/src/main/java/com/mxgraph/io/gliffy/importer/GliffyDiagramConverter.java @@ -692,6 +692,13 @@ public class GliffyDiagramConverter //Gliffy's subroutine maps to drawio process, whose inner boundary, unlike subroutine's, is relative to it's width so here we set it to 10px
style.append("size=" + 10 / gliffyObject.width).append(";");
}
+
+ String fragmentText;
+ if((fragmentText = gliffyObject.getUmlSequenceCombinedFragmentText()) != null)
+ {
+ cell.setValue(fragmentText);
+ gliffyObject.children.remove(0);
+ }
}
else if (gliffyObject.isLine())
{
diff --git a/src/main/java/com/mxgraph/io/gliffy/importer/gliffyTranslation.properties b/src/main/java/com/mxgraph/io/gliffy/importer/gliffyTranslation.properties index 33fc2f7c..c882e566 100644 --- a/src/main/java/com/mxgraph/io/gliffy/importer/gliffyTranslation.properties +++ b/src/main/java/com/mxgraph/io/gliffy/importer/gliffyTranslation.properties @@ -153,10 +153,10 @@ com.gliffy.shape.uml.uml_v1.default.actor=umlActor;verticalLabelPosition=bottom; com.gliffy.shape.uml.uml_v1.default.use_case=ellipse;perimeter=ellipsePerimeter # UML v2 SEQUENCE com.gliffy.shape.uml.uml_v2.sequence.frame=mxgraph.sysml.package;xSize=90;align=left;spacingLeft=10;labelX=26 -com.gliffy.shape.uml.uml_v2.sequence.interaction_use=stencil(rVNbDsIgEDwN/wjxAMbHPWi7taQIDWCtt5dmsVI0aqw/hBkmwyy7EL51jeiAMNoQviOMrSgNa8CXDAvXQemR7IWVolCAJ85b08JFVj56SN2AlX485XtCN4RvC1G2R2vOuiLsMLG1sRDZO9WJ0SWCk+nHaAPaxiDXFD28lNSJli8Qr9hbdZaDrd+qF4jz0KUyDlIi7GfPVUulsBmp6k8vOg3CT+o7/q7yZ/XH2p/r9jB4nE40tVDjJcOszVnXqVDyqJEqQXuwSPcJf5JVFYd/FujFOAcWPxjf3wA=);xSize=90;align=left;spacingLeft=10 -com.gliffy.shape.uml.uml_v2.sequence.opt_combined_fragment=stencil(rVPREoIgEPwa3gmmD2jM/gP1TEYCB0nt78M5MtSmmuyFYZedZY87CE/aSjRAGK0IPxLGdpT61eN+gUXbQO6Q7ISVIlOAJ62zpoZeFi54SF2BlW485SmhB8KTTOT12ZqrLgg7TWxpLAT2QTVidAngYrox2oC2IcgtRk8vJXWk5RvEO/ZWvcjB9m/VG8TL0LkyLcSE38+eq5RKYTNi1Z9edBqEn9QP/F3la/XH2td1OxgcTieamsbhJcOszYuuU6HkWSOVg3Zgke4i/iKLIgz/LNCLcfYsfjCe3gE=);xSize=90;align=left;spacingLeft=10 -com.gliffy.shape.uml.uml_v2.sequence.loop_combined_fragment=stencil(rVNbDoMgEDwN/xTSAzStvQeFVYkUDFJtb1/NokX7jOkPYYbJMLsshO+bUtRAGC0JPxDGNpT2a4+7BRZNDTIg2QqvxckAnjTBuwo6rUL00LYEr8NwyjNCd4TvT0JWhXcXqwg7TmzuPER2pGoxuERwdu0Q7Yq2McgtRQ8vo22i5dv14g37qGZzdYTv1HS9eBlaGtdASvT7WbtybQw+Rqr6U0enQVilHvFvlT+rv9b+XHeAa8DpRFPjXI23jBlfPjsVRhcWKQk2gEe6TfizVipO/yzRi3nuWfxhPLsD);xSize=90;align=left;spacingLeft=10 -com.gliffy.shape.uml.uml_v2.sequence.alt_combined_fragment=stencil(rVNbDsIgEDwN/wjxAMbHPWi7WlKEBrCtt5dmsVI0aqw/hBkmwyy7EL51tWiBMFoTviOMrSgNa8B9hoVrofRIdsJKUSjAE+etaaCXlY8eUtdgpR9P+Z7QDeHbQpTNyZqLrgg7TOzRWIjsnWrF6BLB2XRjtAFtY5Brih5eSupEyxeIV+ytOsvB1m/VC8R56FIZBykR9rPnOkqlsBmp6k8vOg3CT+o7/q7yZ/XH2p/r9jB4nE40FcrjJcOszVnXqVDypJEqQXuwSHcJf5ZVFYd/FujFOAcWPxjf3wA=);xSize=90;align=left;spacingLeft=10 +com.gliffy.shape.uml.uml_v2.sequence.interaction_use=umlFrame;align=left;spacingLeft=10l;width=40;height=20 +com.gliffy.shape.uml.uml_v2.sequence.opt_combined_fragment=umlFrame;align=left;spacingLeft=10l;width=40;height=20 +com.gliffy.shape.uml.uml_v2.sequence.loop_combined_fragment=umlFrame;align=left;spacingLeft=10l;width=45;height=20 +com.gliffy.shape.uml.uml_v2.sequence.alt_combined_fragment=umlFrame;align=left;spacingLeft=10l;width=40;height=20 com.gliffy.shape.basic.basic_v1.default.line=edgeStyle=none;endArrow=none #composite com.gliffy.shape.uml.uml_v2.sequence.entity_lifeline=rect;fillColor=none;strokeColor=none diff --git a/src/main/java/com/mxgraph/io/gliffy/model/GliffyObject.java b/src/main/java/com/mxgraph/io/gliffy/model/GliffyObject.java index 8bb7e46e..58be244a 100644 --- a/src/main/java/com/mxgraph/io/gliffy/model/GliffyObject.java +++ b/src/main/java/com/mxgraph/io/gliffy/model/GliffyObject.java @@ -196,6 +196,8 @@ public class GliffyObject implements PostDeserializable //It is a group but we have one similar
//GROUP_SHAPES.add("com.gliffy.shape.ui.ui_v3.forms_controls.audio_controls");
+ GROUP_SHAPES.add("com.gliffy.shape.uml.uml_v2.sequence.recursive_message");
+
MINDMAP_SHAPES.add("com.gliffy.shape.mindmap.mindmap_v1.default.main_topic");
MINDMAP_SHAPES.add("com.gliffy.shape.mindmap.mindmap_v1.default.subtopic");
MINDMAP_SHAPES.add("com.gliffy.shape.mindmap.mindmap_v1.default.child_node");
@@ -628,4 +630,30 @@ public class GliffyObject implements PostDeserializable {
return uid != null ? uid.contains("com.gliffy.shape.uml.uml_v2.activity.frame") : false;
}
+
+ /**
+ * @return
+ */
+ public String getUmlSequenceCombinedFragmentText()
+ {
+ if("com.gliffy.shape.uml.uml_v2.sequence.interaction_use".equals(uid))
+ {
+ return "ref";
+ }
+ if("com.gliffy.shape.uml.uml_v2.sequence.opt_combined_fragment".equals(uid))
+ {
+ return "opt";
+ }
+ if("com.gliffy.shape.uml.uml_v2.sequence.loop_combined_fragment".equals(uid))
+ {
+ return "loop";
+ }
+ if("com.gliffy.shape.uml.uml_v2.sequence.alt_combined_fragment".equals(uid))
+ {
+ return "alt";
+ }
+
+ return null;
+ }
+
}
diff --git a/src/main/java/com/mxgraph/online/CacheServlet.java b/src/main/java/com/mxgraph/online/CacheServlet.java index a7703bf3..70e3d368 100644 --- a/src/main/java/com/mxgraph/online/CacheServlet.java +++ b/src/main/java/com/mxgraph/online/CacheServlet.java @@ -149,8 +149,9 @@ public class CacheServlet extends HttpServlet String qs = request.getQueryString(); String ref = request.getHeader("referer"); boolean stats = qs != null && qs.equals("stats"); + boolean alive = qs != null && qs.equals("alive"); - if (stats || (ref != null && ref.toLowerCase() + if (stats || alive || (ref != null && ref.toLowerCase() .matches("https?://([a-z0-9,-]+[.])*draw[.]io/.*"))) { PrintWriter writer = response.getWriter(); @@ -181,27 +182,34 @@ public class CacheServlet extends HttpServlet ref.toLowerCase().substring(0, ref.indexOf(".draw.io/") + 8)); - // Disables wire-compression - response.setContentType("application/octet-stream"); - String id = request.getParameter("id"); - - if (id != null) + if (alive) + { + response.setStatus(HttpServletResponse.SC_OK); + } + else { - try + // Disables wire-compression + response.setContentType("application/octet-stream"); + String id = request.getParameter("id"); + + if (id != null) { - writer.print(getPatches(id, request)); - response.setStatus(HttpServletResponse.SC_OK); + try + { + writer.print(getPatches(id, request)); + response.setStatus(HttpServletResponse.SC_OK); + } + catch (UnauthorizedException e) + { + response.setStatus( + HttpServletResponse.SC_UNAUTHORIZED); + } } - catch (UnauthorizedException e) + else { - response.setStatus( - HttpServletResponse.SC_UNAUTHORIZED); + response.setStatus(HttpServletResponse.SC_BAD_REQUEST); } } - else - { - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); - } } writer.flush(); diff --git a/src/main/java/com/mxgraph/online/MSGraphAuthServlet.java b/src/main/java/com/mxgraph/online/MSGraphAuthServlet.java index 51c640d9..b174cd04 100644 --- a/src/main/java/com/mxgraph/online/MSGraphAuthServlet.java +++ b/src/main/java/com/mxgraph/online/MSGraphAuthServlet.java @@ -154,7 +154,6 @@ public class MSGraphAuthServlet extends HttpServlet String code = request.getParameter("code"); String refreshToken = request.getParameter("refresh_token"); updateKeys(); - String secret, client, redirectUri; if ("127.0.0.1".equals(request.getServerName())) @@ -225,12 +224,11 @@ public class MSGraphAuthServlet extends HttpServlet //Call the opener callback function directly with the given json if (!jsonResponse) { - res.append("<!DOCTYPE html><html><head><script>"); - res.append("if (window.opener != null && window.opener.onOneDriveCallback != null)"); - res.append("{"); - res.append(" window.opener.onOneDriveCallback("); //The following is a json containing access_token and redresh_token + res.append("<!DOCTYPE html><html><head><script src=\"https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js\" type=\"text/javascript\"></script><script>"); + res.append("var authInfo = "); //The following is a json containing access_token and redresh_token } + while ((inputLine = in.readLine()) != null) { res.append(inputLine); @@ -239,7 +237,12 @@ public class MSGraphAuthServlet extends HttpServlet if (!jsonResponse) { - res.append(" , window);"); + res.append(";"); + res.append("if (window.opener != null && window.opener.onOneDriveCallback != null)"); + res.append("{"); + res.append(" window.opener.onOneDriveCallback(authInfo, window);"); + res.append("} else {"); + res.append(" Office.initialize = function () { Office.context.ui.messageParent(JSON.stringify(authInfo));}"); res.append("}"); res.append("</script></head><body></body></html>"); } diff --git a/src/main/java/com/mxgraph/online/OpenServlet.java b/src/main/java/com/mxgraph/online/OpenServlet.java index 2d5d7ce4..d06c0d74 100644 --- a/src/main/java/com/mxgraph/online/OpenServlet.java +++ b/src/main/java/com/mxgraph/online/OpenServlet.java @@ -215,6 +215,12 @@ public class OpenServlet extends HttpServlet "window.parent.showOpenAlert(window.parent.mxResources.get('drawingTooLarge'));"); } } + catch (OutOfMemoryError e) + { + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + writeScript(writer, + "window.parent.showOpenAlert('Out of memory');"); + } catch (Exception e) { StringWriter errors = new StringWriter(); diff --git a/src/main/java/com/mxgraph/online/ProxyServlet.java b/src/main/java/com/mxgraph/online/ProxyServlet.java index e0d634b1..4412d44b 100644 --- a/src/main/java/com/mxgraph/online/ProxyServlet.java +++ b/src/main/java/com/mxgraph/online/ProxyServlet.java @@ -22,6 +22,7 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import com.google.apphosting.api.DeadlineExceededException; import com.mxgraph.online.Utils.UnsupportedContentException; /** @@ -133,6 +134,10 @@ public class ProxyServlet extends HttpServlet + ", referer=" + ((ref != null) ? ref : "[null]") + ", user agent=" + ((ua != null) ? ua : "[null]")); } + catch (DeadlineExceededException e) + { + response.setStatus(HttpServletResponse.SC_REQUEST_TIMEOUT); + } catch (UnknownHostException | FileNotFoundException e) { // do not log 404 and DNS errors diff --git a/src/main/java/com/mxgraph/online/SaveServlet.java b/src/main/java/com/mxgraph/online/SaveServlet.java index c2364e98..0f08fce2 100644 --- a/src/main/java/com/mxgraph/online/SaveServlet.java +++ b/src/main/java/com/mxgraph/online/SaveServlet.java @@ -205,6 +205,21 @@ public class SaveServlet extends HttpServlet { response.setStatus(HttpServletResponse.SC_BAD_REQUEST); } + + long mem = Runtime.getRuntime().totalMemory() + - Runtime.getRuntime().freeMemory(); + + log.fine("save: ip=" + request.getRemoteAddr() + " ref=\"" + + request.getHeader("Referer") + "\" in=" + + request.getContentLength() + " enc=" + + ((enc != null) ? enc.length() : "[none]") + " xml=" + + ((xml != null) ? xml.length() : "[none]") + " dt=" + + request.getContentLength() + " mem=" + mem + " dt=" + + (System.currentTimeMillis() - t0)); + } + catch (OutOfMemoryError e) + { + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); } catch (IllegalArgumentException e) { @@ -212,16 +227,6 @@ public class SaveServlet extends HttpServlet + System.getProperty("line.separator") + "Original stack trace : " + e.getMessage()); } - long mem = Runtime.getRuntime().totalMemory() - - Runtime.getRuntime().freeMemory(); - - log.fine("save: ip=" + request.getRemoteAddr() + " ref=\"" - + request.getHeader("Referer") + "\" in=" - + request.getContentLength() + " enc=" - + ((enc != null) ? enc.length() : "[none]") + " xml=" - + ((xml != null) ? xml.length() : "[none]") + " dt=" - + request.getContentLength() + " mem=" + mem + " dt=" - + (System.currentTimeMillis() - t0)); } else { diff --git a/src/main/webapp/cache.manifest b/src/main/webapp/cache.manifest index 97d16291..8e1655ea 100644 --- a/src/main/webapp/cache.manifest +++ b/src/main/webapp/cache.manifest @@ -1,7 +1,7 @@ CACHE MANIFEST # THIS FILE WAS GENERATED. DO NOT MODIFY! -# 01/18/2019 11:34 AM +# 02/04/2019 11:37 AM app.html index.html?offline=1 diff --git a/src/main/webapp/export3.html b/src/main/webapp/export3.html index 403ea177..e77b3c66 100644 --- a/src/main/webapp/export3.html +++ b/src/main/webapp/export3.html @@ -25,6 +25,14 @@ function render(data) { + var autoScale = false; + + if (data.scale == 'auto') + { + autoScale = true; + data.scale = 1; + } + var graph = new Graph(document.getElementById('graph')); data.border = parseInt(data.border) || 0; data.w = parseFloat(data.w) || 0; @@ -177,7 +185,6 @@ function renderPage() { - // Enables math typesetting math |= xmlDoc.documentElement.getAttribute('math') == '1'; @@ -305,7 +312,25 @@ } else { - graph.view.scaleAndTranslate(data.scale, + var s = data.scale; + + if (autoScale) + { + if (b.width < 800 & b.height < 1200) + { + s = 4; + } + else if (b.width < 1600 & b.height < 2400) + { + s = 3; + } + else if (b.width < 3200 && b.height < 4800) + { + s = 2; + } + } + + graph.view.scaleAndTranslate(s, Math.floor(data.border - Math.floor(b.x)), Math.floor(data.border - Math.floor(b.y))); } diff --git a/src/main/webapp/images/drawlogo80.png b/src/main/webapp/images/drawlogo80.png Binary files differnew file mode 100644 index 00000000..df13d730 --- /dev/null +++ b/src/main/webapp/images/drawlogo80.png diff --git a/src/main/webapp/images/file.png b/src/main/webapp/images/file.png Binary files differnew file mode 100644 index 00000000..2b3a0378 --- /dev/null +++ b/src/main/webapp/images/file.png diff --git a/src/main/webapp/images/folder.png b/src/main/webapp/images/folder.png Binary files differnew file mode 100644 index 00000000..720ddc33 --- /dev/null +++ b/src/main/webapp/images/folder.png diff --git a/src/main/webapp/images/update16.png b/src/main/webapp/images/update16.png Binary files differnew file mode 100644 index 00000000..ce060e2e --- /dev/null +++ b/src/main/webapp/images/update16.png diff --git a/src/main/webapp/images/update32.png b/src/main/webapp/images/update32.png Binary files differnew file mode 100644 index 00000000..08e663f1 --- /dev/null +++ b/src/main/webapp/images/update32.png diff --git a/src/main/webapp/images/update80.png b/src/main/webapp/images/update80.png Binary files differnew file mode 100644 index 00000000..d58b36cb --- /dev/null +++ b/src/main/webapp/images/update80.png diff --git a/src/main/webapp/js/app.min.js b/src/main/webapp/js/app.min.js index e2d384f1..08038fda 100644 --- a/src/main/webapp/js/app.min.js +++ b/src/main/webapp/js/app.min.js @@ -133,7 +133,7 @@ l--,_+=n[s++]<<u,u+=8}if(a.nlen=(31&_)+257,_>>>=5,u-=5,a.ndist=(31&_)+1,_>>>=5,u var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(a,b){var c="",d,e,f,g,k,l,m=0;for(null!=b&&b||(a=Base64._utf8_encode(a));m<a.length;)d=a.charCodeAt(m++),e=a.charCodeAt(m++),f=a.charCodeAt(m++),g=d>>2,d=(d&3)<<4|e>>4,k=(e&15)<<2|f>>6,l=f&63,isNaN(e)?k=l=64:isNaN(f)&&(l=64),c=c+this._keyStr.charAt(g)+this._keyStr.charAt(d)+this._keyStr.charAt(k)+this._keyStr.charAt(l);return c},decode:function(a,b){b=null!=b?b:!1;var c="",d,e,f,g,k,l=0;for(a=a.replace(/[^A-Za-z0-9\+\/\=]/g, "");l<a.length;)d=this._keyStr.indexOf(a.charAt(l++)),e=this._keyStr.indexOf(a.charAt(l++)),g=this._keyStr.indexOf(a.charAt(l++)),k=this._keyStr.indexOf(a.charAt(l++)),d=d<<2|e>>4,e=(e&15)<<4|g>>2,f=(g&3)<<6|k,c+=String.fromCharCode(d),64!=g&&(c+=String.fromCharCode(e)),64!=k&&(c+=String.fromCharCode(f));b||(c=Base64._utf8_decode(c));return c},_utf8_encode:function(a){a=a.replace(/\r\n/g,"\n");for(var b="",c=0;c<a.length;c++){var d=a.charCodeAt(c);128>d?b+=String.fromCharCode(d):(127<d&&2048>d?b+= String.fromCharCode(d>>6|192):(b+=String.fromCharCode(d>>12|224),b+=String.fromCharCode(d>>6&63|128)),b+=String.fromCharCode(d&63|128))}return b},_utf8_decode:function(a){var b="",c=0,d;for(c1=c2=0;c<a.length;)d=a.charCodeAt(c),128>d?(b+=String.fromCharCode(d),c++):191<d&&224>d?(c2=a.charCodeAt(c+1),b+=String.fromCharCode((d&31)<<6|c2&63),c+=2):(c2=a.charCodeAt(c+1),c3=a.charCodeAt(c+2),b+=String.fromCharCode((d&15)<<12|(c2&63)<<6|c3&63),c+=3);return b}};window.urlParams=window.urlParams||{};window.isLocalStorage=window.isLocalStorage||!1;window.mxLoadSettings=window.mxLoadSettings||"1"!=urlParams.configure;window.isSvgBrowser=window.isSvgBrowser||0>navigator.userAgent.indexOf("MSIE")||9<=document.documentMode;window.EXPORT_URL=window.EXPORT_URL||"https://exp.draw.io/ImageExport4/export";window.PLANT_URL=window.PLANT_URL||"https://exp-plant.draw.io/plantuml4";window.VSD_CONVERT_URL=window.VSD_CONVERT_URL||"https://convert.draw.io/VsdConverter/api/converter"; -window.EMF_CONVERT_URL=window.EMF_CONVERT_URL||"https://convert.draw.io/emf2png/convertEMF";window.SAVE_URL=window.SAVE_URL||"save";window.OPEN_URL=window.OPEN_URL||"open";window.PROXY_URL=window.PROXY_URL||"proxy";window.SHAPES_PATH=window.SHAPES_PATH||"shapes";window.GRAPH_IMAGE_PATH=window.GRAPH_IMAGE_PATH||"img";window.ICONSEARCH_PATH=window.ICONSEARCH_PATH||((0<=navigator.userAgent.indexOf("MSIE")||urlParams.dev)&&"file:"!=window.location.protocol?"iconSearch":"https://www.draw.io/iconSearch"); +window.EMF_CONVERT_URL=window.EMF_CONVERT_URL||"https://convert.draw.io/emf2png/convertEMF";window.SAVE_URL=window.SAVE_URL||"save";window.OPEN_URL=window.OPEN_URL||"open";window.PROXY_URL=window.PROXY_URL||"proxy";window.VIEWER_URL=null;window.SHAPES_PATH=window.SHAPES_PATH||"shapes";window.GRAPH_IMAGE_PATH=window.GRAPH_IMAGE_PATH||"img";window.ICONSEARCH_PATH=window.ICONSEARCH_PATH||((0<=navigator.userAgent.indexOf("MSIE")||urlParams.dev)&&"file:"!=window.location.protocol?"iconSearch":"https://www.draw.io/iconSearch"); window.TEMPLATE_PATH=window.TEMPLATE_PATH||"templates";window.NEW_DIAGRAM_CATS_PATH=window.NEW_DIAGRAM_CATS_PATH||"newDiagramCats";window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";window.RESOURCE_BASE=window.RESOURCE_BASE||RESOURCES_PATH+"/dia";window.mxLoadResources=window.mxLoadResources||!1; window.mxLanguage=window.mxLanguage||function(){var a="1"==urlParams.offline?"en":urlParams.lang;if(null==a&&"undefined"!=typeof JSON&&isLocalStorage)try{var b=localStorage.getItem(".drawio-config");null!=b&&(a=JSON.parse(b).language||null)}catch(c){isLocalStorage=!1}return a}(); window.mxLanguageMap=window.mxLanguageMap||{i18n:"",id:"Bahasa Indonesia",ms:"Bahasa Melayu",bs:"Bosanski",bg:"Bulgarian",ca:"Català",cs:"Čeština",da:"Dansk",de:"Deutsch",et:"Eesti",en:"English",es:"Español",fil:"Filipino",fr:"Français",it:"Italiano",hu:"Magyar",nl:"Nederlands",no:"Norsk",pl:"Polski","pt-br":"Português (Brasil)",pt:"Português (Portugal)",ro:"Română",fi:"Suomi",sv:"Svenska",vi:"Tiếng Việt",tr:"Türkçe",el:"Ελληνικά",ru:"Русский",sr:"Српски",uk:"Українська",he:"עברית",ar:"العربية",th:"ไทย", @@ -190,50 +190,50 @@ b(g.childNodes),e<a.length-1&&0<=mxUtils.indexOf(c,a[e+1].nodeName)&&d.push("\n" a.innerText=b:a[void 0===a.textContent?"text":"textContent"]=b},getInnerHtml:function(){return mxClient.IS_IE?function(a){return null!=a?a.innerHTML:""}:function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),getOuterHtml:function(){return mxClient.IS_IE?function(a){if(null!=a){if(null!=a.outerHTML)return a.outerHTML;var b=[];b.push("<"+a.nodeName);var c=a.attributes;if(null!=c)for(var d=0;d<c.length;d++){var e=c[d].value;null!=e&&0<e.length&&(b.push(" "),b.push(c[d].nodeName), b.push('="'),b.push(e),b.push('"'))}0==a.innerHTML.length?b.push("/>"):(b.push(">"),b.push(a.innerHTML),b.push("</"+a.nodeName+">"));return b.join("")}return""}:function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),write:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&a.appendChild(c);return c},writeln:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&(a.appendChild(c),a.appendChild(document.createElement("br")));return c},br:function(a,b){b=b||1;for(var c= null,d=0;d<b;d++)null!=a&&(c=a.ownerDocument.createElement("br"),a.appendChild(c));return c},button:function(a,b,c){c=null!=c?c:document;c=c.createElement("button");mxUtils.write(c,a);mxEvent.addListener(c,"click",function(a){b(a)});return c},para:function(a,b){var c=document.createElement("p");mxUtils.write(c,b);null!=a&&a.appendChild(c);return c},addTransparentBackgroundFilter:function(a){a.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"}, -linkAction:function(a,b,c,d,e){return mxUtils.link(a,b,function(){c.execute(d)},e)},linkInvoke:function(a,b,c,d,e,f){return mxUtils.link(a,b,function(){c[d](e)},f)},link:function(a,b,c,d){var e=document.createElement("span");e.style.color="blue";e.style.textDecoration="underline";e.style.cursor="pointer";null!=d&&(e.style.paddingLeft=d+"px");mxEvent.addListener(e,"click",c);mxUtils.write(e,b);null!=a&&a.appendChild(e);return e},fit:function(a){var b=parseInt(a.offsetLeft),c=parseInt(a.offsetWidth), -d=mxUtils.getDocumentScrollOrigin(a.ownerDocument),e=d.x,d=d.y,f=document.body,g=document.documentElement,k=e+(f.clientWidth||g.clientWidth);b+c>k&&(a.style.left=Math.max(e,k-c)+"px");b=parseInt(a.offsetTop);c=parseInt(a.offsetHeight);f=d+Math.max(f.clientHeight||0,g.clientHeight);b+c>f&&(a.style.top=Math.max(d,f-c)+"px")},load:function(a){a=new mxXmlRequest(a,null,"GET",!1);a.send();return a},get:function(a,b,c,d,e,f){a=new mxXmlRequest(a,null,"GET");null!=d&&a.setBinary(d);a.send(b,c,e,f);return a}, -getAll:function(a,b,c){for(var d=a.length,e=[],f=0,g=function(){0==f&&null!=c&&c();f++},k=0;k<a.length;k++)(function(a,c){mxUtils.get(a,function(a){var f=a.getStatus();200>f||299<f?g():(e[c]=a,d--,0==d&&b(e))},g)})(a[k],k);0==d&&b(e)},post:function(a,b,c,d){return(new mxXmlRequest(a,b)).send(c,d)},submit:function(a,b,c,d){return(new mxXmlRequest(a,b)).simulate(c,d)},loadInto:function(a,b,c){mxClient.IS_IE?b.onreadystatechange=function(){4==b.readyState&&c()}:b.addEventListener("load",c,!1);b.load(a)}, -getValue:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c);return a},getNumber:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c||0);return Number(a)},getColor:function(a,b,c){a=null!=a?a[b]:null;null==a?a=c:a==mxConstants.NONE&&(a=null);return a},clone:function(a,b,c){c=null!=c?c:!1;var d=null;if(null!=a&&"function"==typeof a.constructor){var d=new a.constructor,e;for(e in a)e!=mxObjectIdentity.FIELD_NAME&&(null==b||0>mxUtils.indexOf(b,e))&&(d[e]=c||"object"!=typeof a[e]?a[e]:mxUtils.clone(a[e]))}return d}, -equalPoints:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b)for(var c=0;c<a.length;c++)if(a[c]==b[c]||null!=a[c]&&!a[c].equals(b[c]))return!1;return!0},equalEntries:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b){var c=0,d;for(d in b)c++;for(d in a)if(c--,!(mxUtils.isNaN(a[d])&&mxUtils.isNaN(b[d])||a[d]==b[d]))return!1}return 0==c},removeDuplicates:function(a){for(var b= -new mxDictionary,c=[],d=0;d<a.length;d++)b.get(a[d])||(c.push(a[d]),b.put(a[d],!0));return c},isNaN:function(a){return"number"==typeof a&&isNaN(a)},extend:function(a,b){var c=function(){};c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a},toString:function(a){var b="",c;for(c in a)try{if(null==a[c])b+=c+" = [null]\n";else if("function"==typeof a[c])b+=c+" => [Function]\n";else if("object"==typeof a[c])var d=mxUtils.getFunctionName(a[c].constructor),b=b+(c+" => ["+d+"]\n");else b+= -c+" = "+a[c]+"\n"}catch(e){b+=c+"="+e.message}return b},toRadians:function(a){return Math.PI*a/180},toDegree:function(a){return 180*a/Math.PI},arcToCurves:function(a,b,c,d,e,f,g,k,l){k-=a;l-=b;if(0===c||0===d)return q;c=Math.abs(c);d=Math.abs(d);var m=-k/2,n=-l/2,p=Math.cos(e*Math.PI/180),q=Math.sin(e*Math.PI/180);e=p*m+q*n;var m=-1*q*m+p*n,n=e*e,r=m*m,t=c*c,u=d*d,x=n/t+r/u;1<x?(c*=Math.sqrt(x),d*=Math.sqrt(x),f=0):(x=1,f===g&&(x=-1),f=x*Math.sqrt((t*u-t*r-u*n)/(t*r+u*n)));n=f*c*m/d;r=-1*f*d*e/c; -k=p*n-q*r+k/2;l=q*n+p*r+l/2;t=Math.atan2((m-r)/d,(e-n)/c)-Math.atan2(0,1);f=0<=t?t:2*Math.PI+t;t=Math.atan2((-m-r)/d,(-e-n)/c)-Math.atan2((m-r)/d,(e-n)/c);e=0<=t?t:2*Math.PI+t;0==g&&0<e?e-=2*Math.PI:0!=g&&0>e&&(e+=2*Math.PI);g=2*e/Math.PI;g=Math.ceil(0>g?-1*g:g);e/=g;m=8/3*Math.sin(e/4)*Math.sin(e/4)/Math.sin(e/2);n=p*c;p*=d;c*=q;d*=q;for(var y=Math.cos(f),A=Math.sin(f),r=-m*(n*A+d*y),t=-m*(c*A-p*y),q=[],z=0;z<g;++z){f+=e;var y=Math.cos(f),A=Math.sin(f),u=n*y-d*A+k,x=c*y+p*A+l,v=-m*(n*A+d*y),y=-m* -(c*A-p*y),A=6*z;q[A]=Number(r+a);q[A+1]=Number(t+b);q[A+2]=Number(u-v+a);q[A+3]=Number(x-y+b);q[A+4]=Number(u+a);q[A+5]=Number(x+b);r=u+v;t=x+y}return q},getBoundingBox:function(a,b,c){var d=null;if(null!=a&&null!=b&&0!=b){b=mxUtils.toRadians(b);var d=Math.cos(b),e=Math.sin(b);c=null!=c?c:new mxPoint(a.x+a.width/2,a.y+a.height/2);var f=new mxPoint(a.x,a.y);b=new mxPoint(a.x+a.width,a.y);var g=new mxPoint(b.x,a.y+a.height);a=new mxPoint(a.x,g.y);f=mxUtils.getRotatedPoint(f,d,e,c);b=mxUtils.getRotatedPoint(b, -d,e,c);g=mxUtils.getRotatedPoint(g,d,e,c);a=mxUtils.getRotatedPoint(a,d,e,c);d=new mxRectangle(f.x,f.y,0,0);d.add(new mxRectangle(b.x,b.y,0,0));d.add(new mxRectangle(g.x,g.y,0,0));d.add(new mxRectangle(a.x,a.y,0,0))}return d},getRotatedPoint:function(a,b,c,d){d=null!=d?d:new mxPoint;var e=a.x-d.x;a=a.y-d.y;return new mxPoint(e*b-a*c+d.x,a*b+e*c+d.y)},getPortConstraints:function(a,b,c,d){b=mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT,mxUtils.getValue(b.style,c?mxConstants.STYLE_SOURCE_PORT_CONSTRAINT: -mxConstants.STYLE_TARGET_PORT_CONSTRAINT,null));if(null==b)return d;d=b.toString();b=mxConstants.DIRECTION_MASK_NONE;c=0;1==mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT_ROTATION,0)&&(c=mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION,0));a=0;45<c?(a=1,135<=c&&(a=2)):-45>c&&(a=3,-135>=c&&(a=2));if(0<=d.indexOf(mxConstants.DIRECTION_NORTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 1:b|=mxConstants.DIRECTION_MASK_EAST;break;case 2:b|=mxConstants.DIRECTION_MASK_SOUTH; -break;case 3:b|=mxConstants.DIRECTION_MASK_WEST}if(0<=d.indexOf(mxConstants.DIRECTION_WEST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_WEST;break;case 1:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 2:b|=mxConstants.DIRECTION_MASK_EAST;break;case 3:b|=mxConstants.DIRECTION_MASK_SOUTH}if(0<=d.indexOf(mxConstants.DIRECTION_SOUTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 1:b|=mxConstants.DIRECTION_MASK_WEST;break;case 2:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 3:b|= -mxConstants.DIRECTION_MASK_EAST}if(0<=d.indexOf(mxConstants.DIRECTION_EAST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_EAST;break;case 1:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 2:b|=mxConstants.DIRECTION_MASK_WEST;break;case 3:b|=mxConstants.DIRECTION_MASK_NORTH}return b},reversePortConstraints:function(a){var b;b=(a&mxConstants.DIRECTION_MASK_WEST)<<3;b|=(a&mxConstants.DIRECTION_MASK_NORTH)<<1;b|=(a&mxConstants.DIRECTION_MASK_SOUTH)>>1;return b|(a&mxConstants.DIRECTION_MASK_EAST)>>3}, -findNearestSegment:function(a,b,c){var d=-1;if(0<a.absolutePoints.length)for(var e=a.absolutePoints[0],f=null,g=1;g<a.absolutePoints.length;g++){var k=a.absolutePoints[g],e=mxUtils.ptSegDistSq(e.x,e.y,k.x,k.y,b,c);if(null==f||e<f)f=e,d=g-1;e=k}return d},getDirectedBounds:function(a,b,c,d,e){var f=mxUtils.getValue(c,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);d=null!=d?d:mxUtils.getValue(c,mxConstants.STYLE_FLIPH,!1);e=null!=e?e:mxUtils.getValue(c,mxConstants.STYLE_FLIPV,!1);b.x=Math.round(Math.max(0, -Math.min(a.width,b.x)));b.y=Math.round(Math.max(0,Math.min(a.height,b.y)));b.width=Math.round(Math.max(0,Math.min(a.width,b.width)));b.height=Math.round(Math.max(0,Math.min(a.height,b.height)));if(e&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||d&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.x,b.x=b.width,b.width=c;if(d&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||e&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.y, -b.y=b.height,b.height=c;d=mxRectangle.fromRectangle(b);f==mxConstants.DIRECTION_SOUTH?(d.y=b.x,d.x=b.height,d.width=b.y,d.height=b.width):f==mxConstants.DIRECTION_WEST?(d.y=b.height,d.x=b.width,d.width=b.x,d.height=b.y):f==mxConstants.DIRECTION_NORTH&&(d.y=b.width,d.x=b.y,d.width=b.height,d.height=b.x);return new mxRectangle(a.x+d.x,a.y+d.y,a.width-d.width-d.x,a.height-d.height-d.y)},getPerimeterPoint:function(a,b,c){for(var d=null,e=0;e<a.length-1;e++){var f=mxUtils.intersection(a[e].x,a[e].y,a[e+ -1].x,a[e+1].y,b.x,b.y,c.x,c.y);if(null!=f){var g=c.x-f.x,k=c.y-f.y,f={p:f,distSq:k*k+g*g};null!=f&&(null==d||d.distSq>f.distSq)&&(d=f)}}return null!=d?d.p:null},rectangleIntersectsSegment:function(a,b,c){var d=a.y,e=a.x,f=d+a.height,g=e+a.width;a=b.x;var k=c.x;b.x>c.x&&(a=c.x,k=b.x);k>g&&(k=g);a<e&&(a=e);if(a>k)return!1;var e=b.y,g=c.y,l=c.x-b.x;1E-7<Math.abs(l)&&(c=(c.y-b.y)/l,b=b.y-c*b.x,e=c*a+b,g=c*k+b);e>g&&(b=g,g=e,e=b);g>f&&(g=f);e<d&&(e=d);return e>g?!1:!0},contains:function(a,b,c){return a.x<= -b&&a.x+a.width>=b&&a.y<=c&&a.y+a.height>=c},intersects:function(a,b){var c=a.width,d=a.height,e=b.width,f=b.height;if(0>=e||0>=f||0>=c||0>=d)return!1;var g=a.x,k=a.y,l=b.x,m=b.y,e=e+l,f=f+m,c=c+g,d=d+k;return(e<l||e>g)&&(f<m||f>k)&&(c<g||c>l)&&(d<k||d>m)},intersectsHotspot:function(a,b,c,d,e,f){d=null!=d?d:1;e=null!=e?e:0;f=null!=f?f:0;if(0<d){var g=a.getCenterX(),k=a.getCenterY(),l=a.width,m=a.height,n=mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE)*a.view.scale;0<n&&(mxUtils.getValue(a.style, -mxConstants.STYLE_HORIZONTAL,!0)?(k=a.y+n/2,m=n):(g=a.x+n/2,l=n));l=Math.max(e,l*d);m=Math.max(e,m*d);0<f&&(l=Math.min(l,f),m=Math.min(m,f));d=new mxRectangle(g-l/2,k-m/2,l,m);g=mxUtils.toRadians(mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION)||0);0!=g&&(e=Math.cos(-g),f=Math.sin(-g),g=new mxPoint(a.getCenterX(),a.getCenterY()),a=mxUtils.getRotatedPoint(new mxPoint(b,c),e,f,g),b=a.x,c=a.y);return mxUtils.contains(d,b,c)}return!0},getOffset:function(a,b){for(var c=0,d=0,e=!1,f=a,g=document.body, -k=document.documentElement;null!=f&&f!=g&&f!=k&&!e;){var l=mxUtils.getCurrentStyle(f);null!=l&&(e=e||"fixed"==l.position);f=f.parentNode}b||e||(e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),c+=e.x,d+=e.y);e=a.getBoundingClientRect();null!=e&&(c+=e.left,d+=e.top);return new mxPoint(c,d)},getDocumentScrollOrigin:function(a){if(mxClient.IS_QUIRKS)return new mxPoint(a.body.scrollLeft,a.body.scrollTop);a=a.defaultView||a.parentWindow;return new mxPoint(null!=a&&void 0!==window.pageXOffset?window.pageXOffset: -(document.documentElement||document.body.parentNode||document.body).scrollLeft,null!=a&&void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop)},getScrollOrigin:function(a,b,c){b=null!=b?b:!1;c=null!=c?c:!0;for(var d=null!=a?a.ownerDocument:document,e=d.body,f=d.documentElement,g=new mxPoint,k=!1;null!=a&&a!=e&&a!=f;){isNaN(a.scrollLeft)||isNaN(a.scrollTop)||(g.x+=a.scrollLeft,g.y+=a.scrollTop);var l=mxUtils.getCurrentStyle(a); -null!=l&&(k=k||"fixed"==l.position);a=b?a.parentNode:null}!k&&c&&(a=mxUtils.getDocumentScrollOrigin(d),g.x+=a.x,g.y+=a.y);return g},convertPoint:function(a,b,c){var d=mxUtils.getScrollOrigin(a,!1);a=mxUtils.getOffset(a);a.x-=d.x;a.y-=d.y;return new mxPoint(b-a.x,c-a.y)},ltrim:function(a,b){return null!=a?a.replace(new RegExp("^["+(b||"\\s")+"]+","g"),""):null},rtrim:function(a,b){return null!=a?a.replace(new RegExp("["+(b||"\\s")+"]+$","g"),""):null},trim:function(a,b){return mxUtils.ltrim(mxUtils.rtrim(a, -b),b)},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)&&("string"!=typeof a||0>a.toLowerCase().indexOf("0x"))},isInteger:function(a){return String(parseInt(a))===String(a)},mod:function(a,b){return(a%b+b)%b},intersection:function(a,b,c,d,e,f,g,k){var l=(k-f)*(c-a)-(g-e)*(d-b);g=((g-e)*(b-f)-(k-f)*(a-e))/l;e=((c-a)*(b-f)-(d-b)*(a-e))/l;return 0<=g&&1>=g&&0<=e&&1>=e?new mxPoint(a+g*(c-a),b+g*(d-b)):null},ptSegDistSq:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;0>=e*c+f*d?c=0:(e=c-e,f=d- -f,a=e*c+f*d,c=0>=a?0:a*a/(c*c+d*d));e=e*e+f*f-c;0>e&&(e=0);return e},ptLineDist:function(a,b,c,d,e,f){return Math.abs((d-b)*e-(c-a)*f+c*b-d*a)/Math.sqrt((d-b)*(d-b)+(c-a)*(c-a))},relativeCcw:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;a=e*d-f*c;0==a&&(a=e*c+f*d,0<a&&(a=(e-c)*c+(f-d)*d,0>a&&(a=0)));return 0>a?-1:0<a?1:0},animateChanges:function(a,b){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(a,b,c){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(a,b,c,d, -e,f){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(a,b){mxUtils.isVml(a)?a.style.filter=100<=b?"":"alpha(opacity="+b/5+")":mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?a.style.filter=100<=b?"":"alpha(opacity="+b+")":a.style.opacity=b/100},createImage:function(a){var b;mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?(b=document.createElement(mxClient.VML_PREFIX+":image"),b.setAttribute("src",a),b.style.borderStyle="none"):(b=document.createElement("img"), -b.setAttribute("src",a),b.setAttribute("border","0"));return b},sortCells:function(a,b){b=null!=b?b:!0;var c=new mxDictionary;a.sort(function(a,e){var d=c.get(a);null==d&&(d=mxCellPath.create(a).split(mxCellPath.PATH_SEPARATOR),c.put(a,d));var g=c.get(e);null==g&&(g=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),c.put(e,g));d=mxCellPath.compare(d,g);return 0==d?0:0<d==b?1:-1});return a},getStylename:function(a){return null!=a&&(a=a.split(";")[0],0>a.indexOf("="))?a:""},getStylenames:function(a){var b= -[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0>a[c].indexOf("=")&&b.push(a[c])}return b},indexOfStylename:function(a,b){if(null!=a&&null!=b)for(var c=a.split(";"),d=0,e=0;e<c.length;e++){if(c[e]==b)return d;d+=c[e].length+1}return-1},addStylename:function(a,b){0>mxUtils.indexOfStylename(a,b)&&(null==a?a="":0<a.length&&";"!=a.charAt(a.length-1)&&(a+=";"),a+=b);return a},removeStylename:function(a,b){var c=[];if(null!=a)for(var d=a.split(";"),e=0;e<d.length;e++)d[e]!=b&&c.push(d[e]);return c.join(";")}, -removeAllStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0<=a[c].indexOf("=")&&b.push(a[c])}return b.join(";")},setCellStyles:function(a,b,c,d){if(null!=b&&0<b.length){a.beginUpdate();try{for(var e=0;e<b.length;e++)if(null!=b[e]){var f=mxUtils.setStyle(a.getStyle(b[e]),c,d);a.setStyle(b[e],f)}}finally{a.endUpdate()}}},setStyle:function(a,b,c){var d=null!=c&&("undefined"==typeof c.length||0<c.length);if(null==a||0==a.length)d&&(a=b+"="+c+";");else if(a.substring(0, -b.length+1)==b+"="){var e=a.indexOf(";");a=d?b+"="+c+(0>e?";":a.substring(e)):0>e||e==a.length-1?"":a.substring(e+1)}else{var f=a.indexOf(";"+b+"=");0>f?d&&(d=";"==a.charAt(a.length-1)?"":";",a=a+d+b+"="+c+";"):(e=a.indexOf(";",f+1),a=d?a.substring(0,f+1)+b+"="+c+(0>e?";":a.substring(e)):a.substring(0,f)+(0>e?";":a.substring(e)))}return a},setCellStyleFlags:function(a,b,c,d,e){if(null!=b&&0<b.length){a.beginUpdate();try{for(var f=0;f<b.length;f++)if(null!=b[f]){var g=mxUtils.setStyleFlag(a.getStyle(b[f]), -c,d,e);a.setStyle(b[f],g)}}finally{a.endUpdate()}}},setStyleFlag:function(a,b,c,d){if(null==a||0==a.length)a=d||null==d?b+"="+c:b+"=0";else{var e=a.indexOf(b+"=");if(0>e)e=";"==a.charAt(a.length-1)?"":";",a=d||null==d?a+e+b+"="+c:a+e+b+"=0";else{var f=a.indexOf(";",e),g;g=0>f?a.substring(e+b.length+1):a.substring(e+b.length+1,f);g=null==d?parseInt(g)^c:d?parseInt(g)|c:parseInt(g)&~c;a=a.substring(0,e)+b+"="+g+(0<=f?a.substring(f):"")}}return a},getAlignmentAsPoint:function(a,b){var c=0,d=0;a==mxConstants.ALIGN_CENTER? -c=-.5:a==mxConstants.ALIGN_RIGHT&&(c=-1);b==mxConstants.ALIGN_MIDDLE?d=-.5:b==mxConstants.ALIGN_BOTTOM&&(d=-1);return new mxPoint(c,d)},getSizeForString:function(a,b,c,d){b=null!=b?b:mxConstants.DEFAULT_FONTSIZE;c=null!=c?c:mxConstants.DEFAULT_FONTFAMILY;var e=document.createElement("div");e.style.fontFamily=c;e.style.fontSize=Math.round(b)+"px";e.style.lineHeight=Math.round(b*mxConstants.LINE_HEIGHT)+"px";e.style.position="absolute";e.style.visibility="hidden";e.style.display=mxClient.IS_QUIRKS? -"inline":"inline-block";e.style.zoom="1";null!=d?(e.style.width=d+"px",e.style.whiteSpace="normal"):e.style.whiteSpace="nowrap";e.innerHTML=a;document.body.appendChild(e);a=new mxRectangle(0,0,e.offsetWidth,e.offsetHeight);document.body.removeChild(e);return a},getViewXml:function(a,b,c,d,e){d=null!=d?d:0;e=null!=e?e:0;b=null!=b?b:1;null==c&&(c=[a.getModel().getRoot()]);var f=a.getView(),g=null,k=f.isEventsEnabled();f.setEventsEnabled(!1);var l=f.drawPane,m=f.overlayPane;a.dialect==mxConstants.DIALECT_SVG? -(f.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),f.canvas.appendChild(f.drawPane),f.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(f.drawPane=f.drawPane.cloneNode(!1),f.canvas.appendChild(f.drawPane),f.overlayPane=f.overlayPane.cloneNode(!1));f.canvas.appendChild(f.overlayPane);var n=f.getTranslate();f.translate=new mxPoint(d,e);b=new mxTemporaryCellStates(a.getView(),b,c);try{g=(new mxCodec).encode(a.getView())}finally{b.destroy(),f.translate=n,f.canvas.removeChild(f.drawPane), -f.canvas.removeChild(f.overlayPane),f.drawPane=l,f.overlayPane=m,f.setEventsEnabled(k)}return g},getScaleForPageCount:function(a,b,c,d){if(1>a)return 1;c=null!=c?c:mxConstants.PAGE_FORMAT_A4_PORTRAIT;d=null!=d?d:0;var e=c.width-2*d;c=c.height-2*d;d=b.getGraphBounds().clone();b=b.getView().getScale();d.width/=b;d.height/=b;b=d.width;var f=Math.sqrt(a);d=Math.sqrt(b/d.height/(e/c));c=f*d;d=f/d;if(1>c&&d>a){var g=d/a;d=a;c/=g}1>d&&c>a&&(g=c/a,c=a,d/=g);g=Math.ceil(c)*Math.ceil(d);for(f=0;g>a;){var g= -Math.floor(c)/c,k=Math.floor(d)/d;1==g&&(g=Math.floor(c-1)/c);1==k&&(k=Math.floor(d-1)/d);g=g>k?g:k;c*=g;d*=g;g=Math.ceil(c)*Math.ceil(d);f++;if(10<f)break}return e*c/b*.99999},show:function(a,b,c,d,e,f){c=null!=c?c:0;d=null!=d?d:0;null==b?b=window.open().document:b.open();9==document.documentMode&&b.writeln('\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=9"><![endif]--\x3e');var g=a.getGraphBounds(),k=Math.ceil(c-g.x),l=Math.ceil(d-g.y);null==e&&(e=Math.ceil(g.width+c)+Math.ceil(Math.ceil(g.x)- -g.x));null==f&&(f=Math.ceil(g.height+d)+Math.ceil(Math.ceil(g.y)-g.y));if(mxClient.IS_IE||11==document.documentMode){d="<html><head>";g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)d+=g[c].outerHTML;d+="<style>";for(c=0;c<document.styleSheets.length;c++)try{d+=document.styleSheets[c].cssText}catch(m){}d=d+'</style></head><body style="margin:0px;">'+('<div style="position:absolute;overflow:hidden;width:'+e+"px;height:"+f+'px;"><div style="position:relative;left:'+k+"px;top:"+l+'px;">')+ -a.container.innerHTML;b.writeln(d+"</div></div></body><html>");b.close()}else{b.writeln("<html><head>");g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)b.writeln(mxUtils.getOuterHtml(g[c]));d=document.getElementsByTagName("link");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));d=document.getElementsByTagName("style");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));b.writeln('</head><body style="margin:0px;"></body></html>');b.close();c=b.createElement("div"); -c.position="absolute";c.overflow="hidden";c.style.width=e+"px";c.style.height=f+"px";e=b.createElement("div");e.style.position="absolute";e.style.left=k+"px";e.style.top=l+"px";f=a.container.firstChild;for(d=null;null!=f;)g=f.cloneNode(!0),f==a.view.drawPane.ownerSVGElement?(c.appendChild(g),d=g):e.appendChild(g),f=f.nextSibling;b.body.appendChild(c);null!=e.firstChild&&b.body.appendChild(e);null!=d&&(d.style.minWidth="",d.style.minHeight="",d.firstChild.setAttribute("transform","translate("+k+","+ -l+")"))}mxUtils.removeCursors(b.body);return b},printScreen:function(a){var b=window.open();a.getGraphBounds();mxUtils.show(a,b.document);a=function(){b.focus();b.print();b.close()};mxClient.IS_GC?b.setTimeout(a,500):a()},popup:function(a,b){if(b){var c=document.createElement("div");c.style.overflow="scroll";c.style.width="636px";c.style.height="460px";var d=document.createElement("pre");d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g," ");c.appendChild(d);c=new mxWindow("Popup Window", -c,document.body.clientWidth/2-320,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight)/2-240,640,480,!1,!0);c.setClosable(!0);c.setVisible(!0)}else mxClient.IS_NS?(c=window.open(),c.document.writeln("<pre>"+mxUtils.htmlEntities(a)+"</pre"),c.document.close()):(c=window.open(),d=c.document.createElement("pre"),d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g," "),c.document.body.appendChild(d))},alert:function(a){alert(a)},prompt:function(a,b){return prompt(a, -null!=b?b:"")},confirm:function(a){return confirm(a)},error:function(a,b,c,d){var e=document.createElement("div");e.style.padding="20px";var f=document.createElement("img");f.setAttribute("src",d||mxUtils.errorImage);f.setAttribute("valign","bottom");f.style.verticalAlign="middle";e.appendChild(f);e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));mxUtils.write(e,a);a=document.body.clientWidth;d=document.body.clientHeight|| -document.documentElement.clientHeight;var g=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,e,(a-b)/2,d/4,b,null,!1,!0);c&&(mxUtils.br(e),b=document.createElement("p"),c=document.createElement("button"),mxClient.IS_IE?c.style.cssText="float:right":c.setAttribute("style","float:right"),mxEvent.addListener(c,"click",function(a){g.destroy()}),mxUtils.write(c,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),b.appendChild(c),e.appendChild(b),mxUtils.br(e),g.setClosable(!0)); -g.setVisible(!0);return g},makeDraggable:function(a,b,c,d,e,f,g,k,l,m){a=new mxDragSource(a,c);a.dragOffset=new mxPoint(null!=e?e:0,null!=f?f:mxConstants.TOOLTIP_VERTICAL_OFFSET);a.autoscroll=g;a.setGuidesEnabled(!1);null!=l&&(a.highlightDropTargets=l);null!=m&&(a.getDropTarget=m);a.getGraphForEvent=function(a){return"function"==typeof b?b(a):b};null!=d&&(a.createDragElement=function(){return d.cloneNode(!0)},k&&(a.createPreviewElement=function(a){var b=d.cloneNode(!0),c=parseInt(b.style.width),e= -parseInt(b.style.height);b.style.width=Math.round(c*a.view.scale)+"px";b.style.height=Math.round(e*a.view.scale)+"px";return b}));return a}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml", +linkAction:function(a,b,c,d,e){return mxUtils.link(a,b,function(){c.execute(d)},e)},linkInvoke:function(a,b,c,d,e,f){return mxUtils.link(a,b,function(){c[d](e)},f)},link:function(a,b,c,d){var e=document.createElement("span");e.style.color="blue";e.style.textDecoration="underline";e.style.cursor="pointer";null!=d&&(e.style.paddingLeft=d+"px");mxEvent.addListener(e,"click",c);mxUtils.write(e,b);null!=a&&a.appendChild(e);return e},getDocumentSize:function(){var a=document.body,b=document.documentElement; +try{return new mxRectangle(0,0,a.clientWidth||b.clientWidth,Math.max(a.clientHeight||0,b.clientHeight))}catch(c){return new mxRectangle}},fit:function(a){var b=mxUtils.getDocumentSize(),c=parseInt(a.offsetLeft),d=parseInt(a.offsetWidth),e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),f=e.x,e=e.y,g=f+b.width;c+d>g&&(a.style.left=Math.max(f,g-d)+"px");c=parseInt(a.offsetTop);d=parseInt(a.offsetHeight);b=e+b.height;c+d>b&&(a.style.top=Math.max(e,b-d)+"px")},load:function(a){a=new mxXmlRequest(a,null, +"GET",!1);a.send();return a},get:function(a,b,c,d,e,f){a=new mxXmlRequest(a,null,"GET");null!=d&&a.setBinary(d);a.send(b,c,e,f);return a},getAll:function(a,b,c){for(var d=a.length,e=[],f=0,g=function(){0==f&&null!=c&&c();f++},k=0;k<a.length;k++)(function(a,c){mxUtils.get(a,function(a){var f=a.getStatus();200>f||299<f?g():(e[c]=a,d--,0==d&&b(e))},g)})(a[k],k);0==d&&b(e)},post:function(a,b,c,d){return(new mxXmlRequest(a,b)).send(c,d)},submit:function(a,b,c,d){return(new mxXmlRequest(a,b)).simulate(c, +d)},loadInto:function(a,b,c){mxClient.IS_IE?b.onreadystatechange=function(){4==b.readyState&&c()}:b.addEventListener("load",c,!1);b.load(a)},getValue:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c);return a},getNumber:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c||0);return Number(a)},getColor:function(a,b,c){a=null!=a?a[b]:null;null==a?a=c:a==mxConstants.NONE&&(a=null);return a},clone:function(a,b,c){c=null!=c?c:!1;var d=null;if(null!=a&&"function"==typeof a.constructor){var d=new a.constructor, +e;for(e in a)e!=mxObjectIdentity.FIELD_NAME&&(null==b||0>mxUtils.indexOf(b,e))&&(d[e]=c||"object"!=typeof a[e]?a[e]:mxUtils.clone(a[e]))}return d},equalPoints:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b)for(var c=0;c<a.length;c++)if(a[c]==b[c]||null!=a[c]&&!a[c].equals(b[c]))return!1;return!0},equalEntries:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b){var c= +0,d;for(d in b)c++;for(d in a)if(c--,!(mxUtils.isNaN(a[d])&&mxUtils.isNaN(b[d])||a[d]==b[d]))return!1}return 0==c},removeDuplicates:function(a){for(var b=new mxDictionary,c=[],d=0;d<a.length;d++)b.get(a[d])||(c.push(a[d]),b.put(a[d],!0));return c},isNaN:function(a){return"number"==typeof a&&isNaN(a)},extend:function(a,b){var c=function(){};c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a},toString:function(a){var b="",c;for(c in a)try{if(null==a[c])b+=c+" = [null]\n";else if("function"== +typeof a[c])b+=c+" => [Function]\n";else if("object"==typeof a[c])var d=mxUtils.getFunctionName(a[c].constructor),b=b+(c+" => ["+d+"]\n");else b+=c+" = "+a[c]+"\n"}catch(e){b+=c+"="+e.message}return b},toRadians:function(a){return Math.PI*a/180},toDegree:function(a){return 180*a/Math.PI},arcToCurves:function(a,b,c,d,e,f,g,k,l){k-=a;l-=b;if(0===c||0===d)return q;c=Math.abs(c);d=Math.abs(d);var m=-k/2,n=-l/2,p=Math.cos(e*Math.PI/180),q=Math.sin(e*Math.PI/180);e=p*m+q*n;var m=-1*q*m+p*n,n=e*e,r=m*m, +t=c*c,u=d*d,x=n/t+r/u;1<x?(c*=Math.sqrt(x),d*=Math.sqrt(x),f=0):(x=1,f===g&&(x=-1),f=x*Math.sqrt((t*u-t*r-u*n)/(t*r+u*n)));n=f*c*m/d;r=-1*f*d*e/c;k=p*n-q*r+k/2;l=q*n+p*r+l/2;t=Math.atan2((m-r)/d,(e-n)/c)-Math.atan2(0,1);f=0<=t?t:2*Math.PI+t;t=Math.atan2((-m-r)/d,(-e-n)/c)-Math.atan2((m-r)/d,(e-n)/c);e=0<=t?t:2*Math.PI+t;0==g&&0<e?e-=2*Math.PI:0!=g&&0>e&&(e+=2*Math.PI);g=2*e/Math.PI;g=Math.ceil(0>g?-1*g:g);e/=g;m=8/3*Math.sin(e/4)*Math.sin(e/4)/Math.sin(e/2);n=p*c;p*=d;c*=q;d*=q;for(var y=Math.cos(f), +A=Math.sin(f),r=-m*(n*A+d*y),t=-m*(c*A-p*y),q=[],z=0;z<g;++z){f+=e;var y=Math.cos(f),A=Math.sin(f),u=n*y-d*A+k,x=c*y+p*A+l,v=-m*(n*A+d*y),y=-m*(c*A-p*y),A=6*z;q[A]=Number(r+a);q[A+1]=Number(t+b);q[A+2]=Number(u-v+a);q[A+3]=Number(x-y+b);q[A+4]=Number(u+a);q[A+5]=Number(x+b);r=u+v;t=x+y}return q},getBoundingBox:function(a,b,c){var d=null;if(null!=a&&null!=b&&0!=b){b=mxUtils.toRadians(b);var d=Math.cos(b),e=Math.sin(b);c=null!=c?c:new mxPoint(a.x+a.width/2,a.y+a.height/2);var f=new mxPoint(a.x,a.y); +b=new mxPoint(a.x+a.width,a.y);var g=new mxPoint(b.x,a.y+a.height);a=new mxPoint(a.x,g.y);f=mxUtils.getRotatedPoint(f,d,e,c);b=mxUtils.getRotatedPoint(b,d,e,c);g=mxUtils.getRotatedPoint(g,d,e,c);a=mxUtils.getRotatedPoint(a,d,e,c);d=new mxRectangle(f.x,f.y,0,0);d.add(new mxRectangle(b.x,b.y,0,0));d.add(new mxRectangle(g.x,g.y,0,0));d.add(new mxRectangle(a.x,a.y,0,0))}return d},getRotatedPoint:function(a,b,c,d){d=null!=d?d:new mxPoint;var e=a.x-d.x;a=a.y-d.y;return new mxPoint(e*b-a*c+d.x,a*b+e*c+d.y)}, +getPortConstraints:function(a,b,c,d){b=mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT,mxUtils.getValue(b.style,c?mxConstants.STYLE_SOURCE_PORT_CONSTRAINT:mxConstants.STYLE_TARGET_PORT_CONSTRAINT,null));if(null==b)return d;d=b.toString();b=mxConstants.DIRECTION_MASK_NONE;c=0;1==mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT_ROTATION,0)&&(c=mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION,0));a=0;45<c?(a=1,135<=c&&(a=2)):-45>c&&(a=3,-135>=c&&(a=2));if(0<=d.indexOf(mxConstants.DIRECTION_NORTH))switch(a){case 0:b|= +mxConstants.DIRECTION_MASK_NORTH;break;case 1:b|=mxConstants.DIRECTION_MASK_EAST;break;case 2:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 3:b|=mxConstants.DIRECTION_MASK_WEST}if(0<=d.indexOf(mxConstants.DIRECTION_WEST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_WEST;break;case 1:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 2:b|=mxConstants.DIRECTION_MASK_EAST;break;case 3:b|=mxConstants.DIRECTION_MASK_SOUTH}if(0<=d.indexOf(mxConstants.DIRECTION_SOUTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_SOUTH; +break;case 1:b|=mxConstants.DIRECTION_MASK_WEST;break;case 2:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 3:b|=mxConstants.DIRECTION_MASK_EAST}if(0<=d.indexOf(mxConstants.DIRECTION_EAST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_EAST;break;case 1:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 2:b|=mxConstants.DIRECTION_MASK_WEST;break;case 3:b|=mxConstants.DIRECTION_MASK_NORTH}return b},reversePortConstraints:function(a){var b;b=(a&mxConstants.DIRECTION_MASK_WEST)<<3;b|=(a&mxConstants.DIRECTION_MASK_NORTH)<< +1;b|=(a&mxConstants.DIRECTION_MASK_SOUTH)>>1;return b|(a&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(a,b,c){var d=-1;if(0<a.absolutePoints.length)for(var e=a.absolutePoints[0],f=null,g=1;g<a.absolutePoints.length;g++){var k=a.absolutePoints[g],e=mxUtils.ptSegDistSq(e.x,e.y,k.x,k.y,b,c);if(null==f||e<f)f=e,d=g-1;e=k}return d},getDirectedBounds:function(a,b,c,d,e){var f=mxUtils.getValue(c,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);d=null!=d?d:mxUtils.getValue(c,mxConstants.STYLE_FLIPH, +!1);e=null!=e?e:mxUtils.getValue(c,mxConstants.STYLE_FLIPV,!1);b.x=Math.round(Math.max(0,Math.min(a.width,b.x)));b.y=Math.round(Math.max(0,Math.min(a.height,b.y)));b.width=Math.round(Math.max(0,Math.min(a.width,b.width)));b.height=Math.round(Math.max(0,Math.min(a.height,b.height)));if(e&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||d&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.x,b.x=b.width,b.width=c;if(d&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)|| +e&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.y,b.y=b.height,b.height=c;d=mxRectangle.fromRectangle(b);f==mxConstants.DIRECTION_SOUTH?(d.y=b.x,d.x=b.height,d.width=b.y,d.height=b.width):f==mxConstants.DIRECTION_WEST?(d.y=b.height,d.x=b.width,d.width=b.x,d.height=b.y):f==mxConstants.DIRECTION_NORTH&&(d.y=b.width,d.x=b.y,d.width=b.height,d.height=b.x);return new mxRectangle(a.x+d.x,a.y+d.y,a.width-d.width-d.x,a.height-d.height-d.y)},getPerimeterPoint:function(a,b,c){for(var d= +null,e=0;e<a.length-1;e++){var f=mxUtils.intersection(a[e].x,a[e].y,a[e+1].x,a[e+1].y,b.x,b.y,c.x,c.y);if(null!=f){var g=c.x-f.x,k=c.y-f.y,f={p:f,distSq:k*k+g*g};null!=f&&(null==d||d.distSq>f.distSq)&&(d=f)}}return null!=d?d.p:null},rectangleIntersectsSegment:function(a,b,c){var d=a.y,e=a.x,f=d+a.height,g=e+a.width;a=b.x;var k=c.x;b.x>c.x&&(a=c.x,k=b.x);k>g&&(k=g);a<e&&(a=e);if(a>k)return!1;var e=b.y,g=c.y,l=c.x-b.x;1E-7<Math.abs(l)&&(c=(c.y-b.y)/l,b=b.y-c*b.x,e=c*a+b,g=c*k+b);e>g&&(b=g,g=e,e=b); +g>f&&(g=f);e<d&&(e=d);return e>g?!1:!0},contains:function(a,b,c){return a.x<=b&&a.x+a.width>=b&&a.y<=c&&a.y+a.height>=c},intersects:function(a,b){var c=a.width,d=a.height,e=b.width,f=b.height;if(0>=e||0>=f||0>=c||0>=d)return!1;var g=a.x,k=a.y,l=b.x,m=b.y,e=e+l,f=f+m,c=c+g,d=d+k;return(e<l||e>g)&&(f<m||f>k)&&(c<g||c>l)&&(d<k||d>m)},intersectsHotspot:function(a,b,c,d,e,f){d=null!=d?d:1;e=null!=e?e:0;f=null!=f?f:0;if(0<d){var g=a.getCenterX(),k=a.getCenterY(),l=a.width,m=a.height,n=mxUtils.getValue(a.style, +mxConstants.STYLE_STARTSIZE)*a.view.scale;0<n&&(mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,!0)?(k=a.y+n/2,m=n):(g=a.x+n/2,l=n));l=Math.max(e,l*d);m=Math.max(e,m*d);0<f&&(l=Math.min(l,f),m=Math.min(m,f));d=new mxRectangle(g-l/2,k-m/2,l,m);g=mxUtils.toRadians(mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION)||0);0!=g&&(e=Math.cos(-g),f=Math.sin(-g),g=new mxPoint(a.getCenterX(),a.getCenterY()),a=mxUtils.getRotatedPoint(new mxPoint(b,c),e,f,g),b=a.x,c=a.y);return mxUtils.contains(d,b,c)}return!0}, +getOffset:function(a,b){for(var c=0,d=0,e=!1,f=a,g=document.body,k=document.documentElement;null!=f&&f!=g&&f!=k&&!e;){var l=mxUtils.getCurrentStyle(f);null!=l&&(e=e||"fixed"==l.position);f=f.parentNode}b||e||(e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),c+=e.x,d+=e.y);e=a.getBoundingClientRect();null!=e&&(c+=e.left,d+=e.top);return new mxPoint(c,d)},getDocumentScrollOrigin:function(a){if(mxClient.IS_QUIRKS)return new mxPoint(a.body.scrollLeft,a.body.scrollTop);a=a.defaultView||a.parentWindow; +return new mxPoint(null!=a&&void 0!==window.pageXOffset?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft,null!=a&&void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop)},getScrollOrigin:function(a,b,c){b=null!=b?b:!1;c=null!=c?c:!0;for(var d=null!=a?a.ownerDocument:document,e=d.body,f=d.documentElement,g=new mxPoint,k=!1;null!=a&&a!=e&&a!=f;){isNaN(a.scrollLeft)||isNaN(a.scrollTop)|| +(g.x+=a.scrollLeft,g.y+=a.scrollTop);var l=mxUtils.getCurrentStyle(a);null!=l&&(k=k||"fixed"==l.position);a=b?a.parentNode:null}!k&&c&&(a=mxUtils.getDocumentScrollOrigin(d),g.x+=a.x,g.y+=a.y);return g},convertPoint:function(a,b,c){var d=mxUtils.getScrollOrigin(a,!1);a=mxUtils.getOffset(a);a.x-=d.x;a.y-=d.y;return new mxPoint(b-a.x,c-a.y)},ltrim:function(a,b){return null!=a?a.replace(new RegExp("^["+(b||"\\s")+"]+","g"),""):null},rtrim:function(a,b){return null!=a?a.replace(new RegExp("["+(b||"\\s")+ +"]+$","g"),""):null},trim:function(a,b){return mxUtils.ltrim(mxUtils.rtrim(a,b),b)},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)&&("string"!=typeof a||0>a.toLowerCase().indexOf("0x"))},isInteger:function(a){return String(parseInt(a))===String(a)},mod:function(a,b){return(a%b+b)%b},intersection:function(a,b,c,d,e,f,g,k){var l=(k-f)*(c-a)-(g-e)*(d-b);g=((g-e)*(b-f)-(k-f)*(a-e))/l;e=((c-a)*(b-f)-(d-b)*(a-e))/l;return 0<=g&&1>=g&&0<=e&&1>=e?new mxPoint(a+g*(c-a),b+g*(d-b)):null},ptSegDistSq:function(a, +b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;0>=e*c+f*d?c=0:(e=c-e,f=d-f,a=e*c+f*d,c=0>=a?0:a*a/(c*c+d*d));e=e*e+f*f-c;0>e&&(e=0);return e},ptLineDist:function(a,b,c,d,e,f){return Math.abs((d-b)*e-(c-a)*f+c*b-d*a)/Math.sqrt((d-b)*(d-b)+(c-a)*(c-a))},relativeCcw:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;a=e*d-f*c;0==a&&(a=e*c+f*d,0<a&&(a=(e-c)*c+(f-d)*d,0>a&&(a=0)));return 0>a?-1:0<a?1:0},animateChanges:function(a,b){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(a,b,c){mxEffects.cascadeOpacity.apply(this, +arguments)},fadeOut:function(a,b,c,d,e,f){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(a,b){mxUtils.isVml(a)?a.style.filter=100<=b?"":"alpha(opacity="+b/5+")":mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?a.style.filter=100<=b?"":"alpha(opacity="+b+")":a.style.opacity=b/100},createImage:function(a){var b;mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?(b=document.createElement(mxClient.VML_PREFIX+":image"),b.setAttribute("src",a),b.style.borderStyle= +"none"):(b=document.createElement("img"),b.setAttribute("src",a),b.setAttribute("border","0"));return b},sortCells:function(a,b){b=null!=b?b:!0;var c=new mxDictionary;a.sort(function(a,e){var d=c.get(a);null==d&&(d=mxCellPath.create(a).split(mxCellPath.PATH_SEPARATOR),c.put(a,d));var g=c.get(e);null==g&&(g=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),c.put(e,g));d=mxCellPath.compare(d,g);return 0==d?0:0<d==b?1:-1});return a},getStylename:function(a){return null!=a&&(a=a.split(";")[0],0>a.indexOf("="))? +a:""},getStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0>a[c].indexOf("=")&&b.push(a[c])}return b},indexOfStylename:function(a,b){if(null!=a&&null!=b)for(var c=a.split(";"),d=0,e=0;e<c.length;e++){if(c[e]==b)return d;d+=c[e].length+1}return-1},addStylename:function(a,b){0>mxUtils.indexOfStylename(a,b)&&(null==a?a="":0<a.length&&";"!=a.charAt(a.length-1)&&(a+=";"),a+=b);return a},removeStylename:function(a,b){var c=[];if(null!=a)for(var d=a.split(";"),e=0;e< +d.length;e++)d[e]!=b&&c.push(d[e]);return c.join(";")},removeAllStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0<=a[c].indexOf("=")&&b.push(a[c])}return b.join(";")},setCellStyles:function(a,b,c,d){if(null!=b&&0<b.length){a.beginUpdate();try{for(var e=0;e<b.length;e++)if(null!=b[e]){var f=mxUtils.setStyle(a.getStyle(b[e]),c,d);a.setStyle(b[e],f)}}finally{a.endUpdate()}}},setStyle:function(a,b,c){var d=null!=c&&("undefined"==typeof c.length||0<c.length);if(null== +a||0==a.length)d&&(a=b+"="+c+";");else if(a.substring(0,b.length+1)==b+"="){var e=a.indexOf(";");a=d?b+"="+c+(0>e?";":a.substring(e)):0>e||e==a.length-1?"":a.substring(e+1)}else{var f=a.indexOf(";"+b+"=");0>f?d&&(d=";"==a.charAt(a.length-1)?"":";",a=a+d+b+"="+c+";"):(e=a.indexOf(";",f+1),a=d?a.substring(0,f+1)+b+"="+c+(0>e?";":a.substring(e)):a.substring(0,f)+(0>e?";":a.substring(e)))}return a},setCellStyleFlags:function(a,b,c,d,e){if(null!=b&&0<b.length){a.beginUpdate();try{for(var f=0;f<b.length;f++)if(null!= +b[f]){var g=mxUtils.setStyleFlag(a.getStyle(b[f]),c,d,e);a.setStyle(b[f],g)}}finally{a.endUpdate()}}},setStyleFlag:function(a,b,c,d){if(null==a||0==a.length)a=d||null==d?b+"="+c:b+"=0";else{var e=a.indexOf(b+"=");if(0>e)e=";"==a.charAt(a.length-1)?"":";",a=d||null==d?a+e+b+"="+c:a+e+b+"=0";else{var f=a.indexOf(";",e),g;g=0>f?a.substring(e+b.length+1):a.substring(e+b.length+1,f);g=null==d?parseInt(g)^c:d?parseInt(g)|c:parseInt(g)&~c;a=a.substring(0,e)+b+"="+g+(0<=f?a.substring(f):"")}}return a},getAlignmentAsPoint:function(a, +b){var c=0,d=0;a==mxConstants.ALIGN_CENTER?c=-.5:a==mxConstants.ALIGN_RIGHT&&(c=-1);b==mxConstants.ALIGN_MIDDLE?d=-.5:b==mxConstants.ALIGN_BOTTOM&&(d=-1);return new mxPoint(c,d)},getSizeForString:function(a,b,c,d){b=null!=b?b:mxConstants.DEFAULT_FONTSIZE;c=null!=c?c:mxConstants.DEFAULT_FONTFAMILY;var e=document.createElement("div");e.style.fontFamily=c;e.style.fontSize=Math.round(b)+"px";e.style.lineHeight=Math.round(b*mxConstants.LINE_HEIGHT)+"px";e.style.position="absolute";e.style.visibility="hidden"; +e.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";e.style.zoom="1";null!=d?(e.style.width=d+"px",e.style.whiteSpace="normal"):e.style.whiteSpace="nowrap";e.innerHTML=a;document.body.appendChild(e);a=new mxRectangle(0,0,e.offsetWidth,e.offsetHeight);document.body.removeChild(e);return a},getViewXml:function(a,b,c,d,e){d=null!=d?d:0;e=null!=e?e:0;b=null!=b?b:1;null==c&&(c=[a.getModel().getRoot()]);var f=a.getView(),g=null,k=f.isEventsEnabled();f.setEventsEnabled(!1);var l=f.drawPane,m=f.overlayPane; +a.dialect==mxConstants.DIALECT_SVG?(f.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),f.canvas.appendChild(f.drawPane),f.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(f.drawPane=f.drawPane.cloneNode(!1),f.canvas.appendChild(f.drawPane),f.overlayPane=f.overlayPane.cloneNode(!1));f.canvas.appendChild(f.overlayPane);var n=f.getTranslate();f.translate=new mxPoint(d,e);b=new mxTemporaryCellStates(a.getView(),b,c);try{g=(new mxCodec).encode(a.getView())}finally{b.destroy(),f.translate= +n,f.canvas.removeChild(f.drawPane),f.canvas.removeChild(f.overlayPane),f.drawPane=l,f.overlayPane=m,f.setEventsEnabled(k)}return g},getScaleForPageCount:function(a,b,c,d){if(1>a)return 1;c=null!=c?c:mxConstants.PAGE_FORMAT_A4_PORTRAIT;d=null!=d?d:0;var e=c.width-2*d;c=c.height-2*d;d=b.getGraphBounds().clone();b=b.getView().getScale();d.width/=b;d.height/=b;b=d.width;var f=Math.sqrt(a);d=Math.sqrt(b/d.height/(e/c));c=f*d;d=f/d;if(1>c&&d>a){var g=d/a;d=a;c/=g}1>d&&c>a&&(g=c/a,c=a,d/=g);g=Math.ceil(c)* +Math.ceil(d);for(f=0;g>a;){var g=Math.floor(c)/c,k=Math.floor(d)/d;1==g&&(g=Math.floor(c-1)/c);1==k&&(k=Math.floor(d-1)/d);g=g>k?g:k;c*=g;d*=g;g=Math.ceil(c)*Math.ceil(d);f++;if(10<f)break}return e*c/b*.99999},show:function(a,b,c,d,e,f){c=null!=c?c:0;d=null!=d?d:0;null==b?b=window.open().document:b.open();9==document.documentMode&&b.writeln('\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=9"><![endif]--\x3e');var g=a.getGraphBounds(),k=Math.ceil(c-g.x),l=Math.ceil(d-g.y);null==e&&(e= +Math.ceil(g.width+c)+Math.ceil(Math.ceil(g.x)-g.x));null==f&&(f=Math.ceil(g.height+d)+Math.ceil(Math.ceil(g.y)-g.y));if(mxClient.IS_IE||11==document.documentMode){d="<html><head>";g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)d+=g[c].outerHTML;d+="<style>";for(c=0;c<document.styleSheets.length;c++)try{d+=document.styleSheets[c].cssText}catch(m){}d=d+'</style></head><body style="margin:0px;">'+('<div style="position:absolute;overflow:hidden;width:'+e+"px;height:"+f+'px;"><div style="position:relative;left:'+ +k+"px;top:"+l+'px;">')+a.container.innerHTML;b.writeln(d+"</div></div></body><html>");b.close()}else{b.writeln("<html><head>");g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)b.writeln(mxUtils.getOuterHtml(g[c]));d=document.getElementsByTagName("link");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));d=document.getElementsByTagName("style");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));b.writeln('</head><body style="margin:0px;"></body></html>');b.close(); +c=b.createElement("div");c.position="absolute";c.overflow="hidden";c.style.width=e+"px";c.style.height=f+"px";e=b.createElement("div");e.style.position="absolute";e.style.left=k+"px";e.style.top=l+"px";f=a.container.firstChild;for(d=null;null!=f;)g=f.cloneNode(!0),f==a.view.drawPane.ownerSVGElement?(c.appendChild(g),d=g):e.appendChild(g),f=f.nextSibling;b.body.appendChild(c);null!=e.firstChild&&b.body.appendChild(e);null!=d&&(d.style.minWidth="",d.style.minHeight="",d.firstChild.setAttribute("transform", +"translate("+k+","+l+")"))}mxUtils.removeCursors(b.body);return b},printScreen:function(a){var b=window.open();a.getGraphBounds();mxUtils.show(a,b.document);a=function(){b.focus();b.print();b.close()};mxClient.IS_GC?b.setTimeout(a,500):a()},popup:function(a,b){if(b){var c=document.createElement("div");c.style.overflow="scroll";c.style.width="636px";c.style.height="460px";var d=document.createElement("pre");d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g," ");c.appendChild(d); +c=new mxWindow("Popup Window",c,document.body.clientWidth/2-320,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight)/2-240,640,480,!1,!0);c.setClosable(!0);c.setVisible(!0)}else mxClient.IS_NS?(c=window.open(),c.document.writeln("<pre>"+mxUtils.htmlEntities(a)+"</pre"),c.document.close()):(c=window.open(),d=c.document.createElement("pre"),d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g," "),c.document.body.appendChild(d))},alert:function(a){alert(a)}, +prompt:function(a,b){return prompt(a,null!=b?b:"")},confirm:function(a){return confirm(a)},error:function(a,b,c,d){var e=document.createElement("div");e.style.padding="20px";var f=document.createElement("img");f.setAttribute("src",d||mxUtils.errorImage);f.setAttribute("valign","bottom");f.style.verticalAlign="middle";e.appendChild(f);e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));mxUtils.write(e,a);a=document.body.clientWidth; +d=document.body.clientHeight||document.documentElement.clientHeight;var g=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,e,(a-b)/2,d/4,b,null,!1,!0);c&&(mxUtils.br(e),b=document.createElement("p"),c=document.createElement("button"),mxClient.IS_IE?c.style.cssText="float:right":c.setAttribute("style","float:right"),mxEvent.addListener(c,"click",function(a){g.destroy()}),mxUtils.write(c,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),b.appendChild(c),e.appendChild(b), +mxUtils.br(e),g.setClosable(!0));g.setVisible(!0);return g},makeDraggable:function(a,b,c,d,e,f,g,k,l,m){a=new mxDragSource(a,c);a.dragOffset=new mxPoint(null!=e?e:0,null!=f?f:mxConstants.TOOLTIP_VERTICAL_OFFSET);a.autoscroll=g;a.setGuidesEnabled(!1);null!=l&&(a.highlightDropTargets=l);null!=m&&(a.getDropTarget=m);a.getGraphForEvent=function(a){return"function"==typeof b?b(a):b};null!=d&&(a.createDragElement=function(){return d.cloneNode(!0)},k&&(a.createPreviewElement=function(a){var b=d.cloneNode(!0), +c=parseInt(b.style.width),e=parseInt(b.style.height);b.style.width=Math.round(c*a.view.scale)+"px";b.style.height=Math.round(e*a.view.scale)+"px";return b}));return a}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml", NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",VML_SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",OUTLINE_HIGHLIGHT_COLOR:"#00FF00", OUTLINE_HIGHLIGHT_STROKEWIDTH:5,HIGHLIGHT_STROKEWIDTH:3,HIGHLIGHT_SIZE:2,HIGHLIGHT_OPACITY:100,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_TERMINAL_HANDLE:"pointer",CURSOR_BEND_HANDLE:"crosshair",CURSOR_VIRTUAL_BEND_HANDLE:"crosshair",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00", VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:6,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF", @@ -1228,7 +1228,8 @@ mxGraph.prototype.createTooltipHandler=function(){return new mxTooltipHandler(th mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)};mxGraph.prototype.createStylesheet=function(){return new mxStylesheet};mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)};mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer};mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)};mxGraph.prototype.getModel=function(){return this.model};mxGraph.prototype.getView=function(){return this.view}; mxGraph.prototype.getStylesheet=function(){return this.stylesheet};mxGraph.prototype.setStylesheet=function(a){this.stylesheet=a};mxGraph.prototype.getSelectionModel=function(){return this.selectionModel};mxGraph.prototype.setSelectionModel=function(a){this.selectionModel=a}; mxGraph.prototype.getSelectionCellsForChanges=function(a){for(var b=new mxDictionary,c=[],d=mxUtils.bind(this,function(a){if(!b.get(a)&&this.model.contains(a))if(this.model.isEdge(a)||this.model.isVertex(a))b.put(a,!0),c.push(a);else for(var e=this.model.getChildCount(a),f=0;f<e;f++)d(this.model.getChildAt(a,f))}),e=0;e<a.length;e++){var f=a[e];if(f.constructor!=mxRootChange){var g=null;f instanceof mxChildChange?g=f.child:null!=f.cell&&f.cell instanceof mxCell&&(g=f.cell);null!=g&&d(g)}}return c}; -mxGraph.prototype.graphModelChanged=function(a){for(var b=0;b<a.length;b++)this.processChange(a[b]);this.updateSelection();this.view.validate();this.sizeDidChange()};mxGraph.prototype.updateSelection=function(){for(var a=this.getSelectionCells(),b=[],c=0;c<a.length;c++)if(this.model.contains(a[c]))for(var d=this.model.getParent(a[c]);null!=d&&d!=this.view.currentRoot;){if(this.isCellCollapsed(d)||!this.isCellVisible(d)){b.push(a[c]);break}d=this.model.getParent(d)}else b.push(a[c]);this.removeSelectionCells(b)}; +mxGraph.prototype.graphModelChanged=function(a){for(var b=0;b<a.length;b++)this.processChange(a[b]);this.updateSelection();this.view.validate();this.sizeDidChange()}; +mxGraph.prototype.updateSelection=function(){for(var a=this.getSelectionCells(),b=[],c=0;c<a.length;c++)if(this.model.contains(a[c])&&this.isCellVisible(a[c]))for(var d=this.model.getParent(a[c]);null!=d&&d!=this.view.currentRoot;){if(this.isCellCollapsed(d)||!this.isCellVisible(d)){b.push(a[c]);break}d=this.model.getParent(d)}else b.push(a[c]);this.removeSelectionCells(b)}; mxGraph.prototype.processChange=function(a){if(a instanceof mxRootChange)this.clearSelection(),this.setDefaultParent(null),this.removeStateForCell(a.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(a instanceof mxChildChange){var b=this.model.getParent(a.child);this.view.invalidate(a.child,!0,!0);if(!this.model.contains(b)||this.isCellCollapsed(b))this.view.invalidate(a.child,!0,!0),this.removeStateForCell(a.child), this.view.currentRoot==a.child&&this.home();b!=a.previous&&(null!=b&&this.view.invalidate(b,!1,!1),null!=a.previous&&this.view.invalidate(a.previous,!1,!1))}else a instanceof mxTerminalChange||a instanceof mxGeometryChange?(a instanceof mxTerminalChange||null==a.previous&&null!=a.geometry||null!=a.previous&&!a.previous.equals(a.geometry))&&this.view.invalidate(a.cell):a instanceof mxValueChange?this.view.invalidate(a.cell,!1,!1):a instanceof mxStyleChange?(this.view.invalidate(a.cell,!0,!0),a=this.view.getState(a.cell), null!=a&&(a.style=null)):null!=a.cell&&a.cell instanceof mxCell&&this.removeStateForCell(a.cell)};mxGraph.prototype.removeStateForCell=function(a){for(var b=this.model.getChildCount(a),c=0;c<b;c++)this.removeStateForCell(this.model.getChildAt(a,c));this.view.invalidate(a,!1,!0);this.view.removeState(a)}; @@ -1278,17 +1279,17 @@ mxGraph.prototype.updateGroupBounds=function(a,b,c,d,e,f,g){null==a&&(a=this.get r.height;l=l.clone();c&&(l.x=Math.round(l.x+n.x-b-p-g),l.y=Math.round(l.y+n.y-b-q-d));l.width=Math.round(n.width+2*b+p+g+e);l.height=Math.round(n.height+2*b+q+d+f);this.model.setGeometry(a[k],l);this.moveCells(m,b+p-n.x+g,b+q-n.y+d)}}}}}finally{this.model.endUpdate()}return a}; mxGraph.prototype.getBoundingBox=function(a){var b=null;if(null!=a&&0<a.length)for(var c=0;c<a.length;c++)if(this.model.isVertex(a[c])||this.model.isEdge(a[c])){var d=this.view.getBoundingBox(this.view.getState(a[c]),!0);null!=d&&(null==b?b=mxRectangle.fromRectangle(d):b.add(d))}return b};mxGraph.prototype.cloneCell=function(a,b,c,d){return this.cloneCells([a],b,c,d)[0]}; mxGraph.prototype.cloneCells=function(a,b,c,d){b=null!=b?b:!0;var e=null;if(null!=a){for(var f=new mxDictionary,e=[],g=0;g<a.length;g++)f.put(a[g],!0),e.push(a[g]);if(0<e.length)for(var k=this.view.scale,l=this.view.translate,e=this.model.cloneCells(a,!0,c),g=0;g<a.length;g++)if(!b&&this.model.isEdge(e[g])&&null!=this.getEdgeValidationError(e[g],this.model.getTerminal(e[g],!0),this.model.getTerminal(e[g],!1)))e[g]=null;else{var m=this.model.getGeometry(e[g]);if(null!=m){var n=this.view.getState(a[g]), -p=this.view.getState(this.model.getParent(a[g]));if(null!=n&&null!=p)if(c=d?0:p.origin.x,p=d?0:p.origin.y,this.model.isEdge(e[g])){for(var n=n.absolutePoints,q=this.model.getTerminal(a[g],!0);null!=q&&!f.get(q);)q=this.model.getParent(q);null==q&&m.setTerminalPoint(new mxPoint(n[0].x/k-l.x,n[0].y/k-l.y),!0);for(q=this.model.getTerminal(a[g],!1);null!=q&&!f.get(q);)q=this.model.getParent(q);null==q&&(q=n.length-1,m.setTerminalPoint(new mxPoint(n[q].x/k-l.x,n[q].y/k-l.y),!1));m=m.points;if(null!=m)for(n= -0;n<m.length;n++)m[n].x+=c,m[n].y+=p}else m.translate(c,p)}}else e=[]}return e};mxGraph.prototype.insertVertex=function(a,b,c,d,e,f,g,k,l){b=this.createVertex(a,b,c,d,e,f,g,k,l);return this.addCell(b,a)};mxGraph.prototype.createVertex=function(a,b,c,d,e,f,g,k,l){a=new mxGeometry(d,e,f,g);a.relative=null!=l?l:!1;c=new mxCell(c,a,k);c.setId(b);c.setVertex(!0);c.setConnectable(!0);return c};mxGraph.prototype.insertEdge=function(a,b,c,d,e,f){b=this.createEdge(a,b,c,d,e,f);return this.addEdge(b,a,d,e)}; -mxGraph.prototype.createEdge=function(a,b,c,d,e,f){a=new mxCell(c,new mxGeometry,f);a.setId(b);a.setEdge(!0);a.geometry.relative=!0;return a};mxGraph.prototype.addEdge=function(a,b,c,d,e){return this.addCell(a,b,e,c,d)};mxGraph.prototype.addCell=function(a,b,c,d,e){return this.addCells([a],b,c,d,e)[0]}; +p=this.view.getState(this.model.getParent(a[g]));if(null!=n&&null!=p)if(c=d?0:p.origin.x,p=d?0:p.origin.y,this.model.isEdge(e[g])){if(n=n.absolutePoints,null!=n){for(var q=this.model.getTerminal(a[g],!0);null!=q&&!f.get(q);)q=this.model.getParent(q);null==q&&m.setTerminalPoint(new mxPoint(n[0].x/k-l.x,n[0].y/k-l.y),!0);for(q=this.model.getTerminal(a[g],!1);null!=q&&!f.get(q);)q=this.model.getParent(q);null==q&&(q=n.length-1,m.setTerminalPoint(new mxPoint(n[q].x/k-l.x,n[q].y/k-l.y),!1));m=m.points; +if(null!=m)for(n=0;n<m.length;n++)m[n].x+=c,m[n].y+=p}}else m.translate(c,p)}}else e=[]}return e};mxGraph.prototype.insertVertex=function(a,b,c,d,e,f,g,k,l){b=this.createVertex(a,b,c,d,e,f,g,k,l);return this.addCell(b,a)};mxGraph.prototype.createVertex=function(a,b,c,d,e,f,g,k,l){a=new mxGeometry(d,e,f,g);a.relative=null!=l?l:!1;c=new mxCell(c,a,k);c.setId(b);c.setVertex(!0);c.setConnectable(!0);return c}; +mxGraph.prototype.insertEdge=function(a,b,c,d,e,f){b=this.createEdge(a,b,c,d,e,f);return this.addEdge(b,a,d,e)};mxGraph.prototype.createEdge=function(a,b,c,d,e,f){a=new mxCell(c,new mxGeometry,f);a.setId(b);a.setEdge(!0);a.geometry.relative=!0;return a};mxGraph.prototype.addEdge=function(a,b,c,d,e){return this.addCell(a,b,e,c,d)};mxGraph.prototype.addCell=function(a,b,c,d,e){return this.addCells([a],b,c,d,e)[0]}; mxGraph.prototype.addCells=function(a,b,c,d,e){null==b&&(b=this.getDefaultParent());null==c&&(c=this.model.getChildCount(b));this.model.beginUpdate();try{this.cellsAdded(a,b,c,d,e,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",a,"parent",b,"index",c,"source",d,"target",e))}finally{this.model.endUpdate()}return a}; mxGraph.prototype.cellsAdded=function(a,b,c,d,e,f,g,k){if(null!=a&&null!=b&&null!=c){this.model.beginUpdate();try{for(var l=f?this.view.getState(b):null,m=null!=l?l.origin:null,n=new mxPoint(0,0),l=0;l<a.length;l++)if(null==a[l])c--;else{var p=this.model.getParent(a[l]);if(null!=m&&a[l]!=b&&b!=p){var q=this.view.getState(p),r=null!=q?q.origin:n,t=this.model.getGeometry(a[l]);if(null!=t){var u=r.x-m.x,x=r.y-m.y,t=t.clone();t.translate(u,x);t.relative||!this.model.isVertex(a[l])||this.isAllowNegativeCoordinates()|| (t.x=Math.max(0,t.x),t.y=Math.max(0,t.y));this.model.setGeometry(a[l],t)}}b==p&&c+l>this.model.getChildCount(b)&&c--;this.model.add(b,a[l],c+l);this.autoSizeCellsOnAdd&&this.autoSizeCell(a[l],!0);(null==k||k)&&this.isExtendParentsOnAdd(a[l])&&this.isExtendParent(a[l])&&this.extendParent(a[l]);(null==g||g)&&this.constrainChild(a[l]);null!=d&&this.cellConnected(a[l],d,!0);null!=e&&this.cellConnected(a[l],e,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",a,"parent",b,"index",c,"source", d,"target",e,"absolute",f))}finally{this.model.endUpdate()}}};mxGraph.prototype.autoSizeCell=function(a,b){if(null!=b?b:1)for(var c=this.model.getChildCount(a),d=0;d<c;d++)this.autoSizeCell(this.model.getChildAt(a,d));this.getModel().isVertex(a)&&this.isAutoSizeCell(a)&&this.updateCellSize(a)}; mxGraph.prototype.removeCells=function(a,b){b=null!=b?b:!0;null==a&&(a=this.getDeletableCells(this.getSelectionCells()));if(b)a=this.getDeletableCells(this.addAllEdges(a));else{a=a.slice();for(var c=this.getDeletableCells(this.getAllEdges(a)),d=new mxDictionary,e=0;e<a.length;e++)d.put(a[e],!0);for(e=0;e<c.length;e++)null!=this.view.getState(c[e])||d.get(c[e])||(d.put(c[e],!0),a.push(c[e]))}this.model.beginUpdate();try{this.cellsRemoved(a),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells", a,"includeEdges",b))}finally{this.model.endUpdate()}return a}; -mxGraph.prototype.cellsRemoved=function(a){if(null!=a&&0<a.length){var b=this.view.scale,c=this.view.translate;this.model.beginUpdate();try{for(var d=new mxDictionary,e=0;e<a.length;e++)d.put(a[e],!0);for(e=0;e<a.length;e++){for(var f=this.getAllEdges([a[e]]),g=mxUtils.bind(this,function(d,f){var g=this.model.getGeometry(d);if(null!=g){for(var k=this.model.getTerminal(d,f),l=!1,m=k;null!=m;){if(a[e]==m){l=!0;break}m=this.model.getParent(m)}l&&(g=g.clone(),l=this.view.getState(d),null!=l?(k=l.absolutePoints, -m=f?0:k.length-1,g.setTerminalPoint(new mxPoint(k[m].x/b-c.x-l.origin.x,k[m].y/b-c.y-l.origin.y),f)):(k=this.view.getState(k),null!=k&&g.setTerminalPoint(new mxPoint(k.getCenterX()/b-c.x,k.getCenterY()/b-c.y),f)),this.model.setGeometry(d,g),this.model.setTerminal(d,null,f))}}),k=0;k<f.length;k++)d.get(f[k])||(d.put(f[k],!0),g(f[k],!0),g(f[k],!1));this.model.remove(a[e])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",a))}finally{this.model.endUpdate()}}}; +mxGraph.prototype.cellsRemoved=function(a){if(null!=a&&0<a.length){var b=this.view.scale,c=this.view.translate;this.model.beginUpdate();try{for(var d=new mxDictionary,e=0;e<a.length;e++)d.put(a[e],!0);for(e=0;e<a.length;e++){for(var f=this.getAllEdges([a[e]]),g=mxUtils.bind(this,function(d,f){var g=this.model.getGeometry(d);if(null!=g){for(var k=this.model.getTerminal(d,f),l=!1,m=k;null!=m;){if(a[e]==m){l=!0;break}m=this.model.getParent(m)}l&&(g=g.clone(),l=this.view.getState(d),null!=l&&null!=l.absolutePoints? +(k=l.absolutePoints,m=f?0:k.length-1,g.setTerminalPoint(new mxPoint(k[m].x/b-c.x-l.origin.x,k[m].y/b-c.y-l.origin.y),f)):(k=this.view.getState(k),null!=k&&g.setTerminalPoint(new mxPoint(k.getCenterX()/b-c.x,k.getCenterY()/b-c.y),f)),this.model.setGeometry(d,g),this.model.setTerminal(d,null,f))}}),k=0;k<f.length;k++)d.get(f[k])||(d.put(f[k],!0),g(f[k],!0),g(f[k],!1));this.model.remove(a[e])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",a))}finally{this.model.endUpdate()}}}; mxGraph.prototype.splitEdge=function(a,b,c,d,e){d=d||0;e=e||0;var f=this.model.getParent(a),g=this.model.getTerminal(a,!0);this.model.beginUpdate();try{if(null==c){c=this.cloneCell(a);var k=this.view.getState(a),l=this.getCellGeometry(c);if(null!=l&&null!=l.points&&null!=k){var m=this.view.translate,n=this.view.scale,p=mxUtils.findNearestSegment(k,(d+m.x)*n,(e+m.y)*n);l.points=l.points.slice(0,p);l=this.getCellGeometry(a);null!=l&&null!=l.points&&(l=l.clone(),l.points=l.points.slice(p),this.model.setGeometry(a, l))}}this.cellsMoved(b,d,e,!1,!1);this.cellsAdded(b,f,this.model.getChildCount(f),null,null,!0);this.cellsAdded([c],f,this.model.getChildCount(f),g,b[0],!1);this.cellConnected(a,b[0],!0);this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",a,"cells",b,"newEdge",c,"dx",d,"dy",e))}finally{this.model.endUpdate()}return c}; mxGraph.prototype.toggleCells=function(a,b,c){null==b&&(b=this.getSelectionCells());c&&(b=this.addAllEdges(b));this.model.beginUpdate();try{this.cellsToggled(b,a),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",a,"cells",b,"includeEdges",c))}finally{this.model.endUpdate()}return b};mxGraph.prototype.cellsToggled=function(a,b){if(null!=a&&0<a.length){this.model.beginUpdate();try{for(var c=0;c<a.length;c++)this.model.setVisible(a[c],b)}finally{this.model.endUpdate()}}}; @@ -1929,8 +1930,9 @@ mxObjectCodec.prototype.afterEncode=function(a,b,c){return c};mxObjectCodec.prot mxObjectCodec.prototype.decodeAttributes=function(a,b,c){b=b.attributes;if(null!=b)for(var d=0;d<b.length;d++)this.decodeAttribute(a,b[d],c)};mxObjectCodec.prototype.isIgnoredAttribute=function(a,b,c){return"as"==b.nodeName||"id"==b.nodeName}; mxObjectCodec.prototype.decodeAttribute=function(a,b,c){if(!this.isIgnoredAttribute(a,b,c)){var d=b.nodeName;b=this.convertAttributeFromXml(a,b,c);var e=this.getFieldName(d);if(this.isReference(c,e,b,!1)){a=a.getObject(b);if(null==a){mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+d+"="+b);return}b=a}this.isExcluded(c,d,b,!1)||(c[d]=b)}}; mxObjectCodec.prototype.decodeChildren=function(a,b,c){for(b=b.firstChild;null!=b;){var d=b.nextSibling;b.nodeType!=mxConstants.NODETYPE_ELEMENT||this.processInclude(a,b,c)||this.decodeChild(a,b,c);b=d}}; -mxObjectCodec.prototype.decodeChild=function(a,b,c){var d=this.getFieldName(b.getAttribute("as"));if(null==d||!this.isExcluded(c,d,b,!1)){var e=this.getFieldTemplate(c,d,b);"add"==b.nodeName?(a=b.getAttribute("value"),null==a&&mxObjectCodec.allowEval&&(a=mxUtils.eval(mxUtils.getTextContent(b)))):a=a.decode(b,e);this.addObjectValue(c,d,a,e)}};mxObjectCodec.prototype.getFieldTemplate=function(a,b,c){a=a[b];a instanceof Array&&0<a.length&&(a=null);return a}; -mxObjectCodec.prototype.addObjectValue=function(a,b,c,d){null!=c&&c!=d&&(null!=b&&0<b.length?a[b]=c:a.push(c))};mxObjectCodec.prototype.processInclude=function(a,b,c){if("include"==b.nodeName){b=b.getAttribute("name");if(null!=b)try{var d=mxUtils.load(b).getDocumentElement();null!=d&&a.decode(d,c)}catch(e){}return!0}return!1};mxObjectCodec.prototype.beforeDecode=function(a,b,c){return b};mxObjectCodec.prototype.afterDecode=function(a,b,c){return c}; +mxObjectCodec.prototype.decodeChild=function(a,b,c){var d=this.getFieldName(b.getAttribute("as"));if(null==d||!this.isExcluded(c,d,b,!1)){var e=this.getFieldTemplate(c,d,b);"add"==b.nodeName?(a=b.getAttribute("value"),null==a&&mxObjectCodec.allowEval&&(a=mxUtils.eval(mxUtils.getTextContent(b)))):a=a.decode(b,e);try{this.addObjectValue(c,d,a,e)}catch(f){throw Error(f.message+" for "+b.nodeName);}}}; +mxObjectCodec.prototype.getFieldTemplate=function(a,b,c){a=a[b];a instanceof Array&&0<a.length&&(a=null);return a};mxObjectCodec.prototype.addObjectValue=function(a,b,c,d){null!=c&&c!=d&&(null!=b&&0<b.length?a[b]=c:a.push(c))};mxObjectCodec.prototype.processInclude=function(a,b,c){if("include"==b.nodeName){b=b.getAttribute("name");if(null!=b)try{var d=mxUtils.load(b).getDocumentElement();null!=d&&a.decode(d,c)}catch(e){}return!0}return!1};mxObjectCodec.prototype.beforeDecode=function(a,b,c){return b}; +mxObjectCodec.prototype.afterDecode=function(a,b,c){return c}; mxCodecRegistry.register(function(){var a=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);a.isCellCodec=function(){return!0};a.isNumericAttribute=function(a,c,d){return"value"!==c.nodeName&&mxObjectCodec.prototype.isNumericAttribute.apply(this,arguments)};a.isExcluded=function(a,c,d,e){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||e&&"value"==c&&d.nodeType==mxConstants.NODETYPE_ELEMENT};a.afterEncode=function(a,c,d){if(null!= c.value&&c.value.nodeType==mxConstants.NODETYPE_ELEMENT){var b=d;d=mxUtils.importNode(a.document,c.value,!0);d.appendChild(b);a=b.getAttribute("id");d.setAttribute("id",a);b.removeAttribute("id")}return d};a.beforeDecode=function(a,c,d){var b=c.cloneNode(!0),f=this.getName();c.nodeName!=f?(b=c.getElementsByTagName(f)[0],null!=b&&b.parentNode==c?(mxUtils.removeWhitespace(b,!0),mxUtils.removeWhitespace(b,!1),b.parentNode.removeChild(b)):b=null,d.value=c.cloneNode(!0),c=d.value.getAttribute("id"),null!= c&&(d.setId(c),d.value.removeAttribute("id"))):d.setId(c.getAttribute("id"));if(null!=b)for(c=0;c<this.idrefs.length;c++){var f=this.idrefs[c],g=b.getAttribute(f);if(null!=g){b.removeAttribute(f);var k=a.objects[g]||a.lookup(g);null==k&&(g=a.getElementById(g),null!=g&&(k=(mxCodecRegistry.codecs[g.nodeName]||this).decode(a,g)));d[f]=k}}return b};return a}()); @@ -2014,7 +2016,7 @@ Editor.closeLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCA Editor.editLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAgVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9d3yJTAAAAKnRSTlMA+hzi3nRQWyXzkm0h2j3u54gzEgSXjlYoTBgJxL2loGpAOS3Jt7Wxm35Ga7gRAAAA6UlEQVQ4y63Q2XaCMBSF4Q0JBasoQ5DJqbXjfv8HbCK2BZNwo/8FXHx7rcMC7lQu0iX8qU/qtvAWCpoqH8dYzS0SwaV5eK/UAf8X9pd2CWKzuF5Jrftp1owXwnIGLUaL3PYndOHf4kNNXWrXK/m7CHunk7K8LE6YtBpcknwG9GKxnroY+ylBXcx4xKyx/u/EuXi509cP9V7OO1oyHnzrdFTcqLG/4ibBA5pIMr/4xvKzuQDkVy9wW8SgBFD6HDvuzMvrZcC9QlkfMzI7w64m+b4PqBMNHB05lH21PVxJo2/fBXxV4hB38PcD+5AkI4FuETsAAAAASUVORK5CYII="; Editor.previousLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAPFBMVEUAAAD////////////////////////////////////////////////////////////////////////////YSWgTAAAAE3RSTlMA7fci493c0MW8uJ6CZks4MxQHEZL6ewAAAFZJREFUOMvdkskRgDAMA4lDwg2B7b9XOlge/KKvdsa25KFb5XlRvxXC/DNBEv8IFNjBgGdDgXtFgTyhwDXiQAUHCvwa4Uv6mR6UR+1led2mVonvl+tML45qCQNQLIx7AAAAAElFTkSuQmCC";Editor.nextLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAPFBMVEUAAAD////////////////////////////////////////////////////////////////////////////YSWgTAAAAE3RSTlMA7fci493c0MW8uJ6CZks4MxQHEZL6ewAAAFRJREFUOMvd0skRgCAQBVEFwQ0V7fxzNQP6wI05v6pZ/kyj1b7FNgik2gQzzLcAwiUAigHOTwDHK4A1CmB5BJANJG1hQ9qafYcqFlZP3IFc9eVGrR+iIgkDQRUXIAAAAABJRU5ErkJggg=="; Editor.ctrlKey=mxClient.IS_MAC?"Cmd":"Ctrl";Editor.popupsAllowed=!0;mxUtils.extend(Editor,mxEventSource);Editor.prototype.originalNoForeignObject=mxClient.NO_FO;Editor.prototype.transparentImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhMAAwAIAAAP///wAAACH5BAEAAAAALAAAAAAwADAAAAIxhI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8egpAAA7":IMAGE_PATH+"/transparent.gif";Editor.prototype.extendCanvas=!0;Editor.prototype.chromeless=!1;Editor.prototype.cancelFirst=!0; -Editor.prototype.enabled=!0;Editor.prototype.filename=null;Editor.prototype.modified=!1;Editor.prototype.autosave=!0;Editor.prototype.initialTopSpacing=0;Editor.prototype.appName=document.title;Editor.prototype.editBlankUrl=window.location.protocol+"//"+window.location.host+"/";Editor.prototype.init=function(){};Editor.prototype.isChromelessView=function(){return this.chromeless};Editor.prototype.setAutosave=function(a){this.autosave=a;this.fireEvent(new mxEventObject("autosaveChanged"))}; +Editor.prototype.enabled=!0;Editor.prototype.filename=null;Editor.prototype.modified=!1;Editor.prototype.autosave=!0;Editor.prototype.initialTopSpacing=0;Editor.prototype.appName=document.title;Editor.prototype.editBlankUrl=window.location.protocol+"//"+window.location.host+"/";Editor.prototype.defaultGraphOverflow="hidden";Editor.prototype.init=function(){};Editor.prototype.isChromelessView=function(){return this.chromeless};Editor.prototype.setAutosave=function(a){this.autosave=a;this.fireEvent(new mxEventObject("autosaveChanged"))}; Editor.prototype.getEditBlankUrl=function(a){return this.editBlankUrl+a}; Editor.prototype.editAsNew=function(a,c){var d=null!=c?"?title="+encodeURIComponent(c):"";null!=urlParams.ui&&(d+=(0<d.length?"&":"?")+"ui="+urlParams.ui);null==this.editorWindow||this.editorWindow.closed?"undefined"!==typeof window.postMessage&&(null==document.documentMode||10<=document.documentMode)?(null==this.editorWindow&&mxEvent.addListener(window,"message",mxUtils.bind(this,function(b){"ready"==b.data&&b.source==this.editorWindow&&this.editorWindow.postMessage(a,"*")})),this.editorWindow=this.graph.openLink(this.getEditBlankUrl(d+ (0<d.length?"&":"?")+"client=1"),null,!0)):this.editorWindow=this.graph.openLink(this.getEditBlankUrl(d)+"#R"+encodeURIComponent(a)):this.editorWindow.focus()};Editor.prototype.createGraph=function(a,c){var d=new Graph(null,c,null,null,a);d.transparentBackground=!1;this.chromeless||(d.isBlankLink=function(a){return!this.isExternalProtocol(a)});return d}; @@ -2027,18 +2029,18 @@ Editor.prototype.setGraphXml=function(a){if(null!=a){var c=new mxCodec(a.ownerDo this.updateGraphComponents();this.fireEvent(new mxEventObject("resetGraphView"))}else throw{message:mxResources.get("cannotOpenFile"),node:a,toString:function(){return this.message}};}else this.resetGraph(),this.graph.model.clear(),this.fireEvent(new mxEventObject("resetGraphView"))}; Editor.prototype.getGraphXml=function(a){a=(null!=a?a:1)?(new mxCodec(mxUtils.createXmlDocument())).encode(this.graph.getModel()):this.graph.encodeCells(mxUtils.sortCells(this.graph.model.getTopmostCells(this.graph.getSelectionCells())));if(0!=this.graph.view.translate.x||0!=this.graph.view.translate.y)a.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),a.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100);a.setAttribute("grid",this.graph.isGridEnabled()?"1":"0");a.setAttribute("gridSize", this.graph.gridSize);a.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0");a.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0");a.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0");a.setAttribute("arrows",this.graph.connectionArrowsEnabled?"1":"0");a.setAttribute("fold",this.graph.foldingEnabled?"1":"0");a.setAttribute("page",this.graph.pageVisible?"1":"0");a.setAttribute("pageScale",this.graph.pageScale);a.setAttribute("pageWidth",this.graph.pageFormat.width); -a.setAttribute("pageHeight",this.graph.pageFormat.height);null!=this.graph.background&&a.setAttribute("background",this.graph.background);return a};Editor.prototype.updateGraphComponents=function(){var a=this.graph;null!=a.container&&(a.view.validateBackground(),a.container.style.overflow=a.scrollbars?"auto":"hidden",this.fireEvent(new mxEventObject("updateGraphComponents")))};Editor.prototype.setModified=function(a){this.modified=a};Editor.prototype.setFilename=function(a){this.filename=a}; +a.setAttribute("pageHeight",this.graph.pageFormat.height);null!=this.graph.background&&a.setAttribute("background",this.graph.background);return a};Editor.prototype.updateGraphComponents=function(){var a=this.graph;null!=a.container&&(a.view.validateBackground(),a.container.style.overflow=a.scrollbars?"auto":this.defaultGraphOverflow,this.fireEvent(new mxEventObject("updateGraphComponents")))};Editor.prototype.setModified=function(a){this.modified=a}; +Editor.prototype.setFilename=function(a){this.filename=a}; Editor.prototype.createUndoManager=function(){var a=this.graph,c=new mxUndoManager;this.undoListener=function(a,d){c.undoableEditHappened(d.getProperty("edit"))};var d=mxUtils.bind(this,function(a,c){this.undoListener.apply(this,arguments)});a.getModel().addListener(mxEvent.UNDO,d);a.getView().addListener(mxEvent.UNDO,d);d=function(b,c){var d=a.getSelectionCellsForChanges(c.getProperty("edit").changes);a.getModel();for(var f=[],g=0;g<d.length;g++)null!=a.view.getState(d[g])&&f.push(d[g]);a.setSelectionCells(f)}; c.addListener(mxEvent.UNDO,d);c.addListener(mxEvent.REDO,d);return c};Editor.prototype.initStencilRegistry=function(){};Editor.prototype.destroy=function(){null!=this.graph&&(this.graph.destroy(),this.graph=null)};OpenFile=function(a){this.consumer=this.producer=null;this.done=a;this.args=null};OpenFile.prototype.setConsumer=function(a){this.consumer=a;this.execute()};OpenFile.prototype.setData=function(){this.args=arguments;this.execute()};OpenFile.prototype.error=function(a){this.cancel(!0);mxUtils.alert(a)}; OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.args&&(this.cancel(!1),this.consumer.apply(this,this.args))};OpenFile.prototype.cancel=function(a){null!=this.done&&this.done(null!=a?a:!0)}; -function Dialog(a,c,d,b,f,e,h,g,k,l){var m=0;mxClient.IS_VML&&(null==document.documentMode||8>document.documentMode)&&(m=80);d+=m;b+=m;var p=d,n=b,u=0<document.documentElement.clientHeight?document.documentElement.clientHeight:Math.max(document.body.clientHeight||0,document.documentElement.clientHeight),q=Math.max(1,Math.round((document.body.clientWidth-d-64)/2)),r=Math.max(1,Math.round((u-b-a.footerHeight)/3));mxClient.IS_QUIRKS||(c.style.maxHeight="100%");d=Math.min(d,document.body.scrollWidth- -64);b=Math.min(b,u-64);0<a.dialogs.length&&(this.zIndex+=2*a.dialogs.length);null==this.bg&&(this.bg=a.createDiv("background"),this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=u+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity),mxClient.IS_QUIRKS&&new mxDivResizer(this.bg));var t=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=t.x+"px";this.bg.style.top=t.y+"px";q+=t.x;r+=t.y; -f&&document.body.appendChild(this.bg);var w=a.createDiv(k?"geTransDialog":"geDialog");f=this.getPosition(q,r,d,b);q=f.x;r=f.y;w.style.width=d+"px";w.style.height=b+"px";w.style.left=q+"px";w.style.top=r+"px";w.style.zIndex=this.zIndex;w.appendChild(c);document.body.appendChild(w);!g&&c.clientHeight>w.clientHeight-64&&(c.style.overflowY="auto");e&&(e=document.createElement("img"),e.setAttribute("src",Dialog.prototype.closeImage),e.setAttribute("title",mxResources.get("close")),e.className="geDialogClose", -e.style.top=r+14+"px",e.style.left=q+d+38-m+"px",e.style.zIndex=this.zIndex,mxEvent.addListener(e,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})),document.body.appendChild(e),this.dialogImg=e,mxEvent.addGestureListeners(this.bg,null,null,mxUtils.bind(this,function(b){a.hideDialog(!0)})));this.resizeListener=mxUtils.bind(this,function(){if(null!=l){var e=l();null!=e&&(p=d=e.w,n=b=e.h)}u=Math.max(document.body.clientHeight,document.documentElement.clientHeight);this.bg.style.height=u+"px"; -q=Math.max(1,Math.round((document.body.clientWidth-d-64)/2));r=Math.max(1,Math.round((u-b-a.footerHeight)/3));d=Math.min(p,document.body.scrollWidth-64);b=Math.min(n,u-64);e=this.getPosition(q,r,d,b);q=e.x;r=e.y;w.style.left=q+"px";w.style.top=r+"px";w.style.width=d+"px";w.style.height=b+"px";!g&&c.clientHeight>w.clientHeight-64&&(c.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=r+14+"px",this.dialogImg.style.left=q+d+38-m+"px")});mxEvent.addListener(window,"resize",this.resizeListener); -this.onDialogClose=h;this.container=w;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-1; -Dialog.prototype.noColorImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkEzRDlBMUUwODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkEzRDlBMUUxODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTNEOUExREU4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTNEOUExREY4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5xh3fmAAAABlBMVEX////MzMw46qqDAAAAGElEQVR42mJggAJGKGAYIIGBth8KAAIMAEUQAIElnLuQAAAAAElFTkSuQmCC":IMAGE_PATH+ -"/nocolor.png";Dialog.prototype.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAQMAAADaX5RTAAAABlBMVEV7mr3///+wksspAAAAAnRSTlP/AOW3MEoAAAAdSURBVAgdY9jXwCDDwNDRwHCwgeExmASygSL7GgB12QiqNHZZIwAAAABJRU5ErkJggg==":IMAGE_PATH+"/close.png"; +function Dialog(a,c,d,b,f,e,h,g,k,l){var m=0;mxClient.IS_VML&&(null==document.documentMode||8>document.documentMode)&&(m=80);d+=m;b+=m;var p=d,n=b,u=mxUtils.getDocumentSize(),q=u.height,r=Math.max(1,Math.round((u.width-d-64)/2)),t=Math.max(1,Math.round((q-b-a.footerHeight)/3));mxClient.IS_QUIRKS||(c.style.maxHeight="100%");d=null!=document.body?Math.min(d,document.body.scrollWidth-64):d;b=Math.min(b,q-64);0<a.dialogs.length&&(this.zIndex+=2*a.dialogs.length);null==this.bg&&(this.bg=a.createDiv("background"), +this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=q+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity),mxClient.IS_QUIRKS&&new mxDivResizer(this.bg));u=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=u.x+"px";this.bg.style.top=u.y+"px";r+=u.x;t+=u.y;f&&document.body.appendChild(this.bg);var w=a.createDiv(k?"geTransDialog":"geDialog");f=this.getPosition(r,t,d,b);r=f.x;t=f.y;w.style.width= +d+"px";w.style.height=b+"px";w.style.left=r+"px";w.style.top=t+"px";w.style.zIndex=this.zIndex;w.appendChild(c);document.body.appendChild(w);!g&&c.clientHeight>w.clientHeight-64&&(c.style.overflowY="auto");e&&(e=document.createElement("img"),e.setAttribute("src",Dialog.prototype.closeImage),e.setAttribute("title",mxResources.get("close")),e.className="geDialogClose",e.style.top=t+14+"px",e.style.left=r+d+38-m+"px",e.style.zIndex=this.zIndex,mxEvent.addListener(e,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})), +document.body.appendChild(e),this.dialogImg=e,mxEvent.addGestureListeners(this.bg,null,null,mxUtils.bind(this,function(b){a.hideDialog(!0)})));this.resizeListener=mxUtils.bind(this,function(){if(null!=l){var e=l();null!=e&&(p=d=e.w,n=b=e.h)}e=mxUtils.getDocumentSize();q=e.height;this.bg.style.height=q+"px";r=Math.max(1,Math.round((e.width-d-64)/2));t=Math.max(1,Math.round((q-b-a.footerHeight)/3));d=null!=document.body?Math.min(p,document.body.scrollWidth-64):p;b=Math.min(n,q-64);e=this.getPosition(r, +t,d,b);r=e.x;t=e.y;w.style.left=r+"px";w.style.top=t+"px";w.style.width=d+"px";w.style.height=b+"px";!g&&c.clientHeight>w.clientHeight-64&&(c.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=t+14+"px",this.dialogImg.style.left=r+d+38-m+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=h;this.container=w;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-1; +Dialog.prototype.noColorImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkEzRDlBMUUwODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkEzRDlBMUUxODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTNEOUExREU4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTNEOUExREY4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5xh3fmAAAABlBMVEX////MzMw46qqDAAAAGElEQVR42mJggAJGKGAYIIGBth8KAAIMAEUQAIElnLuQAAAAAElFTkSuQmCC": +IMAGE_PATH+"/nocolor.png";Dialog.prototype.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAQMAAADaX5RTAAAABlBMVEV7mr3///+wksspAAAAAnRSTlP/AOW3MEoAAAAdSURBVAgdY9jXwCDDwNDRwHCwgeExmASygSL7GgB12QiqNHZZIwAAAABJRU5ErkJggg==":IMAGE_PATH+"/close.png"; Dialog.prototype.clearImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQAKAIABAMDAwP///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUIzOEM1NzI4NjEyMTFFMUEzMkNDMUE3NjZERDE2QjIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUIzOEM1NzM4NjEyMTFFMUEzMkNDMUE3NjZERDE2QjIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5QjM4QzU3MDg2MTIxMUUxQTMyQ0MxQTc2NkREMTZCMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5QjM4QzU3MTg2MTIxMUUxQTMyQ0MxQTc2NkREMTZCMiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEAAAEALAAAAAANAAoAAAIXTGCJebD9jEOTqRlttXdrB32PJ2ncyRQAOw==":IMAGE_PATH+ "/clear.gif"; Dialog.prototype.lockedImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAMAAABhq6zVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzdDMDZCODExNzIxMTFFNUI0RTk5NTg4OTcyMUUyODEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzdDMDZCODIxNzIxMTFFNUI0RTk5NTg4OTcyMUUyODEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozN0MwNkI3RjE3MjExMUU1QjRFOTk1ODg5NzIxRTI4MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozN0MwNkI4MDE3MjExMUU1QjRFOTk1ODg5NzIxRTI4MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvqMCFYAAAAVUExURZmZmb+/v7KysqysrMzMzLGxsf///4g8N1cAAAAHdFJOU////////wAaSwNGAAAAPElEQVR42lTMQQ4AIQgEwUa0//9kTQirOweYOgDqAMbZUr10AGlAwx4/BJ2QJ4U0L5brYjovvpv32xZgAHZaATFtMbu4AAAAAElFTkSuQmCC":IMAGE_PATH+ @@ -2089,32 +2091,32 @@ a+"px",this.view.backgroundPageShape.node.style.marginTop=c+"px")};var f=mxPopup if(null==c||c!=d&&c!=g)for(;!this.graph.isCellSelected(d)&&!this.graph.isCellSelected(g)&&b.isVertex(g)&&!this.graph.isContainer(g);)d=g,g=this.graph.getModel().getParent(d);return d};var h=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(a,b){var c=h.apply(this,arguments);if(!c)for(var d=this.graph.getModel(),e=d.getParent(a);null!=e;){if(this.graph.isCellSelected(e)&&d.isVertex(e)){c=!0;break}e=d.getParent(e)}return c};mxGraphHandler.prototype.selectDelayed= function(a){if(!this.graph.popupMenuHandler.isPopupTrigger(a)){var b=a.getCell();null==b&&(b=this.cell);var c=this.graph.view.getState(b);if(null==c||!a.isSource(c.control))for(var c=this.graph.getModel(),d=c.getParent(b);!this.graph.isCellSelected(d)&&c.isVertex(d);)b=d,d=c.getParent(b);this.graph.selectCellForEvent(b,a.getEvent())}};mxPopupMenuHandler.prototype.getCellForPopupEvent=function(a){a=a.getCell();for(var b=this.graph.getModel(),c=b.getParent(a);b.isVertex(c)&&!this.graph.isContainer(c);)this.graph.isCellSelected(c)&& (a=c),c=b.getParent(c);return a}})();EditorUi=function(a,c,d){mxEventSource.call(this);this.destroyFunctions=[];this.editor=a||new Editor;this.container=c||document.body;var b=this.editor.graph;b.lightbox=d;b.useCssTransforms&&(this.lazyZoomDelay=0);mxClient.IS_SVG?mxPopupMenu.prototype.submenuImage="data:image/gif;base64,R0lGODlhCQAJAIAAAP///zMzMyH5BAEAAAAALAAAAAAJAAkAAAIPhI8WebHsHopSOVgb26AAADs=":(new Image).src=mxPopupMenu.prototype.submenuImage;mxClient.IS_SVG||null==mxConnectionHandler.prototype.connectImage||((new Image).src=mxConnectionHandler.prototype.connectImage.src); -this.editor.chromeless&&!this.editor.editable&&(this.footerHeight=0,b.isEnabled=function(){return!1},b.panningHandler.isForcePanningEvent=function(a){return!mxEvent.isPopupTrigger(a.getEvent())});this.actions=new Actions(this);this.menus=this.createMenus();this.createDivs();this.createUi();this.refresh();var f=mxUtils.bind(this,function(a){null==a&&(a=window.event);return this.isSelectionAllowed(a)||b.isEditing()});this.container==document.body&&(this.menubarContainer.onselectstart=f,this.menubarContainer.onmousedown= -f,this.toolbarContainer.onselectstart=f,this.toolbarContainer.onmousedown=f,this.diagramContainer.onselectstart=f,this.diagramContainer.onmousedown=f,this.sidebarContainer.onselectstart=f,this.sidebarContainer.onmousedown=f,this.formatContainer.onselectstart=f,this.formatContainer.onmousedown=f,this.footerContainer.onselectstart=f,this.footerContainer.onmousedown=f,null!=this.tabContainer&&(this.tabContainer.onselectstart=f));!this.editor.chromeless||this.editor.editable?(c=function(a){var b=mxEvent.getSource(a); -if("A"==b.nodeName)for(;null!=b;){if("geHint"==b.className)return!0;b=b.parentNode}return f(a)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,"contextmenu",c):this.diagramContainer.oncontextmenu=c):b.panningHandler.usePopupTrigger=!1;b.init(this.diagramContainer);mxClient.IS_SVG&&null!=b.view.getDrawPane()&&(c=b.view.getDrawPane().ownerSVGElement,null!=c&&(c.style.position="absolute"));this.hoverIcons=this.createHoverIcons(); -mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(a){var b=mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(a)-b.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(a)-b.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var e=!1,h=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(a,b){return e||h.apply(this,arguments)};this.keydownHandler= -mxUtils.bind(this,function(a){32==a.which?(e=!0,this.hoverIcons.reset(),b.container.style.cursor="move",b.isEditing()||mxEvent.getSource(a)!=b.container||mxEvent.consume(a)):mxEvent.isConsumed(a)||27!=a.keyCode||this.hideDialog(null,!0)});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(a){b.container.style.cursor="";e=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var g=b.panningHandler.isForcePanningEvent;b.panningHandler.isForcePanningEvent= -function(a){return g.apply(this,arguments)||e||mxEvent.isMouseEvent(a.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(a.getEvent()))&&(!mxEvent.isControlDown(a.getEvent())&&mxEvent.isRightMouseButton(a.getEvent())||mxEvent.isMiddleMouseButton(a.getEvent()))};var k=b.cellEditor.isStopEditingEvent;b.cellEditor.isStopEditingEvent=function(a){return k.apply(this,arguments)||13==a.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxClient.IS_SF&&mxEvent.isShiftDown(a))}; -var l=!1,m=null,p=null,n=null,u=mxUtils.bind(this,function(){if(null!=this.toolbar&&l!=b.cellEditor.isContentEditing()){for(var a=this.toolbar.container.firstChild,c=[];null!=a;){var d=a.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,a)&&(a.parentNode.removeChild(a),c.push(a));a=d}a=this.toolbar.fontMenu;d=this.toolbar.sizeMenu;if(null==n)this.toolbar.createTextToolbar();else{for(var e=0;e<n.length;e++)this.toolbar.container.appendChild(n[e]);this.toolbar.fontMenu=m;this.toolbar.sizeMenu= -p}l=b.cellEditor.isContentEditing();m=a;p=d;n=c}}),q=this,r=b.cellEditor.startEditing;b.cellEditor.startEditing=function(){r.apply(this,arguments);u();if(b.cellEditor.isContentEditing()){var a=!1,c=function(){a||(a=!0,window.setTimeout(function(){for(var c=b.getSelectedElement();null!=c&&c.nodeType!=mxConstants.NODETYPE_ELEMENT;)c=c.parentNode;if(null!=c&&(c=mxUtils.getCurrentStyle(c),null!=c&&null!=q.toolbar)){var d=c.fontFamily;"'"==d.charAt(0)&&(d=d.substring(1));"'"==d.charAt(d.length-1)&&(d= -d.substring(0,d.length-1));q.toolbar.setFontName(d);q.toolbar.setFontSize(parseInt(c.fontSize))}a=!1},0))};mxEvent.addListener(b.cellEditor.textarea,"input",c);mxEvent.addListener(b.cellEditor.textarea,"touchend",c);mxEvent.addListener(b.cellEditor.textarea,"mouseup",c);mxEvent.addListener(b.cellEditor.textarea,"keyup",c);c()}};var t=b.cellEditor.stopEditing;b.cellEditor.stopEditing=function(a,b){t.apply(this,arguments);u()};b.container.setAttribute("tabindex","0");b.container.style.cursor="default"; -if(window.self===window.top&&null!=b.container.parentNode)try{b.container.focus()}catch(C){}var w=b.fireMouseEvent;b.fireMouseEvent=function(a,b,c){a==mxEvent.MOUSE_DOWN&&this.container.focus();w.apply(this,arguments)};b.popupMenuHandler.autoExpand=!0;null!=this.menus&&(b.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a,b,c){this.menus.createPopupMenu(a,b,c)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(a){b.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(a); -this.getKeyHandler=function(){return keyHandler};var v="rounded shadow glass dashed dashPattern comic labelBackgroundColor".split(" "),z="shape edgeStyle curved rounded elbow comic jumpStyle jumpSize".split(" ");this.setDefaultStyle=function(a){var c=b.view.getState(a);if(null!=c){a=a.clone();a.style="";a=b.getCellStyle(a);var d=[],e=[],f;for(f in c.style)a[f]!=c.style[f]&&(d.push(c.style[f]),e.push(f));f=b.getModel().getStyle(c.cell);for(var g=null!=f?f.split(";"):[],h=0;h<g.length;h++){var k=g[h], -l=k.indexOf("=");0<=l&&(f=k.substring(0,l),k=k.substring(l+1),null!=a[f]&&"none"==k&&(d.push(k),e.push(f)))}b.getModel().isEdge(c.cell)?b.currentEdgeStyle={}:b.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",e,"values",d,"cells",[c.cell]))}};this.clearDefaultStyle=function(){b.currentEdgeStyle=mxUtils.clone(b.defaultEdgeStyle);b.currentVertexStyle=mxUtils.clone(b.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var x= -["fontFamily","fontSize","fontColor"],F="edgeStyle startArrow startFill startSize endArrow endFill endSize jettySize orthogonalLoop".split(" "),D=["startArrow startFill startSize sourcePerimeterSpacing endArrow endFill endSize targetPerimeterSpacing jettySize orthogonalLoop".split(" "),["strokeColor","strokeWidth"],["fillColor","gradientColor"],x,["opacity"],["align"],["html"]];for(a=0;a<D.length;a++)for(c=0;c<D[a].length;c++)v.push(D[a][c]);for(a=0;a<z.length;a++)0>mxUtils.indexOf(v,z[a])&&v.push(z[a]); -var E=function(a,c){var d=b.getModel();d.beginUpdate();try{if(c)for(var e=d.isEdge(k),f=e?b.currentEdgeStyle:b.currentVertexStyle,e=["fontSize","fontFamily","fontColor"],g=0;g<e.length;g++){var h=f[e[g]];null!=h&&b.setCellStyles(e[g],h,a)}else for(h=0;h<a.length;h++){for(var k=a[h],l=d.getStyle(k),m=null!=l?l.split(";"):[],B=v.slice(),g=0;g<m.length;g++){var p=m[g],A=p.indexOf("=");if(0<=A){var n=p.substring(0,A),U=mxUtils.indexOf(B,n);0<=U&&B.splice(U,1);for(var q=0;q<D.length;q++){var u=D[q];if(0<= -mxUtils.indexOf(u,n))for(var t=0;t<u.length;t++){var r=mxUtils.indexOf(B,u[t]);0<=r&&B.splice(r,1)}}}}for(var f=(e=d.isEdge(k))?b.currentEdgeStyle:b.currentVertexStyle,C=d.getStyle(k),g=0;g<B.length;g++){var n=B[g],w=f[n];null==w||"shape"==n&&!e||e&&!(0>mxUtils.indexOf(z,n))||(C=mxUtils.setStyle(C,n,w))}d.setStyle(k,C)}}finally{d.endUpdate()}};b.addListener("cellsInserted",function(a,b){E(b.getProperty("cells"))});b.addListener("textInserted",function(a,b){E(b.getProperty("cells"),!0)});b.connectionHandler.addListener(mxEvent.CONNECT, -function(a,b){var c=[b.getProperty("cell")];b.getProperty("terminalInserted")&&c.push(b.getProperty("terminal"));E(c)});this.addListener("styleChanged",mxUtils.bind(this,function(a,c){var d=c.getProperty("cells"),e=!1,f=!1;if(0<d.length)for(var g=0;g<d.length&&(e=b.getModel().isVertex(d[g])||e,!(f=b.getModel().isEdge(d[g])||f)||!e);g++);else f=e=!0;for(var d=c.getProperty("keys"),h=c.getProperty("values"),g=0;g<d.length;g++){var k=0<=mxUtils.indexOf(x,d[g]);if("strokeColor"!=d[g]||null!=h[g]&&"none"!= -h[g])if(0<=mxUtils.indexOf(z,d[g]))f||0<=mxUtils.indexOf(F,d[g])?null==h[g]?delete b.currentEdgeStyle[d[g]]:b.currentEdgeStyle[d[g]]=h[g]:e&&0<=mxUtils.indexOf(v,d[g])&&(null==h[g]?delete b.currentVertexStyle[d[g]]:b.currentVertexStyle[d[g]]=h[g]);else if(0<=mxUtils.indexOf(v,d[g])){if(e||k)null==h[g]?delete b.currentVertexStyle[d[g]]:b.currentVertexStyle[d[g]]=h[g];if(f||k||0<=mxUtils.indexOf(F,d[g]))null==h[g]?delete b.currentEdgeStyle[d[g]]:b.currentEdgeStyle[d[g]]=h[g]}}null!=this.toolbar&&(this.toolbar.setFontName(b.currentVertexStyle.fontFamily|| -Menus.prototype.defaultFont),this.toolbar.setFontSize(b.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==b.currentEdgeStyle.edgeStyle&&"1"==b.currentEdgeStyle.curved?"geSprite geSprite-curved":"straight"==b.currentEdgeStyle.edgeStyle||"none"==b.currentEdgeStyle.edgeStyle||null==b.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"== -b.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==b.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==b.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==b.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==b.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):"geSprite geSprite-orthogonal"),null!=this.toolbar.edgeShapeMenu&&(this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==b.currentEdgeStyle.shape? -"geSprite geSprite-linkedge":"flexArrow"==b.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==b.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"),null!=this.toolbar.lineStartMenu&&(this.toolbar.lineStartMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("start",b.currentEdgeStyle.shape,b.currentEdgeStyle[mxConstants.STYLE_STARTARROW],mxUtils.getValue(b.currentEdgeStyle,"startFill","1"))),null!=this.toolbar.lineEndMenu&&(this.toolbar.lineEndMenu.getElementsByTagName("div")[0].className= -this.getCssClassForMarker("end",b.currentEdgeStyle.shape,b.currentEdgeStyle[mxConstants.STYLE_ENDARROW],mxUtils.getValue(b.currentEdgeStyle,"endFill","1"))))}));null!=this.toolbar&&(a=mxUtils.bind(this,function(){var a=b.currentVertexStyle.fontFamily||"Helvetica",c=String(b.currentVertexStyle.fontSize||"12"),d=b.getView().getState(b.getSelectionCell());null!=d&&(a=d.style[mxConstants.STYLE_FONTFAMILY]||a,c=d.style[mxConstants.STYLE_FONTSIZE]||c,10<a.length&&(a=a.substring(0,8)+"..."));this.toolbar.setFontName(a); -this.toolbar.setFontSize(c)}),b.getSelectionModel().addListener(mxEvent.CHANGE,a),b.getModel().addListener(mxEvent.CHANGE,a));b.addListener(mxEvent.CELLS_ADDED,function(a,c){var d=c.getProperty("cells"),e=c.getProperty("parent");b.getModel().isLayer(e)&&!b.isCellVisible(e)&&null!=d&&0<d.length&&b.getModel().setVisible(e,!0)});this.gestureHandler=mxUtils.bind(this,function(a){null!=this.currentMenu&&mxEvent.getSource(a)!=this.currentMenu.div&&this.hideCurrentMenu()});mxEvent.addGestureListeners(document, -this.gestureHandler);this.resizeHandler=mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){null!=this.editor.graph&&this.refresh()}),0)});mxEvent.addListener(window,"resize",this.resizeHandler);this.orientationChangeHandler=mxUtils.bind(this,function(){this.refresh()});mxEvent.addListener(window,"orientationchange",this.orientationChangeHandler);mxClient.IS_IOS&&!window.navigator.standalone&&(this.scrollHandler=mxUtils.bind(this,function(){window.scrollTo(0,0)}),mxEvent.addListener(window, -"scroll",this.scrollHandler));this.editor.addListener("resetGraphView",mxUtils.bind(this,function(){this.resetScrollbars()}));this.addListener("gridEnabledChanged",mxUtils.bind(this,function(){b.view.validateBackground()}));this.addListener("backgroundColorChanged",mxUtils.bind(this,function(){b.view.validateBackground()}));b.addListener("gridSizeChanged",mxUtils.bind(this,function(){b.isGridEnabled()&&b.view.validateBackground()}));this.editor.resetGraph();this.init();this.open()}; -mxUtils.extend(EditorUi,mxEventSource);EditorUi.compactUi=!0;EditorUi.prototype.splitSize=mxClient.IS_TOUCH||mxClient.IS_POINTER?12:8;EditorUi.prototype.menubarHeight=30;EditorUi.prototype.formatEnabled=!0;EditorUi.prototype.formatWidth=240;EditorUi.prototype.toolbarHeight=34;EditorUi.prototype.footerHeight=28;EditorUi.prototype.sidebarFooterHeight=34;EditorUi.prototype.hsplitPosition=640>=screen.width?118:208;EditorUi.prototype.allowAnimation=!0;EditorUi.prototype.lightboxMaxFitScale=2; -EditorUi.prototype.lightboxVerticalDivider=4;EditorUi.prototype.hsplitClickEnabled=!1; +this.editor.chromeless&&!this.editor.editable&&(this.footerHeight=0,b.isEnabled=function(){return!1},b.panningHandler.isForcePanningEvent=function(a){return!mxEvent.isPopupTrigger(a.getEvent())});this.actions=new Actions(this);this.menus=this.createMenus();this.createDivs();this.createUi();this.refresh();var f=mxUtils.bind(this,function(a){null==a&&(a=window.event);return b.isEditing()||null!=a&&this.isSelectionAllowed(a)});this.container==document.body&&(this.menubarContainer.onselectstart=f,this.menubarContainer.onmousedown= +f,this.toolbarContainer.onselectstart=f,this.toolbarContainer.onmousedown=f,this.diagramContainer.onselectstart=f,this.diagramContainer.onmousedown=f,this.sidebarContainer.onselectstart=f,this.sidebarContainer.onmousedown=f,this.formatContainer.onselectstart=f,this.formatContainer.onmousedown=f,this.footerContainer.onselectstart=f,this.footerContainer.onmousedown=f,null!=this.tabContainer&&(this.tabContainer.onselectstart=f));!this.editor.chromeless||this.editor.editable?(c=function(a){if(null!=a){var b= +mxEvent.getSource(a);if("A"==b.nodeName)for(;null!=b;){if("geHint"==b.className)return!0;b=b.parentNode}}return f(a)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,"contextmenu",c):this.diagramContainer.oncontextmenu=c):b.panningHandler.usePopupTrigger=!1;b.init(this.diagramContainer);mxClient.IS_SVG&&null!=b.view.getDrawPane()&&(c=b.view.getDrawPane().ownerSVGElement,null!=c&&(c.style.position="absolute"));this.hoverIcons= +this.createHoverIcons();mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(a){var b=mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(a)-b.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(a)-b.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var e=!1,h=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(a,b){return e||h.apply(this, +arguments)};this.keydownHandler=mxUtils.bind(this,function(a){32==a.which?(e=!0,this.hoverIcons.reset(),b.container.style.cursor="move",b.isEditing()||mxEvent.getSource(a)!=b.container||mxEvent.consume(a)):mxEvent.isConsumed(a)||27!=a.keyCode||this.hideDialog(null,!0)});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(a){b.container.style.cursor="";e=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var g=b.panningHandler.isForcePanningEvent; +b.panningHandler.isForcePanningEvent=function(a){return g.apply(this,arguments)||e||mxEvent.isMouseEvent(a.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(a.getEvent()))&&(!mxEvent.isControlDown(a.getEvent())&&mxEvent.isRightMouseButton(a.getEvent())||mxEvent.isMiddleMouseButton(a.getEvent()))};var k=b.cellEditor.isStopEditingEvent;b.cellEditor.isStopEditingEvent=function(a){return k.apply(this,arguments)||13==a.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a)|| +mxClient.IS_SF&&mxEvent.isShiftDown(a))};var l=!1,m=null,p=null,n=null,u=mxUtils.bind(this,function(){if(null!=this.toolbar&&l!=b.cellEditor.isContentEditing()){for(var a=this.toolbar.container.firstChild,c=[];null!=a;){var d=a.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,a)&&(a.parentNode.removeChild(a),c.push(a));a=d}a=this.toolbar.fontMenu;d=this.toolbar.sizeMenu;if(null==n)this.toolbar.createTextToolbar();else{for(var e=0;e<n.length;e++)this.toolbar.container.appendChild(n[e]);this.toolbar.fontMenu= +m;this.toolbar.sizeMenu=p}l=b.cellEditor.isContentEditing();m=a;p=d;n=c}}),q=this,r=b.cellEditor.startEditing;b.cellEditor.startEditing=function(){r.apply(this,arguments);u();if(b.cellEditor.isContentEditing()){var a=!1,c=function(){a||(a=!0,window.setTimeout(function(){for(var c=b.getSelectedElement();null!=c&&c.nodeType!=mxConstants.NODETYPE_ELEMENT;)c=c.parentNode;if(null!=c&&(c=mxUtils.getCurrentStyle(c),null!=c&&null!=q.toolbar)){var d=c.fontFamily;"'"==d.charAt(0)&&(d=d.substring(1));"'"==d.charAt(d.length- +1)&&(d=d.substring(0,d.length-1));q.toolbar.setFontName(d);q.toolbar.setFontSize(parseInt(c.fontSize))}a=!1},0))};mxEvent.addListener(b.cellEditor.textarea,"input",c);mxEvent.addListener(b.cellEditor.textarea,"touchend",c);mxEvent.addListener(b.cellEditor.textarea,"mouseup",c);mxEvent.addListener(b.cellEditor.textarea,"keyup",c);c()}};var t=b.cellEditor.stopEditing;b.cellEditor.stopEditing=function(a,b){t.apply(this,arguments);u()};b.container.setAttribute("tabindex","0");b.container.style.cursor= +"default";if(window.self===window.top&&null!=b.container.parentNode)try{b.container.focus()}catch(C){}var w=b.fireMouseEvent;b.fireMouseEvent=function(a,b,c){a==mxEvent.MOUSE_DOWN&&this.container.focus();w.apply(this,arguments)};b.popupMenuHandler.autoExpand=!0;null!=this.menus&&(b.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a,b,c){this.menus.createPopupMenu(a,b,c)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(a){b.popupMenuHandler.hideMenu()}));this.keyHandler= +this.createKeyHandler(a);this.getKeyHandler=function(){return keyHandler};var v="rounded shadow glass dashed dashPattern comic labelBackgroundColor".split(" "),z="shape edgeStyle curved rounded elbow comic jumpStyle jumpSize".split(" ");this.setDefaultStyle=function(a){var c=b.view.getState(a);if(null!=c){a=a.clone();a.style="";a=b.getCellStyle(a);var d=[],e=[],f;for(f in c.style)a[f]!=c.style[f]&&(d.push(c.style[f]),e.push(f));f=b.getModel().getStyle(c.cell);for(var g=null!=f?f.split(";"):[],h=0;h< +g.length;h++){var k=g[h],l=k.indexOf("=");0<=l&&(f=k.substring(0,l),k=k.substring(l+1),null!=a[f]&&"none"==k&&(d.push(k),e.push(f)))}b.getModel().isEdge(c.cell)?b.currentEdgeStyle={}:b.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",e,"values",d,"cells",[c.cell]))}};this.clearDefaultStyle=function(){b.currentEdgeStyle=mxUtils.clone(b.defaultEdgeStyle);b.currentVertexStyle=mxUtils.clone(b.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values", +[],"cells",[]))};var x=["fontFamily","fontSize","fontColor"],E="edgeStyle startArrow startFill startSize endArrow endFill endSize jettySize orthogonalLoop".split(" "),D=["startArrow startFill startSize sourcePerimeterSpacing endArrow endFill endSize targetPerimeterSpacing jettySize orthogonalLoop".split(" "),["strokeColor","strokeWidth"],["fillColor","gradientColor"],x,["opacity"],["align"],["html"]];for(a=0;a<D.length;a++)for(c=0;c<D[a].length;c++)v.push(D[a][c]);for(a=0;a<z.length;a++)0>mxUtils.indexOf(v, +z[a])&&v.push(z[a]);var F=function(a,c){var d=b.getModel();d.beginUpdate();try{if(c)for(var e=d.isEdge(k),f=e?b.currentEdgeStyle:b.currentVertexStyle,e=["fontSize","fontFamily","fontColor"],g=0;g<e.length;g++){var h=f[e[g]];null!=h&&b.setCellStyles(e[g],h,a)}else for(h=0;h<a.length;h++){for(var k=a[h],l=d.getStyle(k),m=null!=l?l.split(";"):[],B=v.slice(),g=0;g<m.length;g++){var p=m[g],A=p.indexOf("=");if(0<=A){var n=p.substring(0,A),U=mxUtils.indexOf(B,n);0<=U&&B.splice(U,1);for(var q=0;q<D.length;q++){var u= +D[q];if(0<=mxUtils.indexOf(u,n))for(var t=0;t<u.length;t++){var r=mxUtils.indexOf(B,u[t]);0<=r&&B.splice(r,1)}}}}for(var f=(e=d.isEdge(k))?b.currentEdgeStyle:b.currentVertexStyle,C=d.getStyle(k),g=0;g<B.length;g++){var n=B[g],w=f[n];null==w||"shape"==n&&!e||e&&!(0>mxUtils.indexOf(z,n))||(C=mxUtils.setStyle(C,n,w))}d.setStyle(k,C)}}finally{d.endUpdate()}};b.addListener("cellsInserted",function(a,b){F(b.getProperty("cells"))});b.addListener("textInserted",function(a,b){F(b.getProperty("cells"),!0)}); +b.connectionHandler.addListener(mxEvent.CONNECT,function(a,b){var c=[b.getProperty("cell")];b.getProperty("terminalInserted")&&c.push(b.getProperty("terminal"));F(c)});this.addListener("styleChanged",mxUtils.bind(this,function(a,c){var d=c.getProperty("cells"),e=!1,f=!1;if(0<d.length)for(var g=0;g<d.length&&(e=b.getModel().isVertex(d[g])||e,!(f=b.getModel().isEdge(d[g])||f)||!e);g++);else f=e=!0;for(var d=c.getProperty("keys"),h=c.getProperty("values"),g=0;g<d.length;g++){var k=0<=mxUtils.indexOf(x, +d[g]);if("strokeColor"!=d[g]||null!=h[g]&&"none"!=h[g])if(0<=mxUtils.indexOf(z,d[g]))f||0<=mxUtils.indexOf(E,d[g])?null==h[g]?delete b.currentEdgeStyle[d[g]]:b.currentEdgeStyle[d[g]]=h[g]:e&&0<=mxUtils.indexOf(v,d[g])&&(null==h[g]?delete b.currentVertexStyle[d[g]]:b.currentVertexStyle[d[g]]=h[g]);else if(0<=mxUtils.indexOf(v,d[g])){if(e||k)null==h[g]?delete b.currentVertexStyle[d[g]]:b.currentVertexStyle[d[g]]=h[g];if(f||k||0<=mxUtils.indexOf(E,d[g]))null==h[g]?delete b.currentEdgeStyle[d[g]]:b.currentEdgeStyle[d[g]]= +h[g]}}null!=this.toolbar&&(this.toolbar.setFontName(b.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(b.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==b.currentEdgeStyle.edgeStyle&&"1"==b.currentEdgeStyle.curved?"geSprite geSprite-curved":"straight"==b.currentEdgeStyle.edgeStyle||"none"==b.currentEdgeStyle.edgeStyle||null== +b.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"==b.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==b.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==b.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==b.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==b.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):"geSprite geSprite-orthogonal"),null!=this.toolbar.edgeShapeMenu&& +(this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==b.currentEdgeStyle.shape?"geSprite geSprite-linkedge":"flexArrow"==b.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==b.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"),null!=this.toolbar.lineStartMenu&&(this.toolbar.lineStartMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("start",b.currentEdgeStyle.shape,b.currentEdgeStyle[mxConstants.STYLE_STARTARROW], +mxUtils.getValue(b.currentEdgeStyle,"startFill","1"))),null!=this.toolbar.lineEndMenu&&(this.toolbar.lineEndMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("end",b.currentEdgeStyle.shape,b.currentEdgeStyle[mxConstants.STYLE_ENDARROW],mxUtils.getValue(b.currentEdgeStyle,"endFill","1"))))}));null!=this.toolbar&&(a=mxUtils.bind(this,function(){var a=b.currentVertexStyle.fontFamily||"Helvetica",c=String(b.currentVertexStyle.fontSize||"12"),d=b.getView().getState(b.getSelectionCell()); +null!=d&&(a=d.style[mxConstants.STYLE_FONTFAMILY]||a,c=d.style[mxConstants.STYLE_FONTSIZE]||c,10<a.length&&(a=a.substring(0,8)+"..."));this.toolbar.setFontName(a);this.toolbar.setFontSize(c)}),b.getSelectionModel().addListener(mxEvent.CHANGE,a),b.getModel().addListener(mxEvent.CHANGE,a));b.addListener(mxEvent.CELLS_ADDED,function(a,c){var d=c.getProperty("cells"),e=c.getProperty("parent");b.getModel().isLayer(e)&&!b.isCellVisible(e)&&null!=d&&0<d.length&&b.getModel().setVisible(e,!0)});this.gestureHandler= +mxUtils.bind(this,function(a){null!=this.currentMenu&&mxEvent.getSource(a)!=this.currentMenu.div&&this.hideCurrentMenu()});mxEvent.addGestureListeners(document,this.gestureHandler);this.resizeHandler=mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){null!=this.editor.graph&&this.refresh()}),0)});mxEvent.addListener(window,"resize",this.resizeHandler);this.orientationChangeHandler=mxUtils.bind(this,function(){this.refresh()});mxEvent.addListener(window,"orientationchange", +this.orientationChangeHandler);mxClient.IS_IOS&&!window.navigator.standalone&&(this.scrollHandler=mxUtils.bind(this,function(){window.scrollTo(0,0)}),mxEvent.addListener(window,"scroll",this.scrollHandler));this.editor.addListener("resetGraphView",mxUtils.bind(this,function(){this.resetScrollbars()}));this.addListener("gridEnabledChanged",mxUtils.bind(this,function(){b.view.validateBackground()}));this.addListener("backgroundColorChanged",mxUtils.bind(this,function(){b.view.validateBackground()})); +b.addListener("gridSizeChanged",mxUtils.bind(this,function(){b.isGridEnabled()&&b.view.validateBackground()}));this.editor.resetGraph();this.init();this.open()};mxUtils.extend(EditorUi,mxEventSource);EditorUi.compactUi=!0;EditorUi.prototype.splitSize=mxClient.IS_TOUCH||mxClient.IS_POINTER?12:8;EditorUi.prototype.menubarHeight=30;EditorUi.prototype.formatEnabled=!0;EditorUi.prototype.formatWidth=240;EditorUi.prototype.toolbarHeight=34;EditorUi.prototype.footerHeight=28; +EditorUi.prototype.sidebarFooterHeight=34;EditorUi.prototype.hsplitPosition=640>=screen.width?118:208;EditorUi.prototype.allowAnimation=!0;EditorUi.prototype.lightboxMaxFitScale=2;EditorUi.prototype.lightboxVerticalDivider=4;EditorUi.prototype.hsplitClickEnabled=!1; EditorUi.prototype.init=function(){var a=this.editor.graph;mxEvent.addListener(a.container,"keydown",mxUtils.bind(this,function(a){this.onKeyDown(a)}));mxEvent.addListener(a.container,"keypress",mxUtils.bind(this,function(a){this.onKeyPress(a)}));this.addUndoListener();this.addBeforeUnloadListener();a.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.updateActionStates()}));a.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.updateActionStates()})); var c=a.setDefaultParent,d=this;this.editor.graph.setDefaultParent=function(){c.apply(this,arguments);d.updateActionStates()};a.editLink=d.actions.get("editLink").funct;this.updateActionStates();this.initClipboard();this.initCanvas();null!=this.format&&this.format.init()};EditorUi.prototype.onKeyDown=function(a){var c=this.editor.graph;9==a.which&&c.isEnabled()&&!mxEvent.isAltDown(a)&&(c.isEditing()?c.stopEditing(!1):c.selectCell(!mxEvent.isShiftDown(a)),mxEvent.consume(a))}; EditorUi.prototype.onKeyPress=function(a){var c=this.editor.graph;!this.isImmediateEditingEvent(a)||c.isEditing()||c.isSelectionEmpty()||0===a.which||mxEvent.isAltDown(a)||mxEvent.isControlDown(a)||mxEvent.isMetaDown(a)||(c.escape(),c.startEditing(),mxClient.IS_FF&&(c=c.cellEditor,c.textarea.innerHTML=String.fromCharCode(a.which),a=document.createRange(),a.selectNodeContents(c.textarea),a.collapse(!1),c=window.getSelection(),c.removeAllRanges(),c.addRange(a)))}; @@ -2146,13 +2148,13 @@ this.lightboxToolbarActions[m];f(w.fn,w.icon,w.tooltip)}!a.lightbox||"1"!=urlPar mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||q(30)}));var v=a.getTolerance();a.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(b,c){this.startX=c.getGraphX();this.startY=c.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(b,c){mxEvent.isTouchEvent(c.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<v&&Math.abs(this.scrollTop- a.container.scrollTop)<v&&Math.abs(this.startX-c.getGraphX())<v&&Math.abs(this.startY-c.getGraphY())<v&&(0<parseFloat(d.chromelessToolbar.style.opacity||0)?u():q(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var z=a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var a=this.graph.getPagePadding(),b=this.graph.getPageSize();this.translate.x=a.x-(this.x0||0)*b.width;this.translate.y= a.y-(this.y0||0)*b.height}z.apply(this,arguments)};var x=a.sizeDidChange;a.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var b=this.getPageLayout(),c=this.getPagePadding(),d=this.getPageSize(),e=Math.ceil(2*c.x+b.width*d.width),g=Math.ceil(2*c.y+b.height*d.height),f=a.minimumGraphSize;if(null==f||f.width!=e||f.height!=g)a.minimumGraphSize=new mxRectangle(0,0,e,g);e=c.x-b.x*d.width;c=c.y-b.y*d.height;this.autoTranslate||this.view.translate.x==e&&this.view.translate.y== -c?x.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=b.x,this.view.y0=b.y,b=a.view.translate.x,d=a.view.translate.y,a.view.setTranslate(e,c),a.container.scrollLeft+=Math.round((e-b)*a.view.scale),a.container.scrollTop+=Math.round((c-d)*a.view.scale),this.autoTranslate=!1)}}}a.updateZoomTimeout=null;a.cumulativeZoomFactor=1;var F=null;a.lazyZoom=function(b){null!=this.updateZoomTimeout&&window.clearTimeout(this.updateZoomTimeout);b?.15>this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor= +c?x.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=b.x,this.view.y0=b.y,b=a.view.translate.x,d=a.view.translate.y,a.view.setTranslate(e,c),a.container.scrollLeft+=Math.round((e-b)*a.view.scale),a.container.scrollTop+=Math.round((c-d)*a.view.scale),this.autoTranslate=!1)}}}a.updateZoomTimeout=null;a.cumulativeZoomFactor=1;var E=null;a.lazyZoom=function(b){null!=this.updateZoomTimeout&&window.clearTimeout(this.updateZoomTimeout);b?.15>this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor= (this.view.scale+.01)/this.view.scale:(this.cumulativeZoomFactor*=this.zoomFactor,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor=(this.view.scale-.01)/this.view.scale:(this.cumulativeZoomFactor/=this.zoomFactor,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale);this.cumulativeZoomFactor=Math.max(.01,Math.min(this.view.scale* -this.cumulativeZoomFactor,160)/this.view.scale);this.updateZoomTimeout=window.setTimeout(mxUtils.bind(this,function(){var b=mxUtils.getOffset(a.container),e=0,g=0;null!=F&&(e=a.container.offsetWidth/2-F.x+b.x,g=a.container.offsetHeight/2-F.y+b.y);b=this.view.scale;this.zoom(this.cumulativeZoomFactor);this.view.scale!=b&&(null!=c&&d.chromelessResize(!1,null,e*(this.cumulativeZoomFactor-1),g*(this.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==e&&0==g||(a.container.scrollLeft-=e*(this.cumulativeZoomFactor- -1),a.container.scrollTop-=g*(this.cumulativeZoomFactor-1)));this.cumulativeZoomFactor=1;this.updateZoomTimeout=null}),this.lazyZoomDelay)};mxEvent.addMouseWheelListener(mxUtils.bind(this,function(b,c){if((null==this.dialogs||0==this.dialogs.length)&&a.isZoomWheelEvent(b))for(var d=mxEvent.getSource(b);null!=d;){if(d==a.container){F=new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b));a.lazyZoom(c);mxEvent.consume(b);break}d=d.parentNode}}))}; +this.cumulativeZoomFactor,160)/this.view.scale);this.updateZoomTimeout=window.setTimeout(mxUtils.bind(this,function(){var b=mxUtils.getOffset(a.container),e=0,g=0;null!=E&&(e=a.container.offsetWidth/2-E.x+b.x,g=a.container.offsetHeight/2-E.y+b.y);b=this.view.scale;this.zoom(this.cumulativeZoomFactor);this.view.scale!=b&&(null!=c&&d.chromelessResize(!1,null,e*(this.cumulativeZoomFactor-1),g*(this.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==e&&0==g||(a.container.scrollLeft-=e*(this.cumulativeZoomFactor- +1),a.container.scrollTop-=g*(this.cumulativeZoomFactor-1)));this.cumulativeZoomFactor=1;this.updateZoomTimeout=null}),this.lazyZoomDelay)};mxEvent.addMouseWheelListener(mxUtils.bind(this,function(b,c){if((null==this.dialogs||0==this.dialogs.length)&&a.isZoomWheelEvent(b))for(var d=mxEvent.getSource(b);null!=d;){if(d==a.container){E=new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b));a.lazyZoom(c);mxEvent.consume(b);break}d=d.parentNode}}))}; EditorUi.prototype.addChromelessToolbarItems=function(a){a(mxUtils.bind(this,function(a){this.actions.get("print").funct();mxEvent.consume(a)}),Editor.printLargeImage,mxResources.get("print"))}; EditorUi.prototype.createTemporaryGraph=function(a){a=new Graph(document.createElement("div"),null,null,a);a.resetViewOnRootChange=!1;a.setConnectable(!1);a.gridEnabled=!1;a.autoScroll=!1;a.setTooltips(!1);a.setEnabled(!1);a.container.style.visibility="hidden";a.container.style.position="absolute";a.container.style.overflow="hidden";a.container.style.height="1px";a.container.style.width="1px";return a}; -EditorUi.prototype.addChromelessClickHandler=function(){var a=urlParams.highlight;null!=a&&0<a.length&&(a="#"+a);this.editor.graph.addClickHandler(a)};EditorUi.prototype.toggleFormatPanel=function(a){this.formatWidth=a||0<this.formatWidth?0:240;this.formatContainer.style.display=a||0<this.formatWidth?"":"none";this.refresh();this.format.refresh();this.fireEvent(new mxEventObject("formatWidthChanged"))}; +EditorUi.prototype.addChromelessClickHandler=function(){var a=urlParams.highlight;null!=a&&0<a.length&&(a="#"+a);this.editor.graph.addClickHandler(a)};EditorUi.prototype.toggleFormatPanel=function(a){null!=this.format&&(this.formatWidth=a||0<this.formatWidth?0:240,this.formatContainer.style.display=a||0<this.formatWidth?"":"none",this.refresh(),this.format.refresh(),this.fireEvent(new mxEventObject("formatWidthChanged")))}; EditorUi.prototype.lightboxFit=function(a){if(this.isDiagramEmpty())this.editor.graph.view.setScale(1);else{var c=urlParams.border,d=60;null!=c&&(d=parseInt(c));this.editor.graph.maxFitScale=this.lightboxMaxFitScale;this.editor.graph.fit(d,null,null,null,null,null,a);this.editor.graph.maxFitScale=null}};EditorUi.prototype.isDiagramEmpty=function(){var a=this.editor.graph.getModel();return 1==a.getChildCount(a.root)&&0==a.getChildCount(a.getChildAt(a.root,0))}; EditorUi.prototype.isSelectionAllowed=function(a){return"SELECT"==mxEvent.getSource(a).nodeName||"INPUT"==mxEvent.getSource(a).nodeName&&mxUtils.isAncestorNode(this.formatContainer,mxEvent.getSource(a))};EditorUi.prototype.addBeforeUnloadListener=function(){window.onbeforeunload=mxUtils.bind(this,function(){if(!this.editor.isChromelessView())return this.onBeforeUnload()})};EditorUi.prototype.onBeforeUnload=function(){if(this.editor.modified)return mxResources.get("allChangesLost")}; EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(a,c){try{var d=mxUtils.parseXml(a);this.editor.setGraphXml(d.documentElement);this.editor.setModified(!1);this.editor.undoManager.clear();null!=c&&(this.editor.setFilename(c),this.updateDocumentTitle())}catch(b){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+b.message)}}))}catch(a){}this.editor.graph.view.validate();this.editor.graph.sizeDidChange(); @@ -2246,15 +2248,15 @@ this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",t null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=g+"px";var l=-Math.round(h.x-this.tooltipBorder),h=-Math.round(h.y-this.tooltipBorder),m=document.body,p=document.documentElement,n=this.getTooltipOffset(),u=this.container.clientWidth+this.editorUi.splitSize+3+this.editorUi.container.offsetLeft+n.x,m=Math.min(Math.max(m.clientHeight||0,p.clientHeight)-g-20,Math.max(0,this.editorUi.container.offsetTop+this.container.offsetTop+a.offsetTop-this.container.scrollTop- g/2+16))+n.y;mxClient.IS_SVG?0!=l||0!=h?this.graph2.view.canvas.setAttribute("transform","translate("+l+","+h+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=l+"px",this.graph2.view.drawPane.style.top=h+"px");this.tooltip.style.position="absolute";this.tooltip.style.left=u+"px";this.tooltip.style.top=m+"px";this.tooltipImage.style.left=u-13+"px";this.tooltipImage.style.top=m+g/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?h():this.thread= window.setTimeout(h,this.tooltipDelay);this.currentElt=a}};Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)};Sidebar.prototype.addDataEntry=function(a,c,d,b,f){return this.addEntry(a,mxUtils.bind(this,function(){return this.createVertexTemplateFromData(f,c,d,b)}))}; -Sidebar.prototype.addEntry=function(a,c){if(null!=this.taglist&&null!=a&&0<a.length)for(var d=a.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),b=mxUtils.bind(this,function(a){if(1<a.length){var b=this.taglist[a];"object"!==typeof b&&(b={entries:[],dict:new mxDictionary},this.taglist[a]=b);null==b.dict.get(c)&&(b.dict.put(c,c),b.entries.push(c))}}),f=0;f<d.length;f++){b(d[f]);var e=d[f].replace(/\.*\d*$/,"");e!=d[f]&&b(e)}return c}; +Sidebar.prototype.addEntry=function(a,c){if(null!=this.taglist&&null!=a&&0<a.length)for(var d=a.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),b=mxUtils.bind(this,function(a){if(null!=a&&1<a.length){var b=this.taglist[a];"object"!==typeof b&&(b={entries:[],dict:new mxDictionary},this.taglist[a]=b);null==b.dict.get(c)&&(b.dict.put(c,c),b.entries.push(c))}}),f=0;f<d.length;f++){b(d[f]);var e=d[f].replace(/\.*\d*$/,"");e!=d[f]&&b(e)}return c}; Sidebar.prototype.searchEntries=function(a,c,d,b,f){if(null!=this.taglist&&null!=a){var e=a.toLowerCase().split(" ");f=new mxDictionary;var h=(d+1)*c;a=[];for(var g=0,k=0;k<e.length;k++)if(0<e[k].length){var l=this.taglist[e[k]],m=new mxDictionary;if(null!=l){var p=l.entries;a=[];for(var n=0;n<p.length;n++)if(l=p[n],0==g==(null==f.get(l))&&(m.put(l,l),a.push(l),k==e.length-1&&a.length==h)){b(a.slice(d*c,h),h,!0,e);return}}else a=[];f=m;g++}f=a.length;b(a.slice(d*c,(d+1)*c),f,!1,e)}else b([],null, null,e)};Sidebar.prototype.filterTags=function(a){if(null!=a){a=a.split(" ");for(var c=[],d={},b=0;b<a.length;b++)null==d[a[b]]&&(d[a[b]]="1",c.push(a[b]));return c.join(" ")}return null};Sidebar.prototype.cloneCell=function(a,c){var d=a.clone();null!=c&&(d.value=c);return d}; Sidebar.prototype.addSearchPalette=function(a){var c=document.createElement("div");c.style.visibility="hidden";this.container.appendChild(c);var d=document.createElement("div");d.className="geSidebar";d.style.boxSizing="border-box";d.style.overflow="hidden";d.style.width="100%";d.style.padding="8px";d.style.paddingTop="14px";d.style.paddingBottom="0px";a||(d.style.display="none");var b=document.createElement("div");b.style.whiteSpace="nowrap";b.style.textOverflow="clip";b.style.paddingBottom="8px"; b.style.cursor="default";var f=document.createElement("input");f.setAttribute("placeholder",mxResources.get("searchShapes"));f.setAttribute("type","text");f.style.fontSize="12px";f.style.overflow="hidden";f.style.boxSizing="border-box";f.style.border="solid 1px #d5d5d5";f.style.borderRadius="4px";f.style.width="100%";f.style.outline="none";f.style.padding="6px";b.appendChild(f);var e=document.createElement("img");e.setAttribute("src",Sidebar.prototype.searchImage);e.setAttribute("title",mxResources.get("search")); e.style.position="relative";e.style.left="-18px";mxClient.IS_QUIRKS?(f.style.height="28px",e.style.top="-4px"):e.style.top="1px";e.style.background="url('"+this.editorUi.editor.transparentImage+"')";var h;b.appendChild(e);d.appendChild(b);var g=document.createElement("center"),k=mxUtils.button(mxResources.get("moreResults"),function(){h()});k.style.display="none";k.style.lineHeight="normal";k.style.marginTop="4px";k.style.marginBottom="8px";g.style.paddingTop="4px";g.style.paddingBottom="8px";g.appendChild(k); d.appendChild(g);var l="",m=!1,p=!1,n=0,u={},q=12,r=mxUtils.bind(this,function(){m=!1;this.currentSearch=null;for(var a=d.firstChild;null!=a;){var c=a.nextSibling;a!=b&&a!=g&&a.parentNode.removeChild(a);a=c}});mxEvent.addListener(e,"click",function(){e.getAttribute("src")==Dialog.prototype.closeImage&&(e.setAttribute("src",Sidebar.prototype.searchImage),e.setAttribute("title",mxResources.get("search")),k.style.display="none",l=f.value="",r());f.focus()});h=mxUtils.bind(this,function(){q=4*Math.max(1, -Math.floor(this.container.clientWidth/(this.thumbWidth+10)));this.hideTooltip();if(""!=f.value){if(null!=g.parentNode&&(l!=f.value&&(r(),l=f.value,u={},p=!1,n=0),!m&&!p)){k.setAttribute("disabled","true");k.style.display="";k.style.cursor="wait";k.innerHTML=mxResources.get("loading")+"...";m=!0;var a={};this.currentSearch=a;this.searchEntries(l,q,n,mxUtils.bind(this,function(b,c,e,f){if(this.currentSearch==a){b=null!=b?b:[];m=!1;n++;g.parentNode.removeChild(g);this.insertSearchHint(d,l,q,n,b,c,e, -f);for(c=0;c<b.length;c++)f=b[c](),null==u[f.innerHTML]&&(u[f.innerHTML]="1",d.appendChild(b[c]()));e?(k.removeAttribute("disabled"),k.innerHTML=mxResources.get("moreResults")):(k.innerHTML=mxResources.get("reset"),k.style.display="none",p=!0);k.style.cursor="";d.appendChild(g)}}),mxUtils.bind(this,function(){k.style.cursor=""}))}}else r(),l=f.value="",u={},k.style.display="none",p=!1,f.focus()});mxEvent.addListener(f,"keydown",mxUtils.bind(this,function(a){13==a.keyCode&&(h(),mxEvent.consume(a))})); +Math.floor(this.container.clientWidth/(this.thumbWidth+10)));this.hideTooltip();if(""!=f.value){if(null!=g.parentNode&&(l!=f.value&&(r(),l=f.value,u={},p=!1,n=0),!m&&!p)){k.setAttribute("disabled","true");k.style.display="";k.style.cursor="wait";k.innerHTML=mxResources.get("loading")+"...";m=!0;var a={};this.currentSearch=a;this.searchEntries(l,q,n,mxUtils.bind(this,function(b,c,e,f){if(this.currentSearch==a){b=null!=b?b:[];m=!1;n++;this.insertSearchHint(d,l,q,n,b,c,e,f);null!=g.parentNode&&g.parentNode.removeChild(g); +for(c=0;c<b.length;c++)f=b[c](),null==u[f.innerHTML]&&(u[f.innerHTML]="1",d.appendChild(b[c]()));e?(k.removeAttribute("disabled"),k.innerHTML=mxResources.get("moreResults")):(k.innerHTML=mxResources.get("reset"),k.style.display="none",p=!0);k.style.cursor="";d.appendChild(g)}}),mxUtils.bind(this,function(){k.style.cursor=""}))}}else r(),l=f.value="",u={},k.style.display="none",p=!1,f.focus()});mxEvent.addListener(f,"keydown",mxUtils.bind(this,function(a){13==a.keyCode&&(h(),mxEvent.consume(a))})); mxEvent.addListener(f,"focus",function(){f.style.paddingRight=""});mxEvent.addListener(f,"blur",function(){f.style.paddingRight="20px"});f.style.paddingRight="20px";mxEvent.addListener(f,"keyup",mxUtils.bind(this,function(a){""==f.value?(e.setAttribute("src",Sidebar.prototype.searchImage),e.setAttribute("title",mxResources.get("search"))):(e.setAttribute("src",Dialog.prototype.closeImage),e.setAttribute("title",mxResources.get("reset")));""==f.value?(p=!0,k.style.display="none"):f.value!=l?(k.style.display= "none",p=!1):m||(k.style.display=p?"none":"")}));mxEvent.addListener(f,"mousedown",function(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=!0});mxEvent.addListener(f,"selectstart",function(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=!0});a=document.createElement("div");a.appendChild(d);this.container.appendChild(a);this.palettes.search=[c,a]}; Sidebar.prototype.insertSearchHint=function(a,c,d,b,f,e,h,g){0==f.length&&1==b&&(d=document.createElement("div"),d.className="geTitle",d.style.cssText="background-color:transparent;border-color:transparent;color:gray;padding:6px 0px 0px 0px !important;margin:4px 8px 4px 8px;text-align:center;cursor:default !important",mxUtils.write(d,mxResources.get("noResultsFor",[c])),a.appendChild(d))}; @@ -2369,41 +2371,41 @@ Sidebar.prototype.updateShapes=function(a,c){var d=this.editorUi.editor.graph,b= d.getModel().isEdge(k)==d.getModel().isEdge(a)){var l=d.view.getState(k),m=null!=l?l.style:d.getCellStyle(c[g]);d.getModel().setStyle(k,e);if(null!=l&&"1"==mxUtils.getValue(l.style,"composite","0"))for(var p=d.model.getChildCount(k);0<=p;p--)d.model.remove(d.model.getChildAt(k,p));if(null!=m)for("umlLifeline"==m[mxConstants.STYLE_SHAPE]&&"umlLifeline"!=b[mxConstants.STYLE_SHAPE]&&(d.setCellStyles(mxConstants.STYLE_SHAPE,"umlLifeline",[k]),d.setCellStyles("participant",b[mxConstants.STYLE_SHAPE],[k])), p=0;p<h.length;p++){var n=m[h[p]];null!=n&&d.setCellStyles(h[p],n,[k])}f.push(k)}}}finally{d.model.endUpdate()}return f}; Sidebar.prototype.createDropHandler=function(a,c,d,b){d=null!=d?d:!0;return mxUtils.bind(this,function(f,e,h,g,k,l){for(l=l?null:mxEvent.isTouchEvent(e)||mxEvent.isPenEvent(e)?document.elementFromPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)):mxEvent.getSource(e);null!=l&&l!=this.container;)l=l.parentNode;if(null==l&&f.isEnabled()){a=f.getImportableCells(a);if(0<a.length){f.stopEditing();l=null==h||mxEvent.isAltDown(e)?!1:f.isValidDropTarget(h,a,e);var m=null;null==h||l||(h=null);if(!f.isCellLocked(h|| -f.getDefaultParent())){f.model.beginUpdate();try{g=Math.round(g);k=Math.round(k);if(c&&f.isSplitTarget(h,a,e)){var p=f.cloneCells(a);f.splitEdge(h,p,null,g-b.width/2,k-b.height/2);m=p}else 0<a.length&&(m=f.importCells(a,g,k,h));if(null!=f.layoutManager){var n=f.layoutManager.getLayout(h);if(null!=n){var u=f.view.scale,q=f.view.translate,r=(g+q.x)*u,t=(k+q.y)*u;for(h=0;h<m.length;h++)n.moveCell(m[h],r,t)}}d&&f.fireEvent(new mxEventObject("cellsInserted","cells",m))}catch(w){this.editorUi.handleError(w)}finally{f.model.endUpdate()}null!= +f.getDefaultParent())){f.model.beginUpdate();try{g=Math.round(g);k=Math.round(k);if(c&&f.isSplitTarget(h,a,e)){var p=f.cloneCells(a);f.splitEdge(h,p,null,g-b.width/2,k-b.height/2);m=p}else 0<a.length&&(m=f.importCells(a,g,k,h));if(null!=f.layoutManager){var n=f.layoutManager.getLayout(h);if(null!=n){var u=f.view.scale,q=f.view.translate,r=(g+q.x)*u,t=(k+q.y)*u;for(h=0;h<m.length;h++)n.moveCell(m[h],r,t)}}!d||null!=e&&mxEvent.isShiftDown(e)||f.fireEvent(new mxEventObject("cellsInserted","cells",m))}catch(w){this.editorUi.handleError(w)}finally{f.model.endUpdate()}null!= m&&0<m.length&&(f.scrollCellToVisible(m[0]),f.setSelectionCells(m));f.editAfterInsert&&null!=e&&mxEvent.isMouseEvent(e)&&null!=m&&1==m.length&&window.setTimeout(function(){f.startEditing(m[0])},0)}}mxEvent.consume(e)}})};Sidebar.prototype.createDragPreview=function(a,c){var d=document.createElement("div");d.style.border=this.dragPreviewBorder;d.style.width=a+"px";d.style.height=c+"px";return d}; Sidebar.prototype.dropAndConnect=function(a,c,d,b,f){var e=this.getDropAndConnectGeometry(a,c[b],d,c),h=[];if(null!=e){var g=this.editorUi.editor.graph,k=null;g.model.beginUpdate();try{var l=g.getCellGeometry(a),m=g.getCellGeometry(c[b]),p=g.model.getParent(a),n=!0;if(null!=g.layoutManager){var u=g.layoutManager.getLayout(p);if(null!=u&&u.constructor==mxStackLayout&&(n=!1,h=g.view.getState(p),null!=h)){var q=new mxPoint(h.x/g.view.scale-g.view.translate.x,h.y/g.view.scale-g.view.translate.y);e.x+= q.x;e.y+=q.y;var r=e.getTerminalPoint(!1);null!=r&&(r.x+=q.x,r.y+=q.y)}}var t=m.x,w=m.y;g.model.isEdge(c[b])&&(w=t=0);var v=g.model.isEdge(a)||null!=l&&!l.relative&&n,h=c=g.importCells(c,e.x-(v?t:0),e.y-(v?w:0),v?p:null);if(g.model.isEdge(a))g.model.setTerminal(a,c[b],d==mxConstants.DIRECTION_NORTH);else if(g.model.isEdge(c[b])){g.model.setTerminal(c[b],a,!0);var z=g.getCellGeometry(c[b]);z.points=null;if(null!=z.getTerminalPoint(!1))z.setTerminalPoint(e.getTerminalPoint(!1),!1);else if(v&&g.model.isVertex(p)){var x= -g.view.getState(p),q=x.cell!=g.view.currentRoot?new mxPoint(x.x/g.view.scale-g.view.translate.x,x.y/g.view.scale-g.view.translate.y):new mxPoint(0,0);g.cellsMoved(c,q.x,q.y,null,null,!0)}}else m=g.getCellGeometry(c[b]),t=e.x-Math.round(m.x),w=e.y-Math.round(m.y),e.x=Math.round(m.x),e.y=Math.round(m.y),g.model.setGeometry(c[b],e),g.cellsMoved(c,t,w,null,null,!0),h=c.slice(),k=1==h.length?h[0]:null,c.push(g.insertEdge(null,null,"",a,c[b],g.createCurrentEdgeStyle()));g.fireEvent(new mxEventObject("cellsInserted", -"cells",c))}catch(F){this.editorUi.handleError(F)}finally{g.model.endUpdate()}g.editAfterInsert&&null!=f&&mxEvent.isMouseEvent(f)&&null!=k&&window.setTimeout(function(){g.startEditing(k)},0)}return h}; +g.view.getState(p),q=x.cell!=g.view.currentRoot?new mxPoint(x.x/g.view.scale-g.view.translate.x,x.y/g.view.scale-g.view.translate.y):new mxPoint(0,0);g.cellsMoved(c,q.x,q.y,null,null,!0)}}else m=g.getCellGeometry(c[b]),t=e.x-Math.round(m.x),w=e.y-Math.round(m.y),e.x=Math.round(m.x),e.y=Math.round(m.y),g.model.setGeometry(c[b],e),g.cellsMoved(c,t,w,null,null,!0),h=c.slice(),k=1==h.length?h[0]:null,c.push(g.insertEdge(null,null,"",a,c[b],g.createCurrentEdgeStyle()));null!=f&&mxEvent.isShiftDown(f)|| +g.fireEvent(new mxEventObject("cellsInserted","cells",c))}catch(E){this.editorUi.handleError(E)}finally{g.model.endUpdate()}g.editAfterInsert&&null!=f&&mxEvent.isMouseEvent(f)&&null!=k&&window.setTimeout(function(){g.startEditing(k)},0)}return h}; Sidebar.prototype.getDropAndConnectGeometry=function(a,c,d,b){var f=this.editorUi.editor.graph,e=f.view,h=1<b.length,g=f.getCellGeometry(a);b=f.getCellGeometry(c);null!=g&&null!=b&&(b=b.clone(),f.model.isEdge(a)?(a=f.view.getState(a),g=a.absolutePoints,c=g[0],f=g[g.length-1],d==mxConstants.DIRECTION_NORTH?(b.x=c.x/e.scale-e.translate.x-b.width/2,b.y=c.y/e.scale-e.translate.y-b.height/2):(b.x=f.x/e.scale-e.translate.x-b.width/2,b.y=f.y/e.scale-e.translate.y-b.height/2)):(g.relative&&(a=f.view.getState(a), g=g.clone(),g.x=(a.x-e.translate.x)/e.scale,g.y=(a.y-e.translate.y)/e.scale),e=f.defaultEdgeLength,f.model.isEdge(c)&&null!=b.getTerminalPoint(!0)&&null!=b.getTerminalPoint(!1)?(c=b.getTerminalPoint(!0),f=b.getTerminalPoint(!1),e=f.x-c.x,c=f.y-c.y,e=Math.sqrt(e*e+c*c),b.x=g.getCenterX(),b.y=g.getCenterY(),b.width=1,b.height=1,d==mxConstants.DIRECTION_NORTH?(b.height=e,b.y=g.y-e,b.setTerminalPoint(new mxPoint(b.x,b.y),!1)):d==mxConstants.DIRECTION_EAST?(b.width=e,b.x=g.x+g.width,b.setTerminalPoint(new mxPoint(b.x+ b.width,b.y),!1)):d==mxConstants.DIRECTION_SOUTH?(b.height=e,b.y=g.y+g.height,b.setTerminalPoint(new mxPoint(b.x,b.y+b.height),!1)):d==mxConstants.DIRECTION_WEST&&(b.width=e,b.x=g.x-e,b.setTerminalPoint(new mxPoint(b.x,b.y),!1))):(!h&&45<b.width&&45<b.height&&45<g.width&&45<g.height&&(b.width*=g.height/b.height,b.height=g.height),b.x=g.x+g.width/2-b.width/2,b.y=g.y+g.height/2-b.height/2,d==mxConstants.DIRECTION_NORTH?b.y=b.y-g.height/2-b.height/2-e:d==mxConstants.DIRECTION_EAST?b.x=b.x+g.width/2+ b.width/2+e:d==mxConstants.DIRECTION_SOUTH?b.y=b.y+g.height/2+b.height/2+e:d==mxConstants.DIRECTION_WEST&&(b.x=b.x-g.width/2-b.width/2-e),f.model.isEdge(c)&&null!=b.getTerminalPoint(!0)&&null!=c.getTerminal(!1)&&(g=f.getCellGeometry(c.getTerminal(!1)),null!=g&&(d==mxConstants.DIRECTION_NORTH?(b.x-=g.getCenterX(),b.y-=g.getCenterY()+g.height/2):d==mxConstants.DIRECTION_EAST?(b.x-=g.getCenterX()-g.width/2,b.y-=g.getCenterY()):d==mxConstants.DIRECTION_SOUTH?(b.x-=g.getCenterX(),b.y-=g.getCenterY()-g.height/ 2):d==mxConstants.DIRECTION_WEST&&(b.x-=g.getCenterX()+g.width/2,b.y-=g.getCenterY()))))));return b}; Sidebar.prototype.createDragSource=function(a,c,d,b,f){function e(a,b){var c;mxClient.IS_IE&&!mxClient.IS_SVG?(mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?(c=document.createElement(mxClient.VML_PREFIX+":image"),c.setAttribute("src",a.src),c.style.borderStyle="none"):(c=document.createElement("div"),c.style.backgroundImage="url("+a.src+")",c.style.backgroundPosition="center",c.style.backgroundRepeat="no-repeat"),c.style.width=a.width+4+"px",c.style.height=a.height+4+"px",c.style.display=mxClient.IS_QUIRKS? -"inline":"inline-block"):(c=mxUtils.createImage(a.src),c.style.width=a.width+"px",c.style.height=a.height+"px");null!=b&&c.setAttribute("title",b);mxUtils.setOpacity(c,a==this.refreshTarget?30:20);c.style.position="absolute";c.style.cursor="crosshair";return c}function h(a,b,c,d){null!=d.parentNode&&(mxUtils.contains(c,a,b)?(mxUtils.setOpacity(d,100),G=d):mxUtils.setOpacity(d,d==E?30:20));return c}for(var g=this.editorUi,k=g.editor.graph,l=null,m=null,p=this,n=0;n<b.length&&(null==m&&this.editorUi.editor.graph.model.isVertex(b[n])? -m=n:null==l&&this.editorUi.editor.graph.model.isEdge(b[n])&&null==this.editorUi.editor.graph.model.getTerminal(b[n],!0)&&(l=n),null==m||null==l);n++);var u=mxUtils.makeDraggable(a,this.editorUi.editor.graph,mxUtils.bind(this,function(a,d,e,g,f){null!=this.updateThread&&window.clearTimeout(this.updateThread);if(null!=b&&null!=w&&G==E){var h=a.isCellSelected(w.cell)?a.getSelectionCells():[w.cell],h=this.updateShapes(a.model.isEdge(w.cell)?b[0]:b[m],h);a.setSelectionCells(h)}else null!=b&&null!=G&&null!= -r&&G!=E?(h=a.model.isEdge(r.cell)||null==l?m:l,a.setSelectionCells(this.dropAndConnect(r.cell,b,J,h,d))):c.apply(this,arguments);null!=this.editorUi.hoverIcons&&this.editorUi.hoverIcons.update(a.view.getState(a.getSelectionCell()))}),d,0,0,k.autoscroll,!0,!0);k.addListener(mxEvent.ESCAPE,function(a,b){u.isActive()&&u.reset()});var q=u.mouseDown;u.mouseDown=function(a){mxEvent.isPopupTrigger(a)||mxEvent.isMultiTouchEvent(a)||(k.stopEditing(),q.apply(this,arguments))};var r=null,t=null,w=null,v=!1, -z=e(this.triangleUp,mxResources.get("connect")),x=e(this.triangleRight,mxResources.get("connect")),F=e(this.triangleDown,mxResources.get("connect")),D=e(this.triangleLeft,mxResources.get("connect")),E=e(this.refreshTarget,mxResources.get("replace")),C=null,M=e(this.roundDrop),L=e(this.roundDrop),J=mxConstants.DIRECTION_NORTH,G=null,K=u.createPreviewElement;u.createPreviewElement=function(a){var b=K.apply(this,arguments);mxClient.IS_SVG&&(b.style.pointerEvents="none");this.previewElementWidth=b.style.width; -this.previewElementHeight=b.style.height;return b};var O=u.dragEnter;u.dragEnter=function(a,b){null!=g.hoverIcons&&g.hoverIcons.setDisplay("none");O.apply(this,arguments)};var Q=u.dragExit;u.dragExit=function(a,b){null!=g.hoverIcons&&g.hoverIcons.setDisplay("");Q.apply(this,arguments)};u.dragOver=function(a,c){mxDragSource.prototype.dragOver.apply(this,arguments);null!=this.currentGuide&&null!=G&&this.currentGuide.hide();if(null!=this.previewElement){var d=a.view;if(null!=w&&G==E)this.previewElement.style.display= -a.model.isEdge(w.cell)?"none":"",this.previewElement.style.left=w.x+"px",this.previewElement.style.top=w.y+"px",this.previewElement.style.width=w.width+"px",this.previewElement.style.height=w.height+"px";else if(null!=r&&null!=G){var e=a.model.isEdge(r.cell)||null==l?m:l,g=p.getDropAndConnectGeometry(r.cell,b[e],J,b),h=a.model.isEdge(r.cell)?null:a.getCellGeometry(r.cell),k=a.getCellGeometry(b[e]),B=a.model.getParent(r.cell),A=d.translate.x*d.scale,H=d.translate.y*d.scale;null!=h&&!h.relative&&a.model.isVertex(B)&& -B!=d.currentRoot&&(H=d.getState(B),A=H.x,H=H.y);h=k.x;k=k.y;a.model.isEdge(b[e])&&(k=h=0);this.previewElement.style.left=(g.x-h)*d.scale+A+"px";this.previewElement.style.top=(g.y-k)*d.scale+H+"px";1==b.length&&(this.previewElement.style.width=g.width*d.scale+"px",this.previewElement.style.height=g.height*d.scale+"px");this.previewElement.style.display=""}else null!=u.currentHighlight.state&&a.model.isEdge(u.currentHighlight.state.cell)?(this.previewElement.style.left=Math.round(parseInt(this.previewElement.style.left)- -f.width*d.scale/2)+"px",this.previewElement.style.top=Math.round(parseInt(this.previewElement.style.top)-f.height*d.scale/2)+"px"):(this.previewElement.style.width=this.previewElementWidth,this.previewElement.style.height=this.previewElementHeight,this.previewElement.style.display="")}};var P=(new Date).getTime(),I=0,B=null,H=this.editorUi.editor.graph.getCellStyle(b[0]);u.getDropTarget=mxUtils.bind(this,function(a,c,d,e){var g=mxEvent.isAltDown(e)||null==b?null:a.getCellAt(c,d);if(null!=g&&!this.graph.isCellConnectable(g)){var f= -this.graph.getModel().getParent(g);this.graph.getModel().isVertex(f)&&this.graph.isCellConnectable(f)&&(g=f)}a.isCellLocked(g)&&(g=null);var k=a.view.getState(g),f=G=null;B!=k?(B=k,P=(new Date).getTime(),I=0,null!=this.updateThread&&window.clearTimeout(this.updateThread),null!=k&&(this.updateThread=window.setTimeout(function(){null==G&&(B=k,u.getDropTarget(a,c,d,e))},this.dropTargetDelay+10))):I=(new Date).getTime()-P;if(2500>I&&null!=k&&!mxEvent.isShiftDown(e)&&(mxUtils.getValue(k.style,mxConstants.STYLE_SHAPE)!= -mxUtils.getValue(H,mxConstants.STYLE_SHAPE)&&(mxUtils.getValue(k.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(k.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(k.style,mxConstants.STYLE_GRADIENTCOLOR,mxConstants.NONE)!=mxConstants.NONE)||"image"==mxUtils.getValue(H,mxConstants.STYLE_SHAPE)||1500<I||a.model.isEdge(k.cell))&&I>this.dropTargetDelay&&(a.model.isVertex(k.cell)&&null!=m||a.model.isEdge(k.cell)&&a.model.isEdge(b[0]))){w= -k;var l=a.model.isEdge(k.cell)?a.view.getPoint(k):new mxPoint(k.getCenterX(),k.getCenterY()),l=new mxRectangle(l.x-this.refreshTarget.width/2,l.y-this.refreshTarget.height/2,this.refreshTarget.width,this.refreshTarget.height);E.style.left=Math.floor(l.x)+"px";E.style.top=Math.floor(l.y)+"px";null==C&&(a.container.appendChild(E),C=E.parentNode);h(c,d,l,E)}else null==w||!mxUtils.contains(w,c,d)||1500<I&&!mxEvent.isShiftDown(e)?(w=null,null!=C&&(E.parentNode.removeChild(E),C=null)):null!=w&&null!=C&& -(l=a.model.isEdge(w.cell)?a.view.getPoint(w):new mxPoint(w.getCenterX(),w.getCenterY()),l=new mxRectangle(l.x-this.refreshTarget.width/2,l.y-this.refreshTarget.height/2,this.refreshTarget.width,this.refreshTarget.height),h(c,d,l,E));if(v&&null!=r&&!mxEvent.isAltDown(e)&&null==G){f=mxRectangle.fromRectangle(r);if(a.model.isEdge(r.cell)){var A=r.absolutePoints;null!=M.parentNode&&(l=A[0],f.add(h(c,d,new mxRectangle(l.x-this.roundDrop.width/2,l.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height), +"inline":"inline-block"):(c=mxUtils.createImage(a.src),c.style.width=a.width+"px",c.style.height=a.height+"px");null!=b&&c.setAttribute("title",b);mxUtils.setOpacity(c,a==this.refreshTarget?30:20);c.style.position="absolute";c.style.cursor="crosshair";return c}function h(a,b,c,d){null!=d.parentNode&&(mxUtils.contains(c,a,b)?(mxUtils.setOpacity(d,100),G=d):mxUtils.setOpacity(d,d==F?30:20));return c}for(var g=this.editorUi,k=g.editor.graph,l=null,m=null,p=this,n=0;n<b.length&&(null==m&&this.editorUi.editor.graph.model.isVertex(b[n])? +m=n:null==l&&this.editorUi.editor.graph.model.isEdge(b[n])&&null==this.editorUi.editor.graph.model.getTerminal(b[n],!0)&&(l=n),null==m||null==l);n++);var u=mxUtils.makeDraggable(a,this.editorUi.editor.graph,mxUtils.bind(this,function(a,d,e,g,f){null!=this.updateThread&&window.clearTimeout(this.updateThread);if(null!=b&&null!=w&&G==F){var h=a.isCellSelected(w.cell)?a.getSelectionCells():[w.cell],h=this.updateShapes(a.model.isEdge(w.cell)?b[0]:b[m],h);a.setSelectionCells(h)}else null!=b&&null!=G&&null!= +r&&G!=F?(h=a.model.isEdge(r.cell)||null==l?m:l,a.setSelectionCells(this.dropAndConnect(r.cell,b,J,h,d))):c.apply(this,arguments);null!=this.editorUi.hoverIcons&&this.editorUi.hoverIcons.update(a.view.getState(a.getSelectionCell()))}),d,0,0,k.autoscroll,!0,!0);k.addListener(mxEvent.ESCAPE,function(a,b){u.isActive()&&u.reset()});var q=u.mouseDown;u.mouseDown=function(a){mxEvent.isPopupTrigger(a)||mxEvent.isMultiTouchEvent(a)||(k.stopEditing(),q.apply(this,arguments))};var r=null,t=null,w=null,v=!1, +z=e(this.triangleUp,mxResources.get("connect")),x=e(this.triangleRight,mxResources.get("connect")),E=e(this.triangleDown,mxResources.get("connect")),D=e(this.triangleLeft,mxResources.get("connect")),F=e(this.refreshTarget,mxResources.get("replace")),C=null,M=e(this.roundDrop),L=e(this.roundDrop),J=mxConstants.DIRECTION_NORTH,G=null,K=u.createPreviewElement;u.createPreviewElement=function(a){var b=K.apply(this,arguments);mxClient.IS_SVG&&(b.style.pointerEvents="none");this.previewElementWidth=b.style.width; +this.previewElementHeight=b.style.height;return b};var O=u.dragEnter;u.dragEnter=function(a,b){null!=g.hoverIcons&&g.hoverIcons.setDisplay("none");O.apply(this,arguments)};var Q=u.dragExit;u.dragExit=function(a,b){null!=g.hoverIcons&&g.hoverIcons.setDisplay("");Q.apply(this,arguments)};u.dragOver=function(a,c){mxDragSource.prototype.dragOver.apply(this,arguments);null!=this.currentGuide&&null!=G&&this.currentGuide.hide();if(null!=this.previewElement){var d=a.view;if(null!=w&&G==F)this.previewElement.style.display= +a.model.isEdge(w.cell)?"none":"",this.previewElement.style.left=w.x+"px",this.previewElement.style.top=w.y+"px",this.previewElement.style.width=w.width+"px",this.previewElement.style.height=w.height+"px";else if(null!=r&&null!=G){var e=a.model.isEdge(r.cell)||null==l?m:l,g=p.getDropAndConnectGeometry(r.cell,b[e],J,b),h=a.model.isEdge(r.cell)?null:a.getCellGeometry(r.cell),k=a.getCellGeometry(b[e]),B=a.model.getParent(r.cell),A=d.translate.x*d.scale,I=d.translate.y*d.scale;null!=h&&!h.relative&&a.model.isVertex(B)&& +B!=d.currentRoot&&(I=d.getState(B),A=I.x,I=I.y);h=k.x;k=k.y;a.model.isEdge(b[e])&&(k=h=0);this.previewElement.style.left=(g.x-h)*d.scale+A+"px";this.previewElement.style.top=(g.y-k)*d.scale+I+"px";1==b.length&&(this.previewElement.style.width=g.width*d.scale+"px",this.previewElement.style.height=g.height*d.scale+"px");this.previewElement.style.display=""}else null!=u.currentHighlight.state&&a.model.isEdge(u.currentHighlight.state.cell)?(this.previewElement.style.left=Math.round(parseInt(this.previewElement.style.left)- +f.width*d.scale/2)+"px",this.previewElement.style.top=Math.round(parseInt(this.previewElement.style.top)-f.height*d.scale/2)+"px"):(this.previewElement.style.width=this.previewElementWidth,this.previewElement.style.height=this.previewElementHeight,this.previewElement.style.display="")}};var P=(new Date).getTime(),H=0,B=null,I=this.editorUi.editor.graph.getCellStyle(b[0]);u.getDropTarget=mxUtils.bind(this,function(a,c,d,e){var g=mxEvent.isAltDown(e)||null==b?null:a.getCellAt(c,d);if(null!=g&&!this.graph.isCellConnectable(g)){var f= +this.graph.getModel().getParent(g);this.graph.getModel().isVertex(f)&&this.graph.isCellConnectable(f)&&(g=f)}a.isCellLocked(g)&&(g=null);var k=a.view.getState(g),f=G=null;B!=k?(B=k,P=(new Date).getTime(),H=0,null!=this.updateThread&&window.clearTimeout(this.updateThread),null!=k&&(this.updateThread=window.setTimeout(function(){null==G&&(B=k,u.getDropTarget(a,c,d,e))},this.dropTargetDelay+10))):H=(new Date).getTime()-P;if(2500>H&&null!=k&&!mxEvent.isShiftDown(e)&&(mxUtils.getValue(k.style,mxConstants.STYLE_SHAPE)!= +mxUtils.getValue(I,mxConstants.STYLE_SHAPE)&&(mxUtils.getValue(k.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(k.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(k.style,mxConstants.STYLE_GRADIENTCOLOR,mxConstants.NONE)!=mxConstants.NONE)||"image"==mxUtils.getValue(I,mxConstants.STYLE_SHAPE)||1500<H||a.model.isEdge(k.cell))&&H>this.dropTargetDelay&&(a.model.isVertex(k.cell)&&null!=m||a.model.isEdge(k.cell)&&a.model.isEdge(b[0]))){w= +k;var l=a.model.isEdge(k.cell)?a.view.getPoint(k):new mxPoint(k.getCenterX(),k.getCenterY()),l=new mxRectangle(l.x-this.refreshTarget.width/2,l.y-this.refreshTarget.height/2,this.refreshTarget.width,this.refreshTarget.height);F.style.left=Math.floor(l.x)+"px";F.style.top=Math.floor(l.y)+"px";null==C&&(a.container.appendChild(F),C=F.parentNode);h(c,d,l,F)}else null==w||!mxUtils.contains(w,c,d)||1500<H&&!mxEvent.isShiftDown(e)?(w=null,null!=C&&(F.parentNode.removeChild(F),C=null)):null!=w&&null!=C&& +(l=a.model.isEdge(w.cell)?a.view.getPoint(w):new mxPoint(w.getCenterX(),w.getCenterY()),l=new mxRectangle(l.x-this.refreshTarget.width/2,l.y-this.refreshTarget.height/2,this.refreshTarget.width,this.refreshTarget.height),h(c,d,l,F));if(v&&null!=r&&!mxEvent.isAltDown(e)&&null==G){f=mxRectangle.fromRectangle(r);if(a.model.isEdge(r.cell)){var A=r.absolutePoints;null!=M.parentNode&&(l=A[0],f.add(h(c,d,new mxRectangle(l.x-this.roundDrop.width/2,l.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height), M)));null!=L.parentNode&&(A=A[A.length-1],f.add(h(c,d,new mxRectangle(A.x-this.roundDrop.width/2,A.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height),L)))}else l=mxRectangle.fromRectangle(r),null!=r.shape&&null!=r.shape.boundingBox&&(l=mxRectangle.fromRectangle(r.shape.boundingBox)),l.grow(this.graph.tolerance),l.grow(HoverIcons.prototype.arrowSpacing),A=this.graph.selectionCellsHandler.getHandler(r.cell),null!=A&&(l.x-=A.horizontalOffset/2,l.y-=A.verticalOffset/2,l.width+=A.horizontalOffset, l.height+=A.verticalOffset,null!=A.rotationShape&&null!=A.rotationShape.node&&"hidden"!=A.rotationShape.node.style.visibility&&"none"!=A.rotationShape.node.style.display&&null!=A.rotationShape.boundingBox&&l.add(A.rotationShape.boundingBox)),f.add(h(c,d,new mxRectangle(r.getCenterX()-this.triangleUp.width/2,l.y-this.triangleUp.height,this.triangleUp.width,this.triangleUp.height),z)),f.add(h(c,d,new mxRectangle(l.x+l.width,r.getCenterY()-this.triangleRight.height/2,this.triangleRight.width,this.triangleRight.height), -x)),f.add(h(c,d,new mxRectangle(r.getCenterX()-this.triangleDown.width/2,l.y+l.height,this.triangleDown.width,this.triangleDown.height),F)),f.add(h(c,d,new mxRectangle(l.x-this.triangleLeft.width,r.getCenterY()-this.triangleLeft.height/2,this.triangleLeft.width,this.triangleLeft.height),D));null!=f&&f.grow(10)}J=mxConstants.DIRECTION_NORTH;G==x?J=mxConstants.DIRECTION_EAST:G==F||G==L?J=mxConstants.DIRECTION_SOUTH:G==D&&(J=mxConstants.DIRECTION_WEST);null!=w&&G==E&&(k=w);l=(null==m||a.isCellConnectable(b[m]))&& -(a.model.isEdge(g)&&null!=m||a.model.isVertex(g)&&a.isCellConnectable(g));if(null!=r&&5E3<=I||r!=k&&(null==f||!mxUtils.contains(f,c,d)||500<I&&null==G&&l))if(v=!1,r=5E3>I&&I>this.dropTargetDelay||a.model.isEdge(g)?k:null,null!=r&&l){f=[M,L,z,x,F,D];for(l=0;l<f.length;l++)null!=f[l].parentNode&&f[l].parentNode.removeChild(f[l]);a.model.isEdge(g)?(A=k.absolutePoints,null!=A&&(l=A[0],A=A[A.length-1],f=a.tolerance,new mxRectangle(c-f,d-f,2*f,2*f),M.style.left=Math.floor(l.x-this.roundDrop.width/2)+"px", +x)),f.add(h(c,d,new mxRectangle(r.getCenterX()-this.triangleDown.width/2,l.y+l.height,this.triangleDown.width,this.triangleDown.height),E)),f.add(h(c,d,new mxRectangle(l.x-this.triangleLeft.width,r.getCenterY()-this.triangleLeft.height/2,this.triangleLeft.width,this.triangleLeft.height),D));null!=f&&f.grow(10)}J=mxConstants.DIRECTION_NORTH;G==x?J=mxConstants.DIRECTION_EAST:G==E||G==L?J=mxConstants.DIRECTION_SOUTH:G==D&&(J=mxConstants.DIRECTION_WEST);null!=w&&G==F&&(k=w);l=(null==m||a.isCellConnectable(b[m]))&& +(a.model.isEdge(g)&&null!=m||a.model.isVertex(g)&&a.isCellConnectable(g));if(null!=r&&5E3<=H||r!=k&&(null==f||!mxUtils.contains(f,c,d)||500<H&&null==G&&l))if(v=!1,r=5E3>H&&H>this.dropTargetDelay||a.model.isEdge(g)?k:null,null!=r&&l){f=[M,L,z,x,E,D];for(l=0;l<f.length;l++)null!=f[l].parentNode&&f[l].parentNode.removeChild(f[l]);a.model.isEdge(g)?(A=k.absolutePoints,null!=A&&(l=A[0],A=A[A.length-1],f=a.tolerance,new mxRectangle(c-f,d-f,2*f,2*f),M.style.left=Math.floor(l.x-this.roundDrop.width/2)+"px", M.style.top=Math.floor(l.y-this.roundDrop.height/2)+"px",L.style.left=Math.floor(A.x-this.roundDrop.width/2)+"px",L.style.top=Math.floor(A.y-this.roundDrop.height/2)+"px",null==a.model.getTerminal(g,!0)&&a.container.appendChild(M),null==a.model.getTerminal(g,!1)&&a.container.appendChild(L))):(l=mxRectangle.fromRectangle(k),null!=k.shape&&null!=k.shape.boundingBox&&(l=mxRectangle.fromRectangle(k.shape.boundingBox)),l.grow(this.graph.tolerance),l.grow(HoverIcons.prototype.arrowSpacing),A=this.graph.selectionCellsHandler.getHandler(k.cell), null!=A&&(l.x-=A.horizontalOffset/2,l.y-=A.verticalOffset/2,l.width+=A.horizontalOffset,l.height+=A.verticalOffset,null!=A.rotationShape&&null!=A.rotationShape.node&&"hidden"!=A.rotationShape.node.style.visibility&&"none"!=A.rotationShape.node.style.display&&null!=A.rotationShape.boundingBox&&l.add(A.rotationShape.boundingBox)),z.style.left=Math.floor(k.getCenterX()-this.triangleUp.width/2)+"px",z.style.top=Math.floor(l.y-this.triangleUp.height)+"px",x.style.left=Math.floor(l.x+l.width)+"px",x.style.top= -Math.floor(k.getCenterY()-this.triangleRight.height/2)+"px",F.style.left=z.style.left,F.style.top=Math.floor(l.y+l.height)+"px",D.style.left=Math.floor(l.x-this.triangleLeft.width)+"px",D.style.top=x.style.top,"eastwest"!=k.style.portConstraint&&(a.container.appendChild(z),a.container.appendChild(F)),a.container.appendChild(x),a.container.appendChild(D));null!=k&&(t=a.selectionCellsHandler.getHandler(k.cell),null!=t&&null!=t.setHandlesVisible&&t.setHandlesVisible(!1));v=!0}else for(f=[M,L,z,x,F,D], -l=0;l<f.length;l++)null!=f[l].parentNode&&f[l].parentNode.removeChild(f[l]);v||null==t||t.setHandlesVisible(!0);g=mxEvent.isAltDown(e)&&!mxEvent.isShiftDown(e)||null!=w&&G==E?null:mxDragSource.prototype.getDropTarget.apply(this,arguments);f=a.getModel();if(null!=g&&(null!=G||!a.isSplitTarget(g,b,e))){for(;null!=g&&!a.isValidDropTarget(g,b,e)&&f.isVertex(f.getParent(g));)g=f.getParent(g);if(a.view.currentRoot==g||!a.isValidRoot(g)&&0==a.getModel().getChildCount(g)||a.isCellLocked(g)||f.isEdge(g))g= -null}return g});u.stopDrag=function(){mxDragSource.prototype.stopDrag.apply(this,arguments);for(var a=[M,L,E,z,x,F,D],b=0;b<a.length;b++)null!=a[b].parentNode&&a[b].parentNode.removeChild(a[b]);null!=r&&null!=t&&t.reset();G=C=w=r=t=null};return u}; -Sidebar.prototype.itemClicked=function(a,c,d,b){b=this.editorUi.editor.graph;b.container.focus();if(mxEvent.isAltDown(d)){if(1==b.getSelectionCount()&&b.model.isVertex(b.getSelectionCell())){c=null;for(var f=0;f<a.length&&null==c;f++)b.model.isVertex(a[f])&&(c=f);null!=c&&(b.setSelectionCells(this.dropAndConnect(b.getSelectionCell(),a,mxEvent.isMetaDown(d)||mxEvent.isControlDown(d)?mxEvent.isShiftDown(d)?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH:mxEvent.isShiftDown(d)?mxConstants.DIRECTION_EAST: -mxConstants.DIRECTION_SOUTH,c,d)),b.scrollCellToVisible(b.getSelectionCell()))}}else if(mxEvent.isShiftDown(d)&&!b.isSelectionEmpty())this.updateShapes(a[0],b.getSelectionCells()),b.scrollCellToVisible(b.getSelectionCell());else{a=b.getFreeInsertPoint();if(mxEvent.isShiftDown(d)){var f=b.getGraphBounds(),e=b.view.translate,h=b.view.scale;a.x=f.x/h-e.x+f.width/h+b.gridSize;a.y=f.y/h-e.y}c.drop(b,d,null,a.x,a.y,!0);null!=this.editorUi.hoverIcons&&(mxEvent.isTouchEvent(d)||mxEvent.isPenEvent(d))&&this.editorUi.hoverIcons.update(b.view.getState(b.getSelectionCell()))}}; +Math.floor(k.getCenterY()-this.triangleRight.height/2)+"px",E.style.left=z.style.left,E.style.top=Math.floor(l.y+l.height)+"px",D.style.left=Math.floor(l.x-this.triangleLeft.width)+"px",D.style.top=x.style.top,"eastwest"!=k.style.portConstraint&&(a.container.appendChild(z),a.container.appendChild(E)),a.container.appendChild(x),a.container.appendChild(D));null!=k&&(t=a.selectionCellsHandler.getHandler(k.cell),null!=t&&null!=t.setHandlesVisible&&t.setHandlesVisible(!1));v=!0}else for(f=[M,L,z,x,E,D], +l=0;l<f.length;l++)null!=f[l].parentNode&&f[l].parentNode.removeChild(f[l]);v||null==t||t.setHandlesVisible(!0);g=mxEvent.isAltDown(e)&&!mxEvent.isShiftDown(e)||null!=w&&G==F?null:mxDragSource.prototype.getDropTarget.apply(this,arguments);f=a.getModel();if(null!=g&&(null!=G||!a.isSplitTarget(g,b,e))){for(;null!=g&&!a.isValidDropTarget(g,b,e)&&f.isVertex(f.getParent(g));)g=f.getParent(g);if(a.view.currentRoot==g||!a.isValidRoot(g)&&0==a.getModel().getChildCount(g)||a.isCellLocked(g)||f.isEdge(g))g= +null}return g});u.stopDrag=function(){mxDragSource.prototype.stopDrag.apply(this,arguments);for(var a=[M,L,F,z,x,E,D],b=0;b<a.length;b++)null!=a[b].parentNode&&a[b].parentNode.removeChild(a[b]);null!=r&&null!=t&&t.reset();G=C=w=r=t=null};return u}; +Sidebar.prototype.itemClicked=function(a,c,d,b){b=this.editorUi.editor.graph;b.container.focus();if(mxEvent.isAltDown(d)&&1==b.getSelectionCount()&&b.model.isVertex(b.getSelectionCell())){c=null;for(var f=0;f<a.length&&null==c;f++)b.model.isVertex(a[f])&&(c=f);null!=c&&(b.setSelectionCells(this.dropAndConnect(b.getSelectionCell(),a,mxEvent.isMetaDown(d)||mxEvent.isControlDown(d)?mxEvent.isShiftDown(d)?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH:mxEvent.isShiftDown(d)?mxConstants.DIRECTION_EAST: +mxConstants.DIRECTION_SOUTH,c,d)),b.scrollCellToVisible(b.getSelectionCell()))}else if(mxEvent.isShiftDown(d)&&!b.isSelectionEmpty())this.updateShapes(a[0],b.getSelectionCells()),b.scrollCellToVisible(b.getSelectionCell());else{a=b.getFreeInsertPoint();if(mxEvent.isAltDown(d)){var f=b.getGraphBounds(),e=b.view.translate,h=b.view.scale;a.x=f.x/h-e.x+f.width/h+b.gridSize;a.y=f.y/h-e.y}c.drop(b,d,null,a.x,a.y,!0);null!=this.editorUi.hoverIcons&&(mxEvent.isTouchEvent(d)||mxEvent.isPenEvent(d))&&this.editorUi.hoverIcons.update(b.view.getState(b.getSelectionCell()))}}; Sidebar.prototype.addClickHandler=function(a,c,d){var b=c.mouseDown,f=c.mouseMove,e=c.mouseUp,h=this.editorUi.editor.graph.tolerance,g=null,k=this;c.mouseDown=function(c){b.apply(this,arguments);g=new mxPoint(mxEvent.getClientX(c),mxEvent.getClientY(c));null!=this.dragElement&&(this.dragElement.style.display="none",mxUtils.setOpacity(a,50))};c.mouseMove=function(b){null!=this.dragElement&&"none"==this.dragElement.style.display&&null!=g&&(Math.abs(g.x-mxEvent.getClientX(b))>h||Math.abs(g.y-mxEvent.getClientY(b))> h)&&(this.dragElement.style.display="",mxUtils.setOpacity(a,100));f.apply(this,arguments)};c.mouseUp=function(b){mxEvent.isPopupTrigger(b)||null!=this.currentGraph||null==this.dragElement||"none"!=this.dragElement.style.display||k.itemClicked(d,c,b,a);e.apply(c,arguments);mxUtils.setOpacity(a,100);g=null;k.currentElt=a}}; Sidebar.prototype.createVertexTemplateEntry=function(a,c,d,b,f,e,h,g){g=null!=g&&0<g.length?g:f.toLowerCase();return this.addEntry(g,mxUtils.bind(this,function(){return this.createVertexTemplate(a,c,d,b,f,e,h)}))};Sidebar.prototype.createVertexTemplate=function(a,c,d,b,f,e,h,g){a=[new mxCell(null!=b?b:"",new mxGeometry(0,0,c,d),a)];a[0].vertex=!0;return this.createVertexTemplateFromCells(a,c,d,f,e,h,g)}; @@ -2424,8 +2426,8 @@ this.pointerDownHandler=null);null!=this.pointerMoveHandler&&(mxEvent.removeList (function(){try{if(null!=navigator&&null!=navigator.language){var a=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===a||"en-ca"===a||"es-mx"===a?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(c){}})();mxText.prototype.baseSpacingTop=5;mxText.prototype.baseSpacingBottom=1;mxGraphModel.prototype.ignoreRelativeEdgeParent=!1; mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif";mxGraphView.prototype.gridSteps=4;mxGraphView.prototype.minGridSize=4;mxGraphView.prototype.gridColor="#e0e0e0";mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(a,c,d){return null}; Graph=function(a,c,d,b,f){mxGraph.call(this,a,c,d,b);this.themes=f||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);a=this.baseUrl;c=a.indexOf("//");this.domainPathUrl=this.domainUrl="";0<c&&(c=a.indexOf("/",c+2),0<c&&(this.domainUrl=a.substring(0,c)),c=a.lastIndexOf("/"),0<c&&(this.domainPathUrl=a.substring(0,c+1)));this.isHtmlLabel=function(a){var b=this.view.getState(a);a=null!=b?b.style:this.getCellStyle(a); -return"1"==a.html||"wrap"==a[mxConstants.STYLE_WHITE_SPACE]};if(this.edgeMode){var e=null,h=null,g=null,k=null,l=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,b){if("mouseDown"==b.getProperty("eventName")&&this.isEnabled()){var c=b.getProperty("event");if(!mxEvent.isControlDown(c.getEvent())&&!mxEvent.isShiftDown(c.getEvent())){var d=c.getState();null!=d&&this.model.isEdge(d.cell)&&(e=new mxPoint(c.getGraphX(),c.getGraphY()),l=this.isCellSelected(d.cell),g=d,h=c,null!= -d.text&&null!=d.text.boundingBox&&mxUtils.contains(d.text.boundingBox,c.getGraphX(),c.getGraphY())?k=mxEvent.LABEL_HANDLE:(d=this.selectionCellsHandler.getHandler(d.cell),null!=d&&null!=d.bends&&0<d.bends.length&&(k=d.getHandleForEvent(c))))}}}));this.addMouseListener({mouseDown:function(a,b){},mouseMove:mxUtils.bind(this,function(a,b){var c=this.selectionCellsHandler.handlers.map,d;for(d in c)if(null!=c[d].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isControlDown(b.getEvent())&& +return null!=a?"1"==a.html||"wrap"==a[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var e=null,h=null,g=null,k=null,l=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,b){if("mouseDown"==b.getProperty("eventName")&&this.isEnabled()){var c=b.getProperty("event");if(!mxEvent.isControlDown(c.getEvent())&&!mxEvent.isShiftDown(c.getEvent())){var d=c.getState();null!=d&&this.model.isEdge(d.cell)&&(e=new mxPoint(c.getGraphX(),c.getGraphY()),l=this.isCellSelected(d.cell),g= +d,h=c,null!=d.text&&null!=d.text.boundingBox&&mxUtils.contains(d.text.boundingBox,c.getGraphX(),c.getGraphY())?k=mxEvent.LABEL_HANDLE:(d=this.selectionCellsHandler.getHandler(d.cell),null!=d&&null!=d.bends&&0<d.bends.length&&(k=d.getHandleForEvent(c))))}}}));this.addMouseListener({mouseDown:function(a,b){},mouseMove:mxUtils.bind(this,function(a,b){var c=this.selectionCellsHandler.handlers.map,d;for(d in c)if(null!=c[d].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isControlDown(b.getEvent())&& !mxEvent.isShiftDown(b.getEvent())&&!mxEvent.isAltDown(b.getEvent()))if(d=this.tolerance,null!=e&&null!=g&&null!=h){if(c=g,Math.abs(e.x-b.getGraphX())>d||Math.abs(e.y-b.getGraphY())>d){this.isCellSelected(c.cell)||this.setSelectionCell(c.cell);var f=this.selectionCellsHandler.getHandler(c.cell);if(null!=f&&null!=f.bends&&0<f.bends.length){var m=f.getHandleForEvent(h),p=this.view.getEdgeStyle(c);d=p==mxEdgeStyle.EntityRelation;l||k!=mxEvent.LABEL_HANDLE||(m=k);if(d&&0!=m&&m!=f.bends.length-1&&m!=mxEvent.LABEL_HANDLE)!d|| null==c.visibleSourceState&&null==c.visibleTargetState||(this.graphHandler.reset(),b.consume());else if(m==mxEvent.LABEL_HANDLE||0==m||null!=c.visibleSourceState||m==f.bends.length-1||null!=c.visibleTargetState)d||m==mxEvent.LABEL_HANDLE||(d=c.absolutePoints,null!=d&&(null==p&&null==m||p==mxEdgeStyle.OrthConnector)&&(m=k,null==m&&(m=new mxRectangle(e.x,e.y),m.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(m,d[0].x,d[0].y)?m=0:mxUtils.contains(m,d[d.length-1].x,d[d.length-1].y)? m=f.bends.length-1:null!=p&&(2==d.length||3==d.length&&(0==Math.round(d[0].x-d[1].x)&&0==Math.round(d[1].x-d[2].x)||0==Math.round(d[0].y-d[1].y)&&0==Math.round(d[1].y-d[2].y)))?m=2:(m=mxUtils.findNearestSegment(c,e.x,e.y),m=null==p?mxEvent.VIRTUAL_HANDLE-m:m+1))),null==m&&(m=mxEvent.VIRTUAL_HANDLE)),f.start(b.getGraphX(),b.getGraphX(),m),k=e=h=g=null,l=!1,b.consume(),this.graphHandler.reset()}}}else if(c=b.getState(),null!=c&&this.model.isEdge(c.cell)){f=null;d=c.absolutePoints;if(null!=d)if(m=new mxRectangle(b.getGraphX(), @@ -2440,10 +2442,10 @@ this.getRubberband=function(){return p};var n=(new Date).getTime(),u=0,q=this.co (v=this.container.style.cursor,this.container.style.cursor="move")}));this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.isEnabled()&&(this.container.style.cursor=v)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(a){return mxEvent.isMouseEvent(a.getEvent())};var z=this.click;this.click=function(a){var b=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);if(this.isEnabled()&&!b||a.isConsumed())return z.apply(this, arguments);b=b?a.sourceState.cell:a.getCell();null!=b&&(b=this.getLinkForCell(b),null!=b&&(this.isCustomLink(b)?this.customLinkClicked(b):this.openLink(b)))};this.tooltipHandler.getStateForEvent=function(a){return a.sourceState};this.getCursorForMouseEvent=function(a){var b=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);return this.getCursorForCell(b?a.sourceState.cell:a.getCell())};var x=this.getCursorForCell;this.getCursorForCell=function(a){if(!this.isEnabled()||this.isCellLocked(a)){if(null!= this.getLinkForCell(a))return"pointer";if(this.isCellLocked(a))return"default"}return x.apply(this,arguments)};this.selectRegion=function(a,b){var c=this.getAllCells(a.x,a.y,a.width,a.height);this.selectCellsForEvent(c,b);return c};this.getAllCells=function(a,b,c,d,e,g){g=null!=g?g:[];if(0<c||0<d){var f=this.getModel(),h=a+c,k=b+d;null==e&&(e=this.getCurrentRoot(),null==e&&(e=f.getRoot()));if(null!=e)for(var l=f.getChildCount(e),B=0;B<l;B++){var m=f.getChildAt(e,B),A=this.view.getState(m);if(null!= -A&&this.isCellVisible(m)&&"1"!=mxUtils.getValue(A.style,"locked","0")){var p=mxUtils.getValue(A.style,mxConstants.STYLE_ROTATION)||0;0!=p&&(A=mxUtils.getBoundingBox(A,p));(f.isEdge(m)||f.isVertex(m))&&A.x>=a&&A.y+A.height<=k&&A.y>=b&&A.x+A.width<=h&&g.push(m);this.getAllCells(a,b,c,d,m,g)}}}return g};var F=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,b,c){return this.graph.isCellSelected(a)?!1:F.apply(this,arguments)};this.isCellLocked=function(a){for(a= +A&&this.isCellVisible(m)&&"1"!=mxUtils.getValue(A.style,"locked","0")){var p=mxUtils.getValue(A.style,mxConstants.STYLE_ROTATION)||0;0!=p&&(A=mxUtils.getBoundingBox(A,p));(f.isEdge(m)||f.isVertex(m))&&A.x>=a&&A.y+A.height<=k&&A.y>=b&&A.x+A.width<=h&&g.push(m);this.getAllCells(a,b,c,d,m,g)}}}return g};var E=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,b,c){return this.graph.isCellSelected(a)?!1:E.apply(this,arguments)};this.isCellLocked=function(a){for(a= this.view.getState(a);null!=a;){if("1"==mxUtils.getValue(a.style,"locked","0"))return!0;a=this.view.getState(this.model.getParent(a.cell))}return!1};var D=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,b){if("mouseDown"==b.getProperty("eventName")){var c=b.getProperty("event").getState();D=null==c||this.isSelectionEmpty()||this.isCellSelected(c.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(a,b){if(!mxEvent.isMultiTouchEvent(b)){var c= b.getProperty("event"),d=b.getProperty("cell");null==d?(c=mxUtils.convertPoint(this.container,mxEvent.getClientX(c),mxEvent.getClientY(c)),p.start(c.x,c.y)):null!=D?this.addSelectionCells(D):1<this.getSelectionCount()&&this.isCellSelected(d)&&this.removeSelectionCell(d);D=null;b.consume()}}));this.connectionHandler.selectCells=function(a,b){this.graph.setSelectionCell(b||a)};this.connectionHandler.constraintHandler.isStateIgnored=function(a,b){return b&&a.view.graph.isCellSelected(a.cell)};this.selectionModel.addListener(mxEvent.CHANGE, -mxUtils.bind(this,function(){var a=this.connectionHandler.constraintHandler;null!=a.currentFocus&&a.isStateIgnored(a.currentFocus,!0)&&(a.currentFocus=null,a.constraints=null,a.destroyIcons());a.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var E=this.updateMouseEvent;this.updateMouseEvent=function(a){a=E.apply(this,arguments);null!=a.state&&this.isCellLocked(a.getCell())&&(a.state=null);return a}}this.currentTranslate=new mxPoint(0,0)}; +mxUtils.bind(this,function(){var a=this.connectionHandler.constraintHandler;null!=a.currentFocus&&a.isStateIgnored(a.currentFocus,!0)&&(a.currentFocus=null,a.constraints=null,a.destroyIcons());a.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var F=this.updateMouseEvent;this.updateMouseEvent=function(a){a=F.apply(this,arguments);null!=a.state&&this.isCellLocked(a.getCell())&&(a.state=null);return a}}this.currentTranslate=new mxPoint(0,0)}; Graph.touchStyle=mxClient.IS_TOUCH||mxClient.IS_FF&&mxClient.IS_WIN||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||null==window.urlParams||"1"==urlParams.touch;Graph.fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList&&(null==window.urlParams||"0"!=urlParams.filesupport);Graph.lineJumpsEnabled=!0;Graph.defaultJumpSize=6; Graph.createSvgImage=function(a,c,d){d=unescape(encodeURIComponent('<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'+a+'px" height="'+c+'px" version="1.1">'+d+"</svg>"));return new mxImage("data:image/svg+xml;base64,"+(window.btoa?btoa(d):Base64.encode(d,!0)),a,c)};mxUtils.extend(Graph,mxGraph);Graph.prototype.minFitScale=null;Graph.prototype.maxFitScale=null; Graph.prototype.linkPolicy="frame"==urlParams.target?"blank":urlParams.target||"auto";Graph.prototype.linkTarget="frame"==urlParams.target?"_self":"_blank";Graph.prototype.linkRelation="nofollow noopener noreferrer";Graph.prototype.defaultScrollbars=!mxClient.IS_IOS;Graph.prototype.defaultPageVisible=!0;Graph.prototype.lightbox=!1;Graph.prototype.defaultPageBackgroundColor="#ffffff";Graph.prototype.defaultPageBorderColor="#ffffff";Graph.prototype.scrollTileSize=new mxRectangle(0,0,400,400); @@ -2458,7 +2460,7 @@ function(b){this.graph.useCssTransforms&&(this.graph.currentScale=this.scale,thi if(null!=a)if(a=a.parentNode,this.useCssTransforms){var c=a.getAttribute("transform");a.setAttribute("transformOrigin","0 0");a.setAttribute("transform","scale("+this.currentScale+","+this.currentScale+")translate("+this.currentTranslate.x+","+this.currentTranslate.y+")");if(c!=a.getAttribute("transform"))try{if(mxClient.IS_EDGE){var d=a.style.display;a.style.display="none";a.getBBox();a.style.display=d}}catch(h){}}else a.removeAttribute("transformOrigin"),a.removeAttribute("transform")};var c=mxGraphView.prototype.validateBackgroundPage; mxGraphView.prototype.validateBackgroundPage=function(){var a=this.graph.useCssTransforms,d=this.scale,e=this.translate;a&&(this.scale=this.graph.currentScale,this.translate=this.graph.currentTranslate);c.apply(this,arguments);a&&(this.scale=d,this.translate=e)};var d=mxGraph.prototype.updatePageBreaks;mxGraph.prototype.updatePageBreaks=function(a,c,e){var b=this.useCssTransforms,g=this.view.scale,f=this.view.translate;b&&(this.view.scale=1,this.view.translate=new mxPoint(0,0),this.useCssTransforms= !1);d.apply(this,arguments);b&&(this.view.scale=g,this.view.translate=f,this.useCssTransforms=!0)}})();Graph.prototype.isLightboxView=function(){return this.lightbox};Graph.prototype.labelLinkClicked=function(a,c,d){c=c.getAttribute("href");if(null!=c&&!this.isCustomLink(c)&&mxEvent.isLeftMouseButton(d)&&!mxEvent.isPopupTrigger(d)||mxEvent.isTouchEvent(d)){if(!this.isEnabled()||this.isCellLocked(a.cell))a=this.isBlankLink(c)?this.linkTarget:"_top",this.openLink(this.getAbsoluteUrl(c),a);mxEvent.consume(d)}}; -Graph.prototype.openLink=function(a,c,d){var b=window;"_self"==c&&window!=window.top?window.location.href=a:a.substring(0,this.baseUrl.length)==this.baseUrl&&"#"==a.charAt(this.baseUrl.length)&&"_top"==c&&window==window.top?(a=a.split("#")[1],window.location.hash=="#"+a&&(window.location.hash=""),window.location.hash=a):(b=window.open(a,c),null==b||d||(b.opener=null));return b};Graph.prototype.getLinkTitle=function(a){return a.substring(a.lastIndexOf("/")+1)}; +Graph.prototype.openLink=function(a,c,d){var b=window;if("_self"==c&&window!=window.top)window.location.href=a;else if(a.substring(0,this.baseUrl.length)==this.baseUrl&&"#"==a.charAt(this.baseUrl.length)&&"_top"==c&&window==window.top)a=a.split("#")[1],window.location.hash=="#"+a&&(window.location.hash=""),window.location.hash=a;else{b=window.open(a,c);try{null==b||d||(b.opener=null)}catch(f){}}return b};Graph.prototype.getLinkTitle=function(a){return a.substring(a.lastIndexOf("/")+1)}; Graph.prototype.isCustomLink=function(a){return"data:"==a.substring(0,5)};Graph.prototype.customLinkClicked=function(a){return!1};Graph.prototype.isExternalProtocol=function(a){return"mailto:"===a.substring(0,7)};Graph.prototype.isBlankLink=function(a){return!this.isExternalProtocol(a)&&("blank"===this.linkPolicy||"self"!==this.linkPolicy&&!this.isRelativeUrl(a)&&a.substring(0,this.domainUrl.length)!==this.domainUrl)}; Graph.prototype.isRelativeUrl=function(a){return null!=a&&!this.absoluteUrlPattern.test(a)&&"data:"!==a.substring(0,5)&&!this.isExternalProtocol(a)}; Graph.prototype.initLayoutManager=function(){this.layoutManager=new mxLayoutManager(this);this.layoutManager.getLayout=function(a){var c=this.graph.view.getState(a);a=null!=c?c.style:this.graph.getCellStyle(a);if(null!=a){if("stackLayout"==a.childLayout)return c=new mxStackLayout(this.graph,!0),c.resizeParentMax="1"==mxUtils.getValue(a,"resizeParentMax","1"),c.horizontal="1"==mxUtils.getValue(a,"horizontalStack","1"),c.resizeParent="1"==mxUtils.getValue(a,"resizeParent","1"),c.resizeLast="1"==mxUtils.getValue(a, @@ -2482,11 +2484,11 @@ Graph.prototype.replacePlaceholders=function(a,c){var d=[];if(null!=c){for(var b match.index)+(null!=e?e:f));b=match.index+f.length}}d.push(c.substring(b))}return d.join("")};Graph.prototype.restoreSelection=function(a){if(null!=a&&0<a.length){for(var c=[],d=0;d<a.length;d++){var b=this.model.getCell(a[d].id);null!=b&&c.push(b)}this.setSelectionCells(c)}else this.clearSelection()}; Graph.prototype.selectCellsForConnectVertex=function(a,c,d){2==a.length&&this.model.isVertex(a[1])?(this.setSelectionCell(a[1]),null!=d&&(mxEvent.isTouchEvent(c)?d.update(d.getState(this.view.getState(a[1]))):d.reset()),this.scrollCellToVisible(a[1])):this.setSelectionCells(a)}; Graph.prototype.connectVertex=function(a,c,d,b,f,e){e=e?e:!1;var h=a.geometry.relative&&null!=a.parent.geometry?new mxPoint(a.parent.geometry.width*a.geometry.x,a.parent.geometry.height*a.geometry.y):new mxPoint(a.geometry.x,a.geometry.y);c==mxConstants.DIRECTION_NORTH?(h.x+=a.geometry.width/2,h.y-=d):c==mxConstants.DIRECTION_SOUTH?(h.x+=a.geometry.width/2,h.y+=a.geometry.height+d):(h.x=c==mxConstants.DIRECTION_WEST?h.x-d:h.x+(a.geometry.width+d),h.y+=a.geometry.height/2);d=this.view.getState(this.model.getParent(a)); -var g=this.view.scale,k=this.view.translate,l=k.x*g,k=k.y*g;this.model.isVertex(d.cell)&&(l=d.x,k=d.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(h.x+=a.parent.geometry.x,h.y+=a.parent.geometry.y);e=e||mxEvent.isControlDown(b)&&!f?null:this.getCellAt(l+h.x*g,k+h.y*g);this.model.isAncestor(e,a)&&(e=null);for(d=e;null!=d;){if(this.isCellLocked(d)){e=null;break}d=this.model.getParent(d)}null!=e&&(d=this.view.getState(a),g=this.view.getState(e),null!=d&&null!=g&&mxUtils.intersects(d,g)&&(e= -null));if(f=!mxEvent.isShiftDown(b)||f)c==mxConstants.DIRECTION_NORTH?h.y-=a.geometry.height/2:c==mxConstants.DIRECTION_SOUTH?h.y+=a.geometry.height/2:h.x=c==mxConstants.DIRECTION_WEST?h.x-a.geometry.width/2:h.x+a.geometry.width/2;null==e||this.isCellConnectable(e)||(d=this.getModel().getParent(e),this.getModel().isVertex(d)&&this.isCellConnectable(d)&&(e=d));if(e==a||this.model.isEdge(e)||!this.isCellConnectable(e))e=null;d=[];this.model.beginUpdate();try{g=e;if(null==g&&f){for(var l=a,m=this.getCellGeometry(a);null!= -m&&m.relative;)l=this.getModel().getParent(l),m=this.getCellGeometry(l);var p=this.view.getState(l),n=null!=p?p.style:this.getCellStyle(l);if(mxUtils.getValue(n,"part",!1)){var u=this.model.getParent(l);this.model.isVertex(u)&&(l=u)}g=this.duplicateCells([l],!1)[0];m=this.getCellGeometry(g);null!=m&&(m.x=h.x-m.width/2,m.y=h.y-m.height/2)}m=null;null!=this.layoutManager&&(m=this.layoutManager.getLayout(this.model.getParent(a)));var q=mxEvent.isControlDown(b)&&f||null==e&&null!=m&&m.constructor==mxStackLayout? -null:this.insertEdge(this.model.getParent(a),null,"",a,g,this.createCurrentEdgeStyle());if(null!=q&&this.connectionHandler.insertBeforeSource){var r=null;for(b=a;null!=b.parent&&null!=b.geometry&&b.geometry.relative&&b.parent!=q.parent;)b=this.model.getParent(b);null!=b&&null!=b.parent&&b.parent==q.parent&&(r=b.parent.getIndex(b),this.model.add(b.parent,q,r))}null==e&&null!=g&&null!=m&&null!=a.parent&&m.constructor==mxStackLayout&&c==mxConstants.DIRECTION_WEST&&(r=a.parent.getIndex(a),this.model.add(a.parent, -g,r));null!=q&&d.push(q);null==e&&null!=g&&d.push(g);null==g&&null!=q&&q.geometry.setTerminalPoint(h,!1);null!=q&&this.fireEvent(new mxEventObject("cellsInserted","cells",[q]))}finally{this.model.endUpdate()}return d}; +var g=this.view.scale,k=this.view.translate,l=k.x*g,k=k.y*g;null!=d&&this.model.isVertex(d.cell)&&(l=d.x,k=d.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(h.x+=a.parent.geometry.x,h.y+=a.parent.geometry.y);e=e||mxEvent.isControlDown(b)&&!f?null:this.getCellAt(l+h.x*g,k+h.y*g);this.model.isAncestor(e,a)&&(e=null);for(d=e;null!=d;){if(this.isCellLocked(d)){e=null;break}d=this.model.getParent(d)}null!=e&&(d=this.view.getState(a),g=this.view.getState(e),null!=d&&null!=g&&mxUtils.intersects(d, +g)&&(e=null));if(f=!mxEvent.isShiftDown(b)||f)c==mxConstants.DIRECTION_NORTH?h.y-=a.geometry.height/2:c==mxConstants.DIRECTION_SOUTH?h.y+=a.geometry.height/2:h.x=c==mxConstants.DIRECTION_WEST?h.x-a.geometry.width/2:h.x+a.geometry.width/2;null==e||this.isCellConnectable(e)||(d=this.getModel().getParent(e),this.getModel().isVertex(d)&&this.isCellConnectable(d)&&(e=d));if(e==a||this.model.isEdge(e)||!this.isCellConnectable(e))e=null;d=[];this.model.beginUpdate();try{g=e;if(null==g&&f){for(var l=a,m= +this.getCellGeometry(a);null!=m&&m.relative;)l=this.getModel().getParent(l),m=this.getCellGeometry(l);var p=this.view.getState(l),n=null!=p?p.style:this.getCellStyle(l);if(mxUtils.getValue(n,"part",!1)){var u=this.model.getParent(l);this.model.isVertex(u)&&(l=u)}g=this.duplicateCells([l],!1)[0];m=this.getCellGeometry(g);null!=m&&(m.x=h.x-m.width/2,m.y=h.y-m.height/2)}m=null;null!=this.layoutManager&&(m=this.layoutManager.getLayout(this.model.getParent(a)));var q=mxEvent.isControlDown(b)&&f||null== +e&&null!=m&&m.constructor==mxStackLayout?null:this.insertEdge(this.model.getParent(a),null,"",a,g,this.createCurrentEdgeStyle());if(null!=q&&this.connectionHandler.insertBeforeSource){var r=null;for(b=a;null!=b.parent&&null!=b.geometry&&b.geometry.relative&&b.parent!=q.parent;)b=this.model.getParent(b);null!=b&&null!=b.parent&&b.parent==q.parent&&(r=b.parent.getIndex(b),this.model.add(b.parent,q,r))}null==e&&null!=g&&null!=m&&null!=a.parent&&m.constructor==mxStackLayout&&c==mxConstants.DIRECTION_WEST&& +(r=a.parent.getIndex(a),this.model.add(a.parent,g,r));null!=q&&d.push(q);null==e&&null!=g&&d.push(g);null==g&&null!=q&&q.geometry.setTerminalPoint(h,!1);null!=q&&this.fireEvent(new mxEventObject("cellsInserted","cells",[q]))}finally{this.model.endUpdate()}return d}; Graph.prototype.getIndexableText=function(){var a=document.createElement("div"),c=[],d,b;for(b in this.model.cells)if(d=this.model.cells[b],this.model.isVertex(d)||this.model.isEdge(d))this.isHtmlLabel(d)?(a.innerHTML=this.getLabel(d),d=mxUtils.extractTextWithWhitespace([a])):d=this.getLabel(d),d=mxUtils.trim(d.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<d.length&&c.push(d);return c.join(" ")}; Graph.prototype.convertValueToString=function(a){if(null!=a.value&&"object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder")){for(var c=a.getAttribute("placeholder"),d=a,b=null;null==b&&null!=d;)null!=d.value&&"object"==typeof d.value&&(b=d.hasAttribute(c)?null!=d.getAttribute(c)?d.getAttribute(c):"":null),d=this.model.getParent(d);return b||""}return a.value.getAttribute("label")||""}return mxGraph.prototype.convertValueToString.apply(this,arguments)}; Graph.prototype.getLinksForState=function(a){return null!=a&&null!=a.text&&null!=a.text.node?a.text.node.getElementsByTagName("a"):null};Graph.prototype.getLinkForCell=function(a){return null!=a.value&&"object"==typeof a.value?(a=a.value.getAttribute("link"),null!=a&&"javascript:"===a.toLowerCase().substring(0,11)&&(a=a.substring(11)),a):null}; @@ -2496,7 +2498,7 @@ Graph.prototype.foldCells=function(a,c,d,b,f){c=null!=c?c:!1;null==d&&(d=this.ge null==p?null!=f&&this.isMoveCellsEvent(f)&&this.moveSiblings(h,m,k,l):null!=f&&mxEvent.isAltDown(f)||p.constructor!=mxStackLayout||p.resizeLast||this.resizeParentStacks(m,p,k,l)}}}}finally{this.model.endUpdate()}this.isEnabled()&&this.setSelectionCells(d)}}; Graph.prototype.moveSiblings=function(a,c,d,b){this.model.beginUpdate();try{var f=this.getCellsBeyond(a.x,a.y,c,!0,!0);for(c=0;c<f.length;c++)if(f[c]!=a.cell){var e=this.view.getState(f[c]),h=this.getCellGeometry(f[c]);null!=e&&null!=h&&(h=h.clone(),h.translate(Math.round(d*Math.max(0,Math.min(1,(e.x-a.x)/a.width))),Math.round(b*Math.max(0,Math.min(1,(e.y-a.y)/a.height)))),this.model.setGeometry(f[c],h))}}finally{this.model.endUpdate()}}; Graph.prototype.resizeParentStacks=function(a,c,d,b){if(null!=this.layoutManager&&null!=c&&c.constructor==mxStackLayout&&!c.resizeLast){this.model.beginUpdate();try{for(var f=c.horizontal;null!=a&&null!=c&&c.constructor==mxStackLayout&&c.horizontal==f&&!c.resizeLast;){var e=this.getCellGeometry(a),h=this.view.getState(a);null!=h&&null!=e&&(e=e.clone(),c.horizontal?e.width+=d+Math.min(0,h.width/this.view.scale-e.width):e.height+=b+Math.min(0,h.height/this.view.scale-e.height),this.model.setGeometry(a, -e));a=this.model.getParent(a);c=this.layoutManager.getLayout(a)}}finally{this.model.endUpdate()}}};Graph.prototype.isContainer=function(a){var c=this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);return this.isSwimlane(a)?"0"!=c.container:"1"==c.container};Graph.prototype.isCellConnectable=function(a){var c=this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);return null!=c.connectable?"0"!=c.connectable:mxGraph.prototype.isCellConnectable.apply(this,arguments)}; +e));a=this.model.getParent(a);c=this.layoutManager.getLayout(a)}}finally{this.model.endUpdate()}}};Graph.prototype.isContainer=function(a){var c=this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);return this.isSwimlane(a)?"0"!=c.container:"1"==c.container};Graph.prototype.isCellConnectable=function(a){var c=this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);return null!=c&&null!=c.connectable?"0"!=c.connectable:mxGraph.prototype.isCellConnectable.apply(this,arguments)}; Graph.prototype.selectAll=function(a){a=a||this.getDefaultParent();this.isCellLocked(a)||mxGraph.prototype.selectAll.apply(this,arguments)};Graph.prototype.selectCells=function(a,c,d){d=d||this.getDefaultParent();this.isCellLocked(d)||mxGraph.prototype.selectCells.apply(this,arguments)};Graph.prototype.getSwimlaneAt=function(a,c,d){d=d||this.getDefaultParent();return this.isCellLocked(d)?null:mxGraph.prototype.getSwimlaneAt.apply(this,arguments)}; Graph.prototype.isCellFoldable=function(a){var c=this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);return this.foldingEnabled&&!this.isCellLocked(a)&&(this.isContainer(a)&&"0"!=c.collapsible||!this.isContainer(a)&&"1"==c.collapsible)};Graph.prototype.reset=function(){this.isEditing()&&this.stopEditing(!0);this.escape();this.isSelectionEmpty()||this.clearSelection()}; Graph.prototype.zoom=function(a,c){a=Math.max(.01,Math.min(this.view.scale*a,160))/this.view.scale;mxGraph.prototype.zoom.apply(this,arguments)};Graph.prototype.zoomIn=function(){.15>this.view.scale?this.zoom((this.view.scale+.01)/this.view.scale):this.zoom(Math.round(this.view.scale*this.zoomFactor*20)/20/this.view.scale)};Graph.prototype.zoomOut=function(){.15>=this.view.scale?this.zoom((this.view.scale-.01)/this.view.scale):this.zoom(Math.round(1/this.zoomFactor*this.view.scale*20)/20/this.view.scale)}; @@ -2533,22 +2535,22 @@ a.y-this.triangleUp.height/2),a=this.graph.getCellAt(this.currentState.getCenter e(c,this.arrowRight);e(d,this.arrowLeft);e(b,this.arrowUp);e(a,this.arrowDown)}else this.arrowLeft.style.visibility="visible",this.arrowRight.style.visibility="visible",this.arrowUp.style.visibility="visible",this.arrowDown.style.visibility="visible";this.graph.tooltipHandler.isEnabled()?(this.arrowLeft.setAttribute("title",mxResources.get("plusTooltip")),this.arrowRight.setAttribute("title",mxResources.get("plusTooltip")),this.arrowUp.setAttribute("title",mxResources.get("plusTooltip")),this.arrowDown.setAttribute("title", mxResources.get("plusTooltip"))):(this.arrowLeft.removeAttribute("title"),this.arrowRight.removeAttribute("title"),this.arrowUp.removeAttribute("title"),this.arrowDown.removeAttribute("title"))}else this.reset();null!=this.currentState&&(this.bbox=this.computeBoundingBox(),null!=this.bbox&&this.bbox.grow(10))}}; HoverIcons.prototype.computeBoundingBox=function(){var a=this.graph.model.isEdge(this.currentState.cell)?null:mxRectangle.fromRectangle(this.currentState);this.visitNodes(function(c){null!=c.parentNode&&(c=new mxRectangle(c.offsetLeft,c.offsetTop,c.offsetWidth,c.offsetHeight),null==a?a=c:a.add(c))});return a}; -HoverIcons.prototype.getState=function(a){if(null!=a){a=a.cell;if(this.graph.getModel().isVertex(a)&&!this.graph.isCellConnectable(a)){var c=this.graph.getModel().getParent(a);this.graph.getModel().isVertex(c)&&this.graph.isCellConnectable(c)&&(a=c)}if(this.graph.isCellLocked(a)||this.graph.model.isEdge(a))a=null;a=this.graph.view.getState(a)}return a}; +HoverIcons.prototype.getState=function(a){if(null!=a)if(a=a.cell,this.graph.getModel().contains(a)){if(this.graph.getModel().isVertex(a)&&!this.graph.isCellConnectable(a)){var c=this.graph.getModel().getParent(a);this.graph.getModel().isVertex(c)&&this.graph.isCellConnectable(c)&&(a=c)}if(this.graph.isCellLocked(a)||this.graph.model.isEdge(a))a=null;a=this.graph.view.getState(a);null!=a&&null==a.style&&(a=null)}else a=null;return a}; HoverIcons.prototype.update=function(a,c,d){if(this.graph.connectionArrowsEnabled){var b=null;this.prev!=a||this.isActive()?(this.startTime=(new Date).getTime(),this.prev=a,b=0,null!=this.updateThread&&window.clearTimeout(this.updateThread),null!=a&&(this.updateThread=window.setTimeout(mxUtils.bind(this,function(){this.isActive()||this.graph.isMouseDown||this.graph.panningHandler.isActive()||(this.prev=a,this.update(a,c,d))}),this.updateDelay+10))):null!=this.startTime&&(b=(new Date).getTime()-this.startTime); this.setDisplay("");null!=this.currentState&&this.currentState!=a&&b<this.activationDelay&&null!=this.bbox&&!mxUtils.contains(this.bbox,c,d)?this.reset(!1):(null!=this.currentState||b>this.activationDelay)&&this.currentState!=a&&(b>this.updateDelay&&null!=a||null==this.bbox||null==c||null==d||!mxUtils.contains(this.bbox,c,d))&&(null!=a&&this.graph.isEnabled()?(this.removeNodes(),this.setCurrentState(a),this.repaint(),this.graph.connectionHandler.constraintHandler.currentFocus!=a&&this.graph.connectionHandler.constraintHandler.reset()): this.reset())}else this.reset()};HoverIcons.prototype.setCurrentState=function(a){"eastwest"!=a.style.portConstraint&&(this.graph.container.appendChild(this.arrowUp),this.graph.container.appendChild(this.arrowDown));this.graph.container.appendChild(this.arrowRight);this.graph.container.appendChild(this.arrowLeft);this.currentState=a}; (function(){var a=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){a.apply(this,arguments);this.validEdges=[]};var c=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(a,b){var d=this.getState(a);null!=d&&this.graph.model.isEdge(d.cell)&&null!=d.style&&1!=d.style[mxConstants.STYLE_CURVED]&&!d.invalid&&this.updateLineJumps(d)&&this.graph.cellRenderer.redraw(d,!1,this.isRendering());d=c.apply(this,arguments);null!= -d&&this.graph.model.isEdge(d.cell)&&1!=d.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(d);return d};var d=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(a,b){return d.apply(this,arguments)||null!=a.routedPoints&&null!=b.routedPoints&&!mxUtils.equalPoints(b.routedPoints,a.routedPoints)};var b=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=function(a){b.apply(this,arguments);this.graph.model.isEdge(a.cell)&&1!=a.style[mxConstants.STYLE_CURVED]&& -this.updateLineJumps(a)};mxGraphView.prototype.updateLineJumps=function(a){var b=a.absolutePoints;if(Graph.lineJumpsEnabled){var c=null!=a.routedPoints,d=null;if(null!=b&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var e=function(b,c,e){var g=new mxPoint(c,e);g.type=b;d.push(g);g=null!=a.routedPoints?a.routedPoints[d.length-1]:null;return null==g||g.type!=b||g.x!=c||g.y!=e},g=.5*this.scale,c=!1,d=[],f=0;f<b.length-1;f++){for(var h=b[f+1],k=b[f],w=[],v=b[f+2];f< -b.length-2&&mxUtils.ptSegDistSq(k.x,k.y,v.x,v.y,h.x,h.y)<1*this.scale*this.scale;)h=v,f++,v=b[f+2];for(var c=e(0,k.x,k.y)||c,z=0;z<this.validEdges.length;z++){var x=this.validEdges[z],F=x.absolutePoints;if(null!=F&&mxUtils.intersects(a,x)&&"1"!=x.style.noJump)for(x=0;x<F.length-1;x++){for(var D=F[x+1],E=F[x],v=F[x+2];x<F.length-2&&mxUtils.ptSegDistSq(E.x,E.y,v.x,v.y,D.x,D.y)<1*this.scale*this.scale;)D=v,x++,v=F[x+2];v=mxUtils.intersection(k.x,k.y,h.x,h.y,E.x,E.y,D.x,D.y);if(null!=v&&(Math.abs(v.x- -E.x)>g||Math.abs(v.y-E.y)>g)&&(Math.abs(v.x-D.x)>g||Math.abs(v.y-D.y)>g)){D=v.x-k.x;E=v.y-k.y;v={distSq:D*D+E*E,x:v.x,y:v.y};for(D=0;D<w.length;D++)if(w[D].distSq>v.distSq){w.splice(D,0,v);v=null;break}null==v||0!=w.length&&w[w.length-1].x===v.x&&w[w.length-1].y===v.y||w.push(v)}}}for(x=0;x<w.length;x++)c=e(1,w[x].x,w[x].y)||c}v=b[b.length-1];c=e(0,v.x,v.y)||c}a.routedPoints=d;return c}return!1};var f=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(a,b,c){this.routedPoints= -null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)f.apply(this,arguments);else{var d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,e=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,g=mxUtils.getValue(this.style,"jumpStyle","none"),h,k=!0,l=null,m=null;h=[];var v=null;a.begin();for(var z=0;z<this.state.routedPoints.length;z++){var x= -this.state.routedPoints[z],F=new mxPoint(x.x/this.scale,x.y/this.scale);0==z?F=b[0]:z==this.state.routedPoints.length-1&&(F=b[b.length-1]);var D=!1;if(null!=l&&1==x.type){var E=this.state.routedPoints[z+1],x=E.x/this.scale-F.x,E=E.y/this.scale-F.y,x=x*x+E*E;null==v&&(v=new mxPoint(F.x-l.x,F.y-l.y),m=Math.sqrt(v.x*v.x+v.y*v.y),v.x=v.x*e/m,v.y=v.y*e/m);x>e*e&&0<m&&(x=l.x-F.x,E=l.y-F.y,x=x*x+E*E,x>e*e&&(D=new mxPoint(F.x-v.x,F.y-v.y),x=new mxPoint(F.x+v.x,F.y+v.y),h.push(D),this.addPoints(a,h,c,d,!1, -null,k),h=0>Math.round(v.x)||0==Math.round(v.x)&&0>=Math.round(v.y)?1:-1,k=!1,"sharp"==g?(a.lineTo(D.x-v.y*h,D.y+v.x*h),a.lineTo(x.x-v.y*h,x.y+v.x*h),a.lineTo(x.x,x.y)):"arc"==g?(h*=1.3,a.curveTo(D.x-v.y*h,D.y+v.x*h,x.x-v.y*h,x.y+v.x*h,x.x,x.y)):(a.moveTo(x.x,x.y),k=!0),h=[x],D=!0))}else v=null;D||(h.push(F),l=F)}this.addPoints(a,h,c,d,!1,null,k);a.stroke()}};var e=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint=function(a,b,c,d){if(null==b||null== -a||"1"!=b.style.snapToPoint&&"1"!=a.style.snapToPoint)e.apply(this,arguments);else{b=this.getTerminalPort(a,b,d);var g=this.getNextPoint(a,c,d),f=this.graph.isOrthogonal(a),h=mxUtils.toRadians(Number(b.style[mxConstants.STYLE_ROTATION]||"0")),k=new mxPoint(b.getCenterX(),b.getCenterY());if(0!=h)var l=Math.cos(-h),m=Math.sin(-h),g=mxUtils.getRotatedPoint(g,l,m,k);l=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||0);l+=parseFloat(a.style[d?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]|| -0);g=this.getPerimeterPoint(b,g,0==h&&f,l);0!=h&&(l=Math.cos(h),m=Math.sin(h),g=mxUtils.getRotatedPoint(g,l,m,k));a.setAbsoluteTerminalPoint(this.snapToAnchorPoint(a,b,c,d,g),d)}};mxGraphView.prototype.snapToAnchorPoint=function(a,b,c,d,e){if(null!=b&&null!=a){a=this.graph.getAllConnectionConstraints(b);d=c=null;if(null!=a)for(var g=0;g<a.length;g++){var f=this.graph.getConnectionPoint(b,a[g]);if(null!=f){var h=(f.x-e.x)*(f.x-e.x)+(f.y-e.y)*(f.y-e.y);if(null==d||h<d)c=f,d=h}}null!=c&&(e=c)}return e}; -var h=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(a,b,c){var d=h.apply(this,arguments);"1"==a.getAttribute("placeholders")&&null!=c.state&&(d=c.state.view.graph.replacePlaceholders(c.state.cell,d));return d};var g=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(a){if(null!=a.style&&"undefined"!==typeof pako){var b=mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null);if(null!=b&&"stencil("==b.substring(0,8))try{var c= -b.substring(8,b.length-1),d=mxUtils.parseXml(a.view.graph.decompress(c));return new mxShape(new mxStencil(d.documentElement))}catch(n){null!=window.console&&console.log("Error in shape: "+n)}}return g.apply(this,arguments)}})();mxStencilRegistry.libraries={};mxStencilRegistry.dynamicLoading=!0;mxStencilRegistry.allowEval=!0;mxStencilRegistry.packages=[]; +d&&this.graph.model.isEdge(d.cell)&&null!=d.style&&1!=d.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(d);return d};var d=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(a,b){return d.apply(this,arguments)||null!=a.routedPoints&&null!=b.routedPoints&&!mxUtils.equalPoints(b.routedPoints,a.routedPoints)};var b=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=function(a){b.apply(this,arguments);this.graph.model.isEdge(a.cell)&& +1!=a.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(a)};mxGraphView.prototype.updateLineJumps=function(a){var b=a.absolutePoints;if(Graph.lineJumpsEnabled){var c=null!=a.routedPoints,d=null;if(null!=b&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var e=function(b,c,e){var g=new mxPoint(c,e);g.type=b;d.push(g);g=null!=a.routedPoints?a.routedPoints[d.length-1]:null;return null==g||g.type!=b||g.x!=c||g.y!=e},g=.5*this.scale,c=!1,d=[],f=0;f<b.length-1;f++){for(var h= +b[f+1],k=b[f],w=[],v=b[f+2];f<b.length-2&&mxUtils.ptSegDistSq(k.x,k.y,v.x,v.y,h.x,h.y)<1*this.scale*this.scale;)h=v,f++,v=b[f+2];for(var c=e(0,k.x,k.y)||c,z=0;z<this.validEdges.length;z++){var x=this.validEdges[z],E=x.absolutePoints;if(null!=E&&mxUtils.intersects(a,x)&&"1"!=x.style.noJump)for(x=0;x<E.length-1;x++){for(var D=E[x+1],F=E[x],v=E[x+2];x<E.length-2&&mxUtils.ptSegDistSq(F.x,F.y,v.x,v.y,D.x,D.y)<1*this.scale*this.scale;)D=v,x++,v=E[x+2];v=mxUtils.intersection(k.x,k.y,h.x,h.y,F.x,F.y,D.x, +D.y);if(null!=v&&(Math.abs(v.x-F.x)>g||Math.abs(v.y-F.y)>g)&&(Math.abs(v.x-D.x)>g||Math.abs(v.y-D.y)>g)){D=v.x-k.x;F=v.y-k.y;v={distSq:D*D+F*F,x:v.x,y:v.y};for(D=0;D<w.length;D++)if(w[D].distSq>v.distSq){w.splice(D,0,v);v=null;break}null==v||0!=w.length&&w[w.length-1].x===v.x&&w[w.length-1].y===v.y||w.push(v)}}}for(x=0;x<w.length;x++)c=e(1,w[x].x,w[x].y)||c}v=b[b.length-1];c=e(0,v.x,v.y)||c}a.routedPoints=d;return c}return!1};var f=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(a, +b,c){this.routedPoints=null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)f.apply(this,arguments);else{var d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,e=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,g=mxUtils.getValue(this.style,"jumpStyle","none"),h,k=!0,l=null,m=null;h=[];var v=null;a.begin();for(var z= +0;z<this.state.routedPoints.length;z++){var x=this.state.routedPoints[z],E=new mxPoint(x.x/this.scale,x.y/this.scale);0==z?E=b[0]:z==this.state.routedPoints.length-1&&(E=b[b.length-1]);var D=!1;if(null!=l&&1==x.type){var F=this.state.routedPoints[z+1],x=F.x/this.scale-E.x,F=F.y/this.scale-E.y,x=x*x+F*F;null==v&&(v=new mxPoint(E.x-l.x,E.y-l.y),m=Math.sqrt(v.x*v.x+v.y*v.y),v.x=v.x*e/m,v.y=v.y*e/m);x>e*e&&0<m&&(x=l.x-E.x,F=l.y-E.y,x=x*x+F*F,x>e*e&&(D=new mxPoint(E.x-v.x,E.y-v.y),x=new mxPoint(E.x+v.x, +E.y+v.y),h.push(D),this.addPoints(a,h,c,d,!1,null,k),h=0>Math.round(v.x)||0==Math.round(v.x)&&0>=Math.round(v.y)?1:-1,k=!1,"sharp"==g?(a.lineTo(D.x-v.y*h,D.y+v.x*h),a.lineTo(x.x-v.y*h,x.y+v.x*h),a.lineTo(x.x,x.y)):"arc"==g?(h*=1.3,a.curveTo(D.x-v.y*h,D.y+v.x*h,x.x-v.y*h,x.y+v.x*h,x.x,x.y)):(a.moveTo(x.x,x.y),k=!0),h=[x],D=!0))}else v=null;D||(h.push(E),l=E)}this.addPoints(a,h,c,d,!1,null,k);a.stroke()}};var e=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint= +function(a,b,c,d){if(null==b||null==a||"1"!=b.style.snapToPoint&&"1"!=a.style.snapToPoint)e.apply(this,arguments);else{b=this.getTerminalPort(a,b,d);var g=this.getNextPoint(a,c,d),f=this.graph.isOrthogonal(a),h=mxUtils.toRadians(Number(b.style[mxConstants.STYLE_ROTATION]||"0")),k=new mxPoint(b.getCenterX(),b.getCenterY());if(0!=h)var l=Math.cos(-h),m=Math.sin(-h),g=mxUtils.getRotatedPoint(g,l,m,k);l=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||0);l+=parseFloat(a.style[d?mxConstants.STYLE_SOURCE_PERIMETER_SPACING: +mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);g=this.getPerimeterPoint(b,g,0==h&&f,l);0!=h&&(l=Math.cos(h),m=Math.sin(h),g=mxUtils.getRotatedPoint(g,l,m,k));a.setAbsoluteTerminalPoint(this.snapToAnchorPoint(a,b,c,d,g),d)}};mxGraphView.prototype.snapToAnchorPoint=function(a,b,c,d,e){if(null!=b&&null!=a){a=this.graph.getAllConnectionConstraints(b);d=c=null;if(null!=a)for(var g=0;g<a.length;g++){var f=this.graph.getConnectionPoint(b,a[g]);if(null!=f){var h=(f.x-e.x)*(f.x-e.x)+(f.y-e.y)*(f.y-e.y);if(null== +d||h<d)c=f,d=h}}null!=c&&(e=c)}return e};var h=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(a,b,c){var d=h.apply(this,arguments);"1"==a.getAttribute("placeholders")&&null!=c.state&&(d=c.state.view.graph.replacePlaceholders(c.state.cell,d));return d};var g=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(a){if(null!=a.style&&"undefined"!==typeof pako){var b=mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null);if(null!= +b&&"stencil("==b.substring(0,8))try{var c=b.substring(8,b.length-1),d=mxUtils.parseXml(a.view.graph.decompress(c));return new mxShape(new mxStencil(d.documentElement))}catch(n){null!=window.console&&console.log("Error in shape: "+n)}}return g.apply(this,arguments)}})();mxStencilRegistry.libraries={};mxStencilRegistry.dynamicLoading=!0;mxStencilRegistry.allowEval=!0;mxStencilRegistry.packages=[]; mxStencilRegistry.getStencil=function(a){var c=mxStencilRegistry.stencils[a];if(null==c&&null==mxCellRenderer.defaultShapes[a]&&mxStencilRegistry.dynamicLoading){var d=mxStencilRegistry.getBasenameForStencil(a);if(null!=d){c=mxStencilRegistry.libraries[d];if(null!=c){if(null==mxStencilRegistry.packages[d]){for(var b=0;b<c.length;b++){var f=c[b];if(".xml"==f.toLowerCase().substring(f.length-4,f.length))mxStencilRegistry.loadStencilSet(f,null);else if(".js"==f.toLowerCase().substring(f.length-3,f.length))try{if(mxStencilRegistry.allowEval){var e= mxUtils.load(f);null!=e&&200<=e.getStatus()&&299>=e.getStatus()&&eval.call(window,e.getText())}}catch(h){null!=window.console&&console.log("error in getStencil:",f,h)}}mxStencilRegistry.packages[d]=1}}else d=d.replace("_-_","_"),mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+d+".xml",null);c=mxStencilRegistry.stencils[a]}}return c}; mxStencilRegistry.getBasenameForStencil=function(a){var c=null;if(null!=a&&(a=a.split("."),0<a.length&&"mxgraph"==a[0]))for(var c=a[1],d=2;d<a.length-1;d++)c+="/"+a[d];return c}; @@ -2564,13 +2566,13 @@ a.getCell=mxUtils.bind(this,function(a){var b=c.apply(this,arguments);this.error (a+="shape="+this.currentEdgeStyle.shape+";");null!=this.currentEdgeStyle.curved&&(a+="curved="+this.currentEdgeStyle.curved+";");null!=this.currentEdgeStyle.rounded&&(a+="rounded="+this.currentEdgeStyle.rounded+";");null!=this.currentEdgeStyle.comic&&(a+="comic="+this.currentEdgeStyle.comic+";");null!=this.currentEdgeStyle.jumpStyle&&(a+="jumpStyle="+this.currentEdgeStyle.jumpStyle+";");null!=this.currentEdgeStyle.jumpSize&&(a+="jumpSize="+this.currentEdgeStyle.jumpSize+";");"elbowEdgeStyle"==this.currentEdgeStyle.edgeStyle&& null!=this.currentEdgeStyle.elbow&&(a+="elbow="+this.currentEdgeStyle.elbow+";");return a=null!=this.currentEdgeStyle.html?a+("html="+this.currentEdgeStyle.html+";"):a+"html=1;"};Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var a=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement():null;null!=a&&(new mxCodec(a.ownerDocument)).decode(a,this.getStylesheet())}; Graph.prototype.importGraphModel=function(a,b,c,d){b=null!=b?b:0;c=null!=c?c:0;var e=new mxCodec(a.ownerDocument),g=new mxGraphModel;e.decode(a,g);a=[];e=g.getChildren(this.cloneCell(g.root,this.isCloneInvalidEdges()));if(null!=e){e=e.slice();this.model.beginUpdate();try{if(1!=e.length||this.isCellLocked(this.getDefaultParent()))for(g=0;g<e.length;g++)a=a.concat(this.model.getChildren(this.moveCells([e[g]],b,c,!1,this.model.getRoot())[0]));else a=this.moveCells(g.getChildren(e[0]),b,c,!1,this.getDefaultParent()); -if(d){this.isGridEnabled()&&(b=this.snap(b),c=this.snap(c));var f=this.getBoundingBoxFromGeometry(a,!0);null!=f&&this.moveCells(a,b-f.x,c-f.y)}}finally{this.model.endUpdate()}}return a};Graph.prototype.getAllConnectionConstraints=function(a,b){if(null!=a){var c=null;if(null!=a.shape){var d=a.shape.direction,e=a.shape.bounds,g=a.shape.scale,c=e.width/g,e=e.height/g;if(d==mxConstants.DIRECTION_NORTH||d==mxConstants.DIRECTION_SOUTH)var f=c,c=e,e=f;c=a.shape.getConstraints(a.style,c,e)}if(null!=c)return c; -c=mxUtils.getValue(a.style,"points",null);if(null!=c){d=[];try{for(var h=JSON.parse(c),c=0;c<h.length;c++)f=h[c],d.push(new mxConnectionConstraint(new mxPoint(f[0],f[1]),2<f.length?"0"!=f[2]:!0,null,3<f.length?f[3]:0,4<f.length?f[4]:0))}catch(ha){}return d}if(null!=a.shape)if(null!=a.shape.stencil){if(null!=a.shape.stencil)return a.shape.stencil.constraints}else if(null!=a.shape.constraints)return a.shape.constraints}return null};Graph.prototype.flipEdge=function(a){if(null!=a){var b=this.view.getState(a), -b=null!=b?b.style:this.getCellStyle(a);null!=b&&(b=mxUtils.getValue(b,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL,this.setCellStyles(mxConstants.STYLE_ELBOW,b,[a]))}};Graph.prototype.isValidRoot=function(a){for(var b=this.model.getChildCount(a),c=0,d=0;d<b;d++){var e=this.model.getChildAt(a,d);this.model.isVertex(e)&&(e=this.getCellGeometry(e),null==e||e.relative||c++)}return 0<c||this.isContainer(a)}; -Graph.prototype.isValidDropTarget=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return"1"!=mxUtils.getValue(b,"part","0")&&(this.isContainer(a)||mxGraph.prototype.isValidDropTarget.apply(this,arguments)&&"0"!=mxUtils.getValue(b,"dropTarget","1"))};Graph.prototype.createGroupCell=function(){var a=mxGraph.prototype.createGroupCell.apply(this,arguments);a.setStyle("group");return a};Graph.prototype.isExtendParentsOnAdd=function(a){var b=mxGraph.prototype.isExtendParentsOnAdd.apply(this, -arguments);if(b&&null!=a&&null!=this.layoutManager){var c=this.model.getParent(a);null!=c&&(c=this.layoutManager.getLayout(c),null!=c&&c.constructor==mxStackLayout&&(b=!1))}return b};Graph.prototype.getPreferredSizeForCell=function(a){var b=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=b&&(b.width+=10,b.height+=4,this.gridEnabled&&(b.width=this.snap(b.width),b.height=this.snap(b.height)));return b};Graph.prototype.turnShapes=function(a){var b=this.getModel(),c=[];b.beginUpdate(); -try{for(var d=0;d<a.length;d++){var e=a[d];if(b.isEdge(e)){var g=b.getTerminal(e,!0),f=b.getTerminal(e,!1);b.setTerminal(e,f,!0);b.setTerminal(e,g,!1);var h=b.getGeometry(e);if(null!=h){h=h.clone();null!=h.points&&h.points.reverse();var k=h.getTerminalPoint(!0),l=h.getTerminalPoint(!1);h.setTerminalPoint(k,!1);h.setTerminalPoint(l,!0);b.setGeometry(e,h);var m=this.view.getState(e),B=this.view.getState(g),p=this.view.getState(f);if(null!=m){var n=null!=B?this.getConnectionConstraint(m,B,!0):null,q= -null!=p?this.getConnectionConstraint(m,p,!1):null;this.setConnectionConstraint(e,g,!0,q);this.setConnectionConstraint(e,f,!1,n)}c.push(e)}}else if(b.isVertex(e)&&(h=this.getCellGeometry(e),null!=h)){h=h.clone();h.x+=h.width/2-h.height/2;h.y+=h.height/2-h.width/2;var u=h.width;h.width=h.height;h.height=u;b.setGeometry(e,h);var r=this.view.getState(e);if(null!=r){var t=r.style[mxConstants.STYLE_DIRECTION]||"east";"east"==t?t="south":"south"==t?t="west":"west"==t?t="north":"north"==t&&(t="east");this.setCellStyles(mxConstants.STYLE_DIRECTION, +if(d){this.isGridEnabled()&&(b=this.snap(b),c=this.snap(c));var f=this.getBoundingBoxFromGeometry(a,!0);null!=f&&this.moveCells(a,b-f.x,c-f.y)}}finally{this.model.endUpdate()}}return a};Graph.prototype.getAllConnectionConstraints=function(a,b){if(null!=a){var c=mxUtils.getValue(a.style,"points",null);if(null!=c){var d=[];try{for(var e=JSON.parse(c),c=0;c<e.length;c++){var g=e[c];d.push(new mxConnectionConstraint(new mxPoint(g[0],g[1]),2<g.length?"0"!=g[2]:!0,null,3<g.length?g[3]:0,4<g.length?g[4]: +0))}}catch(V){}return d}if(null!=a.shape){g=a.shape.direction;e=a.shape.bounds;c=a.shape.scale;d=e.width/c;e=e.height/c;if(g==mxConstants.DIRECTION_NORTH||g==mxConstants.DIRECTION_SOUTH)g=d,d=e,e=g;c=a.shape.getConstraints(a.style,d,e);if(null!=c)return c;if(null!=a.shape.stencil&&null!=a.shape.stencil.constraints)return a.shape.stencil.constraints;if(null!=a.shape.constraints)return a.shape.constraints}}return null};Graph.prototype.flipEdge=function(a){if(null!=a){var b=this.view.getState(a),b=null!= +b?b.style:this.getCellStyle(a);null!=b&&(b=mxUtils.getValue(b,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL,this.setCellStyles(mxConstants.STYLE_ELBOW,b,[a]))}};Graph.prototype.isValidRoot=function(a){for(var b=this.model.getChildCount(a),c=0,d=0;d<b;d++){var e=this.model.getChildAt(a,d);this.model.isVertex(e)&&(e=this.getCellGeometry(e),null==e||e.relative||c++)}return 0<c||this.isContainer(a)};Graph.prototype.isValidDropTarget= +function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return"1"!=mxUtils.getValue(b,"part","0")&&(this.isContainer(a)||mxGraph.prototype.isValidDropTarget.apply(this,arguments)&&"0"!=mxUtils.getValue(b,"dropTarget","1"))};Graph.prototype.createGroupCell=function(){var a=mxGraph.prototype.createGroupCell.apply(this,arguments);a.setStyle("group");return a};Graph.prototype.isExtendParentsOnAdd=function(a){var b=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(b&& +null!=a&&null!=this.layoutManager){var c=this.model.getParent(a);null!=c&&(c=this.layoutManager.getLayout(c),null!=c&&c.constructor==mxStackLayout&&(b=!1))}return b};Graph.prototype.getPreferredSizeForCell=function(a){var b=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=b&&(b.width+=10,b.height+=4,this.gridEnabled&&(b.width=this.snap(b.width),b.height=this.snap(b.height)));return b};Graph.prototype.turnShapes=function(a){var b=this.getModel(),c=[];b.beginUpdate();try{for(var d= +0;d<a.length;d++){var e=a[d];if(b.isEdge(e)){var g=b.getTerminal(e,!0),f=b.getTerminal(e,!1);b.setTerminal(e,f,!0);b.setTerminal(e,g,!1);var h=b.getGeometry(e);if(null!=h){h=h.clone();null!=h.points&&h.points.reverse();var k=h.getTerminalPoint(!0),l=h.getTerminalPoint(!1);h.setTerminalPoint(k,!1);h.setTerminalPoint(l,!0);b.setGeometry(e,h);var m=this.view.getState(e),B=this.view.getState(g),p=this.view.getState(f);if(null!=m){var n=null!=B?this.getConnectionConstraint(m,B,!0):null,q=null!=p?this.getConnectionConstraint(m, +p,!1):null;this.setConnectionConstraint(e,g,!0,q);this.setConnectionConstraint(e,f,!1,n)}c.push(e)}}else if(b.isVertex(e)&&(h=this.getCellGeometry(e),null!=h)){h=h.clone();h.x+=h.width/2-h.height/2;h.y+=h.height/2-h.width/2;var u=h.width;h.width=h.height;h.height=u;b.setGeometry(e,h);var r=this.view.getState(e);if(null!=r){var t=r.style[mxConstants.STYLE_DIRECTION]||"east";"east"==t?t="south":"south"==t?t="west":"west"==t?t="north":"north"==t&&(t="east");this.setCellStyles(mxConstants.STYLE_DIRECTION, t,[e])}c.push(e)}}}finally{b.endUpdate()}return c};Graph.prototype.stencilHasPlaceholders=function(a){if(null!=a&&null!=a.fgNode)for(a=a.fgNode.firstChild;null!=a;){if("text"==a.nodeName&&"1"==a.getAttribute("placeholders"))return!0;a=a.nextSibling}return!1};Graph.prototype.processChange=function(a){mxGraph.prototype.processChange.apply(this,arguments);if(a instanceof mxValueChange&&null!=a.cell&&null!=a.cell.value&&"object"==typeof a.cell.value){var b=this.model.getDescendants(a.cell);if(0<b.length)for(var c= 0;c<b.length;c++){var d=this.view.getState(b[c]);null!=d&&null!=d.shape&&null!=d.shape.stencil&&this.stencilHasPlaceholders(d.shape.stencil)?this.removeStateForCell(b[c]):this.isReplacePlaceholders(b[c])&&this.view.invalidate(b[c],!1,!1)}}};Graph.prototype.replaceElement=function(a,b){for(var c=a.ownerDocument.createElement(null!=b?b:"span"),d=Array.prototype.slice.call(a.attributes);attr=d.pop();)c.setAttribute(attr.nodeName,attr.nodeValue);c.innerHTML=a.innerHTML;a.parentNode.replaceChild(c,a)}; Graph.prototype.updateLabelElements=function(a,b,c){a=null!=a?a:this.getSelectionCells();for(var d=document.createElement("div"),e=0;e<a.length;e++)if(this.isHtmlLabel(a[e])){var g=this.convertValueToString(a[e]);if(null!=g&&0<g.length){d.innerHTML=g;for(var f=d.getElementsByTagName(null!=c?c:"*"),h=0;h<f.length;h++)b(f[h]);d.innerHTML!=g&&this.cellLabelChanged(a[e],d.innerHTML)}}};Graph.prototype.cellLabelChanged=function(a,b,c){b=this.zapGremlins(b);this.model.beginUpdate();try{if(null!=a.value&& @@ -2591,55 +2593,55 @@ b.getSource();null!=c&&"a"!=c.nodeName.toLowerCase();)c=c.parentNode;null!=c?thi e&&Math.abs(this.scrollLeft-f.container.scrollLeft)<g&&Math.abs(this.scrollTop-f.container.scrollTop)<g&&(null==d.sourceState||!d.isSource(d.sourceState.control))&&((mxEvent.isLeftMouseButton(h)||mxEvent.isMiddleMouseButton(h))&&!mxEvent.isPopupTrigger(h)||mxEvent.isTouchEvent(h))&&(null!=this.currentLink?(e=f.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&e||null==b||b(h,this.currentLink),mxEvent.isConsumed(h)||(h=mxEvent.isMiddleMouseButton(h)?"_blank":e?f.linkTarget:"_top", f.openLink(this.currentLink,h),d.consume())):null!=c&&!d.isConsumed()&&Math.abs(this.scrollLeft-f.container.scrollLeft)<g&&Math.abs(this.scrollTop-f.container.scrollTop)<g&&Math.abs(this.startX-d.getGraphX())<g&&Math.abs(this.startY-d.getGraphY())<g&&c(d.getEvent()));this.clear()},activate:function(a){this.currentLink=f.getAbsoluteUrl(f.getLinkForCell(a.cell));null!=this.currentLink&&(f.container.style.cursor="pointer",null!=this.highlight&&this.highlight.highlight(a))},clear:function(){null!=f.container&& (f.container.style.cursor=e);this.currentLink=this.currentState=null;null!=this.highlight&&this.highlight.hide();null!=f.tooltipHandler&&f.tooltipHandler.hide()}};f.click=function(a){};f.addMouseListener(h);mxEvent.addListener(document,"mouseleave",function(a){h.clear()})};Graph.prototype.duplicateCells=function(a,b){a=null!=a?a:this.getSelectionCells();b=null!=b?b:!0;a=this.model.getTopmostCells(a);var c=this.getModel(),d=this.gridSize,e=[];c.beginUpdate();try{for(var g=this.cloneCells(a,!1,null, -!0),f=0;f<a.length;f++){var h=c.getParent(a[f]),k=this.moveCells([g[f]],d,d,!1)[0];e.push(k);if(b)c.add(h,g[f]);else{var l=h.getIndex(a[f]);c.add(h,g[f],l+1)}}}finally{c.endUpdate()}return e};Graph.prototype.insertImage=function(a,b,c){if(null!=a){for(var d=this.cellEditor.textarea.getElementsByTagName("img"),e=[],g=0;g<d.length;g++)e.push(d[g]);document.execCommand("insertimage",!1,a);a=this.cellEditor.textarea.getElementsByTagName("img");if(a.length==e.length+1)for(g=a.length-1;0<=g;g--)if(0==g|| -a[g]!=e[g-1]){a[g].setAttribute("width",b);a[g].setAttribute("height",c);break}}};Graph.prototype.insertLink=function(a){if(0==a.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var b=this.cellEditor.textarea.getElementsByTagName("a"),c=[],d=0;d<b.length;d++)c.push(b[d]);document.execCommand("createlink",!1,mxUtils.trim(a));b=this.cellEditor.textarea.getElementsByTagName("a");if(b.length==c.length+1)for(d=b.length-1;0<=d;d--)if(b[d]!=c[d-1]){for(b=b[d].getElementsByTagName("a");0< -b.length;){for(c=b[0].parentNode;null!=b[0].firstChild;)c.insertBefore(b[0].firstChild,b[0]);c.removeChild(b[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(a))};Graph.prototype.isCellResizable=function(a){var b=mxGraph.prototype.isCellResizable.apply(this,arguments),c=this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);return b||"0"!=mxUtils.getValue(c,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==c[mxConstants.STYLE_WHITE_SPACE]};Graph.prototype.distributeCells=function(a, -b){null==b&&(b=this.getSelectionCells());if(null!=b&&1<b.length){for(var c=[],d=null,e=null,g=0;g<b.length;g++)if(this.getModel().isVertex(b[g])){var f=this.view.getState(b[g]);if(null!=f){var h=a?f.getCenterX():f.getCenterY(),d=null!=d?Math.max(d,h):h,e=null!=e?Math.min(e,h):h;c.push(f)}}if(2<c.length){c.sort(function(b,c){return a?b.x-c.x:b.y-c.y});f=this.view.translate;h=this.view.scale;e=e/h-(a?f.x:f.y);d=d/h-(a?f.x:f.y);this.getModel().beginUpdate();try{for(var k=(d-e)/(c.length-1),d=e,g=1;g< -c.length-1;g++){var l=this.view.getState(this.model.getParent(c[g].cell)),m=this.getCellGeometry(c[g].cell),d=d+k;null!=m&&null!=l&&(m=m.clone(),a?m.x=Math.round(d-m.width/2)-l.origin.x:m.y=Math.round(d-m.height/2)-l.origin.y,this.getModel().setGeometry(c[g].cell,m))}}finally{this.getModel().endUpdate()}}}return b};Graph.prototype.isCloneEvent=function(a){return mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxEvent.isControlDown(a)};Graph.prototype.encodeCells=function(a){for(var b=this.cloneCells(a),c= -new mxDictionary,d=0;d<a.length;d++)c.put(a[d],!0);for(d=0;d<b.length;d++){var e=this.view.getState(a[d]);if(null!=e){var g=this.getCellGeometry(b[d]);null==g||!g.relative||this.model.isEdge(a[d])||c.get(this.model.getParent(a[d]))||(g.relative=!1,g.x=e.x/e.view.scale-e.view.translate.x,g.y=e.y/e.view.scale-e.view.translate.y)}}c=new mxCodec;e=new mxGraphModel;g=e.getChildAt(e.getRoot(),0);for(d=0;d<a.length;d++)e.add(g,b[d]);return c.encode(e)};Graph.prototype.createSvgImageExport=function(){var a= -new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,b){return this.getLinkForCell(a.cell)});return a};Graph.prototype.getSvg=function(a,b,c,d,e,g,f,h,k,l){var m=this.useCssTransforms;m&&(this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange());try{b=null!=b?b:1;c=null!=c?c:0;e=null!=e?e:!0;g=null!=g?g:!0;f=null!=f?f:!0;var A=g||d?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells());if(null==A)throw Error(mxResources.get("drawingEmpty"));var p=this.view.scale, -n=mxUtils.createXmlDocument(),B=null!=n.createElementNS?n.createElementNS(mxConstants.NS_SVG,"svg"):n.createElement("svg");null!=a&&(null!=B.style?B.style.backgroundColor=a:B.setAttribute("style","background-color:"+a));null==n.createElementNS?(B.setAttribute("xmlns",mxConstants.NS_SVG),B.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):B.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=b/p;var q=Math.max(1,Math.ceil(A.width*a)+2*c)+(l?5:0),u=Math.max(1,Math.ceil(A.height* -a)+2*c)+(l?5:0);B.setAttribute("version","1.1");B.setAttribute("width",q+"px");B.setAttribute("height",u+"px");B.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+q+" "+u);n.appendChild(B);var H=this.createSvgCanvas(B);H.foOffset=e?-.5:0;H.textOffset=e?-.5:0;H.imageOffset=e?-.5:0;H.translate(Math.floor((c/b-A.x)/p),Math.floor((c/b-A.y)/p));var r=document.createElement("textarea"),t=H.createAlternateContent;H.createAlternateContent=function(a,b,c,d,e,g,f,h,k,l,m,A,p){var B=this.state;if(null!=this.foAltText&& -(0==d||0!=B.fontSize&&g.length<5*d/B.fontSize)){var n=this.createElement("text");n.setAttribute("x",Math.round(d/2));n.setAttribute("y",Math.round((e+B.fontSize)/2));n.setAttribute("fill",B.fontColor||"black");n.setAttribute("text-anchor","middle");n.setAttribute("font-size",Math.round(B.fontSize)+"px");n.setAttribute("font-family",B.fontFamily);(B.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&n.setAttribute("font-weight","bold");(B.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&& -n.setAttribute("font-style","italic");(B.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&n.setAttribute("text-decoration","underline");try{return r.innerHTML=g,n.textContent=r.value,n}catch(qa){return t.apply(this,arguments)}}else return t.apply(this,arguments)};var w=this.backgroundImage;if(null!=w){b=p/b;var v=this.view.translate,x=new mxRectangle(v.x*b,v.y*b,w.width*b,w.height*b);mxUtils.intersects(A,x)&&H.image(v.x,v.y,w.width,w.height,w.src,!0)}H.scale(a);H.textEnabled=f;h= -null!=h?h:this.createSvgImageExport();var T=h.drawCellState;h.drawCellState=function(a,b){for(var c=a.view.graph,d=c.isCellSelected(a.cell),e=c.model.getParent(a.cell);!g&&!d&&null!=e;)d=c.isCellSelected(e),e=c.model.getParent(e);(g||d)&&T.apply(this,arguments)};h.drawState(this.getView().getState(this.model.root),H);this.updateSvgLinks(B,k,!0);return B}finally{m&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.updateSvgLinks=function(a,b,c){a=a.getElementsByTagName("a"); -for(var d=0;d<a.length;d++){var e=a[d].getAttribute("href");null==e&&(e=a[d].getAttribute("xlink:href"));null!=e&&(null!=b&&/^https?:\/\//.test(e)?a[d].setAttribute("target",b):c&&this.isCustomLink(e)&&a[d].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(a){return new mxSvgCanvas2D(a)};Graph.prototype.getSelectedElement=function(){var a=null;if(window.getSelection){var b=window.getSelection();b.getRangeAt&&b.rangeCount&&(a=b.getRangeAt(0).commonAncestorContainer)}else document.selection&& -(a=document.selection.createRange().parentElement());return a};Graph.prototype.getParentByName=function(a,b,c){for(;null!=a&&a.nodeName!=b;){if(a==c)return null;a=a.parentNode}return a};Graph.prototype.selectNode=function(a){var b=null;if(window.getSelection){if(b=window.getSelection(),b.getRangeAt&&b.rangeCount){var c=document.createRange();c.selectNode(a);b.removeAllRanges();b.addRange(c)}}else(b=document.selection)&&"Control"!=b.type&&(a=b.createRange(),a.collapse(!0),c=b.createRange(),c.setEndPoint("StartToStart", -a),c.select())};Graph.prototype.insertRow=function(a,b){for(var c=a.tBodies[0],d=c.rows[0].cells,e=0,g=0;g<d.length;g++)var f=d[g].getAttribute("colspan"),e=e+(null!=f?parseInt(f):1);c=c.insertRow(b);for(g=0;g<e;g++)mxUtils.br(c.insertCell(-1));return c.cells[0]};Graph.prototype.deleteRow=function(a,b){a.tBodies[0].deleteRow(b)};Graph.prototype.insertColumn=function(a,b){var c=a.tHead;if(null!=c)for(var d=0;d<c.rows.length;d++){var e=document.createElement("th");c.rows[d].appendChild(e);mxUtils.br(e)}c= -a.tBodies[0];for(d=0;d<c.rows.length;d++)e=c.rows[d].insertCell(b),mxUtils.br(e);return c.rows[0].cells[0<=b?b:c.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(a,b){if(0<=b)for(var c=a.tBodies[0].rows,d=0;d<c.length;d++)c[d].cells.length>b&&c[d].deleteCell(b)};Graph.prototype.pasteHtmlAtCaret=function(a){var b;if(window.getSelection){if(b=window.getSelection(),b.getRangeAt&&b.rangeCount){b=b.getRangeAt(0);b.deleteContents();var c=document.createElement("div");c.innerHTML=a;a=document.createDocumentFragment(); -for(var d;d=c.firstChild;)lastNode=a.appendChild(d);b.insertNode(a)}}else(b=document.selection)&&"Control"!=b.type&&b.createRange().pasteHTML(a)};Graph.prototype.createLinkForHint=function(a,b){function c(a,b){a.length>b&&(a=a.substring(0,Math.round(b/2))+"..."+a.substring(a.length-Math.round(b/4)));return a}a=null!=a?a:"javascript:void(0);";if(null==b||0==b.length)b=this.isCustomLink(a)?this.getLinkTitle(a):a;var d=document.createElement("a");d.setAttribute("rel",this.linkRelation);d.setAttribute("href", -this.getAbsoluteUrl(a));d.setAttribute("title",c(this.isCustomLink(a)?this.getLinkTitle(a):a,80));null!=this.linkTarget&&d.setAttribute("target",this.linkTarget);mxUtils.write(d,c(b,40));this.isCustomLink(a)&&mxEvent.addListener(d,"click",mxUtils.bind(this,function(b){this.customLinkClicked(a);mxEvent.consume(b)}));return d};Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING, -function(a,b){this.popupMenuHandler.hideMenu()});var a=this.updateMouseEvent;this.updateMouseEvent=function(b){b=a.apply(this,arguments);if(mxEvent.isTouchEvent(b.getEvent())&&null==b.getState()){var c=this.getCellAt(b.graphX,b.graphY);null!=c&&this.isSwimlane(c)&&this.hitsSwimlaneContent(c,b.graphX,b.graphY)||(b.state=this.view.getState(c),null!=b.state&&null!=b.state.shape&&(this.container.style.cursor=b.state.shape.node.style.cursor))}null==b.getState()&&this.isEnabled()&&(this.container.style.cursor= -"default");return b};var b=!1,c=!1,d=!1,e=this.fireMouseEvent;this.fireMouseEvent=function(a,g,f){a==mxEvent.MOUSE_DOWN&&(g=this.updateMouseEvent(g),b=this.isCellSelected(g.getCell()),c=this.isSelectionEmpty(),d=this.popupMenuHandler.isMenuShowing());e.apply(this,arguments)};this.popupMenuHandler.mouseUp=mxUtils.bind(this,function(a,e){this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==e.getState()||!e.isSource(e.getState().control))&&(this.popupMenuHandler.popupTrigger|| -!d&&!mxEvent.isMouseEvent(e.getEvent())&&(c&&null==e.getCell()&&this.isSelectionEmpty()||b&&this.isCellSelected(e.getCell())));mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,arguments)})};mxCellEditor.prototype.isContentEditing=function(){var a=this.graph.view.getState(this.editingCell);return null!=a&&1==a.style.html};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var a=window.getSelection();if(a.getRangeAt&&a.rangeCount){for(var b=[],c=0,d=a.rangeCount;c< -d;++c)b.push(a.getRangeAt(c));return b}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(a){try{if(a)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var b=0,c=a.length;b<c;++b)sel.addRange(a[b])}else document.selection&&a.select&&a.select()}catch(T){}};var f=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=function(a){null!=a.text&& -(a.text.replaceLinefeeds="0"!=mxUtils.getValue(a.style,"nl2Br","1"));f.apply(this,arguments)};var e=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(a,b){this.isKeepFocusEvent(a)||!mxEvent.isAltDown(a.getEvent())?e.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(a){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=!1;var h=mxCellEditor.prototype.startEditing; -mxCellEditor.prototype.startEditing=function(a,b){h.apply(this,arguments);var c=this.graph.view.getState(a);this.textarea.className=null!=c&&1==c.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(a);var c=this.graph.getModel().getParent(a),d=this.graph.getCellGeometry(a);this.graph.getModel().isEdge(c)&&null!=d&&d.relative||this.graph.getModel().isEdge(a)?mxClient.IS_QUIRKS?this.textarea.style.border= -"gray dotted 1px":this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":"":mxClient.IS_QUIRKS&&(this.textarea.style.outline="none",this.textarea.style.border="")};var g=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(a){function b(a,c){c.originalNode=a;a=a.firstChild;for(var d=c.firstChild;null!=a&&null!=d;)b(a,d),a=a.nextSibling,d=d.nextSibling;return c}function c(a,b){if(null!=a)if(b.originalNode!= -a)d(a);else for(a=a.firstChild,b=b.firstChild;null!=a;){var e=a.nextSibling;null==b?d(a):(c(a,b),b=b.nextSibling);a=e}}function d(a){for(var b=a.firstChild;null!=b;){var c=b.nextSibling;d(b);b=c}1==a.nodeType&&("BR"===a.nodeName||null!=a.firstChild)||3==a.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(a)).length?(3==a.nodeType&&mxUtils.setTextContent(a,mxUtils.getTextContent(a).replace(/\n|\r/g,"")),1==a.nodeType&&(a.removeAttribute("style"),a.removeAttribute("class"),a.removeAttribute("width"), -a.removeAttribute("cellpadding"),a.removeAttribute("cellspacing"),a.removeAttribute("border"))):a.parentNode.removeChild(a)}g.apply(this,arguments);mxClient.IS_QUIRKS||7===document.documentMode||8===document.documentMode||mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(a){var d=b(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){c(this.textarea,d)}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var a=this.graph.view.getState(this.editingCell), -b=null!=a&&"0"!=mxUtils.getValue(a.style,"nl2Br","1"),c=this.saveSelection();if(this.codeViewMode){h=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<h.length&&"\n"==h.charAt(h.length-1)&&(h=h.substring(0,h.length-1));h=this.graph.sanitizeHtml(b?h.replace(/\n/g,"<br/>"):h,!0);this.textarea.className="mxCellEditor geContentEditable";var d=mxUtils.getValue(a.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),b=mxUtils.getValue(a.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY), -e=mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),g=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,f=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,a=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(d*mxConstants.LINE_HEIGHT)+ -"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(d)+"px";this.textarea.style.textDecoration=a?"underline":"";this.textarea.style.fontWeight=g?"bold":"normal";this.textarea.style.fontStyle=f?"italic":"";this.textarea.style.fontFamily=b;this.textarea.style.textAlign=e;this.textarea.style.padding="0px";this.textarea.innerHTML!=h&&(this.textarea.innerHTML=h,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length)); -this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerHTML="");var h=mxUtils.htmlEntities(this.textarea.innerHTML);mxClient.IS_QUIRKS||8==document.documentMode||(h=mxUtils.replaceTrailingNewlines(h,"<div><br></div>"));h=this.graph.sanitizeHtml(b?h.replace(/\n/g,"").replace(/<br\s*.?>/g,"<br>"):h,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var d=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight= -mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(d*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(d)+"px";this.textarea.style.textDecoration="";this.textarea.style.fontWeight="normal";this.textarea.style.fontStyle="";this.textarea.style.fontFamily=mxConstants.DEFAULT_FONTFAMILY;this.textarea.style.textAlign="left";this.textarea.style.padding="2px";this.textarea.innerHTML!=h&&(this.textarea.innerHTML=h);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&& -this.restoreSelection(this.switchSelectionState);this.switchSelectionState=c;this.resize()};var k=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(a,b){if(null!=this.textarea)if(a=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=a){var c=a.view.scale;this.bounds=mxRectangle.fromRectangle(a);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=160*c;this.bounds.height=60*c;var d=null!=a.text?a.text.margin:null;null==d&&(d=mxUtils.getAlignmentAsPoint(mxUtils.getValue(a.style, -mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(a.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=d.x*this.bounds.width;this.bounds.y+=d.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-4)/c)+"px";this.textarea.style.height=Math.round((this.bounds.height-4)/c)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/c)+(this.textarea.offsetHeight- -this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*c);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/c)+(this.textarea.offsetWidth-this.textarea.clientWidth)+"px",this.bounds.width=parseInt(this.textarea.style.width)*c);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxClient.IS_VML?this.textarea.style.zoom=c:mxUtils.setPrefixedStyle(this.textarea.style, -"transform","scale("+c+","+c+")")}else this.textarea.style.height="",this.textarea.style.overflow="",k.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(a,b){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetInitialValue.apply(this,arguments);var c=this.graph.getEditingValue(a.cell,b);"1"==mxUtils.getValue(a.style,"nl2Br","1")&&(c=c.replace(/\n/g,"<br/>"));return c=this.graph.sanitizeHtml(c,!0)}; -mxCellEditorGetCurrentValue=mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(a){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var b=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return b="1"==mxUtils.getValue(a.style,"nl2Br","1")?b.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):b.replace(/\r\n/g,"").replace(/\n/g,"")};var l=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(a){this.codeViewMode&& -this.toggleViewMode();l.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(B){}};var m=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(a,b){this.graph.getModel().beginUpdate();try{if(m.apply(this,arguments),this.graph.isCellDeletable(a.cell)&&0==this.graph.model.getChildCount(a.cell)){var c=mxUtils.getValue(a.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),d=mxUtils.getValue(a.style, -mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);""==b&&c==mxConstants.NONE&&d==mxConstants.NONE&&this.graph.removeCells([a.cell],!1)}}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=function(a){var b=null;if(this.graph.getModel().isEdge(a.cell)||this.graph.getModel().isEdge(this.graph.getModel().getParent(a.cell)))b=mxUtils.getValue(a.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null),b==mxConstants.NONE&&(b=null);return b};mxCellEditor.prototype.getMinimumSize= -function(a){var b=this.graph.getView().scale;return new mxRectangle(0,0,null==a.text?30:a.text.size*b+20,30)};var p=mxGraphHandler.prototype.moveCells;mxGraphHandler.prototype.moveCells=function(a,b,c,d,e,g){mxEvent.isAltDown(g)&&(e=null);p.apply(this,arguments)};mxGraphHandler.prototype.updateHint=function(b){if(null!=this.shape){null==this.hint&&(this.hint=a(),this.graph.container.appendChild(this.hint));var c=this.graph.view.translate,d=this.graph.view.scale;b=this.roundLength((this.bounds.x+this.currentDx)/ -d-c.x);c=this.roundLength((this.bounds.y+this.currentDy)/d-c.y);this.hint.innerHTML=b+", "+c;this.hint.style.left=this.shape.bounds.x+Math.round((this.shape.bounds.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=this.shape.bounds.y+this.shape.bounds.height+12+"px"}};mxGraphHandler.prototype.removeHint=function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint),this.hint=null)};mxVertexHandler.prototype.isRecursiveResize=function(a,b){return!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&& -!mxEvent.isControlDown(b.getEvent())&&!this.graph.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null)};mxVertexHandler.prototype.isCenteredEvent=function(a,b){return!(!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&&!this.graph.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null))&&mxEvent.isControlDown(b.getEvent())||mxEvent.isMetaDown(b.getEvent())}; -var n=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var a=new mxPoint(0,0),b=this.tolerance;this.graph.cellEditor.getEditingCell()==this.state.cell&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(b/=2,a.x=this.sizers[0].bounds.width+b,a.y=this.sizers[0].bounds.height+b):a=n.apply(this,arguments);return a};mxVertexHandler.prototype.updateHint=function(b){this.index!=mxEvent.LABEL_HANDLE&&(null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint)), -this.index==mxEvent.ROTATION_HANDLE?this.hint.innerHTML=this.currentAlpha+"°":(b=this.state.view.scale,this.hint.innerHTML=this.roundLength(this.bounds.width/b)+" x "+this.roundLength(this.bounds.height/b)),b=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||"0"),null==b&&(b=this.bounds),this.hint.style.left=b.x+Math.round((b.width-this.hint.clientWidth)/2)+"px",this.hint.style.top=b.y+b.height+12+"px",null!=this.linkHint&& -(this.linkHint.style.display="none"))};mxVertexHandler.prototype.removeHint=function(){mxGraphHandler.prototype.removeHint.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(b,c){null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));var d=this.graph.view.translate,e=this.graph.view.scale,g=this.roundLength(c.x/e-d.x),d=this.roundLength(c.y/e-d.y);this.hint.innerHTML=g+", "+d;this.hint.style.visibility= -"visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(g=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*g.x)+"%, "+Math.round(100*g.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility="hidden");this.hint.style.left=Math.round(b.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(b.getGraphY(),c.y)+this.state.view.graph.gridSize+"px";null!=this.linkHint&& -(this.linkHint.style.display="none")};mxEdgeHandler.prototype.removeHint=mxVertexHandler.prototype.removeHint;HoverIcons.prototype.mainHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/>'):new mxImage(IMAGE_PATH+"/handle-main.png",17,17);HoverIcons.prototype.secondaryHandle=mxClient.IS_SVG?Graph.createSvgImage(16,16,'<path d="m 8 3 L 13 8 L 8 13 L 3 8 z" stroke="#fff" fill="#fca000"/>'):new mxImage(IMAGE_PATH+ -"/handle-secondary.png",17,17);HoverIcons.prototype.fixedHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/><path d="m 7 7 L 11 11 M 7 11 L 11 7" stroke="#fff"/>'):new mxImage(IMAGE_PATH+"/handle-fixed.png",17,17);HoverIcons.prototype.terminalHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/><circle cx="9" cy="9" r="2" stroke="#fff" fill="transparent"/>'): -new mxImage(IMAGE_PATH+"/handle-terminal.png",17,17);HoverIcons.prototype.rotationHandle=new mxImage(mxClient.IS_SVG?"data:image/png;base64,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": +!0),f=0;f<a.length;f++){var h=c.getParent(a[f]),k=this.moveCells([g[f]],d,d,!1)[0];e.push(k);if(b)c.add(h,g[f]);else{var l=h.getIndex(a[f]);c.add(h,g[f],l+1)}}}finally{c.endUpdate()}return e};Graph.prototype.insertImage=function(a,b,c){if(null!=a&&null!=this.cellEditor.textarea){for(var d=this.cellEditor.textarea.getElementsByTagName("img"),e=[],g=0;g<d.length;g++)e.push(d[g]);document.execCommand("insertimage",!1,a);a=this.cellEditor.textarea.getElementsByTagName("img");if(a.length==e.length+1)for(g= +a.length-1;0<=g;g--)if(0==g||a[g]!=e[g-1]){a[g].setAttribute("width",b);a[g].setAttribute("height",c);break}}};Graph.prototype.insertLink=function(a){if(null!=this.cellEditor.textarea)if(0==a.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var b=this.cellEditor.textarea.getElementsByTagName("a"),c=[],d=0;d<b.length;d++)c.push(b[d]);document.execCommand("createlink",!1,mxUtils.trim(a));b=this.cellEditor.textarea.getElementsByTagName("a");if(b.length==c.length+1)for(d=b.length- +1;0<=d;d--)if(b[d]!=c[d-1]){for(b=b[d].getElementsByTagName("a");0<b.length;){for(c=b[0].parentNode;null!=b[0].firstChild;)c.insertBefore(b[0].firstChild,b[0]);c.removeChild(b[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(a))};Graph.prototype.isCellResizable=function(a){var b=mxGraph.prototype.isCellResizable.apply(this,arguments),c=this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);return b||"0"!=mxUtils.getValue(c,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==c[mxConstants.STYLE_WHITE_SPACE]}; +Graph.prototype.distributeCells=function(a,b){null==b&&(b=this.getSelectionCells());if(null!=b&&1<b.length){for(var c=[],d=null,e=null,g=0;g<b.length;g++)if(this.getModel().isVertex(b[g])){var f=this.view.getState(b[g]);if(null!=f){var h=a?f.getCenterX():f.getCenterY(),d=null!=d?Math.max(d,h):h,e=null!=e?Math.min(e,h):h;c.push(f)}}if(2<c.length){c.sort(function(b,c){return a?b.x-c.x:b.y-c.y});f=this.view.translate;h=this.view.scale;e=e/h-(a?f.x:f.y);d=d/h-(a?f.x:f.y);this.getModel().beginUpdate(); +try{for(var k=(d-e)/(c.length-1),d=e,g=1;g<c.length-1;g++){var l=this.view.getState(this.model.getParent(c[g].cell)),m=this.getCellGeometry(c[g].cell),d=d+k;null!=m&&null!=l&&(m=m.clone(),a?m.x=Math.round(d-m.width/2)-l.origin.x:m.y=Math.round(d-m.height/2)-l.origin.y,this.getModel().setGeometry(c[g].cell,m))}}finally{this.getModel().endUpdate()}}}return b};Graph.prototype.isCloneEvent=function(a){return mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxEvent.isControlDown(a)};Graph.prototype.encodeCells= +function(a){for(var b=this.cloneCells(a),c=new mxDictionary,d=0;d<a.length;d++)c.put(a[d],!0);for(d=0;d<b.length;d++){var e=this.view.getState(a[d]);if(null!=e){var g=this.getCellGeometry(b[d]);null==g||!g.relative||this.model.isEdge(a[d])||c.get(this.model.getParent(a[d]))||(g.relative=!1,g.x=e.x/e.view.scale-e.view.translate.x,g.y=e.y/e.view.scale-e.view.translate.y)}}c=new mxCodec;e=new mxGraphModel;g=e.getChildAt(e.getRoot(),0);for(d=0;d<a.length;d++)e.add(g,b[d]);return c.encode(e)};Graph.prototype.createSvgImageExport= +function(){var a=new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,b){return this.getLinkForCell(a.cell)});return a};Graph.prototype.getSvg=function(a,b,c,d,e,g,f,h,k,l){var m=this.useCssTransforms;m&&(this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange());try{b=null!=b?b:1;c=null!=c?c:0;e=null!=e?e:!0;g=null!=g?g:!0;f=null!=f?f:!0;var A=g||d?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells());if(null==A)throw Error(mxResources.get("drawingEmpty")); +var p=this.view.scale,n=mxUtils.createXmlDocument(),B=null!=n.createElementNS?n.createElementNS(mxConstants.NS_SVG,"svg"):n.createElement("svg");null!=a&&(null!=B.style?B.style.backgroundColor=a:B.setAttribute("style","background-color:"+a));null==n.createElementNS?(B.setAttribute("xmlns",mxConstants.NS_SVG),B.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):B.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=b/p;var q=Math.max(1,Math.ceil(A.width*a)+2*c)+(l?5: +0),u=Math.max(1,Math.ceil(A.height*a)+2*c)+(l?5:0);B.setAttribute("version","1.1");B.setAttribute("width",q+"px");B.setAttribute("height",u+"px");B.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+q+" "+u);n.appendChild(B);var I=null!=n.createElementNS?n.createElementNS(mxConstants.NS_SVG,"g"):n.createElement("g");B.appendChild(I);var r=this.createSvgCanvas(I);r.foOffset=e?-.5:0;r.textOffset=e?-.5:0;r.imageOffset=e?-.5:0;r.translate(Math.floor((c/b-A.x)/p),Math.floor((c/b-A.y)/p));var t=document.createElement("textarea"), +w=r.createAlternateContent;r.createAlternateContent=function(a,b,c,d,e,g,f,h,k,l,m,A,p){var B=this.state;if(null!=this.foAltText&&(0==d||0!=B.fontSize&&g.length<5*d/B.fontSize)){var n=this.createElement("text");n.setAttribute("x",Math.round(d/2));n.setAttribute("y",Math.round((e+B.fontSize)/2));n.setAttribute("fill",B.fontColor||"black");n.setAttribute("text-anchor","middle");n.setAttribute("font-size",Math.round(B.fontSize)+"px");n.setAttribute("font-family",B.fontFamily);(B.fontStyle&mxConstants.FONT_BOLD)== +mxConstants.FONT_BOLD&&n.setAttribute("font-weight","bold");(B.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&n.setAttribute("font-style","italic");(B.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&n.setAttribute("text-decoration","underline");try{return t.innerHTML=g,n.textContent=t.value,n}catch(ha){return w.apply(this,arguments)}}else return w.apply(this,arguments)};var v=this.backgroundImage;if(null!=v){b=p/b;var x=this.view.translate,T=new mxRectangle(x.x*b, +x.y*b,v.width*b,v.height*b);mxUtils.intersects(A,T)&&r.image(x.x,x.y,v.width,v.height,v.src,!0)}r.scale(a);r.textEnabled=f;h=null!=h?h:this.createSvgImageExport();var E=h.drawCellState;h.drawCellState=function(a,b){for(var c=a.view.graph,d=c.isCellSelected(a.cell),e=c.model.getParent(a.cell);!g&&!d&&null!=e;)d=c.isCellSelected(e),e=c.model.getParent(e);(g||d)&&E.apply(this,arguments)};h.drawState(this.getView().getState(this.model.root),r);this.updateSvgLinks(B,k,!0);return B}finally{m&&(this.useCssTransforms= +!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.updateSvgLinks=function(a,b,c){a=a.getElementsByTagName("a");for(var d=0;d<a.length;d++){var e=a[d].getAttribute("href");null==e&&(e=a[d].getAttribute("xlink:href"));null!=e&&(null!=b&&/^https?:\/\//.test(e)?a[d].setAttribute("target",b):c&&this.isCustomLink(e)&&a[d].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(a){return new mxSvgCanvas2D(a)};Graph.prototype.getSelectedElement=function(){var a= +null;if(window.getSelection){var b=window.getSelection();b.getRangeAt&&b.rangeCount&&(a=b.getRangeAt(0).commonAncestorContainer)}else document.selection&&(a=document.selection.createRange().parentElement());return a};Graph.prototype.getParentByName=function(a,b,c){for(;null!=a&&a.nodeName!=b;){if(a==c)return null;a=a.parentNode}return a};Graph.prototype.selectNode=function(a){var b=null;if(window.getSelection){if(b=window.getSelection(),b.getRangeAt&&b.rangeCount){var c=document.createRange();c.selectNode(a); +b.removeAllRanges();b.addRange(c)}}else(b=document.selection)&&"Control"!=b.type&&(a=b.createRange(),a.collapse(!0),c=b.createRange(),c.setEndPoint("StartToStart",a),c.select())};Graph.prototype.insertRow=function(a,b){for(var c=a.tBodies[0],d=c.rows[0].cells,e=0,g=0;g<d.length;g++)var f=d[g].getAttribute("colspan"),e=e+(null!=f?parseInt(f):1);c=c.insertRow(b);for(g=0;g<e;g++)mxUtils.br(c.insertCell(-1));return c.cells[0]};Graph.prototype.deleteRow=function(a,b){a.tBodies[0].deleteRow(b)};Graph.prototype.insertColumn= +function(a,b){var c=a.tHead;if(null!=c)for(var d=0;d<c.rows.length;d++){var e=document.createElement("th");c.rows[d].appendChild(e);mxUtils.br(e)}c=a.tBodies[0];for(d=0;d<c.rows.length;d++)e=c.rows[d].insertCell(b),mxUtils.br(e);return c.rows[0].cells[0<=b?b:c.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(a,b){if(0<=b)for(var c=a.tBodies[0].rows,d=0;d<c.length;d++)c[d].cells.length>b&&c[d].deleteCell(b)};Graph.prototype.pasteHtmlAtCaret=function(a){var b;if(window.getSelection){if(b= +window.getSelection(),b.getRangeAt&&b.rangeCount){b=b.getRangeAt(0);b.deleteContents();var c=document.createElement("div");c.innerHTML=a;a=document.createDocumentFragment();for(var d;d=c.firstChild;)lastNode=a.appendChild(d);b.insertNode(a)}}else(b=document.selection)&&"Control"!=b.type&&b.createRange().pasteHTML(a)};Graph.prototype.createLinkForHint=function(a,b){function c(a,b){a.length>b&&(a=a.substring(0,Math.round(b/2))+"..."+a.substring(a.length-Math.round(b/4)));return a}a=null!=a?a:"javascript:void(0);"; +if(null==b||0==b.length)b=this.isCustomLink(a)?this.getLinkTitle(a):a;var d=document.createElement("a");d.setAttribute("rel",this.linkRelation);d.setAttribute("href",this.getAbsoluteUrl(a));d.setAttribute("title",c(this.isCustomLink(a)?this.getLinkTitle(a):a,80));null!=this.linkTarget&&d.setAttribute("target",this.linkTarget);mxUtils.write(d,c(b,40));this.isCustomLink(a)&&mxEvent.addListener(d,"click",mxUtils.bind(this,function(b){this.customLinkClicked(a);mxEvent.consume(b)}));return d};Graph.prototype.initTouch= +function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(a,b){this.popupMenuHandler.hideMenu()});var a=this.updateMouseEvent;this.updateMouseEvent=function(b){b=a.apply(this,arguments);if(mxEvent.isTouchEvent(b.getEvent())&&null==b.getState()){var c=this.getCellAt(b.graphX,b.graphY);null!=c&&this.isSwimlane(c)&&this.hitsSwimlaneContent(c,b.graphX,b.graphY)||(b.state=this.view.getState(c),null!=b.state&& +null!=b.state.shape&&(this.container.style.cursor=b.state.shape.node.style.cursor))}null==b.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return b};var b=!1,c=!1,d=!1,e=this.fireMouseEvent;this.fireMouseEvent=function(a,g,f){a==mxEvent.MOUSE_DOWN&&(g=this.updateMouseEvent(g),b=this.isCellSelected(g.getCell()),c=this.isSelectionEmpty(),d=this.popupMenuHandler.isMenuShowing());e.apply(this,arguments)};this.popupMenuHandler.mouseUp=mxUtils.bind(this,function(a,e){this.popupMenuHandler.popupTrigger= +!this.isEditing()&&this.isEnabled()&&(null==e.getState()||!e.isSource(e.getState().control))&&(this.popupMenuHandler.popupTrigger||!d&&!mxEvent.isMouseEvent(e.getEvent())&&(c&&null==e.getCell()&&this.isSelectionEmpty()||b&&this.isCellSelected(e.getCell())));mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,arguments)})};mxCellEditor.prototype.isContentEditing=function(){var a=this.graph.view.getState(this.editingCell);return null!=a&&1==a.style.html};mxCellEditor.prototype.saveSelection= +function(){if(window.getSelection){var a=window.getSelection();if(a.getRangeAt&&a.rangeCount){for(var b=[],c=0,d=a.rangeCount;c<d;++c)b.push(a.getRangeAt(c));return b}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(a){try{if(a)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var b=0,c=a.length;b<c;++b)sel.addRange(a[b])}else document.selection&&a.select&&a.select()}catch(T){}}; +var f=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=function(a){null!=a.text&&(a.text.replaceLinefeeds="0"!=mxUtils.getValue(a.style,"nl2Br","1"));f.apply(this,arguments)};var e=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(a,b){this.isKeepFocusEvent(a)||!mxEvent.isAltDown(a.getEvent())?e.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(a){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)}; +mxCellEditor.prototype.escapeCancelsEditing=!1;var h=mxCellEditor.prototype.startEditing;mxCellEditor.prototype.startEditing=function(a,b){h.apply(this,arguments);var c=this.graph.view.getState(a);this.textarea.className=null!=c&&1==c.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(a);var c=this.graph.getModel().getParent(a),d=this.graph.getCellGeometry(a);this.graph.getModel().isEdge(c)&& +null!=d&&d.relative||this.graph.getModel().isEdge(a)?mxClient.IS_QUIRKS?this.textarea.style.border="gray dotted 1px":this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":"":mxClient.IS_QUIRKS&&(this.textarea.style.outline="none",this.textarea.style.border="")};var g=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(a){function b(a,c){c.originalNode=a;a=a.firstChild;for(var d=c.firstChild;null!=a&&null!= +d;)b(a,d),a=a.nextSibling,d=d.nextSibling;return c}function c(a,b){if(null!=a)if(b.originalNode!=a)d(a);else for(a=a.firstChild,b=b.firstChild;null!=a;){var e=a.nextSibling;null==b?d(a):(c(a,b),b=b.nextSibling);a=e}}function d(a){for(var b=a.firstChild;null!=b;){var c=b.nextSibling;d(b);b=c}1==a.nodeType&&("BR"===a.nodeName||null!=a.firstChild)||3==a.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(a)).length?(3==a.nodeType&&mxUtils.setTextContent(a,mxUtils.getTextContent(a).replace(/\n|\r/g,"")), +1==a.nodeType&&(a.removeAttribute("style"),a.removeAttribute("class"),a.removeAttribute("width"),a.removeAttribute("cellpadding"),a.removeAttribute("cellspacing"),a.removeAttribute("border"))):a.parentNode.removeChild(a)}g.apply(this,arguments);mxClient.IS_QUIRKS||7===document.documentMode||8===document.documentMode||mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(a){var d=b(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){c(this.textarea, +d)}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var a=this.graph.view.getState(this.editingCell);if(null!=a){var b=null!=a&&"0"!=mxUtils.getValue(a.style,"nl2Br","1"),c=this.saveSelection();if(this.codeViewMode){h=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<h.length&&"\n"==h.charAt(h.length-1)&&(h=h.substring(0,h.length-1));h=this.graph.sanitizeHtml(b?h.replace(/\n/g,"<br/>"):h,!0);this.textarea.className="mxCellEditor geContentEditable";var d=mxUtils.getValue(a.style, +mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),b=mxUtils.getValue(a.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY),e=mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),g=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,f=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,a=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)== +mxConstants.FONT_UNDERLINE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(d*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(d)+"px";this.textarea.style.textDecoration=a?"underline":"";this.textarea.style.fontWeight=g?"bold":"normal";this.textarea.style.fontStyle=f?"italic":"";this.textarea.style.fontFamily=b;this.textarea.style.textAlign=e;this.textarea.style.padding="0px";this.textarea.innerHTML!=h&&(this.textarea.innerHTML= +h,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length));this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerHTML="");var h=mxUtils.htmlEntities(this.textarea.innerHTML);mxClient.IS_QUIRKS||8==document.documentMode||(h=mxUtils.replaceTrailingNewlines(h,"<div><br></div>"));h=this.graph.sanitizeHtml(b?h.replace(/\n/g,"").replace(/<br\s*.?>/g, +"<br>"):h,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var d=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(d*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(d)+"px";this.textarea.style.textDecoration="";this.textarea.style.fontWeight="normal";this.textarea.style.fontStyle="";this.textarea.style.fontFamily=mxConstants.DEFAULT_FONTFAMILY;this.textarea.style.textAlign="left";this.textarea.style.padding= +"2px";this.textarea.innerHTML!=h&&(this.textarea.innerHTML=h);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);this.switchSelectionState=c;this.resize()}};var k=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(a,b){if(null!=this.textarea)if(a=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=a){var c=a.view.scale;this.bounds=mxRectangle.fromRectangle(a);if(0==this.bounds.width&&0== +this.bounds.height){this.bounds.width=160*c;this.bounds.height=60*c;var d=null!=a.text?a.text.margin:null;null==d&&(d=mxUtils.getAlignmentAsPoint(mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(a.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=d.x*this.bounds.width;this.bounds.y+=d.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-4)/c)+"px";this.textarea.style.height=Math.round((this.bounds.height- +4)/c)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/c)+(this.textarea.offsetHeight-this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*c);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/c)+(this.textarea.offsetWidth-this.textarea.clientWidth)+"px",this.bounds.width=parseInt(this.textarea.style.width)* +c);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxClient.IS_VML?this.textarea.style.zoom=c:mxUtils.setPrefixedStyle(this.textarea.style,"transform","scale("+c+","+c+")")}else this.textarea.style.height="",this.textarea.style.overflow="",k.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(a,b){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetInitialValue.apply(this, +arguments);var c=this.graph.getEditingValue(a.cell,b);"1"==mxUtils.getValue(a.style,"nl2Br","1")&&(c=c.replace(/\n/g,"<br/>"));return c=this.graph.sanitizeHtml(c,!0)};mxCellEditorGetCurrentValue=mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(a){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var b=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return b="1"==mxUtils.getValue(a.style,"nl2Br","1")?b.replace(/\r\n/g, +"<br/>").replace(/\n/g,"<br/>"):b.replace(/\r\n/g,"").replace(/\n/g,"")};var l=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(a){this.codeViewMode&&this.toggleViewMode();l.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(B){}};var m=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(a,b){this.graph.getModel().beginUpdate();try{if(m.apply(this,arguments),this.graph.isCellDeletable(a.cell)&& +0==this.graph.model.getChildCount(a.cell)){var c=mxUtils.getValue(a.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),d=mxUtils.getValue(a.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);""==b&&c==mxConstants.NONE&&d==mxConstants.NONE&&this.graph.removeCells([a.cell],!1)}}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=function(a){var b=null;if(this.graph.getModel().isEdge(a.cell)||this.graph.getModel().isEdge(this.graph.getModel().getParent(a.cell)))b= +mxUtils.getValue(a.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null),b==mxConstants.NONE&&(b=null);return b};mxCellEditor.prototype.getMinimumSize=function(a){var b=this.graph.getView().scale;return new mxRectangle(0,0,null==a.text?30:a.text.size*b+20,30)};var p=mxGraphHandler.prototype.moveCells;mxGraphHandler.prototype.moveCells=function(a,b,c,d,e,g){mxEvent.isAltDown(g)&&(e=null);p.apply(this,arguments)};mxGraphHandler.prototype.updateHint=function(b){if(null!=this.shape){null==this.hint&&(this.hint= +a(),this.graph.container.appendChild(this.hint));var c=this.graph.view.translate,d=this.graph.view.scale;b=this.roundLength((this.bounds.x+this.currentDx)/d-c.x);c=this.roundLength((this.bounds.y+this.currentDy)/d-c.y);this.hint.innerHTML=b+", "+c;this.hint.style.left=this.shape.bounds.x+Math.round((this.shape.bounds.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=this.shape.bounds.y+this.shape.bounds.height+12+"px"}};mxGraphHandler.prototype.removeHint=function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint), +this.hint=null)};mxVertexHandler.prototype.isRecursiveResize=function(a,b){return!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&&!mxEvent.isControlDown(b.getEvent())&&!this.graph.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null)};mxVertexHandler.prototype.isCenteredEvent=function(a,b){return!(!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&&!this.graph.isCellCollapsed(a.cell)&& +"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null))&&mxEvent.isControlDown(b.getEvent())||mxEvent.isMetaDown(b.getEvent())};var n=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var a=new mxPoint(0,0),b=this.tolerance;this.graph.cellEditor.getEditingCell()==this.state.cell&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(b/=2,a.x=this.sizers[0].bounds.width+b,a.y=this.sizers[0].bounds.height+ +b):a=n.apply(this,arguments);return a};mxVertexHandler.prototype.updateHint=function(b){this.index!=mxEvent.LABEL_HANDLE&&(null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint)),this.index==mxEvent.ROTATION_HANDLE?this.hint.innerHTML=this.currentAlpha+"°":(b=this.state.view.scale,this.hint.innerHTML=this.roundLength(this.bounds.width/b)+" x "+this.roundLength(this.bounds.height/b)),b=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha: +this.state.style[mxConstants.STYLE_ROTATION]||"0"),null==b&&(b=this.bounds),this.hint.style.left=b.x+Math.round((b.width-this.hint.clientWidth)/2)+"px",this.hint.style.top=b.y+b.height+12+"px",null!=this.linkHint&&(this.linkHint.style.display="none"))};mxVertexHandler.prototype.removeHint=function(){mxGraphHandler.prototype.removeHint.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(b,c){null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint)); +var d=this.graph.view.translate,e=this.graph.view.scale,g=this.roundLength(c.x/e-d.x),d=this.roundLength(c.y/e-d.y);this.hint.innerHTML=g+", "+d;this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(g=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*g.x)+"%, "+Math.round(100*g.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility="hidden");this.hint.style.left= +Math.round(b.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(b.getGraphY(),c.y)+this.state.view.graph.gridSize+"px";null!=this.linkHint&&(this.linkHint.style.display="none")};mxEdgeHandler.prototype.removeHint=mxVertexHandler.prototype.removeHint;HoverIcons.prototype.mainHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/>'):new mxImage(IMAGE_PATH+"/handle-main.png",17,17);HoverIcons.prototype.secondaryHandle= +mxClient.IS_SVG?Graph.createSvgImage(16,16,'<path d="m 8 3 L 13 8 L 8 13 L 3 8 z" stroke="#fff" fill="#fca000"/>'):new mxImage(IMAGE_PATH+"/handle-secondary.png",17,17);HoverIcons.prototype.fixedHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/><path d="m 7 7 L 11 11 M 7 11 L 11 7" stroke="#fff"/>'):new mxImage(IMAGE_PATH+"/handle-fixed.png",17,17);HoverIcons.prototype.terminalHandle=mxClient.IS_SVG? +Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/><circle cx="9" cy="9" r="2" stroke="#fff" fill="transparent"/>'):new mxImage(IMAGE_PATH+"/handle-terminal.png",17,17);HoverIcons.prototype.rotationHandle=new mxImage(mxClient.IS_SVG?"data:image/png;base64,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": IMAGE_PATH+"/handle-rotate.png",19,21);mxClient.IS_SVG&&(mxConstraintHandler.prototype.pointImage=Graph.createSvgImage(5,5,'<path d="m 0 0 L 5 5 M 0 5 L 5 0" stroke="'+HoverIcons.prototype.arrowFill+'"/>'));mxVertexHandler.prototype.handleImage=HoverIcons.prototype.mainHandle;mxVertexHandler.prototype.secondaryHandleImage=HoverIcons.prototype.secondaryHandle;mxEdgeHandler.prototype.handleImage=HoverIcons.prototype.mainHandle;mxEdgeHandler.prototype.terminalHandleImage=HoverIcons.prototype.terminalHandle; mxEdgeHandler.prototype.fixedHandleImage=HoverIcons.prototype.fixedHandle;mxEdgeHandler.prototype.labelHandleImage=HoverIcons.prototype.secondaryHandle;mxOutline.prototype.sizerImage=HoverIcons.prototype.mainHandle;null!=window.Sidebar&&(Sidebar.prototype.triangleUp=HoverIcons.prototype.triangleUp,Sidebar.prototype.triangleRight=HoverIcons.prototype.triangleRight,Sidebar.prototype.triangleDown=HoverIcons.prototype.triangleDown,Sidebar.prototype.triangleLeft=HoverIcons.prototype.triangleLeft,Sidebar.prototype.refreshTarget= HoverIcons.prototype.refreshTarget,Sidebar.prototype.roundDrop=HoverIcons.prototype.roundDrop);mxClient.IS_SVG||((new Image).src=HoverIcons.prototype.mainHandle.src,(new Image).src=HoverIcons.prototype.fixedHandle.src,(new Image).src=HoverIcons.prototype.terminalHandle.src,(new Image).src=HoverIcons.prototype.secondaryHandle.src,(new Image).src=HoverIcons.prototype.rotationHandle.src,(new Image).src=HoverIcons.prototype.triangleUp.src,(new Image).src=HoverIcons.prototype.triangleRight.src,(new Image).src= @@ -2658,9 +2660,9 @@ this.secondDiv=null);q.apply(this,arguments)};var r=(new Date).getTime(),t=0,w=m 2E3<t||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&v.apply(this,arguments)};mxVertexHandler.prototype.isCustomHandleEvent=function(a){return!mxEvent.isShiftDown(a.getEvent())};mxEdgeHandler.prototype.createHandleShape=function(a,b){var c=null!=a&&0==a,d=this.state.getVisibleTerminalState(c),e=null!=a&&(0==a||a>=this.state.absolutePoints.length-1||this.constructor==mxElbowEdgeHandler&&2==a)?this.graph.getConnectionConstraint(this.state, d,c):null,c=null!=(null!=e?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(c),e):null)?this.fixedHandleImage:null!=e&&null!=d?this.terminalHandleImage:this.handleImage;if(null!=c)return c=new mxImageShape(new mxRectangle(0,0,c.width,c.height),c.src),c.preserveImageAspect=!1,c;c=mxConstants.HANDLE_SIZE;this.preferHtml&&--c;return new mxRectangleShape(new mxRectangle(0,0,c,c),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var z=mxVertexHandler.prototype.createSizerShape; mxVertexHandler.prototype.createSizerShape=function(a,b,c){this.handleImage=b==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:b==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;return z.apply(this,arguments)};var x=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(a){if(null!=a&&1==a.length){var b=this.graph.getModel(),c=b.getParent(a[0]),d=this.graph.getCellGeometry(a[0]);if(b.isEdge(c)&&null!=d&&d.relative&&(b=this.graph.view.getState(a[0]), -null!=b&&2>b.width&&2>b.height&&null!=b.text&&null!=b.text.boundingBox))return mxRectangle.fromRectangle(b.text.boundingBox)}return x.apply(this,arguments)};var F=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(a){var b=this.graph.getModel(),c=b.getParent(a.cell),d=this.graph.getCellGeometry(a.cell);return b.isEdge(c)&&null!=d&&d.relative&&2>a.width&&2>a.height&&null!=a.text&&null!=a.text.boundingBox?(b=a.text.unrotatedBoundingBox||a.text.boundingBox, -new mxRectangle(Math.round(b.x),Math.round(b.y),Math.round(b.width),Math.round(b.height))):F.apply(this,arguments)};var D=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(a,b){var c=this.graph.getModel(),d=c.getParent(this.state.cell),e=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(b)==mxEvent.ROTATION_HANDLE||!c.isEdge(d)||null==e||!e.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&D.apply(this,arguments)};mxVertexHandler.prototype.isRotationHandleVisible= -function(){return this.graph.isEnabled()&&this.rotationEnabled&&this.graph.isCellRotatable(this.state.cell)&&(0>=mxGraphHandler.prototype.maxCells||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)};mxVertexHandler.prototype.rotateClick=function(){this.state.view.graph.turnShapes([this.state.cell])};var E=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(a,b){E.apply(this,arguments);null!=this.graph.graphHandler.first&&null!=this.rotationShape&&null!= +null!=b&&2>b.width&&2>b.height&&null!=b.text&&null!=b.text.boundingBox))return mxRectangle.fromRectangle(b.text.boundingBox)}return x.apply(this,arguments)};var E=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(a){var b=this.graph.getModel(),c=b.getParent(a.cell),d=this.graph.getCellGeometry(a.cell);return b.isEdge(c)&&null!=d&&d.relative&&2>a.width&&2>a.height&&null!=a.text&&null!=a.text.boundingBox?(b=a.text.unrotatedBoundingBox||a.text.boundingBox, +new mxRectangle(Math.round(b.x),Math.round(b.y),Math.round(b.width),Math.round(b.height))):E.apply(this,arguments)};var D=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(a,b){var c=this.graph.getModel(),d=c.getParent(this.state.cell),e=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(b)==mxEvent.ROTATION_HANDLE||!c.isEdge(d)||null==e||!e.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&D.apply(this,arguments)};mxVertexHandler.prototype.isRotationHandleVisible= +function(){return this.graph.isEnabled()&&this.rotationEnabled&&this.graph.isCellRotatable(this.state.cell)&&(0>=mxGraphHandler.prototype.maxCells||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)};mxVertexHandler.prototype.rotateClick=function(){this.state.view.graph.turnShapes([this.state.cell])};var F=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(a,b){F.apply(this,arguments);null!=this.graph.graphHandler.first&&null!=this.rotationShape&&null!= this.rotationShape.node&&(this.rotationShape.node.style.display="none")};var C=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(a,b){C.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none")};var M=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){M.apply(this,arguments);var a=!1;null!=this.rotationShape&&this.rotationShape.node.setAttribute("title", mxResources.get("rotateTooltip"));var b=mxUtils.bind(this,function(){null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none");null!=this.specialHandle&&(this.specialHandle.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none");this.redrawHandles()});this.selectionHandler=mxUtils.bind(this,function(a,c){b()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE, this.selectionHandler);this.changeHandler=mxUtils.bind(this,function(a,c){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));b()});this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(a,b){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,this.editingHandler);var c=this.graph.getLinkForCell(this.state.cell),d=this.graph.getLinksForState(this.state);this.updateLinkHint(c, @@ -2674,7 +2676,7 @@ arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return "0",a),a=null!=c?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,b=null!=this.state.text?this.state.text.boundingBox:null;null==c&&(c=this.state);c=c.y+c.height;null!=b&&(c=Math.max(c,b.y+b.height));this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(c+this.verticalOffset/2+6+this.state.view.graph.tolerance)+"px"}};var K=mxVertexHandler.prototype.reset;mxVertexHandler.prototype.reset= function(){K.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none")};var O=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){O.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.selectionHandler&&(this.graph.getSelectionModel().removeListener(this.selectionHandler),this.selectionHandler= null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null);null!=this.editingHandler&&(this.graph.removeListener(this.editingHandler),this.editingHandler=null)};var Q=mxEdgeHandler.prototype.redrawHandles;mxEdgeHandler.prototype.redrawHandles=function(){if(null!=this.marker&&(Q.apply(this),null!=this.state&&null!=this.linkHint)){var a=this.state;null!=this.state.text&&null!=this.state.text.bounds&&(a=new mxRectangle(a.x,a.y,a.width,a.height), -a.add(this.state.text.bounds));this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(a.y+a.height+6+this.state.view.graph.tolerance)+"px"}};var P=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){P.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var I=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){I.apply(this,arguments);null!=this.linkHint&& +a.add(this.state.text.bounds));this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(a.y+a.height+6+this.state.view.graph.tolerance)+"px"}};var P=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){P.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var H=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){H.apply(this,arguments);null!=this.linkHint&& (this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.selectionHandler&&(this.graph.getSelectionModel().removeListener(this.selectionHandler),this.selectionHandler=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null)}}();Format=function(a,c){this.editorUi=a;this.container=c};Format.prototype.labelIndex=0;Format.prototype.currentIndex=0;Format.prototype.showCloseButton=!0;Format.prototype.inactiveTabBackgroundColor="#d7d7d7";Format.prototype.roundableShapes="label rectangle internalStorage corner parallelogram swimlane triangle trapezoid ext step tee process link rhombus offPageConnector loopLimit hexagon manualInput curlyBracket singleArrow callout doubleArrow flexArrow card umlLifeline".split(" "); Format.prototype.init=function(){var a=this.editorUi.editor,c=a.graph;this.update=mxUtils.bind(this,function(a,b){this.clearSelectionState();this.refresh()});c.getSelectionModel().addListener(mxEvent.CHANGE,this.update);c.addListener(mxEvent.EDITING_STARTED,this.update);c.addListener(mxEvent.EDITING_STOPPED,this.update);c.getModel().addListener(mxEvent.CHANGE,this.update);c.addListener(mxEvent.ROOT,mxUtils.bind(this,function(){this.refresh()}));a.addListener("autosaveChanged",mxUtils.bind(this,function(){this.refresh()})); this.refresh()};Format.prototype.clearSelectionState=function(){this.selectionState=null};Format.prototype.getSelectionState=function(){null==this.selectionState&&(this.selectionState=this.createSelectionState());return this.selectionState};Format.prototype.createSelectionState=function(){for(var a=this.editorUi.editor.graph.getSelectionCells(),c=this.initSelectionState(),d=0;d<a.length;d++)this.updateSelectionStateForCell(c,a[d],a);return c}; @@ -2765,10 +2767,10 @@ TextFormatPanel.prototype.addFont=function(a){function c(a,b){mxClient.IS_IE&&(m !0);l.style.color="rgb(112, 112, 112)";l.style.whiteSpace="nowrap";l.style.overflow="hidden";l.style.margin="0px";this.addArrow(l);l.style.width="192px";l.style.height="15px";mxClient.IS_FF&&(l.getElementsByTagName("div")[0].style.marginTop="-18px");k=e.cloneNode(!1);k.style.marginLeft="-3px";var m=this.editorUi.toolbar.addItems(["bold","italic","underline"],k,!0);m[0].setAttribute("title",mxResources.get("bold")+" ("+this.editorUi.actions.get("bold").shortcut+")");m[1].setAttribute("title",mxResources.get("italic")+ " ("+this.editorUi.actions.get("italic").shortcut+")");m[2].setAttribute("title",mxResources.get("underline")+" ("+this.editorUi.actions.get("underline").shortcut+")");var p=this.editorUi.toolbar.addItems(["vertical"],k,!0)[0];mxClient.IS_QUIRKS&&mxUtils.br(a);a.appendChild(k);this.styleButtons(m);this.styleButtons([p]);g=e.cloneNode(!1);g.style.marginLeft="-3px";g.style.paddingBottom="0px";var n=function(a){return function(){return a()}},u=this.editorUi.toolbar.addButton("geSprite-left",mxResources.get("left"), b.cellEditor.isContentEditing()?function(){document.execCommand("justifyleft",!1,null)}:n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT])),g),q=this.editorUi.toolbar.addButton("geSprite-center",mxResources.get("center"),b.cellEditor.isContentEditing()?function(){document.execCommand("justifycenter",!1,null)}:n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER])),g),r=this.editorUi.toolbar.addButton("geSprite-right", -mxResources.get("right"),b.cellEditor.isContentEditing()?function(){document.execCommand("justifyright",!1,null)}:n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT])),g);this.styleButtons([u,q,r]);if(b.cellEditor.isContentEditing()){var t=this.editorUi.toolbar.addButton("geSprite-removeformat",null,function(){document.execCommand("strikeThrough",!1,null)},k);this.styleButtons([t]);t.firstChild.style.background="url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjR2MjRIMFYweiIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBjbGlwLXBhdGg9InVybCgjYikiIGZpbGw9IiMwMTAxMDEiIGQ9Ik03LjI0IDguNzVjLS4yNi0uNDgtLjM5LTEuMDMtLjM5LTEuNjcgMC0uNjEuMTMtMS4xNi40LTEuNjcuMjYtLjUuNjMtLjkzIDEuMTEtMS4yOS40OC0uMzUgMS4wNS0uNjMgMS43LS44My42Ni0uMTkgMS4zOS0uMjkgMi4xOC0uMjkuODEgMCAxLjU0LjExIDIuMjEuMzQuNjYuMjIgMS4yMy41NCAxLjY5Ljk0LjQ3LjQuODMuODggMS4wOCAxLjQzLjI1LjU1LjM4IDEuMTUuMzggMS44MWgtMy4wMWMwLS4zMS0uMDUtLjU5LS4xNS0uODUtLjA5LS4yNy0uMjQtLjQ5LS40NC0uNjgtLjItLjE5LS40NS0uMzMtLjc1LS40NC0uMy0uMS0uNjYtLjE2LTEuMDYtLjE2LS4zOSAwLS43NC4wNC0xLjAzLjEzLS4yOS4wOS0uNTMuMjEtLjcyLjM2LS4xOS4xNi0uMzQuMzQtLjQ0LjU1LS4xLjIxLS4xNS40My0uMTUuNjYgMCAuNDguMjUuODguNzQgMS4yMS4zOC4yNS43Ny40OCAxLjQxLjdINy4zOWMtLjA1LS4wOC0uMTEtLjE3LS4xNS0uMjV6TTIxIDEydi0ySDN2Mmg5LjYyYy4xOC4wNy40LjE0LjU1LjIuMzcuMTcuNjYuMzQuODcuNTEuMjEuMTcuMzUuMzYuNDMuNTcuMDcuMi4xMS40My4xMS42OSAwIC4yMy0uMDUuNDUtLjE0LjY2LS4wOS4yLS4yMy4zOC0uNDIuNTMtLjE5LjE1LS40Mi4yNi0uNzEuMzUtLjI5LjA4LS42My4xMy0xLjAxLjEzLS40MyAwLS44My0uMDQtMS4xOC0uMTNzLS42Ni0uMjMtLjkxLS40MmMtLjI1LS4xOS0uNDUtLjQ0LS41OS0uNzUtLjE0LS4zMS0uMjUtLjc2LS4yNS0xLjIxSDYuNGMwIC41NS4wOCAxLjEzLjI0IDEuNTguMTYuNDUuMzcuODUuNjUgMS4yMS4yOC4zNS42LjY2Ljk4LjkyLjM3LjI2Ljc4LjQ4IDEuMjIuNjUuNDQuMTcuOS4zIDEuMzguMzkuNDguMDguOTYuMTMgMS40NC4xMy44IDAgMS41My0uMDkgMi4xOC0uMjhzMS4yMS0uNDUgMS42Ny0uNzljLjQ2LS4zNC44Mi0uNzcgMS4wNy0xLjI3cy4zOC0xLjA3LjM4LTEuNzFjMC0uNi0uMS0xLjE0LS4zMS0xLjYxLS4wNS0uMTEtLjExLS4yMy0uMTctLjMzSDIxeiIvPjwvc3ZnPg==)"; +mxResources.get("right"),b.cellEditor.isContentEditing()?function(){document.execCommand("justifyright",!1,null)}:n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT])),g);this.styleButtons([u,q,r]);if(b.cellEditor.isContentEditing()){var t=this.editorUi.toolbar.addButton("geSprite-removeformat",mxResources.get("strikethrough"),function(){document.execCommand("strikeThrough",!1,null)},k);this.styleButtons([t]);t.firstChild.style.background="url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjR2MjRIMFYweiIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBjbGlwLXBhdGg9InVybCgjYikiIGZpbGw9IiMwMTAxMDEiIGQ9Ik03LjI0IDguNzVjLS4yNi0uNDgtLjM5LTEuMDMtLjM5LTEuNjcgMC0uNjEuMTMtMS4xNi40LTEuNjcuMjYtLjUuNjMtLjkzIDEuMTEtMS4yOS40OC0uMzUgMS4wNS0uNjMgMS43LS44My42Ni0uMTkgMS4zOS0uMjkgMi4xOC0uMjkuODEgMCAxLjU0LjExIDIuMjEuMzQuNjYuMjIgMS4yMy41NCAxLjY5Ljk0LjQ3LjQuODMuODggMS4wOCAxLjQzLjI1LjU1LjM4IDEuMTUuMzggMS44MWgtMy4wMWMwLS4zMS0uMDUtLjU5LS4xNS0uODUtLjA5LS4yNy0uMjQtLjQ5LS40NC0uNjgtLjItLjE5LS40NS0uMzMtLjc1LS40NC0uMy0uMS0uNjYtLjE2LTEuMDYtLjE2LS4zOSAwLS43NC4wNC0xLjAzLjEzLS4yOS4wOS0uNTMuMjEtLjcyLjM2LS4xOS4xNi0uMzQuMzQtLjQ0LjU1LS4xLjIxLS4xNS40My0uMTUuNjYgMCAuNDguMjUuODguNzQgMS4yMS4zOC4yNS43Ny40OCAxLjQxLjdINy4zOWMtLjA1LS4wOC0uMTEtLjE3LS4xNS0uMjV6TTIxIDEydi0ySDN2Mmg5LjYyYy4xOC4wNy40LjE0LjU1LjIuMzcuMTcuNjYuMzQuODcuNTEuMjEuMTcuMzUuMzYuNDMuNTcuMDcuMi4xMS40My4xMS42OSAwIC4yMy0uMDUuNDUtLjE0LjY2LS4wOS4yLS4yMy4zOC0uNDIuNTMtLjE5LjE1LS40Mi4yNi0uNzEuMzUtLjI5LjA4LS42My4xMy0xLjAxLjEzLS40MyAwLS44My0uMDQtMS4xOC0uMTNzLS42Ni0uMjMtLjkxLS40MmMtLjI1LS4xOS0uNDUtLjQ0LS41OS0uNzUtLjE0LS4zMS0uMjUtLjc2LS4yNS0xLjIxSDYuNGMwIC41NS4wOCAxLjEzLjI0IDEuNTguMTYuNDUuMzcuODUuNjUgMS4yMS4yOC4zNS42LjY2Ljk4LjkyLjM3LjI2Ljc4LjQ4IDEuMjIuNjUuNDQuMTcuOS4zIDEuMzguMzkuNDguMDguOTYuMTMgMS40NC4xMy44IDAgMS41My0uMDkgMi4xOC0uMjhzMS4yMS0uNDUgMS42Ny0uNzljLjQ2LS4zNC44Mi0uNzcgMS4wNy0xLjI3cy4zOC0xLjA3LjM4LTEuNzFjMC0uNi0uMS0xLjE0LS4zMS0xLjYxLS4wNS0uMTEtLjExLS4yMy0uMTctLjMzSDIxeiIvPjwvc3ZnPg==)"; t.firstChild.style.backgroundPosition="2px 2px";t.firstChild.style.backgroundSize="18px 18px";this.styleButtons([t])}var w=this.editorUi.toolbar.addButton("geSprite-top",mxResources.get("top"),n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP])),g),v=this.editorUi.toolbar.addButton("geSprite-middle",mxResources.get("middle"),n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE])),g),z=this.editorUi.toolbar.addButton("geSprite-bottom", -mxResources.get("bottom"),n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM])),g);this.styleButtons([w,v,z]);mxClient.IS_QUIRKS&&mxUtils.br(a);a.appendChild(g);var x,F,D,E,C,M,L;b.cellEditor.isContentEditing()?(w.style.display="none",v.style.display="none",z.style.display="none",p.style.display="none",D=this.editorUi.toolbar.addButton("geSprite-justifyfull",null,function(){document.execCommand("justifyfull",!1,null)},g),this.styleButtons([D, -x=this.editorUi.toolbar.addButton("geSprite-subscript",mxResources.get("subscript")+" ("+Editor.ctrlKey+"+,)",function(){document.execCommand("subscript",!1,null)},g),F=this.editorUi.toolbar.addButton("geSprite-superscript",mxResources.get("superscript")+" ("+Editor.ctrlKey+"+.)",function(){document.execCommand("superscript",!1,null)},g)]),D.style.marginRight="9px",n=g.cloneNode(!1),n.style.paddingTop="4px",g=[this.editorUi.toolbar.addButton("geSprite-orderedlist",mxResources.get("numberedList"), +mxResources.get("bottom"),n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM])),g);this.styleButtons([w,v,z]);mxClient.IS_QUIRKS&&mxUtils.br(a);a.appendChild(g);var x,E,D,F,C,M,L;b.cellEditor.isContentEditing()?(w.style.display="none",v.style.display="none",z.style.display="none",p.style.display="none",D=this.editorUi.toolbar.addButton("geSprite-justifyfull",mxResources.get("block"),function(){document.execCommand("justifyfull",!1,null)},g), +this.styleButtons([D,x=this.editorUi.toolbar.addButton("geSprite-subscript",mxResources.get("subscript")+" ("+Editor.ctrlKey+"+,)",function(){document.execCommand("subscript",!1,null)},g),E=this.editorUi.toolbar.addButton("geSprite-superscript",mxResources.get("superscript")+" ("+Editor.ctrlKey+"+.)",function(){document.execCommand("superscript",!1,null)},g)]),D.style.marginRight="9px",n=g.cloneNode(!1),n.style.paddingTop="4px",g=[this.editorUi.toolbar.addButton("geSprite-orderedlist",mxResources.get("numberedList"), function(){document.execCommand("insertorderedlist",!1,null)},n),this.editorUi.toolbar.addButton("geSprite-unorderedlist",mxResources.get("bulletedList"),function(){document.execCommand("insertunorderedlist",!1,null)},n),this.editorUi.toolbar.addButton("geSprite-outdent",mxResources.get("decreaseIndent"),function(){document.execCommand("outdent",!1,null)},n),this.editorUi.toolbar.addButton("geSprite-indent",mxResources.get("increaseIndent"),function(){document.execCommand("indent",!1,null)},n),this.editorUi.toolbar.addButton("geSprite-removeformat", mxResources.get("removeFormat"),function(){document.execCommand("removeformat",!1,null)},n),this.editorUi.toolbar.addButton("geSprite-code",mxResources.get("html"),function(){b.cellEditor.toggleViewMode()},n)],this.styleButtons(g),g[g.length-2].style.marginLeft="9px",mxClient.IS_QUIRKS&&(mxUtils.br(a),n.style.height="40"),a.appendChild(n)):(m[2].style.marginRight="9px",r.style.marginRight="9px");g=e.cloneNode(!1);g.style.marginLeft="0px";g.style.paddingTop="8px";g.style.paddingBottom="4px";g.style.fontWeight= "normal";mxUtils.write(g,mxResources.get("position"));var J=document.createElement("select");J.style.position="absolute";J.style.right="20px";J.style.width="97px";J.style.marginTop="-2px";for(var t="topLeft top topRight left center right bottomLeft bottom bottomRight".split(" "),G={topLeft:[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_TOP,mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_BOTTOM],top:[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_TOP,mxConstants.ALIGN_CENTER,mxConstants.ALIGN_BOTTOM],topRight:[mxConstants.ALIGN_RIGHT, @@ -2776,18 +2778,18 @@ mxConstants.ALIGN_TOP,mxConstants.ALIGN_LEFT,mxConstants.ALIGN_BOTTOM],left:[mxC mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_CENTER,mxConstants.ALIGN_TOP],bottomRight:[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_LEFT,mxConstants.ALIGN_TOP]},n=0;n<t.length;n++){var K=document.createElement("option");K.setAttribute("value",t[n]);mxUtils.write(K,mxResources.get(t[n]));J.appendChild(K)}g.appendChild(J);t=e.cloneNode(!1);t.style.marginLeft="0px";t.style.paddingTop="4px";t.style.paddingBottom="4px";t.style.fontWeight="normal";mxUtils.write(t,mxResources.get("writingDirection")); var O=document.createElement("select");O.style.position="absolute";O.style.right="20px";O.style.width="97px";O.style.marginTop="-2px";for(var K=["automatic","leftToRight","rightToLeft"],Q={automatic:null,leftToRight:mxConstants.TEXT_DIRECTION_LTR,rightToLeft:mxConstants.TEXT_DIRECTION_RTL},n=0;n<K.length;n++){var P=document.createElement("option");P.setAttribute("value",K[n]);mxUtils.write(P,mxResources.get(K[n]));O.appendChild(P)}t.appendChild(O);b.isEditing()||(a.appendChild(g),mxEvent.addListener(J, "change",function(a){b.getModel().beginUpdate();try{var c=G[J.value];null!=c&&(b.setCellStyles(mxConstants.STYLE_LABEL_POSITION,c[0],b.getSelectionCells()),b.setCellStyles(mxConstants.STYLE_VERTICAL_LABEL_POSITION,c[1],b.getSelectionCells()),b.setCellStyles(mxConstants.STYLE_ALIGN,c[2],b.getSelectionCells()),b.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,c[3],b.getSelectionCells()))}finally{b.getModel().endUpdate()}mxEvent.consume(a)}),a.appendChild(t),mxEvent.addListener(O,"change",function(a){b.setCellStyles(mxConstants.STYLE_TEXT_DIRECTION, -Q[O.value],b.getSelectionCells());mxEvent.consume(a)}));var I=document.createElement("input");I.style.textAlign="right";I.style.marginTop="4px";mxClient.IS_QUIRKS||(I.style.position="absolute",I.style.right="32px");I.style.width="46px";I.style.height=mxClient.IS_QUIRKS?"21px":"17px";k.appendChild(I);var B=null,g=this.installInputHandler(I,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize,1,999," pt",function(a){if(window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11){var c=function(c, +Q[O.value],b.getSelectionCells());mxEvent.consume(a)}));var H=document.createElement("input");H.style.textAlign="right";H.style.marginTop="4px";mxClient.IS_QUIRKS||(H.style.position="absolute",H.style.right="32px");H.style.width="46px";H.style.height=mxClient.IS_QUIRKS?"21px":"17px";k.appendChild(H);var B=null,g=this.installInputHandler(H,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize,1,999," pt",function(a){if(window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11){var c=function(c, e){c!=b.cellEditor.textarea&&b.cellEditor.textarea.contains(c)&&(e||d.containsNode(c,!0))&&("FONT"==c.nodeName?(c.removeAttribute("size"),c.style.fontSize=a+"px"):mxUtils.getCurrentStyle(c).fontSize!=a+"px"&&(mxUtils.getCurrentStyle(c.parentNode).fontSize!=a+"px"?c.style.fontSize=a+"px":c.style.fontSize=""))},d=window.getSelection(),e=0<d.rangeCount?d.getRangeAt(0).commonAncestorContainer:b.cellEditor.textarea;e!=b.cellEditor.textarea&&e.nodeType==mxConstants.NODETYPE_ELEMENT||document.execCommand("fontSize", -!1,"1");e!=b.cellEditor.textarea&&(e=e.parentNode);if(e.nodeType==mxConstants.NODETYPE_ELEMENT){var g=e.getElementsByTagName("*");c(e);for(e=0;e<g.length;e++)c(g[e])}I.value=a+" pt"}else if(window.getSelection||document.selection)if(c=function(a,b){for(;null!=b;){if(b===a)return!0;b=b.parentNode}return!1},g=null,document.selection?g=document.selection.createRange().parentElement():(d=window.getSelection(),0<d.rangeCount&&(g=d.getRangeAt(0).commonAncestorContainer)),null!=g&&c(b.cellEditor.textarea, -g))for(B=a,document.execCommand("fontSize",!1,"4"),g=b.cellEditor.textarea.getElementsByTagName("font"),e=0;e<g.length;e++)if("4"==g[e].getAttribute("size")){g[e].removeAttribute("size");g[e].style.fontSize=B+"px";window.setTimeout(function(){I.value=B+" pt";B=null},0);break}},!0),g=this.createStepper(I,g,1,10,!0,Menus.prototype.defaultFontSize);g.style.display=I.style.display;g.style.marginTop="4px";mxClient.IS_QUIRKS||(g.style.right="20px");k.appendChild(g);k=l.getElementsByTagName("div")[0];k.style.cssFloat= -"right";var H=null,A="#ffffff",T=null,U="#000000",X=b.cellEditor.isContentEditing()?this.createColorOption(mxResources.get("backgroundColor"),function(){return A},function(a){document.execCommand("backcolor",!1,a!=mxConstants.NONE?a:"transparent")},"#ffffff",{install:function(a){H=a},destroy:function(){H=null}},null,!0):this.createCellColorOption(mxResources.get("backgroundColor"),mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,"#ffffff",null,function(a){b.updateLabelElements(b.getSelectionCells(),function(a){a.style.backgroundColor= -null})});X.style.fontWeight="bold";var W=this.createCellColorOption(mxResources.get("borderColor"),mxConstants.STYLE_LABEL_BORDERCOLOR,"#000000");W.style.fontWeight="bold";k=b.cellEditor.isContentEditing()?this.createColorOption(mxResources.get("fontColor"),function(){return U},function(a){document.execCommand("forecolor",!1,a!=mxConstants.NONE?a:"transparent")},"#000000",{install:function(a){T=a},destroy:function(){T=null}},null,!0):this.createCellColorOption(mxResources.get("fontColor"),mxConstants.STYLE_FONTCOLOR, -"#000000",function(a){X.style.display=null==a||a==mxConstants.NONE?"none":"";W.style.display=X.style.display},function(a){null==a||a==mxConstants.NONE?b.setCellStyles(mxConstants.STYLE_NOLABEL,"1",b.getSelectionCells()):b.setCellStyles(mxConstants.STYLE_NOLABEL,null,b.getSelectionCells());b.updateLabelElements(b.getSelectionCells(),function(a){a.removeAttribute("color");a.style.color=null})});k.style.fontWeight="bold";h.appendChild(k);h.appendChild(X);b.cellEditor.isContentEditing()||h.appendChild(W); +!1,"1");e!=b.cellEditor.textarea&&(e=e.parentNode);if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var g=e.getElementsByTagName("*");c(e);for(e=0;e<g.length;e++)c(g[e])}H.value=a+" pt"}else if(window.getSelection||document.selection)if(c=function(a,b){for(;null!=b;){if(b===a)return!0;b=b.parentNode}return!1},g=null,document.selection?g=document.selection.createRange().parentElement():(d=window.getSelection(),0<d.rangeCount&&(g=d.getRangeAt(0).commonAncestorContainer)),null!=g&&c(b.cellEditor.textarea, +g))for(B=a,document.execCommand("fontSize",!1,"4"),g=b.cellEditor.textarea.getElementsByTagName("font"),e=0;e<g.length;e++)if("4"==g[e].getAttribute("size")){g[e].removeAttribute("size");g[e].style.fontSize=B+"px";window.setTimeout(function(){H.value=B+" pt";B=null},0);break}},!0),g=this.createStepper(H,g,1,10,!0,Menus.prototype.defaultFontSize);g.style.display=H.style.display;g.style.marginTop="4px";mxClient.IS_QUIRKS||(g.style.right="20px");k.appendChild(g);k=l.getElementsByTagName("div")[0];k.style.cssFloat= +"right";var I=null,A="#ffffff",T=null,U="#000000",X=b.cellEditor.isContentEditing()?this.createColorOption(mxResources.get("backgroundColor"),function(){return A},function(a){document.execCommand("backcolor",!1,a!=mxConstants.NONE?a:"transparent")},"#ffffff",{install:function(a){I=a},destroy:function(){I=null}},null,!0):this.createCellColorOption(mxResources.get("backgroundColor"),mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,"#ffffff",null,function(a){b.updateLabelElements(b.getSelectionCells(),function(a){a.style.backgroundColor= +null})});X.style.fontWeight="bold";var V=this.createCellColorOption(mxResources.get("borderColor"),mxConstants.STYLE_LABEL_BORDERCOLOR,"#000000");V.style.fontWeight="bold";k=b.cellEditor.isContentEditing()?this.createColorOption(mxResources.get("fontColor"),function(){return U},function(a){document.execCommand("forecolor",!1,a!=mxConstants.NONE?a:"transparent")},"#000000",{install:function(a){T=a},destroy:function(){T=null}},null,!0):this.createCellColorOption(mxResources.get("fontColor"),mxConstants.STYLE_FONTCOLOR, +"#000000",function(a){X.style.display=null==a||a==mxConstants.NONE?"none":"";V.style.display=X.style.display},function(a){null==a||a==mxConstants.NONE?b.setCellStyles(mxConstants.STYLE_NOLABEL,"1",b.getSelectionCells()):b.setCellStyles(mxConstants.STYLE_NOLABEL,null,b.getSelectionCells());b.updateLabelElements(b.getSelectionCells(),function(a){a.removeAttribute("color");a.style.color=null})});k.style.fontWeight="bold";h.appendChild(k);h.appendChild(X);b.cellEditor.isContentEditing()||h.appendChild(V); a.appendChild(h);h=this.createPanel();h.style.paddingTop="2px";h.style.paddingBottom="4px";k=this.createCellOption(mxResources.get("wordWrap"),mxConstants.STYLE_WHITE_SPACE,null,"wrap","null",null,null,!0);k.style.fontWeight="bold";f.containsLabel||f.autoSize||0!=f.edges.length||h.appendChild(k);k=this.createCellOption(mxResources.get("formattedText"),"html","0",null,null,null,d.actions.get("formattedText"));k.style.fontWeight="bold";h.appendChild(k);k=this.createPanel();k.style.paddingTop="10px"; -k.style.paddingBottom="28px";k.style.fontWeight="normal";g=document.createElement("div");g.style.position="absolute";g.style.width="70px";g.style.marginTop="0px";g.style.fontWeight="bold";mxUtils.write(g,mxResources.get("spacing"));k.appendChild(g);var aa,ha,ba,R,ka,ca=this.addUnitInput(k,"pt",91,44,function(){aa.apply(this,arguments)}),ea=this.addUnitInput(k,"pt",20,44,function(){ha.apply(this,arguments)});mxUtils.br(k);this.addLabel(k,mxResources.get("top"),91);this.addLabel(k,mxResources.get("global"), -20);mxUtils.br(k);mxUtils.br(k);var fa=this.addUnitInput(k,"pt",162,44,function(){ba.apply(this,arguments)}),Y=this.addUnitInput(k,"pt",91,44,function(){R.apply(this,arguments)}),Z=this.addUnitInput(k,"pt",20,44,function(){ka.apply(this,arguments)});mxUtils.br(k);this.addLabel(k,mxResources.get("left"),162);this.addLabel(k,mxResources.get("bottom"),91);this.addLabel(k,mxResources.get("right"),20);if(b.cellEditor.isContentEditing()){var da=null,ia=null;a.appendChild(this.createRelativeOption(mxResources.get("lineheight"), -null,null,function(a){var c=""==a.value?120:parseInt(a.value),c=Math.max(0,isNaN(c)?120:c);null!=da&&(b.cellEditor.restoreSelection(da),da=null);for(var d=b.getSelectedElement();null!=d&&d.nodeType!=mxConstants.NODETYPE_ELEMENT;)d=d.parentNode;null!=d&&d==b.cellEditor.textarea&&null!=b.cellEditor.textarea.firstChild&&("P"!=b.cellEditor.textarea.firstChild.nodeName&&(b.cellEditor.textarea.innerHTML="<p>"+b.cellEditor.textarea.innerHTML+"</p>"),d=b.cellEditor.textarea.firstChild);null!=d&&d!=b.cellEditor.textarea&& -b.cellEditor.textarea.contains(d)&&(d.style.lineHeight=c+"%");a.value=c+" %"},function(a){ia=a;mxEvent.addListener(a,"mousedown",function(){document.activeElement==b.cellEditor.textarea&&(da=b.cellEditor.saveSelection())});mxEvent.addListener(a,"touchstart",function(){document.activeElement==b.cellEditor.textarea&&(da=b.cellEditor.saveSelection())});a.value="120 %"}));h=e.cloneNode(!1);h.style.paddingLeft="0px";k=this.editorUi.toolbar.addItems(["link","image"],h,!0);g=[this.editorUi.toolbar.addButton("geSprite-horizontalrule", +k.style.paddingBottom="28px";k.style.fontWeight="normal";g=document.createElement("div");g.style.position="absolute";g.style.width="70px";g.style.marginTop="0px";g.style.fontWeight="bold";mxUtils.write(g,mxResources.get("spacing"));k.appendChild(g);var aa,ka,ba,R,la,ca=this.addUnitInput(k,"pt",91,44,function(){aa.apply(this,arguments)}),fa=this.addUnitInput(k,"pt",20,44,function(){ka.apply(this,arguments)});mxUtils.br(k);this.addLabel(k,mxResources.get("top"),91);this.addLabel(k,mxResources.get("global"), +20);mxUtils.br(k);mxUtils.br(k);var ga=this.addUnitInput(k,"pt",162,44,function(){ba.apply(this,arguments)}),Y=this.addUnitInput(k,"pt",91,44,function(){R.apply(this,arguments)}),Z=this.addUnitInput(k,"pt",20,44,function(){la.apply(this,arguments)});mxUtils.br(k);this.addLabel(k,mxResources.get("left"),162);this.addLabel(k,mxResources.get("bottom"),91);this.addLabel(k,mxResources.get("right"),20);if(b.cellEditor.isContentEditing()){var ea=null,ja=null;a.appendChild(this.createRelativeOption(mxResources.get("lineheight"), +null,null,function(a){var c=""==a.value?120:parseInt(a.value),c=Math.max(0,isNaN(c)?120:c);null!=ea&&(b.cellEditor.restoreSelection(ea),ea=null);for(var d=b.getSelectedElement();null!=d&&d.nodeType!=mxConstants.NODETYPE_ELEMENT;)d=d.parentNode;null!=d&&d==b.cellEditor.textarea&&null!=b.cellEditor.textarea.firstChild&&("P"!=b.cellEditor.textarea.firstChild.nodeName&&(b.cellEditor.textarea.innerHTML="<p>"+b.cellEditor.textarea.innerHTML+"</p>"),d=b.cellEditor.textarea.firstChild);null!=d&&d!=b.cellEditor.textarea&& +b.cellEditor.textarea.contains(d)&&(d.style.lineHeight=c+"%");a.value=c+" %"},function(a){ja=a;mxEvent.addListener(a,"mousedown",function(){document.activeElement==b.cellEditor.textarea&&(ea=b.cellEditor.saveSelection())});mxEvent.addListener(a,"touchstart",function(){document.activeElement==b.cellEditor.textarea&&(ea=b.cellEditor.saveSelection())});a.value="120 %"}));h=e.cloneNode(!1);h.style.paddingLeft="0px";k=this.editorUi.toolbar.addItems(["link","image"],h,!0);g=[this.editorUi.toolbar.addButton("geSprite-horizontalrule", mxResources.get("insertHorizontalRule"),function(){document.execCommand("inserthorizontalrule",!1)},h),this.editorUi.toolbar.addMenuFunctionInContainer(h,"geSprite-table",mxResources.get("table"),!1,mxUtils.bind(this,function(a){this.editorUi.menus.addInsertTableItem(a)}))];this.styleButtons(k);this.styleButtons(g);k=this.createPanel();k.style.paddingTop="10px";k.style.paddingBottom="10px";k.appendChild(this.createTitle(mxResources.get("insert")));k.appendChild(h);a.appendChild(k);mxClient.IS_QUIRKS&& (k.style.height="70");k=e.cloneNode(!1);k.style.paddingLeft="0px";g=[this.editorUi.toolbar.addButton("geSprite-insertcolumnbefore",mxResources.get("insertColumnBefore"),mxUtils.bind(this,function(){try{null!=C&&b.selectNode(b.insertColumn(C,null!=M?M.cellIndex:0))}catch(S){this.editorUi.handleError(S)}}),k),this.editorUi.toolbar.addButton("geSprite-insertcolumnafter",mxResources.get("insertColumnAfter"),mxUtils.bind(this,function(){try{null!=C&&b.selectNode(b.insertColumn(C,null!=M?M.cellIndex+1: -1))}catch(S){this.editorUi.handleError(S)}}),k),this.editorUi.toolbar.addButton("geSprite-deletecolumn",mxResources.get("deleteColumn"),mxUtils.bind(this,function(){try{null!=C&&null!=M&&b.deleteColumn(C,M.cellIndex)}catch(S){this.editorUi.handleError(S)}}),k),this.editorUi.toolbar.addButton("geSprite-insertrowbefore",mxResources.get("insertRowBefore"),mxUtils.bind(this,function(){try{null!=C&&null!=L&&b.selectNode(b.insertRow(C,L.sectionRowIndex))}catch(S){this.editorUi.handleError(S)}}),k),this.editorUi.toolbar.addButton("geSprite-insertrowafter", @@ -2796,19 +2798,19 @@ mxResources.get("insertRowAfter"),mxUtils.bind(this,function(){try{null!=C&&null ("0"+Number(d).toString(16)).substr(-2)});this.editorUi.pickColor(a,function(a){null==a||a==mxConstants.NONE?(C.removeAttribute("border"),C.style.border="",C.style.borderCollapse=""):(C.setAttribute("border","1"),C.style.border="1px solid "+a,C.style.borderCollapse="collapse")})}}),e),this.editorUi.toolbar.addButton("geSprite-fillcolor",mxResources.get("backgroundColor"),mxUtils.bind(this,function(){if(null!=C){var a=C.style.backgroundColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g, function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)});this.editorUi.pickColor(a,function(a){C.style.backgroundColor=null==a||a==mxConstants.NONE?"":a})}}),e),this.editorUi.toolbar.addButton("geSprite-fit",mxResources.get("spacing"),function(){if(null!=C){var a=C.getAttribute("cellPadding")||0,a=new FilenameDialog(d,a,mxResources.get("apply"),mxUtils.bind(this,function(a){null!=a&&0<a.length?C.setAttribute("cellPadding", a):C.removeAttribute("cellPadding")}),mxResources.get("spacing"));d.showDialog(a.container,300,80,!0,!0);a.init()}},e),this.editorUi.toolbar.addButton("geSprite-left",mxResources.get("left"),function(){null!=C&&C.setAttribute("align","left")},e),this.editorUi.toolbar.addButton("geSprite-center",mxResources.get("center"),function(){null!=C&&C.setAttribute("align","center")},e),this.editorUi.toolbar.addButton("geSprite-right",mxResources.get("right"),function(){null!=C&&C.setAttribute("align","right")}, -e)];this.styleButtons(g);g[2].style.marginRight="9px";mxClient.IS_QUIRKS&&(mxUtils.br(h),mxUtils.br(h));h.appendChild(e);a.appendChild(h);E=h}else a.appendChild(h),a.appendChild(this.createRelativeOption(mxResources.get("opacity"),mxConstants.STYLE_TEXT_OPACITY)),a.appendChild(k);var V=mxUtils.bind(this,function(a,b,d){f=this.format.getSelectionState();a=mxUtils.getValue(f.style,mxConstants.STYLE_FONTSTYLE,0);c(m[0],(a&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD);c(m[1],(a&mxConstants.FONT_ITALIC)== -mxConstants.FONT_ITALIC);c(m[2],(a&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE);l.firstChild.nodeValue=mxUtils.htmlEntities(mxUtils.getValue(f.style,mxConstants.STYLE_FONTFAMILY,Menus.prototype.defaultFont));c(p,"0"==mxUtils.getValue(f.style,mxConstants.STYLE_HORIZONTAL,"1"));if(d||document.activeElement!=I)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize)),I.value=isNaN(a)?"":a+" pt";a=mxUtils.getValue(f.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER); +e)];this.styleButtons(g);g[2].style.marginRight="9px";mxClient.IS_QUIRKS&&(mxUtils.br(h),mxUtils.br(h));h.appendChild(e);a.appendChild(h);F=h}else a.appendChild(h),a.appendChild(this.createRelativeOption(mxResources.get("opacity"),mxConstants.STYLE_TEXT_OPACITY)),a.appendChild(k);var W=mxUtils.bind(this,function(a,b,d){f=this.format.getSelectionState();a=mxUtils.getValue(f.style,mxConstants.STYLE_FONTSTYLE,0);c(m[0],(a&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD);c(m[1],(a&mxConstants.FONT_ITALIC)== +mxConstants.FONT_ITALIC);c(m[2],(a&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE);l.firstChild.nodeValue=mxUtils.htmlEntities(mxUtils.getValue(f.style,mxConstants.STYLE_FONTFAMILY,Menus.prototype.defaultFont));c(p,"0"==mxUtils.getValue(f.style,mxConstants.STYLE_HORIZONTAL,"1"));if(d||document.activeElement!=H)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize)),H.value=isNaN(a)?"":a+" pt";a=mxUtils.getValue(f.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER); c(u,a==mxConstants.ALIGN_LEFT);c(q,a==mxConstants.ALIGN_CENTER);c(r,a==mxConstants.ALIGN_RIGHT);a=mxUtils.getValue(f.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE);c(w,a==mxConstants.ALIGN_TOP);c(v,a==mxConstants.ALIGN_MIDDLE);c(z,a==mxConstants.ALIGN_BOTTOM);a=mxUtils.getValue(f.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);b=mxUtils.getValue(f.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE);J.value=a==mxConstants.ALIGN_LEFT&&b==mxConstants.ALIGN_TOP? "topLeft":a==mxConstants.ALIGN_CENTER&&b==mxConstants.ALIGN_TOP?"top":a==mxConstants.ALIGN_RIGHT&&b==mxConstants.ALIGN_TOP?"topRight":a==mxConstants.ALIGN_LEFT&&b==mxConstants.ALIGN_BOTTOM?"bottomLeft":a==mxConstants.ALIGN_CENTER&&b==mxConstants.ALIGN_BOTTOM?"bottom":a==mxConstants.ALIGN_RIGHT&&b==mxConstants.ALIGN_BOTTOM?"bottomRight":a==mxConstants.ALIGN_LEFT?"left":a==mxConstants.ALIGN_RIGHT?"right":"center";a=mxUtils.getValue(f.style,mxConstants.STYLE_TEXT_DIRECTION,mxConstants.DEFAULT_TEXT_DIRECTION); -a==mxConstants.TEXT_DIRECTION_RTL?O.value="rightToLeft":a==mxConstants.TEXT_DIRECTION_LTR?O.value="leftToRight":a==mxConstants.TEXT_DIRECTION_AUTO&&(O.value="automatic");if(d||document.activeElement!=ea)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING,2)),ea.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=ca)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_TOP,0)),ca.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=Z)a=parseFloat(mxUtils.getValue(f.style, -mxConstants.STYLE_SPACING_RIGHT,0)),Z.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=Y)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_BOTTOM,0)),Y.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=fa)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_LEFT,0)),fa.value=isNaN(a)?"":a+" pt"});ha=this.installInputHandler(ea,mxConstants.STYLE_SPACING,2,-999,999," pt");aa=this.installInputHandler(ca,mxConstants.STYLE_SPACING_TOP,0,-999,999," pt");ka=this.installInputHandler(Z, -mxConstants.STYLE_SPACING_RIGHT,0,-999,999," pt");R=this.installInputHandler(Y,mxConstants.STYLE_SPACING_BOTTOM,0,-999,999," pt");ba=this.installInputHandler(fa,mxConstants.STYLE_SPACING_LEFT,0,-999,999," pt");this.addKeyHandler(I,V);this.addKeyHandler(ea,V);this.addKeyHandler(ca,V);this.addKeyHandler(Z,V);this.addKeyHandler(Y,V);this.addKeyHandler(fa,V);b.getModel().addListener(mxEvent.CHANGE,V);this.listeners.push({destroy:function(){b.getModel().removeListener(V)}});V();if(b.cellEditor.isContentEditing()){var na= -!1,e=function(){na||(na=!0,window.setTimeout(function(){for(var a=b.getSelectedElement();null!=a&&a.nodeType!=mxConstants.NODETYPE_ELEMENT;)a=a.parentNode;if(null!=a){var d=function(a,b){if(null!=a&&null!=b){if(a==b)return!0;if(a.length>b.length+1)return a.substring(a.length-b.length-1,a.length)=="-"+b}return!1},e=function(c){if(null!=b.getParentByName(a,c,b.cellEditor.textarea))return!0;for(var d=a;null!=d&&1==d.childNodes.length;)if(d=d.childNodes[0],d.nodeName==c)return!0;return!1},g=function(a){a= +a==mxConstants.TEXT_DIRECTION_RTL?O.value="rightToLeft":a==mxConstants.TEXT_DIRECTION_LTR?O.value="leftToRight":a==mxConstants.TEXT_DIRECTION_AUTO&&(O.value="automatic");if(d||document.activeElement!=fa)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING,2)),fa.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=ca)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_TOP,0)),ca.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=Z)a=parseFloat(mxUtils.getValue(f.style, +mxConstants.STYLE_SPACING_RIGHT,0)),Z.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=Y)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_BOTTOM,0)),Y.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=ga)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_LEFT,0)),ga.value=isNaN(a)?"":a+" pt"});ka=this.installInputHandler(fa,mxConstants.STYLE_SPACING,2,-999,999," pt");aa=this.installInputHandler(ca,mxConstants.STYLE_SPACING_TOP,0,-999,999," pt");la=this.installInputHandler(Z, +mxConstants.STYLE_SPACING_RIGHT,0,-999,999," pt");R=this.installInputHandler(Y,mxConstants.STYLE_SPACING_BOTTOM,0,-999,999," pt");ba=this.installInputHandler(ga,mxConstants.STYLE_SPACING_LEFT,0,-999,999," pt");this.addKeyHandler(H,W);this.addKeyHandler(fa,W);this.addKeyHandler(ca,W);this.addKeyHandler(Z,W);this.addKeyHandler(Y,W);this.addKeyHandler(ga,W);b.getModel().addListener(mxEvent.CHANGE,W);this.listeners.push({destroy:function(){b.getModel().removeListener(W)}});W();if(b.cellEditor.isContentEditing()){var ma= +!1,e=function(){ma||(ma=!0,window.setTimeout(function(){for(var a=b.getSelectedElement();null!=a&&a.nodeType!=mxConstants.NODETYPE_ELEMENT;)a=a.parentNode;if(null!=a){var d=function(a,b){if(null!=a&&null!=b){if(a==b)return!0;if(a.length>b.length+1)return a.substring(a.length-b.length-1,a.length)=="-"+b}return!1},e=function(c){if(null!=b.getParentByName(a,c,b.cellEditor.textarea))return!0;for(var d=a;null!=d&&1==d.childNodes.length;)if(d=d.childNodes[0],d.nodeName==c)return!0;return!1},g=function(a){a= null!=a?a.fontSize:null;return null!=a&&"px"==a.substring(a.length-2)?parseFloat(a):mxConstants.DEFAULT_FONTSIZE},f=function(a,b,c){return null!=c.style&&null!=b?(b=b.lineHeight,"%"==c.style.lineHeight.substring(c.style.lineHeight.length-1)?parseInt(c.style.lineHeight)/100:"px"==b.substring(b.length-2)?parseFloat(b)/a:parseInt(b)):""};a==b.cellEditor.textarea&&1==b.cellEditor.textarea.children.length&&b.cellEditor.textarea.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&(a=b.cellEditor.textarea.firstChild); -var h=mxUtils.getCurrentStyle(a),k=g(h),p=f(k,h,a),n=a.getElementsByTagName("*");if(0<n.length&&window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11)for(var t=window.getSelection(),w=0;w<n.length;w++)if(t.containsNode(n[w],!0)){temp=mxUtils.getCurrentStyle(n[w]);var k=Math.max(g(temp),k),v=f(k,temp,n[w]);if(v!=p||isNaN(v))p=""}null!=h&&(c(m[0],"bold"==h.fontWeight||400<h.fontWeight||e("B")||e("STRONG")),c(m[1],"italic"==h.fontStyle||e("I")||e("EM")),c(m[2],e("U")),c(u,d(h.textAlign,"left")),c(q, -d(h.textAlign,"center")),c(r,d(h.textAlign,"right")),c(D,d(h.textAlign,"justify")),c(F,e("SUP")),c(x,e("SUB")),C=b.getParentByName(a,"TABLE",b.cellEditor.textarea),L=null==C?null:b.getParentByName(a,"TR",C),M=null==C?null:b.getParentByName(a,"TD",C),E.style.display=null!=C?"":"none",document.activeElement!=I&&("FONT"==a.nodeName&&"4"==a.getAttribute("size")&&null!=B?(a.removeAttribute("size"),a.style.fontSize=B+" pt",B=null):I.value=isNaN(k)?"":k+" pt",v=parseFloat(p),isNaN(v)?ia.value="100 %":ia.value= -Math.round(100*v)+" %"),d=h.color.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)}),e=h.backgroundColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)}),null!=T&&(U="#"==d.charAt(0)? -d:"#000000",T(U,!0)),null!=H&&(A="#"==e.charAt(0)?e:null,H(A,!0)),null!=l.firstChild&&(h=h.fontFamily,"'"==h.charAt(0)&&(h=h.substring(1)),"'"==h.charAt(h.length-1)&&(h=h.substring(0,h.length-1)),'"'==h.charAt(0)&&(h=h.substring(1)),'"'==h.charAt(h.length-1)&&(h=h.substring(0,h.length-1)),l.firstChild.nodeValue=h))}na=!1},0))};(mxClient.IS_FF||mxClient.IS_EDGE||mxClient.IS_IE||mxClient.IS_IE11)&&mxEvent.addListener(b.cellEditor.textarea,"DOMSubtreeModified",e);mxEvent.addListener(b.cellEditor.textarea, +var h=mxUtils.getCurrentStyle(a),k=g(h),p=f(k,h,a),n=a.getElementsByTagName("*");if(0<n.length&&window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11)for(var t=window.getSelection(),v=0;v<n.length;v++)if(t.containsNode(n[v],!0)){temp=mxUtils.getCurrentStyle(n[v]);var k=Math.max(g(temp),k),w=f(k,temp,n[v]);if(w!=p||isNaN(w))p=""}null!=h&&(c(m[0],"bold"==h.fontWeight||400<h.fontWeight||e("B")||e("STRONG")),c(m[1],"italic"==h.fontStyle||e("I")||e("EM")),c(m[2],e("U")),c(u,d(h.textAlign,"left")),c(q, +d(h.textAlign,"center")),c(r,d(h.textAlign,"right")),c(D,d(h.textAlign,"justify")),c(E,e("SUP")),c(x,e("SUB")),C=b.getParentByName(a,"TABLE",b.cellEditor.textarea),L=null==C?null:b.getParentByName(a,"TR",C),M=null==C?null:b.getParentByName(a,"TD",C),F.style.display=null!=C?"":"none",document.activeElement!=H&&("FONT"==a.nodeName&&"4"==a.getAttribute("size")&&null!=B?(a.removeAttribute("size"),a.style.fontSize=B+" pt",B=null):H.value=isNaN(k)?"":k+" pt",w=parseFloat(p),isNaN(w)?ja.value="100 %":ja.value= +Math.round(100*w)+" %"),d=h.color.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)}),e=h.backgroundColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)}),null!=T&&(U="#"==d.charAt(0)? +d:"#000000",T(U,!0)),null!=I&&(A="#"==e.charAt(0)?e:null,I(A,!0)),null!=l.firstChild&&(h=h.fontFamily,"'"==h.charAt(0)&&(h=h.substring(1)),"'"==h.charAt(h.length-1)&&(h=h.substring(0,h.length-1)),'"'==h.charAt(0)&&(h=h.substring(1)),'"'==h.charAt(h.length-1)&&(h=h.substring(0,h.length-1)),l.firstChild.nodeValue=h))}ma=!1},0))};(mxClient.IS_FF||mxClient.IS_EDGE||mxClient.IS_IE||mxClient.IS_IE11)&&mxEvent.addListener(b.cellEditor.textarea,"DOMSubtreeModified",e);mxEvent.addListener(b.cellEditor.textarea, "input",e);mxEvent.addListener(b.cellEditor.textarea,"touchend",e);mxEvent.addListener(b.cellEditor.textarea,"mouseup",e);mxEvent.addListener(b.cellEditor.textarea,"keyup",e);this.listeners.push({destroy:function(){}});e()}return a};StyleFormatPanel=function(a,c,d){BaseFormatPanel.call(this,a,c,d);this.init()};mxUtils.extend(StyleFormatPanel,BaseFormatPanel);StyleFormatPanel.prototype.defaultStrokeColor="black"; StyleFormatPanel.prototype.init=function(){var a=this.format.getSelectionState();a.containsImage&&1==a.vertices.length&&"image"==a.style.shape&&null!=a.style.image&&"data:image/svg+xml;"==a.style.image.substring(0,19)&&this.container.appendChild(this.addSvgStyles(this.createPanel()));a.containsImage&&"image"!=a.style.shape||this.container.appendChild(this.addFill(this.createPanel()));this.container.appendChild(this.addStroke(this.createPanel()));this.container.appendChild(this.addLineJumps(this.createPanel())); a=this.createRelativeOption(mxResources.get("opacity"),mxConstants.STYLE_OPACITY,41);a.style.paddingTop="8px";a.style.paddingBottom="8px";this.container.appendChild(a);this.container.appendChild(this.addEffects(this.createPanel()));a=this.addEditOps(this.createPanel());null!=a.firstChild&&mxUtils.br(a);this.container.appendChild(this.addStyleOps(a))}; @@ -2841,7 +2843,7 @@ v.style.right="20px",w.style.position="absolute",w.style.right="32px",w.style.he mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["elbowEdgeStyle",null,null,null],"geIcon geSprite geSprite-horizontalelbow",null,!0).setAttribute("title",mxResources.get("simple")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["elbowEdgeStyle","vertical",null,null],"geIcon geSprite geSprite-verticalelbow",null,!0).setAttribute("title",mxResources.get("simple")),this.editorUi.menus.edgeStyleChange(a, "",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["isometricEdgeStyle",null,null,null],"geIcon geSprite geSprite-horizontalisometric",null,!0).setAttribute("title",mxResources.get("isometric")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["isometricEdgeStyle","vertical",null,null],"geIcon geSprite geSprite-verticalisometric",null,!0).setAttribute("title", mxResources.get("isometric")),"connector"==e.style.shape&&this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["orthogonalEdgeStyle","1",null],"geIcon geSprite geSprite-curved",null,!0).setAttribute("title",mxResources.get("curved")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["entityRelationEdgeStyle",null,null],"geIcon geSprite geSprite-entity",null, -!0).setAttribute("title",mxResources.get("entityRelation")))})),F=this.editorUi.toolbar.addMenuFunctionInContainer(k,"geSprite-startclassic",mxResources.get("linestart"),!1,mxUtils.bind(this,function(a){if("connector"==e.style.shape||"flexArrow"==e.style.shape||"filledEdge"==e.style.shape){var b=this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.NONE,0],"geIcon",null,!1);b.setAttribute("title",mxResources.get("none"));b.firstChild.firstChild.innerHTML= +!0).setAttribute("title",mxResources.get("entityRelation")))})),E=this.editorUi.toolbar.addMenuFunctionInContainer(k,"geSprite-startclassic",mxResources.get("linestart"),!1,mxUtils.bind(this,function(a){if("connector"==e.style.shape||"flexArrow"==e.style.shape||"filledEdge"==e.style.shape){var b=this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.NONE,0],"geIcon",null,!1);b.setAttribute("title",mxResources.get("none"));b.firstChild.firstChild.innerHTML= '<font style="font-size:10px;">'+mxUtils.htmlEntities(mxResources.get("none"))+"</font>";"connector"==e.style.shape||"filledEdge"==e.style.shape?(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.ARROW_CLASSIC,1],"geIcon geSprite geSprite-startclassic",null,!1).setAttribute("title",mxResources.get("classic")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.ARROW_CLASSIC_THIN,1],"geIcon geSprite geSprite-startclassicthin", null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.ARROW_OPEN,0],"geIcon geSprite geSprite-startopen",null,!1).setAttribute("title",mxResources.get("openArrow")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.ARROW_OPEN_THIN,0],"geIcon geSprite geSprite-startopenthin",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["openAsync",0],"geIcon geSprite geSprite-startopenasync", null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.ARROW_BLOCK,1],"geIcon geSprite geSprite-startblock",null,!1).setAttribute("title",mxResources.get("block")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.ARROW_BLOCK_THIN,1],"geIcon geSprite geSprite-startblockthin",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["async",1],"geIcon geSprite geSprite-startasync", @@ -2863,21 +2865,21 @@ mxResources.get("classic")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstant 0],"geIcon geSprite geSprite-enddiamondtrans",null,!1).setAttribute("title",mxResources.get("diamond")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_DIAMOND_THIN,0],"geIcon geSprite geSprite-endthindiamondtrans",null,!1).setAttribute("title",mxResources.get("diamondThin")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["dash",0],"geIcon geSprite geSprite-enddash",null,!1),this.editorUi.menus.edgeStyleChange(a, "",[mxConstants.STYLE_ENDARROW,"endFill"],["cross",0],"geIcon geSprite geSprite-endcross",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["circlePlus",0],"geIcon geSprite geSprite-endcircleplus",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["circle",1],"geIcon geSprite geSprite-endcircle",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERone",0],"geIcon geSprite geSprite-enderone", null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERmandOne",0],"geIcon geSprite geSprite-enderonetoone",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERmany",0],"geIcon geSprite geSprite-endermany",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERoneToMany",0],"geIcon geSprite geSprite-enderonetomany",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW, -"endFill"],["ERzeroToOne",1],"geIcon geSprite geSprite-enderoneopt",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERzeroToMany",1],"geIcon geSprite geSprite-endermanyopt",null,!1)):this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],"geIcon geSprite geSprite-endblocktrans",null,!1).setAttribute("title",mxResources.get("block"))}}));this.addArrow(r,8);this.addArrow(x);this.addArrow(F);this.addArrow(D);v=this.addArrow(l, -9);v.className="geIcon";v.style.width="84px";z=this.addArrow(m,9);z.className="geIcon";z.style.width="22px";var E=document.createElement("div");E.style.width="85px";E.style.height="1px";E.style.borderBottom="1px solid "+this.defaultStrokeColor;E.style.marginBottom="9px";v.appendChild(E);var C=document.createElement("div");C.style.width="23px";C.style.height="1px";C.style.borderBottom="1px solid "+this.defaultStrokeColor;C.style.marginBottom="9px";z.appendChild(C);l.style.height="15px";m.style.height= -"15px";r.style.height="15px";x.style.height="17px";F.style.marginLeft="3px";F.style.height="17px";D.style.marginLeft="3px";D.style.height="17px";a.appendChild(h);a.appendChild(q);a.appendChild(n);l=n.cloneNode(!1);l.style.paddingBottom="6px";l.style.paddingTop="4px";l.style.fontWeight="normal";m=document.createElement("div");m.style.position="absolute";m.style.marginLeft="3px";m.style.marginBottom="12px";m.style.marginTop="2px";m.style.fontWeight="normal";m.style.width="76px";mxUtils.write(m,mxResources.get("lineend")); +"endFill"],["ERzeroToOne",1],"geIcon geSprite geSprite-enderoneopt",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERzeroToMany",1],"geIcon geSprite geSprite-endermanyopt",null,!1)):this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],"geIcon geSprite geSprite-endblocktrans",null,!1).setAttribute("title",mxResources.get("block"))}}));this.addArrow(r,8);this.addArrow(x);this.addArrow(E);this.addArrow(D);v=this.addArrow(l, +9);v.className="geIcon";v.style.width="84px";z=this.addArrow(m,9);z.className="geIcon";z.style.width="22px";var F=document.createElement("div");F.style.width="85px";F.style.height="1px";F.style.borderBottom="1px solid "+this.defaultStrokeColor;F.style.marginBottom="9px";v.appendChild(F);var C=document.createElement("div");C.style.width="23px";C.style.height="1px";C.style.borderBottom="1px solid "+this.defaultStrokeColor;C.style.marginBottom="9px";z.appendChild(C);l.style.height="15px";m.style.height= +"15px";r.style.height="15px";x.style.height="17px";E.style.marginLeft="3px";E.style.height="17px";D.style.marginLeft="3px";D.style.height="17px";a.appendChild(h);a.appendChild(q);a.appendChild(n);l=n.cloneNode(!1);l.style.paddingBottom="6px";l.style.paddingTop="4px";l.style.fontWeight="normal";m=document.createElement("div");m.style.position="absolute";m.style.marginLeft="3px";m.style.marginBottom="12px";m.style.marginTop="2px";m.style.fontWeight="normal";m.style.width="76px";mxUtils.write(m,mxResources.get("lineend")); l.appendChild(m);var M,L,J=this.addUnitInput(l,"pt",74,33,function(){M.apply(this,arguments)}),G=this.addUnitInput(l,"pt",20,33,function(){L.apply(this,arguments)});mxUtils.br(l);v=document.createElement("div");v.style.height="8px";l.appendChild(v);m=m.cloneNode(!1);mxUtils.write(m,mxResources.get("linestart"));l.appendChild(m);var K,O,Q=this.addUnitInput(l,"pt",74,33,function(){K.apply(this,arguments)}),P=this.addUnitInput(l,"pt",20,33,function(){O.apply(this,arguments)});mxUtils.br(l);this.addLabel(l, mxResources.get("spacing"),74,50);this.addLabel(l,mxResources.get("size"),20,50);mxUtils.br(l);h=h.cloneNode(!1);h.style.fontWeight="normal";h.style.position="relative";h.style.paddingLeft="16px";h.style.marginBottom="2px";h.style.marginTop="6px";h.style.borderWidth="0px";h.style.paddingBottom="18px";m=document.createElement("div");m.style.position="absolute";m.style.marginLeft="3px";m.style.marginBottom="12px";m.style.marginTop="1px";m.style.fontWeight="normal";m.style.width="120px";mxUtils.write(m, -mxResources.get("perimeter"));h.appendChild(m);var I,B=this.addUnitInput(h,"pt",20,41,function(){I.apply(this,arguments)});e.edges.length==f.getSelectionCount()?(a.appendChild(k),mxClient.IS_QUIRKS&&(mxUtils.br(a),mxUtils.br(a)),a.appendChild(l)):e.vertices.length==f.getSelectionCount()&&(mxClient.IS_QUIRKS&&mxUtils.br(a),a.appendChild(h));var H=mxUtils.bind(this,function(a,c,d){function h(a,c,d,g){d=d.getElementsByTagName("div")[0];d.className=b.getCssClassForMarker(g,e.style.shape,a,c);"geSprite geSprite-noarrow"== +mxResources.get("perimeter"));h.appendChild(m);var H,B=this.addUnitInput(h,"pt",20,41,function(){H.apply(this,arguments)});e.edges.length==f.getSelectionCount()?(a.appendChild(k),mxClient.IS_QUIRKS&&(mxUtils.br(a),mxUtils.br(a)),a.appendChild(l)):e.vertices.length==f.getSelectionCount()&&(mxClient.IS_QUIRKS&&mxUtils.br(a),a.appendChild(h));var I=mxUtils.bind(this,function(a,c,d){function h(a,c,d,g){d=d.getElementsByTagName("div")[0];d.className=b.getCssClassForMarker(g,e.style.shape,a,c);"geSprite geSprite-noarrow"== d.className&&(d.innerHTML=mxUtils.htmlEntities(mxResources.get("none")),d.style.backgroundImage="none",d.style.verticalAlign="top",d.style.marginTop="5px",d.style.fontSize="10px",d.style.filter="none",d.style.color=this.defaultStrokeColor,d.nextSibling.style.marginTop="0px");return d}e=this.format.getSelectionState();mxUtils.getValue(e.style,p,null);if(d||document.activeElement!=t)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)),t.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!= -w)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)),w.value=isNaN(a)?"":a+" pt";g.style.visibility="connector"==e.style.shape||"filledEdge"==e.style.shape?"":"hidden";"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?g.value="curved":"1"==mxUtils.getValue(e.style,mxConstants.STYLE_ROUNDED,null)&&(g.value="rounded");"1"==mxUtils.getValue(e.style,mxConstants.STYLE_DASHED,null)?null==mxUtils.getValue(e.style,mxConstants.STYLE_DASH_PATTERN,null)?E.style.borderBottom="1px dashed "+ -this.defaultStrokeColor:E.style.borderBottom="1px dotted "+this.defaultStrokeColor:E.style.borderBottom="1px solid "+this.defaultStrokeColor;C.style.borderBottom=E.style.borderBottom;a=x.getElementsByTagName("div")[0];c=mxUtils.getValue(e.style,mxConstants.STYLE_EDGE,null);"1"==mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,null)&&(c=null);"orthogonalEdgeStyle"==c&&"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?a.className="geSprite geSprite-curved":a.className="straight"==c|| +w)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)),w.value=isNaN(a)?"":a+" pt";g.style.visibility="connector"==e.style.shape||"filledEdge"==e.style.shape?"":"hidden";"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?g.value="curved":"1"==mxUtils.getValue(e.style,mxConstants.STYLE_ROUNDED,null)&&(g.value="rounded");"1"==mxUtils.getValue(e.style,mxConstants.STYLE_DASHED,null)?null==mxUtils.getValue(e.style,mxConstants.STYLE_DASH_PATTERN,null)?F.style.borderBottom="1px dashed "+ +this.defaultStrokeColor:F.style.borderBottom="1px dotted "+this.defaultStrokeColor:F.style.borderBottom="1px solid "+this.defaultStrokeColor;C.style.borderBottom=F.style.borderBottom;a=x.getElementsByTagName("div")[0];c=mxUtils.getValue(e.style,mxConstants.STYLE_EDGE,null);"1"==mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,null)&&(c=null);"orthogonalEdgeStyle"==c&&"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?a.className="geSprite geSprite-curved":a.className="straight"==c|| "none"==c||null==c?"geSprite geSprite-straight":"entityRelationEdgeStyle"==c?"geSprite geSprite-entity":"elbowEdgeStyle"==c?"geSprite "+("vertical"==mxUtils.getValue(e.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalelbow":"geSprite-horizontalelbow"):"isometricEdgeStyle"==c?"geSprite "+("vertical"==mxUtils.getValue(e.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalisometric":"geSprite-horizontalisometric"):"geSprite geSprite-orthogonal";r.getElementsByTagName("div")[0].className="link"== -e.style.shape?"geSprite geSprite-linkedge":"flexArrow"==e.style.shape?"geSprite geSprite-arrow":"arrow"==e.style.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection";e.edges.length==f.getSelectionCount()?(q.style.display="",n.style.display="none"):(q.style.display="none",n.style.display="");a=h(mxUtils.getValue(e.style,mxConstants.STYLE_STARTARROW,null),mxUtils.getValue(e.style,"startFill","1"),F,"start");c=h(mxUtils.getValue(e.style,mxConstants.STYLE_ENDARROW,null),mxUtils.getValue(e.style, -"endFill","1"),D,"end");"arrow"==e.style.shape?(a.className="geSprite geSprite-noarrow",c.className="geSprite geSprite-endblocktrans"):"link"==e.style.shape&&(a.className="geSprite geSprite-noarrow",c.className="geSprite geSprite-noarrow");mxUtils.setOpacity(x,"arrow"==e.style.shape?30:100);"connector"!=e.style.shape&&"flexArrow"!=e.style.shape&&"filledEdge"!=e.style.shape?(mxUtils.setOpacity(F,30),mxUtils.setOpacity(D,30)):(mxUtils.setOpacity(F,100),mxUtils.setOpacity(D,100));if(d||document.activeElement!= +e.style.shape?"geSprite geSprite-linkedge":"flexArrow"==e.style.shape?"geSprite geSprite-arrow":"arrow"==e.style.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection";e.edges.length==f.getSelectionCount()?(q.style.display="",n.style.display="none"):(q.style.display="none",n.style.display="");a=h(mxUtils.getValue(e.style,mxConstants.STYLE_STARTARROW,null),mxUtils.getValue(e.style,"startFill","1"),E,"start");c=h(mxUtils.getValue(e.style,mxConstants.STYLE_ENDARROW,null),mxUtils.getValue(e.style, +"endFill","1"),D,"end");"arrow"==e.style.shape?(a.className="geSprite geSprite-noarrow",c.className="geSprite geSprite-endblocktrans"):"link"==e.style.shape&&(a.className="geSprite geSprite-noarrow",c.className="geSprite geSprite-noarrow");mxUtils.setOpacity(x,"arrow"==e.style.shape?30:100);"connector"!=e.style.shape&&"flexArrow"!=e.style.shape&&"filledEdge"!=e.style.shape?(mxUtils.setOpacity(E,30),mxUtils.setOpacity(D,30)):(mxUtils.setOpacity(E,100),mxUtils.setOpacity(D,100));if(d||document.activeElement!= P)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)),P.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=Q)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING,0)),Q.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=G)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE)),G.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=Q)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING, 0)),J.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=B)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_PERIMETER_SPACING,0)),B.value=isNaN(a)?"":a+" pt"});O=this.installInputHandler(P,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE,0,999," pt");K=this.installInputHandler(Q,mxConstants.STYLE_SOURCE_PERIMETER_SPACING,0,-999,999," pt");L=this.installInputHandler(G,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE,0,999," pt");M=this.installInputHandler(J,mxConstants.STYLE_TARGET_PERIMETER_SPACING, -0,-999,999," pt");I=this.installInputHandler(B,mxConstants.STYLE_PERIMETER_SPACING,0,0,999," pt");this.addKeyHandler(t,H);this.addKeyHandler(P,H);this.addKeyHandler(Q,H);this.addKeyHandler(G,H);this.addKeyHandler(J,H);this.addKeyHandler(B,H);f.getModel().addListener(mxEvent.CHANGE,H);this.listeners.push({destroy:function(){f.getModel().removeListener(H)}});H();return a}; +0,-999,999," pt");H=this.installInputHandler(B,mxConstants.STYLE_PERIMETER_SPACING,0,0,999," pt");this.addKeyHandler(t,I);this.addKeyHandler(P,I);this.addKeyHandler(Q,I);this.addKeyHandler(G,I);this.addKeyHandler(J,I);this.addKeyHandler(B,I);f.getModel().addListener(mxEvent.CHANGE,I);this.listeners.push({destroy:function(){f.getModel().removeListener(I)}});I();return a}; StyleFormatPanel.prototype.addLineJumps=function(a){var c=this.format.getSelectionState();if(Graph.lineJumpsEnabled&&0<c.edges.length&&0==c.vertices.length&&c.lineJumps){a.style.padding="8px 0px 24px 18px";var d=this.editorUi,b=d.editor.graph,f=document.createElement("div");f.style.position="absolute";f.style.fontWeight="bold";f.style.width="80px";mxUtils.write(f,mxResources.get("lineJumps"));a.appendChild(f);var e=document.createElement("select");e.style.position="absolute";e.style.marginTop="-2px"; e.style.right="76px";e.style.width="62px";for(var f=["none","arc","gap","sharp"],h=0;h<f.length;h++){var g=document.createElement("option");g.setAttribute("value",f[h]);mxUtils.write(g,mxResources.get(f[h]));e.appendChild(g)}mxEvent.addListener(e,"change",function(a){b.getModel().beginUpdate();try{b.setCellStyles("jumpStyle",e.value,b.getSelectionCells()),d.fireEvent(new mxEventObject("styleChanged","keys",["jumpStyle"],"values",[e.value],"cells",b.getSelectionCells()))}finally{b.getModel().endUpdate()}mxEvent.consume(a)}); mxEvent.addListener(e,"click",function(a){mxEvent.consume(a)});a.appendChild(e);var k,l=this.addUnitInput(a,"pt",22,33,function(){k.apply(this,arguments)});k=this.installInputHandler(l,"jumpSize",Graph.defaultJumpSize,0,999," pt");var m=mxUtils.bind(this,function(a,b,d){c=this.format.getSelectionState();e.value=mxUtils.getValue(c.style,"jumpStyle","none");if(d||document.activeElement!=l)a=parseInt(mxUtils.getValue(c.style,"jumpSize",Graph.defaultJumpSize)),l.value=isNaN(a)?"":a+" pt"});this.addKeyHandler(l, @@ -2903,14 +2905,14 @@ function(){b.set(d.pageFormat)});var f=function(){b.set(d.pageFormat)};c.addList DiagramFormatPanel.prototype.addStyleOps=function(a){var c=mxUtils.button(mxResources.get("editData"),mxUtils.bind(this,function(a){this.editorUi.actions.get("editData").funct()}));c.setAttribute("title",mxResources.get("editData")+" ("+this.editorUi.actions.get("editData").shortcut+")");c.style.width="202px";c.style.marginBottom="2px";a.appendChild(c);mxUtils.br(a);c=mxUtils.button(mxResources.get("clearDefaultStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("clearDefaultStyle").funct()})); c.setAttribute("title",mxResources.get("clearDefaultStyle")+" ("+this.editorUi.actions.get("clearDefaultStyle").shortcut+")");c.style.width="202px";a.appendChild(c);return a};DiagramFormatPanel.prototype.destroy=function(){BaseFormatPanel.prototype.destroy.apply(this,arguments);this.gridEnabledListener&&(this.editorUi.removeListener(this.gridEnabledListener),this.gridEnabledListener=null)};(function(){function a(){mxCylinder.call(this)}function c(){mxActor.call(this)}function d(){mxCylinder.call(this)}function b(){mxCylinder.call(this)}function f(){mxCylinder.call(this)}function e(){mxActor.call(this)}function h(){mxCylinder.call(this)}function g(){mxActor.call(this)}function k(){mxActor.call(this)}function l(){mxActor.call(this)}function m(){mxActor.call(this)}function p(){mxActor.call(this)}function n(){mxActor.call(this)}function u(){mxActor.call(this)}function q(a,b){this.canvas= a;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.defaultVariation=b;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,q.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,q.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,q.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,q.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo; -this.canvas.curveTo=mxUtils.bind(this,q.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,q.prototype.arcTo)}function r(){mxRectangleShape.call(this)}function t(){mxRectangleShape.call(this)}function w(){mxActor.call(this)}function v(){mxActor.call(this)}function z(){mxActor.call(this)}function x(){mxRectangleShape.call(this)}function F(){mxRectangleShape.call(this)}function D(){mxCylinder.call(this)}function E(){mxShape.call(this)}function C(){mxShape.call(this)} -function M(){mxEllipse.call(this)}function L(){mxShape.call(this)}function J(){mxShape.call(this)}function G(){mxRectangleShape.call(this)}function K(){mxShape.call(this)}function O(){mxShape.call(this)}function Q(){mxShape.call(this)}function P(){mxShape.call(this)}function I(){mxShape.call(this)}function B(){mxCylinder.call(this)}function H(){mxDoubleEllipse.call(this)}function A(){mxDoubleEllipse.call(this)}function T(){mxArrowConnector.call(this);this.spacing=0}function U(){mxArrowConnector.call(this); -this.spacing=0}function X(){mxActor.call(this)}function W(){mxRectangleShape.call(this)}function aa(){mxActor.call(this)}function ha(){mxActor.call(this)}function ba(){mxActor.call(this)}function R(){mxActor.call(this)}function ka(){mxActor.call(this)}function ca(){mxActor.call(this)}function ea(){mxActor.call(this)}function fa(){mxActor.call(this)}function Y(){mxActor.call(this)}function Z(){mxActor.call(this)}function da(){mxEllipse.call(this)}function ia(){mxEllipse.call(this)}function V(){mxEllipse.call(this)} -function na(){mxRhombus.call(this)}function S(){mxEllipse.call(this)}function Ba(){mxEllipse.call(this)}function Ca(){mxEllipse.call(this)}function ta(){mxEllipse.call(this)}function ua(){mxActor.call(this)}function oa(){mxActor.call(this)}function pa(){mxActor.call(this)}function la(){mxConnector.call(this)}function Fa(a,b,c,d,e,g,f,h,k,l){f+=k;var y=d.clone();d.x-=e*(2*f+k);d.y-=g*(2*f+k);e*=f+k;g*=f+k;return function(){a.ellipse(y.x-e-f,y.y-g-f,2*f,2*f);l?a.fillAndStroke():a.stroke()}}mxUtils.extend(a, +this.canvas.curveTo=mxUtils.bind(this,q.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,q.prototype.arcTo)}function r(){mxRectangleShape.call(this)}function t(){mxRectangleShape.call(this)}function w(){mxActor.call(this)}function v(){mxActor.call(this)}function z(){mxActor.call(this)}function x(){mxRectangleShape.call(this)}function E(){mxRectangleShape.call(this)}function D(){mxCylinder.call(this)}function F(){mxShape.call(this)}function C(){mxShape.call(this)} +function M(){mxEllipse.call(this)}function L(){mxShape.call(this)}function J(){mxShape.call(this)}function G(){mxRectangleShape.call(this)}function K(){mxShape.call(this)}function O(){mxShape.call(this)}function Q(){mxShape.call(this)}function P(){mxShape.call(this)}function H(){mxShape.call(this)}function B(){mxCylinder.call(this)}function I(){mxDoubleEllipse.call(this)}function A(){mxDoubleEllipse.call(this)}function T(){mxArrowConnector.call(this);this.spacing=0}function U(){mxArrowConnector.call(this); +this.spacing=0}function X(){mxActor.call(this)}function V(){mxRectangleShape.call(this)}function aa(){mxActor.call(this)}function ka(){mxActor.call(this)}function ba(){mxActor.call(this)}function R(){mxActor.call(this)}function la(){mxActor.call(this)}function ca(){mxActor.call(this)}function fa(){mxActor.call(this)}function ga(){mxActor.call(this)}function Y(){mxActor.call(this)}function Z(){mxActor.call(this)}function ea(){mxEllipse.call(this)}function ja(){mxEllipse.call(this)}function W(){mxEllipse.call(this)} +function ma(){mxRhombus.call(this)}function S(){mxEllipse.call(this)}function Ba(){mxEllipse.call(this)}function Ca(){mxEllipse.call(this)}function ua(){mxEllipse.call(this)}function ta(){mxActor.call(this)}function pa(){mxActor.call(this)}function qa(){mxActor.call(this)}function na(){mxConnector.call(this)}function Fa(a,b,c,d,e,g,f,h,k,l){f+=k;var y=d.clone();d.x-=e*(2*f+k);d.y-=g*(2*f+k);e*=f+k;g*=f+k;return function(){a.ellipse(y.x-e-f,y.y-g-f,2*f,2*f);l?a.fillAndStroke():a.stroke()}}mxUtils.extend(a, mxCylinder);a.prototype.size=20;a.prototype.darkOpacity=0;a.prototype.darkOpacity2=0;a.prototype.paintVertexShape=function(a,b,c,d,e){var g=Math.max(0,Math.min(d,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),f=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),y=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));a.translate(b,c);a.begin();a.moveTo(0,0);a.lineTo(d-g,0);a.lineTo(d, g);a.lineTo(d,e);a.lineTo(g,e);a.lineTo(0,e-g);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=f&&(a.setFillAlpha(Math.abs(f)),a.setFillColor(0>f?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(d-g,0),a.lineTo(d,g),a.lineTo(g,g),a.close(),a.fill()),0!=y&&(a.setFillAlpha(Math.abs(y)),a.setFillColor(0>y?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(g,g),a.lineTo(g,e),a.lineTo(0,e-g),a.close(),a.fill()),a.begin(),a.moveTo(g,e),a.lineTo(g,g),a.lineTo(0, -0),a.moveTo(g,g),a.lineTo(d,g),a.end(),a.stroke())};a.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?(a=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(a,a,0,0)):null};mxCellRenderer.registerShape("cube",a);var Aa=Math.tan(mxUtils.toRadians(30)),ma=(.5-Aa)/2;mxUtils.extend(c,mxActor);c.prototype.size=20;c.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/Aa);a.translate((d-b)/2,(e-b)/2+b/4);a.moveTo(0,.25*b);a.lineTo(.5* -b,b*ma);a.lineTo(b,.25*b);a.lineTo(.5*b,(.5-ma)*b);a.lineTo(0,.25*b);a.close();a.end()};mxCellRenderer.registerShape("isoRectangle",c);mxUtils.extend(d,mxCylinder);d.prototype.size=20;d.prototype.redrawPath=function(a,b,c,d,e,g){b=Math.min(d,e/(.5+Aa));g?(a.moveTo(0,.25*b),a.lineTo(.5*b,(.5-ma)*b),a.lineTo(b,.25*b),a.moveTo(.5*b,(.5-ma)*b),a.lineTo(.5*b,(1-ma)*b)):(a.translate((d-b)/2,(e-b)/2),a.moveTo(0,.25*b),a.lineTo(.5*b,b*ma),a.lineTo(b,.25*b),a.lineTo(b,.75*b),a.lineTo(.5*b,(1-ma)*b),a.lineTo(0, +0),a.moveTo(g,g),a.lineTo(d,g),a.end(),a.stroke())};a.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?(a=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(a,a,0,0)):null};mxCellRenderer.registerShape("cube",a);var Aa=Math.tan(mxUtils.toRadians(30)),oa=(.5-Aa)/2;mxUtils.extend(c,mxActor);c.prototype.size=20;c.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/Aa);a.translate((d-b)/2,(e-b)/2+b/4);a.moveTo(0,.25*b);a.lineTo(.5* +b,b*oa);a.lineTo(b,.25*b);a.lineTo(.5*b,(.5-oa)*b);a.lineTo(0,.25*b);a.close();a.end()};mxCellRenderer.registerShape("isoRectangle",c);mxUtils.extend(d,mxCylinder);d.prototype.size=20;d.prototype.redrawPath=function(a,b,c,d,e,g){b=Math.min(d,e/(.5+Aa));g?(a.moveTo(0,.25*b),a.lineTo(.5*b,(.5-oa)*b),a.lineTo(b,.25*b),a.moveTo(.5*b,(.5-oa)*b),a.lineTo(.5*b,(1-oa)*b)):(a.translate((d-b)/2,(e-b)/2),a.moveTo(0,.25*b),a.lineTo(.5*b,b*oa),a.lineTo(b,.25*b),a.lineTo(b,.75*b),a.lineTo(.5*b,(1-oa)*b),a.lineTo(0, .75*b),a.close());a.end()};mxCellRenderer.registerShape("isoCube",d);mxUtils.extend(b,mxCylinder);b.prototype.redrawPath=function(a,b,c,d,e,g){b=Math.min(e/2,Math.round(e/8)+this.strokewidth-1);if(g&&null!=this.fill||!g&&null==this.fill)a.moveTo(0,b),a.curveTo(0,2*b,d,2*b,d,b),g||(a.stroke(),a.begin()),a.translate(0,b/2),a.moveTo(0,b),a.curveTo(0,2*b,d,2*b,d,b),g||(a.stroke(),a.begin()),a.translate(0,b/2),a.moveTo(0,b),a.curveTo(0,2*b,d,2*b,d,b),g||(a.stroke(),a.begin()),a.translate(0,-b);g||(a.moveTo(0, b),a.curveTo(0,-b/3,d,-b/3,d,b),a.lineTo(d,e-b),a.curveTo(d,e+b/3,0,e+b/3,0,e-b),a.close())};b.prototype.getLabelMargins=function(a){return new mxRectangle(0,2.5*Math.min(a.height/2,Math.round(a.height/8)+this.strokewidth-1)*this.scale,0,0)};mxCellRenderer.registerShape("datastore",b);mxUtils.extend(f,mxCylinder);f.prototype.size=30;f.prototype.darkOpacity=0;f.prototype.paintVertexShape=function(a,b,c,d,e){var g=Math.max(0,Math.min(d,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))))), f=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));a.translate(b,c);a.begin();a.moveTo(0,0);a.lineTo(d-g,0);a.lineTo(d,g);a.lineTo(d,e);a.lineTo(0,e);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=f&&(a.setFillAlpha(Math.abs(f)),a.setFillColor(0>f?"#FFFFFF":"#000000"),a.begin(),a.moveTo(d-g,0),a.lineTo(d-g,g),a.lineTo(d,g),a.close(),a.fill()),a.begin(),a.moveTo(d-g,0),a.lineTo(d-g,g),a.lineTo(d,g),a.end(),a.stroke())}; @@ -2939,17 +2941,17 @@ this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,e-c),new mxPoi "size",this.fixedSize)))):d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(0,e),new mxPoint(b,e/2)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("step",v);mxUtils.extend(z,mxHexagon);z.prototype.size=.25;z.prototype.isRoundable=function(){return!0};z.prototype.redrawPath= function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,.5*e),new mxPoint(d-b,e),new mxPoint(b,e),new mxPoint(0,.5*e)],this.isRounded,c,!0)};mxCellRenderer.registerShape("hexagon",z);mxUtils.extend(x,mxRectangleShape);x.prototype.isHtmlAllowed=function(){return!1};x.prototype.paintForeground=function(a, b,c,d,e){var g=Math.min(d/5,e/5)+1;a.begin();a.moveTo(b+d/2,c+g);a.lineTo(b+d/2,c+e-g);a.moveTo(b+g,c+e/2);a.lineTo(b+d-g,c+e/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",x);var Ga=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+ -b,a.y+b,a.width-2*b,a.height-2*b)}return a};mxRhombus.prototype.paintVertexShape=function(a,b,c,d,e){Ga.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var g=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=g;c+=g;d-=2*g;e-=2*g;0<d&&0<e&&(a.setShadow(!1),Ga.apply(this,[a,b,c,d,e]))}};mxUtils.extend(F,mxRectangleShape);F.prototype.isHtmlAllowed=function(){return!1};F.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(Math.max(2, -this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};F.prototype.paintForeground=function(a,b,c,d,e){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var g=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=g;c+=g;d-=2*g;e-=2*g;0<d&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var g=0,f;do{f=mxCellRenderer.defaultShapes[this.style["symbol"+ -g]];if(null!=f){var h=this.style["symbol"+g+"Align"],y=this.style["symbol"+g+"VerticalAlign"],k=this.style["symbol"+g+"Width"],l=this.style["symbol"+g+"Height"],va=this.style["symbol"+g+"Spacing"]||0,Da=this.style["symbol"+g+"VSpacing"]||va,m=this.style["symbol"+g+"ArcSpacing"];null!=m&&(m*=this.getArcSize(d+this.strokewidth,e+this.strokewidth),va+=m,Da+=m);var m=b,ra=c,m=h==mxConstants.ALIGN_CENTER?m+(d-k)/2:h==mxConstants.ALIGN_RIGHT?m+(d-k-va):m+va,ra=y==mxConstants.ALIGN_MIDDLE?ra+(e-l)/2:y== -mxConstants.ALIGN_BOTTOM?ra+(e-l-Da):ra+Da;a.save();h=new f;h.style=this.style;f.prototype.paintVertexShape.call(h,a,m,ra,k,l);a.restore()}g++}while(null!=f)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",F);mxUtils.extend(D,mxCylinder);D.prototype.redrawPath=function(a,b,c,d,e,g){g?(a.moveTo(0,0),a.lineTo(d/2,e/2),a.lineTo(d,0),a.end()):(a.moveTo(0,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(0,e),a.close())};mxCellRenderer.registerShape("message", -D);mxUtils.extend(E,mxShape);E.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.ellipse(d/4,0,d/2,e/4);a.fillAndStroke();a.begin();a.moveTo(d/2,e/4);a.lineTo(d/2,2*e/3);a.moveTo(d/2,e/3);a.lineTo(0,e/3);a.moveTo(d/2,e/3);a.lineTo(d,e/3);a.moveTo(d/2,2*e/3);a.lineTo(0,e);a.moveTo(d/2,2*e/3);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlActor",E);mxUtils.extend(C,mxShape);C.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};C.prototype.paintBackground= +b,a.y+b,a.width-2*b,a.height-2*b)}return a};mxRhombus.prototype.paintVertexShape=function(a,b,c,d,e){Ga.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var g=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=g;c+=g;d-=2*g;e-=2*g;0<d&&0<e&&(a.setShadow(!1),Ga.apply(this,[a,b,c,d,e]))}};mxUtils.extend(E,mxRectangleShape);E.prototype.isHtmlAllowed=function(){return!1};E.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(Math.max(2, +this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};E.prototype.paintForeground=function(a,b,c,d,e){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var g=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=g;c+=g;d-=2*g;e-=2*g;0<d&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var g=0,f;do{f=mxCellRenderer.defaultShapes[this.style["symbol"+ +g]];if(null!=f){var h=this.style["symbol"+g+"Align"],y=this.style["symbol"+g+"VerticalAlign"],k=this.style["symbol"+g+"Width"],l=this.style["symbol"+g+"Height"],va=this.style["symbol"+g+"Spacing"]||0,Da=this.style["symbol"+g+"VSpacing"]||va,da=this.style["symbol"+g+"ArcSpacing"];null!=da&&(da*=this.getArcSize(d+this.strokewidth,e+this.strokewidth),va+=da,Da+=da);var da=b,m=c,da=h==mxConstants.ALIGN_CENTER?da+(d-k)/2:h==mxConstants.ALIGN_RIGHT?da+(d-k-va):da+va,m=y==mxConstants.ALIGN_MIDDLE?m+(e-l)/ +2:y==mxConstants.ALIGN_BOTTOM?m+(e-l-Da):m+Da;a.save();h=new f;h.style=this.style;f.prototype.paintVertexShape.call(h,a,da,m,k,l);a.restore()}g++}while(null!=f)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",E);mxUtils.extend(D,mxCylinder);D.prototype.redrawPath=function(a,b,c,d,e,g){g?(a.moveTo(0,0),a.lineTo(d/2,e/2),a.lineTo(d,0),a.end()):(a.moveTo(0,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(0,e),a.close())};mxCellRenderer.registerShape("message", +D);mxUtils.extend(F,mxShape);F.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.ellipse(d/4,0,d/2,e/4);a.fillAndStroke();a.begin();a.moveTo(d/2,e/4);a.lineTo(d/2,2*e/3);a.moveTo(d/2,e/3);a.lineTo(0,e/3);a.moveTo(d/2,e/3);a.lineTo(d,e/3);a.moveTo(d/2,2*e/3);a.lineTo(0,e);a.moveTo(d/2,2*e/3);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlActor",F);mxUtils.extend(C,mxShape);C.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};C.prototype.paintBackground= function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(0,e/4);a.lineTo(0,3*e/4);a.end();a.stroke();a.begin();a.moveTo(0,e/2);a.lineTo(d/6,e/2);a.end();a.stroke();a.ellipse(d/6,0,5*d/6,e);a.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",C);mxUtils.extend(M,mxEllipse);M.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/8,c+e);a.lineTo(b+7*d/8,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("umlEntity", M);mxUtils.extend(L,mxShape);L.prototype.paintVertexShape=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(d,0);a.lineTo(0,e);a.moveTo(0,0);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlDestroy",L);mxUtils.extend(J,mxShape);J.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+a.height/8,a.width,7*a.height/8)};J.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(3*d/8,e/8*1.1);a.lineTo(5*d/8,0);a.end();a.stroke();a.ellipse(0, e/8,d,7*e/8);a.fillAndStroke()};J.prototype.paintForeground=function(a,b,c,d,e){a.begin();a.moveTo(3*d/8,e/8*1.1);a.lineTo(5*d/8,e/4);a.end();a.stroke()};mxCellRenderer.registerShape("umlControl",J);mxUtils.extend(G,mxRectangleShape);G.prototype.size=40;G.prototype.isHtmlAllowed=function(){return!1};G.prototype.getLabelBounds=function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(a.x,a.y,a.width,b)};G.prototype.paintBackground= function(a,b,c,d,e){var g=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),f=mxUtils.getValue(this.style,"participant");null==f||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,a,b,c,d,g):(f=this.state.view.graph.cellRenderer.getShape(f),null!=f&&f!=G&&(f=new f,f.apply(this.state),a.save(),f.paintVertexShape(a,b,c,d,g),a.restore()));g<e&&(a.setDashed(!0),a.begin(),a.moveTo(b+d/2,c+g),a.lineTo(b+d/2,c+e),a.end(),a.stroke())};G.prototype.paintForeground= function(a,b,c,d,e){var g=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,a,b,c,d,Math.min(e,g))};mxCellRenderer.registerShape("umlLifeline",G);mxUtils.extend(K,mxShape);K.prototype.width=60;K.prototype.height=30;K.prototype.corner=10;K.prototype.getLabelMargins=function(a){return new mxRectangle(0,0,a.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),a.height-parseFloat(mxUtils.getValue(this.style, -"height",this.height)*this.scale))};K.prototype.paintBackground=function(a,b,c,d,e){var g=this.corner,f=Math.min(d,Math.max(g,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),h=Math.min(e,Math.max(1.5*g,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),k=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);k!=mxConstants.NONE&&(a.setFillColor(k),a.rect(b,c,d,e),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!= +"height",this.height)*this.scale))};K.prototype.paintBackground=function(a,b,c,d,e){var g=this.corner,f=Math.min(d,Math.max(g,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),h=Math.min(e,Math.max(1.5*g,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),y=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);y!=mxConstants.NONE&&(a.setFillColor(y),a.rect(b,c,d,e),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!= mxConstants.NONE?(this.getGradientBounds(a,b,c,d,e),a.setGradient(this.fill,this.gradient,b,c,d,e,this.gradientDirection)):a.setFillColor(this.fill);a.begin();a.moveTo(b,c);a.lineTo(b+f,c);a.lineTo(b+f,c+Math.max(0,h-1.5*g));a.lineTo(b+Math.max(0,f-g),c+h);a.lineTo(b,c+h);a.close();a.fillAndStroke();a.begin();a.moveTo(b+f,c);a.lineTo(b+d,c);a.lineTo(b+d,c+e);a.lineTo(b,c+e);a.lineTo(b,c+h);a.stroke()};mxCellRenderer.registerShape("umlFrame",K);mxPerimeter.LifelinePerimeter=function(a,b,c,d){d=G.prototype.size; null!=b&&(d=mxUtils.getValue(b.style,"size",d)*b.view.scale);b=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;c.x<a.getCenterX()&&(b=-1*(b+1));return new mxPoint(a.getCenterX()+b,Math.min(a.y+a.height,Math.max(a.y+d,c.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(a,b,c,d){d=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",mxPerimeter.OrthogonalPerimeter); mxPerimeter.BackbonePerimeter=function(a,b,c,d){d=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;null!=b.style.backboneSize&&(d+=parseFloat(b.style.backboneSize)*b.view.scale/2-1);if("south"==b.style[mxConstants.STYLE_DIRECTION]||"north"==b.style[mxConstants.STYLE_DIRECTION])return c.x<a.getCenterX()&&(d=-1*(d+1)),new mxPoint(a.getCenterX()+d,Math.min(a.y+a.height,Math.max(a.y,c.y)));c.y<a.getCenterY()&&(d=-1*(d+1));return new mxPoint(Math.min(a.x+a.width,Math.max(a.x,c.x)), @@ -2964,70 +2966,70 @@ k,h),new mxPoint(f+k,h+y-e),new mxPoint(l,h+y),new mxPoint(f,h+y-e),new mxPoint( mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(e=k*Math.max(0,Math.min(1,e)),f=[new mxPoint(y,f),new mxPoint(g+h,f+e),new mxPoint(g+h,f+k-e),new mxPoint(y,f+k),new mxPoint(g,f+k-e),new mxPoint(g,f+e),new mxPoint(y,f)]):(e=h*Math.max(0,Math.min(1,e)),f=[new mxPoint(g+e,f),new mxPoint(g+h-e,f),new mxPoint(g+h,a),new mxPoint(g+h-e,f+k),new mxPoint(g+e,f+k),new mxPoint(g,a),new mxPoint(g+e,f)]);y=new mxPoint(y,a);d&&(c.x<g||c.x>g+ h?y.y=c.y:y.x=c.x);return mxUtils.getPerimeterPoint(f,y,c)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(O,mxShape);O.prototype.size=10;O.prototype.paintBackground=function(a,b,c,d,e){var g=parseFloat(mxUtils.getValue(this.style,"size",this.size));a.translate(b,c);a.ellipse((d-g)/2,0,g,g);a.fillAndStroke();a.begin();a.moveTo(d/2,g);a.lineTo(d/2,e);a.end();a.stroke()};mxCellRenderer.registerShape("lollipop",O);mxUtils.extend(Q,mxShape);Q.prototype.size= 10;Q.prototype.inset=2;Q.prototype.paintBackground=function(a,b,c,d,e){var g=parseFloat(mxUtils.getValue(this.style,"size",this.size)),f=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(b,c);a.begin();a.moveTo(d/2,g+f);a.lineTo(d/2,e);a.end();a.stroke();a.begin();a.moveTo((d-g)/2-f,g/2);a.quadTo((d-g)/2-f,g+f,d/2,g+f);a.quadTo((d+g)/2+f,g+f,(d+g)/2+f,g/2);a.end();a.stroke()};mxCellRenderer.registerShape("requires",Q);mxUtils.extend(P,mxShape);P.prototype.paintBackground= -function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.end();a.stroke()};mxCellRenderer.registerShape("requiredInterface",P);mxUtils.extend(I,mxShape);I.prototype.inset=2;I.prototype.paintBackground=function(a,b,c,d,e){var g=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(b,c);a.ellipse(0,g,d-2*g,e-2*g);a.fillAndStroke();a.begin();a.moveTo(d/2,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d/2,e);a.end();a.stroke()};mxCellRenderer.registerShape("providedRequiredInterface", -I);mxUtils.extend(B,mxCylinder);B.prototype.jettyWidth=32;B.prototype.jettyHeight=12;B.prototype.redrawPath=function(a,b,c,d,e,g){var f=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));b=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));c=f/2;var f=c+f/2,h=.3*e-b/2,k=.7*e-b/2;g?(a.moveTo(c,h),a.lineTo(f,h),a.lineTo(f,h+b),a.lineTo(c,h+b),a.moveTo(c,k),a.lineTo(f,k),a.lineTo(f,k+b),a.lineTo(c,k+b)):(a.moveTo(c,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(c,e), -a.lineTo(c,k+b),a.lineTo(0,k+b),a.lineTo(0,k),a.lineTo(c,k),a.lineTo(c,h+b),a.lineTo(0,h+b),a.lineTo(0,h),a.lineTo(c,h),a.close());a.end()};mxCellRenderer.registerShape("component",B);mxUtils.extend(H,mxDoubleEllipse);H.prototype.outerStroke=!0;H.prototype.paintVertexShape=function(a,b,c,d,e){var g=Math.min(4,Math.min(d/5,e/5));0<d&&0<e&&(a.ellipse(b+g,c+g,d-2*g,e-2*g),a.fillAndStroke());a.setShadow(!1);this.outerStroke&&(a.ellipse(b,c,d,e),a.stroke())};mxCellRenderer.registerShape("endState",H); -mxUtils.extend(A,H);A.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",A);mxUtils.extend(T,mxArrowConnector);T.prototype.defaultWidth=4;T.prototype.isOpenEnded=function(){return!0};T.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};T.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",T);mxUtils.extend(U,mxArrowConnector);U.prototype.defaultWidth=10;U.prototype.defaultArrowWidth= +function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.end();a.stroke()};mxCellRenderer.registerShape("requiredInterface",P);mxUtils.extend(H,mxShape);H.prototype.inset=2;H.prototype.paintBackground=function(a,b,c,d,e){var g=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(b,c);a.ellipse(0,g,d-2*g,e-2*g);a.fillAndStroke();a.begin();a.moveTo(d/2,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d/2,e);a.end();a.stroke()};mxCellRenderer.registerShape("providedRequiredInterface", +H);mxUtils.extend(B,mxCylinder);B.prototype.jettyWidth=32;B.prototype.jettyHeight=12;B.prototype.redrawPath=function(a,b,c,d,e,g){var f=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));b=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));c=f/2;var f=c+f/2,h=.3*e-b/2,k=.7*e-b/2;g?(a.moveTo(c,h),a.lineTo(f,h),a.lineTo(f,h+b),a.lineTo(c,h+b),a.moveTo(c,k),a.lineTo(f,k),a.lineTo(f,k+b),a.lineTo(c,k+b)):(a.moveTo(c,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(c,e), +a.lineTo(c,k+b),a.lineTo(0,k+b),a.lineTo(0,k),a.lineTo(c,k),a.lineTo(c,h+b),a.lineTo(0,h+b),a.lineTo(0,h),a.lineTo(c,h),a.close());a.end()};mxCellRenderer.registerShape("component",B);mxUtils.extend(I,mxDoubleEllipse);I.prototype.outerStroke=!0;I.prototype.paintVertexShape=function(a,b,c,d,e){var g=Math.min(4,Math.min(d/5,e/5));0<d&&0<e&&(a.ellipse(b+g,c+g,d-2*g,e-2*g),a.fillAndStroke());a.setShadow(!1);this.outerStroke&&(a.ellipse(b,c,d,e),a.stroke())};mxCellRenderer.registerShape("endState",I); +mxUtils.extend(A,I);A.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",A);mxUtils.extend(T,mxArrowConnector);T.prototype.defaultWidth=4;T.prototype.isOpenEnded=function(){return!0};T.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};T.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",T);mxUtils.extend(U,mxArrowConnector);U.prototype.defaultWidth=10;U.prototype.defaultArrowWidth= 20;U.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};U.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};U.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",U);mxUtils.extend(X,mxActor);X.prototype.size=30;X.prototype.isRoundable= -function(){return!0};X.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(0,b),new mxPoint(d,0),new mxPoint(d,e)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("manualInput",X);mxUtils.extend(W,mxRectangleShape);W.prototype.dx=20;W.prototype.dy=20;W.prototype.isHtmlAllowed=function(){return!1}; -W.prototype.paintForeground=function(a,b,c,d,e){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var g=0;if(this.isRounded)var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,g=Math.max(g,Math.min(d*f,e*f));f=Math.max(g,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));g=Math.max(g,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(b,c+g);a.lineTo(b+d,c+g);a.end();a.stroke(); -a.begin();a.moveTo(b+f,c);a.lineTo(b+f,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("internalStorage",W);mxUtils.extend(aa,mxActor);aa.prototype.dx=20;aa.prototype.dy=20;aa.prototype.redrawPath=function(a,b,c,d,e){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE, -mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,c),new mxPoint(b,c),new mxPoint(b,e),new mxPoint(0,e)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("corner",aa);mxUtils.extend(ha,mxActor);ha.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.lineTo(0,e);a.end();a.moveTo(d,0);a.lineTo(d,e);a.end();a.moveTo(0,e/2);a.lineTo(d,e/2);a.end()};mxCellRenderer.registerShape("crossbar",ha);mxUtils.extend(ba,mxActor);ba.prototype.dx=20;ba.prototype.dy= +function(){return!0};X.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(0,b),new mxPoint(d,0),new mxPoint(d,e)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("manualInput",X);mxUtils.extend(V,mxRectangleShape);V.prototype.dx=20;V.prototype.dy=20;V.prototype.isHtmlAllowed=function(){return!1}; +V.prototype.paintForeground=function(a,b,c,d,e){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var g=0;if(this.isRounded)var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,g=Math.max(g,Math.min(d*f,e*f));f=Math.max(g,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));g=Math.max(g,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(b,c+g);a.lineTo(b+d,c+g);a.end();a.stroke(); +a.begin();a.moveTo(b+f,c);a.lineTo(b+f,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("internalStorage",V);mxUtils.extend(aa,mxActor);aa.prototype.dx=20;aa.prototype.dy=20;aa.prototype.redrawPath=function(a,b,c,d,e){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE, +mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,c),new mxPoint(b,c),new mxPoint(b,e),new mxPoint(0,e)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("corner",aa);mxUtils.extend(ka,mxActor);ka.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.lineTo(0,e);a.end();a.moveTo(d,0);a.lineTo(d,e);a.end();a.moveTo(0,e/2);a.lineTo(d,e/2);a.end()};mxCellRenderer.registerShape("crossbar",ka);mxUtils.extend(ba,mxActor);ba.prototype.dx=20;ba.prototype.dy= 20;ba.prototype.redrawPath=function(a,b,c,d,e){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,c),new mxPoint((d+b)/2,c),new mxPoint((d+b)/2,e),new mxPoint((d-b)/2,e),new mxPoint((d- b)/2,c),new mxPoint(0,c)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("tee",ba);mxUtils.extend(R,mxActor);R.prototype.arrowWidth=.3;R.prototype.arrowSize=.2;R.prototype.redrawPath=function(a,b,c,d,e){var g=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth))));b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));c=(e-g)/2;var g=c+g,f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/ -2;this.addPoints(a,[new mxPoint(0,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,g),new mxPoint(0,g)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("singleArrow",R);mxUtils.extend(ka,mxActor);ka.prototype.redrawPath=function(a,b,c,d,e){var g=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",R.prototype.arrowWidth))));b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",R.prototype.arrowSize)))); -c=(e-g)/2;var g=c+g,f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e/2),new mxPoint(b,0),new mxPoint(b,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,g),new mxPoint(b,g),new mxPoint(b,e)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("doubleArrow",ka);mxUtils.extend(ca,mxActor);ca.prototype.size=.1;ca.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style, -"size",this.size))));a.moveTo(b,0);a.lineTo(d,0);a.quadTo(d-2*b,e/2,d,e);a.lineTo(b,e);a.quadTo(b-2*b,e/2,b,0);a.close();a.end()};mxCellRenderer.registerShape("dataStorage",ca);mxUtils.extend(ea,mxActor);ea.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.close();a.end()};mxCellRenderer.registerShape("or",ea);mxUtils.extend(fa,mxActor);fa.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.quadTo(d/2,e/2,0,0); -a.close();a.end()};mxCellRenderer.registerShape("xor",fa);mxUtils.extend(Y,mxActor);Y.prototype.size=20;Y.prototype.isRoundable=function(){return!0};Y.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d/2,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,.8*b),new mxPoint(d,e),new mxPoint(0,e),new mxPoint(0,.8*b)],this.isRounded, +2;this.addPoints(a,[new mxPoint(0,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,g),new mxPoint(0,g)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("singleArrow",R);mxUtils.extend(la,mxActor);la.prototype.redrawPath=function(a,b,c,d,e){var g=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",R.prototype.arrowWidth))));b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",R.prototype.arrowSize)))); +c=(e-g)/2;var g=c+g,f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e/2),new mxPoint(b,0),new mxPoint(b,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,g),new mxPoint(b,g),new mxPoint(b,e)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("doubleArrow",la);mxUtils.extend(ca,mxActor);ca.prototype.size=.1;ca.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style, +"size",this.size))));a.moveTo(b,0);a.lineTo(d,0);a.quadTo(d-2*b,e/2,d,e);a.lineTo(b,e);a.quadTo(b-2*b,e/2,b,0);a.close();a.end()};mxCellRenderer.registerShape("dataStorage",ca);mxUtils.extend(fa,mxActor);fa.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.close();a.end()};mxCellRenderer.registerShape("or",fa);mxUtils.extend(ga,mxActor);ga.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.quadTo(d/2,e/2,0,0); +a.close();a.end()};mxCellRenderer.registerShape("xor",ga);mxUtils.extend(Y,mxActor);Y.prototype.size=20;Y.prototype.isRoundable=function(){return!0};Y.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d/2,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,.8*b),new mxPoint(d,e),new mxPoint(0,e),new mxPoint(0,.8*b)],this.isRounded, c,!0);a.end()};mxCellRenderer.registerShape("loopLimit",Y);mxUtils.extend(Z,mxActor);Z.prototype.size=.375;Z.prototype.isRoundable=function(){return!0};Z.prototype.redrawPath=function(a,b,c,d,e){b=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,e-b),new mxPoint(d/2,e),new mxPoint(0,e-b)],this.isRounded,c,!0);a.end()}; -mxCellRenderer.registerShape("offPageConnector",Z);mxUtils.extend(da,mxEllipse);da.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/2,c+e);a.lineTo(b+d,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("tapeData",da);mxUtils.extend(ia,mxEllipse);ia.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+d,c+e/2); -a.end();a.stroke();a.begin();a.moveTo(b+d/2,c);a.lineTo(b+d/2,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("orEllipse",ia);mxUtils.extend(V,mxEllipse);V.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b+.145*d,c+.145*e);a.lineTo(b+.855*d,c+.855*e);a.end();a.stroke();a.begin();a.moveTo(b+.855*d,c+.145*e);a.lineTo(b+.145*d,c+.855*e);a.end();a.stroke()};mxCellRenderer.registerShape("sumEllipse",V);mxUtils.extend(na, -mxRhombus);na.prototype.paintVertexShape=function(a,b,c,d,e){mxRhombus.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+d,c+e/2);a.end();a.stroke()};mxCellRenderer.registerShape("sortShape",na);mxUtils.extend(S,mxEllipse);S.prototype.paintVertexShape=function(a,b,c,d,e){a.begin();a.moveTo(b,c);a.lineTo(b+d,c);a.lineTo(b+d/2,c+e/2);a.close();a.fillAndStroke();a.begin();a.moveTo(b,c+e);a.lineTo(b+d,c+e);a.lineTo(b+d/2,c+e/2);a.close();a.fillAndStroke()}; +mxCellRenderer.registerShape("offPageConnector",Z);mxUtils.extend(ea,mxEllipse);ea.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/2,c+e);a.lineTo(b+d,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("tapeData",ea);mxUtils.extend(ja,mxEllipse);ja.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+d,c+e/2); +a.end();a.stroke();a.begin();a.moveTo(b+d/2,c);a.lineTo(b+d/2,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("orEllipse",ja);mxUtils.extend(W,mxEllipse);W.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b+.145*d,c+.145*e);a.lineTo(b+.855*d,c+.855*e);a.end();a.stroke();a.begin();a.moveTo(b+.855*d,c+.145*e);a.lineTo(b+.145*d,c+.855*e);a.end();a.stroke()};mxCellRenderer.registerShape("sumEllipse",W);mxUtils.extend(ma, +mxRhombus);ma.prototype.paintVertexShape=function(a,b,c,d,e){mxRhombus.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+d,c+e/2);a.end();a.stroke()};mxCellRenderer.registerShape("sortShape",ma);mxUtils.extend(S,mxEllipse);S.prototype.paintVertexShape=function(a,b,c,d,e){a.begin();a.moveTo(b,c);a.lineTo(b+d,c);a.lineTo(b+d/2,c+e/2);a.close();a.fillAndStroke();a.begin();a.moveTo(b,c+e);a.lineTo(b+d,c+e);a.lineTo(b+d/2,c+e/2);a.close();a.fillAndStroke()}; mxCellRenderer.registerShape("collate",S);mxUtils.extend(Ba,mxEllipse);Ba.prototype.paintVertexShape=function(a,b,c,d,e){var g=c+e-5;a.begin();a.moveTo(b,c);a.lineTo(b,c+e);a.moveTo(b,g);a.lineTo(b+10,g-5);a.moveTo(b,g);a.lineTo(b+10,g+5);a.moveTo(b,g);a.lineTo(b+d,g);a.moveTo(b+d,c);a.lineTo(b+d,c+e);a.moveTo(b+d,g);a.lineTo(b+d-10,g-5);a.moveTo(b+d,g);a.lineTo(b+d-10,g+5);a.end();a.stroke()};mxCellRenderer.registerShape("dimension",Ba);mxUtils.extend(Ca,mxEllipse);Ca.prototype.paintVertexShape= function(a,b,c,d,e){this.outline||a.setStrokeColor(null);mxRectangleShape.prototype.paintBackground.apply(this,arguments);null!=this.style&&(a.setStrokeColor(this.stroke),a.rect(b,c,d,e),a.fill(),a.begin(),a.moveTo(b,c),"1"==mxUtils.getValue(this.style,"top","1")?a.lineTo(b+d,c):a.moveTo(b+d,c),"1"==mxUtils.getValue(this.style,"right","1")?a.lineTo(b+d,c+e):a.moveTo(b+d,c+e),"1"==mxUtils.getValue(this.style,"bottom","1")?a.lineTo(b,c+e):a.moveTo(b,c+e),"1"==mxUtils.getValue(this.style,"left","1")&& -a.lineTo(b,c-this.strokewidth/2),a.end(),a.stroke())};mxCellRenderer.registerShape("partialRectangle",Ca);mxUtils.extend(ta,mxEllipse);ta.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();"vertical"==mxUtils.getValue(this.style,"line")?(a.moveTo(b+d/2,c),a.lineTo(b+d/2,c+e)):(a.moveTo(b,c+e/2),a.lineTo(b+d,c+e/2));a.end();a.stroke()};mxCellRenderer.registerShape("lineEllipse",ta);mxUtils.extend(ua,mxActor);ua.prototype.redrawPath= -function(a,b,c,d,e){b=Math.min(d,e/2);a.moveTo(0,0);a.lineTo(d-b,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(0,e);a.close();a.end()};mxCellRenderer.registerShape("delay",ua);mxUtils.extend(oa,mxActor);oa.prototype.size=.2;oa.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,d);var g=Math.max(0,Math.min(b,b*parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=(e-g)/2;c=b+g;var f=(d-g)/2,g=f+g;a.moveTo(0,b);a.lineTo(f,b);a.lineTo(f,0);a.lineTo(g,0);a.lineTo(g,b);a.lineTo(d,b);a.lineTo(d, -c);a.lineTo(g,c);a.lineTo(g,e);a.lineTo(f,e);a.lineTo(f,c);a.lineTo(0,c);a.close();a.end()};mxCellRenderer.registerShape("cross",oa);mxUtils.extend(pa,mxActor);pa.prototype.size=.25;pa.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/2);c=Math.min(d-b,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*d);a.moveTo(0,e/2);a.lineTo(c,0);a.lineTo(d-b,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(c,e);a.close();a.end()};mxCellRenderer.registerShape("display",pa);mxUtils.extend(la, -mxConnector);la.prototype.origPaintEdgeShape=la.prototype.paintEdgeShape;la.prototype.paintEdgeShape=function(a,b,c){for(var d=[],e=0;e<b.length;e++)d.push(mxUtils.clone(b[e]));var e=a.state.dashed,g=a.state.fixDash;la.prototype.origPaintEdgeShape.apply(this,[a,d,c]);3<=a.state.strokeWidth&&(d=mxUtils.getValue(this.style,"fillColor",null),null!=d&&(a.setStrokeColor(d),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(e,g),la.prototype.origPaintEdgeShape.apply(this,[a,b,c])))};mxCellRenderer.registerShape("filledEdge", -la);"undefined"!==typeof StyleFormatPanel&&function(){var a=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var b=this.format.getSelectionState(),c=a.apply(this,arguments);"umlFrame"==b.style.shape&&c.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});return c}}();mxMarker.addMarker("dash",function(a,b,c,d,e,g,f,h,k,l){var m=e*(f+k+1),y=g*(f+k+1);return function(){a.begin();a.moveTo(d.x-m/2-y/2,d.y-y/2+m/2);a.lineTo(d.x+ -y/2-3*m/2,d.y-3*y/2-m/2);a.stroke()}});mxMarker.addMarker("cross",function(a,b,c,d,e,g,f,h,k,l){var m=e*(f+k+1),y=g*(f+k+1);return function(){a.begin();a.moveTo(d.x-m/2-y/2,d.y-y/2+m/2);a.lineTo(d.x+y/2-3*m/2,d.y-3*y/2-m/2);a.moveTo(d.x-m/2+y/2,d.y-y/2-m/2);a.lineTo(d.x-y/2-3*m/2,d.y-3*y/2+m/2);a.stroke()}});mxMarker.addMarker("circle",Fa);mxMarker.addMarker("circlePlus",function(a,b,c,d,e,g,f,h,k,l){var m=d.clone(),y=Fa.apply(this,arguments),p=e*(f+2*k),n=g*(f+2*k);return function(){y.apply(this, -arguments);a.begin();a.moveTo(m.x-e*k,m.y-g*k);a.lineTo(m.x-2*p+e*k,m.y-2*n+g*k);a.moveTo(m.x-p-n+g*k,m.y-n+p-e*k);a.lineTo(m.x+n-p-g*k,m.y-n-p+e*k);a.stroke()}});mxMarker.addMarker("async",function(a,b,c,d,e,g,f,h,k,l){b=e*k*1.118;c=g*k*1.118;e*=f+k;g*=f+k;var m=d.clone();m.x-=b;m.y-=c;d.x+=1*-e-b;d.y+=1*-g-c;return function(){a.begin();a.moveTo(m.x,m.y);h?a.lineTo(m.x-e-g/2,m.y-g+e/2):a.lineTo(m.x+g/2-e,m.y-g-e/2);a.lineTo(m.x-e,m.y-g);a.close();l?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync", -function(a){a=null!=a?a:2;return function(b,c,d,e,g,f,h,k,l,m){g*=h+l;f*=h+l;var y=e.clone();return function(){b.begin();b.moveTo(y.x,y.y);k?b.lineTo(y.x-g-f/a,y.y-f+g/a):b.lineTo(y.x+f/a-g,y.y-f-g/a);b.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Ha=function(a,b,c){return qa(a,["width"],b,function(b,d,e,g,f){f=a.shape.getEdgeWidth()*a.view.scale+c;return new mxPoint(g.x+d*b/4+e*f/2,g.y+e*b/4-d*f/2)},function(b,d,e,g,f,h){b=Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,f.x,f.y,h.x,h.y));a.style.width= -Math.round(2*b)/a.view.scale-c})},qa=function(a,b,c,d,e){return N(a,b,function(b){var e=a.absolutePoints,g=e.length-1;b=a.view.translate;var f=a.view.scale,h=c?e[0]:e[g],e=c?e[1]:e[g-1],g=e.x-h.x,k=e.y-h.y,l=Math.sqrt(g*g+k*k),h=d.call(this,l,g/l,k/l,h,e);return new mxPoint(h.x/f-b.x,h.y/f-b.y)},function(b,d,g){var f=a.absolutePoints,h=f.length-1;b=a.view.translate;var k=a.view.scale,l=c?f[0]:f[h],f=c?f[1]:f[h-1],h=f.x-l.x,m=f.y-l.y,y=Math.sqrt(h*h+m*m);d.x=(d.x+b.x)*k;d.y=(d.y+b.y)*k;e.call(this, -y,h/y,m/y,l,f,d,g)})},ja=function(a){return function(b){return[N(b,["arrowWidth","arrowSize"],function(b){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",R.prototype.arrowWidth))),d=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",R.prototype.arrowSize)));return new mxPoint(b.x+(1-d)*b.width,b.y+(1-c)*b.height/2)},function(b,c){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(b.y+b.height/2-c.y)/b.height*2));this.state.style.arrowSize=Math.max(0, -Math.min(a,(b.x+b.width-c.x)/b.width))})]}},Ea=function(a,b,c){return function(d){var e=[N(d,["size"],function(c){var d=Math.max(0,Math.min(c.width,Math.min(c.height,parseFloat(mxUtils.getValue(this.state.style,"size",b)))))*a;return new mxPoint(c.x+d,c.y+d)},function(b,c){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,c.x-b.x),Math.min(b.height,c.y-b.y)))/a)})];c&&mxUtils.getValue(d.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(ga(d));return e}},wa=function(a,b,c,d,e){c=null!= +a.lineTo(b,c-this.strokewidth/2),a.end(),a.stroke())};mxCellRenderer.registerShape("partialRectangle",Ca);mxUtils.extend(ua,mxEllipse);ua.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();"vertical"==mxUtils.getValue(this.style,"line")?(a.moveTo(b+d/2,c),a.lineTo(b+d/2,c+e)):(a.moveTo(b,c+e/2),a.lineTo(b+d,c+e/2));a.end();a.stroke()};mxCellRenderer.registerShape("lineEllipse",ua);mxUtils.extend(ta,mxActor);ta.prototype.redrawPath= +function(a,b,c,d,e){b=Math.min(d,e/2);a.moveTo(0,0);a.lineTo(d-b,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(0,e);a.close();a.end()};mxCellRenderer.registerShape("delay",ta);mxUtils.extend(pa,mxActor);pa.prototype.size=.2;pa.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,d);var g=Math.max(0,Math.min(b,b*parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=(e-g)/2;c=b+g;var f=(d-g)/2,g=f+g;a.moveTo(0,b);a.lineTo(f,b);a.lineTo(f,0);a.lineTo(g,0);a.lineTo(g,b);a.lineTo(d,b);a.lineTo(d, +c);a.lineTo(g,c);a.lineTo(g,e);a.lineTo(f,e);a.lineTo(f,c);a.lineTo(0,c);a.close();a.end()};mxCellRenderer.registerShape("cross",pa);mxUtils.extend(qa,mxActor);qa.prototype.size=.25;qa.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/2);c=Math.min(d-b,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*d);a.moveTo(0,e/2);a.lineTo(c,0);a.lineTo(d-b,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(c,e);a.close();a.end()};mxCellRenderer.registerShape("display",qa);mxUtils.extend(na, +mxConnector);na.prototype.origPaintEdgeShape=na.prototype.paintEdgeShape;na.prototype.paintEdgeShape=function(a,b,c){for(var d=[],e=0;e<b.length;e++)d.push(mxUtils.clone(b[e]));var e=a.state.dashed,g=a.state.fixDash;na.prototype.origPaintEdgeShape.apply(this,[a,d,c]);3<=a.state.strokeWidth&&(d=mxUtils.getValue(this.style,"fillColor",null),null!=d&&(a.setStrokeColor(d),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(e,g),na.prototype.origPaintEdgeShape.apply(this,[a,b,c])))};mxCellRenderer.registerShape("filledEdge", +na);"undefined"!==typeof StyleFormatPanel&&function(){var a=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var b=this.format.getSelectionState(),c=a.apply(this,arguments);"umlFrame"==b.style.shape&&c.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});return c}}();mxMarker.addMarker("dash",function(a,b,c,d,e,g,f,h,k,l){var y=e*(f+k+1),m=g*(f+k+1);return function(){a.begin();a.moveTo(d.x-y/2-m/2,d.y-m/2+y/2);a.lineTo(d.x+ +m/2-3*y/2,d.y-3*m/2-y/2);a.stroke()}});mxMarker.addMarker("cross",function(a,b,c,d,e,g,f,h,k,l){var y=e*(f+k+1),m=g*(f+k+1);return function(){a.begin();a.moveTo(d.x-y/2-m/2,d.y-m/2+y/2);a.lineTo(d.x+m/2-3*y/2,d.y-3*m/2-y/2);a.moveTo(d.x-y/2+m/2,d.y-m/2-y/2);a.lineTo(d.x-m/2-3*y/2,d.y-3*m/2+y/2);a.stroke()}});mxMarker.addMarker("circle",Fa);mxMarker.addMarker("circlePlus",function(a,b,c,d,e,g,f,h,k,l){var y=d.clone(),m=Fa.apply(this,arguments),p=e*(f+2*k),n=g*(f+2*k);return function(){m.apply(this, +arguments);a.begin();a.moveTo(y.x-e*k,y.y-g*k);a.lineTo(y.x-2*p+e*k,y.y-2*n+g*k);a.moveTo(y.x-p-n+g*k,y.y-n+p-e*k);a.lineTo(y.x+n-p-g*k,y.y-n-p+e*k);a.stroke()}});mxMarker.addMarker("async",function(a,b,c,d,e,g,f,h,k,l){b=e*k*1.118;c=g*k*1.118;e*=f+k;g*=f+k;var y=d.clone();y.x-=b;y.y-=c;d.x+=1*-e-b;d.y+=1*-g-c;return function(){a.begin();a.moveTo(y.x,y.y);h?a.lineTo(y.x-e-g/2,y.y-g+e/2):a.lineTo(y.x+g/2-e,y.y-g-e/2);a.lineTo(y.x-e,y.y-g);a.close();l?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync", +function(a){a=null!=a?a:2;return function(b,c,d,e,g,f,h,k,l,y){g*=h+l;f*=h+l;var m=e.clone();return function(){b.begin();b.moveTo(m.x,m.y);k?b.lineTo(m.x-g-f/a,m.y-f+g/a):b.lineTo(m.x+f/a-g,m.y-f-g/a);b.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Ha=function(a,b,c){return ra(a,["width"],b,function(b,d,e,g,f){f=a.shape.getEdgeWidth()*a.view.scale+c;return new mxPoint(g.x+d*b/4+e*f/2,g.y+e*b/4-d*f/2)},function(b,d,e,g,f,h){b=Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,f.x,f.y,h.x,h.y));a.style.width= +Math.round(2*b)/a.view.scale-c})},ra=function(a,b,c,d,e){return N(a,b,function(b){var e=a.absolutePoints,g=e.length-1;b=a.view.translate;var f=a.view.scale,h=c?e[0]:e[g],e=c?e[1]:e[g-1],g=e.x-h.x,k=e.y-h.y,l=Math.sqrt(g*g+k*k),h=d.call(this,l,g/l,k/l,h,e);return new mxPoint(h.x/f-b.x,h.y/f-b.y)},function(b,d,g){var f=a.absolutePoints,h=f.length-1;b=a.view.translate;var k=a.view.scale,l=c?f[0]:f[h],f=c?f[1]:f[h-1],h=f.x-l.x,m=f.y-l.y,y=Math.sqrt(h*h+m*m);d.x=(d.x+b.x)*k;d.y=(d.y+b.y)*k;e.call(this, +y,h/y,m/y,l,f,d,g)})},ha=function(a){return function(b){return[N(b,["arrowWidth","arrowSize"],function(b){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",R.prototype.arrowWidth))),d=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",R.prototype.arrowSize)));return new mxPoint(b.x+(1-d)*b.width,b.y+(1-c)*b.height/2)},function(b,c){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(b.y+b.height/2-c.y)/b.height*2));this.state.style.arrowSize=Math.max(0, +Math.min(a,(b.x+b.width-c.x)/b.width))})]}},Ea=function(a,b,c){return function(d){var e=[N(d,["size"],function(c){var d=Math.max(0,Math.min(c.width,Math.min(c.height,parseFloat(mxUtils.getValue(this.state.style,"size",b)))))*a;return new mxPoint(c.x+d,c.y+d)},function(b,c){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,c.x-b.x),Math.min(b.height,c.y-b.y)))/a)})];c&&mxUtils.getValue(d.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(ia(d));return e}},wa=function(a,b,c,d,e){c=null!= c?c:1;return function(g){var f=[N(g,["size"],function(b){var c=null!=e?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,d=parseFloat(mxUtils.getValue(this.state.style,"size",c?e:a));return new mxPoint(b.x+Math.max(0,Math.min(b.width,d*(c?1:b.width))),b.getCenterY())},function(a,b,d){var f=null!=e?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null;a=f?b.x-a.x:Math.max(0,Math.min(c,(b.x-a.x)/a.width));f&&!mxEvent.isAltDown(d.getEvent())&&(a=g.view.graph.snap(a));this.state.style.size= -a},null,d)];b&&mxUtils.getValue(g.style,mxConstants.STYLE_ROUNDED,!1)&&f.push(ga(g));return f}},Ia=function(a){return function(b){var c=[N(b,["size"],function(b){var c=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.state.style,"size",p.prototype.size))));return new mxPoint(b.x+c*b.width*.75,b.y+b.height/4)},function(b,c){this.state.style.size=Math.max(0,Math.min(a,(c.x-b.x)/(.75*b.width)))},null,!0)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&c.push(ga(b));return c}},sa=function(){return function(a){var b= -[];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b}},ga=function(a,b){return N(a,[mxConstants.STYLE_ARCSIZE],function(c){var d=null!=b?b:c.height/8;if("1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var e=mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(c.x+c.width-Math.min(c.width/2,e),c.y+d)}e=Math.max(0,parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/ +a},null,d)];b&&mxUtils.getValue(g.style,mxConstants.STYLE_ROUNDED,!1)&&f.push(ia(g));return f}},Ia=function(a){return function(b){var c=[N(b,["size"],function(b){var c=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.state.style,"size",p.prototype.size))));return new mxPoint(b.x+c*b.width*.75,b.y+b.height/4)},function(b,c){this.state.style.size=Math.max(0,Math.min(a,(c.x-b.x)/(.75*b.width)))},null,!0)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&c.push(ia(b));return c}},sa=function(){return function(a){var b= +[];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ia(a));return b}},ia=function(a,b){return N(a,[mxConstants.STYLE_ARCSIZE],function(c){var d=null!=b?b:c.height/8;if("1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var e=mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(c.x+c.width-Math.min(c.width/2,e),c.y+d)}e=Math.max(0,parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/ 100;return new mxPoint(c.x+c.width-Math.min(Math.max(c.width/2,c.height/2),Math.min(c.width,c.height)*e),c.y+d)},function(b,c,d){"1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(b.width,2*(b.x+b.width-c.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(b.width-c.x+b.x)/Math.min(b.width,b.height))))})},N=function(a,b,c,d,e,g){var f=new mxHandle(a,null,mxVertexHandler.prototype.secondaryHandleImage); -f.execute=function(){for(var a=0;a<b.length;a++)this.copyStyle(b[a])};f.getPosition=c;f.setPosition=d;f.ignoreGrid=null!=e?e:!0;if(g){var h=f.positionChanged;f.positionChanged=function(){h.apply(this,arguments);a.view.invalidate(this.state.cell);a.view.validate()}}return f},xa={link:function(a){return[Ha(a,!0,10),Ha(a,!1,10)]},flexArrow:function(a){var b=a.view.graph.gridSize/a.view.scale,c=[];mxUtils.getValue(a.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(qa(a, +f.execute=function(){for(var a=0;a<b.length;a++)this.copyStyle(b[a])};f.getPosition=c;f.setPosition=d;f.ignoreGrid=null!=e?e:!0;if(g){var h=f.positionChanged;f.positionChanged=function(){h.apply(this,arguments);a.view.invalidate(this.state.cell);a.view.validate()}}return f},xa={link:function(a){return[Ha(a,!0,10),Ha(a,!1,10)]},flexArrow:function(a){var b=a.view.graph.gridSize/a.view.scale,c=[];mxUtils.getValue(a.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(ra(a, ["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(b,c,d,e,g){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;g=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(g+a.shape.strokewidth*a.view.scale)+d*b/2,e.y+d*(g+a.shape.strokewidth*a.view.scale)-c*b/2)},function(c,d,e,g,f,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,f.x,f.y,h.x,h.y));d=mxUtils.ptLineDist(g.x,g.y,g.x+e,g.y-d,h.x,h.y);a.style[mxConstants.STYLE_STARTSIZE]= -Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*c)/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE])})),c.push(qa(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE], +Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*c)/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE])})),c.push(ra(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE], !0,function(b,c,d,e,g){b=(a.shape.getStartArrowWidth()-a.shape.strokewidth)*a.view.scale;g=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(g+a.shape.strokewidth*a.view.scale)+d*b/2,e.y+d*(g+a.shape.strokewidth*a.view.scale)-c*b/2)},function(c,d,e,g,f,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,f.x,f.y,h.x,h.y));d=mxUtils.ptLineDist(g.x,g.y,g.x+e,g.y-d,h.x,h.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(d-a.shape.strokewidth)/ 3)/100/a.view.scale;a.style.startWidth=Math.max(0,Math.round(2*c)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE],a.style.endWidth=a.style.startWidth);mxEvent.isAltDown(k.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(a.style.startWidth)- -parseFloat(a.style.endWidth))<b&&(a.style.startWidth=a.style.endWidth))})));mxUtils.getValue(a.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(qa(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,g){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;g=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(g+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(g+a.shape.strokewidth* +parseFloat(a.style.endWidth))<b&&(a.style.startWidth=a.style.endWidth))})));mxUtils.getValue(a.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(ra(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,g){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;g=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(g+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(g+a.shape.strokewidth* a.view.scale)+c*b/2)},function(c,d,e,g,f,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,f.x,f.y,h.x,h.y));d=mxUtils.ptLineDist(g.x,g.y,g.x+e,g.y-d,h.x,h.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*c)/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))< -b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE])})),c.push(qa(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,g){b=(a.shape.getEndArrowWidth()-a.shape.strokewidth)*a.view.scale;g=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(g+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(g+a.shape.strokewidth*a.view.scale)+c*b/2)},function(c,d,e,g,f,h,k){c= +b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE])})),c.push(ra(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,g){b=(a.shape.getEndArrowWidth()-a.shape.strokewidth)*a.view.scale;g=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(g+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(g+a.shape.strokewidth*a.view.scale)+c*b/2)},function(c,d,e,g,f,h,k){c= Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,f.x,f.y,h.x,h.y));d=mxUtils.ptLineDist(g.x,g.y,g.x+e,g.y-d,h.x,h.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.endWidth=Math.max(0,Math.round(2*c)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE],a.style.startWidth=a.style.endWidth);mxEvent.isAltDown(k.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])- parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(a.style.endWidth)-parseFloat(a.style.startWidth))<b&&(a.style.endWidth=a.style.startWidth))})));return c},swimlane:function(a){var b=[N(a,[mxConstants.STYLE_STARTSIZE],function(b){var c=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(b.getCenterX(), -b.y+Math.max(0,Math.min(b.height,c))):new mxPoint(b.x+Math.max(0,Math.min(b.width,c)),b.getCenterY())},function(b,c){a.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(b.height,c.y-b.y))):Math.round(Math.max(0,Math.min(b.width,c.x-b.x)))})];if(mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED)){var c=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));b.push(ga(a,c/2))}return b}, +b.y+Math.max(0,Math.min(b.height,c))):new mxPoint(b.x+Math.max(0,Math.min(b.width,c)),b.getCenterY())},function(b,c){a.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(b.height,c.y-b.y))):Math.round(Math.max(0,Math.min(b.width,c.x-b.x)))})];if(mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED)){var c=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));b.push(ia(a,c/2))}return b}, label:sa(),ext:sa(),rectangle:sa(),triangle:sa(),rhombus:sa(),umlLifeline:function(a){return[N(a,["size"],function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",G.prototype.size))));return new mxPoint(a.getCenterX(),a.y+b)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},umlFrame:function(a){return[N(a,["width","height"],function(a){var b=Math.max(K.prototype.corner,Math.min(a.width,mxUtils.getValue(this.state.style, "width",K.prototype.width))),c=Math.max(1.5*K.prototype.corner,Math.min(a.height,mxUtils.getValue(this.state.style,"height",K.prototype.height)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.width=Math.round(Math.max(K.prototype.corner,Math.min(a.width,b.x-a.x)));this.state.style.height=Math.round(Math.max(1.5*K.prototype.corner,Math.min(a.height,b.y-a.y)))},!1)]},process:function(a){var b=[N(a,["size"],function(a){var b=Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.state.style, -"size",r.prototype.size))));return new mxPoint(a.x+a.width*b,a.y+a.height/4)},function(a,b){this.state.style.size=Math.max(0,Math.min(.5,(b.x-a.x)/a.width))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b},cross:function(a){return[N(a,["size"],function(a){var b=Math.min(a.width,a.height),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",oa.prototype.size)))*b/2;return new mxPoint(a.getCenterX()-b,a.getCenterY()-b)},function(a,b){var c=Math.min(a.width, +"size",r.prototype.size))));return new mxPoint(a.x+a.width*b,a.y+a.height/4)},function(a,b){this.state.style.size=Math.max(0,Math.min(.5,(b.x-a.x)/a.width))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ia(a));return b},cross:function(a){return[N(a,["size"],function(a){var b=Math.min(a.width,a.height),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",pa.prototype.size)))*b/2;return new mxPoint(a.getCenterX()-b,a.getCenterY()-b)},function(a,b){var c=Math.min(a.width, a.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,a.getCenterY()-b.y)/c*2,Math.max(0,a.getCenterX()-b.x)/c*2)))})]},note:function(a){return[N(a,["size"],function(a){var b=Math.max(0,Math.min(a.width,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",f.prototype.size)))));return new mxPoint(a.x+a.width-b,a.y+b)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(a.width,a.x+a.width-b.x),Math.min(a.height,b.y-a.y))))})]},manualInput:function(a){var b= -[N(a,["size"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",X.prototype.size)));return new mxPoint(a.x+a.width/4,a.y+3*b/4)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,4*(b.y-a.y)/3)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b},dataStorage:function(a){return[N(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ca.prototype.size)))); +[N(a,["size"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",X.prototype.size)));return new mxPoint(a.x+a.width/4,a.y+3*b/4)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,4*(b.y-a.y)/3)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ia(a));return b},dataStorage:function(a){return[N(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ca.prototype.size)))); return new mxPoint(a.x+(1-b)*a.width,a.getCenterY())},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.x+a.width-b.x)/a.width))})]},callout:function(a){var b=[N(a,["size","position"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",w.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",w.prototype.position)));mxUtils.getValue(this.state.style,"base",w.prototype.base);return new mxPoint(a.x+c*a.width,a.y+a.height- b)},function(a,b){mxUtils.getValue(this.state.style,"base",w.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(a.height,a.y+a.height-b.y)));this.state.style.position=Math.round(100*Math.max(0,Math.min(1,(b.x-a.x)/a.width)))/100}),N(a,["position2"],function(a){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",w.prototype.position2)));return new mxPoint(a.x+b*a.width,a.y+a.height)},function(a,b){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1, (b.x-a.x)/a.width)))/100}),N(a,["base"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",w.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",w.prototype.position))),d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"base",w.prototype.base)));return new mxPoint(a.x+Math.min(a.width,c*a.width+d),a.y+a.height-b)},function(a,b){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",w.prototype.position))); -this.state.style.base=Math.round(Math.max(0,Math.min(a.width,b.x-a.x-c*a.width)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b},internalStorage:function(a){var b=[N(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",W.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",W.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width, -b.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b},corner:function(a){return[N(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",aa.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",aa.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width, +this.state.style.base=Math.round(Math.max(0,Math.min(a.width,b.x-a.x-c*a.width)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ia(a));return b},internalStorage:function(a){var b=[N(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",V.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",V.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width, +b.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ia(a));return b},corner:function(a){return[N(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",aa.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",aa.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width, b.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})]},tee:function(a){return[N(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",ba.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",ba.prototype.dy)));return new mxPoint(a.x+(a.width+b)/2,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,2*Math.min(a.width/2,b.x-a.x-a.width/2)));this.state.style.dy=Math.round(Math.max(0, -Math.min(a.height,b.y-a.y)))})]},singleArrow:ja(1),doubleArrow:ja(.5),folder:function(a){return[N(a,["tabWidth","tabHeight"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"tabWidth",h.prototype.tabWidth))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"tabHeight",h.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",h.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(b=a.width-b);return new mxPoint(a.x+b,a.y+c)},function(a,b){var c= +Math.min(a.height,b.y-a.y)))})]},singleArrow:ha(1),doubleArrow:ha(.5),folder:function(a){return[N(a,["tabWidth","tabHeight"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"tabWidth",h.prototype.tabWidth))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"tabHeight",h.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",h.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(b=a.width-b);return new mxPoint(a.x+b,a.y+c)},function(a,b){var c= Math.max(0,Math.min(a.width,b.x-a.x));mxUtils.getValue(this.state.style,"tabPosition",h.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(c=a.width-c);this.state.style.tabWidth=Math.round(c);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})]},document:function(a){return[N(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",l.prototype.size))));return new mxPoint(a.x+3*a.width/4,a.y+(1-b)*a.height)},function(a,b){this.state.style.size= Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))})]},tape:function(a){return[N(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",k.prototype.size))));return new mxPoint(a.getCenterX(),a.y+b*a.height/2)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(b.y-a.y)/a.height*2))})]},offPageConnector:function(a){return[N(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",Z.prototype.size)))); -return new mxPoint(a.getCenterX(),a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))})]},step:wa(v.prototype.size,!0,null,!0,v.prototype.fixedSize),hexagon:wa(z.prototype.size,!0,.5,!0),curlyBracket:wa(n.prototype.size,!1),display:wa(pa.prototype.size,!1),cube:Ea(1,a.prototype.size,!1),card:Ea(.5,g.prototype.size,!0),loopLimit:Ea(.5,Y.prototype.size,!0),trapezoid:Ia(.5),parallelogram:Ia(1)};Graph.createHandle=N;Graph.handleFactory=xa;mxVertexHandler.prototype.createCustomHandles= +return new mxPoint(a.getCenterX(),a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))})]},step:wa(v.prototype.size,!0,null,!0,v.prototype.fixedSize),hexagon:wa(z.prototype.size,!0,.5,!0),curlyBracket:wa(n.prototype.size,!1),display:wa(qa.prototype.size,!1),cube:Ea(1,a.prototype.size,!1),card:Ea(.5,g.prototype.size,!0),loopLimit:Ea(.5,Y.prototype.size,!0),trapezoid:Ia(.5),parallelogram:Ia(1)};Graph.createHandle=N;Graph.handleFactory=xa;mxVertexHandler.prototype.createCustomHandles= function(){if(1==this.state.view.graph.getSelectionCount()&&this.graph.isCellRotatable(this.state.cell)){var a=this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_RECTANGLE);a=xa[a];null==a&&null!=this.state.shape&&this.state.shape.isRoundable()&&(a=xa[mxConstants.SHAPE_RECTANGLE]);if(null!=a)return a(this.state)}return null};mxEdgeHandler.prototype.createCustomHandles=function(){if(1==this.state.view.graph.getSelectionCount()){var a= -this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_CONNECTOR);a=xa[a];if(null!=a)return a(this.state)}return null}}else Graph.createHandle=function(){},Graph.handleFactory={};var ya=new mxPoint(1,0),za=new mxPoint(1,0),ja=mxUtils.toRadians(-30),ya=mxUtils.getRotatedPoint(ya,Math.cos(ja),Math.sin(ja)),ja=mxUtils.toRadians(-150),za=mxUtils.getRotatedPoint(za,Math.cos(ja),Math.sin(ja));mxEdgeStyle.IsometricConnector=function(a,b, +this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_CONNECTOR);a=xa[a];if(null!=a)return a(this.state)}return null}}else Graph.createHandle=function(){},Graph.handleFactory={};var ya=new mxPoint(1,0),za=new mxPoint(1,0),ha=mxUtils.toRadians(-30),ya=mxUtils.getRotatedPoint(ya,Math.cos(ha),Math.sin(ha)),ha=mxUtils.toRadians(-150),za=mxUtils.getRotatedPoint(za,Math.cos(ha),Math.sin(ha));mxEdgeStyle.IsometricConnector=function(a,b, c,d,e){var g=a.view;d=null!=d&&0<d.length?d[0]:null;var f=a.absolutePoints,h=f[0],f=f[f.length-1];null!=d&&(d=g.transformControlPoint(a,d));null==h&&null!=b&&(h=new mxPoint(b.getCenterX(),b.getCenterY()));null==f&&null!=c&&(f=new mxPoint(c.getCenterX(),c.getCenterY()));var k=ya.x,l=ya.y,m=za.x,p=za.y,n="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!=f&&null!=h){a=function(a,b,c){a-=y.x;var d=b-y.y;b=(p*a-m*d)/(k*p-l*m);a=(l*a-k*d)/(l*m-k*p);n?(c&&(y=new mxPoint(y.x+k*b,y.y+l* b),e.push(y)),y=new mxPoint(y.x+m*a,y.y+p*a)):(c&&(y=new mxPoint(y.x+m*a,y.y+p*a),e.push(y)),y=new mxPoint(y.x+k*b,y.y+l*b));e.push(y)};var y=h;null==d&&(d=new mxPoint(h.x+(f.x-h.x)/2,h.y+(f.y-h.y)/2));a(d.x,d.y,!0);a(f.x,f.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var Oa=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(a,b){if(b==mxEdgeStyle.IsometricConnector){var c=new mxElbowEdgeHandler(a);c.snapToTerminals=!1;return c}return Oa.apply(this, arguments)};c.prototype.constraints=[];d.prototype.getConstraints=function(a,b,c){a=[];var d=Math.tan(mxUtils.toRadians(30)),e=(.5-d)/2,d=Math.min(b,c/(.5+d));b=(b-d)/2;c=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,c+.25*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+.5*d,c+d*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+d,c+.25*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+d,c+.75*d));a.push(new mxConnectionConstraint(new mxPoint(0, @@ -3041,35 +3043,38 @@ f.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,Math 0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(c+d)));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(1, 1),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b>=2*d&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};a.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0));a.push(new mxConnectionConstraint(new mxPoint(0, 0),!1,null,b-.5*d,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*(c+d)));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,c-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-d));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,0,.5*(c-d)));return a};h.prototype.constraints=mxRectangleShape.prototype.constraints;W.prototype.constraints=mxRectangleShape.prototype.constraints;ca.prototype.constraints=mxRectangleShape.prototype.constraints;da.prototype.constraints=mxEllipse.prototype.constraints;ia.prototype.constraints=mxEllipse.prototype.constraints;V.prototype.constraints=mxEllipse.prototype.constraints;ta.prototype.constraints=mxEllipse.prototype.constraints;X.prototype.constraints=mxRectangleShape.prototype.constraints; -ua.prototype.constraints=mxRectangleShape.prototype.constraints;pa.prototype.getConstraints=function(a,b,c){a=[];var d=Math.min(b,c/2),e=Math.min(b-d,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*b);a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+b-d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0));a.push(new mxConnectionConstraint(new mxPoint(1, -.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+b-d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));return a};Y.prototype.constraints=mxRectangleShape.prototype.constraints;Z.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85, -.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];E.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25, -.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,.1),!1),new mxConnectionConstraint(new mxPoint(0,1/3),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(1,1/3),!1),new mxConnectionConstraint(new mxPoint(1,1),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1)];B.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75, -0),!0),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxActor.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.25, -.2),!1),new mxConnectionConstraint(new mxPoint(.1,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.75,.25),!1),new mxConnectionConstraint(new mxPoint(.9,.5),!1),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];e.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(.5, -.25),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5,.75),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];k.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.35),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.65),!1),new mxConnectionConstraint(new mxPoint(1, -.35),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,.65),!1),new mxConnectionConstraint(new mxPoint(.25,1),!1),new mxConnectionConstraint(new mxPoint(.75,0),!1)];v.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75, -1),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxLine.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1, -.5),!1)];O.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1)];mxDoubleEllipse.prototype.constraints=mxEllipse.prototype.constraints;mxRhombus.prototype.constraints=mxEllipse.prototype.constraints;mxTriangle.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5, -1),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0)];mxHexagon.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.375,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.625,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1, -.75),!0),new mxConnectionConstraint(new mxPoint(.375,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.625,1),!0)];mxCloud.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.25),!1),new mxConnectionConstraint(new mxPoint(.4,.1),!1),new mxConnectionConstraint(new mxPoint(.16,.55),!1),new mxConnectionConstraint(new mxPoint(.07,.4),!1),new mxConnectionConstraint(new mxPoint(.31,.8),!1),new mxConnectionConstraint(new mxPoint(.13,.77),!1),new mxConnectionConstraint(new mxPoint(.8, -.8),!1),new mxConnectionConstraint(new mxPoint(.55,.95),!1),new mxConnectionConstraint(new mxPoint(.875,.5),!1),new mxConnectionConstraint(new mxPoint(.96,.7),!1),new mxConnectionConstraint(new mxPoint(.625,.2),!1),new mxConnectionConstraint(new mxPoint(.88,.25),!1)];m.prototype.constraints=mxRectangleShape.prototype.constraints;p.prototype.constraints=mxRectangleShape.prototype.constraints;l.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5, -0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;ba.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style, -"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*b+.25*d,e));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,.5*(b+d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),c));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),e));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,.25*b-.25*d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*e));return a};aa.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1, -0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,c));a.push(new mxConnectionConstraint(new mxPoint(0, -.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));return a};ha.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1, -1),!1)];R.prototype.getConstraints=function(a,b,c){a=[];var d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize)))),d=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-e),d));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,b-e,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-e),c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-d));return a};ka.prototype.getConstraints=function(a,b,c){a=[];var d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",R.prototype.arrowWidth)))),e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style, -"arrowSize",R.prototype.arrowSize)))),d=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*b,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*b,c-d));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,e,c));return a};oa.prototype.getConstraints=function(a,b,c){a=[];var d=Math.min(c,b),e=Math.max(0,Math.min(d,d*parseFloat(mxUtils.getValue(this.style,"size",this.size)))),d=(c-e)/2,g=d+e,f=(b-e)/2,e=f+e;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,0));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,e,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,c-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,c));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,g));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,.5*(b+e),d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,d));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+e),g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*f,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0, -.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*f,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,d));return a};G.prototype.constraints=null;ea.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7, -.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];fa.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.175,.25),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.175,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];P.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1, -.5),!1)];I.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)]})();function Actions(a){this.editorUi=a;this.actions={};this.init()} +0),!1,null,0,.5*(c-d)));return a};h.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(a.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,0)),a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,d,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),e))):(a.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-.5*d,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,e)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),e)));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.25*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.75*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null, +0,.5*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.75*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return a};V.prototype.constraints=mxRectangleShape.prototype.constraints;ca.prototype.constraints=mxRectangleShape.prototype.constraints;ea.prototype.constraints=mxEllipse.prototype.constraints; +ja.prototype.constraints=mxEllipse.prototype.constraints;W.prototype.constraints=mxEllipse.prototype.constraints;ua.prototype.constraints=mxEllipse.prototype.constraints;X.prototype.constraints=mxRectangleShape.prototype.constraints;ta.prototype.constraints=mxRectangleShape.prototype.constraints;qa.prototype.getConstraints=function(a,b,c){a=[];var d=Math.min(b,c/2),e=Math.min(b-d,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*b);a.push(new mxConnectionConstraint(new mxPoint(0, +.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+b-d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+b-d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));return a};Y.prototype.constraints= +mxRectangleShape.prototype.constraints;Z.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1, +.5),!0),new mxConnectionConstraint(new mxPoint(1,.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];F.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,.1),!1),new mxConnectionConstraint(new mxPoint(0,1/3),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(1, +1/3),!1),new mxConnectionConstraint(new mxPoint(1,1),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1)];B.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1, +.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxActor.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.25,.2),!1),new mxConnectionConstraint(new mxPoint(.1,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.75,.25),!1),new mxConnectionConstraint(new mxPoint(.9,.5),!1),new mxConnectionConstraint(new mxPoint(1, +.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];e.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(.5,.25),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5, +.75),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];k.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.35),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.65),!1),new mxConnectionConstraint(new mxPoint(1,.35),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,.65),!1),new mxConnectionConstraint(new mxPoint(.25,1),!1),new mxConnectionConstraint(new mxPoint(.75,0),!1)];v.prototype.constraints= +[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1, +.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxLine.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];O.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1)];mxDoubleEllipse.prototype.constraints=mxEllipse.prototype.constraints;mxRhombus.prototype.constraints= +mxEllipse.prototype.constraints;mxTriangle.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0)];mxHexagon.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.375,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.625, +0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.375,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.625,1),!0)];mxCloud.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25, +.25),!1),new mxConnectionConstraint(new mxPoint(.4,.1),!1),new mxConnectionConstraint(new mxPoint(.16,.55),!1),new mxConnectionConstraint(new mxPoint(.07,.4),!1),new mxConnectionConstraint(new mxPoint(.31,.8),!1),new mxConnectionConstraint(new mxPoint(.13,.77),!1),new mxConnectionConstraint(new mxPoint(.8,.8),!1),new mxConnectionConstraint(new mxPoint(.55,.95),!1),new mxConnectionConstraint(new mxPoint(.875,.5),!1),new mxConnectionConstraint(new mxPoint(.96,.7),!1),new mxConnectionConstraint(new mxPoint(.625, +.2),!1),new mxConnectionConstraint(new mxPoint(.88,.25),!1)];m.prototype.constraints=mxRectangleShape.prototype.constraints;p.prototype.constraints=mxRectangleShape.prototype.constraints;l.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0, +.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;ba.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5, +0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*b+.25*d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),c));a.push(new mxConnectionConstraint(new mxPoint(.5, +1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*b-.25*d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*e));return a};aa.prototype.getConstraints=function(a,b,c){a=[];var d= +Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,.5*(b+d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,c));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));return a};ka.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0, +.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];R.prototype.getConstraints=function(a,b,c){a=[];var d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))), +e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize)))),d=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-e),d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,c));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,.5*(b-e),c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-d));return a};la.prototype.getConstraints=function(a,b,c){a=[];var d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",R.prototype.arrowWidth)))),e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",R.prototype.arrowSize)))),d=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,.5*b,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*b,c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));return a};pa.prototype.getConstraints=function(a,b,c){a=[];var d=Math.min(c,b),e=Math.max(0,Math.min(d,d*parseFloat(mxUtils.getValue(this.style,"size",this.size)))), +d=(c-e)/2,g=d+e,f=(b-e)/2,e=f+e;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,0));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,c-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,f,c));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+e),d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,d));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,b,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+e),g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*f,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*f,g));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,f,d));return a};G.prototype.constraints=null;fa.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];ga.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.175,.25),!1),new mxConnectionConstraint(new mxPoint(.25, +.5),!1),new mxConnectionConstraint(new mxPoint(.175,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];P.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];H.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)]})();function Actions(a){this.editorUi=a;this.actions={};this.init()} Actions.prototype.init=function(){function a(a){b.escape();var c=b.getDeletableCells(b.getSelectionCells());if(null!=c&&0<c.length){var d=b.model.getParents(c);b.removeCells(c,a);if(null!=d){a=[];for(c=0;c<d.length;c++)b.model.contains(d[c])&&(b.model.isVertex(d[c])||b.model.isEdge(d[c]))&&a.push(d[c]);b.setSelectionCells(a)}}}var c=this.editorUi,d=c.editor,b=d.graph,f=function(){return Action.prototype.isEnabled.apply(this,arguments)&&b.isEnabled()};this.addAction("new...",function(){b.openLink(c.getUrl())}); this.addAction("open...",function(){window.openNew=!0;window.openKey="open";c.openFile()});this.addAction("import...",function(){window.openNew=!1;window.openKey="import";window.openFile=new OpenFile(mxUtils.bind(this,function(){c.hideDialog()}));window.openFile.setConsumer(mxUtils.bind(this,function(a,b){try{var c=mxUtils.parseXml(a);d.graph.setSelectionCells(d.graph.importGraphModel(c.documentElement))}catch(m){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+m.message)}}));c.showDialog((new OpenDialog(this)).container, 320,220,!0,!0,function(){window.openFile=null})}).isEnabled=f;this.addAction("save",function(){c.saveFile(!1)},null,null,Editor.ctrlKey+"+S").isEnabled=f;this.addAction("saveAs...",function(){c.saveFile(!0)},null,null,Editor.ctrlKey+"+Shift+S").isEnabled=f;this.addAction("export...",function(){c.showDialog((new ExportDialog(c)).container,300,230,!0,!0)});this.addAction("editDiagram...",function(){var a=new EditDiagramDialog(c);c.showDialog(a.container,620,420,!0,!1);a.init()});this.addAction("pageSetup...", @@ -3086,7 +3091,7 @@ c.showDataDialog(a)},null,null,Editor.ctrlKey+"+M");this.addAction("editTooltip. null!=a&&b.openLink(a)});this.addAction("editLink...",function(){var a=c.editor.graph;if(a.isEnabled()&&!a.isSelectionEmpty()){var b=a.getSelectionCell(),d=a.getLinkForCell(b)||"";c.showLinkDialog(d,mxResources.get("apply"),function(c){c=mxUtils.trim(c);a.setLinkForCell(b,0<c.length?c:null)})}},null,null,"Alt+Shift+L");this.put("insertImage",new Action(mxResources.get("image")+"...",function(){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&(b.clearSelection(),c.actions.get("image").funct())})).isEnabled= f;this.put("insertLink",new Action(mxResources.get("link")+"...",function(){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&c.showLinkDialog("",mxResources.get("insert"),function(a,c){a=mxUtils.trim(a);if(0<a.length){var d=null,e=b.getLinkTitle(a);null!=c&&0<c.length&&(d=c[0].iconUrl,e=c[0].name||c[0].type,e=e.charAt(0).toUpperCase()+e.substring(1),30<e.length&&(e=e.substring(0,30)+"..."));var g=b.getFreeInsertPoint(),d=new mxCell(e,new mxGeometry(g.x,g.y,100,40),"fontColor=#0000EE;fontStyle=4;rounded=1;overflow=hidden;"+ (null!=d?"shape=label;imageWidth=16;imageHeight=16;spacingLeft=26;align=left;image="+d:"spacing=10;"));d.vertex=!0;b.setLinkForCell(d,a);b.cellSizeUpdated(d,!0);b.getModel().beginUpdate();try{d=b.addCell(d),b.fireEvent(new mxEventObject("cellsInserted","cells",[d]))}finally{b.getModel().endUpdate()}b.setSelectionCell(d);b.scrollCellToVisible(b.getSelectionCell())}})})).isEnabled=f;this.addAction("link...",mxUtils.bind(this,function(){var a=c.editor.graph;if(a.isEnabled())if(a.cellEditor.isContentEditing()){var b= -a.getSelectedElement(),d=a.getParentByName(b,"A",a.cellEditor.textarea),e="";if(null==d&&null!=b&&null!=b.getElementsByTagName)for(var f=b.getElementsByTagName("a"),h=0;h<f.length&&null==d;h++)f[h].textContent==b.textContent&&(a.selectNode(f[h]),d=f[h]);null!=d&&"A"==d.nodeName&&(e=d.getAttribute("href")||"");var u=a.cellEditor.saveSelection();c.showLinkDialog(e,mxResources.get("apply"),mxUtils.bind(this,function(b){a.cellEditor.restoreSelection(u);null!=b&&a.insertLink(b)}))}else a.isSelectionEmpty()? +a.getSelectedElement(),d=a.getParentByName(b,"A",a.cellEditor.textarea),e="";if(null==d&&null!=b&&null!=b.getElementsByTagName)for(var f=b.getElementsByTagName("a"),h=0;h<f.length&&null==d;h++)f[h].textContent==b.textContent&&(d=f[h]);null!=d&&"A"==d.nodeName&&(e=d.getAttribute("href")||"",a.selectNode(d));var u=a.cellEditor.saveSelection();c.showLinkDialog(e,mxResources.get("apply"),mxUtils.bind(this,function(b){a.cellEditor.restoreSelection(u);null!=b&&a.insertLink(b)}))}else a.isSelectionEmpty()? this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=f;this.addAction("autosize",function(){var a=b.getSelectionCells();if(null!=a){b.getModel().beginUpdate();try{for(var c=0;c<a.length;c++){var d=a[c];if(b.getModel().getChildCount(d))b.updateGroupBounds([d],20);else{var e=b.view.getState(d),f=b.getCellGeometry(d);b.getModel().isVertex(d)&&null!=e&&null!=e.text&&null!=f&&b.isWrapping(d)?(f=f.clone(),f.height=e.text.boundingBox.height/b.view.scale,b.getModel().setGeometry(d,f)): b.updateCellSize(d)}}}finally{b.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+Y");this.addAction("formattedText",function(){var a=b.getView().getState(b.getSelectionCell());if(null!=a){var d="1";b.stopEditing();b.getModel().beginUpdate();try{if("1"==a.style.html){var d=null,e=b.convertValueToString(a.cell);"0"!=mxUtils.getValue(a.style,"nl2Br","1")&&(e=e.replace(/\n/g,"").replace(/<br\s*.?>/g,"\n"));var f=document.createElement("div");f.innerHTML=e;e=mxUtils.extractTextWithWhitespace(f.childNodes); b.cellLabelChanged(a.cell,e)}else e=mxUtils.htmlEntities(b.convertValueToString(a.cell),!1),"0"!=mxUtils.getValue(a.style,"nl2Br","1")&&(e=e.replace(/\n/g,"<br/>")),b.cellLabelChanged(a.cell,b.sanitizeHtml(e));b.setCellStyles("html",d);c.fireEvent(new mxEventObject("styleChanged","keys",["html"],"values",[null!=d?d:"0"],"cells",b.getSelectionCells()))}finally{b.getModel().endUpdate()}}});this.addAction("wordWrap",function(){var a=b.getView().getState(b.getSelectionCell()),c="wrap";b.stopEditing(); @@ -3127,14 +3132,14 @@ Menus.prototype.init=function(){var a=this.editorUi.editor.graph,c=mxUtils.bind( "div")})}).firstChild.nextSibling.style.fontFamily=d}),e=0;e<this.defaultFonts.length;e++)d(this.defaultFonts[e]);c.addSeparator(b);if(0<this.customFonts.length){for(e=0;e<this.customFonts.length;e++)d(this.customFonts[e]);c.addSeparator(b);c.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){this.customFonts=[]}),b);c.addSeparator(b)}this.promptChange(c,mxResources.get("custom")+"...","",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,b,!0,mxUtils.bind(this,function(a){this.customFonts.push(a)}))}))); this.put("formatBlock",new Menu(mxUtils.bind(this,function(c,b){function d(d,f){return c.addItem(d,null,mxUtils.bind(this,function(){null!=a.cellEditor.textarea&&(a.cellEditor.textarea.focus(),document.execCommand("formatBlock",!1,"<"+f+">"))}),b)}d(mxResources.get("normal"),"p");d("","h1").firstChild.nextSibling.innerHTML='<h1 style="margin:0px;">'+mxResources.get("heading")+" 1</h1>";d("","h2").firstChild.nextSibling.innerHTML='<h2 style="margin:0px;">'+mxResources.get("heading")+" 2</h2>";d("", "h3").firstChild.nextSibling.innerHTML='<h3 style="margin:0px;">'+mxResources.get("heading")+" 3</h3>";d("","h4").firstChild.nextSibling.innerHTML='<h4 style="margin:0px;">'+mxResources.get("heading")+" 4</h4>";d("","h5").firstChild.nextSibling.innerHTML='<h5 style="margin:0px;">'+mxResources.get("heading")+" 5</h5>";d("","h6").firstChild.nextSibling.innerHTML='<h6 style="margin:0px;">'+mxResources.get("heading")+" 6</h6>";d("","pre").firstChild.nextSibling.innerHTML='<pre style="margin:0px;">'+mxResources.get("formatted")+ -"</pre>";d("","blockquote").firstChild.nextSibling.innerHTML='<blockquote style="margin-top:0px;margin-bottom:0px;">'+mxResources.get("blockquote")+"</blockquote>"})));this.put("fontSize",new Menu(mxUtils.bind(this,function(c,b){for(var d=[6,8,9,10,11,12,14,18,24,36,48,72],e=mxUtils.bind(this,function(d){this.styleChange(c,d,[mxConstants.STYLE_FONTSIZE],[d],null,b,function(){document.execCommand("fontSize",!1,"3");for(var b=a.cellEditor.textarea.getElementsByTagName("font"),c=0;c<b.length;c++)if("3"== -b[c].getAttribute("size")){b[c].removeAttribute("size");b[c].style.fontSize=d+"px";break}})}),h=0;h<d.length;h++)e(d[h]);c.addSeparator(b);if(0<this.customFontSizes.length){for(h=0;h<this.customFontSizes.length;h++)e(this.customFontSizes[h]);c.addSeparator(b);c.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){this.customFontSizes=[]}),b);c.addSeparator(b)}this.promptChange(c,mxResources.get("custom")+"...","(pt)","12",mxConstants.STYLE_FONTSIZE,b,!0,mxUtils.bind(this,function(a){this.customFontSizes.push(a)}))}))); -this.put("direction",new Menu(mxUtils.bind(this,function(c,b){c.addItem(mxResources.get("flipH"),null,function(){a.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},b);c.addItem(mxResources.get("flipV"),null,function(){a.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},b);this.addMenuItems(c,["-","rotation"],b)})));this.put("align",new Menu(mxUtils.bind(this,function(c,b){c.addItem(mxResources.get("leftAlign"),null,function(){a.alignCells(mxConstants.ALIGN_LEFT)},b);c.addItem(mxResources.get("center"),null, -function(){a.alignCells(mxConstants.ALIGN_CENTER)},b);c.addItem(mxResources.get("rightAlign"),null,function(){a.alignCells(mxConstants.ALIGN_RIGHT)},b);c.addSeparator(b);c.addItem(mxResources.get("topAlign"),null,function(){a.alignCells(mxConstants.ALIGN_TOP)},b);c.addItem(mxResources.get("middle"),null,function(){a.alignCells(mxConstants.ALIGN_MIDDLE)},b);c.addItem(mxResources.get("bottomAlign"),null,function(){a.alignCells(mxConstants.ALIGN_BOTTOM)},b)})));this.put("distribute",new Menu(mxUtils.bind(this, -function(c,b){c.addItem(mxResources.get("horizontal"),null,function(){a.distributeCells(!0)},b);c.addItem(mxResources.get("vertical"),null,function(){a.distributeCells(!1)},b)})));this.put("layout",new Menu(mxUtils.bind(this,function(c,b){var d=mxUtils.bind(this,function(a,b){var c=new FilenameDialog(this.editorUi,a,mxResources.get("apply"),function(a){b(parseFloat(a))},mxResources.get("spacing"));this.editorUi.showDialog(c.container,300,80,!0,!0);c.init()});c.addItem(mxResources.get("horizontalFlow"), -null,mxUtils.bind(this,function(){var b=new mxHierarchicalLayout(a,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(function(){var c=a.getSelectionCells();b.execute(a.getDefaultParent(),0==c.length?null:c)},!0)}),b);c.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var b=new mxHierarchicalLayout(a,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(function(){var c=a.getSelectionCells();b.execute(a.getDefaultParent(),0==c.length?null:c)},!0)}),b);c.addSeparator(b); -c.addItem(mxResources.get("horizontalTree"),null,mxUtils.bind(this,function(){var b=a.getSelectionCell(),c=null;null==b||0==a.getModel().getChildCount(b)?0==a.getModel().getEdgeCount(b)&&(c=a.findTreeRoots(a.getDefaultParent())):c=a.findTreeRoots(b);null!=c&&0<c.length&&(b=c[0]);if(null!=b){var g=new mxCompactTreeLayout(a,!0);g.edgeRouting=!1;g.levelDistance=30;d(g.levelDistance,mxUtils.bind(this,function(c){g.levelDistance=c;this.editorUi.executeLayout(function(){g.execute(a.getDefaultParent(),b)}, -!0)}))}}),b);c.addItem(mxResources.get("verticalTree"),null,mxUtils.bind(this,function(){var b=a.getSelectionCell(),c=null;null==b||0==a.getModel().getChildCount(b)?0==a.getModel().getEdgeCount(b)&&(c=a.findTreeRoots(a.getDefaultParent())):c=a.findTreeRoots(b);null!=c&&0<c.length&&(b=c[0]);if(null!=b){var g=new mxCompactTreeLayout(a,!1);g.edgeRouting=!1;g.levelDistance=30;d(g.levelDistance,mxUtils.bind(this,function(c){g.levelDistance=c;this.editorUi.executeLayout(function(){g.execute(a.getDefaultParent(), +"</pre>";d("","blockquote").firstChild.nextSibling.innerHTML='<blockquote style="margin-top:0px;margin-bottom:0px;">'+mxResources.get("blockquote")+"</blockquote>"})));this.put("fontSize",new Menu(mxUtils.bind(this,function(c,b){for(var d=[6,8,9,10,11,12,14,18,24,36,48,72],e=mxUtils.bind(this,function(d){this.styleChange(c,d,[mxConstants.STYLE_FONTSIZE],[d],null,b,function(){if(null!=a.cellEditor.textarea){document.execCommand("fontSize",!1,"3");for(var b=a.cellEditor.textarea.getElementsByTagName("font"), +c=0;c<b.length;c++)if("3"==b[c].getAttribute("size")){b[c].removeAttribute("size");b[c].style.fontSize=d+"px";break}}})}),h=0;h<d.length;h++)e(d[h]);c.addSeparator(b);if(0<this.customFontSizes.length){for(h=0;h<this.customFontSizes.length;h++)e(this.customFontSizes[h]);c.addSeparator(b);c.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){this.customFontSizes=[]}),b);c.addSeparator(b)}this.promptChange(c,mxResources.get("custom")+"...","(pt)","12",mxConstants.STYLE_FONTSIZE,b,!0,mxUtils.bind(this, +function(a){this.customFontSizes.push(a)}))})));this.put("direction",new Menu(mxUtils.bind(this,function(c,b){c.addItem(mxResources.get("flipH"),null,function(){a.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},b);c.addItem(mxResources.get("flipV"),null,function(){a.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},b);this.addMenuItems(c,["-","rotation"],b)})));this.put("align",new Menu(mxUtils.bind(this,function(c,b){c.addItem(mxResources.get("leftAlign"),null,function(){a.alignCells(mxConstants.ALIGN_LEFT)}, +b);c.addItem(mxResources.get("center"),null,function(){a.alignCells(mxConstants.ALIGN_CENTER)},b);c.addItem(mxResources.get("rightAlign"),null,function(){a.alignCells(mxConstants.ALIGN_RIGHT)},b);c.addSeparator(b);c.addItem(mxResources.get("topAlign"),null,function(){a.alignCells(mxConstants.ALIGN_TOP)},b);c.addItem(mxResources.get("middle"),null,function(){a.alignCells(mxConstants.ALIGN_MIDDLE)},b);c.addItem(mxResources.get("bottomAlign"),null,function(){a.alignCells(mxConstants.ALIGN_BOTTOM)},b)}))); +this.put("distribute",new Menu(mxUtils.bind(this,function(c,b){c.addItem(mxResources.get("horizontal"),null,function(){a.distributeCells(!0)},b);c.addItem(mxResources.get("vertical"),null,function(){a.distributeCells(!1)},b)})));this.put("layout",new Menu(mxUtils.bind(this,function(c,b){var d=mxUtils.bind(this,function(a,b){var c=new FilenameDialog(this.editorUi,a,mxResources.get("apply"),function(a){b(parseFloat(a))},mxResources.get("spacing"));this.editorUi.showDialog(c.container,300,80,!0,!0); +c.init()});c.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var b=new mxHierarchicalLayout(a,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(function(){var c=a.getSelectionCells();b.execute(a.getDefaultParent(),0==c.length?null:c)},!0)}),b);c.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var b=new mxHierarchicalLayout(a,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(function(){var c=a.getSelectionCells();b.execute(a.getDefaultParent(), +0==c.length?null:c)},!0)}),b);c.addSeparator(b);c.addItem(mxResources.get("horizontalTree"),null,mxUtils.bind(this,function(){var b=a.getSelectionCell(),c=null;null==b||0==a.getModel().getChildCount(b)?0==a.getModel().getEdgeCount(b)&&(c=a.findTreeRoots(a.getDefaultParent())):c=a.findTreeRoots(b);null!=c&&0<c.length&&(b=c[0]);if(null!=b){var g=new mxCompactTreeLayout(a,!0);g.edgeRouting=!1;g.levelDistance=30;d(g.levelDistance,mxUtils.bind(this,function(c){g.levelDistance=c;this.editorUi.executeLayout(function(){g.execute(a.getDefaultParent(), +b)},!0)}))}}),b);c.addItem(mxResources.get("verticalTree"),null,mxUtils.bind(this,function(){var b=a.getSelectionCell(),c=null;null==b||0==a.getModel().getChildCount(b)?0==a.getModel().getEdgeCount(b)&&(c=a.findTreeRoots(a.getDefaultParent())):c=a.findTreeRoots(b);null!=c&&0<c.length&&(b=c[0]);if(null!=b){var g=new mxCompactTreeLayout(a,!1);g.edgeRouting=!1;g.levelDistance=30;d(g.levelDistance,mxUtils.bind(this,function(c){g.levelDistance=c;this.editorUi.executeLayout(function(){g.execute(a.getDefaultParent(), b)},!0)}))}}),b);c.addItem(mxResources.get("radialTree"),null,mxUtils.bind(this,function(){var b=a.getSelectionCell(),c=null;null==b||0==a.getModel().getChildCount(b)?0==a.getModel().getEdgeCount(b)&&(c=a.findTreeRoots(a.getDefaultParent())):c=a.findTreeRoots(b);null!=c&&0<c.length&&(b=c[0]);if(null!=b){var g=new mxRadialTreeLayout(a,!1);g.levelDistance=80;g.autoRadius=!0;d(g.levelDistance,mxUtils.bind(this,function(c){g.levelDistance=c;this.editorUi.executeLayout(function(){g.execute(a.getDefaultParent(), b);a.isSelectionEmpty()||(b=a.getModel().getParent(b),a.getModel().isVertex(b)&&a.updateGroupBounds([b],2*a.gridSize,!0))},!0)}))}}),b);c.addSeparator(b);c.addItem(mxResources.get("organic"),null,mxUtils.bind(this,function(){var b=new mxFastOrganicLayout(a);d(b.forceConstant,mxUtils.bind(this,function(c){b.forceConstant=c;this.editorUi.executeLayout(function(){var c=a.getSelectionCell();if(null==c||0==a.getModel().getChildCount(c))c=a.getDefaultParent();b.execute(c);a.getModel().isVertex(c)&&a.updateGroupBounds([c], 2*a.gridSize,!0)},!0)}))}),b);c.addItem(mxResources.get("circle"),null,mxUtils.bind(this,function(){var b=new mxCircleLayout(a);this.editorUi.executeLayout(function(){var c=a.getSelectionCell();if(null==c||0==a.getModel().getChildCount(c))c=a.getDefaultParent();b.execute(c);a.getModel().isVertex(c)&&a.updateGroupBounds([c],2*a.gridSize,!0)},!0)}),b)})));this.put("navigation",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,"home - exitGroup enterGroup - expand collapse - collapsible".split(" "), @@ -3143,11 +3148,11 @@ function(a,b){this.addMenuItems(a,["insertLink","insertImage"],b)})));this.put(" ["outline","layers"],b)})));this.put("viewZoom",new Menu(mxUtils.bind(this,function(c,b){this.addMenuItems(c,["resetView","-"],b);for(var d=[.25,.5,.75,1,1.25,1.5,2,3,4],e=0;e<d.length;e++)(function(d){c.addItem(100*d+"%",null,function(){a.zoomTo(d)},b)})(d[e]);this.addMenuItems(c,"- fitWindow fitPageWidth fitPage fitTwoPages - customZoom".split(" "),b)})));this.put("file",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,"new open - save saveAs - import export - pageSetup print".split(" "), b)})));this.put("edit",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,"undo redo - cut copy paste delete - duplicate - editData editTooltip editStyle - edit - editLink openLink - selectVertices selectEdges selectAll selectNone - lockUnlock".split(" "))})));this.put("extras",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,["copyConnect","collapseExpand","-","editDiagram"])})));this.put("help",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,["help","-","about"])})))}; Menus.prototype.put=function(a,c){return this.menus[a]=c};Menus.prototype.get=function(a){return this.menus[a]};Menus.prototype.addSubmenu=function(a,c,d,b){var f=this.get(a);null!=f&&(f=f.isEnabled(),c.showDisabled||f)&&(d=c.addItem(b||mxResources.get(a),null,null,d,null,f),this.addMenu(a,c,d))};Menus.prototype.addMenu=function(a,c,d){var b=this.get(a);null!=b&&(c.showDisabled||b.isEnabled())&&this.get(a).execute(c,d)}; -Menus.prototype.addInsertTableItem=function(a){function c(a,b){for(var c=["<table>"],d=0;d<a;d++){c.push("<tr>");for(var e=0;e<b;e++)c.push("<td><br></td>");c.push("</tr>")}c.push("</table>");return c.join("")}var d=this.editorUi.editor.graph;a=a.addItem("",null,mxUtils.bind(this,function(a){var b=d.getParentByName(mxEvent.getSource(a),"TD");if(null!=b){var e=d.getParentByName(b,"TR"),f=d.cellEditor.textarea.getElementsByTagName("table");a=[];for(var h=0;h<f.length;h++)a.push(f[h]);d.container.focus(); -d.pasteHtmlAtCaret(c(e.sectionRowIndex+1,b.cellIndex+1));b=d.cellEditor.textarea.getElementsByTagName("table");if(b.length==a.length+1)for(h=b.length-1;0<=h;h--)if(0==h||b[h]!=a[h-1]){d.selectNode(b[h].rows[0].cells[0]);break}}}));var b='<img src="'+mxClient.imageBasePath+'/transparent.gif" width="16" height="16"/>';a.firstChild.innerHTML="";var f=function(a,c){var d=document.createElement("table");d.setAttribute("border","1");d.style.borderCollapse="collapse";mxClient.IS_QUIRKS||d.setAttribute("cellPadding", -"8");for(var e=0;e<a;e++)for(var f=d.insertRow(e),g=0;g<c;g++){var h=f.insertCell(-1);mxClient.IS_QUIRKS&&(h.innerHTML=b)}return d}(5,5);a.firstChild.appendChild(f);var e=document.createElement("div");e.style.padding="4px";e.style.fontSize=Menus.prototype.defaultFontSize+"px";e.innerHTML="1x1";a.firstChild.appendChild(e);mxEvent.addListener(f,"mouseover",function(a){var c=d.getParentByName(mxEvent.getSource(a),"TD");if(null!=c){for(var h=d.getParentByName(c,"TR"),l=Math.min(20,h.sectionRowIndex+2), -m=Math.min(20,c.cellIndex+2),p=f.rows.length;p<l;p++)for(var n=f.insertRow(p),u=0;u<f.rows[0].cells.length;u++){var q=n.insertCell(-1);mxClient.IS_QUIRKS&&(q.innerHTML=b)}for(p=0;p<f.rows.length;p++)for(n=f.rows[p],u=n.cells.length;u<m;u++)q=n.insertCell(-1),mxClient.IS_QUIRKS&&(q.innerHTML=b);e.innerHTML=c.cellIndex+1+"x"+(h.sectionRowIndex+1);for(l=0;l<f.rows.length;l++)for(m=f.rows[l],p=0;p<m.cells.length;p++)m.cells[p].style.backgroundColor=l<=h.sectionRowIndex&&p<=c.cellIndex?"blue":"white"; -mxEvent.consume(a)}})}; +Menus.prototype.addInsertTableItem=function(a){function c(a,b){for(var c=["<table>"],d=0;d<a;d++){c.push("<tr>");for(var e=0;e<b;e++)c.push("<td><br></td>");c.push("</tr>")}c.push("</table>");return c.join("")}var d=this.editorUi.editor.graph;a=a.addItem("",null,mxUtils.bind(this,function(a){var b=d.getParentByName(mxEvent.getSource(a),"TD");if(null!=b&&null!=d.cellEditor.textarea){var e=d.getParentByName(b,"TR"),f=d.cellEditor.textarea.getElementsByTagName("table");a=[];for(var h=0;h<f.length;h++)a.push(f[h]); +d.container.focus();d.pasteHtmlAtCaret(c(e.sectionRowIndex+1,b.cellIndex+1));b=d.cellEditor.textarea.getElementsByTagName("table");if(b.length==a.length+1)for(h=b.length-1;0<=h;h--)if(0==h||b[h]!=a[h-1]){d.selectNode(b[h].rows[0].cells[0]);break}}}));var b='<img src="'+mxClient.imageBasePath+'/transparent.gif" width="16" height="16"/>';a.firstChild.innerHTML="";var f=function(a,c){var d=document.createElement("table");d.setAttribute("border","1");d.style.borderCollapse="collapse";mxClient.IS_QUIRKS|| +d.setAttribute("cellPadding","8");for(var e=0;e<a;e++)for(var g=d.insertRow(e),f=0;f<c;f++){var h=g.insertCell(-1);mxClient.IS_QUIRKS&&(h.innerHTML=b)}return d}(5,5);a.firstChild.appendChild(f);var e=document.createElement("div");e.style.padding="4px";e.style.fontSize=Menus.prototype.defaultFontSize+"px";e.innerHTML="1x1";a.firstChild.appendChild(e);mxEvent.addListener(f,"mouseover",function(a){var c=d.getParentByName(mxEvent.getSource(a),"TD");if(null!=c){for(var h=d.getParentByName(c,"TR"),l=Math.min(20, +h.sectionRowIndex+2),m=Math.min(20,c.cellIndex+2),p=f.rows.length;p<l;p++)for(var n=f.insertRow(p),u=0;u<f.rows[0].cells.length;u++){var q=n.insertCell(-1);mxClient.IS_QUIRKS&&(q.innerHTML=b)}for(p=0;p<f.rows.length;p++)for(n=f.rows[p],u=n.cells.length;u<m;u++)q=n.insertCell(-1),mxClient.IS_QUIRKS&&(q.innerHTML=b);e.innerHTML=c.cellIndex+1+"x"+(h.sectionRowIndex+1);for(l=0;l<f.rows.length;l++)for(m=f.rows[l],p=0;p<m.cells.length;p++)m.cells[p].style.backgroundColor=l<=h.sectionRowIndex&&p<=c.cellIndex? +"blue":"white";mxEvent.consume(a)}})}; Menus.prototype.edgeStyleChange=function(a,c,d,b,f,e,h){return a.addItem(c,null,mxUtils.bind(this,function(){var a=this.editorUi.editor.graph;a.stopEditing(!1);a.getModel().beginUpdate();try{for(var c=a.getSelectionCells(),e=[],f=0;f<c.length;f++){var p=c[f];if(a.getModel().isEdge(p)){if(h){var n=a.getCellGeometry(p);null!=n&&(n=n.clone(),n.points=null,a.getModel().setGeometry(p,n))}for(var u=0;u<d.length;u++)a.setCellStyles(d[u],b[u],[p]);e.push(p)}}this.editorUi.fireEvent(new mxEventObject("styleChanged","keys", d,"values",b,"cells",e))}finally{a.getModel().endUpdate()}}),e,f)};Menus.prototype.styleChange=function(a,c,d,b,f,e,h,g){var k=this.createStyleChangeFunction(d,b);return a.addItem(c,null,mxUtils.bind(this,function(){var a=this.editorUi.editor.graph;null!=h&&a.cellEditor.isContentEditing()?h():k(g)}),e,f)}; Menus.prototype.createStyleChangeFunction=function(a,c){return mxUtils.bind(this,function(d){var b=this.editorUi.editor.graph;b.stopEditing(!1);b.getModel().beginUpdate();try{for(var f=0;f<a.length;f++)b.setCellStyles(a[f],c[f]);null!=d&&d();this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",a,"values",c,"cells",b.getSelectionCells()))}finally{b.getModel().endUpdate()}})}; @@ -3225,9 +3230,9 @@ ColorDialog.addRecentColor=function(a,c){null!=a&&(mxUtils.remove(a,ColorDialog. var AboutDialog=function(a){var c=document.createElement("div");c.setAttribute("align","center");var d=document.createElement("h3");mxUtils.write(d,mxResources.get("about")+" GraphEditor");c.appendChild(d);d=document.createElement("img");d.style.border="0px";d.setAttribute("width","176");d.setAttribute("width","151");d.setAttribute("src",IMAGE_PATH+"/logo.png");c.appendChild(d);mxUtils.br(c);mxUtils.write(c,"Powered by mxGraph "+mxClient.VERSION);mxUtils.br(c);d=document.createElement("a");d.setAttribute("href", "http://www.jgraph.com/");d.setAttribute("target","_blank");mxUtils.write(d,"www.jgraph.com");c.appendChild(d);mxUtils.br(c);mxUtils.br(c);d=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});d.className="geBtn gePrimaryBtn";c.appendChild(d);this.container=c},FilenameDialog=function(a,c,d,b,f,e,h,g,k,l){k=null!=k?k:!0;var m,p,n=document.createElement("table"),u=document.createElement("tbody");n.style.marginTop="8px";m=document.createElement("tr");p=document.createElement("td");p.style.whiteSpace= "nowrap";p.style.fontSize="10pt";p.style.width="120px";mxUtils.write(p,(f||mxResources.get("filename"))+":");m.appendChild(p);var q=document.createElement("input");q.setAttribute("value",c||"");q.style.marginLeft="4px";q.style.width="180px";var r=mxUtils.button(d,function(){if(null==e||e(q.value))k&&a.hideDialog(),b(q.value)});r.className="geBtn gePrimaryBtn";this.init=function(){if(null!=f||null==h)if(q.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?q.select(): -document.execCommand("selectAll",!1,null),Graph.fileSupport){var a=n.parentNode,b=null;mxEvent.addListener(a,"dragleave",function(a){null!=b&&(b.style.backgroundColor="",b=null);a.stopPropagation();a.preventDefault()});mxEvent.addListener(a,"dragover",mxUtils.bind(this,function(a){null==b&&(!mxClient.IS_IE||10<document.documentMode)&&(b=q,b.style.backgroundColor="#ebf2f9");a.stopPropagation();a.preventDefault()}));mxEvent.addListener(a,"drop",mxUtils.bind(this,function(a){null!=b&&(b.style.backgroundColor= -"",b=null);0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")&&(q.value=decodeURIComponent(a.dataTransfer.getData("text/uri-list")),r.click());a.stopPropagation();a.preventDefault()}))}};p=document.createElement("td");p.appendChild(q);m.appendChild(p);null==f&&null!=h||u.appendChild(m);null!=h&&(m=document.createElement("tr"),p=document.createElement("td"),p.colSpan=2,p.appendChild(h),m.appendChild(p),u.appendChild(m));m=document.createElement("tr");p=document.createElement("td");p.colSpan= -2;p.style.paddingTop="20px";p.style.whiteSpace="nowrap";p.setAttribute("align","right");c=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=l&&l()});c.className="geBtn";a.editor.cancelFirst&&p.appendChild(c);null!=g&&(d=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(g)}),d.className="geBtn",p.appendChild(d));mxEvent.addListener(q,"keypress",function(a){13==a.keyCode&&r.click()});p.appendChild(r);a.editor.cancelFirst||p.appendChild(c);m.appendChild(p); +document.execCommand("selectAll",!1,null),Graph.fileSupport){var a=n.parentNode;if(null!=a){var b=null;mxEvent.addListener(a,"dragleave",function(a){null!=b&&(b.style.backgroundColor="",b=null);a.stopPropagation();a.preventDefault()});mxEvent.addListener(a,"dragover",mxUtils.bind(this,function(a){null==b&&(!mxClient.IS_IE||10<document.documentMode)&&(b=q,b.style.backgroundColor="#ebf2f9");a.stopPropagation();a.preventDefault()}));mxEvent.addListener(a,"drop",mxUtils.bind(this,function(a){null!=b&& +(b.style.backgroundColor="",b=null);0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")&&(q.value=decodeURIComponent(a.dataTransfer.getData("text/uri-list")),r.click());a.stopPropagation();a.preventDefault()}))}}};p=document.createElement("td");p.appendChild(q);m.appendChild(p);null==f&&null!=h||u.appendChild(m);null!=h&&(m=document.createElement("tr"),p=document.createElement("td"),p.colSpan=2,p.appendChild(h),m.appendChild(p),u.appendChild(m));m=document.createElement("tr");p=document.createElement("td"); +p.colSpan=2;p.style.paddingTop="20px";p.style.whiteSpace="nowrap";p.setAttribute("align","right");c=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=l&&l()});c.className="geBtn";a.editor.cancelFirst&&p.appendChild(c);null!=g&&(d=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(g)}),d.className="geBtn",p.appendChild(d));mxEvent.addListener(q,"keypress",function(a){13==a.keyCode&&r.click()});p.appendChild(r);a.editor.cancelFirst||p.appendChild(c);m.appendChild(p); u.appendChild(m);n.appendChild(u);this.container=n},TextareaDialog=function(a,c,d,b,f,e,h,g,k,l,m,p){h=null!=h?h:300;g=null!=g?g:120;l=null!=l?l:!1;var n,u,q=document.createElement("table"),r=document.createElement("tbody");n=document.createElement("tr");u=document.createElement("td");u.style.fontSize="10pt";u.style.width="100px";mxUtils.write(u,c);n.appendChild(u);r.appendChild(n);n=document.createElement("tr");u=document.createElement("td");var t=document.createElement("textarea");m&&t.setAttribute("wrap", "off");t.setAttribute("spellcheck","false");t.setAttribute("autocorrect","off");t.setAttribute("autocomplete","off");t.setAttribute("autocapitalize","off");mxUtils.write(t,d||"");t.style.resize="none";t.style.width=h+"px";t.style.height=g+"px";this.textarea=t;this.init=function(){t.focus();t.scrollTop=0};u.appendChild(t);n.appendChild(u);r.appendChild(n);n=document.createElement("tr");u=document.createElement("td");u.style.paddingTop="14px";u.style.whiteSpace="nowrap";u.setAttribute("align","right"); c=mxUtils.button(e||mxResources.get("cancel"),function(){a.hideDialog();null!=f&&f()});c.className="geBtn";a.editor.cancelFirst&&u.appendChild(c);null!=k&&k(u,t);null!=b&&(k=mxUtils.button(p||mxResources.get("apply"),function(){l||a.hideDialog();b(t.value)}),k.className="geBtn gePrimaryBtn",u.appendChild(k));a.editor.cancelFirst||u.appendChild(c);n.appendChild(u);r.appendChild(n);q.appendChild(r);this.container=q},EditDiagramDialog=function(a){var c=document.createElement("div");c.style.textAlign= @@ -3246,17 +3251,17 @@ k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResourc "checkbox");r.checked=null==b.background||b.background==mxConstants.NONE;k=document.createElement("td");k.appendChild(r);mxUtils.write(k,mxResources.get("transparent"));f.appendChild(k);l.appendChild(f);f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("borderWidth")+":");f.appendChild(k);var t=document.createElement("input");t.setAttribute("type","number");t.setAttribute("value",ExportDialog.lastBorderValue);t.style.width="180px"; k=document.createElement("td");k.appendChild(t);f.appendChild(k);l.appendChild(f);e.appendChild(l);mxEvent.addListener(p,"change",c);c();mxEvent.addListener(n,"change",function(){var a=Math.max(0,parseFloat(n.value)||100)/100;n.value=parseFloat((100*a).toFixed(2));0<h?(u.value=Math.floor(h*a),q.value=Math.floor(g*a)):(n.value="100",u.value=h,q.value=g);d()});mxEvent.addListener(u,"change",function(){var a=parseInt(u.value)/h;0<a?(n.value=parseFloat((100*a).toFixed(2)),q.value=Math.floor(g*a)):(n.value= "100",u.value=h,q.value=g);d()});mxEvent.addListener(q,"change",function(){var a=parseInt(q.value)/g;0<a?(n.value=parseFloat((100*a).toFixed(2)),u.value=Math.floor(h*a)):(n.value="100",u.value=h,q.value=g);d()});f=document.createElement("tr");k=document.createElement("td");k.setAttribute("align","right");k.style.paddingTop="22px";k.colSpan=2;var w=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(){if(0>=parseInt(n.value))mxUtils.alert(mxResources.get("drawingEmpty"));else{var c= -m.value,d=p.value,e=Math.max(0,parseFloat(n.value)||100)/100,f=Math.max(0,parseInt(t.value)),g=b.background;if(("svg"==d||"png"==d)&&r.checked)g=null;else if(null==g||g==mxConstants.NONE)g="#ffffff";ExportDialog.lastBorderValue=f;ExportDialog.exportFile(a,c,d,g,e,f)}}));w.className="geBtn gePrimaryBtn";var v=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});v.className="geBtn";a.editor.cancelFirst?(k.appendChild(v),k.appendChild(w)):(k.appendChild(w),k.appendChild(v));f.appendChild(k); +m.value,d=p.value,e=Math.max(0,parseFloat(n.value)||100)/100,g=Math.max(0,parseInt(t.value)),f=b.background;if(("svg"==d||"png"==d)&&r.checked)f=null;else if(null==f||f==mxConstants.NONE)f="#ffffff";ExportDialog.lastBorderValue=g;ExportDialog.exportFile(a,c,d,f,e,g)}}));w.className="geBtn gePrimaryBtn";var v=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});v.className="geBtn";a.editor.cancelFirst?(k.appendChild(v),k.appendChild(w)):(k.appendChild(w),k.appendChild(v));f.appendChild(k); l.appendChild(f);e.appendChild(l);this.container=e};ExportDialog.lastBorderValue=0;ExportDialog.showGifOption=!0;ExportDialog.showXmlOption=!0; ExportDialog.exportFile=function(a,c,d,b,f,e){var h=a.editor.graph;if("xml"==d)ExportDialog.saveLocalFile(a,mxUtils.getXml(a.editor.getGraphXml()),c,d);else if("svg"==d)ExportDialog.saveLocalFile(a,mxUtils.getXml(h.getSvg(b,f,e)),c,d);else{var g=h.getGraphBounds(),k=mxUtils.createXmlDocument(),l=k.createElement("output");k.appendChild(l);k=new mxXmlCanvas2D(l);k.translate(Math.floor((e/f-g.x)/h.view.scale),Math.floor((e/f-g.y)/h.view.scale));k.scale(f/h.view.scale);(new mxImageExport).drawState(h.getView().getState(h.model.root), k);l="xml="+encodeURIComponent(mxUtils.getXml(l));k=Math.ceil(g.width*f/h.view.scale+2*e);f=Math.ceil(g.height*f/h.view.scale+2*e);l.length<=MAX_REQUEST_SIZE&&k*f<MAX_AREA?(a.hideDialog(),(new mxXmlRequest(EXPORT_URL,"format="+d+"&filename="+encodeURIComponent(c)+"&bg="+(null!=b?b:"none")+"&w="+k+"&h="+f+"&"+l)).simulate(document,"_blank")):mxUtils.alert(mxResources.get("drawingTooLarge"))}}; ExportDialog.saveLocalFile=function(a,c,d,b){c.length<MAX_REQUEST_SIZE?(a.hideDialog(),(new mxXmlRequest(SAVE_URL,"xml="+encodeURIComponent(c)+"&filename="+encodeURIComponent(d)+"&format="+b)).simulate(document,"_blank")):(mxUtils.alert(mxResources.get("drawingTooLarge")),mxUtils.popup(xml))}; -var EditDataDialog=function(a,c){function d(){0<w.value.length?v.removeAttribute("disabled"):v.setAttribute("disabled","disabled")}var b=document.createElement("div"),f=a.editor.graph,e=f.getModel().getValue(c);if(!mxUtils.isNode(e)){var h=mxUtils.createXmlDocument().createElement("object");h.setAttribute("label",e||"");e=h}var g=new mxForm("properties");g.table.style.width="100%";for(var k=e.attributes,l=[],m=[],p=0,n=EditDataDialog.getDisplayIdForCell(a,c),u=function(a,b){var c=document.createElement("div"); -c.style.position="relative";c.style.paddingRight="20px";c.style.boxSizing="border-box";c.style.width="100%";var d=document.createElement("a"),e=mxUtils.createImage(Dialog.prototype.closeImage);e.style.height="9px";e.style.fontSize="9px";e.style.marginBottom=mxClient.IS_IE11?"-1px":"5px";d.className="geButton";d.setAttribute("title",mxResources.get("delete"));d.style.position="absolute";d.style.top="4px";d.style.right="0px";d.style.margin="0px";d.style.width="9px";d.style.height="9px";d.style.cursor= -"pointer";d.appendChild(e);e=function(a){return function(){for(var b=0,c=0;c<l.length;c++){if(l[c]==a){m[c]=null;g.table.deleteRow(b+(null!=n?1:0));break}null!=m[c]&&b++}}}(b);mxEvent.addListener(d,"click",e);e=a.parentNode;c.appendChild(a);c.appendChild(d);e.appendChild(c)},h=function(a,b,c){l[a]=b;m[a]=g.addTextarea(l[p]+":",c,2);m[a].style.width="100%";u(m[a],b)},q=[],r=f.getModel().getParent(c)==f.getModel().getRoot(),t=0;t<k.length;t++)!r&&"label"==k[t].nodeName||"placeholders"==k[t].nodeName|| -q.push({name:k[t].nodeName,value:k[t].nodeValue});q.sort(function(a,b){return a.name<b.name?-1:a.name>b.name?1:0});null!=n&&(k=document.createElement("input"),k.style.width="280px",k.style.textAlign="center",k.setAttribute("type","text"),k.setAttribute("readOnly","true"),k.setAttribute("value",n),g.addField(mxResources.get("id")+":",k));for(t=0;t<q.length;t++)h(p,q[t].name,q[t].value),p++;h=document.createElement("div");h.style.cssText="position:absolute;left:30px;right:30px;overflow-y:auto;top:30px;bottom:80px;"; +var EditDataDialog=function(a,c){function d(){0<w.value.length?v.removeAttribute("disabled"):v.setAttribute("disabled","disabled")}var b=document.createElement("div"),f=a.editor.graph,e=f.getModel().getValue(c);if(!mxUtils.isNode(e)){var h=mxUtils.createXmlDocument().createElement("object");h.setAttribute("label",e||"");e=h}var g=new mxForm("properties");g.table.style.width="100%";for(var k=e.attributes,l=[],m=[],p=0,n=null!=EditDataDialog.getDisplayIdForCell?EditDataDialog.getDisplayIdForCell(a, +c):null,u=function(a,b){var c=document.createElement("div");c.style.position="relative";c.style.paddingRight="20px";c.style.boxSizing="border-box";c.style.width="100%";var d=document.createElement("a"),e=mxUtils.createImage(Dialog.prototype.closeImage);e.style.height="9px";e.style.fontSize="9px";e.style.marginBottom=mxClient.IS_IE11?"-1px":"5px";d.className="geButton";d.setAttribute("title",mxResources.get("delete"));d.style.position="absolute";d.style.top="4px";d.style.right="0px";d.style.margin= +"0px";d.style.width="9px";d.style.height="9px";d.style.cursor="pointer";d.appendChild(e);e=function(a){return function(){for(var b=0,c=0;c<l.length;c++){if(l[c]==a){m[c]=null;g.table.deleteRow(b+(null!=n?1:0));break}null!=m[c]&&b++}}}(b);mxEvent.addListener(d,"click",e);e=a.parentNode;c.appendChild(a);c.appendChild(d);e.appendChild(c)},h=function(a,b,c){l[a]=b;m[a]=g.addTextarea(l[p]+":",c,2);m[a].style.width="100%";u(m[a],b)},q=[],r=f.getModel().getParent(c)==f.getModel().getRoot(),t=0;t<k.length;t++)!r&& +"label"==k[t].nodeName||"placeholders"==k[t].nodeName||q.push({name:k[t].nodeName,value:k[t].nodeValue});q.sort(function(a,b){return a.name<b.name?-1:a.name>b.name?1:0});null!=n&&(k=document.createElement("input"),k.style.width="280px",k.style.textAlign="center",k.setAttribute("type","text"),k.setAttribute("readOnly","true"),k.setAttribute("value",n),g.addField(mxResources.get("id")+":",k));for(t=0;t<q.length;t++)h(p,q[t].name,q[t].value),p++;h=document.createElement("div");h.style.cssText="position:absolute;left:30px;right:30px;overflow-y:auto;top:30px;bottom:80px;"; h.appendChild(g.table);q=document.createElement("div");q.style.whiteSpace="nowrap";q.style.marginTop="6px";var w=document.createElement("input");w.setAttribute("placeholder",mxResources.get("enterPropertyName"));w.setAttribute("type","text");w.setAttribute("size",mxClient.IS_IE||mxClient.IS_IE11?"18":"22");w.style.marginLeft="2px";q.appendChild(w);h.appendChild(q);b.appendChild(h);var v=mxUtils.button(mxResources.get("addProperty"),function(){var a=w.value;if(0<a.length&&"label"!=a&&"placeholders"!= -a&&0>a.indexOf(":"))try{var b=mxUtils.indexOf(l,a);if(0<=b&&null!=m[b])m[b].focus();else{e.cloneNode(!1).setAttribute(a,"");0<=b&&(l.splice(b,1),m.splice(b,1));l.push(a);var c=g.addTextarea(a+":","",2);c.style.width="100%";m.push(c);u(c,a);c.focus()}w.value=""}catch(E){mxUtils.alert(E)}else mxUtils.alert(mxResources.get("invalidName"))});this.init=function(){0<m.length?m[0].focus():w.focus()};v.setAttribute("disabled","disabled");v.style.marginLeft="10px";v.style.width="144px";q.appendChild(v);h= +a&&0>a.indexOf(":"))try{var b=mxUtils.indexOf(l,a);if(0<=b&&null!=m[b])m[b].focus();else{e.cloneNode(!1).setAttribute(a,"");0<=b&&(l.splice(b,1),m.splice(b,1));l.push(a);var c=g.addTextarea(a+":","",2);c.style.width="100%";m.push(c);u(c,a);c.focus()}w.value=""}catch(F){mxUtils.alert(F)}else mxUtils.alert(mxResources.get("invalidName"))});this.init=function(){0<m.length?m[0].focus():w.focus()};v.setAttribute("disabled","disabled");v.style.marginLeft="10px";v.style.width="144px";q.appendChild(v);h= mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog.apply(a,arguments)});h.className="geBtn";q=mxUtils.button(mxResources.get("apply"),function(){try{a.hideDialog.apply(a,arguments);e=e.cloneNode(!0);for(var b=!1,d=0;d<l.length;d++)null==m[d]?e.removeAttribute(l[d]):(e.setAttribute(l[d],m[d].value),b=b||"placeholder"==l[d]&&"1"==e.getAttribute("placeholders"));b&&e.removeAttribute("label");f.getModel().setValue(c,e)}catch(D){mxUtils.alert(D)}});q.className="geBtn gePrimaryBtn";mxEvent.addListener(w, "keyup",d);mxEvent.addListener(w,"change",d);k=document.createElement("div");k.style.cssText="position:absolute;left:30px;right:30px;text-align:right;bottom:30px;height:40px;";if(a.editor.graph.getModel().isVertex(c)||a.editor.graph.getModel().isEdge(c)){r=document.createElement("span");r.style.marginRight="10px";t=document.createElement("input");t.setAttribute("type","checkbox");t.style.marginRight="6px";"1"==e.getAttribute("placeholders")&&(t.setAttribute("checked","checked"),t.defaultChecked=!0); mxEvent.addListener(t,"click",function(){"1"==e.getAttribute("placeholders")?e.removeAttribute("placeholders"):e.setAttribute("placeholders","1")});r.appendChild(t);mxUtils.write(r,mxResources.get("placeholders"));if(null!=EditDataDialog.placeholderHelpLink){t=document.createElement("a");t.setAttribute("href",EditDataDialog.placeholderHelpLink);t.setAttribute("title",mxResources.get("help"));t.setAttribute("target","_blank");t.style.marginLeft="8px";t.style.cursor="help";var z=document.createElement("img"); @@ -3267,10 +3272,10 @@ var LinkDialog=function(a,c,d,b){var f=document.createElement("div");mxUtils.wri 0:3)+"px";c.style.background="url("+IMAGE_PATH+"/transparent.gif)";mxEvent.addListener(c,"click",function(){h.value="";h.focus()});e.appendChild(h);e.appendChild(c);f.appendChild(e);this.init=function(){h.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?h.select():document.execCommand("selectAll",!1,null)};e=document.createElement("div");e.style.marginTop="18px";e.style.textAlign="right";mxEvent.addListener(h,"keypress",function(c){13==c.keyCode&&(a.hideDialog(), b(h.value))});c=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});c.className="geBtn";a.editor.cancelFirst&&e.appendChild(c);d=mxUtils.button(d,function(){a.hideDialog();b(h.value)});d.className="geBtn gePrimaryBtn";e.appendChild(d);a.editor.cancelFirst||e.appendChild(c);f.appendChild(e);this.container=f},OutlineWindow=function(a,c,d,b,f){function e(){l.outline.pageScale=h.pageScale;l.outline.pageFormat=h.pageFormat;l.outline.pageVisible=h.pageVisible;l.outline.background=null== h.background||h.background==mxConstants.NONE?h.defaultPageBackgroundColor:h.background;var a=mxUtils.getCurrentStyle(h.container);g.style.backgroundColor=a.backgroundColor;null!=h.view.backgroundPageShape&&null!=l.outline.view.backgroundPageShape&&(l.outline.view.backgroundPageShape.fill=h.view.backgroundPageShape.fill);l.outline.refresh()}var h=a.editor.graph,g=document.createElement("div");g.style.position="absolute";g.style.width="100%";g.style.height="100%";g.style.border="1px solid whiteSmoke"; -g.style.overflow="hidden";this.window=new mxWindow(mxResources.get("outline"),g,c,d,b,f,!0,!0);this.window.minimumSize=new mxRectangle(0,0,80,80);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.setLocation=function(a,b){var c=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.documentElement.clientWidth|| -document.body.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var k=mxUtils.bind(this,function(){var a=this.window.getX(),b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",k);var l=a.createOutline(this.window);this.destroy=function(){mxEvent.removeListener(window,"resize",k);this.window.destroy();l.destroy()};this.window.addListener(mxEvent.RESIZE, -mxUtils.bind(this,function(){l.update(!1);l.outline.sizeDidChange()}));this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){l.suspended=!1;l.outline.refresh();l.update()}));this.window.addListener(mxEvent.HIDE,mxUtils.bind(this,function(){l.suspended=!0}));this.window.addListener(mxEvent.NORMALIZE,mxUtils.bind(this,function(){l.suspended=!1;l.update()}));this.window.addListener(mxEvent.MINIMIZE,mxUtils.bind(this,function(){l.suspended=!0}));var m=l.createGraph;l.createGraph=function(a){var b= -m.apply(this,arguments);b.gridEnabled=!1;b.pageScale=h.pageScale;b.pageFormat=h.pageFormat;b.background=null==h.background||h.background==mxConstants.NONE?h.defaultPageBackgroundColor:h.background;b.pageVisible=h.pageVisible;var c=mxUtils.getCurrentStyle(h.container);g.style.backgroundColor=c.backgroundColor;return b};l.init(g);a.editor.addListener("resetGraphView",e);a.addListener("pageFormatChanged",e);a.addListener("backgroundColorChanged",e);a.addListener("backgroundImageChanged",e);a.addListener("pageViewChanged", +g.style.overflow="hidden";this.window=new mxWindow(mxResources.get("outline"),g,c,d,b,f,!0,!0);this.window.minimumSize=new mxRectangle(0,0,80,80);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.setLocation=function(a,b){var c=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)- +this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var k=mxUtils.bind(this,function(){var a=this.window.getX(),b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",k);var l=a.createOutline(this.window);this.destroy=function(){mxEvent.removeListener(window,"resize",k);this.window.destroy();l.destroy()};this.window.addListener(mxEvent.RESIZE,mxUtils.bind(this, +function(){l.update(!1);l.outline.sizeDidChange()}));this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){l.suspended=!1;l.outline.refresh();l.update()}));this.window.addListener(mxEvent.HIDE,mxUtils.bind(this,function(){l.suspended=!0}));this.window.addListener(mxEvent.NORMALIZE,mxUtils.bind(this,function(){l.suspended=!1;l.update()}));this.window.addListener(mxEvent.MINIMIZE,mxUtils.bind(this,function(){l.suspended=!0}));var m=l.createGraph;l.createGraph=function(a){var b=m.apply(this, +arguments);b.gridEnabled=!1;b.pageScale=h.pageScale;b.pageFormat=h.pageFormat;b.background=null==h.background||h.background==mxConstants.NONE?h.defaultPageBackgroundColor:h.background;b.pageVisible=h.pageVisible;var c=mxUtils.getCurrentStyle(h.container);g.style.backgroundColor=c.backgroundColor;return b};l.init(g);a.editor.addListener("resetGraphView",e);a.addListener("pageFormatChanged",e);a.addListener("backgroundColorChanged",e);a.addListener("backgroundImageChanged",e);a.addListener("pageViewChanged", function(){e();l.update(!0)});if(l.outline.dialect==mxConstants.DIALECT_SVG){var p=a.actions.get("zoomIn"),n=a.actions.get("zoomOut");mxEvent.addMouseWheelListener(function(a,b){for(var c=!1,d=mxEvent.getSource(a);null!=d;){if(d==l.outline.view.canvas.ownerSVGElement){c=!0;break}d=d.parentNode}c&&(b?p.funct():n.funct(),mxEvent.consume(a))})}},LayersWindow=function(a,c,d,b,f){function e(b){if(g.isEnabled()&&null!=b){var c=g.convertValueToString(b),c=new FilenameDialog(a,c||mxResources.get("background"), mxResources.get("rename"),mxUtils.bind(this,function(a){null!=a&&g.cellLabelChanged(b,a)}),mxResources.get("enterName"));a.showDialog(c.container,300,100,!0,!0);c.init()}}function h(){function a(a,b,c,d){var f=document.createElement("div");f.className="geToolbarContainer";f.style.overflow="hidden";f.style.position="relative";f.style.padding="4px";f.style.height="22px";f.style.display="block";f.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;f.style.borderWidth= "0px 0px 1px 0px";f.style.borderColor="#c3c3c3";f.style.borderStyle="solid";f.style.whiteSpace="nowrap";f.setAttribute("title",b);var k=document.createElement("div");k.style.display="inline-block";k.style.width="100%";k.style.textOverflow="ellipsis";k.style.overflow="hidden";mxEvent.addListener(f,"dragover",function(b){b.dataTransfer.dropEffect="move";n=a;b.stopPropagation();b.preventDefault()});mxEvent.addListener(f,"dragstart",function(a){p=f;mxClient.IS_FF&&a.dataTransfer.setData("Text","<layer/>")}); @@ -3281,16 +3286,16 @@ b.style.display="block",b.style.textAlign="right",b.style.whiteSpace="nowrap",b. a-1);mxEvent.consume(b)})),0<=a&&a<u-1&&(k=document.createElement("a"),k.setAttribute("title",mxResources.get("toFront")),k.className="geButton",k.style.cssFloat="none",k.innerHTML="▲",k.style.width="14px",k.style.height="14px",k.style.fontSize="14px",k.style.margin="0px",k.style.marginTop="-1px",b.appendChild(k),mxEvent.addListener(k,"click",function(b){g.isEnabled()&&g.addCell(c,g.model.root,a+1);mxEvent.consume(b)})),f.appendChild(b);mxClient.IS_SVG&&(!mxClient.IS_IE||10<=document.documentMode)&& (f.setAttribute("draggable","true"),f.style.cursor="move")}mxEvent.addListener(f,"dblclick",function(a){var b=mxEvent.getSource(a).nodeName;"INPUT"!=b&&"IMG"!=b&&(e(c),mxEvent.consume(a))});g.getDefaultParent()==c?(f.style.background="white"==Dialog.backdropColor?"#e6eff8":"#505759",f.style.fontWeight=g.isEnabled()?"bold":"",q=c):mxEvent.addListener(f,"click",function(a){g.isEnabled()&&(g.setDefaultParent(d),g.view.setCurrentRoot(null),h())});m.appendChild(f)}u=g.model.getChildCount(g.model.root); m.innerHTML="";for(var b=u-1;0<=b;b--)mxUtils.bind(this,function(c){a(b,g.convertValueToString(c)||mxResources.get("background"),c,c)})(g.model.getChildAt(g.model.root,b));var c=g.convertValueToString(q)||mxResources.get("background");t.setAttribute("title",mxResources.get("removeIt",[c]));w.setAttribute("title",mxResources.get("moveSelectionTo",[c]));z.setAttribute("title",mxResources.get("duplicateIt",[c]));v.setAttribute("title",mxResources.get("editData"));g.isSelectionEmpty()&&(w.className="geButton mxDisabled")} -console.log("dialog.bg",Dialog.backdropColor);var g=a.editor.graph,k=document.createElement("div");k.style.userSelect="none";k.style.background="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;k.style.border="1px solid whiteSmoke";k.style.height="100%";k.style.marginBottom="10px";k.style.overflow="auto";var l=EditorUi.compactUi?"26px":"30px",m=document.createElement("div");m.style.backgroundColor="white"==Dialog.backdropColor?"#dcdcdc":Dialog.backdropColor;m.style.position="absolute"; -m.style.overflow="auto";m.style.left="0px";m.style.right="0px";m.style.top="0px";m.style.bottom=parseInt(l)+7+"px";k.appendChild(m);var p=null,n=null;mxEvent.addListener(k,"dragover",function(a){a.dataTransfer.dropEffect="move";n=0;a.stopPropagation();a.preventDefault()});mxEvent.addListener(k,"drop",function(a){a.stopPropagation();a.preventDefault()});var u=null,q=null,r=document.createElement("div");r.className="geToolbarContainer";r.style.position="absolute";r.style.bottom="0px";r.style.left="0px"; -r.style.right="0px";r.style.height=l;r.style.overflow="hidden";r.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";r.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;r.style.borderWidth="1px 0px 0px 0px";r.style.borderColor="#c3c3c3";r.style.borderStyle="solid";r.style.display="block";r.style.whiteSpace="nowrap";mxClient.IS_QUIRKS&&(r.style.filter="none");l=document.createElement("a");l.className="geButton";mxClient.IS_QUIRKS&&(l.style.filter="none");var t= -l.cloneNode();t.innerHTML='<div class="geSprite geSprite-delete" style="display:inline-block;"></div>';mxEvent.addListener(t,"click",function(a){if(g.isEnabled()){g.model.beginUpdate();try{var b=g.model.root.getIndex(q);g.removeCells([q],!1);0==g.model.getChildCount(g.model.root)?(g.model.add(g.model.root,new mxCell),g.setDefaultParent(null)):0<b&&b<=g.model.getChildCount(g.model.root)?g.setDefaultParent(g.model.getChildAt(g.model.root,b-1)):g.setDefaultParent(null)}finally{g.model.endUpdate()}}mxEvent.consume(a)}); -g.isEnabled()||(t.className="geButton mxDisabled");r.appendChild(t);var w=l.cloneNode();w.innerHTML='<div class="geSprite geSprite-insert" style="display:inline-block;"></div>';mxEvent.addListener(w,"click",function(a){g.isEnabled()&&!g.isSelectionEmpty()&&g.moveCells(g.getSelectionCells(),0,0,!1,q)});r.appendChild(w);var v=l.cloneNode();v.innerHTML='<div class="geSprite geSprite-dots" style="display:inline-block;"></div>';v.setAttribute("title",mxResources.get("rename"));mxEvent.addListener(v,"click", -function(b){g.isEnabled()&&a.showDataDialog(q);mxEvent.consume(b)});g.isEnabled()||(v.className="geButton mxDisabled");r.appendChild(v);var z=l.cloneNode();z.innerHTML='<div class="geSprite geSprite-duplicate" style="display:inline-block;"></div>';mxEvent.addListener(z,"click",function(a){if(g.isEnabled()){a=null;g.model.beginUpdate();try{a=g.cloneCell(q),g.cellLabelChanged(a,mxResources.get("untitledLayer")),a.setVisible(!0),a=g.addCell(a,g.model.root),g.setDefaultParent(a)}finally{g.model.endUpdate()}null== -a||g.isCellLocked(a)||g.selectAll(a)}});g.isEnabled()||(z.className="geButton mxDisabled");r.appendChild(z);l=l.cloneNode();l.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';l.setAttribute("title",mxResources.get("addLayer"));mxEvent.addListener(l,"click",function(a){if(g.isEnabled()){g.model.beginUpdate();try{var b=g.addCell(new mxCell(mxResources.get("untitledLayer")),g.model.root);g.setDefaultParent(b)}finally{g.model.endUpdate()}}mxEvent.consume(a)});g.isEnabled()|| -(l.className="geButton mxDisabled");r.appendChild(l);k.appendChild(r);h();g.model.addListener(mxEvent.CHANGE,function(){h()});g.selectionModel.addListener(mxEvent.CHANGE,function(){g.isSelectionEmpty()?w.className="geButton mxDisabled":w.className="geButton"});this.window=new mxWindow(mxResources.get("layers"),k,c,d,b,f,!0,!0);this.window.minimumSize=new mxRectangle(0,0,120,120);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0); -this.refreshLayers=h;this.window.setLocation=function(a,b){var c=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var x=mxUtils.bind(this,function(){var a=this.window.getX(),b=this.window.getY(); -this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",x);this.destroy=function(){mxEvent.removeListener(window,"resize",x);this.window.destroy()}}; +var g=a.editor.graph,k=document.createElement("div");k.style.userSelect="none";k.style.background="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;k.style.border="1px solid whiteSmoke";k.style.height="100%";k.style.marginBottom="10px";k.style.overflow="auto";var l=EditorUi.compactUi?"26px":"30px",m=document.createElement("div");m.style.backgroundColor="white"==Dialog.backdropColor?"#dcdcdc":Dialog.backdropColor;m.style.position="absolute";m.style.overflow="auto";m.style.left="0px"; +m.style.right="0px";m.style.top="0px";m.style.bottom=parseInt(l)+7+"px";k.appendChild(m);var p=null,n=null;mxEvent.addListener(k,"dragover",function(a){a.dataTransfer.dropEffect="move";n=0;a.stopPropagation();a.preventDefault()});mxEvent.addListener(k,"drop",function(a){a.stopPropagation();a.preventDefault()});var u=null,q=null,r=document.createElement("div");r.className="geToolbarContainer";r.style.position="absolute";r.style.bottom="0px";r.style.left="0px";r.style.right="0px";r.style.height=l;r.style.overflow= +"hidden";r.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";r.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;r.style.borderWidth="1px 0px 0px 0px";r.style.borderColor="#c3c3c3";r.style.borderStyle="solid";r.style.display="block";r.style.whiteSpace="nowrap";mxClient.IS_QUIRKS&&(r.style.filter="none");l=document.createElement("a");l.className="geButton";mxClient.IS_QUIRKS&&(l.style.filter="none");var t=l.cloneNode();t.innerHTML='<div class="geSprite geSprite-delete" style="display:inline-block;"></div>'; +mxEvent.addListener(t,"click",function(a){if(g.isEnabled()){g.model.beginUpdate();try{var b=g.model.root.getIndex(q);g.removeCells([q],!1);0==g.model.getChildCount(g.model.root)?(g.model.add(g.model.root,new mxCell),g.setDefaultParent(null)):0<b&&b<=g.model.getChildCount(g.model.root)?g.setDefaultParent(g.model.getChildAt(g.model.root,b-1)):g.setDefaultParent(null)}finally{g.model.endUpdate()}}mxEvent.consume(a)});g.isEnabled()||(t.className="geButton mxDisabled");r.appendChild(t);var w=l.cloneNode(); +w.innerHTML='<div class="geSprite geSprite-insert" style="display:inline-block;"></div>';mxEvent.addListener(w,"click",function(a){g.isEnabled()&&!g.isSelectionEmpty()&&g.moveCells(g.getSelectionCells(),0,0,!1,q)});r.appendChild(w);var v=l.cloneNode();v.innerHTML='<div class="geSprite geSprite-dots" style="display:inline-block;"></div>';v.setAttribute("title",mxResources.get("rename"));mxEvent.addListener(v,"click",function(b){g.isEnabled()&&a.showDataDialog(q);mxEvent.consume(b)});g.isEnabled()|| +(v.className="geButton mxDisabled");r.appendChild(v);var z=l.cloneNode();z.innerHTML='<div class="geSprite geSprite-duplicate" style="display:inline-block;"></div>';mxEvent.addListener(z,"click",function(a){if(g.isEnabled()){a=null;g.model.beginUpdate();try{a=g.cloneCell(q),g.cellLabelChanged(a,mxResources.get("untitledLayer")),a.setVisible(!0),a=g.addCell(a,g.model.root),g.setDefaultParent(a)}finally{g.model.endUpdate()}null==a||g.isCellLocked(a)||g.selectAll(a)}});g.isEnabled()||(z.className="geButton mxDisabled"); +r.appendChild(z);l=l.cloneNode();l.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';l.setAttribute("title",mxResources.get("addLayer"));mxEvent.addListener(l,"click",function(a){if(g.isEnabled()){g.model.beginUpdate();try{var b=g.addCell(new mxCell(mxResources.get("untitledLayer")),g.model.root);g.setDefaultParent(b)}finally{g.model.endUpdate()}}mxEvent.consume(a)});g.isEnabled()||(l.className="geButton mxDisabled");r.appendChild(l);k.appendChild(r);h();g.model.addListener(mxEvent.CHANGE, +function(){h()});g.selectionModel.addListener(mxEvent.CHANGE,function(){g.isSelectionEmpty()?w.className="geButton mxDisabled":w.className="geButton"});this.window=new mxWindow(mxResources.get("layers"),k,c,d,b,f,!0,!0);this.window.minimumSize=new mxRectangle(0,0,120,120);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.refreshLayers=h;this.window.setLocation=function(a,b){var c=window.innerHeight|| +document.body.clientHeight||document.documentElement.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var x=mxUtils.bind(this,function(){var a=this.window.getX(),b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",x);this.destroy= +function(){mxEvent.removeListener(window,"resize",x);this.window.destroy()}}; (function(){Sidebar.prototype.tagIndex="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"; Sidebar.prototype.searchFileData="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"; Sidebar.prototype.gearImage=GRAPH_IMAGE_PATH+"/clipart/Gear_128x128.png";Sidebar.prototype.libAliases={aws2:"aws3",gcp:"gcp2"};Sidebar.prototype.defaultEntries="general;uml;er;bpmn;flowchart;basic;arrows2";Sidebar.prototype.signs="Animals Food Healthcare Nature People Safety Science Sports Tech Transportation Travel".split(" ");Sidebar.prototype.ibm="Analytics Applications Blockchain Data DevOps Infrastructure Management Miscellaneous Security Social Users VPC".split(" ");Sidebar.prototype.allied_telesis= @@ -3357,33 +3362,32 @@ this.addDataEntry("container swimlane pool horizontal",480,360,"Horizontal Pool this.addDataEntry("vertical tree layout",280,190,"Vertical Tree Layout","5ZXNUoMwEICfhjuQWvVaqL3oxXa8p7ADmQmECUspfXo3JNgirdMZ7UE9MGT/s182E49FxX6leZW/qBSkx5Yei7RSaFfFPgIpvdAXqcdiLwx9+rzw6YI16K1+xTWUeE1AaAN2XDZgNW+gUSTcOG00AP2eeacatI41dtI51q0oJC9JWuRY0M7jgJY1co1rcTBOVJtsSouDKpEPHkkuZOpyshipxiCc+PalWWwSaKjFgW/lICfGQZSgN10FLgOpXSO0e9hfhNGrHIkVqAJQd+TSihRzB+TBAvNzEFk+hD06Ja+tIvuIPbKlhcN7HjWboH41x/wZa5sLhHXFEyO3NBhjvle1GZ5v0wW4kfC7sXgCIfDPQJj9AIPZhEFkpoFUwf8CcTcBMekf0gzWTgS5Ve3yqFj0CjLshts6YqNVU6aQugtjM5t0X3Oi6qrRCYzGla5zBnhyelOaGiRHsRtn/w6c+cUpmVL601Ny/xunZH6bKSHx+Cz2ttGr+Q4="), this.addDataEntry("horizontal tree layout",310,160,"Horizontal Tree Layout","5ZXNUoMwEMefJncgtd4LVQ96sX2BtOxAZgJhwlJKn94NSQWkdTqjHtQDQ/a/X+THZsJ4XBwfjajyF52CYnzNeGy0RrcqjjEoxaJApownLIoCelj0cMUb9t6gEgZKvCUhcgkHoRpwypM28qRLFDZsawDo9Sw63aALrbFTPrRuZaFESdYqx4K+PQlpWaMwuJEnG0TdyTdU5IkV9rlUqa/JE6QeZ2MU27d2FQ3U8iR2fds+3wbIEsy2q8BXINlvBQzC8SqOXvIsHkEXgKajkFammLsIHjpkQQ4yy89pSy+K2gnZe+5AlxYe8GXYfAb71f7oj1jbXCJsKrG3dkujMeV70zajy9v0CX4ogm5qjiCEwQUIi29gsJgxiO00kBT+LxB3MxCz/UOawcaboHa6XQ/CqhfIMT5dYzpGN2UKqT8yrrYt+Dkp6q8bs4fJwNKBzgBH/2/O04ASKA/T6l/Bs7w6J3NOf3pO7n/nnCx/Zk7IHC7H3je5O98A"), this.addEntry("vertical flow layout",function(){return d.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Vertical Flow Layout",!0)}),this.addEntry("horizontal flow layout",function(){var a=d.graph.cloneCell(b);a.geometry=new mxGeometry(0,0,460,150);a.style="swimlane;html=1;startSize=20;horizontal=0;childLayout=flowLayout;flowOrientation=west;resizable=0;interRankCellSpacing=50;containerType=tree;";a.value="Horizontal Flow Layout";return d.createVertexTemplateFromCells([a],a.geometry.width, -a.geometry.height,"Horizontal Flow Layout",!0)})])}})();(function(){Sidebar.prototype.addAlliedTelesisPalette=function(){this.addAlliedTelesisBuildingsPalette(60,"allied telesis",this,"aspect=fixed;perimeter=ellipsePerimeter;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/");this.addAlliedTelesisComputerTerminalsPalette(60,"allied telesis",this,"aspect=fixed;perimeter=ellipsePerimeter;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/");this.addAlliedTelesisMediaConvertersPalette(60,"allied telesis",this, -"aspect=fixed;perimeter=ellipsePerimeter;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/");this.addAlliedTelesisSecurityPalette(60,"allied telesis",this,"aspect=fixed;perimeter=ellipsePerimeter;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/");this.addAlliedTelesisStoragePalette(60,"allied telesis",this,"aspect=fixed;perimeter=ellipsePerimeter;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/");this.addAlliedTelesisSwitchPalette(60, -"allied telesis",this,"aspect=fixed;perimeter=ellipsePerimeter;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/");this.addAlliedTelesisWirelessPalette(60,"allied telesis",this,"aspect=fixed;perimeter=ellipsePerimeter;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/")};Sidebar.prototype.addAlliedTelesisBuildingsPalette=function(a,e,d,b){b+="buildings/";var c=[this.createVertexTemplateEntry(b+"Apartments.svg;",.9*a,1.75*a,"","Apartments",!1,null,this.getTagsForStencil("buildings", -"apartments",e).join(" ")),this.createVertexTemplateEntry(b+"Building_Cluster.svg;",2.02*a,1.85*a,"","Building Cluster",!1,null,this.getTagsForStencil("buildings","building cluster",e).join(" ")),this.createVertexTemplateEntry(b+"Large_Building.svg;",1.25*a,1.25*a,"","Large Building",!1,null,this.getTagsForStencil("buildings","large building",e).join(" ")),this.createVertexTemplateEntry(b+"Long_Building.svg;",2.09*a,2.16*a,"","Long Building",!1,null,this.getTagsForStencil("buildings","long building", -e).join(" ")),this.createVertexTemplateEntry(b+"Medium_Business_Building.svg;",.91*a,1.17*a,"","Medium Business Building",!1,null,this.getTagsForStencil("buildings","medium business building",e).join(" ")),this.createVertexTemplateEntry(b+"School_Building.svg;",2.75*a,2.78*a,"","School Building",!1,null,this.getTagsForStencil("buildings","school building",e).join(" ")),this.createVertexTemplateEntry(b+"Secure_Building.svg;",2.72*a,1.86*a,"","Secure Building",!1,null,this.getTagsForStencil("buildings", -"secure building",e).join(" "))];this.addPalette("allied_telesisBuildings","Allied Telesis / Buildings",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))};Sidebar.prototype.addAlliedTelesisComputerTerminalsPalette=function(a,e,d,b){b+="computer_and_terminals/";var c=[this.createVertexTemplateEntry(b+"IP_TV.svg;",.82*a,.84*a,"","IP TV",!1,null,this.getTagsForStencil("computer terminals","ip tv internet protocol television",e).join(" ")),this.createVertexTemplateEntry(b+ -"Keypad.svg;",.44*a,.8*a,"","Keypad",!1,null,this.getTagsForStencil("computer terminals","keypad",e).join(" ")),this.createVertexTemplateEntry(b+"Laptop.svg;",.7*a,.71*a,"","Laptop",!1,null,this.getTagsForStencil("computer terminals","laptop",e).join(" ")),this.createVertexTemplateEntry(b+"Personal_Computer.svg;",.76*a,1.03*a,"","Personal Computer",!1,null,this.getTagsForStencil("computer terminals","personal computer",e).join(" ")),this.createVertexTemplateEntry(b+"Personal_Computer_Wireless.svg;", -1.05*a,1.07*a,"","Personal Computer Wireless",!1,null,this.getTagsForStencil("computer terminals","personal computer wireless",e).join(" ")),this.createVertexTemplateEntry(b+"Personal_Computer_with_Server.svg;",1.04*a,1.04*a,"","Personal Computer with Server",!1,null,this.getTagsForStencil("computer terminals","Personal Computer Server",e).join(" ")),this.createVertexTemplateEntry(b+"POS_keypad.svg;",.62*a,.46*a,"","POS Keypad",!1,null,this.getTagsForStencil("computer terminals","pos keypad",e).join(" ")), -this.createVertexTemplateEntry(b+"POS_Printer.svg;",.62*a,.54*a,"","POS Printer",!1,null,this.getTagsForStencil("computer terminals","pos printer",e).join(" ")),this.createVertexTemplateEntry(b+"Server_Desktop.svg;",.71*a,.9*a,"","Server Desktop",!1,null,this.getTagsForStencil("computer terminals","server desktop",e).join(" ")),this.createVertexTemplateEntry(b+"Smartphone.svg;",.33*a,.72*a,"","Smartphone",!1,null,this.getTagsForStencil("computer terminals","smartphone",e).join(" ")),this.createVertexTemplateEntry(b+ -"Tablet.svg;",.45*a,.95*a,"","Tablet",!1,null,this.getTagsForStencil("computer terminals","tablet",e).join(" ")),this.createVertexTemplateEntry(b+"Tablet_Alternative.svg;",.58*a,.8*a,"","Tablet Alternative",!1,null,this.getTagsForStencil("computer terminals","tablet alternative",e).join(" ")),this.createVertexTemplateEntry(b+"Vdeo_Conference_Terminal.svg;",.53*a,.75*a,"","Vdeo Conference Terminal",!1,null,this.getTagsForStencil("computer terminals","vdeo conference terminal",e).join(" ")),this.createVertexTemplateEntry(b+ -"VOIP_IP_phone.svg;",.5*a,.76*a,"","VOIP IP Phone",!1,null,this.getTagsForStencil("computer terminals","voip ip phone voice over internet protocol",e).join(" "))];this.addPalette("allied_telesisComputer and Terminals","Allied Telesis / Computer and Terminals",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))};Sidebar.prototype.addAlliedTelesisMediaConvertersPalette=function(a,e,d,b){b+="media_converters/";var c=[this.createVertexTemplateEntry(b+"Industrial_Media_Converter.svg;", -.5*a,.95*a,"","Industrial Media Converter",!1,null,this.getTagsForStencil("media converters","industrial media converter",e).join(" ")),this.createVertexTemplateEntry(b+"Industrial_Media_Converter_POE.svg;",.5*a,.95*a,"","Industrial Media Converter POE",!1,null,this.getTagsForStencil("media converters","industrial media converter poe",e).join(" ")),this.createVertexTemplateEntry(b+"Media_Converter_Modular.svg;",1.18*a,.91*a,"","Media Converter Modular",!1,null,this.getTagsForStencil("media converters", -"media converter modular",e).join(" ")),this.createVertexTemplateEntry(b+"Media_Converter_Standalone.svg;",.76*a,.62*a,"","Media Converter Standalone",!1,null,this.getTagsForStencil("media converters","media converter standalone",e).join(" ")),this.createVertexTemplateEntry(b+"Media_Converter_Standalone_POE.svg;",.76*a,.62*a,"","Media Converter Standalone POE",!1,null,this.getTagsForStencil("media converters","media converter standalone poe",e).join(" "))];this.addPalette("allied_telesisMedia Converters", -"Allied Telesis / Media Converters",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))};Sidebar.prototype.addAlliedTelesisSecurityPalette=function(a,e,d,b){b+="security/";var c=[this.createVertexTemplateEntry(b+"DVS_Surveillance_Monitor.svg;",.7*a,1*a,"","DVS Surveillance Monitor",!1,null,this.getTagsForStencil("security","dvs surveillance monitor",e).join(" ")),this.createVertexTemplateEntry(b+"EtherGRID.svg;",1.49*a,1.08*a,"","EtherGRID",!1,null,this.getTagsForStencil("security", -"ethergrid",e).join(" ")),this.createVertexTemplateEntry(b+"POE_DVS_Camera.svg;",.85*a,.67*a,"","POE DVS Camera",!1,null,this.getTagsForStencil("security","poe dvs camera",e).join(" ")),this.createVertexTemplateEntry(b+"POS.svg;",1.13*a,1.2*a,"","POS",!1,null,this.getTagsForStencil("security","pos",e).join(" ")),this.createVertexTemplateEntry(b+"Router_UTM.svg;",.93*a,.66*a,"","Router UTM",!1,null,this.getTagsForStencil("security","router utm",e).join(" ")),this.createVertexTemplateEntry(b+"Router_VPN.svg;", -.93*a,.66*a,"","Router VPN",!1,null,this.getTagsForStencil("security","router vpn",e).join(" ")),this.createVertexTemplateEntry(b+"Surveillance_Camera_Ceiling.svg;",.62*a,.59*a,"","Surveillance Camera Ceiling",!1,null,this.getTagsForStencil("security","surveillance camera ceiling",e).join(" "))];this.addPalette("allied_telesisSecurity","Allied Telesis / Security",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))};Sidebar.prototype.addAlliedTelesisStoragePalette= -function(a,e,d,b){b+="storage/";var c=[this.createVertexTemplateEntry(b+"Datacenter_Server_Half_Rack_ToR.svg;",1.47*a,1.91*a,"","Datacenter Server Half Rack ToR",!1,null,this.getTagsForStencil("storage","datacenter server half rack tor",e).join(" ")),this.createVertexTemplateEntry(b+"Datacenter_Server_Rack.svg;",1.47*a,2.98*a,"","Datacenter Server Rack",!1,null,this.getTagsForStencil("storage","datacenter server rack",e).join(" ")),this.createVertexTemplateEntry(b+"Datacenter_Server_Rack_EoR.svg;", -1.43*a,2.89*a,"","Datacenter Server Rack EoR",!1,null,this.getTagsForStencil("storage","datacenter server rack eor",e).join(" ")),this.createVertexTemplateEntry(b+"Datacenter_Server_Rack_Storage_Unit_Small.svg;",1.29*a,1.12*a,"","Datacenter Server Rack Storage Unit Small",!1,null,this.getTagsForStencil("storage","datacenter server rack storage unit small",e).join(" ")),this.createVertexTemplateEntry(b+"Datacenter_Server_Rack_ToR.svg;",1.47*a,2.98*a,"","Datacenter Server Rack ToR",!1,null,this.getTagsForStencil("storage", -"datacenter server rack tor",e).join(" ")),this.createVertexTemplateEntry(b+"Datacenter_Server_Storage_Unit_Large.svg;",1.28*a,1.32*a,"","Datacenter Server Storage Unit Large",!1,null,this.getTagsForStencil("storage","datacenter server storage unit large",e).join(" "))];this.addPalette("allied_telesisStorage","Allied Telesis / Storage",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))};Sidebar.prototype.addAlliedTelesisSwitchPalette=function(a,e,d,b){b+="switch/"; -var c=[this.createVertexTemplateEntry(b+"Industrial_Ethernet_IE200.svg;",.67*a,.94*a,"","Industrial Ethernet IE200",!1,null,this.getTagsForStencil("switch","industrial ethernet ie200",e).join(" ")),this.createVertexTemplateEntry(b+"Industrial_Ethernet_IE200_POE.svg;",.67*a,.94*a,"","Industrial Ethernet IE200 POE",!1,null,this.getTagsForStencil("switch","industrial ethernet ie200 poe",e).join(" ")),this.createVertexTemplateEntry(b+"Industrial_Ethernet_IE300.svg;",1.16*a,1.29*a,"","Industrial_Ethernet_IE300", -!1,null,this.getTagsForStencil("switch","industrial ethernet ie300",e).join(" ")),this.createVertexTemplateEntry(b+"Modular_Switch_SBx8106.svg;",1.43*a,1.23*a,"","Modular Switch SBx8106",!1,null,this.getTagsForStencil("switch","modular switch sbx8106",e).join(" ")),this.createVertexTemplateEntry(b+"Modular_Switch_SBx8112.svg;",1.49*a,1.53*a,"","Modular Switch SBx8112",!1,null,this.getTagsForStencil("switch","modular switch sbx8112",e).join(" ")),this.createVertexTemplateEntry(b+"Modular_Switch_SXx908GEN2.svg;", -1.3*a,1.11*a,"","Modular Switch SXx908GEN2",!1,null,this.getTagsForStencil("switch","modular switch sxx908gen2",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_24_port_L2.svg;",1.24*a,.85*a,"","Switch 24 port L2",!1,null,this.getTagsForStencil("switch","switch 24 port l2",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_24_port_L2_POE.svg;",1.24*a,.85*a,"","Switch 24 port L2 POE",!1,null,this.getTagsForStencil("switch","switch 24 port l2 poe",e).join(" ")),this.createVertexTemplateEntry(b+ -"Switch_24_port_L3.svg;",1.24*a,.85*a,"","Switch 24 port L3",!1,null,this.getTagsForStencil("switch","switch 24 port l3",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_24_port_L3_Alternative.svg;",1.3*a,.88*a,"","Switch 24 port L3 Alternative",!1,null,this.getTagsForStencil("switch","switch 24 port l3 alternative",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_24_port_L3_POE.svg;",1.24*a,.85*a,"","Switch 24 port L3 POE",!1,null,this.getTagsForStencil("switch","switch 24 port l3 poe", -e).join(" ")),this.createVertexTemplateEntry(b+"Switch_48_port_L2.svg;",1.3*a,.88*a,"","Switch 48 port L2",!1,null,this.getTagsForStencil("switch","switch 48 port l2",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_48_port_L2_POE.svg;",1.3*a,.88*a,"","Switch 48 port L2 POE",!1,null,this.getTagsForStencil("switch","switch 48 port l2 poe",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_48_port_L3.svg;",1.3*a,.88*a,"","Switch 48 port L3",!1,null,this.getTagsForStencil("switch","switch 48 port l3", -e).join(" ")),this.createVertexTemplateEntry(b+"Switch_48_port_L3_POE.svg;",1.3*a,.88*a,"","Switch 48 port L3 POE",!1,null,this.getTagsForStencil("switch","switch 48 port l3 poe",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_52_port_L3.svg;",1.3*a,.88*a,"","Switch 52 port L3",!1,null,this.getTagsForStencil("switch","switch 52 port l3",e).join(" "))];this.addPalette("allied_telesisSwitch","Allied Telesis / Switch",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))}; -Sidebar.prototype.addAlliedTelesisWirelessPalette=function(a,e,d,b){b+="wireless/";var c=[this.createVertexTemplateEntry(b+"Access_Point_Indoor.svg;",.61*a,.91*a,"","Access Point Indoor",!1,null,this.getTagsForStencil("wireless","access point indoor",e).join(" ")),this.createVertexTemplateEntry(b+"Access_Point_Outdoor.svg;",.43*a,1.66*a,"","Access Point Outdoor",!1,null,this.getTagsForStencil("wireless","access point outdoor",e).join(" ")),this.createVertexTemplateEntry(b+"Laptop_Wireless.svg;",.96* -a,.79*a,"","Laptop Wireless",!1,null,this.getTagsForStencil("wireless","laptop wireless",e).join(" "))];this.addPalette("allied_telesisWireless","Allied Telesis / Wireless",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))}})();(function(){Sidebar.prototype.addAndroidPalette=function(){var a=this,e=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;shadow=0;dashed=0;strokeWidth=1;shape=mxgraph.android.",d=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;shadow=0;dashed=0;strokeWidth=1;strokeColor=none;shape=",b=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;shadow=0;dashed=0;strokeWidth=2;shape=mxgraph.android.", +a.geometry.height,"Horizontal Flow Layout",!0)})])}})();(function(){Sidebar.prototype.addAlliedTelesisPalette=function(){this.addAlliedTelesisBuildingsPalette(60,"allied telesis",this,"points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/");this.addAlliedTelesisComputerTerminalsPalette(60,"allied telesis",this,"points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/");this.addAlliedTelesisMediaConvertersPalette(60,"allied telesis",this,"points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/"); +this.addAlliedTelesisSecurityPalette(60,"allied telesis",this,"points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/");this.addAlliedTelesisStoragePalette(60,"allied telesis",this,"points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/");this.addAlliedTelesisSwitchPalette(60,"allied telesis",this,"points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/");this.addAlliedTelesisWirelessPalette(60, +"allied telesis",this,"points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/")};Sidebar.prototype.addAlliedTelesisBuildingsPalette=function(a,e,d,b){b+="buildings/";var c=[this.createVertexTemplateEntry(b+"Apartments.svg;",.9*a,1.75*a,"","Apartments",!1,null,this.getTagsForStencil("buildings","apartments",e).join(" ")),this.createVertexTemplateEntry(b+"Building_Cluster.svg;",2.02*a,1.85*a,"","Building Cluster",!1,null,this.getTagsForStencil("buildings","building cluster", +e).join(" ")),this.createVertexTemplateEntry(b+"Large_Building.svg;",1.25*a,1.25*a,"","Large Building",!1,null,this.getTagsForStencil("buildings","large building",e).join(" ")),this.createVertexTemplateEntry(b+"Long_Building.svg;",2.09*a,2.16*a,"","Long Building",!1,null,this.getTagsForStencil("buildings","long building",e).join(" ")),this.createVertexTemplateEntry(b+"Medium_Business_Building.svg;",.91*a,1.17*a,"","Medium Business Building",!1,null,this.getTagsForStencil("buildings","medium business building", +e).join(" ")),this.createVertexTemplateEntry(b+"School_Building.svg;",2.75*a,2.78*a,"","School Building",!1,null,this.getTagsForStencil("buildings","school building",e).join(" ")),this.createVertexTemplateEntry(b+"Secure_Building.svg;",2.72*a,1.86*a,"","Secure Building",!1,null,this.getTagsForStencil("buildings","secure building",e).join(" "))];this.addPalette("allied_telesisBuildings","Allied Telesis / Buildings",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))}; +Sidebar.prototype.addAlliedTelesisComputerTerminalsPalette=function(a,e,d,b){b+="computer_and_terminals/";var c=[this.createVertexTemplateEntry(b+"IP_TV.svg;",.82*a,.84*a,"","IP TV",!1,null,this.getTagsForStencil("computer terminals","ip tv internet protocol television",e).join(" ")),this.createVertexTemplateEntry(b+"Keypad.svg;",.44*a,.8*a,"","Keypad",!1,null,this.getTagsForStencil("computer terminals","keypad",e).join(" ")),this.createVertexTemplateEntry(b+"Laptop.svg;",.7*a,.71*a,"","Laptop",!1, +null,this.getTagsForStencil("computer terminals","laptop",e).join(" ")),this.createVertexTemplateEntry(b+"Personal_Computer.svg;",.76*a,1.03*a,"","Personal Computer",!1,null,this.getTagsForStencil("computer terminals","personal computer",e).join(" ")),this.createVertexTemplateEntry(b+"Personal_Computer_Wireless.svg;",1.05*a,1.07*a,"","Personal Computer Wireless",!1,null,this.getTagsForStencil("computer terminals","personal computer wireless",e).join(" ")),this.createVertexTemplateEntry(b+"Personal_Computer_with_Server.svg;", +1.04*a,1.04*a,"","Personal Computer with Server",!1,null,this.getTagsForStencil("computer terminals","Personal Computer Server",e).join(" ")),this.createVertexTemplateEntry(b+"POS_keypad.svg;",.62*a,.46*a,"","POS Keypad",!1,null,this.getTagsForStencil("computer terminals","pos keypad",e).join(" ")),this.createVertexTemplateEntry(b+"POS_Printer.svg;",.62*a,.54*a,"","POS Printer",!1,null,this.getTagsForStencil("computer terminals","pos printer",e).join(" ")),this.createVertexTemplateEntry(b+"Server_Desktop.svg;", +.71*a,.9*a,"","Server Desktop",!1,null,this.getTagsForStencil("computer terminals","server desktop",e).join(" ")),this.createVertexTemplateEntry(b+"Smartphone.svg;",.33*a,.72*a,"","Smartphone",!1,null,this.getTagsForStencil("computer terminals","smartphone",e).join(" ")),this.createVertexTemplateEntry(b+"Tablet.svg;",.45*a,.95*a,"","Tablet",!1,null,this.getTagsForStencil("computer terminals","tablet",e).join(" ")),this.createVertexTemplateEntry(b+"Tablet_Alternative.svg;",.58*a,.8*a,"","Tablet Alternative", +!1,null,this.getTagsForStencil("computer terminals","tablet alternative",e).join(" ")),this.createVertexTemplateEntry(b+"Vdeo_Conference_Terminal.svg;",.53*a,.75*a,"","Vdeo Conference Terminal",!1,null,this.getTagsForStencil("computer terminals","vdeo conference terminal",e).join(" ")),this.createVertexTemplateEntry(b+"VOIP_IP_phone.svg;",.5*a,.76*a,"","VOIP IP Phone",!1,null,this.getTagsForStencil("computer terminals","voip ip phone voice over internet protocol",e).join(" "))];this.addPalette("allied_telesisComputer and Terminals", +"Allied Telesis / Computer and Terminals",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))};Sidebar.prototype.addAlliedTelesisMediaConvertersPalette=function(a,e,d,b){b+="media_converters/";var c=[this.createVertexTemplateEntry(b+"Industrial_Media_Converter.svg;",.5*a,.95*a,"","Industrial Media Converter",!1,null,this.getTagsForStencil("media converters","industrial media converter",e).join(" ")),this.createVertexTemplateEntry(b+"Industrial_Media_Converter_POE.svg;", +.5*a,.95*a,"","Industrial Media Converter POE",!1,null,this.getTagsForStencil("media converters","industrial media converter poe",e).join(" ")),this.createVertexTemplateEntry(b+"Media_Converter_Modular.svg;",1.18*a,.91*a,"","Media Converter Modular",!1,null,this.getTagsForStencil("media converters","media converter modular",e).join(" ")),this.createVertexTemplateEntry(b+"Media_Converter_Standalone.svg;",.76*a,.62*a,"","Media Converter Standalone",!1,null,this.getTagsForStencil("media converters", +"media converter standalone",e).join(" ")),this.createVertexTemplateEntry(b+"Media_Converter_Standalone_POE.svg;",.76*a,.62*a,"","Media Converter Standalone POE",!1,null,this.getTagsForStencil("media converters","media converter standalone poe",e).join(" "))];this.addPalette("allied_telesisMedia Converters","Allied Telesis / Media Converters",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))};Sidebar.prototype.addAlliedTelesisSecurityPalette=function(a,e,d,b){b+= +"security/";var c=[this.createVertexTemplateEntry(b+"DVS_Surveillance_Monitor.svg;",.7*a,1*a,"","DVS Surveillance Monitor",!1,null,this.getTagsForStencil("security","dvs surveillance monitor",e).join(" ")),this.createVertexTemplateEntry(b+"EtherGRID.svg;",1.49*a,1.08*a,"","EtherGRID",!1,null,this.getTagsForStencil("security","ethergrid",e).join(" ")),this.createVertexTemplateEntry(b+"POE_DVS_Camera.svg;",.85*a,.67*a,"","POE DVS Camera",!1,null,this.getTagsForStencil("security","poe dvs camera",e).join(" ")), +this.createVertexTemplateEntry(b+"POS.svg;",1.13*a,1.2*a,"","POS",!1,null,this.getTagsForStencil("security","pos",e).join(" ")),this.createVertexTemplateEntry(b+"Router_UTM.svg;",.93*a,.66*a,"","Router UTM",!1,null,this.getTagsForStencil("security","router utm",e).join(" ")),this.createVertexTemplateEntry(b+"Router_VPN.svg;",.93*a,.66*a,"","Router VPN",!1,null,this.getTagsForStencil("security","router vpn",e).join(" ")),this.createVertexTemplateEntry(b+"Surveillance_Camera_Ceiling.svg;",.62*a,.59* +a,"","Surveillance Camera Ceiling",!1,null,this.getTagsForStencil("security","surveillance camera ceiling",e).join(" "))];this.addPalette("allied_telesisSecurity","Allied Telesis / Security",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))};Sidebar.prototype.addAlliedTelesisStoragePalette=function(a,e,d,b){b+="storage/";var c=[this.createVertexTemplateEntry(b+"Datacenter_Server_Half_Rack_ToR.svg;",1.47*a,1.91*a,"","Datacenter Server Half Rack ToR",!1,null,this.getTagsForStencil("storage", +"datacenter server half rack tor",e).join(" ")),this.createVertexTemplateEntry(b+"Datacenter_Server_Rack.svg;",1.47*a,2.98*a,"","Datacenter Server Rack",!1,null,this.getTagsForStencil("storage","datacenter server rack",e).join(" ")),this.createVertexTemplateEntry(b+"Datacenter_Server_Rack_EoR.svg;",1.43*a,2.89*a,"","Datacenter Server Rack EoR",!1,null,this.getTagsForStencil("storage","datacenter server rack eor",e).join(" ")),this.createVertexTemplateEntry(b+"Datacenter_Server_Rack_Storage_Unit_Small.svg;", +1.29*a,1.12*a,"","Datacenter Server Rack Storage Unit Small",!1,null,this.getTagsForStencil("storage","datacenter server rack storage unit small",e).join(" ")),this.createVertexTemplateEntry(b+"Datacenter_Server_Rack_ToR.svg;",1.47*a,2.98*a,"","Datacenter Server Rack ToR",!1,null,this.getTagsForStencil("storage","datacenter server rack tor",e).join(" ")),this.createVertexTemplateEntry(b+"Datacenter_Server_Storage_Unit_Large.svg;",1.28*a,1.32*a,"","Datacenter Server Storage Unit Large",!1,null,this.getTagsForStencil("storage", +"datacenter server storage unit large",e).join(" "))];this.addPalette("allied_telesisStorage","Allied Telesis / Storage",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))};Sidebar.prototype.addAlliedTelesisSwitchPalette=function(a,e,d,b){b+="switch/";var c=[this.createVertexTemplateEntry(b+"Industrial_Ethernet_IE200.svg;",.67*a,.94*a,"","Industrial Ethernet IE200",!1,null,this.getTagsForStencil("switch","industrial ethernet ie200",e).join(" ")),this.createVertexTemplateEntry(b+ +"Industrial_Ethernet_IE200_POE.svg;",.67*a,.94*a,"","Industrial Ethernet IE200 POE",!1,null,this.getTagsForStencil("switch","industrial ethernet ie200 poe",e).join(" ")),this.createVertexTemplateEntry(b+"Industrial_Ethernet_IE300.svg;",1.16*a,1.29*a,"","Industrial_Ethernet_IE300",!1,null,this.getTagsForStencil("switch","industrial ethernet ie300",e).join(" ")),this.createVertexTemplateEntry(b+"Modular_Switch_SBx8106.svg;",1.43*a,1.23*a,"","Modular Switch SBx8106",!1,null,this.getTagsForStencil("switch", +"modular switch sbx8106",e).join(" ")),this.createVertexTemplateEntry(b+"Modular_Switch_SBx8112.svg;",1.49*a,1.53*a,"","Modular Switch SBx8112",!1,null,this.getTagsForStencil("switch","modular switch sbx8112",e).join(" ")),this.createVertexTemplateEntry(b+"Modular_Switch_SXx908GEN2.svg;",1.3*a,1.11*a,"","Modular Switch SXx908GEN2",!1,null,this.getTagsForStencil("switch","modular switch sxx908gen2",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_24_port_L2.svg;",1.24*a,.85*a,"","Switch 24 port L2", +!1,null,this.getTagsForStencil("switch","switch 24 port l2",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_24_port_L2_POE.svg;",1.24*a,.85*a,"","Switch 24 port L2 POE",!1,null,this.getTagsForStencil("switch","switch 24 port l2 poe",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_24_port_L3.svg;",1.24*a,.85*a,"","Switch 24 port L3",!1,null,this.getTagsForStencil("switch","switch 24 port l3",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_24_port_L3_Alternative.svg;",1.3*a,.88* +a,"","Switch 24 port L3 Alternative",!1,null,this.getTagsForStencil("switch","switch 24 port l3 alternative",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_24_port_L3_POE.svg;",1.24*a,.85*a,"","Switch 24 port L3 POE",!1,null,this.getTagsForStencil("switch","switch 24 port l3 poe",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_48_port_L2.svg;",1.3*a,.88*a,"","Switch 48 port L2",!1,null,this.getTagsForStencil("switch","switch 48 port l2",e).join(" ")),this.createVertexTemplateEntry(b+ +"Switch_48_port_L2_POE.svg;",1.3*a,.88*a,"","Switch 48 port L2 POE",!1,null,this.getTagsForStencil("switch","switch 48 port l2 poe",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_48_port_L3.svg;",1.3*a,.88*a,"","Switch 48 port L3",!1,null,this.getTagsForStencil("switch","switch 48 port l3",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_48_port_L3_POE.svg;",1.3*a,.88*a,"","Switch 48 port L3 POE",!1,null,this.getTagsForStencil("switch","switch 48 port l3 poe",e).join(" ")),this.createVertexTemplateEntry(b+ +"Switch_52_port_L3.svg;",1.3*a,.88*a,"","Switch 52 port L3",!1,null,this.getTagsForStencil("switch","switch 52 port l3",e).join(" "))];this.addPalette("allied_telesisSwitch","Allied Telesis / Switch",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))};Sidebar.prototype.addAlliedTelesisWirelessPalette=function(a,e,d,b){b+="wireless/";var c=[this.createVertexTemplateEntry(b+"Access_Point_Indoor.svg;",.61*a,.91*a,"","Access Point Indoor",!1,null,this.getTagsForStencil("wireless", +"access point indoor",e).join(" ")),this.createVertexTemplateEntry(b+"Access_Point_Outdoor.svg;",.43*a,1.66*a,"","Access Point Outdoor",!1,null,this.getTagsForStencil("wireless","access point outdoor",e).join(" ")),this.createVertexTemplateEntry(b+"Laptop_Wireless.svg;",.96*a,.79*a,"","Laptop Wireless",!1,null,this.getTagsForStencil("wireless","laptop wireless",e).join(" "))];this.addPalette("allied_telesisWireless","Allied Telesis / Wireless",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))}})();(function(){Sidebar.prototype.addAndroidPalette=function(){var a=this,e=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;shadow=0;dashed=0;strokeWidth=1;shape=mxgraph.android.",d=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;shadow=0;dashed=0;strokeWidth=1;strokeColor=none;shape=",b=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;shadow=0;dashed=0;strokeWidth=2;shape=mxgraph.android.", c=[this.createVertexTemplateEntry(e+"phone2;fillColor=#ffffff;strokeColor=#c0c0c0;",200,390,"","Phone",null,null,"android phone mobile portrait"),this.createVertexTemplateEntry(e+"phone2;fillColor=#ffffff;strokeColor=#c0c0c0;direction=south;",390,200,"","Phone (landscape)",null,null,"android phone mobile landscape"),this.createVertexTemplateEntry(e+"tab2;fillColor=#ffffff;strokeColor=#c0c0c0;",472,686,"","Tab",null,null,"android tab tablet portrait"),this.createVertexTemplateEntry(e+"tab2;fillColor=#ffffff;strokeColor=#c0c0c0;direction=north;", 686,472,"","Tab (landscape)",null,null,"android tab tablet landscape"),this.createVertexTemplateEntry("strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.action_bar;fillColor=#1A1A1A;strokeColor=#c0c0c0;strokeWidth=2;fontColor=#FFFFFF;",185,30,"","Action Bar",null,null,"android action bar dark portrait"),this.createVertexTemplateEntry("strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.action_bar;fillColor=#E6E6E6;strokeColor=#c0c0c0;strokeWidth=2;",185,30,"","Action Bar (Bright)", null,null,"android action bar bright portrait"),this.createVertexTemplateEntry("strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.action_bar_landscape;fillColor=#1A1A1A;strokeColor=#c0c0c0;strokeWidth=2;fontColor=#FFFFFF;",320,30,"","Action Bar Landscape",null,null,"android action bar landscape dark"),this.createVertexTemplateEntry("strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.action_bar_landscape;fillColor=#E6E6E6;strokeColor=#c0c0c0;strokeWidth=2;",320,30,"","Action Bar Landscape (Bright)", @@ -3510,7 +3514,7 @@ this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColo "","archimate implementation migration element deliverable").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#E0FFE0;strokeColor=#000000;shape=mxgraph.archimate3.tech;techType=plateau;",150,75,"","Plateau",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation migration element plateau").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#E0FFE0;strokeColor=#000000;shape=mxgraph.archimate3.gap;", 150,60,"","Gap",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation migration element gap").join(" "))];this.addPalette("archimate3Implementation and Migration","Archimate 3.0 / Implementation and Migration",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addArchimate3MotivationPalette=function(){var a=[this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=role;archiType=oct;", 150,75,"","Stakeholder",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element stakeholder").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=driver;archiType=oct;",150,75,"","Driver",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element driver").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=assess;archiType=oct;", -150,75,"","Assesment",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element assessment").join(" ")),this.createVertexTemplateEntry("shape=ellipse;html=1;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;",150,75,"","Value",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element value").join(" ")),this.createVertexTemplateEntry("shape=cloud;html=1;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;", +150,75,"","Assesment",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element assessment").join(" ")),this.createVertexTemplateEntry("shape=ellipse;html=1;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;perimeter=ellipsePerimeter;",150,75,"","Value",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element value").join(" ")),this.createVertexTemplateEntry("shape=cloud;html=1;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;", 150,75,"","Meaning",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element meaning").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=goal;archiType=oct;",150,75,"","Goal",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element goal").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=outcome;archiType=oct;", 150,75,"","Outcome",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element outcome").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=principle;archiType=oct;",150,75,"","Principle",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element principle").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=requirement;archiType=oct;", 150,75,"","Requirement",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element requirement").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.requirement;",100,50,"","Requirement",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element requirement").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=constraint;archiType=oct;", @@ -3526,8 +3530,8 @@ null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship real 160,0,"","Triggering",null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship triggering").join(" ")),this.createEdgeTemplateEntry("edgeStyle=elbowEdgeStyle;html=1;endArrow=block;dashed=1;elbow=vertical;endFill=1;dashPattern=6 4;",160,0,"","Flow",null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship flow").join(" ")),this.createEdgeTemplateEntry("endArrow=block;html=1;endFill=0;edgeStyle=elbowEdgeStyle;elbow=vertical;",160,0,"","Specialization",null,this.getTagsForStencil("mxgraph.archimate3", "","archimate relationship specialization").join(" ")),this.createEdgeTemplateEntry("edgeStyle=elbowEdgeStyle;html=1;endArrow=none;elbow=vertical;",160,0,"","Association",null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship association").join(" ")),this.createVertexTemplateEntry("ellipse;html=1;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;fillColor=#000000;strokeColor=#000000;",10,10,"","And Junction",null,this.getTagsForStencil("mxgraph.archimate3", "","archimate relationship junction").join(" ")),this.createVertexTemplateEntry("ellipse;html=1;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;fillColor=#ffffff;strokeColor=#000000;",10,10,"","Or Junction",null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship junction").join(" "))];this.addPalette("archimate3Relationships","Archimate 3.0 / Relationships",!1,mxUtils.bind(this,function(a){for(var b=0;b<e.length;b++)a.appendChild(e[b](a))}))};Sidebar.prototype.addArchimate3StrategyPalette= -function(){var a=[this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#F5DEAA;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=resource;archiType=square;",150,75,"","Resource",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate strategy resource").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#F5DEAA;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=capability;archiType=square;", -150,75,"","Capability",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate strategy capability").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#F5DEAA;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=course;archiType=square;",150,75,"","Course of Action",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate strategy course action").join(" "))];this.addPalette("archimate3Strategy","Archimate 3.0 / Strategy", +function(){var a=[this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#F5DEAA;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=resource;archiType=square;",150,75,"","Resource",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate strategy resource").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#F5DEAA;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=capability;archiType=rounded;", +150,75,"","Capability",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate strategy capability").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#F5DEAA;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=course;archiType=rounded;",150,75,"","Course of Action",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate strategy course action").join(" "))];this.addPalette("archimate3Strategy","Archimate 3.0 / Strategy", !1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addArchimate3TechnologyPalette=function(){var a=[this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=node;archiType=square;",150,75,"","Node",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology node").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.node;", 100,60,"","Node",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology node").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.tech;techType=device;",150,75,"","Device",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology device").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.device;", 80,65,"","Device",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology device").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=sysSw;archiType=square;",150,75,"","System Software",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology system software").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.tech;techType=sysSw;", @@ -3990,14 +3994,14 @@ this.createVertexTemplateEntry(a+"arrowNW;fillColor=#000000;aspect=fixed;",45.5, null,null,this.getTagsForStencil("mxgraph.aws3d","arrow ne north east northeast","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"flatEdge;fillColor=#000000;aspect=fixed;",63.2,36,"","Flat Edge",null,null,this.getTagsForStencil("mxgraph.aws3d","arrow ne north east northeast","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"flatDoubleEdge;fillColor=#000000;aspect=fixed;",252.8,144,"","Flat Double Edge",null,null,this.getTagsForStencil("mxgraph.aws3d", "arrow ne north east northeast","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"arrowhead;aspect=fixed;",19,11,"","Arrowhead",null,null,this.getTagsForStencil("mxgraph.aws3d","arrowhead","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"edge;aspect=fixed;",97,107.4,"","Edge",null,null,this.getTagsForStencil("mxgraph.aws3d","edge","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"reference;aspect=fixed;",29.5,19.5,"","Reference", null,null,this.getTagsForStencil("mxgraph.aws3d","reference","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"spot;aspect=fixed;",62,36,"","Spot",null,null,this.getTagsForStencil("mxgraph.aws3d","spot","aws 3d amazon web service").join(" ")),this.createEdgeTemplateEntry("edgeStyle=isometricEdgeStyle;endArrow=none;html=1;",50,100,"isometric edge","Isometric Edge 1"),this.createEdgeTemplateEntry("edgeStyle=isometricEdgeStyle;endArrow=none;html=1;elbow=vertical;",50,100,"isometric edge", -"Isometric Edge 2")])}})();(function(){Sidebar.prototype.addAWS4Palette=function(){var a="outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=#ffffff;fillColor=#232F3E;dashed=0;verticalLabelPosition=middle;verticalAlign=bottom;align=center;html=1;whiteSpace=wrap;fontSize=10;fontStyle=1;spacing=3;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws4.",e="outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=#232F3E;fillColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;"+ -mxConstants.STYLE_SHAPE+"=mxgraph.aws4.",d="outlineConnect=0;gradientColor=none;fontColor=#545B64;strokeColor=none;fillColor=#879196;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws4.",b="outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws4.";this.addAWS4ArrowsPalette("mxgraph.aws4",this);this.addAWS4GeneralResourcesPalette(80, -100,60,a,e,"mxgraph.aws4",this);this.addAWS4IllustrationsPalette(d,"mxgraph.aws4",this);this.addAWS4GroupsLightPalette(b,"mxgraph.aws4",this);this.addAWS4GroupsDarkPalette(b,"mxgraph.aws4",this);this.addAWS4AnalyticsPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4ApplicationIntegrationPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4ARVRPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4CostManagementPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4BusinessProductivityPalette(80, -100,60,a,e,"mxgraph.aws4",this);this.addAWS4ComputePalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4CustomerEngagementPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4DatabasePalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4DesktopAppStreamingPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4DeveloperToolsPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4GameDevelopmentPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4InternetOfThingsPalette(80,100,60,a,e,"mxgraph.aws4", -this);this.addAWS4IOTThingsPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4IOTResourcesPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4MachineLearningPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4ManagementToolsPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4MediaServicesPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4MigrationPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4MobileServicesPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4NetworkContentDeliveryPalette(80, -100,60,a,e,"mxgraph.aws4",this);this.addAWS4SecurityIdentityCompliancePalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4StoragePalette(80,100,60,a,e,"mxgraph.aws4",this)};Sidebar.prototype.addAWS4ArrowsPalette=function(a,e){this.addPaletteFunctions("aws4Arrows","AWS / Arrows",!1,[this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;html=1;endArrow=none;elbow=vertical;startArrow=block;startFill=1;strokeColor=#545B64;rounded=0;",100,0,"","Default (left)",null,this.getTagsForStencil(a,"", -"aws amazon web service arrowsdefault left").join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;html=1;endArrow=block;elbow=vertical;startArrow=none;endFill=1;strokeColor=#545B64;rounded=0;",100,0,"","Default (left)",null,this.getTagsForStencil(a,"","aws amazon web service arrowsdefault left").join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;html=1;endArrow=block;elbow=vertical;startArrow=block;startFill=1;endFill=1;strokeColor=#545B64;rounded=0;",100,0,"", -"Default (double)",null,this.getTagsForStencil(a,"","aws amazon web service arrowsdefault double").join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;html=1;endArrow=none;elbow=vertical;startArrow=openThin;startFill=0;strokeColor=#545B64;rounded=0;",100,0,"","Open (thin, left)",null,this.getTagsForStencil(a,"","aws amazon web service arrowsopen thin left").join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;html=1;endArrow=openThin;elbow=vertical;startArrow=none;endFill=0;strokeColor=#545B64;rounded=0;", +"Isometric Edge 2")])}})();(function(){Sidebar.prototype.addAWS4Palette=function(){var a="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=#ffffff;fillColor=#232F3E;dashed=0;verticalLabelPosition=middle;verticalAlign=bottom;align=center;html=1;whiteSpace=wrap;fontSize=10;fontStyle=1;spacing=3;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws4.",e="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=#232F3E;fillColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;"+ +mxConstants.STYLE_SHAPE+"=mxgraph.aws4.",d="outlineConnect=0;gradientColor=none;fontColor=#545B64;strokeColor=none;fillColor=#879196;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws4.",b="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;"+ +mxConstants.STYLE_SHAPE+"=mxgraph.aws4.";this.addAWS4ArrowsPalette("mxgraph.aws4",this);this.addAWS4GeneralResourcesPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4IllustrationsPalette(d,"mxgraph.aws4",this);this.addAWS4GroupsLightPalette(b,"mxgraph.aws4",this);this.addAWS4GroupsDarkPalette(b,"mxgraph.aws4",this);this.addAWS4AnalyticsPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4ApplicationIntegrationPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4ARVRPalette(80,100,60,a,e, +"mxgraph.aws4",this);this.addAWS4CostManagementPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4BusinessProductivityPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4ComputePalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4CustomerEngagementPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4DatabasePalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4DesktopAppStreamingPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4DeveloperToolsPalette(80,100,60,a,e,"mxgraph.aws4",this); +this.addAWS4GameDevelopmentPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4InternetOfThingsPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4IOTThingsPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4IOTResourcesPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4MachineLearningPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4ManagementToolsPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4MediaServicesPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4MigrationPalette(80, +100,60,a,e,"mxgraph.aws4",this);this.addAWS4MobileServicesPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4NetworkContentDeliveryPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4SecurityIdentityCompliancePalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4StoragePalette(80,100,60,a,e,"mxgraph.aws4",this)};Sidebar.prototype.addAWS4ArrowsPalette=function(a,e){this.addPaletteFunctions("aws4Arrows","AWS / Arrows",!1,[this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;html=1;endArrow=none;elbow=vertical;startArrow=block;startFill=1;strokeColor=#545B64;rounded=0;", +100,0,"","Default (left)",null,this.getTagsForStencil(a,"","aws amazon web service arrowsdefault left").join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;html=1;endArrow=block;elbow=vertical;startArrow=none;endFill=1;strokeColor=#545B64;rounded=0;",100,0,"","Default (left)",null,this.getTagsForStencil(a,"","aws amazon web service arrowsdefault left").join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;html=1;endArrow=block;elbow=vertical;startArrow=block;startFill=1;endFill=1;strokeColor=#545B64;rounded=0;", +100,0,"","Default (double)",null,this.getTagsForStencil(a,"","aws amazon web service arrowsdefault double").join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;html=1;endArrow=none;elbow=vertical;startArrow=openThin;startFill=0;strokeColor=#545B64;rounded=0;",100,0,"","Open (thin, left)",null,this.getTagsForStencil(a,"","aws amazon web service arrowsopen thin left").join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;html=1;endArrow=openThin;elbow=vertical;startArrow=none;endFill=0;strokeColor=#545B64;rounded=0;", 100,0,"","Open (thin, left)",null,this.getTagsForStencil(a,"","aws amazon web service arrowsopen thin left").join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;html=1;endArrow=openThin;elbow=vertical;startArrow=openThin;startFill=0;endFill=0;strokeColor=#545B64;rounded=0;",100,0,"","Open (thin, double)",null,this.getTagsForStencil(a,"","aws amazon web service arrowsopen thin double").join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;html=1;endArrow=none;elbow=vertical;startArrow=open;startFill=0;strokeColor=#545B64;rounded=0;", 100,0,"","Open (left)",null,this.getTagsForStencil(a,"","aws amazon web service arrowsopen left").join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;html=1;endArrow=open;elbow=vertical;startArrow=none;endFill=0;strokeColor=#545B64;rounded=0;",100,0,"","Open (left)",null,this.getTagsForStencil(a,"","aws amazon web service arrowsopen left").join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;html=1;endArrow=open;elbow=vertical;startArrow=open;startFill=0;endFill=0;strokeColor=#545B64;rounded=0;", 100,0,"","Open (double)",null,this.getTagsForStencil(a,"","aws amazon web service arrowsopen double").join(" "))])};Sidebar.prototype.addAWS4GeneralResourcesPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4General Resources","AWS / General Resources",!1,[this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".aws_cloud;",d,d,"AWS Cloud",null,null,null,this.getTagsForStencil(f,"cloud","aws amazon web service general resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+ @@ -4534,46 +4538,47 @@ null,null,this.getTagsForStencil("mxgraph.cabinets","surge_protection_3p","cabin 25,25,"","Terminal 4mm2 x10",null,null,this.getTagsForStencil("mxgraph.cabinets","terminal_4mm2_x10","cabinet ").join(" ")),this.createVertexTemplateEntry(a+"terminal_4_6mm2;",2.5,30,"","Terminal 4-6mm2",null,null,this.getTagsForStencil("mxgraph.cabinets","terminal_4_6mm2","cabinet ").join(" ")),this.createVertexTemplateEntry(a+"terminal_4_6mm2_x10;",25,30,"","Terminal 4-6mm2 x10",null,null,this.getTagsForStencil("mxgraph.cabinets","terminal_4_6mm2_x10","cabinet ").join(" ")),this.createVertexTemplateEntry(a+ "terminal_6_25mm2;",5,37.5,"","Terminal 6-25mm2",null,null,this.getTagsForStencil("mxgraph.cabinets","terminal_6_25mm2","cabinet ").join(" ")),this.createVertexTemplateEntry(a+"terminal_6_25mm2_x10;",50,37.5,"","Terminal 6-25mm2 x10",null,null,this.getTagsForStencil("mxgraph.cabinets","terminal_6_25mm2_x10","cabinet ").join(" ")),this.createVertexTemplateEntry(a+"terminal_40mm2;",11,50,"","Terminal 40mm2",null,null,this.getTagsForStencil("mxgraph.cabinets","terminal_40mm2","cabinet ").join(" ")), this.createVertexTemplateEntry(a+"terminal_40mm2_x10;",50*2.2,50,"","Terminal 40mm2 x10",null,null,this.getTagsForStencil("mxgraph.cabinets","terminal_40mm2_x10","cabinet ").join(" ")),this.createVertexTemplateEntry(a+"terminal_50mm2;",12.5,50*1.1,"","Terminal 50mm2",null,null,this.getTagsForStencil("mxgraph.cabinets","terminal_50mm2","cabinet ").join(" ")),this.createVertexTemplateEntry(a+"terminal_50mm2_x10;",125,50*1.1,"","Terminal 50mm2 x10",null,null,this.getTagsForStencil("mxgraph.cabinets", -"terminal_50mm2_x10","cabinet ").join(" ")),this.createVertexTemplateEntry(a+"terminal_75mm2;",15,70,"","Terminal 75mm2",null,null,this.getTagsForStencil("mxgraph.cabinets","terminal_75mm2","cabinet ").join(" ")),this.createVertexTemplateEntry(a+"terminal_75mm2_x10;",150,70,"","Terminal 75mm2 x10",null,null,this.getTagsForStencil("mxgraph.cabinets","terminal_75mm2_x10","cabinet ").join(" "))];this.addPalette("cabinets",mxResources.get("cabinets"),!1,mxUtils.bind(this,function(a){for(var c=0;c<b.length;c++)a.appendChild(b[c](a))}))}})();(function(){Sidebar.prototype.addCiscoSafePalette=function(){this.addCiscoSafeArchitecturePalette();this.addCiscoSafeCapabilityPalette();this.addCiscoSafeDesignPalette();this.addCiscoSafeThreatPalette()};Sidebar.prototype.addCiscoSafeArchitecturePalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;html=1;fillColor=#6ABD46;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;align=center;shape=mxgraph.cisco_safe.architecture.";this.addPaletteFunctions("cisco_safeArchitecture","Cisco Safe / Architecture", -!1,[this.createVertexTemplateEntry(a+"aci_controller;",50,50,"","ACI Controller",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","aci controller","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"aci_leaf_switch;",50,50,"","ACI Leaf Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","aci leaf switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"aci_spine_switch;",50,50,"","ACI Spine Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture", -"aci spine switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"adaptive_security_appliance;",50,50,"","Adaptive Security Appliance",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","adaptive security appliance","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"automated_system;",50,50,"","Automated System",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","automated system","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+ -"blade_server;",50,50,"","Blade Server",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","blade server","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"catalyst_switch;",50,50,"","Catalyst Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","catalyst switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"corporate_device;",50,50,"","Corporate Device",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture", -"corporate device","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"email_security;",50,50,"","Email Security",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","email security","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"fabric_switch;",50,50,"","Fabric Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","fabric switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"firepower_appliance;", -50,50,"","Firepower Appliance",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","firepower appliance","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"firewall;",50,50,"","Firewall",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","firewall","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"generic_appliance;",50,50,"","Generic Appliance",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","generic appliance", -"cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"intrusion_detection;",50,50,"","Intrusion Detection",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","intrusion detection","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"l3_switch;",50,50,"","L3 Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","l3 switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"load_balancer;",50,50,"","Load Balancer", -null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","load balancer","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"nexus_1kv;",50,50,"","Nexus 1kv",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","nexus 1kv","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"nexus_data_center_switch;",50,50,"","Nexus Data Center Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","nexus data center switch","cisco safe architecture").join(" ")), -this.createVertexTemplateEntry(a+"nexus_fabric_switch;",50,50,"","Nexus Fabric Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","nexus fabric switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"nexus_switch;",50,50,"","Nexus Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","nexus switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"phone;",50,50,"","Phone",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture", -"phone","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"router;",50,50,"","Router",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","router","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"secure_server;",50,50,"","Secure Server",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","secure server","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"server;",50,50,"","Server",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture", -"server","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"stacked_switch;",50,50,"","Stacked Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","stacked switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"storage;",50,50,"","Storage",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","storage","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"switch;",50,50,"","Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture", -"switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"tls_appliance;",50,50,"","TLS Appliance",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","tls appliance","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"unified_access_switch;",50,50,"","Unified Access Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","unified access switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"web_application_firewall;", -50,50,"","Web Application Firewall",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","web application firewall","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"web_security;",50,50,"","Web Security",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","web security","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"wide_area_application_engine;",50,50,"","Wide Area Application Engine",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture", -"wide area application engine","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"wireless_access_point;",50,50,"","Wireless Access Point",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","wireless access point","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"wireless_lan_controller;",50,50,"","Wireless LAN Controller",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","wireless lan controller","cisco safe architecture").join(" "))])}; -Sidebar.prototype.addCiscoSafeCapabilityPalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;html=1;fillColor=#28A8E0;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;align=center;shape=mxgraph.cisco_safe.capability.";this.addPaletteFunctions("cisco_safeCapability","Cisco Safe / Capability",!1,[this.createVertexTemplateEntry(a+"access_control_using_trustsec;",50,50,"","Access Control Using TrustSec",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","access control using trustsec", -"cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"analysis_correlation",50,50,"","Analysis Correlation",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","analysis correlation","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"anomaly_detection;",50,50,"","Anomaly Detection",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","anomaly detection","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"anti_malware;", -50,50,"","Anti-Malware",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","anti malware","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"anti_spam;",50,50,"","Anti-Spam",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","anti spam","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"anti_virus;",50,50,"","Anti-Virus",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","anti virus","cisco safe capability").join(" ")), -this.createVertexTemplateEntry(a+"application;",50,50,"","Application",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","application","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"application_visibility_control;",50,50,"","Application Visibility Control",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","application visibility control","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"client_based_security;",50,50,"","Client Based Security", -null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","client based security","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"cloud_web_security;",50,50,"","Cloud Web Security",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","cloud web security","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"conference_bridge;",50,50,"","Conference Bridge",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","conference bridge","cisco safe capability").join(" ")), -this.createVertexTemplateEntry(a+"database;",50,50,"","Database",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","database","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"data_loss_prevention;",50,50,"","Data Loss Prevention",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","data loss prevention","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"distributed_denial_of_service_protection;",50,50,"","Distributed Denial of Service Protection", -null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","distributed denial of service protection","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"dns;",50,50,"","DNS",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","dns","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"email_encryption;",50,50,"","Email Encryption",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","email encryption","cisco safe capability").join(" ")), -this.createVertexTemplateEntry(a+"email_security;",50,50,"","Email Security",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","email security","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"fabric_switching;",50,50,"","Fabric Switching",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","fabric switching","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"firewall;",50,50,"","Firewall",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability", -"firewall","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"flow_analytics;",50,50,"","Flow Analytics",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","flow analytics","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"identity_authorization;",50,50,"","Identity Authorization",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","identity authorization","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"identity_authorization_alt;", -50,50,"","Identity Authorization (alternative)",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","identity authorization alt alternative","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"intrusion_detection;",50,50,"","Intrusion Detection",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","intrusion detection","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"intrusion_prevention;",50,50,"","Intrusion Prevention",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability", -"intrusion prevention","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"l2_l3_network;",50,50,"","L2 L3 Network",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","l2 l3 network","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"l2_l3_network_virtual;",50,50,"","L2 L3 Network (virtual)",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","l2 l3 network virtual","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+ -"l2_switching;",50,50,"","L2 Switching",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","l2 switching","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"l3_switching;",50,50,"","L3 Switching",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","l3 switching","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"load_balancer;",50,50,"","Load Balancer",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","load balancer", -"cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"logging_reporting;",50,50,"","Logging Reporting",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","logging reporting","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"malware_sandbox;",50,50,"","Malware Sandbox",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","malware sandbox","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"mobile_device_manager;",50,50, -"","Mobile Device Manager",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","mobile device manager","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"monitoring;",50,50,"","Monitoring",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","monitoring","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"policy_configuration;",50,50,"","Policy Configuration",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","policy configuration", -"cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"posture_assesment;",50,50,"","Posture Assesment",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","posture assesment","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"routing;",50,50,"","Routing",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","routing","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"server_based_security;",50,50,"","Server Based Security", -null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","server based security","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"ssl_tls_offload;",50,50,"","SSL TLS Offload",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","ssl tls offload","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"storage;",50,50,"","Storage",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","storage","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+ -"threat_intelligence;",50,50,"","Threat Intelligence",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","threat intelligence","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"time_synchronization;",50,50,"","Time Synchronization",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","time synchronization","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"user;",50,50,"","User",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability", -"user","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"video;",50,50,"","Video",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","video","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"virtualized_capability;",50,50,"","Virtualized Capability",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","virtualized capability","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"virtual_firewall;",50,50,"","Virtual Firewall", -null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","virtual firewall","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"virtual_l2_switching;",50,50,"","Virtual L2 Switching",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","virtual l2 switching","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"virtual_private_network;",50,50,"","Virtual Private Network",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","virtual private network vpn", -"cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"voice;",50,50,"","Voice",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","voice","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"vpn_concentrator;",50,50,"","VPN Concentrator",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","vpn concentrator virtual private network","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"vulnerability_management;",50,50,"","Vulnerability Management", -null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","vulnerability management","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"web_application_firewall;",50,50,"","Web Application Firewall",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","web application firewall","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"web_reputation_filtering_dcs;",50,50,"","Web Reputation Filtering DCS",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability", -"web reputation filtering dcs","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"web_security;",50,50,"","Web Security",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","web security","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"wireless_connection;",50,50,"","Wireless Connection",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","wireless connection","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"wireless_intrusion_detection_system;", -50,50,"","Wireless Intrusion Detection System",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","wireless intrusion detection system","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"wireless_intrusion_prevention_system;",50,50,"","Wireless Intrusion Prevention System",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","wireless intrusion prevention system","cisco safe capability").join(" "))])};Sidebar.prototype.addCiscoSafeDesignPalette=function(){var a= -mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;html=1;fillColor=#A153A0;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;align=center;shape=mxgraph.cisco_safe.design.";this.addPaletteFunctions("cisco_safeDesign","Cisco Safe / Design",!1,[this.createVertexTemplateEntry(a+"access_point;",50,45,"","Access Point",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","access point","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"aci_controller;",50,45,"","ACI Controller",null,null, -this.getTagsForStencil("mxgraph.cisco_safe.design","aci controller","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"aci_leaf_switch;",50,45,"","ACI Leaf Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","aci leaf switch","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"aci_spine_switch;",50,45,"","ACI Spine Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","aci spine switch","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+ -"actor_1;",23.5,50,"","Actor (female)",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","actor female","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"actor_2;",19,50,"","Actor (male)",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","actor male","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"adaptive_security_appliance;",50,45,"","Adaptive Security Appliance",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","adaptive security appliance", +"terminal_50mm2_x10","cabinet ").join(" ")),this.createVertexTemplateEntry(a+"terminal_75mm2;",15,70,"","Terminal 75mm2",null,null,this.getTagsForStencil("mxgraph.cabinets","terminal_75mm2","cabinet ").join(" ")),this.createVertexTemplateEntry(a+"terminal_75mm2_x10;",150,70,"","Terminal 75mm2 x10",null,null,this.getTagsForStencil("mxgraph.cabinets","terminal_75mm2_x10","cabinet ").join(" "))];this.addPalette("cabinets",mxResources.get("cabinets"),!1,mxUtils.bind(this,function(a){for(var c=0;c<b.length;c++)a.appendChild(b[c](a))}))}})();(function(){Sidebar.prototype.addCiscoSafePalette=function(){this.addCiscoSafeArchitecturePalette();this.addCiscoSafeCapabilityPalette();this.addCiscoSafeDesignPalette();this.addCiscoSafeThreatPalette()};Sidebar.prototype.addCiscoSafeArchitecturePalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;html=1;fillColor=#6ABD46;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;align=center;points=[[0.06,0.06,0],[0.94,0.06,0],[0.94,0.94,0],[0.06,0.94,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0.25,0],[1,0.5,0],[1,0.75,0],[0.75,1,0],[0.5,1,0],[0.25,1,0],[0,0.75,0],[0,0.5,0],[0,0.25,0]];shape=mxgraph.cisco_safe.architecture."; +this.addPaletteFunctions("cisco_safeArchitecture","Cisco Safe / Architecture",!1,[this.createVertexTemplateEntry(a+"aci_controller;",50,50,"","ACI Controller",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","aci controller","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"aci_leaf_switch;",50,50,"","ACI Leaf Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","aci leaf switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+ +"aci_spine_switch;",50,50,"","ACI Spine Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","aci spine switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"adaptive_security_appliance;",50,50,"","Adaptive Security Appliance",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","adaptive security appliance","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"automated_system;",50,50,"","Automated System",null,null, +this.getTagsForStencil("mxgraph.cisco_safe.architecture","automated system","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"blade_server;",50,50,"","Blade Server",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","blade server","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"catalyst_switch;",50,50,"","Catalyst Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","catalyst switch","cisco safe architecture").join(" ")), +this.createVertexTemplateEntry(a+"corporate_device;",50,50,"","Corporate Device",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","corporate device","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"email_security;",50,50,"","Email Security",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","email security","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"fabric_switch;",50,50,"","Fabric Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture", +"fabric switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"firepower_appliance;",50,50,"","Firepower Appliance",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","firepower appliance","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"firewall;",50,50,"","Firewall",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","firewall","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"generic_appliance;", +50,50,"","Generic Appliance",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","generic appliance","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"intrusion_detection;",50,50,"","Intrusion Detection",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","intrusion detection","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"l3_switch;",50,50,"","L3 Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture", +"l3 switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"load_balancer;",50,50,"","Load Balancer",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","load balancer","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"nexus_1kv;",50,50,"","Nexus 1kv",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","nexus 1kv","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"nexus_data_center_switch;",50,50,"","Nexus Data Center Switch", +null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","nexus data center switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"nexus_fabric_switch;",50,50,"","Nexus Fabric Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","nexus fabric switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"nexus_switch;",50,50,"","Nexus Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","nexus switch", +"cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"phone;",50,50,"","Phone",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","phone","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"router;",50,50,"","Router",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","router","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"secure_server;",50,50,"","Secure Server",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture", +"secure server","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"server;",50,50,"","Server",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","server","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"stacked_switch;",50,50,"","Stacked Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","stacked switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"storage;",50,50,"","Storage",null,null, +this.getTagsForStencil("mxgraph.cisco_safe.architecture","storage","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"switch;",50,50,"","Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"tls_appliance;",50,50,"","TLS Appliance",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","tls appliance","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+ +"unified_access_switch;",50,50,"","Unified Access Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","unified access switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"web_application_firewall;",50,50,"","Web Application Firewall",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","web application firewall","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"web_security;",50,50,"","Web Security",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture", +"web security","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"wide_area_application_engine;",50,50,"","Wide Area Application Engine",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","wide area application engine","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"wireless_access_point;",50,50,"","Wireless Access Point",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","wireless access point","cisco safe architecture").join(" ")), +this.createVertexTemplateEntry(a+"wireless_lan_controller;",50,50,"","Wireless LAN Controller",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","wireless lan controller","cisco safe architecture").join(" "))])};Sidebar.prototype.addCiscoSafeCapabilityPalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;html=1;fillColor=#28A8E0;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;points=[[0.145,0.145,0],[0.8555,0.145,0],[0.855,0.855,0],[0.145,0.855,0],[0.5,0,0], [1,0.5,0], [0.5,1,0],[0,0.5,0]];align=center;shape=mxgraph.cisco_safe.capability."; +this.addPaletteFunctions("cisco_safeCapability","Cisco Safe / Capability",!1,[this.createVertexTemplateEntry(a+"access_control_using_trustsec;",50,50,"","Access Control Using TrustSec",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","access control using trustsec","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"analysis_correlation",50,50,"","Analysis Correlation",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","analysis correlation","cisco safe capability").join(" ")), +this.createVertexTemplateEntry(a+"anomaly_detection;",50,50,"","Anomaly Detection",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","anomaly detection","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"anti_malware;",50,50,"","Anti-Malware",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","anti malware","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"anti_spam;",50,50,"","Anti-Spam",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability", +"anti spam","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"anti_virus;",50,50,"","Anti-Virus",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","anti virus","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"application;",50,50,"","Application",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","application","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"application_visibility_control;",50,50,"","Application Visibility Control", +null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","application visibility control","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"client_based_security;",50,50,"","Client Based Security",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","client based security","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"cloud_web_security;",50,50,"","Cloud Web Security",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","cloud web security", +"cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"conference_bridge;",50,50,"","Conference Bridge",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","conference bridge","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"database;",50,50,"","Database",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","database","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"data_loss_prevention;",50,50,"","Data Loss Prevention", +null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","data loss prevention","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"distributed_denial_of_service_protection;",50,50,"","Distributed Denial of Service Protection",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","distributed denial of service protection","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"dns;",50,50,"","DNS",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability", +"dns","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"email_encryption;",50,50,"","Email Encryption",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","email encryption","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"email_security;",50,50,"","Email Security",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","email security","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"fabric_switching;",50,50,"","Fabric Switching", +null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","fabric switching","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"firewall;",50,50,"","Firewall",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","firewall","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"flow_analytics;",50,50,"","Flow Analytics",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","flow analytics","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+ +"identity_authorization;",50,50,"","Identity Authorization",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","identity authorization","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"identity_authorization_alt;",50,50,"","Identity Authorization (alternative)",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","identity authorization alt alternative","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"intrusion_detection;",50,50, +"","Intrusion Detection",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","intrusion detection","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"intrusion_prevention;",50,50,"","Intrusion Prevention",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","intrusion prevention","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"l2_l3_network;",50,50,"","L2 L3 Network",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability", +"l2 l3 network","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"l2_l3_network_virtual;",50,50,"","L2 L3 Network (virtual)",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","l2 l3 network virtual","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"l2_switching;",50,50,"","L2 Switching",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","l2 switching","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"l3_switching;", +50,50,"","L3 Switching",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","l3 switching","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"load_balancer;",50,50,"","Load Balancer",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","load balancer","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"logging_reporting;",50,50,"","Logging Reporting",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","logging reporting","cisco safe capability").join(" ")), +this.createVertexTemplateEntry(a+"malware_sandbox;",50,50,"","Malware Sandbox",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","malware sandbox","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"mobile_device_manager;",50,50,"","Mobile Device Manager",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","mobile device manager","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"monitoring;",50,50,"","Monitoring",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability", +"monitoring","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"policy_configuration;",50,50,"","Policy Configuration",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","policy configuration","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"posture_assesment;",50,50,"","Posture Assesment",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","posture assesment","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"routing;", +50,50,"","Routing",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","routing","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"server_based_security;",50,50,"","Server Based Security",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","server based security","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"ssl_tls_offload;",50,50,"","SSL TLS Offload",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","ssl tls offload", +"cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"storage;",50,50,"","Storage",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","storage","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"threat_intelligence;",50,50,"","Threat Intelligence",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","threat intelligence","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"time_synchronization;",50,50,"","Time Synchronization", +null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","time synchronization","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"user;",50,50,"","User",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","user","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"video;",50,50,"","Video",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","video","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"virtualized_capability;", +50,50,"","Virtualized Capability",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","virtualized capability","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"virtual_firewall;",50,50,"","Virtual Firewall",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","virtual firewall","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"virtual_l2_switching;",50,50,"","Virtual L2 Switching",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability", +"virtual l2 switching","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"virtual_private_network;",50,50,"","Virtual Private Network",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","virtual private network vpn","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"voice;",50,50,"","Voice",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","voice","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"vpn_concentrator;", +50,50,"","VPN Concentrator",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","vpn concentrator virtual private network","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"vulnerability_management;",50,50,"","Vulnerability Management",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","vulnerability management","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"web_application_firewall;",50,50,"","Web Application Firewall",null,null, +this.getTagsForStencil("mxgraph.cisco_safe.capability","web application firewall","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"web_reputation_filtering_dcs;",50,50,"","Web Reputation Filtering DCS",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","web reputation filtering dcs","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"web_security;",50,50,"","Web Security",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","web security", +"cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"wireless_connection;",50,50,"","Wireless Connection",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","wireless connection","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"wireless_intrusion_detection_system;",50,50,"","Wireless Intrusion Detection System",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","wireless intrusion detection system","cisco safe capability").join(" ")), +this.createVertexTemplateEntry(a+"wireless_intrusion_prevention_system;",50,50,"","Wireless Intrusion Prevention System",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","wireless intrusion prevention system","cisco safe capability").join(" "))])};Sidebar.prototype.addCiscoSafeDesignPalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;html=1;fillColor=#A153A0;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;align=center;points=[[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0.5,0],[0.75,1,0],[0.5,1,0],[0.25,1,0],[0,0.5,0],[0.125,0.25,0],[0.125,0.75,0],[0.875,0.25,0],[0.875,0.75,0]];shape=mxgraph.cisco_safe.design.", +e=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;html=1;fillColor=#A153A0;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;align=center;shape=mxgraph.cisco_safe.design.";this.addPaletteFunctions("cisco_safeDesign","Cisco Safe / Design",!1,[this.createVertexTemplateEntry(a+"access_point;",50,45,"","Access Point",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","access point","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"aci_controller;",50,45,"","ACI Controller",null,null, +this.getTagsForStencil("mxgraph.cisco_safe.design","aci controller","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"aci_leaf_switch;",50,45,"","ACI Leaf Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","aci leaf switch","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"aci_spine_switch;",50,45,"","ACI Spine Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","aci spine switch","cisco safe design").join(" ")),this.createVertexTemplateEntry(e+ +"actor_1;",23.5,50,"","Actor (female)",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","actor female","cisco safe design").join(" ")),this.createVertexTemplateEntry(e+"actor_2;",19,50,"","Actor (male)",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","actor male","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"adaptive_security_appliance;",50,45,"","Adaptive Security Appliance",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","adaptive security appliance", "cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"automated_system;",50,45,"","Automated System",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","automated system","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"blade_server;",50,45,"","Blade Server",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","blade server","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"blank_device;",50,45,"","Blank Device",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design", "blank device","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"blank_service;",50,45,"","Blank Service",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","blank service","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"call_manager;",50,45,"","Call Manager",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","call manager","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"catalyst_data_center_switch;",50,45,"","Catalyst Data Center Switch", null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","catalyst data center switch","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"catalyst_switch_stack;",50,45,"","Catalyst Switch Stack",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","catalyst switch stack","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"cisco_amp;",50,45,"","Cisco Amp",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","cisco amp amplifier","cisco safe design").join(" ")), @@ -4636,17 +4641,18 @@ null,null,this.getTagsForStencil("mxgraph.citrix","Role Synchronizer","").join(" "XenApp Web","").join(" ")),this.createVertexTemplateEntry(a+"xencenter;",76,89,"","XenCenter",null,null,this.getTagsForStencil("mxgraph.citrix","XenCenter","").join(" ")),this.createVertexTemplateEntry(a+"xenclient;",91,77,"","XenClient",null,null,this.getTagsForStencil("mxgraph.citrix","XenClient","").join(" ")),this.createVertexTemplateEntry(a+"xenclient_synchronizer;fillColor=#CCCCCC;gradientColor=#000000;gradientDirection=south;",76,91,"","XenClient Synchronizer",null,null,this.getTagsForStencil("mxgraph.citrix", "Synchronizer","").join(" ")),this.createVertexTemplateEntry(a+"xendesktop_server;",75,91,"","XenDesktop Server",null,null,this.getTagsForStencil("mxgraph.citrix","XenDesktop Server","").join(" ")),this.createVertexTemplateEntry(a+"xenmobile;fillColor=#CCCCCC;gradientColor=#000000;gradientDirection=south;",70,89,"","XenMobile",null,null,this.getTagsForStencil("mxgraph.citrix","XenMobile","").join(" ")),this.createVertexTemplateEntry(a+"xenserver;",76.5,90,"","XenServer",null,null,this.getTagsForStencil("mxgraph.citrix", "XenServer","").join(" "))])}})();(function(){Sidebar.prototype.addDFDPalette=function(){this.addPaletteFunctions("dfd","Data Flow Diagram",!1,[this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;shape=mxgraph.dfd.start",80,30,"","Start / End",null,null,this.getTagsForStencil("mxgraph.flowchart","start end","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;",100,50,"","Activity / Process / Entity / External Interactor",null,null,this.getTagsForStencil("mxgraph.flowchart", -"activity process entity external interactor","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=rhombus;html=1;dashed=0;whitespace=wrap;",60,50,"","Decision / Entity Relationship",null,null,this.getTagsForStencil("mxgraph.flowchart","decision entity relationship","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=ellipse;html=1;dashed=0;whitespace=wrap;aspect=fixed;",30,30,"","Reference",null,null,this.getTagsForStencil("mxgraph.flowchart","reference", -"dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;dashed=0;",100,50,"","Product / Result",null,null,this.getTagsForStencil("mxgraph.flowchart","product result","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=manualInput;whiteSpace=wrap;html=1;dashed=0;size=15;",100,50,"","Order / Command",null,null,this.getTagsForStencil("mxgraph.flowchart","order command","dfd data flow diagram ").join(" ")), -this.createVertexTemplateEntry("shape=document;whiteSpace=wrap;html=1;boundedLbl=1;dashed=0;flipH=1;",100,70,"","Information / Data Carrier / SOP",null,null,this.getTagsForStencil("mxgraph.flowchart","information data carrier sop","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("triangle;whiteSpace=wrap;html=1;dashed=0;direction=south;",60,60,"","Information/Data Carrier/SOP / Stop State",null,null,this.getTagsForStencil("mxgraph.flowchart","information data carrier sop","dfd data flow diagram ").join(" ")), -this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;shape=mxgraph.dfd.archive",60,60,"","Final Report / Archive",null,null,this.getTagsForStencil("mxgraph.flowchart","final report archive","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;size=0.25",100,50,"","Check",null,null,this.getTagsForStencil("mxgraph.flowchart","check","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;shape=mxgraph.dfd.check2", -100,50,"","Check 2",null,null,this.getTagsForStencil("mxgraph.flowchart","check","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=ellipse;html=1;dashed=0;whitespace=wrap;",30,30,"","Data Process",null,null,this.getTagsForStencil("mxgraph.flowchart","data process","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=ellipse;html=1;dashed=0;whitespace=wrap;aspect=fixed;",60,60,"","Data Process / State",null,null,this.getTagsForStencil("mxgraph.flowchart", -"data process","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("ellipse;shape=doubleEllipse;html=1;dashed=0;whitespace=wrap;aspect=fixed;",60,60,"","Multiple Process / Start State / Multi State",null,null,this.getTagsForStencil("mxgraph.flowchart","multiple process start state multi","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=ellipse;html=1;dashed=0;whitespace=wrap;aspect=fixed;strokeWidth=5;",60,60,"","Stop State",null,null,this.getTagsForStencil("mxgraph.flowchart", -"stop state","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;shape=partialRectangle;right=0;left=0;fillColor=none;",100,30,"","Data Store",null,null,this.getTagsForStencil("mxgraph.flowchart","data store","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;shape=partialRectangle;right=0;fillColor=none;",100,30,"","Data Store",null,null,this.getTagsForStencil("mxgraph.flowchart","data store","dfd data flow diagram ").join(" ")), -this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;shape=mxgraph.dfd.dataStoreID;align=left;spacingLeft=3;",100,30,"","Data Store with ID",null,null,this.getTagsForStencil("mxgraph.flowchart","data store with id identification","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=20;fillColor=#ffffff;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;swimlaneFillColor=#ffffff;", -100,50,"","Entity",null,null,this.getTagsForStencil("mxgraph.flowchart","entity","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=cloud;whiteSpace=wrap;html=1;",120,120,"","Object",null,null,this.getTagsForStencil("mxgraph.flowchart","object","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=ellipse;html=1;dashed=0;whitespace=wrap;",100,50,"","Oval Process",null,null,this.getTagsForStencil("mxgraph.flowchart","oval process","dfd data flow diagram ").join(" ")), -this.createVertexTemplateEntry("shape=cylinder;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;",60,80,"","Data Store",null,null,this.getTagsForStencil("mxgraph.flowchart","data store","dfd data flow diagram ").join(" ")),this.addEntry("dfd data flow diagram external entity",function(){var a=new mxCell("",new mxGeometry(0,0,100,100),"html=1;dashed=0;whitespace=wrap;shape=mxgraph.dfd.externalEntity");a.vertex=!0;var e=new mxCell("Id",new mxGeometry(0,0,20,20),"autosize=1;part=1;resizable=0;strokeColor=inherit;fillColor=inherit;gradientColor=inherit;"); -e.geometry.relative=!0;e.geometry.offset=new mxPoint(15,15);e.vertex=!0;a.insert(e);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,"External Entity")}),this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;shape=mxgraph.dfd.loop",80,30,"","Loop",null,null,this.getTagsForStencil("mxgraph.flowchart","loop","dfd data flow diagram ").join(" ")),this.createEdgeTemplateEntry("endArrow=classic;html=1;",50,50,"","Directional Connector",null,"dfd data flow diagram directional directed")])}})();(function(){Sidebar.prototype.addEipMessageConstructionPalette=function(a){var e=this,d=[this.createEdgeTemplateEntry("edgeStyle=none;html=1;strokeColor=#808080;endArrow=block;endSize=10;dashed=0;verticalAlign=bottom;strokeWidth=2;",160,0,"","Pipe",null,this.getTagsForStencil("mxgraph.eip","","eip enterprise integration pattern message construction pipe").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;dashed=0;align=center;fontSize=8;shape=rect;fillColor=#c0f5a9;strokeColor=#000000;verticalLabelPosition=bottom;verticalAlign=top;", +"activity process entity external interactor","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=rhombus;html=1;dashed=0;whitespace=wrap;perimeter=rhombusPerimeter;",60,50,"","Decision / Entity Relationship",null,null,this.getTagsForStencil("mxgraph.flowchart","decision entity relationship","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=ellipse;html=1;dashed=0;whitespace=wrap;aspect=fixed;perimeter=ellipsePerimeter;",30,30,"","Reference",null,null, +this.getTagsForStencil("mxgraph.flowchart","reference","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;dashed=0;",100,50,"","Product / Result",null,null,this.getTagsForStencil("mxgraph.flowchart","product result","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=manualInput;whiteSpace=wrap;html=1;dashed=0;size=15;",100,50,"","Order / Command",null,null,this.getTagsForStencil("mxgraph.flowchart", +"order command","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=document;whiteSpace=wrap;html=1;boundedLbl=1;dashed=0;flipH=1;",100,70,"","Information / Data Carrier / SOP",null,null,this.getTagsForStencil("mxgraph.flowchart","information data carrier sop","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("triangle;whiteSpace=wrap;html=1;dashed=0;direction=south;",60,60,"","Information/Data Carrier/SOP / Stop State",null,null,this.getTagsForStencil("mxgraph.flowchart", +"information data carrier sop","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;shape=mxgraph.dfd.archive",60,60,"","Final Report / Archive",null,null,this.getTagsForStencil("mxgraph.flowchart","final report archive","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;size=0.25",100,50,"","Check",null,null,this.getTagsForStencil("mxgraph.flowchart","check","dfd data flow diagram ").join(" ")), +this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;shape=mxgraph.dfd.check2",100,50,"","Check 2",null,null,this.getTagsForStencil("mxgraph.flowchart","check","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=ellipse;html=1;dashed=0;whitespace=wrap;perimeter=ellipsePerimeter;",30,30,"","Data Process",null,null,this.getTagsForStencil("mxgraph.flowchart","data process","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=ellipse;html=1;dashed=0;whitespace=wrap;aspect=fixed;perimeter=ellipsePerimeter;", +60,60,"","Data Process / State",null,null,this.getTagsForStencil("mxgraph.flowchart","data process","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("ellipse;shape=doubleEllipse;html=1;dashed=0;whitespace=wrap;aspect=fixed;",60,60,"","Multiple Process / Start State / Multi State",null,null,this.getTagsForStencil("mxgraph.flowchart","multiple process start state multi","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=ellipse;html=1;dashed=0;whitespace=wrap;aspect=fixed;strokeWidth=5;perimeter=ellipsePerimeter;", +60,60,"","Stop State",null,null,this.getTagsForStencil("mxgraph.flowchart","stop state","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;shape=partialRectangle;right=0;left=0;fillColor=none;",100,30,"","Data Store",null,null,this.getTagsForStencil("mxgraph.flowchart","data store","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;shape=partialRectangle;right=0;fillColor=none;",100,30,"","Data Store", +null,null,this.getTagsForStencil("mxgraph.flowchart","data store","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;shape=mxgraph.dfd.dataStoreID;align=left;spacingLeft=3;points=[[0,0],[0.5,0],[1,0],[0,0.5],[1,0.5],[0,1],[0.5,1],[1,1]];",100,30,"","Data Store with ID",null,null,this.getTagsForStencil("mxgraph.flowchart","data store with id identification","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=20;fillColor=#ffffff;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;swimlaneFillColor=#ffffff;", +100,50,"","Entity",null,null,this.getTagsForStencil("mxgraph.flowchart","entity","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=cloud;whiteSpace=wrap;html=1;",120,120,"","Object",null,null,this.getTagsForStencil("mxgraph.flowchart","object","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=ellipse;html=1;dashed=0;whitespace=wrap;perimeter=ellipsePerimeter;",100,50,"","Oval Process",null,null,this.getTagsForStencil("mxgraph.flowchart","oval process", +"dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=cylinder;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;",60,80,"","Data Store",null,null,this.getTagsForStencil("mxgraph.flowchart","data store","dfd data flow diagram ").join(" ")),this.addEntry("dfd data flow diagram external entity",function(){var a=new mxCell("",new mxGeometry(0,0,100,100),"html=1;dashed=0;whitespace=wrap;shape=mxgraph.dfd.externalEntity");a.vertex=!0;var e=new mxCell("Id",new mxGeometry(0,0, +20,20),"autosize=1;part=1;resizable=0;strokeColor=inherit;fillColor=inherit;gradientColor=inherit;");e.geometry.relative=!0;e.geometry.offset=new mxPoint(15,15);e.vertex=!0;a.insert(e);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,"External Entity")}),this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;shape=mxgraph.dfd.loop",80,30,"","Loop",null,null,this.getTagsForStencil("mxgraph.flowchart","loop","dfd data flow diagram ").join(" ")),this.createEdgeTemplateEntry("endArrow=classic;html=1;", +50,50,"","Directional Connector",null,"dfd data flow diagram directional directed")])}})();(function(){Sidebar.prototype.addEipMessageConstructionPalette=function(a){var e=this,d=[this.createEdgeTemplateEntry("edgeStyle=none;html=1;strokeColor=#808080;endArrow=block;endSize=10;dashed=0;verticalAlign=bottom;strokeWidth=2;",160,0,"","Pipe",null,this.getTagsForStencil("mxgraph.eip","","eip enterprise integration pattern message construction pipe").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;dashed=0;align=center;fontSize=8;shape=rect;fillColor=#c0f5a9;strokeColor=#000000;verticalLabelPosition=bottom;verticalAlign=top;", 150,90,"","Filter",null,null,this.getTagsForStencil("mxgraph.eip","","eip enterprise integration pattern message construction filter").join(" ")),this.addEntry("eip enterprise integration pattern message construction command message",function(){var a=new mxCell("",new mxGeometry(0,0,12,12),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=ellipse;fillColor=#808080;strokeColor=none;");a.vertex=!0;var c=new mxCell("C",new mxGeometry(16,18,12,12),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=rect;fillColor=#FF8080;strokeColor=#000000;fontStyle=1;"); c.vertex=!0;var d=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;strokeColor=#808080;strokeWidth=2;");d.geometry.relative=!0;d.edge=!0;a.insertEdge(d,!1);c.insertEdge(d,!0);return e.createVertexTemplateFromCells([d,a,c],28,30,"Command Message")}),this.addDataEntry("eip enterprise integration pattern message construction correlation identifier",78,30,"Correlation Identifier","5ZZLT8JAEIB/Ta+mDwv1KAicTEw8qMeVDu2GpUO2ixZ/vbPdAVorilExkTZN5rEznf1mtqkXDRfVRItlfo0pKC8aedFQIxonLaohKOWFvky96MoLQ58eLxzv8Qa1118KDYU5JCB0AU9CrcBZnKE0a8UGSDO4ZRW1yTHDQqjRzjrQuCpSsBl90qCS5r4hP1j5LLZakV5qjc9kKLCwkako821gbha0/6uAxNJonMMQFeq6iCjx7b313MnU5OQJyeIKtlW2GJS40lM29ZzJCJ0BY4m7pOpAxjQBXIDRa1qiQQkjn9rZRenUbLtuB5kE5vw+8+gkmCdd5v2/Y35+APMdqUeF03mbDnnHUrVZNYl06I3HF4RwD6ifRMChNygpY+hXvGEe8HXrBGziXaM4pPl5eJMl6H+UxfW2k6XuxXYnB7Un/rw9XeStQRZKZgXJU+IK1ILBDAtzK19sdGL7k4ullem9clnaczCjdu6f9o2HDw3XB9pA9dVOPnPNdgXvKweZ5aZt+8549zr8Ln8LoIap6dLjaX/nHPj1tcnH5QSsN9bN6uubqDcBvdbYBnwMj9CI/n8eZA6I/aPhTDo4B6c8171jzTWpu39Q9z1v/qK+Ag=="), this.addEntry("eip enterprise integration pattern message construction document message",function(){var a=new mxCell("",new mxGeometry(0,0,12,12),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=ellipse;fillColor=#808080;strokeColor=none;");a.vertex=!0;var c=new mxCell("D",new mxGeometry(16,18,12,12),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=rect;fillColor=#C7A0FF;strokeColor=#000000;fontStyle=1;");c.vertex=!0;var d=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;strokeColor=#808080;strokeWidth=2;"); @@ -4935,95 +4941,95 @@ this.addPalette("gcpCards","GCP / Cards",!1,mxUtils.bind(this,function(e){for(va this.addGCP2DeveloperToolsPalette();this.addGCP2ExpandedProductCardsPalette();this.addGCP2ProductCardsPalette()};Sidebar.prototype.addGCP2PathsPalette=function(){var a=[],a=[this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=blockThin;endFill=1;rounded=0;strokeWidth=2;endSize=4;startSize=4;dashed=0;strokeColor=#4284F3;",100,0,"","Primary Path",null,"gcp google cloud platform path primary"),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=blockThin;endFill=1;rounded=0;strokeWidth=2;endSize=4;startSize=4;dashed=1;dashPattern=1 3;strokeColor=#4284F3;", 100,0,"","Optional Primary Path",null,"gcp google cloud platform path optional primary"),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=blockThin;endFill=1;rounded=0;strokeWidth=2;endSize=4;startSize=4;dashed=0;strokeColor=#9E9E9E;",100,0,"","Secondary Path",null,"gcp google cloud platform path secondary"),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=blockThin;endFill=1;rounded=0;strokeWidth=2;endSize=4;startSize=4;dashed=1;dashPattern=1 3;strokeColor=#9E9E9E;", 100,0,"","Optional Secondary Path",null,"gcp google cloud platform path optional secondary"),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=blockThin;endFill=1;rounded=0;strokeWidth=2;endSize=4;startSize=4;strokeColor=#34A853;dashed=0;",100,0,"","Success Status",null,"gcp google cloud platform path success status"),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=blockThin;endFill=1;rounded=0;strokeWidth=2;endSize=4;startSize=4;strokeColor=#EA4335;dashed=0;", -100,0,"","Failure Status",null,"gcp google cloud platform path failure status")];this.addPalette("gcp2Paths","GCP / Paths",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2ZonesPalette=function(){var a=this,e="rounded=1;absoluteArcSize=1;arcSize=2;html=1;strokeColor=none;gradientColor=none;shadow=0;dashed=0;fontSize=12;fontColor=#9E9E9E;align=left;verticalAlign=top;spacing=10;spacingTop=-4;",d=[],d=[this.createVertexTemplateEntry(e+"fillColor=#ffffff;", -120,70,"User 1","User 1 (Default)",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone user").join(" ")),this.createVertexTemplateEntry(e+"fillColor=#F3E5F5;",120,150,"Infrastructure\nSystem","Infrastructure System",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone infrastructure system").join(" ")),this.createVertexTemplateEntry(e+"fillColor=#EFEBE9;",120,200,"colo / dc /\non-premises","colo / dc / on-premises",null,null, -this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone colo dc on premises").join(" ")),this.createVertexTemplateEntry(e+"fillColor=#F1F8E9;",120,70,"System 1","System 1",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone system").join(" ")),this.createVertexTemplateEntry(e+"fillColor=#FFEBEE;",120,70,"External SaaS\nProviders","External SaaS Providers",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone external saas providers").join(" ")), -this.createVertexTemplateEntry(e+"fillColor=#FFF8E1;",120,70,"External Data\nSources","External Data Sources",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone external data sources").join(" ")),this.createVertexTemplateEntry(e+"fillColor=#E0F2F1;",120,75,"External\nInfrastructure\n3<sup>rd</sup> Party","External Infrastructure 3rd party",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone external infrastructure 3rd party").join(" ")), -this.createVertexTemplateEntry(e+"fillColor=#E1F5FE;",120,75,"External\nInfrastructure\n1<sup>st</sup> Party","External Infrastructure 1st party",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone external infrastructure 1st party").join(" ")),this.addEntry("gcp google cloud platform zone project cloud service provider",function(){var b=new mxCell("Project Zone / Cloud Service Provider",new mxGeometry(0,0,530,490),e+"fillColor=#F6F6F6;");b.vertex=!0;var c=new mxCell("Logical Grouping of Services / Instances", -new mxGeometry(0,0,250,180),e+"fillColor=#E3F2FD;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(10,50);c.vertex=!0;b.insert(c);var d=new mxCell("Zone",new mxGeometry(0,0,230,120),e+"fillColor=#FFF3E0;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(10,50);d.vertex=!0;c.insert(d);c=new mxCell("SubNetwork",new mxGeometry(0,0,210,60),e+"fillColor=#EDE7F6;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(10,50);c.vertex=!0;d.insert(c);d=new mxCell("Kubernetes cluster",new mxGeometry(0, -0,250,120),e+"fillColor=#FCE4EC;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(10,240);d.vertex=!0;b.insert(d);c=new mxCell("pod",new mxGeometry(0,0,210,60),e+"fillColor=#E8F5E9;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(10,50);c.vertex=!0;d.insert(c);d=new mxCell("Account",new mxGeometry(0,0,250,60),e+"fillColor=#E8EAF6;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(10,370);d.vertex=!0;b.insert(d);d=new mxCell("Region",new mxGeometry(0,0,250,310),e+"fillColor=#ECEFF1;"); -d.geometry.relative=!0;d.geometry.offset=new mxPoint(270,50);d.vertex=!0;b.insert(d);c=new mxCell("Zone",new mxGeometry(0,0,230,250),e+"fillColor=#FFF3E0;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(10,50);c.vertex=!0;d.insert(c);d=new mxCell("Firewall",new mxGeometry(0,0,210,190),e+"fillColor=#FBE9E7;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(10,50);d.vertex=!0;c.insert(d);c=new mxCell("Instance Group",new mxGeometry(0,0,190,60),e+"fillColor=#F9FBE7;");c.geometry.relative= -!0;c.geometry.offset=new mxPoint(10,50);c.vertex=!0;d.insert(c);c=new mxCell("Replica Pool",new mxGeometry(0,0,190,60),e+"fillColor=#E0F7FA;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(10,120);c.vertex=!0;d.insert(c);d=new mxCell("Optional Component",new mxGeometry(0,0,250,60),"rounded=1;absoluteArcSize=1;arcSize=2;html=1;strokeColor=none;gradientColor=none;shadow=0;dashed=1;strokeColor=#4284F3;fontSize=12;fontColor=#9E9E9E;align=left;verticalAlign=top;spacing=10;spacingTop=-4;fillColor=none;dashPattern=1 2;strokeWidth=2;"); +100,0,"","Failure Status",null,"gcp google cloud platform path failure status")];this.addPalette("gcp2Paths","GCP / Paths",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2ZonesPalette=function(){var a=this,e="points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[1,0.25,0],[1,0.5,0],[1,0.75,0],[1,1,0],[0.75,1,0],[0.5,1,0],[0.25,1,0],[0,1,0],[0,0.75,0],[0,0.5,0],[0,0.25,0]];rounded=1;absoluteArcSize=1;arcSize=2;html=1;strokeColor=none;gradientColor=none;shadow=0;dashed=0;fontSize=12;fontColor=#9E9E9E;align=left;verticalAlign=top;spacing=10;spacingTop=-4;", +d=[],d=[this.createVertexTemplateEntry(e+"fillColor=#ffffff;",120,70,"User 1","User 1 (Default)",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone user").join(" ")),this.createVertexTemplateEntry(e+"fillColor=#F3E5F5;",120,150,"Infrastructure\nSystem","Infrastructure System",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone infrastructure system").join(" ")),this.createVertexTemplateEntry(e+"fillColor=#EFEBE9;",120,200, +"colo / dc /\non-premises","colo / dc / on-premises",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone colo dc on premises").join(" ")),this.createVertexTemplateEntry(e+"fillColor=#F1F8E9;",120,70,"System 1","System 1",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone system").join(" ")),this.createVertexTemplateEntry(e+"fillColor=#FFEBEE;",120,70,"External SaaS\nProviders","External SaaS Providers",null,null,this.getTagsForStencil("mxgraph.gcp2.zones", +"","gcp google cloud platform zone external saas providers").join(" ")),this.createVertexTemplateEntry(e+"fillColor=#FFF8E1;",120,70,"External Data\nSources","External Data Sources",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone external data sources").join(" ")),this.createVertexTemplateEntry(e+"fillColor=#E0F2F1;",120,75,"External\nInfrastructure\n3<sup>rd</sup> Party","External Infrastructure 3rd party",null,null,this.getTagsForStencil("mxgraph.gcp2.zones", +"","gcp google cloud platform zone external infrastructure 3rd party").join(" ")),this.createVertexTemplateEntry(e+"fillColor=#E1F5FE;",120,75,"External\nInfrastructure\n1<sup>st</sup> Party","External Infrastructure 1st party",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone external infrastructure 1st party").join(" ")),this.addEntry("gcp google cloud platform zone project cloud service provider",function(){var b=new mxCell("Project Zone / Cloud Service Provider", +new mxGeometry(0,0,530,490),e+"fillColor=#F6F6F6;");b.vertex=!0;var c=new mxCell("Logical Grouping of Services / Instances",new mxGeometry(0,0,250,180),e+"fillColor=#E3F2FD;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(10,50);c.vertex=!0;b.insert(c);var d=new mxCell("Zone",new mxGeometry(0,0,230,120),e+"fillColor=#FFF3E0;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(10,50);d.vertex=!0;c.insert(d);c=new mxCell("SubNetwork",new mxGeometry(0,0,210,60),e+"fillColor=#EDE7F6;");c.geometry.relative= +!0;c.geometry.offset=new mxPoint(10,50);c.vertex=!0;d.insert(c);d=new mxCell("Kubernetes cluster",new mxGeometry(0,0,250,120),e+"fillColor=#FCE4EC;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(10,240);d.vertex=!0;b.insert(d);c=new mxCell("pod",new mxGeometry(0,0,210,60),e+"fillColor=#E8F5E9;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(10,50);c.vertex=!0;d.insert(c);d=new mxCell("Account",new mxGeometry(0,0,250,60),e+"fillColor=#E8EAF6;");d.geometry.relative=!0;d.geometry.offset= +new mxPoint(10,370);d.vertex=!0;b.insert(d);d=new mxCell("Region",new mxGeometry(0,0,250,310),e+"fillColor=#ECEFF1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(270,50);d.vertex=!0;b.insert(d);c=new mxCell("Zone",new mxGeometry(0,0,230,250),e+"fillColor=#FFF3E0;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(10,50);c.vertex=!0;d.insert(c);d=new mxCell("Firewall",new mxGeometry(0,0,210,190),e+"fillColor=#FBE9E7;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(10,50);d.vertex= +!0;c.insert(d);c=new mxCell("Instance Group",new mxGeometry(0,0,190,60),e+"fillColor=#F9FBE7;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(10,50);c.vertex=!0;d.insert(c);c=new mxCell("Replica Pool",new mxGeometry(0,0,190,60),e+"fillColor=#E0F7FA;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(10,120);c.vertex=!0;d.insert(c);d=new mxCell("Optional Component",new mxGeometry(0,0,250,60),"rounded=1;absoluteArcSize=1;arcSize=2;html=1;strokeColor=none;gradientColor=none;shadow=0;dashed=1;strokeColor=#4284F3;fontSize=12;fontColor=#9E9E9E;align=left;verticalAlign=top;spacing=10;spacingTop=-4;fillColor=none;dashPattern=1 2;strokeWidth=2;"); d.geometry.relative=!0;d.geometry.offset=new mxPoint(270,370);d.vertex=!0;b.insert(d);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Project Zone / Cloud Service Provider")}),this.createVertexTemplateEntry("fillColor=#4DA1F5;strokeColor=none;shadow=1;gradientColor=none;fontSize=14;align=left;spacingLeft=50;fontColor=#ffffff;",1E3,40,"Architecture: App Engine and Cloud Endpoints","Title bar",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone title bar").join(" ")), this.createVertexTemplateEntry("fillColor=#ffffff;strokeColor=none;shadow=0;gradientColor=none;fontSize=11;align=left;spacing=10;fontColor=#;9E9E9E;verticalAlign=top;spacingTop=100;",300,350,"Use this note to call out\nor clarify parts of a diagram","Note",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone note").join(" ")),this.addEntry("gcp google cloud platform zone project",function(){var b=new mxCell("<b>Google </b>Cloud Platform",new mxGeometry(0,0,650, 350),"fillColor=#F6F6F6;strokeColor=none;shadow=0;gradientColor=none;fontSize=14;align=left;spacing=10;fontColor=#717171;9E9E9E;verticalAlign=top;spacingTop=-4;fontStyle=0;spacingLeft=40;html=1;");b.vertex=!0;var c=new mxCell("",new mxGeometry(0,0,23,20),"shape=mxgraph.gcp2.google_cloud_platform;fillColor=#F6F6F6;strokeColor=none;shadow=0;gradientColor=none;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(20,10);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width, -b.geometry.height,"Project Zone")}),this.addEntry("gcp google cloud platform zone markers",function(){e="shape=ellipse;fillColor=#ffffff;strokeColor=#BDBDBD;strokeWidth=2;shadow=0;gradientColor=none;fontColor=#757575;align=center;html=1;fontStyle=1;spacingTop=-1;";var b=new mxCell("1",new mxGeometry(0,0,20,20),e);b.vertex=!0;var c=new mxCell("2",new mxGeometry(40,0,20,20),e);c.vertex=!0;var d=new mxCell("3",new mxGeometry(80,0,20,20),e);d.vertex=!0;var g=new mxCell("4",new mxGeometry(120,0,20,20), -e);g.vertex=!0;var h=new mxCell("5",new mxGeometry(160,0,20,20),e);h.vertex=!0;var k=new mxCell("6",new mxGeometry(200,0,20,20),e);k.vertex=!0;var l=new mxCell("7",new mxGeometry(240,0,20,20),e);l.vertex=!0;var m=new mxCell("Markers to be used with the legend",new mxGeometry(0,20,260,30),"strokeColor=none;fillColor=none;fontColor=#757575;align=left;html=1;fontStyle=0;fontSize=11;");m.vertex=!0;return a.createVertexTemplateFromCells([b,c,d,g,h,k,l,m],260,50,"Markers")}),this.addEntry("gcp google cloud platform zone markers", -function(){var b=new mxCell("",new mxGeometry(0,0,600,70),"fillColor=#ffffff;strokeColor=#BDBDBD;strokeWidth=1;shadow=0;gradientColor=none;");b.vertex=!0;var c=new mxCell("1 Commit code",new mxGeometry(0,0,200,30),"strokeColor=none;fillColor=none;fontColor=#757575;align=left;html=1;fontStyle=0;spacingLeft=5;fontSize=11;verticalAlign=top;whiteSpace=wrap;spacingRight=5;");c.geometry.relative=!0;c.vertex=!0;b.insert(c);c=new mxCell("2 Detect code change",new mxGeometry(0,0,200,30),"strokeColor=none;fillColor=none;fontColor=#757575;align=left;html=1;fontStyle=0;spacingLeft=5;fontSize=11;verticalAlign=top;whiteSpace=wrap;spacingRight=5;"); -c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,30);c.vertex=!0;b.insert(c);c=new mxCell("3 Build immutable image",new mxGeometry(0,0,200,30),"strokeColor=none;fillColor=none;fontColor=#757575;align=left;html=1;fontStyle=0;spacingLeft=5;fontSize=11;verticalAlign=top;whiteSpace=wrap;spacingRight=5;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(200,0);c.vertex=!0;b.insert(c);c=new mxCell("4 Launch test instance from image",new mxGeometry(0,0,200,30),"strokeColor=none;fillColor=none;fontColor=#757575;align=left;html=1;fontStyle=0;spacingLeft=5;fontSize=11;verticalAlign=top;whiteSpace=wrap;spacingRight=5;"); -c.geometry.relative=!0;c.geometry.offset=new mxPoint(200,30);c.vertex=!0;b.insert(c);c=new mxCell("5 Run tests",new mxGeometry(0,0,200,30),"strokeColor=none;fillColor=none;fontColor=#757575;align=left;html=1;fontStyle=0;spacingLeft=5;fontSize=11;verticalAlign=top;whiteSpace=wrap;spacingRight=5;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(400,0);c.vertex=!0;b.insert(c);c=new mxCell("6 Perform rolling update of image to autoscaler",new mxGeometry(0,0,200,30),"strokeColor=none;fillColor=none;fontColor=#757575;align=left;html=1;fontStyle=0;spacingLeft=5;fontSize=11;verticalAlign=top;whiteSpace=wrap;spacingRight=5;"); -c.geometry.relative=!0;c.geometry.offset=new mxPoint(400,30);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Markers")})];this.addPalette("gcp2Zones","GCP / Zones",!1,mxUtils.bind(this,function(a){for(var b=0;b<d.length;b++)a.appendChild(d[b](a))}))};Sidebar.prototype.addGCP2ServiceCardsPalette=function(){var a=[];this.addGCP2ServiceCard("Gateway","gateway",100,44,"gcp google cloud platform service cards gateway",a);this.addGCP2ServiceCard("Memcache", -"memcache",110,44,"gcp google cloud platform service cards memcache",a);this.addGCP2ServiceCard("Logs API","logs_api",100,44,"gcp google cloud platform service cards logs api application programming interface",a);this.addGCP2ServiceCard("Cluster","cluster",90,44,"gcp google cloud platform service cards cluster",a);this.addGCP2ServiceCard("NAT","nat",80,44,"gcp google cloud platform service cards nat network address translation",a);this.addGCP2ServiceCard("Squid Proxy","squid_proxy",120,44,"gcp google cloud platform service cards squid proxy", -a);this.addGCP2ServiceCard("Bucket","bucket",100,44,"gcp google cloud platform service cards bucket",a);this.addGCP2ServiceCard("Service Discovery","service_discovery",150,44,"gcp google cloud platform service cards service discovery",a);this.addGCP2ServiceCard("Task\nQueues","task_queues",90,44,"gcp google cloud platform service cards task queues",a);this.addGCP2ServiceCard("Image\nServices","image_services",100,44,"gcp google cloud platform service cards image services",a);this.addGCP2ServiceCard("Dedicated\nGame Server", -"dedicated_game_server",120,44,"gcp google cloud platform service cards dedicated game server",a);this.addGCP2ServiceCard("Frontend\nPlatform Services","frontend_platform_services",150,44,"gcp google cloud platform service cards frontend platform services",a);this.addGCP2ServiceCard("Google\nEdge POP","google_network_edge_cache",110,56,"gcp google cloud platform service cards google edge pop point of presence",a);this.addGCP2ServiceCard("External\nPayment Form","external_payment_form",130,44,"gcp google cloud platform service cards external payment form", -a);this.addGCP2ServiceCard("Internal Payment\nAuthorization","internal_payment_authorization",150,44,"gcp google cloud platform service cards internal payment authorization",a);this.addGCP2ServiceCard("VPN Gateway","gateway",130,44,"gcp google cloud platform service cards vpn gateway virtual private network",a);this.addGCP2ServiceCard("Application\nSystem(s)","application_system",110,44,"gcp google cloud platform service cards application system systems",a);this.addGCP2ServiceCard("Virtual\nFile System", -"virtual_file_system",110,44,"gcp google cloud platform service cards virtual file system",a);this.addGCP2ServiceCard("CDN\nInterconnect","google_network_edge_cache",120,44,"gcp google cloud platform service cards cdn content delivery network interconnect",a);this.addGCP2ServiceCard("Scheduled\nTasks","scheduled_tasks",110,44,"gcp google cloud platform service cards scheduled tasks",a);this.addGCP2ServiceCard("HTTPS\nLoad Balancer","network_load_balancer",130,44,"gcp google cloud platform service cards https secure load balancer", -a);this.addGCP2ServiceCard("Persistent\nDisk Snapshot","persistent_disk_snapshot",130,44,"gcp google cloud platform service cards persistent disk snapshot",a);this.addGCP2ServiceCard("Persistent\nDisk","persistent_disk_snapshot",110,44,"gcp google cloud platform service cards persistent disk",a);this.addGCP2ServiceCard("Network\nLoad\nBalancer","network_load_balancer",100,56,"gcp google cloud platform service cards network load balancer",a);this.addGCP2ServiceCard("Google\n Network W/\nEdge Cache", -"google_network_edge_cache",120,56,"gcp google cloud platform service cards google network witch edge cache",a);this.addGCP2ServiceCard("Push\nNotification\nService","push_notification_service",110,56,"gcp google cloud platform service cards push notification service",a);this.addGCP2ServiceCard("Blank One Line","blank",140,44,"gcp google cloud platform service cards blank one line",a);a.push(this.addEntry("gcp google cloud platform service cards blank one line",function(){var a=new mxCell("Blank One Line", -new mxGeometry(0,0,100,44),"dashed=0;strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;labelPosition=center;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#000000;fontSize=12;");a.vertex=!0;return sb.createVertexTemplateFromCells([a],100,44,"Blank One Line")}));this.addGCP2ServiceCard("Blank Two\n& Three Line","blank",120,44,"gcp google cloud platform service cards blank two and three line",a);a.push(this.addEntry("gcp google cloud platform service cards blank two and three line", -function(){var a=new mxCell("Blank Two\n& Three Line",new mxGeometry(0,0,90,44),"dashed=0;strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;labelPosition=center;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#000000;fontSize=12;");a.vertex=!0;return sb.createVertexTemplateFromCells([a],100,44,"Blank One Line")}));this.addPalette("gcp2Service Cards","GCP / Service Cards",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))}; -Sidebar.prototype.addGCP2ComputePalette=function(){var a=[];this.addGCP2CardSet("Compute\nEngine","compute_engine",110,160,"gcp google cloud platform compute compute engine",a);this.addGCP2CardSet("GPU","gpu",90,100,"gcp google cloud platform compute gpu graphics processing unit",a);this.addGCP2CardSet("App\nEngine","app_engine",100,130,"gcp google cloud platform compute app engine application",a);this.addGCP2CardSet("Cloud\nFunctions","cloud_functions",120,150,"gcp google cloud platform compute functions", -a);this.addGCP2CardSet("Kubernetes\nEngine","container_engine",130,170,"gcp google cloud platform compute kubernetes engine",a);this.addGCP2CardSet("Container-\nOptimized OS","container_optimized_os",140,200,"gcp google cloud platform compute container optimized os operating system",a);this.addPalette("gcp2Compute","GCP / Compute",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2APIPlatformEcosystemsPalette=function(){var a=[];this.addGCP2CardSet("API\nAnalytics", -"api_analytics",110,140,"gcp google cloud platform api ecosystems api analytics application programming interface",a);this.addGCP2CardSet("Apigee\nSense","apigee_sense",100,140,"gcp google cloud platform api ecosystems apigee sense",a);this.addGCP2CardSet("API\nMonetization","api_monetization",130,160,"gcp google cloud platform api ecosystems api monetization application programming interface",a);this.addGCP2CardSet("Cloud\nEndpoints","cloud_endpoints",120,150,"gcp google cloud platform api ecosystems cloud endpoints", -a);this.addGCP2CardSet("Apigee API\nPlatform","apigee_api_platform",130,170,"gcp google cloud platform api ecosystems apigee api platform application programming interface",a);this.addGCP2CardSet("Developer\nPortal","developer_portal",120,160,"gcp google cloud platform api ecosystems developer portal",a);this.addPalette("gcp2API Platform and Ecosystems","GCP / API Platform and Ecosystems",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2IdentitySecurityPalette= -function(){var a=[];this.addGCP2CardSet("Cloud\nIAM","cloud_iam",100,120,"gcp google cloud platform identity security cloud iam",a);this.addGCP2CardSet("BeyondCorp","beyondcorp",130,130,"gcp google cloud platform identity security beyondcorp",a);this.addGCP2CardSet("Cloud Resource\nManager","cloud_iam",150,200,"gcp google cloud platform identity security cloud resource manager",a);this.addGCP2CardSet("Data Loss\nPrevention API","data_loss_prevention_api",140,200,"gcp google cloud platform identity security data loss prevention api application programming interface", -a);this.addGCP2CardSet("Cloud Security\nScanner","cloud_security_scanner",140,190,"gcp google cloud platform identity security cloud security scanner",a);this.addGCP2CardSet("Key Management\nService","key_management_service",160,200,"gcp google cloud platform identity security key management service",a);this.addGCP2CardSet("Identity-Aware\nProxy","identity_aware_proxy",140,180,"gcp google cloud platform identity security identity aware proxy",a);this.addGCP2CardSet("Security Key\nEnforcement","security_key_enforcement", -130,200,"gcp google cloud platform identity security security key enforcement",a);this.addPalette("gcp2Identity and Security","GCP / Identity and Security",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2BigDataPalette=function(){var a=[];this.addGCP2CardSet("BigQuery","bigquery",120,120,"gcp google cloud platform big data bigquery",a);this.addGCP2CardSet("Cloud\nDatalab","cloud_datalab",110,140,"gcp google cloud platform big data datalab", -a);this.addGCP2CardSet("Cloud\nDataflow","cloud_dataflow",110,150,"gcp google cloud platform big data dataflow",a);this.addGCP2CardSet("Cloud\nPub/Sub","cloud_pubsub",110,150,"gcp google cloud platform big data pub sub",a);this.addGCP2CardSet("Cloud\nDataproc","cloud_dataproc",110,150,"gcp google cloud platform big data dataproc",a);this.addGCP2CardSet("Genomics","genomics",120,120,"gcp google cloud platform big data genomics",a);this.addGCP2CardSet("Cloud\nDataprep","cloud_dataprep",110,150,"gcp google cloud platform big data dataprep", -a);this.addGCP2CardSet("Data\nStudio","data_studio",100,130,"gcp google cloud platform big data data studio",a);this.addPalette("gcp2Big Data","GCP / Big Data",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2DataTransferPalette=function(){var a=[];this.addGCP2CardSet("Transfer\nAppliance","transfer_appliance",120,170,"gcp google cloud platform data transfer appliance",a);this.addPalette("gcp2Data Transfer","GCP / Data Transfer",!1,mxUtils.bind(this, -function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2CloudAIPalette=function(){var a=[];this.addGCP2CardSet("Cloud Machine\nLearning","cloud_machine_learning",150,200,"gcp google cloud platform ai artificial intelligence cloud machine learning",a);this.addGCP2CardSet("Natural\nLanguage API","cloud_natural_language_api",140,180,"gcp google cloud platform ai artificial intelligence natural language api application programming interface",a);this.addGCP2CardSet("Vision\nAPI", -"cloud_vision_api",100,120,"gcp google cloud platform ai artificial intelligence vision api application programming interface",a);this.addGCP2CardSet("Translation\nAPI","cloud_translation_api",120,150,"gcp google cloud platform ai artificial intelligence translation api application programming interface",a);this.addGCP2CardSet("Speech\nAPI","cloud_speech_api",110,130,"gcp google cloud platform ai artificial intelligence speech api application programming interface",a);this.addGCP2CardSet("Jobs\nAPI", -"cloud_jobs_api",90,110,"gcp google cloud platform ai artificial intelligence jobs api application programming interface",a);this.addGCP2CardSet("Cloud Video\nIntelligence API","cloud_video_intelligence_api",150,220,"gcp google cloud platform ai artificial intelligence cloud video intelligence api application programming interface",a);this.addGCP2CardSet("Advanced\nSolutions Lab","advanced_solutions_lab",140,200,"gcp google cloud platform ai artificial intelligence advanced solutions lab",a);this.addPalette("gcp2Cloud AI", -"GCP / Cloud AI",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2InternetOfThingsPalette=function(){var a=[];this.addGCP2CardSet("Cloud\nIoT Core","cloud_iot_core",110,150,"gcp google cloud platform iot internet of things core",a);this.addPalette("gcp2Internet of Things","GCP / Internet of Things",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2StorageDatabasesPalette=function(){var a= -[];this.addGCP2CardSet("Cloud\nStorage","cloud_storage",110,140,"gcp google cloud platform storage databases ",a);this.addGCP2CardSet("Cloud\nSQL","cloud_sql",100,120,"gcp google cloud platform storage databases sql",a);this.addGCP2CardSet("Cloud\nBigtable","cloud_bigtable",110,140,"gcp google cloud platform storage databases bigtable",a);this.addGCP2CardSet("Cloud\nSpanner","cloud_spanner",110,150,"gcp google cloud platform storage databases spanner",a);this.addGCP2CardSet("Cloud\nDatastore","cloud_datastore", -120,150,"gcp google cloud platform storage databases datastore",a);this.addGCP2CardSet("Persistent\nDisk","persistent_disk",120,150,"gcp google cloud platform storage databases persistent disk",a);this.addGCP2CardSet("Cloud\nMemorystore","cloud_memorystore",140,170,"gcp google cloud platform storage databases memorystore",a);this.addGCP2CardSet("Cloud\nFilestore","cloud_filestore",110,150,"gcp google cloud platform storage databases filestore",a);this.addPalette("gcp2Storage and Databases","GCP / Storage and Databases", -!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2ManagementToolsPalette=function(){var a=[];this.addGCP2CardSet("Stackdriver","stackdriver",130,130,"gcp google cloud platform management tools stackdriver",a);this.addGCP2CardSet("Debugger","debugger",120,120,"gcp google cloud platform management tools debugger",a);this.addGCP2CardSet("Monitoring","cloud_deployment_manager",120,120,"gcp google cloud platform management tools monitoring", -a);this.addGCP2CardSet("Deployment\nManager","cloud_deployment_manager",130,180,"gcp google cloud platform management tools deployment manager",a);this.addGCP2CardSet("Logging","logging",110,110,"gcp google cloud platform management tools logging",a);this.addGCP2CardSet("Cloud\nConsole","placeholder",110,140,"gcp google cloud platform management tools console",a);this.addGCP2CardSet("Error\nReporting","error_reporting",120,150,"gcp google cloud platform management tools error reporting",a);this.addGCP2CardSet("Cloud\nShell", -"placeholder",100,130,"gcp google cloud platform management tools shell",a);this.addGCP2CardSet("Trace","trace",100,100,"gcp google cloud platform management tools trace",a);this.addGCP2CardSet("Cloud\nMobile App","placeholder",130,160,"gcp google cloud platform management tools mobile app",a);this.addGCP2CardSet("Profiler","profiler",110,110,"gcp google cloud platform management tools profiler",a);this.addGCP2CardSet("Billing\nAPI","placeholder",100,120,"gcp google cloud platform management tools billing api application programming interface", -a);this.addGCP2CardSet("Cloud\nAPIs","cloud_apis",100,130,"gcp google cloud platform management tools api application programming interface",a);this.addPalette("gcp2Management Tools","GCP / Management Tools",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2NetworkingPalette=function(){var a=[];this.addGCP2CardSet("Virtual\nPrivate Cloud","virtual_private_cloud",140,180,"gcp google cloud platform networking virtual private",a);this.addGCP2CardSet("Dedicated\nInterconnect", -"dedicated_interconnect",130,190,"gcp google cloud platform networking dedicated interconnect",a);this.addGCP2CardSet("Cloud Load\nBalancing","cloud_load_balancing",130,180,"gcp google cloud platform networking load balancing",a);this.addGCP2CardSet("Cloud \nDNS","cloud_dns",100,130,"gcp google cloud platform networking dns domain name server",a);this.addGCP2CardSet("Cloud \nCDN","cloud_cdn",100,130,"gcp google cloud platform networking cdn content delivery network",a);this.addGCP2CardSet("Cloud\nNetwork", -"cloud_network",110,140,"gcp google cloud platform networking network",a);this.addGCP2CardSet("Cloud External\nIP Addresses","cloud_external_ip_addresses",150,220,"gcp google cloud platform networking external ip addresses internet protocol",a);this.addGCP2CardSet("Cloud\nRoutes","cloud_routes",100,140,"gcp google cloud platform networking routes",a);this.addGCP2CardSet("Cloud\nFirewall Rules","cloud_firewall_rules",140,170,"gcp google cloud platform networking firewall rules",a);this.addGCP2CardSet("Cloud\nVPN", -"cloud_vpn",100,120,"gcp google cloud platform networking vpn virtual private network",a);this.addGCP2CardSet("Cloud\nRouter","cloud_router",100,140,"gcp google cloud platform networking router",a);this.addGCP2CardSet("Cloud\nArmor","cloud_armor",100,130,"gcp google cloud platform networking armor",a);this.addGCP2CardSet("Standard\nNetwork Tier","standard_network_tier",130,180,"gcp google cloud platform networking standard network tier",a);this.addGCP2CardSet("Premium\nNetwork Tier","premium_network_tier", -130,180,"gcp google cloud platform networking premium network tier",a);this.addGCP2CardSet("Partner\nInterconnect","partner_interconnect",130,180,"gcp google cloud platform networking partner interconnect",a);this.addPalette("gcp2Networking","GCP / Networking",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2DeveloperToolsPalette=function(){var a=[];this.addGCP2CardSet("Cloud\nSDK","placeholder",100,120,"gcp google cloud platform dev developer tools sdk software development kit", -a);this.addGCP2CardSet("Cloud\nBuild","container_builder",100,130,"gcp google cloud platform dev developer tools build",a);this.addGCP2CardSet("Deployment\nManager","cloud_deployment_manager",130,180,"gcp google cloud platform dev developer tools deployment manager",a);this.addGCP2CardSet("Cloud Tools for\nVisual Studio","cloud_tools_for_powershell",150,220,"gcp google cloud platform dev developer tools tools for visual studio",a);this.addGCP2CardSet("Cloud Source\nRepositories","placeholder",140, -210,"gcp google cloud platform dev developer tools cloud source repositories",a);this.addGCP2CardSet("Maven App\nEngine Plugin","placeholder",140,200,"gcp google cloud platform dev developer tools maven app engine plugin",a);this.addGCP2CardSet("Cloud Tools\nfor Eclipse","placeholder",130,190,"gcp google cloud platform dev developer tools tools for eclipse",a);this.addGCP2CardSet("Cloud Tools\nfor IntelliJ","placeholder",130,180,"gcp google cloud platform dev developer tools tools for intellij",a); -this.addGCP2CardSet("Cloud\nTest Lab","placeholder",110,150,"gcp google cloud platform dev developer tools test lab",a);this.addGCP2CardSet("Cloud Tools for\nPowerShell","cloud_tools_for_powershell",150,210,"gcp google cloud platform dev developer tools tools for powershell",a);this.addGCP2CardSet("IDE Plugins","cloud_tools_for_powershell",130,130,"gcp google cloud platform dev developer tools ide plugins integrated development environment",a);this.addGCP2CardSet("Container\nRegistry","container_registry", -120,160,"gcp google cloud platform dev developer tools container registry",a);this.addGCP2CardSet("Gradle App\nEnginge Plugin","placeholder",150,210,"gcp google cloud platform dev developer tools gradle app engine plugin application",a);this.addPalette("gcp2Developer Tools","GCP / Developer Tools",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2ExpandedProductCardsPalette=function(){var a=[];this.addGCP2ExpandedProductCardSet("Compute Engine", -"compute_engine",150,"gcp google cloud platform expanded product cards compute engine",a);this.addGCP2ExpandedProductCardSet("BigQuery","bigquery",140,"gcp google cloud platform expanded product cards bigquery",a);this.addGCP2ExpandedProductCardSet("App Engine","app_engine",140,"gcp google cloud platform expanded product cards app application engine",a);this.addGCP2ExpandedProductCardSet("Cloud Dataflow","cloud_dataflow",150,"gcp google cloud platform expanded product cards cloud dataflow",a);this.addGCP2ExpandedProductCardSet("Kubernetes Engine", -"container_engine",170,"gcp google cloud platform expanded product cards kubernetes engine",a);this.addGCP2ExpandedProductCardSet("Cloud Storage","cloud_storage",140,"gcp google cloud platform expanded product cards cloud storage",a);this.addGCP2ExpandedProductCardSet("Cloud Bigtable","cloud_bigtable",140,"gcp google cloud platform expanded product cards cloud bigtable",a);this.addGCP2ExpandedProductCardSet("Cloud Pub/Sub","cloud_pubsub",150,"gcp google cloud platform expanded product cards cloud pub sub", -a);this.addGCP2ExpandedProductCardSet("Cloud SQL","cloud_sql",140,"gcp google cloud platform expanded product cards cloud sql",a);this.addGCP2ExpandedMachineCard("App Engine","app_engine_icon",1,.84,"10GB PD","1","modifiers_standard_machine","1","modifiers_storage","1","modifiers_autoscaling",150,"gcp google cloud platform expanded product cards app engine machine",a);this.addGCP2ExpandedMachineCard("Cloud Dataflow","cloud_dataflow_icon",.72,1,"10GB PD","1","modifiers_standard_machine","1","modifiers_storage", -"1","modifiers_autoscaling",150,"gcp google cloud platform expanded product cards app engine machine",a);this.addGCP2ExpandedMachineCard("Kubernetes Engine","container_engine_icon",.88,1,"10GB PD","1","modifiers_standard_machine","1","modifiers_storage","1","modifiers_autoscaling",150,"gcp google cloud platform expanded product cards app engine machine",a);this.addGCP2ExpandedMachineCard("Cloud Dataproc","cloud_dataproc_icon",1,.92,"10GB PD","1","modifiers_standard_machine","1","modifiers_storage", -"1","modifiers_autoscaling",150,"gcp google cloud platform expanded product cards app engine machine",a);this.addGCP2ExpandedMachineCard("Compute Engine","compute_engine_icon",1,1,"10GB PD","1","modifiers_standard_machine","1","modifiers_storage","1","modifiers_autoscaling",150,"gcp google cloud platform expanded product cards app engine machine",a);this.addPalette("gcp2Expanded Product Cards","GCP / Expanded Product Cards",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))}; -Sidebar.prototype.addGCP2UserDeviceCardsPalette=function(){var a=[];this.addGCP2UserDeviceCard("Application","application",1,.8,0,"gcp google cloud platform user and device cards application",a);this.addGCP2UserDeviceCard("Beacon","beacon",.73,1,0,"gcp google cloud platform user and device cards beacon",a);this.addGCP2UserDeviceCard("Circuit-Board","circuit_board",1,.9,15,"gcp google cloud platform user and device cards circuit board",a);this.addGCP2UserDeviceCard("Database","database",1,.9,0,"gcp google cloud platform user and device cards database db", -a);this.addGCP2UserDeviceCard("Desktop","desktop",1,.9,0,"gcp google cloud platform user and device cards desktop",a);this.addGCP2UserDeviceCard("Desktop and Mobile","desktop_and_mobile",1,.66,15,"gcp google cloud platform user and device cards desktop and mobile",a);this.addGCP2UserDeviceCard("Game","game",1,.54,0,"gcp google cloud platform user and device cards game",a);this.addGCP2UserDeviceCard("Gateway","gateway_icon",1,.44,0,"gcp google cloud platform user and device cards gateway icon",a); -this.addGCP2UserDeviceCard("Laptop","laptop",1,.66,0,"gcp google cloud platform user and device cards laptop",a);this.addGCP2UserDeviceCard("Lightbulb","lightbulb",.7,1,0,"gcp google cloud platform user and device cards lighbulb",a);this.addGCP2UserDeviceCard("List","list",.89,1,0,"gcp google cloud platform user and device cards list",a);this.addGCP2UserDeviceCard("Live","live",.74,1,0,"gcp google cloud platform user and device cards live",a);this.addGCP2UserDeviceCard("Local-Compute","compute_engine_icon", -1,.89,15,"gcp google cloud platform user and device cards local compute",a);this.addGCP2UserDeviceCard("Mobile Devices","mobile_devices",1,.73,15,"gcp google cloud platform user and device cards mobile devices",a);this.addGCP2UserDeviceCard("Payment","payment",1,.8,0,"gcp google cloud platform user and device cards payment",a);this.addGCP2UserDeviceCard("Phone","phone",.64,1,0,"gcp google cloud platform user and device cards phone",a);this.addGCP2UserDeviceCard("Record","record",1,.66,0,"gcp google cloud platform user and device cards record", -a);this.addGCP2UserDeviceCard("Report","report",1,1,0,"gcp google cloud platform user and device cards report",a);this.addGCP2UserDeviceCard("Retail","retail",1,.89,0,"gcp google cloud platform user and device cards retail",a);this.addGCP2UserDeviceCard("Speaker","speaker",.7,1,0,"gcp google cloud platform user and device cards speaker",a);this.addGCP2UserDeviceCard("Storage","storage",1,.8,0,"gcp google cloud platform user and device cards storage",a);this.addGCP2UserDeviceCard("Stream","stream", -1,.82,0,"gcp google cloud platform user and device cards stream",a);this.addGCP2UserDeviceCard("Users","users",1,.63,0,"gcp google cloud platform user and device cards users",a);this.addGCP2UserDeviceCard("Webcam","webcam",.5,1,0,"gcp google cloud platform user and device cards webcam",a);this.addPalette("gcp2User Device Cards","GCP / User and Device Cards",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2ProductCardsPalette=function(){var a= -[];this.addGCP2ProductCardSet("Kubernetes","kubernetes_logo",1,.97,130,130,"gcp google cloud platform product kubernetes",a);this.addGCP2ProductCardSet("TensorFlow","tensorflow_logo",.94,1,130,130,"gcp google cloud platform product tensorflow",a);this.addGCP2ProductCardSet("Forseti\nSecurity","forseti_logo",.98,1,110,150,"gcp google cloud platform product forseti",a);this.addGCP2ProductCardSet("Istio","istio_logo",.67,1,80,90,"gcp google cloud platform product forseti",a);this.addGCP2ProductCardSet("Firebase", -"firebase",.72,1,100,100,"gcp google cloud platform product firebase",a);this.addGCP2ProductCardSet("Fastly","fastly",1,.39,100,100,"gcp google cloud platform product fastly",a);this.addGCP2ProductCardSet("AdMob","admob",1,1,110,110,"gcp google cloud platform product admob",a);this.addGCP2ProductCardSet("Google Play\nGame Services","google_play_game_service",1,.69,150,220,"gcp google cloud platform product google play game services",a);this.addGCP2ProductCardSet("Campaign\nManager","campaign_manager", -1,1,120,170,"gcp google cloud platform product campaign manager",a);this.addGCP2ProductCardSet("Google\nAnalytics","google_analytics",1,1,120,160,"gcp google cloud platform product google analytics",a);this.addGCP2ProductCardSet("Google\nAds","google_ads",1,1,100,130,"gcp google cloud platform product google ads",a);this.addGCP2ProductCardSet("Avere Physical\nAppliance","avere",1,.33,150,200,"gcp google cloud platform product avere physical appliance",a);this.addGCP2ProductCardSet("Google\nAnalytics 360", -"google_analytics_360",1,.98,140,180,"gcp google cloud platform product google analytics 360",a);this.addGCP2ProductCardSet("Google Ad\nManager","google_ad_manager",1,1,120,170,"gcp google cloud platform product google ad manager",a);this.addPalette("gcp2Product Cards","GCP / Product Cards",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2CardSet=function(a,e,d,b,c,f){var g=this,h="dashed=0;connectable=0;html=1;fillColor=#5184F3;strokeColor=none;"+ -mxConstants.STYLE_SHAPE+"=mxgraph.gcp2.",k=a.replace("\n"," "),k=k.replace("- ","-");f.push(this.addEntry(c,function(){var b=new mxCell("",new mxGeometry(0,0,d,60),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;");b.vertex=!0;var c=new mxCell(a,new mxGeometry(0,.5,44,39),h+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#999999;fontSize=12;");c.geometry.relative=!0;c.geometry.offset= -new mxPoint(5,-19.5);c.vertex=!0;b.insert(c);return g.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,k)}));f.push(this.addEntry(c,function(){var a=new mxCell("",new mxGeometry(0,0,b,60),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;");a.vertex=!0;var c=new mxCell('<font color="#000000">Name</font><br>'+k,new mxGeometry(0,.5,44,39),h+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#999999;fontSize=12;"); -c.geometry.relative=!0;c.geometry.offset=new mxPoint(5,-19.5);c.vertex=!0;a.insert(c);return g.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,k)}));f.push(this.addEntry(c,function(){var a=new mxCell("",new mxGeometry(0,0,b+8,68),"shape=mxgraph.gcp2.doubleRect;strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;");a.vertex=!0;var c=new mxCell('<font color="#000000">Name</font><br>'+k,new mxGeometry(0,.5,44,39),h+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#999999;fontSize=12;"); -c.geometry.relative=!0;c.geometry.offset=new mxPoint(5,-19.5);c.vertex=!0;a.insert(c);return g.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,k)}))};Sidebar.prototype.addGCP2ProductCardSet=function(a,e,d,b,c,f,g,h){var k=this,l="dashed=0;connectable=0;html=1;fillColor=#5184F3;strokeColor=none;"+mxConstants.STYLE_SHAPE+"=mxgraph.gcp2.",m=a.replace("\n"," "),m=m.replace("- ","-");h.push(this.addEntry(g,function(){var f=new mxCell("",new mxGeometry(0,0,c,60),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;"); -f.vertex=!0;var g=new mxCell(a,new mxGeometry(0,0,45*d,45*b),l+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#999999;fontSize=12;");g.geometry.relative=!0;g.geometry.offset=new mxPoint(5,7+22.5*(1-b));g.vertex=!0;f.insert(g);return k.createVertexTemplateFromCells([f],f.geometry.width,f.geometry.height,m)}));h.push(this.addEntry(g,function(){var a=new mxCell("",new mxGeometry(0,0,f,60),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;"); -a.vertex=!0;var c=new mxCell('<font color="#000000">Name</font><br>'+m,new mxGeometry(0,0,45*d,45*b),l+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#999999;fontSize=12;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(5,7+22.5*(1-b));c.vertex=!0;a.insert(c);return k.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,m)}));h.push(this.addEntry(g,function(){var a=new mxCell("",new mxGeometry(0,0,f+8,68),"shape=mxgraph.gcp2.doubleRect;strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;"); -a.vertex=!0;var c=new mxCell('<font color="#000000">Name</font><br>'+m,new mxGeometry(0,0,45*d,45*b),l+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#999999;fontSize=12;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(5,7+22.5*(1-b));c.vertex=!0;a.insert(c);return k.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,m)}))};Sidebar.prototype.addGCP2ServiceCard=function(a,e,d,b,c,f){var g=this,h="dashed=0;connectable=0;html=1;fillColor=#757575;strokeColor=none;"+ -mxConstants.STYLE_SHAPE+"=mxgraph.gcp2.",k=a.replace("\n"," "),k=k.replace("- ","-");f.push(this.addEntry(c,function(){var c=new mxCell("",new mxGeometry(0,0,d,b),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;");c.vertex=!0;var f=new mxCell(a,new mxGeometry(0,.5,32,32),h+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#000000;fontSize=12;");f.geometry.relative=!0;f.geometry.offset= -new mxPoint(5,-16);f.vertex=!0;c.insert(f);return g.createVertexTemplateFromCells([c],d,b,k)}))};Sidebar.prototype.addGCP2ExpandedProductCardSet=function(a,e,d,b,c){var f=this,g="dashed=0;connectable=0;html=1;fillColor=#5184F3;strokeColor=none;"+mxConstants.STYLE_SHAPE+"=mxgraph.gcp2.",h=a.replace("\n"," "),h=h.replace("- ","-");c.push(this.addEntry(b,function(){var a=new mxCell("",new mxGeometry(0,0,d,70),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;"); -a.vertex=!0;var b=new mxCell('<font color="#000000">Name</font><br>'+h+'<hr><font style="font-size: 11px">Attribute Name</font>',new mxGeometry(0,0,44,39),g+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=top;spacingLeft=5;fontColor=#999999;fontSize=12;spacingTop=-8;");b.geometry.relative=!0;b.geometry.offset=new mxPoint(5,7);b.vertex=!0;a.insert(b);return f.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,h)}));c.push(this.addEntry(b,function(){var a= -new mxCell("",new mxGeometry(0,0,d+8,78),"shape=mxgraph.gcp2.doubleRect;strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;");a.vertex=!0;var b=new mxCell('<font color="#000000">Name</font><br>'+h+'<hr><font style="font-size: 11px">Attribute Name</font>',new mxGeometry(0,0,44,39),g+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=top;spacingLeft=5;fontColor=#999999;fontSize=12;spacingTop=-8;");b.geometry.relative=!0;b.geometry.offset=new mxPoint(5,7); -b.vertex=!0;a.insert(b);return f.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,h)}))};Sidebar.prototype.addGCP2ExpandedMachineCard=function(a,e,d,b,c,f,g,h,k,l,m,q,r,n){var p=this,u="dashed=0;connectable=0;html=1;fillColor=#757575;strokeColor=none;"+mxConstants.STYLE_SHAPE+"=mxgraph.gcp2.",t=a.replace("\n"," "),t=t.replace("- ","-");n.push(this.addEntry(r,function(){var a=new mxCell("",new mxGeometry(0,0,q,95),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;"); -a.vertex=!0;var n=new mxCell('<font color="#000000">'+t+"</font><hr>"+c,new mxGeometry(0,0,q,50),"text;part=1;html=1;align=left;verticalAlign=top;spacingLeft=35;fontColor=#999999;fontSize=11;resizeWidth=1;");n.geometry.relative=!0;n.vertex=!0;a.insert(n);n=new mxCell("",new mxGeometry(0,0,25*d,25*b),u+e+";part=1;");n.geometry.relative=!0;n.geometry.offset=new mxPoint(4+12.5*(1-d),6+12.5*(1-b));n.vertex=!0;a.insert(n);n=new mxCell("",new mxGeometry(0,0,20,20),u+g+";part=1;");n.geometry.relative=!0; -n.geometry.offset=new mxPoint(35,55);n.vertex=!0;a.insert(n);n=new mxCell(f,new mxGeometry(0,0,18,18),"rounded=1;arcSize=50;part=1;fillColor=#3B8CF0;strokeColor=none;html=1;fontColor=#ffffff;spacingTop=-2;");n.geometry.relative=!0;n.geometry.offset=new mxPoint(24,69);n.vertex=!0;a.insert(n);n=new mxCell(h,new mxGeometry(0,0,18,18),"rounded=1;arcSize=50;part=1;fillColor=#3B8CF0;strokeColor=none;html=1;fontColor=#ffffff;spacingTop=-2;");n.geometry.relative=!0;n.geometry.offset=new mxPoint(50,69);n.vertex= -!0;a.insert(n);n=new mxCell("",new mxGeometry(0,0,20,18),u+k+";part=1;");n.geometry.relative=!0;n.geometry.offset=new mxPoint(75,56);n.vertex=!0;a.insert(n);n=new mxCell(l,new mxGeometry(0,0,18,18),"rounded=1;arcSize=50;part=1;fillColor=#3B8CF0;strokeColor=none;html=1;fontColor=#ffffff;spacingTop=-2;");n.geometry.relative=!0;n.geometry.offset=new mxPoint(88,69);n.vertex=!0;a.insert(n);n=new mxCell("",new mxGeometry(0,0,20,20),u+m+";part=1;");n.geometry.relative=!0;n.geometry.offset=new mxPoint(115, -55);n.vertex=!0;a.insert(n);return p.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,t)}));n.push(this.addEntry(r,function(){var a=new mxCell("",new mxGeometry(0,0,q,95),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;");a.vertex=!0;var l=new mxCell('<font color="#000000">'+t+"</font><hr>"+c,new mxGeometry(0,0,q,50),"text;connectable=0;part=1;html=1;align=left;verticalAlign=top;spacingLeft=35;fontColor=#999999;fontSize=11;resizeWidth=1;"); -l.geometry.relative=!0;l.vertex=!0;a.insert(l);l=new mxCell("",new mxGeometry(0,0,25*d,25*b),u+e+";part=1;");l.geometry.relative=!0;l.geometry.offset=new mxPoint(4+12.5*(1-d),6+12.5*(1-b));l.vertex=!0;a.insert(l);l=new mxCell("",new mxGeometry(0,0,20,20),u+g+";part=1;");l.geometry.relative=!0;l.geometry.offset=new mxPoint(35,55);l.vertex=!0;a.insert(l);l=new mxCell(f,new mxGeometry(0,0,18,18),"connectable=0;rounded=1;arcSize=50;part=1;fillColor=#3B8CF0;strokeColor=none;html=1;fontColor=#ffffff;spacingTop=-2;"); -l.geometry.relative=!0;l.geometry.offset=new mxPoint(24,69);l.vertex=!0;a.insert(l);l=new mxCell(h,new mxGeometry(0,0,18,18),"connectable=0;rounded=1;arcSize=50;part=1;fillColor=#3B8CF0;strokeColor=none;html=1;fontColor=#ffffff;spacingTop=-2;");l.geometry.relative=!0;l.geometry.offset=new mxPoint(50,69);l.vertex=!0;a.insert(l);l=new mxCell("",new mxGeometry(0,0,20,18),u+k+";part=1;");l.geometry.relative=!0;l.geometry.offset=new mxPoint(75,56);l.vertex=!0;a.insert(l);l=new mxCell("123",new mxGeometry(0, -0,25,18),"connectable=0;rounded=1;arcSize=50;part=1;fillColor=#3B8CF0;strokeColor=none;html=1;fontColor=#ffffff;spacingTop=-2;");l.geometry.relative=!0;l.geometry.offset=new mxPoint(81,69);l.vertex=!0;a.insert(l);l=new mxCell("",new mxGeometry(0,0,20,20),u+m+";part=1;");l.geometry.relative=!0;l.geometry.offset=new mxPoint(115,55);l.vertex=!0;a.insert(l);return p.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,t)}))};Sidebar.prototype.addGCP2UserDeviceCard=function(a,e,d,b,c,f, -g){var h=this,k="dashed=0;connectable=0;html=1;fillColor=#757575;strokeColor=none;"+mxConstants.STYLE_SHAPE+"=mxgraph.gcp2.",l=a.replace("\n"," "),l=l.replace("- ","-");g.push(this.addEntry(f,function(){var f=new mxCell(a,new mxGeometry(0,0,70,85+c),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;labelPosition=center;verticalLabelPosition=middle;align=center;verticalAlign=bottom;spacingLeft=0;fontColor=#999999;fontSize=12;whiteSpace=wrap;spacingBottom=2;"); +b.geometry.height,"Project Zone")}),this.addEntry("gcp google cloud platform zone markers",function(){e="shape=ellipse;perimeter=ellipsePerimeter;fillColor=#ffffff;strokeColor=#BDBDBD;strokeWidth=2;shadow=0;gradientColor=none;fontColor=#757575;align=center;html=1;fontStyle=1;spacingTop=-1;";var b=new mxCell("1",new mxGeometry(0,0,20,20),e);b.vertex=!0;var c=new mxCell("2",new mxGeometry(40,0,20,20),e);c.vertex=!0;var d=new mxCell("3",new mxGeometry(80,0,20,20),e);d.vertex=!0;var g=new mxCell("4", +new mxGeometry(120,0,20,20),e);g.vertex=!0;var h=new mxCell("5",new mxGeometry(160,0,20,20),e);h.vertex=!0;var k=new mxCell("6",new mxGeometry(200,0,20,20),e);k.vertex=!0;var l=new mxCell("7",new mxGeometry(240,0,20,20),e);l.vertex=!0;var m=new mxCell("Markers to be used with the legend",new mxGeometry(0,20,260,30),"strokeColor=none;fillColor=none;fontColor=#757575;align=left;html=1;fontStyle=0;fontSize=11;");m.vertex=!0;return a.createVertexTemplateFromCells([b,c,d,g,h,k,l,m],260,50,"Markers")}), +this.addEntry("gcp google cloud platform zone markers",function(){var b=new mxCell("",new mxGeometry(0,0,600,70),"fillColor=#ffffff;strokeColor=#BDBDBD;strokeWidth=1;shadow=0;gradientColor=none;");b.vertex=!0;var c=new mxCell("1 Commit code",new mxGeometry(0,0,200,30),"strokeColor=none;fillColor=none;fontColor=#757575;align=left;html=1;fontStyle=0;spacingLeft=5;fontSize=11;verticalAlign=top;whiteSpace=wrap;spacingRight=5;");c.geometry.relative=!0;c.vertex=!0;b.insert(c);c=new mxCell("2 Detect code change", +new mxGeometry(0,0,200,30),"strokeColor=none;fillColor=none;fontColor=#757575;align=left;html=1;fontStyle=0;spacingLeft=5;fontSize=11;verticalAlign=top;whiteSpace=wrap;spacingRight=5;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,30);c.vertex=!0;b.insert(c);c=new mxCell("3 Build immutable image",new mxGeometry(0,0,200,30),"strokeColor=none;fillColor=none;fontColor=#757575;align=left;html=1;fontStyle=0;spacingLeft=5;fontSize=11;verticalAlign=top;whiteSpace=wrap;spacingRight=5;");c.geometry.relative= +!0;c.geometry.offset=new mxPoint(200,0);c.vertex=!0;b.insert(c);c=new mxCell("4 Launch test instance from image",new mxGeometry(0,0,200,30),"strokeColor=none;fillColor=none;fontColor=#757575;align=left;html=1;fontStyle=0;spacingLeft=5;fontSize=11;verticalAlign=top;whiteSpace=wrap;spacingRight=5;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(200,30);c.vertex=!0;b.insert(c);c=new mxCell("5 Run tests",new mxGeometry(0,0,200,30),"strokeColor=none;fillColor=none;fontColor=#757575;align=left;html=1;fontStyle=0;spacingLeft=5;fontSize=11;verticalAlign=top;whiteSpace=wrap;spacingRight=5;"); +c.geometry.relative=!0;c.geometry.offset=new mxPoint(400,0);c.vertex=!0;b.insert(c);c=new mxCell("6 Perform rolling update of image to autoscaler",new mxGeometry(0,0,200,30),"strokeColor=none;fillColor=none;fontColor=#757575;align=left;html=1;fontStyle=0;spacingLeft=5;fontSize=11;verticalAlign=top;whiteSpace=wrap;spacingRight=5;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(400,30);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Markers")})]; +this.addPalette("gcp2Zones","GCP / Zones",!1,mxUtils.bind(this,function(a){for(var b=0;b<d.length;b++)a.appendChild(d[b](a))}))};Sidebar.prototype.addGCP2ServiceCardsPalette=function(){var a=[];this.addGCP2ServiceCard("Gateway","gateway",100,44,"gcp google cloud platform service cards gateway",a);this.addGCP2ServiceCard("Memcache","memcache",110,44,"gcp google cloud platform service cards memcache",a);this.addGCP2ServiceCard("Logs API","logs_api",100,44,"gcp google cloud platform service cards logs api application programming interface", +a);this.addGCP2ServiceCard("Cluster","cluster",90,44,"gcp google cloud platform service cards cluster",a);this.addGCP2ServiceCard("NAT","nat",80,44,"gcp google cloud platform service cards nat network address translation",a);this.addGCP2ServiceCard("Squid Proxy","squid_proxy",120,44,"gcp google cloud platform service cards squid proxy",a);this.addGCP2ServiceCard("Bucket","bucket",100,44,"gcp google cloud platform service cards bucket",a);this.addGCP2ServiceCard("Service Discovery","service_discovery", +150,44,"gcp google cloud platform service cards service discovery",a);this.addGCP2ServiceCard("Task\nQueues","task_queues",90,44,"gcp google cloud platform service cards task queues",a);this.addGCP2ServiceCard("Image\nServices","image_services",100,44,"gcp google cloud platform service cards image services",a);this.addGCP2ServiceCard("Dedicated\nGame Server","dedicated_game_server",120,44,"gcp google cloud platform service cards dedicated game server",a);this.addGCP2ServiceCard("Frontend\nPlatform Services", +"frontend_platform_services",150,44,"gcp google cloud platform service cards frontend platform services",a);this.addGCP2ServiceCard("Google\nEdge POP","google_network_edge_cache",110,56,"gcp google cloud platform service cards google edge pop point of presence",a);this.addGCP2ServiceCard("External\nPayment Form","external_payment_form",130,44,"gcp google cloud platform service cards external payment form",a);this.addGCP2ServiceCard("Internal Payment\nAuthorization","internal_payment_authorization", +150,44,"gcp google cloud platform service cards internal payment authorization",a);this.addGCP2ServiceCard("VPN Gateway","gateway",130,44,"gcp google cloud platform service cards vpn gateway virtual private network",a);this.addGCP2ServiceCard("Application\nSystem(s)","application_system",110,44,"gcp google cloud platform service cards application system systems",a);this.addGCP2ServiceCard("Virtual\nFile System","virtual_file_system",110,44,"gcp google cloud platform service cards virtual file system", +a);this.addGCP2ServiceCard("CDN\nInterconnect","google_network_edge_cache",120,44,"gcp google cloud platform service cards cdn content delivery network interconnect",a);this.addGCP2ServiceCard("Scheduled\nTasks","scheduled_tasks",110,44,"gcp google cloud platform service cards scheduled tasks",a);this.addGCP2ServiceCard("HTTPS\nLoad Balancer","network_load_balancer",130,44,"gcp google cloud platform service cards https secure load balancer",a);this.addGCP2ServiceCard("Persistent\nDisk Snapshot","persistent_disk_snapshot", +130,44,"gcp google cloud platform service cards persistent disk snapshot",a);this.addGCP2ServiceCard("Persistent\nDisk","persistent_disk_snapshot",110,44,"gcp google cloud platform service cards persistent disk",a);this.addGCP2ServiceCard("Network\nLoad\nBalancer","network_load_balancer",100,56,"gcp google cloud platform service cards network load balancer",a);this.addGCP2ServiceCard("Google\n Network W/\nEdge Cache","google_network_edge_cache",120,56,"gcp google cloud platform service cards google network witch edge cache", +a);this.addGCP2ServiceCard("Push\nNotification\nService","push_notification_service",110,56,"gcp google cloud platform service cards push notification service",a);this.addGCP2ServiceCard("Blank One Line","blank",140,44,"gcp google cloud platform service cards blank one line",a);a.push(this.addEntry("gcp google cloud platform service cards blank one line",function(){var a=new mxCell("Blank One Line",new mxGeometry(0,0,100,44),"dashed=0;strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;labelPosition=center;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#000000;fontSize=12;"); +a.vertex=!0;return sb.createVertexTemplateFromCells([a],100,44,"Blank One Line")}));this.addGCP2ServiceCard("Blank Two\n& Three Line","blank",120,44,"gcp google cloud platform service cards blank two and three line",a);a.push(this.addEntry("gcp google cloud platform service cards blank two and three line",function(){var a=new mxCell("Blank Two\n& Three Line",new mxGeometry(0,0,90,44),"dashed=0;strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;labelPosition=center;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#000000;fontSize=12;"); +a.vertex=!0;return sb.createVertexTemplateFromCells([a],100,44,"Blank One Line")}));this.addPalette("gcp2Service Cards","GCP / Service Cards",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2ComputePalette=function(){var a=[];this.addGCP2CardSet("Compute\nEngine","compute_engine",110,160,"gcp google cloud platform compute compute engine",a);this.addGCP2CardSet("GPU","gpu",90,100,"gcp google cloud platform compute gpu graphics processing unit", +a);this.addGCP2CardSet("App\nEngine","app_engine",100,130,"gcp google cloud platform compute app engine application",a);this.addGCP2CardSet("Cloud\nFunctions","cloud_functions",120,150,"gcp google cloud platform compute functions",a);this.addGCP2CardSet("Kubernetes\nEngine","container_engine",130,170,"gcp google cloud platform compute kubernetes engine",a);this.addGCP2CardSet("Container-\nOptimized OS","container_optimized_os",140,200,"gcp google cloud platform compute container optimized os operating system", +a);this.addPalette("gcp2Compute","GCP / Compute",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2APIPlatformEcosystemsPalette=function(){var a=[];this.addGCP2CardSet("API\nAnalytics","api_analytics",110,140,"gcp google cloud platform api ecosystems api analytics application programming interface",a);this.addGCP2CardSet("Apigee\nSense","apigee_sense",100,140,"gcp google cloud platform api ecosystems apigee sense",a);this.addGCP2CardSet("API\nMonetization", +"api_monetization",130,160,"gcp google cloud platform api ecosystems api monetization application programming interface",a);this.addGCP2CardSet("Cloud\nEndpoints","cloud_endpoints",120,150,"gcp google cloud platform api ecosystems cloud endpoints",a);this.addGCP2CardSet("Apigee API\nPlatform","apigee_api_platform",130,170,"gcp google cloud platform api ecosystems apigee api platform application programming interface",a);this.addGCP2CardSet("Developer\nPortal","developer_portal",120,160,"gcp google cloud platform api ecosystems developer portal", +a);this.addPalette("gcp2API Platform and Ecosystems","GCP / API Platform and Ecosystems",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2IdentitySecurityPalette=function(){var a=[];this.addGCP2CardSet("Cloud\nIAM","cloud_iam",100,120,"gcp google cloud platform identity security cloud iam",a);this.addGCP2CardSet("BeyondCorp","beyondcorp",130,130,"gcp google cloud platform identity security beyondcorp",a);this.addGCP2CardSet("Cloud Resource\nManager", +"cloud_iam",150,200,"gcp google cloud platform identity security cloud resource manager",a);this.addGCP2CardSet("Data Loss\nPrevention API","data_loss_prevention_api",140,200,"gcp google cloud platform identity security data loss prevention api application programming interface",a);this.addGCP2CardSet("Cloud Security\nScanner","cloud_security_scanner",140,190,"gcp google cloud platform identity security cloud security scanner",a);this.addGCP2CardSet("Key Management\nService","key_management_service", +160,200,"gcp google cloud platform identity security key management service",a);this.addGCP2CardSet("Identity-Aware\nProxy","identity_aware_proxy",140,180,"gcp google cloud platform identity security identity aware proxy",a);this.addGCP2CardSet("Security Key\nEnforcement","security_key_enforcement",130,200,"gcp google cloud platform identity security security key enforcement",a);this.addPalette("gcp2Identity and Security","GCP / Identity and Security",!1,mxUtils.bind(this,function(e){for(var d=0;d< +a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2BigDataPalette=function(){var a=[];this.addGCP2CardSet("BigQuery","bigquery",120,120,"gcp google cloud platform big data bigquery",a);this.addGCP2CardSet("Cloud\nDatalab","cloud_datalab",110,140,"gcp google cloud platform big data datalab",a);this.addGCP2CardSet("Cloud\nDataflow","cloud_dataflow",110,150,"gcp google cloud platform big data dataflow",a);this.addGCP2CardSet("Cloud\nPub/Sub","cloud_pubsub",110,150,"gcp google cloud platform big data pub sub", +a);this.addGCP2CardSet("Cloud\nDataproc","cloud_dataproc",110,150,"gcp google cloud platform big data dataproc",a);this.addGCP2CardSet("Genomics","genomics",120,120,"gcp google cloud platform big data genomics",a);this.addGCP2CardSet("Cloud\nDataprep","cloud_dataprep",110,150,"gcp google cloud platform big data dataprep",a);this.addGCP2CardSet("Data\nStudio","data_studio",100,130,"gcp google cloud platform big data data studio",a);this.addPalette("gcp2Big Data","GCP / Big Data",!1,mxUtils.bind(this, +function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2DataTransferPalette=function(){var a=[];this.addGCP2CardSet("Transfer\nAppliance","transfer_appliance",120,170,"gcp google cloud platform data transfer appliance",a);this.addPalette("gcp2Data Transfer","GCP / Data Transfer",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2CloudAIPalette=function(){var a=[];this.addGCP2CardSet("Cloud Machine\nLearning", +"cloud_machine_learning",150,200,"gcp google cloud platform ai artificial intelligence cloud machine learning",a);this.addGCP2CardSet("Natural\nLanguage API","cloud_natural_language_api",140,180,"gcp google cloud platform ai artificial intelligence natural language api application programming interface",a);this.addGCP2CardSet("Vision\nAPI","cloud_vision_api",100,120,"gcp google cloud platform ai artificial intelligence vision api application programming interface",a);this.addGCP2CardSet("Translation\nAPI", +"cloud_translation_api",120,150,"gcp google cloud platform ai artificial intelligence translation api application programming interface",a);this.addGCP2CardSet("Speech\nAPI","cloud_speech_api",110,130,"gcp google cloud platform ai artificial intelligence speech api application programming interface",a);this.addGCP2CardSet("Jobs\nAPI","cloud_jobs_api",90,110,"gcp google cloud platform ai artificial intelligence jobs api application programming interface",a);this.addGCP2CardSet("Cloud Video\nIntelligence API", +"cloud_video_intelligence_api",150,220,"gcp google cloud platform ai artificial intelligence cloud video intelligence api application programming interface",a);this.addGCP2CardSet("Advanced\nSolutions Lab","advanced_solutions_lab",140,200,"gcp google cloud platform ai artificial intelligence advanced solutions lab",a);this.addPalette("gcp2Cloud AI","GCP / Cloud AI",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2InternetOfThingsPalette= +function(){var a=[];this.addGCP2CardSet("Cloud\nIoT Core","cloud_iot_core",110,150,"gcp google cloud platform iot internet of things core",a);this.addPalette("gcp2Internet of Things","GCP / Internet of Things",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2StorageDatabasesPalette=function(){var a=[];this.addGCP2CardSet("Cloud\nStorage","cloud_storage",110,140,"gcp google cloud platform storage databases ",a);this.addGCP2CardSet("Cloud\nSQL", +"cloud_sql",100,120,"gcp google cloud platform storage databases sql",a);this.addGCP2CardSet("Cloud\nBigtable","cloud_bigtable",110,140,"gcp google cloud platform storage databases bigtable",a);this.addGCP2CardSet("Cloud\nSpanner","cloud_spanner",110,150,"gcp google cloud platform storage databases spanner",a);this.addGCP2CardSet("Cloud\nDatastore","cloud_datastore",120,150,"gcp google cloud platform storage databases datastore",a);this.addGCP2CardSet("Persistent\nDisk","persistent_disk",120,150, +"gcp google cloud platform storage databases persistent disk",a);this.addGCP2CardSet("Cloud\nMemorystore","cloud_memorystore",140,170,"gcp google cloud platform storage databases memorystore",a);this.addGCP2CardSet("Cloud\nFilestore","cloud_filestore",110,150,"gcp google cloud platform storage databases filestore",a);this.addPalette("gcp2Storage and Databases","GCP / Storage and Databases",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2ManagementToolsPalette= +function(){var a=[];this.addGCP2CardSet("Stackdriver","stackdriver",130,130,"gcp google cloud platform management tools stackdriver",a);this.addGCP2CardSet("Debugger","debugger",120,120,"gcp google cloud platform management tools debugger",a);this.addGCP2CardSet("Monitoring","cloud_deployment_manager",120,120,"gcp google cloud platform management tools monitoring",a);this.addGCP2CardSet("Deployment\nManager","cloud_deployment_manager",130,180,"gcp google cloud platform management tools deployment manager", +a);this.addGCP2CardSet("Logging","logging",110,110,"gcp google cloud platform management tools logging",a);this.addGCP2CardSet("Cloud\nConsole","placeholder",110,140,"gcp google cloud platform management tools console",a);this.addGCP2CardSet("Error\nReporting","error_reporting",120,150,"gcp google cloud platform management tools error reporting",a);this.addGCP2CardSet("Cloud\nShell","placeholder",100,130,"gcp google cloud platform management tools shell",a);this.addGCP2CardSet("Trace","trace",100, +100,"gcp google cloud platform management tools trace",a);this.addGCP2CardSet("Cloud\nMobile App","placeholder",130,160,"gcp google cloud platform management tools mobile app",a);this.addGCP2CardSet("Profiler","profiler",110,110,"gcp google cloud platform management tools profiler",a);this.addGCP2CardSet("Billing\nAPI","placeholder",100,120,"gcp google cloud platform management tools billing api application programming interface",a);this.addGCP2CardSet("Cloud\nAPIs","cloud_apis",100,130,"gcp google cloud platform management tools api application programming interface", +a);this.addPalette("gcp2Management Tools","GCP / Management Tools",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2NetworkingPalette=function(){var a=[];this.addGCP2CardSet("Virtual\nPrivate Cloud","virtual_private_cloud",140,180,"gcp google cloud platform networking virtual private",a);this.addGCP2CardSet("Dedicated\nInterconnect","dedicated_interconnect",130,190,"gcp google cloud platform networking dedicated interconnect",a);this.addGCP2CardSet("Cloud Load\nBalancing", +"cloud_load_balancing",130,180,"gcp google cloud platform networking load balancing",a);this.addGCP2CardSet("Cloud \nDNS","cloud_dns",100,130,"gcp google cloud platform networking dns domain name server",a);this.addGCP2CardSet("Cloud \nCDN","cloud_cdn",100,130,"gcp google cloud platform networking cdn content delivery network",a);this.addGCP2CardSet("Cloud\nNetwork","cloud_network",110,140,"gcp google cloud platform networking network",a);this.addGCP2CardSet("Cloud External\nIP Addresses","cloud_external_ip_addresses", +150,220,"gcp google cloud platform networking external ip addresses internet protocol",a);this.addGCP2CardSet("Cloud\nRoutes","cloud_routes",100,140,"gcp google cloud platform networking routes",a);this.addGCP2CardSet("Cloud\nFirewall Rules","cloud_firewall_rules",140,170,"gcp google cloud platform networking firewall rules",a);this.addGCP2CardSet("Cloud\nVPN","cloud_vpn",100,120,"gcp google cloud platform networking vpn virtual private network",a);this.addGCP2CardSet("Cloud\nRouter","cloud_router", +100,140,"gcp google cloud platform networking router",a);this.addGCP2CardSet("Cloud\nArmor","cloud_armor",100,130,"gcp google cloud platform networking armor",a);this.addGCP2CardSet("Standard\nNetwork Tier","standard_network_tier",130,180,"gcp google cloud platform networking standard network tier",a);this.addGCP2CardSet("Premium\nNetwork Tier","premium_network_tier",130,180,"gcp google cloud platform networking premium network tier",a);this.addGCP2CardSet("Partner\nInterconnect","partner_interconnect", +130,180,"gcp google cloud platform networking partner interconnect",a);this.addPalette("gcp2Networking","GCP / Networking",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2DeveloperToolsPalette=function(){var a=[];this.addGCP2CardSet("Cloud\nSDK","placeholder",100,120,"gcp google cloud platform dev developer tools sdk software development kit",a);this.addGCP2CardSet("Cloud\nBuild","container_builder",100,130,"gcp google cloud platform dev developer tools build", +a);this.addGCP2CardSet("Deployment\nManager","cloud_deployment_manager",130,180,"gcp google cloud platform dev developer tools deployment manager",a);this.addGCP2CardSet("Cloud Tools for\nVisual Studio","cloud_tools_for_powershell",150,220,"gcp google cloud platform dev developer tools tools for visual studio",a);this.addGCP2CardSet("Cloud Source\nRepositories","placeholder",140,210,"gcp google cloud platform dev developer tools cloud source repositories",a);this.addGCP2CardSet("Maven App\nEngine Plugin", +"placeholder",140,200,"gcp google cloud platform dev developer tools maven app engine plugin",a);this.addGCP2CardSet("Cloud Tools\nfor Eclipse","placeholder",130,190,"gcp google cloud platform dev developer tools tools for eclipse",a);this.addGCP2CardSet("Cloud Tools\nfor IntelliJ","placeholder",130,180,"gcp google cloud platform dev developer tools tools for intellij",a);this.addGCP2CardSet("Cloud\nTest Lab","placeholder",110,150,"gcp google cloud platform dev developer tools test lab",a);this.addGCP2CardSet("Cloud Tools for\nPowerShell", +"cloud_tools_for_powershell",150,210,"gcp google cloud platform dev developer tools tools for powershell",a);this.addGCP2CardSet("IDE Plugins","cloud_tools_for_powershell",130,130,"gcp google cloud platform dev developer tools ide plugins integrated development environment",a);this.addGCP2CardSet("Container\nRegistry","container_registry",120,160,"gcp google cloud platform dev developer tools container registry",a);this.addGCP2CardSet("Gradle App\nEnginge Plugin","placeholder",150,210,"gcp google cloud platform dev developer tools gradle app engine plugin application", +a);this.addPalette("gcp2Developer Tools","GCP / Developer Tools",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2ExpandedProductCardsPalette=function(){var a=[];this.addGCP2ExpandedProductCardSet("Compute Engine","compute_engine",150,"gcp google cloud platform expanded product cards compute engine",a);this.addGCP2ExpandedProductCardSet("BigQuery","bigquery",140,"gcp google cloud platform expanded product cards bigquery",a);this.addGCP2ExpandedProductCardSet("App Engine", +"app_engine",140,"gcp google cloud platform expanded product cards app application engine",a);this.addGCP2ExpandedProductCardSet("Cloud Dataflow","cloud_dataflow",150,"gcp google cloud platform expanded product cards cloud dataflow",a);this.addGCP2ExpandedProductCardSet("Kubernetes Engine","container_engine",170,"gcp google cloud platform expanded product cards kubernetes engine",a);this.addGCP2ExpandedProductCardSet("Cloud Storage","cloud_storage",140,"gcp google cloud platform expanded product cards cloud storage", +a);this.addGCP2ExpandedProductCardSet("Cloud Bigtable","cloud_bigtable",140,"gcp google cloud platform expanded product cards cloud bigtable",a);this.addGCP2ExpandedProductCardSet("Cloud Pub/Sub","cloud_pubsub",150,"gcp google cloud platform expanded product cards cloud pub sub",a);this.addGCP2ExpandedProductCardSet("Cloud SQL","cloud_sql",140,"gcp google cloud platform expanded product cards cloud sql",a);this.addGCP2ExpandedMachineCard("App Engine","app_engine_icon",1,.84,"10GB PD","1","modifiers_standard_machine", +"1","modifiers_storage","1","modifiers_autoscaling",150,"gcp google cloud platform expanded product cards app engine machine",a);this.addGCP2ExpandedMachineCard("Cloud Dataflow","cloud_dataflow_icon",.72,1,"10GB PD","1","modifiers_standard_machine","1","modifiers_storage","1","modifiers_autoscaling",150,"gcp google cloud platform expanded product cards app engine machine",a);this.addGCP2ExpandedMachineCard("Kubernetes Engine","container_engine_icon",.88,1,"10GB PD","1","modifiers_standard_machine", +"1","modifiers_storage","1","modifiers_autoscaling",150,"gcp google cloud platform expanded product cards app engine machine",a);this.addGCP2ExpandedMachineCard("Cloud Dataproc","cloud_dataproc_icon",1,.92,"10GB PD","1","modifiers_standard_machine","1","modifiers_storage","1","modifiers_autoscaling",150,"gcp google cloud platform expanded product cards app engine machine",a);this.addGCP2ExpandedMachineCard("Compute Engine","compute_engine_icon",1,1,"10GB PD","1","modifiers_standard_machine","1","modifiers_storage", +"1","modifiers_autoscaling",150,"gcp google cloud platform expanded product cards app engine machine",a);this.addPalette("gcp2Expanded Product Cards","GCP / Expanded Product Cards",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2UserDeviceCardsPalette=function(){var a=[];this.addGCP2UserDeviceCard("Application","application",1,.8,0,"gcp google cloud platform user and device cards application",a);this.addGCP2UserDeviceCard("Beacon","beacon", +.73,1,0,"gcp google cloud platform user and device cards beacon",a);this.addGCP2UserDeviceCard("Circuit-Board","circuit_board",1,.9,15,"gcp google cloud platform user and device cards circuit board",a);this.addGCP2UserDeviceCard("Database","database",1,.9,0,"gcp google cloud platform user and device cards database db",a);this.addGCP2UserDeviceCard("Desktop","desktop",1,.9,0,"gcp google cloud platform user and device cards desktop",a);this.addGCP2UserDeviceCard("Desktop and Mobile","desktop_and_mobile", +1,.66,15,"gcp google cloud platform user and device cards desktop and mobile",a);this.addGCP2UserDeviceCard("Game","game",1,.54,0,"gcp google cloud platform user and device cards game",a);this.addGCP2UserDeviceCard("Gateway","gateway_icon",1,.44,0,"gcp google cloud platform user and device cards gateway icon",a);this.addGCP2UserDeviceCard("Laptop","laptop",1,.66,0,"gcp google cloud platform user and device cards laptop",a);this.addGCP2UserDeviceCard("Lightbulb","lightbulb",.7,1,0,"gcp google cloud platform user and device cards lighbulb", +a);this.addGCP2UserDeviceCard("List","list",.89,1,0,"gcp google cloud platform user and device cards list",a);this.addGCP2UserDeviceCard("Live","live",.74,1,0,"gcp google cloud platform user and device cards live",a);this.addGCP2UserDeviceCard("Local-Compute","compute_engine_icon",1,.89,15,"gcp google cloud platform user and device cards local compute",a);this.addGCP2UserDeviceCard("Mobile Devices","mobile_devices",1,.73,15,"gcp google cloud platform user and device cards mobile devices",a);this.addGCP2UserDeviceCard("Payment", +"payment",1,.8,0,"gcp google cloud platform user and device cards payment",a);this.addGCP2UserDeviceCard("Phone","phone",.64,1,0,"gcp google cloud platform user and device cards phone",a);this.addGCP2UserDeviceCard("Record","record",1,.66,0,"gcp google cloud platform user and device cards record",a);this.addGCP2UserDeviceCard("Report","report",1,1,0,"gcp google cloud platform user and device cards report",a);this.addGCP2UserDeviceCard("Retail","retail",1,.89,0,"gcp google cloud platform user and device cards retail", +a);this.addGCP2UserDeviceCard("Speaker","speaker",.7,1,0,"gcp google cloud platform user and device cards speaker",a);this.addGCP2UserDeviceCard("Storage","storage",1,.8,0,"gcp google cloud platform user and device cards storage",a);this.addGCP2UserDeviceCard("Stream","stream",1,.82,0,"gcp google cloud platform user and device cards stream",a);this.addGCP2UserDeviceCard("Users","users",1,.63,0,"gcp google cloud platform user and device cards users",a);this.addGCP2UserDeviceCard("Webcam","webcam", +.5,1,0,"gcp google cloud platform user and device cards webcam",a);this.addPalette("gcp2User Device Cards","GCP / User and Device Cards",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2ProductCardsPalette=function(){var a=[];this.addGCP2ProductCardSet("Kubernetes","kubernetes_logo",1,.97,130,130,"gcp google cloud platform product kubernetes",a);this.addGCP2ProductCardSet("TensorFlow","tensorflow_logo",.94,1,130,130,"gcp google cloud platform product tensorflow", +a);this.addGCP2ProductCardSet("Forseti\nSecurity","forseti_logo",.98,1,110,150,"gcp google cloud platform product forseti",a);this.addGCP2ProductCardSet("Istio","istio_logo",.67,1,80,90,"gcp google cloud platform product forseti",a);this.addGCP2ProductCardSet("Firebase","firebase",.72,1,100,100,"gcp google cloud platform product firebase",a);this.addGCP2ProductCardSet("Fastly","fastly",1,.39,100,100,"gcp google cloud platform product fastly",a);this.addGCP2ProductCardSet("AdMob","admob",1,1,110,110, +"gcp google cloud platform product admob",a);this.addGCP2ProductCardSet("Google Play\nGame Services","google_play_game_service",1,.69,150,220,"gcp google cloud platform product google play game services",a);this.addGCP2ProductCardSet("Campaign\nManager","campaign_manager",1,1,120,170,"gcp google cloud platform product campaign manager",a);this.addGCP2ProductCardSet("Google\nAnalytics","google_analytics",1,1,120,160,"gcp google cloud platform product google analytics",a);this.addGCP2ProductCardSet("Google\nAds", +"google_ads",1,1,100,130,"gcp google cloud platform product google ads",a);this.addGCP2ProductCardSet("Avere Physical\nAppliance","avere",1,.33,150,200,"gcp google cloud platform product avere physical appliance",a);this.addGCP2ProductCardSet("Google\nAnalytics 360","google_analytics_360",1,.98,140,180,"gcp google cloud platform product google analytics 360",a);this.addGCP2ProductCardSet("Google Ad\nManager","google_ad_manager",1,1,120,170,"gcp google cloud platform product google ad manager",a); +this.addPalette("gcp2Product Cards","GCP / Product Cards",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2CardSet=function(a,e,d,b,c,f){var g=this,h="dashed=0;connectable=0;html=1;fillColor=#5184F3;strokeColor=none;"+mxConstants.STYLE_SHAPE+"=mxgraph.gcp2.",k=a.replace("\n"," "),k=k.replace("- ","-");f.push(this.addEntry(c,function(){var b=new mxCell("",new mxGeometry(0,0,d,60),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;"); +b.vertex=!0;var c=new mxCell(a,new mxGeometry(0,.5,44,39),h+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#999999;fontSize=12;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(5,-19.5);c.vertex=!0;b.insert(c);return g.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,k)}));f.push(this.addEntry(c,function(){var a=new mxCell("",new mxGeometry(0,0,b,60),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;"); +a.vertex=!0;var c=new mxCell('<font color="#000000">Name</font><br>'+k,new mxGeometry(0,.5,44,39),h+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#999999;fontSize=12;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(5,-19.5);c.vertex=!0;a.insert(c);return g.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,k)}));f.push(this.addEntry(c,function(){var a=new mxCell("",new mxGeometry(0,0,b+8,68),"shape=mxgraph.gcp2.doubleRect;strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;"); +a.vertex=!0;var c=new mxCell('<font color="#000000">Name</font><br>'+k,new mxGeometry(0,.5,44,39),h+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#999999;fontSize=12;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(5,-19.5);c.vertex=!0;a.insert(c);return g.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,k)}))};Sidebar.prototype.addGCP2ProductCardSet=function(a,e,d,b,c,f,g,h){var k=this,l="dashed=0;connectable=0;html=1;fillColor=#5184F3;strokeColor=none;"+ +mxConstants.STYLE_SHAPE+"=mxgraph.gcp2.",m=a.replace("\n"," "),m=m.replace("- ","-");h.push(this.addEntry(g,function(){var f=new mxCell("",new mxGeometry(0,0,c,60),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;");f.vertex=!0;var g=new mxCell(a,new mxGeometry(0,0,45*d,45*b),l+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#999999;fontSize=12;");g.geometry.relative=!0;g.geometry.offset= +new mxPoint(5,7+22.5*(1-b));g.vertex=!0;f.insert(g);return k.createVertexTemplateFromCells([f],f.geometry.width,f.geometry.height,m)}));h.push(this.addEntry(g,function(){var a=new mxCell("",new mxGeometry(0,0,f,60),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;");a.vertex=!0;var c=new mxCell('<font color="#000000">Name</font><br>'+m,new mxGeometry(0,0,45*d,45*b),l+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#999999;fontSize=12;"); +c.geometry.relative=!0;c.geometry.offset=new mxPoint(5,7+22.5*(1-b));c.vertex=!0;a.insert(c);return k.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,m)}));h.push(this.addEntry(g,function(){var a=new mxCell("",new mxGeometry(0,0,f+8,68),"shape=mxgraph.gcp2.doubleRect;strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;");a.vertex=!0;var c=new mxCell('<font color="#000000">Name</font><br>'+m,new mxGeometry(0,0,45*d,45*b),l+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#999999;fontSize=12;"); +c.geometry.relative=!0;c.geometry.offset=new mxPoint(5,7+22.5*(1-b));c.vertex=!0;a.insert(c);return k.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,m)}))};Sidebar.prototype.addGCP2ServiceCard=function(a,e,d,b,c,f){var g=this,h="dashed=0;connectable=0;html=1;fillColor=#757575;strokeColor=none;"+mxConstants.STYLE_SHAPE+"=mxgraph.gcp2.",k=a.replace("\n"," "),k=k.replace("- ","-");f.push(this.addEntry(c,function(){var c=new mxCell("",new mxGeometry(0,0,d,b),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;"); +c.vertex=!0;var f=new mxCell(a,new mxGeometry(0,.5,32,32),h+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#000000;fontSize=12;");f.geometry.relative=!0;f.geometry.offset=new mxPoint(5,-16);f.vertex=!0;c.insert(f);return g.createVertexTemplateFromCells([c],d,b,k)}))};Sidebar.prototype.addGCP2ExpandedProductCardSet=function(a,e,d,b,c){var f=this,g="dashed=0;connectable=0;html=1;fillColor=#5184F3;strokeColor=none;"+mxConstants.STYLE_SHAPE+ +"=mxgraph.gcp2.",h=a.replace("\n"," "),h=h.replace("- ","-");c.push(this.addEntry(b,function(){var a=new mxCell("",new mxGeometry(0,0,d,70),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;");a.vertex=!0;var b=new mxCell('<font color="#000000">Name</font><br>'+h+'<hr><font style="font-size: 11px">Attribute Name</font>',new mxGeometry(0,0,44,39),g+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=top;spacingLeft=5;fontColor=#999999;fontSize=12;spacingTop=-8;"); +b.geometry.relative=!0;b.geometry.offset=new mxPoint(5,7);b.vertex=!0;a.insert(b);return f.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,h)}));c.push(this.addEntry(b,function(){var a=new mxCell("",new mxGeometry(0,0,d+8,78),"shape=mxgraph.gcp2.doubleRect;strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;");a.vertex=!0;var b=new mxCell('<font color="#000000">Name</font><br>'+h+'<hr><font style="font-size: 11px">Attribute Name</font>',new mxGeometry(0,0,44,39),g+e+ +";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=top;spacingLeft=5;fontColor=#999999;fontSize=12;spacingTop=-8;");b.geometry.relative=!0;b.geometry.offset=new mxPoint(5,7);b.vertex=!0;a.insert(b);return f.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,h)}))};Sidebar.prototype.addGCP2ExpandedMachineCard=function(a,e,d,b,c,f,g,h,k,l,m,q,r,n){var p=this,u="dashed=0;connectable=0;html=1;fillColor=#757575;strokeColor=none;"+mxConstants.STYLE_SHAPE+ +"=mxgraph.gcp2.",t=a.replace("\n"," "),t=t.replace("- ","-");n.push(this.addEntry(r,function(){var a=new mxCell("",new mxGeometry(0,0,q,95),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;");a.vertex=!0;var n=new mxCell('<font color="#000000">'+t+"</font><hr>"+c,new mxGeometry(0,0,q,50),"text;part=1;html=1;align=left;verticalAlign=top;spacingLeft=35;fontColor=#999999;fontSize=11;resizeWidth=1;");n.geometry.relative=!0;n.vertex=!0;a.insert(n);n=new mxCell("", +new mxGeometry(0,0,25*d,25*b),u+e+";part=1;");n.geometry.relative=!0;n.geometry.offset=new mxPoint(4+12.5*(1-d),6+12.5*(1-b));n.vertex=!0;a.insert(n);n=new mxCell("",new mxGeometry(0,0,20,20),u+g+";part=1;");n.geometry.relative=!0;n.geometry.offset=new mxPoint(35,55);n.vertex=!0;a.insert(n);n=new mxCell(f,new mxGeometry(0,0,18,18),"rounded=1;arcSize=50;part=1;fillColor=#3B8CF0;strokeColor=none;html=1;fontColor=#ffffff;spacingTop=-2;");n.geometry.relative=!0;n.geometry.offset=new mxPoint(24,69);n.vertex= +!0;a.insert(n);n=new mxCell(h,new mxGeometry(0,0,18,18),"rounded=1;arcSize=50;part=1;fillColor=#3B8CF0;strokeColor=none;html=1;fontColor=#ffffff;spacingTop=-2;");n.geometry.relative=!0;n.geometry.offset=new mxPoint(50,69);n.vertex=!0;a.insert(n);n=new mxCell("",new mxGeometry(0,0,20,18),u+k+";part=1;");n.geometry.relative=!0;n.geometry.offset=new mxPoint(75,56);n.vertex=!0;a.insert(n);n=new mxCell(l,new mxGeometry(0,0,18,18),"rounded=1;arcSize=50;part=1;fillColor=#3B8CF0;strokeColor=none;html=1;fontColor=#ffffff;spacingTop=-2;"); +n.geometry.relative=!0;n.geometry.offset=new mxPoint(88,69);n.vertex=!0;a.insert(n);n=new mxCell("",new mxGeometry(0,0,20,20),u+m+";part=1;");n.geometry.relative=!0;n.geometry.offset=new mxPoint(115,55);n.vertex=!0;a.insert(n);return p.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,t)}));n.push(this.addEntry(r,function(){var a=new mxCell("",new mxGeometry(0,0,q,95),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;");a.vertex= +!0;var l=new mxCell('<font color="#000000">'+t+"</font><hr>"+c,new mxGeometry(0,0,q,50),"text;connectable=0;part=1;html=1;align=left;verticalAlign=top;spacingLeft=35;fontColor=#999999;fontSize=11;resizeWidth=1;");l.geometry.relative=!0;l.vertex=!0;a.insert(l);l=new mxCell("",new mxGeometry(0,0,25*d,25*b),u+e+";part=1;");l.geometry.relative=!0;l.geometry.offset=new mxPoint(4+12.5*(1-d),6+12.5*(1-b));l.vertex=!0;a.insert(l);l=new mxCell("",new mxGeometry(0,0,20,20),u+g+";part=1;");l.geometry.relative= +!0;l.geometry.offset=new mxPoint(35,55);l.vertex=!0;a.insert(l);l=new mxCell(f,new mxGeometry(0,0,18,18),"connectable=0;rounded=1;arcSize=50;part=1;fillColor=#3B8CF0;strokeColor=none;html=1;fontColor=#ffffff;spacingTop=-2;");l.geometry.relative=!0;l.geometry.offset=new mxPoint(24,69);l.vertex=!0;a.insert(l);l=new mxCell(h,new mxGeometry(0,0,18,18),"connectable=0;rounded=1;arcSize=50;part=1;fillColor=#3B8CF0;strokeColor=none;html=1;fontColor=#ffffff;spacingTop=-2;");l.geometry.relative=!0;l.geometry.offset= +new mxPoint(50,69);l.vertex=!0;a.insert(l);l=new mxCell("",new mxGeometry(0,0,20,18),u+k+";part=1;");l.geometry.relative=!0;l.geometry.offset=new mxPoint(75,56);l.vertex=!0;a.insert(l);l=new mxCell("123",new mxGeometry(0,0,25,18),"connectable=0;rounded=1;arcSize=50;part=1;fillColor=#3B8CF0;strokeColor=none;html=1;fontColor=#ffffff;spacingTop=-2;");l.geometry.relative=!0;l.geometry.offset=new mxPoint(81,69);l.vertex=!0;a.insert(l);l=new mxCell("",new mxGeometry(0,0,20,20),u+m+";part=1;");l.geometry.relative= +!0;l.geometry.offset=new mxPoint(115,55);l.vertex=!0;a.insert(l);return p.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,t)}))};Sidebar.prototype.addGCP2UserDeviceCard=function(a,e,d,b,c,f,g){var h=this,k="dashed=0;connectable=0;html=1;fillColor=#757575;strokeColor=none;"+mxConstants.STYLE_SHAPE+"=mxgraph.gcp2.",l=a.replace("\n"," "),l=l.replace("- ","-");g.push(this.addEntry(f,function(){var f=new mxCell(a,new mxGeometry(0,0,70,85+c),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;labelPosition=center;verticalLabelPosition=middle;align=center;verticalAlign=bottom;spacingLeft=0;fontColor=#999999;fontSize=12;whiteSpace=wrap;spacingBottom=2;"); f.vertex=!0;var g=new mxCell("",new mxGeometry(.5,0,50*d,50*b),k+e+";part=1;");g.geometry.relative=!0;g.geometry.offset=new mxPoint(25*-d,10+25*(1-b));g.vertex=!0;f.insert(g);return h.createVertexTemplateFromCells([f],f.geometry.width,f.geometry.height,l)}))}})();(function(){Sidebar.prototype.addGMDLBottomNavigationPalette=function(a){var e=[this.addDataEntry("gmdl google media design library bottom navigation bottom navigation",358,48,"Bottom Navigation","7VbbToNAEP0aHtss0Gp9tPXyosaoP7AtA2xcGLKMtfXr3WWH2go1jZcHjRCSndkzlz1zIATxrFhdGlnl15iADuLzIJ4ZRPKrYjUDrYNIqCSIz4IoEvYJoos9u2GzKyppoKRDAiIfsJT6CbzHO2paa3Ykss7BwUUQT6VWWWnXC5sfjHWkWNK9enHYMLJ2ncvKGQYW5LaV1jPUaJpccdpcDkYGH6HdKbEEH5vgM1fixsAQrPYernHxyS4BCyCztpBnlVDuEfF44sNyUFnOYSP2ydrb2Sb0jSq7YLb6mYs7zN2BY6X+mMCcCu242qKqWGVu/sOsSPTQcJIOdRPh7n3UuTH0gR1/aiH1Kc+NsHIpKrlQZXYFKXFb22N0tpZz0LdYK1K4M+824dU7wByJsOhTCBebMqApx74H183Z4OjQcUf94+YAMQzHPmbdOtje0gO/DztyaH0GtCS1hJ36fRrhFm5R2c429Qeh2Ck/aNtpU2Ca1kAdkW1OcpDuRh3dXcglGkXwReXlIE3PKyvE8cnR9EDdbcC/Qnfj79Ld52QXTn5IdqMfkN24I7sbq5f5+muaK32O/4/dJ0Q3+XsfO2u+/fp4+Paf0Ss="), this.addDataEntry("gmdl google media design library bottom navigation bottom navigation",358,48,"Bottom Navigation","7Zbfb5swEMf/Gh4TGRxY9rikW19aqdL2PjlwgFXDIXPNj/31s7FJ84Oo6UqeOiQk39d3PvvuE4eAL6vtvRZN+YgZqIB/D/hSI5IbVdslKBVETGYBvwuiiJk3iH5cmA27WdYIDTVdExC5gLVQL+AUJ7S0U17IRFuCdWcBXwgli9qMU7M+aCPkWNNP+cf6hpGx21I01tCQkp2WSi1Roe7W4ox9+ZosrBtpfIZ+psYaXGyGG5/Jbww0wfbi4TrJn+wesALSO+OykRmVzoPHcxdWgixKHzbzmmidXexDX0tlBr5aw5Xj76xcSZWyRTqoUbUtbOOnRZWp6VpmgL+j85rl3XOpZrb+Q862cDIV6ptvGGFjl2hEKuviAXLy2zrsn7WVWIF6wlaSxKNG9ws+nDiskAirITR8soV36NJ57Zfdzd0kMQpahXbGTK5uezTcdh/ApmHsYna94O0DLvzv4giLMHGaBiVIruEo/xArfgtPKM3O9vknITtKPzmhDfO8BTpjbX+Qq/CbneH3+NLK9GMMVt0Sn4nAeCzk+PxN5MLZOXI9hmMj1+calbl45Ctvhfj8qWi71X2XRG/Dl9wOvvkJe+wG7CUjs7eBVSMK+I/fCPjN/+3v9mZ3X/xx/oz5+hHu3A+/0f8C")]; this.addPalette("gmdlBottom Navigation","GMDL / Bottom Navigation",a||!1,mxUtils.bind(this,function(a){for(var b=0;b<e.length;b++)a.appendChild(e[b](a))}))};Sidebar.prototype.addGMDLBottomSheetsPalette=function(a){var e=[this.addDataEntry("gmdl google media design library bottom sheets bottom sheet",358,320,"Bottom Sheet","7ZbRbtsgFIafxrcVgbjJLud0Sau12rQ9wETjE4yKwQLSOnv6gSFpFhwJaUsvqiaKxDnnPyfm+4VMQRZtv9K0ax5UDaIgXwqy0ErZsGr7BQhRYMTrgtwUGCP3K/DyTHUyVFFHNUib04BDwzMVWwiZkDB2J2KipqYBL0cFqajgTLr12s0H7RIbJe1P/ttrJ9jFpqGdDzSsrS9zIRZKKD3MIpvh42VWqyfYV6SSEHpr9RL/yQ3YasOf4QeYMN9n4+OCttCf3fKQivtdgWrB6p2TvPDaNkFBynloa4CzJraRyApRExLs0PtK0C0ixHGgJAH6rQPpBTIhe8JqlMkxwJjaeyBgY6MDR4jnyH9PnJnmosPj6PYNEdAuhmUIj8BihFKw/4PrNOH6FaA7i7TtmT9TV6ytxdWTV2bwdfSW02qGqhSyoI8gvivDLVc+rcPuKo+Tr6m4P6m3vK79Mx0En+O8Q8F0dM0lux/m3+C3cewajTh2GcPKxLA7+aj6PMf4IP2wzIeTEc/wZTy7Tjy7pZKprTV5tjVBnWkcWn6aleX7NS73sOF/N26WGPcAxoBk7h2d5Vx7kH8cOi9+w0M3T7xbKcXc3nGV5x0b5L86sTWZ7jls7gr0ft273GvOha+X86H21939Dw=="), @@ -5352,16 +5358,17 @@ this.createVertexTemplateEntry(b+"BlockStorage.svg;",a,a,"","Block Storage",!1,n a,a,"","Gateway Appliance",!1,null,this.getTagsForStencil("vpc virtual private cloud ","gateway appliance",e).join(" ")),this.createVertexTemplateEntry(b+"Image.svg;",a,a,"","Image",!1,null,this.getTagsForStencil("vpc virtual private cloud ","image",e).join(" ")),this.createVertexTemplateEntry(b+"Instance.svg;",a,a,"","Instance",!1,null,this.getTagsForStencil("vpc virtual private cloud ","instance",e).join(" ")),this.createVertexTemplateEntry(b+"Internet.svg;",a,a,"","Internet",!1,null,this.getTagsForStencil("vpc virtual private cloud ", "internet",e).join(" ")),this.createVertexTemplateEntry(b+"InternetServices.svg;",a,a,"","Internet Services",!1,null,this.getTagsForStencil("vpc virtual private cloud ","internet services",e).join(" ")),this.createVertexTemplateEntry(b+"Key.svg;",a,a,"","Key",!1,null,this.getTagsForStencil("vpc virtual private cloud ","key",e).join(" ")),this.createVertexTemplateEntry(b+"LoadBalancer.svg;",a,a,"","Load Balancer",!1,null,this.getTagsForStencil("vpc virtual private cloud ","load balancer",e).join(" ")), this.createVertexTemplateEntry(b+"Marketplace.svg;",a,a,"","Marketplace",!1,null,this.getTagsForStencil("vpc virtual private cloud ","marketplace",e).join(" ")),this.createVertexTemplateEntry(b+"PublicGateway.svg;",a,a,"","Public Gateway",!1,null,this.getTagsForStencil("vpc virtual private cloud ","public gateway",e).join(" ")),this.createVertexTemplateEntry(b+"Router.svg;",a,a,"","Router",!1,null,this.getTagsForStencil("vpc virtual private cloud ","router",e).join(" ")),this.createVertexTemplateEntry(b+ -"SecurityGroupRules.svg;",a,a,"","Security Group Rules",!1,null,this.getTagsForStencil("vpc virtual private cloud ","security group rules",e).join(" ")),this.createVertexTemplateEntry(b+"VPN.svg;",a,a,"","VPN",!1,null,this.getTagsForStencil("vpc virtual private cloud ","vpn virtual private network",e).join(" ")),this.createVertexTemplateEntry("rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#417CB9;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=0;strokeWidth=2;", +"SecurityGroupRules.svg;",a,a,"","Security Group Rules",!1,null,this.getTagsForStencil("vpc virtual private cloud ","security group rules",e).join(" ")),this.createVertexTemplateEntry(b+"VPN.svg;",a,a,"","VPN",!1,null,this.getTagsForStencil("vpc virtual private cloud ","vpn virtual private network",e).join(" ")),this.createVertexTemplateEntry("swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=12;strokeColor=#417CB9;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=0;strokeWidth=2;", 200,200,"CLOUD UNIVERSE","Cloud Universe",!0,null,this.getTagsForStencil("vpc virtual private cloud ","",e).join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=none;endFill=0;rounded=0;strokeColor=#EEBC25;strokeWidth=2;",a,a,"","Data Connector",null,e+"data connector"),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=classicThin;endFill=1;rounded=0;strokeColor=#0076BE;strokeWidth=2;",a,a,"","Directional Private Connector", -null,e+"directional private connector"),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=classicThin;endFill=1;rounded=0;strokeColor=#FD0000;strokeWidth=2;",a,a,"","Directional Public Connector",null,e+"directional public connector"),this.addEntry(e+"ibm cloud",function(){var a=new mxCell("IBM CLOUD",new mxGeometry(0,11,200,200),"rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#417CB9;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;spacingTop=5;dashed=0;strokeWidth=2;"); -a.vertex=!0;var c=new mxCell("",new mxGeometry(20,0,30,22),b+"IBMCloud.svg;");c.vertex=!0;return d.createVertexTemplateFromCells([a,c],200,211,"IBM Cloud")}),this.createVertexTemplateEntry("rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#417CB9;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=0;strokeWidth=2;",200,200,"OTHER NETWORK","Cloud Universe",!0,null,this.getTagsForStencil("vpc virtual private cloud ","",e).join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=classicThin;endFill=1;rounded=0;strokeColor=#0076BE;strokeWidth=2;startArrow=classicThin;startFill=1;", -a,a,"","Private Connector",null,e+"directional private connector"),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=classicThin;endFill=1;rounded=0;strokeColor=#FD0000;strokeWidth=2;startArrow=classicThin;startFill=1;",a,a,"","Public Connector",null,e+"directional private connector"),this.createVertexTemplateEntry("rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#417CB9;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=1;strokeWidth=2;", -200,200,"REGION","Region",!0,null,this.getTagsForStencil("vpc virtual private cloud ","",e).join(" ")),this.createVertexTemplateEntry("rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#FD0000;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=center;spacingLeft=5;dashed=1;dashPattern=5 2;labelPosition=center;verticalLabelPosition=bottom;strokeWidth=2;",200,200,"SECURITY GROUP","Security Group",!0,null,this.getTagsForStencil("vpc virtual private cloud ","",e).join(" ")), -this.createVertexTemplateEntry("rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#417CB9;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=0;strokeWidth=2;",200,200,"SERVICES","Services",!0,null,this.getTagsForStencil("vpc virtual private cloud ","",e).join(" ")),this.addEntry(e+"subnet",function(){var a=new mxCell("SUBNET",new mxGeometry(0,11,200,200),"rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#FD0000;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;spacingTop=8;dashed=0;strokeWidth=2;"); -a.vertex=!0;var c=new mxCell("",new mxGeometry(20,0,19,26),b+"Subnet.svg;");c.vertex=!0;return d.createVertexTemplateFromCells([a,c],200,211,"Subnet")}),this.addEntry(e+"virtual private cloud",function(){var a=new mxCell("VIRTUAL PRIVATE CLOUD",new mxGeometry(0,11,200,200),"rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#417CB9;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;spacingTop=5;dashed=0;strokeWidth=2;");a.vertex=!0;var c=new mxCell("", -new mxGeometry(20,0,30,22),b+"VirtualPrivateCloud.svg;");c.vertex=!0;return d.createVertexTemplateFromCells([a,c],200,211,"Virtual Private Cloud")}),this.createVertexTemplateEntry("rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#417CB9;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=1;strokeWidth=2;",200,200,"ZONE","Zone",!0,null,this.getTagsForStencil("vpc virtual private cloud ","",e).join(" "))];this.addPalette("ibmVPC","IBM / VPC", -!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))}})();(function(){Sidebar.prototype.addInfographicPalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;shape=mxgraph.infographic.",e=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;shape=mxgraph.basic.";this.addPaletteFunctions("infographic","Infographic",!1,[this.createVertexTemplateEntry(e+"pie;fillColor=#10739E;strokeColor=none;startAngle=0.2;endAngle=0.9;",100,100,"","Pie",null, +null,e+"directional private connector"),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=classicThin;endFill=1;rounded=0;strokeColor=#FD0000;strokeWidth=2;",a,a,"","Directional Public Connector",null,e+"directional public connector"),this.addEntry(e+"ibm cloud",function(){var a=new mxCell("IBM CLOUD",new mxGeometry(0,11,200,200),"swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=12;strokeColor=#417CB9;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;spacingTop=5;dashed=0;strokeWidth=2;"); +a.vertex=!0;var c=new mxCell("",new mxGeometry(20,-11,30,22),b+"IBMCloud.svg;part=1;");c.vertex=!0;a.insert(c);return d.createVertexTemplateFromCells([a],200,211,"IBM Cloud")}),this.createVertexTemplateEntry("swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=12;strokeColor=#417CB9;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=0;strokeWidth=2;",200,200,"OTHER NETWORK", +"Cloud Universe",!0,null,this.getTagsForStencil("vpc virtual private cloud ","",e).join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=classicThin;endFill=1;rounded=0;strokeColor=#0076BE;strokeWidth=2;startArrow=classicThin;startFill=1;",a,a,"","Private Connector",null,e+"directional private connector"),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=classicThin;endFill=1;rounded=0;strokeColor=#FD0000;strokeWidth=2;startArrow=classicThin;startFill=1;", +a,a,"","Public Connector",null,e+"directional private connector"),this.createVertexTemplateEntry("swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=12;strokeColor=#417CB9;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=1;strokeWidth=2;",200,200,"REGION","Region",!0,null,this.getTagsForStencil("vpc virtual private cloud ","",e).join(" ")),this.createVertexTemplateEntry("rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#FD0000;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=center;spacingLeft=5;dashed=1;dashPattern=5 2;labelPosition=center;verticalLabelPosition=bottom;strokeWidth=2;", +200,200,"SECURITY GROUP","Security Group",!0,null,this.getTagsForStencil("vpc virtual private cloud ","",e).join(" ")),this.createVertexTemplateEntry("swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=12;strokeColor=#417CB9;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=0;strokeWidth=2;",200,200,"SERVICES","Services",!0,null,this.getTagsForStencil("vpc virtual private cloud ", +"",e).join(" ")),this.addEntry(e+"subnet",function(){var a=new mxCell("SUBNET",new mxGeometry(0,11,200,200),"swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=12;strokeColor=#FD0000;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;spacingTop=8;dashed=0;strokeWidth=2;");a.vertex=!0;var c=new mxCell("",new mxGeometry(20,-11,19,26),b+"Subnet.svg;part=1;");c.vertex=!0; +a.insert(c);return d.createVertexTemplateFromCells([a],200,211,"Subnet")}),this.addEntry(e+"virtual private cloud",function(){var a=new mxCell("VIRTUAL PRIVATE CLOUD",new mxGeometry(0,11,200,200),"swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=12;strokeColor=#417CB9;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;spacingTop=5;dashed=0;strokeWidth=2;");a.vertex= +!0;var c=new mxCell("",new mxGeometry(20,-11,30,22),b+"VirtualPrivateCloud.svg;part=1;");c.vertex=!0;a.insert(c);return d.createVertexTemplateFromCells([a],200,211,"Virtual Private Cloud")}),this.createVertexTemplateEntry("swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=12;strokeColor=#417CB9;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=1;strokeWidth=2;", +200,200,"ZONE","Zone",!0,null,this.getTagsForStencil("vpc virtual private cloud ","",e).join(" "))];this.addPalette("ibmVPC","IBM / VPC",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))}})();(function(){Sidebar.prototype.addInfographicPalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;shape=mxgraph.infographic.",e=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;shape=mxgraph.basic.";this.addPaletteFunctions("infographic","Infographic",!1,[this.createVertexTemplateEntry(e+"pie;fillColor=#10739E;strokeColor=none;startAngle=0.2;endAngle=0.9;",100,100,"","Pie",null, null,this.getTagsForStencil("mxgraph.infographic","pie","").join(" ")),this.createVertexTemplateEntry(e+"arc;strokeColor=#10739E;strokeWidth=6;startAngle=0.3;endAngle=0.1;",100,100,"","Arc",null,null,this.getTagsForStencil("mxgraph.infographic","arc","").join(" ")),this.createVertexTemplateEntry(e+"partConcEllipse;fillColor=#10739E;strokeColor=none;startAngle=0.25;endAngle=0.1;arcWidth=0.5;",100,100,"","Partial Concentric Ellipse",null,null,this.getTagsForStencil("mxgraph.infographic","partConcEllipse", "").join(" ")),this.createVertexTemplateEntry(a+"parallelogram;dx=15;fillColor=#10739E;strokeColor=none;",100,70,"","Trapezoid",null,null,this.getTagsForStencil("mxgraph.infographic","partConcEllipse","").join(" ")),this.createVertexTemplateEntry("html=1;shape=mxgraph.infographic.ribbonSimple;notch1=20;notch2=20;fillColor=#10739E;strokeColor=none;align=center;verticalAlign=middle;fontColor=#ffffff;fontSize=14;fontStyle=1;",200,40,"Label","Ribbon",null,null,this.getTagsForStencil("mxgraph.infographic", "ribbonRolled","").join(" ")),this.createVertexTemplateEntry("html=1;shape=mxgraph.infographic.ribbonRolled;dx=185;dy=15;fillColor=#10739E;strokeColor=none;align=center;verticalAlign=middle;fontColor=#ffffff;fontSize=14;fontStyle=1;",200,70,"Label","Ribbon (rolled)",null,null,this.getTagsForStencil("mxgraph.infographic","ribbonRolled","").join(" ")),this.createVertexTemplateEntry("html=1;shape=mxgraph.infographic.ribbonDoubleFolded;dx=25;dy=15;fillColor=#10739E;strokeColor=none;align=center;verticalAlign=middle;fontColor=#ffffff;fontSize=14;fontStyle=1;", @@ -6927,15 +6934,15 @@ this.createEdgeTemplateEntry("edgeStyle=none;html=1;endArrow=open;endSize=12;das this.addDataEntry("sysml block binding connector",160,0,"Binding Connector","zVSxboMwEP0aj5XAVNlDknaqVClDZwcuxorxpceRknx9DbgQmqTKkKEDku/53jN+72SRLMrmldS+eMMcrEhWIlkQIverslmAtUJGJhfJUkgZ+U/Ilxu7cbcb7RWB43sIsicclK2hR4ScqXIvktR6gXRawWet7ADpSUOoWrWKjzaoHYDYZMrOrdHOQxtkxtJ3Flz6yy7jVtXlcyL88qVDBy2Sa1gHESQuUKNTdjWiacWEO/gwORe+Rw5Ht8ybVnRQ8OEVsASmo28hsIrNYcpTVV/qoW+gvqPximNLhTVlENBzr38am6A8i6barEgDXxD94uz/RqiL7nqMyUWM8UUUBJU5qU1XRtMEVEjHwrZN8XdojN0EqA3YVGU7TVi7fIEWaYxsi47X5tSKx+GaGToHGYcjh1GMWnlobqYkr6cUCE+BcXdoE1f/sPD5MRaS0cV/9/BBFvpyfKj6oT1/x74B"), this.addDataEntry("sysml block bidirectional connector",160,0,"Bidirectional Connector","3VXBboMwDP2aXCatCrD1XmjX06RJ/YIUXIgWYhRMR/v1C5BBGe1UTZ1U7QCKH89O/J5FWBDl9dqIInvFBBQLViyIDCJ1q7yOQCnmc5mwYMl8n9uH+S8XvnrtV14IA5quSfC7hL1QFXRIbGtwFizsW5QlxlKQRN3RSjooR9uDIRkLtVAy1RbaIhHmLAgzym0XS88uQScLY/DDhho1NEiSwsYVQUMZpqiFWg1o2G3U8C521EKunTVgDmQOlmJA2aPux3mi7MK05/WpbyhtxYFSYmVicOipZF/E2lWe83FtEiYFmiTaxcn5Bqh14LwbwcQNPpt5E+0NlPIotm3Ix5ILZ4eCnVUr/O4SYWFRJbagQhG/pwYrnUSo0Awe7VDTRh6b4p7rNEatISa3ZT9UvCkP9UWj/PNGuYRHl3G1byNhf1DxaaJicUsN+0n/5zI+nxvGh98IaWSa3fs0/pWK8+kw+rfU8M6m8UYy2nC4A7sf6ekV+Qk="), this.addDataEntry("sysml block unidirectional connector",160,0,"Unidirectional Connector","3VXBboMwDP2aXCatCrD1XmjX06RJ/YIUXIgWYhRMR/v1C5BBGe1UTZ1U7QCKH89O/J5FWBDl9dqIInvFBBQLViyIDCJ1q7yOQCnmc5mwYMl8n9uH+S8XvnrtV14IA5quSfC7hL1QFXRIbGtwFizsW5QlxlKQRN3RSjooR9uDIRkLtVAy1RbaIhHmLAgzym0XS88uQScLY/DDhho1NEiSwsYVQUMZpqiFWg1o2G3U8C521EKunTVgDmQOlmJA2aPux3mi7MK05/WpbyhtxYFSYmVicOipZF/E2lWe83FtEiYFmiTaxcn5Bqh14LwbwcQNPpt5E+0NlPIotm3Ix5ILZ4eCnVUr/O4SYWFRJbagQhG/pwYrnUSo0Awe7VDTRh6b4p7rNEatISa3ZT9UvCkP9UWj/PNGuYRHl3G1byNhf1DxaaJicUsN+0n/5zI+nxvGh98IaWSa3fs0/pWK8+kw+rfU8M6m8UYy2nC4A7sf6ekV+Qk=")]; -this.addPalette("sysmlBlocks","SysML / Blocks",a||!1,mxUtils.bind(this,function(a){for(var b=0;b<d.length;b++)a.appendChild(d[b](a))}))};Sidebar.prototype.addSysMLPortsAndFlowsPalette=function(a){var e=this,d=[this.addEntry("sysml port flow port",function(){var a=new mxCell("Transmission",new mxGeometry(0,0,160,60),"html=1;shape=mxgraph.sysml.port1;fontStyle=1;whiteSpace=wrap;align=center;");a.vertex=!0;var c=new mxCell("p1",new mxGeometry(0,20,20,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=rect;html=1;resizable=1;align=right;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10;"); -c.geometry.relative=!1;c.setConnectable(!1);c.vertex=!0;a.insert(c);c=new mxCell("p2",new mxGeometry(140,20,20,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=rect;html=1;resizable=1;labelBackgroundColor=none;fontSize=10;");c.geometry.relative=!1;c.setConnectable(!1);c.vertex=!0;a.insert(c);return e.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,"Port")}),this.addEntry("sysml port flow port conjugated",function(){var a=new mxCell("Transmission",new mxGeometry(0, -0,200,60),"html=1;shape=mxgraph.sysml.port2;fontStyle=1;spacingRight=20;whiteSpace=wrap;align=center;");a.vertex=!0;var c=new mxCell("p1 : ~T1",new mxGeometry(0,20,20,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=rect;html=1;resizable=1;align=right;verticalAlign=bottom;labelPositin=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10");c.geometry.relative=!1;c.setConnectable(!1);c.vertex=!0;a.insert(c);c=new mxCell("p2 : ~T2",new mxGeometry(140,20,60,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=rect;html=1;resizable=1;labelBackgroundColor=none;fontSize=10"); -c.geometry.relative=!1;c.setConnectable(!1);c.vertex=!0;a.insert(c);return e.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,"Port (Conjugated Ports)")}),this.addDataEntry("sysml port flow port flow property",160,80,"Ports with Flow Properties","7ZTLboMwEEW/xtuI4KbqtoE2m1aqlP6AAxOwanuQPWkgX18DJi9S9aFI3XSBZN87V5o5g8x4ouuFFVX5jDkoxh8YTywi9SddJ6AUiyOZM56yOI78x+LHT9xp50aVsGDoO4G4D7wLtYFeebXCOC2dk2h601GjglmS9i2mU8bnrhRVq+q6aLufuMZpNanQEvfuGg0tQ66t3paSYFmJrBW2PuA1oWRh/DXzvYL1QugFLEH96TydFIZZAGog2/iSrcypDBW3/cxRCbIoQ+wuaML192IfPdDxhwDoMiw+glVNR4gsOLkTq+4a+aGOkA0D276teTupzIS6D/oKiVB7Q4kVqBd0ktol8FTB+rj+6cwmrIbQXGRvhcWNyRNU6KGmBg0MC5G7bh8BRYbGQEah1/2v8tUC4ssLaELgCpxvxpzjf86nnGdX4Dwbc+a/4XyG7TLmvyM2BIZnIRDkPyfor4enufNOXu4P"), +this.addPalette("sysmlBlocks","SysML / Blocks",a||!1,mxUtils.bind(this,function(a){for(var b=0;b<d.length;b++)a.appendChild(d[b](a))}))};Sidebar.prototype.addSysMLPortsAndFlowsPalette=function(a){var e=this,d=[this.addEntry("sysml port flow port",function(){var a=new mxCell("Transmission",new mxGeometry(0,0,160,60),"html=1;shape=mxgraph.sysml.port1;fontStyle=1;whiteSpace=wrap;align=center;points=[[0,0.5,0],[1,0.5,0]];");a.vertex=!0;var c=new mxCell("p1",new mxGeometry(0,20,20,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=rect;points=[[0,0.5,0]];html=1;resizable=1;align=right;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10;part=1;"); +c.geometry.relative=!1;c.vertex=!0;a.insert(c);c=new mxCell("p2",new mxGeometry(140,20,20,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=rect;points=[[1,0.5,0]];html=1;resizable=1;labelBackgroundColor=none;fontSize=10;part=1;");c.geometry.relative=!1;c.vertex=!0;a.insert(c);return e.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,"Port")}),this.addEntry("sysml port flow port conjugated",function(){var a=new mxCell("Transmission",new mxGeometry(0,0,200, +60),"html=1;shape=mxgraph.sysml.port2;fontStyle=1;spacingRight=20;whiteSpace=wrap;align=center;");a.vertex=!0;var c=new mxCell("p1 : ~T1",new mxGeometry(0,20,20,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=rect;points=[[0,0.5,0]];html=1;resizable=1;align=right;verticalAlign=bottom;labelPositin=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10;part=1;");c.geometry.relative=!1;c.vertex=!0;a.insert(c);c=new mxCell("p2 : ~T2",new mxGeometry(140,20,60,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=rect;points=[[1,0.5,0]];html=1;resizable=1;labelBackgroundColor=none;fontSize=10;part=1;"); +c.geometry.relative=!1;c.vertex=!0;a.insert(c);return e.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,"Port (Conjugated Ports)")}),this.addDataEntry("sysml port flow port flow property",160,80,"Ports with Flow Properties","7ZTLboMwEEW/xtuI4KbqtoE2m1aqlP6AAxOwanuQPWkgX18DJi9S9aFI3XSBZN87V5o5g8x4ouuFFVX5jDkoxh8YTywi9SddJ6AUiyOZM56yOI78x+LHT9xp50aVsGDoO4G4D7wLtYFeebXCOC2dk2h601GjglmS9i2mU8bnrhRVq+q6aLufuMZpNanQEvfuGg0tQ66t3paSYFmJrBW2PuA1oWRh/DXzvYL1QugFLEH96TydFIZZAGog2/iSrcypDBW3/cxRCbIoQ+wuaML192IfPdDxhwDoMiw+glVNR4gsOLkTq+4a+aGOkA0D276teTupzIS6D/oKiVB7Q4kVqBd0ktol8FTB+rj+6cwmrIbQXGRvhcWNyRNU6KGmBg0MC5G7bh8BRYbGQEah1/2v8tUC4ssLaELgCpxvxpzjf86nnGdX4Dwbc+a/4XyG7TLmvyM2BIZnIRDkPyfor4enufNOXu4P"), this.createVertexTemplateEntry("shape=rect;html=1;overflow=fill;whiteSpace=wrap;",160,70,'<p style="margin:0px;margin-top:4px;text-align:center;"><b>Transmission</b></p><hr/><p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;"><i>ports</i></p><p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">p1 : ITransCmd</p>',"Port (Compartment Notation)",null,null,this.getTagsForStencil("","","sysml port flow port compartment notation").join(" ")),this.addDataEntry("sysml port flow nested port", 160,60,"Nested Port","7ZXLboMwEEW/xtsIcJp9gTabVoqU/oADE7DqB7KdBvL1tbHJk6iPdFVlgeS54yvPnLEwwhlv54o09assgSH8hHCmpDR+xdsMGENJREuEc5Qkkf1Q8nwlG/fZqCEKhPmOIfGGD8I24JU3RYTmVGsqhU9q07GQrA23JeYxwqmuSeNU3lau+onuNGcTAdpAuZDKnp6upTDLYHaWbU0NLBtSOGFrXVYjjFbChoUtGJQVQkGgDLRXm+ql0NEcJAejOrtlS0tThx0z33hUA63qYBs0on1c7a0HRHYRKI0TwxfEmngSX5BSoOmOrPowsm0dkRtaVr6w1PVKC8Ieg85pWTpfysgK2EJqatwscM5gfbz/5SxtZDOYUlK8V0puRJlJJi3WXEgBw0jorp9IgFFIIaAwodb9jflqBMn4CLpgmN5OejpGOrmTPiWN/+BOP4yRxnfSp6Sns9tJz0ZI/4bzGbZ/gTkYhjdp+JP8/H7b8PCC9rmTB/YT"), -this.addEntry("sysml port flow proxy port",function(){var a=new mxCell("Transmission",new mxGeometry(0,0,160,60),"html=1;shape=mxgraph.sysml.port1;fontStyle=1;whiteSpace=wrap;align=center;");a.vertex=!0;var c=new mxCell("<<proxy>>\np1",new mxGeometry(0,20,20,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=rect;html=1;resizable=1;align=right;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10");c.geometry.relative= -!1;c.setConnectable(!1);c.vertex=!0;a.insert(c);return e.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,"Proxy Port")}),this.addEntry("sysml port flow full port",function(){var a=new mxCell("Transmission",new mxGeometry(0,0,160,60),"html=1;shape=mxgraph.sysml.port1;fontStyle=1;whiteSpace=wrap;align=center;");a.vertex=!0;var c=new mxCell("<<full>>\np1",new mxGeometry(0,20,20,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=rect;html=1;resizable=1;align=right;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10"); -c.geometry.relative=!1;c.setConnectable(!1);c.vertex=!0;a.insert(c);return e.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,"Full Port")}),this.createVertexTemplateEntry("shape=rect;html=1;overflow=fill;whiteSpace=wrap;",200,100,'<p style="margin:0px;margin-top:4px;text-align:center;"><b>Transmission</b></p><hr/><p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;"><i>flow properties</i></p><p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">in gearSelect: Gear<br/>in engineTorque: Torque<br/>out wheelsTorque: Torque</p>', +this.addEntry("sysml port flow proxy port",function(){var a=new mxCell("Transmission",new mxGeometry(0,0,160,60),"html=1;shape=mxgraph.sysml.port1;fontStyle=1;whiteSpace=wrap;align=center;");a.vertex=!0;var c=new mxCell("<<proxy>>\np1",new mxGeometry(0,20,20,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=rect;points=[[0,0.5,0]];html=1;resizable=1;align=right;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10;part=1;"); +c.geometry.relative=!1;c.vertex=!0;a.insert(c);return e.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,"Proxy Port")}),this.addEntry("sysml port flow full port",function(){var a=new mxCell("Transmission",new mxGeometry(0,0,160,60),"html=1;shape=mxgraph.sysml.port1;fontStyle=1;whiteSpace=wrap;align=center;");a.vertex=!0;var c=new mxCell("<<full>>\np1",new mxGeometry(0,20,20,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=rect;points=[[0,0.5,0]];html=1;resizable=1;align=right;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10;paart=1;"); +c.geometry.relative=!1;c.vertex=!0;a.insert(c);return e.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,"Full Port")}),this.createVertexTemplateEntry("shape=rect;html=1;overflow=fill;whiteSpace=wrap;",200,100,'<p style="margin:0px;margin-top:4px;text-align:center;"><b>Transmission</b></p><hr/><p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;"><i>flow properties</i></p><p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">in gearSelect: Gear<br/>in engineTorque: Torque<br/>out wheelsTorque: Torque</p>', "Flow Property",null,null,this.getTagsForStencil("","","sysml port flow flow property").join(" ")),this.createVertexTemplateEntry("shape=rect;html=1;overflow=fill;whiteSpace=wrap;",250,150,'<p style="margin:0px;margin-top:4px;text-align:center;"><b>Transmission</b></p><hr/><p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;"><i>operations</i></p><p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">prov Boolean selectGear(g : Gear)<br/>reqd Torque getTorque()</p><hr/><p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;"><i>properties</i></p><p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">prov temperature : Integer<br/>reqd geometry : Spline</p>', "Required and Provided Features",null,null,this.getTagsForStencil("","","sysml port flow required provided feature").join(" ")),this.createVertexTemplateEntry("shape=rect;html=1;overflow=fill;whiteSpace=wrap;",200,80,'<p style="margin:0px;margin-top:4px;text-align:center;"><<interfaceBlock>>\n<b>ISpeedObserver</b></p><hr/><p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">notifySpeedChange(): void</p>',"Interface Block",null,null,this.getTagsForStencil("","","sysml port flow interface block").join(" ")), this.addDataEntry("sysml port flow item flow",120,180,"Item Flow","1ZXBbtswDIafRscFjt0Gu8bJ2ks3DEgO21GxGVuYLHkUk9h9+lG2nMRNuhVYVmAHA+JPUhY/UrZIFlXziLIuP9sctEg+iWSB1lK/qpoFaC3iSOUiWYo4jvgR8cMr3mnnjWqJYOgtCXGfsJd6B70CphDJnDVeKAMinok4mUYiSftQR60OoSVVfODllH2ulLVXq6bwtUxc6yo9UQTVg7YHDthaQ6uQ6hO2LC8VsrUK1rrtdrA7Pnh6KDl3VcvMSwfekjWpVWHYzLg2wOOB9oAEzav1d1Io/hFsBYQth4SEgCc6qJzKXvoYpBJUUYZNZkGTrreL40YntrwIeK+jTi5Qn7ElNK7HvkZpXKWcU9b8I+JfxsSVeQ/gbfBeIX7Ubo387gL52uJPXr/kCnkBAytjeeqT9Az1wAH706Vg8jmihzwEQ6PoG5vR5D5Y30MuY8H2zOVN7ztdKP/uEUxnd5jB6H6SxAJoNEdvQI6gJan9ePe/4Xl/wbO+QIng1LPcdGZ0naOGrcfoeNqUKZ46a9ldAz9aKpN6HiLJ+jnUcgP6q3WK/J045g/BTy/cG0tkqyEvldmPAu3O5AurLZ561t0P9Qz9u7syMmsMZBROf/x4/mni7377ifkQMm7ejdl7d2MM9r9tyI36webpP935Rr/xXw=="), @@ -6971,7 +6978,7 @@ this.addPalette("sysmlConstraint Blocks","SysML / Constraint Blocks",a||!1,mxUti "Control Operator",null,null,this.getTagsForStencil("","","sysml activity control operator").join(" ")),this.createVertexTemplateEntry("html=1;shape=mxgraph.sysml.package;align=left;spacingLeft=5;verticalAlign=top;spacingTop=-3;labelX=135;html=1;overflow=fill;",250,120,'<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;"><b>act</b> [ControlOperator]</p>',"Control Operator",null,null,this.getTagsForStencil("","package","sysml activity control operator").join(" ")),this.addDataEntry("sysml activity decision node", 200,80,"Decision Node","7ZXJboMwEIafxneWpOo1kDSXVoqUJzBhBFaNB5kh29PXYIclTVS6ST30gDTzz+JhPpBZGBfHteZl/oIpSBauWBhrRLJWcYxBShZ4ImXhkgWBZx4WPN2J+m3UK7kGRVMKAluw57IGq1ihopN0QpXzsjF1jkVSVyyMcirMoEvfmHvQJHZcPvME5AYrQQKViSVIhMUgYSFFpgo7FWFpIu5kE4fj3elbyY2+BiyA9MmkuIJH+3Leyboz5x5ESvlYykFkOY01Xlk/6/r2izKG29XtvYUf7w3SDLbOBZngYdULwxW2MWPnqMUZFXETiHizrmbpduzxGof7BZUutG4bKFRNa421SqGZ0zOebMBEfPeatXqMEnWfWxHXdKnHEtRF24pzM7cfdKCa1xlhqrDWOxh9RhPIaZCcxH7c6hYJV7pBYTp2xH3vCp4ZNgNyWVf8umMnIZ29RzqPsprrlM2X36Z7ATiRpWPxGZam+q9SC7zxj/rwaxDntyCCrOCf4VcZ/jQz4/b3m00fXn9v"), this.createVertexTemplateEntry("html=1;shape=mxgraph.sysml.flowFinal;strokeWidth=2;verticalLabelPosition=bottom;verticalAlignment=top;",40,40,"","Flow Final",null,null,this.getTagsForStencil("","flowFinal","sysml activity flow final").join(" ")),this.addDataEntry("sysml activity fork node",200,80,"Fork Node","7ZZNb4JAEIZ/DXdYrPZq0XppExMPPa8yhU2XHbKMn7++Czt+QDQ1RpMeJCHZfeeD2feBhCBOis3EyjL/xBR0EI+DOLGI5FfFJgGtAxGqNIhHgRChuwPxfiEaNdGwlBYMXVMgfMFK6iV4xQsVbTULVS7Lemlh4Vq+5VS4KUeRW34rrRPUaJvEOGwup6/AklpI/SHnoKdYKVJoXM4cibA4SRhqlZnCj0pYugiP4+KwuXikRuLzTAALILt1KVzQ9ycO1yql3Es9r+Sgspx7vHKWrPw+O/Q5uuUWbNh58+K/zYM0gxlvQc9xPT4Kp1Y2MbfO0aodGpK6Fk06tLbRDZq6wuLSpFA/vva5Imlpn4ElmEaz+ANffPZ4nzVTu3qESBw8ridrOVzh0i6g9VpcYboFLUmt2q3OmcqlU1Suowi3TKaDwc2aAXFSh8ThqVfB6d0fzv61baNh47touhhcxb+DwF+MCJkCQ4keBuXlCeVWKPHDoPSfUG6F8vIwKIMnlFuhDO4FxW2Pf2I+/fRH7Rc="), -this.createVertexTemplateEntry("shape=ellipse;html=1;illColor=#000000;strokeWidth=2;verticalLabelPosition=bottom;verticalAlignment=top;",40,40,"","Initial Node",null,null,this.getTagsForStencil("","","sysml activity initial node").join(" ")),this.addDataEntry("sysml activity join node",200,80,"Join Node","7ZZNb8IwDIZ/Ta6oNBvsugLjskmTdtg5tKbNltZVahjs189NMigfk5AAaQcqVXLs1076PjlUyFG5mlpVFy+YgRFyIuTIIpKPytUIjBFxpDMhxyKOI35F/PRHte+qUa0sVHRKQ+wblsoswGfEMPlAXTU1pJzo9XpiOPaihtYmiJpC1W1oIeVtkoJKPvm4z+FcGzNCg9YJZeQezi/Bkk6VeVYzMK/YaNJYsWaGRFiywLSFRKWfucVFlXVmzN3TmfFodN72EtacDV/ANVj96YJLBQumgCWQXbPkt0EOfMuXzqjwuTufKUDnRRjy4L2MVOPX+WbQ1mEOgsnHDZeHhu+bC1kOb2EJZoZfk22ia7WrcVyg1d9YkeJC4syDdrPWdaiyR2udCmtgz5KGLH7Ce/hO6TVv+rvdrB9v7GzPsGNmgwubws6lOcFfC0aRXu6OOmZfaH3lm0dbLnEUHF8HJnsASNkcKDTtMdic4iQsd5fH8ntbnenK0h6IDpoKKzhAdwjKTfl3qAKa/tXQ3N/QnIdGXg3N4IbmPDT3V0MzvKE5D83wUmh4uf2f8/Lu794P"), +this.createVertexTemplateEntry("shape=ellipse;html=1;illColor=#000000;strokeWidth=2;verticalLabelPosition=bottom;verticalAlignment=top;perimeter=ellipsePerimeter;",40,40,"","Initial Node",null,null,this.getTagsForStencil("","","sysml activity initial node").join(" ")),this.addDataEntry("sysml activity join node",200,80,"Join Node","7ZZNb8IwDIZ/Ta6oNBvsugLjskmTdtg5tKbNltZVahjs189NMigfk5AAaQcqVXLs1076PjlUyFG5mlpVFy+YgRFyIuTIIpKPytUIjBFxpDMhxyKOI35F/PRHte+qUa0sVHRKQ+wblsoswGfEMPlAXTU1pJzo9XpiOPaihtYmiJpC1W1oIeVtkoJKPvm4z+FcGzNCg9YJZeQezi/Bkk6VeVYzMK/YaNJYsWaGRFiywLSFRKWfucVFlXVmzN3TmfFodN72EtacDV/ANVj96YJLBQumgCWQXbPkt0EOfMuXzqjwuTufKUDnRRjy4L2MVOPX+WbQ1mEOgsnHDZeHhu+bC1kOb2EJZoZfk22ia7WrcVyg1d9YkeJC4syDdrPWdaiyR2udCmtgz5KGLH7Ce/hO6TVv+rvdrB9v7GzPsGNmgwubws6lOcFfC0aRXu6OOmZfaH3lm0dbLnEUHF8HJnsASNkcKDTtMdic4iQsd5fH8ntbnenK0h6IDpoKKzhAdwjKTfl3qAKa/tXQ3N/QnIdGXg3N4IbmPDT3V0MzvKE5D83wUmh4uf2f8/Lu794P"), this.addDataEntry("sysml activity is control",300,60,"Is Control","zVTLboMwEPwaXyMCbaMeA0lzqlQpl/bowApbMjYymwD5+q7BQEgTKYdW6gFpd/bh8Qwyi5Ki2VleineTgWLRlkWJNQb7qGgSUIqFgcxYtGFhGNDHwrc71WVXDUpuQeMjA2E/cOLqCD2yTlEa3cMVtsrDAgsit1myKK4ELx1aNLnjvajaqlALWSVGozXUFddCIuxLnrq2mpoI40rmmtKUmIElwJ8MFqG5y76DPPUdmALQttTiB177ywW1zFD4AX/hQIDMhd/y4jFe9Xk+bpqkocCrc1up6IdSbBWn/sqrzQ/BIMth71NQB1NvJyC+ULOrUSyMlWdax52AFXKLa2u7iimBhIutOeoMHJvAjelsqGuj3U6npEy5WnuhDwbRFK61kfg5jFH85eLF83DMXp4dx2U4euKozxypzNGmMPtjHjDJguIoT/NVtyzwox9G0sYwaL3gV6YR1xzQN135Np76kJVPf2zl4MTcpps23jeN2LSjay6ZbKOl/860ZjDNu/bbJlI6vYp9++Wj+Q0="), this.addDataEntry("sysml activity is stream",300,60,"Is Stream","zVTLboMwEPwaXyMCbaMeA0lzqlQpl/bowAos2RjZmwD5+q7BQEgTKYdW6gFpd/bhYQbMokQ1O8Or4l1nIFm0ZVFitMY+Uk0CUrIwEBmLNiwMA3pY+HanuuyqQcUNlPjIQNgPnLg8Qo+sUxS67GGLrfRwgYrIbZYsim3BK4eqJne8F7a1Si6ETXSJRlNXXBcCYV/x1LXV1EQYlyIvKU2JGRgC/MlgEJq77DvIU9+BVoCmpRY/8Nq/XFCLDAs/4F84KEDkhd/y4jFu+zwfN03SUODVua1U9EMptootGuCKrTY/9IIsh71PQR50vZ2A+ELMrkZxoY04k4Dc6WeRG1wb01V0BaRbbPSxzMCRCdxYmQ31UpdupxNSpFyuvc4HjaiVa20Efg5jFH+5ePE8HLMXZ8dxGY6WOOozQ6w+mhRmH8wDHhmQHMVpvuqWA370QwvaGAat1/vKM+KaA/qmK9vGUx9y8ulvnRyMmLt008X7ntGf1I6muWRyjZb+O8+awTNv2m97SOl0J/btl1fmNw=="), this.addDataEntry("sysml activity is stream",300,60,"Is Stream","zVTJboMwEP0aXyMCbaUes58qVeKSHl0YYUtekJkEyNd3DCaQTcohhx6QZt4sfn7PgiUr3ewcL8WXzUGxZMOSlbMW+0g3K1CKxZHMWbJmcRzRx+Ltg+q8q0Yld2DwmYG4HzhydYAeWWQorenhClsVYIGayK3nLFlWgpce1U3hec+qttJqJqsUHXBNDbWQCGnJM99VUw9hXMnCUJoRMXAEhIPBITQPyXdQYL4DqwFdSy1h4LO/W1TLHEUYCPeNBMhChC0fAeNVnxfnTaMyFARx7guV3Ah1IxHkBaQhBfVr680ILCf6dTWKhXXyZA1y5UVF7nDhXFexJZBWS2cPJgdPIPJjJh/qxhq/ExqJ+6FK8Y+PZ+/DtlSePJV5fFbbM7zQurIHl8HFU3hCfgeKozxerronbhj9tpI2xlEbpLyyg7gWgKHpypHzqU+Z9PZ6k/wDlVln0cSABwYR0f00GQ2h2X9nRzPYEfx4tT2Ujj+yvn36n/sD"), @@ -7038,7 +7045,7 @@ this.createVertexTemplateEntry("shape=mxgraph.sysml.region;align=left;verticalAl this.addEntry("sysml state machine state machine",function(){var a=new mxCell("ReadAmountSM",new mxGeometry(0,0,160,120),"shape=mxgraph.sysml.stateMachine;verticalAlign=top;whiteSpace=wrap;align=center;");a.vertex=!0;var c=new mxCell("aborted",new mxGeometry(160,60,0,0),"resizable=0;html=1;verticalAlign=top;align=left;labelBackgroundColor=none;spacingLeft=5;spacingTop=-2;");c.geometry.relative=!1;c.setConnectable(!1);c.vertex=!0;a.insert(c);return e.createVertexTemplateFromCells([a],a.geometry.width, a.geometry.height,"State Machine")}),this.createVertexTemplateEntry("shape=mxgraph.sysml.x;",40,40,"","Terminate Node",null,null,this.getTagsForStencil("","x","sysml state machine terminate node").join(" ")),this.addEntry("sysml state machine submachine state",function(){var a=new mxCell("ReadAmount :\nReadAmountSM",new mxGeometry(0,0,160,120),"shape=mxgraph.sysml.submState;whiteSpace=wrap;align=center;");a.vertex=!0;var c=new mxCell("aborted",new mxGeometry(160,60,0,0),"resizable=0;html=1;verticalAlign=bottom;align=left;labelBackgroundColor=none;spacingLeft=5;spacingBottom=2;"); c.geometry.relative=!1;c.setConnectable(!1);c.vertex=!0;a.insert(c);return e.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,"Submachine State")}),this.createEdgeTemplateEntry("edgeStyle=none;html=1;endArrow=open;endSize=12;strokeWidth=3;verticalAlign=bottom;",160,0,"trigger[guard]/activity","Transition",null,this.getTagsForStencil("","","sysml state machine transition").join(" "))];this.addPalette("sysmlState Machines","SysML / State Machines",a||!1,mxUtils.bind(this,function(a){for(var b= -0;b<d.length;b++)a.appendChild(d[b](a))}))};Sidebar.prototype.addSysMLUseCasesPalette=function(a){var e=this,d=[this.createVertexTemplateEntry("shape=ellipse;html=1;strokeWidth=3;fontStyle=1;whiteSpace=wrap;align=center;",120,60,"UseCaseName","Use Case",null,null,this.getTagsForStencil("","","sysml use case use case").join(" ")),this.addEntry("sysml use case ",function(){var a=new mxCell("\nextension points\np1, p2",new mxGeometry(0,0,160,80),"html=1;shape=mxgraph.sysml.useCaseExtPt;whiteSpace=wrap;align=center;"); +0;b<d.length;b++)a.appendChild(d[b](a))}))};Sidebar.prototype.addSysMLUseCasesPalette=function(a){var e=this,d=[this.createVertexTemplateEntry("shape=ellipse;html=1;strokeWidth=3;fontStyle=1;whiteSpace=wrap;align=center;perimeter=ellipsePerimeter;",120,60,"UseCaseName","Use Case",null,null,this.getTagsForStencil("","","sysml use case use case").join(" ")),this.addEntry("sysml use case ",function(){var a=new mxCell("\nextension points\np1, p2",new mxGeometry(0,0,160,80),"html=1;shape=mxgraph.sysml.useCaseExtPt;whiteSpace=wrap;align=center;"); a.vertex=!0;var c=new mxCell("UseCaseName",new mxGeometry(80,17,0,0),"resizable=0;html=1;verticalAlign=middle;align=center;labelBackgroundColor=none;fontStyle=1;");c.geometry.relative=!1;c.setConnectable(!1);c.vertex=!0;a.insert(c);return e.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,"Use Case")}),this.createVertexTemplateEntry("shape=umlActor;html=1;verticalLabelPosition=bottom;verticalAlign=top;align=center;",30,60,"ActorName","Actor",null,null,this.getTagsForStencil("", "umlActor","sysml use case ").join(" ")),this.createVertexTemplateEntry("shape=rect;html=1;overflow=fill;html=1;whiteSpace=wrap;align=center;",80,40,'<p style="margin:0px;margin-top:4px;text-align:center;"><<actor>><br/><b>ActorName</b></p>',"Actor",null,null,this.getTagsForStencil("","","sysml use case ").join(" ")),this.createVertexTemplateEntry("shape=rect;html=1;verticalAlign=top;fontStyle=1;whiteSpace=wrap;align=center;",120,60,"SubjectName","Subject",null,null,this.getTagsForStencil("", "","sysml use case subject").join(" ")),this.createEdgeTemplateEntry("edgeStyle=none;html=1;endArrow=none;verticalAlign=bottom;",160,0,"","Communication Path",null,this.getTagsForStencil("","","sysml use case communication path").join(" ")),this.createEdgeTemplateEntry("edgeStyle=none;html=1;endArrow=open;verticalAlign=bottom;dashed=1;labelBackgroundColor=none;",160,0,"<<include>>","Include",null,this.getTagsForStencil("","","sysml use case include").join(" ")),this.createEdgeTemplateEntry("edgeStyle=none;html=1;startArrow=open;endArrow=none;startSize=12;verticalAlign=bottom;dashed=1;labelBackgroundColor=none;", @@ -7418,33 +7425,33 @@ this.getTagsForStencil("mxgraph.weblogos","xanga","web logos logo").join(" ")),t 74.4,43.6,"","Yahoo",null,null,this.getTagsForStencil("mxgraph.weblogos","yahoo","web logos logo").join(" ")),this.createVertexTemplateEntry(a+"yahoo_2;fillColor=#65106E;strokeColor=none",80,46.6,"","Yahoo",null,null,this.getTagsForStencil("mxgraph.weblogos","yahoo","web logos logo").join(" ")),this.createVertexTemplateEntry(a+"yammer;fillColor=#0093BE;strokeColor=none",.2*348,59.6,"","Yammer",null,null,this.getTagsForStencil("mxgraph.weblogos","yammer","web logos logo").join(" ")),this.createVertexTemplateEntry(a+ "yandex",31.8,66.4,"","Yandex",null,null,this.getTagsForStencil("mxgraph.weblogos","yandex","web logos logo").join(" ")),this.createVertexTemplateEntry(a+"yelp;fillColor=#C41200;strokeColor=none",.2*317,83,"","Yelp",null,null,this.getTagsForStencil("mxgraph.weblogos","yelp","web logos logo").join(" ")),this.createVertexTemplateEntry(a+"yoolink",79.2,79.2,"","Yoolink",null,null,this.getTagsForStencil("mxgraph.weblogos","yoolink","web logos logo").join(" ")),this.createVertexTemplateEntry(a+"youmob", 76,76.2,"","Youmob",null,null,this.getTagsForStencil("mxgraph.weblogos","youmob","web logos logo").join(" ")),this.createVertexTemplateEntry(a+"youtube;fillColor=#FF2626;gradientColor=#B5171F",.2*786,65.8,"","Youtube",null,null,this.getTagsForStencil("mxgraph.weblogos","youtube","web logos logo").join(" ")),this.createVertexTemplateEntry(a+"youtube_2;fillColor=#FF2626;gradientColor=#B5171F",.2*232,32.6,"","Youtube",null,null,this.getTagsForStencil("mxgraph.weblogos","youtube","web logos logo").join(" "))])}})(); -DrawioFile=function(a,c){mxEventSource.call(this);this.ui=a;this.shadowData=this.data=c||"";this.stats={joined:0,merged:0,lastMerge:0,lastMergeTime:0,lastOpenTime:0,emptyPrefix:!1,shadowState:0,opened:0,closed:0,destroyed:0,fileMerged:0,fileSaved:0,reload:0,checksumErrors:0,bytesSent:0,bytesReceived:0,msgSent:0,msgReceived:0,cacheHits:0,cacheMiss:0,cacheFail:0,conflicts:0,timeouts:0}};DrawioFile.SYNC=urlParams.sync||"auto";DrawioFile.LAST_WRITE_WINS=!0;mxUtils.extend(DrawioFile,mxEventSource); -DrawioFile.prototype.allChangesSavedKey="allChangesSaved";DrawioFile.prototype.autosaveDelay=1500;DrawioFile.prototype.maxAutosaveDelay=3E4;DrawioFile.prototype.autosaveThread=null;DrawioFile.prototype.lastAutosave=null;DrawioFile.prototype.modified=!1;DrawioFile.prototype.data=null;DrawioFile.prototype.shadowData=null;DrawioFile.prototype.shadowPages=null;DrawioFile.prototype.changeListenerEnabled=!0;DrawioFile.prototype.lastAutosaveRevision=null;DrawioFile.prototype.maxAutosaveRevisionDelay=18E5; -DrawioFile.prototype.inConflictState=!1;DrawioFile.prototype.invalidChecksum=!1;DrawioFile.prototype.reportEnabled=!0;DrawioFile.prototype.getSize=function(){return null!=this.data?this.data.length:0};DrawioFile.prototype.synchronizeFile=function(a,c){this.savingFile?null!=c&&c({message:mxResources.get("busy")}):null!=this.sync?this.sync.fileChanged(a,c):this.updateFile(a,c)}; -DrawioFile.prototype.updateFile=function(a,c,b,d){null!=b&&b()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=c&&c(e):this.getLatestVersion(mxUtils.bind(this,function(f){try{null!=b&&b()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=c&&c(e):null!=f?this.mergeFile(f,a,c,d):this.reloadFile(a,c))}catch(h){null!=c&&c(h)}}),c))}; -DrawioFile.prototype.mergeFile=function(a,c,b,d){try{this.stats.fileMerged++;var f=null!=this.shadowPages?this.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.shadowData).documentElement),h=this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement);if(null!=h&&0<h.length){this.shadowPages=h;this.backupPatch=this.isModified()?this.ui.diffPages(f,this.ui.pages):null;var k=[this.ui.diffPages(null!=d?d:f,this.shadowPages)];if(this.ignorePatches(k))this.stats.shadowState=this.ui.hashValue(a.getCurrentEtag()); -else{var m=this.ui.patchPages(f,k[0]);this.stats.shadowState=this.ui.hashValue(a.getCurrentEtag());d={};var p=this.ui.getHashValueForPages(m,d),f={},g=this.ui.getHashValueForPages(this.shadowPages,f);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",k,"checksum",g==p,p);if(null!=p&&p!=g){var l=this.compressReportData(this.getAnonymizedXmlForPages(m));this.checksumError(b,k,(null!=d?"Details: "+JSON.stringify(d):"")+"\nChecksum: "+p+"\nCurrent: "+g+(null!= -f?"\nCurrent Details: "+JSON.stringify(f):"")+"\nPatched:\n"+l);return}this.patch(k,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(a.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=c&&c()}catch(n){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=b&&b(n);try{this.sendErrorReport("Error in mergeFile",null,n)}catch(q){}}}; -DrawioFile.prototype.getAnonymizedXmlForPages=function(a){var c=new mxCodec(mxUtils.createXmlDocument()),b=c.document.createElement("mxfile");if(null!=a)for(var d=0;d<a.length;d++){var f=c.encode(new mxGraphModel(a[d].root));"1"!=urlParams.dev&&(f=this.ui.anonymizeNode(f,!0));f.setAttribute("id",a[d].getId());a[d].viewState&&this.ui.editor.graph.saveViewState(a[d].viewState,f,!0);b.appendChild(f)}return mxUtils.getPrettyXml(b)}; -DrawioFile.prototype.compressReportData=function(a,c,b){null!=a&&a.length>(null!=c?c:1E4)&&(a=this.ui.editor.graph.compress(a)+"\n");null!=b&&null!=a&&a.length>b&&(a=a.substring(0,b)+"[...]");return a}; -DrawioFile.prototype.checksumError=function(a,c,b,d){this.stats.checksumErrors++;this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=this.sync&&this.sync.updateOnlineState();null!=a&&a();try{if(null!=c)for(a=0;a<c.length;a++)this.ui.anonymizePatch(c[a]);var f=Error(),h=mxUtils.bind(this,function(a){var d=this.compressReportData(JSON.stringify(c,null,2));a=null!=a?this.compressReportData(this.getAnonymizedXmlForPages(this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement)), -25E3):"n/a";this.sendErrorReport("Checksum Error",(null!=b?b:"")+"\n\nPatches:\n"+d+(null!=a?"\n\nMaster:\n"+a:""),f,7E4)});null==d?h(null):this.getLatestVersion(mxUtils.bind(this,function(a){null!=a&&a.getCurrentEtag()==d?h(a):h(null)}),function(){})}catch(k){}}; -DrawioFile.prototype.sendErrorReport=function(a,c,b,d){try{var f=this.compressReportData(this.getAnonymizedXmlForPages(this.shadowPages),25E3),h=this.getCurrentUser(),k=null!=h?this.ui.hashValue(h.id):"unknown",m=null!=this.sync?this.sync.clientId:"no sync";null!=this.stats.start&&(this.stats.uptime=Math.round(((new Date).getTime()-(new Date(this.stats.start)).getTime())/1E3));var p=this.getTitle(),g=p.lastIndexOf("."),h="xml";0<g&&(h=p.substring(g));var l=null!=b?b.stack:Error().stack;EditorUi.sendReport(a+ -" "+(new Date).toISOString()+":\n\nBrowser="+navigator.userAgent+"\nFile="+this.ui.hashValue(this.getId())+" ("+this.getMode()+")"+(this.isModified()?" modified":"")+"\nSize/Type="+this.getSize()+" ("+h+")\nUser="+k+" ("+m+")\nPlugins="+(null!=mxSettings.settings?mxSettings.getPlugins():"null")+"\nSync="+DrawioFile.SYNC+(null!=b?"\nError="+b:"")+"\n\nStats:\n"+JSON.stringify(this.stats,null,2)+(null!=c?"\n\n"+c:"")+"\n\nShadow:\n"+f+"\n\nStack:\n"+l,d)}catch(n){}}; -DrawioFile.prototype.reloadFile=function(a,c){try{this.ui.spinner.stop();var b=mxUtils.bind(this,function(){this.stats.reload++;this.reportEnabled=!1;var b=this.ui.editor.graph.getViewState(),c=this.ui.editor.graph.getSelectionCells(),h=this.ui.currentPage;this.ui.loadFile(this.getHash(),!0,null,mxUtils.bind(this,function(){if(null==this.ui.fileLoadedError){this.ui.restoreViewState(h,b,c);null!=this.backupPatch&&this.patch([this.backupPatch]);var d=this.ui.getCurrentFile();null!=d&&(d.stats=this.stats); -null!=a&&a()}}),!0)});this.isModified()&&null==this.backupPatch?this.ui.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){this.handleFileSuccess("manual"==DrawioFile.SYNC)}),b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()}catch(d){null!=c&&c(d)}};DrawioFile.prototype.copyFile=function(a,c){this.ui.editor.editAsNew(this.ui.getFileData(!0),this.ui.getCopyFilename(this))}; +DrawioFile=function(a,c){mxEventSource.call(this);this.ui=a;this.shadowData=this.data=c||"";this.shadowPages=null;this.stats={opened:0,merged:0,fileMerged:0,fileReloaded:0,conflicts:0,timeouts:0,saved:0,closed:0,destroyed:0,joined:0,checksumErrors:0,bytesSent:0,bytesReceived:0,msgSent:0,msgReceived:0,cacheHits:0,cacheMiss:0,cacheFail:0}};DrawioFile.SYNC=urlParams.sync||"auto";DrawioFile.LAST_WRITE_WINS=!0;mxUtils.extend(DrawioFile,mxEventSource);DrawioFile.prototype.allChangesSavedKey="allChangesSaved"; +DrawioFile.prototype.autosaveDelay=1500;DrawioFile.prototype.maxAutosaveDelay=3E4;DrawioFile.prototype.autosaveThread=null;DrawioFile.prototype.lastAutosave=null;DrawioFile.prototype.modified=!1;DrawioFile.prototype.data=null;DrawioFile.prototype.shadowData=null;DrawioFile.prototype.shadowPages=null;DrawioFile.prototype.changeListenerEnabled=!0;DrawioFile.prototype.lastAutosaveRevision=null;DrawioFile.prototype.maxAutosaveRevisionDelay=18E5;DrawioFile.prototype.inConflictState=!1; +DrawioFile.prototype.invalidChecksum=!1;DrawioFile.prototype.errorReportsEnabled=!1;DrawioFile.prototype.reportEnabled=!0;DrawioFile.prototype.getSize=function(){return null!=this.data?this.data.length:0};DrawioFile.prototype.synchronizeFile=function(a,c){this.savingFile?null!=c&&c({message:mxResources.get("busy")}):null!=this.sync?this.sync.fileChanged(a,c):this.updateFile(a,c)}; +DrawioFile.prototype.updateFile=function(a,c,b,d){null!=b&&b()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=c&&c():this.getLatestVersion(mxUtils.bind(this,function(g){try{null!=b&&b()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=c&&c():null!=g?this.mergeFile(g,a,c,d):this.reloadFile(a,c))}catch(e){null!=c&&c(e)}}),c))}; +DrawioFile.prototype.mergeFile=function(a,c,b,d){var g=!0;try{this.stats.fileMerged++;var e=null!=this.shadowPages?this.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.shadowData).documentElement),k=this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement);if(null!=k&&0<k.length){this.shadowPages=k;this.backupPatch=this.isModified()?this.ui.diffPages(e,this.ui.pages):null;var m=[this.ui.diffPages(null!=d?d:e,this.shadowPages)];if(!this.ignorePatches(m)){var n=this.ui.patchPages(e, +m[0]);d={};var q=this.ui.getHashValueForPages(n,d),e={},f=this.ui.getHashValueForPages(this.shadowPages,e);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",m,"checksum",f==q,q);if(null!=q&&q!=f){var l=this.compressReportData(this.getAnonymizedXmlForPages(k)),p=this.compressReportData(this.getAnonymizedXmlForPages(n)),t=this.ui.hashValue(a.getCurrentEtag()),u=this.ui.hashValue(this.getCurrentEtag());this.checksumError(b,m,"Shadow Details: "+JSON.stringify(d)+ +"\nChecksum: "+q+"\nCurrent: "+f+"\nCurrent Details: "+JSON.stringify(e)+"\nFrom: "+t+"\nTo: "+u+"\n\nFile Data:\n"+l+"\nPatched Shadow:\n"+p,null,"mergeFile");return}this.patch(m,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw g=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(a.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=c&&c()}catch(x){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged(); +null!=b&&b(x);try{this.errorReportsEnabled&&g&&this.sendErrorReport("Error in mergeFile",null,x)}catch(z){}}};DrawioFile.prototype.getAnonymizedXmlForPages=function(a){var c=new mxCodec(mxUtils.createXmlDocument()),b=c.document.createElement("mxfile");if(null!=a)for(var d=0;d<a.length;d++){var g=c.encode(new mxGraphModel(a[d].root));"1"!=urlParams.dev&&(g=this.ui.anonymizeNode(g,!0));g.setAttribute("id",a[d].getId());a[d].viewState&&this.ui.editor.graph.saveViewState(a[d].viewState,g,!0);b.appendChild(g)}return mxUtils.getPrettyXml(b)}; +DrawioFile.prototype.compressReportData=function(a,c,b){c=null!=c?c:1E4;null!=b&&null!=a&&a.length>b?a=a.substring(0,b)+"[...]":null!=a&&a.length>c&&(a=this.ui.editor.graph.compress(a)+"\n");return a}; +DrawioFile.prototype.checksumError=function(a,c,b,d,g){this.stats.checksumErrors++;this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=this.sync&&this.sync.updateOnlineState();null!=a&&a();try{if(this.errorReportsEnabled){if(null!=c)for(a=0;a<c.length;a++)this.ui.anonymizePatch(c[a]);var e=mxUtils.bind(this,function(a){var d=this.compressReportData(JSON.stringify(c,null,2));a=null!=a?this.compressReportData(this.getAnonymizedXmlForPages(this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement)), +25E3):"n/a";this.sendErrorReport("Checksum Error in "+g,(null!=b?b:"")+"\n\nPatches:\n"+d+(null!=a?"\n\nRemote:\n"+a:""),null,7E4)});null==d?e(null):this.getLatestVersion(mxUtils.bind(this,function(a){null!=a&&a.getCurrentEtag()==d?e(a):e(null)}),function(){})}}catch(k){}}; +DrawioFile.prototype.sendErrorReport=function(a,c,b,d){try{var g=this.compressReportData(this.getAnonymizedXmlForPages(this.shadowPages),25E3),e=this.compressReportData(this.getAnonymizedXmlForPages(this.ui.pages),25E3),k=this.getCurrentUser(),m=null!=k?this.ui.hashValue(k.id):"unknown",n=null!=this.sync?this.sync.clientId:"no sync",q=this.getTitle(),f=q.lastIndexOf("."),k="xml";0<f&&(k=q.substring(f));var l=null!=b?b.stack:Error().stack;EditorUi.sendReport(a+" "+(new Date).toISOString()+":\n\nBrowser="+ +navigator.userAgent+"\nFile="+this.ui.hashValue(this.getId())+" ("+this.getMode()+")"+(this.isModified()?" modified":"")+"\nSize/Type="+this.getSize()+" ("+k+")\nUser="+m+" ("+n+")\nPrefix="+this.ui.editor.graph.model.prefix+"\nSync="+DrawioFile.SYNC+(null!=this.sync?(this.sync.enabled?" enabled":"")+(this.sync.isConnected()?" connected":""):"")+"\nPlugins="+(null!=mxSettings.settings?mxSettings.getPlugins():"null")+"\n\nStats:\n"+JSON.stringify(this.stats,null,2)+(null!=c?"\n\n"+c:"")+(null!=b?"\n\nError: "+ +b.message:"")+"\n\nStack:\n"+l+"\n\nShadow:\n"+g+"\n\nData:\n"+e,d)}catch(p){}}; +DrawioFile.prototype.reloadFile=function(a,c){try{this.ui.spinner.stop();var b=mxUtils.bind(this,function(){this.stats.fileReloaded++;this.reportEnabled=!1;var b=this.ui.editor.graph.getViewState(),c=this.ui.editor.graph.getSelectionCells(),e=this.ui.currentPage;this.ui.loadFile(this.getHash(),!0,null,mxUtils.bind(this,function(){if(null==this.ui.fileLoadedError){this.ui.restoreViewState(e,b,c);null!=this.backupPatch&&this.patch([this.backupPatch]);var d=this.ui.getCurrentFile();null!=d&&(d.stats= +this.stats);null!=a&&a()}}),!0)});this.isModified()&&null==this.backupPatch?this.ui.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){this.handleFileSuccess("manual"==DrawioFile.SYNC)}),b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()}catch(d){null!=c&&c(d)}};DrawioFile.prototype.copyFile=function(a,c){this.ui.editor.editAsNew(this.ui.getFileData(!0),this.ui.getCopyFilename(this))}; DrawioFile.prototype.ignorePatches=function(a){for(var c=!0,b=0;b<a.length&&c;b++)c=c&&0==Object.keys(a[b]).length;return c}; -DrawioFile.prototype.patch=function(a,c){var b=this.ui.editor.undoManager,d=b.history.slice(),f=b.indexOfNextAdd,h=this.ui.editor.graph;h.container.style.visibility="hidden";var k=this.changeListenerEnabled;this.changeListenerEnabled=!1;var m=h.foldingEnabled,p=h.mathEnabled,g=h.cellRenderer.redraw;h.cellRenderer.redraw=function(a){a.view.graph.isEditing(a.cell)&&(a.view.graph.scrollCellToVisible(a.cell),a.view.graph.cellEditor.resize());g.apply(this,arguments)};h.model.beginUpdate();try{for(var l= -0;l<a.length;l++)this.ui.pages=this.ui.patchPages(this.ui.pages,a[l],!0,c,this.isModified());0==this.ui.pages.length&&this.ui.pages.push(this.ui.createPage());0>mxUtils.indexOf(this.ui.pages,this.ui.currentPage)&&this.ui.selectPage(this.ui.pages[0],!0)}finally{h.model.endUpdate();h.container.style.visibility="";h.cellRenderer.redraw=g;this.changeListenerEnabled=k;b.history=d;b.indexOfNextAdd=f;b.fireEvent(new mxEventObject(mxEvent.CLEAR));if(null==this.ui.currentPage||this.ui.currentPage.needsUpdate)p!= -h.mathEnabled?(this.ui.editor.updateGraphComponents(),h.refresh()):(m!=h.foldingEnabled?h.view.revalidate():h.view.validate(),h.sizeDidChange()),null!=this.ui.format&&h.isSelectionEmpty()&&this.ui.format.refresh();this.ui.updateTabContainer()}}; -DrawioFile.prototype.save=function(a,c,b,d,f,h){if(this.isEditable())if(!f&&this.invalidChecksum)if(null!=b)b({message:mxResources.get("checksum")});else throw Error(mxResources.get("checksum"));else this.updateFileData(),this.clearAutosave();else if(null!=b)b({message:mxResources.get("readOnly")});else throw Error(mxResources.get("readOnly"));};DrawioFile.prototype.updateFileData=function(){this.setData(this.ui.getFileData(null,null,null,null,null,null,null,null,this))}; +DrawioFile.prototype.patch=function(a,c){var b=this.ui.editor.undoManager,d=b.history.slice(),g=b.indexOfNextAdd,e=this.ui.editor.graph;e.container.style.visibility="hidden";var k=this.changeListenerEnabled;this.changeListenerEnabled=!1;var m=e.foldingEnabled,n=e.mathEnabled,q=e.cellRenderer.redraw;e.cellRenderer.redraw=function(a){a.view.graph.isEditing(a.cell)&&(a.view.graph.scrollCellToVisible(a.cell),a.view.graph.cellEditor.resize());q.apply(this,arguments)};e.model.beginUpdate();try{for(var f= +0;f<a.length;f++)this.ui.pages=this.ui.patchPages(this.ui.pages,a[f],!0,c,this.isModified());0==this.ui.pages.length&&this.ui.pages.push(this.ui.createPage());0>mxUtils.indexOf(this.ui.pages,this.ui.currentPage)&&this.ui.selectPage(this.ui.pages[0],!0)}finally{e.container.style.visibility="";e.model.endUpdate();e.cellRenderer.redraw=q;this.changeListenerEnabled=k;b.history=d;b.indexOfNextAdd=g;b.fireEvent(new mxEventObject(mxEvent.CLEAR));if(null==this.ui.currentPage||this.ui.currentPage.needsUpdate)n!= +e.mathEnabled?(this.ui.editor.updateGraphComponents(),e.refresh()):(m!=e.foldingEnabled?e.view.revalidate():e.view.validate(),e.sizeDidChange());this.ui.updateTabContainer()}}; +DrawioFile.prototype.save=function(a,c,b,d,g,e){if(this.isEditable())if(!g&&this.invalidChecksum)if(null!=b)b({message:mxResources.get("checksum")});else throw Error(mxResources.get("checksum"));else this.updateFileData(),this.clearAutosave();else if(null!=b)b({message:mxResources.get("readOnly")});else throw Error(mxResources.get("readOnly"));};DrawioFile.prototype.updateFileData=function(){this.setData(this.ui.getFileData(null,null,null,null,null,null,null,null,this))}; DrawioFile.prototype.saveAs=function(a,c,b){};DrawioFile.prototype.saveFile=function(a,c,b,d){};DrawioFile.prototype.getPublicUrl=function(a){a(null)};DrawioFile.prototype.isRestricted=function(){return!1};DrawioFile.prototype.isModified=function(){return this.modified};DrawioFile.prototype.setModified=function(a){this.modified=a};DrawioFile.prototype.isAutosaveOptional=function(){return!1};DrawioFile.prototype.isAutosave=function(){return!this.inConflictState&&this.ui.editor.autosave}; DrawioFile.prototype.isRenamable=function(){return!1};DrawioFile.prototype.rename=function(a,c,b){};DrawioFile.prototype.isMovable=function(){return!1};DrawioFile.prototype.move=function(a,c,b){};DrawioFile.prototype.getHash=function(){return""};DrawioFile.prototype.getId=function(){return""};DrawioFile.prototype.isEditable=function(){return!this.ui.editor.isChromelessView()||this.ui.editor.editable};DrawioFile.prototype.getUi=function(){return this.ui};DrawioFile.prototype.getTitle=function(){return""}; -DrawioFile.prototype.setData=function(a){this.data=a};DrawioFile.prototype.getData=function(){return this.data};DrawioFile.prototype.open=function(){this.stats.opened++;this.stats.lastOpenTime=(new Date).toISOString();var a=this.getData();null!=a?(this.ui.setFileData(a),this.isModified()||(this.shadowData=mxUtils.getXml(this.ui.getXmlFileData()),this.shadowPages=null)):this.sendErrorReport("Error in open","Data was null");this.installListeners();this.isSyncSupported()&&this.startSync()}; -DrawioFile.prototype.isSyncSupported=function(){return!1};DrawioFile.prototype.isRevisionHistorySupported=function(){return!1};DrawioFile.prototype.getRevisions=function(a,c){a(null)};DrawioFile.prototype.loadDescriptor=function(a,c){a(null)};DrawioFile.prototype.loadPatchDescriptor=function(a,c){this.loadDescriptor(mxUtils.bind(this,function(b){a(b)}),c)}; -DrawioFile.prototype.startSync=function(){"auto"!=DrawioFile.SYNC||"1"==urlParams.stealth||"1"!=urlParams.rt&&this.ui.editor.chromeless&&!this.ui.editor.editable||(null==this.sync&&(this.sync=new DrawioFileSync(this)),this.sync.start())};DrawioFile.prototype.isConflict=function(){return!1};DrawioFile.prototype.getChannelId=function(){return this.ui.editor.graph.compress(this.getHash()).replace(/[\/ +]/g,"_")};DrawioFile.prototype.getChannelKey=function(a){return null}; -DrawioFile.prototype.getCurrentUser=function(){return null};DrawioFile.prototype.getLatestVersion=function(a,c){a(null)};DrawioFile.prototype.getLastModifiedDate=function(){return new Date};DrawioFile.prototype.setCurrentEtag=function(a){this.setDescriptorEtag(this.getDescriptor(),a)};DrawioFile.prototype.getCurrentEtag=function(){return this.getDescriptorEtag(this.getDescriptor())};DrawioFile.prototype.getDescriptor=function(){return null};DrawioFile.prototype.setDescriptor=function(){}; -DrawioFile.prototype.setDescriptorEtag=function(a,c){};DrawioFile.prototype.getDescriptorEtag=function(a){return null};DrawioFile.prototype.getDescriptorSecret=function(a){return null}; +DrawioFile.prototype.setData=function(a){this.data=a};DrawioFile.prototype.getData=function(){return this.data};DrawioFile.prototype.open=function(){this.stats.opened++;var a=this.getData();null!=a&&(this.ui.setFileData(a),this.isModified()||(this.shadowData=mxUtils.getXml(this.ui.getXmlFileData()),this.shadowPages=null));this.installListeners();this.isSyncSupported()&&this.startSync()};DrawioFile.prototype.isSyncSupported=function(){return!1};DrawioFile.prototype.isRevisionHistorySupported=function(){return!1}; +DrawioFile.prototype.getRevisions=function(a,c){a(null)};DrawioFile.prototype.loadDescriptor=function(a,c){a(null)};DrawioFile.prototype.loadPatchDescriptor=function(a,c){this.loadDescriptor(mxUtils.bind(this,function(b){a(b)}),c)};DrawioFile.prototype.startSync=function(){"auto"!=DrawioFile.SYNC||"1"==urlParams.stealth||"1"!=urlParams.rt&&this.ui.editor.chromeless&&!this.ui.editor.editable||(null==this.sync&&(this.sync=new DrawioFileSync(this)),this.sync.start())}; +DrawioFile.prototype.isConflict=function(){return!1};DrawioFile.prototype.getChannelId=function(){return this.ui.editor.graph.compress(this.getHash()).replace(/[\/ +]/g,"_")};DrawioFile.prototype.getChannelKey=function(a){return null};DrawioFile.prototype.getCurrentUser=function(){return null};DrawioFile.prototype.getLatestVersion=function(a,c){a(null)};DrawioFile.prototype.getLastModifiedDate=function(){return new Date}; +DrawioFile.prototype.setCurrentEtag=function(a){this.setDescriptorEtag(this.getDescriptor(),a)};DrawioFile.prototype.getCurrentEtag=function(){return this.getDescriptorEtag(this.getDescriptor())};DrawioFile.prototype.getDescriptor=function(){return null};DrawioFile.prototype.setDescriptor=function(){};DrawioFile.prototype.setDescriptorEtag=function(a,c){};DrawioFile.prototype.getDescriptorEtag=function(a){return null};DrawioFile.prototype.getDescriptorSecret=function(a){return null}; DrawioFile.prototype.installListeners=function(){null==this.changeListener&&(this.changeListener=mxUtils.bind(this,function(a,c){var b=null!=c?c.getProperty("edit"):null;!this.changeListenerEnabled||!this.isEditable()||null!=b&&b.ignoreEdit||this.fileChanged()}),this.ui.editor.graph.model.addListener(mxEvent.CHANGE,this.changeListener),this.ui.editor.graph.addListener("gridSizeChanged",this.changeListener),this.ui.editor.graph.addListener("shadowVisibleChanged",this.changeListener),this.ui.addListener("pageFormatChanged", this.changeListener),this.ui.addListener("pageScaleChanged",this.changeListener),this.ui.addListener("backgroundColorChanged",this.changeListener),this.ui.addListener("backgroundImageChanged",this.changeListener),this.ui.addListener("foldingEnabledChanged",this.changeListener),this.ui.addListener("mathEnabledChanged",this.changeListener),this.ui.addListener("gridEnabledChanged",this.changeListener),this.ui.addListener("guidesEnabledChanged",this.changeListener),this.ui.addListener("pageViewChanged", this.changeListener))};DrawioFile.prototype.addAllSavedStatus=function(a){null!=this.ui.statusContainer&&this.ui.getCurrentFile()==this&&(a=null!=a?a:mxUtils.htmlEntities(mxResources.get(this.allChangesSavedKey)),this.ui.editor.setStatus('<div title="'+a+'">'+a+"</div>"),a=this.ui.statusContainer.getElementsByTagName("div"),0<a.length&&this.isRevisionHistorySupported()&&(a[0].style.cursor="pointer",a[0].style.textDecoration="underline",mxEvent.addListener(a[0],"click",mxUtils.bind(this,function(){this.ui.actions.get("revisionHistory").funct()}))))}; @@ -7462,309 +7469,310 @@ mxUtils.bind(this,function(){this.redirectDialogShowing=!1}),b,mxResources.get(" b)}};DrawioFile.prototype.handleFileSuccess=function(a){this.ui.spinner.stop();this.ui.getCurrentFile()==this&&(this.isModified()?this.fileChanged():a?(this.addAllSavedStatus(),null!=this.sync&&(this.sync.resetUpdateStatusThread(),this.sync.remoteFileChanged&&(this.sync.remoteFileChanged=!1,this.sync.fileChangedNotify()))):this.ui.editor.setStatus(""))}; DrawioFile.prototype.handleFileError=function(a,c){this.ui.spinner.stop();if(this.ui.getCurrentFile()==this)if(this.inConflictState)this.handleConflictError(a,c);else if(this.isModified()&&this.addUnsavedStatus(a),c)this.ui.handleError(a,null!=a?mxResources.get("errorSavingFile"):null);else if(!this.isModified()){var b=null!=a?null!=a.error?a.error.message:a.message:null;null!=b&&60<b.length&&(b=b.substring(0,60)+"...");this.ui.editor.setStatus('<div class="geStatusAlert" style="cursor:pointer;overflow:hidden;">'+ mxUtils.htmlEntities(mxResources.get("error"))+(null!=b?" ("+mxUtils.htmlEntities(b)+")":"")+"</div>")}}; -DrawioFile.prototype.handleConflictError=function(a,c){var b=mxUtils.bind(this,function(){this.handleFileSuccess(!0)}),d=mxUtils.bind(this,function(a){this.handleFileError(a,!0)}),f=mxUtils.bind(this,function(){this.ui.spinner.spin(document.body,mxResources.get("saving"))&&(this.ui.editor.setStatus(""),this.save(!0,b,d,null,!0,this.constructor==GitHubFile&&null!=a?a.commitMessage:null))}),h=mxUtils.bind(this,function(){this.ui.spinner.spin(document.body,mxResources.get("updatingDocument"))&&this.synchronizeFile(mxUtils.bind(this, -function(){this.ui.spinner.stop();this.ui.spinner.spin(document.body,mxResources.get("saving"))&&this.save(!0,b,d,null,null,this.constructor==GitHubFile&&null!=a?a.commitMessage:null)}),d)});"none"==DrawioFile.SYNC?this.showCopyDialog(b,d,f):this.invalidChecksum?this.showRefreshDialog(b,d,this.getErrorMessage(a)):c?this.showConflictDialog(f,h):this.addConflictStatus(mxUtils.bind(this,function(){this.ui.editor.setStatus(mxUtils.htmlEntities(mxResources.get("updatingDocument")));this.synchronizeFile(b, +DrawioFile.prototype.handleConflictError=function(a,c){var b=mxUtils.bind(this,function(){this.handleFileSuccess(!0)}),d=mxUtils.bind(this,function(a){this.handleFileError(a,!0)}),g=mxUtils.bind(this,function(){this.ui.spinner.spin(document.body,mxResources.get("saving"))&&(this.ui.editor.setStatus(""),this.save(!0,b,d,null,!0,this.constructor==GitHubFile&&null!=a?a.commitMessage:null))}),e=mxUtils.bind(this,function(){this.ui.spinner.spin(document.body,mxResources.get("updatingDocument"))&&this.synchronizeFile(mxUtils.bind(this, +function(){this.ui.spinner.stop();this.ui.spinner.spin(document.body,mxResources.get("saving"))&&this.save(!0,b,d,null,null,this.constructor==GitHubFile&&null!=a?a.commitMessage:null)}),d)});"none"==DrawioFile.SYNC?this.showCopyDialog(b,d,g):this.invalidChecksum?this.showRefreshDialog(b,d,this.getErrorMessage(a)):c?this.showConflictDialog(g,e):this.addConflictStatus(mxUtils.bind(this,function(){this.ui.editor.setStatus(mxUtils.htmlEntities(mxResources.get("updatingDocument")));this.synchronizeFile(b, d)}),this.getErrorMessage(a))};DrawioFile.prototype.getErrorMessage=function(a){return null!=a?null!=a.error?a.error.message:a.message:null}; DrawioFile.prototype.fileChanged=function(){this.setModified(!0);this.isAutosave()?(this.addAllSavedStatus(mxUtils.htmlEntities(mxResources.get("saving"))+"..."),this.autosave(this.autosaveDelay,this.maxAutosaveDelay,mxUtils.bind(this,function(a){null==this.autosaveThread&&this.handleFileSuccess(!0)}),mxUtils.bind(this,function(a){this.handleFileError(a)}))):this.isAutosaveOptional()&&this.ui.editor.autosave||this.inConflictState||this.addUnsavedStatus()}; -DrawioFile.prototype.fileSaved=function(a,c,b,d){try{this.stats.fileSaved++,this.invalidChecksum=this.inConflictState=!1,null==this.sync?(this.shadowData=a,this.shadowPages=null,null!=b&&b()):this.sync.fileSaved(this.ui.getPagesForNode(mxUtils.parseXml(a).documentElement),c,b,d)}catch(f){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=d&&d(f);try{this.sendErrorReport("Error in fileSaved","Saved Data:\n"+this.compressReportData(this.ui.anonymizeString(a),null,1E3),f)}catch(h){}}}; -DrawioFile.prototype.autosave=function(a,c,b,d){null==this.lastAutosave&&(this.lastAutosave=(new Date).getTime());a=(new Date).getTime()-this.lastAutosave<c?a:0;this.clearAutosave();var f=window.setTimeout(mxUtils.bind(this,function(){this.lastAutosave=null;this.autosaveThread==f&&(this.autosaveThread=null);if(this.isModified()&&this.isAutosaveNow()){var a=this.isAutosaveRevision();a&&(this.lastAutosaveRevision=(new Date).getTime());this.save(a,mxUtils.bind(this,function(a){this.autosaveCompleted(); -null!=b&&b(a)}),mxUtils.bind(this,function(a){null!=d&&d(a)}))}else this.isModified()||this.ui.editor.setStatus(""),null!=b&&b(null)}),a);this.autosaveThread=f};DrawioFile.prototype.isAutosaveNow=function(){return!0};DrawioFile.prototype.autosaveCompleted=function(){};DrawioFile.prototype.clearAutosave=function(){null!=this.autosaveThread&&(window.clearTimeout(this.autosaveThread),this.autosaveThread=null)}; +DrawioFile.prototype.fileSaved=function(a,c,b,d){try{this.stats.saved++,this.invalidChecksum=this.inConflictState=!1,null==this.sync?(this.shadowData=a,this.shadowPages=null,null!=b&&b()):this.sync.fileSaved(this.ui.getPagesForNode(mxUtils.parseXml(a).documentElement),c,b,d,a)}catch(g){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=d&&d(g);try{this.errorReportsEnabled&&this.sendErrorReport("Error in fileSaved",null,g)}catch(e){}}}; +DrawioFile.prototype.autosave=function(a,c,b,d){null==this.lastAutosave&&(this.lastAutosave=(new Date).getTime());a=(new Date).getTime()-this.lastAutosave<c?a:0;this.clearAutosave();var g=window.setTimeout(mxUtils.bind(this,function(){this.lastAutosave=null;this.autosaveThread==g&&(this.autosaveThread=null);if(this.isModified()&&this.isAutosaveNow()){var a=this.isAutosaveRevision();a&&(this.lastAutosaveRevision=(new Date).getTime());this.save(a,mxUtils.bind(this,function(a){this.autosaveCompleted(); +null!=b&&b(a)}),mxUtils.bind(this,function(a){null!=d&&d(a)}))}else this.isModified()||this.ui.editor.setStatus(""),null!=b&&b(null)}),a);this.autosaveThread=g};DrawioFile.prototype.isAutosaveNow=function(){return!0};DrawioFile.prototype.autosaveCompleted=function(){};DrawioFile.prototype.clearAutosave=function(){null!=this.autosaveThread&&(window.clearTimeout(this.autosaveThread),this.autosaveThread=null)}; DrawioFile.prototype.isAutosaveRevision=function(){var a=(new Date).getTime();return null==this.lastAutosaveRevision||a-this.lastAutosaveRevision>this.maxAutosaveRevisionDelay};DrawioFile.prototype.descriptorChanged=function(){this.fireEvent(new mxEventObject("descriptorChanged"))};DrawioFile.prototype.contentChanged=function(){this.fireEvent(new mxEventObject("contentChanged"))}; DrawioFile.prototype.close=function(a){this.updateFileData();this.stats.closed++;this.isAutosave()&&this.isModified()&&this.save(this.isAutosaveRevision(),null,null,a);this.destroy()};DrawioFile.prototype.hasSameExtension=function(a,c){if(null!=a&&null!=c){var b=a.lastIndexOf("."),d=0<b?a.substring(b):"",b=c.lastIndexOf(".");return d===(0<b?c.substring(b):"")}return a==c}; DrawioFile.prototype.removeListeners=function(){null!=this.changeListener&&(this.ui.editor.graph.model.removeListener(this.changeListener),this.ui.editor.graph.removeListener(this.changeListener),this.ui.removeListener(this.changeListener),this.changeListener=null)}; -DrawioFile.prototype.destroy=function(){this.stats.destroyed++;try{if(!this.ui.isOffline()&&this.reportEnabled&&("auto"==DrawioFile.SYNC||"manual"==DrawioFile.SYNC)){var a=this.getCurrentUser(),c=null!=a?this.ui.hashValue(a.id):"unknown";this.stats.end=(new Date).toISOString();null!=this.stats.start&&(this.stats.uptime=Math.round(((new Date).getTime()-(new Date(this.stats.start)).getTime())/1E3));EditorUi.logEvent({category:"RT-END-"+DrawioFile.SYNC,action:"file-"+this.getId()+"-mode-"+this.getMode()+ -"-size-"+this.getSize()+"-user-"+c+(null!=this.sync?"-client-"+this.sync.clientId:""),label:this.stats})}}catch(b){}this.clearAutosave();this.removeListeners();null!=this.sync&&(this.sync.destroy(),this.sync=null)};LocalFile=function(a,c,b,d){DrawioFile.call(this,a,c);this.title=b;this.mode=d?null:App.MODE_DEVICE};mxUtils.extend(LocalFile,DrawioFile);LocalFile.prototype.isAutosave=function(){return!1};LocalFile.prototype.getMode=function(){return this.mode};LocalFile.prototype.getTitle=function(){return this.title};LocalFile.prototype.isRenamable=function(){return!0};LocalFile.prototype.save=function(a,c,b){this.saveAs(this.title,c,b)};LocalFile.prototype.saveAs=function(a,c,b){this.saveFile(a,!1,c,b)}; -LocalFile.prototype.saveFile=function(a,c,b,d){this.title=a;this.updateFileData();c=this.getData();var f=this.ui.useCanvasForExport&&/(\.png)$/i.test(this.getTitle()),h=mxUtils.bind(this,function(c){if(this.ui.isOfflineApp()||this.ui.isLocalFileSave())this.ui.doSaveLocalFile(c,a,f?"image/png":"text/xml",f);else if(c.length<MAX_REQUEST_SIZE){var d=a.lastIndexOf("."),d=0<d?a.substring(d+1):"xml";(new mxXmlRequest(SAVE_URL,"format="+d+"&xml="+encodeURIComponent(c)+"&filename="+encodeURIComponent(a)+ -(f?"&binary=1":""))).simulate(document,"_blank")}else this.ui.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(c)}));this.setModified(!1);this.contentChanged();null!=b&&b()});f?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){h(a)}),d,this.ui.getCurrentFile()!=this?this.getData():null):h(c)};LocalFile.prototype.rename=function(a,c,b){this.title=a;this.descriptorChanged();null!=c&&c()}; +DrawioFile.prototype.destroy=function(){this.stats.destroyed++;try{if(!this.ui.isOffline()&&this.reportEnabled&&("auto"==DrawioFile.SYNC||"manual"==DrawioFile.SYNC)){var a=this.getCurrentUser(),c=null!=a?a.id:"unknown";EditorUi.logEvent({category:"RT-END-"+DrawioFile.SYNC,action:"file-"+this.getId()+"-mode-"+this.getMode()+"-size-"+this.getSize()+"-user-"+c+(null!=this.sync?"-client-"+this.sync.clientId:""),label:this.stats})}}catch(b){}this.clearAutosave();this.removeListeners();null!=this.sync&& +(this.sync.destroy(),this.sync=null)};LocalFile=function(a,c,b,d){DrawioFile.call(this,a,c);this.title=b;this.mode=d?null:App.MODE_DEVICE};mxUtils.extend(LocalFile,DrawioFile);LocalFile.prototype.isAutosave=function(){return!1};LocalFile.prototype.getMode=function(){return this.mode};LocalFile.prototype.getTitle=function(){return this.title};LocalFile.prototype.isRenamable=function(){return!0};LocalFile.prototype.save=function(a,c,b){this.saveAs(this.title,c,b)};LocalFile.prototype.saveAs=function(a,c,b){this.saveFile(a,!1,c,b)}; +LocalFile.prototype.saveFile=function(a,c,b,d){this.title=a;this.updateFileData();c=this.getData();var g=this.ui.useCanvasForExport&&/(\.png)$/i.test(this.getTitle()),e=mxUtils.bind(this,function(c){if(this.ui.isOfflineApp()||this.ui.isLocalFileSave())this.ui.doSaveLocalFile(c,a,g?"image/png":"text/xml",g);else if(c.length<MAX_REQUEST_SIZE){var d=a.lastIndexOf("."),d=0<d?a.substring(d+1):"xml";(new mxXmlRequest(SAVE_URL,"format="+d+"&xml="+encodeURIComponent(c)+"&filename="+encodeURIComponent(a)+ +(g?"&binary=1":""))).simulate(document,"_blank")}else this.ui.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(c)}));this.setModified(!1);this.contentChanged();null!=b&&b()});g?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){e(a)}),d,this.ui.getCurrentFile()!=this?this.getData():null):e(c)};LocalFile.prototype.rename=function(a,c,b){this.title=a;this.descriptorChanged();null!=c&&c()}; LocalFile.prototype.open=function(){this.ui.setFileData(this.getData());this.installListeners()};LocalLibrary=function(a,c,b){LocalFile.call(this,a,c,b)};mxUtils.extend(LocalLibrary,LocalFile);LocalLibrary.prototype.getHash=function(){return"F"+this.getTitle()};LocalLibrary.prototype.isAutosave=function(){return!1};LocalLibrary.prototype.saveAs=function(a,c,b){this.saveFile(a,!1,c,b)};LocalLibrary.prototype.updateFileData=function(){};LocalLibrary.prototype.open=function(){};StorageFile=function(a,c,b){DrawioFile.call(this,a,c);this.title=b};mxUtils.extend(StorageFile,DrawioFile);StorageFile.prototype.autosaveDelay=2E3;StorageFile.prototype.maxAutosaveDelay=2E4;StorageFile.prototype.getMode=function(){return App.MODE_BROWSER};StorageFile.prototype.isAutosaveOptional=function(){return!0};StorageFile.prototype.getHash=function(){return"L"+encodeURIComponent(this.getTitle())};StorageFile.prototype.getTitle=function(){return this.title}; StorageFile.prototype.isRenamable=function(){return!0};StorageFile.prototype.save=function(a,c,b){this.saveAs(this.getTitle(),c,b)};StorageFile.prototype.saveAs=function(a,c,b){DrawioFile.prototype.save.apply(this,arguments);this.saveFile(a,!1,c,b)}; -StorageFile.prototype.saveFile=function(a,c,b,d){if(this.isEditable()){var f=mxUtils.bind(this,function(){this.isRenamable()&&(this.title=a);try{this.ui.setLocalData(this.title,this.getData(),mxUtils.bind(this,function(){this.setModified(!1);this.contentChanged();null!=b&&b()}))}catch(h){null!=d&&d(h)}});this.isRenamable()&&"."==a.charAt(0)&&null!=d?d({message:mxResources.get("invalidName")}):this.ui.getLocalData(a,mxUtils.bind(this,function(b){this.isRenamable()&&this.getTitle()!=a&&null!=b?this.ui.confirm(mxResources.get("replaceIt", -[a]),f,d):f()}))}else null!=b&&b()};StorageFile.prototype.rename=function(a,c,b){var d=this.getTitle();d!=a?this.ui.getLocalData(a,mxUtils.bind(this,function(f){var h=mxUtils.bind(this,function(){this.title=a;this.hasSameExtension(d,a)||this.setData(this.ui.getFileData());this.saveFile(a,!1,mxUtils.bind(this,function(){this.ui.removeLocalData(d,c)}),b)});null!=f?this.ui.confirm(mxResources.get("replaceIt",[a]),h,b):h()})):c()}; +StorageFile.prototype.saveFile=function(a,c,b,d){if(this.isEditable()){var g=mxUtils.bind(this,function(){this.isRenamable()&&(this.title=a);try{this.ui.setLocalData(this.title,this.getData(),mxUtils.bind(this,function(){this.setModified(!1);this.contentChanged();null!=b&&b()}))}catch(e){null!=d&&d(e)}});this.isRenamable()&&"."==a.charAt(0)&&null!=d?d({message:mxResources.get("invalidName")}):this.ui.getLocalData(a,mxUtils.bind(this,function(b){this.isRenamable()&&this.getTitle()!=a&&null!=b?this.ui.confirm(mxResources.get("replaceIt", +[a]),g,d):g()}))}else null!=b&&b()};StorageFile.prototype.rename=function(a,c,b){var d=this.getTitle();d!=a?this.ui.getLocalData(a,mxUtils.bind(this,function(g){var e=mxUtils.bind(this,function(){this.title=a;this.hasSameExtension(d,a)||this.setData(this.ui.getFileData());this.saveFile(a,!1,mxUtils.bind(this,function(){this.ui.removeLocalData(d,c)}),b)});null!=g?this.ui.confirm(mxResources.get("replaceIt",[a]),e,b):e()})):c()}; StorageFile.prototype.open=function(){DrawioFile.prototype.open.apply(this,arguments);this.saveFile(this.getTitle())};StorageFile.prototype.getLatestVersion=function(a,c){this.ui.getLocalData(this.title,mxUtils.bind(this,function(b){a(new StorageFile(this.ui,b,this.title))}))};StorageFile.prototype.destroy=function(){DrawioFile.prototype.destroy.apply(this,arguments);null!=this.storageListener&&(mxEvent.removeListener(window,"storage",this.storageListener),this.storageListener=null)};StorageLibrary=function(a,c,b){StorageFile.call(this,a,c,b)};mxUtils.extend(StorageLibrary,StorageFile);StorageLibrary.prototype.isAutosave=function(){return!0};StorageLibrary.prototype.saveAs=function(a,c,b){this.saveFile(a,!1,c,b)};StorageLibrary.prototype.getHash=function(){return"L"+encodeURIComponent(this.title)};StorageLibrary.prototype.getTitle=function(){return".scratchpad"==this.title?mxResources.get("scratchpad"):this.title}; StorageLibrary.prototype.isRenamable=function(a,c,b){return".scratchpad"!=this.title};StorageLibrary.prototype.open=function(){};UrlLibrary=function(a,c,b){StorageFile.call(this,a,c,b);a=b;c=a.lastIndexOf("/");0<=c&&(a=a.substring(c+1));this.fname=a};mxUtils.extend(UrlLibrary,StorageFile);UrlLibrary.prototype.getHash=function(){return"U"+encodeURIComponent(this.title)};UrlLibrary.prototype.getTitle=function(){return this.fname};UrlLibrary.prototype.isAutosave=function(){return!1};UrlLibrary.prototype.isEditable=function(a,c,b){return!1};UrlLibrary.prototype.saveAs=function(a,c,b){};UrlLibrary.prototype.open=function(){};/* mxClient.IS_IOS || */ -var StorageDialog=function(a,c,b){function d(d,f,u,h,q,t){function F(){mxEvent.addListener(x,"click",null!=t?t:function(){u!=App.MODE_GOOGLE||a.isDriveDomain()?u==App.MODE_GOOGLE&&a.spinner.spin(document.body,mxResources.get("authorizing"))?a.drive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();a.setMode(u,g.checked);c()})):u==App.MODE_ONEDRIVE&&a.spinner.spin(document.body,mxResources.get("authorizing"))?a.oneDrive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();a.setMode(u,g.checked); -c()})):(a.setMode(u,g.checked),c()):window.location.hostname=DriveClient.prototype.newAppHostname})}var x=document.createElement("a");x.style.overflow="hidden";x.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";x.className="geBaseButton";x.style.boxSizing="border-box";x.style.fontSize="11px";x.style.position="relative";x.style.margin="4px";x.style.padding="8px 10px 12px 10px";x.style.width="88px";x.style.height="100px";x.style.whiteSpace="nowrap";x.setAttribute("title",f);mxClient.IS_QUIRKS&& -(x.style.cssFloat="left",x.style.zoom="1");var w=document.createElement("div");w.style.textOverflow="ellipsis";w.style.overflow="hidden";if(null!=d){var v=document.createElement("img");v.setAttribute("src",d);v.setAttribute("border","0");v.setAttribute("align","absmiddle");v.style.width="60px";v.style.height="60px";v.style.paddingBottom="6px";x.appendChild(v)}else w.style.paddingTop="5px",w.style.whiteSpace="normal",mxClient.IS_IOS?(x.style.padding="0px 10px 20px 10px",x.style.top="6px"):mxClient.IS_FF&& -(w.style.paddingTop="0px",w.style.marginTop="-2px");x.appendChild(w);mxUtils.write(w,f);if(null!=q)for(d=0;d<q.length;d++)mxUtils.br(w),mxUtils.write(w,q[d]);if(null!=h&&null==a[h]){v.style.visibility="hidden";mxUtils.setOpacity(w,10);var k=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});k.spin(x);var G=window.setTimeout(function(){null==a[h]&&(k.stop(),x.style.display="none")},3E4);a.addListener("clientLoaded", -mxUtils.bind(this,function(b,c){null!=a[h]&&c.getProperty("client")==a[h]&&(window.clearTimeout(G),mxUtils.setOpacity(w,100),v.style.visibility="",k.stop(),F(),"drive"==h&&null!=n.parentNode&&n.parentNode.removeChild(n))}))}else F();p.appendChild(x);++l>=b&&(mxUtils.br(p),l=0)}b=null!=b?b:2;var f=document.createElement("div");f.style.textAlign="center";f.style.whiteSpace="nowrap";f.style.paddingTop="0px";f.style.paddingBottom="20px";var h=a.addLanguageMenu(f,!0);null!=h&&(h.style.bottom=parseInt("28px")- -2+"px");if(!a.isOffline()&&1<a.getServiceCount()){h=document.createElement("a");h.setAttribute("href","https://about.draw.io/support/");h.setAttribute("title",mxResources.get("help"));h.setAttribute("target","_blank");h.style.position="absolute";h.style.textDecoration="none";h.style.cursor="pointer";h.style.fontSize="12px";h.style.bottom="28px";h.style.left="26px";h.style.color="gray";var k=document.createElement("img");mxUtils.setOpacity(k,50);k.style.height="16px";k.style.width="16px";k.setAttribute("border", -"0");k.setAttribute("valign","bottom");k.setAttribute("src",Editor.helpImage);k.style.marginRight="2px";h.appendChild(k);mxUtils.write(h,mxResources.get("help"));f.appendChild(h)}var m=document.createElement("div");m.style.position="absolute";m.style.cursor="pointer";m.style.fontSize="12px";m.style.bottom="28px";m.style.color="gray";mxUtils.write(m,mxResources.get("decideLater"));a.isOfflineApp()?m.style.right="20px":(mxUtils.setPrefixedStyle(m.style,"transform","translate(-50%,0)"),m.style.left= -"50%");this.init=function(){if(mxClient.IS_QUIRKS||8==document.documentMode)m.style.marginLeft=-Math.round(m.clientWidth/2)+"px"};f.appendChild(m);mxEvent.addListener(m,"click",function(){a.hideDialog();var b=Editor.useLocalStorage;a.createFile(a.defaultFilename,null,null,null,null,null,null,!0);Editor.useLocalStorage=b});var p=document.createElement("div");mxClient.IS_QUIRKS&&(p.style.whiteSpace="nowrap",p.style.cssFloat="left");p.style.border="1px solid #d3d3d3";p.style.borderWidth="1px 0px 1px 0px"; -p.style.padding="12px 0px 12px 0px";var g=document.createElement("input");g.setAttribute("type","checkbox");g.setAttribute("checked","checked");g.defaultChecked=!0;var l=0,n=document.createElement("p"),h=document.createElement("p");h.style.fontSize="16pt";h.style.padding="0px";h.style.paddingTop="4px";h.style.paddingBottom="16px";h.style.margin="0px";h.style.color="gray";mxUtils.write(h,mxResources.get("saveDiagramsTo")+":");f.appendChild(h);"function"===typeof window.DriveClient&&d(IMAGE_PATH+"/google-drive-logo.svg", -mxResources.get("googleDrive"),App.MODE_GOOGLE,"drive");"function"===typeof window.OneDriveClient&&d(IMAGE_PATH+"/onedrive-logo.svg",mxResources.get("oneDrive"),App.MODE_ONEDRIVE,"oneDrive");d(IMAGE_PATH+"/osa_drive-harddisk.png",mxResources.get("device"),App.MODE_DEVICE);!isLocalStorage||"1"!=urlParams.browser&&"1"!=urlParams.offline||d(IMAGE_PATH+"/osa_database.png",mxResources.get("browser"),App.MODE_BROWSER);f.appendChild(p);h=document.createElement("p");h.style.marginTop="12px";h.style.marginBottom= -"6px";h.appendChild(g);k=document.createElement("span");k.style.color="gray";k.style.fontSize="12px";mxUtils.write(k," "+mxResources.get("rememberThisSetting"));h.appendChild(k);mxUtils.br(h);var q=a.getRecent();if(null!=q&&0<q.length){var t=document.createElement("select");t.style.marginTop="8px";t.style.width="140px";var v=document.createElement("option");v.setAttribute("value","");v.setAttribute("selected","selected");v.style.textAlign="center";mxUtils.write(v,mxResources.get("openRecent")+"..."); -t.appendChild(v);for(v=0;v<q.length;v++)(function(a){var b=a.mode;b==App.MODE_GOOGLE?b="googleDrive":b==App.MODE_ONEDRIVE&&(b="oneDrive");var c=document.createElement("option");c.setAttribute("value",a.id);mxUtils.write(c,a.title+" ("+mxResources.get(b)+")");t.appendChild(c)})(q[v]);h.appendChild(t);mxEvent.addListener(t,"change",function(b){""!=t.value&&a.loadFile(t.value)})}else h.style.marginTop="20px",p.style.padding="30px 0px 26px 0px";!Graph.fileSupport||mxClient.IS_IE||mxClient.IS_IE11||(q= -document.createElement("div"),q.style.cursor="pointer",q.style.padding="18px 0px 6px 0px",q.style.fontSize="12px",q.style.color="gray",mxUtils.write(q,mxResources.get("import")+": "+mxResources.get("gliffy")+", "+mxResources.get("formatVssx")+", "+mxResources.get("formatVsdx")+", "+mxResources.get("lucidchart")+"..."),mxEvent.addListener(q,"click",function(){var b=document.createElement("input");b.setAttribute("type","file");mxEvent.addListener(b,"change",function(){null!=b.files&&(a.hideDialog(), -a.openFiles(b.files,!0))});b.click()}),h.appendChild(q),p.style.paddingBottom="4px");p.appendChild(h);mxEvent.addListener(k,"click",function(a){g.checked=!g.checked;mxEvent.consume(a)});mxClient.IS_SVG&&isLocalStorage&&"0"!=urlParams.gapi&&(null==document.documentMode||10<=document.documentMode)&&window.setTimeout(function(){null==a.drive&&(n.style.padding="8px",n.style.fontSize="9pt",n.style.marginTop="-14px",n.innerHTML='<a style="background-color:#dcdcdc;padding:5px;color:black;text-decoration:none;" href="https://plus.google.com/u/0/+DrawIo1/posts/1HTrfsb5wDN" target="_blank"><img border="0" src="'+ -mxGraph.prototype.warningImage.src+'" align="top"> '+mxResources.get("googleDriveMissingClickHere")+"</a>",f.appendChild(n))},5E3);this.container=f},SplashDialog=function(a){var c=document.createElement("div");c.style.textAlign="center";a.addLanguageMenu(c,!0);var b=null,b=a.getServiceCount();if(!a.isOffline()&&1<b){b=document.createElement("a");b.setAttribute("href","https://about.draw.io/support/");b.setAttribute("title",mxResources.get("help"));b.setAttribute("target","_blank");b.style.position= -"absolute";b.style.fontSize="12px";b.style.textDecoration="none";b.style.cursor="pointer";b.style.bottom="22px";b.style.left="26px";b.style.color="gray";var d=document.createElement("img");mxUtils.setOpacity(d,50);d.style.height="16px";d.style.width="16px";d.setAttribute("border","0");d.setAttribute("valign","bottom");d.setAttribute("src",Editor.helpImage);d.style.marginRight="2px";b.appendChild(d);mxUtils.write(b,mxResources.get("help"));c.appendChild(b)}b=document.createElement("p");b.style.fontSize= -"16pt";b.style.padding="0px";b.style.paddingTop="2px";b.style.margin="0px";b.style.color="gray";d=document.createElement("img");d.setAttribute("border","0");d.setAttribute("align","absmiddle");d.style.width="40px";d.style.height="40px";d.style.marginRight="12px";d.style.paddingBottom="4px";var f="";a.mode==App.MODE_GOOGLE?(d.src=IMAGE_PATH+"/google-drive-logo.svg",f=mxResources.get("googleDrive")):a.mode==App.MODE_DROPBOX?(d.src=IMAGE_PATH+"/dropbox-logo.svg",f=mxResources.get("dropbox")):a.mode== -App.MODE_ONEDRIVE?(d.src=IMAGE_PATH+"/onedrive-logo.svg",f=mxResources.get("oneDrive")):a.mode==App.MODE_GITHUB?(d.src=IMAGE_PATH+"/github-logo.svg",f=mxResources.get("github")):a.mode==App.MODE_TRELLO?(d.src=IMAGE_PATH+"/trello-logo.svg",f=mxResources.get("trello")):a.mode==App.MODE_BROWSER?(d.src=IMAGE_PATH+"/osa_database.png",f=mxResources.get("browser")):(d.src=IMAGE_PATH+"/osa_drive-harddisk.png",f=mxResources.get("device"));var h=document.createElement("div");h.style.margin="4px 0px 0px 0px"; -var k=document.createElement("button");k.className="geBigButton";k.style.overflow="hidden";k.style.width="340px";mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?(h.style.padding="42px 0px 56px 0px",k.style.marginBottom="12px"):(b.appendChild(d),mxUtils.write(b,f),c.appendChild(b),h.style.border="1px solid #d3d3d3",h.style.borderWidth="1px 0px 1px 0px",h.style.padding="18px 0px 24px 0px",k.style.marginBottom="8px");mxClient.IS_QUIRKS&&(h.style.whiteSpace="nowrap",h.style.cssFloat="left");mxClient.IS_QUIRKS&& -(k.style.width="340px");mxUtils.write(k,mxResources.get("createNewDiagram"));mxEvent.addListener(k,"click",function(){a.hideDialog();a.actions.get("new").funct()});h.appendChild(k);mxUtils.br(h);k=document.createElement("button");k.className="geBigButton";k.style.marginBottom="22px";k.style.overflow="hidden";k.style.width="340px";mxClient.IS_QUIRKS&&(k.style.width="340px");mxUtils.write(k,mxResources.get("openExistingDiagram"));mxEvent.addListener(k,"click",function(){a.actions.get("open").funct()}); -h.appendChild(k);b="undefined";a.mode==App.MODE_GOOGLE?b=mxResources.get("googleDrive"):a.mode==App.MODE_DROPBOX?b=mxResources.get("dropbox"):a.mode==App.MODE_ONEDRIVE?b=mxResources.get("oneDrive"):a.mode==App.MODE_GITHUB?b=mxResources.get("github"):a.mode==App.MODE_TRELLO?b=mxResources.get("trello"):a.mode==App.MODE_DEVICE?b=mxResources.get("device"):a.mode==App.MODE_BROWSER&&(b=mxResources.get("browser"));mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(f=function(b){k.style.marginBottom="24px"; -var c=document.createElement("a");c.setAttribute("href","javascript:void(0)");c.style.display="inline-block";c.style.marginTop="6px";mxUtils.write(c,mxResources.get("signOut"));k.style.marginBottom="16px";h.style.paddingBottom="18px";mxEvent.addListener(c,"click",function(){a.confirm(mxResources.get("areYouSure"),function(){b()})});h.appendChild(c)},d=null!=a.drive?a.drive.getUser():null,a.mode==App.MODE_GOOGLE&&null!=d?(k.style.marginBottom="24px",f=document.createElement("a"),f.setAttribute("href", -"javascript:void(0)"),f.style.display="inline-block",f.style.marginTop="6px",mxUtils.write(f,mxResources.get("changeUser")+" ("+d.displayName+")"),k.style.marginBottom="16px",h.style.paddingBottom="18px",mxEvent.addListener(f,"click",function(){a.hideDialog();a.drive.clearUserId();a.drive.setUser(null);gapi.auth.signOut();a.setMode(App.MODE_GOOGLE);a.hideDialog();a.showSplash();a.drive.authorize(!1,mxUtils.bind(this,mxUtils.bind(this,function(){a.hideDialog();a.showSplash()})),mxUtils.bind(this,function(b){a.handleError(b, -null,function(){a.hideDialog();a.showSplash()})}))}),h.appendChild(f)):a.mode==App.MODE_ONEDRIVE&&null!=a.oneDrive?f(function(){a.oneDrive.logout()}):a.mode==App.MODE_GITHUB&&null!=a.gitHub?f(function(){a.gitHub.logout();a.openLink("https://www.github.com/logout")}):a.mode==App.MODE_TRELLO&&null!=a.trello?a.trello.isAuthorized()&&f(function(){a.trello.logout()}):a.mode==App.MODE_DROPBOX&&null!=a.dropbox&&f(function(){a.dropbox.logout();a.openLink("https://www.dropbox.com/logout")}),mxUtils.br(h), -f=document.createElement("a"),f.setAttribute("href","javascript:void(0)"),f.style.display="inline-block",f.style.marginTop="8px",mxUtils.write(f,mxResources.get("notUsingService",[b])),mxEvent.addListener(f,"click",function(){a.hideDialog(!1);a.setMode(null);a.clearMode();a.showSplash(!0)}),h.appendChild(f));c.appendChild(h);this.container=c},ConfirmDialog=function(a,c,b,d,f,h,k,m,p){var g=document.createElement("div");g.style.textAlign="center";var l=document.createElement("div");l.style.padding= -"6px";l.style.overflow="auto";l.style.maxHeight="44px";mxClient.IS_QUIRKS&&(l.style.height="60px");mxUtils.write(l,c);g.appendChild(l);l=document.createElement("div");l.style.textAlign="center";l.style.whiteSpace="nowrap";var n=document.createElement("input");n.setAttribute("type","checkbox");h=mxUtils.button(h||mxResources.get("cancel"),function(){a.hideDialog();null!=d&&d(n.checked)});h.className="geBtn";null!=m&&(h.innerHTML=m+"<br>"+h.innerHTML,h.style.paddingBottom="8px",h.style.paddingTop="8px", -h.style.height="auto",h.style.width="40%");a.editor.cancelFirst&&l.appendChild(h);var q=mxUtils.button(f||mxResources.get("ok"),function(){a.hideDialog();null!=b&&b(n.checked)});l.appendChild(q);null!=k?(q.innerHTML=k+"<br>"+q.innerHTML+"<br>",q.style.paddingBottom="8px",q.style.paddingTop="8px",q.style.height="auto",q.className="geBtn",q.style.width="40%"):q.className="geBtn gePrimaryBtn";a.editor.cancelFirst||l.appendChild(h);g.appendChild(l);p?(l.style.marginTop="10px",l=document.createElement("p"), -l.style.marginTop="20px",l.appendChild(n),f=document.createElement("span"),mxUtils.write(f," "+mxResources.get("rememberThisSetting")),l.appendChild(f),g.appendChild(l),mxEvent.addListener(f,"click",function(a){n.checked=!n.checked;mxEvent.consume(a)})):l.style.marginTop="16px";this.init=function(){q.focus()};this.container=g},EmbedDialog=function(a,c,b,d,f,h){d=document.createElement("div");var k=/^https?:\/\//.test(c)||/^mailto:\/\//.test(c);null!=h?mxUtils.write(d,h):mxUtils.write(d,mxResources.get(5E5> -c.length?k?"link":"mainEmbedNotice":"preview")+":");mxUtils.br(d);h=document.createElement("div");h.style.position="absolute";h.style.top="30px";h.style.right="30px";h.style.color="gray";mxUtils.write(h,a.formatFileSize(c.length));d.appendChild(h);var m=document.createElement("textarea");m.setAttribute("autocomplete","off");m.setAttribute("autocorrect","off");m.setAttribute("autocapitalize","off");m.setAttribute("spellcheck","false");m.style.marginTop="10px";m.style.resize="none";m.style.height="150px"; -m.style.width="440px";m.style.border="1px solid gray";m.value=mxResources.get("updatingDocument");d.appendChild(m);mxUtils.br(d);this.init=function(){window.setTimeout(function(){5E5>c.length?(m.value=c,m.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?m.select():document.execCommand("selectAll",!1,null)):(m.setAttribute("readonly","true"),m.value=c.substring(0,340)+"... ("+mxResources.get("drawingTooLarge")+")")},0)};h=document.createElement("div");h.style.position= -"absolute";h.style.bottom="36px";h.style.right="32px";var p=null;!EmbedDialog.showPreviewOption||mxClient.IS_CHROMEAPP&&!k||navigator.standalone||!(k||mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode))||(p=mxUtils.button(mxResources.get(5E5>c.length?"preview":"openInNewWindow"),function(){var g=5E5>c.length?m.value:c;if(null!=f)f(g);else if(k)try{var d=a.openLink(g);null!=d&&(null==b||0<b)&&window.setTimeout(mxUtils.bind(this,function(){null!=d&&null!=d.location.href&&d.location.href.substring(0, -8)!=g.substring(0,8)&&(d.close(),a.handleError({message:mxResources.get("drawingTooLarge")}))}),b||500)}catch(v){a.handleError({message:v.message||mxResources.get("drawingTooLarge")})}else{var l=window.open().document;l.writeln("<html><head><title>"+encodeURIComponent(mxResources.get("preview"))+'</title><meta charset="utf-8"></head><body>'+c+"</body></html>");l.close()}}),p.className="geBtn",h.appendChild(p));if(!k||7500<c.length){var g=mxUtils.button(mxResources.get("download"),function(){a.hideDialog(); -a.saveData("embed.txt","txt",c,"text/plain")});g.className="geBtn";h.appendChild(g)}if(k&&(!a.isOffline()||mxClient.IS_CHROMEAPP)){if(51200>c.length){var l=mxUtils.button("",function(){try{var b="https://www.facebook.com/sharer.php?p[url]="+encodeURIComponent(m.value);a.openLink(b)}catch(q){a.handleError({message:q.message||mxResources.get("drawingTooLarge")})}}),g=document.createElement("img");g.setAttribute("src",Editor.facebookImage);g.setAttribute("width","18");g.setAttribute("height","18");g.setAttribute("border", -"0");l.appendChild(g);l.setAttribute("title",mxResources.get("facebook")+" ("+a.formatFileSize(51200)+" max)");l.style.verticalAlign="bottom";l.style.paddingTop="4px";l.style.minWidth="46px";l.className="geBtn";h.appendChild(l)}7168>c.length&&(l=mxUtils.button("",function(){try{var b="https://twitter.com/intent/tweet?text="+encodeURIComponent("Check out the diagram I made using @drawio")+"&url="+encodeURIComponent(m.value);a.openLink(b)}catch(q){a.handleError({message:q.message||mxResources.get("drawingTooLarge")})}}), -g=document.createElement("img"),g.setAttribute("src",Editor.tweetImage),g.setAttribute("width","18"),g.setAttribute("height","18"),g.setAttribute("border","0"),g.style.marginBottom="5px",l.appendChild(g),l.setAttribute("title",mxResources.get("twitter")+" ("+a.formatFileSize(7168)+" max)"),l.style.verticalAlign="bottom",l.style.paddingTop="4px",l.style.minWidth="46px",l.className="geBtn",h.appendChild(l))}g=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});h.appendChild(g);l=mxUtils.button(mxResources.get("copy"), -function(){m.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?m.select():document.execCommand("selectAll",!1,null);document.execCommand("copy");a.alert(mxResources.get("copiedToClipboard"))});5E5>c.length?mxClient.IS_SF||null!=document.documentMode?g.className="geBtn gePrimaryBtn":(h.appendChild(l),l.className="geBtn gePrimaryBtn",g.className="geBtn"):(h.appendChild(p),g.className="geBtn",p.className="geBtn gePrimaryBtn");d.appendChild(h);this.container=d}; +var StorageDialog=function(a,c,b){function d(d,p,v,e,g,u){function y(){mxEvent.addListener(B,"click",null!=u?u:function(){v!=App.MODE_GOOGLE||a.isDriveDomain()?v==App.MODE_GOOGLE&&a.spinner.spin(document.body,mxResources.get("authorizing"))?a.drive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();a.setMode(v,q.checked);c()})):v==App.MODE_ONEDRIVE&&a.spinner.spin(document.body,mxResources.get("authorizing"))?a.oneDrive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();a.setMode(v,q.checked); +c()})):(a.setMode(v,q.checked),c()):window.location.hostname=DriveClient.prototype.newAppHostname})}var B=document.createElement("a");B.style.overflow="hidden";B.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";B.className="geBaseButton";B.style.boxSizing="border-box";B.style.fontSize="11px";B.style.position="relative";B.style.margin="4px";B.style.padding="8px 10px 12px 10px";B.style.width="88px";B.style.height="100px";B.style.whiteSpace="nowrap";B.setAttribute("title",p);mxClient.IS_QUIRKS&& +(B.style.cssFloat="left",B.style.zoom="1");var t=document.createElement("div");t.style.textOverflow="ellipsis";t.style.overflow="hidden";if(null!=d){var x=document.createElement("img");x.setAttribute("src",d);x.setAttribute("border","0");x.setAttribute("align","absmiddle");x.style.width="60px";x.style.height="60px";x.style.paddingBottom="6px";B.appendChild(x)}else t.style.paddingTop="5px",t.style.whiteSpace="normal",mxClient.IS_IOS?(B.style.padding="0px 10px 20px 10px",B.style.top="6px"):mxClient.IS_FF&& +(t.style.paddingTop="0px",t.style.marginTop="-2px");B.appendChild(t);mxUtils.write(t,p);if(null!=g)for(d=0;d<g.length;d++)mxUtils.br(t),mxUtils.write(t,g[d]);if(null!=e&&null==a[e]){x.style.visibility="hidden";mxUtils.setOpacity(t,10);var H=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});H.spin(B);var k=window.setTimeout(function(){null==a[e]&&(H.stop(),B.style.display="none")},3E4);a.addListener("clientLoaded", +mxUtils.bind(this,function(b,c){null!=a[e]&&c.getProperty("client")==a[e]&&(window.clearTimeout(k),mxUtils.setOpacity(t,100),x.style.visibility="",H.stop(),y(),"drive"==e&&null!=l.parentNode&&l.parentNode.removeChild(l))}))}else y();n.appendChild(B);++f>=b&&(mxUtils.br(n),f=0)}b=null!=b?b:2;var g=document.createElement("div");g.style.textAlign="center";g.style.whiteSpace="nowrap";g.style.paddingTop="0px";g.style.paddingBottom="20px";var e=a.addLanguageMenu(g,!0);null!=e&&(e.style.bottom=parseInt("28px")- +3+"px");if(!a.isOffline()&&1<a.getServiceCount()){e=document.createElement("a");e.setAttribute("href","https://about.draw.io/support/");e.setAttribute("title",mxResources.get("help"));e.setAttribute("target","_blank");e.style.position="absolute";e.style.textDecoration="none";e.style.cursor="pointer";e.style.fontSize="12px";e.style.bottom="28px";e.style.left="26px";e.style.color="gray";var k=document.createElement("img");mxUtils.setOpacity(k,50);k.style.height="16px";k.style.width="16px";k.setAttribute("border", +"0");k.setAttribute("valign","bottom");k.setAttribute("src",Editor.helpImage);k.style.marginRight="2px";e.appendChild(k);mxUtils.write(e,mxResources.get("help"));g.appendChild(e)}var m=document.createElement("div");m.style.position="absolute";m.style.cursor="pointer";m.style.fontSize="12px";m.style.bottom="28px";m.style.color="gray";mxUtils.write(m,mxResources.get("decideLater"));a.isOfflineApp()?m.style.right="20px":(mxUtils.setPrefixedStyle(m.style,"transform","translate(-50%,0)"),m.style.left= +"50%");this.init=function(){if(mxClient.IS_QUIRKS||8==document.documentMode)m.style.marginLeft=-Math.round(m.clientWidth/2)+"px"};g.appendChild(m);mxEvent.addListener(m,"click",function(){a.hideDialog();var b=Editor.useLocalStorage;a.createFile(a.defaultFilename,null,null,null,null,null,null,!0);Editor.useLocalStorage=b});var n=document.createElement("div");mxClient.IS_QUIRKS&&(n.style.whiteSpace="nowrap",n.style.cssFloat="left");n.style.border="1px solid #d3d3d3";n.style.borderWidth="1px 0px 1px 0px"; +n.style.padding="12px 0px 12px 0px";var q=document.createElement("input");q.setAttribute("type","checkbox");q.setAttribute("checked","checked");q.defaultChecked=!0;var f=0,l=document.createElement("p"),e=document.createElement("p");e.style.fontSize="16pt";e.style.padding="0px";e.style.paddingTop="4px";e.style.paddingBottom="16px";e.style.margin="0px";e.style.color="gray";mxUtils.write(e,mxResources.get("saveDiagramsTo")+":");g.appendChild(e);"function"===typeof window.DriveClient&&d(IMAGE_PATH+"/google-drive-logo.svg", +mxResources.get("googleDrive"),App.MODE_GOOGLE,"drive");"function"===typeof window.OneDriveClient&&d(IMAGE_PATH+"/onedrive-logo.svg",mxResources.get("oneDrive"),App.MODE_ONEDRIVE,"oneDrive");d(IMAGE_PATH+"/osa_drive-harddisk.png",mxResources.get("device"),App.MODE_DEVICE);!isLocalStorage||"1"!=urlParams.browser&&"1"!=urlParams.offline||d(IMAGE_PATH+"/osa_database.png",mxResources.get("browser"),App.MODE_BROWSER);g.appendChild(n);e=document.createElement("p");e.style.marginTop="12px";e.style.marginBottom= +"6px";e.appendChild(q);k=document.createElement("span");k.style.color="gray";k.style.fontSize="12px";mxUtils.write(k," "+mxResources.get("rememberThisSetting"));e.appendChild(k);mxUtils.br(e);var p=a.getRecent();if(null!=p&&0<p.length){var t=document.createElement("select");t.style.marginTop="8px";t.style.width="140px";var u=document.createElement("option");u.setAttribute("value","");u.setAttribute("selected","selected");u.style.textAlign="center";mxUtils.write(u,mxResources.get("openRecent")+"..."); +t.appendChild(u);for(u=0;u<p.length;u++)(function(a){var b=a.mode;b==App.MODE_GOOGLE?b="googleDrive":b==App.MODE_ONEDRIVE&&(b="oneDrive");var c=document.createElement("option");c.setAttribute("value",a.id);mxUtils.write(c,a.title+" ("+mxResources.get(b)+")");t.appendChild(c)})(p[u]);e.appendChild(t);mxEvent.addListener(t,"change",function(b){""!=t.value&&a.loadFile(t.value)})}else e.style.marginTop="20px",n.style.padding="30px 0px 26px 0px";!Graph.fileSupport||mxClient.IS_IE||mxClient.IS_IE11||(p= +document.createElement("div"),p.style.cursor="pointer",p.style.padding="18px 0px 6px 0px",p.style.fontSize="12px",p.style.color="gray",mxUtils.write(p,mxResources.get("import")+": "+mxResources.get("gliffy")+", "+mxResources.get("formatVssx")+", "+mxResources.get("formatVsdx")+", "+mxResources.get("lucidchart")+"..."),mxEvent.addListener(p,"click",function(){var b=document.createElement("input");b.setAttribute("type","file");mxEvent.addListener(b,"change",function(){null!=b.files&&(a.hideDialog(), +a.openFiles(b.files,!0))});b.click()}),e.appendChild(p),n.style.paddingBottom="4px");n.appendChild(e);mxEvent.addListener(k,"click",function(a){q.checked=!q.checked;mxEvent.consume(a)});mxClient.IS_SVG&&isLocalStorage&&"0"!=urlParams.gapi&&(null==document.documentMode||10<=document.documentMode)&&window.setTimeout(function(){null==a.drive&&(l.style.padding="8px",l.style.fontSize="9pt",l.style.marginTop="-14px",l.innerHTML='<a style="background-color:#dcdcdc;padding:5px;color:black;text-decoration:none;" href="https://plus.google.com/u/0/+DrawIo1/posts/1HTrfsb5wDN" target="_blank"><img border="0" src="'+ +mxGraph.prototype.warningImage.src+'" align="top"> '+mxResources.get("googleDriveMissingClickHere")+"</a>",g.appendChild(l))},5E3);this.container=g},SplashDialog=function(a){var c=document.createElement("div");c.style.textAlign="center";var b=a.addLanguageMenu(c,!0);null!=b&&(b.style.bottom="19px");b=null;b=a.getServiceCount();if(!a.isOffline()&&1<b){b=document.createElement("a");b.setAttribute("href","https://about.draw.io/support/");b.setAttribute("title",mxResources.get("help"));b.setAttribute("target", +"_blank");b.style.position="absolute";b.style.fontSize="12px";b.style.textDecoration="none";b.style.cursor="pointer";b.style.bottom="22px";b.style.left="26px";b.style.color="gray";var d=document.createElement("img");mxUtils.setOpacity(d,50);d.style.height="16px";d.style.width="16px";d.setAttribute("border","0");d.setAttribute("valign","bottom");d.setAttribute("src",Editor.helpImage);d.style.marginRight="2px";b.appendChild(d);mxUtils.write(b,mxResources.get("help"));c.appendChild(b)}b=document.createElement("p"); +b.style.fontSize="16pt";b.style.padding="0px";b.style.paddingTop="2px";b.style.margin="0px";b.style.color="gray";d=document.createElement("img");d.setAttribute("border","0");d.setAttribute("align","absmiddle");d.style.width="40px";d.style.height="40px";d.style.marginRight="12px";d.style.paddingBottom="4px";var g="";a.mode==App.MODE_GOOGLE?(d.src=IMAGE_PATH+"/google-drive-logo.svg",g=mxResources.get("googleDrive")):a.mode==App.MODE_DROPBOX?(d.src=IMAGE_PATH+"/dropbox-logo.svg",g=mxResources.get("dropbox")): +a.mode==App.MODE_ONEDRIVE?(d.src=IMAGE_PATH+"/onedrive-logo.svg",g=mxResources.get("oneDrive")):a.mode==App.MODE_GITHUB?(d.src=IMAGE_PATH+"/github-logo.svg",g=mxResources.get("github")):a.mode==App.MODE_TRELLO?(d.src=IMAGE_PATH+"/trello-logo.svg",g=mxResources.get("trello")):a.mode==App.MODE_BROWSER?(d.src=IMAGE_PATH+"/osa_database.png",g=mxResources.get("browser")):(d.src=IMAGE_PATH+"/osa_drive-harddisk.png",g=mxResources.get("device"));var e=document.createElement("div");e.style.margin="4px 0px 0px 0px"; +var k=document.createElement("button");k.className="geBigButton";k.style.overflow="hidden";k.style.width="340px";mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?(e.style.padding="42px 0px 56px 0px",k.style.marginBottom="12px"):(b.appendChild(d),mxUtils.write(b,g),c.appendChild(b),e.style.border="1px solid #d3d3d3",e.style.borderWidth="1px 0px 1px 0px",e.style.padding="18px 0px 24px 0px",k.style.marginBottom="8px");mxClient.IS_QUIRKS&&(e.style.whiteSpace="nowrap",e.style.cssFloat="left");mxClient.IS_QUIRKS&& +(k.style.width="340px");mxUtils.write(k,mxResources.get("createNewDiagram"));mxEvent.addListener(k,"click",function(){a.hideDialog();a.actions.get("new").funct()});e.appendChild(k);mxUtils.br(e);k=document.createElement("button");k.className="geBigButton";k.style.marginBottom="22px";k.style.overflow="hidden";k.style.width="340px";mxClient.IS_QUIRKS&&(k.style.width="340px");mxUtils.write(k,mxResources.get("openExistingDiagram"));mxEvent.addListener(k,"click",function(){a.actions.get("open").funct()}); +e.appendChild(k);a.mode==App.MODE_GOOGLE?mxResources.get("googleDrive"):a.mode==App.MODE_DROPBOX?mxResources.get("dropbox"):a.mode==App.MODE_ONEDRIVE?mxResources.get("oneDrive"):a.mode==App.MODE_GITHUB?mxResources.get("github"):a.mode==App.MODE_TRELLO?mxResources.get("trello"):a.mode==App.MODE_DEVICE?mxResources.get("device"):a.mode==App.MODE_BROWSER&&mxResources.get("browser");mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(d=function(b){k.style.marginBottom="24px";var c=document.createElement("a"); +c.setAttribute("href","javascript:void(0)");c.style.display="inline-block";c.style.marginTop="6px";mxUtils.write(c,mxResources.get("signOut"));k.style.marginBottom="16px";e.style.paddingBottom="18px";mxEvent.addListener(c,"click",function(){a.confirm(mxResources.get("areYouSure"),function(){b()})});e.appendChild(c)},b=null!=a.drive?a.drive.getUser():null,a.mode==App.MODE_GOOGLE&&null!=b?(k.style.marginBottom="24px",d=document.createElement("a"),d.setAttribute("href","javascript:void(0)"),d.style.display= +"inline-block",d.style.marginTop="6px",mxUtils.write(d,mxResources.get("changeUser")+" ("+b.displayName+")"),k.style.marginBottom="16px",e.style.paddingBottom="18px",mxEvent.addListener(d,"click",function(){a.hideDialog();a.drive.clearUserId();a.drive.setUser(null);gapi.auth.signOut();a.setMode(App.MODE_GOOGLE);a.hideDialog();a.showSplash();a.drive.authorize(!1,mxUtils.bind(this,mxUtils.bind(this,function(){a.hideDialog();a.showSplash()})),mxUtils.bind(this,function(b){a.handleError(b,null,function(){a.hideDialog(); +a.showSplash()})}))}),e.appendChild(d)):a.mode==App.MODE_ONEDRIVE&&null!=a.oneDrive?d(function(){a.oneDrive.logout()}):a.mode==App.MODE_GITHUB&&null!=a.gitHub?d(function(){a.gitHub.logout();a.openLink("https://www.github.com/logout")}):a.mode==App.MODE_TRELLO&&null!=a.trello?a.trello.isAuthorized()&&d(function(){a.trello.logout()}):a.mode==App.MODE_DROPBOX&&null!=a.dropbox&&d(function(){a.dropbox.logout();a.openLink("https://www.dropbox.com/logout")}),mxUtils.br(e),d=document.createElement("a"),d.setAttribute("href", +"javascript:void(0)"),d.style.display="inline-block",d.style.marginTop="8px",mxUtils.write(d,mxResources.get("changeStorage")),mxEvent.addListener(d,"click",function(){a.hideDialog(!1);a.setMode(null);a.clearMode();a.showSplash(!0)}),e.appendChild(d));c.appendChild(e);this.container=c},ConfirmDialog=function(a,c,b,d,g,e,k,m,n){var q=document.createElement("div");q.style.textAlign="center";var f=document.createElement("div");f.style.padding="6px";f.style.overflow="auto";f.style.maxHeight="44px";mxClient.IS_QUIRKS&& +(f.style.height="60px");mxUtils.write(f,c);q.appendChild(f);f=document.createElement("div");f.style.textAlign="center";f.style.whiteSpace="nowrap";var l=document.createElement("input");l.setAttribute("type","checkbox");e=mxUtils.button(e||mxResources.get("cancel"),function(){a.hideDialog();null!=d&&d(l.checked)});e.className="geBtn";null!=m&&(e.innerHTML=m+"<br>"+e.innerHTML,e.style.paddingBottom="8px",e.style.paddingTop="8px",e.style.height="auto",e.style.width="40%");a.editor.cancelFirst&&f.appendChild(e); +var p=mxUtils.button(g||mxResources.get("ok"),function(){a.hideDialog();null!=b&&b(l.checked)});f.appendChild(p);null!=k?(p.innerHTML=k+"<br>"+p.innerHTML+"<br>",p.style.paddingBottom="8px",p.style.paddingTop="8px",p.style.height="auto",p.className="geBtn",p.style.width="40%"):p.className="geBtn gePrimaryBtn";a.editor.cancelFirst||f.appendChild(e);q.appendChild(f);n?(f.style.marginTop="10px",f=document.createElement("p"),f.style.marginTop="20px",f.appendChild(l),g=document.createElement("span"),mxUtils.write(g, +" "+mxResources.get("rememberThisSetting")),f.appendChild(g),q.appendChild(f),mxEvent.addListener(g,"click",function(a){l.checked=!l.checked;mxEvent.consume(a)})):f.style.marginTop="16px";this.init=function(){p.focus()};this.container=q},EmbedDialog=function(a,c,b,d,g,e){d=document.createElement("div");var k=/^https?:\/\//.test(c)||/^mailto:\/\//.test(c);null!=e?mxUtils.write(d,e):mxUtils.write(d,mxResources.get(5E5>c.length?k?"link":"mainEmbedNotice":"preview")+":");mxUtils.br(d);e=document.createElement("div"); +e.style.position="absolute";e.style.top="30px";e.style.right="30px";e.style.color="gray";mxUtils.write(e,a.formatFileSize(c.length));d.appendChild(e);var m=document.createElement("textarea");m.setAttribute("autocomplete","off");m.setAttribute("autocorrect","off");m.setAttribute("autocapitalize","off");m.setAttribute("spellcheck","false");m.style.marginTop="10px";m.style.resize="none";m.style.height="150px";m.style.width="440px";m.style.border="1px solid gray";m.value=mxResources.get("updatingDocument"); +d.appendChild(m);mxUtils.br(d);this.init=function(){window.setTimeout(function(){5E5>c.length?(m.value=c,m.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?m.select():document.execCommand("selectAll",!1,null)):(m.setAttribute("readonly","true"),m.value=c.substring(0,340)+"... ("+mxResources.get("drawingTooLarge")+")")},0)};e=document.createElement("div");e.style.position="absolute";e.style.bottom="36px";e.style.right="32px";var n=null;!EmbedDialog.showPreviewOption|| +mxClient.IS_CHROMEAPP&&!k||navigator.standalone||!(k||mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode))||(n=mxUtils.button(mxResources.get(5E5>c.length?"preview":"openInNewWindow"),function(){var f=5E5>c.length?m.value:c;if(null!=g)g(f);else if(k)try{var d=a.openLink(f);null!=d&&(null==b||0<b)&&window.setTimeout(mxUtils.bind(this,function(){null!=d&&null!=d.location.href&&d.location.href.substring(0,8)!=f.substring(0,8)&&(d.close(),a.handleError({message:mxResources.get("drawingTooLarge")}))}), +b||500)}catch(u){a.handleError({message:u.message||mxResources.get("drawingTooLarge")})}else{var e=window.open(),e=null!=e?e.document:null;null!=e?(e.writeln("<html><head><title>"+encodeURIComponent(mxResources.get("preview"))+'</title><meta charset="utf-8"></head><body>'+c+"</body></html>"),e.close()):a.handleError({message:mxResources.get("errorUpdatingPreview")})}}),n.className="geBtn",e.appendChild(n));if(!k||7500<c.length){var q=mxUtils.button(mxResources.get("download"),function(){a.hideDialog(); +a.saveData("embed.txt","txt",c,"text/plain")});q.className="geBtn";e.appendChild(q)}if(k&&(!a.isOffline()||mxClient.IS_CHROMEAPP)){if(51200>c.length){var f=mxUtils.button("",function(){try{var b="https://www.facebook.com/sharer.php?p[url]="+encodeURIComponent(m.value);a.openLink(b)}catch(p){a.handleError({message:p.message||mxResources.get("drawingTooLarge")})}}),q=document.createElement("img");q.setAttribute("src",Editor.facebookImage);q.setAttribute("width","18");q.setAttribute("height","18");q.setAttribute("border", +"0");f.appendChild(q);f.setAttribute("title",mxResources.get("facebook")+" ("+a.formatFileSize(51200)+" max)");f.style.verticalAlign="bottom";f.style.paddingTop="4px";f.style.minWidth="46px";f.className="geBtn";e.appendChild(f)}7168>c.length&&(f=mxUtils.button("",function(){try{var b="https://twitter.com/intent/tweet?text="+encodeURIComponent("Check out the diagram I made using @drawio")+"&url="+encodeURIComponent(m.value);a.openLink(b)}catch(p){a.handleError({message:p.message||mxResources.get("drawingTooLarge")})}}), +q=document.createElement("img"),q.setAttribute("src",Editor.tweetImage),q.setAttribute("width","18"),q.setAttribute("height","18"),q.setAttribute("border","0"),q.style.marginBottom="5px",f.appendChild(q),f.setAttribute("title",mxResources.get("twitter")+" ("+a.formatFileSize(7168)+" max)"),f.style.verticalAlign="bottom",f.style.paddingTop="4px",f.style.minWidth="46px",f.className="geBtn",e.appendChild(f))}q=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});e.appendChild(q);f=mxUtils.button(mxResources.get("copy"), +function(){m.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?m.select():document.execCommand("selectAll",!1,null);document.execCommand("copy");a.alert(mxResources.get("copiedToClipboard"))});5E5>c.length?mxClient.IS_SF||null!=document.documentMode?q.className="geBtn gePrimaryBtn":(e.appendChild(f),f.className="geBtn gePrimaryBtn",q.className="geBtn"):(e.appendChild(n),q.className="geBtn",n.className="geBtn gePrimaryBtn");d.appendChild(e);this.container=d}; EmbedDialog.showPreviewOption=!0; -var GoogleSitesDialog=function(a,c){function b(){var a=null!=A&&null!=A.getTitle()?A.getTitle():this.defaultFilename;if(G.checked&&""!=q.value){var b="https://www.draw.io/gadget.xml?type=4&diagram="+encodeURIComponent(mxUtils.htmlEntities(q.value));null!=a&&(b+="&title="+encodeURIComponent(a));0<z.length&&(b+="&s="+z);""!=t.value&&"0"!=t.value&&(b+="&border="+t.value);""!=n.value&&(b+="&height="+n.value);b+="&pan="+(v.checked?"1":"0");b+="&zoom="+(w.checked?"1":"0");b+="&fit="+(F.checked?"1":"0"); -b+="&resize="+(x.checked?"1":"0");b+="&x0="+Number(l.value);b+="&y0="+p;f.mathEnabled&&(b+="&math=1");u.checked?b+="&edit=_blank":y.checked&&(b+="&edit="+encodeURIComponent(mxUtils.htmlEntities(window.location.href)));g.value=b}else A.constructor==DriveFile||A.constructor==DropboxFile?(b="https://www.draw.io/gadget.xml?embed=0&diagram=",""!=q.value?b+=encodeURIComponent(mxUtils.htmlEntities(q.value))+"&type=3":(b+=A.getHash().substring(1),b=A.constructor==DropboxFile?b+"&type=2":b+"&type=1"),null!= -a&&(b+="&title="+encodeURIComponent(a)),""!=n.value&&(a=parseInt(n.value)+parseInt(l.value),b+="&height="+a),g.value=b):g.value=""}var d=document.createElement("div"),f=a.editor.graph,h=f.getGraphBounds(),k=f.view.scale,m=Math.floor(h.x/k-f.view.translate.x),p=Math.floor(h.y/k-f.view.translate.y);mxUtils.write(d,mxResources.get("googleGadget")+":");mxUtils.br(d);var g=document.createElement("input");g.setAttribute("type","text");g.style.marginBottom="8px";g.style.marginTop="2px";g.style.width="410px"; -d.appendChild(g);mxUtils.br(d);this.init=function(){g.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?g.select():document.execCommand("selectAll",!1,null)};mxUtils.write(d,mxResources.get("top")+":");var l=document.createElement("input");l.setAttribute("type","text");l.setAttribute("size","4");l.style.marginRight="16px";l.style.marginLeft="4px";l.value=m;d.appendChild(l);mxUtils.write(d,mxResources.get("height")+":");var n=document.createElement("input");n.setAttribute("type", -"text");n.setAttribute("size","4");n.style.marginLeft="4px";n.value=Math.ceil(h.height/k);d.appendChild(n);mxUtils.br(d);h=document.createElement("hr");h.setAttribute("size","1");h.style.marginBottom="16px";h.style.marginTop="16px";d.appendChild(h);mxUtils.write(d,mxResources.get("publicDiagramUrl")+":");mxUtils.br(d);var q=document.createElement("input");q.setAttribute("type","text");q.setAttribute("size","28");q.style.marginBottom="8px";q.style.marginTop="2px";q.style.width="410px";q.value=c||""; -d.appendChild(q);mxUtils.br(d);mxUtils.write(d,mxResources.get("borderWidth")+":");var t=document.createElement("input");t.setAttribute("type","text");t.setAttribute("size","3");t.style.marginBottom="8px";t.style.marginLeft="4px";t.value="0";d.appendChild(t);mxUtils.br(d);var v=document.createElement("input");v.setAttribute("type","checkbox");v.setAttribute("checked","checked");v.defaultChecked=!0;v.style.marginLeft="16px";d.appendChild(v);mxUtils.write(d,mxResources.get("pan")+" ");var w=document.createElement("input"); -w.setAttribute("type","checkbox");w.setAttribute("checked","checked");w.defaultChecked=!0;w.style.marginLeft="8px";d.appendChild(w);mxUtils.write(d,mxResources.get("zoom")+" ");var y=document.createElement("input");y.setAttribute("type","checkbox");y.style.marginLeft="8px";y.setAttribute("title",window.location.href);d.appendChild(y);mxUtils.write(d,mxResources.get("edit")+" ");var u=document.createElement("input");u.setAttribute("type","checkbox");u.style.marginLeft="8px";d.appendChild(u);mxUtils.write(d, -mxResources.get("asNew")+" ");mxUtils.br(d);var x=document.createElement("input");x.setAttribute("type","checkbox");x.setAttribute("checked","checked");x.defaultChecked=!0;x.style.marginLeft="16px";d.appendChild(x);mxUtils.write(d,mxResources.get("resize")+" ");var F=document.createElement("input");F.setAttribute("type","checkbox");F.style.marginLeft="8px";d.appendChild(F);mxUtils.write(d,mxResources.get("fit")+" ");var G=document.createElement("input");G.setAttribute("type","checkbox");G.style.marginLeft= -"8px";d.appendChild(G);mxUtils.write(d,mxResources.get("embed")+" ");var z=a.getBasenames().join(";"),A=a.getCurrentFile();mxEvent.addListener(v,"change",b);mxEvent.addListener(w,"change",b);mxEvent.addListener(x,"change",b);mxEvent.addListener(F,"change",b);mxEvent.addListener(y,"change",b);mxEvent.addListener(u,"change",b);mxEvent.addListener(G,"change",b);mxEvent.addListener(n,"change",b);mxEvent.addListener(l,"change",b);mxEvent.addListener(t,"change",b);mxEvent.addListener(q,"change",b);b(); -mxEvent.addListener(g,"click",function(){g.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?g.select():document.execCommand("selectAll",!1,null)});h=document.createElement("div");h.style.paddingTop="12px";h.style.textAlign="right";k=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});k.className="geBtn gePrimaryBtn";h.appendChild(k);d.appendChild(h);this.container=d},CreateGraphDialog=function(a,c,b){var d=document.createElement("div");d.style.textAlign= -"right";this.init=function(){var c=document.createElement("div");c.style.position="relative";c.style.border="1px solid gray";c.style.width="100%";c.style.height="360px";c.style.overflow="hidden";c.style.marginBottom="16px";mxEvent.disableContextMenu(c);d.appendChild(c);var h=new Graph(c);h.setCellsCloneable(!0);h.setPanning(!0);h.setAllowDanglingEdges(!1);h.connectionHandler.select=!1;h.view.setTranslate(20,20);h.border=20;h.panningHandler.useLeftButtonForPanning=!0;var k="curved=1;";h.cellRenderer.installCellOverlayListeners= -function(a,b,c){mxCellRenderer.prototype.installCellOverlayListeners.apply(this,arguments);mxEvent.addListener(c.node,mxClient.IS_POINTER?"pointerdown":"mousedown",function(c){b.fireEvent(new mxEventObject("pointerdown","event",c,"state",a))});!mxClient.IS_POINTER&&mxClient.IS_TOUCH&&mxEvent.addListener(c.node,"touchstart",function(c){b.fireEvent(new mxEventObject("pointerdown","event",c,"state",a))})};h.getAllConnectionConstraints=function(){return null};h.connectionHandler.marker.highlight.keepOnTop= -!1;h.connectionHandler.createEdgeState=function(a){a=h.createEdge(null,null,null,null,null,k);return new mxCellState(this.graph.view,a,this.graph.getCellStyle(a))};var m=h.getDefaultParent(),p=mxUtils.bind(this,function(a){var b=new mxCellOverlay(this.connectImage,"Add outgoing");b.cursor="hand";b.addListener(mxEvent.CLICK,function(b,c){h.connectionHandler.reset();h.clearSelection();var g=h.getCellGeometry(a),d;n(function(){d=h.insertVertex(m,null,"Entry",g.x,g.y,80,30,"rounded=1;");p(d);h.view.refresh(d); -h.insertEdge(m,null,"",a,d,k)},function(){h.scrollCellToVisible(d)})});b.addListener("pointerdown",function(a,b){var c=b.getProperty("event"),g=b.getProperty("state");h.popupMenuHandler.hideMenu();h.stopEditing(!1);var d=mxUtils.convertPoint(h.container,mxEvent.getClientX(c),mxEvent.getClientY(c));h.connectionHandler.start(g,d.x,d.y);h.isMouseDown=!0;h.isMouseTrigger=mxEvent.isMouseEvent(c);mxEvent.consume(c)});h.addCellOverlay(a,b)});h.getModel().beginUpdate();var g;try{g=h.insertVertex(m,null,"Start", -0,0,80,30,"ellipse"),p(g)}finally{h.getModel().endUpdate()}var l;"horizontalTree"==b?(l=new mxCompactTreeLayout(h),l.edgeRouting=!1,l.levelDistance=30,k="edgeStyle=elbowEdgeStyle;elbow=horizontal;"):"verticalTree"==b?(l=new mxCompactTreeLayout(h,!1),l.edgeRouting=!1,l.levelDistance=30,k="edgeStyle=elbowEdgeStyle;elbow=vertical;"):"radialTree"==b?(l=new mxRadialTreeLayout(h,!1),l.edgeRouting=!1,l.levelDistance=80):"verticalFlow"==b?l=new mxHierarchicalLayout(h,mxConstants.DIRECTION_NORTH):"horizontalFlow"== -b?l=new mxHierarchicalLayout(h,mxConstants.DIRECTION_WEST):"organic"==b?(l=new mxFastOrganicLayout(h,!1),l.forceConstant=80):"circle"==b&&(l=new mxCircleLayout(h));if(null!=l){var n=function(a,b){h.getModel().beginUpdate();try{null!=a&&a(),l.execute(h.getDefaultParent(),g)}catch(x){throw x;}finally{var c=new mxMorphing(h);c.addListener(mxEvent.DONE,mxUtils.bind(this,function(){h.getModel().endUpdate();null!=b&&b()}));c.startAnimation()}},q=mxEdgeHandler.prototype.connect;mxEdgeHandler.prototype.connect= -function(a,b,c,g,d){q.apply(this,arguments);n()};h.resizeCell=function(){mxGraph.prototype.resizeCell.apply(this,arguments);n()};h.connectionHandler.addListener(mxEvent.CONNECT,function(){n()})}var t=mxUtils.button(mxResources.get("close"),function(){a.confirm(mxResources.get("areYouSure"),function(){null!=c.parentNode&&(h.destroy(),c.parentNode.removeChild(c));a.hideDialog()})});t.className="geBtn";a.editor.cancelFirst&&d.appendChild(t);var v=mxUtils.button(mxResources.get("insert"),function(){h.clearCellOverlays(); -var b=a.editor.graph.getFreeInsertPoint(),b=a.editor.graph.importCells(h.getModel().getChildren(h.getDefaultParent()),b.x,b.y),g=a.editor.graph.view,d=g.getBounds(b);d.x-=g.translate.x;d.y-=g.translate.y;a.editor.graph.scrollRectToVisible(d);a.editor.graph.setSelectionCells(b);null!=c.parentNode&&(h.destroy(),c.parentNode.removeChild(c));a.hideDialog()});d.appendChild(v);v.className="geBtn gePrimaryBtn";a.editor.cancelFirst||d.appendChild(t)};this.container=d}; +var GoogleSitesDialog=function(a,c){function b(){var a=null!=D&&null!=D.getTitle()?D.getTitle():this.defaultFilename;if(H.checked&&""!=p.value){var b="https://www.draw.io/gadget.xml?type=4&diagram="+encodeURIComponent(mxUtils.htmlEntities(p.value));null!=a&&(b+="&title="+encodeURIComponent(a));0<F.length&&(b+="&s="+F);""!=t.value&&"0"!=t.value&&(b+="&border="+t.value);""!=l.value&&(b+="&height="+l.value);b+="&pan="+(u.checked?"1":"0");b+="&zoom="+(x.checked?"1":"0");b+="&fit="+(B.checked?"1":"0"); +b+="&resize="+(y.checked?"1":"0");b+="&x0="+Number(f.value);b+="&y0="+n;g.mathEnabled&&(b+="&math=1");v.checked?b+="&edit=_blank":z.checked&&(b+="&edit="+encodeURIComponent(mxUtils.htmlEntities(window.location.href)));q.value=b}else D.constructor==DriveFile||D.constructor==DropboxFile?(b="https://www.draw.io/gadget.xml?embed=0&diagram=",""!=p.value?b+=encodeURIComponent(mxUtils.htmlEntities(p.value))+"&type=3":(b+=D.getHash().substring(1),b=D.constructor==DropboxFile?b+"&type=2":b+"&type=1"),null!= +a&&(b+="&title="+encodeURIComponent(a)),""!=l.value&&(a=parseInt(l.value)+parseInt(f.value),b+="&height="+a),q.value=b):q.value=""}var d=document.createElement("div"),g=a.editor.graph,e=g.getGraphBounds(),k=g.view.scale,m=Math.floor(e.x/k-g.view.translate.x),n=Math.floor(e.y/k-g.view.translate.y);mxUtils.write(d,mxResources.get("googleGadget")+":");mxUtils.br(d);var q=document.createElement("input");q.setAttribute("type","text");q.style.marginBottom="8px";q.style.marginTop="2px";q.style.width="410px"; +d.appendChild(q);mxUtils.br(d);this.init=function(){q.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?q.select():document.execCommand("selectAll",!1,null)};mxUtils.write(d,mxResources.get("top")+":");var f=document.createElement("input");f.setAttribute("type","text");f.setAttribute("size","4");f.style.marginRight="16px";f.style.marginLeft="4px";f.value=m;d.appendChild(f);mxUtils.write(d,mxResources.get("height")+":");var l=document.createElement("input");l.setAttribute("type", +"text");l.setAttribute("size","4");l.style.marginLeft="4px";l.value=Math.ceil(e.height/k);d.appendChild(l);mxUtils.br(d);e=document.createElement("hr");e.setAttribute("size","1");e.style.marginBottom="16px";e.style.marginTop="16px";d.appendChild(e);mxUtils.write(d,mxResources.get("publicDiagramUrl")+":");mxUtils.br(d);var p=document.createElement("input");p.setAttribute("type","text");p.setAttribute("size","28");p.style.marginBottom="8px";p.style.marginTop="2px";p.style.width="410px";p.value=c||""; +d.appendChild(p);mxUtils.br(d);mxUtils.write(d,mxResources.get("borderWidth")+":");var t=document.createElement("input");t.setAttribute("type","text");t.setAttribute("size","3");t.style.marginBottom="8px";t.style.marginLeft="4px";t.value="0";d.appendChild(t);mxUtils.br(d);var u=document.createElement("input");u.setAttribute("type","checkbox");u.setAttribute("checked","checked");u.defaultChecked=!0;u.style.marginLeft="16px";d.appendChild(u);mxUtils.write(d,mxResources.get("pan")+" ");var x=document.createElement("input"); +x.setAttribute("type","checkbox");x.setAttribute("checked","checked");x.defaultChecked=!0;x.style.marginLeft="8px";d.appendChild(x);mxUtils.write(d,mxResources.get("zoom")+" ");var z=document.createElement("input");z.setAttribute("type","checkbox");z.style.marginLeft="8px";z.setAttribute("title",window.location.href);d.appendChild(z);mxUtils.write(d,mxResources.get("edit")+" ");var v=document.createElement("input");v.setAttribute("type","checkbox");v.style.marginLeft="8px";d.appendChild(v);mxUtils.write(d, +mxResources.get("asNew")+" ");mxUtils.br(d);var y=document.createElement("input");y.setAttribute("type","checkbox");y.setAttribute("checked","checked");y.defaultChecked=!0;y.style.marginLeft="16px";d.appendChild(y);mxUtils.write(d,mxResources.get("resize")+" ");var B=document.createElement("input");B.setAttribute("type","checkbox");B.style.marginLeft="8px";d.appendChild(B);mxUtils.write(d,mxResources.get("fit")+" ");var H=document.createElement("input");H.setAttribute("type","checkbox");H.style.marginLeft= +"8px";d.appendChild(H);mxUtils.write(d,mxResources.get("embed")+" ");var F=a.getBasenames().join(";"),D=a.getCurrentFile();mxEvent.addListener(u,"change",b);mxEvent.addListener(x,"change",b);mxEvent.addListener(y,"change",b);mxEvent.addListener(B,"change",b);mxEvent.addListener(z,"change",b);mxEvent.addListener(v,"change",b);mxEvent.addListener(H,"change",b);mxEvent.addListener(l,"change",b);mxEvent.addListener(f,"change",b);mxEvent.addListener(t,"change",b);mxEvent.addListener(p,"change",b);b(); +mxEvent.addListener(q,"click",function(){q.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?q.select():document.execCommand("selectAll",!1,null)});e=document.createElement("div");e.style.paddingTop="12px";e.style.textAlign="right";k=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});k.className="geBtn gePrimaryBtn";e.appendChild(k);d.appendChild(e);this.container=d},CreateGraphDialog=function(a,c,b){var d=document.createElement("div");d.style.textAlign= +"right";this.init=function(){var c=document.createElement("div");c.style.position="relative";c.style.border="1px solid gray";c.style.width="100%";c.style.height="360px";c.style.overflow="hidden";c.style.marginBottom="16px";mxEvent.disableContextMenu(c);d.appendChild(c);var e=new Graph(c);e.setCellsCloneable(!0);e.setPanning(!0);e.setAllowDanglingEdges(!1);e.connectionHandler.select=!1;e.view.setTranslate(20,20);e.border=20;e.panningHandler.useLeftButtonForPanning=!0;var k="curved=1;";e.cellRenderer.installCellOverlayListeners= +function(a,b,c){mxCellRenderer.prototype.installCellOverlayListeners.apply(this,arguments);mxEvent.addListener(c.node,mxClient.IS_POINTER?"pointerdown":"mousedown",function(c){b.fireEvent(new mxEventObject("pointerdown","event",c,"state",a))});!mxClient.IS_POINTER&&mxClient.IS_TOUCH&&mxEvent.addListener(c.node,"touchstart",function(c){b.fireEvent(new mxEventObject("pointerdown","event",c,"state",a))})};e.getAllConnectionConstraints=function(){return null};e.connectionHandler.marker.highlight.keepOnTop= +!1;e.connectionHandler.createEdgeState=function(a){a=e.createEdge(null,null,null,null,null,k);return new mxCellState(this.graph.view,a,this.graph.getCellStyle(a))};var m=e.getDefaultParent(),n=mxUtils.bind(this,function(a){var b=new mxCellOverlay(this.connectImage,"Add outgoing");b.cursor="hand";b.addListener(mxEvent.CLICK,function(b,c){e.connectionHandler.reset();e.clearSelection();var f=e.getCellGeometry(a),d;l(function(){d=e.insertVertex(m,null,"Entry",f.x,f.y,80,30,"rounded=1;");n(d);e.view.refresh(d); +e.insertEdge(m,null,"",a,d,k)},function(){e.scrollCellToVisible(d)})});b.addListener("pointerdown",function(a,b){var c=b.getProperty("event"),f=b.getProperty("state");e.popupMenuHandler.hideMenu();e.stopEditing(!1);var d=mxUtils.convertPoint(e.container,mxEvent.getClientX(c),mxEvent.getClientY(c));e.connectionHandler.start(f,d.x,d.y);e.isMouseDown=!0;e.isMouseTrigger=mxEvent.isMouseEvent(c);mxEvent.consume(c)});e.addCellOverlay(a,b)});e.getModel().beginUpdate();var q;try{q=e.insertVertex(m,null,"Start", +0,0,80,30,"ellipse"),n(q)}finally{e.getModel().endUpdate()}var f;"horizontalTree"==b?(f=new mxCompactTreeLayout(e),f.edgeRouting=!1,f.levelDistance=30,k="edgeStyle=elbowEdgeStyle;elbow=horizontal;"):"verticalTree"==b?(f=new mxCompactTreeLayout(e,!1),f.edgeRouting=!1,f.levelDistance=30,k="edgeStyle=elbowEdgeStyle;elbow=vertical;"):"radialTree"==b?(f=new mxRadialTreeLayout(e,!1),f.edgeRouting=!1,f.levelDistance=80):"verticalFlow"==b?f=new mxHierarchicalLayout(e,mxConstants.DIRECTION_NORTH):"horizontalFlow"== +b?f=new mxHierarchicalLayout(e,mxConstants.DIRECTION_WEST):"organic"==b?(f=new mxFastOrganicLayout(e,!1),f.forceConstant=80):"circle"==b&&(f=new mxCircleLayout(e));if(null!=f){var l=function(a,b){e.getModel().beginUpdate();try{null!=a&&a(),f.execute(e.getDefaultParent(),q)}catch(y){throw y;}finally{var c=new mxMorphing(e);c.addListener(mxEvent.DONE,mxUtils.bind(this,function(){e.getModel().endUpdate();null!=b&&b()}));c.startAnimation()}},p=mxEdgeHandler.prototype.connect;mxEdgeHandler.prototype.connect= +function(a,b,c,f,d){p.apply(this,arguments);l()};e.resizeCell=function(){mxGraph.prototype.resizeCell.apply(this,arguments);l()};e.connectionHandler.addListener(mxEvent.CONNECT,function(){l()})}var t=mxUtils.button(mxResources.get("close"),function(){a.confirm(mxResources.get("areYouSure"),function(){null!=c.parentNode&&(e.destroy(),c.parentNode.removeChild(c));a.hideDialog()})});t.className="geBtn";a.editor.cancelFirst&&d.appendChild(t);var u=mxUtils.button(mxResources.get("insert"),function(){e.clearCellOverlays(); +var b=a.editor.graph.getFreeInsertPoint(),b=a.editor.graph.importCells(e.getModel().getChildren(e.getDefaultParent()),b.x,b.y),f=a.editor.graph.view,d=f.getBounds(b);d.x-=f.translate.x;d.y-=f.translate.y;a.editor.graph.scrollRectToVisible(d);a.editor.graph.setSelectionCells(b);null!=c.parentNode&&(e.destroy(),c.parentNode.removeChild(c));a.hideDialog()});d.appendChild(u);u.className="geBtn gePrimaryBtn";a.editor.cancelFirst||d.appendChild(t)};this.container=d}; CreateGraphDialog.prototype.connectImage=new mxImage(mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjQ3OTk0QjMyRDcyMTFFNThGQThGNDVBMjNBMjFDMzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjQ3OTk0QjQyRDcyMTFFNThGQThGNDVBMjNBMjFDMzkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyRjA0N0I2MjJENzExMUU1OEZBOEY0NUEyM0EyMUMzOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGNDc5OTRCMjJENzIxMUU1OEZBOEY0NUEyM0EyMUMzOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PjIf+MgAAATlSURBVHjanFZraFxFFD735u4ru3ls0yZG26ShgmJoKK1J2vhIYzBgRdtIURHyw1hQUH9IxIgI2h8iCEUF/1RRlNQYCsYfCTHVhiTtNolpZCEStqSC22xIsrs1bDfu7t37Gs/cO3Ozxs1DBw73zpk555vzmHNGgJ0NYatFgmNLYUHYUoHASMz5ijmgVLmxgfKCUiBxC4ACJAeSG8nb1dVVOTc3dyoSibwWDofPBIPBJzo7O8vpGtvjpDICGztxkciECpF2LS0tvZtOpwNkk5FKpcYXFxffwL1+JuPgllPj8nk1F6RoaGjoKCqZ5ApljZDZO4SMRA0SuG2QUJIQRV8HxMOM9vf3H0ZZH9Nhg20MMl2QkFwjIyNHWlpahtADnuUMwLcRHX5aNSBjCJYEsSSLUeLEbhGe3ytCmQtA1/XY+Pj46dbW1iDuyCJp9BC5ycBj4hoeHq5ra2sbw0Xn1ZgBZ+dVkA1Lc+6p0Ck2p0QS4Ox9EhwpEylYcmBg4LH29vYQLilIOt0u5FhDfevNZDI/u93uw6PLOrwTUtjxrbPYbhD42WgMrF8JmR894ICmCgnQjVe8Xu8pXEkzMJKbuo5oNPomBbm1ZsD7s2kwFA1JZ6QBUXWT1nmGNc/qoMgavDcrQzxjQGFh4aOYIJ0sFAXcEtui4uLiVjr5KpSBVFYDDZVrWUaKRRWSAYeK0fmKykgDXbVoNaPChRuyqdDv97czL5nXxQbq6empQmsaklkDBiNpSwFVrmr2P6UyicD5piI4f8wHh0oEm8/p4h8pyGiEWvVQd3e3nxtjAzU1NR2jP7NRBWQ8GbdEzzJAmc0V3RR4cI8Dvmwuhc8fKUFA0d6/ltHg5p+Kuaejo6OeY0jcNJ/PV00ZS0nFUoZRvvFS1bZFsKHCCQ2Pl8H0chY+C96B6ZUsrCQ1qKtwQVFRURW/QhIXMAzDPAZ6BgOr8tTa8dDxCmiYGApaJbJMxSzV+brE8pdgWkcpY5dbMF1AR9XH8/xu2ilef48bvn92n82ZwHh+8ssqTEXS9p7dHisiiURikd8PbpExNTU1UVNTA3V3Y7lC16n0gpB/NwpNcZjfa7dScC4Qh0kOQCwnlEgi3F/hMVl9fX0zvKrzSk2lfXjRhj0eT/2rvWG4+Pta3oJY7XfC3hInXAv/ldeFLx8shQ+eqQL0UAAz7ylkpej5eNZRVBWL6BU6ef14OYiY1oqyTtmsavr/5koaRucT1pzx+ZpL1+GV5nLutksUgIcmtwTRiuuVZXnU5XId7A2swJkfFsymRWC91hHg1Viw6x23+7vn9sPJ+j20BE1hCXqSWaNSQ8ScbknRZWxub1PGCw/fBV+c3AeijlUbY5bBjEqr9GuYZP4jP41WudGSC6erTRCqdGZm5i1WvXWeDHnbBCZGc2Nj4wBl/hZOwrmBBfgmlID1HmGJutHaF+tKoevp/XCgstDkjo2NtWKLuc6AVN4mNjY+s1XQxoenOoFuDPHGtnRbJj9ej5GvL0dI7+giuRyMk1giazc+DP6vgUDgOJVlOv7R+PJ12QIeL6SyeDz+Kfp8ZrNWjgDTsVjsQ7qXyTjztXJhm9ePxFLfMTg4eG9tbe1RTP9KFFYQfHliYmIS69kCC7jKYmKwxxD5P88tkVkqbPPcIps9t4T/+HjcuJ/s5BFJgf4WYABCtxGuxIZ90gAAAABJRU5ErkJggg==": IMAGE_PATH+"/handle-connect.png",26,26); -var BackgroundImageDialog=function(a,c){var b=document.createElement("div");b.style.whiteSpace="nowrap";var d=document.createElement("h2");mxUtils.write(d,mxResources.get("backgroundImage"));d.style.marginTop="0px";b.appendChild(d);mxUtils.write(b,mxResources.get("image")+" "+mxResources.get("url")+":");mxUtils.br(b);var d=a.editor.graph.backgroundImage,f=document.createElement("input");f.setAttribute("type","text");f.style.marginTop="4px";f.style.marginBottom="4px";f.style.width="350px";f.value= -null!=d?d.src:"";var h=!1,k=function(){h||""==f.value||a.isOffline()?(m.value="",p.value=""):a.loadImage(mxUtils.trim(f.value),function(a){m.value=a.width;p.value=a.height},function(){a.showError(mxResources.get("error"),mxResources.get("fileNotFound"),mxResources.get("ok"));f.value="";m.value="";p.value=""})};this.init=function(){f.focus();if(Graph.fileSupport){f.setAttribute("placeholder",mxResources.get("dragImagesHere"));var c=b.parentNode,g=null;mxEvent.addListener(c,"dragleave",function(a){null!= -g&&(g.parentNode.removeChild(g),g=null);a.stopPropagation();a.preventDefault()});mxEvent.addListener(c,"dragover",mxUtils.bind(this,function(b){null==g&&(!mxClient.IS_IE||10<document.documentMode)&&(g=a.highlightElement(c));b.stopPropagation();b.preventDefault()}));mxEvent.addListener(c,"drop",mxUtils.bind(this,function(b){null!=g&&(g.parentNode.removeChild(g),g=null);if(0<b.dataTransfer.files.length)a.importFiles(b.dataTransfer.files,0,0,a.maxBackgroundSize,function(a,b,c,g,d,l){f.value=a;k()},function(){}, -function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b=0;b<a.length;b++)a[b]()},!0,a.maxBackgroundBytes,a.maxBackgroundBytes);else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")){var c=b.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(c)&&(f.value=decodeURIComponent(c),k())}b.stopPropagation();b.preventDefault()}),!1)}};b.appendChild(f);mxUtils.br(b);mxUtils.br(b);mxUtils.write(b,mxResources.get("width")+":");var m=document.createElement("input"); -m.setAttribute("type","text");m.style.width="60px";m.style.marginLeft="4px";m.style.marginRight="16px";m.value=null!=d?d.width:"";b.appendChild(m);mxUtils.write(b,mxResources.get("height")+":");var p=document.createElement("input");p.setAttribute("type","text");p.style.width="60px";p.style.marginLeft="4px";p.style.marginRight="16px";p.value=null!=d?d.height:"";b.appendChild(p);d=mxUtils.button(mxResources.get("reset"),function(){f.value="";m.value="";p.value="";h=!1});mxEvent.addListener(d,"mousedown", -function(){h=!0});mxEvent.addListener(d,"touchstart",function(){h=!0});d.className="geBtn";d.width="100";b.appendChild(d);mxUtils.br(b);mxEvent.addListener(f,"change",k);ImageDialog.filePicked=function(a){a.action==google.picker.Action.PICKED&&null!=a.docs[0].thumbnails&&(a=a.docs[0].thumbnails[a.docs[0].thumbnails.length-1],null!=a&&(f.value=a.url,k()));f.focus()};d=document.createElement("div");d.style.marginTop="40px";d.style.textAlign="right";var g=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()}); -g.className="geBtn";a.editor.cancelFirst&&d.appendChild(g);if(!a.isOffline()&&"undefined"!=typeof google&&"undefined"!=typeof google.picker&&window.self===window.top){var l=mxUtils.button(mxResources.get("search"),function(){if(null==a.imageSearchPicker){var b=(new google.picker.PickerBuilder).setLocale(mxLanguage).addView(google.picker.ViewId.IMAGE_SEARCH).enableFeature(google.picker.Feature.NAV_HIDDEN);a.imageSearchPicker=b.setCallback(function(a){ImageDialog.filePicked(a)}).build()}a.imageSearchPicker.setVisible(!0)}); -l.className="geBtn";d.appendChild(l);null!=a.drive&&"1"==urlParams.photos&&(l=mxUtils.button(mxResources.get("googlePlus"),function(){a.spinner.spin(document.body,mxResources.get("authorizing"))&&a.drive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();if(null==a.photoPicker){var b=gapi.auth.getToken().access_token,b=(new google.picker.PickerBuilder).setAppId(a.drive.appId).setLocale(mxLanguage).setOAuthToken(b).addView(google.picker.ViewId.PHOTOS).addView(google.picker.ViewId.PHOTO_ALBUMS).addView(google.picker.ViewId.PHOTO_UPLOAD); -a.photoPicker=b.setCallback(function(a){ImageDialog.filePicked(a)}).build()}a.photoPicker.setVisible(!0)}))}),l.className="geBtn",d.appendChild(l))}l=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();c(""!=f.value?new mxImage(mxUtils.trim(f.value),m.value,p.value):null)});l.className="geBtn gePrimaryBtn";d.appendChild(l);a.editor.cancelFirst||d.appendChild(g);b.appendChild(d);this.container=b},ParseDialog=function(a,c,b){function d(b,c){var g=b.split("\n");if("plantUmlPng"==c||"plantUmlSvg"== -c||"plantUmlTxt"==c){var g="plantUmlTxt"==c?PLANT_URL+"/txt/":"plantUmlPng"==c?PLANT_URL+"/png/":PLANT_URL+"/svg/",d=a.editor.graph;if(a.spinner.spin(document.body,mxResources.get("inserting"))){var l=function(a){if(10>a)return String.fromCharCode(48+a);a-=10;if(26>a)return String.fromCharCode(65+a);a-=26;if(26>a)return String.fromCharCode(97+a);a-=26;return 0==a?"-":1==a?"_":"?"},n=function(a,b,c){c1=a>>2;c2=(a&3)<<4|b>>4;c3=(b&15)<<2|c>>6;c4=c&63;r="";r+=l(c1&63);r+=l(c2&63);r+=l(c3&63);return r+= -l(c4&63)},f=new XMLHttpRequest;f.open("GET",g+function(a){r="";for(m=0;m<a.length;m+=3)r=m+2==a.length?r+n(a.charCodeAt(m),a.charCodeAt(m+1),0):m+1==a.length?r+n(a.charCodeAt(m),0,0):r+n(a.charCodeAt(m),a.charCodeAt(m+1),a.charCodeAt(m+2));return r}(d.bytesToString(pako.deflateRaw(unescape(encodeURIComponent(b))))),!0);"plantUmlTxt"!=c&&(f.responseType="blob");f.onload=function(g){if(200<=this.status&&300>this.status)if("plantUmlTxt"==c)a.spinner.stop(),d.setSelectionCell(a.insertAsPreText(this.response, -h.x,h.y)),d.scrollCellToVisible(d.getSelectionCell());else{var l=new FileReader;l.readAsDataURL(this.response);l.onloadend=function(c){var g=new Image;g.onload=function(){a.spinner.stop();var c=g.width,n=g.height;if(0==c&&0==n){var u=l.result,f=u.indexOf(","),u=decodeURIComponent(escape(atob(u.substring(f+1)))),u=mxUtils.parseXml(u).getElementsByTagName("svg");0<u.length&&(c=parseFloat(u[0].getAttribute("width")),n=parseFloat(u[0].getAttribute("height")))}d.getModel().beginUpdate();try{cell=d.insertVertex(null, -null,b,h.x,h.y,c,n,"shape=image;noLabel=1;verticalAlign=top;aspect=fixed;imageAspect=0;image="+a.convertDataUri(l.result)+";")}finally{d.getModel().endUpdate()}d.setSelectionCell(cell);d.scrollCellToVisible(d.getSelectionCell())};g.src=l.result};l.onerror=function(b){a.handleError(b)}}else a.spinner.stop(),a.handleError(g)};f.onerror=function(b){a.handleError(b)};f.send()}}else if("table"==c){for(var q=null,t=[],k=0,m=0;m<g.length;m++)if(f=mxUtils.trim(g[m]),"create table"==f.substring(0,12).toLowerCase())f= -mxUtils.trim(f.substring(12)),"("==f.charAt(f.length-1)&&(f=f.substring(0,f.lastIndexOf(" "))),q=new mxCell(f,new mxGeometry(k,0,160,26),"swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;"),q.vertex=!0,t.push(q),f=a.editor.graph.getPreferredSizeForCell(B),null!=f&&(q.geometry.width=f.width+10);else if(null!=q&&")"==f.charAt(0))k+=q.geometry.width+ -40,q=null;else if("("!=f&&null!=q&&(f=f.substring(0,","==f.charAt(f.length-1)?f.length-1:f.length),"primary key"!=f.substring(0,11).toLowerCase())){var p=f.toLowerCase().indexOf("primary key"),f=f.replace(/primary key/i,""),B=new mxCell(f,new mxGeometry(0,0,90,26),"shape=partialRectangle;top=0;left=0;right=0;bottom=0;align=left;verticalAlign=top;spacingTop=-2;fillColor=none;spacingLeft=34;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;");B.vertex= -!0;f=sb.cloneCell(B,0<p?"PK":"");f.connectable=!1;f.style="shape=partialRectangle;top=0;left=0;bottom=0;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;";f.geometry.width=30;f.geometry.height=26;B.insert(f);f=a.editor.graph.getPreferredSizeForCell(B);null!=f&&q.geometry.width<f.width+10&&(q.geometry.width=Math.min(220,f.width+10));q.insert(B);q.geometry.height+=26}0<t.length&&(d=a.editor.graph,g=d.view, -f=d.getGraphBounds(),d.setSelectionCells(d.importCells(t,Math.ceil(Math.max(0,f.x/g.scale-g.translate.x)+4*d.gridSize),Math.ceil(Math.max(0,(f.y+f.height)/g.scale-g.translate.y)+4*d.gridSize))),d.scrollCellToVisible(d.getSelectionCell()))}else if("list"==c){if(0<g.length){d=a.editor.graph;q=new mxCell(g[0],new mxGeometry(0,0,160,30),"swimlane;fontStyle=1;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;"); -q.vertex=!0;f=d.getPreferredSizeForCell(q);null!=f&&q.geometry.width<f.width+10&&(q.geometry.width=f.width+10);B=[q];if(1<g.length)for(m=1;m<g.length;m++)"--"==g[m]?(f=new mxCell("",new mxGeometry(0,0,40,8),"line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;"),f.vertex=!0,q.geometry.height+=f.geometry.height,q.insert(f),B.push(f)):0<g[m].length&&";"!=g[m].charAt(0)&&(k=new mxCell(g[m], -new mxGeometry(0,0,60,26),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;"),k.vertex=!0,f=d.getPreferredSizeForCell(k),null!=f&&k.geometry.width<f.width&&(k.geometry.width=f.width),q.geometry.width=Math.max(q.geometry.width,k.geometry.width),q.geometry.height+=k.geometry.height,q.insert(k),B.push(k));d.getModel().beginUpdate();try{q=d.importCells([q],h.x,h.y)[0],d.fireEvent(new mxEventObject("cellsInserted", -"cells",[q].concat(q.children)))}finally{d.getModel().endUpdate()}d.setSelectionCell(q);d.scrollCellToVisible(d.getSelectionCell())}}else{for(var B=function(a){var b=D[a];null==b&&(b=new mxCell(a,new mxGeometry(0,0,80,30),"whiteSpace=wrap;html=1;"),b.vertex=!0,D[a]=b,t.push(b));return b},D={},t=[],m=0;m<g.length;m++)if(";"!=g[m].charAt(0)){var J=g[m].split("->");if(2<=J.length){var p=B(J[0]),C=B(J[J.length-1]),J=new mxCell(2<J.length?J[1]:"",new mxGeometry);J.edge=!0;p.insertEdge(J,!0);C.insertEdge(J, -!1);t.push(J)}}if(0<t.length){g=document.createElement("div");g.style.visibility="hidden";document.body.appendChild(g);d=new Graph(g);d.getModel().beginUpdate();try{t=d.importCells(t);for(m=0;m<t.length;m++)d.getModel().isVertex(t[m])&&(f=d.getPreferredSizeForCell(t[m]),t[m].geometry.width=Math.max(t[m].geometry.width,f.width),t[m].geometry.height=Math.max(t[m].geometry.height,f.height));q=new mxFastOrganicLayout(d);q.disableEdgeStyle=!1;q.forceConstant=120;q.execute(d.getDefaultParent());k=new mxParallelEdgeLayout(d); -k.spacing=20;k.execute(d.getDefaultParent())}finally{d.getModel().endUpdate()}d.clearCellOverlays();B=[];a.editor.graph.getModel().beginUpdate();try{B=a.editor.graph.importCells(d.getModel().getChildren(d.getDefaultParent()),h.x,h.y),a.editor.graph.fireEvent(new mxEventObject("cellsInserted","cells",B))}finally{a.editor.graph.getModel().endUpdate()}a.editor.graph.setSelectionCells(B);a.editor.graph.scrollCellToVisible(a.editor.graph.getSelectionCell());d.destroy();g.parentNode.removeChild(g)}}}function f(){return"list"== +var BackgroundImageDialog=function(a,c){var b=document.createElement("div");b.style.whiteSpace="nowrap";var d=document.createElement("h2");mxUtils.write(d,mxResources.get("backgroundImage"));d.style.marginTop="0px";b.appendChild(d);mxUtils.write(b,mxResources.get("image")+" "+mxResources.get("url")+":");mxUtils.br(b);var d=a.editor.graph.backgroundImage,g=document.createElement("input");g.setAttribute("type","text");g.style.marginTop="4px";g.style.marginBottom="4px";g.style.width="350px";g.value= +null!=d?d.src:"";var e=!1,k=function(){e||""==g.value||a.isOffline()?(m.value="",n.value=""):a.loadImage(mxUtils.trim(g.value),function(a){m.value=a.width;n.value=a.height},function(){a.showError(mxResources.get("error"),mxResources.get("fileNotFound"),mxResources.get("ok"));g.value="";m.value="";n.value=""})};this.init=function(){g.focus();if(Graph.fileSupport){g.setAttribute("placeholder",mxResources.get("dragImagesHere"));var c=b.parentNode,f=null;mxEvent.addListener(c,"dragleave",function(a){null!= +f&&(f.parentNode.removeChild(f),f=null);a.stopPropagation();a.preventDefault()});mxEvent.addListener(c,"dragover",mxUtils.bind(this,function(b){null==f&&(!mxClient.IS_IE||10<document.documentMode)&&(f=a.highlightElement(c));b.stopPropagation();b.preventDefault()}));mxEvent.addListener(c,"drop",mxUtils.bind(this,function(b){null!=f&&(f.parentNode.removeChild(f),f=null);if(0<b.dataTransfer.files.length)a.importFiles(b.dataTransfer.files,0,0,a.maxBackgroundSize,function(a,b,c,f,d,l){g.value=a;k()},function(){}, +function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b=0;b<a.length;b++)a[b]()},!0,a.maxBackgroundBytes,a.maxBackgroundBytes);else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")){var c=b.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(c)&&(g.value=decodeURIComponent(c),k())}b.stopPropagation();b.preventDefault()}),!1)}};b.appendChild(g);mxUtils.br(b);mxUtils.br(b);mxUtils.write(b,mxResources.get("width")+":");var m=document.createElement("input"); +m.setAttribute("type","text");m.style.width="60px";m.style.marginLeft="4px";m.style.marginRight="16px";m.value=null!=d?d.width:"";b.appendChild(m);mxUtils.write(b,mxResources.get("height")+":");var n=document.createElement("input");n.setAttribute("type","text");n.style.width="60px";n.style.marginLeft="4px";n.style.marginRight="16px";n.value=null!=d?d.height:"";b.appendChild(n);d=mxUtils.button(mxResources.get("reset"),function(){g.value="";m.value="";n.value="";e=!1});mxEvent.addListener(d,"mousedown", +function(){e=!0});mxEvent.addListener(d,"touchstart",function(){e=!0});d.className="geBtn";d.width="100";b.appendChild(d);mxUtils.br(b);mxEvent.addListener(g,"change",k);ImageDialog.filePicked=function(a){a.action==google.picker.Action.PICKED&&null!=a.docs[0].thumbnails&&(a=a.docs[0].thumbnails[a.docs[0].thumbnails.length-1],null!=a&&(g.value=a.url,k()));g.focus()};d=document.createElement("div");d.style.marginTop="40px";d.style.textAlign="right";var q=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()}); +q.className="geBtn";a.editor.cancelFirst&&d.appendChild(q);if(!a.isOffline()&&"undefined"!=typeof google&&"undefined"!=typeof google.picker&&window.self===window.top){var f=mxUtils.button(mxResources.get("search"),function(){if(null==a.imageSearchPicker){var b=(new google.picker.PickerBuilder).setLocale(mxLanguage).addView(google.picker.ViewId.IMAGE_SEARCH).enableFeature(google.picker.Feature.NAV_HIDDEN);a.imageSearchPicker=b.setCallback(function(a){ImageDialog.filePicked(a)}).build()}a.imageSearchPicker.setVisible(!0)}); +f.className="geBtn";d.appendChild(f);null!=a.drive&&"1"==urlParams.photos&&(f=mxUtils.button(mxResources.get("googlePlus"),function(){a.spinner.spin(document.body,mxResources.get("authorizing"))&&a.drive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();if(null==a.photoPicker){var b=gapi.auth.getToken().access_token,b=(new google.picker.PickerBuilder).setAppId(a.drive.appId).setLocale(mxLanguage).setOAuthToken(b).addView(google.picker.ViewId.PHOTOS).addView(google.picker.ViewId.PHOTO_ALBUMS).addView(google.picker.ViewId.PHOTO_UPLOAD); +a.photoPicker=b.setCallback(function(a){ImageDialog.filePicked(a)}).build()}a.photoPicker.setVisible(!0)}))}),f.className="geBtn",d.appendChild(f))}f=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();c(""!=g.value?new mxImage(mxUtils.trim(g.value),m.value,n.value):null)});f.className="geBtn gePrimaryBtn";d.appendChild(f);a.editor.cancelFirst||d.appendChild(q);b.appendChild(d);this.container=b},ParseDialog=function(a,c,b){function d(b,c){var f=b.split("\n");if("plantUmlPng"==c||"plantUmlSvg"== +c||"plantUmlTxt"==c){var f="plantUmlTxt"==c?PLANT_URL+"/txt/":"plantUmlPng"==c?PLANT_URL+"/png/":PLANT_URL+"/svg/",d=a.editor.graph;if(a.spinner.spin(document.body,mxResources.get("inserting"))){var l=function(a){if(10>a)return String.fromCharCode(48+a);a-=10;if(26>a)return String.fromCharCode(65+a);a-=26;if(26>a)return String.fromCharCode(97+a);a-=26;return 0==a?"-":1==a?"_":"?"},p=function(a,b,c){c1=a>>2;c2=(a&3)<<4|b>>4;c3=(b&15)<<2|c>>6;c4=c&63;r="";r+=l(c1&63);r+=l(c2&63);r+=l(c3&63);return r+= +l(c4&63)},y=new XMLHttpRequest;y.open("GET",f+function(a){r="";for(m=0;m<a.length;m+=3)r=m+2==a.length?r+p(a.charCodeAt(m),a.charCodeAt(m+1),0):m+1==a.length?r+p(a.charCodeAt(m),0,0):r+p(a.charCodeAt(m),a.charCodeAt(m+1),a.charCodeAt(m+2));return r}(d.bytesToString(pako.deflateRaw(unescape(encodeURIComponent(b))))),!0);"plantUmlTxt"!=c&&(y.responseType="blob");y.onload=function(f){if(200<=this.status&&300>this.status)if("plantUmlTxt"==c)a.spinner.stop(),d.setSelectionCell(a.insertAsPreText(this.response, +e.x,e.y)),d.scrollCellToVisible(d.getSelectionCell());else{var l=new FileReader;l.readAsDataURL(this.response);l.onloadend=function(c){var f=new Image;f.onload=function(){a.spinner.stop();var c=f.width,p=f.height;if(0==c&&0==p){var v=l.result,g=v.indexOf(","),v=decodeURIComponent(escape(atob(v.substring(g+1)))),v=mxUtils.parseXml(v).getElementsByTagName("svg");0<v.length&&(c=parseFloat(v[0].getAttribute("width")),p=parseFloat(v[0].getAttribute("height")))}d.getModel().beginUpdate();try{cell=d.insertVertex(null, +null,b,e.x,e.y,c,p,"shape=image;noLabel=1;verticalAlign=top;aspect=fixed;imageAspect=0;image="+a.convertDataUri(l.result)+";")}finally{d.getModel().endUpdate()}d.setSelectionCell(cell);d.scrollCellToVisible(d.getSelectionCell())};f.src=l.result};l.onerror=function(b){a.handleError(b)}}else a.spinner.stop(),a.handleError(f)};y.onerror=function(b){a.handleError(b)};y.send()}}else if("table"==c){for(var g=null,t=[],k=0,m=0;m<f.length;m++)if(y=mxUtils.trim(f[m]),"create table"==y.substring(0,12).toLowerCase())y= +mxUtils.trim(y.substring(12)),"("==y.charAt(y.length-1)&&(y=y.substring(0,y.lastIndexOf(" "))),g=new mxCell(y,new mxGeometry(k,0,160,26),"swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;"),g.vertex=!0,t.push(g),y=a.editor.graph.getPreferredSizeForCell(q),null!=y&&(g.geometry.width=y.width+10);else if(null!=g&&")"==y.charAt(0))k+=g.geometry.width+ +40,g=null;else if("("!=y&&null!=g&&(y=y.substring(0,","==y.charAt(y.length-1)?y.length-1:y.length),"primary key"!=y.substring(0,11).toLowerCase())){var n=y.toLowerCase().indexOf("primary key"),y=y.replace(/primary key/i,""),q=new mxCell(y,new mxGeometry(0,0,90,26),"shape=partialRectangle;top=0;left=0;right=0;bottom=0;align=left;verticalAlign=top;spacingTop=-2;fillColor=none;spacingLeft=34;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;");q.vertex= +!0;y=sb.cloneCell(q,0<n?"PK":"");y.connectable=!1;y.style="shape=partialRectangle;top=0;left=0;bottom=0;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;";y.geometry.width=30;y.geometry.height=26;q.insert(y);y=a.editor.graph.getPreferredSizeForCell(q);null!=y&&g.geometry.width<y.width+10&&(g.geometry.width=Math.min(220,y.width+10));g.insert(q);g.geometry.height+=26}0<t.length&&(d=a.editor.graph,f=d.view, +y=d.getGraphBounds(),d.setSelectionCells(d.importCells(t,Math.ceil(Math.max(0,y.x/f.scale-f.translate.x)+4*d.gridSize),Math.ceil(Math.max(0,(y.y+y.height)/f.scale-f.translate.y)+4*d.gridSize))),d.scrollCellToVisible(d.getSelectionCell()))}else if("list"==c){if(0<f.length){d=a.editor.graph;g=new mxCell(f[0],new mxGeometry(0,0,160,30),"swimlane;fontStyle=1;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;"); +g.vertex=!0;y=d.getPreferredSizeForCell(g);null!=y&&g.geometry.width<y.width+10&&(g.geometry.width=y.width+10);q=[g];if(1<f.length)for(m=1;m<f.length;m++)"--"==f[m]?(y=new mxCell("",new mxGeometry(0,0,40,8),"line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;"),y.vertex=!0,g.geometry.height+=y.geometry.height,g.insert(y),q.push(y)):0<f[m].length&&";"!=f[m].charAt(0)&&(k=new mxCell(f[m], +new mxGeometry(0,0,60,26),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;"),k.vertex=!0,y=d.getPreferredSizeForCell(k),null!=y&&k.geometry.width<y.width&&(k.geometry.width=y.width),g.geometry.width=Math.max(g.geometry.width,k.geometry.width),g.geometry.height+=k.geometry.height,g.insert(k),q.push(k));d.getModel().beginUpdate();try{g=d.importCells([g],e.x,e.y)[0],d.fireEvent(new mxEventObject("cellsInserted", +"cells",[g].concat(g.children)))}finally{d.getModel().endUpdate()}d.setSelectionCell(g);d.scrollCellToVisible(d.getSelectionCell())}}else{for(var q=function(a){var b=C[a];null==b&&(b=new mxCell(a,new mxGeometry(0,0,80,30),"whiteSpace=wrap;html=1;"),b.vertex=!0,C[a]=b,t.push(b));return b},C={},t=[],m=0;m<f.length;m++)if(";"!=f[m].charAt(0)){var G=f[m].split("->");if(2<=G.length){var n=q(G[0]),J=q(G[G.length-1]),G=new mxCell(2<G.length?G[1]:"",new mxGeometry);G.edge=!0;n.insertEdge(G,!0);J.insertEdge(G, +!1);t.push(G)}}if(0<t.length){f=document.createElement("div");f.style.visibility="hidden";document.body.appendChild(f);d=new Graph(f);d.getModel().beginUpdate();try{t=d.importCells(t);for(m=0;m<t.length;m++)d.getModel().isVertex(t[m])&&(y=d.getPreferredSizeForCell(t[m]),t[m].geometry.width=Math.max(t[m].geometry.width,y.width),t[m].geometry.height=Math.max(t[m].geometry.height,y.height));g=new mxFastOrganicLayout(d);g.disableEdgeStyle=!1;g.forceConstant=120;g.execute(d.getDefaultParent());k=new mxParallelEdgeLayout(d); +k.spacing=20;k.execute(d.getDefaultParent())}finally{d.getModel().endUpdate()}d.clearCellOverlays();q=[];a.editor.graph.getModel().beginUpdate();try{q=a.editor.graph.importCells(d.getModel().getChildren(d.getDefaultParent()),e.x,e.y),a.editor.graph.fireEvent(new mxEventObject("cellsInserted","cells",q))}finally{a.editor.graph.getModel().endUpdate()}a.editor.graph.setSelectionCells(q);a.editor.graph.scrollCellToVisible(a.editor.graph.getSelectionCell());d.destroy();f.parentNode.removeChild(f)}}}function g(){return"list"== m.value?"Person\n-name: String\n-birthDate: Date\n--\n+getName(): String\n+setName(String): void\n+isBirthday(): boolean":"table"==m.value?"CREATE TABLE Suppliers\n(\nsupplier_id int NOT NULL PRIMARY KEY,\nsupplier_name char(50) NOT NULL,\ncontact_name char(50),\n);\nCREATE TABLE Customers\n(\ncustomer_id int NOT NULL PRIMARY KEY,\ncustomer_name char(50) NOT NULL,\naddress char(50),\ncity char(50),\nstate char(25),\nzip_code char(10)\n);\n":"plantUmlPng"==m.value?"@startuml\nskinparam backgroundcolor transparent\nskinparam shadowing false\nAlice -> Bob: Authentication Request\nBob --\x3e Alice: Authentication Response\n\nAlice -> Bob: Another authentication Request\nAlice <-- Bob: another authentication Response\n@enduml": -"plantUmlSvg"==m.value||"plantUmlTxt"==m.value?"@startuml\nskinparam shadowing false\nAlice -> Bob: Authentication Request\nBob --\x3e Alice: Authentication Response\n\nAlice -> Bob: Another authentication Request\nAlice <-- Bob: another authentication Response\n@enduml":";Example:\na->b\nb->edge label->c\nc->a\n"}var h=a.editor.graph.getFreeInsertPoint();c=document.createElement("div");c.style.textAlign="right";var k=document.createElement("textarea");k.style.resize="none";k.style.width="100%";k.style.height= -"354px";k.style.marginBottom="16px";var m=document.createElement("select");"formatSql"==b&&(m.style.display="none");var p=document.createElement("option");p.setAttribute("value","list");mxUtils.write(p,mxResources.get("list"));"plantUml"!=b&&m.appendChild(p);null!=b&&"fromText"!=b||p.setAttribute("selected","selected");p=document.createElement("option");p.setAttribute("value","table");mxUtils.write(p,mxResources.get("formatSql"));"formatSql"==b&&(m.appendChild(p),p.setAttribute("selected","selected")); -p=document.createElement("option");p.setAttribute("value","diagram");mxUtils.write(p,mxResources.get("diagram"));"plantUml"!=b&&m.appendChild(p);p=document.createElement("option");p.setAttribute("value","plantUmlSvg");mxUtils.write(p,mxResources.get("plantUml")+" ("+mxResources.get("formatSvg")+")");"plantUml"==b&&p.setAttribute("selected","selected");var g=document.createElement("option");g.setAttribute("value","plantUmlPng");mxUtils.write(g,mxResources.get("plantUml")+" ("+mxResources.get("formatPng")+ -")");var l=document.createElement("option");l.setAttribute("value","plantUmlTxt");mxUtils.write(l,mxResources.get("plantUml")+" ("+mxResources.get("text")+")");EditorUi.enablePlantUml&&Graph.fileSupport&&!a.isOffline()&&"plantUml"==b&&(m.appendChild(p),m.appendChild(g),m.appendChild(l));var n=f();k.value=n;c.appendChild(k);this.init=function(){k.focus()};Graph.fileSupport&&(k.addEventListener("dragover",function(a){a.stopPropagation();a.preventDefault()},!1),k.addEventListener("drop",function(a){a.stopPropagation(); -a.preventDefault();if(0<a.dataTransfer.files.length){a=a.dataTransfer.files[0];var b=new FileReader;b.onload=function(a){k.value=a.target.result};b.readAsText(a)}},!1));c.appendChild(m);mxEvent.addListener(m,"change",function(){var a=f();if(0==k.value.length||k.value==n)n=a,k.value=n});b=mxUtils.button(mxResources.get("close"),function(){k.value==n?a.hideDialog():a.confirm(mxResources.get("areYouSure"),function(){a.hideDialog()})});b.className="geBtn";a.editor.cancelFirst&&c.appendChild(b);p=mxUtils.button(mxResources.get("insert"), -function(){a.hideDialog();d(k.value,m.value)});c.appendChild(p);p.className="geBtn gePrimaryBtn";a.editor.cancelFirst||c.appendChild(b);this.container=c},NewDialog=function(a,c,b,d,f,h,k,m,p,g,l,n,q,t,v,w){function y(){var a=!0;if(null!=S)for(;D<S.length&&(a||0!=mxUtils.mod(D,30));)a=S[D++],F(a.url,a.libs,a.title,a.tooltip?a.tooltip:a.title,a.select,a.imgUrl,a.info,a.onClick,a.preview),a=!1}function u(){if(Z)b||a.hideDialog(),t(Z,aa,B.value);else if(d)b||a.hideDialog(),d(V,B.value);else{var c=B.value; -null!=c&&0<c.length&&a.pickFolder(a.mode,function(b){a.createFile(c,V,null!=R&&0<R.length?R:null,null,function(){a.hideDialog()},null,b)},a.mode!=App.MODE_GOOGLE||null==a.stateArg||null==a.stateArg.folderId)}}function x(a,b,c,g,d){null!=Y&&(Y.style.backgroundColor="transparent",Y.style.border="1px solid transparent");C.removeAttribute("disabled");V=b;R=c;Y=a;Z=g;aa=d;Y.style.backgroundColor=m;Y.style.border=p}function F(b,c,g,d,l,n,f,h,q){var t=document.createElement("div");t.className="geTemplate"; -t.style.height=N+"px";t.style.width=X+"px";null!=d&&0<d.length&&t.setAttribute("title",d);if(null!=n)t.style.backgroundImage="url("+n+")",t.style.backgroundSize="contain",t.style.backgroundPosition="center center",t.style.backgroundRepeat="no-repeat",mxEvent.addListener(t,"click",function(a){x(t,null,null,b,f)}),mxEvent.addListener(t,"dblclick",function(a){u()});else if(null!=b&&0<b.length){g=q||TEMPLATE_PATH+"/"+b.substring(0,b.length-4)+".png";t.style.backgroundImage="url("+g+")";t.style.backgroundPosition= -"center center";t.style.backgroundRepeat="no-repeat";var F=!1;mxEvent.addListener(t,"click",function(g){C.setAttribute("disabled","disabled");t.style.backgroundColor="transparent";t.style.border="1px solid transparent";g=b;g=/^https?:\/\//.test(g)&&!a.isCorsEnabledForUrl(g)?PROXY_URL+"?url="+encodeURIComponent(g):TEMPLATE_PATH+"/"+g;J.spin(O);mxUtils.get(g,mxUtils.bind(this,function(a){J.stop();200<=a.getStatus()&&299>=a.getStatus()&&(x(t,a.getText(),c),F&&u())}))});mxEvent.addListener(t,"dblclick", -function(a){F=!0})}else t.innerHTML='<table width="100%" height="100%" style="line-height:1em;"><tr><td align="center" valign="middle">'+mxResources.get(g)+"</td></tr></table>",l&&x(t),null!=h?mxEvent.addListener(t,"click",h):(mxEvent.addListener(t,"click",function(a){x(t)}),mxEvent.addListener(t,"dblclick",function(a){u()}));O.appendChild(t)}function G(){mxEvent.addListener(O,"scroll",function(a){O.scrollTop+O.clientHeight>=O.scrollHeight&&(y(),mxEvent.consume(a))});var a=null,b;for(b in P){var c= -document.createElement("div"),d=mxResources.get(b),l=P[b];null==d&&(d=b.substring(0,1).toUpperCase()+b.substring(1));18<d.length&&(d=d.substring(0,18)+"…");c.style.cssText="display:block;cursor:pointer;padding:6px;white-space:nowrap;margin-bottom:-1px;overflow:hidden;text-overflow:ellipsis;";c.setAttribute("title",d+" ("+l.length+")");mxUtils.write(c,c.getAttribute("title"));null!=g&&(c.style.padding=g);Q.appendChild(c);null==a&&(a=c,a.style.backgroundColor=k);(function(b,g){mxEvent.addListener(c, -"click",function(){a!=g&&(a.style.backgroundColor="",a=g,a.style.backgroundColor=k,O.scrollTop=0,O.innerHTML="",D=0,S=P[b],I=null,y())})})(b,c)}y()}b=null!=b?b:!0;f=null!=f?f:!1;k=null!=k?k:"#ebf2f9";m=null!=m?m:"#e6eff8";p=null!=p?p:"1px solid #ccd9ea";l=null!=l?l:EditorUi.templateFile;var z=document.createElement("div");z.style.height="100%";var A=document.createElement("div");A.style.whiteSpace="nowrap";A.style.height="46px";b&&z.appendChild(A);var H=document.createElement("img");H.setAttribute("border", -"0");H.setAttribute("align","absmiddle");H.style.width="40px";H.style.height="40px";H.style.marginRight="10px";H.style.paddingBottom="4px";H.src=a.mode==App.MODE_GOOGLE?IMAGE_PATH+"/google-drive-logo.svg":a.mode==App.MODE_DROPBOX?IMAGE_PATH+"/dropbox-logo.svg":a.mode==App.MODE_ONEDRIVE?IMAGE_PATH+"/onedrive-logo.svg":a.mode==App.MODE_GITHUB?IMAGE_PATH+"/github-logo.svg":a.mode==App.MODE_TRELLO?IMAGE_PATH+"/trello-logo.svg":a.mode==App.MODE_BROWSER?IMAGE_PATH+"/osa_database.png":IMAGE_PATH+"/osa_drive-harddisk.png"; -!c&&b&&A.appendChild(H);b&&mxUtils.write(A,(null==a.mode||a.mode==App.MODE_GOOGLE||a.mode==App.MODE_BROWSER?mxResources.get("diagramName"):mxResources.get("filename"))+":");H=".xml";a.mode==App.MODE_GOOGLE&&null!=a.drive?H=a.drive.extension:a.mode==App.MODE_DROPBOX&&null!=a.dropbox?H=a.dropbox.extension:a.mode==App.MODE_ONEDRIVE&&null!=a.oneDrive?H=a.oneDrive.extension:a.mode==App.MODE_GITHUB&&null!=a.gitHub?H=a.gitHub.extension:a.mode==App.MODE_TRELLO&&null!=a.trello&&(H=a.trello.extension);var B= -document.createElement("input");B.setAttribute("value",a.defaultFilename+H);B.style.marginRight="20px";B.style.marginLeft="10px";B.style.width=c?"220px":"430px";this.init=function(){b&&(B.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?B.select():document.execCommand("selectAll",!1,null))};b&&A.appendChild(B);var A=!1,D=0,J=new Spinner({lines:12,length:10,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9}),C=mxUtils.button(w|| -mxResources.get("create"),function(){C.setAttribute("disabled","disabled");u();C.removeAttribute("disabled")});C.className="geBtn gePrimaryBtn";if(n||q){var E=[],I=null,M=function(a){C.setAttribute("disabled","disabled");for(var b=0;b<E.length;b++)E[b].className=b==a?"geBtn gePrimaryBtn":"geBtn"},A=!0;w=document.createElement("div");w.style.whiteSpace="nowrap";w.style.height="30px";z.appendChild(w);H=mxUtils.button(mxResources.get("Templates",null,"Templates"),function(){Q.style.display="";O.style.left= -"160px";M(0);O.scrollTop=0;O.innerHTML="";D=0;I!=S&&(S=I,y(),I=null)});E.push(H);w.appendChild(H);var L=function(a){Q.style.display="none";O.style.left="30px";M(a?-1:1);null==I&&(I=S);O.scrollTop=0;O.innerHTML="";J.spin(O);D=0;var b=function(a,b){J.stop();S=a;b?O.innerHTML=b:0==a.length?O.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams",null,"No Diagrams Found")):(O.innerHTML="",y())};a?q(T.value,b):n(b)};n&&(H=mxUtils.button(mxResources.get("Recent",null,"Recent"),function(){L()}),w.appendChild(H), -E.push(H));if(q){H=document.createElement("span");H.style.marginLeft="10px";H.innerHTML=mxUtils.htmlEntities(mxResources.get("search")+":");w.appendChild(H);var T=document.createElement("input");T.style.marginRight="10px";T.style.marginLeft="10px";T.style.width="220px";mxEvent.addListener(T,"keypress",function(a){13==a.keyCode&&L(!0)});w.appendChild(T);H=mxUtils.button(mxResources.get("search"),function(){L(!0)});H.className="geBtn";w.appendChild(H)}M(0)}var R=null,V=null,Y=null,Z=null,aa=null,O= -document.createElement("div");O.style.border="1px solid #d3d3d3";O.style.position="absolute";O.style.left="160px";O.style.right="34px";A=(b?72:40)+(A?30:0);O.style.top=A+"px";O.style.bottom="68px";O.style.margin="6px 0 0 -1px";O.style.padding="6px";O.style.overflow="auto";var Q=document.createElement("div");Q.style.cssText="position:absolute;left:30px;width:128px;top:"+A+"px;bottom:68px;margin-top:6px;overflow:auto;border:1px solid #d3d3d3;";var N=140,X=140,P={},U=1;P.basic=[{title:"blankDiagram", -select:!0}];var S=P.basic;if(!c){z.appendChild(Q);z.appendChild(O);var ba=!1;/^https?:\/\//.test(l)&&!a.isCorsEnabledForUrl(l)&&(l=PROXY_URL+"?url="+encodeURIComponent(l));mxUtils.get(l,function(a){if(!ba){ba=!0;for(a=a.getXml().documentElement.firstChild;null!=a;){if("undefined"!==typeof a.getAttribute){var b=a.getAttribute("url");if(null!=b){var c=a.getAttribute("section");null==c&&(c=b.indexOf("/"),c=b.substring(0,c));b=P[c];null==b&&(U++,b=[],P[c]=b);b.push({url:a.getAttribute("url"),libs:a.getAttribute("libs"), -title:a.getAttribute("title"),tooltip:a.getAttribute("url"),preview:a.getAttribute("preview")})}}a=a.nextSibling}G()}})}mxEvent.addListener(B,"keypress",function(b){a.dialog.container.firstChild==z&&13==b.keyCode&&u()});l=document.createElement("div");l.style.marginTop=c?"4px":"16px";l.style.textAlign="right";l.style.position="absolute";l.style.left="40px";l.style.bottom="24px";l.style.right="40px";A=mxUtils.button(mxResources.get("cancel"),function(){null!=h&&h();a.hideDialog(!0)});A.className="geBtn"; -!a.editor.cancelFirst||f&&null==h||l.appendChild(A);c||a.isOffline()||!b||null!=d||f||(w=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://support.draw.io/display/DO/Creating+and+Opening+Files")}),w.className="geBtn",l.appendChild(w));c||"1"==urlParams.embed||f||(c=mxUtils.button(mxResources.get("fromTemplateUrl"),function(){var b=new FilenameDialog(a,"",mxResources.get("create"),function(b){null!=b&&0<b.length&&(b=a.getUrl(window.location.pathname+"?mode="+a.mode+"&title="+encodeURIComponent(B.value)+ -"&create="+encodeURIComponent(b)),null==a.getCurrentFile()?window.location.href=b:window.openWindow(b))},mxResources.get("url"));a.showDialog(b.container,300,80,!0,!0);b.init()}),c.className="geBtn",l.appendChild(c));Graph.fileSupport&&v&&(v=mxUtils.button(mxResources.get("import"),function(){var b=document.createElement("input");b.setAttribute("multiple","multiple");b.setAttribute("type","file");mxEvent.addListener(b,"change",function(c){a.openFiles(b.files,!0)});b.click()}),v.className="geBtn", -l.appendChild(v));l.appendChild(C);a.editor.cancelFirst||null!=d||f&&null==h||l.appendChild(A);z.appendChild(l);this.container=z},CreateDialog=function(a,c,b,d,f,h,k,m,p,g,l,n,q,t,v){function w(b,g,d,l){function u(){mxEvent.addListener(f,"click",function(){var b=d;if(k){var g=x.value,l=g.lastIndexOf(".");if(0>c.lastIndexOf(".")&&0>l){var b=null!=b?b:z.value,n="";b==App.MODE_GOOGLE?n=a.drive.extension:b==App.MODE_GITHUB?n=a.gitHub.extension:b==App.MODE_TRELLO?n=a.trello.extension:b==App.MODE_DROPBOX? -n=a.dropbox.extension:b==App.MODE_ONEDRIVE?n=a.oneDrive.extension:b==App.MODE_DEVICE&&(n=".xml");0<=l&&(g=g.substring(0,l));x.value=g+n}}y(d)})}var f=document.createElement("a");f.style.overflow="hidden";var h=document.createElement("img");h.src=b;h.setAttribute("border","0");h.setAttribute("align","absmiddle");h.style.width="60px";h.style.height="60px";h.style.paddingBottom="6px";f.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";f.className="geBaseButton";f.style.position="relative";f.style.margin= -"4px";f.style.padding="8px 8px 10px 8px";f.style.whiteSpace="nowrap";f.appendChild(h);mxClient.IS_QUIRKS&&(f.style.cssFloat="left",f.style.zoom="1");f.style.color="gray";f.style.fontSize="11px";var q=document.createElement("div");f.appendChild(q);mxUtils.write(q,g);if(null!=l&&null==a[l]){h.style.visibility="hidden";mxUtils.setOpacity(q,10);var t=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});t.spin(f);var v=window.setTimeout(function(){null== -a[l]&&(t.stop(),f.style.display="none")},3E4);a.addListener("clientLoaded",mxUtils.bind(this,function(){null!=a[l]&&(window.clearTimeout(v),mxUtils.setOpacity(q,100),h.style.visibility="",t.stop(),u())}))}else u();F.appendChild(f);++G==n&&(mxUtils.br(F),G=0)}function y(c){var g=x.value;if(null==c||null!=g&&0<g.length)a.hideDialog(),b(g,c)}k=null!=k?k:!0;m=null!=m?m:!0;n=null!=n?n:4;h=document.createElement("div");null==d&&a.addLanguageMenu(h);var u=document.createElement("h2");mxUtils.write(u,f|| -mxResources.get("create"));u.style.marginTop="0px";u.style.marginBottom="24px";h.appendChild(u);mxUtils.write(h,mxResources.get("filename")+":");var x=document.createElement("input");x.setAttribute("value",c);x.style.width="280px";x.style.marginLeft="10px";x.style.marginBottom="20px";this.init=function(){x.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?x.select():document.execCommand("selectAll",!1,null)};h.appendChild(x);null!=q&&null!=t&&"image/"==t.substring(0, -6)&&(x.style.width="160px",f=null,"image/svg+xml"==t&&mxClient.IS_SVG?(f=document.createElement("div"),f.innerHTML=mxUtils.trim(q),q=f.getElementsByTagName("svg")[0],t=parseInt(q.getAttribute("width")),v=parseInt(q.getAttribute("height")),q.setAttribute("viewBox","0 0 "+t+" "+v),q.setAttribute("width","120px"),q.setAttribute("height","80px")):(f=document.createElement("img"),f.setAttribute("src","data:"+t+(v?";base64,":";utf8,")+q)),f.style.position="absolute",f.style.top="70px",f.style.right="100px", -f.style.maxWidth="120px",f.style.maxHeight="80px",mxUtils.setPrefixedStyle(f.style,"transform","translate(50%,-50%)"),h.appendChild(f),p&&Editor.popupsAllowed&&(f.style.cursor="pointer",mxEvent.addListener(f,"click",function(){y("_blank")})));mxUtils.br(h);var F=document.createElement("div");F.style.textAlign="center";var G=0;F.style.marginTop="6px";h.appendChild(F);var z=document.createElement("select");z.style.marginLeft="10px";a.isOfflineApp()||a.isOffline()||("function"===typeof window.DriveClient&& -(q=document.createElement("option"),q.setAttribute("value",App.MODE_GOOGLE),mxUtils.write(q,mxResources.get("googleDrive")),z.appendChild(q),w(IMAGE_PATH+"/google-drive-logo.svg",mxResources.get("googleDrive"),App.MODE_GOOGLE,"drive")),"function"===typeof window.OneDriveClient&&(q=document.createElement("option"),q.setAttribute("value",App.MODE_ONEDRIVE),mxUtils.write(q,mxResources.get("oneDrive")),z.appendChild(q),a.mode==App.MODE_ONEDRIVE&&q.setAttribute("selected","selected"),w(IMAGE_PATH+"/onedrive-logo.svg", -mxResources.get("oneDrive"),App.MODE_ONEDRIVE,"oneDrive")),"function"===typeof window.DropboxClient&&(q=document.createElement("option"),q.setAttribute("value",App.MODE_DROPBOX),mxUtils.write(q,mxResources.get("dropbox")),z.appendChild(q),a.mode==App.MODE_DROPBOX&&q.setAttribute("selected","selected"),w(IMAGE_PATH+"/dropbox-logo.svg",mxResources.get("dropbox"),App.MODE_DROPBOX,"dropbox")),null!=a.gitHub&&(q=document.createElement("option"),q.setAttribute("value",App.MODE_GITHUB),mxUtils.write(q,mxResources.get("github")), -z.appendChild(q),w(IMAGE_PATH+"/github-logo.svg",mxResources.get("github"),App.MODE_GITHUB,"gitHub")),null!=a.trello&&(q=document.createElement("option"),q.setAttribute("value",App.MODE_TRELLO),mxUtils.write(q,mxResources.get("trello")),z.appendChild(q),w(IMAGE_PATH+"/trello-logo.svg",mxResources.get("trello"),App.MODE_TRELLO,"trello")));Editor.useLocalStorage&&"device"!=urlParams.storage&&null==a.getCurrentFile()||(q=document.createElement("option"),q.setAttribute("value",App.MODE_DEVICE),mxUtils.write(q, -mxResources.get("device")),z.appendChild(q),a.mode!=App.MODE_DEVICE&&m||q.setAttribute("selected","selected"),l&&w(IMAGE_PATH+"/osa_drive-harddisk.png",mxResources.get("device"),App.MODE_DEVICE));m&&isLocalStorage&&"0"!=urlParams.browser&&(m=document.createElement("option"),m.setAttribute("value",App.MODE_BROWSER),mxUtils.write(m,mxResources.get("browser")),z.appendChild(m),a.mode==App.MODE_BROWSER&&m.setAttribute("selected","selected"),w(IMAGE_PATH+"/osa_database.png",mxResources.get("browser"), -App.MODE_BROWSER));m=document.createElement("div");m.style.marginTop="26px";m.style.textAlign="center";null!=g&&(l=mxUtils.button(mxResources.get("help"),function(){a.openLink(g)}),l.className="geBtn",m.appendChild(l));l=mxUtils.button(mxResources.get("cancel"),function(){null!=d?d():(a.fileLoaded(null),a.hideDialog(),window.close(),window.location.href=a.getUrl())});l.className="geBtn";a.editor.cancelFirst&&m.appendChild(l);null==d&&(q=mxUtils.button(mxResources.get("decideLater"),function(){y(null)}), -q.className="geBtn",m.appendChild(q));p&&Editor.popupsAllowed&&(p=mxUtils.button(mxResources.get("openInNewWindow"),function(){y("_blank")}),p.className="geBtn",m.appendChild(p));a.editor.cancelFirst||m.appendChild(l);mxEvent.addListener(x,"keypress",function(b){13==b.keyCode?y(App.MODE_DEVICE):27==b.keyCode&&(a.fileLoaded(null),a.hideDialog(),window.close())});h.appendChild(m);this.container=h},PopupDialog=function(a,c,b,d,f){f=null!=f?f:!0;var h=document.createElement("div");h.style.textAlign="left"; -mxUtils.write(h,mxResources.get("fileOpenLocation"));mxUtils.br(h);mxUtils.br(h);var k=mxUtils.button(mxResources.get("openInThisWindow"),function(){f&&a.hideDialog();null!=d&&d()});k.className="geBtn";k.style.marginBottom="8px";k.style.width="280px";h.appendChild(k);mxUtils.br(h);var m=mxUtils.button(mxResources.get("openInNewWindow"),function(){f&&a.hideDialog();null!=b&&b();a.openLink(c,null,!0)});m.className="geBtn gePrimaryBtn";m.style.width=k.style.width;h.appendChild(m);mxUtils.br(h);mxUtils.br(h); -mxUtils.write(h,mxResources.get("allowPopups"));this.container=h},ImageDialog=function(a,c,b,d,f,h){h=null!=h?h:!0;var k=a.editor.graph,m=document.createElement("div");mxUtils.write(m,c);c=document.createElement("div");c.className="geTitle";c.style.backgroundColor="transparent";c.style.borderColor="transparent";c.style.whiteSpace="nowrap";c.style.textOverflow="clip";c.style.cursor="default";mxClient.IS_VML||(c.style.paddingRight="20px");var p=document.createElement("input");p.setAttribute("value", -b);p.setAttribute("type","text");p.setAttribute("spellcheck","false");p.setAttribute("autocorrect","off");p.setAttribute("autocomplete","off");p.setAttribute("autocapitalize","off");p.style.marginTop="6px";p.style.width=(Graph.fileSupport?420:340)+(mxClient.IS_QUIRKS?20:-20)+"px";p.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";p.style.backgroundRepeat="no-repeat";p.style.backgroundPosition="100% 50%";p.style.paddingRight="14px";b=document.createElement("div");b.setAttribute("title", -mxResources.get("reset"));b.style.position="relative";b.style.left="-16px";b.style.width="12px";b.style.height="14px";b.style.cursor="pointer";b.style.display=mxClient.IS_VML?"inline":"inline-block";b.style.top=(mxClient.IS_VML?0:3)+"px";b.style.background="url('"+a.editor.transparentImage+"')";mxEvent.addListener(b,"click",function(){p.value="";p.focus()});c.appendChild(p);c.appendChild(b);m.appendChild(c);var g=function(b,c,g,l){var n="data:"==b.substring(0,5);!a.isOffline()||n&&"undefined"===typeof chrome? -0<b.length&&a.spinner.spin(document.body,mxResources.get("inserting"))?a.loadImage(b,function(n){a.spinner.stop();a.hideDialog();var u=!1===l?1:null!=c&&null!=g?Math.max(c/n.width,g/n.height):Math.min(1,Math.min(520/n.width,520/n.height));h&&(b=a.convertDataUri(b));d(b,Math.round(Number(n.width)*u),Math.round(Number(n.height)*u))},function(){a.spinner.stop();d(null);a.showError(mxResources.get("error"),mxResources.get("fileNotFound"),mxResources.get("ok"))}):(a.hideDialog(),d(b)):(b=a.convertDataUri(b), -c=null==c?120:c,g=null==g?100:g,a.hideDialog(),d(b,c,g))},l=function(b,c){if(null!=b){var l=f?null:k.getModel().getGeometry(k.getSelectionCell());null!=l?g(b,l.width,l.height,c):g(b,null,null,c)}else a.hideDialog(),d(null)};this.init=function(){p.focus();if(Graph.fileSupport){p.setAttribute("placeholder",mxResources.get("dragImagesHere"));var b=m.parentNode,c=null;mxEvent.addListener(b,"dragleave",function(a){null!=c&&(c.parentNode.removeChild(c),c=null);a.stopPropagation();a.preventDefault()});mxEvent.addListener(b, -"dragover",mxUtils.bind(this,function(g){null==c&&(!mxClient.IS_IE||10<document.documentMode)&&(c=a.highlightElement(b));g.stopPropagation();g.preventDefault()}));mxEvent.addListener(b,"drop",mxUtils.bind(this,function(b){null!=c&&(c.parentNode.removeChild(c),c=null);if(0<b.dataTransfer.files.length)a.importFiles(b.dataTransfer.files,0,0,a.maxImageSize,function(a,b,c,g,d,n,f,h){l(a,h)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b=0;b<a.length;b++)a[b]()},!mxEvent.isControlDown(b)); -else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")){var g=b.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)($|\?)/i.test(g)&&l(decodeURIComponent(g))}b.stopPropagation();b.preventDefault()}),!1)}};b=document.createElement("div");b.style.marginTop=mxClient.IS_QUIRKS?"22px":"14px";b.style.textAlign="right";c=mxUtils.button(mxResources.get("cancel"),function(){a.spinner.stop();a.hideDialog()});c.className="geBtn";a.editor.cancelFirst&&b.appendChild(c);ImageDialog.filePicked= -function(a){a.action==google.picker.Action.PICKED&&null!=a.docs[0].thumbnails&&(a=a.docs[0].thumbnails[a.docs[0].thumbnails.length-1],null!=a&&(p.value=a.url));p.focus()};if(Graph.fileSupport){var n=document.createElement("input");n.setAttribute("multiple","multiple");n.setAttribute("type","file");if(null==document.documentMode){mxEvent.addListener(n,"change",function(b){a.importFiles(n.files,0,0,a.maxImageSize,function(a,b,c,g,d,n){l(a)},function(){},function(a){return"image/"==a.type.substring(0, -6)},function(a){for(var b=0;b<a.length;b++)a[b]()},!0)});var q=mxUtils.button(mxResources.get("open"),function(){n.click()});q.className="geBtn";b.appendChild(q)}}document.createElement("canvas").getContext&&"data:image/"==p.value.substring(0,11)&&"data:image/svg"!=p.value.substring(0,14)&&(q=mxUtils.button(mxResources.get("crop"),function(){var b=new CropImageDialog(a,p.value,function(a){p.value=a});a.showDialog(b.container,200,185,!0,!0);b.init()}),q.className="geBtn",b.appendChild(q));"undefined"!= -typeof google&&"undefined"!=typeof google.picker&&window.self===window.top&&(q=mxUtils.button(mxResources.get("search"),function(){if(null==a.imageSearchPicker){var b=(new google.picker.PickerBuilder).setLocale(mxLanguage).addView(google.picker.ViewId.IMAGE_SEARCH).enableFeature(google.picker.Feature.NAV_HIDDEN);a.imageSearchPicker=b.setCallback(function(a){ImageDialog.filePicked(a)}).build()}a.imageSearchPicker.setVisible(!0)}),q.className="geBtn",b.appendChild(q),null!=a.drive&&"1"==urlParams.photos&& -(q=mxUtils.button(mxResources.get("googlePlus"),function(){a.spinner.spin(document.body,mxResources.get("authorizing"))&&a.drive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();if(null==a.photoPicker){var b=gapi.auth.getToken().access_token,b=(new google.picker.PickerBuilder).setAppId(a.drive.appId).setLocale(mxLanguage).setOAuthToken(b).addView(google.picker.ViewId.PHOTOS).addView(google.picker.ViewId.PHOTO_ALBUMS).addView(google.picker.ViewId.PHOTO_UPLOAD);a.photoPicker=b.setCallback(function(a){ImageDialog.filePicked(a)}).build()}a.photoPicker.setVisible(!0)}))}), -q.className="geBtn",b.appendChild(q)));mxEvent.addListener(p,"keypress",function(a){13==a.keyCode&&l(p.value)});q=mxUtils.button(mxResources.get("apply"),function(){l(p.value)});q.className="geBtn gePrimaryBtn";b.appendChild(q);a.editor.cancelFirst||b.appendChild(c);Graph.fileSupport&&(b.style.marginTop="120px",m.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')",m.style.backgroundPosition="center 65%",m.style.backgroundRepeat="no-repeat",c=document.createElement("div"),c.style.position= -"absolute",c.style.width="420px",c.style.top="58%",c.style.textAlign="center",c.style.fontSize="18px",c.style.color="#a0c3ff",mxUtils.write(c,mxResources.get("dragImagesHere")),m.appendChild(c));m.appendChild(b);this.container=m},LinkDialog=function(a,c,b,d,f){function h(a,b,c){c=mxUtils.button("",c);c.className="geBtn";c.setAttribute("title",b);b=document.createElement("img");b.style.height="26px";b.style.width="26px";b.setAttribute("src",a);c.style.minWidth="42px";c.style.verticalAlign="middle"; -c.appendChild(b);y.appendChild(c)}var k=document.createElement("div");mxUtils.write(k,mxResources.get("editLink")+":");var m=document.createElement("div");m.className="geTitle";m.style.backgroundColor="transparent";m.style.borderColor="transparent";m.style.whiteSpace="nowrap";m.style.textOverflow="clip";m.style.cursor="default";mxClient.IS_VML||(m.style.paddingRight="20px");var p=document.createElement("input");p.setAttribute("placeholder",mxResources.get("dragUrlsHere"));p.setAttribute("type","text"); -p.style.marginTop="6px";p.style.width="440px";p.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";p.style.backgroundRepeat="no-repeat";p.style.backgroundPosition="100% 50%";p.style.paddingRight="14px";var g=document.createElement("div");g.setAttribute("title",mxResources.get("reset"));g.style.position="relative";g.style.left="-16px";g.style.width="12px";g.style.height="14px";g.style.cursor="pointer";g.style.display=mxClient.IS_VML?"inline":"inline-block";g.style.top=(mxClient.IS_VML? -0:3)+"px";g.style.background="url('"+a.editor.transparentImage+"')";mxEvent.addListener(g,"click",function(){p.value="";p.focus()});var l=document.createElement("input");l.style.cssText="margin-right:8px;margin-bottom:8px;";l.setAttribute("value","url");l.setAttribute("type","radio");l.setAttribute("name","current-linkdialog");var n=document.createElement("input");n.style.cssText="margin-right:8px;margin-bottom:8px;";n.setAttribute("value","url");n.setAttribute("type","radio");n.setAttribute("name", -"current-linkdialog");var q=document.createElement("select");q.style.width="420px";if(f&&null!=a.pages){null!=c&&"data:page/id,"==c.substring(0,13)?(n.setAttribute("checked","checked"),n.defaultChecked=!0):(p.setAttribute("value",c),l.setAttribute("checked","checked"),l.defaultChecked=!0);p.style.width="420px";m.appendChild(l);m.appendChild(p);m.appendChild(g);mxUtils.br(m);m.appendChild(n);f=!1;for(g=0;g<a.pages.length;g++){var t=document.createElement("option");mxUtils.write(t,a.pages[g].getName()|| -mxResources.get("pageWithNumber",[g+1]));t.setAttribute("value","data:page/id,"+a.pages[g].getId());c==t.getAttribute("value")&&(t.setAttribute("selected","selected"),f=!0);q.appendChild(t)}if(!f&&n.checked){var v=document.createElement("option");mxUtils.write(v,mxResources.get("pageNotFound"));v.setAttribute("disabled","disabled");v.setAttribute("selected","selected");v.setAttribute("value","pageNotFound");q.appendChild(v);mxEvent.addListener(q,"change",function(){null==v.parentNode||v.selected|| -v.parentNode.removeChild(v)})}m.appendChild(q)}else p.setAttribute("value",c),m.appendChild(p),m.appendChild(g);k.appendChild(m);var w=mxUtils.button(b,function(){a.hideDialog();d(n.checked?"pageNotFound"!==q.value?q.value:c:p.value,LinkDialog.selectedDocs)});w.style.verticalAlign="middle";w.className="geBtn gePrimaryBtn";this.init=function(){n.checked?q.focus():(p.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?p.select():document.execCommand("selectAll",!1,null)); -mxEvent.addListener(q,"focus",function(){l.removeAttribute("checked");n.setAttribute("checked","checked");n.checked=!0});mxEvent.addListener(p,"focus",function(){n.removeAttribute("checked");l.setAttribute("checked","checked");l.checked=!0});if(Graph.fileSupport){var b=k.parentNode,c=null;mxEvent.addListener(b,"dragleave",function(a){null!=c&&(c.parentNode.removeChild(c),c=null);a.stopPropagation();a.preventDefault()});mxEvent.addListener(b,"dragover",mxUtils.bind(this,function(g){null==c&&(!mxClient.IS_IE|| -10<document.documentMode)&&(c=a.highlightElement(b));g.stopPropagation();g.preventDefault()}));mxEvent.addListener(b,"drop",mxUtils.bind(this,function(a){null!=c&&(c.parentNode.removeChild(c),c=null);0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")&&(p.value=decodeURIComponent(a.dataTransfer.getData("text/uri-list")),l.setAttribute("checked","checked"),l.checked=!0,w.click());a.stopPropagation();a.preventDefault()}),!1)}};var y=document.createElement("div");y.style.marginTop="20px";y.style.textAlign= -"right";b=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});b.style.verticalAlign="middle";b.className="geBtn";a.editor.cancelFirst&&y.appendChild(b);m=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://desk.draw.io/solution/articles/16000080137")});m.style.verticalAlign="middle";m.className="geBtn";y.appendChild(m);a.isOffline()&&!mxClient.IS_CHROMEAPP&&(m.style.display="none");LinkDialog.selectedDocs=null;LinkDialog.filePicked=function(a){if(a.action==google.picker.Action.PICKED){LinkDialog.selectedDocs= -a.docs;var b=a.docs[0].url;"application/mxe"==a.docs[0].mimeType||null!=a.docs[0].mimeType&&"application/vnd.jgraph."==a.docs[0].mimeType.substring(0,23)?b="https://www.draw.io/#G"+a.docs[0].id:"application/vnd.google-apps.folder"==a.docs[0].mimeType&&(b="https://drive.google.com/#folders/"+a.docs[0].id);p.value=b;p.focus()}else LinkDialog.selectedDocs=null;p.focus()};"undefined"!=typeof google&&"undefined"!=typeof google.picker&&null!=a.drive&&h(IMAGE_PATH+"/google-drive-logo.svg",mxResources.get("googlePlus"), -function(){a.spinner.spin(document.body,mxResources.get("authorizing"))&&a.drive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();if(null==a.linkPicker){var b=gapi.auth.getToken().access_token,c=(new google.picker.DocsView(google.picker.ViewId.FOLDERS)).setParent("root").setIncludeFolders(!0).setSelectFolderEnabled(!0),g=(new google.picker.DocsView).setIncludeFolders(!0).setSelectFolderEnabled(!0),d=(new google.picker.DocsView).setIncludeFolders(!0).setEnableTeamDrives(!0).setSelectFolderEnabled(!0), -b=(new google.picker.PickerBuilder).setAppId(a.drive.appId).setLocale(mxLanguage).setOAuthToken(b).enableFeature(google.picker.Feature.SUPPORT_TEAM_DRIVES).addView(c).addView(g).addView(d).addView(google.picker.ViewId.RECENTLY_PICKED).addView(google.picker.ViewId.IMAGE_SEARCH).addView(google.picker.ViewId.VIDEO_SEARCH).addView(google.picker.ViewId.MAPS);"1"==urlParams.photos&&b.addView(google.picker.ViewId.PHOTOS).addView(google.picker.ViewId.PHOTO_ALBUMS).addView(google.picker.ViewId.PHOTO_UPLOAD); -a.linkPicker=b.setCallback(function(a){LinkDialog.filePicked(a)}).build()}a.linkPicker.setVisible(!0)}))});"undefined"!=typeof Dropbox&&"undefined"!=typeof Dropbox.choose&&h(IMAGE_PATH+"/dropbox-logo.svg",mxResources.get("dropbox"),function(){Dropbox.choose({linkType:"direct",cancel:function(){},success:function(a){p.value=a[0].link;p.focus()}})});null!=a.oneDrive&&h(IMAGE_PATH+"/onedrive-logo.svg",mxResources.get("oneDrive"),function(){a.oneDrive.pickFile(function(a,b){p.value=b.value[0].webUrl; -p.focus()})});null!=a.gitHub&&h(IMAGE_PATH+"/github-logo.svg",mxResources.get("github"),function(){a.gitHub.pickFile(function(a){if(null!=a){a=a.split("/");var b=a[0],c=a[1],g=a[2];a=a.slice(3,a.length).join("/");p.value="https://github.com/"+b+"/"+c+"/blob/"+g+"/"+a;p.focus()}})});mxEvent.addListener(p,"keypress",function(b){13==b.keyCode&&(a.hideDialog(),d(n.checked?q.value:p.value,LinkDialog.selectedDocs))});y.appendChild(w);a.editor.cancelFirst||y.appendChild(b);k.appendChild(y);this.container= +"plantUmlSvg"==m.value||"plantUmlTxt"==m.value?"@startuml\nskinparam shadowing false\nAlice -> Bob: Authentication Request\nBob --\x3e Alice: Authentication Response\n\nAlice -> Bob: Another authentication Request\nAlice <-- Bob: another authentication Response\n@enduml":";Example:\na->b\nb->edge label->c\nc->a\n"}var e=a.editor.graph.getFreeInsertPoint();c=document.createElement("div");c.style.textAlign="right";var k=document.createElement("textarea");k.style.resize="none";k.style.width="100%";k.style.height= +"354px";k.style.marginBottom="16px";var m=document.createElement("select");"formatSql"==b&&(m.style.display="none");var n=document.createElement("option");n.setAttribute("value","list");mxUtils.write(n,mxResources.get("list"));"plantUml"!=b&&m.appendChild(n);null!=b&&"fromText"!=b||n.setAttribute("selected","selected");n=document.createElement("option");n.setAttribute("value","table");mxUtils.write(n,mxResources.get("formatSql"));"formatSql"==b&&(m.appendChild(n),n.setAttribute("selected","selected")); +n=document.createElement("option");n.setAttribute("value","diagram");mxUtils.write(n,mxResources.get("diagram"));"plantUml"!=b&&m.appendChild(n);n=document.createElement("option");n.setAttribute("value","plantUmlSvg");mxUtils.write(n,mxResources.get("plantUml")+" ("+mxResources.get("formatSvg")+")");"plantUml"==b&&n.setAttribute("selected","selected");var q=document.createElement("option");q.setAttribute("value","plantUmlPng");mxUtils.write(q,mxResources.get("plantUml")+" ("+mxResources.get("formatPng")+ +")");var f=document.createElement("option");f.setAttribute("value","plantUmlTxt");mxUtils.write(f,mxResources.get("plantUml")+" ("+mxResources.get("text")+")");EditorUi.enablePlantUml&&Graph.fileSupport&&!a.isOffline()&&"plantUml"==b&&(m.appendChild(n),m.appendChild(q),m.appendChild(f));var l=g();k.value=l;c.appendChild(k);this.init=function(){k.focus()};Graph.fileSupport&&(k.addEventListener("dragover",function(a){a.stopPropagation();a.preventDefault()},!1),k.addEventListener("drop",function(a){a.stopPropagation(); +a.preventDefault();if(0<a.dataTransfer.files.length){a=a.dataTransfer.files[0];var b=new FileReader;b.onload=function(a){k.value=a.target.result};b.readAsText(a)}},!1));c.appendChild(m);mxEvent.addListener(m,"change",function(){var a=g();if(0==k.value.length||k.value==l)l=a,k.value=l});b=mxUtils.button(mxResources.get("close"),function(){k.value==l?a.hideDialog():a.confirm(mxResources.get("areYouSure"),function(){a.hideDialog()})});b.className="geBtn";a.editor.cancelFirst&&c.appendChild(b);n=mxUtils.button(mxResources.get("insert"), +function(){a.hideDialog();d(k.value,m.value)});c.appendChild(n);n.className="geBtn gePrimaryBtn";a.editor.cancelFirst||c.appendChild(b);this.container=c},NewDialog=function(a,c,b,d,g,e,k,m,n,q,f,l,p,t,u,x){function z(){var a=!0;if(null!=R)for(;C<R.length&&(a||0!=mxUtils.mod(C,30));)a=R[C++],B(a.url,a.libs,a.title,a.tooltip?a.tooltip:a.title,a.select,a.imgUrl,a.info,a.onClick,a.preview),a=!1}function v(){if(aa)b||a.hideDialog(),t(aa,ea,I.value);else if(d)b||a.hideDialog(),d(V,I.value);else{var c=I.value; +null!=c&&0<c.length&&a.pickFolder(a.mode,function(b){a.createFile(c,V,null!=U&&0<U.length?U:null,null,function(){a.hideDialog()},null,b)},a.mode!=App.MODE_GOOGLE||null==a.stateArg||null==a.stateArg.folderId)}}function y(a,b,c,f,d){null!=W&&(W.style.backgroundColor="transparent",W.style.border="1px solid transparent");J.removeAttribute("disabled");V=b;U=c;W=a;aa=f;ea=d;W.style.backgroundColor=m;W.style.border=n}function B(b,c,f,d,l,p,e,g,u){var t=document.createElement("div");t.className="geTemplate"; +t.style.height=O+"px";t.style.width=P+"px";null!=d&&0<d.length&&t.setAttribute("title",d);if(null!=p)t.style.backgroundImage="url("+p+")",t.style.backgroundSize="contain",t.style.backgroundPosition="center center",t.style.backgroundRepeat="no-repeat",mxEvent.addListener(t,"click",function(a){y(t,null,null,b,e)}),mxEvent.addListener(t,"dblclick",function(a){v()});else if(null!=b&&0<b.length){f=u||TEMPLATE_PATH+"/"+b.substring(0,b.length-4)+".png";t.style.backgroundImage="url("+f+")";t.style.backgroundPosition= +"center center";t.style.backgroundRepeat="no-repeat";var B=!1;mxEvent.addListener(t,"click",function(f){J.setAttribute("disabled","disabled");t.style.backgroundColor="transparent";t.style.border="1px solid transparent";f=b;f=/^https?:\/\//.test(f)&&!a.isCorsEnabledForUrl(f)?PROXY_URL+"?url="+encodeURIComponent(f):TEMPLATE_PATH+"/"+f;G.spin(N);mxUtils.get(f,mxUtils.bind(this,function(a){G.stop();200<=a.getStatus()&&299>=a.getStatus()&&(y(t,a.getText(),c),B&&v())}))});mxEvent.addListener(t,"dblclick", +function(a){B=!0})}else t.innerHTML='<table width="100%" height="100%" style="line-height:1em;"><tr><td align="center" valign="middle">'+mxResources.get(f)+"</td></tr></table>",l&&y(t),null!=g?mxEvent.addListener(t,"click",g):(mxEvent.addListener(t,"click",function(a){y(t)}),mxEvent.addListener(t,"dblclick",function(a){v()}));N.appendChild(t)}function H(){mxEvent.addListener(N,"scroll",function(a){N.scrollTop+N.clientHeight>=N.scrollHeight&&(z(),mxEvent.consume(a))});var a=null,b;for(b in X){var c= +document.createElement("div"),f=mxResources.get(b),d=X[b];null==f&&(f=b.substring(0,1).toUpperCase()+b.substring(1));18<f.length&&(f=f.substring(0,18)+"…");c.style.cssText="display:block;cursor:pointer;padding:6px;white-space:nowrap;margin-bottom:-1px;overflow:hidden;text-overflow:ellipsis;";c.setAttribute("title",f+" ("+d.length+")");mxUtils.write(c,c.getAttribute("title"));null!=q&&(c.style.padding=q);ba.appendChild(c);null==a&&(a=c,a.style.backgroundColor=k);(function(b,f){mxEvent.addListener(c, +"click",function(){a!=f&&(a.style.backgroundColor="",a=f,a.style.backgroundColor=k,N.scrollTop=0,N.innerHTML="",C=0,R=X[b],K=null,z())})})(b,c)}z()}b=null!=b?b:!0;g=null!=g?g:!1;k=null!=k?k:"#ebf2f9";m=null!=m?m:"#e6eff8";n=null!=n?n:"1px solid #ccd9ea";f=null!=f?f:EditorUi.templateFile;var F=document.createElement("div");F.style.height="100%";var D=document.createElement("div");D.style.whiteSpace="nowrap";D.style.height="46px";b&&F.appendChild(D);var E=document.createElement("img");E.setAttribute("border", +"0");E.setAttribute("align","absmiddle");E.style.width="40px";E.style.height="40px";E.style.marginRight="10px";E.style.paddingBottom="4px";E.src=a.mode==App.MODE_GOOGLE?IMAGE_PATH+"/google-drive-logo.svg":a.mode==App.MODE_DROPBOX?IMAGE_PATH+"/dropbox-logo.svg":a.mode==App.MODE_ONEDRIVE?IMAGE_PATH+"/onedrive-logo.svg":a.mode==App.MODE_GITHUB?IMAGE_PATH+"/github-logo.svg":a.mode==App.MODE_TRELLO?IMAGE_PATH+"/trello-logo.svg":a.mode==App.MODE_BROWSER?IMAGE_PATH+"/osa_database.png":IMAGE_PATH+"/osa_drive-harddisk.png"; +!c&&b&&D.appendChild(E);b&&mxUtils.write(D,(null==a.mode||a.mode==App.MODE_GOOGLE||a.mode==App.MODE_BROWSER?mxResources.get("diagramName"):mxResources.get("filename"))+":");E=".xml";a.mode==App.MODE_GOOGLE&&null!=a.drive?E=a.drive.extension:a.mode==App.MODE_DROPBOX&&null!=a.dropbox?E=a.dropbox.extension:a.mode==App.MODE_ONEDRIVE&&null!=a.oneDrive?E=a.oneDrive.extension:a.mode==App.MODE_GITHUB&&null!=a.gitHub?E=a.gitHub.extension:a.mode==App.MODE_TRELLO&&null!=a.trello&&(E=a.trello.extension);var I= +document.createElement("input");I.setAttribute("value",a.defaultFilename+E);I.style.marginRight="20px";I.style.marginLeft="10px";I.style.width=c?"220px":"430px";this.init=function(){b&&(I.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?I.select():document.execCommand("selectAll",!1,null))};b&&D.appendChild(I);var D=!1,C=0,G=new Spinner({lines:12,length:10,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9}),J=mxUtils.button(x|| +mxResources.get("create"),function(){J.setAttribute("disabled","disabled");v();J.removeAttribute("disabled")});J.className="geBtn gePrimaryBtn";if(l||p){var A=[],K=null,M=function(a){J.setAttribute("disabled","disabled");for(var b=0;b<A.length;b++)A[b].className=b==a?"geBtn gePrimaryBtn":"geBtn"},D=!0;x=document.createElement("div");x.style.whiteSpace="nowrap";x.style.height="30px";F.appendChild(x);E=mxUtils.button(mxResources.get("Templates",null,"Templates"),function(){ba.style.display="";N.style.left= +"160px";M(0);N.scrollTop=0;N.innerHTML="";C=0;K!=R&&(R=K,z(),K=null)});A.push(E);x.appendChild(E);var S=function(a){ba.style.display="none";N.style.left="30px";M(a?-1:1);null==K&&(K=R);N.scrollTop=0;N.innerHTML="";G.spin(N);C=0;var b=function(a,b){G.stop();R=a;b?N.innerHTML=b:0==a.length?N.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams",null,"No Diagrams Found")):(N.innerHTML="",z())};a?p(T.value,b):l(b)};l&&(E=mxUtils.button(mxResources.get("Recent",null,"Recent"),function(){S()}),x.appendChild(E), +A.push(E));if(p){E=document.createElement("span");E.style.marginLeft="10px";E.innerHTML=mxUtils.htmlEntities(mxResources.get("search")+":");x.appendChild(E);var T=document.createElement("input");T.style.marginRight="10px";T.style.marginLeft="10px";T.style.width="220px";mxEvent.addListener(T,"keypress",function(a){13==a.keyCode&&S(!0)});x.appendChild(T);E=mxUtils.button(mxResources.get("search"),function(){S(!0)});E.className="geBtn";x.appendChild(E)}M(0)}var U=null,V=null,W=null,aa=null,ea=null,N= +document.createElement("div");N.style.border="1px solid #d3d3d3";N.style.position="absolute";N.style.left="160px";N.style.right="34px";D=(b?72:40)+(D?30:0);N.style.top=D+"px";N.style.bottom="68px";N.style.margin="6px 0 0 -1px";N.style.padding="6px";N.style.overflow="auto";var ba=document.createElement("div");ba.style.cssText="position:absolute;left:30px;width:128px;top:"+D+"px;bottom:68px;margin-top:6px;overflow:auto;border:1px solid #d3d3d3;";var O=140,P=140,X={},Q=1;X.basic=[{title:"blankDiagram", +select:!0}];var R=X.basic;if(!c){F.appendChild(ba);F.appendChild(N);var Z=!1;/^https?:\/\//.test(f)&&!a.isCorsEnabledForUrl(f)&&(f=PROXY_URL+"?url="+encodeURIComponent(f));mxUtils.get(f,function(a){if(!Z){Z=!0;for(a=a.getXml().documentElement.firstChild;null!=a;){if("undefined"!==typeof a.getAttribute){var b=a.getAttribute("url");if(null!=b){var c=a.getAttribute("section");null==c&&(c=b.indexOf("/"),c=b.substring(0,c));b=X[c];null==b&&(Q++,b=[],X[c]=b);b.push({url:a.getAttribute("url"),libs:a.getAttribute("libs"), +title:a.getAttribute("title"),tooltip:a.getAttribute("url"),preview:a.getAttribute("preview")})}}a=a.nextSibling}H()}})}mxEvent.addListener(I,"keypress",function(b){a.dialog.container.firstChild==F&&13==b.keyCode&&v()});f=document.createElement("div");f.style.marginTop=c?"4px":"16px";f.style.textAlign="right";f.style.position="absolute";f.style.left="40px";f.style.bottom="24px";f.style.right="40px";D=mxUtils.button(mxResources.get("cancel"),function(){null!=e&&e();a.hideDialog(!0)});D.className="geBtn"; +!a.editor.cancelFirst||g&&null==e||f.appendChild(D);c||a.isOffline()||!b||null!=d||g||(x=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://support.draw.io/display/DO/Creating+and+Opening+Files")}),x.className="geBtn",f.appendChild(x));c||"1"==urlParams.embed||g||(c=mxUtils.button(mxResources.get("fromTemplateUrl"),function(){var b=new FilenameDialog(a,"",mxResources.get("create"),function(b){null!=b&&0<b.length&&(b=a.getUrl(window.location.pathname+"?mode="+a.mode+"&title="+encodeURIComponent(I.value)+ +"&create="+encodeURIComponent(b)),null==a.getCurrentFile()?window.location.href=b:window.openWindow(b))},mxResources.get("url"));a.showDialog(b.container,300,80,!0,!0);b.init()}),c.className="geBtn",f.appendChild(c));Graph.fileSupport&&u&&(u=mxUtils.button(mxResources.get("import"),function(){var b=document.createElement("input");b.setAttribute("multiple","multiple");b.setAttribute("type","file");mxEvent.addListener(b,"change",function(c){a.openFiles(b.files,!0)});b.click()}),u.className="geBtn", +f.appendChild(u));f.appendChild(J);a.editor.cancelFirst||null!=d||g&&null==e||f.appendChild(D);F.appendChild(f);this.container=F},CreateDialog=function(a,c,b,d,g,e,k,m,n,q,f,l,p,t,u){function x(b,f,d,p){function v(){mxEvent.addListener(e,"click",function(){var b=d;if(k){var f=y.value,l=f.lastIndexOf(".");if(0>c.lastIndexOf(".")&&0>l){var b=null!=b?b:F.value,p="";b==App.MODE_GOOGLE?p=a.drive.extension:b==App.MODE_GITHUB?p=a.gitHub.extension:b==App.MODE_TRELLO?p=a.trello.extension:b==App.MODE_DROPBOX? +p=a.dropbox.extension:b==App.MODE_ONEDRIVE?p=a.oneDrive.extension:b==App.MODE_DEVICE&&(p=".xml");0<=l&&(f=f.substring(0,l));y.value=f+p}}z(d)})}var e=document.createElement("a");e.style.overflow="hidden";var g=document.createElement("img");g.src=b;g.setAttribute("border","0");g.setAttribute("align","absmiddle");g.style.width="60px";g.style.height="60px";g.style.paddingBottom="6px";e.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";e.className="geBaseButton";e.style.position="relative";e.style.margin= +"4px";e.style.padding="8px 8px 10px 8px";e.style.whiteSpace="nowrap";e.appendChild(g);mxClient.IS_QUIRKS&&(e.style.cssFloat="left",e.style.zoom="1");e.style.color="gray";e.style.fontSize="11px";var t=document.createElement("div");e.appendChild(t);mxUtils.write(t,f);if(null!=p&&null==a[p]){g.style.visibility="hidden";mxUtils.setOpacity(t,10);var u=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});u.spin(e);var x=window.setTimeout(function(){null== +a[p]&&(u.stop(),e.style.display="none")},3E4);a.addListener("clientLoaded",mxUtils.bind(this,function(){null!=a[p]&&(window.clearTimeout(x),mxUtils.setOpacity(t,100),g.style.visibility="",u.stop(),v())}))}else v();B.appendChild(e);++H==l&&(mxUtils.br(B),H=0)}function z(c){var f=y.value;if(null==c||null!=f&&0<f.length)a.hideDialog(),b(f,c)}k=null!=k?k:!0;m=null!=m?m:!0;l=null!=l?l:4;e=document.createElement("div");null==d&&a.addLanguageMenu(e);var v=document.createElement("h2");mxUtils.write(v,g|| +mxResources.get("create"));v.style.marginTop="0px";v.style.marginBottom="24px";e.appendChild(v);mxUtils.write(e,mxResources.get("filename")+":");var y=document.createElement("input");y.setAttribute("value",c);y.style.width="280px";y.style.marginLeft="10px";y.style.marginBottom="20px";this.init=function(){y.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?y.select():document.execCommand("selectAll",!1,null)};e.appendChild(y);null!=p&&null!=t&&"image/"==t.substring(0, +6)&&(y.style.width="160px",g=null,"image/svg+xml"==t&&mxClient.IS_SVG?(g=document.createElement("div"),g.innerHTML=mxUtils.trim(p),p=g.getElementsByTagName("svg")[0],t=parseInt(p.getAttribute("width")),u=parseInt(p.getAttribute("height")),p.setAttribute("viewBox","0 0 "+t+" "+u),p.setAttribute("width","120px"),p.setAttribute("height","80px")):(g=document.createElement("img"),g.setAttribute("src","data:"+t+(u?";base64,":";utf8,")+p)),g.style.position="absolute",g.style.top="70px",g.style.right="100px", +g.style.maxWidth="120px",g.style.maxHeight="80px",mxUtils.setPrefixedStyle(g.style,"transform","translate(50%,-50%)"),e.appendChild(g),n&&Editor.popupsAllowed&&(g.style.cursor="pointer",mxEvent.addListener(g,"click",function(){z("_blank")})));mxUtils.br(e);var B=document.createElement("div");B.style.textAlign="center";var H=0;B.style.marginTop="6px";e.appendChild(B);var F=document.createElement("select");F.style.marginLeft="10px";a.isOfflineApp()||a.isOffline()||("function"===typeof window.DriveClient&& +(p=document.createElement("option"),p.setAttribute("value",App.MODE_GOOGLE),mxUtils.write(p,mxResources.get("googleDrive")),F.appendChild(p),x(IMAGE_PATH+"/google-drive-logo.svg",mxResources.get("googleDrive"),App.MODE_GOOGLE,"drive")),"function"===typeof window.OneDriveClient&&(p=document.createElement("option"),p.setAttribute("value",App.MODE_ONEDRIVE),mxUtils.write(p,mxResources.get("oneDrive")),F.appendChild(p),a.mode==App.MODE_ONEDRIVE&&p.setAttribute("selected","selected"),x(IMAGE_PATH+"/onedrive-logo.svg", +mxResources.get("oneDrive"),App.MODE_ONEDRIVE,"oneDrive")),"function"===typeof window.DropboxClient&&(p=document.createElement("option"),p.setAttribute("value",App.MODE_DROPBOX),mxUtils.write(p,mxResources.get("dropbox")),F.appendChild(p),a.mode==App.MODE_DROPBOX&&p.setAttribute("selected","selected"),x(IMAGE_PATH+"/dropbox-logo.svg",mxResources.get("dropbox"),App.MODE_DROPBOX,"dropbox")),null!=a.gitHub&&(p=document.createElement("option"),p.setAttribute("value",App.MODE_GITHUB),mxUtils.write(p,mxResources.get("github")), +F.appendChild(p),x(IMAGE_PATH+"/github-logo.svg",mxResources.get("github"),App.MODE_GITHUB,"gitHub")),null!=a.trello&&(p=document.createElement("option"),p.setAttribute("value",App.MODE_TRELLO),mxUtils.write(p,mxResources.get("trello")),F.appendChild(p),x(IMAGE_PATH+"/trello-logo.svg",mxResources.get("trello"),App.MODE_TRELLO,"trello")));Editor.useLocalStorage&&"device"!=urlParams.storage&&null==a.getCurrentFile()||(p=document.createElement("option"),p.setAttribute("value",App.MODE_DEVICE),mxUtils.write(p, +mxResources.get("device")),F.appendChild(p),a.mode!=App.MODE_DEVICE&&m||p.setAttribute("selected","selected"),f&&x(IMAGE_PATH+"/osa_drive-harddisk.png",mxResources.get("device"),App.MODE_DEVICE));m&&isLocalStorage&&"0"!=urlParams.browser&&(m=document.createElement("option"),m.setAttribute("value",App.MODE_BROWSER),mxUtils.write(m,mxResources.get("browser")),F.appendChild(m),a.mode==App.MODE_BROWSER&&m.setAttribute("selected","selected"),x(IMAGE_PATH+"/osa_database.png",mxResources.get("browser"), +App.MODE_BROWSER));m=document.createElement("div");m.style.marginTop="26px";m.style.textAlign="center";null!=q&&(f=mxUtils.button(mxResources.get("help"),function(){a.openLink(q)}),f.className="geBtn",m.appendChild(f));f=mxUtils.button(mxResources.get("cancel"),function(){null!=d?d():(a.fileLoaded(null),a.hideDialog(),window.close(),window.location.href=a.getUrl())});f.className="geBtn";a.editor.cancelFirst&&m.appendChild(f);null==d&&(p=mxUtils.button(mxResources.get("decideLater"),function(){z(null)}), +p.className="geBtn",m.appendChild(p));n&&Editor.popupsAllowed&&(n=mxUtils.button(mxResources.get("openInNewWindow"),function(){z("_blank")}),n.className="geBtn",m.appendChild(n));CreateDialog.showDownloadButton&&(n=mxUtils.button(mxResources.get("download"),function(){z("download")}),n.className="geBtn",m.appendChild(n));a.editor.cancelFirst||m.appendChild(f);mxEvent.addListener(y,"keypress",function(b){13==b.keyCode?z(App.MODE_DEVICE):27==b.keyCode&&(a.fileLoaded(null),a.hideDialog(),window.close())}); +e.appendChild(m);this.container=e};CreateDialog.showDownloadButton=!0; +var PopupDialog=function(a,c,b,d,g){g=null!=g?g:!0;var e=document.createElement("div");e.style.textAlign="left";mxUtils.write(e,mxResources.get("fileOpenLocation"));mxUtils.br(e);mxUtils.br(e);var k=mxUtils.button(mxResources.get("openInThisWindow"),function(){g&&a.hideDialog();null!=d&&d()});k.className="geBtn";k.style.marginBottom="8px";k.style.width="280px";e.appendChild(k);mxUtils.br(e);var m=mxUtils.button(mxResources.get("openInNewWindow"),function(){g&&a.hideDialog();null!=b&&b();a.openLink(c, +null,!0)});m.className="geBtn gePrimaryBtn";m.style.width=k.style.width;e.appendChild(m);mxUtils.br(e);mxUtils.br(e);mxUtils.write(e,mxResources.get("allowPopups"));this.container=e},ImageDialog=function(a,c,b,d,g,e){e=null!=e?e:!0;var k=a.editor.graph,m=document.createElement("div");mxUtils.write(m,c);c=document.createElement("div");c.className="geTitle";c.style.backgroundColor="transparent";c.style.borderColor="transparent";c.style.whiteSpace="nowrap";c.style.textOverflow="clip";c.style.cursor= +"default";mxClient.IS_VML||(c.style.paddingRight="20px");var n=document.createElement("input");n.setAttribute("value",b);n.setAttribute("type","text");n.setAttribute("spellcheck","false");n.setAttribute("autocorrect","off");n.setAttribute("autocomplete","off");n.setAttribute("autocapitalize","off");n.style.marginTop="6px";n.style.width=(Graph.fileSupport?420:340)+(mxClient.IS_QUIRKS?20:-20)+"px";n.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";n.style.backgroundRepeat="no-repeat"; +n.style.backgroundPosition="100% 50%";n.style.paddingRight="14px";b=document.createElement("div");b.setAttribute("title",mxResources.get("reset"));b.style.position="relative";b.style.left="-16px";b.style.width="12px";b.style.height="14px";b.style.cursor="pointer";b.style.display=mxClient.IS_VML?"inline":"inline-block";b.style.top=(mxClient.IS_VML?0:3)+"px";b.style.background="url('"+a.editor.transparentImage+"')";mxEvent.addListener(b,"click",function(){n.value="";n.focus()});c.appendChild(n);c.appendChild(b); +m.appendChild(c);var q=function(b,c,f,l){var p="data:"==b.substring(0,5);!a.isOffline()||p&&"undefined"===typeof chrome?0<b.length&&a.spinner.spin(document.body,mxResources.get("inserting"))?a.loadImage(b,function(p){a.spinner.stop();a.hideDialog();var v=!1===l?1:null!=c&&null!=f?Math.max(c/p.width,f/p.height):Math.min(1,Math.min(520/p.width,520/p.height));e&&(b=a.convertDataUri(b));d(b,Math.round(Number(p.width)*v),Math.round(Number(p.height)*v))},function(){a.spinner.stop();d(null);a.showError(mxResources.get("error"), +mxResources.get("fileNotFound"),mxResources.get("ok"))}):(a.hideDialog(),d(b)):(b=a.convertDataUri(b),c=null==c?120:c,f=null==f?100:f,a.hideDialog(),d(b,c,f))},f=function(b,c){if(null!=b){var f=g?null:k.getModel().getGeometry(k.getSelectionCell());null!=f?q(b,f.width,f.height,c):q(b,null,null,c)}else a.hideDialog(),d(null)};this.init=function(){n.focus();if(Graph.fileSupport){n.setAttribute("placeholder",mxResources.get("dragImagesHere"));var b=m.parentNode,c=null;mxEvent.addListener(b,"dragleave", +function(a){null!=c&&(c.parentNode.removeChild(c),c=null);a.stopPropagation();a.preventDefault()});mxEvent.addListener(b,"dragover",mxUtils.bind(this,function(f){null==c&&(!mxClient.IS_IE||10<document.documentMode)&&(c=a.highlightElement(b));f.stopPropagation();f.preventDefault()}));mxEvent.addListener(b,"drop",mxUtils.bind(this,function(b){null!=c&&(c.parentNode.removeChild(c),c=null);if(0<b.dataTransfer.files.length)a.importFiles(b.dataTransfer.files,0,0,a.maxImageSize,function(a,b,c,d,l,p,e,g){f(a, +g)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b=0;b<a.length;b++)a[b]()},!mxEvent.isControlDown(b));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")){var d=b.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)($|\?)/i.test(d)&&f(decodeURIComponent(d))}b.stopPropagation();b.preventDefault()}),!1)}};b=document.createElement("div");b.style.marginTop=mxClient.IS_QUIRKS?"22px":"14px";b.style.textAlign="right";c=mxUtils.button(mxResources.get("cancel"), +function(){a.spinner.stop();a.hideDialog()});c.className="geBtn";a.editor.cancelFirst&&b.appendChild(c);ImageDialog.filePicked=function(a){a.action==google.picker.Action.PICKED&&null!=a.docs[0].thumbnails&&(a=a.docs[0].thumbnails[a.docs[0].thumbnails.length-1],null!=a&&(n.value=a.url));n.focus()};if(Graph.fileSupport){var l=document.createElement("input");l.setAttribute("multiple","multiple");l.setAttribute("type","file");if(null==document.documentMode){mxEvent.addListener(l,"change",function(b){a.importFiles(l.files, +0,0,a.maxImageSize,function(a,b,c,d,l,p){f(a)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b=0;b<a.length;b++)a[b]()},!0)});var p=mxUtils.button(mxResources.get("open"),function(){l.click()});p.className="geBtn";b.appendChild(p)}}document.createElement("canvas").getContext&&"data:image/"==n.value.substring(0,11)&&"data:image/svg"!=n.value.substring(0,14)&&(p=mxUtils.button(mxResources.get("crop"),function(){var b=new CropImageDialog(a,n.value,function(a){n.value= +a});a.showDialog(b.container,200,185,!0,!0);b.init()}),p.className="geBtn",b.appendChild(p));"undefined"!=typeof google&&"undefined"!=typeof google.picker&&window.self===window.top&&(p=mxUtils.button(mxResources.get("search"),function(){if(null==a.imageSearchPicker){var b=(new google.picker.PickerBuilder).setLocale(mxLanguage).addView(google.picker.ViewId.IMAGE_SEARCH).enableFeature(google.picker.Feature.NAV_HIDDEN);a.imageSearchPicker=b.setCallback(function(a){ImageDialog.filePicked(a)}).build()}a.imageSearchPicker.setVisible(!0)}), +p.className="geBtn",b.appendChild(p),null!=a.drive&&"1"==urlParams.photos&&(p=mxUtils.button(mxResources.get("googlePlus"),function(){a.spinner.spin(document.body,mxResources.get("authorizing"))&&a.drive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();if(null==a.photoPicker){var b=gapi.auth.getToken().access_token,b=(new google.picker.PickerBuilder).setAppId(a.drive.appId).setLocale(mxLanguage).setOAuthToken(b).addView(google.picker.ViewId.PHOTOS).addView(google.picker.ViewId.PHOTO_ALBUMS).addView(google.picker.ViewId.PHOTO_UPLOAD); +a.photoPicker=b.setCallback(function(a){ImageDialog.filePicked(a)}).build()}a.photoPicker.setVisible(!0)}))}),p.className="geBtn",b.appendChild(p)));mxEvent.addListener(n,"keypress",function(a){13==a.keyCode&&f(n.value)});p=mxUtils.button(mxResources.get("apply"),function(){f(n.value)});p.className="geBtn gePrimaryBtn";b.appendChild(p);a.editor.cancelFirst||b.appendChild(c);Graph.fileSupport&&(b.style.marginTop="120px",m.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')",m.style.backgroundPosition= +"center 65%",m.style.backgroundRepeat="no-repeat",c=document.createElement("div"),c.style.position="absolute",c.style.width="420px",c.style.top="58%",c.style.textAlign="center",c.style.fontSize="18px",c.style.color="#a0c3ff",mxUtils.write(c,mxResources.get("dragImagesHere")),m.appendChild(c));m.appendChild(b);this.container=m},LinkDialog=function(a,c,b,d,g){function e(a,b,c){c=mxUtils.button("",c);c.className="geBtn";c.setAttribute("title",b);b=document.createElement("img");b.style.height="26px"; +b.style.width="26px";b.setAttribute("src",a);c.style.minWidth="42px";c.style.verticalAlign="middle";c.appendChild(b);z.appendChild(c)}var k=document.createElement("div");mxUtils.write(k,mxResources.get("editLink")+":");var m=document.createElement("div");m.className="geTitle";m.style.backgroundColor="transparent";m.style.borderColor="transparent";m.style.whiteSpace="nowrap";m.style.textOverflow="clip";m.style.cursor="default";mxClient.IS_VML||(m.style.paddingRight="20px");var n=document.createElement("input"); +n.setAttribute("placeholder",mxResources.get("dragUrlsHere"));n.setAttribute("type","text");n.style.marginTop="6px";n.style.width="440px";n.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";n.style.backgroundRepeat="no-repeat";n.style.backgroundPosition="100% 50%";n.style.paddingRight="14px";var q=document.createElement("div");q.setAttribute("title",mxResources.get("reset"));q.style.position="relative";q.style.left="-16px";q.style.width="12px";q.style.height="14px";q.style.cursor="pointer"; +q.style.display=mxClient.IS_VML?"inline":"inline-block";q.style.top=(mxClient.IS_VML?0:3)+"px";q.style.background="url('"+a.editor.transparentImage+"')";mxEvent.addListener(q,"click",function(){n.value="";n.focus()});var f=document.createElement("input");f.style.cssText="margin-right:8px;margin-bottom:8px;";f.setAttribute("value","url");f.setAttribute("type","radio");f.setAttribute("name","current-linkdialog");var l=document.createElement("input");l.style.cssText="margin-right:8px;margin-bottom:8px;"; +l.setAttribute("value","url");l.setAttribute("type","radio");l.setAttribute("name","current-linkdialog");var p=document.createElement("select");p.style.width="420px";if(g&&null!=a.pages){null!=c&&"data:page/id,"==c.substring(0,13)?(l.setAttribute("checked","checked"),l.defaultChecked=!0):(n.setAttribute("value",c),f.setAttribute("checked","checked"),f.defaultChecked=!0);n.style.width="420px";m.appendChild(f);m.appendChild(n);m.appendChild(q);mxUtils.br(m);m.appendChild(l);g=!1;for(q=0;q<a.pages.length;q++){var t= +document.createElement("option");mxUtils.write(t,a.pages[q].getName()||mxResources.get("pageWithNumber",[q+1]));t.setAttribute("value","data:page/id,"+a.pages[q].getId());c==t.getAttribute("value")&&(t.setAttribute("selected","selected"),g=!0);p.appendChild(t)}if(!g&&l.checked){var u=document.createElement("option");mxUtils.write(u,mxResources.get("pageNotFound"));u.setAttribute("disabled","disabled");u.setAttribute("selected","selected");u.setAttribute("value","pageNotFound");p.appendChild(u);mxEvent.addListener(p, +"change",function(){null==u.parentNode||u.selected||u.parentNode.removeChild(u)})}m.appendChild(p)}else n.setAttribute("value",c),m.appendChild(n),m.appendChild(q);k.appendChild(m);var x=mxUtils.button(b,function(){a.hideDialog();d(l.checked?"pageNotFound"!==p.value?p.value:c:n.value,LinkDialog.selectedDocs)});x.style.verticalAlign="middle";x.className="geBtn gePrimaryBtn";this.init=function(){l.checked?p.focus():(n.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS? +n.select():document.execCommand("selectAll",!1,null));mxEvent.addListener(p,"focus",function(){f.removeAttribute("checked");l.setAttribute("checked","checked");l.checked=!0});mxEvent.addListener(n,"focus",function(){l.removeAttribute("checked");f.setAttribute("checked","checked");f.checked=!0});if(Graph.fileSupport){var b=k.parentNode,c=null;mxEvent.addListener(b,"dragleave",function(a){null!=c&&(c.parentNode.removeChild(c),c=null);a.stopPropagation();a.preventDefault()});mxEvent.addListener(b,"dragover", +mxUtils.bind(this,function(f){null==c&&(!mxClient.IS_IE||10<document.documentMode)&&(c=a.highlightElement(b));f.stopPropagation();f.preventDefault()}));mxEvent.addListener(b,"drop",mxUtils.bind(this,function(a){null!=c&&(c.parentNode.removeChild(c),c=null);0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")&&(n.value=decodeURIComponent(a.dataTransfer.getData("text/uri-list")),f.setAttribute("checked","checked"),f.checked=!0,x.click());a.stopPropagation();a.preventDefault()}),!1)}};var z=document.createElement("div"); +z.style.marginTop="20px";z.style.textAlign="right";b=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});b.style.verticalAlign="middle";b.className="geBtn";a.editor.cancelFirst&&z.appendChild(b);m=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://desk.draw.io/solution/articles/16000080137")});m.style.verticalAlign="middle";m.className="geBtn";z.appendChild(m);a.isOffline()&&!mxClient.IS_CHROMEAPP&&(m.style.display="none");LinkDialog.selectedDocs=null;LinkDialog.filePicked= +function(a){if(a.action==google.picker.Action.PICKED){LinkDialog.selectedDocs=a.docs;var b=a.docs[0].url;"application/mxe"==a.docs[0].mimeType||null!=a.docs[0].mimeType&&"application/vnd.jgraph."==a.docs[0].mimeType.substring(0,23)?b="https://www.draw.io/#G"+a.docs[0].id:"application/vnd.google-apps.folder"==a.docs[0].mimeType&&(b="https://drive.google.com/#folders/"+a.docs[0].id);n.value=b;n.focus()}else LinkDialog.selectedDocs=null;n.focus()};"undefined"!=typeof google&&"undefined"!=typeof google.picker&& +null!=a.drive&&e(IMAGE_PATH+"/google-drive-logo.svg",mxResources.get("googlePlus"),function(){a.spinner.spin(document.body,mxResources.get("authorizing"))&&a.drive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();if(null==a.linkPicker){var b=gapi.auth.getToken().access_token,c=(new google.picker.DocsView(google.picker.ViewId.FOLDERS)).setParent("root").setIncludeFolders(!0).setSelectFolderEnabled(!0),f=(new google.picker.DocsView).setIncludeFolders(!0).setSelectFolderEnabled(!0),d=(new google.picker.DocsView).setIncludeFolders(!0).setEnableTeamDrives(!0).setSelectFolderEnabled(!0), +b=(new google.picker.PickerBuilder).setAppId(a.drive.appId).setLocale(mxLanguage).setOAuthToken(b).enableFeature(google.picker.Feature.SUPPORT_TEAM_DRIVES).addView(c).addView(f).addView(d).addView(google.picker.ViewId.RECENTLY_PICKED).addView(google.picker.ViewId.IMAGE_SEARCH).addView(google.picker.ViewId.VIDEO_SEARCH).addView(google.picker.ViewId.MAPS);"1"==urlParams.photos&&b.addView(google.picker.ViewId.PHOTOS).addView(google.picker.ViewId.PHOTO_ALBUMS).addView(google.picker.ViewId.PHOTO_UPLOAD); +a.linkPicker=b.setCallback(function(a){LinkDialog.filePicked(a)}).build()}a.linkPicker.setVisible(!0)}))});"undefined"!=typeof Dropbox&&"undefined"!=typeof Dropbox.choose&&e(IMAGE_PATH+"/dropbox-logo.svg",mxResources.get("dropbox"),function(){Dropbox.choose({linkType:"direct",cancel:function(){},success:function(a){n.value=a[0].link;n.focus()}})});null!=a.oneDrive&&e(IMAGE_PATH+"/onedrive-logo.svg",mxResources.get("oneDrive"),function(){a.oneDrive.pickFile(function(a,b){n.value=b.value[0].webUrl; +n.focus()})});null!=a.gitHub&&e(IMAGE_PATH+"/github-logo.svg",mxResources.get("github"),function(){a.gitHub.pickFile(function(a){if(null!=a){a=a.split("/");var b=a[0],c=a[1],f=a[2];a=a.slice(3,a.length).join("/");n.value="https://github.com/"+b+"/"+c+"/blob/"+f+"/"+a;n.focus()}})});mxEvent.addListener(n,"keypress",function(b){13==b.keyCode&&(a.hideDialog(),d(l.checked?p.value:n.value,LinkDialog.selectedDocs))});z.appendChild(x);a.editor.cancelFirst||z.appendChild(b);k.appendChild(z);this.container= k},AboutDialog=function(a){var c=document.createElement("div");c.style.marginTop="6px";c.setAttribute("align","center");var b=document.createElement("img");b.style.border="0px";mxClient.IS_SVG?(b.setAttribute("width","164"),b.setAttribute("height","221"),b.style.width="164px",b.style.height="221px",b.setAttribute("src",IMAGE_PATH+"/drawlogo-text-bottom.svg")):(b.setAttribute("width","176"),b.setAttribute("height","219"),b.style.width="170px",b.style.height="219px",b.setAttribute("src",IMAGE_PATH+ "/logo-flat.png"));"dark"==uiTheme&&(b.style.filter="grayscale(100%) invert(100%)");c.appendChild(b);mxUtils.br(c);var b="dark"==uiTheme?"#cccccc":"#505050",d=document.createElement("small");d.innerHTML="v "+EditorUi.VERSION;d.style.color=b;c.appendChild(d);mxUtils.br(c);mxUtils.br(c);d=document.createElement("small");d.style.color=b;d.innerHTML='© 2005-2019 <a href="https://about.draw.io/" style="color:inherit;" target="_blank">JGraph Ltd</a>.<br>All Rights Reserved.';c.appendChild(d);mxEvent.addListener(c, "click",function(b){"A"!=mxEvent.getSource(b).nodeName&&a.hideDialog()});this.container=c},FeedbackDialog=function(a){var c=document.createElement("div"),b=document.createElement("div");mxUtils.write(b,mxResources.get("sendYourFeedbackToDrawIo"));b.style.fontSize="18px";b.style.marginBottom="18px";c.appendChild(b);b=document.createElement("div");mxUtils.write(b,mxResources.get("yourEmailAddress")+" ("+mxResources.get("required")+")");c.appendChild(b);var d=document.createElement("input");d.setAttribute("type", -"text");d.style.marginTop="6px";d.style.width="600px";var f=mxUtils.button(mxResources.get("sendMessage"),function(){var b=p.value+(k.checked?"\nDiagram:\n"+mxUtils.getXml(a.getXmlFileData()):"")+"\nBrowser:\n"+navigator.userAgent;b.length>FeedbackDialog.maxAttachmentSize?a.alert(mxResources.get("drawingTooLarge")):(a.hideDialog(),a.spinner.spin(document.body)&&mxUtils.post(null!=FeedbackDialog.feedbackUrl?FeedbackDialog.feedbackUrl:"/email","email="+encodeURIComponent(d.value)+"&version="+encodeURIComponent(EditorUi.VERSION)+ -"&url="+encodeURIComponent(window.location.href)+"&body="+encodeURIComponent("Feedback:\n"+b),function(b){a.spinner.stop();200<=b.getStatus()&&299>=b.getStatus()?a.alert(mxResources.get("feedbackSent")):a.alert(mxResources.get("errorSendingFeedback"))},function(){a.spinner.stop();a.alert(mxResources.get("errorSendingFeedback"))}))});f.className="geBtn gePrimaryBtn";f.setAttribute("disabled","disabled");var h=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; -mxEvent.addListener(d,"change",function(){0<d.value.length&&0<h.test(d.value)?f.removeAttribute("disabled"):f.setAttribute("disabled","disabled")});mxEvent.addListener(d,"keyup",function(){0<d.value.length&&h.test(d.value)?f.removeAttribute("disabled"):f.setAttribute("disabled","disabled")});c.appendChild(d);this.init=function(){d.focus()};var k=document.createElement("input");k.setAttribute("type","checkbox");k.setAttribute("checked","checked");k.defaultChecked=!0;b=document.createElement("p");b.style.marginTop= -"14px";b.appendChild(k);var m=document.createElement("span");mxUtils.write(m," "+mxResources.get("includeCopyOfMyDiagram"));b.appendChild(m);mxEvent.addListener(m,"click",function(a){k.checked=!k.checked;mxEvent.consume(a)});c.appendChild(b);b=document.createElement("div");mxUtils.write(b,mxResources.get("feedback"));c.appendChild(b);var p=document.createElement("textarea");p.style.resize="none";p.style.width="600px";p.style.height="140px";p.style.marginTop="6px";p.setAttribute("placeholder",mxResources.get("commentsNotes")); -c.appendChild(p);b=document.createElement("div");b.style.marginTop="26px";b.style.textAlign="right";m=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});m.className="geBtn";a.editor.cancelFirst?(b.appendChild(m),b.appendChild(f)):(b.appendChild(f),b.appendChild(m));c.appendChild(b);this.container=c};FeedbackDialog.maxAttachmentSize=1E6; -var RevisionDialog=function(a,c,b){var d=document.createElement("div"),f=document.createElement("h3");f.style.marginTop="0px";mxUtils.write(f,mxResources.get("revisionHistory"));d.appendChild(f);var h=document.createElement("div");h.style.position="absolute";h.style.overflow="auto";h.style.width="170px";h.style.height="378px";d.appendChild(h);var k=document.createElement("div");k.style.position="absolute";k.style.border="1px solid lightGray";k.style.left="199px";k.style.width="470px";k.style.height= -"376px";k.style.overflow="hidden";mxEvent.disableContextMenu(k);d.appendChild(k);var m=new Graph(k);m.setTooltips(!1);m.setEnabled(!1);m.setPanning(!0);m.panningHandler.ignoreCell=!0;m.panningHandler.useLeftButtonForPanning=!0;m.minFitScale=null;m.maxFitScale=null;m.centerZoom=!0;var p=0,g=null,l=0,n=m.getGlobalVariable;m.getGlobalVariable=function(a){return"page"==a&&null!=g&&null!=g[l]?g[l].getAttribute("name"):"pagenumber"==a?l+1:n.apply(this,arguments)};m.getLinkForCell=function(){return null}; -Editor.MathJaxRender&&m.addListener(mxEvent.SIZE,mxUtils.bind(this,function(b,c){a.editor.graph.mathEnabled&&Editor.MathJaxRender(m.container)}));var q=new Spinner({lines:11,length:15,width:6,radius:10,corners:1,rotate:0,direction:1,color:"#000",speed:1.4,trail:60,shadow:!1,hwaccel:!1,className:"spinner",zIndex:2E9,top:"50%",left:"50%"}),t=a.getCurrentFile(),v=null,w=null,y=null,u=null,x=mxUtils.button("",function(){null!=y&&m.zoomIn()});x.className="geSprite geSprite-zoomin";x.setAttribute("title", -mxResources.get("zoomIn"));x.style.outline="none";x.style.border="none";x.style.margin="2px";x.setAttribute("disabled","disabled");mxUtils.setOpacity(x,20);var F=mxUtils.button("",function(){null!=y&&m.zoomOut()});F.className="geSprite geSprite-zoomout";F.setAttribute("title",mxResources.get("zoomOut"));F.style.outline="none";F.style.border="none";F.style.margin="2px";F.setAttribute("disabled","disabled");mxUtils.setOpacity(F,20);var G=mxUtils.button("",function(){null!=y&&(m.maxFitScale=8,m.fit(8), -m.center())});G.className="geSprite geSprite-fit";G.setAttribute("title",mxResources.get("fit"));G.style.outline="none";G.style.border="none";G.style.margin="2px";G.setAttribute("disabled","disabled");mxUtils.setOpacity(G,20);var z=mxUtils.button("",function(){null!=y&&(m.zoomActual(),m.center())});z.className="geSprite geSprite-actualsize";z.setAttribute("title",mxResources.get("actualSize"));z.style.outline="none";z.style.border="none";z.style.margin="2px";z.setAttribute("disabled","disabled"); -mxUtils.setOpacity(z,20);var A=document.createElement("div");A.style.position="absolute";A.style.textAlign="right";A.style.color="gray";A.style.marginTop="10px";A.style.backgroundColor="transparent";A.style.top="440px";A.style.right="32px";A.style.maxWidth="380px";A.style.cursor="default";var H=mxUtils.button(mxResources.get("download"),function(){if(null!=y){var b=a.getCurrentFile(),b=null!=b&&null!=b.getTitle()?b.getTitle():a.defaultFilename,c=mxUtils.getXml(y.documentElement);a.isLocalFileSave()? -a.saveLocalFile(c,b,"text/xml"):(c="undefined"===typeof pako?"&xml="+encodeURIComponent(c):"&data="+encodeURIComponent(a.editor.graph.compress(c)),(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(b)+"&format=xml"+c)).simulate(document,"_blank"))}});H.className="geBtn";H.setAttribute("disabled","disabled");var B=mxUtils.button(mxResources.get("restore"),function(){null!=y&&null!=u&&a.confirm(mxResources.get("areYouSure"),function(){null!=b?b(u):a.spinner.spin(document.body,mxResources.get("restoring"))&& -t.save(!0,function(b){a.spinner.stop();a.replaceFileData(u);a.hideDialog()},function(b){a.spinner.stop();a.editor.setStatus("");a.handleError(b,null!=b?mxResources.get("errorSavingFile"):null)})})});B.className="geBtn";B.setAttribute("disabled","disabled");var D=document.createElement("select");D.setAttribute("disabled","disabled");D.style.maxWidth="80px";D.style.position="relative";D.style.top="-2px";D.style.verticalAlign="bottom";D.style.marginRight="6px";D.style.display="none";var J=null;mxEvent.addListener(D, -"change",function(a){null!=J&&(J(a),mxEvent.consume(a))});var C=mxUtils.button(mxResources.get("open"),function(){null!=y&&(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(mxUtils.getXml(y.documentElement)),a.openLink(a.getUrl(),null,!0))});C.className="geBtn";C.setAttribute("disabled","disabled");null!=b&&(C.style.display="none");var E=mxUtils.button(mxResources.get("show"),function(){null!=w&&a.openLink(w.getUrl(D.selectedIndex))});E.className="geBtn gePrimaryBtn"; -E.setAttribute("disabled","disabled");null!=b&&(E.style.display="none",B.className="geBtn gePrimaryBtn");f=document.createElement("div");f.style.position="absolute";f.style.top="482px";f.style.width="640px";f.style.textAlign="right";var I=document.createElement("div");I.className="geToolbarContainer";I.style.backgroundColor="transparent";I.style.padding="2px";I.style.border="none";I.style.left="199px";I.style.top="442px";var M=null;if(null!=c&&0<c.length){k.style.cursor="move";var L=document.createElement("table"); -L.style.border="1px solid lightGray";L.style.borderCollapse="collapse";L.style.borderSpacing="0px";L.style.width="100%";var T=document.createElement("tbody"),R=(new Date).toDateString();null!=a.currentPage&&null!=a.pages&&(p=mxUtils.indexOf(a.pages,a.currentPage));for(var V=c.length-1;0<=V;V--){var Y=function(b){var d=new Date(b.modifiedDate),n=null;if(0<=d.getTime()){var f=function(c){q.stop();var f=mxUtils.parseXml(c),h=a.editor.extractGraphModel(f.documentElement,!0);if(null!=h){var v=function(b){null!= -b&&(b=w(mxUtils.parseXml(a.editor.graph.decompress(mxUtils.getTextContent(b))).documentElement));return b},w=function(a){var b=a.getAttribute("background");if(null==b||""==b||b==mxConstants.NONE)b="#ffffff";k.style.backgroundColor=b;(new mxCodec(a.ownerDocument)).decode(a,m.getModel());m.maxFitScale=1;m.fit(8);m.center();return a};D.style.display="none";D.innerHTML="";y=f;u=c;g=parseSelectFunction=null;l=0;if("mxfile"==h.nodeName){f=h.getElementsByTagName("diagram");g=[];for(c=0;c<f.length;c++)g.push(f[c]); -l=Math.min(p,g.length-1);0<g.length&&v(g[l]);if(1<g.length)for(D.removeAttribute("disabled"),D.style.display="",c=0;c<g.length;c++)f=document.createElement("option"),mxUtils.write(f,g[c].getAttribute("name")||mxResources.get("pageWithNumber",[c+1])),f.setAttribute("value",c),c==l&&f.setAttribute("selected","selected"),D.appendChild(f);J=function(){try{var b=parseInt(D.value);v(g[b]);l=p=b}catch(ca){D.value=p,a.handleError(ca)}}}else w(h);c=b.lastModifyingUserName;null!=c&&20<c.length&&(c=c.substring(0, -20)+"...");A.innerHTML="";mxUtils.write(A,(null!=c?c+" ":"")+d.toLocaleDateString()+" "+d.toLocaleTimeString());A.setAttribute("title",n.getAttribute("title"));x.removeAttribute("disabled");F.removeAttribute("disabled");G.removeAttribute("disabled");z.removeAttribute("disabled");null!=t&&t.isRestricted()||(a.editor.graph.isEnabled()&&B.removeAttribute("disabled"),H.removeAttribute("disabled"),E.removeAttribute("disabled"),C.removeAttribute("disabled"));mxUtils.setOpacity(x,60);mxUtils.setOpacity(F, -60);mxUtils.setOpacity(G,60);mxUtils.setOpacity(z,60)}else D.style.display="none",D.innerHTML="",A.innerHTML="",mxUtils.write(A,mxResources.get("errorLoadingFile"))},n=document.createElement("tr");n.style.borderBottom="1px solid lightGray";n.style.fontSize="12px";n.style.cursor="pointer";var h=document.createElement("td");h.style.padding="6px";h.style.whiteSpace="nowrap";b==c[c.length-1]?mxUtils.write(h,mxResources.get("current")):d.toDateString()===R?mxUtils.write(h,d.toLocaleTimeString()):mxUtils.write(h, -d.toLocaleDateString()+" "+d.toLocaleTimeString());n.appendChild(h);n.setAttribute("title",d.toLocaleDateString()+" "+d.toLocaleTimeString()+" "+a.formatFileSize(parseInt(b.fileSize))+(null!=b.lastModifyingUserName?" "+b.lastModifyingUserName:""));mxEvent.addListener(n,"click",function(a){w!=b&&(q.stop(),null!=v&&(v.style.backgroundColor=""),w=b,v=n,v.style.backgroundColor="#ebf2f9",u=y=null,A.removeAttribute("title"),A.innerHTML=mxUtils.htmlEntities(mxResources.get("loading")+"..."),k.style.backgroundColor= -"#ffffff",m.getModel().clear(),B.setAttribute("disabled","disabled"),H.setAttribute("disabled","disabled"),x.setAttribute("disabled","disabled"),F.setAttribute("disabled","disabled"),z.setAttribute("disabled","disabled"),G.setAttribute("disabled","disabled"),C.setAttribute("disabled","disabled"),E.setAttribute("disabled","disabled"),D.setAttribute("disabled","disabled"),mxUtils.setOpacity(x,20),mxUtils.setOpacity(F,20),mxUtils.setOpacity(G,20),mxUtils.setOpacity(z,20),q.spin(k),b.getXml(function(a){if(w== -b)try{f(a)}catch(U){A.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+": "+U.message)}},function(a){q.stop();D.style.display="none";D.innerHTML="";A.innerHTML="";mxUtils.write(A,mxResources.get("errorLoadingFile"))}),mxEvent.consume(a))});mxEvent.addListener(n,"dblclick",function(a){E.click();window.getSelection?window.getSelection().removeAllRanges():document.selection&&document.selection.empty();mxEvent.consume(a)},!1);T.appendChild(n)}return n}(c[V]);null!=Y&&V==c.length-1&&(M=Y)}L.appendChild(T); -h.appendChild(L)}else null==t||null==a.drive&&t.constructor==window.DriveFile||null==a.dropbox&&t.constructor==window.DropboxFile?(k.style.display="none",I.style.display="none",mxUtils.write(h,mxResources.get("notAvailable"))):(k.style.display="none",I.style.display="none",mxUtils.write(h,mxResources.get("noRevisions")));this.init=function(){null!=M&&M.click()};h=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});h.className="geBtn";I.appendChild(D);I.appendChild(x);I.appendChild(F); -I.appendChild(z);I.appendChild(G);a.editor.cancelFirst?(f.appendChild(h),f.appendChild(H),f.appendChild(C),f.appendChild(B),f.appendChild(E)):(f.appendChild(H),f.appendChild(C),f.appendChild(B),f.appendChild(E),f.appendChild(h));d.appendChild(f);d.appendChild(I);d.appendChild(A);this.container=d},DraftDialog=function(a,c,b,d,f,h,k,m){var p=document.createElement("div"),g=document.createElement("div");g.style.marginTop="0px";g.style.whiteSpace="nowrap";g.style.overflow="auto";mxUtils.write(g,c);p.appendChild(g); -var l=document.createElement("div");l.style.position="absolute";l.style.border="1px solid lightGray";l.style.marginTop="10px";l.style.width="640px";l.style.top="46px";l.style.bottom="74px";l.style.overflow="hidden";mxEvent.disableContextMenu(l);p.appendChild(l);var n=new Graph(l);n.setEnabled(!1);n.setPanning(!0);n.panningHandler.ignoreCell=!0;n.panningHandler.useLeftButtonForPanning=!0;n.minFitScale=null;n.maxFitScale=null;n.centerZoom=!0;c=mxUtils.parseXml(b);var q=a.editor.extractGraphModel(c.documentElement, -!0),t=0,v=null,w=n.getGlobalVariable;n.getGlobalVariable=function(a){return"page"==a&&null!=v&&null!=v[t]?v[t].getAttribute("name"):"pagenumber"==a?t+1:w.apply(this,arguments)};n.getLinkForCell=function(){return null};c=mxUtils.button("",function(){n.zoomIn()});c.className="geSprite geSprite-zoomin";c.setAttribute("title",mxResources.get("zoomIn"));c.style.outline="none";c.style.border="none";c.style.margin="2px";mxUtils.setOpacity(c,60);b=mxUtils.button("",function(){n.zoomOut()});b.className="geSprite geSprite-zoomout"; -b.setAttribute("title",mxResources.get("zoomOut"));b.style.outline="none";b.style.border="none";b.style.margin="2px";mxUtils.setOpacity(b,60);g=mxUtils.button("",function(){n.maxFitScale=8;n.fit(8);n.center()});g.className="geSprite geSprite-fit";g.setAttribute("title",mxResources.get("fit"));g.style.outline="none";g.style.border="none";g.style.margin="2px";mxUtils.setOpacity(g,60);var y=mxUtils.button("",function(){n.zoomActual();n.center()});y.className="geSprite geSprite-actualsize";y.setAttribute("title", -mxResources.get("actualSize"));y.style.outline="none";y.style.border="none";y.style.margin="2px";mxUtils.setOpacity(y,60);f=mxUtils.button(k||mxResources.get("discard"),f);f.className="geBtn";var u=document.createElement("select");u.style.maxWidth="80px";u.style.position="relative";u.style.top="-2px";u.style.verticalAlign="bottom";u.style.marginRight="6px";u.style.display="none";d=mxUtils.button(h||mxResources.get("edit"),d);d.className="geBtn gePrimaryBtn";h=document.createElement("div");h.style.position= -"absolute";h.style.bottom="30px";h.style.width="640px";h.style.textAlign="right";k=document.createElement("div");k.className="geToolbarContainer";k.style.cssText="box-shadow:none !important;background-color:transparent;padding:2px;border-style:none !important;bottom:30px;";this.init=function(){function b(a){if(null!=a){var b=a.getAttribute("background");if(null==b||""==b||b==mxConstants.NONE)b="#ffffff";l.style.backgroundColor=b;(new mxCodec(a.ownerDocument)).decode(a,n.getModel());n.maxFitScale= -1;n.fit(8);n.center()}}function c(c){null!=c&&(c=b(mxUtils.parseXml(a.editor.graph.decompress(mxUtils.getTextContent(c))).documentElement));return c}mxEvent.addListener(u,"change",function(a){t=parseInt(u.value);c(v[t]);mxEvent.consume(a)});if("mxfile"==q.nodeName){var g=q.getElementsByTagName("diagram");v=[];for(var d=0;d<g.length;d++)v.push(g[d]);0<v.length&&c(v[t]);if(1<v.length)for(u.style.display="",d=0;d<v.length;d++)g=document.createElement("option"),mxUtils.write(g,v[d].getAttribute("name")|| -mxResources.get("pageWithNumber",[d+1])),g.setAttribute("value",d),d==t&&g.setAttribute("selected","selected"),u.appendChild(g)}else b(q)};k.appendChild(u);k.appendChild(c);k.appendChild(b);k.appendChild(y);k.appendChild(g);c=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog(!0)});c.className="geBtn";m=null!=m?mxUtils.button(mxResources.get("ignore"),m):null;null!=m&&(m.className="geBtn");a.editor.cancelFirst?(h.appendChild(c),null!=m&&h.appendChild(m),h.appendChild(f),h.appendChild(d)): -(h.appendChild(d),h.appendChild(f),null!=m&&h.appendChild(m),h.appendChild(c));p.appendChild(h);p.appendChild(k);this.container=p},FindWindow=function(a,c,b,d,f){function h(a,b,c){if("object"===typeof b.value&&null!=b.value.attributes){b=b.value.attributes;for(var g=0;g<b.length;g++)if("label"!=b[g].nodeName){var d=mxUtils.trim(b[g].nodeValue.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")).toLowerCase();if(null==a&&d.substring(0,c.length)===c||null!=a&&a.test(d))return!0}}return!1}function k(){var a=p.model.getDescendants(p.model.getRoot()), -b=q.value.toLowerCase(),c=t.checked?new RegExp(b):null,d=null;g!=b&&(g=b,l=null);var n=null==l;if(0<b.length)for(var f=0;f<a.length;f++){var k=p.view.getState(a[f]);if(null!=k&&null!=k.cell.value&&(n||null==d)&&(p.model.isVertex(k.cell)||p.model.isEdge(k.cell))&&(p.isHtmlLabel(k.cell)?(w.innerHTML=p.getLabel(k.cell),label=mxUtils.extractTextWithWhitespace([w])):label=p.getLabel(k.cell),label=mxUtils.trim(label.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")).toLowerCase(),null==c&&(label.substring(0,b.length)=== -b||h(c,k.cell,b))||null!=c&&(c.test(label)||h(c,k.cell,b))))if(n){d=k;break}else null==d&&(d=k);n=n||k==l}null!=d?(l=d,p.scrollCellToVisible(l.cell),p.isEnabled()?p.setSelectionCell(l.cell):p.highlightCell(l.cell)):p.isEnabled()&&p.clearSelection();return 0==b.length||null!=d}var m=a.actions.get("find"),p=a.editor.graph,g=null,l=null,n=document.createElement("div");n.style.userSelect="none";n.style.overflow="hidden";n.style.padding="10px";n.style.height="100%";var q=document.createElement("input"); -q.setAttribute("placeholder",mxResources.get("find"));q.setAttribute("type","text");q.style.marginTop="4px";q.style.marginBottom="6px";q.style.width="200px";q.style.fontSize="12px";q.style.borderRadius="4px";q.style.padding="6px";n.appendChild(q);mxUtils.br(n);var t=document.createElement("input");t.setAttribute("type","checkbox");t.style.marginRight="4px";n.appendChild(t);mxUtils.write(n,mxResources.get("regularExpression"));var v=a.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000088250"); -v.style.position="relative";v.style.marginLeft="6px";v.style.top="-1px";n.appendChild(v);var w=document.createElement("div");mxUtils.br(n);v=mxUtils.button(mxResources.get("reset"),function(){q.value="";q.style.backgroundColor="";g=l=null;q.focus()});v.setAttribute("title",mxResources.get("reset"));v.style.marginTop="6px";v.style.marginRight="4px";v.className="geBtn";n.appendChild(v);v=mxUtils.button(mxResources.get("find"),function(){try{q.style.backgroundColor=k()?"":"#ffcfcf"}catch(y){a.handleError(y)}}); -v.setAttribute("title",mxResources.get("find")+" (Enter)");v.style.marginTop="6px";v.className="geBtn gePrimaryBtn";n.appendChild(v);mxEvent.addListener(q,"keyup",function(a){if(91==a.keyCode||17==a.keyCode)mxEvent.consume(a);else if(27==a.keyCode)m.funct();else if(g!=q.value.toLowerCase()||13==a.keyCode)try{q.style.backgroundColor=k()?"":"#ffcfcf"}catch(u){q.style.backgroundColor="#ffcfcf"}});mxEvent.addListener(n,"keydown",function(b){70==b.keyCode&&a.keyHandler.isControlDown(b)&&!mxEvent.isShiftDown(b)&& -(m.funct(),mxEvent.consume(b))});this.window=new mxWindow(mxResources.get("find"),n,c,b,d,f,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!1);this.window.setClosable(!0);this.window.addListener("show",mxUtils.bind(this,function(){this.window.isVisible()?(q.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?q.select():document.execCommand("selectAll",!1,null)):p.container.focus()}))},TagsWindow=function(a,c,b,d,f){var h= -a.editor.graph,k="tags",m=document.createElement("div");m.style.userSelect="none";m.style.overflow="hidden";m.style.padding="10px";m.style.height="100%";var p=document.createElement("input");p.setAttribute("placeholder",mxResources.get("allTags"));p.setAttribute("type","text");p.style.marginTop="4px";p.style.width="260px";p.style.fontSize="12px";p.style.borderRadius="4px";p.style.padding="6px";m.appendChild(p);if(!a.isOffline()||mxClient.IS_CHROMEAPP){p.style.width="240px";var g=a.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000046966"); -g.firstChild.style.marginBottom="6px";g.style.marginLeft="6px";m.appendChild(g)}mxEvent.addListener(p,"dblclick",function(){var b=new FilenameDialog(a,k,mxResources.get("ok"),mxUtils.bind(this,function(a){null!=a&&0<a.length&&(k=a)}),mxResources.get("enterPropertyName"));a.showDialog(b.container,300,80,!0,!0);b.init()});p.setAttribute("title",mxResources.get("doubleClickChangeProperty"));mxUtils.br(m);g=mxUtils.button(mxResources.get("hide"),function(){var a=h.getCellsForTags(p.value.split(" "),void 0, -k);h.setCellsVisible(a,!1)});g.setAttribute("title",mxResources.get("hide"));g.style.marginTop="8px";g.style.marginRight="4px";g.className="geBtn";m.appendChild(g);g=mxUtils.button(mxResources.get("show"),function(){var a=h.getCellsForTags(p.value.split(" "),void 0,k);h.setCellsVisible(a,!0);if(h.isEnabled())h.setSelectionCells(a);else for(var b=0;b<a.length;b++)h.highlightCell(a[b])});g.setAttribute("title",mxResources.get("show"));g.style.marginTop="8px";g.style.marginRight="4px";g.className="geBtn"; -m.appendChild(g);var l=a.actions.get("tags"),g=mxUtils.button(mxResources.get("close"),function(){l.funct()});g.setAttribute("title",mxResources.get("close")+" (Enter/Esc)");g.style.marginTop="8px";g.className="geBtn gePrimaryBtn";m.appendChild(g);mxEvent.addListener(p,"keyup",function(a){13!=a.keyCode&&27!=a.keyCode||l.funct()});this.window=new mxWindow(mxResources.get("tags"),m,c,b,d,f,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!1);this.window.setClosable(!0); -this.window.addListener("show",mxUtils.bind(this,function(){this.window.isVisible()?(p.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?p.select():document.execCommand("selectAll",!1,null)):h.container.focus()}))},AuthDialog=function(a,c,b,d){var f=document.createElement("div");f.style.textAlign="center";var h=document.createElement("p");h.style.fontSize="16pt";h.style.padding="0px";h.style.margin="0px";h.style.color="gray";mxUtils.write(h,mxResources.get("authorizationRequired")); +"text");d.style.marginTop="6px";d.style.width="600px";var g=mxUtils.button(mxResources.get("sendMessage"),function(){var b=n.value+(k.checked?"\nDiagram:\n"+mxUtils.getXml(a.getXmlFileData()):"")+"\nBrowser:\n"+navigator.userAgent;b.length>FeedbackDialog.maxAttachmentSize?a.alert(mxResources.get("drawingTooLarge")):(a.hideDialog(),a.spinner.spin(document.body)&&mxUtils.post(null!=FeedbackDialog.feedbackUrl?FeedbackDialog.feedbackUrl:"/email","email="+encodeURIComponent(d.value)+"&version="+encodeURIComponent(EditorUi.VERSION)+ +"&url="+encodeURIComponent(window.location.href)+"&body="+encodeURIComponent("Feedback:\n"+b),function(b){a.spinner.stop();200<=b.getStatus()&&299>=b.getStatus()?a.alert(mxResources.get("feedbackSent")):a.alert(mxResources.get("errorSendingFeedback"))},function(){a.spinner.stop();a.alert(mxResources.get("errorSendingFeedback"))}))});g.className="geBtn gePrimaryBtn";g.setAttribute("disabled","disabled");var e=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; +mxEvent.addListener(d,"change",function(){0<d.value.length&&0<e.test(d.value)?g.removeAttribute("disabled"):g.setAttribute("disabled","disabled")});mxEvent.addListener(d,"keyup",function(){0<d.value.length&&e.test(d.value)?g.removeAttribute("disabled"):g.setAttribute("disabled","disabled")});c.appendChild(d);this.init=function(){d.focus()};var k=document.createElement("input");k.setAttribute("type","checkbox");k.setAttribute("checked","checked");k.defaultChecked=!0;b=document.createElement("p");b.style.marginTop= +"14px";b.appendChild(k);var m=document.createElement("span");mxUtils.write(m," "+mxResources.get("includeCopyOfMyDiagram"));b.appendChild(m);mxEvent.addListener(m,"click",function(a){k.checked=!k.checked;mxEvent.consume(a)});c.appendChild(b);b=document.createElement("div");mxUtils.write(b,mxResources.get("feedback"));c.appendChild(b);var n=document.createElement("textarea");n.style.resize="none";n.style.width="600px";n.style.height="140px";n.style.marginTop="6px";n.setAttribute("placeholder",mxResources.get("commentsNotes")); +c.appendChild(n);b=document.createElement("div");b.style.marginTop="26px";b.style.textAlign="right";m=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});m.className="geBtn";a.editor.cancelFirst?(b.appendChild(m),b.appendChild(g)):(b.appendChild(g),b.appendChild(m));c.appendChild(b);this.container=c};FeedbackDialog.maxAttachmentSize=1E6; +var RevisionDialog=function(a,c,b){var d=document.createElement("div"),g=document.createElement("h3");g.style.marginTop="0px";mxUtils.write(g,mxResources.get("revisionHistory"));d.appendChild(g);var e=document.createElement("div");e.style.position="absolute";e.style.overflow="auto";e.style.width="170px";e.style.height="378px";d.appendChild(e);var k=document.createElement("div");k.style.position="absolute";k.style.border="1px solid lightGray";k.style.left="199px";k.style.width="470px";k.style.height= +"376px";k.style.overflow="hidden";mxEvent.disableContextMenu(k);d.appendChild(k);var m=new Graph(k);m.setTooltips(!1);m.setEnabled(!1);m.setPanning(!0);m.panningHandler.ignoreCell=!0;m.panningHandler.useLeftButtonForPanning=!0;m.minFitScale=null;m.maxFitScale=null;m.centerZoom=!0;var n=0,q=null,f=0,l=m.getGlobalVariable;m.getGlobalVariable=function(a){return"page"==a&&null!=q&&null!=q[f]?q[f].getAttribute("name"):"pagenumber"==a?f+1:l.apply(this,arguments)};m.getLinkForCell=function(){return null}; +Editor.MathJaxRender&&m.addListener(mxEvent.SIZE,mxUtils.bind(this,function(b,c){a.editor.graph.mathEnabled&&Editor.MathJaxRender(m.container)}));var p=new Spinner({lines:11,length:15,width:6,radius:10,corners:1,rotate:0,direction:1,color:"#000",speed:1.4,trail:60,shadow:!1,hwaccel:!1,className:"spinner",zIndex:2E9,top:"50%",left:"50%"}),t=a.getCurrentFile(),u=null,x=null,z=null,v=null,y=mxUtils.button("",function(){null!=z&&m.zoomIn()});y.className="geSprite geSprite-zoomin";y.setAttribute("title", +mxResources.get("zoomIn"));y.style.outline="none";y.style.border="none";y.style.margin="2px";y.setAttribute("disabled","disabled");mxUtils.setOpacity(y,20);var B=mxUtils.button("",function(){null!=z&&m.zoomOut()});B.className="geSprite geSprite-zoomout";B.setAttribute("title",mxResources.get("zoomOut"));B.style.outline="none";B.style.border="none";B.style.margin="2px";B.setAttribute("disabled","disabled");mxUtils.setOpacity(B,20);var H=mxUtils.button("",function(){null!=z&&(m.maxFitScale=8,m.fit(8), +m.center())});H.className="geSprite geSprite-fit";H.setAttribute("title",mxResources.get("fit"));H.style.outline="none";H.style.border="none";H.style.margin="2px";H.setAttribute("disabled","disabled");mxUtils.setOpacity(H,20);var F=mxUtils.button("",function(){null!=z&&(m.zoomActual(),m.center())});F.className="geSprite geSprite-actualsize";F.setAttribute("title",mxResources.get("actualSize"));F.style.outline="none";F.style.border="none";F.style.margin="2px";F.setAttribute("disabled","disabled"); +mxUtils.setOpacity(F,20);var D=document.createElement("div");D.style.position="absolute";D.style.textAlign="right";D.style.color="gray";D.style.marginTop="10px";D.style.backgroundColor="transparent";D.style.top="440px";D.style.right="32px";D.style.maxWidth="380px";D.style.cursor="default";var E=mxUtils.button(mxResources.get("download"),function(){if(null!=z){var b=a.getCurrentFile(),b=null!=b&&null!=b.getTitle()?b.getTitle():a.defaultFilename,c=mxUtils.getXml(z.documentElement);a.isLocalFileSave()? +a.saveLocalFile(c,b,"text/xml"):(c="undefined"===typeof pako?"&xml="+encodeURIComponent(c):"&data="+encodeURIComponent(a.editor.graph.compress(c)),(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(b)+"&format=xml"+c)).simulate(document,"_blank"))}});E.className="geBtn";E.setAttribute("disabled","disabled");var I=mxUtils.button(mxResources.get("restore"),function(){null!=z&&null!=v&&a.confirm(mxResources.get("areYouSure"),function(){null!=b?b(v):a.spinner.spin(document.body,mxResources.get("restoring"))&& +t.save(!0,function(b){a.spinner.stop();a.replaceFileData(v);a.hideDialog()},function(b){a.spinner.stop();a.editor.setStatus("");a.handleError(b,null!=b?mxResources.get("errorSavingFile"):null)})})});I.className="geBtn";I.setAttribute("disabled","disabled");var C=document.createElement("select");C.setAttribute("disabled","disabled");C.style.maxWidth="80px";C.style.position="relative";C.style.top="-2px";C.style.verticalAlign="bottom";C.style.marginRight="6px";C.style.display="none";var G=null;mxEvent.addListener(C, +"change",function(a){null!=G&&(G(a),mxEvent.consume(a))});var J=mxUtils.button(mxResources.get("open"),function(){null!=z&&(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(mxUtils.getXml(z.documentElement)),a.openLink(a.getUrl(),null,!0))});J.className="geBtn";J.setAttribute("disabled","disabled");null!=b&&(J.style.display="none");var A=mxUtils.button(mxResources.get("show"),function(){null!=x&&a.openLink(x.getUrl(C.selectedIndex))});A.className="geBtn gePrimaryBtn"; +A.setAttribute("disabled","disabled");null!=b&&(A.style.display="none",I.className="geBtn gePrimaryBtn");g=document.createElement("div");g.style.position="absolute";g.style.top="482px";g.style.width="640px";g.style.textAlign="right";var K=document.createElement("div");K.className="geToolbarContainer";K.style.backgroundColor="transparent";K.style.padding="2px";K.style.border="none";K.style.left="199px";K.style.top="442px";var M=null;if(null!=c&&0<c.length){k.style.cursor="move";var S=document.createElement("table"); +S.style.border="1px solid lightGray";S.style.borderCollapse="collapse";S.style.borderSpacing="0px";S.style.width="100%";var T=document.createElement("tbody"),U=(new Date).toDateString();null!=a.currentPage&&null!=a.pages&&(n=mxUtils.indexOf(a.pages,a.currentPage));for(var V=c.length-1;0<=V;V--){var W=function(b){var d=new Date(b.modifiedDate),l=null;if(0<=d.getTime()){var e=function(c){p.stop();var e=mxUtils.parseXml(c),g=a.editor.extractGraphModel(e.documentElement,!0);if(null!=g){var u=function(b){null!= +b&&(b=x(mxUtils.parseXml(a.editor.graph.decompress(mxUtils.getTextContent(b))).documentElement));return b},x=function(a){var b=a.getAttribute("background");if(null==b||""==b||b==mxConstants.NONE)b="#ffffff";k.style.backgroundColor=b;(new mxCodec(a.ownerDocument)).decode(a,m.getModel());m.maxFitScale=1;m.fit(8);m.center();return a};C.style.display="none";C.innerHTML="";z=e;v=c;q=parseSelectFunction=null;f=0;if("mxfile"==g.nodeName){e=g.getElementsByTagName("diagram");q=[];for(c=0;c<e.length;c++)q.push(e[c]); +f=Math.min(n,q.length-1);0<q.length&&u(q[f]);if(1<q.length)for(C.removeAttribute("disabled"),C.style.display="",c=0;c<q.length;c++)e=document.createElement("option"),mxUtils.write(e,q[c].getAttribute("name")||mxResources.get("pageWithNumber",[c+1])),e.setAttribute("value",c),c==f&&e.setAttribute("selected","selected"),C.appendChild(e);G=function(){try{var b=parseInt(C.value);u(q[b]);f=n=b}catch(L){C.value=n,a.handleError(L)}}}else x(g);c=b.lastModifyingUserName;null!=c&&20<c.length&&(c=c.substring(0, +20)+"...");D.innerHTML="";mxUtils.write(D,(null!=c?c+" ":"")+d.toLocaleDateString()+" "+d.toLocaleTimeString());D.setAttribute("title",l.getAttribute("title"));y.removeAttribute("disabled");B.removeAttribute("disabled");H.removeAttribute("disabled");F.removeAttribute("disabled");null!=t&&t.isRestricted()||(a.editor.graph.isEnabled()&&I.removeAttribute("disabled"),E.removeAttribute("disabled"),A.removeAttribute("disabled"),J.removeAttribute("disabled"));mxUtils.setOpacity(y,60);mxUtils.setOpacity(B, +60);mxUtils.setOpacity(H,60);mxUtils.setOpacity(F,60)}else C.style.display="none",C.innerHTML="",D.innerHTML="",mxUtils.write(D,mxResources.get("errorLoadingFile"))},l=document.createElement("tr");l.style.borderBottom="1px solid lightGray";l.style.fontSize="12px";l.style.cursor="pointer";var g=document.createElement("td");g.style.padding="6px";g.style.whiteSpace="nowrap";b==c[c.length-1]?mxUtils.write(g,mxResources.get("current")):d.toDateString()===U?mxUtils.write(g,d.toLocaleTimeString()):mxUtils.write(g, +d.toLocaleDateString()+" "+d.toLocaleTimeString());l.appendChild(g);l.setAttribute("title",d.toLocaleDateString()+" "+d.toLocaleTimeString()+" "+a.formatFileSize(parseInt(b.fileSize))+(null!=b.lastModifyingUserName?" "+b.lastModifyingUserName:""));mxEvent.addListener(l,"click",function(a){x!=b&&(p.stop(),null!=u&&(u.style.backgroundColor=""),x=b,u=l,u.style.backgroundColor="#ebf2f9",v=z=null,D.removeAttribute("title"),D.innerHTML=mxUtils.htmlEntities(mxResources.get("loading")+"..."),k.style.backgroundColor= +"#ffffff",m.getModel().clear(),I.setAttribute("disabled","disabled"),E.setAttribute("disabled","disabled"),y.setAttribute("disabled","disabled"),B.setAttribute("disabled","disabled"),F.setAttribute("disabled","disabled"),H.setAttribute("disabled","disabled"),J.setAttribute("disabled","disabled"),A.setAttribute("disabled","disabled"),C.setAttribute("disabled","disabled"),mxUtils.setOpacity(y,20),mxUtils.setOpacity(B,20),mxUtils.setOpacity(H,20),mxUtils.setOpacity(F,20),p.spin(k),b.getXml(function(a){if(x== +b)try{e(a)}catch(Q){D.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+": "+Q.message)}},function(a){p.stop();C.style.display="none";C.innerHTML="";D.innerHTML="";mxUtils.write(D,mxResources.get("errorLoadingFile"))}),mxEvent.consume(a))});mxEvent.addListener(l,"dblclick",function(a){A.click();window.getSelection?window.getSelection().removeAllRanges():document.selection&&document.selection.empty();mxEvent.consume(a)},!1);T.appendChild(l)}return l}(c[V]);null!=W&&V==c.length-1&&(M=W)}S.appendChild(T); +e.appendChild(S)}else null==t||null==a.drive&&t.constructor==window.DriveFile||null==a.dropbox&&t.constructor==window.DropboxFile?(k.style.display="none",K.style.display="none",mxUtils.write(e,mxResources.get("notAvailable"))):(k.style.display="none",K.style.display="none",mxUtils.write(e,mxResources.get("noRevisions")));this.init=function(){null!=M&&M.click()};e=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});e.className="geBtn";K.appendChild(C);K.appendChild(y);K.appendChild(B); +K.appendChild(F);K.appendChild(H);a.editor.cancelFirst?(g.appendChild(e),g.appendChild(E),g.appendChild(J),g.appendChild(I),g.appendChild(A)):(g.appendChild(E),g.appendChild(J),g.appendChild(I),g.appendChild(A),g.appendChild(e));d.appendChild(g);d.appendChild(K);d.appendChild(D);this.container=d},DraftDialog=function(a,c,b,d,g,e,k,m){var n=document.createElement("div"),q=document.createElement("div");q.style.marginTop="0px";q.style.whiteSpace="nowrap";q.style.overflow="auto";mxUtils.write(q,c);n.appendChild(q); +var f=document.createElement("div");f.style.position="absolute";f.style.border="1px solid lightGray";f.style.marginTop="10px";f.style.width="640px";f.style.top="46px";f.style.bottom="74px";f.style.overflow="hidden";mxEvent.disableContextMenu(f);n.appendChild(f);var l=new Graph(f);l.setEnabled(!1);l.setPanning(!0);l.panningHandler.ignoreCell=!0;l.panningHandler.useLeftButtonForPanning=!0;l.minFitScale=null;l.maxFitScale=null;l.centerZoom=!0;c=mxUtils.parseXml(b);var p=a.editor.extractGraphModel(c.documentElement, +!0),t=0,u=null,x=l.getGlobalVariable;l.getGlobalVariable=function(a){return"page"==a&&null!=u&&null!=u[t]?u[t].getAttribute("name"):"pagenumber"==a?t+1:x.apply(this,arguments)};l.getLinkForCell=function(){return null};c=mxUtils.button("",function(){l.zoomIn()});c.className="geSprite geSprite-zoomin";c.setAttribute("title",mxResources.get("zoomIn"));c.style.outline="none";c.style.border="none";c.style.margin="2px";mxUtils.setOpacity(c,60);b=mxUtils.button("",function(){l.zoomOut()});b.className="geSprite geSprite-zoomout"; +b.setAttribute("title",mxResources.get("zoomOut"));b.style.outline="none";b.style.border="none";b.style.margin="2px";mxUtils.setOpacity(b,60);q=mxUtils.button("",function(){l.maxFitScale=8;l.fit(8);l.center()});q.className="geSprite geSprite-fit";q.setAttribute("title",mxResources.get("fit"));q.style.outline="none";q.style.border="none";q.style.margin="2px";mxUtils.setOpacity(q,60);var z=mxUtils.button("",function(){l.zoomActual();l.center()});z.className="geSprite geSprite-actualsize";z.setAttribute("title", +mxResources.get("actualSize"));z.style.outline="none";z.style.border="none";z.style.margin="2px";mxUtils.setOpacity(z,60);g=mxUtils.button(k||mxResources.get("discard"),g);g.className="geBtn";var v=document.createElement("select");v.style.maxWidth="80px";v.style.position="relative";v.style.top="-2px";v.style.verticalAlign="bottom";v.style.marginRight="6px";v.style.display="none";d=mxUtils.button(e||mxResources.get("edit"),d);d.className="geBtn gePrimaryBtn";e=document.createElement("div");e.style.position= +"absolute";e.style.bottom="30px";e.style.width="640px";e.style.textAlign="right";k=document.createElement("div");k.className="geToolbarContainer";k.style.cssText="box-shadow:none !important;background-color:transparent;padding:2px;border-style:none !important;bottom:30px;";this.init=function(){function b(a){if(null!=a){var b=a.getAttribute("background");if(null==b||""==b||b==mxConstants.NONE)b="#ffffff";f.style.backgroundColor=b;(new mxCodec(a.ownerDocument)).decode(a,l.getModel());l.maxFitScale= +1;l.fit(8);l.center()}}function c(c){null!=c&&(c=b(mxUtils.parseXml(a.editor.graph.decompress(mxUtils.getTextContent(c))).documentElement));return c}mxEvent.addListener(v,"change",function(a){t=parseInt(v.value);c(u[t]);mxEvent.consume(a)});if("mxfile"==p.nodeName){var d=p.getElementsByTagName("diagram");u=[];for(var e=0;e<d.length;e++)u.push(d[e]);0<u.length&&c(u[t]);if(1<u.length)for(v.style.display="",e=0;e<u.length;e++)d=document.createElement("option"),mxUtils.write(d,u[e].getAttribute("name")|| +mxResources.get("pageWithNumber",[e+1])),d.setAttribute("value",e),e==t&&d.setAttribute("selected","selected"),v.appendChild(d)}else b(p)};k.appendChild(v);k.appendChild(c);k.appendChild(b);k.appendChild(z);k.appendChild(q);c=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog(!0)});c.className="geBtn";m=null!=m?mxUtils.button(mxResources.get("ignore"),m):null;null!=m&&(m.className="geBtn");a.editor.cancelFirst?(e.appendChild(c),null!=m&&e.appendChild(m),e.appendChild(g),e.appendChild(d)): +(e.appendChild(d),e.appendChild(g),null!=m&&e.appendChild(m),e.appendChild(c));n.appendChild(e);n.appendChild(k);this.container=n},FindWindow=function(a,c,b,d,g){function e(a,b,c){if("object"===typeof b.value&&null!=b.value.attributes){b=b.value.attributes;for(var f=0;f<b.length;f++)if("label"!=b[f].nodeName){var d=mxUtils.trim(b[f].nodeValue.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")).toLowerCase();if(null==a&&d.substring(0,c.length)===c||null!=a&&a.test(d))return!0}}return!1}function k(){var a=n.model.getDescendants(n.model.getRoot()), +b=p.value.toLowerCase(),c=t.checked?new RegExp(b):null,d=null;q!=b&&(q=b,f=null);var l=null==f;if(0<b.length)for(var g=0;g<a.length;g++){var u=n.view.getState(a[g]);if(null!=u&&null!=u.cell.value&&(l||null==d)&&(n.model.isVertex(u.cell)||n.model.isEdge(u.cell))&&(n.isHtmlLabel(u.cell)?(x.innerHTML=n.getLabel(u.cell),label=mxUtils.extractTextWithWhitespace([x])):label=n.getLabel(u.cell),label=mxUtils.trim(label.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")).toLowerCase(),null==c&&(label.substring(0,b.length)=== +b||e(c,u.cell,b))||null!=c&&(c.test(label)||e(c,u.cell,b))))if(l){d=u;break}else null==d&&(d=u);l=l||u==f}null!=d?(f=d,n.scrollCellToVisible(f.cell),n.isEnabled()?n.setSelectionCell(f.cell):n.highlightCell(f.cell)):n.isEnabled()&&n.clearSelection();return 0==b.length||null!=d}var m=a.actions.get("find"),n=a.editor.graph,q=null,f=null,l=document.createElement("div");l.style.userSelect="none";l.style.overflow="hidden";l.style.padding="10px";l.style.height="100%";var p=document.createElement("input"); +p.setAttribute("placeholder",mxResources.get("find"));p.setAttribute("type","text");p.style.marginTop="4px";p.style.marginBottom="6px";p.style.width="200px";p.style.fontSize="12px";p.style.borderRadius="4px";p.style.padding="6px";l.appendChild(p);mxUtils.br(l);var t=document.createElement("input");t.setAttribute("type","checkbox");t.style.marginRight="4px";l.appendChild(t);mxUtils.write(l,mxResources.get("regularExpression"));var u=a.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000088250"); +u.style.position="relative";u.style.marginLeft="6px";u.style.top="-1px";l.appendChild(u);var x=document.createElement("div");mxUtils.br(l);u=mxUtils.button(mxResources.get("reset"),function(){p.value="";p.style.backgroundColor="";q=f=null;p.focus()});u.setAttribute("title",mxResources.get("reset"));u.style.marginTop="6px";u.style.marginRight="4px";u.className="geBtn";l.appendChild(u);u=mxUtils.button(mxResources.get("find"),function(){try{p.style.backgroundColor=k()?"":"#ffcfcf"}catch(z){a.handleError(z)}}); +u.setAttribute("title",mxResources.get("find")+" (Enter)");u.style.marginTop="6px";u.className="geBtn gePrimaryBtn";l.appendChild(u);mxEvent.addListener(p,"keyup",function(a){if(91==a.keyCode||17==a.keyCode)mxEvent.consume(a);else if(27==a.keyCode)m.funct();else if(q!=p.value.toLowerCase()||13==a.keyCode)try{p.style.backgroundColor=k()?"":"#ffcfcf"}catch(v){p.style.backgroundColor="#ffcfcf"}});mxEvent.addListener(l,"keydown",function(b){70==b.keyCode&&a.keyHandler.isControlDown(b)&&!mxEvent.isShiftDown(b)&& +(m.funct(),mxEvent.consume(b))});this.window=new mxWindow(mxResources.get("find"),l,c,b,d,g,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!1);this.window.setClosable(!0);this.window.addListener("show",mxUtils.bind(this,function(){this.window.isVisible()?(p.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?p.select():document.execCommand("selectAll",!1,null)):n.container.focus()}))},TagsWindow=function(a,c,b,d,g){var e= +a.editor.graph,k="tags",m=document.createElement("div");m.style.userSelect="none";m.style.overflow="hidden";m.style.padding="10px";m.style.height="100%";var n=document.createElement("input");n.setAttribute("placeholder",mxResources.get("allTags"));n.setAttribute("type","text");n.style.marginTop="4px";n.style.width="260px";n.style.fontSize="12px";n.style.borderRadius="4px";n.style.padding="6px";m.appendChild(n);if(!a.isOffline()||mxClient.IS_CHROMEAPP){n.style.width="240px";var q=a.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000046966"); +q.firstChild.style.marginBottom="6px";q.style.marginLeft="6px";m.appendChild(q)}mxEvent.addListener(n,"dblclick",function(){var b=new FilenameDialog(a,k,mxResources.get("ok"),mxUtils.bind(this,function(a){null!=a&&0<a.length&&(k=a)}),mxResources.get("enterPropertyName"));a.showDialog(b.container,300,80,!0,!0);b.init()});n.setAttribute("title",mxResources.get("doubleClickChangeProperty"));mxUtils.br(m);q=mxUtils.button(mxResources.get("hide"),function(){var a=e.getCellsForTags(n.value.split(" "),void 0, +k);e.setCellsVisible(a,!1)});q.setAttribute("title",mxResources.get("hide"));q.style.marginTop="8px";q.style.marginRight="4px";q.className="geBtn";m.appendChild(q);q=mxUtils.button(mxResources.get("show"),function(){var a=e.getCellsForTags(n.value.split(" "),void 0,k);e.setCellsVisible(a,!0);if(e.isEnabled())e.setSelectionCells(a);else for(var b=0;b<a.length;b++)e.highlightCell(a[b])});q.setAttribute("title",mxResources.get("show"));q.style.marginTop="8px";q.style.marginRight="4px";q.className="geBtn"; +m.appendChild(q);var f=a.actions.get("tags"),q=mxUtils.button(mxResources.get("close"),function(){f.funct()});q.setAttribute("title",mxResources.get("close")+" (Enter/Esc)");q.style.marginTop="8px";q.className="geBtn gePrimaryBtn";m.appendChild(q);mxEvent.addListener(n,"keyup",function(a){13!=a.keyCode&&27!=a.keyCode||f.funct()});this.window=new mxWindow(mxResources.get("tags"),m,c,b,d,g,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!1);this.window.setClosable(!0); +this.window.addListener("show",mxUtils.bind(this,function(){this.window.isVisible()?(n.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?n.select():document.execCommand("selectAll",!1,null)):e.container.focus()}))},AuthDialog=function(a,c,b,d){var g=document.createElement("div");g.style.textAlign="center";var e=document.createElement("p");e.style.fontSize="16pt";e.style.padding="0px";e.style.margin="0px";e.style.color="gray";mxUtils.write(e,mxResources.get("authorizationRequired")); var k="Unknown",m=document.createElement("img");m.setAttribute("border","0");m.setAttribute("align","absmiddle");m.style.marginRight="10px";c==a.drive?(k=mxResources.get("googleDrive"),m.src=IMAGE_PATH+"/google-drive-logo-white.svg"):c==a.dropbox?(k=mxResources.get("dropbox"),m.src=IMAGE_PATH+"/dropbox-logo-white.svg"):c==a.oneDrive?(k=mxResources.get("oneDrive"),m.src=IMAGE_PATH+"/onedrive-logo-white.svg"):c==a.gitHub?(k=mxResources.get("github"),m.src=IMAGE_PATH+"/github-logo-white.svg"):c==a.trello&& -(k=mxResources.get("trello"),m.src=IMAGE_PATH+"/trello-logo-white.svg");a=document.createElement("p");mxUtils.write(a,mxResources.get("authorizeThisAppIn",[k]));var p=document.createElement("input");p.setAttribute("type","checkbox");k=mxUtils.button(mxResources.get("authorize"),function(){d(p.checked)});k.insertBefore(m,k.firstChild);k.style.marginTop="6px";k.className="geBigButton";f.appendChild(h);f.appendChild(a);f.appendChild(k);b&&(b=document.createElement("p"),b.style.marginTop="20px",b.appendChild(p), -h=document.createElement("span"),mxUtils.write(h," "+mxResources.get("rememberMe")),b.appendChild(h),f.appendChild(b),p.checked=!0,p.defaultChecked=!0,mxEvent.addListener(h,"click",function(a){p.checked=!p.checked;mxEvent.consume(a)}));this.container=f},MoreShapesDialog=function(a,c,b){b=null!=b?b:a.sidebar.entries;var d=document.createElement("div"),f=[];if(null!=a.sidebar.customEntries)for(var h=0;h<a.sidebar.customEntries.length;h++){for(var k=a.sidebar.customEntries[h],m={title:a.getResource(k.title), -entries:[]},p=0;p<k.entries.length;p++){var g=k.entries[p];m.entries.push({id:g.id,title:a.getResource(g.title),desc:a.getResource(g.desc),image:g.preview})}f.push(m)}for(h=0;h<b.length;h++)if(null==a.sidebar.enabledLibraries)f.push(b[h]);else{m={title:b[h].title,entries:[]};for(p=0;p<b[h].entries.length;p++)0<=mxUtils.indexOf(a.sidebar.enabledLibraries,b[h].entries[p].id)&&m.entries.push(b[h].entries[p]);0<m.entries.length&&f.push(m)}b=f;if(c){p=document.createElement("div");p.className="geDialogTitle"; -mxUtils.write(p,mxResources.get("shapes"));p.style.position="absolute";p.style.top="0px";p.style.left="0px";p.style.lineHeight="40px";p.style.height="40px";p.style.right="0px";mxClient.IS_QUIRKS&&(p.style.width="718px");var l=document.createElement("div"),n=document.createElement("div");l.style.position="absolute";l.style.top="40px";l.style.left="0px";l.style.width="202px";l.style.bottom="60px";l.style.overflow="auto";mxClient.IS_QUIRKS&&(l.style.height="437px",l.style.marginTop="1px");n.style.position= -"absolute";n.style.left="202px";n.style.right="0px";n.style.top="40px";n.style.bottom="60px";n.style.overflow="auto";n.style.borderLeft="1px solid rgb(211, 211, 211)";n.style.textAlign="center";mxClient.IS_QUIRKS&&(n.style.width=parseInt(p.style.width)-202+"px",n.style.height=l.style.height,n.style.marginTop=l.style.marginTop);var q=null,t=[],v=document.createElement("div");v.style.position="relative";v.style.left="0px";v.style.right="0px";for(h=0;h<b.length;h++)(function(b){var c=v.cloneNode(!1); -c.style.fontWeight="bold";c.style.backgroundColor="dark"==uiTheme?"#505759":"#e5e5e5";c.style.padding="6px 0px 6px 20px";mxUtils.write(c,b.title);l.appendChild(c);for(var g=0;g<b.entries.length;g++)(function(b){var c=v.cloneNode(!1);c.style.cursor="pointer";c.style.padding="4px 0px 4px 20px";var d=document.createElement("input");d.setAttribute("type","checkbox");d.checked=a.sidebar.isEntryVisible(b.id);d.defaultChecked=d.checked;c.appendChild(d);mxUtils.write(c," "+b.title);l.appendChild(c);var f= -function(a){if(null==a||"INPUT"!=mxEvent.getSource(a).nodeName){n.style.textAlign="center";n.style.padding="0px";n.style.color="";n.innerHTML="";if(null!=b.desc){var g=document.createElement("pre");g.style.boxSizing="border-box";g.style.fontFamily="inherit";g.style.margin="20px";g.style.right="0px";g.style.textAlign="left";mxUtils.write(g,b.desc);n.appendChild(g)}null!=b.imageCallback?b.imageCallback(n):null!=b.image?n.innerHTML+='<img border="0" src="'+b.image+'"/>':null==b.desc&&(n.style.padding= -"20px",n.style.color="rgb(179, 179, 179)",mxUtils.write(n,mxResources.get("noPreview")));null!=q&&(q.style.backgroundColor="");q=c;q.style.backgroundColor="dark"==uiTheme?"#505759":"#ebf2f9";null!=a&&mxEvent.consume(a)}};mxEvent.addListener(c,"click",f);mxEvent.addListener(c,"dblclick",function(a){d.checked=!d.checked;mxEvent.consume(a)});t.push(function(){return d.checked?b.id:null});0==h&&0==g&&f()})(b.entries[g])})(b[h]);d.style.padding="30px";d.appendChild(p);d.appendChild(l);d.appendChild(n); -b=document.createElement("div");b.className="geDialogFooter";b.style.position="absolute";b.style.paddingRight="16px";b.style.color="gray";b.style.left="0px";b.style.right="0px";b.style.bottom="0px";b.style.height="60px";b.style.lineHeight="52px";mxClient.IS_QUIRKS&&(b.style.width=p.style.width,b.style.paddingTop="12px");var w=document.createElement("input");w.setAttribute("type","checkbox");if(isLocalStorage||mxClient.IS_CHROMEAPP)p=document.createElement("span"),p.style.paddingRight="20px",p.appendChild(w), -mxUtils.write(p," "+mxResources.get("rememberThisSetting")),w.checked=!0,w.defaultChecked=!0,mxEvent.addListener(p,"click",function(a){mxEvent.getSource(a)!=w&&(w.checked=!w.checked,mxEvent.consume(a))}),mxClient.IS_QUIRKS&&(p.style.position="relative",p.style.top="-6px"),b.appendChild(p);p=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});p.className="geBtn";c=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();for(var b=[],c=0;c<t.length;c++){var g=t[c].apply(this, -arguments);null!=g&&b.push(g)}a.sidebar.showEntries(b.join(";"),w.checked,!0)});c.className="geBtn gePrimaryBtn"}else{var y=document.createElement("table"),p=document.createElement("tbody");d.style.height="100%";d.style.overflow="auto";m=document.createElement("tr");y.style.width="100%";c=document.createElement("td");var f=document.createElement("td"),k=document.createElement("td"),u=mxUtils.bind(this,function(b,c,g){var d=document.createElement("input");d.type="checkbox";y.appendChild(d);d.checked= -a.sidebar.isEntryVisible(g);var l=document.createElement("span");mxUtils.write(l,c);c=document.createElement("div");c.style.display="block";c.appendChild(d);c.appendChild(l);mxEvent.addListener(l,"click",function(a){d.checked=!d.checked;mxEvent.consume(a)});b.appendChild(c);return function(){return d.checked?g:null}});m.appendChild(c);m.appendChild(f);m.appendChild(k);p.appendChild(m);y.appendChild(p);for(var t=[],x=0,h=0;h<b.length;h++)for(p=0;p<b[h].entries.length;p++)x++;for(var F=[c,f,k],G=0, -h=0;h<b.length;h++)(function(a){for(var b=0;b<a.entries.length;b++){var c=a.entries[b];t.push(u(F[Math.floor(G/(x/3))],c.title,c.id));G++}})(b[h]);d.appendChild(y);b=document.createElement("div");b.style.marginTop="18px";b.style.textAlign="center";w=document.createElement("input");isLocalStorage&&(w.setAttribute("type","checkbox"),w.checked=!0,w.defaultChecked=!0,b.appendChild(w),p=document.createElement("span"),mxUtils.write(p," "+mxResources.get("rememberThisSetting")),b.appendChild(p),mxEvent.addListener(p, -"click",function(a){w.checked=!w.checked;mxEvent.consume(a)}));d.appendChild(b);p=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});p.className="geBtn";c=mxUtils.button(mxResources.get("apply"),function(){for(var b=["search"],c=0;c<t.length;c++){var g=t[c].apply(this,arguments);null!=g&&b.push(g)}a.sidebar.showEntries(0<b.length?b.join(";"):"",w.checked);a.hideDialog()});c.className="geBtn gePrimaryBtn";b=document.createElement("div");b.style.marginTop="26px";b.style.textAlign= -"right"}a.editor.cancelFirst?(b.appendChild(p),b.appendChild(c)):(b.appendChild(c),b.appendChild(p));d.appendChild(b);this.container=d},PluginsDialog=function(a){function c(){if(0==f.length)d.innerHTML=mxUtils.htmlEntities(mxResources.get("noPlugins"));else{d.innerHTML="";for(var b=0;b<f.length;b++){var g=document.createElement("span");g.style.whiteSpace="nowrap";var h=document.createElement("span");h.className="geSprite geSprite-delete";h.style.position="relative";h.style.cursor="pointer";h.style.top= -"5px";h.style.marginRight="4px";h.style.display="inline-block";g.appendChild(h);mxUtils.write(g,f[b]);d.appendChild(g);mxUtils.br(d);mxEvent.addListener(h,"click",function(b){return function(){a.confirm(window.parent.mxResources.get("delete")+' "'+f[b]+'"?',function(){f.splice(b,1);c()})}}(b))}}}var b=document.createElement("div"),d=document.createElement("div");d.style.height="120px";d.style.overflow="auto";var f=mxSettings.getPlugins().slice();b.appendChild(d);c();var h=mxUtils.button(mxResources.get("add"), -function(){var b="",g=urlParams.p;if(null!=g&&0<g.length){for(var d=g.split(";"),g=0;g<d.length;g++){var h=App.pluginRegistry[d[g]];null!=h&&(b+=h+";")}";"==b.charAt(b.length-1)&&(b=b.substring(0,b.length-1))}b=new FilenameDialog(a,b,mxResources.get("add"),function(a){if(null!=a&&0<a.length){d=a.split(";");for(a=0;a<d.length;a++){var b=d[a],g=App.pluginRegistry[b];null!=g&&(b=g);0<b.length&&0>mxUtils.indexOf(f,b)&&f.push(b)}c()}},mxResources.get("enterValue")+" ("+mxResources.get("url")+")");a.showDialog(b.container, -300,80,!0,!0);b.init()});h.className="geBtn";var k=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});k.className="geBtn";var m=mxUtils.button(mxResources.get("apply"),function(){mxSettings.setPlugins(f);mxSettings.save();a.hideDialog();a.alert(mxResources.get("restartForChangeRequired"))});m.className="geBtn gePrimaryBtn";var p=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://desk.draw.io/support/solutions/articles/16000056430")});p.className="geBtn";a.isOffline()&& -!mxClient.IS_CHROMEAPP&&(p.style.display="none");var g=document.createElement("div");g.style.marginTop="14px";g.style.textAlign="right";a.editor.cancelFirst?(g.appendChild(k),g.appendChild(p),g.appendChild(h),g.appendChild(m)):(g.appendChild(p),g.appendChild(h),g.appendChild(m),g.appendChild(k));b.appendChild(g);this.container=b},CropImageDialog=function(a,c,b){var d=document.createElement("div"),f=document.createElement("table"),h=document.createElement("tbody"),k=document.createElement("tr"),m= -document.createElement("td");m.style.whiteSpace="nowrap";m.setAttribute("colspan","2");mxUtils.write(m,mxResources.get("loading")+"...");k.appendChild(m);h.appendChild(k);var k=document.createElement("tr"),p=document.createElement("td"),g=document.createElement("td");f.style.paddingLeft="6px";mxUtils.write(p,mxResources.get("left")+":");var l=document.createElement("input");l.setAttribute("type","text");l.style.width="100px";l.value="0";this.init=function(){l.focus();l.select()};g.appendChild(l); -k.appendChild(p);k.appendChild(g);h.appendChild(k);k=document.createElement("tr");p=document.createElement("td");g=document.createElement("td");mxUtils.write(p,mxResources.get("top")+":");var n=document.createElement("input");n.setAttribute("type","text");n.style.width="100px";n.value="0";g.appendChild(n);k.appendChild(p);k.appendChild(g);h.appendChild(k);k=document.createElement("tr");p=document.createElement("td");g=document.createElement("td");mxUtils.write(p,mxResources.get("right")+":");var q= -document.createElement("input");q.setAttribute("type","text");q.style.width="100px";q.value="0";g.appendChild(q);k.appendChild(p);k.appendChild(g);h.appendChild(k);k=document.createElement("tr");p=document.createElement("td");g=document.createElement("td");mxUtils.write(p,mxResources.get("bottom")+":");var t=document.createElement("input");t.setAttribute("type","text");t.style.width="100px";t.value="0";g.appendChild(t);k.appendChild(p);k.appendChild(g);h.appendChild(k);k=document.createElement("tr"); -p=document.createElement("td");g=document.createElement("td");mxUtils.write(p,mxResources.get("circle")+":");k.appendChild(p);var v=document.createElement("input");v.setAttribute("type","checkbox");g.appendChild(v);k.appendChild(g);h.appendChild(k);f.appendChild(h);d.appendChild(f);var f=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()}),w=new Image,y=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();var c=document.createElement("canvas"),g=c.getContext("2d"),d=w.width, -f=w.height,h=parseInt(l.value),k=parseInt(n.value),d=Math.max(1,d-h-parseInt(q.value)),f=Math.max(1,f-k-parseInt(t.value));c.width=d;c.height=f;v.checked&&(g.fillStyle="#000000",g.arc(d/2,f/2,Math.min(d/2,f/2),0,2*Math.PI),g.fill(),g.globalCompositeOperation="source-in");g.drawImage(w,h,k,d,f,0,0,d,f);b(c.toDataURL())});y.setAttribute("disabled","disabled");w.onload=function(){y.removeAttribute("disabled");m.innerHTML="";mxUtils.write(m,mxResources.get("width")+": "+w.width+" "+mxResources.get("height")+ -": "+w.height)};w.src=c;mxEvent.addListener(d,"keypress",function(a){13==a.keyCode&&y.click()});c=document.createElement("div");c.style.marginTop="20px";c.style.textAlign="right";a.editor.cancelFirst?(c.appendChild(f),c.appendChild(y)):(c.appendChild(y),c.appendChild(f));d.appendChild(c);this.container=d},EditGeometryDialog=function(a,c){var b=a.editor.graph,d=1==c.length?b.getCellGeometry(c[0]):null,f=document.createElement("div"),h=document.createElement("table"),k=document.createElement("tbody"), -m=document.createElement("tr"),p=document.createElement("td"),g=document.createElement("td");h.style.paddingLeft="6px";mxUtils.write(p,mxResources.get("relative")+":");var l=document.createElement("input");l.setAttribute("type","checkbox");null!=d&&d.relative&&(l.setAttribute("checked","checked"),l.defaultChecked=!0);this.init=function(){l.focus()};g.appendChild(l);m.appendChild(p);m.appendChild(g);k.appendChild(m);m=document.createElement("tr");p=document.createElement("td");g=document.createElement("td"); -mxUtils.write(p,mxResources.get("left")+":");var n=document.createElement("input");n.setAttribute("type","text");n.style.width="100px";n.value=null!=d?d.x:"";g.appendChild(n);m.appendChild(p);m.appendChild(g);k.appendChild(m);m=document.createElement("tr");p=document.createElement("td");g=document.createElement("td");mxUtils.write(p,mxResources.get("top")+":");var q=document.createElement("input");q.setAttribute("type","text");q.style.width="100px";q.value=null!=d?d.y:"";g.appendChild(q);m.appendChild(p); -m.appendChild(g);k.appendChild(m);m=document.createElement("tr");p=document.createElement("td");g=document.createElement("td");mxUtils.write(p,mxResources.get("dx")+":");var t=document.createElement("input");t.setAttribute("type","text");t.style.width="100px";t.value=null!=d&&null!=d.offset?d.offset.x:"";g.appendChild(t);m.appendChild(p);m.appendChild(g);k.appendChild(m);m=document.createElement("tr");p=document.createElement("td");g=document.createElement("td");mxUtils.write(p,mxResources.get("dy")+ -":");var v=document.createElement("input");v.setAttribute("type","text");v.style.width="100px";v.value=null!=d&&null!=d.offset?d.offset.y:"";g.appendChild(v);m.appendChild(p);m.appendChild(g);k.appendChild(m);m=document.createElement("tr");p=document.createElement("td");g=document.createElement("td");mxUtils.write(p,mxResources.get("width")+":");var w=document.createElement("input");w.setAttribute("type","text");w.style.width="100px";w.value=null!=d?d.width:"";g.appendChild(w);m.appendChild(p);m.appendChild(g); -k.appendChild(m);m=document.createElement("tr");p=document.createElement("td");g=document.createElement("td");mxUtils.write(p,mxResources.get("height")+":");var y=document.createElement("input");y.setAttribute("type","text");y.style.width="100px";y.value=null!=d?d.height:"";g.appendChild(y);m.appendChild(p);m.appendChild(g);k.appendChild(m);m=document.createElement("tr");p=document.createElement("td");g=document.createElement("td");mxUtils.write(p,mxResources.get("rotation")+":");var u=document.createElement("input"); -u.setAttribute("type","text");u.style.width="100px";u.value=1==c.length?mxUtils.getValue(b.getCellStyle(c[0]),mxConstants.STYLE_ROTATION,0):"";g.appendChild(u);m.appendChild(p);m.appendChild(g);k.appendChild(m);h.appendChild(k);f.appendChild(h);d=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});d.className="geBtn";var x=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();b.getModel().beginUpdate();try{for(var g=0;g<c.length;g++){var d=b.getCellGeometry(c[g]);null!= -d&&(d=d.clone(),b.isCellMovable(c[g])&&(d.relative=l.checked,0<mxUtils.trim(n.value).length&&(d.x=Number(n.value)),0<mxUtils.trim(q.value).length&&(d.y=Number(q.value)),0<mxUtils.trim(t.value).length&&(null==d.offset&&(d.offset=new mxPoint),d.offset.x=Number(t.value)),0<mxUtils.trim(v.value).length&&(null==d.offset&&(d.offset=new mxPoint),d.offset.y=Number(v.value))),b.isCellResizable(c[g])&&(0<mxUtils.trim(w.value).length&&(d.width=Number(w.value)),0<mxUtils.trim(y.value).length&&(d.height=Number(y.value))), -b.getModel().setGeometry(c[g],d));0<mxUtils.trim(u.value).length&&b.setCellStyles(mxConstants.STYLE_ROTATION,Number(u.value),[c[g]])}}finally{b.getModel().endUpdate()}});x.className="geBtn gePrimaryBtn";mxEvent.addListener(f,"keypress",function(a){13==a.keyCode&&x.click()});h=document.createElement("div");h.style.marginTop="20px";h.style.textAlign="right";a.editor.cancelFirst?(h.appendChild(d),h.appendChild(x)):(h.appendChild(x),h.appendChild(d));f.appendChild(h);this.container=f},LibraryDialog=function(a, -c,b,d,f,h){function k(a){for(a=document.elementFromPoint(a.clientX,a.clientY);null!=a&&a.parentNode!=t;)a=a.parentNode;var b=null;if(null!=a)for(var c=t.firstChild,b=0;null!=c&&c!=a;)c=c.nextSibling,b++;return b}function m(b,c,g,d,n,f,h,u,q){try{if(null==c||"image/"==c.substring(0,6))if(null==b&&null!=h||null==w[b]){var p=function(){I.innerHTML="";I.style.cursor="pointer";I.style.whiteSpace="nowrap";I.style.textOverflow="ellipsis";mxUtils.write(I,null!=L.title&&0<L.title.length?L.title:mxResources.get("untitled")); -I.style.color=null==L.title||0==L.title.length?"#d0d0d0":""};t.style.backgroundImage="";v.style.display="none";var z=n,A=f;if(n>a.maxImageSize||f>a.maxImageSize){var C=Math.min(1,Math.min(a.maxImageSize/Math.max(1,n)),a.maxImageSize/Math.max(1,f));n*=C;f*=C}z>A?(A=Math.round(100*A/z),z=100):(z=Math.round(100*z/A),A=100);var H=document.createElement("div");H.setAttribute("draggable","true");H.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";H.style.position="relative";H.style.cursor="move"; -mxUtils.setPrefixedStyle(H.style,"transition","transform .1s ease-in-out");if(null!=b){var D=document.createElement("img");D.setAttribute("src",F.convert(b));D.style.width=z+"px";D.style.height=A+"px";D.style.margin="10px";D.style.paddingBottom=Math.floor((100-A)/2)+"px";D.style.paddingLeft=Math.floor((100-z)/2)+"px";H.appendChild(D)}else if(null!=h){var E=a.stringToCells(a.editor.graph.decompress(h.xml));0<E.length&&(a.sidebar.createThumb(E,100,100,H,null,!0,!1),H.firstChild.style.display=mxClient.IS_QUIRKS? -"inline":"inline-block",H.firstChild.style.cursor="")}var B=document.createElement("img");B.setAttribute("src",Editor.closeImage);B.setAttribute("border","0");B.setAttribute("title",mxResources.get("delete"));B.setAttribute("align","top");B.style.paddingTop="4px";B.style.position="absolute";B.style.marginLeft="-12px";B.style.zIndex="1";B.style.cursor="pointer";mxEvent.addListener(B,"dragstart",function(a){mxEvent.consume(a)});(function(a,b,c){mxEvent.addListener(B,"click",function(g){w[b]=null;for(var d= -0;d<l.length;d++)if(null!=l[d].data&&l[d].data==b||null!=l[d].xml&&null!=c&&l[d].xml==c.xml){l.splice(d,1);break}H.parentNode.removeChild(a);0==l.length&&(t.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')",v.style.display="");mxEvent.consume(g)});mxEvent.addListener(B,"dblclick",function(a){mxEvent.consume(a)})})(H,b,h);H.appendChild(B);H.style.marginBottom="30px";var I=document.createElement("div");I.style.position="absolute";I.style.boxSizing="border-box";I.style.bottom="-18px";I.style.left= -"10px";I.style.right="10px";I.style.backgroundColor="#ffffff";I.style.overflow="hidden";I.style.textAlign="center";var L=null;null!=b?(L={data:b,w:n,h:f,title:q},null!=u&&(L.aspect=u),w[b]=D,l.push(L)):null!=h&&(h.aspect="fixed",l.push(h),L=h);mxEvent.addListener(I,"keydown",function(a){13==a.keyCode&&null!=x&&(x(),x=null,mxEvent.consume(a))});p();H.appendChild(I);mxEvent.addListener(I,"mousedown",function(a){"true"!=I.getAttribute("contentEditable")&&mxEvent.consume(a)});E=function(b){if(mxClient.IS_IOS|| -mxClient.IS_QUIRKS||mxClient.IS_FF||!(null==document.documentMode||9<document.documentMode)){var c=new FilenameDialog(a,L.title||"",mxResources.get("ok"),function(a){null!=a&&(L.title=a,p())},mxResources.get("enterValue"));a.showDialog(c.container,300,80,!0,!0);c.init();mxEvent.consume(b)}else if("true"!=I.getAttribute("contentEditable")){null!=x&&(x(),x=null);if(null==L.title||0==L.title.length)I.innerHTML="";I.style.textOverflow="";I.style.whiteSpace="";I.style.cursor="text";I.style.color="";I.setAttribute("contentEditable", -"true");I.focus();document.execCommand("selectAll",!1,null);x=function(){I.removeAttribute("contentEditable");I.style.cursor="pointer";L.title=I.innerHTML;p()};mxEvent.consume(b)}};mxEvent.addListener(I,"click",E);mxEvent.addListener(H,"dblclick",E);t.appendChild(H);mxEvent.addListener(H,"dragstart",function(a){null==b&&null!=h&&(B.style.visibility="hidden",I.style.visibility="hidden");mxClient.IS_FF&&null!=h.xml&&a.dataTransfer.setData("Text",h.xml);y=k(a);mxClient.IS_GC&&(H.style.opacity="0.9"); -window.setTimeout(function(){mxUtils.setPrefixedStyle(H.style,"transform","scale(0.5,0.5)");mxUtils.setOpacity(H,30);B.style.visibility="";I.style.visibility=""},0)});mxEvent.addListener(H,"dragend",function(a){"hidden"==B.style.visibility&&(B.style.visibility="",I.style.visibility="");y=null;mxUtils.setOpacity(H,100);mxUtils.setPrefixedStyle(H.style,"transform",null)})}else G||(G=!0,a.handleError({message:mxResources.get("fileExists")}));else{n=!1;try{if(a.spinner.stop(),z=mxUtils.parseXml(b),"mxlibrary"== -z.documentElement.nodeName){A=JSON.parse(mxUtils.getTextContent(z.documentElement));if(null!=A&&0<A.length)for(var M=0;M<A.length;M++)null!=A[M].xml?m(null,null,0,0,0,0,A[M]):m(A[M].data,null,0,0,A[M].w,A[M].h,null,"fixed",A[M].title);n=!0}else if("mxfile"==z.documentElement.nodeName){for(var J=z.documentElement.getElementsByTagName("diagram"),M=0;M<J.length;M++){var A=mxUtils.getTextContent(J[M]),E=a.stringToCells(a.editor.graph.decompress(A)),S=a.editor.graph.getBoundingBoxFromGeometry(E);m(null, -null,0,0,0,0,{xml:A,w:S.width,h:S.height})}n=!0}}catch(ba){}n||(a.spinner.stop(),a.handleError({message:mxResources.get("errorLoadingFile")}))}}catch(ba){}return null}function p(a){a.dataTransfer.dropEffect=null!=y?"move":"copy";a.stopPropagation();a.preventDefault()}function g(b){b.stopPropagation();b.preventDefault();G=!1;u=k(b);if(null!=y)null!=u&&u<t.children.length?(l.splice(u>y?u-1:u,0,l.splice(y,1)[0]),t.insertBefore(t.children[y],t.children[u])):(l.push(l.splice(y,1)[0]),t.appendChild(t.children[y])); -else if(0<b.dataTransfer.files.length)a.importFiles(b.dataTransfer.files,0,0,a.maxImageSize,z(b));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")){var c=decodeURIComponent(b.dataTransfer.getData("text/uri-list"));(/(\.jpg)($|\?)/i.test(c)||/(\.png)($|\?)/i.test(c)||/(\.gif)($|\?)/i.test(c)||/(\.svg)($|\?)/i.test(c))&&a.loadImage(c,function(a){m(c,null,0,0,a.width,a.height);t.scrollTop=t.scrollHeight})}b.stopPropagation();b.preventDefault()}var l=[];b=document.createElement("div"); -b.style.height="100%";var n=document.createElement("div");n.style.whiteSpace="nowrap";n.style.height="40px";b.appendChild(n);mxUtils.write(n,mxResources.get("filename")+":");null==c&&(c=a.defaultLibraryName+".xml");var q=document.createElement("input");q.setAttribute("value",c);q.style.marginRight="20px";q.style.marginLeft="10px";q.style.width="500px";null==f||f.isRenamable()||q.setAttribute("disabled","true");this.init=function(){if(null==f||f.isRenamable())q.focus(),mxClient.IS_GC||mxClient.IS_FF|| -5<=document.documentMode||mxClient.IS_QUIRKS?q.select():document.execCommand("selectAll",!1,null)};n.appendChild(q);var t=document.createElement("div");t.style.borderWidth="1px 0px 1px 0px";t.style.borderColor="#d3d3d3";t.style.borderStyle="solid";t.style.marginTop="6px";t.style.overflow="auto";t.style.height="340px";t.style.backgroundPosition="center center";t.style.backgroundRepeat="no-repeat";0==l.length&&Graph.fileSupport&&(t.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')");var v= -document.createElement("div");v.style.position="absolute";v.style.width="640px";v.style.top="260px";v.style.textAlign="center";v.style.fontSize="22px";v.style.color="#a0c3ff";mxUtils.write(v,mxResources.get("dragImagesHere"));b.appendChild(v);var w={},y=null,u=null,x=null;c=function(a){"true"!=mxEvent.getSource(a).getAttribute("contentEditable")&&null!=x&&(x(),x=null,mxEvent.consume(a))};mxEvent.addListener(t,"mousedown",c);mxEvent.addListener(t,"pointerdown",c);mxEvent.addListener(t,"touchstart", -c);var F=new mxUrlConverter,G=!1;if(null!=d)for(c=0;c<d.length;c++)n=d[c],m(n.data,null,0,0,n.w,n.h,n,n.aspect,n.title);mxEvent.addListener(t,"dragleave",function(a){v.style.cursor="";for(var b=mxEvent.getSource(a);null!=b;){if(b==t||b==v){a.stopPropagation();a.preventDefault();break}b=b.parentNode}});var z=function(b){return function(c,g,d,l,n,f,h,u,q){null!=q&&(/(\.vsdx)($|\?)/i.test(q.name)||/(\.vssx)($|\?)/i.test(q.name))?a.importVisio(q,mxUtils.bind(this,function(c){a.spinner.stop();m(c,g,d, -l,n,f,h,"fixed",mxEvent.isAltDown(b)?null:h.substring(0,h.lastIndexOf(".")).replace(/_/g," "))})):null!=q&&!a.isOffline()&&(new XMLHttpRequest).upload&&a.isRemoteFileFormat(c,q.name)?a.parseFile(q,mxUtils.bind(this,function(c){4==c.readyState&&(a.spinner.stop(),200<=c.status&&299>=c.status&&(m(c.responseText,g,d,l,n,f,h,"fixed",mxEvent.isAltDown(b)?null:h.substring(0,h.lastIndexOf(".")).replace(/_/g," ")),t.scrollTop=t.scrollHeight))})):(m(c,g,d,l,n,f,h,"fixed",mxEvent.isAltDown(b)?null:h.substring(0, -h.lastIndexOf(".")).replace(/_/g," ")),t.scrollTop=t.scrollHeight)}};mxEvent.addListener(t,"dragover",p);mxEvent.addListener(t,"drop",g);mxEvent.addListener(v,"dragover",p);mxEvent.addListener(v,"drop",g);b.appendChild(t);d=document.createElement("div");d.style.textAlign="right";d.style.marginTop="20px";c=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog(!0)});c.setAttribute("id","btnCancel");c.className="geBtn";a.editor.cancelFirst&&d.appendChild(c);n=mxUtils.button(mxResources.get("export"), -function(){var b=a.createLibraryDataFromImages(l),c=q.value;/(\.xml)$/i.test(c)||(c+=".xml");a.isLocalFileSave()?a.saveLocalFile(b,c,"text/xml",null,null,!0):(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(c)+"&format=xml&xml="+encodeURIComponent(b))).simulate(document,"_blank")});n.setAttribute("id","btnDownload");n.className="geBtn";d.appendChild(n);var A=document.createElement("input");A.setAttribute("multiple","multiple");A.setAttribute("type","file");null==document.documentMode&&(mxEvent.addListener(A, -"change",function(b){G=!1;a.importFiles(A.files,0,0,a.maxImageSize,function(a,c,g,d,l,n,f,h,u){z(b)(a,c,g,d,l,n,f,h,u);A.value=""});t.scrollTop=t.scrollHeight}),n=mxUtils.button(mxResources.get("import"),function(){null!=x&&(x(),x=null);A.click()}),n.setAttribute("id","btnAddImage"),n.className="geBtn",d.appendChild(n));n=mxUtils.button(mxResources.get("addImageUrl"),function(){null!=x&&(x(),x=null);a.showImageDialog(mxResources.get("addImageUrl"),"",function(a,b,c){G=!1;if(null!=a){if("data:image/"== -a.substring(0,11)){var g=a.indexOf(",");0<g&&(a=a.substring(0,g)+";base64,"+a.substring(g+1))}m(a,null,0,0,b,c);t.scrollTop=t.scrollHeight}})});n.setAttribute("id","btnAddImageUrl");n.className="geBtn";d.appendChild(n);this.saveBtnClickHandler=function(b,c,g,d){a.saveLibrary(b,c,g,d)};n=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(){null!=x&&(x(),x=null);this.saveBtnClickHandler(q.value,l,f,h)}));n.setAttribute("id","btnSave");n.className="geBtn gePrimaryBtn";d.appendChild(n); -a.editor.cancelFirst||d.appendChild(c);b.appendChild(d);this.container=b},EditShapeDialog=function(a,c,b,d,f){d=null!=d?d:300;f=null!=f?f:120;var h,k,m=document.createElement("table"),p=document.createElement("tbody");m.style.cellPadding="4px";h=document.createElement("tr");k=document.createElement("td");k.setAttribute("colspan","2");k.style.fontSize="10pt";mxUtils.write(k,b);h.appendChild(k);p.appendChild(h);h=document.createElement("tr");k=document.createElement("td");var g=document.createElement("textarea"); -g.style.outline="none";g.style.resize="none";g.style.width=d-200+"px";g.style.height=f+"px";this.textarea=g;this.init=function(){g.focus();g.scrollTop=0};k.appendChild(g);h.appendChild(k);k=document.createElement("td");b=document.createElement("div");b.style.position="relative";b.style.border="1px solid gray";b.style.top="6px";b.style.width="200px";b.style.height=f+4+"px";b.style.overflow="hidden";b.style.marginBottom="16px";mxEvent.disableContextMenu(b);k.appendChild(b);var l=new Graph(b);l.setEnabled(!1); -var n=a.editor.graph.cloneCell(c);l.addCells([n]);b=l.view.getState(n);var q="";null!=b.shape&&null!=b.shape.stencil&&(q=mxUtils.getPrettyXml(b.shape.stencil.desc));mxUtils.write(g,q||"");b=l.getGraphBounds();f=Math.min(160/b.width,(f-40)/b.height);l.view.scaleAndTranslate(f,20/f-b.x,20/f-b.y);h.appendChild(k);p.appendChild(h);h=document.createElement("tr");k=document.createElement("td");k.setAttribute("colspan","2");k.style.paddingTop="2px";k.style.whiteSpace="nowrap";k.setAttribute("align","right"); -f=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});f.className="geBtn";a.editor.cancelFirst&&k.appendChild(f);a.isOffline()||(b=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://desk.draw.io/support/solutions/articles/16000052874")}),b.className="geBtn",k.appendChild(b));var t=function(b,c,d){var l=g.value,n=mxUtils.parseXml(l),l=mxUtils.getPrettyXml(n.documentElement),n=n.documentElement.getElementsByTagName("parsererror");if(null!=n&&0<n.length)a.showError(mxResources.get("error"), -mxResources.get("containsValidationErrors"),mxResources.get("ok"));else if(d&&a.hideDialog(),n=!b.model.contains(c),!d||n||l!=q){l=a.editor.graph.compress(l);b.getModel().beginUpdate();try{if(n){var f=a.editor.graph.getInsertPoint();c.geometry.x=f.x;c.geometry.y=f.y;b.addCell(c)}b.setCellStyles(mxConstants.STYLE_SHAPE,"stencil("+l+")",[c])}catch(G){throw G;}finally{b.getModel().endUpdate()}n&&b.setSelectionCell(c)}};b=mxUtils.button(mxResources.get("preview"),function(){t(l,n,!1)});b.className="geBtn"; -k.appendChild(b);b=mxUtils.button(mxResources.get("apply"),function(){t(a.editor.graph,c,!0)});b.className="geBtn gePrimaryBtn";k.appendChild(b);a.editor.cancelFirst||k.appendChild(f);h.appendChild(k);p.appendChild(h);m.appendChild(p);this.container=m},CustomDialog=function(a,c,b,d,f,h,k,m){var p=document.createElement("div");p.appendChild(c);c=document.createElement("div");c.style.marginTop="16px";c.style.textAlign="center";null!=k&&c.appendChild(k);k=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog(); -null!=d&&d()});k.className="geBtn";m&&(k.style.display="none");a.editor.cancelFirst&&c.appendChild(k);a.isOffline()||null==h||(m=mxUtils.button(mxResources.get("help"),function(){a.openLink(h)}),m.className="geBtn",c.appendChild(m));f=mxUtils.button(f||mxResources.get("ok"),function(){a.hideDialog();null!=b&&b()});c.appendChild(f);f.className="geBtn gePrimaryBtn";a.editor.cancelFirst||c.appendChild(k);p.appendChild(c);this.cancelBtn=k;this.okButton=f;this.container=p},TemplatesDialog=function(){var a= +(k=mxResources.get("trello"),m.src=IMAGE_PATH+"/trello-logo-white.svg");a=document.createElement("p");mxUtils.write(a,mxResources.get("authorizeThisAppIn",[k]));var n=document.createElement("input");n.setAttribute("type","checkbox");k=mxUtils.button(mxResources.get("authorize"),function(){d(n.checked)});k.insertBefore(m,k.firstChild);k.style.marginTop="6px";k.className="geBigButton";g.appendChild(e);g.appendChild(a);g.appendChild(k);b&&(b=document.createElement("p"),b.style.marginTop="20px",b.appendChild(n), +e=document.createElement("span"),mxUtils.write(e," "+mxResources.get("rememberMe")),b.appendChild(e),g.appendChild(b),n.checked=!0,n.defaultChecked=!0,mxEvent.addListener(e,"click",function(a){n.checked=!n.checked;mxEvent.consume(a)}));this.container=g},MoreShapesDialog=function(a,c,b){b=null!=b?b:a.sidebar.entries;var d=document.createElement("div"),g=[];if(null!=a.sidebar.customEntries)for(var e=0;e<a.sidebar.customEntries.length;e++){for(var k=a.sidebar.customEntries[e],m={title:a.getResource(k.title), +entries:[]},n=0;n<k.entries.length;n++){var q=k.entries[n];m.entries.push({id:q.id,title:a.getResource(q.title),desc:a.getResource(q.desc),image:q.preview})}g.push(m)}for(e=0;e<b.length;e++)if(null==a.sidebar.enabledLibraries)g.push(b[e]);else{m={title:b[e].title,entries:[]};for(n=0;n<b[e].entries.length;n++)0<=mxUtils.indexOf(a.sidebar.enabledLibraries,b[e].entries[n].id)&&m.entries.push(b[e].entries[n]);0<m.entries.length&&g.push(m)}b=g;if(c){n=document.createElement("div");n.className="geDialogTitle"; +mxUtils.write(n,mxResources.get("shapes"));n.style.position="absolute";n.style.top="0px";n.style.left="0px";n.style.lineHeight="40px";n.style.height="40px";n.style.right="0px";mxClient.IS_QUIRKS&&(n.style.width="718px");var f=document.createElement("div"),l=document.createElement("div");f.style.position="absolute";f.style.top="40px";f.style.left="0px";f.style.width="202px";f.style.bottom="60px";f.style.overflow="auto";mxClient.IS_QUIRKS&&(f.style.height="437px",f.style.marginTop="1px");l.style.position= +"absolute";l.style.left="202px";l.style.right="0px";l.style.top="40px";l.style.bottom="60px";l.style.overflow="auto";l.style.borderLeft="1px solid rgb(211, 211, 211)";l.style.textAlign="center";mxClient.IS_QUIRKS&&(l.style.width=parseInt(n.style.width)-202+"px",l.style.height=f.style.height,l.style.marginTop=f.style.marginTop);var p=null,t=[],u=document.createElement("div");u.style.position="relative";u.style.left="0px";u.style.right="0px";for(e=0;e<b.length;e++)(function(b){var c=u.cloneNode(!1); +c.style.fontWeight="bold";c.style.backgroundColor="dark"==uiTheme?"#505759":"#e5e5e5";c.style.padding="6px 0px 6px 20px";mxUtils.write(c,b.title);f.appendChild(c);for(var d=0;d<b.entries.length;d++)(function(b){var c=u.cloneNode(!1);c.style.cursor="pointer";c.style.padding="4px 0px 4px 20px";var g=document.createElement("input");g.setAttribute("type","checkbox");g.checked=a.sidebar.isEntryVisible(b.id);g.defaultChecked=g.checked;c.appendChild(g);mxUtils.write(c," "+b.title);f.appendChild(c);var v= +function(a){if(null==a||"INPUT"!=mxEvent.getSource(a).nodeName){l.style.textAlign="center";l.style.padding="0px";l.style.color="";l.innerHTML="";if(null!=b.desc){var f=document.createElement("pre");f.style.boxSizing="border-box";f.style.fontFamily="inherit";f.style.margin="20px";f.style.right="0px";f.style.textAlign="left";mxUtils.write(f,b.desc);l.appendChild(f)}null!=b.imageCallback?b.imageCallback(l):null!=b.image?l.innerHTML+='<img border="0" src="'+b.image+'"/>':null==b.desc&&(l.style.padding= +"20px",l.style.color="rgb(179, 179, 179)",mxUtils.write(l,mxResources.get("noPreview")));null!=p&&(p.style.backgroundColor="");p=c;p.style.backgroundColor="dark"==uiTheme?"#505759":"#ebf2f9";null!=a&&mxEvent.consume(a)}};mxEvent.addListener(c,"click",v);mxEvent.addListener(c,"dblclick",function(a){g.checked=!g.checked;mxEvent.consume(a)});t.push(function(){return g.checked?b.id:null});0==e&&0==d&&v()})(b.entries[d])})(b[e]);d.style.padding="30px";d.appendChild(n);d.appendChild(f);d.appendChild(l); +b=document.createElement("div");b.className="geDialogFooter";b.style.position="absolute";b.style.paddingRight="16px";b.style.color="gray";b.style.left="0px";b.style.right="0px";b.style.bottom="0px";b.style.height="60px";b.style.lineHeight="52px";mxClient.IS_QUIRKS&&(b.style.width=n.style.width,b.style.paddingTop="12px");var x=document.createElement("input");x.setAttribute("type","checkbox");if(isLocalStorage||mxClient.IS_CHROMEAPP)n=document.createElement("span"),n.style.paddingRight="20px",n.appendChild(x), +mxUtils.write(n," "+mxResources.get("rememberThisSetting")),x.checked=!0,x.defaultChecked=!0,mxEvent.addListener(n,"click",function(a){mxEvent.getSource(a)!=x&&(x.checked=!x.checked,mxEvent.consume(a))}),mxClient.IS_QUIRKS&&(n.style.position="relative",n.style.top="-6px"),b.appendChild(n);n=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});n.className="geBtn";c=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();for(var b=[],c=0;c<t.length;c++){var f=t[c].apply(this, +arguments);null!=f&&b.push(f)}a.sidebar.showEntries(b.join(";"),x.checked,!0)});c.className="geBtn gePrimaryBtn"}else{var z=document.createElement("table"),n=document.createElement("tbody");d.style.height="100%";d.style.overflow="auto";m=document.createElement("tr");z.style.width="100%";c=document.createElement("td");var g=document.createElement("td"),k=document.createElement("td"),v=mxUtils.bind(this,function(b,c,f){var d=document.createElement("input");d.type="checkbox";z.appendChild(d);d.checked= +a.sidebar.isEntryVisible(f);var l=document.createElement("span");mxUtils.write(l,c);c=document.createElement("div");c.style.display="block";c.appendChild(d);c.appendChild(l);mxEvent.addListener(l,"click",function(a){d.checked=!d.checked;mxEvent.consume(a)});b.appendChild(c);return function(){return d.checked?f:null}});m.appendChild(c);m.appendChild(g);m.appendChild(k);n.appendChild(m);z.appendChild(n);for(var t=[],y=0,e=0;e<b.length;e++)for(n=0;n<b[e].entries.length;n++)y++;for(var B=[c,g,k],H=0, +e=0;e<b.length;e++)(function(a){for(var b=0;b<a.entries.length;b++){var c=a.entries[b];t.push(v(B[Math.floor(H/(y/3))],c.title,c.id));H++}})(b[e]);d.appendChild(z);b=document.createElement("div");b.style.marginTop="18px";b.style.textAlign="center";x=document.createElement("input");isLocalStorage&&(x.setAttribute("type","checkbox"),x.checked=!0,x.defaultChecked=!0,b.appendChild(x),n=document.createElement("span"),mxUtils.write(n," "+mxResources.get("rememberThisSetting")),b.appendChild(n),mxEvent.addListener(n, +"click",function(a){x.checked=!x.checked;mxEvent.consume(a)}));d.appendChild(b);n=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});n.className="geBtn";c=mxUtils.button(mxResources.get("apply"),function(){for(var b=["search"],c=0;c<t.length;c++){var f=t[c].apply(this,arguments);null!=f&&b.push(f)}a.sidebar.showEntries(0<b.length?b.join(";"):"",x.checked);a.hideDialog()});c.className="geBtn gePrimaryBtn";b=document.createElement("div");b.style.marginTop="26px";b.style.textAlign= +"right"}a.editor.cancelFirst?(b.appendChild(n),b.appendChild(c)):(b.appendChild(c),b.appendChild(n));d.appendChild(b);this.container=d},PluginsDialog=function(a){function c(){if(0==g.length)d.innerHTML=mxUtils.htmlEntities(mxResources.get("noPlugins"));else{d.innerHTML="";for(var b=0;b<g.length;b++){var l=document.createElement("span");l.style.whiteSpace="nowrap";var p=document.createElement("span");p.className="geSprite geSprite-delete";p.style.position="relative";p.style.cursor="pointer";p.style.top= +"5px";p.style.marginRight="4px";p.style.display="inline-block";l.appendChild(p);mxUtils.write(l,g[b]);d.appendChild(l);mxUtils.br(d);mxEvent.addListener(p,"click",function(b){return function(){a.confirm(window.parent.mxResources.get("delete")+' "'+g[b]+'"?',function(){g.splice(b,1);c()})}}(b))}}}var b=document.createElement("div"),d=document.createElement("div");d.style.height="120px";d.style.overflow="auto";var g=mxSettings.getPlugins().slice();b.appendChild(d);c();var e=mxUtils.button(mxResources.get("add"), +function(){var b="",d=urlParams.p;if(null!=d&&0<d.length){for(var p=d.split(";"),d=0;d<p.length;d++){var e=App.pluginRegistry[p[d]];null!=e&&(b+=e+";")}";"==b.charAt(b.length-1)&&(b=b.substring(0,b.length-1))}b=new FilenameDialog(a,b,mxResources.get("add"),function(a){if(null!=a&&0<a.length){p=a.split(";");for(a=0;a<p.length;a++){var b=p[a],f=App.pluginRegistry[b];null!=f&&(b=f);0<b.length&&0>mxUtils.indexOf(g,b)&&g.push(b)}c()}},mxResources.get("enterValue")+" ("+mxResources.get("url")+")");a.showDialog(b.container, +300,80,!0,!0);b.init()});e.className="geBtn";var k=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});k.className="geBtn";var m=mxUtils.button(mxResources.get("apply"),function(){mxSettings.setPlugins(g);mxSettings.save();a.hideDialog();a.alert(mxResources.get("restartForChangeRequired"))});m.className="geBtn gePrimaryBtn";var n=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://desk.draw.io/support/solutions/articles/16000056430")});n.className="geBtn";a.isOffline()&& +!mxClient.IS_CHROMEAPP&&(n.style.display="none");var q=document.createElement("div");q.style.marginTop="14px";q.style.textAlign="right";a.editor.cancelFirst?(q.appendChild(k),q.appendChild(n),q.appendChild(e),q.appendChild(m)):(q.appendChild(n),q.appendChild(e),q.appendChild(m),q.appendChild(k));b.appendChild(q);this.container=b},CropImageDialog=function(a,c,b){var d=document.createElement("div"),g=document.createElement("table"),e=document.createElement("tbody"),k=document.createElement("tr"),m= +document.createElement("td");m.style.whiteSpace="nowrap";m.setAttribute("colspan","2");mxUtils.write(m,mxResources.get("loading")+"...");k.appendChild(m);e.appendChild(k);var k=document.createElement("tr"),n=document.createElement("td"),q=document.createElement("td");g.style.paddingLeft="6px";mxUtils.write(n,mxResources.get("left")+":");var f=document.createElement("input");f.setAttribute("type","text");f.style.width="100px";f.value="0";this.init=function(){f.focus();f.select()};q.appendChild(f); +k.appendChild(n);k.appendChild(q);e.appendChild(k);k=document.createElement("tr");n=document.createElement("td");q=document.createElement("td");mxUtils.write(n,mxResources.get("top")+":");var l=document.createElement("input");l.setAttribute("type","text");l.style.width="100px";l.value="0";q.appendChild(l);k.appendChild(n);k.appendChild(q);e.appendChild(k);k=document.createElement("tr");n=document.createElement("td");q=document.createElement("td");mxUtils.write(n,mxResources.get("right")+":");var p= +document.createElement("input");p.setAttribute("type","text");p.style.width="100px";p.value="0";q.appendChild(p);k.appendChild(n);k.appendChild(q);e.appendChild(k);k=document.createElement("tr");n=document.createElement("td");q=document.createElement("td");mxUtils.write(n,mxResources.get("bottom")+":");var t=document.createElement("input");t.setAttribute("type","text");t.style.width="100px";t.value="0";q.appendChild(t);k.appendChild(n);k.appendChild(q);e.appendChild(k);k=document.createElement("tr"); +n=document.createElement("td");q=document.createElement("td");mxUtils.write(n,mxResources.get("circle")+":");k.appendChild(n);var u=document.createElement("input");u.setAttribute("type","checkbox");q.appendChild(u);k.appendChild(q);e.appendChild(k);g.appendChild(e);d.appendChild(g);var g=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()}),x=new Image,z=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();var c=document.createElement("canvas"),d=c.getContext("2d"),e=x.width, +g=x.height,k=parseInt(f.value),m=parseInt(l.value),e=Math.max(1,e-k-parseInt(p.value)),g=Math.max(1,g-m-parseInt(t.value));c.width=e;c.height=g;u.checked&&(d.fillStyle="#000000",d.arc(e/2,g/2,Math.min(e/2,g/2),0,2*Math.PI),d.fill(),d.globalCompositeOperation="source-in");d.drawImage(x,k,m,e,g,0,0,e,g);b(c.toDataURL())});z.setAttribute("disabled","disabled");x.onload=function(){z.removeAttribute("disabled");m.innerHTML="";mxUtils.write(m,mxResources.get("width")+": "+x.width+" "+mxResources.get("height")+ +": "+x.height)};x.src=c;mxEvent.addListener(d,"keypress",function(a){13==a.keyCode&&z.click()});c=document.createElement("div");c.style.marginTop="20px";c.style.textAlign="right";a.editor.cancelFirst?(c.appendChild(g),c.appendChild(z)):(c.appendChild(z),c.appendChild(g));d.appendChild(c);this.container=d},EditGeometryDialog=function(a,c){var b=a.editor.graph,d=1==c.length?b.getCellGeometry(c[0]):null,g=document.createElement("div"),e=document.createElement("table"),k=document.createElement("tbody"), +m=document.createElement("tr"),n=document.createElement("td"),q=document.createElement("td");e.style.paddingLeft="6px";mxUtils.write(n,mxResources.get("relative")+":");var f=document.createElement("input");f.setAttribute("type","checkbox");null!=d&&d.relative&&(f.setAttribute("checked","checked"),f.defaultChecked=!0);this.init=function(){f.focus()};q.appendChild(f);m.appendChild(n);m.appendChild(q);k.appendChild(m);m=document.createElement("tr");n=document.createElement("td");q=document.createElement("td"); +mxUtils.write(n,mxResources.get("left")+":");var l=document.createElement("input");l.setAttribute("type","text");l.style.width="100px";l.value=null!=d?d.x:"";q.appendChild(l);m.appendChild(n);m.appendChild(q);k.appendChild(m);m=document.createElement("tr");n=document.createElement("td");q=document.createElement("td");mxUtils.write(n,mxResources.get("top")+":");var p=document.createElement("input");p.setAttribute("type","text");p.style.width="100px";p.value=null!=d?d.y:"";q.appendChild(p);m.appendChild(n); +m.appendChild(q);k.appendChild(m);m=document.createElement("tr");n=document.createElement("td");q=document.createElement("td");mxUtils.write(n,mxResources.get("dx")+":");var t=document.createElement("input");t.setAttribute("type","text");t.style.width="100px";t.value=null!=d&&null!=d.offset?d.offset.x:"";q.appendChild(t);m.appendChild(n);m.appendChild(q);k.appendChild(m);m=document.createElement("tr");n=document.createElement("td");q=document.createElement("td");mxUtils.write(n,mxResources.get("dy")+ +":");var u=document.createElement("input");u.setAttribute("type","text");u.style.width="100px";u.value=null!=d&&null!=d.offset?d.offset.y:"";q.appendChild(u);m.appendChild(n);m.appendChild(q);k.appendChild(m);m=document.createElement("tr");n=document.createElement("td");q=document.createElement("td");mxUtils.write(n,mxResources.get("width")+":");var x=document.createElement("input");x.setAttribute("type","text");x.style.width="100px";x.value=null!=d?d.width:"";q.appendChild(x);m.appendChild(n);m.appendChild(q); +k.appendChild(m);m=document.createElement("tr");n=document.createElement("td");q=document.createElement("td");mxUtils.write(n,mxResources.get("height")+":");var z=document.createElement("input");z.setAttribute("type","text");z.style.width="100px";z.value=null!=d?d.height:"";q.appendChild(z);m.appendChild(n);m.appendChild(q);k.appendChild(m);m=document.createElement("tr");n=document.createElement("td");q=document.createElement("td");mxUtils.write(n,mxResources.get("rotation")+":");var v=document.createElement("input"); +v.setAttribute("type","text");v.style.width="100px";v.value=1==c.length?mxUtils.getValue(b.getCellStyle(c[0]),mxConstants.STYLE_ROTATION,0):"";q.appendChild(v);m.appendChild(n);m.appendChild(q);k.appendChild(m);e.appendChild(k);g.appendChild(e);d=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});d.className="geBtn";var y=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();b.getModel().beginUpdate();try{for(var d=0;d<c.length;d++){var e=b.getCellGeometry(c[d]);null!= +e&&(e=e.clone(),b.isCellMovable(c[d])&&(e.relative=f.checked,0<mxUtils.trim(l.value).length&&(e.x=Number(l.value)),0<mxUtils.trim(p.value).length&&(e.y=Number(p.value)),0<mxUtils.trim(t.value).length&&(null==e.offset&&(e.offset=new mxPoint),e.offset.x=Number(t.value)),0<mxUtils.trim(u.value).length&&(null==e.offset&&(e.offset=new mxPoint),e.offset.y=Number(u.value))),b.isCellResizable(c[d])&&(0<mxUtils.trim(x.value).length&&(e.width=Number(x.value)),0<mxUtils.trim(z.value).length&&(e.height=Number(z.value))), +b.getModel().setGeometry(c[d],e));0<mxUtils.trim(v.value).length&&b.setCellStyles(mxConstants.STYLE_ROTATION,Number(v.value),[c[d]])}}finally{b.getModel().endUpdate()}});y.className="geBtn gePrimaryBtn";mxEvent.addListener(g,"keypress",function(a){13==a.keyCode&&y.click()});e=document.createElement("div");e.style.marginTop="20px";e.style.textAlign="right";a.editor.cancelFirst?(e.appendChild(d),e.appendChild(y)):(e.appendChild(y),e.appendChild(d));g.appendChild(e);this.container=g},LibraryDialog=function(a, +c,b,d,g,e){function k(a){for(a=document.elementFromPoint(a.clientX,a.clientY);null!=a&&a.parentNode!=t;)a=a.parentNode;var b=null;if(null!=a)for(var c=t.firstChild,b=0;null!=c&&c!=a;)c=c.nextSibling,b++;return b}function m(b,c,d,l,e,p,g,v,n){try{if(null==c||"image/"==c.substring(0,6))if(null==b&&null!=g||null==x[b]){var F=function(){C.innerHTML="";C.style.cursor="pointer";C.style.whiteSpace="nowrap";C.style.textOverflow="ellipsis";mxUtils.write(C,null!=K.title&&0<K.title.length?K.title:mxResources.get("untitled")); +C.style.color=null==K.title||0==K.title.length?"#d0d0d0":""};t.style.backgroundImage="";u.style.display="none";var D=e,q=p;if(e>a.maxImageSize||p>a.maxImageSize){var A=Math.min(1,Math.min(a.maxImageSize/Math.max(1,e)),a.maxImageSize/Math.max(1,p));e*=A;p*=A}D>q?(q=Math.round(100*q/D),D=100):(D=Math.round(100*D/q),q=100);var E=document.createElement("div");E.setAttribute("draggable","true");E.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";E.style.position="relative";E.style.cursor="move"; +mxUtils.setPrefixedStyle(E.style,"transition","transform .1s ease-in-out");if(null!=b){var J=document.createElement("img");J.setAttribute("src",B.convert(b));J.style.width=D+"px";J.style.height=q+"px";J.style.margin="10px";J.style.paddingBottom=Math.floor((100-q)/2)+"px";J.style.paddingLeft=Math.floor((100-D)/2)+"px";E.appendChild(J)}else if(null!=g){var M=a.stringToCells(a.editor.graph.decompress(g.xml));0<M.length&&(a.sidebar.createThumb(M,100,100,E,null,!0,!1),E.firstChild.style.display=mxClient.IS_QUIRKS? +"inline":"inline-block",E.firstChild.style.cursor="")}var I=document.createElement("img");I.setAttribute("src",Editor.closeImage);I.setAttribute("border","0");I.setAttribute("title",mxResources.get("delete"));I.setAttribute("align","top");I.style.paddingTop="4px";I.style.position="absolute";I.style.marginLeft="-12px";I.style.zIndex="1";I.style.cursor="pointer";mxEvent.addListener(I,"dragstart",function(a){mxEvent.consume(a)});(function(a,b,c){mxEvent.addListener(I,"click",function(d){x[b]=null;for(var l= +0;l<f.length;l++)if(null!=f[l].data&&f[l].data==b||null!=f[l].xml&&null!=c&&f[l].xml==c.xml){f.splice(l,1);break}E.parentNode.removeChild(a);0==f.length&&(t.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')",u.style.display="");mxEvent.consume(d)});mxEvent.addListener(I,"dblclick",function(a){mxEvent.consume(a)})})(E,b,g);E.appendChild(I);E.style.marginBottom="30px";var C=document.createElement("div");C.style.position="absolute";C.style.boxSizing="border-box";C.style.bottom="-18px";C.style.left= +"10px";C.style.right="10px";C.style.backgroundColor="#ffffff";C.style.overflow="hidden";C.style.textAlign="center";var K=null;null!=b?(K={data:b,w:e,h:p,title:n},null!=v&&(K.aspect=v),x[b]=J,f.push(K)):null!=g&&(g.aspect="fixed",f.push(g),K=g);mxEvent.addListener(C,"keydown",function(a){13==a.keyCode&&null!=y&&(y(),y=null,mxEvent.consume(a))});F();E.appendChild(C);mxEvent.addListener(C,"mousedown",function(a){"true"!=C.getAttribute("contentEditable")&&mxEvent.consume(a)});M=function(b){if(mxClient.IS_IOS|| +mxClient.IS_QUIRKS||mxClient.IS_FF||!(null==document.documentMode||9<document.documentMode)){var c=new FilenameDialog(a,K.title||"",mxResources.get("ok"),function(a){null!=a&&(K.title=a,F())},mxResources.get("enterValue"));a.showDialog(c.container,300,80,!0,!0);c.init();mxEvent.consume(b)}else if("true"!=C.getAttribute("contentEditable")){null!=y&&(y(),y=null);if(null==K.title||0==K.title.length)C.innerHTML="";C.style.textOverflow="";C.style.whiteSpace="";C.style.cursor="text";C.style.color="";C.setAttribute("contentEditable", +"true");C.focus();document.execCommand("selectAll",!1,null);y=function(){C.removeAttribute("contentEditable");C.style.cursor="pointer";K.title=C.innerHTML;F()};mxEvent.consume(b)}};mxEvent.addListener(C,"click",M);mxEvent.addListener(E,"dblclick",M);t.appendChild(E);mxEvent.addListener(E,"dragstart",function(a){null==b&&null!=g&&(I.style.visibility="hidden",C.style.visibility="hidden");mxClient.IS_FF&&null!=g.xml&&a.dataTransfer.setData("Text",g.xml);z=k(a);mxClient.IS_GC&&(E.style.opacity="0.9"); +window.setTimeout(function(){mxUtils.setPrefixedStyle(E.style,"transform","scale(0.5,0.5)");mxUtils.setOpacity(E,30);I.style.visibility="";C.style.visibility=""},0)});mxEvent.addListener(E,"dragend",function(a){"hidden"==I.style.visibility&&(I.style.visibility="",C.style.visibility="");z=null;mxUtils.setOpacity(E,100);mxUtils.setPrefixedStyle(E.style,"transform",null)})}else H||(H=!0,a.handleError({message:mxResources.get("fileExists")}));else{e=!1;try{if(a.spinner.stop(),D=mxUtils.parseXml(b),"mxlibrary"== +D.documentElement.nodeName){q=JSON.parse(mxUtils.getTextContent(D.documentElement));if(null!=q&&0<q.length)for(var G=0;G<q.length;G++)null!=q[G].xml?m(null,null,0,0,0,0,q[G]):m(q[G].data,null,0,0,q[G].w,q[G].h,null,"fixed",q[G].title);e=!0}else if("mxfile"==D.documentElement.nodeName){for(var S=D.documentElement.getElementsByTagName("diagram"),G=0;G<S.length;G++){var q=mxUtils.getTextContent(S[G]),M=a.stringToCells(a.editor.graph.decompress(q)),R=a.editor.graph.getBoundingBoxFromGeometry(M);m(null, +null,0,0,0,0,{xml:q,w:R.width,h:R.height})}e=!0}}catch(Z){}e||(a.spinner.stop(),a.handleError({message:mxResources.get("errorLoadingFile")}))}}catch(Z){}return null}function n(a){a.dataTransfer.dropEffect=null!=z?"move":"copy";a.stopPropagation();a.preventDefault()}function q(b){b.stopPropagation();b.preventDefault();H=!1;v=k(b);if(null!=z)null!=v&&v<t.children.length?(f.splice(v>z?v-1:v,0,f.splice(z,1)[0]),t.insertBefore(t.children[z],t.children[v])):(f.push(f.splice(z,1)[0]),t.appendChild(t.children[z])); +else if(0<b.dataTransfer.files.length)a.importFiles(b.dataTransfer.files,0,0,a.maxImageSize,F(b));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")){var c=decodeURIComponent(b.dataTransfer.getData("text/uri-list"));(/(\.jpg)($|\?)/i.test(c)||/(\.png)($|\?)/i.test(c)||/(\.gif)($|\?)/i.test(c)||/(\.svg)($|\?)/i.test(c))&&a.loadImage(c,function(a){m(c,null,0,0,a.width,a.height);t.scrollTop=t.scrollHeight})}b.stopPropagation();b.preventDefault()}var f=[];b=document.createElement("div"); +b.style.height="100%";var l=document.createElement("div");l.style.whiteSpace="nowrap";l.style.height="40px";b.appendChild(l);mxUtils.write(l,mxResources.get("filename")+":");null==c&&(c=a.defaultLibraryName+".xml");var p=document.createElement("input");p.setAttribute("value",c);p.style.marginRight="20px";p.style.marginLeft="10px";p.style.width="500px";null==g||g.isRenamable()||p.setAttribute("disabled","true");this.init=function(){if(null==g||g.isRenamable())p.focus(),mxClient.IS_GC||mxClient.IS_FF|| +5<=document.documentMode||mxClient.IS_QUIRKS?p.select():document.execCommand("selectAll",!1,null)};l.appendChild(p);var t=document.createElement("div");t.style.borderWidth="1px 0px 1px 0px";t.style.borderColor="#d3d3d3";t.style.borderStyle="solid";t.style.marginTop="6px";t.style.overflow="auto";t.style.height="340px";t.style.backgroundPosition="center center";t.style.backgroundRepeat="no-repeat";0==f.length&&Graph.fileSupport&&(t.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')");var u= +document.createElement("div");u.style.position="absolute";u.style.width="640px";u.style.top="260px";u.style.textAlign="center";u.style.fontSize="22px";u.style.color="#a0c3ff";mxUtils.write(u,mxResources.get("dragImagesHere"));b.appendChild(u);var x={},z=null,v=null,y=null;c=function(a){"true"!=mxEvent.getSource(a).getAttribute("contentEditable")&&null!=y&&(y(),y=null,mxEvent.consume(a))};mxEvent.addListener(t,"mousedown",c);mxEvent.addListener(t,"pointerdown",c);mxEvent.addListener(t,"touchstart", +c);var B=new mxUrlConverter,H=!1;if(null!=d)for(c=0;c<d.length;c++)l=d[c],m(l.data,null,0,0,l.w,l.h,l,l.aspect,l.title);mxEvent.addListener(t,"dragleave",function(a){u.style.cursor="";for(var b=mxEvent.getSource(a);null!=b;){if(b==t||b==u){a.stopPropagation();a.preventDefault();break}b=b.parentNode}});var F=function(b){return function(c,f,d,l,e,p,g,v,y){null!=y&&(/(\.vsdx)($|\?)/i.test(y.name)||/(\.vssx)($|\?)/i.test(y.name))?a.importVisio(y,mxUtils.bind(this,function(c){a.spinner.stop();m(c,f,d, +l,e,p,g,"fixed",mxEvent.isAltDown(b)?null:g.substring(0,g.lastIndexOf(".")).replace(/_/g," "))})):null!=y&&!a.isOffline()&&(new XMLHttpRequest).upload&&a.isRemoteFileFormat(c,y.name)?a.parseFile(y,mxUtils.bind(this,function(c){4==c.readyState&&(a.spinner.stop(),200<=c.status&&299>=c.status&&(m(c.responseText,f,d,l,e,p,g,"fixed",mxEvent.isAltDown(b)?null:g.substring(0,g.lastIndexOf(".")).replace(/_/g," ")),t.scrollTop=t.scrollHeight))})):(m(c,f,d,l,e,p,g,"fixed",mxEvent.isAltDown(b)?null:g.substring(0, +g.lastIndexOf(".")).replace(/_/g," ")),t.scrollTop=t.scrollHeight)}};mxEvent.addListener(t,"dragover",n);mxEvent.addListener(t,"drop",q);mxEvent.addListener(u,"dragover",n);mxEvent.addListener(u,"drop",q);b.appendChild(t);d=document.createElement("div");d.style.textAlign="right";d.style.marginTop="20px";c=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog(!0)});c.setAttribute("id","btnCancel");c.className="geBtn";a.editor.cancelFirst&&d.appendChild(c);l=mxUtils.button(mxResources.get("export"), +function(){var b=a.createLibraryDataFromImages(f),c=p.value;/(\.xml)$/i.test(c)||(c+=".xml");a.isLocalFileSave()?a.saveLocalFile(b,c,"text/xml",null,null,!0):(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(c)+"&format=xml&xml="+encodeURIComponent(b))).simulate(document,"_blank")});l.setAttribute("id","btnDownload");l.className="geBtn";d.appendChild(l);var D=document.createElement("input");D.setAttribute("multiple","multiple");D.setAttribute("type","file");null==document.documentMode&&(mxEvent.addListener(D, +"change",function(b){H=!1;a.importFiles(D.files,0,0,a.maxImageSize,function(a,c,f,d,l,e,p,g,v){F(b)(a,c,f,d,l,e,p,g,v);D.value=""});t.scrollTop=t.scrollHeight}),l=mxUtils.button(mxResources.get("import"),function(){null!=y&&(y(),y=null);D.click()}),l.setAttribute("id","btnAddImage"),l.className="geBtn",d.appendChild(l));l=mxUtils.button(mxResources.get("addImageUrl"),function(){null!=y&&(y(),y=null);a.showImageDialog(mxResources.get("addImageUrl"),"",function(a,b,c){H=!1;if(null!=a){if("data:image/"== +a.substring(0,11)){var f=a.indexOf(",");0<f&&(a=a.substring(0,f)+";base64,"+a.substring(f+1))}m(a,null,0,0,b,c);t.scrollTop=t.scrollHeight}})});l.setAttribute("id","btnAddImageUrl");l.className="geBtn";d.appendChild(l);this.saveBtnClickHandler=function(b,c,f,d){a.saveLibrary(b,c,f,d)};l=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(){null!=y&&(y(),y=null);this.saveBtnClickHandler(p.value,f,g,e)}));l.setAttribute("id","btnSave");l.className="geBtn gePrimaryBtn";d.appendChild(l); +a.editor.cancelFirst||d.appendChild(c);b.appendChild(d);this.container=b},EditShapeDialog=function(a,c,b,d,g){d=null!=d?d:300;g=null!=g?g:120;var e,k,m=document.createElement("table"),n=document.createElement("tbody");m.style.cellPadding="4px";e=document.createElement("tr");k=document.createElement("td");k.setAttribute("colspan","2");k.style.fontSize="10pt";mxUtils.write(k,b);e.appendChild(k);n.appendChild(e);e=document.createElement("tr");k=document.createElement("td");var q=document.createElement("textarea"); +q.style.outline="none";q.style.resize="none";q.style.width=d-200+"px";q.style.height=g+"px";this.textarea=q;this.init=function(){q.focus();q.scrollTop=0};k.appendChild(q);e.appendChild(k);k=document.createElement("td");b=document.createElement("div");b.style.position="relative";b.style.border="1px solid gray";b.style.top="6px";b.style.width="200px";b.style.height=g+4+"px";b.style.overflow="hidden";b.style.marginBottom="16px";mxEvent.disableContextMenu(b);k.appendChild(b);var f=new Graph(b);f.setEnabled(!1); +var l=a.editor.graph.cloneCell(c);f.addCells([l]);b=f.view.getState(l);var p="";null!=b.shape&&null!=b.shape.stencil&&(p=mxUtils.getPrettyXml(b.shape.stencil.desc));mxUtils.write(q,p||"");b=f.getGraphBounds();g=Math.min(160/b.width,(g-40)/b.height);f.view.scaleAndTranslate(g,20/g-b.x,20/g-b.y);e.appendChild(k);n.appendChild(e);e=document.createElement("tr");k=document.createElement("td");k.setAttribute("colspan","2");k.style.paddingTop="2px";k.style.whiteSpace="nowrap";k.setAttribute("align","right"); +g=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});g.className="geBtn";a.editor.cancelFirst&&k.appendChild(g);a.isOffline()||(b=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://desk.draw.io/support/solutions/articles/16000052874")}),b.className="geBtn",k.appendChild(b));var t=function(b,c,f){var d=q.value,l=mxUtils.parseXml(d),d=mxUtils.getPrettyXml(l.documentElement),l=l.documentElement.getElementsByTagName("parsererror");if(null!=l&&0<l.length)a.showError(mxResources.get("error"), +mxResources.get("containsValidationErrors"),mxResources.get("ok"));else if(f&&a.hideDialog(),l=!b.model.contains(c),!f||l||d!=p){d=a.editor.graph.compress(d);b.getModel().beginUpdate();try{if(l){var e=a.editor.graph.getInsertPoint();c.geometry.x=e.x;c.geometry.y=e.y;b.addCell(c)}b.setCellStyles(mxConstants.STYLE_SHAPE,"stencil("+d+")",[c])}catch(H){throw H;}finally{b.getModel().endUpdate()}l&&b.setSelectionCell(c)}};b=mxUtils.button(mxResources.get("preview"),function(){t(f,l,!1)});b.className="geBtn"; +k.appendChild(b);b=mxUtils.button(mxResources.get("apply"),function(){t(a.editor.graph,c,!0)});b.className="geBtn gePrimaryBtn";k.appendChild(b);a.editor.cancelFirst||k.appendChild(g);e.appendChild(k);n.appendChild(e);m.appendChild(n);this.container=m},CustomDialog=function(a,c,b,d,g,e,k,m){var n=document.createElement("div");n.appendChild(c);c=document.createElement("div");c.style.marginTop="16px";c.style.textAlign="center";null!=k&&c.appendChild(k);k=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog(); +null!=d&&d()});k.className="geBtn";m&&(k.style.display="none");a.editor.cancelFirst&&c.appendChild(k);a.isOffline()||null==e||(m=mxUtils.button(mxResources.get("help"),function(){a.openLink(e)}),m.className="geBtn",c.appendChild(m));g=mxUtils.button(g||mxResources.get("ok"),function(){a.hideDialog();null!=b&&b()});c.appendChild(g);g.className="geBtn gePrimaryBtn";a.editor.cancelFirst||c.appendChild(k);n.appendChild(c);this.cancelBtn=k;this.okButton=g;this.container=n},TemplatesDialog=function(){var a= '<div class="geTempDlgHeader"><img src="/images/draw.io-logo.svg" class="geTempDlgHeaderLogo"><input type="search" class="geTempDlgSearchBox" placeholder="'+mxResources.get("search",null,"Search")+'"></div><div class="geTemplatesList"><div class="geTempDlgNewDiagramlbl">'+mxResources.get("newDiagram",null,"New Diagram")+'</div><div class="geTempDlgHLine"></div><div class="geTemplatesLbl">'+mxResources.get("templates",null,"Templates")+'</div></div><div class="geTempDlgContent"><div class="geTempDlgNewDiagramCat"><div class="geTempDlgNewDiagramCatLbl">'+ mxResources.get("newDiagram",null,"New Diagram")+'</div><div class="geTempDlgNewDiagramCatList"></div><div class="geTempDlgNewDiagramCatFooter"><div class="geTempDlgShowAllBtn">'+mxResources.get("showAll",null,"+ Show all")+'</div></div></div><div class="geTempDlgDiagramsList"><div class="geTempDlgDiagramsListHeader"><div class="geTempDlgDiagramsListTitle"></div><div class="geTempDlgDiagramsListBtns"><div class="geTempDlgRadioBtn geTempDlgRadioBtnLarge" data-id="myDiagramsBtn"><img src="/images/my-diagrams.svg" class="geTempDlgMyDiagramsBtnImg"> <span>'+ mxResources.get("myDiagrams",null,"My diagrams")+'</span></div><div class="geTempDlgRadioBtn geTempDlgRadioBtnLarge geTempDlgRadioBtnActive" data-id="allDiagramsBtn"><img src="/images/all-diagrams-sel.svg" class="geTempDlgAllDiagramsBtnImg"> <span>'+mxResources.get("allDiagrams",null,"All diagrams")+'</span></div><div class="geTempDlgSpacer"> </div><div class="geTempDlgRadioBtn geTempDlgRadioBtnSmall geTempDlgRadioBtnActive" data-id="tilesBtn"><img src="/images/tiles-sel.svg" class="geTempDlgTilesBtnImg"></div><div class="geTempDlgRadioBtn geTempDlgRadioBtnSmall" data-id="listBtn"><img src="/images/list.svg" class="geTempDlgListBtnImg"></div></div></div><div class="geTempDlgDiagramsTiles"></div></div></div><br style="clear:both;"/><div class="geTempDlgFooter"><span class="geTempDlgLinkToDiagram geTempDlgLinkToDiagramHint">🛈 '+ mxResources.get("linkToDiagramHint",null,"Add a link to this diagram. The diagram can only be edited from the page that owns it.")+'</span><button class="geTempDlgLinkToDiagram geTempDlgLinkToDiagramBtn">'+mxResources.get("linkToDiagram",null,"Link to Diagram")+'</button><div class="geTempDlgCreateBtn">'+mxResources.get("create",null,"Create")+'</div><div class="geTempDlgCancelBtn">'+mxResources.get("cancel",null,"Cancel")+"</div></div>",c=document.createElement("div");c.innerHTML=a;c.className="geTemplateDlg"; -var a=window.innerWidth,b=window.innerHeight,d=987,f=712;.9*a<d&&(d=Math.max(.9*a,600),c.style.width=d+"px");.9*b<f&&(f=Math.max(.9*b,300),c.style.height=f+"px");this.width=d;this.height=f;this.container=c}; -TemplatesDialog.prototype.init=function(a,c,b,d,f,h,k,m,p,g){function l(){null!=B&&(B.style.fontWeight="normal",B.style.textDecoration="none",B=null)}function n(a,b,c,g,d,l,n){if(-1<a.className.indexOf("geTempDlgRadioBtnActive"))return!1;a.className+=" geTempDlgRadioBtnActive";z.querySelector(".geTempDlgRadioBtn[data-id="+g+"]").className="geTempDlgRadioBtn "+(n?"geTempDlgRadioBtnLarge":"geTempDlgRadioBtnSmall");z.querySelector("."+b).src="/images/"+c+"-sel.svg";z.querySelector("."+d).src="/images/"+ -l+".svg";return!0}function q(a){function b(a){Z.removeChild(g);z.removeChild(c);Z.scrollTop=l}a=a.prevImgUrl||a.imgUrl||TEMPLATE_PATH+"/"+a.url.substring(0,a.url.length-4)+".png";var c=document.createElement("div");c.className="geTempDlgDialogMask";z.appendChild(c);var g=document.createElement("div");g.className="geTempDlgDiagramPreviewBox";var d=document.createElement("img");d.src=a;g.appendChild(d);a=document.createElement("img");a.src="/images/close.png";a.className="geTempDlgPreviewCloseBtn"; -a.setAttribute("title",mxResources.get("close"));g.appendChild(a);var l=Z.scrollTop;mxEvent.addListener(a,"click",b);mxEvent.addListener(c,"click",b);Z.appendChild(g);Z.scrollTop=0;g.style.lineHeight=g.clientHeight+"px"}function t(a,b,c){if(null!=D){for(var g=D.className.split(" "),d=0;d<g.length;d++)if(-1<g[d].indexOf("Active")){g.splice(d,1);break}D.className=g.join(" ")}null!=a?(D=a,D.className+=" "+b,J=c,N.className="geTempDlgCreateBtn"):(J=D=null,N.className="geTempDlgCreateBtn geTempDlgCreateBtnDisabled")} -function v(b){if(null!=J){var d=J;J=null;N.className="geTempDlgCreateBtn geTempDlgCreateBtnDisabled geTempDlgCreateBtnBusy";d.isExternal?(1==b?g(d.url,d,"nameInput.value"):p(d.url,d,"nameInput.value"),a.hideDialog(!0)):mxUtils.get(TEMPLATE_PATH+"/"+d.url,mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()&&(c(b.getText(),"nameInput.value"),a.hideDialog(!0))}))}}function w(a){a=a?"":"none";for(var b=z.querySelectorAll(".geTempDlgLinkToDiagram"),c=0;c<b.length;c++)b[c].style.display= -a}function y(a,b,c){function g(){N.innerHTML=b?mxUtils.htmlEntities(mxResources.get("create")):mxUtils.htmlEntities(mxResources.get("copy"));w(!b)}R.innerHTML="";t();M=a;var d=null;if(c){d=document.createElement("table");d.className="geTempDlgDiagramsListGrid";var l=document.createElement("tr"),n=document.createElement("th");n.style.width="50%";n.innerHTML=mxUtils.htmlEntities(mxResources.get("diagram",null,"Diagram"));l.appendChild(n);n=document.createElement("th");n.style.width="25%";n.innerHTML= -mxUtils.htmlEntities(mxResources.get("changedBy",null,"Changed By"));l.appendChild(n);n=document.createElement("th");n.style.width="25%";n.innerHTML=mxUtils.htmlEntities(mxResources.get("lastModifiedOn",null,"Last modified on"));l.appendChild(n);d.appendChild(l);R.appendChild(d)}for(l=0;l<a.length;l++){a[l].isExternal=!b;var f=a[l].url,n=mxUtils.htmlEntities(a[l].title),h=a[l].tooltip||a[l].title,u=a[l].imgUrl,k=mxUtils.htmlEntities(a[l].changedBy||""),F=mxUtils.htmlEntities(a[l].lastModifiedOn|| -"");u||(u=TEMPLATE_PATH+"/"+f.substring(0,f.length-4)+".png");f=c?50:15;null!=n&&n.length>f&&(n=n.substring(0,f)+"…");if(c){var x=document.createElement("tr"),u=document.createElement("td"),m=document.createElement("img");m.src="/images/icon-search.svg";m.className="geTempDlgDiagramListPreviewBtn";m.setAttribute("title",mxResources.get("preview"));u.appendChild(m);h=document.createElement("span");h.className="geTempDlgDiagramTitle";h.innerHTML=n;u.appendChild(h);x.appendChild(u);u=document.createElement("td"); -u.innerHTML=k;x.appendChild(u);u=document.createElement("td");u.innerHTML=F;x.appendChild(u);d.appendChild(x);null==D&&(g(),t(x,"geTempDlgDiagramsListGridActive",a[l]));(function(a,b){mxEvent.addListener(x,"click",function(){D!=b&&(g(),t(b,"geTempDlgDiagramsListGridActive",a))});mxEvent.addListener(x,"dblclick",v);mxEvent.addListener(m,"click",function(){q(a)})})(a[l],x)}else{var G=document.createElement("div");G.className="geTempDlgDiagramTile";G.setAttribute("title",h);null==D&&(g(),t(G,"geTempDlgDiagramTileActive", -a[l]));k=document.createElement("div");k.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgLoading";var p=document.createElement("img");p.style.display="none";(function(a,b){p.onload=function(){b.className="geTempDlgDiagramTileImg";a.style.display=""};p.onerror=function(){b.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgError"}})(p,k);p.src=u;k.appendChild(p);G.appendChild(k);k=document.createElement("div");k.className="geTempDlgDiagramTileLbl";k.innerHTML=null!=n?n:"";G.appendChild(k); -m=document.createElement("img");m.src="/images/icon-search.svg";m.className="geTempDlgDiagramPreviewBtn";m.setAttribute("title",mxResources.get("preview"));G.appendChild(m);(function(a,b){mxEvent.addListener(G,"click",function(){D!=b&&(g(),t(b,"geTempDlgDiagramTileActive",a))});mxEvent.addListener(G,"dblclick",v);mxEvent.addListener(m,"click",function(){q(a)})})(a[l],G);R.appendChild(G)}}}function u(a,b){Q.innerHTML="";t();for(var c=!b&&5<a.length?5:a.length,g=0;g<c;g++){var d=a[g];d.isCategory=!0; -var l=document.createElement("div"),n=mxResources.get(d.title);null==n&&(n=d.title.substring(0,1).toUpperCase()+d.title.substring(1));l.className="geTempDlgNewDiagramCatItem";l.setAttribute("title",n);n=mxUtils.htmlEntities(n);15<n.length&&(n=n.substring(0,15)+"…");null==D&&(N.innerHTML=mxUtils.htmlEntities(mxResources.get("create")),w(),t(l,"geTempDlgNewDiagramCatItemActive",d));var f=document.createElement("div");f.className="geTempDlgNewDiagramCatItemImg";var h=document.createElement("img"); -h.src=NEW_DIAGRAM_CATS_PATH+"/"+d.img;f.appendChild(h);l.appendChild(f);f=document.createElement("div");f.className="geTempDlgNewDiagramCatItemLbl";f.innerHTML=n;l.appendChild(f);Q.appendChild(l);(function(a,b){mxEvent.addListener(l,"click",function(){D!=b&&(N.innerHTML=mxUtils.htmlEntities(mxResources.get("create")),w(),t(b,"geTempDlgNewDiagramCatItemActive",a))});mxEvent.addListener(l,"dblclick",v)})(d,l)}T.style.display=5>a.length?"none":""}function x(a){var b=z.querySelector(".geTemplatesList"), -c;for(c in a){var g=document.createElement("div"),d=mxResources.get(c),l=a[c];null==d&&(d=c.substring(0,1).toUpperCase()+c.substring(1));g.className="geTemplateCatLink";g.setAttribute("title",d+" ("+l.length+")");d=mxUtils.htmlEntities(d);15<d.length&&(d=d.substring(0,15)+"…");g.innerHTML=d+" ("+l.length+")";b.appendChild(g);(function(b,c,d){mxEvent.addListener(g,"click",function(){B!=d&&(null!=B?(B.style.fontWeight="normal",B.style.textDecoration="none"):(O.style.display="none",aa.style.minHeight= -"100%"),B=d,B.style.fontWeight="bold",B.style.textDecoration="underline",Z.scrollTop=0,A&&(H=!0),V.innerHTML=c,Y.style.display="none",y(a[b],!0))})})(c,d,g)}}function F(a){k&&(Z.scrollTop=0,R.innerHTML="",X.spin(R),H=!1,A=!0,V.innerHTML=mxUtils.htmlEntities(mxResources.get("recentDiag",null,"Recent Diagrams")),L=null,k(ca,a?null:h))}function G(a){l();Z.scrollTop=0;R.innerHTML="";X.spin(R);H=!1;A=!0;W=null;V.innerHTML=mxUtils.htmlEntities(mxResources.get("searchResults",null,"Search Results"))+' "'+ -mxUtils.htmlEntities(a)+'"';m(a,ca,E?null:h);L=a}d=null!=d?d:TEMPLATE_PATH+"/index.xml";f=null!=f?f:NEW_DIAGRAM_CATS_PATH+"/index.xml";var z=this.container,A=!1,H=!1,B=null,D=null,J=null,C=!1,E=!0,I=!1,M=[],L,T=z.querySelector(".geTempDlgShowAllBtn"),R=z.querySelector(".geTempDlgDiagramsTiles"),V=z.querySelector(".geTempDlgDiagramsListTitle"),Y=z.querySelector(".geTempDlgDiagramsListBtns"),Z=z.querySelector(".geTempDlgContent"),aa=z.querySelector(".geTempDlgDiagramsList"),O=z.querySelector(".geTempDlgNewDiagramCat"), -Q=z.querySelector(".geTempDlgNewDiagramCatList"),N=z.querySelector(".geTempDlgCreateBtn"),X=new Spinner({lines:12,length:10,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"50px",zIndex:2E9});mxEvent.addListener(z.querySelector(".geTempDlgNewDiagramlbl"),"click",function(){l();O.style.display="";aa.style.minHeight="calc(100% - 280px)";F(E)});mxEvent.addListener(z.querySelector(".geTempDlgRadioBtn[data-id=allDiagramsBtn]"),"click",function(){n(this,"geTempDlgAllDiagramsBtnImg", -"all-diagrams","myDiagramsBtn","geTempDlgMyDiagramsBtnImg","my-diagrams",!0)&&(E=!0,null==L?F(E):G(L))});mxEvent.addListener(z.querySelector(".geTempDlgRadioBtn[data-id=myDiagramsBtn]"),"click",function(){n(this,"geTempDlgMyDiagramsBtnImg","my-diagrams","allDiagramsBtn","geTempDlgAllDiagramsBtnImg","all-diagrams",!0)&&(E=!1,null==L?F(E):G(L))});mxEvent.addListener(z.querySelector(".geTempDlgRadioBtn[data-id=listBtn]"),"click",function(){n(this,"geTempDlgListBtnImg","list","tilesBtn","geTempDlgTilesBtnImg", -"tiles",!1)&&(I=!0,y(M,!1,I))});mxEvent.addListener(z.querySelector(".geTempDlgRadioBtn[data-id=tilesBtn]"),"click",function(){n(this,"geTempDlgTilesBtnImg","tiles","listBtn","geTempDlgListBtnImg","list",!1)&&(I=!1,y(M,!1,I))});mxEvent.addListener(T,"click",function(){C?(O.style.height="280px",Q.style.height="190px",T.innerHTML=mxUtils.htmlEntities(mxResources.get("showAll",null,"+ Show all")),u(ba)):(O.style.height="440px",Q.style.height="355px",T.innerHTML=mxUtils.htmlEntities(mxResources.get("showLess", -null,"- Show less")),u(ba,!0));C=!C});var P=!1,U=!1,S={},ba=[],K=1;mxUtils.get(d,function(a){if(!P){P=!0;for(a=a.getXml().documentElement.firstChild;null!=a;){if("undefined"!==typeof a.getAttribute){var b=a.getAttribute("url");if(null!=b){var c=b.indexOf("/"),b=b.substring(0,c),c=S[b];null==c&&(K++,c=[],S[b]=c);c.push({url:a.getAttribute("url"),libs:a.getAttribute("libs"),title:a.getAttribute("title"),tooltip:a.getAttribute("url"),imgUrl:a.getAttribute("imgUrl")})}}a=a.nextSibling}x(S)}});mxUtils.get(f, -function(a){if(!U){U=!0;for(a=a.getXml().documentElement.firstChild;null!=a;)"undefined"!==typeof a.getAttribute&&null!=a.getAttribute("title")&&ba.push({img:a.getAttribute("img"),libs:a.getAttribute("libs"),title:a.getAttribute("title")}),a=a.nextSibling;u(ba)}});var ca=function(a,b){Y.style.display="";X.stop();A=!1;H?H=!1:b?R.innerHTML=b:0==a.length?R.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams",null,"No Diagrams Found")):y(a,!1,I)};F(E);var W=null;m&&mxEvent.addListener(z.querySelector(".geTempDlgSearchBox"), -"keyup",function(a){var b=this;null!=W&&clearTimeout(W);13==a.keyCode?G(b.value):W=setTimeout(function(){G(b.value)},500)});mxEvent.addListener(N,"click",v);mxEvent.addListener(z.querySelector(".geTempDlgLinkToDiagramBtn"),"click",function(a){v(!0)});mxEvent.addListener(z.querySelector(".geTempDlgCancelBtn"),"click",function(){null!=b&&b();a.hideDialog(!0)})}; -var BtnDialog=function(a,c,b,d){var f=document.createElement("div");f.style.textAlign="center";var h=document.createElement("p");h.style.fontSize="16pt";h.style.padding="0px";h.style.margin="0px";h.style.color="gray";mxUtils.write(h,mxResources.get("done"));var k="Unknown",m=document.createElement("img");m.setAttribute("border","0");m.setAttribute("align","absmiddle");m.style.marginRight="10px";c==a.drive?(k=mxResources.get("googleDrive"),m.src=IMAGE_PATH+"/google-drive-logo-white.svg"):c==a.dropbox? +var a=window.innerWidth,b=window.innerHeight,d=987,g=712;.9*a<d&&(d=Math.max(.9*a,600),c.style.width=d+"px");.9*b<g&&(g=Math.max(.9*b,300),c.style.height=g+"px");this.width=d;this.height=g;this.container=c}; +TemplatesDialog.prototype.init=function(a,c,b,d,g,e,k,m,n,q){function f(){null!=I&&(I.style.fontWeight="normal",I.style.textDecoration="none",I=null)}function l(a,b,c,f,d,l,e){if(-1<a.className.indexOf("geTempDlgRadioBtnActive"))return!1;a.className+=" geTempDlgRadioBtnActive";F.querySelector(".geTempDlgRadioBtn[data-id="+f+"]").className="geTempDlgRadioBtn "+(e?"geTempDlgRadioBtnLarge":"geTempDlgRadioBtnSmall");F.querySelector("."+b).src="/images/"+c+"-sel.svg";F.querySelector("."+d).src="/images/"+ +l+".svg";return!0}function p(a){function b(a){aa.removeChild(f);F.removeChild(c);aa.scrollTop=l}a=a.prevImgUrl||a.imgUrl||TEMPLATE_PATH+"/"+a.url.substring(0,a.url.length-4)+".png";var c=document.createElement("div");c.className="geTempDlgDialogMask";F.appendChild(c);var f=document.createElement("div");f.className="geTempDlgDiagramPreviewBox";var d=document.createElement("img");d.src=a;f.appendChild(d);a=document.createElement("img");a.src="/images/close.png";a.className="geTempDlgPreviewCloseBtn"; +a.setAttribute("title",mxResources.get("close"));f.appendChild(a);var l=aa.scrollTop;mxEvent.addListener(a,"click",b);mxEvent.addListener(c,"click",b);aa.appendChild(f);aa.scrollTop=0;f.style.lineHeight=f.clientHeight+"px"}function t(a,b,c){if(null!=C){for(var f=C.className.split(" "),d=0;d<f.length;d++)if(-1<f[d].indexOf("Active")){f.splice(d,1);break}C.className=f.join(" ")}null!=a?(C=a,C.className+=" "+b,G=c,O.className="geTempDlgCreateBtn"):(G=C=null,O.className="geTempDlgCreateBtn geTempDlgCreateBtnDisabled")} +function u(b){if(null!=G){var f=G;G=null;O.className="geTempDlgCreateBtn geTempDlgCreateBtnDisabled geTempDlgCreateBtnBusy";f.isExternal?(1==b?q(f.url,f,"nameInput.value"):n(f.url,f,"nameInput.value"),a.hideDialog(!0)):mxUtils.get(TEMPLATE_PATH+"/"+f.url,mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()&&(c(b.getText(),"nameInput.value"),a.hideDialog(!0))}))}}function x(a){a=a?"":"none";for(var b=F.querySelectorAll(".geTempDlgLinkToDiagram"),c=0;c<b.length;c++)b[c].style.display= +a}function z(a,b,c){function f(){O.innerHTML=b?mxUtils.htmlEntities(mxResources.get("create")):mxUtils.htmlEntities(mxResources.get("copy"));x(!b)}U.innerHTML="";t();M=a;var d=null;if(c){d=document.createElement("table");d.className="geTempDlgDiagramsListGrid";var l=document.createElement("tr"),e=document.createElement("th");e.style.width="50%";e.innerHTML=mxUtils.htmlEntities(mxResources.get("diagram",null,"Diagram"));l.appendChild(e);e=document.createElement("th");e.style.width="25%";e.innerHTML= +mxUtils.htmlEntities(mxResources.get("changedBy",null,"Changed By"));l.appendChild(e);e=document.createElement("th");e.style.width="25%";e.innerHTML=mxUtils.htmlEntities(mxResources.get("lastModifiedOn",null,"Last modified on"));l.appendChild(e);d.appendChild(l);U.appendChild(d)}for(l=0;l<a.length;l++){a[l].isExternal=!b;var g=a[l].url,e=mxUtils.htmlEntities(a[l].title),v=a[l].tooltip||a[l].title,y=a[l].imgUrl,B=mxUtils.htmlEntities(a[l].changedBy||""),k=mxUtils.htmlEntities(a[l].lastModifiedOn|| +"");y||(y=TEMPLATE_PATH+"/"+g.substring(0,g.length-4)+".png");g=c?50:15;null!=e&&e.length>g&&(e=e.substring(0,g)+"…");if(c){var H=document.createElement("tr"),y=document.createElement("td"),m=document.createElement("img");m.src="/images/icon-search.svg";m.className="geTempDlgDiagramListPreviewBtn";m.setAttribute("title",mxResources.get("preview"));y.appendChild(m);v=document.createElement("span");v.className="geTempDlgDiagramTitle";v.innerHTML=e;y.appendChild(v);H.appendChild(y);y=document.createElement("td"); +y.innerHTML=B;H.appendChild(y);y=document.createElement("td");y.innerHTML=k;H.appendChild(y);d.appendChild(H);null==C&&(f(),t(H,"geTempDlgDiagramsListGridActive",a[l]));(function(a,b){mxEvent.addListener(H,"click",function(){C!=b&&(f(),t(b,"geTempDlgDiagramsListGridActive",a))});mxEvent.addListener(H,"dblclick",u);mxEvent.addListener(m,"click",function(){p(a)})})(a[l],H)}else{var n=document.createElement("div");n.className="geTempDlgDiagramTile";n.setAttribute("title",v);null==C&&(f(),t(n,"geTempDlgDiagramTileActive", +a[l]));B=document.createElement("div");B.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgLoading";var F=document.createElement("img");F.style.display="none";(function(a,b){F.onload=function(){b.className="geTempDlgDiagramTileImg";a.style.display=""};F.onerror=function(){b.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgError"}})(F,B);F.src=y;B.appendChild(F);n.appendChild(B);B=document.createElement("div");B.className="geTempDlgDiagramTileLbl";B.innerHTML=null!=e?e:"";n.appendChild(B); +m=document.createElement("img");m.src="/images/icon-search.svg";m.className="geTempDlgDiagramPreviewBtn";m.setAttribute("title",mxResources.get("preview"));n.appendChild(m);(function(a,b){mxEvent.addListener(n,"click",function(){C!=b&&(f(),t(b,"geTempDlgDiagramTileActive",a))});mxEvent.addListener(n,"dblclick",u);mxEvent.addListener(m,"click",function(){p(a)})})(a[l],n);U.appendChild(n)}}}function v(a,b){ba.innerHTML="";t();for(var c=!b&&5<a.length?5:a.length,f=0;f<c;f++){var d=a[f];d.isCategory= +!0;var l=document.createElement("div"),e=mxResources.get(d.title);null==e&&(e=d.title.substring(0,1).toUpperCase()+d.title.substring(1));l.className="geTempDlgNewDiagramCatItem";l.setAttribute("title",e);e=mxUtils.htmlEntities(e);15<e.length&&(e=e.substring(0,15)+"…");null==C&&(O.innerHTML=mxUtils.htmlEntities(mxResources.get("create")),x(),t(l,"geTempDlgNewDiagramCatItemActive",d));var p=document.createElement("div");p.className="geTempDlgNewDiagramCatItemImg";var g=document.createElement("img"); +g.src=NEW_DIAGRAM_CATS_PATH+"/"+d.img;p.appendChild(g);l.appendChild(p);p=document.createElement("div");p.className="geTempDlgNewDiagramCatItemLbl";p.innerHTML=e;l.appendChild(p);ba.appendChild(l);(function(a,b){mxEvent.addListener(l,"click",function(){C!=b&&(O.innerHTML=mxUtils.htmlEntities(mxResources.get("create")),x(),t(b,"geTempDlgNewDiagramCatItemActive",a))});mxEvent.addListener(l,"dblclick",u)})(d,l)}T.style.display=5>a.length?"none":""}function y(a){var b=F.querySelector(".geTemplatesList"), +c;for(c in a){var f=document.createElement("div"),d=mxResources.get(c),l=a[c];null==d&&(d=c.substring(0,1).toUpperCase()+c.substring(1));f.className="geTemplateCatLink";f.setAttribute("title",d+" ("+l.length+")");d=mxUtils.htmlEntities(d);15<d.length&&(d=d.substring(0,15)+"…");f.innerHTML=d+" ("+l.length+")";b.appendChild(f);(function(b,c,d){mxEvent.addListener(f,"click",function(){I!=d&&(null!=I?(I.style.fontWeight="normal",I.style.textDecoration="none"):(N.style.display="none",ea.style.minHeight= +"100%"),I=d,I.style.fontWeight="bold",I.style.textDecoration="underline",aa.scrollTop=0,D&&(E=!0),V.innerHTML=c,W.style.display="none",z(a[b],!0))})})(c,d,f)}}function B(a){k&&(aa.scrollTop=0,U.innerHTML="",P.spin(U),E=!1,D=!0,V.innerHTML=mxUtils.htmlEntities(mxResources.get("recentDiag",null,"Recent Diagrams")),S=null,k(L,a?null:e))}function H(a){f();aa.scrollTop=0;U.innerHTML="";P.spin(U);E=!1;D=!0;fa=null;V.innerHTML=mxUtils.htmlEntities(mxResources.get("searchResults",null,"Search Results"))+ +' "'+mxUtils.htmlEntities(a)+'"';m(a,L,A?null:e);S=a}d=null!=d?d:TEMPLATE_PATH+"/index.xml";g=null!=g?g:NEW_DIAGRAM_CATS_PATH+"/index.xml";var F=this.container,D=!1,E=!1,I=null,C=null,G=null,J=!1,A=!0,K=!1,M=[],S,T=F.querySelector(".geTempDlgShowAllBtn"),U=F.querySelector(".geTempDlgDiagramsTiles"),V=F.querySelector(".geTempDlgDiagramsListTitle"),W=F.querySelector(".geTempDlgDiagramsListBtns"),aa=F.querySelector(".geTempDlgContent"),ea=F.querySelector(".geTempDlgDiagramsList"),N=F.querySelector(".geTempDlgNewDiagramCat"), +ba=F.querySelector(".geTempDlgNewDiagramCatList"),O=F.querySelector(".geTempDlgCreateBtn"),P=new Spinner({lines:12,length:10,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"50px",zIndex:2E9});mxEvent.addListener(F.querySelector(".geTempDlgNewDiagramlbl"),"click",function(){f();N.style.display="";ea.style.minHeight="calc(100% - 280px)";B(A)});mxEvent.addListener(F.querySelector(".geTempDlgRadioBtn[data-id=allDiagramsBtn]"),"click",function(){l(this,"geTempDlgAllDiagramsBtnImg", +"all-diagrams","myDiagramsBtn","geTempDlgMyDiagramsBtnImg","my-diagrams",!0)&&(A=!0,null==S?B(A):H(S))});mxEvent.addListener(F.querySelector(".geTempDlgRadioBtn[data-id=myDiagramsBtn]"),"click",function(){l(this,"geTempDlgMyDiagramsBtnImg","my-diagrams","allDiagramsBtn","geTempDlgAllDiagramsBtnImg","all-diagrams",!0)&&(A=!1,null==S?B(A):H(S))});mxEvent.addListener(F.querySelector(".geTempDlgRadioBtn[data-id=listBtn]"),"click",function(){l(this,"geTempDlgListBtnImg","list","tilesBtn","geTempDlgTilesBtnImg", +"tiles",!1)&&(K=!0,z(M,!1,K))});mxEvent.addListener(F.querySelector(".geTempDlgRadioBtn[data-id=tilesBtn]"),"click",function(){l(this,"geTempDlgTilesBtnImg","tiles","listBtn","geTempDlgListBtnImg","list",!1)&&(K=!1,z(M,!1,K))});mxEvent.addListener(T,"click",function(){J?(N.style.height="280px",ba.style.height="190px",T.innerHTML=mxUtils.htmlEntities(mxResources.get("showAll",null,"+ Show all")),v(Z)):(N.style.height="440px",ba.style.height="355px",T.innerHTML=mxUtils.htmlEntities(mxResources.get("showLess", +null,"- Show less")),v(Z,!0));J=!J});var X=!1,Q=!1,R={},Z=[],ca=1;mxUtils.get(d,function(a){if(!X){X=!0;for(a=a.getXml().documentElement.firstChild;null!=a;){if("undefined"!==typeof a.getAttribute){var b=a.getAttribute("url");if(null!=b){var c=b.indexOf("/"),b=b.substring(0,c),c=R[b];null==c&&(ca++,c=[],R[b]=c);c.push({url:a.getAttribute("url"),libs:a.getAttribute("libs"),title:a.getAttribute("title"),tooltip:a.getAttribute("url"),imgUrl:a.getAttribute("imgUrl")})}}a=a.nextSibling}y(R)}});mxUtils.get(g, +function(a){if(!Q){Q=!0;for(a=a.getXml().documentElement.firstChild;null!=a;)"undefined"!==typeof a.getAttribute&&null!=a.getAttribute("title")&&Z.push({img:a.getAttribute("img"),libs:a.getAttribute("libs"),title:a.getAttribute("title")}),a=a.nextSibling;v(Z)}});var L=function(a,b){W.style.display="";P.stop();D=!1;E?E=!1:b?U.innerHTML=b:0==a.length?U.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams",null,"No Diagrams Found")):z(a,!1,K)};B(A);var fa=null;m&&mxEvent.addListener(F.querySelector(".geTempDlgSearchBox"), +"keyup",function(a){var b=this;null!=fa&&clearTimeout(fa);13==a.keyCode?H(b.value):fa=setTimeout(function(){H(b.value)},500)});mxEvent.addListener(O,"click",u);mxEvent.addListener(F.querySelector(".geTempDlgLinkToDiagramBtn"),"click",function(a){u(!0)});mxEvent.addListener(F.querySelector(".geTempDlgCancelBtn"),"click",function(){null!=b&&b();a.hideDialog(!0)})}; +var BtnDialog=function(a,c,b,d){var g=document.createElement("div");g.style.textAlign="center";var e=document.createElement("p");e.style.fontSize="16pt";e.style.padding="0px";e.style.margin="0px";e.style.color="gray";mxUtils.write(e,mxResources.get("done"));var k="Unknown",m=document.createElement("img");m.setAttribute("border","0");m.setAttribute("align","absmiddle");m.style.marginRight="10px";c==a.drive?(k=mxResources.get("googleDrive"),m.src=IMAGE_PATH+"/google-drive-logo-white.svg"):c==a.dropbox? (k=mxResources.get("dropbox"),m.src=IMAGE_PATH+"/dropbox-logo-white.svg"):c==a.oneDrive?(k=mxResources.get("oneDrive"),m.src=IMAGE_PATH+"/onedrive-logo-white.svg"):c==a.gitHub?(k=mxResources.get("github"),m.src=IMAGE_PATH+"/github-logo-white.svg"):c==a.trello&&(k=mxResources.get("trello"),m.src=IMAGE_PATH+"/trello-logo-white.svg");a=document.createElement("p");mxUtils.write(a,mxResources.get("authorizedIn",[k],"You are now authorized in {1}"));b=mxUtils.button(b,d);b.insertBefore(m,b.firstChild); -b.style.marginTop="6px";b.className="geBigButton";f.appendChild(h);f.appendChild(a);f.appendChild(b);this.container=f};(function(){Editor.prototype.appName="draw.io";Editor.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAMAAADzN3VRAAAApVBMVEUAAAD////k5OT///8AAAB1dXXMzMz9/f39/f37+/v5+fn+/v7///9iYmJaWlqFhYWnp6ejo6OHh4f////////////////7+/v5+fnx8fH///8AAAD///8bGxv7+/v5+fkoKCghISFDQ0MYGBjh4eHY2Njb29tQUFBvb29HR0c/Pz82NjYrKyu/v78SEhLu7u7s7OzV1dVVVVU7OzsVFRXAv78QEBBzqehMAAAAG3RSTlMAA/7p/vz5xZlrTiPL/v78+/v7+OXd2TYQDs8L70ZbAAABKUlEQVQoz3VS13LCMBBUXHChd8iukDslQChJ/v/TchaG4cXS+OSb1c7trU7V60OpdRz2ZtNZL4zXNlcN8BEtSG6+NxIXkeRPoBuQ1cjvZ31/VJFB10ISli6diYfH8iYO3WUNCcNlB0gTrXOtkxTo0O1aKKiBBMhhv2MNBQKoiA5wxlZo0JDzD3AYKbWacyj3fs01wxey0pyEP+R8pWKWXoqtIZ0DDg5pbki9krEKOa6LVDQsdoXEsi46Zqh69KFz7B1u7Hb2yDV8firXDKBlZ4UFiswKGRhXTS93/ECK7yxnJ3+S3y/ThpO+cfSD017nqa18aasabU0/t7d+tk0/1oMEJ1NaD67iwdF68OabFSLn+eHb0+vjy+uk8br9fdrftH0O2menfd7+AQfYM/lNjoDHAAAAAElFTkSuQmCC": +b.style.marginTop="6px";b.className="geBigButton";g.appendChild(e);g.appendChild(a);g.appendChild(b);this.container=g};(function(){Editor.prototype.appName="draw.io";Editor.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAMAAADzN3VRAAAApVBMVEUAAAD////k5OT///8AAAB1dXXMzMz9/f39/f37+/v5+fn+/v7///9iYmJaWlqFhYWnp6ejo6OHh4f////////////////7+/v5+fnx8fH///8AAAD///8bGxv7+/v5+fkoKCghISFDQ0MYGBjh4eHY2Njb29tQUFBvb29HR0c/Pz82NjYrKyu/v78SEhLu7u7s7OzV1dVVVVU7OzsVFRXAv78QEBBzqehMAAAAG3RSTlMAA/7p/vz5xZlrTiPL/v78+/v7+OXd2TYQDs8L70ZbAAABKUlEQVQoz3VS13LCMBBUXHChd8iukDslQChJ/v/TchaG4cXS+OSb1c7trU7V60OpdRz2ZtNZL4zXNlcN8BEtSG6+NxIXkeRPoBuQ1cjvZ31/VJFB10ISli6diYfH8iYO3WUNCcNlB0gTrXOtkxTo0O1aKKiBBMhhv2MNBQKoiA5wxlZo0JDzD3AYKbWacyj3fs01wxey0pyEP+R8pWKWXoqtIZ0DDg5pbki9krEKOa6LVDQsdoXEsi46Zqh69KFz7B1u7Hb2yDV8firXDKBlZ4UFiswKGRhXTS93/ECK7yxnJ3+S3y/ThpO+cfSD017nqa18aasabU0/t7d+tk0/1oMEJ1NaD67iwdF68OabFSLn+eHb0+vjy+uk8br9fdrftH0O2menfd7+AQfYM/lNjoDHAAAAAElFTkSuQmCC": IMAGE_PATH+"/delete.png";Editor.plusImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDdCMTdENjVCOEM4MTFFNDlCRjVBNDdCODU5NjNBNUMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDdCMTdENjZCOEM4MTFFNDlCRjVBNDdCODU5NjNBNUMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowN0IxN0Q2M0I4QzgxMUU0OUJGNUE0N0I4NTk2M0E1QyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowN0IxN0Q2NEI4QzgxMUU0OUJGNUE0N0I4NTk2M0E1QyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PtjrjmgAAAAtSURBVHjaYvz//z8DMigvLwcLdHZ2MiKLMzEQCaivkLGsrOw/dU0cAr4GCDAARQsQbTFrv10AAAAASUVORK5CYII=": IMAGE_PATH+"/plus.png";Editor.spinImage=mxClient.IS_SVG?"data:image/gif;base64,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": IMAGE_PATH+"/spin.gif";Editor.globeImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnptNi45MyA2aC0yLjk1Yy0uMzItMS4yNS0uNzgtMi40NS0xLjM4LTMuNTYgMS44NC42MyAzLjM3IDEuOTEgNC4zMyAzLjU2ek0xMiA0LjA0Yy44MyAxLjIgMS40OCAyLjUzIDEuOTEgMy45NmgtMy44MmMuNDMtMS40MyAxLjA4LTIuNzYgMS45MS0zLjk2ek00LjI2IDE0QzQuMSAxMy4zNiA0IDEyLjY5IDQgMTJzLjEtMS4zNi4yNi0yaDMuMzhjLS4wOC42Ni0uMTQgMS4zMi0uMTQgMiAwIC42OC4wNiAxLjM0LjE0IDJINC4yNnptLjgyIDJoMi45NWMuMzIgMS4yNS43OCAyLjQ1IDEuMzggMy41Ni0xLjg0LS42My0zLjM3LTEuOS00LjMzLTMuNTZ6bTIuOTUtOEg1LjA4Yy45Ni0xLjY2IDIuNDktMi45MyA0LjMzLTMuNTZDOC44MSA1LjU1IDguMzUgNi43NSA4LjAzIDh6TTEyIDE5Ljk2Yy0uODMtMS4yLTEuNDgtMi41My0xLjkxLTMuOTZoMy44MmMtLjQzIDEuNDMtMS4wOCAyLjc2LTEuOTEgMy45NnpNMTQuMzQgMTRIOS42NmMtLjA5LS42Ni0uMTYtMS4zMi0uMTYtMiAwLS42OC4wNy0xLjM1LjE2LTJoNC42OGMuMDkuNjUuMTYgMS4zMi4xNiAyIDAgLjY4LS4wNyAxLjM0LS4xNiAyem0uMjUgNS41NmMuNi0xLjExIDEuMDYtMi4zMSAxLjM4LTMuNTZoMi45NWMtLjk2IDEuNjUtMi40OSAyLjkzLTQuMzMgMy41NnpNMTYuMzYgMTRjLjA4LS42Ni4xNC0xLjMyLjE0LTIgMC0uNjgtLjA2LTEuMzQtLjE0LTJoMy4zOGMuMTYuNjQuMjYgMS4zMS4yNiAycy0uMSAxLjM2LS4yNiAyaC0zLjM4eiIvPjwvc3ZnPg=="; @@ -7787,29 +7795,29 @@ dispName:"Lifeline"},{val:"orthogonalPerimeter",dispName:"Orthogonal"},{val:"bac {name:"resizable",dispName:"Resizable",type:"bool",defVal:!0},{name:"resizeWidth",dispName:"Resize Width",type:"bool",defVal:!1},{name:"resizeHeight",dispName:"Resize Height",type:"bool",defVal:!1},{name:"rotatable",dispName:"Rotatable",type:"bool",defVal:!0},{name:"cloneable",dispName:"Cloneable",type:"bool",defVal:!0},{name:"deletable",dispName:"Deletable",type:"bool",defVal:!0}];Editor.defaultCsvValue='##\n## Example CSV import. Use ## for comments and # for configuration. Paste CSV below.\n## The following names are reserved and should not be used (or ignored):\n## id, tooltip, placeholder(s), link and label (see below)\n##\n#\n## Node label with placeholders and HTML.\n## Default is \'%name_of_first_column%\'.\n#\n# label: %name%<br><i style="color:gray;">%position%</i><br><a href="mailto:%email%">Email</a>\n#\n## Node style (placeholders are replaced once).\n## Default is the current style for nodes.\n#\n# style: label;image=%image%;whiteSpace=wrap;html=1;rounded=1;fillColor=%fill%;strokeColor=%stroke%;\n#\n## Parent style for nodes with child nodes (placeholders are replaced once).\n#\n# parentstyle: swimlane;whiteSpace=wrap;html=1;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;\n#\n## Uses the given column name as the identity for cells (updates existing cells).\n## Default is no identity (empty value or -).\n#\n# identity: -\n#\n## Uses the given column name as the parent reference for cells. Default is no parent (empty or -).\n## The identity above is used for resolving the reference so it must be specified.\n#\n# parent: -\n#\n## Adds a prefix to the identity of cells to make sure they do not collide with existing cells (whose\n## IDs are numbers from 0..n, sometimes with a GUID prefix in the context of realtime collaboration).\n## Default is csvimport-.\n#\n# namespace: csvimport-\n#\n## Connections between rows ("from": source colum, "to": target column).\n## Label, style and invert are optional. Defaults are \'\', current style and false.\n## In addition to label, an optional fromlabel and tolabel can be used to name the column\n## that contains the text for the label in the edges source or target (invert ignored).\n## The label is concatenated in the form fromlabel + label + tolabel if all are defined.\n## The target column may contain a comma-separated list of values.\n## Multiple connect entries are allowed.\n#\n# connect: {"from": "manager", "to": "name", "invert": true, "label": "manages", \\\n# "style": "curved=1;endArrow=blockThin;endFill=1;fontSize=11;"}\n# connect: {"from": "refs", "to": "id", "style": "curved=1;fontSize=11;"}\n#\n## Node x-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# left: \n#\n## Node y-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# top: \n#\n## Node width. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the width. Default is auto.\n#\n# width: auto\n#\n## Node height. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the height. Default is auto.\n#\n# height: auto\n#\n## Padding for autosize. Default is 0.\n#\n# padding: -12\n#\n## Comma-separated list of ignored columns for metadata. (These can be\n## used for connections and styles but will not be added as metadata.)\n#\n# ignore: id,image,fill,stroke\n#\n## Column to be renamed to link attribute (used as link).\n#\n# link: url\n#\n## Spacing between nodes. Default is 40.\n#\n# nodespacing: 40\n#\n## Spacing between levels of hierarchical layouts. Default is 100.\n#\n# levelspacing: 100\n#\n## Spacing between parallel edges. Default is 40.\n#\n# edgespacing: 40\n#\n## Name of layout. Possible values are auto, none, verticaltree, horizontaltree,\n## verticalflow, horizontalflow, organic, circle. Default is auto.\n#\n# layout: auto\n#\n## ---- CSV below this line. First line are column names. ----\nname,position,id,location,manager,email,fill,stroke,refs,url,image\nEvan Miller,CFO,emi,Office 1,,me@example.com,#dae8fc,#6c8ebf,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-9-2-128.png\nEdward Morrison,Brand Manager,emo,Office 2,Evan Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-10-3-128.png\nRon Donovan,System Admin,rdo,Office 3,Evan Miller,me@example.com,#d5e8d4,#82b366,"emo,tva",https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-2-128.png\nTessa Valet,HR Director,tva,Office 4,Evan Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-3-128.png\n'; Editor.shadowOptionEnabled=!0;Editor.config=null;Editor.configVersion=null;Editor.configure=function(a,b){if(null!=a){Editor.config=a;Editor.configVersion=a.version;Menus.prototype.defaultFonts=a.defaultFonts||Menus.prototype.defaultFonts;ColorDialog.prototype.presetColors=a.presetColors||ColorDialog.prototype.presetColors;ColorDialog.prototype.defaultColors=a.defaultColors||ColorDialog.prototype.defaultColors;StyleFormatPanel.prototype.defaultColorSchemes=a.defaultColorSchemes||StyleFormatPanel.prototype.defaultColorSchemes; Graph.prototype.defaultEdgeLength=a.defaultEdgeLength||Graph.prototype.defaultEdgeLength;null!=a.templateFile&&(EditorUi.templateFile=a.templateFile);a.customFonts&&(Menus.prototype.defaultFonts=a.customFonts.concat(Menus.prototype.defaultFonts));a.customPresetColors&&(ColorDialog.prototype.presetColors=a.customPresetColors.concat(ColorDialog.prototype.presetColors));null!=a.customColorSchemes&&(StyleFormatPanel.prototype.defaultColorSchemes=a.customColorSchemes.concat(StyleFormatPanel.prototype.defaultColorSchemes)); -if(null!=a.css){var c=document.createElement("style");c.setAttribute("type","text/css");c.appendChild(document.createTextNode(a.css));var g=document.getElementsByTagName("script")[0];g.parentNode.insertBefore(c,g)}null!=a.libraries&&(Sidebar.prototype.customEntries=a.libraries);null!=a.enabledLibraries&&(Sidebar.prototype.enabledLibraries=a.enabledLibraries);null!=a.defaultLibraries&&(Sidebar.prototype.defaultEntries=a.defaultLibraries);null!=a.defaultCustomLibraries&&(Editor.defaultCustomLibraries= +if(null!=a.css){var c=document.createElement("style");c.setAttribute("type","text/css");c.appendChild(document.createTextNode(a.css));var f=document.getElementsByTagName("script")[0];f.parentNode.insertBefore(c,f)}null!=a.libraries&&(Sidebar.prototype.customEntries=a.libraries);null!=a.enabledLibraries&&(Sidebar.prototype.enabledLibraries=a.enabledLibraries);null!=a.defaultLibraries&&(Sidebar.prototype.defaultEntries=a.defaultLibraries);null!=a.defaultCustomLibraries&&(Editor.defaultCustomLibraries= a.defaultCustomLibraries);null!=a.enableCustomLibraries&&(Editor.enableCustomLibraries=a.enableCustomLibraries);null!=a.defaultVertexStyle&&(Graph.prototype.defaultVertexStyle=a.defaultVertexStyle);null!=a.defaultEdgeStyle&&(Graph.prototype.defaultEdgeStyle=a.defaultEdgeStyle);a.emptyDiagramXml&&(EditorUi.prototype.emptyDiagramXml=a.emptyDiagramXml);a.thumbWidth&&(Sidebar.prototype.thumbWidth=a.thumbWidth);a.thumbHeight&&(Sidebar.prototype.thumbHeight=a.thumbHeight);a.emptyLibraryXml&&(EditorUi.prototype.emptyLibraryXml= -a.emptyLibraryXml);a.sidebarWidth&&(EditorUi.prototype.hsplitPosition=a.sidebarWidth);a.fontCss&&(c=document.createElement("style"),c.setAttribute("type","text/css"),c.appendChild(document.createTextNode(a.fontCss)),g=document.getElementsByTagName("script")[0],g.parentNode.insertBefore(c,g),Editor.prototype.fontCss=a.fontCss);if(null!=a.plugins&&!b)for(App.initPluginCallback(),c=0;c<a.plugins.length;c++)mxscript(a.plugins[c])}};Editor.GUID_ALPHABET="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_"; +a.emptyLibraryXml);a.sidebarWidth&&(EditorUi.prototype.hsplitPosition=a.sidebarWidth);a.fontCss&&(c=document.createElement("style"),c.setAttribute("type","text/css"),c.appendChild(document.createTextNode(a.fontCss)),f=document.getElementsByTagName("script")[0],f.parentNode.insertBefore(c,f),Editor.prototype.fontCss=a.fontCss);if(null!=a.plugins&&!b)for(App.initPluginCallback(),c=0;c<a.plugins.length;c++)mxscript(a.plugins[c])}};Editor.GUID_ALPHABET="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_"; Editor.GUID_LENGTH=20;Editor.guid=function(a){a=null!=a?a:Editor.GUID_LENGTH;for(var b=[],c=0;c<a;c++)b.push(Editor.GUID_ALPHABET.charAt(Math.floor(Math.random()*Editor.GUID_ALPHABET.length)));return b.join("")};Editor.prototype.useForeignObjectForMath=!1;Editor.prototype.editButtonLink=null!=urlParams.edit?decodeURIComponent(urlParams.edit):null;var a=Editor.prototype.setGraphXml;Editor.prototype.setGraphXml=function(b){b=null!=b&&"mxlibrary"!=b.nodeName?this.extractGraphModel(b):null;if(null!=b){var c= -b.getElementsByTagName("parsererror");if(null!=c&&0<c.length){var c=c[0],g=c.getElementsByTagName("div");null!=g&&0<g.length&&(c=g[0]);throw{message:mxUtils.getTextContent(c)};}if("mxGraphModel"==b.nodeName){c=b.getAttribute("style")||"default-style2";if("1"==urlParams.embed||null!=c&&""!=c)c!=this.graph.currentStyle&&(g=null!=this.graph.themes?this.graph.themes[c]:mxUtils.load(STYLE_PATH+"/"+c+".xml").getDocumentElement(),null!=g&&(d=new mxCodec(g.ownerDocument),d.decode(g,this.graph.getStylesheet()))); -else if(g=null!=this.graph.themes?this.graph.themes["default-old"]:mxUtils.load(STYLE_PATH+"/default-old.xml").getDocumentElement(),null!=g){var d=new mxCodec(g.ownerDocument);d.decode(g,this.graph.getStylesheet())}this.graph.currentStyle=c;this.graph.mathEnabled="1"==urlParams.math||"1"==b.getAttribute("math");c=b.getAttribute("backgroundImage");null!=c?(c=JSON.parse(c),this.graph.setBackgroundImage(new mxImage(c.src,c.width,c.height))):this.graph.setBackgroundImage(null);mxClient.NO_FO=this.graph.mathEnabled&& +b.getElementsByTagName("parsererror");if(null!=c&&0<c.length){var c=c[0],f=c.getElementsByTagName("div");null!=f&&0<f.length&&(c=f[0]);throw{message:mxUtils.getTextContent(c)};}if("mxGraphModel"==b.nodeName){c=b.getAttribute("style")||"default-style2";if("1"==urlParams.embed||null!=c&&""!=c)c!=this.graph.currentStyle&&(f=null!=this.graph.themes?this.graph.themes[c]:mxUtils.load(STYLE_PATH+"/"+c+".xml").getDocumentElement(),null!=f&&(d=new mxCodec(f.ownerDocument),d.decode(f,this.graph.getStylesheet()))); +else if(f=null!=this.graph.themes?this.graph.themes["default-old"]:mxUtils.load(STYLE_PATH+"/default-old.xml").getDocumentElement(),null!=f){var d=new mxCodec(f.ownerDocument);d.decode(f,this.graph.getStylesheet())}this.graph.currentStyle=c;this.graph.mathEnabled="1"==urlParams.math||"1"==b.getAttribute("math");c=b.getAttribute("backgroundImage");null!=c?(c=JSON.parse(c),this.graph.setBackgroundImage(new mxImage(c.src,c.width,c.height))):this.graph.setBackgroundImage(null);mxClient.NO_FO=this.graph.mathEnabled&& !this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();this.graph.setShadowVisible("1"==b.getAttribute("shadow"),!1)}a.apply(this,arguments)}else throw{message:mxResources.get("notADiagramFile")||"Invalid data",toString:function(){return this.message}};};var c=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=function(a){a=null!=a?a:!0;var b=c.apply(this, arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&b.setAttribute("style",this.graph.currentStyle);null!=this.graph.backgroundImage&&b.setAttribute("backgroundImage",JSON.stringify(this.graph.backgroundImage));b.setAttribute("math",this.graph.mathEnabled?"1":"0");b.setAttribute("shadow",this.graph.shadowVisible?"1":"0");return b};Editor.prototype.isDataSvg=function(a){try{var b=mxUtils.parseXml(a).documentElement.getAttribute("content");if(null!=b&&(null!=b&&"<"!= -b.charAt(0)&&"%"!=b.charAt(0)&&(b=unescape(window.atob?atob(b):Base64.decode(cont,b))),null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b)),null!=b&&0<b.length)){var c=mxUtils.parseXml(b).documentElement;return"mxfile"==c.nodeName||"mxGraphModel"==c.nodeName}}catch(A){}return!1};Editor.prototype.extractGraphModel=function(a,b){if(null!=a&&"undefined"!==typeof pako){var c=a.ownerDocument.getElementsByTagName("div"),g=[];if(null!=c&&0<c.length)for(var d=0;d<c.length;d++)if("mxgraph"==c[d].getAttribute("class")){g.push(c[d]); -break}0<g.length&&(c=g[0].getAttribute("data-mxgraph"),null!=c?(g=JSON.parse(c),null!=g&&null!=g.xml&&(g=mxUtils.parseXml(g.xml),a=g.documentElement)):(g=g[0].getElementsByTagName("div"),0<g.length&&(c=mxUtils.getTextContent(g[0]),c=this.graph.decompress(c),0<c.length&&(g=mxUtils.parseXml(c),a=g.documentElement))))}if(null!=a&&"svg"==a.nodeName)if(c=a.getAttribute("content"),null!=c&&"<"!=c.charAt(0)&&"%"!=c.charAt(0)&&(c=unescape(window.atob?atob(c):Base64.decode(cont,c))),null!=c&&"%"==c.charAt(0)&& -(c=decodeURIComponent(c)),null!=c&&0<c.length)a=mxUtils.parseXml(c).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==a||b||(g=null,"diagram"==a.nodeName?g=a:"mxfile"==a.nodeName&&(c=a.getElementsByTagName("diagram"),0<c.length&&(g=c[Math.max(0,Math.min(c.length-1,urlParams.page||0))])),null!=g&&(c=this.graph.decompress(mxUtils.getTextContent(g)),null!=c&&0<c.length&&(a=mxUtils.parseXml(c).documentElement)));null==a||"mxGraphModel"==a.nodeName||b&&"mxfile"==a.nodeName|| +b.charAt(0)&&"%"!=b.charAt(0)&&(b=unescape(window.atob?atob(b):Base64.decode(cont,b))),null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b)),null!=b&&0<b.length)){var c=mxUtils.parseXml(b).documentElement;return"mxfile"==c.nodeName||"mxGraphModel"==c.nodeName}}catch(D){}return!1};Editor.prototype.extractGraphModel=function(a,b){if(null!=a&&"undefined"!==typeof pako){var c=a.ownerDocument.getElementsByTagName("div"),f=[];if(null!=c&&0<c.length)for(var d=0;d<c.length;d++)if("mxgraph"==c[d].getAttribute("class")){f.push(c[d]); +break}0<f.length&&(c=f[0].getAttribute("data-mxgraph"),null!=c?(f=JSON.parse(c),null!=f&&null!=f.xml&&(f=mxUtils.parseXml(f.xml),a=f.documentElement)):(f=f[0].getElementsByTagName("div"),0<f.length&&(c=mxUtils.getTextContent(f[0]),c=this.graph.decompress(c),0<c.length&&(f=mxUtils.parseXml(c),a=f.documentElement))))}if(null!=a&&"svg"==a.nodeName)if(c=a.getAttribute("content"),null!=c&&"<"!=c.charAt(0)&&"%"!=c.charAt(0)&&(c=unescape(window.atob?atob(c):Base64.decode(cont,c))),null!=c&&"%"==c.charAt(0)&& +(c=decodeURIComponent(c)),null!=c&&0<c.length)a=mxUtils.parseXml(c).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==a||b||(f=null,"diagram"==a.nodeName?f=a:"mxfile"==a.nodeName&&(c=a.getElementsByTagName("diagram"),0<c.length&&(f=c[Math.max(0,Math.min(c.length-1,urlParams.page||0))])),null!=f&&(c=this.graph.decompress(mxUtils.getTextContent(f)),null!=c&&0<c.length&&(a=mxUtils.parseXml(c).documentElement)));null==a||"mxGraphModel"==a.nodeName||b&&"mxfile"==a.nodeName|| (a=null);return a};var b=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled="1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0=null;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();b.apply(this,arguments)};var d=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphComponents= function(){d.apply(this,arguments);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath&&null!=Editor.MathJaxRender?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform()};Editor.initMath=function(a,b){a=null!=a?a:"https://math.draw.io/current/MathJax.js?config=TeX-MML-AM_HTMLorMML";Editor.mathJaxQueue=[];Editor.doMathJaxRender=function(a){window.setTimeout(function(){"hidden"!= a.style.visibility&&MathJax.Hub.Queue(["Typeset",MathJax.Hub,a])},0)};window.MathJax={skipStartupTypeset:!0,showMathMenu:!1,messageStyle:"none",AuthorInit:function(){MathJax.Hub.Config(b||{jax:["input/TeX","input/MathML","input/AsciiMath","output/HTML-CSS"],extensions:["tex2jax.js","mml2jax.js","asciimath2jax.js"],"HTML-CSS":{imageFont:null},TeX:{extensions:["AMSmath.js","AMSsymbols.js","noErrors.js","noUndefined.js"]},tex2jax:{ignoreClass:"mxCellEditor"},asciimath2jax:{ignoreClass:"mxCellEditor"}}); MathJax.Hub.Register.StartupHook("Begin",function(){for(var a=0;a<Editor.mathJaxQueue.length;a++)Editor.doMathJaxRender(Editor.mathJaxQueue[a])})}};Editor.MathJaxRender=function(a){"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?Editor.doMathJaxRender(a):Editor.mathJaxQueue.push(a)};Editor.MathJaxClear=function(){Editor.mathJaxQueue=[]};var c=Editor.prototype.init;Editor.prototype.init=function(){c.apply(this,arguments);this.graph.addListener(mxEvent.SIZE,mxUtils.bind(this,function(a, -b){null!=this.graph.container&&this.graph.mathEnabled&&Editor.MathJaxRender(this.graph.container)}))};var g=document.getElementsByTagName("script");if(null!=g&&0<g.length){var d=document.createElement("script");d.type="text/javascript";d.src=a;g[0].parentNode.appendChild(d)}};Editor.prototype.csvToArray=function(a){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(a))return null; -var b=[];a.replace(/(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g,function(a,c,g,d){void 0!==c?b.push(c.replace(/\\'/g,"'")):void 0!==g?b.push(g.replace(/\\"/g,'"')):void 0!==d&&b.push(d);return""});/,\s*$/.test(a)&&b.push("");return b};if(window.ColorDialog){var f=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(a,b){f.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}; -var h=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){h.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&(EditDataDialog.getDisplayIdForCell=function(a,b){var c=null;null!=a.editor.graph.getModel().getParent(b)?c=b.getId():null!=a.currentPage&&(c=a.currentPage.getId());return c});if(null!=window.StyleFormatPanel){var k=Format.prototype.init;Format.prototype.init=function(){k.apply(this,arguments);this.editorUi.editor.addListener("fileLoaded", -this.update)};var m=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?m.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var a=this.editorUi.getCurrentFile();return"1"==urlParams.embed||null!=a&&a.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=function(a){return!1};var p=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView= -function(a){a=p.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var b=this.editorUi,c=b.editor.graph,g=this.createOption(mxResources.get("shadow"),function(){return c.shadowVisible},function(a){var g=new ChangePageSetup(b);g.ignoreColor=!0;g.ignoreImage=!0;g.shadowVisible=a;c.model.execute(g)},{install:function(a){this.listener=function(){a(c.shadowVisible)};b.addListener("shadowVisibleChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}}); -Editor.shadowOptionEnabled||(g.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(g,60));a.appendChild(g)}return a};var g=DiagramFormatPanel.prototype.addOptions;DiagramFormatPanel.prototype.addOptions=function(a){a=g.apply(this,arguments);var b=this.editorUi,c=b.editor.graph;if(c.isEnabled()){var d=b.getCurrentFile();null!=d&&d.isAutosaveOptional()&&(d=this.createOption(mxResources.get("autosave"),function(){return b.editor.autosave},function(a){b.editor.setAutosave(a)}, -{install:function(a){this.listener=function(){a(b.editor.autosave)};b.editor.addListener("autosaveChanged",this.listener)},destroy:function(){b.editor.removeListener(this.listener)}}),a.appendChild(d))}if(this.isMathOptionVisible()&&c.isEnabled()&&"undefined"!==typeof MathJax){d=this.createOption(mxResources.get("mathematicalTypesetting"),function(){return c.mathEnabled},function(a){b.actions.get("mathematicalTypesetting").funct()},{install:function(a){this.listener=function(){a(c.mathEnabled)};b.addListener("mathEnabledChanged", -this.listener)},destroy:function(){b.removeListener(this.listener)}});d.style.paddingTop="5px";a.appendChild(d);var l=b.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000032875");l.style.position="relative";l.style.marginLeft="6px";l.style.top="2px";d.appendChild(l)}return a};mxCellRenderer.prototype.defaultVertexShape.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"absoluteArcSize",dispName:"Abs. Arc Size", +b){null!=this.graph.container&&this.graph.mathEnabled&&Editor.MathJaxRender(this.graph.container)}))};var f=document.getElementsByTagName("script");if(null!=f&&0<f.length){var d=document.createElement("script");d.type="text/javascript";d.src=a;f[0].parentNode.appendChild(d)}};Editor.prototype.csvToArray=function(a){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(a))return null; +var b=[];a.replace(/(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g,function(a,c,f,d){void 0!==c?b.push(c.replace(/\\'/g,"'")):void 0!==f?b.push(f.replace(/\\"/g,'"')):void 0!==d&&b.push(d);return""});/,\s*$/.test(a)&&b.push("");return b};if(window.ColorDialog){var g=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(a,b){g.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}; +var e=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){e.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&(EditDataDialog.getDisplayIdForCell=function(a,b){var c=null;null!=a.editor.graph.getModel().getParent(b)?c=b.getId():null!=a.currentPage&&(c=a.currentPage.getId());return c});if(null!=window.StyleFormatPanel){var k=Format.prototype.init;Format.prototype.init=function(){k.apply(this,arguments);this.editorUi.editor.addListener("fileLoaded", +this.update)};var m=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?m.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var a=this.editorUi.getCurrentFile();return"1"==urlParams.embed||null!=a&&a.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=function(a){return!1};var n=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView= +function(a){a=n.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var b=this.editorUi,c=b.editor.graph,f=this.createOption(mxResources.get("shadow"),function(){return c.shadowVisible},function(a){var f=new ChangePageSetup(b);f.ignoreColor=!0;f.ignoreImage=!0;f.shadowVisible=a;c.model.execute(f)},{install:function(a){this.listener=function(){a(c.shadowVisible)};b.addListener("shadowVisibleChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}}); +Editor.shadowOptionEnabled||(f.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(f,60));a.appendChild(f)}return a};var q=DiagramFormatPanel.prototype.addOptions;DiagramFormatPanel.prototype.addOptions=function(a){a=q.apply(this,arguments);var b=this.editorUi,c=b.editor.graph;if(c.isEnabled()){var f=b.getCurrentFile();null!=f&&f.isAutosaveOptional()&&(f=this.createOption(mxResources.get("autosave"),function(){return b.editor.autosave},function(a){b.editor.setAutosave(a)}, +{install:function(a){this.listener=function(){a(b.editor.autosave)};b.editor.addListener("autosaveChanged",this.listener)},destroy:function(){b.editor.removeListener(this.listener)}}),a.appendChild(f))}if(this.isMathOptionVisible()&&c.isEnabled()&&"undefined"!==typeof MathJax){f=this.createOption(mxResources.get("mathematicalTypesetting"),function(){return c.mathEnabled},function(a){b.actions.get("mathematicalTypesetting").funct()},{install:function(a){this.listener=function(){a(c.mathEnabled)};b.addListener("mathEnabledChanged", +this.listener)},destroy:function(){b.removeListener(this.listener)}});f.style.paddingTop="5px";a.appendChild(f);var d=b.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000032875");d.style.position="relative";d.style.marginLeft="6px";d.style.top="2px";f.appendChild(d)}return a};mxCellRenderer.prototype.defaultVertexShape.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"absoluteArcSize",dispName:"Abs. Arc Size", type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.link.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:4}];mxCellRenderer.defaultShapes.flexArrow.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:10},{name:"startWidth",dispName:"Start Width",type:"float",min:0,defVal:20},{name:"endWidth",dispName:"End Width",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.process.prototype.customProperties=[{name:"size",dispName:"Indent", type:"float",min:0,max:.5,defVal:.1}];mxCellRenderer.defaultShapes.rhombus.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,max:50,defVal:mxConstants.LINE_ARCSIZE},{name:"double",dispName:"Double",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.partialRectangle.prototype.customProperties=[{name:"top",dispName:"Top Line",type:"bool",defVal:!0},{name:"bottom",dispName:"Bottom Line",type:"bool",defVal:!0},{name:"left",dispName:"Left Line",type:"bool",defVal:!0}, {name:"right",dispName:"Right Line",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.parallelogram.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.hexagon.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1, @@ -7830,427 +7838,427 @@ defVal:60,min:0},{name:"height",dispName:"Title Height",type:"float",defVal:30,m stroke:"#006EAF",font:"#ffffff"},{fill:"#0050ef",stroke:"#001DBC",font:"#ffffff"},{fill:"#6a00ff",stroke:"#3700CC",font:"#ffffff"},{fill:"#aa00ff",stroke:"#7700CC",font:"#ffffff"},{fill:"#d80073",stroke:"#A50040",font:"#ffffff"},{fill:"#a20025",stroke:"#6F0000",font:"#ffffff"}],[{fill:"#e51400",stroke:"#B20000",font:"#ffffff"},{fill:"#fa6800",stroke:"#C73500",font:"#ffffff"},{fill:"#f0a30a",stroke:"#BD7000",font:"#ffffff"},{fill:"#e3c800",stroke:"#B09500",font:"#ffffff"},{fill:"#6d8764",stroke:"#3A5431", font:"#ffffff"},{fill:"#647687",stroke:"#314354",font:"#ffffff"},{fill:"#76608a",stroke:"#432D57",font:"#ffffff"},{fill:"#a0522d",stroke:"#6D1F00",font:"#ffffff"}],[null,{fill:mxConstants.NONE,stroke:"#36393d"},{fill:"#fad7ac",stroke:"#b46504"},{fill:"#fad9d5",stroke:"#ae4132"},{fill:"#b0e3e6",stroke:"#0e8088"},{fill:"#b1ddf0",stroke:"#10739e"},{fill:"#d0cee2",stroke:"#56517e"},{fill:"#bac8d3",stroke:"#23445d"}],[null,{fill:"#f5f5f5",stroke:"#666666",gradient:"#b3b3b3"},{fill:"#dae8fc",stroke:"#6c8ebf", gradient:"#7ea6e0"},{fill:"#d5e8d4",stroke:"#82b366",gradient:"#97d077"},{fill:"#ffcd28",stroke:"#d79b00",gradient:"#ffa500"},{fill:"#fff2cc",stroke:"#d6b656",gradient:"#ffd966"},{fill:"#f8cecc",stroke:"#b85450",gradient:"#ea6b66"},{fill:"#e6d0de",stroke:"#996185",gradient:"#d5739d"}],[null,{fill:"#eeeeee",stroke:"#36393d"},{fill:"#f9f7ed",stroke:"#36393d"},{fill:"#ffcc99",stroke:"#36393d"},{fill:"#cce5ff",stroke:"#36393d"},{fill:"#ffff88",stroke:"#36393d"},{fill:"#cdeb8b",stroke:"#36393d"},{fill:"#ffcccc", -stroke:"#36393d"}]];StyleFormatPanel.prototype.customColorSchemes=null;StyleFormatPanel.prototype.findCommonProperties=function(a,b,c){if(null!=b){var g=function(a){if(null!=a)if(c)for(var g=0;g<a.length;g++)b[a[g].name]=a[g];else for(var d in b){for(var l=!1,g=0;g<a.length;g++)if(a[g].name==d&&a[g].type==b[d].type){l=!0;break}l||delete b[d]}},d=this.editorUi.editor.graph.view.getState(a);null!=d&&null!=d.shape&&(d.shape.commonCustomPropAdded||(d.shape.commonCustomPropAdded=!0,d.shape.customProperties= -d.shape.customProperties||[],d.cell.vertex?Array.prototype.push.apply(d.shape.customProperties,Editor.commonVertexProperties):Array.prototype.push.apply(d.shape.customProperties,Editor.commonEdgeProperties)),g(d.shape.customProperties));a=a.getAttribute("customProperties");if(null!=a)try{g(JSON.parse(a))}catch(B){}}};var l=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var a=this.format.createSelectionState();"image"!=a.style.shape&&this.container.appendChild(this.addStyles(this.createPanel())); -l.apply(this,arguments);if(Editor.enableCustomProperties){for(var b={},c=a.vertices,g=a.edges,d=0;d<c.length;d++)this.findCommonProperties(c[d],b,0==d);for(d=0;d<g.length;d++)this.findCommonProperties(g[d],b,0==c.length&&0==d);0<Object.getOwnPropertyNames(b).length&&this.container.appendChild(this.addProperties(this.createPanel(),b,a))}};var n=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(a){var b=mxUtils.button(mxResources.get("copyStyle"),mxUtils.bind(this, +stroke:"#36393d"}]];StyleFormatPanel.prototype.customColorSchemes=null;StyleFormatPanel.prototype.findCommonProperties=function(a,b,c){if(null!=b){var f=function(a){if(null!=a)if(c)for(var f=0;f<a.length;f++)b[a[f].name]=a[f];else for(var d in b){for(var l=!1,f=0;f<a.length;f++)if(a[f].name==d&&a[f].type==b[d].type){l=!0;break}l||delete b[d]}},d=this.editorUi.editor.graph.view.getState(a);null!=d&&null!=d.shape&&(d.shape.commonCustomPropAdded||(d.shape.commonCustomPropAdded=!0,d.shape.customProperties= +d.shape.customProperties||[],d.cell.vertex?Array.prototype.push.apply(d.shape.customProperties,Editor.commonVertexProperties):Array.prototype.push.apply(d.shape.customProperties,Editor.commonEdgeProperties)),f(d.shape.customProperties));a=a.getAttribute("customProperties");if(null!=a)try{f(JSON.parse(a))}catch(I){}}};var f=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var a=this.format.createSelectionState();"image"!=a.style.shape&&this.container.appendChild(this.addStyles(this.createPanel())); +f.apply(this,arguments);if(Editor.enableCustomProperties){for(var b={},c=a.vertices,d=a.edges,l=0;l<c.length;l++)this.findCommonProperties(c[l],b,0==l);for(l=0;l<d.length;l++)this.findCommonProperties(d[l],b,0==c.length&&0==l);0<Object.getOwnPropertyNames(b).length&&this.container.appendChild(this.addProperties(this.createPanel(),b,a))}};var l=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(a){var b=mxUtils.button(mxResources.get("copyStyle"),mxUtils.bind(this, function(a){this.editorUi.actions.get("copyStyle").funct()}));b.setAttribute("title",mxResources.get("copyStyle")+" ("+this.editorUi.actions.get("copyStyle").shortcut+")");b.style.marginBottom="2px";b.style.width="100px";b.style.marginRight="2px";a.appendChild(b);b=mxUtils.button(mxResources.get("pasteStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("pasteStyle").funct()}));b.setAttribute("title",mxResources.get("pasteStyle")+" ("+this.editorUi.actions.get("pasteStyle").shortcut+")"); -b.style.marginBottom="2px";b.style.width="100px";a.appendChild(b);mxUtils.br(a);return n.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=function(a,b,c){function g(a,b,c,g){t.getModel().beginUpdate();try{var d=[],l=[];if(null!=c.index){for(var n=[],f=c.parentRow.nextSibling;f&&f.getAttribute("data-pName")==a;)n.push(f.getAttribute("data-pValue")),f=f.nextSibling;c.index<n.length?null!=g?n.splice(g,1):n[c.index]=b:n.push(b);null!=c.size&&n.length> -c.size&&(n=n.slice(0,c.size));b=n.join(",");null!=c.countProperty&&(t.setCellStyles(c.countProperty,n.length,t.getSelectionCells()),d.push(c.countProperty),l.push(n.length))}t.setCellStyles(a,b,t.getSelectionCells());d.push(a);l.push(b);if(null!=c.dependentProps)for(a=0;a<c.dependentProps.length;a++){var h=c.dependentPropsDefVal[a],u=c.dependentPropsVals[a];if(u.length>b)u=u.slice(0,b);else for(var k=u.length;k<b;k++)u.push(h);u=u.join(",");t.setCellStyles(c.dependentProps[a],u,t.getSelectionCells()); -d.push(c.dependentProps[a]);l.push(u)}q.editorUi.fireEvent(new mxEventObject("styleChanged","keys",d,"values",l,"cells",t.getSelectionCells()))}finally{t.getModel().endUpdate()}}function d(b,c,g){var d=mxUtils.getOffset(a,!0),l=mxUtils.getOffset(b,!0);c.style.position="absolute";c.style.left=l.x-d.x+"px";c.style.top=l.y-d.y+"px";c.style.width=b.offsetWidth+"px";c.style.height=b.offsetHeight-(g?4:0)+"px";c.style.zIndex=5}function l(a,b,c){var d=document.createElement("div");d.style.width="32px";d.style.height= -"4px";d.style.margin="2px";d.style.border="1px solid black";d.style.background=b&&"none"!=b?b:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(q,function(l){this.editorUi.pickColor(b,function(b){d.style.background="none"==b?"url('"+Dialog.prototype.noColorImage+"')":b;g(a,b,c)});mxEvent.consume(l)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(d);return btn}function n(a,b,c,d,l,n,f){null!=b&&(b=b.split(","),k.push({name:a, -values:b,type:c,defVal:d,countProperty:l,parentRow:n,isDeletable:!0,flipBkg:f}));btn=mxUtils.button("+",mxUtils.bind(q,function(b){for(var h=n,q=0;null!=h.nextSibling;)if(h.nextSibling.getAttribute("data-pName")==a)h=h.nextSibling,q++;else break;var t={type:c,parentRow:n,index:q,isDeletable:!0,defVal:d,countProperty:l},q=u(a,"",t,0==q%2,f);g(a,d,t);h.parentNode.insertBefore(q,h.nextSibling);mxEvent.consume(b)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn} -function f(a,b,c,g,d,l,n){if(0<d){var f=Array(d);b=null!=b?b.split(","):[];for(var h=0;h<d;h++)f[h]=null!=b[h]?b[h]:null!=g?g:"";k.push({name:a,values:f,type:c,defVal:g,parentRow:l,flipBkg:n,size:d})}return document.createElement("div")}function h(a,b,c){var d=document.createElement("input");d.type="checkbox";d.checked="1"==b;mxEvent.addListener(d,"change",function(){g(a,d.checked?"1":"0",c)});return d}function u(b,c,u,t,k){var x=u.dispName,v=u.type,w=document.createElement("tr");w.className="gePropRow"+ -(k?"Dark":"")+(t?"Alt":"")+" gePropNonHeaderRow";w.setAttribute("data-pName",b);w.setAttribute("data-pValue",c);t=!1;null!=u.index&&(w.setAttribute("data-index",u.index),x=(null!=x?x:"")+"["+u.index+"]",t=!0);var m=document.createElement("td");m.className="gePropRowCell";m.innerHTML=mxUtils.htmlEntities(mxResources.get(x,null,x));t&&(m.style.textAlign="right");w.appendChild(m);m=document.createElement("td");m.className="gePropRowCell";if("color"==v)m.appendChild(l(b,c,u));else if("bool"==v||"boolean"== -v)m.appendChild(h(b,c,u));else if("enum"==v){var p=u.enumList;for(k=0;k<p.length;k++)if(x=p[k],x.val==c){m.innerHTML=mxUtils.htmlEntities(mxResources.get(x.dispName,null,x.dispName));break}mxEvent.addListener(m,"click",mxUtils.bind(q,function(){var l=document.createElement("select");d(m,l);for(var n=0;n<p.length;n++){var f=p[n],h=document.createElement("option");h.value=mxUtils.htmlEntities(f.val);h.innerHTML=mxUtils.htmlEntities(mxResources.get(f.dispName,null,f.dispName));l.appendChild(h)}l.value= -c;a.appendChild(l);mxEvent.addListener(l,"change",function(){var a=mxUtils.htmlEntities(l.value);g(b,a,u)});l.focus();mxEvent.addListener(l,"blur",function(){a.removeChild(l)})}))}else"dynamicArr"==v?m.appendChild(n(b,c,u.subType,u.subDefVal,u.countProperty,w,k)):"staticArr"==v?m.appendChild(f(b,c,u.subType,u.subDefVal,u.size,w,k)):(m.innerHTML=c,mxEvent.addListener(m,"click",mxUtils.bind(q,function(){function l(){var a=n.value,a=0==a.length&&"string"!=v?0:a;u.allowAuto&&("auto"==a.trim().toLowerCase()? -(a="auto",v="string"):(a=parseFloat(a),a=isNaN(a)?0:a));null!=u.min&&a<u.min?a=u.min:null!=u.max&&a>u.max&&(a=u.max);a=mxUtils.htmlEntities(("int"==v?parseInt(a):a)+"");g(b,a,u)}var n=document.createElement("input");d(m,n,!0);n.value=c;n.className="gePropEditor";"int"!=v&&"float"!=v||u.allowAuto||(n.type="number",n.step="int"==v?"1":"any",null!=u.min&&(n.min=parseFloat(u.min)),null!=u.max&&(n.max=parseFloat(u.max)));a.appendChild(n);mxEvent.addListener(n,"keypress",function(a){13==a.keyCode&&l()}); -n.focus();mxEvent.addListener(n,"blur",function(){l()})})));u.isDeletable&&(k=mxUtils.button("-",mxUtils.bind(q,function(a){g(b,"",u,u.index);mxEvent.consume(a)})),k.style.height="16px",k.style.width="25px",k.style["float"]="right",k.className="geColorBtn",m.appendChild(k));w.appendChild(m);return w}var q=this,t=this.editorUi.editor.graph,k=[];a.style.position="relative";a.style.padding="0";var v=document.createElement("table");v.style.whiteSpace="nowrap";v.style.width="100%";var x=document.createElement("tr"); -x.className="gePropHeader";var w=document.createElement("th");w.className="gePropHeaderCell";var m=document.createElement("img");m.src=Sidebar.prototype.expandedImage;w.appendChild(m);mxUtils.write(w,mxResources.get("property"));x.style.cursor="pointer";var p=function(){var b=v.querySelectorAll(".gePropNonHeaderRow"),c;if(q.editorUi.propertiesCollapsed){m.src=Sidebar.prototype.collapsedImage;c="none";for(var g=a.childNodes.length-1;0<=g;g--)try{var d=a.childNodes[g],l=d.nodeName.toUpperCase();"INPUT"!= -l&&"SELECT"!=l||a.removeChild(d)}catch(ga){}}else m.src=Sidebar.prototype.expandedImage,c="";for(g=0;g<b.length;g++)b[g].style.display=c};mxEvent.addListener(x,"click",function(){q.editorUi.propertiesCollapsed=!q.editorUi.propertiesCollapsed;p()});x.appendChild(w);w=document.createElement("th");w.className="gePropHeaderCell";w.innerHTML=mxResources.get("value");x.appendChild(w);v.appendChild(x);var F=!1,G=!1,y;for(y in b)if(x=b[y],"function"!=typeof x.isVisible||x.isVisible(c)){var z=null!=c.style[y]? -mxUtils.htmlEntities(c.style[y]+""):x.defVal;if("separator"==x.type)G=!G;else{if("staticArr"==x.type)x.size=parseInt(c.style[x.sizeProperty]||b[x.sizeProperty].defVal)||0;else if(null!=x.dependentProps){for(var X=x.dependentProps,P=[],U=[],w=0;w<X.length;w++){var S=c.style[X[w]];U.push(b[X[w]].subDefVal);P.push(null!=S?S.split(","):[])}x.dependentPropsDefVal=U;x.dependentPropsVals=P}v.appendChild(u(y,z,x,F,G));F=!F}}for(w=0;w<k.length;w++)for(x=k[w],b=x.parentRow,c=0;c<x.values.length;c++)y=u(x.name, -x.values[c],{type:x.type,parentRow:x.parentRow,isDeletable:x.isDeletable,index:c,defVal:x.defVal,countProperty:x.countProperty,size:x.size},0==c%2,x.flipBkg),b.parentNode.insertBefore(y,b.nextSibling),b=y;a.appendChild(v);p();return a};StyleFormatPanel.prototype.addStyles=function(a){function b(a){function b(a){var b=mxUtils.button("",function(b){g.getModel().beginUpdate();try{var c=g.getSelectionCells();for(b=0;b<c.length;b++){for(var d=g.getModel().getStyle(c[b]),n=0;n<l.length;n++)d=mxUtils.removeStylename(d, -l[n]);var f=g.getModel().isVertex(c[b])?g.defaultVertexStyle:g.defaultEdgeStyle;null!=a?(d=mxUtils.setStyle(d,mxConstants.STYLE_FILLCOLOR,a.fill||mxUtils.getValue(f,mxConstants.STYLE_FILLCOLOR,null)),d=mxUtils.setStyle(d,mxConstants.STYLE_STROKECOLOR,a.stroke||mxUtils.getValue(f,mxConstants.STYLE_STROKECOLOR,null)),d=mxUtils.setStyle(d,mxConstants.STYLE_GRADIENTCOLOR,a.gradient||mxUtils.getValue(f,mxConstants.STYLE_GRADIENTCOLOR,null)),g.getModel().isVertex(c[b])&&(d=mxUtils.setStyle(d,mxConstants.STYLE_FONTCOLOR, -a.font||mxUtils.getValue(f,mxConstants.STYLE_FONTCOLOR,null)))):(d=mxUtils.setStyle(d,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(f,mxConstants.STYLE_FILLCOLOR,"#ffffff")),d=mxUtils.setStyle(d,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(f,mxConstants.STYLE_STROKECOLOR,"#000000")),d=mxUtils.setStyle(d,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(f,mxConstants.STYLE_GRADIENTCOLOR,null)),g.getModel().isVertex(c[b])&&(d=mxUtils.setStyle(d,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(f,mxConstants.STYLE_FONTCOLOR, -null))));g.getModel().setStyle(c[b],d)}}finally{g.getModel().endUpdate()}});b.className="geStyleButton";b.style.width="36px";b.style.height="30px";b.style.margin="0px 6px 6px 0px";if(null!=a)null!=a.gradient?mxClient.IS_IE&&(mxClient.IS_QUIRKS||10>document.documentMode)?b.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+a.fill+"', EndColorStr='"+a.gradient+"', GradientType=0)":b.style.backgroundImage="linear-gradient("+a.fill+" 0px,"+a.gradient+" 100%)":a.fill==mxConstants.NONE? -b.style.background="url('"+Dialog.prototype.noColorImage+"')":b.style.backgroundColor=a.fill||mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),b.style.border="1px solid "+(a.stroke||mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000"));else{var c=mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),n=mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");b.style.backgroundColor=c;b.style.border="1px solid "+ -n}d.appendChild(b)}d.innerHTML="";for(var c=0;c<a.length;c++)0<c&&0==mxUtils.mod(c,4)&&mxUtils.br(d),b(a[c])}function c(a){mxEvent.addListener(a,"mouseenter",function(){a.style.opacity="1"});mxEvent.addListener(a,"mouseleave",function(){a.style.opacity="0.5"})}var g=this.editorUi.editor.graph,d=document.createElement("div");d.style.whiteSpace="nowrap";d.style.paddingLeft="24px";d.style.paddingRight="20px";a.style.paddingLeft="16px";a.style.paddingBottom="6px";a.style.position="relative";a.appendChild(d); -var l="plain-gray plain-blue plain-green plain-turquoise plain-orange plain-yellow plain-red plain-pink plain-purple gray blue green turquoise orange yellow red pink purple".split(" ");null==this.editorUi.currentScheme&&(this.editorUi.currentScheme=0);var n=document.createElement("div");n.style.cssText="position:absolute;left:10px;top:8px;bottom:8px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);"; -mxEvent.addListener(n,"click",mxUtils.bind(this,function(){this.editorUi.currentScheme=mxUtils.mod(this.editorUi.currentScheme-1,this.defaultColorSchemes.length);b(this.defaultColorSchemes[this.editorUi.currentScheme])}));var f=document.createElement("div");f.style.cssText="position:absolute;left:202px;top:8px;bottom:8px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYBuwCcAAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADZJREFUCNdjQAOMAmBKaiGY8loF5rKswsZlrVo8AUiFrTICcbIWK8A5DF1gDoMymMPApIAwHwCS0Qx/U7qCBQAAAABJRU5ErkJggg==);"; -1<this.defaultColorSchemes.length&&(a.appendChild(n),a.appendChild(f));mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.editorUi.currentScheme=mxUtils.mod(this.editorUi.currentScheme+1,this.defaultColorSchemes.length);b(this.defaultColorSchemes[this.editorUi.currentScheme])}));c(n);c(f);b(this.defaultColorSchemes[this.editorUi.currentScheme]);return a};StyleFormatPanel.prototype.addEditOps=function(a){var b=this.format.getSelectionState(),c=null;1==this.editorUi.editor.graph.getSelectionCount()&& -(c=mxUtils.button(mxResources.get("editStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("editStyle").funct()})),c.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),c.style.width="202px",c.style.marginBottom="2px",a.appendChild(c));var g=this.editorUi.editor.graph,d=g.view.getState(g.getSelectionCell());1==g.getSelectionCount()&&null!=d&&null!=d.shape&&null!=d.shape.stencil?(b=mxUtils.button(mxResources.get("editShape"),mxUtils.bind(this, +b.style.marginBottom="2px";b.style.width="100px";a.appendChild(b);mxUtils.br(a);return l.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=function(a,b,c){function f(a,b,c,f){u.getModel().beginUpdate();try{var d=[],l=[];if(null!=c.index){for(var e=[],p=c.parentRow.nextSibling;p&&p.getAttribute("data-pName")==a;)e.push(p.getAttribute("data-pValue")),p=p.nextSibling;c.index<e.length?null!=f?e.splice(f,1):e[c.index]=b:e.push(b);null!=c.size&&e.length> +c.size&&(e=e.slice(0,c.size));b=e.join(",");null!=c.countProperty&&(u.setCellStyles(c.countProperty,e.length,u.getSelectionCells()),d.push(c.countProperty),l.push(e.length))}u.setCellStyles(a,b,u.getSelectionCells());d.push(a);l.push(b);if(null!=c.dependentProps)for(a=0;a<c.dependentProps.length;a++){var g=c.dependentPropsDefVal[a],v=c.dependentPropsVals[a];if(v.length>b)v=v.slice(0,b);else for(var t=v.length;t<b;t++)v.push(g);v=v.join(",");u.setCellStyles(c.dependentProps[a],v,u.getSelectionCells()); +d.push(c.dependentProps[a]);l.push(v)}y.editorUi.fireEvent(new mxEventObject("styleChanged","keys",d,"values",l,"cells",u.getSelectionCells()))}finally{u.getModel().endUpdate()}}function d(b,c,f){var d=mxUtils.getOffset(a,!0),l=mxUtils.getOffset(b,!0);c.style.position="absolute";c.style.left=l.x-d.x+"px";c.style.top=l.y-d.y+"px";c.style.width=b.offsetWidth+"px";c.style.height=b.offsetHeight-(f?4:0)+"px";c.style.zIndex=5}function l(a,b,c){var d=document.createElement("div");d.style.width="32px";d.style.height= +"4px";d.style.margin="2px";d.style.border="1px solid black";d.style.background=b&&"none"!=b?b:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(y,function(l){this.editorUi.pickColor(b,function(b){d.style.background="none"==b?"url('"+Dialog.prototype.noColorImage+"')":b;f(a,b,c)});mxEvent.consume(l)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(d);return btn}function e(a,b,c,d,l,e,p){null!=b&&(b=b.split(","),t.push({name:a, +values:b,type:c,defVal:d,countProperty:l,parentRow:e,isDeletable:!0,flipBkg:p}));btn=mxUtils.button("+",mxUtils.bind(y,function(b){for(var g=e,y=0;null!=g.nextSibling;)if(g.nextSibling.getAttribute("data-pName")==a)g=g.nextSibling,y++;else break;var u={type:c,parentRow:e,index:y,isDeletable:!0,defVal:d,countProperty:l},y=v(a,"",u,0==y%2,p);f(a,d,u);g.parentNode.insertBefore(y,g.nextSibling);mxEvent.consume(b)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn} +function p(a,b,c,f,d,l,e){if(0<d){var p=Array(d);b=null!=b?b.split(","):[];for(var g=0;g<d;g++)p[g]=null!=b[g]?b[g]:null!=f?f:"";t.push({name:a,values:p,type:c,defVal:f,parentRow:l,flipBkg:e,size:d})}return document.createElement("div")}function g(a,b,c){var d=document.createElement("input");d.type="checkbox";d.checked="1"==b;mxEvent.addListener(d,"change",function(){f(a,d.checked?"1":"0",c)});return d}function v(b,c,v,u,t){var k=v.dispName,x=v.type,m=document.createElement("tr");m.className="gePropRow"+ +(t?"Dark":"")+(u?"Alt":"")+" gePropNonHeaderRow";m.setAttribute("data-pName",b);m.setAttribute("data-pValue",c);u=!1;null!=v.index&&(m.setAttribute("data-index",v.index),k=(null!=k?k:"")+"["+v.index+"]",u=!0);var B=document.createElement("td");B.className="gePropRowCell";B.innerHTML=mxUtils.htmlEntities(mxResources.get(k,null,k));u&&(B.style.textAlign="right");m.appendChild(B);B=document.createElement("td");B.className="gePropRowCell";if("color"==x)B.appendChild(l(b,c,v));else if("bool"==x||"boolean"== +x)B.appendChild(g(b,c,v));else if("enum"==x){var n=v.enumList;for(t=0;t<n.length;t++)if(k=n[t],k.val==c){B.innerHTML=mxUtils.htmlEntities(mxResources.get(k.dispName,null,k.dispName));break}mxEvent.addListener(B,"click",mxUtils.bind(y,function(){var l=document.createElement("select");d(B,l);for(var e=0;e<n.length;e++){var p=n[e],g=document.createElement("option");g.value=mxUtils.htmlEntities(p.val);g.innerHTML=mxUtils.htmlEntities(mxResources.get(p.dispName,null,p.dispName));l.appendChild(g)}l.value= +c;a.appendChild(l);mxEvent.addListener(l,"change",function(){var a=mxUtils.htmlEntities(l.value);f(b,a,v)});l.focus();mxEvent.addListener(l,"blur",function(){a.removeChild(l)})}))}else"dynamicArr"==x?B.appendChild(e(b,c,v.subType,v.subDefVal,v.countProperty,m,t)):"staticArr"==x?B.appendChild(p(b,c,v.subType,v.subDefVal,v.size,m,t)):(B.innerHTML=c,mxEvent.addListener(B,"click",mxUtils.bind(y,function(){function l(){var a=e.value,a=0==a.length&&"string"!=x?0:a;v.allowAuto&&("auto"==a.trim().toLowerCase()? +(a="auto",x="string"):(a=parseFloat(a),a=isNaN(a)?0:a));null!=v.min&&a<v.min?a=v.min:null!=v.max&&a>v.max&&(a=v.max);a=mxUtils.htmlEntities(("int"==x?parseInt(a):a)+"");f(b,a,v)}var e=document.createElement("input");d(B,e,!0);e.value=c;e.className="gePropEditor";"int"!=x&&"float"!=x||v.allowAuto||(e.type="number",e.step="int"==x?"1":"any",null!=v.min&&(e.min=parseFloat(v.min)),null!=v.max&&(e.max=parseFloat(v.max)));a.appendChild(e);mxEvent.addListener(e,"keypress",function(a){13==a.keyCode&&l()}); +e.focus();mxEvent.addListener(e,"blur",function(){l()})})));v.isDeletable&&(t=mxUtils.button("-",mxUtils.bind(y,function(a){f(b,"",v,v.index);mxEvent.consume(a)})),t.style.height="16px",t.style.width="25px",t.style["float"]="right",t.className="geColorBtn",B.appendChild(t));m.appendChild(B);return m}var y=this,u=this.editorUi.editor.graph,t=[];a.style.position="relative";a.style.padding="0";var k=document.createElement("table");k.style.whiteSpace="nowrap";k.style.width="100%";var x=document.createElement("tr"); +x.className="gePropHeader";var m=document.createElement("th");m.className="gePropHeaderCell";var B=document.createElement("img");B.src=Sidebar.prototype.expandedImage;m.appendChild(B);mxUtils.write(m,mxResources.get("property"));x.style.cursor="pointer";var n=function(){var b=k.querySelectorAll(".gePropNonHeaderRow"),c;if(y.editorUi.propertiesCollapsed){B.src=Sidebar.prototype.collapsedImage;c="none";for(var f=a.childNodes.length-1;0<=f;f--)try{var d=a.childNodes[f],l=d.nodeName.toUpperCase();"INPUT"!= +l&&"SELECT"!=l||a.removeChild(d)}catch(oa){}}else B.src=Sidebar.prototype.expandedImage,c="";for(f=0;f<b.length;f++)b[f].style.display=c};mxEvent.addListener(x,"click",function(){y.editorUi.propertiesCollapsed=!y.editorUi.propertiesCollapsed;n()});x.appendChild(m);m=document.createElement("th");m.className="gePropHeaderCell";m.innerHTML=mxResources.get("value");x.appendChild(m);k.appendChild(x);var H=!1,z=!1,q;for(q in b)if(x=b[q],"function"!=typeof x.isVisible||x.isVisible(c)){var F=null!=c.style[q]? +mxUtils.htmlEntities(c.style[q]+""):x.defVal;if("separator"==x.type)z=!z;else{if("staticArr"==x.type)x.size=parseInt(c.style[x.sizeProperty]||b[x.sizeProperty].defVal)||0;else if(null!=x.dependentProps){for(var P=x.dependentProps,X=[],Q=[],m=0;m<P.length;m++){var R=c.style[P[m]];Q.push(b[P[m]].subDefVal);X.push(null!=R?R.split(","):[])}x.dependentPropsDefVal=Q;x.dependentPropsVals=X}k.appendChild(v(q,F,x,H,z));H=!H}}for(m=0;m<t.length;m++)for(x=t[m],b=x.parentRow,c=0;c<x.values.length;c++)q=v(x.name, +x.values[c],{type:x.type,parentRow:x.parentRow,isDeletable:x.isDeletable,index:c,defVal:x.defVal,countProperty:x.countProperty,size:x.size},0==c%2,x.flipBkg),b.parentNode.insertBefore(q,b.nextSibling),b=q;a.appendChild(k);n();return a};StyleFormatPanel.prototype.addStyles=function(a){function b(a){function b(a){var b=mxUtils.button("",function(b){f.getModel().beginUpdate();try{var c=f.getSelectionCells();for(b=0;b<c.length;b++){for(var d=f.getModel().getStyle(c[b]),e=0;e<l.length;e++)d=mxUtils.removeStylename(d, +l[e]);var p=f.getModel().isVertex(c[b])?f.defaultVertexStyle:f.defaultEdgeStyle;null!=a?(d=mxUtils.setStyle(d,mxConstants.STYLE_FILLCOLOR,a.fill||mxUtils.getValue(p,mxConstants.STYLE_FILLCOLOR,null)),d=mxUtils.setStyle(d,mxConstants.STYLE_STROKECOLOR,a.stroke||mxUtils.getValue(p,mxConstants.STYLE_STROKECOLOR,null)),d=mxUtils.setStyle(d,mxConstants.STYLE_GRADIENTCOLOR,a.gradient||mxUtils.getValue(p,mxConstants.STYLE_GRADIENTCOLOR,null)),f.getModel().isVertex(c[b])&&(d=mxUtils.setStyle(d,mxConstants.STYLE_FONTCOLOR, +a.font||mxUtils.getValue(p,mxConstants.STYLE_FONTCOLOR,null)))):(d=mxUtils.setStyle(d,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(p,mxConstants.STYLE_FILLCOLOR,"#ffffff")),d=mxUtils.setStyle(d,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(p,mxConstants.STYLE_STROKECOLOR,"#000000")),d=mxUtils.setStyle(d,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(p,mxConstants.STYLE_GRADIENTCOLOR,null)),f.getModel().isVertex(c[b])&&(d=mxUtils.setStyle(d,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(p,mxConstants.STYLE_FONTCOLOR, +null))));f.getModel().setStyle(c[b],d)}}finally{f.getModel().endUpdate()}});b.className="geStyleButton";b.style.width="36px";b.style.height="30px";b.style.margin="0px 6px 6px 0px";if(null!=a)null!=a.gradient?mxClient.IS_IE&&(mxClient.IS_QUIRKS||10>document.documentMode)?b.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+a.fill+"', EndColorStr='"+a.gradient+"', GradientType=0)":b.style.backgroundImage="linear-gradient("+a.fill+" 0px,"+a.gradient+" 100%)":a.fill==mxConstants.NONE? +b.style.background="url('"+Dialog.prototype.noColorImage+"')":b.style.backgroundColor=a.fill||mxUtils.getValue(f.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),b.style.border="1px solid "+(a.stroke||mxUtils.getValue(f.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000"));else{var c=mxUtils.getValue(f.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),e=mxUtils.getValue(f.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");b.style.backgroundColor=c;b.style.border="1px solid "+ +e}d.appendChild(b)}d.innerHTML="";for(var c=0;c<a.length;c++)0<c&&0==mxUtils.mod(c,4)&&mxUtils.br(d),b(a[c])}function c(a){mxEvent.addListener(a,"mouseenter",function(){a.style.opacity="1"});mxEvent.addListener(a,"mouseleave",function(){a.style.opacity="0.5"})}var f=this.editorUi.editor.graph,d=document.createElement("div");d.style.whiteSpace="nowrap";d.style.paddingLeft="24px";d.style.paddingRight="20px";a.style.paddingLeft="16px";a.style.paddingBottom="6px";a.style.position="relative";a.appendChild(d); +var l="plain-gray plain-blue plain-green plain-turquoise plain-orange plain-yellow plain-red plain-pink plain-purple gray blue green turquoise orange yellow red pink purple".split(" ");null==this.editorUi.currentScheme&&(this.editorUi.currentScheme=0);var e=document.createElement("div");e.style.cssText="position:absolute;left:10px;top:8px;bottom:8px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);"; +mxEvent.addListener(e,"click",mxUtils.bind(this,function(){this.editorUi.currentScheme=mxUtils.mod(this.editorUi.currentScheme-1,this.defaultColorSchemes.length);b(this.defaultColorSchemes[this.editorUi.currentScheme])}));var p=document.createElement("div");p.style.cssText="position:absolute;left:202px;top:8px;bottom:8px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYBuwCcAAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADZJREFUCNdjQAOMAmBKaiGY8loF5rKswsZlrVo8AUiFrTICcbIWK8A5DF1gDoMymMPApIAwHwCS0Qx/U7qCBQAAAABJRU5ErkJggg==);"; +1<this.defaultColorSchemes.length&&(a.appendChild(e),a.appendChild(p));mxEvent.addListener(p,"click",mxUtils.bind(this,function(){this.editorUi.currentScheme=mxUtils.mod(this.editorUi.currentScheme+1,this.defaultColorSchemes.length);b(this.defaultColorSchemes[this.editorUi.currentScheme])}));c(e);c(p);b(this.defaultColorSchemes[this.editorUi.currentScheme]);return a};StyleFormatPanel.prototype.addEditOps=function(a){var b=this.format.getSelectionState(),c=null;1==this.editorUi.editor.graph.getSelectionCount()&& +(c=mxUtils.button(mxResources.get("editStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("editStyle").funct()})),c.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),c.style.width="202px",c.style.marginBottom="2px",a.appendChild(c));var f=this.editorUi.editor.graph,d=f.view.getState(f.getSelectionCell());1==f.getSelectionCount()&&null!=d&&null!=d.shape&&null!=d.shape.stencil?(b=mxUtils.button(mxResources.get("editShape"),mxUtils.bind(this, function(a){this.editorUi.actions.get("editShape").funct()})),b.setAttribute("title",mxResources.get("editShape")),b.style.marginBottom="2px",null==c?b.style.width="202px":(c.style.width="100px",b.style.width="100px",b.style.marginLeft="2px"),a.appendChild(b)):b.image&&(b=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,function(a){this.editorUi.actions.get("image").funct()})),b.setAttribute("title",mxResources.get("editImage")),b.style.marginBottom="2px",null==c?b.style.width="202px": (c.style.width="100px",b.style.width="100px",b.style.marginLeft="2px"),a.appendChild(b));return a}}Graph.prototype.defaultThemeName="default-style2";Graph.prototype.lastPasteXml=null;Graph.prototype.pasteCounter=0;Graph.prototype.defaultScrollbars="0"!=urlParams.sb;Graph.prototype.defaultPageVisible="0"!=urlParams.pv;Graph.prototype.shadowId="dropShadow";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity="0.4";Graph.prototype.svgShadowBlur="1.7";Graph.prototype.svgShadowSize= -"3";Graph.prototype.edgeMode="move"!=urlParams.edge;var q=Graph.prototype.init;Graph.prototype.init=function(){function a(a){b=a;if(mxClient.IS_QUIRKS||7==document.documentMode||8==document.documentMode)b=mxUtils.clone(a)}q.apply(this,arguments);var b=null;mxEvent.addListener(this.container,"mouseenter",a);mxEvent.addListener(this.container,"mousemove",a);mxEvent.addListener(this.container,"mouseleave",function(a){b=null});this.isMouseInsertPoint=function(){return null!=b};var c=this.getInsertPoint; -this.getInsertPoint=function(){return null!=b?this.getPointForEvent(b):c.apply(this,arguments)};var g=this.layoutManager.getLayout;this.layoutManager.getLayout=function(a){var b=this.graph.view.getState(a),b=null!=b?b.style:this.graph.getCellStyle(a);if(null!=b){if("undefined"!=typeof mxRackContainer&&"rack"==b.childLayout){var c=new mxStackLayout(this.graph,!1);c.setChildGeometry=function(a,b){b.height=Math.max(b.height,20);if(1<b.height/20){var c=b.height%20;b.height+=10<c?20-c:-c}this.graph.getModel().setGeometry(a, +"3";Graph.prototype.edgeMode="move"!=urlParams.edge;var p=Graph.prototype.init;Graph.prototype.init=function(){function a(a){b=a;if(mxClient.IS_QUIRKS||7==document.documentMode||8==document.documentMode)b=mxUtils.clone(a)}p.apply(this,arguments);var b=null;mxEvent.addListener(this.container,"mouseenter",a);mxEvent.addListener(this.container,"mousemove",a);mxEvent.addListener(this.container,"mouseleave",function(a){b=null});this.isMouseInsertPoint=function(){return null!=b};var c=this.getInsertPoint; +this.getInsertPoint=function(){return null!=b?this.getPointForEvent(b):c.apply(this,arguments)};var f=this.layoutManager.getLayout;this.layoutManager.getLayout=function(a){var b=this.graph.view.getState(a),b=null!=b?b.style:this.graph.getCellStyle(a);if(null!=b){if("undefined"!=typeof mxRackContainer&&"rack"==b.childLayout){var c=new mxStackLayout(this.graph,!1);c.setChildGeometry=function(a,b){b.height=Math.max(b.height,20);if(1<b.height/20){var c=b.height%20;b.height+=10<c?20-c:-c}this.graph.getModel().setGeometry(a, b)};c.fill=!0;c.unitSize=mxRackContainer.unitSize|20;c.marginLeft=b.marginLeft||0;c.marginRight=b.marginRight||0;c.marginTop=b.marginTop||0;c.marginBottom=b.marginBottom||0;c.resizeParent=!1;return c}if("undefined"!=typeof mxTableLayout&&"tableLayout"==b.childLayout)return c=new mxTableLayout(this.graph),c.rows=b.tableRows||2,c.columns=b.tableColumns||2,c.colPercentages=b.colPercentages,c.rowPercentages=b.rowPercentages,c.equalColumns="1"==mxUtils.getValue(b,"equalColumns",c.colPercentages?"0":"1"), -c.equalRows="1"==mxUtils.getValue(b,"equalRows",c.rowPercentages?"0":"1"),c.resizeParent="1"==mxUtils.getValue(b,"resizeParent","1"),c.border=b.tableBorder||c.border,c.marginLeft=b.marginLeft||0,c.marginRight=b.marginRight||0,c.marginTop=b.marginTop||0,c.marginBottom=b.marginBottom||0,c.autoAddCol="1"==mxUtils.getValue(b,"autoAddCol","0"),c.autoAddRow="1"==mxUtils.getValue(b,"autoAddRow",c.autoAddCol?"0":"1"),c.colWidths=b.colWidths||"100",c.rowHeights=b.rowHeights||"50",c}return g.apply(this,arguments)}}; -var t=Graph.prototype.isCssTransformsSupported;Graph.prototype.isCssTransformsSupported=function(){return t.apply(this,arguments)&&!mxClient.IS_SF};var v=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(a){var b=v.apply(this,arguments);if(null==b){if(null==this.globalUrlVars&&null!=urlParams.vars)try{this.globalUrlVars=JSON.parse(decodeURIComponent(urlParams.vars))}catch(z){null!=window.console&&console.log("Error in vars URL parameter: "+z)}null!=this.globalUrlVars&&(b= -this.globalUrlVars[a])}return b};var w=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){w.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var a=this.getDrawPane().parentNode;!this.graph.mathEnabled||mxClient.NO_FO||null!=this.webKitForceRepaintNode&&null!=this.webKitForceRepaintNode.parentNode||"svg"!=this.graph.container.firstChild.nodeName?null==this.webKitForceRepaintNode||this.graph.mathEnabled&&("svg"==this.graph.container.firstChild.nodeName|| -this.graph.container.firstChild==this.webKitForceRepaintNode)||(null!=this.webKitForceRepaintNode.parentNode&&this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",a.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,a.ownerSVGElement))}};var y=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet= -function(){y.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(a){if("data:action/json,"==a.substring(0,17)&&(a=JSON.parse(a.substring(17)),null!=a.actions)){for(var b=0;b<a.actions.length;b++)if(null!=a.actions[b].open)if(this.isCustomLink(a.actions[b].open)){if(!this.customLinkClicked(a.actions[b].open))return}else this.openLink(a.actions[b].open);this.model.beginUpdate();try{for(b=0;b<a.actions.length;b++)this.handleLinkAction(a.actions[b])}finally{this.model.endUpdate()}}}; +c.equalRows="1"==mxUtils.getValue(b,"equalRows",c.rowPercentages?"0":"1"),c.resizeParent="1"==mxUtils.getValue(b,"resizeParent","1"),c.border=b.tableBorder||c.border,c.marginLeft=b.marginLeft||0,c.marginRight=b.marginRight||0,c.marginTop=b.marginTop||0,c.marginBottom=b.marginBottom||0,c.autoAddCol="1"==mxUtils.getValue(b,"autoAddCol","0"),c.autoAddRow="1"==mxUtils.getValue(b,"autoAddRow",c.autoAddCol?"0":"1"),c.colWidths=b.colWidths||"100",c.rowHeights=b.rowHeights||"50",c}return f.apply(this,arguments)}}; +var t=Graph.prototype.isCssTransformsSupported;Graph.prototype.isCssTransformsSupported=function(){return t.apply(this,arguments)&&!mxClient.IS_SF};var u=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(a){var b=u.apply(this,arguments);if(null==b){if(null==this.globalUrlVars&&null!=urlParams.vars)try{this.globalUrlVars=JSON.parse(decodeURIComponent(urlParams.vars))}catch(F){null!=window.console&&console.log("Error in vars URL parameter: "+F)}null!=this.globalUrlVars&&(b= +this.globalUrlVars[a])}return b};var x=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){x.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var a=this.getDrawPane().parentNode;!this.graph.mathEnabled||mxClient.NO_FO||null!=this.webKitForceRepaintNode&&null!=this.webKitForceRepaintNode.parentNode||"svg"!=this.graph.container.firstChild.nodeName?null==this.webKitForceRepaintNode||this.graph.mathEnabled&&("svg"==this.graph.container.firstChild.nodeName|| +this.graph.container.firstChild==this.webKitForceRepaintNode)||(null!=this.webKitForceRepaintNode.parentNode&&this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",a.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,a.ownerSVGElement))}};var z=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet= +function(){z.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(a){if("data:action/json,"==a.substring(0,17)&&(a=JSON.parse(a.substring(17)),null!=a.actions)){for(var b=0;b<a.actions.length;b++)if(null!=a.actions[b].open)if(this.isCustomLink(a.actions[b].open)){if(!this.customLinkClicked(a.actions[b].open))return}else this.openLink(a.actions[b].open);this.model.beginUpdate();try{for(b=0;b<a.actions.length;b++)this.handleLinkAction(a.actions[b])}finally{this.model.endUpdate()}}}; Graph.prototype.handleLinkAction=function(a){var b=[];null!=a.select&&this.isEnabled()&&(b=this.getCellsForAction(a.select),this.setSelectionCells(b));null!=a.highlight&&(b=this.getCellsForAction(a.highlight),this.highlightCells(b,a.highlight.color,a.highlight.duration,a.highlight.opacity));null!=a.toggle&&this.toggleCells(this.getCellsForAction(a.toggle));null!=a.show&&this.setCellsVisible(this.getCellsForAction(a.show),!0);null!=a.hide&&this.setCellsVisible(this.getCellsForAction(a.hide),!1);null!= -a.scroll&&(b=this.getCellsForAction(a.scroll));0<b.length&&this.scrollCellToVisible(b[0])};Graph.prototype.getCellsForAction=function(a){return this.getCellsById(a.cells).concat(this.getCellsForTags(a.tags))};Graph.prototype.getCellsById=function(a){var b=[];if(null!=a)for(var c=0;c<a.length;c++)if("*"==a[c])var g=this.getDefaultParent(),b=b.concat(this.model.filterDescendants(function(a){return a!=g},g));else{var d=this.model.getCell(a[c]);null!=d&&b.push(d)}return b};Graph.prototype.getCellsForTags= -function(a,b,c){var g=[];if(null!=a){b=null!=b?b:this.model.getDescendants(this.model.getRoot());c=null!=c?c:"tags";for(var d=0;d<b.length;d++)if(this.model.isVertex(b[d])||this.model.isEdge(b[d])){var l=null!=b[d].value&&"object"==typeof b[d].value?mxUtils.trim(b[d].value.getAttribute(c)||""):"",n=!0;if(0<l.length)for(var l=l.toLowerCase().split(" "),f=0;f<a.length&&n;f++)var h=mxUtils.trim(a[f]).toLowerCase(),n=n&&(0==h.length||0<=mxUtils.indexOf(l,h));else n=0==a.length;n&&g.push(b[d])}}return g}; -Graph.prototype.toggleCells=function(a){this.model.beginUpdate();try{for(var b=0;b<a.length;b++)this.model.setVisible(a[b],!this.model.isVisible(a[b]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(a,b){this.model.beginUpdate();try{for(var c=0;c<a.length;c++)this.model.setVisible(a[c],b)}finally{this.model.endUpdate()}};Graph.prototype.highlightCells=function(a,b,c,g){for(var d=0;d<a.length;d++)this.highlightCell(a[d],b,c,g)};Graph.prototype.highlightCell=function(a,b, -c,g){b=null!=b?b:mxConstants.DEFAULT_VALID_COLOR;c=null!=c?c:1E3;a=this.view.getState(a);if(null!=a){var d=Math.max(5,mxUtils.getValue(a.style,mxConstants.STYLE_STROKEWIDTH,1)+4),l=new mxCellHighlight(this,b,d,!1);null!=g&&(l.opacity=g);l.highlight(a);window.setTimeout(function(){null!=l.shape&&(mxUtils.setPrefixedStyle(l.shape.node.style,"transition","all 1200ms ease-in-out"),l.shape.node.style.opacity=0);window.setTimeout(function(){l.destroy()},1200)},c)}};Graph.prototype.addSvgShadow=function(a, -b,c){c=null!=c?c:!1;var g=a.ownerDocument,d=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG,"filter"):g.createElement("filter");d.setAttribute("id",this.shadowId);var l=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):g.createElement("feGaussianBlur");l.setAttribute("in","SourceAlpha");l.setAttribute("stdDeviation",this.svgShadowBlur);l.setAttribute("result","blur");d.appendChild(l);l=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG,"feOffset"): -g.createElement("feOffset");l.setAttribute("in","blur");l.setAttribute("dx",this.svgShadowSize);l.setAttribute("dy",this.svgShadowSize);l.setAttribute("result","offsetBlur");d.appendChild(l);l=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG,"feFlood"):g.createElement("feFlood");l.setAttribute("flood-color",this.svgShadowColor);l.setAttribute("flood-opacity",this.svgShadowOpacity);l.setAttribute("result","offsetColor");d.appendChild(l);l=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG, -"feComposite"):g.createElement("feComposite");l.setAttribute("in","offsetColor");l.setAttribute("in2","offsetBlur");l.setAttribute("operator","in");l.setAttribute("result","offsetBlur");d.appendChild(l);l=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG,"feBlend"):g.createElement("feBlend");l.setAttribute("in","SourceGraphic");l.setAttribute("in2","offsetBlur");d.appendChild(l);l=a.getElementsByTagName("defs");0==l.length?(g=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG, -"defs"):g.createElement("defs"),null!=a.firstChild?a.insertBefore(g,a.firstChild):a.appendChild(g)):g=l[0];g.appendChild(d);c||((b||a.getElementsByTagName("g")[0]).setAttribute("filter","url(#"+this.shadowId+")"),isNaN(parseInt(a.getAttribute("width")))||(a.setAttribute("width",parseInt(a.getAttribute("width"))+6),a.setAttribute("height",parseInt(a.getAttribute("height"))+6)));return d};Graph.prototype.setShadowVisible=function(a,b){mxClient.IS_SVG&&(b=null!=b?b:!0,(this.shadowVisible=a)?this.view.getDrawPane().setAttribute("filter", -"url(#"+this.shadowId+")"):this.view.getDrawPane().removeAttribute("filter"),b&&this.fireEvent(new mxEventObject("shadowVisibleChanged")))};Graph.prototype.selectUnlockedLayer=function(){if(null==this.defaultParent){var a=this.model.getChildCount(this.model.root),b,c=0;do b=this.model.getChildAt(this.model.root,c);while(c++<a&&"1"==mxUtils.getValue(this.getCellStyle(b),"locked","0"));null!=b&&this.setDefaultParent(b)}};mxStencilRegistry.libraries.mockup=[SHAPES_PATH+"/mockup/mxMockupButtons.js"]; -mxStencilRegistry.libraries.arrows2=[SHAPES_PATH+"/mxArrows.js"];mxStencilRegistry.libraries.atlassian=[STENCIL_PATH+"/atlassian.xml",SHAPES_PATH+"/mxAtlassian.js"];mxStencilRegistry.libraries.bpmn=[SHAPES_PATH+"/bpmn/mxBpmnShape2.js",STENCIL_PATH+"/bpmn.xml"];mxStencilRegistry.libraries.dfd=[SHAPES_PATH+"/mxDFD.js"];mxStencilRegistry.libraries.er=[SHAPES_PATH+"/er/mxER.js"];mxStencilRegistry.libraries.flowchart=[SHAPES_PATH+"/mxFlowchart.js",STENCIL_PATH+"/flowchart.xml"];mxStencilRegistry.libraries.ios= -[SHAPES_PATH+"/mockup/mxMockupiOS.js"];mxStencilRegistry.libraries.rackGeneral=[SHAPES_PATH+"/rack/mxRack.js",STENCIL_PATH+"/rack/general.xml"];mxStencilRegistry.libraries.rackF5=[STENCIL_PATH+"/rack/f5.xml"];mxStencilRegistry.libraries.lean_mapping=[SHAPES_PATH+"/mxLeanMap.js",STENCIL_PATH+"/lean_mapping.xml"];mxStencilRegistry.libraries.basic=[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/basic.xml"];mxStencilRegistry.libraries.ios7icons=[STENCIL_PATH+"/ios7/icons.xml"];mxStencilRegistry.libraries.ios7ui= -[SHAPES_PATH+"/ios7/mxIOS7Ui.js",STENCIL_PATH+"/ios7/misc.xml"];mxStencilRegistry.libraries.android=[SHAPES_PATH+"/mxAndroid.js",STENCIL_PATH+"/android/android.xml"];mxStencilRegistry.libraries["electrical/transmission"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/transmission.xml"];mxStencilRegistry.libraries["electrical/logic_gates"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/logic_gates.xml"];mxStencilRegistry.libraries["electrical/abstract"]=[SHAPES_PATH+"/mxElectrical.js", -STENCIL_PATH+"/electrical/abstract.xml"];mxStencilRegistry.libraries.infographic=[SHAPES_PATH+"/mxInfographic.js"];mxStencilRegistry.libraries["mockup/buttons"]=[SHAPES_PATH+"/mockup/mxMockupButtons.js"];mxStencilRegistry.libraries["mockup/containers"]=[SHAPES_PATH+"/mockup/mxMockupContainers.js"];mxStencilRegistry.libraries["mockup/forms"]=[SHAPES_PATH+"/mockup/mxMockupForms.js"];mxStencilRegistry.libraries["mockup/graphics"]=[SHAPES_PATH+"/mockup/mxMockupGraphics.js",STENCIL_PATH+"/mockup/misc.xml"]; -mxStencilRegistry.libraries["mockup/markup"]=[SHAPES_PATH+"/mockup/mxMockupMarkup.js"];mxStencilRegistry.libraries["mockup/misc"]=[SHAPES_PATH+"/mockup/mxMockupMisc.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/navigation"]=[SHAPES_PATH+"/mockup/mxMockupNavigation.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/text"]=[SHAPES_PATH+"/mockup/mxMockupText.js"];mxStencilRegistry.libraries.floorplan=[SHAPES_PATH+"/mxFloorplan.js",STENCIL_PATH+"/floorplan.xml"]; -mxStencilRegistry.libraries.bootstrap=[SHAPES_PATH+"/mxBootstrap.js",STENCIL_PATH+"/bootstrap.xml"];mxStencilRegistry.libraries.gmdl=[SHAPES_PATH+"/mxGmdl.js",STENCIL_PATH+"/gmdl.xml"];mxStencilRegistry.libraries.gcp2=[SHAPES_PATH+"/mxGCP2.js",STENCIL_PATH+"/gcp2.xml"];mxStencilRegistry.libraries.cabinets=[SHAPES_PATH+"/mxCabinets.js",STENCIL_PATH+"/cabinets.xml"];mxStencilRegistry.libraries.archimate=[SHAPES_PATH+"/mxArchiMate.js"];mxStencilRegistry.libraries.archimate3=[SHAPES_PATH+"/mxArchiMate3.js"]; -mxStencilRegistry.libraries.sysml=[SHAPES_PATH+"/mxSysML.js"];mxStencilRegistry.libraries.eip=[SHAPES_PATH+"/mxEip.js",STENCIL_PATH+"/eip.xml"];mxStencilRegistry.libraries.networks=[SHAPES_PATH+"/mxNetworks.js",STENCIL_PATH+"/networks.xml"];mxStencilRegistry.libraries.aws3d=[SHAPES_PATH+"/mxAWS3D.js",STENCIL_PATH+"/aws3d.xml"];mxStencilRegistry.libraries.aws4=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.veeam=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml", -STENCIL_PATH+"/veeam/veeam.xml"];mxStencilRegistry.libraries.pid2inst=[SHAPES_PATH+"/pid2/mxPidInstruments.js"];mxStencilRegistry.libraries.pid2misc=[SHAPES_PATH+"/pid2/mxPidMisc.js",STENCIL_PATH+"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"];mxMarker.getPackageForType=function(a){var b=null;null!=a&&0<a.length&&("ER"==a.substring(0,2)?b="mxgraph.er":"sysML"==a.substring(0, -5)&&(b="mxgraph.sysml"));return b};var u=mxMarker.createMarker;mxMarker.createMarker=function(a,b,c,g,d,l,n,f,h,q){if(null!=c&&null==mxMarker.markers[c]){var t=this.getPackageForType(c);null!=t&&mxStencilRegistry.getStencil(t)}return u.apply(this,arguments)};PrintDialog.prototype.create=function(a,b){function c(){x.value=Math.max(1,Math.min(f,Math.max(parseInt(x.value),parseInt(k.value))));k.value=Math.max(1,Math.min(f,Math.min(parseInt(x.value),parseInt(k.value))))}function g(b){function c(b,c,d){var l= -b.getGraphBounds(),n=0,f=0,u=W.get(),h=1/b.pageScale,q=p.checked;if(q)var h=parseInt(K.value),t=parseInt(ca.value),h=Math.min(u.height*t/(l.height/b.view.scale),u.width*h/(l.width/b.view.scale));else h=parseInt(m.value)/(100*b.pageScale),isNaN(h)&&(g=1/b.pageScale,m.value="100 %");u=mxRectangle.fromRectangle(u);u.width=Math.ceil(u.width*g);u.height=Math.ceil(u.height*g);h*=g;!q&&b.pageVisible?(l=b.getPageLayout(),n-=l.x*u.width,f-=l.y*u.height):q=!0;if(null==c){c=PrintDialog.createPrintPreview(b, -h,u,0,n,f,q);c.pageSelector=!1;c.mathEnabled=!1;b=a.getCurrentFile();null!=b&&(c.title=b.getTitle());var k=c.writeHead;c.writeHead=function(b){k.apply(this,arguments);null!=a.editor.fontCss&&(b.writeln('<style type="text/css">'),b.writeln(a.editor.fontCss),b.writeln("</style>"))};if("undefined"!==typeof MathJax){var v=c.renderPage;c.renderPage=function(a,b,c,g,d,l){var n=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;var f=v.apply(this, -arguments);mxClient.NO_FO=n;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:f.className="geDisableMathJax";return f}}c.open(null,null,d,!0)}else{u=b.background;if(null==u||""==u||u==mxConstants.NONE)u="#ffffff";c.backgroundColor=u;c.autoOrigin=q;c.appendGraph(b,h,n,f,d,!0)}return c}var g=parseInt(ea.value)/100;isNaN(g)&&(g=1,ea.value="100 %");var g=.75*g,l=k.value,n=x.value,f=!q.checked,u=null;f&&(f=l==h&&n==h);if(!f&&null!=a.pages&&a.pages.length){var t=0,f=a.pages.length-1;q.checked|| -(t=parseInt(l)-1,f=parseInt(n)-1);for(var v=t;v<=f;v++){var w=a.pages[v],l=w==a.currentPage?d:null;if(null==l){var l=a.createTemporaryGraph(d.getStylesheet()),n=!0,t=!1,y=null,F=null;null==w.viewState&&null==w.root&&a.updatePageRoot(w);null!=w.viewState&&(n=w.viewState.pageVisible,t=w.viewState.mathEnabled,y=w.viewState.background,F=w.viewState.backgroundImage);l.background=y;l.backgroundImage=null!=F?new mxImage(F.src,F.width,F.height):null;l.pageVisible=n;l.mathEnabled=t;var G=l.getGlobalVariable; -l.getGlobalVariable=function(a){return"page"==a?w.getName():"pagenumber"==a?v+1:G.apply(this,arguments)};document.body.appendChild(l.container);a.updatePageRoot(w);l.model.setRoot(w.root)}u=c(l,u,v!=f);l!=d&&l.container.parentNode.removeChild(l.container)}}else u=c(d);u.mathEnabled&&(f=u.wnd.document,f.writeln('<script type="text/x-mathjax-config">'),f.writeln("MathJax.Hub.Config({"),f.writeln("showMathMenu: false,"),f.writeln('messageStyle: "none",'),f.writeln('jax: ["input/TeX", "input/MathML", "input/AsciiMath", "output/HTML-CSS"],'), -f.writeln('extensions: ["tex2jax.js", "mml2jax.js", "asciimath2jax.js"],'),f.writeln('"HTML-CSS": {'),f.writeln("imageFont: null"),f.writeln("},"),f.writeln("TeX: {"),f.writeln('extensions: ["AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js"]'),f.writeln("},"),f.writeln("tex2jax: {"),f.writeln('\tignoreClass: "geDisableMathJax"'),f.writeln("},"),f.writeln("asciimath2jax: {"),f.writeln('\tignoreClass: "geDisableMathJax"'),f.writeln("}"),f.writeln("});"),b&&(f.writeln("MathJax.Hub.Queue(function () {"), -f.writeln("window.print();"),f.writeln("});")),f.writeln("\x3c/script>"),f.writeln('<script type="text/javascript" src="https://math.draw.io/current/MathJax.js">\x3c/script>'));u.closeDocument();!u.mathEnabled&&b&&PrintDialog.printPreview(u)}var d=a.editor.graph,l=document.createElement("div"),n=document.createElement("h3");n.style.width="100%";n.style.textAlign="center";n.style.marginTop="0px";mxUtils.write(n,b||mxResources.get("print"));l.appendChild(n);var f=1,h=1,u=document.createElement("div"); -u.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var q=document.createElement("input");q.style.cssText="margin-right:8px;margin-bottom:8px;";q.setAttribute("value","all");q.setAttribute("type","radio");q.setAttribute("name","pages-printdialog");u.appendChild(q);n=document.createElement("span");mxUtils.write(n,mxResources.get("printAllPages"));u.appendChild(n);mxUtils.br(u);var t=q.cloneNode(!0);q.setAttribute("checked","checked");t.setAttribute("value","range"); -u.appendChild(t);n=document.createElement("span");mxUtils.write(n,mxResources.get("pages")+":");u.appendChild(n);var k=document.createElement("input");k.style.cssText="margin:0 8px 0 8px;";k.setAttribute("value","1");k.setAttribute("type","number");k.setAttribute("min","1");k.style.width="50px";u.appendChild(k);n=document.createElement("span");mxUtils.write(n,mxResources.get("to"));u.appendChild(n);var x=k.cloneNode(!0);u.appendChild(x);mxEvent.addListener(k,"focus",function(){t.checked=!0});mxEvent.addListener(x, -"focus",function(){t.checked=!0});mxEvent.addListener(k,"change",c);mxEvent.addListener(x,"change",c);if(null!=a.pages&&(f=a.pages.length,null!=a.currentPage))for(n=0;n<a.pages.length;n++)if(a.currentPage==a.pages[n]){h=n+1;k.value=h;x.value=h;break}k.setAttribute("max",f);x.setAttribute("max",f);1<f&&l.appendChild(u);var v=document.createElement("div");v.style.marginBottom="10px";var w=document.createElement("input");w.style.marginRight="8px";w.setAttribute("value","adjust");w.setAttribute("type", -"radio");w.setAttribute("name","printZoom");v.appendChild(w);n=document.createElement("span");mxUtils.write(n,mxResources.get("adjustTo"));v.appendChild(n);var m=document.createElement("input");m.style.cssText="margin:0 8px 0 8px;";m.setAttribute("value","100 %");m.style.width="50px";v.appendChild(m);mxEvent.addListener(m,"focus",function(){w.checked=!0});l.appendChild(v);var u=u.cloneNode(!1),p=w.cloneNode(!0);p.setAttribute("value","fit");w.setAttribute("checked","checked");n=document.createElement("div"); -n.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";n.appendChild(p);u.appendChild(n);v=document.createElement("table");v.style.display="inline-block";var y=document.createElement("tbody"),F=document.createElement("tr"),G=F.cloneNode(!0),N=document.createElement("td"),X=N.cloneNode(!0),P=N.cloneNode(!0),U=N.cloneNode(!0),S=N.cloneNode(!0),ba=N.cloneNode(!0);N.style.textAlign="right";U.style.textAlign="right";mxUtils.write(N,mxResources.get("fitTo"));var K=document.createElement("input"); -K.style.cssText="margin:0 8px 0 8px;";K.setAttribute("value","1");K.setAttribute("min","1");K.setAttribute("type","number");K.style.width="40px";X.appendChild(K);n=document.createElement("span");mxUtils.write(n,mxResources.get("fitToSheetsAcross"));P.appendChild(n);mxUtils.write(U,mxResources.get("fitToBy"));var ca=K.cloneNode(!0);S.appendChild(ca);mxEvent.addListener(K,"focus",function(){p.checked=!0});mxEvent.addListener(ca,"focus",function(){p.checked=!0});n=document.createElement("span");mxUtils.write(n, -mxResources.get("fitToSheetsDown"));ba.appendChild(n);F.appendChild(N);F.appendChild(X);F.appendChild(P);G.appendChild(U);G.appendChild(S);G.appendChild(ba);y.appendChild(F);y.appendChild(G);v.appendChild(y);u.appendChild(v);l.appendChild(u);u=document.createElement("div");n=document.createElement("div");n.style.fontWeight="bold";n.style.marginBottom="12px";mxUtils.write(n,mxResources.get("paperSize"));u.appendChild(n);n=document.createElement("div");n.style.marginBottom="12px";var W=PageSetupDialog.addPageFormatPanel(n, -"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);u.appendChild(n);n=document.createElement("span");mxUtils.write(n,mxResources.get("pageScale"));u.appendChild(n);var ea=document.createElement("input");ea.style.cssText="margin:0 8px 0 8px;";ea.setAttribute("value","100 %");ea.style.width="60px";u.appendChild(ea);l.appendChild(u);n=document.createElement("div");n.style.cssText="text-align:right;margin:48px 0 0 0;";u=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()}); -u.className="geBtn";a.editor.cancelFirst&&n.appendChild(u);a.isOffline()||(v=mxUtils.button(mxResources.get("help"),function(){d.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),v.className="geBtn",n.appendChild(v));PrintDialog.previewEnabled&&(v=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();g(!1)}),v.className="geBtn",n.appendChild(v));v=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();g(!0)});v.className= -"geBtn gePrimaryBtn";n.appendChild(v);a.editor.cancelFirst||n.appendChild(u);l.appendChild(n);this.container=l};var x=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page=this.ui.currentPage);this.page!=this.ui.currentPage?null!=this.page.viewState&&(this.ignoreColor||(this.page.viewState.background=this.color),this.ignoreImage||(this.page.viewState.backgroundImage=this.image),null!=this.format&&(this.page.viewState.pageFormat=this.format),null!= -this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled),null!=this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)):(x.apply(this,arguments),null!=this.mathEnabled&&this.mathEnabled!=this.ui.isMathEnabled()&&(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled),null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=!this.shadowVisible))}})(); -var ErrorDialog=function(a,c,b,d,f,h,k,m,p,g,l){p=null!=p?p:!0;var n=document.createElement("div");n.style.textAlign="center";if(null!=c){var q=document.createElement("div");q.style.padding="0px";q.style.margin="0px";q.style.fontSize="18px";q.style.paddingBottom="16px";q.style.marginBottom="16px";q.style.borderBottom="1px solid #c0c0c0";q.style.color="gray";q.style.whiteSpace="nowrap";q.style.textOverflow="ellipsis";q.style.overflow="hidden";mxUtils.write(q,c);q.setAttribute("title",c);n.appendChild(q)}c= -document.createElement("div");c.style.padding="6px";c.innerHTML=b;n.appendChild(c);b=document.createElement("div");b.style.marginTop="16px";b.style.textAlign="center";null!=h&&(c=mxUtils.button(mxResources.get("tryAgain"),function(){a.hideDialog();h()}),c.className="geBtn",b.appendChild(c),b.style.textAlign="center");null!=g&&(g=mxUtils.button(g,function(){null!=l&&l()}),g.className="geBtn",b.appendChild(g));var t=mxUtils.button(d,function(){p&&a.hideDialog();null!=f&&f()});t.className="geBtn";b.appendChild(t); -null!=k&&(d=mxUtils.button(k,function(){p&&a.hideDialog();null!=m&&m()}),d.className="geBtn gePrimaryBtn",b.appendChild(d));this.init=function(){t.focus()};n.appendChild(b);this.container=n}; -(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,b,d){d.ui=a.ui;return b};a.afterDecode=function(a,b,d){d.previousColor=d.color;d.previousImage=d.image;d.previousFormat=d.format;null!=d.foldingEnabled&&(d.foldingEnabled=!d.foldingEnabled);null!=d.mathEnabled&&(d.mathEnabled=!d.mathEnabled);null!=d.shadowVisible&&(d.shadowVisible=!d.shadowVisible);return d};mxCodecRegistry.register(a)})();(function(){EditorUi.VERSION="10.1.2";EditorUi.compactUi="atlas"!=uiTheme;EditorUi.enableLogging="1"!=urlParams.stealth&&/.*\.draw\.io$/.test(window.location.hostname)&&"support.draw.io"!=window.location.hostname;EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.logError=function(a,b,c,d,f){if("1"==urlParams.dev)EditorUi.debug("logError",a,b,c,d,f);else if(EditorUi.enableLogging)try{if(a!=EditorUi.lastErrorMessage&&(null== -a||null==b||-1==a.indexOf("Script error")&&-1==a.indexOf("extension"))&&null!=a&&0>a.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=a;var g=0<=a.indexOf("NetworkError")||0<=a.indexOf("SecurityError")||0<=a.indexOf("NS_ERROR_FAILURE")||0<=a.indexOf("out of memory")?"CONFIG":"SEVERE",l=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=l+"/log?severity="+g+"&v="+encodeURIComponent(EditorUi.VERSION)+"&msg=clientError:"+encodeURIComponent(a)+":url:"+encodeURIComponent(window.location.href)+ -":lnum:"+encodeURIComponent(c)+(null!=d?":colno:"+encodeURIComponent(d):"")+(null!=f&&null!=f.stack?"&stack="+encodeURIComponent(f.stack):"")}}catch(y){}};EditorUi.logEvent=function(a){if("1"==urlParams.dev)EditorUi.debug("logEvent",a);else if(EditorUi.enableLogging)try{var b=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=b+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=a?"&data="+encodeURIComponent(JSON.stringify(a)):"")}catch(n){}};EditorUi.sendReport=function(a, -b){if("1"==urlParams.dev)EditorUi.debug("sendReport",a);else if(EditorUi.enableLogging)try{b=null!=b?b:5E4,a.length>b&&(a=a.substring(0,b)+"\n...[SHORTENED]"),mxUtils.post("/email","version="+encodeURIComponent(EditorUi.VERSION)+"&url="+encodeURIComponent(window.location.href)+"&data="+encodeURIComponent(a))}catch(n){}};EditorUi.debug=function(){if(null!=window.console&&"1"==urlParams.test){for(var a=[(new Date).toISOString()],b=0;b<arguments.length;b++)a.push(arguments[b]);console.log.apply(console, -a)}};EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.scratchpadHelpLink="https://desk.draw.io/support/solutions/articles/16000042367";EditorUi.prototype.emptyDiagramXml='<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/></root></mxGraphModel>';EditorUi.prototype.emptyLibraryXml="<mxlibrary>[]</mxlibrary>"; -EditorUi.prototype.mode=null;EditorUi.prototype.sidebarFooterHeight=36;EditorUi.prototype.defaultCustomShapeStyle="shape=stencil(tZRtTsQgEEBPw1+DJR7AoN6DbWftpAgE0Ortd/jYRGq72R+YNE2YgTePloEJGWblgA18ZuKFDcMj5/Sm8boZq+BgjCX4pTyqk6ZlKROitwusOMXKQDODx5iy4pXxZ5qTHiFHawxB0JrQZH7lCabQ0Fr+XWC1/E8zcsT/gAi+Subo2/3Mh6d/oJb5nU1b5tW7r2knautaa3T+U32o7f7vZwpJkaNDLORJjcu7t59m2jXxqX9un+tt022acsfmoKaQZ+vhhswZtS6Ne/ThQGt0IV0N3Yyv6P3CeT9/tHO0XFI5cAE=);whiteSpace=wrap;html=1;";EditorUi.prototype.svgBrokenImage=Graph.createSvgImage(10, -10,'<rect x="0" y="0" width="10" height="10" stroke="#000" fill="transparent"/><path d="m 0 0 L 10 10 L 0 10 L 10 0" stroke="#000" fill="transparent"/>');EditorUi.prototype.crossOriginImages=!mxClient.IS_IE;EditorUi.prototype.maxBackgroundSize=1600;EditorUi.prototype.maxImageSize=520;EditorUi.prototype.resampleThreshold=1E5;EditorUi.prototype.maxImageBytes=1E6;EditorUi.prototype.maxBackgroundBytes=25E5;EditorUi.prototype.currentFile=null;EditorUi.prototype.printPdfExport=!1;EditorUi.prototype.pdfPageExport= -!0;EditorUi.prototype.formatEnabled="0"!=urlParams.format;EditorUi.prototype.insertTemplateEnabled=!0;EditorUi.prototype.closableScratchpad=!0;(function(){EditorUi.prototype.useCanvasForExport=!1;EditorUi.prototype.jpgSupported=!1;try{var a=document.createElement("canvas");EditorUi.prototype.canvasSupported=!(!a.getContext||!a.getContext("2d"))}catch(t){}try{var b=document.createElement("canvas"),c=new Image;c.onload=function(){try{b.getContext("2d").drawImage(c,0,0);var a=b.toDataURL("image/png"); -EditorUi.prototype.useCanvasForExport=null!=a&&6<a.length}catch(v){}};c.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(t){}try{b=document.createElement("canvas");b.width=b.height=1;var d=b.toDataURL("image/jpeg");EditorUi.prototype.jpgSupported= -null!==d.match("image/jpeg")}catch(t){}})();EditorUi.prototype.openLink=function(a,b,c){return this.editor.graph.openLink(a,b,c)};EditorUi.prototype.showSplash=function(a){};EditorUi.prototype.getLocalData=function(a,b){b(localStorage.getItem(a))};EditorUi.prototype.setLocalData=function(a,b,c){localStorage.setItem(a,b);null!=c&&c()};EditorUi.prototype.removeLocalData=function(a,b){localStorage.removeItem(a);b()};EditorUi.prototype.setMathEnabled=function(a){this.editor.graph.mathEnabled=a;this.editor.updateGraphComponents(); -this.editor.graph.refresh();this.fireEvent(new mxEventObject("mathEnabledChanged"))};EditorUi.prototype.isMathEnabled=function(a){return this.editor.graph.mathEnabled};EditorUi.prototype.isAppCache=function(){return"1"==urlParams.appcache||this.isOfflineApp()};EditorUi.prototype.isOfflineApp=function(){return"1"==urlParams.offline};EditorUi.prototype.isOffline=function(){return this.isOfflineApp()||!navigator.onLine||"1"==urlParams.stealth};EditorUi.prototype.createSpinner=function(a,b,c){c=null!= -c?c:24;var g=new Spinner({lines:12,length:c,width:Math.round(c/3),radius:Math.round(c/2),rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),d=g.spin;g.spin=function(c,l){var n=!1;this.active||(d.call(this,c),this.active=!0,null!=l&&(n=document.createElement("div"),n.style.position="absolute",n.style.whiteSpace="nowrap",n.style.background="#4B4243",n.style.color="white",n.style.fontFamily="Helvetica, Arial",n.style.fontSize="9pt",n.style.padding="6px", -n.style.paddingLeft="10px",n.style.paddingRight="10px",n.style.zIndex=2E9,n.style.left=Math.max(0,a)+"px",n.style.top=Math.max(0,b+70)+"px",mxUtils.setPrefixedStyle(n.style,"borderRadius","6px"),mxUtils.setPrefixedStyle(n.style,"transform","translate(-50%,-50%)"),"dark"!=uiTheme&&mxUtils.setPrefixedStyle(n.style,"boxShadow","2px 2px 3px 0px #ddd"),"..."!=l.substring(l.length-3,l.length)&&(l+="..."),n.innerHTML=l,c.appendChild(n),g.status=n,mxClient.IS_VML&&(null==document.documentMode||8>=document.documentMode)&& -(n.style.left=Math.round(Math.max(0,a-n.offsetWidth/2))+"px",n.style.top=Math.round(Math.max(0,b+70-n.offsetHeight/2))+"px")),this.pause=mxUtils.bind(this,function(){var a=function(){};this.active&&(a=mxUtils.bind(this,function(){this.spin(c,l)}));this.stop();return a}),n=!0);return n};var l=g.stop;g.stop=function(){l.call(this);this.active=!1;null!=g.status&&(g.status.parentNode.removeChild(g.status),g.status=null)};g.pause=function(){return function(){}};return g};EditorUi.parsePng=function(a,b, -c){function g(a,b){var c=l;l+=b;return a.substring(c,l)}function d(a){a=g(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}var l=0;if(g(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=c&&c();else if(g(a,4),"IHDR"!=g(a,4))null!=c&&c();else{g(a,17);do{c=d(a);var n=g(a,4);if(null!=b&&b(l-8,n,c))break;value=g(a,c);g(a,4);if("IEND"==n)break}while(c)}};EditorUi.prototype.isCompatibleString=function(a){try{var b=mxUtils.parseXml(a), -c=this.editor.extractGraphModel(b.documentElement,!0);return null!=c&&0==c.getElementsByTagName("parsererror").length}catch(q){}return!1};var a=EditorUi.prototype.extractGraphModelFromHtml;EditorUi.prototype.extractGraphModelFromHtml=function(b){var c=a.apply(this,arguments);if(null==c)try{var g=b.indexOf("<mxfile ");if(0<=g){var d=b.lastIndexOf("</mxfile>");d>g&&(c=b.substring(g,d+15).replace(/>/g,">").replace(/</g,"<").replace(/\\"/g,'"').replace(/\n/g,""))}else var f=mxUtils.parseXml(b), -h=this.editor.extractGraphModel(f.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility),c=null!=h?mxUtils.getXml(h):""}catch(w){}return c};EditorUi.prototype.validateFileData=function(a){if(null!=a&&0<a.length){var b=a.indexOf('<meta charset="utf-8">');0<=b&&(a=a.slice(0,b)+'<meta charset="utf-8"/>'+a.slice(b+23-1,a.length));a=this.editor.graph.zapGremlins(a)}return a};EditorUi.prototype.replaceFileData=function(a){a=this.validateFileData(a);a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement: -null;var b=null!=a?this.editor.extractGraphModel(a,!0):null;null!=b&&(a=b);if(null!=a){b=this.editor.graph;b.model.beginUpdate();try{var c=null!=this.pages?this.pages.slice():null,g=a.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<g.length||1==g.length&&g[0].hasAttribute("name")){this.fileNode=a;this.pages=null!=this.pages?this.pages:[];for(var d=g.length-1;0<=d;d--){var f=this.updatePageRoot(new DiagramPage(g[d]));null==f.getName()&&f.setName(mxResources.get("pageWithNumber",[d+1])); -b.model.execute(new ChangePage(this,f,0==d?f:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),b.model.execute(new ChangePage(this,this.currentPage,this.currentPage,0))),this.editor.setGraphXml(a),null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=c)for(d=0;d<c.length;d++)b.model.execute(new ChangePage(this, -c[d],null))}finally{b.model.endUpdate()}}};EditorUi.prototype.createFileData=function(a,b,c,d,f,h,k,m,u,x){b=null!=b?b:this.editor.graph;f=null!=f?f:!1;u=null!=u?u:!0;var g,l=null;null==c||c.getMode()==App.MODE_DEVICE||c.getMode()==App.MODE_BROWSER?g="_blank":l=g=d;if(null==a)return"";var n=a;if("mxfile"!=n.nodeName.toLowerCase()){var q=b.zapGremlins(mxUtils.getXml(a)),n=b.compress(q);if(b.decompress(n)!=q)return q;q=a.ownerDocument.createElement("diagram");q.setAttribute("id",Editor.guid());mxUtils.setTextContent(q, -n);n=a.ownerDocument.createElement("mxfile");n.appendChild(q)}x?(n=n.cloneNode(!0),n.removeAttribute("userAgent"),n.removeAttribute("version"),n.removeAttribute("editor"),n.removeAttribute("type")):(n.removeAttribute("userAgent"),n.removeAttribute("version"),n.removeAttribute("editor"),n.removeAttribute("type"),n.setAttribute("modified",(new Date).toISOString()),n.setAttribute("host",window.location.hostname),n.setAttribute("agent",navigator.userAgent),n.setAttribute("version",EditorUi.VERSION),n.setAttribute("etag", -Editor.guid()),a=null!=c?c.getMode():this.mode,null!=a&&n.setAttribute("type",a));a=mxUtils.getXml(n);if(!h&&!f&&(k||null!=c&&/(\.html)$/i.test(c.getTitle())))a=this.getHtml2(mxUtils.getXml(n),b,null!=c?c.getTitle():null,g,l);else if(h||!f&&null!=c&&/(\.svg)$/i.test(c.getTitle()))null==c||c.getMode()!=App.MODE_DEVICE&&c.getMode()!=App.MODE_BROWSER||(d=null),a=this.getEmbeddedSvg(a,b,d,null,m,u,l);return a};EditorUi.prototype.getXmlFileData=function(a,b){a=null!=a?a:!0;b=null!=b?b:!1;var c=this.editor.getGraphXml(a); -if(a&&null!=this.fileNode&&null!=this.currentPage)if(c=this.editor.graph.compress(this.editor.graph.zapGremlins(mxUtils.getXml(c))),mxUtils.setTextContent(this.currentPage.node,c),c=this.fileNode.cloneNode(!1),b)c.appendChild(this.currentPage.node);else for(var g=0;g<this.pages.length;g++){if(this.currentPage!=this.pages[g]&&this.pages[g].needsUpdate){var d=(new mxCodec(mxUtils.createXmlDocument())).encode(new mxGraphModel(this.pages[g].root));this.editor.graph.saveViewState(this.pages[g].viewState, -d);mxUtils.setTextContent(this.pages[g].node,this.editor.graph.compressNode(d));delete this.pages[g].needsUpdate}c.appendChild(this.pages[g].node)}return c};EditorUi.prototype.anonymizeString=function(a,b){for(var c=[],g=0;g<a.length;g++){var d=a.charAt(g);0<=EditorUi.ignoredAnonymizedChars.indexOf(d)?c.push(d):isNaN(parseInt(d))?d.toLowerCase()!=d?c.push(String.fromCharCode(65+Math.round(25*Math.random()))):d.toUpperCase()!=d?c.push(String.fromCharCode(97+Math.round(25*Math.random()))):/\s/.test(d)? -c.push(" "):c.push("?"):c.push(b?"0":Math.round(9*Math.random()))}return c.join("")};EditorUi.prototype.anonymizePatch=function(a){if(null!=a[EditorUi.DIFF_INSERT])for(var b=0;b<a[EditorUi.DIFF_INSERT].length;b++)try{var c=mxUtils.parseXml(a[EditorUi.DIFF_INSERT][b].data).documentElement.cloneNode(!1);null!=c.getAttribute("name")&&c.setAttribute("name",this.anonymizeString(c.getAttribute("name")));a[EditorUi.DIFF_INSERT][b].data=mxUtils.getXml(c)}catch(v){a[EditorUi.DIFF_INSERT][b].data=v.message}if(null!= -a[EditorUi.DIFF_UPDATE]){for(var g in a[EditorUi.DIFF_UPDATE]){var d=a[EditorUi.DIFF_UPDATE][g];null!=d.name&&(d.name=this.anonymizeString(d.name));null!=d.cells&&(b=mxUtils.bind(this,function(a){var b=d.cells[a];if(null!=b){for(var c in b)null!=b[c].value&&(b[c].value="["+b[c].value.length+"]"),null!=b[c].style&&(b[c].style="["+b[c].style.length+"]"),null!=b[c].geometry&&(b[c].geometry="["+b[c].geometry.length+"]"),0==Object.keys(b[c]).length&&delete b[c];0==Object.keys(b).length&&delete d.cells[a]}}), -b(EditorUi.DIFF_INSERT),b(EditorUi.DIFF_UPDATE),0==Object.keys(d.cells).length&&delete d.cells);0==Object.keys(d).length&&delete a[EditorUi.DIFF_UPDATE][g]}0==Object.keys(a[EditorUi.DIFF_UPDATE]).length&&delete a[EditorUi.DIFF_UPDATE]}return a};EditorUi.prototype.anonymizeAttributes=function(a,b){if(null!=a.attributes)for(var c=0;c<a.attributes.length;c++)"as"!=a.attributes[c].name&&a.setAttribute(a.attributes[c].name,this.anonymizeString(a.attributes[c].value,b));if(null!=a.childNodes)for(c=0;c< -a.childNodes.length;c++)this.anonymizeAttributes(a.childNodes[c],b)};EditorUi.prototype.anonymizeNode=function(a,b){for(var c=a.getElementsByTagName("mxCell"),g=0;g<c.length;g++)null!=c[g].getAttribute("value")&&c[g].setAttribute("value","["+c[g].getAttribute("value").length+"]"),null!=c[g].getAttribute("style")&&c[g].setAttribute("style","["+c[g].getAttribute("style").length+"]"),null!=c[g].parentNode&&"root"!=c[g].parentNode.nodeName&&null!=c[g].parentNode.parentNode&&(c[g].setAttribute("id",c[g].parentNode.getAttribute("id")), -c[g].parentNode.parentNode.replaceChild(c[g],c[g].parentNode));c=a.getElementsByTagName("mxGeometry");for(g=0;g<c.length;g++)this.anonymizeAttributes(c[g],b);return a};EditorUi.prototype.synchronizeCurrentFile=function(a){var b=this.getCurrentFile();null!=b&&(b.savingFile?this.handleError({message:mxResources.get("busy")}):!a&&b.invalidChecksum?b.handleFileError(null,!0):this.spinner.spin(document.body,mxResources.get("updatingDocument"))&&(b.clearAutosave(),this.editor.setStatus(""),a?b.reloadFile(mxUtils.bind(this, -function(){b.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){b.handleFileError(a,!0)})):b.synchronizeFile(mxUtils.bind(this,function(){b.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){b.handleFileError(a,!0)}))))};EditorUi.prototype.getFileData=function(a,b,c,d,f,h,k,m,u){f=null!=f?f:!0;k=null!=k?k:this.getXmlFileData(f,null!=h?h:!1);u=null!=u?u:this.getCurrentFile();h=this.editor.graph;if(null!=this.pages&&this.currentPage!=this.pages[0]&& -(b||!a&&null!=u&&/(\.svg)$/i.test(u.getTitle()))){h=this.createTemporaryGraph(h.getStylesheet());var g=h.getGlobalVariable,l=this.pages[0];h.getGlobalVariable=function(a){return"page"==a?l.getName():"pagenumber"==a?1:g.apply(this,arguments)};document.body.appendChild(h.container);h.model.setRoot(l.root)}a=this.createFileData(k,h,u,window.location.href,a,b,c,d,f,m);h!=this.editor.graph&&h.container.parentNode.removeChild(h.container);return a};EditorUi.prototype.getHtml=function(a,b,c,d,f,h){h=null!= -h?h:!0;var g=null,l="https://www.draw.io/js/embed-static.min.js";if(null!=b){var g=h?b.getGraphBounds():b.getBoundingBox(b.getSelectionCells()),n=b.view.scale;h=Math.floor(g.x/n-b.view.translate.x);n=Math.floor(g.y/n-b.view.translate.y);g=b.background;null==f&&(b=this.getBasenames().join(";"),0<b.length&&(l="https://www.draw.io/embed.js?s="+b));a.setAttribute("x0",h);a.setAttribute("y0",n)}null!=a&&(a.setAttribute("pan","1"),a.setAttribute("zoom","1"),a.setAttribute("resize","0"),a.setAttribute("fit", -"0"),a.setAttribute("border","20"),a.setAttribute("links","1"),null!=d&&a.setAttribute("edit",d));null!=f&&(f=f.replace(/&/g,"&"));a=null!=a?this.editor.graph.zapGremlins(mxUtils.getXml(a)):"";d=this.editor.graph.compress(a);this.editor.graph.decompress(d)!=a&&(d=encodeURIComponent(a));return(null==f?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=f?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null== -f?null!=c?"<title>"+mxUtils.htmlEntities(c)+"</title>\n":"":"<title>Draw.io Diagram</title>\n")+(null!=f?'<meta http-equiv="refresh" content="0;URL=\''+f+"'\"/>\n":"")+"</head>\n<body"+(null==f&&null!=g&&g!=mxConstants.NONE?' style="background-color:'+g+';">':">")+'\n<div class="mxgraph" style="position:relative;overflow:auto;width:100%;">\n<div style="width:1px;height:1px;overflow:hidden;">'+d+"</div>\n</div>\n"+(null==f?'<script type="text/javascript" src="'+l+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+ -f+'" target="_blank"><img border="0" src="https://www.draw.io/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(a,b,c,d,f){null!=f&&(f=f.replace(/&/g,"&"));a={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,resize:!0,xml:this.editor.graph.zapGremlins(a),toolbar:"pages zoom layers lightbox"};null!=this.pages&&null!=this.currentPage&&(a.page=mxUtils.indexOf(this.pages,this.currentPage));return(null==f?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n': -"")+"<!DOCTYPE html>\n<html"+(null!=f?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==f?null!=c?"<title>"+mxUtils.htmlEntities(c)+"</title>\n":"":"<title>Draw.io Diagram</title>\n")+(null!=f?'<meta http-equiv="refresh" content="0;URL=\''+f+"'\"/>\n":"")+'<meta charset="utf-8"/>\n</head>\n<body>\n<div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(a))+'"></div>\n'+(null==f?'<script type="text/javascript" src="https://www.draw.io/js/viewer.min.js">\x3c/script>': -'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+f+'" target="_blank"><img border="0" src="https://www.draw.io/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.setFileData=function(a){a=this.validateFileData(a);this.pages=this.fileNode=this.currentPage=null;a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement:null;var b=null!=a?a.getElementsByTagName("parsererror"):null;if(null!=b&&0<b.length)throw a=mxResources.get("invalidOrMissingFile"), -b=b[0].getElementsByTagName("div"),0<b.length&&(a=mxUtils.getTextContent(b[0])),Error(a);b=null!=a?this.editor.extractGraphModel(a,!0):null;null!=b&&(a=b);if(null!=a&&"mxfile"==a.nodeName&&(b=a.getElementsByTagName("diagram"),"0"!=urlParams.pages||1<b.length||1==b.length&&b[0].hasAttribute("name"))){this.fileNode=a;this.pages=[];for(a=0;a<b.length;a++){null==b[a].getAttribute("id")&&b[a].setAttribute("id",a);var c=new DiagramPage(b[a]);null==c.getName()&&c.setName(mxResources.get("pageWithNumber", -[a+1]));this.pages.push(c)}this.currentPage=this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];a=this.currentPage.node}"0"!=urlParams.pages&&null==this.fileNode&&null!=a&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(a);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root)}; -EditorUi.prototype.getBaseFilename=function(a){var b=this.getCurrentFile(),b=null!=b&&null!=b.getTitle()?b.getTitle():this.defaultFilename;if(/(\.xml)$/i.test(b)||/(\.html)$/i.test(b)||/(\.svg)$/i.test(b)||/(\.png)$/i.test(b))b=b.substring(0,b.lastIndexOf("."));!a&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&0<this.currentPage.getName().length&&(b=b+"-"+this.currentPage.getName());return b};EditorUi.prototype.downloadFile=function(a, -b,c,d,f,h,k){try{d=null!=d?d:this.editor.graph.isSelectionEmpty();var g=this.getBaseFilename(!f),l=g+"."+a;if("xml"==a){var n='<?xml version="1.0" encoding="UTF-8"?>\n'+(b?mxUtils.getXml(this.editor.getGraphXml(d)):this.getFileData(!0,null,null,null,d,f));this.saveData(l,a,n,"text/xml")}else if("html"==a)n=this.getHtml2(this.getFileData(!0),this.editor.graph,g),this.saveData(l,a,n,"text/html");else if("svg"!=a&&"xmlsvg"!=a||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==a?l= -g+".png":"jpeg"==a&&(l=g+".jpg"),this.saveRequest(l,a,mxUtils.bind(this,function(b,c){try{var g=this.editor.graph.pageVisible;null!=h&&(this.editor.graph.pageVisible=h);var l=this.createDownloadRequest(b,a,d,c,k,f);this.editor.graph.pageVisible=g;return l}catch(C){this.handleError(C)}}));else{var q=null,t=mxUtils.bind(this,function(a){a.length<=MAX_REQUEST_SIZE?this.saveData(l,"svg",a,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this, -function(){mxUtils.popup(q)}))});if("svg"==a){var m=this.editor.graph.background;if(k||m==mxConstants.NONE)m=null;var v=this.editor.graph.getSvg(m,null,null,null,null,d);c&&this.editor.graph.addSvgShadow(v);this.convertImages(v,mxUtils.bind(this,mxUtils.bind(this,function(a){this.spinner.stop();t('<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a))})))}else l=g+".svg",q=this.getFileData(!1, -!0,null,mxUtils.bind(this,function(a){this.spinner.stop();t(a)}),d)}}catch(H){this.handleError(H)}};EditorUi.prototype.createDownloadRequest=function(a,b,c,d,f,h){var g=this.editor.graph.getGraphBounds();c=this.getFileData(!0,null,null,null,c,0==h?!1:"xmlpng"!=b);var l="",n="";if(g.width*g.height>MAX_AREA||c.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};g="0";"pdf"==b&&0==h&&(n="&allPages=1");if("xmlpng"==b&&(g="1",b="png",null!=this.pages&&null!=this.currentPage))for(h= -0;h<this.pages.length;h++)if(this.pages[h]==this.currentPage){l="&from="+h;break}h=this.editor.graph.background;"png"==b&&f&&(h=mxConstants.NONE);return new mxXmlRequest(EXPORT_URL,"format="+b+l+n+"&bg="+(null!=h?h:mxConstants.NONE)+"&base64="+d+"&embedXml="+g+"&xml="+encodeURIComponent(c)+(null!=a?"&filename="+encodeURIComponent(a):""))};EditorUi.prototype.setMode=function(a,b){this.mode=a};EditorUi.prototype.loadDescriptor=function(a,b,c){var d=window.location.hash,g=mxUtils.bind(this,function(c){var g= -null!=a.data?a.data:"";null!=c&&0<c.length&&(0<g.length&&(g+="\n"),g+=c);c=new LocalFile(this,"csv"!=a.format&&0<g.length?g:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);c.getHash=function(){return d};this.fileLoaded(c);"csv"==a.format&&this.importCsv(g,mxUtils.bind(this,function(a){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=a.update){var l=null!=a.interval?parseInt(a.interval):6E4,f=null, -n=mxUtils.bind(this,function(){var b=this.currentPage;mxUtils.post(a.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(a){b===this.currentPage&&(200<=a.getStatus()&&300>=a.getStatus()?(this.updateDiagram(a.getText()),h()):this.handleError({message:mxResources.get("error")+" "+a.getStatus()}))}),mxUtils.bind(this,function(a){this.handleError(a)}))}),h=mxUtils.bind(this,function(){window.clearTimeout(f);f=window.setTimeout(n,l)});this.editor.addListener("pageSelected", -mxUtils.bind(this,function(){h();n()}));h();n()}null!=b&&b()});if(null!=a.url&&0<a.url.length){var l=a.url;/^https?:\/\//.test(l)&&!this.isCorsEnabledForUrl(l)&&(l=PROXY_URL+"?url="+encodeURIComponent(l));this.loadUrl(l,mxUtils.bind(this,function(a){g(a)}),mxUtils.bind(this,function(a){null!=c&&c(a)}))}else g("")};EditorUi.prototype.updateDiagram=function(a){function b(a){var b=new mxCellOverlay(a.image||g.warningImage,a.tooltip,a.align,a.valign,a.offset);b.addListener(mxEvent.CLICK,function(b,c){d.alert(a.tooltip)}); -return b}var c=null,d=this;if(null!=a&&0<a.length&&(c=mxUtils.parseXml(a),a=null!=c?c.documentElement:null,null!=a&&"updates"==a.nodeName)){var g=this.editor.graph,f=g.getModel();f.beginUpdate();var h=null;try{for(a=a.firstChild;null!=a;){if("update"==a.nodeName){var k=f.getCell(a.getAttribute("id"));if(null!=k){try{var u=a.getAttribute("value");if(null!=u){var x=mxUtils.parseXml(u).documentElement;if(null!=x)if("1"==x.getAttribute("replace-value"))f.setValue(k,x);else for(var m=x.attributes,p=0;p< -m.length;p++)g.setAttributeForCell(k,m[p].nodeName,0<m[p].nodeValue.length?m[p].nodeValue:null)}}catch(E){null!=window.console&&console.log("Error in value for "+k.id+": "+E)}try{var z=a.getAttribute("style");null!=z&&g.model.setStyle(k,z)}catch(E){null!=window.console&&console.log("Error in style for "+k.id+": "+E)}try{var A=a.getAttribute("icon");if(null!=A){var H=0<A.length?JSON.parse(A):null;null!=H&&H.append||g.removeCellOverlays(k);null!=H&&g.addCellOverlay(k,b(H))}}catch(E){null!=window.console&& -console.log("Error in icon for "+k.id+": "+E)}try{var B=a.getAttribute("geometry");if(null!=B){var B=JSON.parse(B),D=g.getCellGeometry(k);if(null!=D){D=D.clone();for(key in B){var J=parseFloat(B[key]);"dx"==key?D.x+=J:"dy"==key?D.y+=J:"dw"==key?D.width+=J:"dh"==key?D.height+=J:D[key]=parseFloat(B[key])}g.model.setGeometry(k,D)}}}catch(E){null!=window.console&&console.log("Error in icon for "+k.id+": "+E)}}}else if("model"==a.nodeName){for(var C=a.firstChild;null!=C&&C.nodeType!=mxConstants.NODETYPE_ELEMENT;)C= -C.nextSibling;null!=C&&(new mxCodec(a.firstChild)).decode(C,f)}else if("view"==a.nodeName){if(a.hasAttribute("scale")&&(g.view.scale=parseFloat(a.getAttribute("scale"))),a.hasAttribute("dx")||a.hasAttribute("dy"))g.view.translate=new mxPoint(parseFloat(a.getAttribute("dx")||0),parseFloat(a.getAttribute("dy")||0))}else"fit"==a.nodeName&&(h=a.hasAttribute("max-scale")?parseFloat(a.getAttribute("max-scale")):1);a=a.nextSibling}}finally{f.endUpdate()}null!=h&&this.chromelessResize&&this.chromelessResize(!0, -h)}return c};EditorUi.prototype.getCopyFilename=function(a,b){var c=null!=a&&null!=a.getTitle()?a.getTitle():this.defaultFilename,d="",g=c.lastIndexOf(".");0<=g&&(d=c.substring(g),c=c.substring(0,g));if(b)var l=new Date,g=l.getFullYear(),f=l.getMonth()+1,h=l.getDate(),u=l.getHours(),k=l.getMinutes(),l=l.getSeconds(),c=c+(" "+(g+"-"+f+"-"+h+"-"+u+"-"+k+"-"+l));return c=mxResources.get("copyOf",[c])+d};EditorUi.prototype.fileLoaded=function(a){var b=this.getCurrentFile();this.fileLoadedError=null;this.setCurrentFile(null); -var c=!1;this.hideDialog();null!=b&&(b.removeListener(this.descriptorChangedListener),b.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var d=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=b&&this.updateDocumentTitle();this.editor.graph.model.clear();this.editor.undoManager.clear();this.setBackgroundImage(null);null!=window.location.hash&&0<window.location.hash.length&&(window.location.hash="");null!=this.fname&&(this.fnameWrapper.style.display= -"none",this.fname.innerHTML="",this.fname.setAttribute("title",mxResources.get("rename")));this.editor.setStatus("");this.updateUi();this.showSplash()});if(null!=a)try{mxClient.IS_SF&&"min"==uiTheme&&(this.diagramContainer.style.visibility="");this.setCurrentFile(a);a.addListener("descriptorChanged",this.descriptorChangedListener);a.addListener("contentChanged",this.descriptorChangedListener);a.open();this.setGraphEnabled(!0);this.setMode(a.getMode());this.editor.graph.model.prefix=Editor.guid()+ -"-";this.editor.undoManager.clear();this.descriptorChanged();this.updateUi();a.isEditable()?a.isModified()?(a.addUnsavedStatus(),null!=a.backupPatch&&a.patch([a.backupPatch])):this.editor.setStatus(""):this.editor.setStatus('<span class="geStatusAlert" style="margin-left:8px;">'+mxUtils.htmlEntities(mxResources.get("readOnly"))+"</span>");!this.editor.isChromelessView()||this.editor.editable?(this.editor.graph.selectUnlockedLayer(),this.showLayersDialog(),this.restoreLibraries(),window.self!==window.top&& -window.focus()):this.editor.graph.isLightboxView()&&this.lightboxFit();this.chromelessResize&&this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));c=!0;this.isOffline()||null==a.getMode()||EditorUi.logEvent({category:"File",action:"open",label:a.getMode()+"."+a.getSize()});if(this.editor.editable&&this.mode==a.getMode()&&a.getMode()!=App.MODE_DEVICE&&null!=a.getMode())try{this.addRecent({id:a.getHash(),title:a.getTitle(),mode:a.getMode()})}catch(t){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+ -1),mxSettings.save()}catch(t){}}catch(t){this.fileLoadedError=t;null!=window.console&&console.log("error in fileLoaded:",a,t);if(EditorUi.enableLogging&&!this.isOffline())try{(new Image).src=(null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"")+"/log?v="+encodeURIComponent(EditorUi.VERSION)+"&msg=errorInFileLoaded:url:"+encodeURIComponent(window.location.href)+(null!=t&&null!=t.message?":err:"+encodeURIComponent(t.message):"")+(null!=t&&null!=t.stack?"&stack="+encodeURIComponent(t.stack):"")}catch(v){}this.handleError(t, -mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=b?this.fileLoaded(b):d()}),!0)}else d();return c};EditorUi.prototype.isActive=function(){return this.editor.graph.isEditing()||this.editor.graph.isMouseDown||null!=this.dialog};EditorUi.prototype.runWhenIdle=function(a){if(this.isActive()){var b=mxUtils.bind(this,function(){this.isActive()||(this.editor.graph.removeMouseListener(c), -this.editor.removeListener("hideDialog",b),this.editor.graph.removeListener(b),null!=window.requestAnimationFrame?window.requestAnimationFrame(a):a())}),c={mouseDown:function(){},mouseMove:function(){},mouseUp:b};this.editor.graph.addListener(mxEvent.EDITING_STOPPED,b);this.editor.graph.addListener(mxEvent.ESCAPE,b);this.editor.graph.addMouseListener(c);this.editor.addListener("hideDialog",b)}else null!=window.requestAnimationFrame?window.requestAnimationFrame(a):a()};EditorUi.prototype.getHashValueForPages= -function(a,b){var c=0,d=new mxGraphModel,g=new mxCodec;null!=b&&(b.byteCount=0,b.attrCount=0,b.eltCount=0,b.nodeCount=0);for(var l=0;l<a.length;l++){this.updatePageRoot(a[l]);var f=a[l].node.cloneNode(!1);f.removeAttribute("name");d.root=a[l].root;var h=g.encode(d);this.editor.graph.saveViewState(a[l].viewState,h,!0);h.removeAttribute("pageWidth");h.removeAttribute("pageHeight");f.appendChild(h);null!=b&&(b.eltCount+=f.getElementsByTagName("*").length,b.nodeCount+=f.getElementsByTagName("mxCell").length); -c=(c<<5)-c+this.hashValue(f,function(a,b,c,d){return!d||"mxGeometry"!=a.nodeName&&"mxPoint"!=a.nodeName||"x"!=b&&"y"!=b&&"width"!=b&&"height"!=b?d&&"mxCell"==a.nodeName&&"previous"==b?null:c:Math.round(c)},b)<<0}return c};EditorUi.prototype.hashValue=function(a,b,c){var d=0;if(null!=a&&"object"===typeof a&&"number"===typeof a.nodeType&&"string"===typeof a.nodeName&&"function"===typeof a.getAttribute){null!=a.nodeName&&(d^=this.hashValue(a.nodeName,b,c));if(null!=a.attributes){null!=c&&(c.attrCount+= -a.attributes.length);for(var g=0;g<a.attributes.length;g++){var f=a.attributes[g].name,l=null!=b?b(a,f,a.attributes[g].value,!0):a.attributes[g].value;null!=l&&(d^=this.hashValue(f,b,c)+this.hashValue(l,b,c))}}if(null!=a.childNodes)for(g=0;g<a.childNodes.length;g++)d=(d<<5)-d+this.hashValue(a.childNodes[g],b,c)<<0}else if(null!=a&&"function"!==typeof a){a=String(a);b=0;null!=c&&(c.byteCount+=a.length);for(g=0;g<a.length;g++)b=(b<<5)-b+a.charCodeAt(g)<<0;d^=b}return d};EditorUi.prototype.descriptorChanged= -function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary=function(a,b,c,d,f,h,k){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||mxClient.IS_CHROMEAPP};EditorUi.prototype.toggleScratchpad=function(){this.isScratchpadEnabled()&&(null==this.scratchpad?this.getLocalData(".scratchpad",mxUtils.bind(this,function(a){null==a&&(a=this.emptyLibraryXml);this.loadLibrary(new StorageLibrary(this,a,".scratchpad"))})):this.closeLibrary(this.scratchpad))}; -EditorUi.prototype.createLibraryDataFromImages=function(a){var b=mxUtils.createXmlDocument(),c=b.createElement("mxlibrary");mxUtils.setTextContent(c,JSON.stringify(a));b.appendChild(c);return mxUtils.getXml(b)};EditorUi.prototype.closeLibrary=function(a){null!=a&&(this.removeLibrarySidebar(a.getHash()),a.constructor!=LocalLibrary&&mxSettings.removeCustomLibrary(a.getHash()),".scratchpad"==a.title&&(this.scratchpad=null))};EditorUi.prototype.removeLibrarySidebar=function(a){var b=this.sidebar.palettes[a]; -if(null!=b){for(var c=0;c<b.length;c++)b[c].parentNode.removeChild(b[c]);delete this.sidebar.palettes[a]}};EditorUi.prototype.repositionLibrary=function(a){var b=this.sidebar.container;if(null==a){var c=this.sidebar.palettes["L.scratchpad"];null==c&&(c=this.sidebar.palettes.search);null!=c&&(a=c[c.length-1].nextSibling)}a=null!=a?a:b.firstChild.nextSibling.nextSibling;var c=b.lastChild,d=c.previousSibling;b.insertBefore(c,a);b.insertBefore(d,c)};EditorUi.prototype.loadLibrary=function(a){var b=mxUtils.parseXml(a.getData()); -if("mxlibrary"==b.documentElement.nodeName){var c=JSON.parse(mxUtils.getTextContent(b.documentElement));this.libraryLoaded(a,c,b.documentElement.getAttribute("title"))}else throw{message:mxResources.get("notALibraryFile")};};EditorUi.prototype.getLibraryStorageHint=function(a){return""};EditorUi.prototype.libraryLoaded=function(a,b,c){if(null!=this.sidebar){a.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(a.getHash());".scratchpad"==a.title&&(this.scratchpad=a);var d=this.sidebar.palettes[a.getHash()], -d=null!=d?d[d.length-1].nextSibling:null;this.removeLibrarySidebar(a.getHash());var g=null,f=mxUtils.bind(this,function(b,c){0==b.length&&a.isEditable()?(null==g&&(g=document.createElement("div"),mxUtils.setPrefixedStyle(g.style,"borderRadius","6px"),g.style.border="3px dotted lightGray",g.style.textAlign="center",g.style.padding="8px",g.style.color="#B3B3B3",mxUtils.write(g,mxResources.get("dragElementsHere"))),c.appendChild(g)):this.addLibraryEntries(b,c)});if(null!=this.sidebar&&null!=b)for(var l= -0;l<b.length;l++)mxUtils.bind(this,function(a){var b=a.data;null!=b&&null!=a.title?this.sidebar.addEntry(a.title,mxUtils.bind(this,function(){b=this.convertDataUri(b);var c="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==a.aspect&&(c+="aspect=fixed;");return this.sidebar.createVertexTemplate(c+"image="+b,a.w,a.h,"",a.title||"",!1,!1,!0)})):null!=a.xml&&null!=a.title&&this.sidebar.addEntry(a.title,mxUtils.bind(this,function(){var b=this.stringToCells(this.editor.graph.decompress(a.xml)); -return this.sidebar.createVertexTemplateFromCells(b,a.w,a.h,a.title||"",!0,!1,!0)}))})(b[l]);c=null!=c&&0<c.length?c:a.getTitle();var n=this.sidebar.addPalette(a.getHash(),c,!0,mxUtils.bind(this,function(a){f(b,a)}));this.repositionLibrary(d);var h=n.parentNode.previousSibling;c=h.getAttribute("title");null!=c&&0<c.length&&".scratchpad"!=a.title&&h.setAttribute("title",this.getLibraryStorageHint(a)+"\n"+c);var k=document.createElement("div");k.style.position="absolute";k.style.right="0px";k.style.top= -"0px";k.style.padding="8px";mxClient.IS_QUIRKS||8==document.documentMode||(k.style.backgroundColor="inherit");h.style.position="relative";var m=document.createElement("img");m.setAttribute("src",Dialog.prototype.closeImage);m.setAttribute("title",mxResources.get("close"));m.setAttribute("valign","absmiddle");m.setAttribute("border","0");m.style.margin="0 3px";var p=null;if(".scratchpad"!=a.title||this.closableScratchpad)k.appendChild(m),mxEvent.addListener(m,"click",mxUtils.bind(this,function(b){if(!mxEvent.isConsumed(b)){var c= -mxUtils.bind(this,function(){this.closeLibrary(a)});null!=p?this.confirm(mxResources.get("allChangesLost"),null,c,mxResources.get("cancel"),mxResources.get("discardChanges")):c();mxEvent.consume(b)}}));if(a.isEditable()){var z=this.editor.graph,A=null,H=mxUtils.bind(this,function(c){this.showLibraryDialog(a.getTitle(),n,b,a,a.getMode());mxEvent.consume(c)}),B=mxUtils.bind(this,function(c){a.setModified(!0);a.isAutosave()?(null!=A&&null!=A.parentNode&&A.parentNode.removeChild(A),A=m.cloneNode(!1), -A.setAttribute("src",Editor.spinImage),A.setAttribute("title",mxResources.get("saving")),A.style.cursor="default",A.style.marginRight="2px",A.style.marginTop="-2px",k.insertBefore(A,k.firstChild),h.style.paddingRight=18*k.childNodes.length+"px",this.saveLibrary(a.getTitle(),b,a,a.getMode(),!0,!0,function(){null!=A&&null!=A.parentNode&&(A.parentNode.removeChild(A),h.style.paddingRight=18*k.childNodes.length+"px")})):null==p&&(p=m.cloneNode(!1),p.setAttribute("src",IMAGE_PATH+"/download.png"),p.setAttribute("title", -mxResources.get("save")),k.insertBefore(p,k.firstChild),mxEvent.addListener(p,"click",mxUtils.bind(this,function(c){this.saveLibrary(a.getTitle(),b,a,a.getMode(),a.constructor==LocalLibrary,!0,function(){null==p||a.isModified()||(h.style.paddingRight=18*k.childNodes.length+"px",p.parentNode.removeChild(p),p=null)});mxEvent.consume(c)})),h.style.paddingRight=18*k.childNodes.length+"px")}),D=mxUtils.bind(this,function(a,c,d,f){a=z.cloneCells(mxUtils.sortCells(z.model.getTopmostCells(a)));for(var l= -0;l<a.length;l++){var h=z.getCellGeometry(a[l]);null!=h&&h.translate(-c.x,-c.y)}n.appendChild(this.sidebar.createVertexTemplateFromCells(a,c.width,c.height,f||"",!0,!1,!1));a={xml:this.editor.graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(a))),w:c.width,h:c.height};null!=f&&(a.title=f);b.push(a);B(d);null!=g&&null!=g.parentNode&&0<b.length&&(g.parentNode.removeChild(g),g=null)}),J=mxUtils.bind(this,function(a){if(z.isSelectionEmpty())z.getRubberband().isActive()?(z.getRubberband().execute(a), -z.getRubberband().reset()):this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var b=z.getSelectionCells(),c=z.view.getBounds(b),d=z.view.scale;c.x/=d;c.y/=d;c.width/=d;c.height/=d;c.x-=z.view.translate.x;c.y-=z.view.translate.y;D(b,c)}mxEvent.consume(a)});n.style.border="3px solid transparent";mxEvent.addGestureListeners(n,function(){},mxUtils.bind(this,function(a){z.isMouseDown&&null!=z.panningManager&&null!=z.graphHandler.shape&&(z.graphHandler.shape.node.style.visibility= -"hidden",null!=g?g.style.border="3px dotted rgb(254, 137, 12)":n.style.border="3px dotted rgb(254, 137, 12)",n.style.cursor="copy",z.panningManager.stop(),z.autoScroll=!1,null!=z.graphHandler.guide&&z.graphHandler.guide.setVisible(!1),null!=z.graphHandler.hint&&(z.graphHandler.hint.style.visibility="hidden"),mxEvent.consume(a))}),mxUtils.bind(this,function(a){z.isMouseDown&&null!=z.panningManager&&null!=z.graphHandler&&(n.style.border="3px solid transparent",null!=g&&(g.style.border="3px dotted lightGray"), -n.style.cursor="default",this.sidebar.showTooltips=!0,z.panningManager.stop(),z.graphHandler.reset(),z.isMouseDown=!1,z.autoScroll=!0,J(a),mxEvent.consume(a))}));mxEvent.addListener(n,"mouseleave",mxUtils.bind(this,function(a){z.isMouseDown&&null!=z.graphHandler.shape&&(z.graphHandler.shape.node.style.visibility="visible",n.style.border="3px solid transparent",n.style.cursor="",z.autoScroll=!0,null!=z.graphHandler.guide&&z.graphHandler.guide.setVisible(!0),null!=z.graphHandler.hint&&(z.graphHandler.hint.style.visibility= -"visible"),null!=g&&(g.style.border="3px dotted lightGray"))}));Graph.fileSupport&&(mxEvent.addListener(n,"dragover",mxUtils.bind(this,function(a){null!=g?g.style.border="3px dotted rgb(254, 137, 12)":n.style.border="3px dotted rgb(254, 137, 12)";a.dataTransfer.dropEffect="copy";n.style.cursor="copy";this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()})),mxEvent.addListener(n,"drop",mxUtils.bind(this,function(a){n.style.border="3px solid transparent";n.style.cursor="";null!=g&&(g.style.border= -"3px dotted lightGray");0<a.dataTransfer.files.length&&this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(c,d,l,h,u,k,q,m,x){if(null!=c&&"image/"==d.substring(0,6))c="shape=image;verticalLabelPosition=bottom;verticalAlign=top;aspect=fixed;image="+this.convertDataUri(c),c=[new mxCell("",new mxGeometry(0,0,u,k),c)],c[0].vertex=!0,D(c,new mxRectangle(0,0,u,k),a,mxEvent.isAltDown(a)?null:q.substring(0,q.lastIndexOf(".")).replace(/_/g," ")),null!=g&&null!=g.parentNode&& -0<b.length&&(g.parentNode.removeChild(g),g=null);else{var t=!1,v=mxUtils.bind(this,function(c,d){if(null!=c&&"text/xml"==d){var l=mxUtils.parseXml(c);if("mxlibrary"==l.documentElement.nodeName)try{var h=JSON.parse(mxUtils.getTextContent(l.documentElement));f(h,n);b=b.concat(h);B(a);this.spinner.stop();t=!0}catch(K){}else if("mxfile"==l.documentElement.nodeName)try{for(var u=l.documentElement.getElementsByTagName("diagram"),l=0;l<u.length;l++){var h=mxUtils.getTextContent(u[l]),k=this.stringToCells(this.editor.graph.decompress(h)), -q=this.editor.graph.getBoundingBoxFromGeometry(k);D(k,new mxRectangle(0,0,q.width,q.height),a)}t=!0}catch(K){null!=window.console&&console.log("error in drop handler:",K)}}t||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=g&&null!=g.parentNode&&0<b.length&&(g.parentNode.removeChild(g),g=null)});null!=x&&null!=q&&(/(\.v(dx|sdx?))($|\?)/i.test(q)||/(\.vs(x|sx?))($|\?)/i.test(q))?this.importVisio(x,function(a){v(a,"text/xml")},null,q):!this.isOffline()&&(new XMLHttpRequest).upload&& -this.isRemoteFileFormat(c,q)&&null!=x?this.parseFile(x,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?v(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):v(c,d)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(n,"dragleave",function(a){null!=g?g.style.border="3px dotted lightGray":(n.style.border="3px solid transparent", -n.style.cursor="");a.stopPropagation();a.preventDefault()}));m=m.cloneNode(!1);m.setAttribute("src",Editor.editImage);m.setAttribute("title",mxResources.get("edit"));k.insertBefore(m,k.firstChild);mxEvent.addListener(m,"click",H);mxEvent.addListener(n,"dblclick",function(a){mxEvent.getSource(a)==n&&H(a)});c=m.cloneNode(!1);c.setAttribute("src",Editor.plusImage);c.setAttribute("title",mxResources.get("add"));k.insertBefore(c,k.firstChild);mxEvent.addListener(c,"click",J);this.isOffline()||".scratchpad"!= -a.title||null==EditorUi.scratchpadHelpLink||(c=document.createElement("span"),c.setAttribute("title",mxResources.get("help")),c.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;",mxUtils.write(c,"?"),mxEvent.addGestureListeners(c,mxUtils.bind(this,function(a){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(a)})),k.insertBefore(c,k.firstChild))}h.appendChild(k);h.style.paddingRight=18*k.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(a,b){for(var c= -0;c<a.length;c++){var d=a[c],g=d.data;if(null!=g){var g=this.convertDataUri(g),f="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==d.aspect&&(f+="aspect=fixed;");b.appendChild(this.sidebar.createVertexTemplate(f+"image="+g,d.w,d.h,"",d.title||"",!1,!1,!0))}else null!=d.xml&&(g=this.stringToCells(this.editor.graph.decompress(d.xml)),0<g.length&&b.appendChild(this.sidebar.createVertexTemplateFromCells(g,d.w,d.h,d.title||"",!0,!1,!0)))}};EditorUi.prototype.getResource= -function(a){return null!=a?a[mxLanguage]||a.main:null};EditorUi.prototype.footerHeight=0;"1"==urlParams.offline||EditorUi.isElectronApp||("1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64),EditorUi.prototype.createFooter=function(){return document.getElementById("geFooter")});EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground=mxClient.IS_QUIRKS? -"none":"linear-gradient(rgb(255, 255, 255) 0px, rgb(242, 242, 242) 100%)",Toolbar.prototype.selectedBackground="rgb(242, 242, 242)"),Editor.prototype.initialTopSpacing=3,EditorUi.prototype.menubarHeight=41,EditorUi.prototype.toolbarHeight=38,EditorUi.prototype.hsplitPosition=188,Sidebar.prototype.thumbWidth=46,Sidebar.prototype.thumbHeight=46,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2):"dark"==uiTheme&&(mxClient.link("stylesheet",STYLE_PATH+"/dark.css"), -Dialog.backdropColor="#2a2a2a",Graph.prototype.defaultThemeName="darkTheme",Graph.prototype.defaultPageBackgroundColor="#2a2a2a",Graph.prototype.defaultPageBorderColor="#505759",Graph.prototype.svgShadowColor="#e0e0e0",Graph.prototype.svgShadowOpacity="0.6",Graph.prototype.svgShadowSize="0.8",Graph.prototype.svgShadowBlur="1.4",Format.prototype.inactiveTabBackgroundColor="black",BaseFormatPanel.prototype.buttonBackgroundColor="#2a2a2a",Sidebar.prototype.dragPreviewBorder="1px dashed #cccccc",mxGraphHandler.prototype.previewColor= -"#cccccc",StyleFormatPanel.prototype.defaultStrokeColor="#cccccc",mxClient.IS_SVG&&(Editor.helpImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAP1BMVEUAAAD///////////////////////////////////////////////////////////////////////////////9Du/pqAAAAFXRSTlMAT30qCJRBboyDZyCgRzUUdF46MJlgXETgAAAAeklEQVQY022O2w4DIQhEQUURda/9/28tUO2+7CQS5sgQ4F1RapX78YUwRqQjTU8ILqQfKerTKTvACJ4nLX3krt+8aS82oI8aQC4KavRgtvEW/mDvsICgA03PSGRr79MqX1YPNIxzjyqtw8ZnnRo4t5a5undtJYRywau+ds4Cyza3E6YAAAAASUVORK5CYII=", -Editor.checkmarkImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAMAAACeyVWkAAAARVBMVEUAAACZmZkICAgEBASNjY2Dg4MYGBiTk5N5eXl1dXVmZmZQUFBCQkI3NzceHh4MDAykpKSJiYl+fn5sbGxaWlo/Pz8SEhK96uPlAAAAAXRSTlMAQObYZgAAAE5JREFUGNPFzTcSgDAQQ1HJGUfy/Y9K7V1qeOUfzQifCQZai1XHaz11LFysbDbzgDSSWMZiETz3+b8yNUc/MMsktxuC8XQBSncdLwz+8gCCggGXzBcozAAAAABJRU5ErkJggg=="))};EditorUi.initTheme();EditorUi.prototype.hideFooter=function(){var a=document.getElementById("geFooter");null!=a&&(this.footerHeight=0,a.style.display= -"none",this.refresh())};EditorUi.prototype.showFooter=function(a){var b=document.getElementById("geFooter");null!=b&&(this.footerHeight=a,b.style.display="inline",this.refresh())};EditorUi.prototype.showImageDialog=function(a,b,c,d,f){a=new ImageDialog(this,a,b,c,d,f);this.showDialog(a.container,Graph.fileSupport?440:360,Graph.fileSupport?200:90,!0,!0);a.init()};EditorUi.prototype.showBackgroundImageDialog=function(a){a=null!=a?a:mxUtils.bind(this,function(a){a=new ChangePageSetup(this,null,a);a.ignoreColor= -!0;this.editor.graph.model.execute(a)});var b=new BackgroundImageDialog(this,mxUtils.bind(this,function(b){a(b)}));this.showDialog(b.container,360,200,!0,!0);b.init()};EditorUi.prototype.showLibraryDialog=function(a,b,c,d,f){a=new LibraryDialog(this,a,b,c,d,f);this.showDialog(a.container,620,440,!0,!1,mxUtils.bind(this,function(a){a&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));a.init()};EditorUi.prototype.createSidebarFooterContainer=function(){var a=this.createDiv("geSidebarContainer"); -a.style.position="absolute";a.style.overflow="hidden";a.style.borderWidth="3px";var b=document.createElement("a");b.className="geTitle";b.style.height="100%";b.style.paddingTop="9px";b.innerHTML='<span style="font-size:18px;margin-right:5px;">+</span>';mxUtils.write(b,mxResources.get("moreShapes")+"...");mxEvent.addListener(b,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(b,"click",mxUtils.bind(this,function(a){this.actions.get("shapes").funct(); -mxEvent.consume(a)}));a.appendChild(b);return a};EditorUi.prototype.handleError=function(a,b,c,d){var g=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},f=null!=a&&null!=a.error?a.error:a;if(null!=f||null!=b){a=mxUtils.htmlEntities(mxResources.get("unknownError"));var l=mxResources.get("ok"),h=null;b=null!=b?b:mxResources.get("error");if(null!=f)if(null!=f.retry&&(l=mxResources.get("cancel"),h=function(){g();f.retry()}),404==f.code||404==f.status||403==f.code){a=403== -f.code?null!=f.message?mxUtils.htmlEntities(f.message):mxUtils.htmlEntities(mxResources.get("accessDenied")):mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied"));var n=window.location.hash;null!=n&&"#G"==n.substring(0,2)&&(n=n.substring(2),a+='<br><a href="https://drive.google.com/open?id='+n+'" target="_blank">'+mxUtils.htmlEntities(mxResources.get("tryOpeningViaThisPage"))+"</a>")}else null!=f.message?a=mxUtils.htmlEntities(f.message):null!=f.response&&null!=f.response.error?a=mxUtils.htmlEntities(f.response.error): -"undefined"!==window.App&&(f.code==App.ERROR_TIMEOUT?a=mxUtils.htmlEntities(mxResources.get("timeout")):f.code==App.ERROR_BUSY&&(a=mxUtils.htmlEntities(mxResources.get("busy"))));this.showError(b,a,l,c,h,null,null,null,null,null,null,null,d?c:null)}else null!=c&&c()};EditorUi.prototype.showError=function(a,b,c,d,f,h,k,m,u,x,p,G,z){a=new ErrorDialog(this,a,b,c||mxResources.get("ok"),d,f,h,k,G,m,u);this.showDialog(a.container,x||340,p||(null!=b&&120<b.length?180:150),!0,!1,z);a.init()};EditorUi.prototype.alert= -function(a,b){var c=new ErrorDialog(this,null,a,mxResources.get("ok"),b);this.showDialog(c.container,340,100,!0,!1);c.init()};EditorUi.prototype.confirm=function(a,b,c,d,f,h){var g=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){};a=new ConfirmDialog(this,a,function(){g();null!=b&&b()},function(){g();null!=c&&c()},d,f);this.showDialog(a.container,340,90,!0,h);a.init()};EditorUi.prototype.setCurrentFile=function(a){this.currentFile=a};EditorUi.prototype.getCurrentFile= -function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||!this.editor.graph.mathEnabled&&this.useCanvasForExport};EditorUi.prototype.createSvgDataUri=function(a){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(a)))};EditorUi.prototype.createImageDataUri=function(a,b,c){var d=a.toDataURL("image/"+c);if(6>=d.length||d==a.cloneNode(!1).toDataURL("image/"+c))throw{message:"Invalid image"};null!=b&&(d=this.writeGraphModelToPng(d, -"zTXt","mxGraphModel",atob(this.editor.graph.compress(b))));return d};EditorUi.prototype.saveCanvas=function(a,b,c){var d="jpeg"==c?"jpg":c,g=this.getBaseFilename()+"."+d;a=this.createImageDataUri(a,b,c);this.saveData(g,d,a.substring(a.lastIndexOf(",")+1),"image/"+c,!0)};EditorUi.prototype.isLocalFileSave=function(){return"remote"!=urlParams.save&&(mxClient.IS_IE||"undefined"!==typeof window.Blob&&"undefined"!==typeof window.URL)&&9!=document.documentMode&&8!=document.documentMode&&7!=document.documentMode&& -!mxClient.IS_QUIRKS||this.isOfflineApp()||mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(a,b){var c=new TextareaDialog(this,a,b,null,null,mxResources.get("close"));c.textarea.style.width="600px";c.textarea.style.height="380px";this.showDialog(c.container,620,460,!0,!0);c.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(a,b,c,d,f){if(window.Blob&&navigator.msSaveOrOpenBlob)a=d?this.base64ToBlob(a,c):new Blob([a],{type:c}),navigator.msSaveOrOpenBlob(a, -b);else if(mxClient.IS_IE)c=window.open("about:blank","_blank"),null==c?mxUtils.popup(a,!0):(c.document.write(a),c.document.close(),c.document.execCommand("SaveAs",!0,b),c.close());else{var g=document.createElement("a"),l=!mxClient.IS_SF&&0>navigator.userAgent.indexOf("PaleMoon/")&&"undefined"!==typeof g.download;if(mxClient.IS_GC)var h=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./),l=65==(h?parseInt(h[2],10):!1)?!1:l;if(l||this.isOffline()){g.href=URL.createObjectURL(d?this.base64ToBlob(a, -c):new Blob([a],{type:c}));l?g.download=b:g.setAttribute("target","_blank");document.body.appendChild(g);try{window.setTimeout(function(){URL.revokeObjectURL(g.href)},0),g.click(),g.parentNode.removeChild(g)}catch(u){}}else this.createEchoRequest(a,b,c,d,f).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(a,b,c,d,f,h){a="xml="+encodeURIComponent(a);return new mxXmlRequest(SAVE_URL,a+(null!=c?"&mime="+c:"")+(null!=f?"&format="+f:"")+(null!=h?"&base64="+h:"")+(null!=b?"&filename="+ -encodeURIComponent(b):"")+(d?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(a,b){b=b||"";for(var c=atob(a),d=c.length,g=Math.ceil(d/1024),f=Array(g),l=0;l<g;++l){for(var h=1024*l,u=Math.min(h+1024,d),k=Array(u-h),m=0;h<u;++m,++h)k[m]=c[h].charCodeAt(0);f[l]=new Uint8Array(k)}return new Blob(f,{type:b})};EditorUi.prototype.saveLocalFile=function(a,b,c,d,f,h,k){h=null!=h?h:!1;k=null!=k?k:"vsdx"!=f&&(!mxClient.IS_IOS||!navigator.standalone);f=this.getServiceCount(h);b=new CreateDialog(this, -b,mxUtils.bind(this,function(b,g){try{if("_blank"==g)if(null==c||"image/"!=c.substring(0,6)||"image/svg"==c.substring(0,9)&&!mxClient.IS_SVG){var f=window.open("about:blank");null==f?mxUtils.popup(a,!0):(f.document.write(mxUtils.htmlEntities(a,!1)),f.document.close())}else this.openInNewWindow(a,c,d);else g==App.MODE_DEVICE||"download"==g?this.doSaveLocalFile(a,b,c,d):null!=b&&0<b.length&&this.pickFolder(g,mxUtils.bind(this,function(f){try{this.exportFile(a,b,c,d,g,f)}catch(G){this.handleError(G)}}))}catch(F){this.handleError(F)}}), -mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,h,k,null,1<f,4<f&&(!h||6>f)?3:4,a,c,d);this.showDialog(b.container,420,1==f?160:4<f?390:270,!0,!0);b.init()};EditorUi.prototype.openInNewWindow=function(a,b,c){if(mxClient.IS_GC||mxClient.IS_EDGE||11==document.documentMode||10==document.documentMode){var d=window.open("about:blank");null==d?mxUtils.popup(a,!0):("image/svg+xml"==b?d.document.write("<html>"+a+"</html>"):d.document.write('<html><img src="data:'+ -b+(c?";base64,"+a:";charset=utf8,"+encodeURIComponent(a))+'"/></html>'),d.document.close())}else d=window.open("data:"+b+(c?";base64,"+a:";charset=utf8,"+encodeURIComponent(a))),null==d&&mxUtils.popup(a,!0)};var c=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.addChromelessToolbarItems=function(a){if(this.isExportToCanvas()){this.exportDialog=null;var b=a(mxUtils.bind(this,function(a){var c=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",c); -null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null)});if(null!=this.exportDialog)c.apply(this);else{this.exportDialog=document.createElement("div");var d=b.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";this.exportDialog.style.fontFamily="Helvetica,Arial";this.exportDialog.style.backgroundColor="#000000";this.exportDialog.style.width= -"50px";this.exportDialog.style.height="50px";this.exportDialog.style.padding="4px 2px 4px 2px";this.exportDialog.style.color="#ffffff";mxUtils.setOpacity(this.exportDialog,70);this.exportDialog.style.left=d.left+"px";this.exportDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";d=mxUtils.getCurrentStyle(this.editor.graph.container);this.exportDialog.style.zIndex=d.zIndex;var g=new Spinner({lines:8,length:6,width:5,radius:6,rotate:0,color:"#fff", -speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"28px",zIndex:2E9});g.spin(this.exportDialog);this.exportToCanvas(mxUtils.bind(this,function(a){g.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var b=this.createImageDataUri(a,null,"png");a=document.createElement("img");a.style.maxWidth="140px";a.style.maxHeight="140px";a.style.cursor="pointer";a.style.backgroundColor="white";a.setAttribute("title",mxResources.get("openInNewWindow")); -a.setAttribute("border","0");a.setAttribute("src",b);this.exportDialog.appendChild(a);mxEvent.addListener(a,"click",mxUtils.bind(this,function(){this.openInNewWindow(b.substring(b.indexOf(",")+1),"image/png",!0);c.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));mxEvent.addListener(this.editor.graph.container,"click",c);document.body.appendChild(this.exportDialog)}mxEvent.consume(a)}),Editor.cameraLargeImage,mxResources.get("export"))}c.apply(this, -arguments)};EditorUi.prototype.saveData=function(a,b,c,d,f){this.isLocalFileSave()?this.saveLocalFile(c,a,d,f,b):this.saveRequest(a,b,mxUtils.bind(this,function(a,g){return this.createEchoRequest(c,a,d,f,b,g)}),c,f,d)};EditorUi.prototype.saveRequest=function(a,b,c,d,f,h,k){k=null!=k?k:!mxClient.IS_IOS||!navigator.standalone;var g=this.getServiceCount(!1);a=new CreateDialog(this,a,mxUtils.bind(this,function(a,g){if("_blank"==g||null!=a&&0<a.length){var f=c("_blank"==g?null:a,g==App.MODE_DEVICE||"download"== -g||null==g||"_blank"==g?"0":"1");null!=f&&(g==App.MODE_DEVICE||"download"==g||"_blank"==g?f.simulate(document,"_blank"):this.pickFolder(g,mxUtils.bind(this,function(c){h=null!=h?h:"pdf"==b?"application/pdf":"image/"+b;if(null!=d)try{this.exportFile(d,a,h,!0,g,c)}catch(z){this.handleError(z)}else this.spinner.spin(document.body,mxResources.get("saving"))&&f.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=f.getStatus()&&299>=f.getStatus())try{this.exportFile(f.getText(),a,h,!0,g,c)}catch(z){this.handleError(z)}else this.handleError({message:mxResources.get("errorSavingFile")})}), -function(a){this.spinner.stop();this.handleError(a)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,k,null,1<g,4<g?3:4,d,h,f);this.showDialog(a.container,380,1==g?160:4<g?390:270,!0,!0);a.init()};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(a,b,c,d,f,h){};EditorUi.prototype.pickFolder=function(a,b,c){b(null)};EditorUi.prototype.exportSvg=function(a,b,c,d,f,h,k, -m,u,x){if(this.spinner.spin(document.body,mxResources.get("export"))){var g=this.editor.graph.isSelectionEmpty();c=null!=c?c:g;g=b?null:this.editor.graph.background;g==mxConstants.NONE&&(g=null);null==g&&0==b&&(g="#ffffff");var l=this.editor.graph.getSvg(g,a,k,m,null,c,null,null,"blank"==x?"_blank":"self"==x?"_top":null);d&&this.editor.graph.addSvgShadow(l,l);var n=this.getBaseFilename()+".svg",q=mxUtils.bind(this,function(a){this.spinner.stop();f&&a.setAttribute("content",this.getFileData(!0,null, -null,null,c,u));if(null!=this.editor.fontCss){var b=a.ownerDocument,b=null!=b.createElementNS?b.createElementNS(mxConstants.NS_SVG,"style"):b.createElement("style");b.setAttribute("type","text/css");mxUtils.setTextContent(b,this.editor.fontCss);a.getElementsByTagName("defs")[0].appendChild(b)}var d='<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a);this.isLocalFileSave()||d.length<=MAX_REQUEST_SIZE?this.saveData(n,"svg",d,"image/svg+xml"): -this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(d)}))});this.convertMath(this.editor.graph,l,!1,mxUtils.bind(this,function(){h?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.convertImages(l,q,this.thumbImageCache)):q(l)}))}};EditorUi.prototype.addRadiobox=function(a,b,c,d,f,h,k){return this.addCheckbox(a,c,d,f,h,k,!0,b)};EditorUi.prototype.addCheckbox=function(a,b,c,d,f,h,k,m){h=null!=h?h:!0;var g=document.createElement("input"); -g.style.marginRight="8px";g.style.marginTop="16px";g.setAttribute("type",k?"radio":"checkbox");k="geCheckbox-"+Editor.guid();g.id=k;null!=m&&g.setAttribute("name",m);c&&(g.setAttribute("checked","checked"),g.defaultChecked=!0);d&&g.setAttribute("disabled","disabled");h&&(a.appendChild(g),c=document.createElement("label"),mxUtils.write(c,b),c.setAttribute("for",k),a.appendChild(c),f||mxUtils.br(a));return g};EditorUi.prototype.addEditButton=function(a,b){var c=this.addCheckbox(a,mxResources.get("edit")+ -":",!0,null,!0);c.style.marginLeft="24px";var d=this.getCurrentFile(),g="";null!=d&&d.getMode()!=App.MODE_DEVICE&&d.getMode()!=App.MODE_BROWSER&&(g=window.location.href);var f=document.createElement("select");f.style.width="120px";f.style.marginLeft="8px";f.style.marginRight="10px";f.className="geBtn";d=document.createElement("option");d.setAttribute("value","blank");mxUtils.write(d,mxResources.get("makeCopy"));f.appendChild(d);d=document.createElement("option");d.setAttribute("value","custom");mxUtils.write(d, -mxResources.get("custom")+"...");f.appendChild(d);a.appendChild(f);mxEvent.addListener(f,"change",mxUtils.bind(this,function(){if("custom"==f.value){var a=new FilenameDialog(this,g,mxResources.get("ok"),function(a){null!=a?g=a:f.value="blank"},mxResources.get("url"),null,null,null,null,function(){f.value="blank"});this.showDialog(a.container,300,80,!0,!1);a.init()}}));mxEvent.addListener(c,"change",mxUtils.bind(this,function(){c.checked&&(null==b||b.checked)?f.removeAttribute("disabled"):f.setAttribute("disabled", -"disabled")}));mxUtils.br(a);return{getLink:function(){return c.checked?"blank"===f.value?"_blank":g:null},getEditInput:function(){return c},getEditSelect:function(){return f}}};EditorUi.prototype.addLinkSection=function(a,b){function c(){h.innerHTML='<div style="width:100%;height:100%;box-sizing:border-box;'+(null!=f&&f!=mxConstants.NONE?"border:1px solid black;background-color:"+f:"background-position:center center;background-repeat:no-repeat;background-image:url('"+Dialog.prototype.closeImage+ -"')")+';"></div>'}mxUtils.write(a,mxResources.get("links")+":");var d=document.createElement("select");d.style.width="100px";d.style.marginLeft="8px";d.style.marginRight="10px";d.className="geBtn";var g=document.createElement("option");g.setAttribute("value","auto");mxUtils.write(g,mxResources.get("automatic"));d.appendChild(g);g=document.createElement("option");g.setAttribute("value","blank");mxUtils.write(g,mxResources.get("openInNewWindow"));d.appendChild(g);g=document.createElement("option"); -g.setAttribute("value","self");mxUtils.write(g,mxResources.get("openInThisWindow"));d.appendChild(g);b&&(g=document.createElement("option"),g.setAttribute("value","frame"),mxUtils.write(g,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),d.appendChild(g));a.appendChild(d);mxUtils.write(a,mxResources.get("borderColor")+":");var f="#0000ff",h=null,h=mxUtils.button("",mxUtils.bind(this,function(a){this.pickColor(f||"none",function(a){f=a;c()});mxEvent.consume(a)}));c();h.style.padding= -mxClient.IS_FF?"4px 2px 4px 2px":"4px";h.style.marginLeft="4px";h.style.height="22px";h.style.width="22px";h.style.position="relative";h.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";h.className="geColorBtn";a.appendChild(h);mxUtils.br(a);return{getColor:function(){return f},getTarget:function(){return d.value},focus:function(){d.focus()}}};EditorUi.prototype.createLink=function(a,b,c,d,f,h,k,m){var g=this.getCurrentFile(),l=[];d&&(l.push("lightbox=1"),"auto"!=a&&l.push("target="+ -a),null!=b&&b!=mxConstants.NONE&&l.push("highlight="+("#"==b.charAt(0)?b.substring(1):b)),null!=f&&0<f.length&&l.push("edit="+encodeURIComponent(f)),h&&l.push("layers=1"),this.editor.graph.foldingEnabled&&l.push("nav=1"));c&&(a=this.getSelectedPageIndex(),0<a&&l.push("page="+a));a=!0;null!=k?c="#U"+encodeURIComponent(k):(g=this.getCurrentFile(),m||null==g||g.constructor!=window.DriveFile?c="#R"+encodeURIComponent(c?this.getFileData(!0,null,null,null,null,null,null,!0):this.editor.graph.compress(mxUtils.getXml(this.editor.getGraphXml()))): -(c="#"+g.getHash(),a=!1));a&&null!=g&&null!=g.getTitle()&&g.getTitle()!=this.defaultFilename&&l.push("title="+encodeURIComponent(g.getTitle()));return(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?"https://www.draw.io/":"https://"+window.location.host+"/")+(0<l.length?"?"+l.join("&"):"")+c};EditorUi.prototype.createHtml=function(a,b,c,d,f,h,k,m,u,x,p){this.getBasenames();var g={};""!=f&&f!=mxConstants.NONE&&(g.highlight=f);"auto"!==d&&(g.target=d); -u||(g.lightbox=!1);g.nav=this.editor.graph.foldingEnabled;c=parseInt(c);isNaN(c)||100==c||(g.zoom=c/100);c=[];k&&(c.push("pages"),g.resize=!0,null!=this.pages&&null!=this.currentPage&&(g.page=mxUtils.indexOf(this.pages,this.currentPage)));b&&(c.push("zoom"),g.resize=!0);m&&c.push("layers");0<c.length&&(u&&c.push("lightbox"),g.toolbar=c.join(" "));null!=x&&0<x.length&&(g.edit=x);null!=a?g.url=a:g.xml=this.getFileData(!0,null,null,null,null,!k);b='<div class="mxgraph" style="'+(h?"max-width:100%;": -"")+(""!=c?"border:1px solid transparent;":"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(g))+'"></div>';a=null!=a?"&fetch="+encodeURIComponent(a):"";p(b,'<script type="text/javascript" src="'+(0<a.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":"https://www.draw.io/embed2.js?")+a:"1"==urlParams.dev?"https://test.draw.io/js/viewer.min.js":"https://www.draw.io/js/viewer.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(a,b,c,d){var g=document.createElement("div"); -g.style.whiteSpace="nowrap";var f=document.createElement("h3");mxUtils.write(f,mxResources.get("html"));f.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";g.appendChild(f);var h=document.createElement("div");h.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var l=document.createElement("input");l.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";l.setAttribute("value","url");l.setAttribute("type","radio");l.setAttribute("name", -"type-embedhtmldialog");f=l.cloneNode(!0);f.setAttribute("value","copy");h.appendChild(f);var n=document.createElement("span");mxUtils.write(n,mxResources.get("includeCopyOfMyDiagram"));h.appendChild(n);mxUtils.br(h);h.appendChild(l);n=document.createElement("span");mxUtils.write(n,mxResources.get("publicDiagramUrl"));h.appendChild(n);var k=this.getCurrentFile();null==c&&null!=k&&k.constructor==window.DriveFile&&(n=document.createElement("a"),n.style.paddingLeft="12px",n.style.color="gray",n.setAttribute("href", -"javascript:void(0);"),mxUtils.write(n,mxResources.get("share")),h.appendChild(n),mxEvent.addListener(n,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(k.getId())})));f.setAttribute("checked","checked");null==c&&l.setAttribute("disabled","disabled");g.appendChild(h);var m=this.addLinkSection(g),q=this.addCheckbox(g,mxResources.get("zoom"),!0,null,!0);mxUtils.write(g,":");var p=document.createElement("input");p.setAttribute("type","text");p.style.marginRight="16px"; -p.style.width="60px";p.style.marginLeft="4px";p.style.marginRight="12px";p.value="100%";g.appendChild(p);var A=this.addCheckbox(g,mxResources.get("fit"),!0),h=null!=this.pages&&1<this.pages.length,H=H=this.addCheckbox(g,mxResources.get("allPages"),h,!h),B=this.addCheckbox(g,mxResources.get("layers"),!0),D=this.addCheckbox(g,mxResources.get("lightbox"),!0),J=this.addEditButton(g,D),C=J.getEditInput();C.style.marginBottom="16px";mxEvent.addListener(D,"change",function(){D.checked?C.removeAttribute("disabled"): -C.setAttribute("disabled","disabled");C.checked&&D.checked?J.getEditSelect().removeAttribute("disabled"):J.getEditSelect().setAttribute("disabled","disabled")});a=new CustomDialog(this,g,mxUtils.bind(this,function(){d(l.checked?c:null,q.checked,p.value,m.getTarget(),m.getColor(),A.checked,H.checked,B.checked,D.checked,J.getLink())}),null,a,b);this.showDialog(a.container,340,384,!0,!0);f.focus()};EditorUi.prototype.showPublishLinkDialog=function(a,b,c,d,f,h){var g=document.createElement("div");g.style.whiteSpace= -"nowrap";var l=document.createElement("h3");mxUtils.write(l,a||mxResources.get("link"));l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";g.appendChild(l);var n=this.getCurrentFile(),l="https://desk.draw.io/support/solutions/articles/16000051941";a=0;if(null!=n&&n.constructor==window.DriveFile&&!b){a=80;var l="https://desk.draw.io/support/solutions/articles/16000039384",k=document.createElement("div");k.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;"; -var m=document.createElement("div");m.style.whiteSpace="normal";mxUtils.write(m,mxResources.get("linkAccountRequired"));k.appendChild(m);m=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(n.getId())}));m.style.marginTop="12px";m.className="geBtn";k.appendChild(m);g.appendChild(k);m=document.createElement("a");m.style.paddingLeft="12px";m.style.color="gray";m.style.fontSize="11px";m.setAttribute("href","javascript:void(0);");mxUtils.write(m,mxResources.get("check")); -k.appendChild(m);mxEvent.addListener(m,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(a){this.spinner.stop();a=new ErrorDialog(this,null,mxResources.get(null!=a?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(a.container,300,80,!0,!1);a.init()}))}))}var q=null,p=null;if(null!=c||null!=d)a+=30,mxUtils.write(g,mxResources.get("width")+":"),q=document.createElement("input"), -q.setAttribute("type","text"),q.style.marginRight="16px",q.style.width="50px",q.style.marginLeft="6px",q.style.marginRight="16px",q.style.marginBottom="10px",q.value="100%",g.appendChild(q),mxUtils.write(g,mxResources.get("height")+":"),p=document.createElement("input"),p.setAttribute("type","text"),p.style.width="50px",p.style.marginLeft="6px",p.style.marginBottom="10px",p.value=d+"px",g.appendChild(p),mxUtils.br(g);var t=this.addLinkSection(g,h);c=null!=this.pages&&1<this.pages.length;var v=null; -if(null==n||n.constructor!=window.DriveFile||b)v=this.addCheckbox(g,mxResources.get("allPages"),c,!c);var B=this.addCheckbox(g,mxResources.get("lightbox"),!0),D=this.addEditButton(g,B),J=D.getEditInput(),C=this.addCheckbox(g,mxResources.get("layers"),!0);C.style.marginLeft=J.style.marginLeft;C.style.marginBottom="16px";C.style.marginTop="8px";mxEvent.addListener(B,"change",function(){B.checked?(C.removeAttribute("disabled"),J.removeAttribute("disabled")):(C.setAttribute("disabled","disabled"),J.setAttribute("disabled", -"disabled"));J.checked&&B.checked?D.getEditSelect().removeAttribute("disabled"):D.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,g,mxUtils.bind(this,function(){f(t.getTarget(),t.getColor(),null==v?!0:v.checked,B.checked,D.getLink(),C.checked,null!=q?q.value:null,null!=p?p.value:null)}),null,mxResources.get("create"),l);this.showDialog(b.container,340,254+a,!0,!0);null!=q?(q.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?q.select(): -document.execCommand("selectAll",!1,null)):t.focus()};EditorUi.prototype.showRemoteExportDialog=function(a,b,c,d){var g=document.createElement("div");g.style.whiteSpace="nowrap";var f=document.createElement("h3");mxUtils.write(f,mxResources.get("image"));f.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";g.appendChild(f);var h=this.addCheckbox(g,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),l=d?null:this.addCheckbox(g,mxResources.get("includeCopyOfMyDiagram"), -!0),f=this.editor.graph,n=d?null:this.addCheckbox(g,mxResources.get("transparentBackground"),f.background==mxConstants.NONE||null==f.background);null!=n&&(n.style.marginBottom="16px");a=new CustomDialog(this,g,mxUtils.bind(this,function(){c(!h.checked,null!=l?l.checked:!1,null!=n?n.checked:!1)}),null,a,b);this.showDialog(a.container,300,d?100:186,!0,!0)};EditorUi.prototype.showExportDialog=function(a,b,c,d,f,h,k,m){k=null!=k?k:!0;var g=document.createElement("div");g.style.whiteSpace="nowrap";var l= -this.editor.graph,n="jpeg"==m?196:300,q=document.createElement("h3");mxUtils.write(q,a);q.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";g.appendChild(q);mxUtils.write(g,mxResources.get("zoom")+":");var p=document.createElement("input");p.setAttribute("type","text");p.style.marginRight="16px";p.style.width="60px";p.style.marginLeft="4px";p.style.marginRight="12px";p.value=this.lastExportZoom||"100%";g.appendChild(p);mxUtils.write(g,mxResources.get("borderWidth")+":"); -var t=document.createElement("input");t.setAttribute("type","text");t.style.marginRight="16px";t.style.width="60px";t.style.marginLeft="4px";t.value=this.lastExportBorder||"0";g.appendChild(t);mxUtils.br(g);var v=this.addCheckbox(g,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=m),w=this.addCheckbox(g,mxResources.get("selectionOnly"),!1,l.isSelectionEmpty()),y=document.createElement("input");y.style.marginTop="16px";y.style.marginRight="8px";y.style.marginLeft="24px";y.setAttribute("disabled", -"disabled");y.setAttribute("type","checkbox");h&&(g.appendChild(y),mxUtils.write(g,mxResources.get("crop")),mxUtils.br(g),n+=26,mxEvent.addListener(w,"change",function(){w.checked?y.removeAttribute("disabled"):y.setAttribute("disabled","disabled")}));l.isSelectionEmpty()||(y.setAttribute("checked","checked"),y.defaultChecked=!0);var J=this.addCheckbox(g,mxResources.get("shadow"),l.shadowVisible),C=document.createElement("input");C.style.marginTop="16px";C.style.marginRight="8px";C.setAttribute("type", -"checkbox");!this.isOffline()&&this.canvasSupported||C.setAttribute("disabled","disabled");b&&(g.appendChild(C),mxUtils.write(g,mxResources.get("embedImages")),mxUtils.br(g),n+=26);var E=this.addCheckbox(g,mxResources.get("includeCopyOfMyDiagram"),k,null,null,"jpeg"!=m),I=null!=this.pages&&1<this.pages.length,M=this.addCheckbox(g,I?mxResources.get("allPages"):"",I,!I,null,"jpeg"!=m);M.style.marginLeft="24px";M.style.marginBottom="16px";I||(M.style.display="none");mxEvent.addListener(E,"change",function(){E.checked&& -I?M.removeAttribute("disabled"):M.setAttribute("disabled","disabled")});k&&I||M.setAttribute("disabled","disabled");var L=document.createElement("select");L.style.maxWidth="260px";L.style.marginLeft="8px";L.style.marginRight="10px";L.className="geBtn";a=document.createElement("option");a.setAttribute("value","auto");mxUtils.write(a,mxResources.get("automatic"));L.appendChild(a);a=document.createElement("option");a.setAttribute("value","blank");mxUtils.write(a,mxResources.get("openInNewWindow"));L.appendChild(a); -a=document.createElement("option");a.setAttribute("value","self");mxUtils.write(a,mxResources.get("openInThisWindow"));L.appendChild(a);"svg"==m&&(mxUtils.write(g,mxResources.get("links")+":"),g.appendChild(L),mxUtils.br(g),mxUtils.br(g),n+=26);c=new CustomDialog(this,g,mxUtils.bind(this,function(){this.lastExportBorder=t.value;this.lastExportZoom=p.value;f(p.value,v.checked,!w.checked,J.checked,E.checked,C.checked,t.value,y.checked,!M.checked,L.value)}),null,c,d);this.showDialog(c.container,340, -n,!0,!0);p.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?p.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(a,b,c,d,f){var g=document.createElement("div");g.style.whiteSpace="nowrap";var h=this.editor.graph;if(null!=b){var l=document.createElement("h3");mxUtils.write(l,b);l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";g.appendChild(l)}var n=this.addCheckbox(g,mxResources.get("fit"), -!0),k=this.addCheckbox(g,mxResources.get("shadow"),h.shadowVisible&&d,!d),m=this.addCheckbox(g,c),q=this.addCheckbox(g,mxResources.get("lightbox"),!0),p=this.addEditButton(g,q),t=p.getEditInput(),H=1<h.model.getChildCount(h.model.getRoot()),B=this.addCheckbox(g,mxResources.get("layers"),H,!H);B.style.marginLeft=t.style.marginLeft;B.style.marginBottom="12px";B.style.marginTop="8px";mxEvent.addListener(q,"change",function(){q.checked?(H&&B.removeAttribute("disabled"),t.removeAttribute("disabled")): -(B.setAttribute("disabled","disabled"),t.setAttribute("disabled","disabled"));t.checked&&q.checked?p.getEditSelect().removeAttribute("disabled"):p.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,g,mxUtils.bind(this,function(){a(n.checked,k.checked,m.checked,q.checked,p.getLink(),B.checked)}),null,mxResources.get("embed"),f);this.showDialog(b.container,280,280,!0,!0)};EditorUi.prototype.createEmbedImage=function(a,b,c,d,f,h,k,m){function g(b){var g=" ",n="";d&&(g=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('https://www.draw.io/?client=1&lightbox=1"+ -(f?"&edit=_blank":"")+(h?"&layers=1":"")+"');}})(this);\"",n+="cursor:pointer;");a&&(n+="max-width:100%;");var u="";c&&(u=' width="'+Math.round(l.width)+'" height="'+Math.round(l.height)+'"');k('<img src="'+b+'"'+u+(""!=n?' style="'+n+'"':"")+g+"/>")}var l=this.editor.graph.getGraphBounds();if(this.isExportToCanvas())this.exportToCanvas(mxUtils.bind(this,function(a){var b=d?this.getFileData(!0):null;a=this.createImageDataUri(a,b,"png");g(a)}),null,null,null,mxUtils.bind(this,function(a){m({message:mxResources.get("unknownError")})}), -null,!0,c?2:1,null,b);else if(b=this.getFileData(!0),l.width*l.height<=MAX_AREA&&b.length<=MAX_REQUEST_SIZE){var n="";c&&(n="&w="+Math.round(2*l.width)+"&h="+Math.round(2*l.height));var q=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(d?"1":"0")+n+"&xml="+encodeURIComponent(b));q.send(mxUtils.bind(this,function(){200<=q.getStatus()&&299>=q.getStatus()?g("data:image/png;base64,"+q.getText()):m({message:mxResources.get("unknownError")})}))}else m({message:mxResources.get("drawingTooLarge")})}; -EditorUi.prototype.createEmbedSvg=function(a,b,c,d,f,h,k){var g=this.editor.graph.getSvg(),l=g.getElementsByTagName("a");if(null!=l)for(var n=0;n<l.length;n++){var m=l[n].getAttribute("href");null!=m&&"#"==m.charAt(0)&&"_blank"==l[n].getAttribute("target")&&l[n].removeAttribute("target")}d&&g.setAttribute("content",this.getFileData(!0));b&&this.editor.graph.addSvgShadow(g);if(c){var q=" ",p="";d&&(q="onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('https://www.draw.io/?client=1&lightbox=1"+ -(f?"&edit=_blank":"")+(h?"&layers=1":"")+"');}})(this);\"",p+="cursor:pointer;");a&&(p+="max-width:100%;");this.convertImages(g,mxUtils.bind(this,function(a){k('<img src="'+this.createSvgDataUri(mxUtils.getXml(a))+'"'+(""!=p?' style="'+p+'"':"")+q+"/>")}))}else p="",d&&(g.setAttribute("onclick","(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&&src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&&!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('https://www.draw.io/?client=1&lightbox=1"+ -(f?"&edit=_blank":"")+(h?"&layers=1":"")+"');}}})(this);"),p+="cursor:pointer;"),a&&(a=parseInt(g.getAttribute("width")),b=parseInt(g.getAttribute("height")),g.setAttribute("viewBox","0 0 "+a+" "+b),p+="max-width:100%;max-height:"+b+"px;",g.removeAttribute("height")),""!=p&&g.setAttribute("style",p),k(mxUtils.getXml(g))};EditorUi.prototype.timeSince=function(a){a=Math.floor((new Date-a)/1E3);var b=Math.floor(a/31536E3);if(1<b)return b+" "+mxResources.get("years");b=Math.floor(a/2592E3);if(1<b)return b+ -" "+mxResources.get("months");b=Math.floor(a/86400);if(1<b)return b+" "+mxResources.get("days");b=Math.floor(a/3600);if(1<b)return b+" "+mxResources.get("hours");b=Math.floor(a/60);return 1<b?b+" "+mxResources.get("minutes"):1==b?b+" "+mxResources.get("minute"):null};EditorUi.prototype.convertMath=function(a,b,c,d){a.mathEnabled&&"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?(Editor.MathJaxRender(b),window.setTimeout(mxUtils.bind(this,function(){MathJax.Hub.Queue(mxUtils.bind(this, -function(){d()}))}),0)):d()};EditorUi.prototype.decodeNodeIntoGraph=function(a,b){if(null!=a){var c=null;if("diagram"==a.nodeName)c=a;else if("mxfile"==a.nodeName){var d=a.getElementsByTagName("diagram");if(0<d.length){var c=d[0],g=b.getGlobalVariable;b.getGlobalVariable=function(a){return"page"==a?c.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==a?1:g.apply(this,arguments)}}}null!=c&&(d=b.decompress(mxUtils.getTextContent(c)),null!=d&&0<d.length&&(a=mxUtils.parseXml(d).documentElement))}d= -this.editor.graph;try{this.editor.graph=b,this.editor.setGraphXml(a)}catch(v){}finally{this.editor.graph=d}return a};EditorUi.prototype.getEmbeddedPng=function(a,b,c){var d=this.editor.graph,g=null;if(null!=c&&0<c.length)d=this.createTemporaryGraph(this.editor.graph.getStylesheet()),document.body.appendChild(d.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(c).documentElement,!0),d),g=c;else if(null!=this.pages&&this.currentPage!=this.pages[0]){var d=this.createTemporaryGraph(d.getStylesheet()), -f=d.getGlobalVariable,h=this.pages[0];d.getGlobalVariable=function(a){return"page"==a?h.getName():"pagenumber"==a?1:f.apply(this,arguments)};document.body.appendChild(d.container);d.model.setRoot(h.root)}this.exportToCanvas(mxUtils.bind(this,function(c){try{null==g&&(g=this.getFileData(!0));var f=c.toDataURL("image/png"),f=this.writeGraphModelToPng(f,"zTXt","mxGraphModel",atob(this.editor.graph.compress(g)));a(f.substring(f.lastIndexOf(",")+1));d!=this.editor.graph&&d.container.parentNode.removeChild(d.container)}catch(x){null!= -b&&b(x)}}),null,null,null,mxUtils.bind(this,function(a){null!=b&&b(a)}),null,null,null,null,d.shadowVisible,null,d)};EditorUi.prototype.getEmbeddedSvg=function(a,b,c,d,f,h,k){k=b.background;k==mxConstants.NONE&&(k=null);b=b.getSvg(k,null,null,null,null,h);null!=a&&b.setAttribute("content",a);null!=c&&b.setAttribute("resource",c);if(null!=f)this.convertImages(b,mxUtils.bind(this,function(a){f((d?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+ -mxUtils.getXml(a))}));else return(d?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(b)};EditorUi.prototype.exportImage=function(a,b,c,d,f,h,k,m,u){u=null!=u?u:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var g=this.editor.graph.isSelectionEmpty();c=null!=c?c:g;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.exportToCanvas(mxUtils.bind(this,function(a){this.spinner.stop(); -try{this.saveCanvas(a,f?this.getFileData(!0,null,null,null,c,m):null,u)}catch(G){"Invalid image"==G.message?this.downloadFile(u):this.handleError(G)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),null,c,a||1,b,d,null,null,h,k)}catch(F){this.spinner.stop(),this.handleError(F)}}};EditorUi.prototype.loadFonts=function(a){if(null!=this.editor.fontCss&&null==this.editor.resolvedFontCss){var b=function(a){return a.replace(RegExp("^[\\s\"']+","g"), -"").replace(RegExp("[\\s\"']+$","g"),"")},c=this.editor.fontCss.split("url("),d=0,g={},f=mxUtils.bind(this,function(){if(0==d){for(var f=[c[0]],h=1;h<c.length;h++){var l=c[h].indexOf(")");f.push('url("');f.push(g[b(c[h].substring(0,l))]);f.push('"'+c[h].substring(l))}this.editor.resolvedFontCss=f.join("");a()}});if(0<c.length)for(var h=1;h<c.length;h++){var k=c[h].indexOf(")"),u=null,m=c[h].indexOf("format(",k);0<m&&(u=b(c[h].substring(m+7,c[h].indexOf(")",m))));mxUtils.bind(this,function(a){if(null== -g[a]){g[a]=a;d++;var b="application/x-font-ttf";if("svg"==u||/(\.svg)($|\?)/i.test(a))b="image/svg+xml";else if("otf"==u||"embedded-opentype"==u||/(\.otf)($|\?)/i.test(a))b="application/x-font-opentype";else if("woff"==u||/(\.woff)($|\?)/i.test(a))b="application/font-woff";else if("woff2"==u||/(\.woff2)($|\?)/i.test(a))b="application/font-woff2";else if("eot"==u||/(\.eot)($|\?)/i.test(a))b="application/vnd.ms-fontobject";else if("sfnt"==u||/(\.sfnt)($|\?)/i.test(a))b="application/font-sfnt";var c= -a;/^https?:\/\//.test(c)&&!this.isCorsEnabledForUrl(c)&&(c=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(c,mxUtils.bind(this,function(b){g[a]=b;d--;f()}),mxUtils.bind(this,function(a){d--;f()}),!0,null,"data:"+b+";charset=utf-8;base64,")}})(b(c[h].substring(0,k)),u)}}else a()};EditorUi.prototype.exportToCanvas=function(a,b,c,d,f,h,k,m,u,p,F,G,z,A){h=null!=h?h:!0;G=null!=G?G:this.editor.graph;z=null!=z?z:0;var g=u?null:G.background;g==mxConstants.NONE&&(g=null);null==g&&(g=d);null==g&&0==u&& -(g=this.editor.graph.defaultPageBackgroundColor);this.convertImages(G.getSvg(g,null,null,A,null,null!=k?k:!0,null,null,null,p),mxUtils.bind(this,function(c){var d=new Image;d.onload=mxUtils.bind(this,function(){try{var l=document.createElement("canvas"),n=parseInt(c.getAttribute("width")),k=parseInt(c.getAttribute("height"));m=null!=m?m:1;null!=b&&(m=h?Math.min(1,Math.min(3*b/(4*k),b/n)):b/n);n=Math.ceil(m*n)+2*z;k=Math.ceil(m*k)+2*z;l.setAttribute("width",n);l.setAttribute("height",k);var u=l.getContext("2d"); -null!=g&&(u.beginPath(),u.rect(0,0,n,k),u.fillStyle=g,u.fill());u.scale(m,m);mxClient.IS_SF?window.setTimeout(function(){u.drawImage(d,z/m,z/m);a(l)},0):(u.drawImage(d,z/m,z/m),a(l))}catch(L){null!=f&&f(L)}});d.onerror=function(a){null!=f&&f(a)};try{p&&this.editor.graph.addSvgShadow(c,c);var l=mxUtils.bind(this,function(){if(null!=this.editor.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.editor.resolvedFontCss;c.getElementsByTagName("defs")[0].appendChild(a)}this.convertMath(G, -c,!0,mxUtils.bind(this,function(){d.src=this.createSvgDataUri(mxUtils.getXml(c))}))});this.loadFonts(l)}catch(C){null!=f&&f(C)}}),c,F)};EditorUi.prototype.createImageUrlConverter=function(){var a=new mxUrlConverter;a.updateBaseUrl();var b=a.convert,c=this;a.convert=function(d){if(null!=d){var g="http://"==d.substring(0,7)||"https://"==d.substring(0,8);g&&!navigator.onLine?d=c.svgBrokenImage.src:!g||d.substring(0,a.baseUrl.length)==a.baseUrl||c.crossOriginImages&&c.isCorsEnabledForUrl(d)?"chrome-extension://"!= -d.substring(0,19)&&(d=b.apply(this,arguments)):d=PROXY_URL+"?url="+encodeURIComponent(d)}return d};return a};EditorUi.prototype.convertImages=function(a,b,c,d){null==d&&(d=this.createImageUrlConverter());var g=0,f=c||{};c=mxUtils.bind(this,function(c,h){for(var l=a.getElementsByTagName(c),n=0;n<l.length;n++)mxUtils.bind(this,function(c){var l=d.convert(c.getAttribute(h));if(null!=l&&"data:"!=l.substring(0,5)){var n=f[l];null==n?(g++,this.convertImageToDataUri(l,function(d){null!=d&&(f[l]=d,c.setAttribute(h, -d));g--;0==g&&b(a)})):c.setAttribute(h,n)}else null!=l&&c.setAttribute(h,l)})(l[n])});c("image","xlink:href");c("img","src");0==g&&b(a)};EditorUi.prototype.loadUrl=function(a,b,c,d,f,h){try{var g=d||/(\.png)($|\?)/i.test(a)||/(\.jpe?g)($|\?)/i.test(a)||/(\.gif)($|\?)/i.test(a);f=null!=f?f:!0;var l=mxUtils.bind(this,function(){mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=b){var d=a.getText();if(g){if((9==document.documentMode||10==document.documentMode)&& -"undefined"!==typeof window.mxUtilsBinaryToArray){a=mxUtilsBinaryToArray(a.request.responseBody).toArray();for(var d=Array(a.length),f=0;f<a.length;f++)d[f]=String.fromCharCode(a[f]);d=d.join("")}h=null!=h?h:"data:image/png;base64,";d=h+this.base64Encode(d)}b(d)}}else null!=c&&c({code:App.ERROR_UNKNOWN},a)}),function(){null!=c&&c({code:App.ERROR_UNKNOWN})},g,this.timeout,function(){f&&null!=c&&c({code:App.ERROR_TIMEOUT,retry:l})})});l()}catch(u){null!=c&&c(u)}};EditorUi.prototype.isCorsEnabledForUrl= +a.scroll&&(b=this.getCellsForAction(a.scroll));0<b.length&&this.scrollCellToVisible(b[0])};Graph.prototype.getCellsForAction=function(a){return this.getCellsById(a.cells).concat(this.getCellsForTags(a.tags))};Graph.prototype.getCellsById=function(a){var b=[];if(null!=a)for(var c=0;c<a.length;c++)if("*"==a[c])var f=this.getDefaultParent(),b=b.concat(this.model.filterDescendants(function(a){return a!=f},f));else{var d=this.model.getCell(a[c]);null!=d&&b.push(d)}return b};Graph.prototype.getCellsForTags= +function(a,b,c){var f=[];if(null!=a){b=null!=b?b:this.model.getDescendants(this.model.getRoot());c=null!=c?c:"tags";for(var d=0;d<b.length;d++)if(this.model.isVertex(b[d])||this.model.isEdge(b[d])){var l=null!=b[d].value&&"object"==typeof b[d].value?mxUtils.trim(b[d].value.getAttribute(c)||""):"",e=!0;if(0<l.length)for(var l=l.toLowerCase().split(" "),p=0;p<a.length&&e;p++)var g=mxUtils.trim(a[p]).toLowerCase(),e=e&&(0==g.length||0<=mxUtils.indexOf(l,g));else e=0==a.length;e&&f.push(b[d])}}return f}; +Graph.prototype.toggleCells=function(a){this.model.beginUpdate();try{for(var b=0;b<a.length;b++)this.model.setVisible(a[b],!this.model.isVisible(a[b]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(a,b){this.model.beginUpdate();try{for(var c=0;c<a.length;c++)this.model.setVisible(a[c],b)}finally{this.model.endUpdate()}};Graph.prototype.highlightCells=function(a,b,c,f){for(var d=0;d<a.length;d++)this.highlightCell(a[d],b,c,f)};Graph.prototype.highlightCell=function(a,b, +c,f){b=null!=b?b:mxConstants.DEFAULT_VALID_COLOR;c=null!=c?c:1E3;a=this.view.getState(a);if(null!=a){var d=Math.max(5,mxUtils.getValue(a.style,mxConstants.STYLE_STROKEWIDTH,1)+4),l=new mxCellHighlight(this,b,d,!1);null!=f&&(l.opacity=f);l.highlight(a);window.setTimeout(function(){null!=l.shape&&(mxUtils.setPrefixedStyle(l.shape.node.style,"transition","all 1200ms ease-in-out"),l.shape.node.style.opacity=0);window.setTimeout(function(){l.destroy()},1200)},c)}};Graph.prototype.addSvgShadow=function(a, +b,c){c=null!=c?c:!1;var f=a.ownerDocument,d=null!=f.createElementNS?f.createElementNS(mxConstants.NS_SVG,"filter"):f.createElement("filter");d.setAttribute("id",this.shadowId);var l=null!=f.createElementNS?f.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):f.createElement("feGaussianBlur");l.setAttribute("in","SourceAlpha");l.setAttribute("stdDeviation",this.svgShadowBlur);l.setAttribute("result","blur");d.appendChild(l);l=null!=f.createElementNS?f.createElementNS(mxConstants.NS_SVG,"feOffset"): +f.createElement("feOffset");l.setAttribute("in","blur");l.setAttribute("dx",this.svgShadowSize);l.setAttribute("dy",this.svgShadowSize);l.setAttribute("result","offsetBlur");d.appendChild(l);l=null!=f.createElementNS?f.createElementNS(mxConstants.NS_SVG,"feFlood"):f.createElement("feFlood");l.setAttribute("flood-color",this.svgShadowColor);l.setAttribute("flood-opacity",this.svgShadowOpacity);l.setAttribute("result","offsetColor");d.appendChild(l);l=null!=f.createElementNS?f.createElementNS(mxConstants.NS_SVG, +"feComposite"):f.createElement("feComposite");l.setAttribute("in","offsetColor");l.setAttribute("in2","offsetBlur");l.setAttribute("operator","in");l.setAttribute("result","offsetBlur");d.appendChild(l);l=null!=f.createElementNS?f.createElementNS(mxConstants.NS_SVG,"feBlend"):f.createElement("feBlend");l.setAttribute("in","SourceGraphic");l.setAttribute("in2","offsetBlur");d.appendChild(l);l=a.getElementsByTagName("defs");0==l.length?(f=null!=f.createElementNS?f.createElementNS(mxConstants.NS_SVG, +"defs"):f.createElement("defs"),null!=a.firstChild?a.insertBefore(f,a.firstChild):a.appendChild(f)):f=l[0];f.appendChild(d);c||(b=null!=b?b:a.getElementsByTagName("g")[0],null!=b&&(b.setAttribute("filter","url(#"+this.shadowId+")"),isNaN(parseInt(a.getAttribute("width")))||(a.setAttribute("width",parseInt(a.getAttribute("width"))+6),a.setAttribute("height",parseInt(a.getAttribute("height"))+6),b=a.getAttribute("viewBox"),null!=b&&0<b.length&&(b=b.split(" "),3<b.length&&(w=parseFloat(b[2])+6,h=parseFloat(b[3])+ +6,a.setAttribute("viewBox",b[0]+" "+b[1]+" "+w+" "+h))))));return d};Graph.prototype.setShadowVisible=function(a,b){mxClient.IS_SVG&&(b=null!=b?b:!0,(this.shadowVisible=a)?this.view.getDrawPane().setAttribute("filter","url(#"+this.shadowId+")"):this.view.getDrawPane().removeAttribute("filter"),b&&this.fireEvent(new mxEventObject("shadowVisibleChanged")))};Graph.prototype.selectUnlockedLayer=function(){if(null==this.defaultParent){var a=this.model.getChildCount(this.model.root),b,c=0;do b=this.model.getChildAt(this.model.root, +c);while(c++<a&&"1"==mxUtils.getValue(this.getCellStyle(b),"locked","0"));null!=b&&this.setDefaultParent(b)}};mxStencilRegistry.libraries.mockup=[SHAPES_PATH+"/mockup/mxMockupButtons.js"];mxStencilRegistry.libraries.arrows2=[SHAPES_PATH+"/mxArrows.js"];mxStencilRegistry.libraries.atlassian=[STENCIL_PATH+"/atlassian.xml",SHAPES_PATH+"/mxAtlassian.js"];mxStencilRegistry.libraries.bpmn=[SHAPES_PATH+"/bpmn/mxBpmnShape2.js",STENCIL_PATH+"/bpmn.xml"];mxStencilRegistry.libraries.dfd=[SHAPES_PATH+"/mxDFD.js"]; +mxStencilRegistry.libraries.er=[SHAPES_PATH+"/er/mxER.js"];mxStencilRegistry.libraries.flowchart=[SHAPES_PATH+"/mxFlowchart.js",STENCIL_PATH+"/flowchart.xml"];mxStencilRegistry.libraries.ios=[SHAPES_PATH+"/mockup/mxMockupiOS.js"];mxStencilRegistry.libraries.rackGeneral=[SHAPES_PATH+"/rack/mxRack.js",STENCIL_PATH+"/rack/general.xml"];mxStencilRegistry.libraries.rackF5=[STENCIL_PATH+"/rack/f5.xml"];mxStencilRegistry.libraries.lean_mapping=[SHAPES_PATH+"/mxLeanMap.js",STENCIL_PATH+"/lean_mapping.xml"]; +mxStencilRegistry.libraries.basic=[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/basic.xml"];mxStencilRegistry.libraries.ios7icons=[STENCIL_PATH+"/ios7/icons.xml"];mxStencilRegistry.libraries.ios7ui=[SHAPES_PATH+"/ios7/mxIOS7Ui.js",STENCIL_PATH+"/ios7/misc.xml"];mxStencilRegistry.libraries.android=[SHAPES_PATH+"/mxAndroid.js",STENCIL_PATH+"/android/android.xml"];mxStencilRegistry.libraries["electrical/transmission"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/transmission.xml"];mxStencilRegistry.libraries["electrical/logic_gates"]= +[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/logic_gates.xml"];mxStencilRegistry.libraries["electrical/abstract"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/abstract.xml"];mxStencilRegistry.libraries.infographic=[SHAPES_PATH+"/mxInfographic.js"];mxStencilRegistry.libraries["mockup/buttons"]=[SHAPES_PATH+"/mockup/mxMockupButtons.js"];mxStencilRegistry.libraries["mockup/containers"]=[SHAPES_PATH+"/mockup/mxMockupContainers.js"];mxStencilRegistry.libraries["mockup/forms"]= +[SHAPES_PATH+"/mockup/mxMockupForms.js"];mxStencilRegistry.libraries["mockup/graphics"]=[SHAPES_PATH+"/mockup/mxMockupGraphics.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/markup"]=[SHAPES_PATH+"/mockup/mxMockupMarkup.js"];mxStencilRegistry.libraries["mockup/misc"]=[SHAPES_PATH+"/mockup/mxMockupMisc.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/navigation"]=[SHAPES_PATH+"/mockup/mxMockupNavigation.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/text"]= +[SHAPES_PATH+"/mockup/mxMockupText.js"];mxStencilRegistry.libraries.floorplan=[SHAPES_PATH+"/mxFloorplan.js",STENCIL_PATH+"/floorplan.xml"];mxStencilRegistry.libraries.bootstrap=[SHAPES_PATH+"/mxBootstrap.js",STENCIL_PATH+"/bootstrap.xml"];mxStencilRegistry.libraries.gmdl=[SHAPES_PATH+"/mxGmdl.js",STENCIL_PATH+"/gmdl.xml"];mxStencilRegistry.libraries.gcp2=[SHAPES_PATH+"/mxGCP2.js",STENCIL_PATH+"/gcp2.xml"];mxStencilRegistry.libraries.cabinets=[SHAPES_PATH+"/mxCabinets.js",STENCIL_PATH+"/cabinets.xml"]; +mxStencilRegistry.libraries.archimate=[SHAPES_PATH+"/mxArchiMate.js"];mxStencilRegistry.libraries.archimate3=[SHAPES_PATH+"/mxArchiMate3.js"];mxStencilRegistry.libraries.sysml=[SHAPES_PATH+"/mxSysML.js"];mxStencilRegistry.libraries.eip=[SHAPES_PATH+"/mxEip.js",STENCIL_PATH+"/eip.xml"];mxStencilRegistry.libraries.networks=[SHAPES_PATH+"/mxNetworks.js",STENCIL_PATH+"/networks.xml"];mxStencilRegistry.libraries.aws3d=[SHAPES_PATH+"/mxAWS3D.js",STENCIL_PATH+"/aws3d.xml"];mxStencilRegistry.libraries.aws4= +[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.veeam=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam.xml"];mxStencilRegistry.libraries.pid2inst=[SHAPES_PATH+"/pid2/mxPidInstruments.js"];mxStencilRegistry.libraries.pid2misc=[SHAPES_PATH+"/pid2/mxPidMisc.js",STENCIL_PATH+"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"]; +mxMarker.getPackageForType=function(a){var b=null;null!=a&&0<a.length&&("ER"==a.substring(0,2)?b="mxgraph.er":"sysML"==a.substring(0,5)&&(b="mxgraph.sysml"));return b};var v=mxMarker.createMarker;mxMarker.createMarker=function(a,b,c,f,d,l,e,p,g,y){if(null!=c&&null==mxMarker.markers[c]){var u=this.getPackageForType(c);null!=u&&mxStencilRegistry.getStencil(u)}return v.apply(this,arguments)};PrintDialog.prototype.create=function(a,b){function c(){k.value=Math.max(1,Math.min(p,Math.max(parseInt(k.value), +parseInt(t.value))));t.value=Math.max(1,Math.min(p,Math.min(parseInt(k.value),parseInt(t.value))))}function f(b){function c(b,c,d){var l=b.getGraphBounds(),e=0,p=0,g=fa.get(),v=1/b.pageScale,y=B.checked;if(y)var v=parseInt(ca.value),u=parseInt(L.value),v=Math.min(g.height*u/(l.height/b.view.scale),g.width*v/(l.width/b.view.scale));else v=parseInt(n.value)/(100*b.pageScale),isNaN(v)&&(f=1/b.pageScale,n.value="100 %");g=mxRectangle.fromRectangle(g);g.width=Math.ceil(g.width*f);g.height=Math.ceil(g.height* +f);v*=f;!y&&b.pageVisible?(l=b.getPageLayout(),e-=l.x*g.width,p-=l.y*g.height):y=!0;if(null==c){c=PrintDialog.createPrintPreview(b,v,g,0,e,p,y);c.pageSelector=!1;c.mathEnabled=!1;b=a.getCurrentFile();null!=b&&(c.title=b.getTitle());var t=c.writeHead;c.writeHead=function(b){t.apply(this,arguments);null!=a.editor.fontCss&&(b.writeln('<style type="text/css">'),b.writeln(a.editor.fontCss),b.writeln("</style>"))};if("undefined"!==typeof MathJax){var k=c.renderPage;c.renderPage=function(a,b,c,f,d,l){var e= +mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;var p=k.apply(this,arguments);mxClient.NO_FO=e;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:p.className="geDisableMathJax";return p}}c.open(null,null,d,!0)}else{g=b.background;if(null==g||""==g||g==mxConstants.NONE)g="#ffffff";c.backgroundColor=g;c.autoOrigin=y;c.appendGraph(b,v,e,p,d,!0)}return c}var f=parseInt(Y.value)/100;isNaN(f)&&(f=1,Y.value="100 %");var f=.75* +f,l=t.value,e=k.value,p=!y.checked,v=null;p&&(p=l==g&&e==g);if(!p&&null!=a.pages&&a.pages.length){var u=0,p=a.pages.length-1;y.checked||(u=parseInt(l)-1,p=parseInt(e)-1);for(var x=u;x<=p;x++){var m=a.pages[x],l=m==a.currentPage?d:null;if(null==l){var l=a.createTemporaryGraph(d.getStylesheet()),e=!0,u=!1,z=null,q=null;null==m.viewState&&null==m.root&&a.updatePageRoot(m);null!=m.viewState&&(e=m.viewState.pageVisible,u=m.viewState.mathEnabled,z=m.viewState.background,q=m.viewState.backgroundImage);l.background= +z;l.backgroundImage=null!=q?new mxImage(q.src,q.width,q.height):null;l.pageVisible=e;l.mathEnabled=u;var H=l.getGlobalVariable;l.getGlobalVariable=function(a){return"page"==a?m.getName():"pagenumber"==a?x+1:H.apply(this,arguments)};document.body.appendChild(l.container);a.updatePageRoot(m);l.model.setRoot(m.root)}v=c(l,v,x!=p);l!=d&&l.container.parentNode.removeChild(l.container)}}else v=c(d);null==v?a.handleError({message:mxResources.get("errorUpdatingPreview")}):(v.mathEnabled&&(p=v.wnd.document, +p.writeln('<script type="text/x-mathjax-config">'),p.writeln("MathJax.Hub.Config({"),p.writeln("showMathMenu: false,"),p.writeln('messageStyle: "none",'),p.writeln('jax: ["input/TeX", "input/MathML", "input/AsciiMath", "output/HTML-CSS"],'),p.writeln('extensions: ["tex2jax.js", "mml2jax.js", "asciimath2jax.js"],'),p.writeln('"HTML-CSS": {'),p.writeln("imageFont: null"),p.writeln("},"),p.writeln("TeX: {"),p.writeln('extensions: ["AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js"]'),p.writeln("},"), +p.writeln("tex2jax: {"),p.writeln('\tignoreClass: "geDisableMathJax"'),p.writeln("},"),p.writeln("asciimath2jax: {"),p.writeln('\tignoreClass: "geDisableMathJax"'),p.writeln("}"),p.writeln("});"),b&&(p.writeln("MathJax.Hub.Queue(function () {"),p.writeln("window.print();"),p.writeln("});")),p.writeln("\x3c/script>"),p.writeln('<script type="text/javascript" src="https://math.draw.io/current/MathJax.js">\x3c/script>')),v.closeDocument(),!v.mathEnabled&&b&&PrintDialog.printPreview(v))}var d=a.editor.graph, +l=document.createElement("div"),e=document.createElement("h3");e.style.width="100%";e.style.textAlign="center";e.style.marginTop="0px";mxUtils.write(e,b||mxResources.get("print"));l.appendChild(e);var p=1,g=1,v=document.createElement("div");v.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var y=document.createElement("input");y.style.cssText="margin-right:8px;margin-bottom:8px;";y.setAttribute("value","all");y.setAttribute("type","radio");y.setAttribute("name", +"pages-printdialog");v.appendChild(y);e=document.createElement("span");mxUtils.write(e,mxResources.get("printAllPages"));v.appendChild(e);mxUtils.br(v);var u=y.cloneNode(!0);y.setAttribute("checked","checked");u.setAttribute("value","range");v.appendChild(u);e=document.createElement("span");mxUtils.write(e,mxResources.get("pages")+":");v.appendChild(e);var t=document.createElement("input");t.style.cssText="margin:0 8px 0 8px;";t.setAttribute("value","1");t.setAttribute("type","number");t.setAttribute("min", +"1");t.style.width="50px";v.appendChild(t);e=document.createElement("span");mxUtils.write(e,mxResources.get("to"));v.appendChild(e);var k=t.cloneNode(!0);v.appendChild(k);mxEvent.addListener(t,"focus",function(){u.checked=!0});mxEvent.addListener(k,"focus",function(){u.checked=!0});mxEvent.addListener(t,"change",c);mxEvent.addListener(k,"change",c);if(null!=a.pages&&(p=a.pages.length,null!=a.currentPage))for(e=0;e<a.pages.length;e++)if(a.currentPage==a.pages[e]){g=e+1;t.value=g;k.value=g;break}t.setAttribute("max", +p);k.setAttribute("max",p);1<p&&l.appendChild(v);var x=document.createElement("div");x.style.marginBottom="10px";var m=document.createElement("input");m.style.marginRight="8px";m.setAttribute("value","adjust");m.setAttribute("type","radio");m.setAttribute("name","printZoom");x.appendChild(m);e=document.createElement("span");mxUtils.write(e,mxResources.get("adjustTo"));x.appendChild(e);var n=document.createElement("input");n.style.cssText="margin:0 8px 0 8px;";n.setAttribute("value","100 %");n.style.width= +"50px";x.appendChild(n);mxEvent.addListener(n,"focus",function(){m.checked=!0});l.appendChild(x);var v=v.cloneNode(!1),B=m.cloneNode(!0);B.setAttribute("value","fit");m.setAttribute("checked","checked");e=document.createElement("div");e.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";e.appendChild(B);v.appendChild(e);x=document.createElement("table");x.style.display="inline-block";var z=document.createElement("tbody"),q=document.createElement("tr"),H=q.cloneNode(!0), +O=document.createElement("td"),P=O.cloneNode(!0),X=O.cloneNode(!0),Q=O.cloneNode(!0),R=O.cloneNode(!0),Z=O.cloneNode(!0);O.style.textAlign="right";Q.style.textAlign="right";mxUtils.write(O,mxResources.get("fitTo"));var ca=document.createElement("input");ca.style.cssText="margin:0 8px 0 8px;";ca.setAttribute("value","1");ca.setAttribute("min","1");ca.setAttribute("type","number");ca.style.width="40px";P.appendChild(ca);e=document.createElement("span");mxUtils.write(e,mxResources.get("fitToSheetsAcross")); +X.appendChild(e);mxUtils.write(Q,mxResources.get("fitToBy"));var L=ca.cloneNode(!0);R.appendChild(L);mxEvent.addListener(ca,"focus",function(){B.checked=!0});mxEvent.addListener(L,"focus",function(){B.checked=!0});e=document.createElement("span");mxUtils.write(e,mxResources.get("fitToSheetsDown"));Z.appendChild(e);q.appendChild(O);q.appendChild(P);q.appendChild(X);H.appendChild(Q);H.appendChild(R);H.appendChild(Z);z.appendChild(q);z.appendChild(H);x.appendChild(z);v.appendChild(x);l.appendChild(v); +v=document.createElement("div");e=document.createElement("div");e.style.fontWeight="bold";e.style.marginBottom="12px";mxUtils.write(e,mxResources.get("paperSize"));v.appendChild(e);e=document.createElement("div");e.style.marginBottom="12px";var fa=PageSetupDialog.addPageFormatPanel(e,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);v.appendChild(e);e=document.createElement("span");mxUtils.write(e,mxResources.get("pageScale"));v.appendChild(e);var Y=document.createElement("input"); +Y.style.cssText="margin:0 8px 0 8px;";Y.setAttribute("value","100 %");Y.style.width="60px";v.appendChild(Y);l.appendChild(v);e=document.createElement("div");e.style.cssText="text-align:right;margin:48px 0 0 0;";v=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});v.className="geBtn";a.editor.cancelFirst&&e.appendChild(v);a.isOffline()||(x=mxUtils.button(mxResources.get("help"),function(){d.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),x.className="geBtn", +e.appendChild(x));PrintDialog.previewEnabled&&(x=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();f(!1)}),x.className="geBtn",e.appendChild(x));x=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();f(!0)});x.className="geBtn gePrimaryBtn";e.appendChild(x);a.editor.cancelFirst||e.appendChild(v);l.appendChild(e);this.container=l};var y=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page= +this.ui.currentPage);this.page!=this.ui.currentPage?null!=this.page.viewState&&(this.ignoreColor||(this.page.viewState.background=this.color),this.ignoreImage||(this.page.viewState.backgroundImage=this.image),null!=this.format&&(this.page.viewState.pageFormat=this.format),null!=this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled),null!=this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)):(y.apply(this,arguments),null!=this.mathEnabled&&this.mathEnabled!=this.ui.isMathEnabled()&& +(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled),null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=!this.shadowVisible))}})(); +var ErrorDialog=function(a,c,b,d,g,e,k,m,n,q,f){n=null!=n?n:!0;var l=document.createElement("div");l.style.textAlign="center";if(null!=c){var p=document.createElement("div");p.style.padding="0px";p.style.margin="0px";p.style.fontSize="18px";p.style.paddingBottom="16px";p.style.marginBottom="16px";p.style.borderBottom="1px solid #c0c0c0";p.style.color="gray";p.style.whiteSpace="nowrap";p.style.textOverflow="ellipsis";p.style.overflow="hidden";mxUtils.write(p,c);p.setAttribute("title",c);l.appendChild(p)}c= +document.createElement("div");c.style.padding="6px";c.innerHTML=b;l.appendChild(c);b=document.createElement("div");b.style.marginTop="16px";b.style.textAlign="center";null!=e&&(c=mxUtils.button(mxResources.get("tryAgain"),function(){a.hideDialog();e()}),c.className="geBtn",b.appendChild(c),b.style.textAlign="center");null!=q&&(q=mxUtils.button(q,function(){null!=f&&f()}),q.className="geBtn",b.appendChild(q));var t=mxUtils.button(d,function(){n&&a.hideDialog();null!=g&&g()});t.className="geBtn";b.appendChild(t); +null!=k&&(d=mxUtils.button(k,function(){n&&a.hideDialog();null!=m&&m()}),d.className="geBtn gePrimaryBtn",b.appendChild(d));this.init=function(){t.focus()};l.appendChild(b);this.container=l}; +(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,b,d){d.ui=a.ui;return b};a.afterDecode=function(a,b,d){d.previousColor=d.color;d.previousImage=d.image;d.previousFormat=d.format;null!=d.foldingEnabled&&(d.foldingEnabled=!d.foldingEnabled);null!=d.mathEnabled&&(d.mathEnabled=!d.mathEnabled);null!=d.shadowVisible&&(d.shadowVisible=!d.shadowVisible);return d};mxCodecRegistry.register(a)})();(function(){EditorUi.VERSION="10.1.7";EditorUi.compactUi="atlas"!=uiTheme;EditorUi.enableLogging="1"!=urlParams.stealth&&/.*\.draw\.io$/.test(window.location.hostname)&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost="https://www.draw.io";EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.logError=function(a,b,c,d,e){if("1"==urlParams.dev)EditorUi.debug("logError",a,b,c,d,e);else if(EditorUi.enableLogging)try{if(a!= +EditorUi.lastErrorMessage&&(null==a||null==b||-1==a.indexOf("Script error")&&-1==a.indexOf("extension"))&&null!=a&&0>a.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=a;var f=0<=a.indexOf("NetworkError")||0<=a.indexOf("SecurityError")||0<=a.indexOf("NS_ERROR_FAILURE")||0<=a.indexOf("out of memory")?"CONFIG":"SEVERE",l=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=l+"/log?severity="+f+"&v="+encodeURIComponent(EditorUi.VERSION)+"&msg=clientError:"+encodeURIComponent(a)+ +":url:"+encodeURIComponent(window.location.href)+":lnum:"+encodeURIComponent(c)+(null!=d?":colno:"+encodeURIComponent(d):"")+(null!=e&&null!=e.stack?"&stack="+encodeURIComponent(e.stack):"")}}catch(v){}};EditorUi.logEvent=function(a){if("1"==urlParams.dev)EditorUi.debug("logEvent",a);else if(EditorUi.enableLogging)try{var b=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=b+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=a?"&data="+encodeURIComponent(JSON.stringify(a)): +"")}catch(p){}};EditorUi.sendReport=function(a,b){if("1"==urlParams.dev)EditorUi.debug("sendReport",a);else if(EditorUi.enableLogging)try{b=null!=b?b:5E4,a.length>b&&(a=a.substring(0,b)+"\n...[SHORTENED]"),mxUtils.post("/email","version="+encodeURIComponent(EditorUi.VERSION)+"&url="+encodeURIComponent(window.location.href)+"&data="+encodeURIComponent(a))}catch(p){}};EditorUi.debug=function(){if(null!=window.console&&"1"==urlParams.test){for(var a=[(new Date).toISOString()],b=0;b<arguments.length;b++)a.push(arguments[b]); +console.log.apply(console,a)}};EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl="1"==urlParams.dev?"/cache":"https://rt.draw.io/cache";EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.scratchpadHelpLink="https://desk.draw.io/support/solutions/articles/16000042367";EditorUi.prototype.emptyDiagramXml='<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/></root></mxGraphModel>'; +EditorUi.prototype.emptyLibraryXml="<mxlibrary>[]</mxlibrary>";EditorUi.prototype.mode=null;EditorUi.prototype.sidebarFooterHeight=36;EditorUi.prototype.defaultCustomShapeStyle="shape=stencil(tZRtTsQgEEBPw1+DJR7AoN6DbWftpAgE0Ortd/jYRGq72R+YNE2YgTePloEJGWblgA18ZuKFDcMj5/Sm8boZq+BgjCX4pTyqk6ZlKROitwusOMXKQDODx5iy4pXxZ5qTHiFHawxB0JrQZH7lCabQ0Fr+XWC1/E8zcsT/gAi+Subo2/3Mh6d/oJb5nU1b5tW7r2knautaa3T+U32o7f7vZwpJkaNDLORJjcu7t59m2jXxqX9un+tt022acsfmoKaQZ+vhhswZtS6Ne/ThQGt0IV0N3Yyv6P3CeT9/tHO0XFI5cAE=);whiteSpace=wrap;html=1;"; +EditorUi.prototype.svgBrokenImage=Graph.createSvgImage(10,10,'<rect x="0" y="0" width="10" height="10" stroke="#000" fill="transparent"/><path d="m 0 0 L 10 10 L 0 10 L 10 0" stroke="#000" fill="transparent"/>');EditorUi.prototype.crossOriginImages=!mxClient.IS_IE;EditorUi.prototype.maxBackgroundSize=1600;EditorUi.prototype.maxImageSize=520;EditorUi.prototype.resampleThreshold=1E5;EditorUi.prototype.maxImageBytes=1E6;EditorUi.prototype.maxBackgroundBytes=25E5;EditorUi.prototype.currentFile=null;EditorUi.prototype.printPdfExport= +!1;EditorUi.prototype.pdfPageExport=!0;EditorUi.prototype.formatEnabled="0"!=urlParams.format;EditorUi.prototype.insertTemplateEnabled=!0;EditorUi.prototype.closableScratchpad=!0;(function(){EditorUi.prototype.useCanvasForExport=!1;EditorUi.prototype.jpgSupported=!1;try{var a=document.createElement("canvas");EditorUi.prototype.canvasSupported=!(!a.getContext||!a.getContext("2d"))}catch(u){}try{var b=document.createElement("canvas"),c=new Image;c.onload=function(){try{b.getContext("2d").drawImage(c, +0,0);var a=b.toDataURL("image/png");EditorUi.prototype.useCanvasForExport=null!=a&&6<a.length}catch(x){}};c.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(u){}try{b=document.createElement("canvas");b.width=b.height=1;var d= +b.toDataURL("image/jpeg");EditorUi.prototype.jpgSupported=null!==d.match("image/jpeg")}catch(u){}})();EditorUi.prototype.openLink=function(a,b,c){return this.editor.graph.openLink(a,b,c)};EditorUi.prototype.showSplash=function(a){};EditorUi.prototype.getLocalData=function(a,b){b(localStorage.getItem(a))};EditorUi.prototype.setLocalData=function(a,b,c){localStorage.setItem(a,b);null!=c&&c()};EditorUi.prototype.removeLocalData=function(a,b){localStorage.removeItem(a);b()};EditorUi.prototype.setMathEnabled= +function(a){this.editor.graph.mathEnabled=a;this.editor.updateGraphComponents();this.editor.graph.refresh();this.fireEvent(new mxEventObject("mathEnabledChanged"))};EditorUi.prototype.isMathEnabled=function(a){return this.editor.graph.mathEnabled};EditorUi.prototype.isAppCache=function(){return"1"==urlParams.appcache||this.isOfflineApp()};EditorUi.prototype.isOfflineApp=function(){return"1"==urlParams.offline};EditorUi.prototype.isOffline=function(){return this.isOfflineApp()||!navigator.onLine|| +"1"==urlParams.stealth};EditorUi.prototype.createSpinner=function(a,b,c){c=null!=c?c:24;var f=new Spinner({lines:12,length:c,width:Math.round(c/3),radius:Math.round(c/2),rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),d=f.spin;f.spin=function(c,l){var e=!1;this.active||(d.call(this,c),this.active=!0,null!=l&&(e=document.createElement("div"),e.style.position="absolute",e.style.whiteSpace="nowrap",e.style.background="#4B4243",e.style.color="white", +e.style.fontFamily="Helvetica, Arial",e.style.fontSize="9pt",e.style.padding="6px",e.style.paddingLeft="10px",e.style.paddingRight="10px",e.style.zIndex=2E9,e.style.left=Math.max(0,a)+"px",e.style.top=Math.max(0,b+70)+"px",mxUtils.setPrefixedStyle(e.style,"borderRadius","6px"),mxUtils.setPrefixedStyle(e.style,"transform","translate(-50%,-50%)"),"dark"!=uiTheme&&mxUtils.setPrefixedStyle(e.style,"boxShadow","2px 2px 3px 0px #ddd"),"..."!=l.substring(l.length-3,l.length)&&(l+="..."),e.innerHTML=l,c.appendChild(e), +f.status=e,mxClient.IS_VML&&(null==document.documentMode||8>=document.documentMode)&&(e.style.left=Math.round(Math.max(0,a-e.offsetWidth/2))+"px",e.style.top=Math.round(Math.max(0,b+70-e.offsetHeight/2))+"px")),this.pause=mxUtils.bind(this,function(){var a=function(){};this.active&&(a=mxUtils.bind(this,function(){this.spin(c,l)}));this.stop();return a}),e=!0);return e};var l=f.stop;f.stop=function(){l.call(this);this.active=!1;null!=f.status&&(f.status.parentNode.removeChild(f.status),f.status=null)}; +f.pause=function(){return function(){}};return f};EditorUi.parsePng=function(a,b,c){function f(a,b){var c=l;l+=b;return a.substring(c,l)}function d(a){a=f(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}var l=0;if(f(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=c&&c();else if(f(a,4),"IHDR"!=f(a,4))null!=c&&c();else{f(a,17);do{c=d(a);var e=f(a,4);if(null!=b&&b(l-8,e,c))break;value=f(a,c);f(a,4);if("IEND"==e)break}while(c)}}; +EditorUi.prototype.isCompatibleString=function(a){try{var b=mxUtils.parseXml(a),c=this.editor.extractGraphModel(b.documentElement,!0);return null!=c&&0==c.getElementsByTagName("parsererror").length}catch(t){}return!1};var a=EditorUi.prototype.extractGraphModelFromHtml;EditorUi.prototype.extractGraphModelFromHtml=function(b){var c=a.apply(this,arguments);if(null==c)try{var f=b.indexOf("<mxfile ");if(0<=f){var d=b.lastIndexOf("</mxfile>");d>f&&(c=b.substring(f,d+15).replace(/>/g,">").replace(/</g, +"<").replace(/\\"/g,'"').replace(/\n/g,""))}else var e=mxUtils.parseXml(b),g=this.editor.extractGraphModel(e.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility),c=null!=g?mxUtils.getXml(g):""}catch(z){}return c};EditorUi.prototype.validateFileData=function(a){if(null!=a&&0<a.length){var b=a.indexOf('<meta charset="utf-8">');0<=b&&(a=a.slice(0,b)+'<meta charset="utf-8"/>'+a.slice(b+23-1,a.length));a=this.editor.graph.zapGremlins(a)}return a};EditorUi.prototype.replaceFileData= +function(a){a=this.validateFileData(a);a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement:null;var b=null!=a?this.editor.extractGraphModel(a,!0):null;null!=b&&(a=b);if(null!=a){b=this.editor.graph;b.model.beginUpdate();try{var c=null!=this.pages?this.pages.slice():null,f=a.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<f.length||1==f.length&&f[0].hasAttribute("name")){this.fileNode=a;this.pages=null!=this.pages?this.pages:[];for(var d=f.length-1;0<=d;d--){var e=this.updatePageRoot(new DiagramPage(f[d])); +null==e.getName()&&e.setName(mxResources.get("pageWithNumber",[d+1]));b.model.execute(new ChangePage(this,e,0==d?e:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),b.model.execute(new ChangePage(this,this.currentPage,this.currentPage,0))),this.editor.setGraphXml(a),null!=this.currentPage&&(this.currentPage.root= +this.editor.graph.model.root);if(null!=c)for(d=0;d<c.length;d++)b.model.execute(new ChangePage(this,c[d],null))}finally{b.model.endUpdate()}}};EditorUi.prototype.createFileData=function(a,b,c,d,e,g,k,v,y,m){b=null!=b?b:this.editor.graph;e=null!=e?e:!1;y=null!=y?y:!0;var f,l=null;null==c||c.getMode()==App.MODE_DEVICE||c.getMode()==App.MODE_BROWSER?f="_blank":l=f=d;if(null==a)return"";var p=a;if("mxfile"!=p.nodeName.toLowerCase()){var u=b.zapGremlins(mxUtils.getXml(a)),p=b.compress(u);if(b.decompress(p)!= +u)return u;u=a.ownerDocument.createElement("diagram");u.setAttribute("id",Editor.guid());mxUtils.setTextContent(u,p);p=a.ownerDocument.createElement("mxfile");p.appendChild(u)}m?(p=p.cloneNode(!0),p.removeAttribute("userAgent"),p.removeAttribute("version"),p.removeAttribute("editor"),p.removeAttribute("type")):(p.removeAttribute("userAgent"),p.removeAttribute("version"),p.removeAttribute("editor"),p.removeAttribute("type"),p.setAttribute("modified",(new Date).toISOString()),p.setAttribute("host", +window.location.hostname),p.setAttribute("agent",navigator.userAgent),p.setAttribute("version",EditorUi.VERSION),p.setAttribute("etag",Editor.guid()),a=null!=c?c.getMode():this.mode,null!=a&&p.setAttribute("type",a));a=mxUtils.getXml(p);if(!g&&!e&&(k||null!=c&&/(\.html)$/i.test(c.getTitle())))a=this.getHtml2(mxUtils.getXml(p),b,null!=c?c.getTitle():null,f,l);else if(g||!e&&null!=c&&/(\.svg)$/i.test(c.getTitle()))null==c||c.getMode()!=App.MODE_DEVICE&&c.getMode()!=App.MODE_BROWSER||(d=null),a=this.getEmbeddedSvg(a, +b,d,null,v,y,l);return a};EditorUi.prototype.getXmlFileData=function(a,b){a=null!=a?a:!0;b=null!=b?b:!1;var c=this.editor.getGraphXml(a);if(a&&null!=this.fileNode&&null!=this.currentPage)if(c=this.editor.graph.compress(this.editor.graph.zapGremlins(mxUtils.getXml(c))),mxUtils.setTextContent(this.currentPage.node,c),c=this.fileNode.cloneNode(!1),b)c.appendChild(this.currentPage.node);else for(var f=0;f<this.pages.length;f++){if(this.currentPage!=this.pages[f]&&this.pages[f].needsUpdate){var d=(new mxCodec(mxUtils.createXmlDocument())).encode(new mxGraphModel(this.pages[f].root)); +this.editor.graph.saveViewState(this.pages[f].viewState,d);mxUtils.setTextContent(this.pages[f].node,this.editor.graph.compressNode(d));delete this.pages[f].needsUpdate}c.appendChild(this.pages[f].node)}return c};EditorUi.prototype.anonymizeString=function(a,b){for(var c=[],f=0;f<a.length;f++){var d=a.charAt(f);0<=EditorUi.ignoredAnonymizedChars.indexOf(d)?c.push(d):isNaN(parseInt(d))?d.toLowerCase()!=d?c.push(String.fromCharCode(65+Math.round(25*Math.random()))):d.toUpperCase()!=d?c.push(String.fromCharCode(97+ +Math.round(25*Math.random()))):/\s/.test(d)?c.push(" "):c.push("?"):c.push(b?"0":Math.round(9*Math.random()))}return c.join("")};EditorUi.prototype.anonymizePatch=function(a){if(null!=a[EditorUi.DIFF_INSERT])for(var b=0;b<a[EditorUi.DIFF_INSERT].length;b++)try{var c=mxUtils.parseXml(a[EditorUi.DIFF_INSERT][b].data).documentElement.cloneNode(!1);null!=c.getAttribute("name")&&c.setAttribute("name",this.anonymizeString(c.getAttribute("name")));a[EditorUi.DIFF_INSERT][b].data=mxUtils.getXml(c)}catch(x){a[EditorUi.DIFF_INSERT][b].data= +x.message}if(null!=a[EditorUi.DIFF_UPDATE]){for(var f in a[EditorUi.DIFF_UPDATE]){var d=a[EditorUi.DIFF_UPDATE][f];null!=d.name&&(d.name=this.anonymizeString(d.name));null!=d.cells&&(b=mxUtils.bind(this,function(a){var b=d.cells[a];if(null!=b){for(var c in b)null!=b[c].value&&(b[c].value="["+b[c].value.length+"]"),null!=b[c].xmlValue&&(b[c].xmlValue="["+b[c].xmlValue.length+"]"),null!=b[c].style&&(b[c].style="["+b[c].style.length+"]"),0==Object.keys(b[c]).length&&delete b[c];0==Object.keys(b).length&& +delete d.cells[a]}}),b(EditorUi.DIFF_INSERT),b(EditorUi.DIFF_UPDATE),0==Object.keys(d.cells).length&&delete d.cells);0==Object.keys(d).length&&delete a[EditorUi.DIFF_UPDATE][f]}0==Object.keys(a[EditorUi.DIFF_UPDATE]).length&&delete a[EditorUi.DIFF_UPDATE]}return a};EditorUi.prototype.anonymizeAttributes=function(a,b){if(null!=a.attributes)for(var c=0;c<a.attributes.length;c++)"as"!=a.attributes[c].name&&a.setAttribute(a.attributes[c].name,this.anonymizeString(a.attributes[c].value,b));if(null!=a.childNodes)for(c= +0;c<a.childNodes.length;c++)this.anonymizeAttributes(a.childNodes[c],b)};EditorUi.prototype.anonymizeNode=function(a,b){for(var c=a.getElementsByTagName("mxCell"),f=0;f<c.length;f++)null!=c[f].getAttribute("value")&&c[f].setAttribute("value","["+c[f].getAttribute("value").length+"]"),null!=c[f].getAttribute("xmlValue")&&c[f].setAttribute("xmlValue","["+c[f].getAttribute("xmlValue").length+"]"),null!=c[f].getAttribute("style")&&c[f].setAttribute("style","["+c[f].getAttribute("style").length+"]"),null!= +c[f].parentNode&&"root"!=c[f].parentNode.nodeName&&null!=c[f].parentNode.parentNode&&(c[f].setAttribute("id",c[f].parentNode.getAttribute("id")),c[f].parentNode.parentNode.replaceChild(c[f],c[f].parentNode));return a};EditorUi.prototype.synchronizeCurrentFile=function(a){var b=this.getCurrentFile();null!=b&&(b.savingFile?this.handleError({message:mxResources.get("busy")}):!a&&b.invalidChecksum?b.handleFileError(null,!0):this.spinner.spin(document.body,mxResources.get("updatingDocument"))&&(b.clearAutosave(), +this.editor.setStatus(""),a?b.reloadFile(mxUtils.bind(this,function(){b.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){b.handleFileError(a,!0)})):b.synchronizeFile(mxUtils.bind(this,function(){b.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){b.handleFileError(a,!0)}))))};EditorUi.prototype.getFileData=function(a,b,c,d,e,g,k,v,y){e=null!=e?e:!0;k=null!=k?k:this.getXmlFileData(e,null!=g?g:!1);y=null!=y?y:this.getCurrentFile();g=this.editor.graph; +if(null!=this.pages&&this.currentPage!=this.pages[0]&&(b||!a&&null!=y&&/(\.svg)$/i.test(y.getTitle()))){g=this.createTemporaryGraph(g.getStylesheet());var f=g.getGlobalVariable,l=this.pages[0];g.getGlobalVariable=function(a){return"page"==a?l.getName():"pagenumber"==a?1:f.apply(this,arguments)};document.body.appendChild(g.container);g.model.setRoot(l.root)}a=this.createFileData(k,g,y,window.location.href,a,b,c,d,e,v);g!=this.editor.graph&&g.container.parentNode.removeChild(g.container);return a}; +EditorUi.prototype.getHtml=function(a,b,c,d,e,g){g=null!=g?g:!0;var f=null,l=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=b){var f=g?b.getGraphBounds():b.getBoundingBox(b.getSelectionCells()),p=b.view.scale;g=Math.floor(f.x/p-b.view.translate.x);p=Math.floor(f.y/p-b.view.translate.y);f=b.background;null==e&&(b=this.getBasenames().join(";"),0<b.length&&(l=EditorUi.drawHost+"/embed.js?s="+b));a.setAttribute("x0",g);a.setAttribute("y0",p)}null!=a&&(a.setAttribute("pan","1"),a.setAttribute("zoom", +"1"),a.setAttribute("resize","0"),a.setAttribute("fit","0"),a.setAttribute("border","20"),a.setAttribute("links","1"),null!=d&&a.setAttribute("edit",d));null!=e&&(e=e.replace(/&/g,"&"));a=null!=a?this.editor.graph.zapGremlins(mxUtils.getXml(a)):"";d=this.editor.graph.compress(a);this.editor.graph.decompress(d)!=a&&(d=encodeURIComponent(a));return(null==e?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=e?' xmlns="http://www.w3.org/1999/xhtml">': +">")+"\n<head>\n"+(null==e?null!=c?"<title>"+mxUtils.htmlEntities(c)+"</title>\n":"":"<title>Draw.io Diagram</title>\n")+(null!=e?'<meta http-equiv="refresh" content="0;URL=\''+e+"'\"/>\n":"")+"</head>\n<body"+(null==e&&null!=f&&f!=mxConstants.NONE?' style="background-color:'+f+';">':">")+'\n<div class="mxgraph" style="position:relative;overflow:auto;width:100%;">\n<div style="width:1px;height:1px;overflow:hidden;">'+d+"</div>\n</div>\n"+(null==e?'<script type="text/javascript" src="'+l+'">\x3c/script>': +'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+e+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(a,b,c,d,e){b=EditorUi.drawHost+"/js/viewer.min.js";null!=e&&(e=e.replace(/&/g,"&"));a={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,resize:!0,xml:this.editor.graph.zapGremlins(a),toolbar:"pages zoom layers lightbox"};null!=this.pages&&null!= +this.currentPage&&(a.page=mxUtils.indexOf(this.pages,this.currentPage));return(null==e?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=e?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==e?null!=c?"<title>"+mxUtils.htmlEntities(c)+"</title>\n":"":"<title>Draw.io Diagram</title>\n")+(null!=e?'<meta http-equiv="refresh" content="0;URL=\''+e+"'\"/>\n":"")+'<meta charset="utf-8"/>\n</head>\n<body>\n<div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="'+ +mxUtils.htmlEntities(JSON.stringify(a))+'"></div>\n'+(null==e?'<script type="text/javascript" src="'+b+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+e+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.setFileData=function(a){a=this.validateFileData(a);this.pages=this.fileNode=this.currentPage=null;a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement: +null;var b=null!=a?a.getElementsByTagName("parsererror"):null;if(null!=b&&0<b.length)throw a=mxResources.get("invalidOrMissingFile"),b=b[0].getElementsByTagName("div"),0<b.length&&(a=mxUtils.getTextContent(b[0])),Error(a);b=null!=a?this.editor.extractGraphModel(a,!0):null;null!=b&&(a=b);if(null!=a&&"mxfile"==a.nodeName&&(b=a.getElementsByTagName("diagram"),"0"!=urlParams.pages||1<b.length||1==b.length&&b[0].hasAttribute("name"))){this.fileNode=a;this.pages=[];for(a=0;a<b.length;a++){null==b[a].getAttribute("id")&& +b[a].setAttribute("id",a);var c=new DiagramPage(b[a]);null==c.getName()&&c.setName(mxResources.get("pageWithNumber",[a+1]));this.pages.push(c)}this.currentPage=this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];a=this.currentPage.node}"0"!=urlParams.pages&&null==this.fileNode&&null!=a&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])), +this.pages=[this.currentPage]);this.editor.setGraphXml(a);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root)};EditorUi.prototype.getBaseFilename=function(a){var b=this.getCurrentFile(),b=null!=b&&null!=b.getTitle()?b.getTitle():this.defaultFilename;if(/(\.xml)$/i.test(b)||/(\.html)$/i.test(b)||/(\.svg)$/i.test(b)||/(\.png)$/i.test(b)||/(\.drawio)$/i.test(b))b=b.substring(0,b.lastIndexOf("."));!a&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&& +0<this.currentPage.getName().length&&(b=b+"-"+this.currentPage.getName());return b};EditorUi.prototype.downloadFile=function(a,b,c,d,e,g,k){try{d=null!=d?d:this.editor.graph.isSelectionEmpty();var f=this.getBaseFilename(!e),l=f+"."+a;if("xml"==a){var p='<?xml version="1.0" encoding="UTF-8"?>\n'+(b?mxUtils.getXml(this.editor.getGraphXml(d)):this.getFileData(!0,null,null,null,d,e));this.saveData(l,a,p,"text/xml")}else if("html"==a)p=this.getHtml2(this.getFileData(!0),this.editor.graph,f),this.saveData(l, +a,p,"text/html");else if("svg"!=a&&"xmlsvg"!=a||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==a?l=f+".png":"jpeg"==a&&(l=f+".jpg"),this.saveRequest(l,a,mxUtils.bind(this,function(b,c){try{var f=this.editor.graph.pageVisible;null!=g&&(this.editor.graph.pageVisible=g);var l=this.createDownloadRequest(b,a,d,c,k,e);this.editor.graph.pageVisible=f;return l}catch(A){this.handleError(A)}}));else{var u=null,t=mxUtils.bind(this,function(a){a.length<=MAX_REQUEST_SIZE?this.saveData(l, +"svg",a,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(u)}))});if("svg"==a){var m=this.editor.graph.background;if(k||m==mxConstants.NONE)m=null;var x=this.editor.graph.getSvg(m,null,null,null,null,d);c&&this.editor.graph.addSvgShadow(x);this.convertImages(x,mxUtils.bind(this,mxUtils.bind(this,function(a){this.spinner.stop();t('<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+ +mxUtils.getXml(a))})))}else l=f+".svg",u=this.getFileData(!1,!0,null,mxUtils.bind(this,function(a){this.spinner.stop();t(a)}),d)}}catch(I){this.handleError(I)}};EditorUi.prototype.createDownloadRequest=function(a,b,c,d,e,g){var f=this.editor.graph.getGraphBounds();c=this.getFileData(!0,null,null,null,c,0==g?!1:"xmlpng"!=b);var l="",p="";if(f.width*f.height>MAX_AREA||c.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};f="0";"pdf"==b&&0==g&&(p="&allPages=1");if("xmlpng"==b&& +(f="1",b="png",null!=this.pages&&null!=this.currentPage))for(g=0;g<this.pages.length;g++)if(this.pages[g]==this.currentPage){l="&from="+g;break}g=this.editor.graph.background;"png"==b&&e&&(g=mxConstants.NONE);return new mxXmlRequest(EXPORT_URL,"format="+b+l+p+"&bg="+(null!=g?g:mxConstants.NONE)+"&base64="+d+"&embedXml="+f+"&xml="+encodeURIComponent(c)+(null!=a?"&filename="+encodeURIComponent(a):""))};EditorUi.prototype.setMode=function(a,b){this.mode=a};EditorUi.prototype.loadDescriptor=function(a, +b,c){var d=window.location.hash,f=mxUtils.bind(this,function(c){var f=null!=a.data?a.data:"";null!=c&&0<c.length&&(0<f.length&&(f+="\n"),f+=c);c=new LocalFile(this,"csv"!=a.format&&0<f.length?f:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);c.getHash=function(){return d};this.fileLoaded(c);"csv"==a.format&&this.importCsv(f,mxUtils.bind(this,function(a){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")})); +if(null!=a.update){var e=null!=a.interval?parseInt(a.interval):6E4,l=null,g=mxUtils.bind(this,function(){var b=this.currentPage;mxUtils.post(a.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(a){b===this.currentPage&&(200<=a.getStatus()&&300>=a.getStatus()?(this.updateDiagram(a.getText()),p()):this.handleError({message:mxResources.get("error")+" "+a.getStatus()}))}),mxUtils.bind(this,function(a){this.handleError(a)}))}),p=mxUtils.bind(this,function(){window.clearTimeout(l); +l=window.setTimeout(g,e)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){p();g()}));p();g()}null!=b&&b()});if(null!=a.url&&0<a.url.length){var e=a.url;/^https?:\/\//.test(e)&&!this.isCorsEnabledForUrl(e)&&(e=PROXY_URL+"?url="+encodeURIComponent(e));this.loadUrl(e,mxUtils.bind(this,function(a){f(a)}),mxUtils.bind(this,function(a){null!=c&&c(a)}))}else f("")};EditorUi.prototype.updateDiagram=function(a){function b(a){var b=new mxCellOverlay(a.image||f.warningImage,a.tooltip,a.align, +a.valign,a.offset);b.addListener(mxEvent.CLICK,function(b,c){d.alert(a.tooltip)});return b}var c=null,d=this;if(null!=a&&0<a.length&&(c=mxUtils.parseXml(a),a=null!=c?c.documentElement:null,null!=a&&"updates"==a.nodeName)){var f=this.editor.graph,e=f.getModel();e.beginUpdate();var g=null;try{for(a=a.firstChild;null!=a;){if("update"==a.nodeName){var v=e.getCell(a.getAttribute("id"));if(null!=v){try{var y=a.getAttribute("value");if(null!=y){var k=mxUtils.parseXml(y).documentElement;if(null!=k)if("1"== +k.getAttribute("replace-value"))e.setValue(v,k);else for(var m=k.attributes,n=0;n<m.length;n++)f.setAttributeForCell(v,m[n].nodeName,0<m[n].nodeValue.length?m[n].nodeValue:null)}}catch(K){null!=window.console&&console.log("Error in value for "+v.id+": "+K)}try{var q=a.getAttribute("style");null!=q&&f.model.setStyle(v,q)}catch(K){null!=window.console&&console.log("Error in style for "+v.id+": "+K)}try{var E=a.getAttribute("icon");if(null!=E){var I=0<E.length?JSON.parse(E):null;null!=I&&I.append||f.removeCellOverlays(v); +null!=I&&f.addCellOverlay(v,b(I))}}catch(K){null!=window.console&&console.log("Error in icon for "+v.id+": "+K)}try{var C=a.getAttribute("geometry");if(null!=C){var C=JSON.parse(C),G=f.getCellGeometry(v);if(null!=G){G=G.clone();for(key in C){var J=parseFloat(C[key]);"dx"==key?G.x+=J:"dy"==key?G.y+=J:"dw"==key?G.width+=J:"dh"==key?G.height+=J:G[key]=parseFloat(C[key])}f.model.setGeometry(v,G)}}}catch(K){null!=window.console&&console.log("Error in icon for "+v.id+": "+K)}}}else if("model"==a.nodeName){for(var A= +a.firstChild;null!=A&&A.nodeType!=mxConstants.NODETYPE_ELEMENT;)A=A.nextSibling;null!=A&&(new mxCodec(a.firstChild)).decode(A,e)}else if("view"==a.nodeName){if(a.hasAttribute("scale")&&(f.view.scale=parseFloat(a.getAttribute("scale"))),a.hasAttribute("dx")||a.hasAttribute("dy"))f.view.translate=new mxPoint(parseFloat(a.getAttribute("dx")||0),parseFloat(a.getAttribute("dy")||0))}else"fit"==a.nodeName&&(g=a.hasAttribute("max-scale")?parseFloat(a.getAttribute("max-scale")):1);a=a.nextSibling}}finally{e.endUpdate()}null!= +g&&this.chromelessResize&&this.chromelessResize(!0,g)}return c};EditorUi.prototype.getCopyFilename=function(a,b){var c=null!=a&&null!=a.getTitle()?a.getTitle():this.defaultFilename,d="",f=c.lastIndexOf(".");0<=f&&(d=c.substring(f),c=c.substring(0,f));if(b)var e=new Date,f=e.getFullYear(),l=e.getMonth()+1,g=e.getDate(),y=e.getHours(),k=e.getMinutes(),e=e.getSeconds(),c=c+(" "+(f+"-"+l+"-"+g+"-"+y+"-"+k+"-"+e));return c=mxResources.get("copyOf",[c])+d};EditorUi.prototype.fileLoaded=function(a){var b= +this.getCurrentFile();this.fileLoadedError=null;this.setCurrentFile(null);var c=!1;this.hideDialog();null!=b&&(b.removeListener(this.descriptorChangedListener),b.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var d=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=b&&this.updateDocumentTitle();this.editor.graph.model.clear();this.editor.undoManager.clear();this.setBackgroundImage(null);null!=window.location.hash&&0<window.location.hash.length&& +(window.location.hash="");null!=this.fname&&(this.fnameWrapper.style.display="none",this.fname.innerHTML="",this.fname.setAttribute("title",mxResources.get("rename")));this.editor.setStatus("");this.updateUi();this.showSplash()});if(null!=a)try{mxClient.IS_SF&&"min"==uiTheme&&(this.diagramContainer.style.visibility="");this.openingFile=!0;this.setCurrentFile(a);a.addListener("descriptorChanged",this.descriptorChangedListener);a.addListener("contentChanged",this.descriptorChangedListener);a.open(); +delete this.openingFile;this.setGraphEnabled(!0);this.setMode(a.getMode());this.editor.graph.model.prefix=Editor.guid()+"-";this.editor.undoManager.clear();this.descriptorChanged();this.updateUi();a.isEditable()?a.isModified()?(a.addUnsavedStatus(),null!=a.backupPatch&&a.patch([a.backupPatch])):this.editor.setStatus(""):this.editor.setStatus('<span class="geStatusAlert" style="margin-left:8px;">'+mxUtils.htmlEntities(mxResources.get("readOnly"))+"</span>");!this.editor.isChromelessView()||this.editor.editable? +(this.editor.graph.selectUnlockedLayer(),this.showLayersDialog(),this.restoreLibraries(),window.self!==window.top&&window.focus()):this.editor.graph.isLightboxView()&&this.lightboxFit();this.chromelessResize&&this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));c=!0;this.isOffline()||null==a.getMode()||EditorUi.logEvent({category:"File",action:"open",label:a.getMode()+"."+a.getSize()});if(this.editor.editable&&this.mode==a.getMode()&&a.getMode()!=App.MODE_DEVICE&&null!=a.getMode())try{this.addRecent({id:a.getHash(), +title:a.getTitle(),mode:a.getMode()})}catch(u){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+1),mxSettings.save()}catch(u){}}catch(u){this.fileLoadedError=u;null!=window.console&&console.log("error in fileLoaded:",a,u);if(EditorUi.enableLogging&&!this.isOffline())try{(new Image).src=(null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"")+"/log?v="+encodeURIComponent(EditorUi.VERSION)+"&msg=errorInFileLoaded:url:"+encodeURIComponent(window.location.href)+(null!=u&&null!=u.message?":err:"+ +encodeURIComponent(u.message):"")+(null!=u&&null!=u.stack?"&stack="+encodeURIComponent(u.stack):"")}catch(x){}this.handleError(u,mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=b?this.fileLoaded(b):d()}),!0)}else d();return c};EditorUi.prototype.getHashValueForPages=function(a,b){var c=0,d=new mxGraphModel,f=new mxCodec;null!=b&&(b.byteCount=0, +b.attrCount=0,b.eltCount=0,b.nodeCount=0);for(var e=0;e<a.length;e++){this.updatePageRoot(a[e]);var l=a[e].node.cloneNode(!1);l.removeAttribute("name");d.root=a[e].root;var g=f.encode(d);this.editor.graph.saveViewState(a[e].viewState,g,!0);g.removeAttribute("pageWidth");g.removeAttribute("pageHeight");l.appendChild(g);null!=b&&(b.eltCount+=l.getElementsByTagName("*").length,b.nodeCount+=l.getElementsByTagName("mxCell").length);c=(c<<5)-c+this.hashValue(l,function(a,b,c,d){return!d||"mxGeometry"!= +a.nodeName&&"mxPoint"!=a.nodeName||"x"!=b&&"y"!=b&&"width"!=b&&"height"!=b?d&&"mxCell"==a.nodeName&&"previous"==b?null:c:Math.round(c)},b)<<0}return c};EditorUi.prototype.hashValue=function(a,b,c){var d=0;if(null!=a&&"object"===typeof a&&"number"===typeof a.nodeType&&"string"===typeof a.nodeName&&"function"===typeof a.getAttribute){null!=a.nodeName&&(d^=this.hashValue(a.nodeName,b,c));if(null!=a.attributes){null!=c&&(c.attrCount+=a.attributes.length);for(var f=0;f<a.attributes.length;f++){var e=a.attributes[f].name, +l=null!=b?b(a,e,a.attributes[f].value,!0):a.attributes[f].value;null!=l&&(d^=this.hashValue(e,b,c)+this.hashValue(l,b,c))}}if(null!=a.childNodes)for(f=0;f<a.childNodes.length;f++)d=(d<<5)-d+this.hashValue(a.childNodes[f],b,c)<<0}else if(null!=a&&"function"!==typeof a){a=String(a);b=0;null!=c&&(c.byteCount+=a.length);for(f=0;f<a.length;f++)b=(b<<5)-b+a.charCodeAt(f)<<0;d^=b}return d};EditorUi.prototype.descriptorChanged=function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary= +function(a,b,c,d,e,g,k){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||mxClient.IS_CHROMEAPP};EditorUi.prototype.toggleScratchpad=function(){this.isScratchpadEnabled()&&(null==this.scratchpad?this.getLocalData(".scratchpad",mxUtils.bind(this,function(a){null==a&&(a=this.emptyLibraryXml);this.loadLibrary(new StorageLibrary(this,a,".scratchpad"))})):this.closeLibrary(this.scratchpad))};EditorUi.prototype.createLibraryDataFromImages=function(a){var b=mxUtils.createXmlDocument(), +c=b.createElement("mxlibrary");mxUtils.setTextContent(c,JSON.stringify(a));b.appendChild(c);return mxUtils.getXml(b)};EditorUi.prototype.closeLibrary=function(a){null!=a&&(this.removeLibrarySidebar(a.getHash()),a.constructor!=LocalLibrary&&mxSettings.removeCustomLibrary(a.getHash()),".scratchpad"==a.title&&(this.scratchpad=null))};EditorUi.prototype.removeLibrarySidebar=function(a){var b=this.sidebar.palettes[a];if(null!=b){for(var c=0;c<b.length;c++)b[c].parentNode.removeChild(b[c]);delete this.sidebar.palettes[a]}}; +EditorUi.prototype.repositionLibrary=function(a){var b=this.sidebar.container;if(null==a){var c=this.sidebar.palettes["L.scratchpad"];null==c&&(c=this.sidebar.palettes.search);null!=c&&(a=c[c.length-1].nextSibling)}a=null!=a?a:b.firstChild.nextSibling.nextSibling;var c=b.lastChild,d=c.previousSibling;b.insertBefore(c,a);b.insertBefore(d,c)};EditorUi.prototype.loadLibrary=function(a){var b=mxUtils.parseXml(a.getData());if("mxlibrary"==b.documentElement.nodeName){var c=JSON.parse(mxUtils.getTextContent(b.documentElement)); +this.libraryLoaded(a,c,b.documentElement.getAttribute("title"))}else throw{message:mxResources.get("notALibraryFile")};};EditorUi.prototype.getLibraryStorageHint=function(a){return""};EditorUi.prototype.libraryLoaded=function(a,b,c){if(null!=this.sidebar){a.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(a.getHash());".scratchpad"==a.title&&(this.scratchpad=a);var d=this.sidebar.palettes[a.getHash()],d=null!=d?d[d.length-1].nextSibling:null;this.removeLibrarySidebar(a.getHash());var f=null, +e=mxUtils.bind(this,function(b,c){0==b.length&&a.isEditable()?(null==f&&(f=document.createElement("div"),mxUtils.setPrefixedStyle(f.style,"borderRadius","6px"),f.style.border="3px dotted lightGray",f.style.textAlign="center",f.style.padding="8px",f.style.color="#B3B3B3",mxUtils.write(f,mxResources.get("dragElementsHere"))),c.appendChild(f)):this.addLibraryEntries(b,c)});if(null!=this.sidebar&&null!=b)for(var l=0;l<b.length;l++)mxUtils.bind(this,function(a){var b=a.data;null!=b&&null!=a.title?this.sidebar.addEntry(a.title, +mxUtils.bind(this,function(){b=this.convertDataUri(b);var c="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==a.aspect&&(c+="aspect=fixed;");return this.sidebar.createVertexTemplate(c+"image="+b,a.w,a.h,"",a.title||"",!1,!1,!0)})):null!=a.xml&&null!=a.title&&this.sidebar.addEntry(a.title,mxUtils.bind(this,function(){var b=this.stringToCells(this.editor.graph.decompress(a.xml));return this.sidebar.createVertexTemplateFromCells(b,a.w,a.h,a.title||"",!0,!1,!0)}))})(b[l]); +c=null!=c&&0<c.length?c:a.getTitle();var g=this.sidebar.addPalette(a.getHash(),c,!0,mxUtils.bind(this,function(a){e(b,a)}));this.repositionLibrary(d);var p=g.parentNode.previousSibling;c=p.getAttribute("title");null!=c&&0<c.length&&".scratchpad"!=a.title&&p.setAttribute("title",this.getLibraryStorageHint(a)+"\n"+c);var k=document.createElement("div");k.style.position="absolute";k.style.right="0px";k.style.top="0px";k.style.padding="8px";mxClient.IS_QUIRKS||8==document.documentMode||(k.style.backgroundColor= +"inherit");p.style.position="relative";var m=document.createElement("img");m.setAttribute("src",Dialog.prototype.closeImage);m.setAttribute("title",mxResources.get("close"));m.setAttribute("valign","absmiddle");m.setAttribute("border","0");m.style.margin="0 3px";var n=null;if(".scratchpad"!=a.title||this.closableScratchpad)k.appendChild(m),mxEvent.addListener(m,"click",mxUtils.bind(this,function(b){if(!mxEvent.isConsumed(b)){var c=mxUtils.bind(this,function(){this.closeLibrary(a)});null!=n?this.confirm(mxResources.get("allChangesLost"), +null,c,mxResources.get("cancel"),mxResources.get("discardChanges")):c();mxEvent.consume(b)}}));if(a.isEditable()){var q=this.editor.graph,E=null,I=mxUtils.bind(this,function(c){this.showLibraryDialog(a.getTitle(),g,b,a,a.getMode());mxEvent.consume(c)}),C=mxUtils.bind(this,function(c){a.setModified(!0);a.isAutosave()?(null!=E&&null!=E.parentNode&&E.parentNode.removeChild(E),E=m.cloneNode(!1),E.setAttribute("src",Editor.spinImage),E.setAttribute("title",mxResources.get("saving")),E.style.cursor="default", +E.style.marginRight="2px",E.style.marginTop="-2px",k.insertBefore(E,k.firstChild),p.style.paddingRight=18*k.childNodes.length+"px",this.saveLibrary(a.getTitle(),b,a,a.getMode(),!0,!0,function(){null!=E&&null!=E.parentNode&&(E.parentNode.removeChild(E),p.style.paddingRight=18*k.childNodes.length+"px")})):null==n&&(n=m.cloneNode(!1),n.setAttribute("src",IMAGE_PATH+"/download.png"),n.setAttribute("title",mxResources.get("save")),k.insertBefore(n,k.firstChild),mxEvent.addListener(n,"click",mxUtils.bind(this, +function(c){this.saveLibrary(a.getTitle(),b,a,a.getMode(),a.constructor==LocalLibrary,!0,function(){null==n||a.isModified()||(p.style.paddingRight=18*k.childNodes.length+"px",n.parentNode.removeChild(n),n=null)});mxEvent.consume(c)})),p.style.paddingRight=18*k.childNodes.length+"px")}),G=mxUtils.bind(this,function(a,c,d,e){a=q.cloneCells(mxUtils.sortCells(q.model.getTopmostCells(a)));for(var l=0;l<a.length;l++){var p=q.getCellGeometry(a[l]);null!=p&&p.translate(-c.x,-c.y)}g.appendChild(this.sidebar.createVertexTemplateFromCells(a, +c.width,c.height,e||"",!0,!1,!1));a={xml:this.editor.graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(a))),w:c.width,h:c.height};null!=e&&(a.title=e);b.push(a);C(d);null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null)}),J=mxUtils.bind(this,function(a){if(q.isSelectionEmpty())q.getRubberband().isActive()?(q.getRubberband().execute(a),q.getRubberband().reset()):this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var b= +q.getSelectionCells(),c=q.view.getBounds(b),d=q.view.scale;c.x/=d;c.y/=d;c.width/=d;c.height/=d;c.x-=q.view.translate.x;c.y-=q.view.translate.y;G(b,c)}mxEvent.consume(a)});g.style.border="3px solid transparent";mxEvent.addGestureListeners(g,function(){},mxUtils.bind(this,function(a){q.isMouseDown&&null!=q.panningManager&&null!=q.graphHandler.shape&&(q.graphHandler.shape.node.style.visibility="hidden",null!=f?f.style.border="3px dotted rgb(254, 137, 12)":g.style.border="3px dotted rgb(254, 137, 12)", +g.style.cursor="copy",q.panningManager.stop(),q.autoScroll=!1,null!=q.graphHandler.guide&&q.graphHandler.guide.setVisible(!1),null!=q.graphHandler.hint&&(q.graphHandler.hint.style.visibility="hidden"),mxEvent.consume(a))}),mxUtils.bind(this,function(a){q.isMouseDown&&null!=q.panningManager&&null!=q.graphHandler&&(g.style.border="3px solid transparent",null!=f&&(f.style.border="3px dotted lightGray"),g.style.cursor="default",this.sidebar.showTooltips=!0,q.panningManager.stop(),q.graphHandler.reset(), +q.isMouseDown=!1,q.autoScroll=!0,J(a),mxEvent.consume(a))}));mxEvent.addListener(g,"mouseleave",mxUtils.bind(this,function(a){q.isMouseDown&&null!=q.graphHandler.shape&&(q.graphHandler.shape.node.style.visibility="visible",g.style.border="3px solid transparent",g.style.cursor="",q.autoScroll=!0,null!=q.graphHandler.guide&&q.graphHandler.guide.setVisible(!0),null!=q.graphHandler.hint&&(q.graphHandler.hint.style.visibility="visible"),null!=f&&(f.style.border="3px dotted lightGray"))}));Graph.fileSupport&& +(mxEvent.addListener(g,"dragover",mxUtils.bind(this,function(a){null!=f?f.style.border="3px dotted rgb(254, 137, 12)":g.style.border="3px dotted rgb(254, 137, 12)";a.dataTransfer.dropEffect="copy";g.style.cursor="copy";this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()})),mxEvent.addListener(g,"drop",mxUtils.bind(this,function(a){g.style.border="3px solid transparent";g.style.cursor="";null!=f&&(f.style.border="3px dotted lightGray");0<a.dataTransfer.files.length&&this.importFiles(a.dataTransfer.files, +0,0,this.maxImageSize,mxUtils.bind(this,function(c,d,l,p,v,y,k,m,t){if(null!=c&&"image/"==d.substring(0,6))c="shape=image;verticalLabelPosition=bottom;verticalAlign=top;aspect=fixed;image="+this.convertDataUri(c),c=[new mxCell("",new mxGeometry(0,0,v,y),c)],c[0].vertex=!0,G(c,new mxRectangle(0,0,v,y),a,mxEvent.isAltDown(a)?null:k.substring(0,k.lastIndexOf(".")).replace(/_/g," ")),null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null);else{var u=!1,x=mxUtils.bind(this,function(c, +d){if(null!=c&&"text/xml"==d){var l=mxUtils.parseXml(c);if("mxlibrary"==l.documentElement.nodeName)try{var p=JSON.parse(mxUtils.getTextContent(l.documentElement));e(p,g);b=b.concat(p);C(a);this.spinner.stop();u=!0}catch(L){}else if("mxfile"==l.documentElement.nodeName)try{for(var v=l.documentElement.getElementsByTagName("diagram"),l=0;l<v.length;l++){var p=mxUtils.getTextContent(v[l]),y=this.stringToCells(this.editor.graph.decompress(p)),k=this.editor.graph.getBoundingBoxFromGeometry(y);G(y,new mxRectangle(0, +0,k.width,k.height),a)}u=!0}catch(L){null!=window.console&&console.log("error in drop handler:",L)}}u||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null)});null!=t&&null!=k&&(/(\.v(dx|sdx?))($|\?)/i.test(k)||/(\.vs(x|sx?))($|\?)/i.test(k))?this.importVisio(t,function(a){x(a,"text/xml")},null,k):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(c,k)&&null!=t?this.parseFile(t, +mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?x(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):x(c,d)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(g,"dragleave",function(a){null!=f?f.style.border="3px dotted lightGray":(g.style.border="3px solid transparent",g.style.cursor="");a.stopPropagation();a.preventDefault()})); +m=m.cloneNode(!1);m.setAttribute("src",Editor.editImage);m.setAttribute("title",mxResources.get("edit"));k.insertBefore(m,k.firstChild);mxEvent.addListener(m,"click",I);mxEvent.addListener(g,"dblclick",function(a){mxEvent.getSource(a)==g&&I(a)});c=m.cloneNode(!1);c.setAttribute("src",Editor.plusImage);c.setAttribute("title",mxResources.get("add"));k.insertBefore(c,k.firstChild);mxEvent.addListener(c,"click",J);this.isOffline()||".scratchpad"!=a.title||null==EditorUi.scratchpadHelpLink||(c=document.createElement("span"), +c.setAttribute("title",mxResources.get("help")),c.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;",mxUtils.write(c,"?"),mxEvent.addGestureListeners(c,mxUtils.bind(this,function(a){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(a)})),k.insertBefore(c,k.firstChild))}p.appendChild(k);p.style.paddingRight=18*k.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(a,b){for(var c=0;c<a.length;c++){var d=a[c],f=d.data;if(null!=f){var f=this.convertDataUri(f), +e="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==d.aspect&&(e+="aspect=fixed;");b.appendChild(this.sidebar.createVertexTemplate(e+"image="+f,d.w,d.h,"",d.title||"",!1,!1,!0))}else null!=d.xml&&(f=this.stringToCells(this.editor.graph.decompress(d.xml)),0<f.length&&b.appendChild(this.sidebar.createVertexTemplateFromCells(f,d.w,d.h,d.title||"",!0,!1,!0)))}};EditorUi.prototype.getResource=function(a){return null!=a?a[mxLanguage]||a.main:null};EditorUi.prototype.footerHeight= +0;"1"==urlParams.offline||EditorUi.isElectronApp||("1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64),EditorUi.prototype.createFooter=function(){return document.getElementById("geFooter")});EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground=mxClient.IS_QUIRKS?"none":"linear-gradient(rgb(255, 255, 255) 0px, rgb(242, 242, 242) 100%)",Toolbar.prototype.selectedBackground= +"rgb(242, 242, 242)"),Editor.prototype.initialTopSpacing=3,EditorUi.prototype.menubarHeight=41,EditorUi.prototype.toolbarHeight=38,EditorUi.prototype.hsplitPosition=188,Sidebar.prototype.thumbWidth=46,Sidebar.prototype.thumbHeight=46,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2):"dark"==uiTheme&&(mxClient.link("stylesheet",STYLE_PATH+"/dark.css"),Dialog.backdropColor="#2a2a2a",Graph.prototype.defaultThemeName="darkTheme",Graph.prototype.defaultPageBackgroundColor= +"#2a2a2a",Graph.prototype.defaultPageBorderColor="#505759",Graph.prototype.svgShadowColor="#e0e0e0",Graph.prototype.svgShadowOpacity="0.6",Graph.prototype.svgShadowSize="0.8",Graph.prototype.svgShadowBlur="1.4",Format.prototype.inactiveTabBackgroundColor="black",BaseFormatPanel.prototype.buttonBackgroundColor="#2a2a2a",Sidebar.prototype.dragPreviewBorder="1px dashed #cccccc",mxGraphHandler.prototype.previewColor="#cccccc",StyleFormatPanel.prototype.defaultStrokeColor="#cccccc",mxClient.IS_SVG&&(Editor.helpImage= +"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAP1BMVEUAAAD///////////////////////////////////////////////////////////////////////////////9Du/pqAAAAFXRSTlMAT30qCJRBboyDZyCgRzUUdF46MJlgXETgAAAAeklEQVQY022O2w4DIQhEQUURda/9/28tUO2+7CQS5sgQ4F1RapX78YUwRqQjTU8ILqQfKerTKTvACJ4nLX3krt+8aS82oI8aQC4KavRgtvEW/mDvsICgA03PSGRr79MqX1YPNIxzjyqtw8ZnnRo4t5a5undtJYRywau+ds4Cyza3E6YAAAAASUVORK5CYII=",Editor.checkmarkImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAMAAACeyVWkAAAARVBMVEUAAACZmZkICAgEBASNjY2Dg4MYGBiTk5N5eXl1dXVmZmZQUFBCQkI3NzceHh4MDAykpKSJiYl+fn5sbGxaWlo/Pz8SEhK96uPlAAAAAXRSTlMAQObYZgAAAE5JREFUGNPFzTcSgDAQQ1HJGUfy/Y9K7V1qeOUfzQifCQZai1XHaz11LFysbDbzgDSSWMZiETz3+b8yNUc/MMsktxuC8XQBSncdLwz+8gCCggGXzBcozAAAAABJRU5ErkJggg=="))}; +EditorUi.initTheme();EditorUi.prototype.hideFooter=function(){var a=document.getElementById("geFooter");null!=a&&(this.footerHeight=0,a.style.display="none",this.refresh())};EditorUi.prototype.showFooter=function(a){var b=document.getElementById("geFooter");null!=b&&(this.footerHeight=a,b.style.display="inline",this.refresh())};EditorUi.prototype.showImageDialog=function(a,b,c,d,e){a=new ImageDialog(this,a,b,c,d,e);this.showDialog(a.container,Graph.fileSupport?440:360,Graph.fileSupport?200:90,!0, +!0);a.init()};EditorUi.prototype.showBackgroundImageDialog=function(a){a=null!=a?a:mxUtils.bind(this,function(a){a=new ChangePageSetup(this,null,a);a.ignoreColor=!0;this.editor.graph.model.execute(a)});var b=new BackgroundImageDialog(this,mxUtils.bind(this,function(b){a(b)}));this.showDialog(b.container,360,200,!0,!0);b.init()};EditorUi.prototype.showLibraryDialog=function(a,b,c,d,e){a=new LibraryDialog(this,a,b,c,d,e);this.showDialog(a.container,640,440,!0,!1,mxUtils.bind(this,function(a){a&&null== +this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));a.init()};var c=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(a){var b=c.apply(this,arguments);this.editor.graph.addListener("viewStateChanged",mxUtils.bind(this,function(a){this.editor.graph.isSelectionEmpty()&&b.refresh()}));return b};EditorUi.prototype.createSidebarFooterContainer=function(){var a=this.createDiv("geSidebarContainer");a.style.position="absolute";a.style.overflow="hidden";a.style.borderWidth= +"3px";var b=document.createElement("a");b.className="geTitle";b.style.height="100%";b.style.paddingTop="9px";b.innerHTML='<span style="font-size:18px;margin-right:5px;">+</span>';mxUtils.write(b,mxResources.get("moreShapes")+"...");mxEvent.addListener(b,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(b,"click",mxUtils.bind(this,function(a){this.actions.get("shapes").funct();mxEvent.consume(a)}));a.appendChild(b);return a};EditorUi.prototype.handleError= +function(a,b,c,d){var f=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},e=null!=a&&null!=a.error?a.error:a;if(null!=e||null!=b){a=mxUtils.htmlEntities(mxResources.get("unknownError"));var l=mxResources.get("ok"),g=null;b=null!=b?b:mxResources.get("error");if(null!=e)if(null!=e.retry&&(l=mxResources.get("cancel"),g=function(){f();e.retry()}),404==e.code||404==e.status||403==e.code){a=403==e.code?null!=e.message?mxUtils.htmlEntities(e.message):mxUtils.htmlEntities(mxResources.get("accessDenied")): +mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied"));var p=window.location.hash;null!=p&&"#G"==p.substring(0,2)&&(p=p.substring(2),a+='<br><a href="https://drive.google.com/open?id='+p+'" target="_blank">'+mxUtils.htmlEntities(mxResources.get("tryOpeningViaThisPage"))+"</a>")}else null!=e.message?a=mxUtils.htmlEntities(e.message):null!=e.response&&null!=e.response.error?a=mxUtils.htmlEntities(e.response.error):"undefined"!==window.App&&(e.code==App.ERROR_TIMEOUT?a=mxUtils.htmlEntities(mxResources.get("timeout")): +e.code==App.ERROR_BUSY&&(a=mxUtils.htmlEntities(mxResources.get("busy"))));this.showError(b,a,l,c,g,null,null,null,null,null,null,null,d?c:null)}else null!=c&&c()};EditorUi.prototype.showError=function(a,b,c,d,e,g,k,v,y,m,n,q,D){a=new ErrorDialog(this,a,b,c||mxResources.get("ok"),d,e,g,k,q,v,y);this.showDialog(a.container,m||340,n||(null!=b&&120<b.length?180:150),!0,!1,D);a.init()};EditorUi.prototype.alert=function(a,b){var c=new ErrorDialog(this,null,a,mxResources.get("ok"),b);this.showDialog(c.container, +340,100,!0,!1);c.init()};EditorUi.prototype.confirm=function(a,b,c,d,e,g){var f=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){};a=new ConfirmDialog(this,a,function(){f();null!=b&&b()},function(){f();null!=c&&c()},d,e);this.showDialog(a.container,340,90,!0,g);a.init()};EditorUi.prototype.setCurrentFile=function(a){this.currentFile=a};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP|| +!this.editor.graph.mathEnabled&&this.useCanvasForExport};EditorUi.prototype.createSvgDataUri=function(a){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(a)))};EditorUi.prototype.createImageDataUri=function(a,b,c){var d=a.toDataURL("image/"+c);if(6>=d.length||d==a.cloneNode(!1).toDataURL("image/"+c))throw{message:"Invalid image"};null!=b&&(d=this.writeGraphModelToPng(d,"zTXt","mxGraphModel",atob(this.editor.graph.compress(b))));return d};EditorUi.prototype.saveCanvas=function(a, +b,c){var d="jpeg"==c?"jpg":c,f=this.getBaseFilename()+"."+d;a=this.createImageDataUri(a,b,c);this.saveData(f,d,a.substring(a.lastIndexOf(",")+1),"image/"+c,!0)};EditorUi.prototype.isLocalFileSave=function(){return"remote"!=urlParams.save&&(mxClient.IS_IE||"undefined"!==typeof window.Blob&&"undefined"!==typeof window.URL)&&9!=document.documentMode&&8!=document.documentMode&&7!=document.documentMode&&!mxClient.IS_QUIRKS||this.isOfflineApp()||mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(a, +b){var c=new TextareaDialog(this,a,b,null,null,mxResources.get("close"));c.textarea.style.width="600px";c.textarea.style.height="380px";this.showDialog(c.container,620,460,!0,!0);c.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(a,b,c,d,e){if(window.Blob&&navigator.msSaveOrOpenBlob)a=d?this.base64ToBlob(a,c):new Blob([a],{type:c}),navigator.msSaveOrOpenBlob(a,b);else if(mxClient.IS_IE)c=window.open("about:blank","_blank"),null==c?mxUtils.popup(a,!0):(c.document.write(a), +c.document.close(),c.document.execCommand("SaveAs",!0,b),c.close());else{var f=document.createElement("a"),l=!mxClient.IS_SF&&0>navigator.userAgent.indexOf("PaleMoon/")&&"undefined"!==typeof f.download;if(mxClient.IS_GC)var g=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./),l=65==(g?parseInt(g[2],10):!1)?!1:l;if(l||this.isOffline()){f.href=URL.createObjectURL(d?this.base64ToBlob(a,c):new Blob([a],{type:c}));l?f.download=b:f.setAttribute("target","_blank");document.body.appendChild(f);try{window.setTimeout(function(){URL.revokeObjectURL(f.href)}, +0),f.click(),f.parentNode.removeChild(f)}catch(y){}}else this.createEchoRequest(a,b,c,d,e).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(a,b,c,d,e,g){a="xml="+encodeURIComponent(a);return new mxXmlRequest(SAVE_URL,a+(null!=c?"&mime="+c:"")+(null!=e?"&format="+e:"")+(null!=g?"&base64="+g:"")+(null!=b?"&filename="+encodeURIComponent(b):"")+(d?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(a,b){b=b||"";for(var c=atob(a),d=c.length,f=Math.ceil(d/1024),e=Array(f), +l=0;l<f;++l){for(var g=1024*l,y=Math.min(g+1024,d),k=Array(y-g),m=0;g<y;++m,++g)k[m]=c[g].charCodeAt(0);e[l]=new Uint8Array(k)}return new Blob(e,{type:b})};EditorUi.prototype.saveLocalFile=function(a,b,c,d,e,g,k){g=null!=g?g:!1;k=null!=k?k:"vsdx"!=e&&(!mxClient.IS_IOS||!navigator.standalone);e=this.getServiceCount(g);b=new CreateDialog(this,b,mxUtils.bind(this,function(b,f){try{if("_blank"==f)if(null==c||"image/"!=c.substring(0,6)||"image/svg"==c.substring(0,9)&&!mxClient.IS_SVG){var e=window.open("about:blank"); +null==e?mxUtils.popup(a,!0):(e.document.write(mxUtils.htmlEntities(a,!1)),e.document.close())}else this.openInNewWindow(a,c,d);else f==App.MODE_DEVICE||"download"==f?this.doSaveLocalFile(a,b,c,d):null!=b&&0<b.length&&this.pickFolder(f,mxUtils.bind(this,function(e){try{this.exportFile(a,b,c,d,f,e)}catch(F){this.handleError(F)}}))}catch(H){this.handleError(H)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,g,k,null,1<e,4<e&&(!g||6>e)?3:4, +a,c,d);this.showDialog(b.container,420,1==e?160:4<e?390:270,!0,!0);b.init()};EditorUi.prototype.openInNewWindow=function(a,b,c){if(mxClient.IS_GC||mxClient.IS_EDGE||11==document.documentMode||10==document.documentMode){var d=window.open("about:blank");null==d||null==d.document?mxUtils.popup(a,!0):("image/svg+xml"==b?d.document.write("<html>"+a+"</html>"):d.document.write('<html><img src="data:'+b+(c?";base64,"+a:";charset=utf8,"+encodeURIComponent(a))+'"/></html>'),d.document.close())}else d=window.open("data:"+ +b+(c?";base64,"+a:";charset=utf8,"+encodeURIComponent(a))),null!=d&&null!=d.document||mxUtils.popup(a,!0)};var b=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.addChromelessToolbarItems=function(a){if(this.isExportToCanvas()){this.exportDialog=null;var c=a(mxUtils.bind(this,function(a){var b=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",b);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog= +null)});if(null!=this.exportDialog)b.apply(this);else{this.exportDialog=document.createElement("div");var d=c.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";this.exportDialog.style.fontFamily="Helvetica,Arial";this.exportDialog.style.backgroundColor="#000000";this.exportDialog.style.width="50px";this.exportDialog.style.height="50px";this.exportDialog.style.padding="4px 2px 4px 2px"; +this.exportDialog.style.color="#ffffff";mxUtils.setOpacity(this.exportDialog,70);this.exportDialog.style.left=d.left+"px";this.exportDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";d=mxUtils.getCurrentStyle(this.editor.graph.container);this.exportDialog.style.zIndex=d.zIndex;var f=new Spinner({lines:8,length:6,width:5,radius:6,rotate:0,color:"#fff",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"28px",zIndex:2E9});f.spin(this.exportDialog); +this.exportToCanvas(mxUtils.bind(this,function(a){f.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var c=this.createImageDataUri(a,null,"png");a=document.createElement("img");a.style.maxWidth="140px";a.style.maxHeight="140px";a.style.cursor="pointer";a.style.backgroundColor="white";a.setAttribute("title",mxResources.get("openInNewWindow"));a.setAttribute("border","0");a.setAttribute("src",c);this.exportDialog.appendChild(a); +mxEvent.addListener(a,"click",mxUtils.bind(this,function(){this.openInNewWindow(c.substring(c.indexOf(",")+1),"image/png",!0);b.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));mxEvent.addListener(this.editor.graph.container,"click",b);document.body.appendChild(this.exportDialog)}mxEvent.consume(a)}),Editor.cameraLargeImage,mxResources.get("export"))}b.apply(this,arguments)};EditorUi.prototype.saveData=function(a,b, +c,d,e){this.isLocalFileSave()?this.saveLocalFile(c,a,d,e,b):this.saveRequest(a,b,mxUtils.bind(this,function(a,f){return this.createEchoRequest(c,a,d,e,b,f)}),c,e,d)};EditorUi.prototype.saveRequest=function(a,b,c,d,e,g,k){k=null!=k?k:!mxClient.IS_IOS||!navigator.standalone;var f=this.getServiceCount(!1);a=new CreateDialog(this,a,mxUtils.bind(this,function(a,f){if("_blank"==f||null!=a&&0<a.length){var e=c("_blank"==f?null:a,f==App.MODE_DEVICE||"download"==f||null==f||"_blank"==f?"0":"1");null!=e&&(f== +App.MODE_DEVICE||"download"==f||"_blank"==f?e.simulate(document,"_blank"):this.pickFolder(f,mxUtils.bind(this,function(c){g=null!=g?g:"pdf"==b?"application/pdf":"image/"+b;if(null!=d)try{this.exportFile(d,a,g,!0,f,c)}catch(D){this.handleError(D)}else this.spinner.spin(document.body,mxResources.get("saving"))&&e.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=e.getStatus()&&299>=e.getStatus())try{this.exportFile(e.getText(),a,g,!0,f,c)}catch(D){this.handleError(D)}else this.handleError({message:mxResources.get("errorSavingFile")})}), +function(a){this.spinner.stop();this.handleError(a)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,k,null,1<f,4<f?3:4,d,g,e);this.showDialog(a.container,380,1==f?160:4<f?390:270,!0,!0);a.init()};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(a,b,c,d,e,g){};EditorUi.prototype.pickFolder=function(a,b,c){b(null)};EditorUi.prototype.exportSvg=function(a,b,c,d,e,g,k, +v,y,m){if(this.spinner.spin(document.body,mxResources.get("export"))){var f=this.editor.graph.isSelectionEmpty();c=null!=c?c:f;f=b?null:this.editor.graph.background;f==mxConstants.NONE&&(f=null);null==f&&0==b&&(f="#ffffff");var l=this.editor.graph.getSvg(f,a,k,v,null,c,null,null,"blank"==m?"_blank":"self"==m?"_top":null);d&&this.editor.graph.addSvgShadow(l);var p=this.getBaseFilename()+".svg",t=mxUtils.bind(this,function(a){this.spinner.stop();e&&a.setAttribute("content",this.getFileData(!0,null, +null,null,c,y));if(null!=this.editor.fontCss){var b=a.ownerDocument,b=null!=b.createElementNS?b.createElementNS(mxConstants.NS_SVG,"style"):b.createElement("style");b.setAttribute("type","text/css");mxUtils.setTextContent(b,this.editor.fontCss);a.getElementsByTagName("defs")[0].appendChild(b)}var d='<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a);this.isLocalFileSave()||d.length<=MAX_REQUEST_SIZE?this.saveData(p,"svg",d,"image/svg+xml"): +this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(d)}))});this.convertMath(this.editor.graph,l,!1,mxUtils.bind(this,function(){g?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.convertImages(l,t,this.thumbImageCache)):t(l)}))}};EditorUi.prototype.addRadiobox=function(a,b,c,d,e,g,k){return this.addCheckbox(a,c,d,e,g,k,!0,b)};EditorUi.prototype.addCheckbox=function(a,b,c,d,e,g,k,v){g=null!=g?g:!0;var f=document.createElement("input"); +f.style.marginRight="8px";f.style.marginTop="16px";f.setAttribute("type",k?"radio":"checkbox");k="geCheckbox-"+Editor.guid();f.id=k;null!=v&&f.setAttribute("name",v);c&&(f.setAttribute("checked","checked"),f.defaultChecked=!0);d&&f.setAttribute("disabled","disabled");g&&(a.appendChild(f),c=document.createElement("label"),mxUtils.write(c,b),c.setAttribute("for",k),a.appendChild(c),e||mxUtils.br(a));return f};EditorUi.prototype.addEditButton=function(a,b){var c=this.addCheckbox(a,mxResources.get("edit")+ +":",!0,null,!0);c.style.marginLeft="24px";var d=this.getCurrentFile(),f="";null!=d&&d.getMode()!=App.MODE_DEVICE&&d.getMode()!=App.MODE_BROWSER&&(f=window.location.href);var e=document.createElement("select");e.style.width="120px";e.style.marginLeft="8px";e.style.marginRight="10px";e.className="geBtn";d=document.createElement("option");d.setAttribute("value","blank");mxUtils.write(d,mxResources.get("makeCopy"));e.appendChild(d);d=document.createElement("option");d.setAttribute("value","custom");mxUtils.write(d, +mxResources.get("custom")+"...");e.appendChild(d);a.appendChild(e);mxEvent.addListener(e,"change",mxUtils.bind(this,function(){if("custom"==e.value){var a=new FilenameDialog(this,f,mxResources.get("ok"),function(a){null!=a?f=a:e.value="blank"},mxResources.get("url"),null,null,null,null,function(){e.value="blank"});this.showDialog(a.container,300,80,!0,!1);a.init()}}));mxEvent.addListener(c,"change",mxUtils.bind(this,function(){c.checked&&(null==b||b.checked)?e.removeAttribute("disabled"):e.setAttribute("disabled", +"disabled")}));mxUtils.br(a);return{getLink:function(){return c.checked?"blank"===e.value?"_blank":f:null},getEditInput:function(){return c},getEditSelect:function(){return e}}};EditorUi.prototype.addLinkSection=function(a,b){function c(){g.innerHTML='<div style="width:100%;height:100%;box-sizing:border-box;'+(null!=e&&e!=mxConstants.NONE?"border:1px solid black;background-color:"+e:"background-position:center center;background-repeat:no-repeat;background-image:url('"+Dialog.prototype.closeImage+ +"')")+';"></div>'}mxUtils.write(a,mxResources.get("links")+":");var d=document.createElement("select");d.style.width="100px";d.style.marginLeft="8px";d.style.marginRight="10px";d.className="geBtn";var f=document.createElement("option");f.setAttribute("value","auto");mxUtils.write(f,mxResources.get("automatic"));d.appendChild(f);f=document.createElement("option");f.setAttribute("value","blank");mxUtils.write(f,mxResources.get("openInNewWindow"));d.appendChild(f);f=document.createElement("option"); +f.setAttribute("value","self");mxUtils.write(f,mxResources.get("openInThisWindow"));d.appendChild(f);b&&(f=document.createElement("option"),f.setAttribute("value","frame"),mxUtils.write(f,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),d.appendChild(f));a.appendChild(d);mxUtils.write(a,mxResources.get("borderColor")+":");var e="#0000ff",g=null,g=mxUtils.button("",mxUtils.bind(this,function(a){this.pickColor(e||"none",function(a){e=a;c()});mxEvent.consume(a)}));c();g.style.padding= +mxClient.IS_FF?"4px 2px 4px 2px":"4px";g.style.marginLeft="4px";g.style.height="22px";g.style.width="22px";g.style.position="relative";g.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";g.className="geColorBtn";a.appendChild(g);mxUtils.br(a);return{getColor:function(){return e},getTarget:function(){return d.value},focus:function(){d.focus()}}};EditorUi.prototype.createLink=function(a,b,c,d,e,g,k,v){var f=this.getCurrentFile(),l=[];d&&(l.push("lightbox=1"),"auto"!=a&&l.push("target="+ +a),null!=b&&b!=mxConstants.NONE&&l.push("highlight="+("#"==b.charAt(0)?b.substring(1):b)),null!=e&&0<e.length&&l.push("edit="+encodeURIComponent(e)),g&&l.push("layers=1"),this.editor.graph.foldingEnabled&&l.push("nav=1"));c&&(a=this.getSelectedPageIndex(),0<a&&l.push("page="+a));a=!0;null!=k?c="#U"+encodeURIComponent(k):(f=this.getCurrentFile(),v||null==f||f.constructor!=window.DriveFile?c="#R"+encodeURIComponent(c?this.getFileData(!0,null,null,null,null,null,null,!0):this.editor.graph.compress(mxUtils.getXml(this.editor.getGraphXml()))): +(c="#"+f.getHash(),a=!1));a&&null!=f&&null!=f.getTitle()&&f.getTitle()!=this.defaultFilename&&l.push("title="+encodeURIComponent(f.getTitle()));return(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host+"/")+(0<l.length?"?"+l.join("&"):"")+c};EditorUi.prototype.createHtml=function(a,b,c,d,e,g,k,v,y,m,n){this.getBasenames();var f={};""!=e&&e!=mxConstants.NONE&&(f.highlight=e);"auto"!==d&&(f.target=d);y||(f.lightbox= +!1);f.nav=this.editor.graph.foldingEnabled;c=parseInt(c);isNaN(c)||100==c||(f.zoom=c/100);c=[];k&&(c.push("pages"),f.resize=!0,null!=this.pages&&null!=this.currentPage&&(f.page=mxUtils.indexOf(this.pages,this.currentPage)));b&&(c.push("zoom"),f.resize=!0);v&&c.push("layers");0<c.length&&(y&&c.push("lightbox"),f.toolbar=c.join(" "));null!=m&&0<m.length&&(f.edit=m);null!=a?f.url=a:f.xml=this.getFileData(!0,null,null,null,null,!k);b='<div class="mxgraph" style="'+(g?"max-width:100%;":"")+(""!=c?"border:1px solid transparent;": +"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(f))+'"></div>';a=null!=a?"&fetch="+encodeURIComponent(a):"";n(b,'<script type="text/javascript" src="'+(0<a.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.drawHost+"/embed2.js?")+a:"1"==urlParams.dev?"https://test.draw.io/js/viewer.min.js":window.VIEWER_URL?window.VIEWER_URL:EditorUi.drawHost+"/js/viewer.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(a,b,c,d){var f=document.createElement("div"); +f.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,mxResources.get("html"));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";f.appendChild(e);var g=document.createElement("div");g.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var l=document.createElement("input");l.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";l.setAttribute("value","url");l.setAttribute("type","radio");l.setAttribute("name", +"type-embedhtmldialog");e=l.cloneNode(!0);e.setAttribute("value","copy");g.appendChild(e);var k=document.createElement("span");mxUtils.write(k,mxResources.get("includeCopyOfMyDiagram"));g.appendChild(k);mxUtils.br(g);g.appendChild(l);k=document.createElement("span");mxUtils.write(k,mxResources.get("publicDiagramUrl"));g.appendChild(k);var p=this.getCurrentFile();null==c&&null!=p&&p.constructor==window.DriveFile&&(k=document.createElement("a"),k.style.paddingLeft="12px",k.style.color="gray",k.setAttribute("href", +"javascript:void(0);"),mxUtils.write(k,mxResources.get("share")),g.appendChild(k),mxEvent.addListener(k,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(p.getId())})));e.setAttribute("checked","checked");null==c&&l.setAttribute("disabled","disabled");f.appendChild(g);var m=this.addLinkSection(f),n=this.addCheckbox(f,mxResources.get("zoom"),!0,null,!0);mxUtils.write(f,":");var t=document.createElement("input");t.setAttribute("type","text");t.style.marginRight="16px"; +t.style.width="60px";t.style.marginLeft="4px";t.style.marginRight="12px";t.value="100%";f.appendChild(t);var q=this.addCheckbox(f,mxResources.get("fit"),!0),g=null!=this.pages&&1<this.pages.length,I=I=this.addCheckbox(f,mxResources.get("allPages"),g,!g),C=this.addCheckbox(f,mxResources.get("layers"),!0),G=this.addCheckbox(f,mxResources.get("lightbox"),!0),J=this.addEditButton(f,G),A=J.getEditInput();A.style.marginBottom="16px";mxEvent.addListener(G,"change",function(){G.checked?A.removeAttribute("disabled"): +A.setAttribute("disabled","disabled");A.checked&&G.checked?J.getEditSelect().removeAttribute("disabled"):J.getEditSelect().setAttribute("disabled","disabled")});a=new CustomDialog(this,f,mxUtils.bind(this,function(){d(l.checked?c:null,n.checked,t.value,m.getTarget(),m.getColor(),q.checked,I.checked,C.checked,G.checked,J.getLink())}),null,a,b);this.showDialog(a.container,340,384,!0,!0);e.focus()};EditorUi.prototype.showPublishLinkDialog=function(a,b,c,d,e,g){var f=document.createElement("div");f.style.whiteSpace= +"nowrap";var l=document.createElement("h3");mxUtils.write(l,a||mxResources.get("link"));l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";f.appendChild(l);var k=this.getCurrentFile(),l="https://desk.draw.io/support/solutions/articles/16000051941";a=0;if(null!=k&&k.constructor==window.DriveFile&&!b){a=80;var l="https://desk.draw.io/support/solutions/articles/16000039384",p=document.createElement("div");p.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;"; +var m=document.createElement("div");m.style.whiteSpace="normal";mxUtils.write(m,mxResources.get("linkAccountRequired"));p.appendChild(m);m=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(k.getId())}));m.style.marginTop="12px";m.className="geBtn";p.appendChild(m);f.appendChild(p);m=document.createElement("a");m.style.paddingLeft="12px";m.style.color="gray";m.style.fontSize="11px";m.setAttribute("href","javascript:void(0);");mxUtils.write(m,mxResources.get("check")); +p.appendChild(m);mxEvent.addListener(m,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(a){this.spinner.stop();a=new ErrorDialog(this,null,mxResources.get(null!=a?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(a.container,300,80,!0,!1);a.init()}))}))}var n=null,t=null;if(null!=c||null!=d)a+=30,mxUtils.write(f,mxResources.get("width")+":"),n=document.createElement("input"), +n.setAttribute("type","text"),n.style.marginRight="16px",n.style.width="50px",n.style.marginLeft="6px",n.style.marginRight="16px",n.style.marginBottom="10px",n.value="100%",f.appendChild(n),mxUtils.write(f,mxResources.get("height")+":"),t=document.createElement("input"),t.setAttribute("type","text"),t.style.width="50px",t.style.marginLeft="6px",t.style.marginBottom="10px",t.value=d+"px",f.appendChild(t),mxUtils.br(f);var u=this.addLinkSection(f,g);c=null!=this.pages&&1<this.pages.length;var x=null; +if(null==k||k.constructor!=window.DriveFile||b)x=this.addCheckbox(f,mxResources.get("allPages"),c,!c);var q=this.addCheckbox(f,mxResources.get("lightbox"),!0),G=this.addEditButton(f,q),J=G.getEditInput(),A=this.addCheckbox(f,mxResources.get("layers"),!0);A.style.marginLeft=J.style.marginLeft;A.style.marginBottom="16px";A.style.marginTop="8px";mxEvent.addListener(q,"change",function(){q.checked?(A.removeAttribute("disabled"),J.removeAttribute("disabled")):(A.setAttribute("disabled","disabled"),J.setAttribute("disabled", +"disabled"));J.checked&&q.checked?G.getEditSelect().removeAttribute("disabled"):G.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,f,mxUtils.bind(this,function(){e(u.getTarget(),u.getColor(),null==x?!0:x.checked,q.checked,G.getLink(),A.checked,null!=n?n.value:null,null!=t?t.value:null)}),null,mxResources.get("create"),l);this.showDialog(b.container,340,254+a,!0,!0);null!=n?(n.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?n.select(): +document.execCommand("selectAll",!1,null)):u.focus()};EditorUi.prototype.showRemoteExportDialog=function(a,b,c,d){var f=document.createElement("div");f.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,mxResources.get("image"));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";f.appendChild(e);var g=this.addCheckbox(f,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),l=d?null:this.addCheckbox(f,mxResources.get("includeCopyOfMyDiagram"), +!0),e=this.editor.graph,k=d?null:this.addCheckbox(f,mxResources.get("transparentBackground"),e.background==mxConstants.NONE||null==e.background);null!=k&&(k.style.marginBottom="16px");a=new CustomDialog(this,f,mxUtils.bind(this,function(){c(!g.checked,null!=l?l.checked:!1,null!=k?k.checked:!1)}),null,a,b);this.showDialog(a.container,300,d?100:186,!0,!0)};EditorUi.prototype.showExportDialog=function(a,b,c,d,e,g,k,v){k=null!=k?k:!0;var f=document.createElement("div");f.style.whiteSpace="nowrap";var l= +this.editor.graph,p="jpeg"==v?196:300,m=document.createElement("h3");mxUtils.write(m,a);m.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";f.appendChild(m);mxUtils.write(f,mxResources.get("zoom")+":");var n=document.createElement("input");n.setAttribute("type","text");n.style.marginRight="16px";n.style.width="60px";n.style.marginLeft="4px";n.style.marginRight="12px";n.value=this.lastExportZoom||"100%";f.appendChild(n);mxUtils.write(f,mxResources.get("borderWidth")+":"); +var t=document.createElement("input");t.setAttribute("type","text");t.style.marginRight="16px";t.style.width="60px";t.style.marginLeft="4px";t.value=this.lastExportBorder||"0";f.appendChild(t);mxUtils.br(f);var u=this.addCheckbox(f,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=v),q=this.addCheckbox(f,mxResources.get("selectionOnly"),!1,l.isSelectionEmpty()),x=document.createElement("input");x.style.marginTop="16px";x.style.marginRight="8px";x.style.marginLeft="24px";x.setAttribute("disabled", +"disabled");x.setAttribute("type","checkbox");g&&(f.appendChild(x),mxUtils.write(f,mxResources.get("crop")),mxUtils.br(f),p+=26,mxEvent.addListener(q,"change",function(){q.checked?x.removeAttribute("disabled"):x.setAttribute("disabled","disabled")}));l.isSelectionEmpty()||(x.setAttribute("checked","checked"),x.defaultChecked=!0);var z=this.addCheckbox(f,mxResources.get("shadow"),l.shadowVisible),A=document.createElement("input");A.style.marginTop="16px";A.style.marginRight="8px";A.setAttribute("type", +"checkbox");!this.isOffline()&&this.canvasSupported||A.setAttribute("disabled","disabled");b&&(f.appendChild(A),mxUtils.write(f,mxResources.get("embedImages")),mxUtils.br(f),p+=26);var K=this.addCheckbox(f,mxResources.get("includeCopyOfMyDiagram"),k,null,null,"jpeg"!=v),M=null!=this.pages&&1<this.pages.length,S=this.addCheckbox(f,M?mxResources.get("allPages"):"",M,!M,null,"jpeg"!=v);S.style.marginLeft="24px";S.style.marginBottom="16px";M||(S.style.display="none");mxEvent.addListener(K,"change",function(){K.checked&& +M?S.removeAttribute("disabled"):S.setAttribute("disabled","disabled")});k&&M||S.setAttribute("disabled","disabled");var T=document.createElement("select");T.style.maxWidth="260px";T.style.marginLeft="8px";T.style.marginRight="10px";T.className="geBtn";a=document.createElement("option");a.setAttribute("value","auto");mxUtils.write(a,mxResources.get("automatic"));T.appendChild(a);a=document.createElement("option");a.setAttribute("value","blank");mxUtils.write(a,mxResources.get("openInNewWindow"));T.appendChild(a); +a=document.createElement("option");a.setAttribute("value","self");mxUtils.write(a,mxResources.get("openInThisWindow"));T.appendChild(a);"svg"==v&&(mxUtils.write(f,mxResources.get("links")+":"),f.appendChild(T),mxUtils.br(f),mxUtils.br(f),p+=26);c=new CustomDialog(this,f,mxUtils.bind(this,function(){this.lastExportBorder=t.value;this.lastExportZoom=n.value;e(n.value,u.checked,!q.checked,z.checked,K.checked,A.checked,t.value,x.checked,!S.checked,T.value)}),null,c,d);this.showDialog(c.container,340, +p,!0,!0);n.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?n.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(a,b,c,d,e){var f=document.createElement("div");f.style.whiteSpace="nowrap";var g=this.editor.graph;if(null!=b){var l=document.createElement("h3");mxUtils.write(l,b);l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";f.appendChild(l)}var k=this.addCheckbox(f,mxResources.get("fit"), +!0),p=this.addCheckbox(f,mxResources.get("shadow"),g.shadowVisible&&d,!d),m=this.addCheckbox(f,c),n=this.addCheckbox(f,mxResources.get("lightbox"),!0),t=this.addEditButton(f,n),u=t.getEditInput(),q=1<g.model.getChildCount(g.model.getRoot()),C=this.addCheckbox(f,mxResources.get("layers"),q,!q);C.style.marginLeft=u.style.marginLeft;C.style.marginBottom="12px";C.style.marginTop="8px";mxEvent.addListener(n,"change",function(){n.checked?(q&&C.removeAttribute("disabled"),u.removeAttribute("disabled")): +(C.setAttribute("disabled","disabled"),u.setAttribute("disabled","disabled"));u.checked&&n.checked?t.getEditSelect().removeAttribute("disabled"):t.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,f,mxUtils.bind(this,function(){a(k.checked,p.checked,m.checked,n.checked,t.getLink(),C.checked)}),null,mxResources.get("embed"),e);this.showDialog(b.container,280,280,!0,!0)};EditorUi.prototype.createEmbedImage=function(a,b,c,d,e,g,k,v){function f(b){var f=" ",v="";d&&(f=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+ +EditorUi.drawHost+"/?client=1&lightbox=1"+(e?"&edit=_blank":"")+(g?"&layers=1":"")+"');}})(this);\"",v+="cursor:pointer;");a&&(v+="max-width:100%;");var p="";c&&(p=' width="'+Math.round(l.width)+'" height="'+Math.round(l.height)+'"');k('<img src="'+b+'"'+p+(""!=v?' style="'+v+'"':"")+f+"/>")}var l=this.editor.graph.getGraphBounds();if(this.isExportToCanvas())this.exportToCanvas(mxUtils.bind(this,function(a){var b=d?this.getFileData(!0):null;a=this.createImageDataUri(a,b,"png");f(a)}),null,null,null, +mxUtils.bind(this,function(a){v({message:mxResources.get("unknownError")})}),null,!0,c?2:1,null,b);else if(b=this.getFileData(!0),l.width*l.height<=MAX_AREA&&b.length<=MAX_REQUEST_SIZE){var p="";c&&(p="&w="+Math.round(2*l.width)+"&h="+Math.round(2*l.height));var m=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(d?"1":"0")+p+"&xml="+encodeURIComponent(b));m.send(mxUtils.bind(this,function(){200<=m.getStatus()&&299>=m.getStatus()?f("data:image/png;base64,"+m.getText()):v({message:mxResources.get("unknownError")})}))}else v({message:mxResources.get("drawingTooLarge")})}; +EditorUi.prototype.createEmbedSvg=function(a,b,c,d,e,g,k){var f=this.editor.graph.getSvg(),l=f.getElementsByTagName("a");if(null!=l)for(var p=0;p<l.length;p++){var m=l[p].getAttribute("href");null!=m&&"#"==m.charAt(0)&&"_blank"==l[p].getAttribute("target")&&l[p].removeAttribute("target")}d&&f.setAttribute("content",this.getFileData(!0));b&&this.editor.graph.addSvgShadow(f);if(c){var n=" ",t="";d&&(n="onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+ +EditorUi.drawHost+"/?client=1&lightbox=1"+(e?"&edit=_blank":"")+(g?"&layers=1":"")+"');}})(this);\"",t+="cursor:pointer;");a&&(t+="max-width:100%;");this.convertImages(f,mxUtils.bind(this,function(a){k('<img src="'+this.createSvgDataUri(mxUtils.getXml(a))+'"'+(""!=t?' style="'+t+'"':"")+n+"/>")}))}else t="",d&&(f.setAttribute("onclick","(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&&src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&&!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('"+ +EditorUi.drawHost+"/?client=1&lightbox=1"+(e?"&edit=_blank":"")+(g?"&layers=1":"")+"');}}})(this);"),t+="cursor:pointer;"),a&&(a=parseInt(f.getAttribute("width")),b=parseInt(f.getAttribute("height")),f.setAttribute("viewBox","-0.5 -0.5 "+a+" "+b),t+="max-width:100%;max-height:"+b+"px;",f.removeAttribute("height")),""!=t&&f.setAttribute("style",t),k(mxUtils.getXml(f))};EditorUi.prototype.timeSince=function(a){a=Math.floor((new Date-a)/1E3);var b=Math.floor(a/31536E3);if(1<b)return b+" "+mxResources.get("years"); +b=Math.floor(a/2592E3);if(1<b)return b+" "+mxResources.get("months");b=Math.floor(a/86400);if(1<b)return b+" "+mxResources.get("days");b=Math.floor(a/3600);if(1<b)return b+" "+mxResources.get("hours");b=Math.floor(a/60);return 1<b?b+" "+mxResources.get("minutes"):1==b?b+" "+mxResources.get("minute"):null};EditorUi.prototype.convertMath=function(a,b,c,d){a.mathEnabled&&"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?(Editor.MathJaxRender(b),window.setTimeout(mxUtils.bind(this,function(){MathJax.Hub.Queue(mxUtils.bind(this, +function(){d()}))}),0)):d()};EditorUi.prototype.decodeNodeIntoGraph=function(a,b){if(null!=a){var c=null;if("diagram"==a.nodeName)c=a;else if("mxfile"==a.nodeName){var d=a.getElementsByTagName("diagram");if(0<d.length){var c=d[0],f=b.getGlobalVariable;b.getGlobalVariable=function(a){return"page"==a?c.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==a?1:f.apply(this,arguments)}}}null!=c&&(d=b.decompress(mxUtils.getTextContent(c)),null!=d&&0<d.length&&(a=mxUtils.parseXml(d).documentElement))}d= +this.editor.graph;try{this.editor.graph=b,this.editor.setGraphXml(a)}catch(x){}finally{this.editor.graph=d}return a};EditorUi.prototype.getEmbeddedPng=function(a,b,c){var d=this.editor.graph,f=null;if(null!=c&&0<c.length)d=this.createTemporaryGraph(this.editor.graph.getStylesheet()),document.body.appendChild(d.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(c).documentElement,!0),d),f=c;else if(null!=this.pages&&this.currentPage!=this.pages[0]){var d=this.createTemporaryGraph(d.getStylesheet()), +e=d.getGlobalVariable,g=this.pages[0];d.getGlobalVariable=function(a){return"page"==a?g.getName():"pagenumber"==a?1:e.apply(this,arguments)};document.body.appendChild(d.container);d.model.setRoot(g.root)}this.exportToCanvas(mxUtils.bind(this,function(c){try{null==f&&(f=this.getFileData(!0));var e=c.toDataURL("image/png"),e=this.writeGraphModelToPng(e,"zTXt","mxGraphModel",atob(this.editor.graph.compress(f)));a(e.substring(e.lastIndexOf(",")+1));d!=this.editor.graph&&d.container.parentNode.removeChild(d.container)}catch(B){null!= +b&&b(B)}}),null,null,null,mxUtils.bind(this,function(a){null!=b&&b(a)}),null,null,null,null,d.shadowVisible,null,d)};EditorUi.prototype.getEmbeddedSvg=function(a,b,c,d,e,g,k){k=b.background;k==mxConstants.NONE&&(k=null);g=b.getSvg(k,null,null,null,null,g);b.shadowVisible&&b.addSvgShadow(g);null!=a&&g.setAttribute("content",a);null!=c&&g.setAttribute("resource",c);if(null!=e)this.convertImages(g,mxUtils.bind(this,function(a){e((d?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+ +mxUtils.getXml(a))}));else return(d?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(g)};EditorUi.prototype.exportImage=function(a,b,c,d,e,g,k,v,m){m=null!=m?m:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var f=this.editor.graph.isSelectionEmpty();c=null!=c?c:f;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.exportToCanvas(mxUtils.bind(this,function(a){this.spinner.stop(); +try{this.saveCanvas(a,e?this.getFileData(!0,null,null,null,c,v):null,m)}catch(F){"Invalid image"==F.message?this.downloadFile(m):this.handleError(F)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),null,c,a||1,b,d,null,null,g,k)}catch(H){this.spinner.stop(),this.handleError(H)}}};EditorUi.prototype.loadFonts=function(a){if(null!=this.editor.fontCss&&null==this.editor.resolvedFontCss){var b=function(a){return a.replace(RegExp("^[\\s\"']+","g"), +"").replace(RegExp("[\\s\"']+$","g"),"")},c=this.editor.fontCss.split("url("),d=0,f={},e=mxUtils.bind(this,function(){if(0==d){for(var e=[c[0]],g=1;g<c.length;g++){var l=c[g].indexOf(")");e.push('url("');e.push(f[b(c[g].substring(0,l))]);e.push('"'+c[g].substring(l))}this.editor.resolvedFontCss=e.join("");a()}});if(0<c.length)for(var g=1;g<c.length;g++){var k=c[g].indexOf(")"),m=null,n=c[g].indexOf("format(",k);0<n&&(m=b(c[g].substring(n+7,c[g].indexOf(")",n))));mxUtils.bind(this,function(a){if(null== +f[a]){f[a]=a;d++;var b="application/x-font-ttf";if("svg"==m||/(\.svg)($|\?)/i.test(a))b="image/svg+xml";else if("otf"==m||"embedded-opentype"==m||/(\.otf)($|\?)/i.test(a))b="application/x-font-opentype";else if("woff"==m||/(\.woff)($|\?)/i.test(a))b="application/font-woff";else if("woff2"==m||/(\.woff2)($|\?)/i.test(a))b="application/font-woff2";else if("eot"==m||/(\.eot)($|\?)/i.test(a))b="application/vnd.ms-fontobject";else if("sfnt"==m||/(\.sfnt)($|\?)/i.test(a))b="application/font-sfnt";var c= +a;/^https?:\/\//.test(c)&&!this.isCorsEnabledForUrl(c)&&(c=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(c,mxUtils.bind(this,function(b){f[a]=b;d--;e()}),mxUtils.bind(this,function(a){d--;e()}),!0,null,"data:"+b+";charset=utf-8;base64,")}})(b(c[g].substring(0,k)),m)}}else a()};EditorUi.prototype.exportToCanvas=function(a,b,c,d,e,g,k,v,m,n,q,F,D,E){g=null!=g?g:!0;F=null!=F?F:this.editor.graph;D=null!=D?D:0;var f=m?null:F.background;f==mxConstants.NONE&&(f=null);null==f&&(f=d);null==f&&0==m&& +(f=this.editor.graph.defaultPageBackgroundColor);this.convertImages(F.getSvg(f,null,null,E,null,null!=k?k:!0,null,null,null,n),mxUtils.bind(this,function(c){var d=new Image;d.onload=mxUtils.bind(this,function(){try{var l=document.createElement("canvas"),k=parseInt(c.getAttribute("width")),p=parseInt(c.getAttribute("height"));v=null!=v?v:1;null!=b&&(v=g?Math.min(1,Math.min(3*b/(4*p),b/k)):b/k);k=Math.ceil(v*k)+2*D;p=Math.ceil(v*p)+2*D;l.setAttribute("width",k);l.setAttribute("height",p);var m=l.getContext("2d"); +null!=f&&(m.beginPath(),m.rect(0,0,k,p),m.fillStyle=f,m.fill());m.scale(v,v);mxClient.IS_SF?window.setTimeout(function(){m.drawImage(d,D/v,D/v);a(l)},0):(m.drawImage(d,D/v,D/v),a(l))}catch(T){null!=e&&e(T)}});d.onerror=function(a){null!=e&&e(a)};try{n&&this.editor.graph.addSvgShadow(c);var l=mxUtils.bind(this,function(){if(null!=this.editor.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.editor.resolvedFontCss;c.getElementsByTagName("defs")[0].appendChild(a)}this.convertMath(F, +c,!0,mxUtils.bind(this,function(){d.src=this.createSvgDataUri(mxUtils.getXml(c))}))});this.loadFonts(l)}catch(A){null!=e&&e(A)}}),c,q)};EditorUi.prototype.createImageUrlConverter=function(){var a=new mxUrlConverter;a.updateBaseUrl();var b=a.convert,c=this;a.convert=function(d){if(null!=d){var f="http://"==d.substring(0,7)||"https://"==d.substring(0,8);f&&!navigator.onLine?d=c.svgBrokenImage.src:!f||d.substring(0,a.baseUrl.length)==a.baseUrl||c.crossOriginImages&&c.isCorsEnabledForUrl(d)?"chrome-extension://"!= +d.substring(0,19)&&(d=b.apply(this,arguments)):d=PROXY_URL+"?url="+encodeURIComponent(d)}return d};return a};EditorUi.prototype.convertImages=function(a,b,c,d){null==d&&(d=this.createImageUrlConverter());var f=0,e=c||{};c=mxUtils.bind(this,function(c,g){for(var l=a.getElementsByTagName(c),k=0;k<l.length;k++)mxUtils.bind(this,function(c){var l=d.convert(c.getAttribute(g));if(null!=l&&"data:"!=l.substring(0,5)){var k=e[l];null==k?(f++,this.convertImageToDataUri(l,function(d){null!=d&&(e[l]=d,c.setAttribute(g, +d));f--;0==f&&b(a)})):c.setAttribute(g,k)}else null!=l&&c.setAttribute(g,l)})(l[k])});c("image","xlink:href");c("img","src");0==f&&b(a)};EditorUi.prototype.loadUrl=function(a,b,c,d,e,g){try{var f=d||/(\.png)($|\?)/i.test(a)||/(\.jpe?g)($|\?)/i.test(a)||/(\.gif)($|\?)/i.test(a);e=null!=e?e:!0;var l=mxUtils.bind(this,function(){mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=b){var d=a.getText();if(f){if((9==document.documentMode||10==document.documentMode)&& +"undefined"!==typeof window.mxUtilsBinaryToArray){a=mxUtilsBinaryToArray(a.request.responseBody).toArray();for(var d=Array(a.length),e=0;e<a.length;e++)d[e]=String.fromCharCode(a[e]);d=d.join("")}g=null!=g?g:"data:image/png;base64,";d=g+this.base64Encode(d)}b(d)}}else null!=c&&c({code:App.ERROR_UNKNOWN},a)}),function(){null!=c&&c({code:App.ERROR_UNKNOWN})},f,this.timeout,function(){e&&null!=c&&c({code:App.ERROR_TIMEOUT,retry:l})})});l()}catch(y){null!=c&&c(y)}};EditorUi.prototype.isCorsEnabledForUrl= function(a){null!=urlParams.cors&&null==this.corsRegExp&&(this.corsRegExp=new RegExp(decodeURIComponent(urlParams.cors)));return null!=this.corsRegExp&&this.corsRegExp.test(a)||"https://raw.githubusercontent.com/"===a.substring(0,34)||"https://cdn.rawgit.com/"===a.substring(0,23)||"https://rawgit.com/"===a.substring(0,19)||/^https?:\/\/[^\/]*\.iconfinder.com\//.test(a)||/^https?:\/\/[^\/]*\.draw\.io\/proxy/.test(a)||/^https?:\/\/[^\/]*\.github\.io\//.test(a)};EditorUi.prototype.convertImageToDataUri= -function(a,b){if(/(\.svg)$/i.test(a))mxUtils.get(a,mxUtils.bind(this,function(a){b(this.createSvgDataUri(a.getText()))}),function(){b(this.svgBrokenImage.src)});else{var c=new Image,d=this;this.crossOriginImages&&(c.crossOrigin="anonymous");c.onload=function(){var a=document.createElement("canvas"),g=a.getContext("2d");a.height=c.height;a.width=c.width;g.drawImage(c,0,0);try{b(a.toDataURL())}catch(w){b(d.svgBrokenImage.src)}};c.onerror=function(){b(d.svgBrokenImage.src)};c.src=a}};EditorUi.prototype.importXml= -function(a,b,c,d,f){b=null!=b?b:0;c=null!=c?c:0;var g=[];try{var h=this.editor.graph;if(null!=a&&0<a.length){var l=mxUtils.parseXml(a),n=this.editor.extractGraphModel(l.documentElement,null!=this.pages);if(null!=n&&"mxfile"==n.nodeName&&null!=this.pages){var k=n.getElementsByTagName("diagram");if(1==k.length)n=mxUtils.parseXml(h.decompress(mxUtils.getTextContent(k[0]))).documentElement;else if(1<k.length){h.model.beginUpdate();try{for(a=0;a<k.length;a++){k[a].removeAttribute("id");var m=this.updatePageRoot(new DiagramPage(k[a])), -p=this.pages.length;null==m.getName()&&m.setName(mxResources.get("pageWithNumber",[p+1]));h.model.execute(new ChangePage(this,m,m,p))}}finally{h.model.endUpdate()}}}null!=n&&"mxGraphModel"===n.nodeName&&(g=h.importGraphModel(n,b,c,d))}}catch(z){if(f)throw z;this.handleError(z)}return g};EditorUi.prototype.isRemoteVisioFormat=function(a){return/(\.v(sd|dx))($|\?)/i.test(a)||/(\.vs(s|x))($|\?)/i.test(a)};EditorUi.prototype.importVisio=function(a,b,c,d){d=null!=d?d:a.name;c=null!=c?c:mxUtils.bind(this, -function(a){this.handleError(a)});var g=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio)if(this.isRemoteVisioFormat(d)&&null!=VSD_CONVERT_URL){var g=new FormData;g.append("file1",a,d);var f=new XMLHttpRequest;f.open("POST",VSD_CONVERT_URL);f.responseType="blob";f.onreadystatechange=mxUtils.bind(this,function(){if(4==f.readyState)if(200<=f.status&&299>=f.status)try{f.response.name=d,this.doImportVisio(f.response,b,c)}catch(y){c(y)}else c({})});f.send(g)}else try{this.doImportVisio(a, -b,c)}catch(y){c(y)}});this.doImportVisio||this.loadingExtensions||this.isOffline()?g():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",g))};EditorUi.prototype.importGraphML=function(a,b,c){c=null!=c?c:mxUtils.bind(this,function(a){this.handleError(a)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(a,b,c)}catch(t){c(t)}});this.doImportGraphML||this.loadingExtensions||this.isOffline()?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js", +function(a,b){if(/(\.svg)$/i.test(a))mxUtils.get(a,mxUtils.bind(this,function(a){b(this.createSvgDataUri(a.getText()))}),function(){b(this.svgBrokenImage.src)});else{var c=new Image,d=this;this.crossOriginImages&&(c.crossOrigin="anonymous");c.onload=function(){var a=document.createElement("canvas"),f=a.getContext("2d");a.height=c.height;a.width=c.width;f.drawImage(c,0,0);try{b(a.toDataURL())}catch(z){b(d.svgBrokenImage.src)}};c.onerror=function(){b(d.svgBrokenImage.src)};c.src=a}};EditorUi.prototype.importXml= +function(a,b,c,d,e){b=null!=b?b:0;c=null!=c?c:0;var f=[];try{var g=this.editor.graph;if(null!=a&&0<a.length){var l=mxUtils.parseXml(a),k=this.editor.extractGraphModel(l.documentElement,null!=this.pages);if(null!=k&&"mxfile"==k.nodeName&&null!=this.pages){var m=k.getElementsByTagName("diagram");if(1==m.length)k=mxUtils.parseXml(g.decompress(mxUtils.getTextContent(m[0]))).documentElement;else if(1<m.length){g.model.beginUpdate();try{for(a=0;a<m.length;a++){m[a].removeAttribute("id");var p=this.updatePageRoot(new DiagramPage(m[a])), +n=this.pages.length;null==p.getName()&&p.setName(mxResources.get("pageWithNumber",[n+1]));g.model.execute(new ChangePage(this,p,p,n))}}finally{g.model.endUpdate()}}}null!=k&&"mxGraphModel"===k.nodeName&&(f=g.importGraphModel(k,b,c,d))}}catch(D){if(e)throw D;this.handleError(D)}return f};EditorUi.prototype.isRemoteVisioFormat=function(a){return/(\.v(sd|dx))($|\?)/i.test(a)||/(\.vs(s|x))($|\?)/i.test(a)};EditorUi.prototype.importVisio=function(a,b,c,d){d=null!=d?d:a.name;c=null!=c?c:mxUtils.bind(this, +function(a){this.handleError(a)});var f=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio)if(this.isRemoteVisioFormat(d)&&null!=VSD_CONVERT_URL){var f=new FormData;f.append("file1",a,d);var e=new XMLHttpRequest;e.open("POST",VSD_CONVERT_URL);e.responseType="blob";e.onreadystatechange=mxUtils.bind(this,function(){if(4==e.readyState)if(200<=e.status&&299>=e.status)try{e.response.name=d,this.doImportVisio(e.response,b,c)}catch(v){c(v)}else c({})});e.send(f)}else try{this.doImportVisio(a, +b,c)}catch(v){c(v)}});this.doImportVisio||this.loadingExtensions||this.isOffline()?f():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",f))};EditorUi.prototype.importGraphML=function(a,b,c){c=null!=c?c:mxUtils.bind(this,function(a){this.handleError(a)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(a,b,c)}catch(u){c(u)}});this.doImportGraphML||this.loadingExtensions||this.isOffline()?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js", d))};EditorUi.prototype.exportVisio=function(){var a=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof VsdxExport)try{(new VsdxExport(this)).exportCurrentDiagrams()||this.handleError({message:mxResources.get("unknownError")})}catch(l){this.handleError(l)}});"undefined"!==typeof VsdxExport||this.loadingExtensions||this.isOffline()?a():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",a))};EditorUi.prototype.convertLucidChart=function(a,b,c){var d=mxUtils.bind(this, -function(){this.loadingExtensions=!1;if("undefined"!==typeof window.LucidImporter)try{b(LucidImporter.importState(JSON.parse(a)))}catch(t){c(t)}else c({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof window.LucidImporter||this.loadingExtensions||this.isOffline()?window.setTimeout(d,0):(this.loadingExtensions=!0,"1"==urlParams.dev?mxscript("js/diagramly/Extensions.js",d):mxscript("js/extensions.min.js",d))};EditorUi.prototype.insertAsPreText=function(a,b,c){var d=this.editor.graph, -g=null;d.getModel().beginUpdate();try{g=d.insertVertex(null,null,"<pre>"+a+"</pre>",b,c,1,1,"text;html=1;align=center;verticalAlign=middle;"),d.updateCellSize(g,!0)}finally{d.getModel().endUpdate()}return g};EditorUi.prototype.insertTextAt=function(a,b,c,d,f,h,k){h=null!=h?h:!0;k=null!=k?k:!0;if(null!=a)if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a))this.parseFile(new Blob([a.replace(/\s+/g," ")],{type:"application/octet-stream"}),mxUtils.bind(this, -function(a){4==a.readyState&&200<=a.status&&299>=a.status&&this.editor.graph.setSelectionCells(this.insertTextAt(a.responseText,b,c,!0))}));else if("data:"==a.substring(0,5)||!this.isOffline()&&(f||/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(a))){var g=this.editor.graph;if("data:image/png;base64,"==a.substring(0,22)){var l=this.extractGraphModelFromPng(a),n=this.importXml(l,b,c,h,!0);if(0<n.length)return n}if("data:image/svg+xml;"==a.substring(0,19))try{if(l=null,"data:image/svg+xml;base64,"==a.substring(0, -26)?(l=a.substring(a.indexOf(",")+1),l=window.atob&&!mxClient.IS_SF?atob(l):Base64.decode(l,!0)):l=decodeURIComponent(a.substring(a.indexOf(",")+1)),n=this.importXml(l,b,c,h,!0),0<n.length)return n}catch(F){}this.loadImage(a,mxUtils.bind(this,function(d){if("data:"==a.substring(0,5))this.resizeImage(d,a,mxUtils.bind(this,function(a,d,f){g.setSelectionCell(g.insertVertex(null,null,"",g.snap(b),g.snap(c),d,f,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+ -this.convertDataUri(a)+";"))}),k,this.maxImageSize);else{var f=Math.min(1,Math.min(this.maxImageSize/d.width,this.maxImageSize/d.height)),h=Math.round(d.width*f);d=Math.round(d.height*f);g.setSelectionCell(g.insertVertex(null,null,"",g.snap(b),g.snap(c),h,d,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+a+";"))}}),mxUtils.bind(this,function(){var f=null;g.getModel().beginUpdate();try{f=g.insertVertex(g.getDefaultParent(), -null,a,g.snap(b),g.snap(c),1,1,"text;"+(d?"html=1;":"")),g.updateCellSize(f),g.fireEvent(new mxEventObject("textInserted","cells",[f]))}finally{g.getModel().endUpdate()}g.setSelectionCell(f)}))}else{a=this.editor.graph.zapGremlins(mxUtils.trim(a));if(this.isCompatibleString(a))return this.importXml(a,b,c,h);if(0<a.length)if(this.isLucidChartData(a))this.convertLucidChart(a,mxUtils.bind(this,function(a){this.editor.graph.setSelectionCells(this.importXml(a,b,c,h))}),mxUtils.bind(this,function(a){this.handleError(a)})); -else{g=this.editor.graph;f=null;g.getModel().beginUpdate();try{f=g.insertVertex(g.getDefaultParent(),null,"",g.snap(b),g.snap(c),1,1,"text;"+(d?"html=1;":"")),g.fireEvent(new mxEventObject("textInserted","cells",[f])),"<"==a.charAt(0)&&a.indexOf(">")==a.length-1&&(a=mxUtils.htmlEntities(a)),f.value=a,g.updateCellSize(f),/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/i.test(f.value)&& -g.setLinkForCell(f,f.value),f.geometry.width+=g.gridSize,f.geometry.height+=g.gridSize}finally{g.getModel().endUpdate()}return[f]}}return[]};EditorUi.prototype.formatFileSize=function(a){var b=-1;do a/=1024,b++;while(1024<a);return Math.max(a,.1).toFixed(1)+" kB; MB; GB; TB;PB;EB;ZB;YB".split(";")[b]};EditorUi.prototype.convertDataUri=function(a){if("data:"==a.substring(0,5)){var b=a.indexOf(";");0<b&&(a=a.substring(0,b)+a.substring(a.indexOf(",",b+1)))}return a};EditorUi.prototype.isRemoteFileFormat= +function(){this.loadingExtensions=!1;if("undefined"!==typeof window.LucidImporter)try{b(LucidImporter.importState(JSON.parse(a)))}catch(u){c(u)}else c({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof window.LucidImporter||this.loadingExtensions||this.isOffline()?window.setTimeout(d,0):(this.loadingExtensions=!0,"1"==urlParams.dev?mxscript("js/diagramly/Extensions.js",d):mxscript("js/extensions.min.js",d))};EditorUi.prototype.insertAsPreText=function(a,b,c){var d=this.editor.graph, +f=null;d.getModel().beginUpdate();try{f=d.insertVertex(null,null,"<pre>"+a+"</pre>",b,c,1,1,"text;html=1;align=center;verticalAlign=middle;"),d.updateCellSize(f,!0)}finally{d.getModel().endUpdate()}return f};EditorUi.prototype.insertTextAt=function(a,b,c,d,e,g,k){g=null!=g?g:!0;k=null!=k?k:!0;if(null!=a)if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a))this.parseFile(new Blob([a.replace(/\s+/g," ")],{type:"application/octet-stream"}),mxUtils.bind(this, +function(a){4==a.readyState&&200<=a.status&&299>=a.status&&this.editor.graph.setSelectionCells(this.insertTextAt(a.responseText,b,c,!0))}));else if("data:"==a.substring(0,5)||!this.isOffline()&&(e||/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(a))){var f=this.editor.graph;if("data:image/png;base64,"==a.substring(0,22)){var l=this.extractGraphModelFromPng(a),m=this.importXml(l,b,c,g,!0);if(0<m.length)return m}if("data:image/svg+xml;"==a.substring(0,19))try{if(l=null,"data:image/svg+xml;base64,"==a.substring(0, +26)?(l=a.substring(a.indexOf(",")+1),l=window.atob&&!mxClient.IS_SF?atob(l):Base64.decode(l,!0)):l=decodeURIComponent(a.substring(a.indexOf(",")+1)),m=this.importXml(l,b,c,g,!0),0<m.length)return m}catch(H){}this.loadImage(a,mxUtils.bind(this,function(d){if("data:"==a.substring(0,5))this.resizeImage(d,a,mxUtils.bind(this,function(a,d,e){f.setSelectionCell(f.insertVertex(null,null,"",f.snap(b),f.snap(c),d,e,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+ +this.convertDataUri(a)+";"))}),k,this.maxImageSize);else{var e=Math.min(1,Math.min(this.maxImageSize/d.width,this.maxImageSize/d.height)),g=Math.round(d.width*e);d=Math.round(d.height*e);f.setSelectionCell(f.insertVertex(null,null,"",f.snap(b),f.snap(c),g,d,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+a+";"))}}),mxUtils.bind(this,function(){var e=null;f.getModel().beginUpdate();try{e=f.insertVertex(f.getDefaultParent(), +null,a,f.snap(b),f.snap(c),1,1,"text;"+(d?"html=1;":"")),f.updateCellSize(e),f.fireEvent(new mxEventObject("textInserted","cells",[e]))}finally{f.getModel().endUpdate()}f.setSelectionCell(e)}))}else{a=this.editor.graph.zapGremlins(mxUtils.trim(a));if(this.isCompatibleString(a))return this.importXml(a,b,c,g);if(0<a.length)if(this.isLucidChartData(a))this.convertLucidChart(a,mxUtils.bind(this,function(a){this.editor.graph.setSelectionCells(this.importXml(a,b,c,g))}),mxUtils.bind(this,function(a){this.handleError(a)})); +else{f=this.editor.graph;e=null;f.getModel().beginUpdate();try{e=f.insertVertex(f.getDefaultParent(),null,"",f.snap(b),f.snap(c),1,1,"text;"+(d?"html=1;":"")),f.fireEvent(new mxEventObject("textInserted","cells",[e])),"<"==a.charAt(0)&&a.indexOf(">")==a.length-1&&(a=mxUtils.htmlEntities(a)),e.value=a,f.updateCellSize(e),/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/i.test(e.value)&& +f.setLinkForCell(e,e.value),e.geometry.width+=f.gridSize,e.geometry.height+=f.gridSize}finally{f.getModel().endUpdate()}return[e]}}return[]};EditorUi.prototype.formatFileSize=function(a){var b=-1;do a/=1024,b++;while(1024<a);return Math.max(a,.1).toFixed(1)+" kB; MB; GB; TB;PB;EB;ZB;YB".split(";")[b]};EditorUi.prototype.convertDataUri=function(a){if("data:"==a.substring(0,5)){var b=a.indexOf(";");0<b&&(a=a.substring(0,b)+a.substring(a.indexOf(",",b+1)))}return a};EditorUi.prototype.isRemoteFileFormat= function(a,b){return/(\"contentType\":\s*\"application\/gliffy\+json\")/.test(a)};EditorUi.prototype.isLucidChartData=function(a){return null!=a&&'{"state":"{\\"Properties\\":'==a.substring(0,26)};EditorUi.prototype.importLocalFile=function(a,b){if(a&&Graph.fileSupport&&(!mxClient.IS_IE&&!mxClient.IS_IE11||0>navigator.appVersion.indexOf("Windows NT 6.1"))){var c=document.createElement("input");c.setAttribute("type","file");mxEvent.addListener(c,"change",mxUtils.bind(this,function(){null!=c.files&& -this.importFiles(c.files,null,null,this.maxImageSize)}));c.click()}else{window.openNew=!1;window.openKey="import";if(!b){var d=Editor.useLocalStorage;Editor.useLocalStorage=!a}window.openFile=new OpenFile(mxUtils.bind(this,function(a){this.hideDialog(a)}));window.openFile.setConsumer(mxUtils.bind(this,function(a,b){if(null!=b&&Graph.fileSupport&&/(\.v(dx|sdx?))($|\?)/i.test(b)){var c=new Blob([a],{type:"application/octet-stream"});this.importVisio(c,mxUtils.bind(this,function(a){this.importXml(a)}), -null,b)}else this.editor.graph.setSelectionCells(this.importXml(a))}));this.showDialog((new OpenDialog(this)).container,360,220,!0,!0,function(){window.openFile=null});if(!b){var g=this.dialog,f=g.close;this.dialog.close=mxUtils.bind(this,function(a){Editor.useLocalStorage=d;f.apply(g,arguments);a&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};EditorUi.prototype.importFile=function(a,b,c,d,f,h,k,m,u,p,F){p=null!=p?p:!0;var g=!1,l=null,n=mxUtils.bind(this,function(a){var b= -null;null!=a&&"<mxlibrary"==a.substring(0,10)?this.loadLibrary(new LocalLibrary(this,a,k)):b=this.importXml(a,c,d,p);null!=m&&m(b)});"image"==b.substring(0,5)?(u=!1,"image/png"==b.substring(0,9)&&(b=F?null:this.extractGraphModelFromPng(a),null!=b&&0<b.length&&(l=this.importXml(b,c,d,p),u=!0)),u||(l=this.editor.graph,b=a.indexOf(";"),0<b&&(a=a.substring(0,b)+a.substring(a.indexOf(",",b+1))),p&&l.isGridEnabled()&&(c=l.snap(c),d=l.snap(d)),l=[l.insertVertex(null,null,"",c,d,f,h,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+ -a+";")])):/(\.*<graphml )/.test(a)?(g=!0,this.importGraphML(a,n)):null!=u&&null!=k&&(/(\.v(dx|sdx?))($|\?)/i.test(k)||/(\.vs(x|sx?))($|\?)/i.test(k))?(g=!0,this.importVisio(u,n)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a,k)?(g=!0,this.parseFile(null!=u?u:new Blob([a],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?n(a.responseText):null!=m&&m(null))}),k)):/(\.v(sd|dx))($|\?)/i.test(k)||/(\.vs(s|x))($|\?)/i.test(k)|| -(l=this.insertTextAt(this.validateFileData(a),c,d,!0,null,p));g||null==m||m(l);return l};EditorUi.prototype.base64Encode=function(a){for(var b="",c=0,d=a.length,g,f,h;c<d;){g=a.charCodeAt(c++)&255;if(c==d){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(g>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((g&3)<<4);b+="==";break}f=a.charCodeAt(c++);if(c==d){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(g>>2); -b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((g&3)<<4|(f&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&15)<<2);b+="=";break}h=a.charCodeAt(c++);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(g>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((g&3)<<4|(f&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&15)<<2|(h&192)>>6);b+= -"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(h&63)}return b};EditorUi.prototype.importFiles=function(a,b,c,d,f,h,k,m,u,p,F,G){b=null!=b?b:0;c=null!=c?c:0;d=null!=d?d:this.maxImageSize;p=null!=p?p:this.maxImageBytes;var g=null!=b&&null!=c,l=!0,n=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var q=F||this.resampleThreshold,x=0;x<a.length;x++)if("image/"==a[x].type.substring(0,6)&&a[x].size>q){n=!0;break}var t=mxUtils.bind(this,function(){var n=this.editor.graph,u=n.gridSize; -f=null!=f?f:mxUtils.bind(this,function(a,b,c,d,f,h,l,n,k){return null!=a&&"<mxlibrary"==a.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,a,l)),null):this.importFile(a,b,c,d,f,h,l,n,k,g,G)});h=null!=h?h:mxUtils.bind(this,function(a){n.setSelectionCells(a)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var q=a.length,x=q,t=[],v=mxUtils.bind(this,function(a,b){t[a]=b;if(0==--x){this.spinner.stop();if(null!=m)m(t);else{var c=[];n.getModel().beginUpdate(); -try{for(var d=0;d<t.length;d++){var g=t[d]();null!=g&&(c=c.concat(g))}}finally{n.getModel().endUpdate()}}h(c)}}),w=0;w<q;w++)mxUtils.bind(this,function(g){var h=a[g],m=new FileReader;m.onload=mxUtils.bind(this,function(a){if(null==k||k(h))if("image/"==h.type.substring(0,6))if("image/svg"==h.type.substring(0,9)){var m=a.target.result,q=m.indexOf(","),x=decodeURIComponent(escape(atob(m.substring(q+1)))),t=mxUtils.parseXml(x),x=t.getElementsByTagName("svg");if(0<x.length){var x=x[0],w=G?null:x.getAttribute("content"); -null!=w&&"<"!=w.charAt(0)&&"%"!=w.charAt(0)&&(w=unescape(window.atob?atob(w):Base64.decode(w,!0)));null!=w&&"%"==w.charAt(0)&&(w=decodeURIComponent(w));null==w||"<mxfile "!==w.substring(0,8)&&"<mxGraphModel "!==w.substring(0,14)?v(g,mxUtils.bind(this,function(){try{if(m.substring(0,q+1),null!=t){var a=t.getElementsByTagName("svg");if(0<a.length){var l=a[0],k=parseFloat(l.getAttribute("width")),p=parseFloat(l.getAttribute("height")),x=l.getAttribute("viewBox");if(null==x||0==x.length)l.setAttribute("viewBox", -"0 0 "+k+" "+p);else if(isNaN(k)||isNaN(p)){var w=x.split(" ");3<w.length&&(k=parseFloat(w[2]),p=parseFloat(w[3]))}m=this.createSvgDataUri(mxUtils.getXml(l));var v=Math.min(1,Math.min(d/Math.max(1,k)),d/Math.max(1,p)),G=f(m,h.type,b+g*u,c+g*u,Math.max(1,Math.round(k*v)),Math.max(1,Math.round(p*v)),h.name);if(isNaN(k)||isNaN(p)){var F=new Image;F.onload=mxUtils.bind(this,function(){k=Math.max(1,F.width);p=Math.max(1,F.height);G[0].geometry.width=k;G[0].geometry.height=p;l.setAttribute("viewBox","0 0 "+ -k+" "+p);m=this.createSvgDataUri(mxUtils.getXml(l));var a=m.indexOf(";");0<a&&(m=m.substring(0,a)+m.substring(m.indexOf(",",a+1)));n.setCellStyles("image",m,[G[0]])});F.src=this.createSvgDataUri(mxUtils.getXml(l))}return G}}}catch(na){}return null})):v(g,mxUtils.bind(this,function(){return f(w,"text/xml",b+g*u,c+g*u,0,0,h.name)}))}else v(g,mxUtils.bind(this,function(){return null}))}else{x=!1;if("image/png"==h.type){var z=G?null:this.extractGraphModelFromPng(a.target.result);if(null!=z&&0<z.length){var y= -new Image;y.src=a.target.result;v(g,mxUtils.bind(this,function(){return f(z,"text/xml",b+g*u,c+g*u,y.width,y.height,h.name)}));x=!0}}x||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"),mxResources.get("cancel"),mxUtils.bind(this,function(){}),null,mxResources.get("ok"),mxUtils.bind(this,function(){this.actions.get("import").funct()}))):this.loadImage(a.target.result,mxUtils.bind(this,function(k){this.resizeImage(k,a.target.result, -mxUtils.bind(this,function(k,n,m){v(g,mxUtils.bind(this,function(){if(null!=k&&k.length<p){var q=l&&this.isResampleImage(a.target.result,F)?Math.min(1,Math.min(d/n,d/m)):1;return f(k,h.type,b+g*u,c+g*u,Math.round(n*q),Math.round(m*q),h.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),l,d,F)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else f(a.target.result,h.type,b+g*u,c+g*u,240,160,h.name,function(a){v(g, -function(){return a})})});/(\.v(dx|sdx?))($|\?)/i.test(h.name)||/(\.vs(x|sx?))($|\?)/i.test(h.name)?f(null,h.type,b+g*u,c+g*u,240,160,h.name,function(a){v(g,function(){return a})},h):"image"==h.type.substring(0,5)?m.readAsDataURL(h):m.readAsText(h)})(w)});n?this.confirmImageResize(function(a){l=a;t()},u):t()};EditorUi.prototype.confirmImageResize=function(a,b){b=null!=b?b:!1;var c=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},d=isLocalStorage||mxClient.IS_CHROMEAPP? -mxSettings.getResizeImages():null,g=function(d,g){if(d||b)mxSettings.setResizeImages(d?g:null),mxSettings.save();c();a(g)};null==d||b?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(a){g(a,!0)},function(a){g(a,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage|| -mxClient.IS_CHROMEAPP?220:200,!0,!0):g(!1,d)};EditorUi.prototype.parseFile=function(a,b,c){c=null!=c?c:a.name;var d=new FormData;d.append("format","xml");d.append("upfile",a,c);var g=new XMLHttpRequest;g.open("POST",OPEN_URL);g.onreadystatechange=function(){b(g)};g.send(d)};EditorUi.prototype.isResampleImage=function(a,b){b=null!=b?b:this.resampleThreshold;return a.length>b};EditorUi.prototype.resizeImage=function(a,b,c,d,f,h){f=null!=f?f:this.maxImageSize;var g=Math.max(1,a.width),l=Math.max(1,a.height); -if(d&&this.isResampleImage(b,h))try{var k=Math.max(g/f,l/f);if(1<k){var n=Math.round(g/k),m=Math.round(l/k),p=document.createElement("canvas");p.width=n;p.height=m;p.getContext("2d").drawImage(a,0,0,n,m);var q=p.toDataURL();if(q.length<b.length){var t=document.createElement("canvas");t.width=n;t.height=m;var v=t.toDataURL();q!==v&&(b=q,g=n,l=m)}}}catch(B){}c(b,g,l)};EditorUi.prototype.crcTable=[];for(var b=0;256>b;b++)for(var d=b,f=0;8>f;f++)d=1==(d&1)?3988292384^d>>>1:d>>>1,EditorUi.prototype.crcTable[b]= -d;EditorUi.prototype.updateCRC=function(a,b,c,d){for(var g=0;g<d;g++)a=EditorUi.prototype.crcTable[(a^b[c+g])&255]^a>>>8;return a};EditorUi.prototype.crc32=function(a){this.crcTable=this.crcTable||this.createCrcTable();for(var b=-1,c=0;c<a.length;c++)b=b>>>8^this.crcTable[(b^a.charCodeAt(c))&255];return(b^-1)>>>0};EditorUi.prototype.writeGraphModelToPng=function(a,b,c,d,f){function g(a,b){var c=k;k+=b;return a.substring(c,k)}function h(a){a=g(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<< -16)+(a.charCodeAt(0)<<24)}function l(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,!0);var k=0;if(g(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=f&&f();else if(g(a,4),"IHDR"!=g(a,4))null!=f&&f();else{g(a,17);f=a.substring(0,k);do{var n=h(a);if("IDAT"==g(a,4)){f=a.substring(0,k-8);c=c+String.fromCharCode(0)+("zTXt"==b?String.fromCharCode(0):"")+d;d=4294967295;d=this.updateCRC(d, -b,0,4);d=this.updateCRC(d,c,0,c.length);f+=l(c.length)+b+c+l(d^4294967295);f+=a.substring(k-8,a.length);break}f+=a.substring(k-8,k-4+n);g(a,n);g(a,4)}while(n);return"data:image/png;base64,"+(window.btoa?btoa(f):Base64.encode(f,!0))}};EditorUi.prototype.extractGraphModelFromPng=function(a){var b=null;try{var c=a.substring(a.indexOf(",")+1),d=window.atob&&!mxClient.IS_SF?atob(c):Base64.decode(c,!0);EditorUi.parsePng(d,mxUtils.bind(this,function(a,c,g){a=d.substring(a+8,a+8+g);"zTXt"==c?(g=a.indexOf(String.fromCharCode(0)), -"mxGraphModel"==a.substring(0,g)&&(a=this.editor.graph.bytesToString(pako.inflateRaw(a.substring(g+2))).replace(/\+/g," "),null!=a&&0<a.length&&(b=a))):"tEXt"==c&&(a=a.split(String.fromCharCode(0)),1<a.length&&"mxGraphModel"==a[0]&&(b=a[1]));if(null!=b||"IDAT"==c)return!0}))}catch(t){}null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));return b};EditorUi.prototype.loadImage=function(a,b,c){var d=new Image;d.onload=function(){b(d)};null!=c&&(d.onerror= -c);d.src=a};var h=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=mxStencilRegistry.allowEval&&!this.isOfflineApp();"undefined"!==typeof window.mxSettings&&(this.formatWidth=mxSettings.getFormatWidth());var a=this,b=this.editor.graph;b.getLinkTitle=function(b){return a.getLinkTitle(b)};b.customLinkClicked=function(b){var c=!1;try{a.handleCustomLink(b),c=!0}catch(C){a.handleError(C)}return c};var c=this.clearDefaultStyle;this.clearDefaultStyle=function(){c.apply(this, +this.importFiles(c.files,null,null,this.maxImageSize)}));c.click()}else{window.openNew=!1;window.openKey="import";if(!b){var d=Editor.useLocalStorage;Editor.useLocalStorage=!a}window.openFile=new OpenFile(mxUtils.bind(this,function(a){this.hideDialog(a)}));window.openFile.setConsumer(mxUtils.bind(this,function(a,b){if(null!=b&&Graph.fileSupport&&/(\.v(dx|sdx?))($|\?)/i.test(b)){var c=new Blob([a],{type:"application/octet-stream"});this.importVisio(c,mxUtils.bind(this,function(a){this.importXml(a, +0,0,!0)}),null,b)}else this.editor.graph.setSelectionCells(this.importXml(a,0,0,!0))}));this.showDialog((new OpenDialog(this)).container,360,220,!0,!0,function(){window.openFile=null});if(!b){var e=this.dialog,f=e.close;this.dialog.close=mxUtils.bind(this,function(a){Editor.useLocalStorage=d;f.apply(e,arguments);a&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};EditorUi.prototype.importFile=function(a,b,c,d,e,g,k,m,y,n,q){n=null!=n?n:!0;var f=!1,l=null,v=mxUtils.bind(this, +function(a){var b=null;null!=a&&"<mxlibrary"==a.substring(0,10)?this.loadLibrary(new LocalLibrary(this,a,k)):b=this.importXml(a,c,d,n);null!=m&&m(b)});"image"==b.substring(0,5)?(y=!1,"image/png"==b.substring(0,9)&&(b=q?null:this.extractGraphModelFromPng(a),null!=b&&0<b.length&&(l=this.importXml(b,c,d,n),y=!0)),y||(l=this.editor.graph,b=a.indexOf(";"),0<b&&(a=a.substring(0,b)+a.substring(a.indexOf(",",b+1))),n&&l.isGridEnabled()&&(c=l.snap(c),d=l.snap(d)),l=[l.insertVertex(null,null,"",c,d,e,g,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+ +a+";")])):/(\.*<graphml )/.test(a)?(f=!0,this.importGraphML(a,v)):null!=y&&null!=k&&(/(\.v(dx|sdx?))($|\?)/i.test(k)||/(\.vs(x|sx?))($|\?)/i.test(k))?(f=!0,this.importVisio(y,v)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a,k)?(f=!0,this.parseFile(null!=y?y:new Blob([a],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?v(a.responseText):null!=m&&m(null))}),k)):/(\.v(sd|dx))($|\?)/i.test(k)||/(\.vs(s|x))($|\?)/i.test(k)|| +(l=this.insertTextAt(this.validateFileData(a),c,d,!0,null,n));f||null==m||m(l);return l};EditorUi.prototype.base64Encode=function(a){for(var b="",c=0,d=a.length,e,f,g;c<d;){e=a.charCodeAt(c++)&255;if(c==d){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4);b+="==";break}f=a.charCodeAt(c++);if(c==d){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2); +b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(f&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&15)<<2);b+="=";break}g=a.charCodeAt(c++);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(f&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&15)<<2|(g&192)>>6);b+= +"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(g&63)}return b};EditorUi.prototype.importFiles=function(a,b,c,d,e,g,k,m,n,q,H,F){b=null!=b?b:0;c=null!=c?c:0;d=null!=d?d:this.maxImageSize;q=null!=q?q:this.maxImageBytes;var f=null!=b&&null!=c,l=!0,v=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var p=H||this.resampleThreshold,y=0;y<a.length;y++)if("image/"==a[y].type.substring(0,6)&&a[y].size>p){v=!0;break}var t=mxUtils.bind(this,function(){var v=this.editor.graph,p=v.gridSize; +e=null!=e?e:mxUtils.bind(this,function(a,b,c,d,e,g,l,k,m){return null!=a&&"<mxlibrary"==a.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,a,l)),null):this.importFile(a,b,c,d,e,g,l,k,m,f,F)});g=null!=g?g:mxUtils.bind(this,function(a){v.setSelectionCells(a)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var y=a.length,n=y,t=[],u=mxUtils.bind(this,function(a,b){t[a]=b;if(0==--n){this.spinner.stop();if(null!=m)m(t);else{var c=[];v.getModel().beginUpdate(); +try{for(var d=0;d<t.length;d++){var e=t[d]();null!=e&&(c=c.concat(e))}}finally{v.getModel().endUpdate()}}g(c)}}),x=0;x<y;x++)mxUtils.bind(this,function(f){var g=a[f];if(null!=g){var m=new FileReader;m.onload=mxUtils.bind(this,function(a){if(null==k||k(g))if("image/"==g.type.substring(0,6))if("image/svg"==g.type.substring(0,9)){var m=a.target.result,y=m.indexOf(","),n=decodeURIComponent(escape(atob(m.substring(y+1)))),t=mxUtils.parseXml(n),n=t.getElementsByTagName("svg");if(0<n.length){var n=n[0], +x=F?null:n.getAttribute("content");null!=x&&"<"!=x.charAt(0)&&"%"!=x.charAt(0)&&(x=unescape(window.atob?atob(x):Base64.decode(x,!0)));null!=x&&"%"==x.charAt(0)&&(x=decodeURIComponent(x));null==x||"<mxfile "!==x.substring(0,8)&&"<mxGraphModel "!==x.substring(0,14)?u(f,mxUtils.bind(this,function(){try{if(m.substring(0,y+1),null!=t){var a=t.getElementsByTagName("svg");if(0<a.length){var l=a[0],k=parseFloat(l.getAttribute("width")),n=parseFloat(l.getAttribute("height")),q=l.getAttribute("viewBox");if(null== +q||0==q.length)l.setAttribute("viewBox","0 0 "+k+" "+n);else if(isNaN(k)||isNaN(n)){var u=q.split(" ");3<u.length&&(k=parseFloat(u[2]),n=parseFloat(u[3]))}m=this.createSvgDataUri(mxUtils.getXml(l));var x=Math.min(1,Math.min(d/Math.max(1,k)),d/Math.max(1,n)),B=e(m,g.type,b+f*p,c+f*p,Math.max(1,Math.round(k*x)),Math.max(1,Math.round(n*x)),g.name);if(isNaN(k)||isNaN(n)){var H=new Image;H.onload=mxUtils.bind(this,function(){k=Math.max(1,H.width);n=Math.max(1,H.height);B[0].geometry.width=k;B[0].geometry.height= +n;l.setAttribute("viewBox","0 0 "+k+" "+n);m=this.createSvgDataUri(mxUtils.getXml(l));var a=m.indexOf(";");0<a&&(m=m.substring(0,a)+m.substring(m.indexOf(",",a+1)));v.setCellStyles("image",m,[B[0]])});H.src=this.createSvgDataUri(mxUtils.getXml(l))}return B}}}catch(pa){}return null})):u(f,mxUtils.bind(this,function(){return e(x,"text/xml",b+f*p,c+f*p,0,0,g.name)}))}else u(f,mxUtils.bind(this,function(){return null}))}else{n=!1;if("image/png"==g.type){var B=F?null:this.extractGraphModelFromPng(a.target.result); +if(null!=B&&0<B.length){var z=new Image;z.src=a.target.result;u(f,mxUtils.bind(this,function(){return e(B,"text/xml",b+f*p,c+f*p,z.width,z.height,g.name)}));n=!0}}n||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"),mxResources.get("cancel"),mxUtils.bind(this,function(){}),null,mxResources.get("ok"),mxUtils.bind(this,function(){this.actions.get("import").funct()}))):this.loadImage(a.target.result,mxUtils.bind(this,function(k){this.resizeImage(k, +a.target.result,mxUtils.bind(this,function(k,m,v){u(f,mxUtils.bind(this,function(){if(null!=k&&k.length<q){var n=l&&this.isResampleImage(a.target.result,H)?Math.min(1,Math.min(d/m,d/v)):1;return e(k,g.type,b+f*p,c+f*p,Math.round(m*n),Math.round(v*n),g.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),l,d,H)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else e(a.target.result,g.type,b+f*p,c+f*p,240,160,g.name, +function(a){u(f,function(){return a})})});/(\.v(dx|sdx?))($|\?)/i.test(g.name)||/(\.vs(x|sx?))($|\?)/i.test(g.name)?e(null,g.type,b+f*p,c+f*p,240,160,g.name,function(a){u(f,function(){return a})},g):"image"==g.type.substring(0,5)?m.readAsDataURL(g):m.readAsText(g)}})(x)});v?this.confirmImageResize(function(a){l=a;t()},n):t()};EditorUi.prototype.confirmImageResize=function(a,b){b=null!=b?b:!1;var c=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},d=isLocalStorage||mxClient.IS_CHROMEAPP? +mxSettings.getResizeImages():null,e=function(d,e){if(d||b)mxSettings.setResizeImages(d?e:null),mxSettings.save();c();a(e)};null==d||b?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(a){e(a,!0)},function(a){e(a,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage|| +mxClient.IS_CHROMEAPP?220:200,!0,!0):e(!1,d)};EditorUi.prototype.parseFile=function(a,b,c){c=null!=c?c:a.name;var d=new FormData;d.append("format","xml");d.append("upfile",a,c);var e=new XMLHttpRequest;e.open("POST",OPEN_URL);e.onreadystatechange=function(){b(e)};e.send(d)};EditorUi.prototype.isResampleImage=function(a,b){b=null!=b?b:this.resampleThreshold;return a.length>b};EditorUi.prototype.resizeImage=function(a,b,c,d,e,g){e=null!=e?e:this.maxImageSize;var f=Math.max(1,a.width),l=Math.max(1,a.height); +if(d&&this.isResampleImage(b,g))try{var k=Math.max(f/e,l/e);if(1<k){var m=Math.round(f/k),p=Math.round(l/k),n=document.createElement("canvas");n.width=m;n.height=p;n.getContext("2d").drawImage(a,0,0,m,p);var q=n.toDataURL();if(q.length<b.length){var t=document.createElement("canvas");t.width=m;t.height=p;var u=t.toDataURL();q!==u&&(b=q,f=m,l=p)}}}catch(C){}c(b,f,l)};EditorUi.prototype.crcTable=[];for(var d=0;256>d;d++)for(var g=d,e=0;8>e;e++)g=1==(g&1)?3988292384^g>>>1:g>>>1,EditorUi.prototype.crcTable[d]= +g;EditorUi.prototype.updateCRC=function(a,b,c,d){for(var e=0;e<d;e++)a=EditorUi.prototype.crcTable[(a^b[c+e])&255]^a>>>8;return a};EditorUi.prototype.crc32=function(a){this.crcTable=this.crcTable||this.createCrcTable();for(var b=-1,c=0;c<a.length;c++)b=b>>>8^this.crcTable[(b^a.charCodeAt(c))&255];return(b^-1)>>>0};EditorUi.prototype.writeGraphModelToPng=function(a,b,c,d,e){function f(a,b){var c=k;k+=b;return a.substring(c,k)}function g(a){a=f(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<< +16)+(a.charCodeAt(0)<<24)}function l(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,!0);var k=0;if(f(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=e&&e();else if(f(a,4),"IHDR"!=f(a,4))null!=e&&e();else{f(a,17);e=a.substring(0,k);do{var m=g(a);if("IDAT"==f(a,4)){e=a.substring(0,k-8);c=c+String.fromCharCode(0)+("zTXt"==b?String.fromCharCode(0):"")+d;d=4294967295;d=this.updateCRC(d, +b,0,4);d=this.updateCRC(d,c,0,c.length);e+=l(c.length)+b+c+l(d^4294967295);e+=a.substring(k-8,a.length);break}e+=a.substring(k-8,k-4+m);f(a,m);f(a,4)}while(m);return"data:image/png;base64,"+(window.btoa?btoa(e):Base64.encode(e,!0))}};EditorUi.prototype.extractGraphModelFromPng=function(a){var b=null;try{var c=a.substring(a.indexOf(",")+1),d=window.atob&&!mxClient.IS_SF?atob(c):Base64.decode(c,!0);EditorUi.parsePng(d,mxUtils.bind(this,function(a,c,e){a=d.substring(a+8,a+8+e);"zTXt"==c?(e=a.indexOf(String.fromCharCode(0)), +"mxGraphModel"==a.substring(0,e)&&(a=this.editor.graph.bytesToString(pako.inflateRaw(a.substring(e+2))).replace(/\+/g," "),null!=a&&0<a.length&&(b=a))):"tEXt"==c&&(a=a.split(String.fromCharCode(0)),1<a.length&&"mxGraphModel"==a[0]&&(b=a[1]));if(null!=b||"IDAT"==c)return!0}))}catch(u){}null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));return b};EditorUi.prototype.loadImage=function(a,b,c){var d=new Image;d.onload=function(){b(d)};null!=c&&(d.onerror= +c);d.src=a};var k=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=mxStencilRegistry.allowEval&&!this.isOfflineApp();"undefined"!==typeof window.mxSettings&&(this.formatWidth=mxSettings.getFormatWidth());var a=this,b=this.editor.graph;b.getLinkTitle=function(b){return a.getLinkTitle(b)};b.customLinkClicked=function(b){var c=!1;try{a.handleCustomLink(b),c=!0}catch(A){a.handleError(A)}return c};var c=this.clearDefaultStyle;this.clearDefaultStyle=function(){c.apply(this, arguments)};this.isOffline()||"undefined"===typeof window.EditDataDialog||(EditDataDialog.placeholderHelpLink="https://desk.draw.io/support/solutions/articles/16000051979");var d=a.editor.getEditBlankUrl;this.editor.getEditBlankUrl=function(b){b=null!=b?b:"";if(null!=a.pages&&null!=a.currentPage)for(var c=0;c<a.pages.length;c++)if(a.pages[c]==a.currentPage){0<c&&(b+=(0<b.length?"&":"?")+"page="+c);break}"1"==urlParams.dev&&(b+=(0<b.length?"&":"?")+"dev=1&drawdev=1");return d.apply(this,arguments)}; -var f=b.addClickHandler;b.addClickHandler=function(a,c,d){var g=c;c=function(a,c){if(null==c){var d=mxEvent.getSource(a);"a"==d.nodeName.toLowerCase()&&(c=d.getAttribute("href"))}null!=c&&b.isCustomLink(c)&&(mxEvent.isTouchEvent(a)||!mxEvent.isPopupTrigger(a))&&b.customLinkClicked(c)&&mxEvent.consume(a);null!=g&&g(a,c)};f.call(this,a,c,d)};h.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(b.view.canvas.ownerSVGElement,null,!0);a.actions.get("print").funct=function(){a.showDialog((new PrintDialog(a)).container, -360,null!=a.pages&&1<a.pages.length?420:360,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var k=b.getGlobalVariable;b.getGlobalVariable=function(b){return"page"==b&&null!=a.currentPage?a.currentPage.getName():"pagenumber"==b?null!=a.currentPage&&null!=a.pages?mxUtils.indexOf(a.pages,a.currentPage)+1:1:k.apply(this,arguments)};var m=b.labelLinkClicked;b.labelLinkClicked=function(a,c,d){var g=c.getAttribute("href");if(null==g||!b.isCustomLink(g)||!mxEvent.isTouchEvent(d)&&mxEvent.isPopupTrigger(d))m.apply(this, -arguments);else{if(!b.isEnabled()||null!=a&&b.isCellLocked(a.cell))b.customLinkClicked(g),b.getRubberband().reset();mxEvent.consume(d)}};this.editor.getOrCreateFilename=function(){var b=a.defaultFilename,c=a.getCurrentFile();null!=c&&(b=null!=c.getTitle()?c.getTitle():b);return b};var p=this.actions.get("print");p.setEnabled(!mxClient.IS_IOS||!navigator.standalone);p.visible=p.isEnabled();if(!this.editor.chromeless||this.editor.editable){var u=function(){window.setTimeout(function(){x.innerHTML=" "; -x.focus();document.execCommand("selectAll",!1,null)},0)};this.keyHandler.bindAction(70,!0,"find");this.keyHandler.bindAction(67,!0,"copyStyle",!0);this.keyHandler.bindAction(86,!0,"pasteStyle",!0);this.keyHandler.bindAction(77,!0,"editGeometry",!0);this.keyHandler.bindAction(88,!0,"insertText",!0);this.keyHandler.bindAction(75,!0,"insertRectangle");this.keyHandler.bindAction(75,!0,"insertEllipse",!0);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(this.altShiftActions[83]="synchronize");mxClient.IS_IE|| -b.container.addEventListener("paste",mxUtils.bind(this,function(a){var b=this.editor.graph;if(!mxEvent.isConsumed(a))try{for(var c=a.clipboardData||a.originalEvent.clipboardData,d=!1,g=0;g<c.types.length;g++)if("text/"===c.types[g].substring(0,5)){d=!0;break}if(!d){var f=c.items;for(index in f){var h=f[index];if("file"===h.kind){if(b.isEditing())this.importFiles([h.getAsFile()],0,0,this.maxImageSize,function(a,c,d,g,f,h){b.insertImage(a,f,h)},function(){},function(a){return"image/"==a.type.substring(0, -6)},function(a){for(var b=0;b<a.length;b++)a[b]()});else{var l=this.editor.graph.getInsertPoint();this.importFiles([h.getAsFile()],l.x,l.y,this.maxImageSize);mxEvent.consume(a)}break}}}}catch(R){}}),!1);var x=document.createElement("div");x.style.position="absolute";x.style.whiteSpace="nowrap";x.style.overflow="hidden";x.style.display="block";x.contentEditable=!0;mxUtils.setOpacity(x,0);x.style.width="1px";x.style.height="1px";x.innerHTML=" ";var F=!1;this.keyHandler.bindControlKey(88,null); -this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(a){var c=mxEvent.getSource(a);null==b.container||!b.isEnabled()||b.isMouseDown||b.isEditing()||null!=this.dialog||"INPUT"==c.nodeName||"TEXTAREA"==c.nodeName||!(224==a.keyCode||!mxClient.IS_MAC&&17==a.keyCode||mxClient.IS_MAC&&91==a.keyCode)||F||(x.style.left=b.container.scrollLeft+10+"px",x.style.top=b.container.scrollTop+10+"px",b.container.appendChild(x), -F=!0,mxClient.IS_QUIRKS?window.setTimeout(function(){x.focus();document.execCommand("selectAll",!1,null)},0):(x.focus(),document.execCommand("selectAll",!1,null)))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(a){var c=a.keyCode;window.setTimeout(mxUtils.bind(this,function(){!F||224!=c&&17!=c&&91!=c||(F=!1,b.isEditing()||null!=this.dialog||null==b.container||b.container.focus(),x.parentNode.removeChild(x),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(x, -"copy",mxUtils.bind(this,function(a){b.isEnabled()&&(mxClipboard.copy(b),this.copyCells(x),u())}));mxEvent.addListener(x,"cut",mxUtils.bind(this,function(a){b.isEnabled()&&(mxClipboard.copy(b),this.copyCells(x,!0),u())}));mxEvent.addListener(x,"paste",mxUtils.bind(this,function(a){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&(x.innerHTML=" ",x.focus(),window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(a,x);x.innerHTML=" "}),0))}),!0);var G=this.isSelectionAllowed;this.isSelectionAllowed= -function(a){return mxEvent.getSource(a)==x?!0:G.apply(this,arguments)}}this.spinner=this.createSpinner(document.body.clientWidth/2-2,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,24);Graph.fileSupport&&this.editor.graph.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,function(a){var b=this.editor.graph,c=b.cellEditor.text2,d=null;null!=c&&(mxEvent.addListener(c,"dragleave",function(a){null!=d&&(d.parentNode.removeChild(d),d=null);a.stopPropagation();a.preventDefault()}), -mxEvent.addListener(c,"dragover",mxUtils.bind(this,function(a){null==d&&(!mxClient.IS_IE||10<document.documentMode)&&(d=this.highlightElement(c));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(c,"drop",mxUtils.bind(this,function(a){null!=d&&(d.parentNode.removeChild(d),d=null);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,function(a,c,d,g,f,h){b.insertImage(a,f,h)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b= -0;b<a.length;b++)a[b]()},mxEvent.isControlDown(a));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")){var c=a.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(c)?this.loadImage(decodeURIComponent(c),mxUtils.bind(this,function(a){var d=Math.max(1,a.width);a=Math.max(1,a.height);var g=this.maxImageSize,g=Math.min(1,Math.min(g/Math.max(1,d)),g/Math.max(1,a));b.insertImage(decodeURIComponent(c),d*g,a*g)})):document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/plain"))}else 0<= -mxUtils.indexOf(a.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/plain"));a.stopPropagation();a.preventDefault()})))}));if("1"==urlParams.ruler&&"undefined"!==typeof mxRuler){p=document.createElement("div");p.style.position="absolute";p.style.top="95px";p.style.left="250px";p.style.width="2000px";p.style.height="30px";p.style.background= -"whiteSmoke";document.body.appendChild(p);var z=document.createElement("div");z.style.position="absolute";z.style.top="125px";z.style.left="220px";z.style.width="30px";z.style.height="1000px";z.style.background="whiteSmoke";document.body.appendChild(z);var A=document.createElement("div");A.style.position="absolute";A.style.top="95px";A.style.left="220px";A.style.width="30px";A.style.height="30px";A.style.background="whiteSmoke";document.body.appendChild(A);this.vRuler=new mxRuler(this.editor.graph, -z,!0);this.hRuler=new mxRuler(this.editor.graph,p,!1)}if("1"==urlParams.styledev){p=document.getElementById("geFooter");null!=p&&(this.styleInput=document.createElement("input"),this.styleInput.setAttribute("type","text"),this.styleInput.style.position="absolute",this.styleInput.style.top="14px",this.styleInput.style.left="2px",this.styleInput.style.width="98%",this.styleInput.style.visibility="hidden",this.styleInput.style.opacity="0.9",mxEvent.addListener(this.styleInput,"change",mxUtils.bind(this, -function(){this.editor.graph.getModel().setStyle(this.editor.graph.getSelectionCell(),this.styleInput.value)})),p.appendChild(this.styleInput),this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(a,b){if(0<this.editor.graph.getSelectionCount()){var c=this.editor.graph.getSelectionCell(),c=this.editor.graph.getModel().getStyle(c);this.styleInput.value=c||"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var H=this.isSelectionAllowed; -this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==this.styleInput?!0:H.apply(this,arguments)}}p=document.getElementById("geInfo");null!=p&&p.parentNode.removeChild(p);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var B=null;mxEvent.addListener(b.container,"dragleave",function(a){b.isEnabled()&&(null!=B&&(B.parentNode.removeChild(B),B=null),a.stopPropagation(),a.preventDefault())});mxEvent.addListener(b.container,"dragover",mxUtils.bind(this,function(a){null== -B&&(!mxClient.IS_IE||10<document.documentMode)&&(B=this.highlightElement(b.container));null!=this.sidebar&&this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()}));mxEvent.addListener(b.container,"drop",mxUtils.bind(this,function(a){null!=B&&(B.parentNode.removeChild(B),B=null);if(b.isEnabled()){var c=mxUtils.convertPoint(b.container,mxEvent.getClientX(a),mxEvent.getClientY(a)),d=b.view.translate,g=b.view.scale,f=c.x/g-d.x,h=c.y/g-d.y;mxEvent.isAltDown(a)&&(h=f=0);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files, -f,h,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(a),null,null,mxEvent.isShiftDown(a));else{var l=0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):null,c=this.extractGraphModelFromEvent(a,null!=this.pages);if(null!=c)b.setSelectionCells(this.importXml(c,f,h,!0));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/html")){var k=a.dataTransfer.getData("text/html"),c=document.createElement("div");c.innerHTML=k;var n=null,d=c.getElementsByTagName("img"); -null!=d&&1==d.length?(k=d[0].getAttribute("src"),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(k)||(n=!0)):(c=c.getElementsByTagName("a"),null!=c&&1==c.length&&(k=c[0].getAttribute("href")));var u=!0,m=mxUtils.bind(this,function(){b.setSelectionCells(this.insertTextAt(k,f,h,!0,n,null,u))});n&&k.length>this.resampleThreshold?this.confirmImageResize(function(a){u=a;m()},mxEvent.isControlDown(a)):m()}else null!=l&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(l)?this.loadImage(decodeURIComponent(l),mxUtils.bind(this, -function(a){var c=Math.max(1,a.width);a=Math.max(1,a.height);var d=this.maxImageSize,d=Math.min(1,Math.min(d/Math.max(1,c)),d/Math.max(1,a));b.setSelectionCell(b.insertVertex(null,null,"",f,h,c*d,a*d,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+l+";"))}),mxUtils.bind(this,function(a){b.setSelectionCells(this.insertTextAt(l,f,h,!0))})):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&b.setSelectionCells(this.insertTextAt(a.dataTransfer.getData("text/plain"), -f,h,!0))}}a.stopPropagation();a.preventDefault()}),!1)}this.initPages();this.editUpdateListener=mxUtils.bind(this,function(a,b){var c=b.getProperty("edit");null!=c&&this.updateEditReferences(c)});this.editor.undoManager.addListener(mxEvent.BEFORE_UNDO,this.editUpdateListener);this.editor.undoManager.addListener(mxEvent.BEFORE_REDO,this.editUpdateListener);"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.getLinkTitle=function(a){var b=Graph.prototype.getLinkTitle.apply(this, +var e=b.addClickHandler;b.addClickHandler=function(a,c,d){var f=c;c=function(a,c){if(null==c){var d=mxEvent.getSource(a);"a"==d.nodeName.toLowerCase()&&(c=d.getAttribute("href"))}null!=c&&b.isCustomLink(c)&&(mxEvent.isTouchEvent(a)||!mxEvent.isPopupTrigger(a))&&b.customLinkClicked(c)&&mxEvent.consume(a);null!=f&&f(a,c)};e.call(this,a,c,d)};k.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(b.view.canvas.ownerSVGElement,null,!0);a.actions.get("print").funct=function(){a.showDialog((new PrintDialog(a)).container, +360,null!=a.pages&&1<a.pages.length?420:360,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var g=b.getGlobalVariable;b.getGlobalVariable=function(b){return"page"==b&&null!=a.currentPage?a.currentPage.getName():"pagenumber"==b?null!=a.currentPage&&null!=a.pages?mxUtils.indexOf(a.pages,a.currentPage)+1:1:g.apply(this,arguments)};var m=b.labelLinkClicked;b.labelLinkClicked=function(a,c,d){var e=c.getAttribute("href");if(null==e||!b.isCustomLink(e)||!mxEvent.isTouchEvent(d)&&mxEvent.isPopupTrigger(d))m.apply(this, +arguments);else{if(!b.isEnabled()||null!=a&&b.isCellLocked(a.cell))b.customLinkClicked(e),b.getRubberband().reset();mxEvent.consume(d)}};this.editor.getOrCreateFilename=function(){var b=a.defaultFilename,c=a.getCurrentFile();null!=c&&(b=null!=c.getTitle()?c.getTitle():b);return b};var v=this.actions.get("print");v.setEnabled(!mxClient.IS_IOS||!navigator.standalone);v.visible=v.isEnabled();if(!this.editor.chromeless||this.editor.editable){var n=function(){window.setTimeout(function(){q.innerHTML=" "; +q.focus();document.execCommand("selectAll",!1,null)},0)};this.keyHandler.bindAction(70,!0,"find");this.keyHandler.bindAction(67,!0,"copyStyle",!0);this.keyHandler.bindAction(86,!0,"pasteStyle",!0);this.keyHandler.bindAction(77,!0,"editGeometry",!0);this.keyHandler.bindAction(88,!0,"insertText",!0);this.keyHandler.bindAction(75,!0,"insertRectangle");this.keyHandler.bindAction(75,!0,"insertEllipse",!0);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(this.altShiftActions[83]="synchronize");mxClient.IS_IE|| +b.container.addEventListener("paste",mxUtils.bind(this,function(a){var b=this.editor.graph;if(!mxEvent.isConsumed(a))try{for(var c=a.clipboardData||a.originalEvent.clipboardData,d=!1,e=0;e<c.types.length;e++)if("text/"===c.types[e].substring(0,5)){d=!0;break}if(!d){var f=c.items;for(index in f){var g=f[index];if("file"===g.kind){if(b.isEditing())this.importFiles([g.getAsFile()],0,0,this.maxImageSize,function(a,c,d,e,f,g){b.insertImage(a,f,g)},function(){},function(a){return"image/"==a.type.substring(0, +6)},function(a){for(var b=0;b<a.length;b++)a[b]()});else{var l=this.editor.graph.getInsertPoint();this.importFiles([g.getAsFile()],l.x,l.y,this.maxImageSize);mxEvent.consume(a)}break}}}}catch(V){}}),!1);var q=document.createElement("div");q.style.position="absolute";q.style.whiteSpace="nowrap";q.style.overflow="hidden";q.style.display="block";q.contentEditable=!0;mxUtils.setOpacity(q,0);q.style.width="1px";q.style.height="1px";q.innerHTML=" ";var H=!1;this.keyHandler.bindControlKey(88,null); +this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(a){var c=mxEvent.getSource(a);null==b.container||!b.isEnabled()||b.isMouseDown||b.isEditing()||null!=this.dialog||"INPUT"==c.nodeName||"TEXTAREA"==c.nodeName||!(224==a.keyCode||!mxClient.IS_MAC&&17==a.keyCode||mxClient.IS_MAC&&91==a.keyCode)||H||(q.style.left=b.container.scrollLeft+10+"px",q.style.top=b.container.scrollTop+10+"px",b.container.appendChild(q), +H=!0,mxClient.IS_QUIRKS?window.setTimeout(function(){q.focus();document.execCommand("selectAll",!1,null)},0):(q.focus(),document.execCommand("selectAll",!1,null)))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(a){var c=a.keyCode;window.setTimeout(mxUtils.bind(this,function(){!H||224!=c&&17!=c&&91!=c||(H=!1,b.isEditing()||null!=this.dialog||null==b.container||b.container.focus(),q.parentNode.removeChild(q),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(q, +"copy",mxUtils.bind(this,function(a){b.isEnabled()&&(mxClipboard.copy(b),this.copyCells(q),n())}));mxEvent.addListener(q,"cut",mxUtils.bind(this,function(a){b.isEnabled()&&(mxClipboard.copy(b),this.copyCells(q,!0),n())}));mxEvent.addListener(q,"paste",mxUtils.bind(this,function(a){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&(q.innerHTML=" ",q.focus(),window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(a,q);q.innerHTML=" "}),0))}),!0);var F=this.isSelectionAllowed;this.isSelectionAllowed= +function(a){return mxEvent.getSource(a)==q?!0:F.apply(this,arguments)}}this.spinner=this.createSpinner(document.body.clientWidth/2-2,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,24);Graph.fileSupport&&this.editor.graph.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,function(a){var b=this.editor.graph,c=b.cellEditor.text2,d=null;null!=c&&(mxEvent.addListener(c,"dragleave",function(a){null!=d&&(d.parentNode.removeChild(d),d=null);a.stopPropagation();a.preventDefault()}), +mxEvent.addListener(c,"dragover",mxUtils.bind(this,function(a){null==d&&(!mxClient.IS_IE||10<document.documentMode)&&(d=this.highlightElement(c));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(c,"drop",mxUtils.bind(this,function(a){null!=d&&(d.parentNode.removeChild(d),d=null);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,function(a,c,d,e,f,g){b.insertImage(a,f,g)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b= +0;b<a.length;b++)a[b]()},mxEvent.isControlDown(a));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")){var c=a.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(c)?this.loadImage(decodeURIComponent(c),mxUtils.bind(this,function(a){var d=Math.max(1,a.width);a=Math.max(1,a.height);var e=this.maxImageSize,e=Math.min(1,Math.min(e/Math.max(1,d)),e/Math.max(1,a));b.insertImage(decodeURIComponent(c),d*e,a*e)})):document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/plain"))}else 0<= +mxUtils.indexOf(a.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/plain"));a.stopPropagation();a.preventDefault()})))}));if("1"==urlParams.ruler&&"undefined"!==typeof mxRuler){v=document.createElement("div");v.style.position="absolute";v.style.top="95px";v.style.left="250px";v.style.width="2000px";v.style.height="30px";v.style.background= +"whiteSmoke";document.body.appendChild(v);var D=document.createElement("div");D.style.position="absolute";D.style.top="125px";D.style.left="220px";D.style.width="30px";D.style.height="1000px";D.style.background="whiteSmoke";document.body.appendChild(D);var E=document.createElement("div");E.style.position="absolute";E.style.top="95px";E.style.left="220px";E.style.width="30px";E.style.height="30px";E.style.background="whiteSmoke";document.body.appendChild(E);this.vRuler=new mxRuler(this.editor.graph, +D,!0);this.hRuler=new mxRuler(this.editor.graph,v,!1)}if("1"==urlParams.styledev){v=document.getElementById("geFooter");null!=v&&(this.styleInput=document.createElement("input"),this.styleInput.setAttribute("type","text"),this.styleInput.style.position="absolute",this.styleInput.style.top="14px",this.styleInput.style.left="2px",this.styleInput.style.width="98%",this.styleInput.style.visibility="hidden",this.styleInput.style.opacity="0.9",mxEvent.addListener(this.styleInput,"change",mxUtils.bind(this, +function(){this.editor.graph.getModel().setStyle(this.editor.graph.getSelectionCell(),this.styleInput.value)})),v.appendChild(this.styleInput),this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(a,b){if(0<this.editor.graph.getSelectionCount()){var c=this.editor.graph.getSelectionCell(),c=this.editor.graph.getModel().getStyle(c);this.styleInput.value=c||"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var I=this.isSelectionAllowed; +this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==this.styleInput?!0:I.apply(this,arguments)}}v=document.getElementById("geInfo");null!=v&&v.parentNode.removeChild(v);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var C=null;mxEvent.addListener(b.container,"dragleave",function(a){b.isEnabled()&&(null!=C&&(C.parentNode.removeChild(C),C=null),a.stopPropagation(),a.preventDefault())});mxEvent.addListener(b.container,"dragover",mxUtils.bind(this,function(a){null== +C&&(!mxClient.IS_IE||10<document.documentMode)&&(C=this.highlightElement(b.container));null!=this.sidebar&&this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()}));mxEvent.addListener(b.container,"drop",mxUtils.bind(this,function(a){null!=C&&(C.parentNode.removeChild(C),C=null);if(b.isEnabled()){var c=mxUtils.convertPoint(b.container,mxEvent.getClientX(a),mxEvent.getClientY(a)),d=b.view.translate,e=b.view.scale,f=c.x/e-d.x,g=c.y/e-d.y;mxEvent.isAltDown(a)&&(g=f=0);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files, +f,g,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(a),null,null,mxEvent.isShiftDown(a));else{var l=0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):null,c=this.extractGraphModelFromEvent(a,null!=this.pages);if(null!=c)b.setSelectionCells(this.importXml(c,f,g,!0));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/html")){var k=a.dataTransfer.getData("text/html"),c=document.createElement("div");c.innerHTML=k;var m=null,d=c.getElementsByTagName("img"); +null!=d&&1==d.length?(k=d[0].getAttribute("src"),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(k)||(m=!0)):(c=c.getElementsByTagName("a"),null!=c&&1==c.length&&(k=c[0].getAttribute("href")));var v=!0,p=mxUtils.bind(this,function(){b.setSelectionCells(this.insertTextAt(k,f,g,!0,m,null,v))});m&&k.length>this.resampleThreshold?this.confirmImageResize(function(a){v=a;p()},mxEvent.isControlDown(a)):p()}else null!=l&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(l)?this.loadImage(decodeURIComponent(l),mxUtils.bind(this, +function(a){var c=Math.max(1,a.width);a=Math.max(1,a.height);var d=this.maxImageSize,d=Math.min(1,Math.min(d/Math.max(1,c)),d/Math.max(1,a));b.setSelectionCell(b.insertVertex(null,null,"",f,g,c*d,a*d,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+l+";"))}),mxUtils.bind(this,function(a){b.setSelectionCells(this.insertTextAt(l,f,g,!0))})):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&b.setSelectionCells(this.insertTextAt(a.dataTransfer.getData("text/plain"), +f,g,!0))}}a.stopPropagation();a.preventDefault()}),!1)}this.initPages();this.editUpdateListener=mxUtils.bind(this,function(a,b){var c=b.getProperty("edit");null!=c&&this.updateEditReferences(c)});this.editor.undoManager.addListener(mxEvent.BEFORE_UNDO,this.editUpdateListener);this.editor.undoManager.addListener(mxEvent.BEFORE_REDO,this.editUpdateListener);"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.getLinkTitle=function(a){var b=Graph.prototype.getLinkTitle.apply(this, arguments);if("data:page/id,"==a.substring(0,13)){var c=a.indexOf(",");0<c&&(b=this.getPageById(a.substring(c+1)),b=null!=b?b.getName():mxResources.get("pageNotFound"))}else"data:"==a.substring(0,5)&&(b=mxResources.get("action"));return b};EditorUi.prototype.handleCustomLink=function(a){if("data:page/id,"==a.substring(0,13)){var b=a.indexOf(",");if(a=this.getPageById(a.substring(b+1)))this.selectPage(a);else throw Error(mxResources.get("pageNotFound")||"Page not found");}else this.editor.graph.handleCustomLink(a)}; EditorUi.prototype.isSettingsEnabled=function(){return"undefined"!==typeof window.mxSettings&&(isLocalStorage||mxClient.IS_CHROMEAPP)};EditorUi.prototype.installSettings=function(){if(this.isSettingsEnabled()){ColorDialog.recentColors=mxSettings.getRecentColors();this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]));this.editor.graph.connectionHandler.setCreateTarget(mxSettings.isCreateTarget());this.fireEvent(new mxEventObject("copyConnectChanged"));this.addListener("copyConnectChanged", mxUtils.bind(this,function(a,b){mxSettings.setCreateTarget(this.editor.graph.connectionHandler.isCreateTarget());mxSettings.save()}));this.editor.graph.pageFormat=mxSettings.getPageFormat();this.addListener("pageFormatChanged",mxUtils.bind(this,function(a,b){mxSettings.setPageFormat(this.editor.graph.pageFormat);mxSettings.save()}));this.editor.graph.view.gridColor=mxSettings.getGridColor();this.addListener("gridColorChanged",mxUtils.bind(this,function(a,b){mxSettings.setGridColor(this.editor.graph.view.gridColor); mxSettings.save()}));if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)this.editor.addListener("autosaveChanged",mxUtils.bind(this,function(a,b){mxSettings.setAutosave(this.editor.autosave);mxSettings.save()})),this.editor.autosave=mxSettings.getAutosave();null!=this.sidebar&&this.sidebar.showPalette("search",mxSettings.settings.search);this.editor.chromeless&&!this.editor.editable||null==this.sidebar||!(mxSettings.settings.isNew||8>=parseInt(mxSettings.settings.version||0))||(this.toggleScratchpad(), -mxSettings.save());this.addListener("formatWidthChanged",function(){mxSettings.setFormatWidth(this.formatWidth);mxSettings.save()})}};EditorUi.prototype.copyCells=function(a,b){var c=this.editor.graph;if(c.isSelectionEmpty())a.innerHTML="";else{var d=mxUtils.sortCells(c.model.getTopmostCells(c.getSelectionCells())),g=mxUtils.getXml(this.editor.graph.encodeCells(d));mxUtils.setTextContent(a,encodeURIComponent(g));b?(c.removeCells(d,!1),c.lastPasteXml=null):(c.lastPasteXml=g,c.pasteCounter=0);a.focus(); +mxSettings.save());this.addListener("formatWidthChanged",function(){mxSettings.setFormatWidth(this.formatWidth);mxSettings.save()})}};EditorUi.prototype.copyCells=function(a,b){var c=this.editor.graph;if(c.isSelectionEmpty())a.innerHTML="";else{var d=mxUtils.sortCells(c.model.getTopmostCells(c.getSelectionCells())),e=mxUtils.getXml(this.editor.graph.encodeCells(d));mxUtils.setTextContent(a,encodeURIComponent(e));b?(c.removeCells(d,!1),c.lastPasteXml=null):(c.lastPasteXml=e,c.pasteCounter=0);a.focus(); document.execCommand("selectAll",!1,null)}};EditorUi.prototype.pasteCells=function(a,b){if(!mxEvent.isConsumed(a)){var c=b.getElementsByTagName("span");if(null!=c&&0<c.length&&"application/vnd.lucid.chart.objects"===c[0].getAttribute("data-lucid-type")){var d=c[0].getAttribute("data-lucid-content");null!=d&&0<d.length&&(this.convertLucidChart(d,mxUtils.bind(this,function(a){this.editor.graph.setSelectionCells(this.importXml(a,0,0))}),mxUtils.bind(this,function(a){this.handleError(a)})),mxEvent.consume(a))}else{var d= -this.editor.graph,g=mxUtils.trim(mxClient.IS_QUIRKS||8==document.documentMode?mxUtils.getTextContent(b):b.textContent),f=!1;try{var h=g.lastIndexOf("%3E");0<=h&&h<g.length-3&&(g=g.substring(0,h+3))}catch(u){}try{var c=b.getElementsByTagName("span"),k=null!=c&&0<c.length?mxUtils.trim(decodeURIComponent(c[0].textContent)):decodeURIComponent(g);this.isCompatibleString(k)&&(f=!0,g=k)}catch(u){}d.lastPasteXml==g?d.pasteCounter++:(d.lastPasteXml=g,d.pasteCounter=0);c=d.pasteCounter*d.gridSize;if(null!= -g&&0<g.length&&(f||this.isCompatibleString(g)?d.setSelectionCells(this.importXml(g,c,c)):(f=d.getInsertPoint(),d.isMouseInsertPoint()&&(c=0,d.lastPasteXml==g&&0<d.pasteCounter&&d.pasteCounter--),d.setSelectionCells(this.insertTextAt(g,f.x+c,f.y+c,!0))),!d.isSelectionEmpty())){d.scrollCellToVisible(d.getSelectionCell());null!=this.hoverIcons&&this.hoverIcons.update(d.view.getState(d.getSelectionCell()));try{mxEvent.consume(a)}catch(u){}}}}};EditorUi.prototype.addFileDropHandler=function(a){if(Graph.fileSupport)for(var b= +this.editor.graph,e=mxUtils.trim(mxClient.IS_QUIRKS||8==document.documentMode?mxUtils.getTextContent(b):b.textContent),f=!1;try{var g=e.lastIndexOf("%3E");0<=g&&g<e.length-3&&(e=e.substring(0,g+3))}catch(y){}try{var c=b.getElementsByTagName("span"),l=null!=c&&0<c.length?mxUtils.trim(decodeURIComponent(c[0].textContent)):decodeURIComponent(e);this.isCompatibleString(l)&&(f=!0,e=l)}catch(y){}d.lastPasteXml==e?d.pasteCounter++:(d.lastPasteXml=e,d.pasteCounter=0);c=d.pasteCounter*d.gridSize;if(null!= +e&&0<e.length&&(f||this.isCompatibleString(e)?d.setSelectionCells(this.importXml(e,c,c)):(f=d.getInsertPoint(),d.isMouseInsertPoint()&&(c=0,d.lastPasteXml==e&&0<d.pasteCounter&&d.pasteCounter--),d.setSelectionCells(this.insertTextAt(e,f.x+c,f.y+c,!0))),!d.isSelectionEmpty())){d.scrollCellToVisible(d.getSelectionCell());null!=this.hoverIcons&&this.hoverIcons.update(d.view.getState(d.getSelectionCell()));try{mxEvent.consume(a)}catch(y){}}}}};EditorUi.prototype.addFileDropHandler=function(a){if(Graph.fileSupport)for(var b= null,c=0;c<a.length;c++)mxEvent.addListener(a[c],"dragleave",function(a){null!=b&&(b.parentNode.removeChild(b),b=null);a.stopPropagation();a.preventDefault()}),mxEvent.addListener(a[c],"dragover",mxUtils.bind(this,function(a){(this.editor.graph.isEnabled()||"1"!=urlParams.embed)&&null==b&&(!mxClient.IS_IE||10<document.documentMode&&12>document.documentMode)&&(b=this.highlightElement());a.stopPropagation();a.preventDefault()})),mxEvent.addListener(a[c],"drop",mxUtils.bind(this,function(a){null!=b&& (b.parentNode.removeChild(b),b=null);if(this.editor.graph.isEnabled()||"1"!=urlParams.embed)if(0<a.dataTransfer.files.length)this.hideDialog(),"1"==urlParams.embed?this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,null,null,null,null,!mxEvent.isControlDown(a)&&!mxEvent.isShiftDown(a)):this.openFiles(a.dataTransfer.files,!0);else{var c=this.extractGraphModelFromEvent(a);if(null==c){var d=null!=a.dataTransfer?a.dataTransfer:a.clipboardData;null!=d&&(10==document.documentMode||11==document.documentMode? c=d.getData("Text"):(c=null,c=0<=mxUtils.indexOf(d.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):0<=mxUtils.indexOf(d.types,"text/html")?d.getData("text/html"):null,null!=c&&0<c.length?(d=document.createElement("div"),d.innerHTML=c,d=d.getElementsByTagName("img"),0<d.length&&(c=d[0].getAttribute("src"))):0<=mxUtils.indexOf(d.types,"text/plain")&&(c=d.getData("text/plain"))),null!=c&&("data:image/png;base64,"==c.substring(0,22)?(c=this.extractGraphModelFromPng(c),null!=c&&0<c.length&& -this.openLocalFile(c,null,!0)):!this.isOffline()&&this.isRemoteFileFormat(c)?(new mxXmlRequest(OPEN_URL,"format=xml&data="+encodeURIComponent(c))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()&&this.openLocalFile(a.getText(),null,!0)})):/^https?:\/\//.test(c)&&(null==this.getCurrentFile()?window.location.hash="#U"+encodeURIComponent(c):window.openWindow((mxClient.IS_CHROMEAPP?"https://www.draw.io/":"https://"+location.host+"/")+window.location.search+"#U"+encodeURIComponent(c)))))}else this.openLocalFile(c, -null,!0)}a.stopPropagation();a.preventDefault()}))};EditorUi.prototype.highlightElement=function(a){var b=0,c=0,d,g;if(null==a){g=document.body;var f=document.documentElement;d=(g.clientWidth||f.clientWidth)-3;g=Math.max(g.clientHeight||0,f.clientHeight)-3}else b=a.offsetTop,c=a.offsetLeft,d=a.clientWidth,g=a.clientHeight;f=document.createElement("div");f.style.zIndex=mxPopupMenu.prototype.zIndex+2;f.style.border="3px dotted rgb(254, 137, 12)";f.style.pointerEvents="none";f.style.position="absolute"; -f.style.top=b+"px";f.style.left=c+"px";f.style.width=Math.max(0,d-3)+"px";f.style.height=Math.max(0,g-3)+"px";null!=a&&a.parentNode==this.editor.graph.container?this.editor.graph.container.appendChild(f):document.body.appendChild(f);return f};EditorUi.prototype.stringToCells=function(a){a=mxUtils.parseXml(a);var b=this.editor.extractGraphModel(a.documentElement);a=[];if(null!=b){var c=new mxCodec(b.ownerDocument),d=new mxGraphModel;c.decode(b,d);b=d.getChildAt(d.getRoot(),0);for(c=0;c<d.getChildCount(b);c++)a.push(d.getChildAt(b, -c))}return a};EditorUi.prototype.openFiles=function(a,b){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var c=0;c<a.length;c++)mxUtils.bind(this,function(a){var c=new FileReader;c.onload=mxUtils.bind(this,function(c){try{var d=c.target.result,g=a.name;if(null!=g&&0<g.length){!this.useCanvasForExport&&/(\.png)$/i.test(g)&&(g=g.substring(0,g.length-4)+".xml");var f=mxUtils.bind(this,function(a){g=0<=g.lastIndexOf(".")?g.substring(0,g.lastIndexOf("."))+".xml":g+".xml";if("<mxlibrary"== -a.substring(0,10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,a,g))}catch(F){this.handleError(F,mxResources.get("errorLoadingFile"))}}else this.openLocalFile(a,g,b)});if(/(\.v(dx|sdx?))($|\?)/i.test(g)||/(\.vs(x|sx?))($|\?)/i.test(g))this.importVisio(a,mxUtils.bind(this,function(a){this.spinner.stop();f(a)}));else if(/(\.*<graphml )/.test(d))this.importGraphML(d,mxUtils.bind(this,function(a){this.spinner.stop(); -f(a)}));else if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,g))this.parseFile(a,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?f(a.responseText):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))}));else if(this.isLucidChartData(d))/(\.json)$/i.test(g)&&(g=g.substring(0,g.length-5)+".xml"),this.convertLucidChart(d, -mxUtils.bind(this,function(a){this.spinner.stop();this.openLocalFile(a,g,b)}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));else if("<mxlibrary"==c.target.result.substring(0,10)){this.spinner.stop();null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,c.target.result,a.name))}catch(x){this.handleError(x,mxResources.get("errorLoadingFile"))}}else"image/png"==a.type.substring(0, -9)&&(d=this.extractGraphModelFromPng(d)),this.spinner.stop(),this.openLocalFile(d,g,b)}}catch(x){this.handleError(x)}});c.onerror=mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a);window.openFile=null});"image"===a.type.substring(0,5)&&"image/svg"!==a.type.substring(0,9)?c.readAsDataURL(a):c.readAsText(a)})(a[c])};EditorUi.prototype.openLocalFile=function(a,b,c){var d=this.getCurrentFile(),g=mxUtils.bind(this,function(){window.openFile=null;if(null==b&&null!=this.getCurrentFile()&& -this.isDiagramEmpty()){var d=mxUtils.parseXml(a);null!=d&&(this.editor.setGraphXml(d.documentElement),this.editor.graph.selectAll())}else this.fileLoaded(new LocalFile(this,a,b||this.defaultFilename,c))});if(null!=a&&0<a.length)null==d||!d.isModified()&&(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)?g():(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&null!=d&&d.isModified()?this.confirm(mxResources.get("allChangesLost"),null,g,mxResources.get("cancel"),mxResources.get("discardChanges")):(window.openFile= -new OpenFile(function(){window.openFile=null}),window.openFile.setData(a,b),window.openWindow(this.getUrl(),null,mxUtils.bind(this,function(){null!=d&&d.isModified()?this.confirm(mxResources.get("allChangesLost"),null,g,mxResources.get("cancel"),mxResources.get("discardChanges")):g()})));else throw Error(mxResources.get("notADiagramFile"));};EditorUi.prototype.getBasenames=function(){var a={};if(null!=this.pages)for(var b=0;b<this.pages.length;b++)this.updatePageRoot(this.pages[b]),this.addBasenamesForCell(this.pages[b].root, -a);else this.addBasenamesForCell(this.editor.graph.model.getRoot(),a);var b=[],c;for(c in a)b.push(c);return b};EditorUi.prototype.addBasenamesForCell=function(a,b){function c(a){if(null!=a){var c=a.lastIndexOf(".");0<c&&(a=a.substring(c+1,a.length));null==b[a]&&(b[a]=!0)}}var d=this.editor.graph,g=d.getCellStyle(a);c(mxStencilRegistry.getBasenameForStencil(g[mxConstants.STYLE_SHAPE]));d.model.isEdge(a)&&(c(mxMarker.getPackageForType(g[mxConstants.STYLE_STARTARROW])),c(mxMarker.getPackageForType(g[mxConstants.STYLE_ENDARROW]))); -for(var g=d.model.getChildCount(a),f=0;f<g;f++)this.addBasenamesForCell(d.model.getChildAt(a,f),b)};EditorUi.prototype.setGraphEnabled=function(a){this.diagramContainer.style.visibility=a?"":"hidden";this.formatContainer.style.visibility=a?"":"hidden";this.sidebarFooterContainer.style.display=a?"":"none";this.sidebarContainer.style.display=a?"":"none";this.hsplit.style.display=a?"":"none";this.editor.graph.setEnabled(a);null!=this.tabContainer&&(this.tabContainer.style.visibility=a?"":"hidden");a|| +this.openLocalFile(c,null,!0)):!this.isOffline()&&this.isRemoteFileFormat(c)?(new mxXmlRequest(OPEN_URL,"format=xml&data="+encodeURIComponent(c))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()&&this.openLocalFile(a.getText(),null,!0)})):/^https?:\/\//.test(c)&&(null==this.getCurrentFile()?window.location.hash="#U"+encodeURIComponent(c):window.openWindow((mxClient.IS_CHROMEAPP?EditorUi.drawHost+"/":"https://"+location.host+"/")+window.location.search+"#U"+encodeURIComponent(c)))))}else this.openLocalFile(c, +null,!0)}a.stopPropagation();a.preventDefault()}))};EditorUi.prototype.highlightElement=function(a){var b=0,c=0,d,e;if(null==a){e=document.body;var f=document.documentElement;d=(e.clientWidth||f.clientWidth)-3;e=Math.max(e.clientHeight||0,f.clientHeight)-3}else b=a.offsetTop,c=a.offsetLeft,d=a.clientWidth,e=a.clientHeight;f=document.createElement("div");f.style.zIndex=mxPopupMenu.prototype.zIndex+2;f.style.border="3px dotted rgb(254, 137, 12)";f.style.pointerEvents="none";f.style.position="absolute"; +f.style.top=b+"px";f.style.left=c+"px";f.style.width=Math.max(0,d-3)+"px";f.style.height=Math.max(0,e-3)+"px";null!=a&&a.parentNode==this.editor.graph.container?this.editor.graph.container.appendChild(f):document.body.appendChild(f);return f};EditorUi.prototype.stringToCells=function(a){a=mxUtils.parseXml(a);var b=this.editor.extractGraphModel(a.documentElement);a=[];if(null!=b){var c=new mxCodec(b.ownerDocument),d=new mxGraphModel;c.decode(b,d);b=d.getChildAt(d.getRoot(),0);for(c=0;c<d.getChildCount(b);c++)a.push(d.getChildAt(b, +c))}return a};EditorUi.prototype.openFiles=function(a,b){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var c=0;c<a.length;c++)mxUtils.bind(this,function(a){var c=new FileReader;c.onload=mxUtils.bind(this,function(c){try{var d=c.target.result,e=a.name;if(null!=e&&0<e.length){!this.useCanvasForExport&&/(\.png)$/i.test(e)&&(e=e.substring(0,e.length-4)+".xml");var f=mxUtils.bind(this,function(a){e=0<=e.lastIndexOf(".")?e.substring(0,e.lastIndexOf("."))+".xml":e+".xml";if("<mxlibrary"== +a.substring(0,10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,a,e))}catch(H){this.handleError(H,mxResources.get("errorLoadingFile"))}}else this.openLocalFile(a,e,b)});if(/(\.v(dx|sdx?))($|\?)/i.test(e)||/(\.vs(x|sx?))($|\?)/i.test(e))this.importVisio(a,mxUtils.bind(this,function(a){this.spinner.stop();f(a)}));else if(/(\.*<graphml )/.test(d))this.importGraphML(d,mxUtils.bind(this,function(a){this.spinner.stop(); +f(a)}));else if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,e))this.parseFile(a,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?f(a.responseText):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))}));else if(this.isLucidChartData(d))/(\.json)$/i.test(e)&&(e=e.substring(0,e.length-5)+".xml"),this.convertLucidChart(d, +mxUtils.bind(this,function(a){this.spinner.stop();this.openLocalFile(a,e,b)}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));else if("<mxlibrary"==c.target.result.substring(0,10)){this.spinner.stop();null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,c.target.result,a.name))}catch(B){this.handleError(B,mxResources.get("errorLoadingFile"))}}else"image/png"==a.type.substring(0, +9)&&(d=this.extractGraphModelFromPng(d)),this.spinner.stop(),this.openLocalFile(d,e,b)}}catch(B){this.handleError(B)}});c.onerror=mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a);window.openFile=null});"image"===a.type.substring(0,5)&&"image/svg"!==a.type.substring(0,9)?c.readAsDataURL(a):c.readAsText(a)})(a[c])};EditorUi.prototype.openLocalFile=function(a,b,c){var d=this.getCurrentFile(),e=mxUtils.bind(this,function(){window.openFile=null;if(null==b&&null!=this.getCurrentFile()&& +this.isDiagramEmpty()){var d=mxUtils.parseXml(a);null!=d&&(this.editor.setGraphXml(d.documentElement),this.editor.graph.selectAll())}else this.fileLoaded(new LocalFile(this,a,b||this.defaultFilename,c))});if(null!=a&&0<a.length)null==d||!d.isModified()&&(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)?e():(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&null!=d&&d.isModified()?this.confirm(mxResources.get("allChangesLost"),null,e,mxResources.get("cancel"),mxResources.get("discardChanges")):(window.openFile= +new OpenFile(function(){window.openFile=null}),window.openFile.setData(a,b),window.openWindow(this.getUrl(),null,mxUtils.bind(this,function(){null!=d&&d.isModified()?this.confirm(mxResources.get("allChangesLost"),null,e,mxResources.get("cancel"),mxResources.get("discardChanges")):e()})));else throw Error(mxResources.get("notADiagramFile"));};EditorUi.prototype.getBasenames=function(){var a={};if(null!=this.pages)for(var b=0;b<this.pages.length;b++)this.updatePageRoot(this.pages[b]),this.addBasenamesForCell(this.pages[b].root, +a);else this.addBasenamesForCell(this.editor.graph.model.getRoot(),a);var b=[],c;for(c in a)b.push(c);return b};EditorUi.prototype.addBasenamesForCell=function(a,b){function c(a){if(null!=a){var c=a.lastIndexOf(".");0<c&&(a=a.substring(c+1,a.length));null==b[a]&&(b[a]=!0)}}var d=this.editor.graph,e=d.getCellStyle(a);c(mxStencilRegistry.getBasenameForStencil(e[mxConstants.STYLE_SHAPE]));d.model.isEdge(a)&&(c(mxMarker.getPackageForType(e[mxConstants.STYLE_STARTARROW])),c(mxMarker.getPackageForType(e[mxConstants.STYLE_ENDARROW]))); +for(var e=d.model.getChildCount(a),f=0;f<e;f++)this.addBasenamesForCell(d.model.getChildAt(a,f),b)};EditorUi.prototype.setGraphEnabled=function(a){this.diagramContainer.style.visibility=a?"":"hidden";this.formatContainer.style.visibility=a?"":"hidden";this.sidebarFooterContainer.style.display=a?"":"none";this.sidebarContainer.style.display=a?"":"none";this.hsplit.style.display=a?"":"none";this.editor.graph.setEnabled(a);null!=this.tabContainer&&(this.tabContainer.style.visibility=a?"":"hidden");a|| (null!=this.actions.outlineWindow&&this.actions.outlineWindow.window.setVisible(!1),null!=this.actions.layersWindow&&this.actions.layersWindow.window.setVisible(!1),null!=this.menus.tagsWindow&&this.menus.tagsWindow.window.setVisible(!1),null!=this.menus.findWindow&&this.menus.findWindow.window.setVisible(!1))};EditorUi.prototype.initializeEmbedMode=function(){this.setGraphEnabled(!1);(window.opener||window.parent)!=window&&("1"!=urlParams.spin||this.spinner.spin(document.body,mxResources.get("loading")))&& this.installMessageHandler(mxUtils.bind(this,function(a,b,c){this.spinner.stop();this.addEmbedButtons();this.setGraphEnabled(!0);null!=a&&0<a.length?(this.setFileData(a),this.editor.isChromelessView()?this.editor.graph.isLightboxView()&&this.lightboxFit():this.showLayersDialog(),this.chromelessResize&&this.chromelessResize()):(this.editor.graph.model.clear(),this.editor.fireEvent(new mxEventObject("resetGraphView")));this.editor.undoManager.clear();this.editor.modified=null!=c?c:!1;this.updateUi(); window.self!==window.top&&window.focus();null!=this.format&&this.format.refresh()}))};EditorUi.prototype.showLayersDialog=function(){1<this.editor.graph.getModel().getChildCount(this.editor.graph.getModel().getRoot())&&(null==this.actions.layersWindow?this.actions.get("layers").funct():this.actions.layersWindow.window.setVisible(!0))};EditorUi.prototype.getPublicUrl=function(a,b){null!=a?a.getPublicUrl(b):b(null)};EditorUi.prototype.createLoadMessage=function(a){var b=this.editor.graph;return{event:a, -pageVisible:b.pageVisible,translate:b.view.translate,bounds:b.getGraphBounds(),currentPage:this.getSelectedPageIndex(),scale:b.view.scale,page:b.view.getBackgroundPageBounds()}};EditorUi.prototype.installMessageHandler=function(a){var b=null,c=!1,d=!1,f=null,g=mxUtils.bind(this,function(a,b){this.editor.modified&&"0"!=urlParams.modified?null!=urlParams.modified&&this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(urlParams.modified))):this.editor.setStatus("")});this.editor.graph.model.addListener(mxEvent.CHANGE, -g);mxEvent.addListener(window,"message",mxUtils.bind(this,function(g){if(g.source==(window.opener||window.parent)){var k=g.data,l=mxUtils.bind(this,function(a){if(null!=a&&"function"===typeof a.charAt&&"<"!=a.charAt(0))try{"data:image/png;base64,"==a.substring(0,22)?a=this.extractGraphModelFromPng(a):"data:image/svg+xml;base64,"==a.substring(0,26)?a=atob(a.substring(26)):"data:image/svg+xml;utf8,"==a.substring(0,24)&&(a=a.substring(24)),null!=a&&("%"==a.charAt(0)?a=decodeURIComponent(a):"<"!=a.charAt(0)&& -(a=this.editor.graph.decompress(a)))}catch(M){}return a});if("json"==urlParams.proto){try{k=JSON.parse(k)}catch(I){k=null}if(null==k)return;if("dialog"==k.action){this.showError(null!=k.titleKey?mxResources.get(k.titleKey):k.title,null!=k.messageKey?mxResources.get(k.messageKey):k.message,null!=k.buttonKey?mxResources.get(k.buttonKey):k.button);null!=k.modified&&(this.editor.modified=k.modified);return}if("prompt"==k.action){this.spinner.stop();l=new FilenameDialog(this,k.defaultValue||"",null!=k.okKey? -mxResources.get(k.okKey):null,function(a){null!=a&&h.postMessage(JSON.stringify({event:"prompt",value:a,message:k}),"*")},null!=k.titleKey?mxResources.get(k.titleKey):k.title);this.showDialog(l.container,300,80,!0,!1);l.init();return}if("draft"==k.action){var n=l(k.xml);this.spinner.stop();l=new DraftDialog(this,mxResources.get("draftFound",[k.name||this.defaultFilename]),n,mxUtils.bind(this,function(){this.hideDialog();h.postMessage(JSON.stringify({event:"draft",result:"edit",message:k}),"*")}), -mxUtils.bind(this,function(){this.hideDialog();h.postMessage(JSON.stringify({event:"draft",result:"discard",message:k}),"*")}),k.editKey?mxResources.get(k.editKey):null,k.discardKey?mxResources.get(k.discardKey):null,k.ignore?mxUtils.bind(this,function(){this.hideDialog();h.postMessage(JSON.stringify({event:"draft",result:"ignore",message:k}),"*")}):null);this.showDialog(l.container,640,480,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));try{l.init()}catch(I){h.postMessage(JSON.stringify({event:"draft", -error:I.toString(),message:k}),"*")}return}if("template"==k.action){this.spinner.stop();l=1==k.enableRecent;n=1==k.enableSearch;l=new NewDialog(this,!1,null!=k.callback,mxUtils.bind(this,function(b,c){b=b||this.emptyDiagramXml;null!=k.callback?h.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:c}),"*"):(a(b,g,b!=this.emptyDiagramXml),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,l?mxUtils.bind(this,function(a){this.recentReadyCallback= -a;h.postMessage(JSON.stringify({event:"recentDocs"}),"*")}):null,n?mxUtils.bind(this,function(a,b){this.searchReadyCallback=b;h.postMessage(JSON.stringify({event:"searchDocs",searchStr:a}),"*")}):null,function(a,b,c){h.postMessage(JSON.stringify({event:"template",docUrl:a,info:b,name:c}),"*")});this.showDialog(l.container,620,440,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));l.init();return}if("searchDocsList"==k.action)this.searchReadyCallback(k.list,k.errorMsg);else if("recentDocsList"== -k.action)this.recentReadyCallback(k.list,k.errorMsg);else{if("textContent"==k.action){this.editor.graph.setEnabled(!1);var m=this.editor.graph,l="";if(null!=this.pages)for(n=0;n<this.pages.length;n++){var p=m;this.currentPage!=this.pages[n]&&(p=this.createTemporaryGraph(m.getStylesheet()),p.model.setRoot(this.pages[n].root));l+=this.pages[n].getName()+" "+p.getIndexableText()+" "}else l=m.getIndexableText();this.editor.graph.setEnabled(!0);h.postMessage(JSON.stringify({event:"textContent",data:l, -message:k}),"*");return}if("status"==k.action){null!=k.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(k.messageKey))):null!=k.message&&this.editor.setStatus(mxUtils.htmlEntities(k.message));null!=k.modified&&(this.editor.modified=k.modified);return}if("spinner"==k.action){var q=null!=k.messageKey?mxResources.get(k.messageKey):k.message;null==k.show||k.show?this.spinner.spin(document.body,q):this.spinner.stop();return}if("export"==k.action){if("png"==k.format||"xmlpng"==k.format){if(null== -k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin)){var w=null!=k.xml?k.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var m=this.editor.graph,v=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();var b=this.createLoadMessage("export");b.format=k.format;b.message=k;b.data=a;b.xml=encodeURIComponent(w);h.postMessage(JSON.stringify(b),"*")}),t=mxUtils.bind(this,function(a){null==a&&(a=Editor.blankImage); -"xmlpng"==k.format&&(a=this.writeGraphModelToPng(a,"zTXt","mxGraphModel",atob(this.editor.graph.compress(w))));m!=this.editor.graph&&m.container.parentNode.removeChild(m.container);v(a)});if(this.isExportToCanvas()){if(null!=this.pages&&this.currentPage!=this.pages[0]){var m=this.createTemporaryGraph(m.getStylesheet()),y=m.getGlobalVariable,C=this.pages[0];m.getGlobalVariable=function(a){return"page"==a?C.getName():"pagenumber"==a?1:y.apply(this,arguments)};document.body.appendChild(m.container); -m.model.setRoot(C.root)}this.exportToCanvas(mxUtils.bind(this,function(a){t(a.toDataURL("image/png"))}),null,null,null,mxUtils.bind(this,function(){t(null)}),null,null,null,null,null,null,m)}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==k.format?"1":"0")+"&base64=1&xml="+encodeURIComponent(encodeURIComponent(w)))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()?v("data:image/png;base64,"+a.getText()):t(null)}),mxUtils.bind(this,function(){t(null)}))}}else{null!= -k.xml&&0<k.xml.length&&this.setFileData(k.xml);q=this.createLoadMessage("export");if("html2"==k.format||"html"==k.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length))l=this.getXmlFileData(),q.xml=mxUtils.getXml(l),q.data=this.getFileData(null,null,!0,null,null,null,l),q.format=k.format;else if("html"==k.format)w=this.editor.getGraphXml(),q.data=this.getHtml(w,this.editor.graph),q.xml=mxUtils.getXml(w),q.format=k.format;else{mxSvgCanvas2D.prototype.foAltText=null;l=this.editor.graph.background; -l==mxConstants.NONE&&(l=null);q.xml=this.getFileData(!0);q.format="svg";if(k.embedImages||null==k.embedImages){if(null==k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin))this.editor.graph.setEnabled(!1),"xmlsvg"==k.format?this.getEmbeddedSvg(q.xml,this.editor.graph,null,!0,mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();q.data=this.createSvgDataUri(a);h.postMessage(JSON.stringify(q),"*")})):this.convertImages(this.editor.graph.getSvg(l), -mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();q.data=this.createSvgDataUri(mxUtils.getXml(a));h.postMessage(JSON.stringify(q),"*")}));return}l="xmlsvg"==k.format?this.getEmbeddedSvg(this.getFileData(!0),this.editor.graph,null,!0):mxUtils.getXml(this.editor.graph.getSvg(l));q.data=this.createSvgDataUri(l)}h.postMessage(JSON.stringify(q),"*")}return}if("load"==k.action)d=1==k.autosave,this.hideDialog(),null!=k.modified&&null==urlParams.modified&&(urlParams.modified= -k.modified),null!=k.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=k.saveAndExit),null!=k.title&&null!=this.buttonContainer&&(n=document.createElement("span"),mxUtils.write(n,k.title),"atlas"==uiTheme?(this.buttonContainer.style.paddingRight="12px",this.buttonContainer.style.paddingTop="12px"):"min"!=uiTheme&&(this.buttonContainer.style.paddingRight="38px",this.buttonContainer.style.paddingTop="6px"),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan), -this.buttonContainer.appendChild(n),this.embedFilenameSpan=n),k=null!=k.xmlpng?this.extractGraphModelFromPng(k.xmlpng):k.xml;else{h.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(k)}),"*");return}}}var E=mxUtils.bind(this,function(g,k){c=!0;try{a(g,k)}catch(T){this.handleError(T)}c=!1;null!=urlParams.modified&&this.editor.setStatus("");var l=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}); -f=l();d&&null==b&&(b=mxUtils.bind(this,function(a,b){var d=l();if(d!=f&&!c){var g=this.createLoadMessage("autosave");g.xml=d;d=JSON.stringify(g);(window.opener||window.parent).postMessage(d,"*")}f=d}),this.editor.graph.model.addListener(mxEvent.CHANGE,b),this.editor.graph.addListener("gridSizeChanged",b),this.editor.graph.addListener("shadowVisibleChanged",b),this.addListener("pageFormatChanged",b),this.addListener("pageScaleChanged",b),this.addListener("backgroundColorChanged",b),this.addListener("backgroundImageChanged", -b),this.addListener("foldingEnabledChanged",b),this.addListener("mathEnabledChanged",b),this.addListener("gridEnabledChanged",b),this.addListener("guidesEnabledChanged",b),this.addListener("pageViewChanged",b));"1"!=urlParams.returnbounds&&"json"!=urlParams.proto||h.postMessage(JSON.stringify(this.createLoadMessage("load")),"*")});null!=k&&"function"===typeof k.substring&&"data:application/vnd.visio;base64,"==k.substring(0,34)?(l="0M8R4KGxGuE"==k.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(k.substring(k.indexOf(",")+ -1)),function(a){E(a,g)},mxUtils.bind(this,function(a){this.handleError(a)}),l)):null!=k&&"function"===typeof k.substring&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(k,"")?this.parseFile(new Blob([k],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&200<=a.status&&299>=a.status&&"<mxGraphModel"==a.responseText.substring(0,13)&&E(a.responseText,g)}),""):null!=k&&"function"===typeof k.substring&&this.isLucidChartData(k)?this.convertLucidChart(k, -mxUtils.bind(this,function(a){E(a)}),mxUtils.bind(this,function(a){this.handleError(a)})):(k=l(k),E(k,g))}}));var h=window.opener||window.parent,g="json"==urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";h.postMessage(g,"*")};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar){var a=document.createElement("div");a.style.display="inline-block";a.style.position="absolute";a.style.paddingTop="atlas"==uiTheme?"2px":"3px";a.style.paddingLeft="8px";a.style.paddingBottom= +pageVisible:b.pageVisible,translate:b.view.translate,bounds:b.getGraphBounds(),currentPage:this.getSelectedPageIndex(),scale:b.view.scale,page:b.view.getBackgroundPageBounds()}};EditorUi.prototype.installMessageHandler=function(a){var b=null,c=!1,d=!1,e=null,f=mxUtils.bind(this,function(a,b){this.editor.modified&&"0"!=urlParams.modified?null!=urlParams.modified&&this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(urlParams.modified))):this.editor.setStatus("")});this.editor.graph.model.addListener(mxEvent.CHANGE, +f);mxEvent.addListener(window,"message",mxUtils.bind(this,function(f){if(f.source==(window.opener||window.parent)){var k=f.data,l=mxUtils.bind(this,function(a){if(null!=a&&"function"===typeof a.charAt&&"<"!=a.charAt(0))try{"data:image/png;base64,"==a.substring(0,22)?a=this.extractGraphModelFromPng(a):"data:image/svg+xml;base64,"==a.substring(0,26)?a=atob(a.substring(26)):"data:image/svg+xml;utf8,"==a.substring(0,24)&&(a=a.substring(24)),null!=a&&("%"==a.charAt(0)?a=decodeURIComponent(a):"<"!=a.charAt(0)&& +(a=this.editor.graph.decompress(a)))}catch(S){}return a});if("json"==urlParams.proto){try{k=JSON.parse(k)}catch(M){k=null}if(null==k)return;if("dialog"==k.action){this.showError(null!=k.titleKey?mxResources.get(k.titleKey):k.title,null!=k.messageKey?mxResources.get(k.messageKey):k.message,null!=k.buttonKey?mxResources.get(k.buttonKey):k.button);null!=k.modified&&(this.editor.modified=k.modified);return}if("prompt"==k.action){this.spinner.stop();l=new FilenameDialog(this,k.defaultValue||"",null!=k.okKey? +mxResources.get(k.okKey):null,function(a){null!=a&&g.postMessage(JSON.stringify({event:"prompt",value:a,message:k}),"*")},null!=k.titleKey?mxResources.get(k.titleKey):k.title);this.showDialog(l.container,300,80,!0,!1);l.init();return}if("draft"==k.action){var m=l(k.xml);this.spinner.stop();l=new DraftDialog(this,mxResources.get("draftFound",[k.name||this.defaultFilename]),m,mxUtils.bind(this,function(){this.hideDialog();g.postMessage(JSON.stringify({event:"draft",result:"edit",message:k}),"*")}), +mxUtils.bind(this,function(){this.hideDialog();g.postMessage(JSON.stringify({event:"draft",result:"discard",message:k}),"*")}),k.editKey?mxResources.get(k.editKey):null,k.discardKey?mxResources.get(k.discardKey):null,k.ignore?mxUtils.bind(this,function(){this.hideDialog();g.postMessage(JSON.stringify({event:"draft",result:"ignore",message:k}),"*")}):null);this.showDialog(l.container,640,480,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));try{l.init()}catch(M){g.postMessage(JSON.stringify({event:"draft", +error:M.toString(),message:k}),"*")}return}if("template"==k.action){this.spinner.stop();l=1==k.enableRecent;m=1==k.enableSearch;l=new NewDialog(this,!1,null!=k.callback,mxUtils.bind(this,function(b,c){b=b||this.emptyDiagramXml;null!=k.callback?g.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:c}),"*"):(a(b,f,b!=this.emptyDiagramXml),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,l?mxUtils.bind(this,function(a){this.recentReadyCallback= +a;g.postMessage(JSON.stringify({event:"recentDocs"}),"*")}):null,m?mxUtils.bind(this,function(a,b){this.searchReadyCallback=b;g.postMessage(JSON.stringify({event:"searchDocs",searchStr:a}),"*")}):null,function(a,b,c){g.postMessage(JSON.stringify({event:"template",docUrl:a,info:b,name:c}),"*")});this.showDialog(l.container,620,440,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));l.init();return}if("searchDocsList"==k.action)this.searchReadyCallback(k.list,k.errorMsg);else if("recentDocsList"== +k.action)this.recentReadyCallback(k.list,k.errorMsg);else{if("textContent"==k.action){this.editor.graph.setEnabled(!1);var v=this.editor.graph,l="";if(null!=this.pages)for(m=0;m<this.pages.length;m++){var n=v;this.currentPage!=this.pages[m]&&(n=this.createTemporaryGraph(v.getStylesheet()),n.model.setRoot(this.pages[m].root));l+=this.pages[m].getName()+" "+n.getIndexableText()+" "}else l=v.getIndexableText();this.editor.graph.setEnabled(!0);g.postMessage(JSON.stringify({event:"textContent",data:l, +message:k}),"*");return}if("status"==k.action){null!=k.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(k.messageKey))):null!=k.message&&this.editor.setStatus(mxUtils.htmlEntities(k.message));null!=k.modified&&(this.editor.modified=k.modified);return}if("spinner"==k.action){var p=null!=k.messageKey?mxResources.get(k.messageKey):k.message;null==k.show||k.show?this.spinner.spin(document.body,p):this.spinner.stop();return}if("export"==k.action){if("png"==k.format||"xmlpng"==k.format){if(null== +k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin)){var q=null!=k.xml?k.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var v=this.editor.graph,t=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();var b=this.createLoadMessage("export");b.format=k.format;b.message=k;b.data=a;b.xml=encodeURIComponent(q);g.postMessage(JSON.stringify(b),"*")}),x=mxUtils.bind(this,function(a){null==a&&(a=Editor.blankImage); +"xmlpng"==k.format&&(a=this.writeGraphModelToPng(a,"zTXt","mxGraphModel",atob(this.editor.graph.compress(q))));v!=this.editor.graph&&v.container.parentNode.removeChild(v.container);t(a)});if(this.isExportToCanvas()){if(null!=this.pages&&this.currentPage!=this.pages[0]){var v=this.createTemporaryGraph(v.getStylesheet()),u=v.getGlobalVariable,z=this.pages[0];v.getGlobalVariable=function(a){return"page"==a?z.getName():"pagenumber"==a?1:u.apply(this,arguments)};document.body.appendChild(v.container); +v.model.setRoot(z.root)}this.exportToCanvas(mxUtils.bind(this,function(a){x(a.toDataURL("image/png"))}),null,null,null,mxUtils.bind(this,function(){x(null)}),null,null,null,null,null,null,v)}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==k.format?"1":"0")+"&base64=1&xml="+encodeURIComponent(encodeURIComponent(q)))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()?t("data:image/png;base64,"+a.getText()):x(null)}),mxUtils.bind(this,function(){x(null)}))}}else{null!= +k.xml&&0<k.xml.length&&this.setFileData(k.xml);p=this.createLoadMessage("export");if("html2"==k.format||"html"==k.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length))l=this.getXmlFileData(),p.xml=mxUtils.getXml(l),p.data=this.getFileData(null,null,!0,null,null,null,l),p.format=k.format;else if("html"==k.format)q=this.editor.getGraphXml(),p.data=this.getHtml(q,this.editor.graph),p.xml=mxUtils.getXml(q),p.format=k.format;else{mxSvgCanvas2D.prototype.foAltText=null;l=this.editor.graph.background; +l==mxConstants.NONE&&(l=null);p.xml=this.getFileData(!0);p.format="svg";if(k.embedImages||null==k.embedImages){if(null==k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin))this.editor.graph.setEnabled(!1),"xmlsvg"==k.format?this.getEmbeddedSvg(p.xml,this.editor.graph,null,!0,mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();p.data=this.createSvgDataUri(a);g.postMessage(JSON.stringify(p),"*")})):this.convertImages(this.editor.graph.getSvg(l), +mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();p.data=this.createSvgDataUri(mxUtils.getXml(a));g.postMessage(JSON.stringify(p),"*")}));return}l="xmlsvg"==k.format?this.getEmbeddedSvg(this.getFileData(!0),this.editor.graph,null,!0):mxUtils.getXml(this.editor.graph.getSvg(l));p.data=this.createSvgDataUri(l)}g.postMessage(JSON.stringify(p),"*")}return}if("load"==k.action)d=1==k.autosave,this.hideDialog(),null!=k.modified&&null==urlParams.modified&&(urlParams.modified= +k.modified),null!=k.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=k.saveAndExit),null!=k.title&&null!=this.buttonContainer&&(m=document.createElement("span"),mxUtils.write(m,k.title),"atlas"==uiTheme?(this.buttonContainer.style.paddingRight="12px",this.buttonContainer.style.paddingTop="12px"):"min"!=uiTheme&&(this.buttonContainer.style.paddingRight="38px",this.buttonContainer.style.paddingTop="6px"),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan), +this.buttonContainer.appendChild(m),this.embedFilenameSpan=m),k=null!=k.xmlpng?this.extractGraphModelFromPng(k.xmlpng):k.xml;else{g.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(k)}),"*");return}}}var K=mxUtils.bind(this,function(f,k){c=!0;try{a(f,k)}catch(U){this.handleError(U)}c=!1;null!=urlParams.modified&&this.editor.setStatus("");var l=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}); +e=l();d&&null==b&&(b=mxUtils.bind(this,function(a,b){var d=l();if(d!=e&&!c){var f=this.createLoadMessage("autosave");f.xml=d;d=JSON.stringify(f);(window.opener||window.parent).postMessage(d,"*")}e=d}),this.editor.graph.model.addListener(mxEvent.CHANGE,b),this.editor.graph.addListener("gridSizeChanged",b),this.editor.graph.addListener("shadowVisibleChanged",b),this.addListener("pageFormatChanged",b),this.addListener("pageScaleChanged",b),this.addListener("backgroundColorChanged",b),this.addListener("backgroundImageChanged", +b),this.addListener("foldingEnabledChanged",b),this.addListener("mathEnabledChanged",b),this.addListener("gridEnabledChanged",b),this.addListener("guidesEnabledChanged",b),this.addListener("pageViewChanged",b));"1"!=urlParams.returnbounds&&"json"!=urlParams.proto||g.postMessage(JSON.stringify(this.createLoadMessage("load")),"*")});null!=k&&"function"===typeof k.substring&&"data:application/vnd.visio;base64,"==k.substring(0,34)?(l="0M8R4KGxGuE"==k.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(k.substring(k.indexOf(",")+ +1)),function(a){K(a,f)},mxUtils.bind(this,function(a){this.handleError(a)}),l)):null!=k&&"function"===typeof k.substring&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(k,"")?this.parseFile(new Blob([k],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&200<=a.status&&299>=a.status&&"<mxGraphModel"==a.responseText.substring(0,13)&&K(a.responseText,f)}),""):null!=k&&"function"===typeof k.substring&&this.isLucidChartData(k)?this.convertLucidChart(k, +mxUtils.bind(this,function(a){K(a)}),mxUtils.bind(this,function(a){this.handleError(a)})):(k=l(k),K(k,f))}}));var g=window.opener||window.parent,f="json"==urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";g.postMessage(f,"*")};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar){var a=document.createElement("div");a.style.display="inline-block";a.style.position="absolute";a.style.paddingTop="atlas"==uiTheme?"2px":"3px";a.style.paddingLeft="8px";a.style.paddingBottom= "2px";var b=document.createElement("button");mxUtils.write(b,mxResources.get("save"));b.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)");b.className="geBigButton";b.style.fontSize="12px";b.style.padding="4px 6px 4px 6px";b.style.borderRadius="3px";mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()}));a.appendChild(b);"1"==urlParams.saveAndExit&&(b=document.createElement("a"),mxUtils.write(b,mxResources.get("saveAndExit")),b.setAttribute("title", mxResources.get("saveAndExit")),b.style.fontSize="12px",b.style.marginLeft="6px",b.style.padding="4px",b.style.cursor="pointer",mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b));b=document.createElement("a");mxUtils.write(b,mxResources.get("exit"));b.setAttribute("title",mxResources.get("exit"));b.style.fontSize="12px";b.style.marginLeft="6px";b.style.marginRight="20px";b.style.padding="4px";b.style.cursor="pointer";mxEvent.addListener(b, "click",mxUtils.bind(this,function(){this.actions.get("exit").funct()}));a.appendChild(b);this.toolbar.container.appendChild(a);this.toolbar.staticElements.push(a);a.style.right="atlas"!=uiTheme?"52px":"42px"}};EditorUi.prototype.showImportCsvDialog=function(){null==this.importCsvDialog&&(this.importCsvDialog=new TextareaDialog(this,mxResources.get("csv")+":",Editor.defaultCsvValue,mxUtils.bind(this,function(a){this.importCsv(a)}),null,null,620,430,null,!0,!0,mxResources.get("import")));this.showDialog(this.importCsvDialog.container, -640,520,!0,!0);this.importCsvDialog.init()};EditorUi.prototype.importCsv=function(a,b){try{var c=a.split("\n"),d=[];if(0<c.length){var f={},g=null,h=null,k=null,l=null,m="",p="auto",G="auto",z=null,A=null,H=40,B=40,D=100,J=0,C=this.editor.graph;C.getGraphBounds();for(var E=function(){null!=b?b(fa):(C.setSelectionCells(fa),C.scrollCellToVisible(C.getSelectionCell()))},I=C.getFreeInsertPoint(),M=I.x,L=I.y,I=L,T=null,R="auto",l=null,V=[],Y=null,Z=null,aa=0;aa<c.length&&"#"==c[aa].charAt(0);){a=c[aa]; -for(aa++;aa<c.length&&"\\"==a.charAt(a.length-1)&&"#"==c[aa].charAt(0);)a=a.substring(0,a.length-1)+mxUtils.trim(c[aa].substring(1)),aa++;if("#"!=a.charAt(1)){var O=a.indexOf(":");if(0<O){var Q=mxUtils.trim(a.substring(1,O)),N=mxUtils.trim(a.substring(O+1));"label"==Q?T=C.sanitizeHtml(N):"style"==Q?g=N:"parentstyle"==Q?h=N:"identity"==Q&&0<N.length&&"-"!=N?k=N:"parent"==Q&&0<N.length&&"-"!=N?l=N:"namespace"==Q&&0<N.length&&"-"!=N?m=N:"width"==Q?p=N:"height"==Q?G=N:"left"==Q&&0<N.length?z=N:"top"== -Q&&0<N.length?A=N:"ignore"==Q?Z=N.split(","):"connect"==Q?V.push(JSON.parse(N)):"link"==Q?Y=N:"padding"==Q?J=parseFloat(N):"edgespacing"==Q?H=parseFloat(N):"nodespacing"==Q?B=parseFloat(N):"levelspacing"==Q?D=parseFloat(N):"layout"==Q&&(R=N)}}}var X=this.editor.csvToArray(c[aa]),Q=O=null;if(null!=k||null!=l)for(var P=0;P<X.length;P++)k==X[P]&&(O=P),l==X[P]&&(Q=P);null==T&&(T="%"+X[0]+"%");if(null!=V)for(var U=0;U<V.length;U++)null==f[V[U].to]&&(f[V[U].to]={});C.model.beginUpdate();try{for(P=aa+1;P< -c.length;P++){var S=this.editor.csvToArray(c[P]);if(null==S){var ba=40<c[P].length?c[P].substring(0,40)+"...":c[P];throw Error(P+" ("+ba+") "+mxResources.get("containsValidationErrors"));}if(S.length==X.length){var K=null,ca=null!=O?m+S[O]:null;null!=ca&&(K=C.model.getCell(ca));null==K&&(K=new mxCell(T,new mxGeometry(M,I,0,0),g||"whiteSpace=wrap;html=1;"),K.vertex=!0,K.id=ca);for(var W=0;W<S.length;W++)C.setAttributeForCell(K,X[W],S[W]);C.setAttributeForCell(K,"placeholders","1");K.style=C.replacePlaceholders(K, -K.style);for(U=0;U<V.length;U++)f[V[U].to][K.getAttribute(V[U].to)]=K;null!=Y&&"link"!=Y&&(C.setLinkForCell(K,K.getAttribute(Y)),C.setAttributeForCell(K,Y,null));C.fireEvent(new mxEventObject("cellsInserted","cells",[K]));var ea=this.editor.graph.getPreferredSizeForCell(K);K.vertex&&(null!=z&&null!=K.getAttribute(z)&&(K.geometry.x=M+parseFloat(K.getAttribute(z))),null!=A&&null!=K.getAttribute(A)&&(K.geometry.y=L+parseFloat(K.getAttribute(A))),"@"==p.charAt(0)&&null!=K.getAttribute(p.substring(1))? -K.geometry.width=parseFloat(K.getAttribute(p.substring(1))):K.geometry.width="auto"==p?ea.width+J:parseFloat(p),"@"==G.charAt(0)&&null!=K.getAttribute(G.substring(1))?K.geometry.height=parseFloat(K.getAttribute(G.substring(1))):K.geometry.height="auto"==G?ea.height+J:parseFloat(G),I+=K.geometry.height+B);l=null!=Q?C.model.getCell(m+S[Q]):null;null!=l?(l.style=C.replacePlaceholders(l,h),C.addCell(K,l)):d.push(C.addCell(K))}}for(var ga=d.slice(),fa=d.slice(),U=0;U<V.length;U++)for(var da=V[U],P=0;P< -d.length;P++){var K=d[P],oa=K.getAttribute(da.from);if(null!=oa){C.setAttributeForCell(K,da.from,null);for(var na=oa.split(","),W=0;W<na.length;W++){var ha=f[da.to][na[W]];null!=ha&&(T=da.label,null!=da.fromlabel&&(T=(K.getAttribute(da.fromlabel)||"")+(T||"")),null!=da.tolabel&&(T=(T||"")+(ha.getAttribute(da.tolabel)||"")),fa.push(C.insertEdge(null,null,T||"",da.invert?ha:K,da.invert?K:ha,da.style||C.createCurrentEdgeStyle())),mxUtils.remove(da.invert?K:ha,ga))}}}if(null!=Z)for(P=0;P<d.length;P++)for(K= -d[P],W=0;W<Z.length;W++)C.setAttributeForCell(K,mxUtils.trim(Z[W]),null);var ka=new mxParallelEdgeLayout(C);ka.spacing=H;var pa=function(){ka.execute(C.getDefaultParent());for(var a=0;a<d.length;a++){var b=C.getCellGeometry(d[a]);b.x=Math.round(C.snap(b.x));b.y=Math.round(C.snap(b.y));"auto"==p&&(b.width=Math.round(C.snap(b.width)));"auto"==G&&(b.height=Math.round(C.snap(b.height)))}};if("circle"==R){var la=new mxCircleLayout(C);la.resetEdges=!1;var qa=la.isVertexIgnored;la.isVertexIgnored=function(a){return qa.apply(this, -arguments)||0>mxUtils.indexOf(d,a)};this.executeLayout(function(){la.execute(C.getDefaultParent());pa()},!0,E);E=null}else if("horizontaltree"==R||"verticaltree"==R||"auto"==R&&fa.length==2*d.length-1&&1==ga.length){C.view.validate();var ma=new mxCompactTreeLayout(C,"horizontaltree"==R);ma.levelDistance=B;ma.edgeRouting=!1;ma.resetEdges=!1;this.executeLayout(function(){ma.execute(C.getDefaultParent(),0<ga.length?ga[0]:null)},!0,E);E=null}else if("horizontalflow"==R||"verticalflow"==R||"auto"==R&& -1==ga.length){C.view.validate();var ia=new mxHierarchicalLayout(C,"horizontalflow"==R?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);ia.intraCellSpacing=B;ia.parallelEdgeSpacing=H;ia.interRankCellSpacing=D;ia.disableEdgeStyle=!1;this.executeLayout(function(){ia.execute(C.getDefaultParent(),fa);C.moveCells(fa,M,L)},!0,E);E=null}else if("organic"==R||"auto"==R&&fa.length>d.length){C.view.validate();var ja=new mxFastOrganicLayout(C);ja.forceConstant=3*B;ja.resetEdges=!1;var ra=ja.isVertexIgnored; -ja.isVertexIgnored=function(a){return ra.apply(this,arguments)||0>mxUtils.indexOf(d,a)};ka=new mxParallelEdgeLayout(C);ka.spacing=H;this.executeLayout(function(){ja.execute(C.getDefaultParent());pa()},!0,E);E=null}this.hideDialog()}finally{C.model.endUpdate()}null!=E&&E()}}catch(sa){this.handleError(sa)}};EditorUi.prototype.getSearch=function(a){var b="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=a&&0<window.location.search.length){var c="?",d;for(d in urlParams)0>mxUtils.indexOf(a,d)&& -null!=urlParams[d]&&(b+=c+d+"="+urlParams[d],c="&")}else b=window.location.search;return b};EditorUi.prototype.getUrl=function(a){a=null!=a?a:window.location.pathname;var b=0<a.indexOf("?")?1:0;if("1"==urlParams.offline)a+=window.location.search;else{var c="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),d;for(d in urlParams)0>mxUtils.indexOf(c,d)&&(a=0==b?a+"?":a+"&",null!=urlParams[d]&&(a+=d+"="+urlParams[d],b++))}return a};EditorUi.prototype.showLinkDialog= -function(a,b,c){a=new LinkDialog(this,a,b,c,!0);this.showDialog(a.container,480,130,!0,!0);a.init()};var k=EditorUi.prototype.createOutline;EditorUi.prototype.createOutline=function(a){var b=k.apply(this,arguments),c=this.editor.graph,d=b.getSourceGraphBounds;b.getSourceGraphBounds=function(){if(mxUtils.hasScrollbars(c.container)&&c.pageVisible&&null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width- -2*a.x/b),Math.ceil(this.source.minimumGraphSize.height-2*a.y/b))}return d.apply(this,arguments)};var f=b.getSourceContainerSize;b.getSourceContainerSize=function(){if(mxUtils.hasScrollbars(c.container)&&null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width*b-2*a.x),Math.ceil(this.source.minimumGraphSize.height*b-2*a.y))}return f.apply(this,arguments)};b.getOutlineOffset=function(a){if(mxUtils.hasScrollbars(c.container)&& -null!=this.source.minimumGraphSize){var d=this.source.getPagePadding();return new mxPoint(Math.round(Math.max(0,(b.outline.container.clientWidth/a-(this.source.minimumGraphSize.width-2*d.x))/2)-d.x),Math.round(Math.max(0,(b.outline.container.clientHeight/a-(this.source.minimumGraphSize.height-2*d.y))/2)-d.y-5/a))}return new mxPoint(8/a,8/a)};var g=b.init;b.init=function(){g.apply(this,arguments);b.outline.view.getBackgroundPageBounds=function(){var a=c.getPageLayout(),b=c.getPageSize();return new mxRectangle(this.scale* -(this.translate.x+a.x*b.width),this.scale*(this.translate.y+a.y*b.height),this.scale*a.width*b.width,this.scale*a.height*b.height)};b.outline.view.validateBackgroundPage()};this.editor.addListener("pageSelected",function(a,c){var d=c.getProperty("change"),f=b.source,g=b.outline;g.pageScale=f.pageScale;g.pageFormat=f.pageFormat;g.background=f.background;g.pageVisible=f.pageVisible;g.background=f.background;var h=mxUtils.getCurrentStyle(f.container);g.container.style.backgroundColor=h.backgroundColor; -null!=f.view.backgroundPageShape&&null!=g.view.backgroundPageShape&&(g.view.backgroundPageShape.fill=f.view.backgroundPageShape.fill);b.outline.view.clear(d.previousPage.root,!0);b.outline.view.validate()});return b};EditorUi.prototype.getServiceCount=function(a,b){var c=0;null==this.drive&&"function"!==typeof window.DriveClient||c++;b||null==this.dropbox&&"function"!==typeof window.DropboxClient||c++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||c++;b||null==this.gitHub||c++;b|| -null==this.trello&&"function"!==typeof window.TrelloClient||c++;c++;return c};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var a=this.getCurrentFile(),b=null!=a||"1"==urlParams.embed&&this.editor.graph.isEnabled();this.menus.get("viewPanels").setEnabled(b);this.menus.get("viewZoom").setEnabled(b);var c=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==a||a.isRestricted());this.actions.get("makeCopy").setEnabled(!c);this.actions.get("print").setEnabled(!c); -this.menus.get("exportAs").setEnabled(!c);this.menus.get("embed").setEnabled(!c);c="1"!=urlParams.embed||this.editor.graph.isEnabled();this.menus.get("extras").setEnabled(c);Editor.enableCustomLibraries&&(this.menus.get("openLibraryFrom").setEnabled(c),this.menus.get("newLibrary").setEnabled(c));a="1"==urlParams.embed&&this.editor.graph.isEnabled()||null!=a&&a.isEditable();this.actions.get("image").setEnabled(b);this.actions.get("zoomIn").setEnabled(b);this.actions.get("zoomOut").setEnabled(b);this.actions.get("resetView").setEnabled(b); +640,520,!0,!0);this.importCsvDialog.init()};EditorUi.prototype.importCsv=function(a,b){try{var c=a.split("\n"),d=[];if(0<c.length){var e={},f=null,g=null,k=null,l=null,m="",n="auto",q="auto",D=null,E=null,I=40,C=40,G=100,J=0,A=this.editor.graph;A.getGraphBounds();for(var K=function(){null!=b?b(ga):(A.setSelectionCells(ga),A.scrollCellToVisible(A.getSelectionCell()))},M=A.getFreeInsertPoint(),S=M.x,T=M.y,M=T,U=null,V="auto",l=null,W=[],aa=null,ea=null,N=0;N<c.length&&"#"==c[N].charAt(0);){a=c[N];for(N++;N< +c.length&&"\\"==a.charAt(a.length-1)&&"#"==c[N].charAt(0);)a=a.substring(0,a.length-1)+mxUtils.trim(c[N].substring(1)),N++;if("#"!=a.charAt(1)){var ba=a.indexOf(":");if(0<ba){var O=mxUtils.trim(a.substring(1,ba)),P=mxUtils.trim(a.substring(ba+1));"label"==O?U=A.sanitizeHtml(P):"style"==O?f=P:"parentstyle"==O?g=P:"identity"==O&&0<P.length&&"-"!=P?k=P:"parent"==O&&0<P.length&&"-"!=P?l=P:"namespace"==O&&0<P.length&&"-"!=P?m=P:"width"==O?n=P:"height"==O?q=P:"left"==O&&0<P.length?D=P:"top"==O&&0<P.length? +E=P:"ignore"==O?ea=P.split(","):"connect"==O?W.push(JSON.parse(P)):"link"==O?aa=P:"padding"==O?J=parseFloat(P):"edgespacing"==O?I=parseFloat(P):"nodespacing"==O?C=parseFloat(P):"levelspacing"==O?G=parseFloat(P):"layout"==O&&(V=P)}}}var X=this.editor.csvToArray(c[N]),O=ba=null;if(null!=k||null!=l)for(var Q=0;Q<X.length;Q++)k==X[Q]&&(ba=Q),l==X[Q]&&(O=Q);null==U&&(U="%"+X[0]+"%");if(null!=W)for(var R=0;R<W.length;R++)null==e[W[R].to]&&(e[W[R].to]={});A.model.beginUpdate();try{for(Q=N+1;Q<c.length;Q++){var Z= +this.editor.csvToArray(c[Q]);if(null==Z){var ca=40<c[Q].length?c[Q].substring(0,40)+"...":c[Q];throw Error(Q+" ("+ca+") "+mxResources.get("containsValidationErrors"));}if(Z.length==X.length){var L=null,fa=null!=ba?m+Z[ba]:null;null!=fa&&(L=A.model.getCell(fa));null==L&&(L=new mxCell(U,new mxGeometry(S,M,0,0),f||"whiteSpace=wrap;html=1;"),L.vertex=!0,L.id=fa);for(var Y=0;Y<Z.length;Y++)A.setAttributeForCell(L,X[Y],Z[Y]);A.setAttributeForCell(L,"placeholders","1");L.style=A.replacePlaceholders(L,L.style); +for(R=0;R<W.length;R++)e[W[R].to][L.getAttribute(W[R].to)]=L;null!=aa&&"link"!=aa&&(A.setLinkForCell(L,L.getAttribute(aa)),A.setAttributeForCell(L,aa,null));A.fireEvent(new mxEventObject("cellsInserted","cells",[L]));var oa=this.editor.graph.getPreferredSizeForCell(L);L.vertex&&(null!=D&&null!=L.getAttribute(D)&&(L.geometry.x=S+parseFloat(L.getAttribute(D))),null!=E&&null!=L.getAttribute(E)&&(L.geometry.y=T+parseFloat(L.getAttribute(E))),"@"==n.charAt(0)&&null!=L.getAttribute(n.substring(1))?L.geometry.width= +parseFloat(L.getAttribute(n.substring(1))):L.geometry.width="auto"==n?oa.width+J:parseFloat(n),"@"==q.charAt(0)&&null!=L.getAttribute(q.substring(1))?L.geometry.height=parseFloat(L.getAttribute(q.substring(1))):L.geometry.height="auto"==q?oa.height+J:parseFloat(q),M+=L.geometry.height+C);l=null!=O?A.model.getCell(m+Z[O]):null;null!=l?(l.style=A.replacePlaceholders(l,g),A.addCell(L,l)):d.push(A.addCell(L))}}for(var ha=d.slice(),ga=d.slice(),R=0;R<W.length;R++)for(var da=W[R],Q=0;Q<d.length;Q++){var L= +d[Q],qa=L.getAttribute(da.from);if(null!=qa){A.setAttributeForCell(L,da.from,null);for(var pa=qa.split(","),Y=0;Y<pa.length;Y++){var ia=e[da.to][pa[Y]];null!=ia&&(U=da.label,null!=da.fromlabel&&(U=(L.getAttribute(da.fromlabel)||"")+(U||"")),null!=da.tolabel&&(U=(U||"")+(ia.getAttribute(da.tolabel)||"")),ga.push(A.insertEdge(null,null,U||"",da.invert?ia:L,da.invert?L:ia,da.style||A.createCurrentEdgeStyle())),mxUtils.remove(da.invert?L:ia,ha))}}}if(null!=ea)for(Q=0;Q<d.length;Q++)for(L=d[Q],Y=0;Y<ea.length;Y++)A.setAttributeForCell(L, +mxUtils.trim(ea[Y]),null);var la=new mxParallelEdgeLayout(A);la.spacing=I;var ra=function(){la.execute(A.getDefaultParent());for(var a=0;a<d.length;a++){var b=A.getCellGeometry(d[a]);b.x=Math.round(A.snap(b.x));b.y=Math.round(A.snap(b.y));"auto"==n&&(b.width=Math.round(A.snap(b.width)));"auto"==q&&(b.height=Math.round(A.snap(b.height)))}};if("circle"==V){var ma=new mxCircleLayout(A);ma.resetEdges=!1;var sa=ma.isVertexIgnored;ma.isVertexIgnored=function(a){return sa.apply(this,arguments)||0>mxUtils.indexOf(d, +a)};this.executeLayout(function(){ma.execute(A.getDefaultParent());ra()},!0,K);K=null}else if("horizontaltree"==V||"verticaltree"==V||"auto"==V&&ga.length==2*d.length-1&&1==ha.length){A.view.validate();var na=new mxCompactTreeLayout(A,"horizontaltree"==V);na.levelDistance=C;na.edgeRouting=!1;na.resetEdges=!1;this.executeLayout(function(){na.execute(A.getDefaultParent(),0<ha.length?ha[0]:null)},!0,K);K=null}else if("horizontalflow"==V||"verticalflow"==V||"auto"==V&&1==ha.length){A.view.validate(); +var ja=new mxHierarchicalLayout(A,"horizontalflow"==V?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);ja.intraCellSpacing=C;ja.parallelEdgeSpacing=I;ja.interRankCellSpacing=G;ja.disableEdgeStyle=!1;this.executeLayout(function(){ja.execute(A.getDefaultParent(),ga);A.moveCells(ga,S,T)},!0,K);K=null}else if("organic"==V||"auto"==V&&ga.length>d.length){A.view.validate();var ka=new mxFastOrganicLayout(A);ka.forceConstant=3*C;ka.resetEdges=!1;var ua=ka.isVertexIgnored;ka.isVertexIgnored=function(a){return ua.apply(this, +arguments)||0>mxUtils.indexOf(d,a)};la=new mxParallelEdgeLayout(A);la.spacing=I;this.executeLayout(function(){ka.execute(A.getDefaultParent());ra()},!0,K);K=null}this.hideDialog()}finally{A.model.endUpdate()}null!=K&&K()}}catch(ta){this.handleError(ta)}};EditorUi.prototype.getSearch=function(a){var b="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=a&&0<window.location.search.length){var c="?",d;for(d in urlParams)0>mxUtils.indexOf(a,d)&&null!=urlParams[d]&&(b+=c+d+"="+urlParams[d],c="&")}else b= +window.location.search;return b};EditorUi.prototype.getUrl=function(a){a=null!=a?a:window.location.pathname;var b=0<a.indexOf("?")?1:0;if("1"==urlParams.offline)a+=window.location.search;else{var c="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),d;for(d in urlParams)0>mxUtils.indexOf(c,d)&&(a=0==b?a+"?":a+"&",null!=urlParams[d]&&(a+=d+"="+urlParams[d],b++))}return a};EditorUi.prototype.showLinkDialog=function(a,b,c){a=new LinkDialog(this,a,b,c, +!0);this.showDialog(a.container,480,130,!0,!0);a.init()};var m=EditorUi.prototype.createOutline;EditorUi.prototype.createOutline=function(a){var b=m.apply(this,arguments),c=this.editor.graph,d=b.getSourceGraphBounds;b.getSourceGraphBounds=function(){if(mxUtils.hasScrollbars(c.container)&&c.pageVisible&&null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width-2*a.x/b),Math.ceil(this.source.minimumGraphSize.height- +2*a.y/b))}return d.apply(this,arguments)};var e=b.getSourceContainerSize;b.getSourceContainerSize=function(){if(mxUtils.hasScrollbars(c.container)&&null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width*b-2*a.x),Math.ceil(this.source.minimumGraphSize.height*b-2*a.y))}return e.apply(this,arguments)};b.getOutlineOffset=function(a){if(mxUtils.hasScrollbars(c.container)&&null!=this.source.minimumGraphSize){var d= +this.source.getPagePadding();return new mxPoint(Math.round(Math.max(0,(b.outline.container.clientWidth/a-(this.source.minimumGraphSize.width-2*d.x))/2)-d.x),Math.round(Math.max(0,(b.outline.container.clientHeight/a-(this.source.minimumGraphSize.height-2*d.y))/2)-d.y-5/a))}return new mxPoint(8/a,8/a)};var f=b.init;b.init=function(){f.apply(this,arguments);b.outline.view.getBackgroundPageBounds=function(){var a=c.getPageLayout(),b=c.getPageSize();return new mxRectangle(this.scale*(this.translate.x+ +a.x*b.width),this.scale*(this.translate.y+a.y*b.height),this.scale*a.width*b.width,this.scale*a.height*b.height)};b.outline.view.validateBackgroundPage()};this.editor.addListener("pageSelected",function(a,c){var d=c.getProperty("change"),e=b.source,f=b.outline;f.pageScale=e.pageScale;f.pageFormat=e.pageFormat;f.background=e.background;f.pageVisible=e.pageVisible;f.background=e.background;var g=mxUtils.getCurrentStyle(e.container);f.container.style.backgroundColor=g.backgroundColor;null!=e.view.backgroundPageShape&& +null!=f.view.backgroundPageShape&&(f.view.backgroundPageShape.fill=e.view.backgroundPageShape.fill);b.outline.view.clear(d.previousPage.root,!0);b.outline.view.validate()});return b};EditorUi.prototype.getServiceCount=function(a,b){var c=0;null==this.drive&&"function"!==typeof window.DriveClient||c++;b||null==this.dropbox&&"function"!==typeof window.DropboxClient||c++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||c++;b||null==this.gitHub||c++;b||null==this.trello&&"function"!==typeof window.TrelloClient|| +c++;c++;return c};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var a=this.getCurrentFile(),b=null!=a||"1"==urlParams.embed&&this.editor.graph.isEnabled();this.menus.get("viewPanels").setEnabled(b);this.menus.get("viewZoom").setEnabled(b);var c=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==a||a.isRestricted());this.actions.get("makeCopy").setEnabled(!c);this.actions.get("print").setEnabled(!c);this.menus.get("exportAs").setEnabled(!c); +this.menus.get("embed").setEnabled(!c);c="1"!=urlParams.embed||this.editor.graph.isEnabled();this.menus.get("extras").setEnabled(c);Editor.enableCustomLibraries&&(this.menus.get("openLibraryFrom").setEnabled(c),this.menus.get("newLibrary").setEnabled(c));a="1"==urlParams.embed&&this.editor.graph.isEnabled()||null!=a&&a.isEditable();this.actions.get("image").setEnabled(b);this.actions.get("zoomIn").setEnabled(b);this.actions.get("zoomOut").setEnabled(b);this.actions.get("resetView").setEnabled(b); this.actions.get("undo").setEnabled(this.canUndo()&&a);this.actions.get("redo").setEnabled(this.canRedo()&&a);this.menus.get("edit").setEnabled(b);this.menus.get("view").setEnabled(b);this.menus.get("importFrom").setEnabled(a);this.menus.get("arrange").setEnabled(a);null!=this.toolbar&&(null!=this.toolbar.edgeShapeMenu&&this.toolbar.edgeShapeMenu.setEnabled(a),null!=this.toolbar.edgeStyleMenu&&this.toolbar.edgeStyleMenu.setEnabled(a));if(this.isAppCache()){var d=applicationCache;if(null!=d&&null== this.offlineStatus){this.offlineStatus=document.createElement("div");this.offlineStatus.className="geItem";this.offlineStatus.style.position="absolute";this.offlineStatus.style.fontSize="8pt";this.offlineStatus.style.top="2px";this.offlineStatus.style.right="12px";this.offlineStatus.style.color="#666";this.offlineStatus.style.margin="4px";this.offlineStatus.style.padding="2px";this.offlineStatus.style.verticalAlign="middle";this.offlineStatus.innerHTML="";this.menubarContainer.appendChild(this.offlineStatus); -mxEvent.addListener(this.offlineStatus,"click",mxUtils.bind(this,function(){var a=this.offlineStatus.getElementsByTagName("img");null!=a&&0<a.length&&this.alert(a[0].getAttribute("title"))}));var d=window.applicationCache,f=null,b=mxUtils.bind(this,function(){var a=d.status,b;a==d.CHECKING&&(a=d.DOWNLOADING);switch(a){case d.UNCACHED:b="";break;case d.IDLE:b="min"==uiTheme?"":'<img title="draw.io is up to date." border="0" src="'+IMAGE_PATH+'/checkmark.gif"/>';break;case d.DOWNLOADING:b='<img title="Downloading new version..." border="0" src="'+ -IMAGE_PATH+'/spin.gif"/>';break;case d.UPDATEREADY:b='<img title="'+mxUtils.htmlEntities(mxResources.get("restartForChangeRequired"))+'" border="0" src="'+IMAGE_PATH+'/download.png"/>';break;case d.OBSOLETE:b='<img title="Obsolete" border="0" src="'+IMAGE_PATH+'/clear.gif"/>';break;default:b='<img title="Unknown" border="0" src="'+IMAGE_PATH+'/clear.gif"/>'}a!=f&&(this.offlineStatus.innerHTML=b,f=a)});mxEvent.addListener(d,"checking",b);mxEvent.addListener(d,"noupdate",b);mxEvent.addListener(d,"downloading", -b);mxEvent.addListener(d,"progress",b);mxEvent.addListener(d,"cached",b);mxEvent.addListener(d,"updateready",b);mxEvent.addListener(d,"obsolete",b);mxEvent.addListener(d,"error",b);b()}}else this.updateUserElement()};EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=function(){};EditorUi.prototype.isDiagramActive=function(){var a=this.getCurrentFile();return null!=a&&a.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};var m=EditorUi.prototype.updateActionStates; -EditorUi.prototype.updateActionStates=function(){m.apply(this,arguments);var a=this.editor.graph,b=this.isDiagramActive(),c=this.getCurrentFile();this.actions.get("pageSetup").setEnabled(b);this.actions.get("autosave").setEnabled(null!=c&&c.isEditable()&&c.isAutosaveOptional());this.actions.get("guides").setEnabled(b);this.actions.get("editData").setEnabled(b);this.actions.get("shadowVisible").setEnabled(b);this.actions.get("connectionArrows").setEnabled(b);this.actions.get("connectionPoints").setEnabled(b); +mxEvent.addListener(this.offlineStatus,"click",mxUtils.bind(this,function(){var a=this.offlineStatus.getElementsByTagName("img");null!=a&&0<a.length&&this.alert(a[0].getAttribute("title"))}));var d=window.applicationCache,e=null,b=mxUtils.bind(this,function(){var a=d.status,b;a==d.CHECKING&&(a=d.DOWNLOADING);switch(a){case d.UNCACHED:b="";break;case d.IDLE:b="min"==uiTheme?"":'<img title="draw.io is up to date." border="0" src="'+IMAGE_PATH+'/checkmark.gif"/>';break;case d.DOWNLOADING:b='<img title="Downloading new version..." border="0" src="'+ +IMAGE_PATH+'/spin.gif"/>';break;case d.UPDATEREADY:b='<img title="'+mxUtils.htmlEntities(mxResources.get("restartForChangeRequired"))+'" border="0" src="'+IMAGE_PATH+'/download.png"/>';break;case d.OBSOLETE:b='<img title="Obsolete" border="0" src="'+IMAGE_PATH+'/clear.gif"/>';break;default:b='<img title="Unknown" border="0" src="'+IMAGE_PATH+'/clear.gif"/>'}a!=e&&(this.offlineStatus.innerHTML=b,e=a)});mxEvent.addListener(d,"checking",b);mxEvent.addListener(d,"noupdate",b);mxEvent.addListener(d,"downloading", +b);mxEvent.addListener(d,"progress",b);mxEvent.addListener(d,"cached",b);mxEvent.addListener(d,"updateready",b);mxEvent.addListener(d,"obsolete",b);mxEvent.addListener(d,"error",b);b()}}else this.updateUserElement()};EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=function(){};EditorUi.prototype.isDiagramActive=function(){var a=this.getCurrentFile();return null!=a&&a.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};var n=EditorUi.prototype.updateActionStates; +EditorUi.prototype.updateActionStates=function(){n.apply(this,arguments);var a=this.editor.graph,b=this.isDiagramActive(),c=this.getCurrentFile();this.actions.get("pageSetup").setEnabled(b);this.actions.get("autosave").setEnabled(null!=c&&c.isEditable()&&c.isAutosaveOptional());this.actions.get("guides").setEnabled(b);this.actions.get("editData").setEnabled(b);this.actions.get("shadowVisible").setEnabled(b);this.actions.get("connectionArrows").setEnabled(b);this.actions.get("connectionPoints").setEnabled(b); this.actions.get("copyStyle").setEnabled(b&&!a.isSelectionEmpty());this.actions.get("pasteStyle").setEnabled(b&&!a.isSelectionEmpty());this.actions.get("editGeometry").setEnabled(a.getModel().isVertex(a.getSelectionCell()));this.actions.get("createShape").setEnabled(b);this.actions.get("createRevision").setEnabled(b);this.actions.get("moveToFolder").setEnabled(null!=c);this.actions.get("makeCopy").setEnabled(null!=c&&!c.isRestricted());this.actions.get("editDiagram").setEnabled(b&&(null==c||!c.isRestricted())); this.actions.get("publishLink").setEnabled(null!=c&&!c.isRestricted());this.actions.get("tags").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("find").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("layers").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("outline").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("rename").setEnabled(null!=c&&c.isRenamable()||"1"==urlParams.embed); -this.actions.get("close").setEnabled(null!=c);this.menus.get("publish").setEnabled(null!=c&&!c.isRestricted());a=a.view.getState(a.getSelectionCell());this.actions.get("editShape").setEnabled(b&&null!=a&&null!=a.shape&&null!=a.shape.stencil)};var p=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){this.editUpdateListener&&(this.editor.undoManager.removeListener(this.editUpdateListener),this.editUpdateListener=null);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog), -this.exportDialog=null);p.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(a,b,c,d,f,h){var g=a.editor.graph;if("xml"==c)a.hideDialog(),a.saveData(b,"xml",mxUtils.getXml(a.editor.getGraphXml()),"text/xml");else if("svg"==c)a.hideDialog(),a.saveData(b,"svg",mxUtils.getXml(g.getSvg(d,f,h)),"image/svg+xml");else{var k=a.getFileData(!0,null,null,null,null,!0),l=g.getGraphBounds(),m=Math.floor(l.width*f/g.view.scale), -n=Math.floor(l.height*f/g.view.scale);k.length<=MAX_REQUEST_SIZE&&m*n<MAX_AREA?(a.hideDialog(),a.saveRequest(b,c,function(a,b){return new mxXmlRequest(EXPORT_URL,"format="+c+"&base64="+(b||"0")+(null!=a?"&filename="+encodeURIComponent(a):"")+"&bg="+(null!=d?d:"none")+"&w="+m+"&h="+n+"&border="+h+"&xml="+encodeURIComponent(k))})):mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.updateEditReferences=function(a){for(var b=0;b<a.changes.length;b++){var c=a.changes[b];if(null!=c&& -c.constructor==mxChildChange&&null!=c.child){var d=c.child;if(null!=d.source&&null!=d.source.id){var f=this.getFutureCellForEdit(c.model,a,d.source.id);f!=d.source&&(d.source=f)}null!=d.target&&null!=d.target.id&&(c=this.getFutureCellForEdit(c.model,a,d.target.id),c!=d.target&&(d.target=c))}}};EditorUi.prototype.getFutureCellForEdit=function(a,b,c){var d=a.getCell(c);if(null==d)for(var f=b.changes.length-1;0<=f;f--){var g=b.changes[f];if(g.constructor==mxChildChange&&null!=g.child&&g.child.id==c){a.contains(g.previous)&& +this.actions.get("close").setEnabled(null!=c);this.menus.get("publish").setEnabled(null!=c&&!c.isRestricted());a=a.view.getState(a.getSelectionCell());this.actions.get("editShape").setEnabled(b&&null!=a&&null!=a.shape&&null!=a.shape.stencil)};var q=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){this.editUpdateListener&&(this.editor.undoManager.removeListener(this.editUpdateListener),this.editUpdateListener=null);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog), +this.exportDialog=null);q.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(a,b,c,d,e,g){var f=a.editor.graph;if("xml"==c)a.hideDialog(),a.saveData(b,"xml",mxUtils.getXml(a.editor.getGraphXml()),"text/xml");else if("svg"==c)a.hideDialog(),a.saveData(b,"svg",mxUtils.getXml(f.getSvg(d,e,g)),"image/svg+xml");else{var k=a.getFileData(!0,null,null,null,null,!0),l=f.getGraphBounds(),m=Math.floor(l.width*e/f.view.scale), +n=Math.floor(l.height*e/f.view.scale);k.length<=MAX_REQUEST_SIZE&&m*n<MAX_AREA?(a.hideDialog(),a.saveRequest(b,c,function(a,b){return new mxXmlRequest(EXPORT_URL,"format="+c+"&base64="+(b||"0")+(null!=a?"&filename="+encodeURIComponent(a):"")+"&bg="+(null!=d?d:"none")+"&w="+m+"&h="+n+"&border="+g+"&xml="+encodeURIComponent(k))})):mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.updateEditReferences=function(a){for(var b=0;b<a.changes.length;b++){var c=a.changes[b];if(null!=c&& +c.constructor==mxChildChange&&null!=c.child){var d=c.child;if(null!=d.source&&null!=d.source.id){var e=this.getFutureCellForEdit(c.model,a,d.source.id);e!=d.source&&(d.source=e)}null!=d.target&&null!=d.target.id&&(c=this.getFutureCellForEdit(c.model,a,d.target.id),c!=d.target&&(d.target=c))}}};EditorUi.prototype.getFutureCellForEdit=function(a,b,c){var d=a.getCell(c);if(null==d)for(var e=b.changes.length-1;0<=e;e--){var g=b.changes[e];if(g.constructor==mxChildChange&&null!=g.child&&g.child.id==c){a.contains(g.previous)&& (d=g.child);break}}return d}})();EditorUi.DIFF_INSERT="i";EditorUi.DIFF_REMOVE="r";EditorUi.DIFF_UPDATE="u";EditorUi.prototype.codec=new mxCodec;EditorUi.prototype.viewStateProperties={background:!0,backgroundImage:!0,shadowVisible:!0,foldingEnabled:!0,pageScale:!0,mathEnabled:!0,pageFormat:!0};EditorUi.prototype.cellProperties={id:!0,value:!0,xmlValue:!0,vertex:!0,edge:!0,visible:!0,collapsed:!0,connectable:!0,parent:!0,children:!0,previous:!0,source:!0,target:!0,edges:!0,geometry:!0,style:!0,mxObjectId:!0,mxTransient:!0}; -EditorUi.prototype.patchPages=function(a,c,b,d,f){var h={},k=[],m={},p={},g={},l={};if(null!=d&&null!=d[EditorUi.DIFF_UPDATE])for(var n in d[EditorUi.DIFF_UPDATE])h[n]=d[EditorUi.DIFF_UPDATE][n];if(null!=c[EditorUi.DIFF_REMOVE])for(d=0;d<c[EditorUi.DIFF_REMOVE].length;d++)p[c[EditorUi.DIFF_REMOVE][d]]=!0;if(null!=c[EditorUi.DIFF_INSERT])for(d=0;d<c[EditorUi.DIFF_INSERT].length;d++)m[c[EditorUi.DIFF_INSERT][d].previous]=c[EditorUi.DIFF_INSERT][d];if(null!=c[EditorUi.DIFF_UPDATE])for(n in c[EditorUi.DIFF_UPDATE])d= -c[EditorUi.DIFF_UPDATE][n],null!=d.previous&&(l[d.previous]=n);if(null!=a){var q="";for(d=0;d<a.length;d++){var t=a[d].getId();g[t]=a[d];null!=l[q]||p[t]||null!=c[EditorUi.DIFF_UPDATE]&&null!=c[EditorUi.DIFF_UPDATE][t]&&null!=c[EditorUi.DIFF_UPDATE][t].previous||(l[q]=t);q=t}}var v={},w=mxUtils.bind(this,function(a){var d=null!=a?a.getId():"";if(null!=a&&!v[d]){v[d]=!0;k.push(a);var n=null!=c[EditorUi.DIFF_UPDATE]?c[EditorUi.DIFF_UPDATE][d]:null;null!=n&&(this.updatePageRoot(a),null!=n.name&&a.setName(n.name), -null!=n.view&&this.patchViewState(a,n.view),null!=n.cells&&this.patchPage(a,n.cells,h[a.getId()],f),!b||null==n.cells&&null==n.view||(a.needsUpdate=!0))}a=l[d];null!=a&&(delete l[d],w(g[a]));a=m[d];null!=a&&(delete m[d],y(a))}),y=mxUtils.bind(this,function(a){a=mxUtils.parseXml(a.data).documentElement;a=new DiagramPage(a);this.updatePageRoot(a);var c=g[a.getId()];null==c?w(a):(c.root=a.root,this.currentPage==c?this.editor.graph.model.setRoot(c.root):b&&(c.needsUpdate=!0))});w();for(n in l)w(g[l[n]]), -delete l[n];for(n in m)y(m[n]),delete m[n];return k};EditorUi.prototype.patchViewState=function(a,c){if(null!=a.viewState&&null!=c){a==this.currentPage&&(a.viewState=this.editor.graph.getViewState());for(var b in c)a.viewState[b]=JSON.parse(c[b]);a==this.currentPage&&this.editor.graph.setViewState(a.viewState)}}; -EditorUi.prototype.createParentLookup=function(a,c){function b(a){var b=d[a];null==b&&(b={inserted:[],moved:{}},d[a]=b);return b}var d={};if(null!=c[EditorUi.DIFF_INSERT])for(var f=0;f<c[EditorUi.DIFF_INSERT].length;f++){var h=c[EditorUi.DIFF_INSERT][f],k=null!=h.parent?h.parent:"",m=null!=h.previous?h.previous:"";b(k).inserted[m]=h}if(null!=c[EditorUi.DIFF_UPDATE])for(var p in c[EditorUi.DIFF_UPDATE])h=c[EditorUi.DIFF_UPDATE][p],null!=h.previous&&(k=h.parent,null==k&&(f=a.getCell(p),null!=f&&(f= -a.getParent(f),null!=f&&(k=f.getId()))),null!=k&&(b(k).moved[h.previous]=p));return d}; -EditorUi.prototype.patchPage=function(a,c,b,d){var f=a==this.currentPage?this.editor.graph.model:new mxGraphModel(a.root),h=this.createParentLookup(f,c);f.beginUpdate();try{var k=f.updateEdgeParent,m=new mxDictionary,p=[];f.updateEdgeParent=function(a,b){!m.get(a)&&d&&(m.put(a,!0),p.push(a))};var g=h[""],l=null!=g&&null!=g.inserted?g.inserted[""]:null,n=null;null!=l&&(n=this.getCellForJson(l));if(null==n){var q=null!=g&&null!=g.moved?g.moved[""]:null;null!=q&&(n=f.getCell(q))}null!=n&&(f.setRoot(n), -a.root=n);this.patchCellRecursive(a,f,f.root,h,c);if(null!=c[EditorUi.DIFF_REMOVE])for(var t=0;t<c[EditorUi.DIFF_REMOVE].length;t++){var v=f.getCell(c[EditorUi.DIFF_REMOVE][t]);null!=v&&f.remove(v)}if(null!=c[EditorUi.DIFF_UPDATE]){var w=null!=b&&null!=b.cells?b.cells[EditorUi.DIFF_UPDATE]:null;for(q in c[EditorUi.DIFF_UPDATE])this.patchCell(f,f.getCell(q),c[EditorUi.DIFF_UPDATE][q],null!=w?w[q]:null)}if(null!=c[EditorUi.DIFF_INSERT])for(t=0;t<c[EditorUi.DIFF_INSERT].length;t++)l=c[EditorUi.DIFF_INSERT][t], -v=f.getCell(l.id),null!=v&&(f.setTerminal(v,f.getCell(l.source),!0),f.setTerminal(v,f.getCell(l.target),!1));f.updateEdgeParent=k;if(d&&0<p.length)for(t=0;t<p.length;t++)f.contains(p[t])&&f.updateEdgeParent(p[t])}finally{f.endUpdate()}}; -EditorUi.prototype.patchCellRecursive=function(a,c,b,d,f){if(null!=b){for(var h=d[b.getId()],k=null!=h&&null!=h.inserted?h.inserted:{},m=null!=h&&null!=h.moved?h.moved:{},p=0,h=c.getChildCount(b),g="",l=0;l<h;l++){var n=c.getChildAt(b,l).getId();null==m[g]&&(null==f[EditorUi.DIFF_UPDATE]||null==f[EditorUi.DIFF_UPDATE][n]||null==f[EditorUi.DIFF_UPDATE][n].previous&&null==f[EditorUi.DIFF_UPDATE][n].parent)&&(m[g]=n);g=n}var q=mxUtils.bind(this,function(g){var h=null!=g?g.getId():"";null!=g&&(c.getChildAt(b, -p)!=g&&c.add(b,g,p),this.patchCellRecursive(a,c,g,d,f),p++);g=m[h];null!=g&&(delete m[h],q(c.getCell(g)));g=k[h];null!=g&&(delete k[h],q(this.getCellForJson(g)))});q();for(var t in m)q(c.getCell(m[t])),delete m[t];for(t in k)q(this.getCellForJson(k[t])),delete k[t]}}; +EditorUi.prototype.patchPages=function(a,c,b,d,g){var e={},k=[],m={},n={},q={},f={};if(null!=d&&null!=d[EditorUi.DIFF_UPDATE])for(var l in d[EditorUi.DIFF_UPDATE])e[l]=d[EditorUi.DIFF_UPDATE][l];if(null!=c[EditorUi.DIFF_REMOVE])for(d=0;d<c[EditorUi.DIFF_REMOVE].length;d++)n[c[EditorUi.DIFF_REMOVE][d]]=!0;if(null!=c[EditorUi.DIFF_INSERT])for(d=0;d<c[EditorUi.DIFF_INSERT].length;d++)m[c[EditorUi.DIFF_INSERT][d].previous]=c[EditorUi.DIFF_INSERT][d];if(null!=c[EditorUi.DIFF_UPDATE])for(l in c[EditorUi.DIFF_UPDATE])d= +c[EditorUi.DIFF_UPDATE][l],null!=d.previous&&(f[d.previous]=l);if(null!=a){var p="";for(d=0;d<a.length;d++){var t=a[d].getId();q[t]=a[d];null!=f[p]||n[t]||null!=c[EditorUi.DIFF_UPDATE]&&null!=c[EditorUi.DIFF_UPDATE][t]&&null!=c[EditorUi.DIFF_UPDATE][t].previous||(f[p]=t);p=t}}var u={},x=mxUtils.bind(this,function(a){var d=null!=a?a.getId():"";if(null!=a&&!u[d]){u[d]=!0;k.push(a);var l=null!=c[EditorUi.DIFF_UPDATE]?c[EditorUi.DIFF_UPDATE][d]:null;null!=l&&(this.updatePageRoot(a),null!=l.name&&a.setName(l.name), +null!=l.view&&this.patchViewState(a,l.view),null!=l.cells&&this.patchPage(a,l.cells,e[a.getId()],g),!b||null==l.cells&&null==l.view||(a.needsUpdate=!0))}a=f[d];null!=a&&(delete f[d],x(q[a]));a=m[d];null!=a&&(delete m[d],z(a))}),z=mxUtils.bind(this,function(a){a=mxUtils.parseXml(a.data).documentElement;a=new DiagramPage(a);this.updatePageRoot(a);var c=q[a.getId()];null==c?x(a):(c.root=a.root,this.currentPage==c?this.editor.graph.model.setRoot(c.root):b&&(c.needsUpdate=!0))});x();for(l in f)x(q[f[l]]), +delete f[l];for(l in m)z(m[l]),delete m[l];return k};EditorUi.prototype.patchViewState=function(a,c){if(null!=a.viewState&&null!=c){a==this.currentPage&&(a.viewState=this.editor.graph.getViewState());for(var b in c)a.viewState[b]=JSON.parse(c[b]);a==this.currentPage&&this.editor.graph.setViewState(a.viewState)}}; +EditorUi.prototype.createParentLookup=function(a,c){function b(a){var b=d[a];null==b&&(b={inserted:[],moved:{}},d[a]=b);return b}var d={};if(null!=c[EditorUi.DIFF_INSERT])for(var g=0;g<c[EditorUi.DIFF_INSERT].length;g++){var e=c[EditorUi.DIFF_INSERT][g],k=null!=e.parent?e.parent:"",m=null!=e.previous?e.previous:"";b(k).inserted[m]=e}if(null!=c[EditorUi.DIFF_UPDATE])for(var n in c[EditorUi.DIFF_UPDATE])e=c[EditorUi.DIFF_UPDATE][n],null!=e.previous&&(k=e.parent,null==k&&(g=a.getCell(n),null!=g&&(g= +a.getParent(g),null!=g&&(k=g.getId()))),null!=k&&(b(k).moved[e.previous]=n));return d}; +EditorUi.prototype.patchPage=function(a,c,b,d){var g=a==this.currentPage?this.editor.graph.model:new mxGraphModel(a.root),e=this.createParentLookup(g,c);g.beginUpdate();try{var k=g.updateEdgeParent,m=new mxDictionary,n=[];g.updateEdgeParent=function(a,b){!m.get(a)&&d&&(m.put(a,!0),n.push(a))};var q=e[""],f=null!=q&&null!=q.inserted?q.inserted[""]:null,l=null;null!=f&&(l=this.getCellForJson(f));if(null==l){var p=null!=q&&null!=q.moved?q.moved[""]:null;null!=p&&(l=g.getCell(p))}null!=l&&(g.setRoot(l), +a.root=l);this.patchCellRecursive(a,g,g.root,e,c);if(null!=c[EditorUi.DIFF_REMOVE])for(var t=0;t<c[EditorUi.DIFF_REMOVE].length;t++){var u=g.getCell(c[EditorUi.DIFF_REMOVE][t]);null!=u&&g.remove(u)}if(null!=c[EditorUi.DIFF_UPDATE]){var x=null!=b&&null!=b.cells?b.cells[EditorUi.DIFF_UPDATE]:null;for(p in c[EditorUi.DIFF_UPDATE])this.patchCell(g,g.getCell(p),c[EditorUi.DIFF_UPDATE][p],null!=x?x[p]:null)}if(null!=c[EditorUi.DIFF_INSERT])for(t=0;t<c[EditorUi.DIFF_INSERT].length;t++)f=c[EditorUi.DIFF_INSERT][t], +u=g.getCell(f.id),null!=u&&(g.setTerminal(u,g.getCell(f.source),!0),g.setTerminal(u,g.getCell(f.target),!1));g.updateEdgeParent=k;if(d&&0<n.length)for(t=0;t<n.length;t++)g.contains(n[t])&&g.updateEdgeParent(n[t])}finally{g.endUpdate()}}; +EditorUi.prototype.patchCellRecursive=function(a,c,b,d,g){if(null!=b){for(var e=d[b.getId()],k=null!=e&&null!=e.inserted?e.inserted:{},e=null!=e&&null!=e.moved?e.moved:{},m=0,n=c.getChildCount(b),q="",f=0;f<n;f++){var l=c.getChildAt(b,f).getId();null==e[q]&&(null==g[EditorUi.DIFF_UPDATE]||null==g[EditorUi.DIFF_UPDATE][l]||null==g[EditorUi.DIFF_UPDATE][l].previous&&null==g[EditorUi.DIFF_UPDATE][l].parent)&&(e[q]=l);q=l}n=mxUtils.bind(this,function(e,f){var k=null!=e?e.getId():"";if(null!=e&&f){var l= +c.getCell(k);null!=l&&l!=e&&(e=null)}null!=e&&(c.getChildAt(b,m)!=e&&c.add(b,e,m),this.patchCellRecursive(a,c,e,d,g),m++);return k});for(q=[null];0<q.length;)if(f=q.shift(),f=n(null!=f?f.child:null,null!=f?f.insert:!1),l=e[f],null!=l&&(delete e[f],q.push({child:c.getCell(l)})),l=k[f],null!=l&&(delete k[f],q.push({child:this.getCellForJson(l),insert:!0})),0==q.length){for(f in e)q.push({child:c.getCell(e[f])}),delete e[f];for(f in k)q.push({child:this.getCellForJson(k[f]),insert:!0}),delete k[f]}}}; EditorUi.prototype.patchCell=function(a,c,b,d){if(null!=c&&null!=b){if(null==d||null==d.xmlValue&&(null==d.value||""==d.value))"value"in b?a.setValue(c,b.value):null!=b.xmlValue&&a.setValue(c,mxUtils.parseXml(b.xmlValue).documentElement);null!=d&&null!=d.style||null==b.style||a.setStyle(c,b.style);null!=b.visible&&a.setVisible(c,1==b.visible);null!=b.collapsed&&a.setCollapsed(c,1==b.collapsed);null!=b.vertex&&(c.vertex=1==b.vertex);null!=b.edge&&(c.edge=1==b.edge);null!=b.connectable&&(c.connectable= -1==b.connectable);null!=b.geometry&&a.setGeometry(c,this.codec.decode(mxUtils.parseXml(b.geometry).documentElement));null!=b.source&&a.setTerminal(c,a.getCell(b.source),!0);null!=b.target&&a.setTerminal(c,a.getCell(b.target),!1);for(var f in b)this.cellProperties[f]||(c[f]=b[f])}}; -EditorUi.prototype.getPagesForNode=function(a,c){var b=this.editor.extractGraphModel(a,!0);null!=b&&(a=b);var d=a.getElementsByTagName(c||"diagram"),b=[];if(0<d.length)for(var f=0;f<d.length;f++){var h=new DiagramPage(d[f]);this.updatePageRoot(h);b.push(h)}else"mxGraphModel"==a.nodeName&&(d=this.editor.graph,h=new DiagramPage(a.ownerDocument.createElement("diagram")),h.setName(mxResources.get("pageWithNumber",[1])),mxUtils.setTextContent(h.node,d.compress(d.zapGremlins(mxUtils.getXml(a)))),b.push(h)); +1==b.connectable);null!=b.geometry&&a.setGeometry(c,this.codec.decode(mxUtils.parseXml(b.geometry).documentElement));null!=b.source&&a.setTerminal(c,a.getCell(b.source),!0);null!=b.target&&a.setTerminal(c,a.getCell(b.target),!1);for(var g in b)this.cellProperties[g]||(c[g]=b[g])}}; +EditorUi.prototype.getPagesForNode=function(a,c){var b=this.editor.extractGraphModel(a,!0);null!=b&&(a=b);var d=a.getElementsByTagName(c||"diagram"),b=[];if(0<d.length)for(var g=0;g<d.length;g++){var e=new DiagramPage(d[g]);this.updatePageRoot(e);b.push(e)}else"mxGraphModel"==a.nodeName&&(d=this.editor.graph,e=new DiagramPage(a.ownerDocument.createElement("diagram")),e.setName(mxResources.get("pageWithNumber",[1])),mxUtils.setTextContent(e.node,d.compress(d.zapGremlins(mxUtils.getXml(a)))),b.push(e)); return b}; -EditorUi.prototype.diffPages=function(a,c){for(var b=[],d=[],f={},h={},k={},m=null,p=0;p<c.length;p++)h[c[p].getId()]={page:c[p],prev:m},m=c[p];m=null;for(p=0;p<a.length;p++){var g=a[p].getId(),l=h[g];if(null==l)d.push(g);else{var n=this.diffPage(a[p],l.page),q={};0<Object.keys(n).length&&(q.cells=n);n=this.diffViewState(a[p],l.page);0<Object.keys(n).length&&(q.view=n);if((null!=l.prev?null==m:null!=m)||null!=m&&null!=l.prev&&m.getId()!=l.prev.getId())q.previous=null!=l.prev?l.prev.getId():"";null!= -l.page.getName()&&a[p].getName()!=l.page.getName()&&(q.name=l.page.getName());0<Object.keys(q).length&&(k[g]=q)}delete h[a[p].getId()];m=a[p]}for(g in h)l=h[g],b.push({data:mxUtils.getXml(l.page.node),previous:null!=l.prev?l.prev.getId():""});0<Object.keys(k).length&&(f[EditorUi.DIFF_UPDATE]=k);0<d.length&&(f[EditorUi.DIFF_REMOVE]=d);0<b.length&&(f[EditorUi.DIFF_INSERT]=b);return f}; -EditorUi.prototype.createCellLookup=function(a,c,b){b=null!=b?b:{};b[a.getId()]={cell:a,prev:c};var d=a.getChildCount();c=null;for(var f=0;f<d;f++){var h=a.getChildAt(f);this.createCellLookup(h,c,b);c=h}return b}; -EditorUi.prototype.diffCellRecursive=function(a,c,b,d,f){d=null!=d?d:{};var h=b[a.getId()];delete b[a.getId()];if(null==h)f.push(a.getId());else{var k=this.diffCell(a,h.cell);if(null!=k.parent||(null!=h.prev?null==c:null!=c)||null!=c&&null!=h.prev&&c.getId()!=h.prev.getId())k.previous=null!=h.prev?h.prev.getId():"";0<Object.keys(k).length&&(d[a.getId()]=k)}h=a.getChildCount();c=null;for(k=0;k<h;k++){var m=a.getChildAt(k);this.diffCellRecursive(m,c,b,d,f);c=m}return d}; -EditorUi.prototype.diffPage=function(a,c){var b=[],d=[],f={};this.updatePageRoot(a);this.updatePageRoot(c);var h=this.createCellLookup(c.root),k=this.diffCellRecursive(a.root,null,h,k,d),m;for(m in h){var p=h[m];b.push(this.getJsonForCell(p.cell,p.prev))}0<Object.keys(k).length&&(f[EditorUi.DIFF_UPDATE]=k);0<d.length&&(f[EditorUi.DIFF_REMOVE]=d);0<b.length&&(f[EditorUi.DIFF_INSERT]=b);return f}; -EditorUi.prototype.diffViewState=function(a,c){var b=a.viewState,d=c.viewState,f={};c==this.currentPage&&(d=this.editor.graph.getViewState());if(null!=b&&null!=d)for(var h in this.viewStateProperties){var k=JSON.stringify(b[h]),m=JSON.stringify(d[h]);k!=m&&(f[h]=m)}return f}; +EditorUi.prototype.diffPages=function(a,c){for(var b=[],d=[],g={},e={},k={},m=null,n=0;n<c.length;n++)e[c[n].getId()]={page:c[n],prev:m},m=c[n];m=null;for(n=0;n<a.length;n++){var q=a[n].getId(),f=e[q];if(null==f)d.push(q);else{var l=this.diffPage(a[n],f.page),p={};0<Object.keys(l).length&&(p.cells=l);l=this.diffViewState(a[n],f.page);0<Object.keys(l).length&&(p.view=l);if((null!=f.prev?null==m:null!=m)||null!=m&&null!=f.prev&&m.getId()!=f.prev.getId())p.previous=null!=f.prev?f.prev.getId():"";null!= +f.page.getName()&&a[n].getName()!=f.page.getName()&&(p.name=f.page.getName());0<Object.keys(p).length&&(k[q]=p)}delete e[a[n].getId()];m=a[n]}for(q in e)f=e[q],b.push({data:mxUtils.getXml(f.page.node),previous:null!=f.prev?f.prev.getId():""});0<Object.keys(k).length&&(g[EditorUi.DIFF_UPDATE]=k);0<d.length&&(g[EditorUi.DIFF_REMOVE]=d);0<b.length&&(g[EditorUi.DIFF_INSERT]=b);return g}; +EditorUi.prototype.createCellLookup=function(a,c,b){b=null!=b?b:{};b[a.getId()]={cell:a,prev:c};var d=a.getChildCount();c=null;for(var g=0;g<d;g++){var e=a.getChildAt(g);this.createCellLookup(e,c,b);c=e}return b}; +EditorUi.prototype.diffCellRecursive=function(a,c,b,d,g){d=null!=d?d:{};var e=b[a.getId()];delete b[a.getId()];if(null==e)g.push(a.getId());else{var k=this.diffCell(a,e.cell);if(null!=k.parent||(null!=e.prev?null==c:null!=c)||null!=c&&null!=e.prev&&c.getId()!=e.prev.getId())k.previous=null!=e.prev?e.prev.getId():"";0<Object.keys(k).length&&(d[a.getId()]=k)}e=a.getChildCount();c=null;for(k=0;k<e;k++){var m=a.getChildAt(k);this.diffCellRecursive(m,c,b,d,g);c=m}return d}; +EditorUi.prototype.diffPage=function(a,c){var b=[],d=[],g={};this.updatePageRoot(a);this.updatePageRoot(c);var e=this.createCellLookup(c.root),k=this.diffCellRecursive(a.root,null,e,k,d),m;for(m in e){var n=e[m];b.push(this.getJsonForCell(n.cell,n.prev))}0<Object.keys(k).length&&(g[EditorUi.DIFF_UPDATE]=k);0<d.length&&(g[EditorUi.DIFF_REMOVE]=d);0<b.length&&(g[EditorUi.DIFF_INSERT]=b);return g}; +EditorUi.prototype.diffViewState=function(a,c){var b=a.viewState,d=c.viewState,g={};c==this.currentPage&&(d=this.editor.graph.getViewState());if(null!=b&&null!=d)for(var e in this.viewStateProperties){var k=JSON.stringify(b[e]),m=JSON.stringify(d[e]);k!=m&&(g[e]=m)}return g}; EditorUi.prototype.getCellForJson=function(a){var c=null!=a.geometry?this.codec.decode(mxUtils.parseXml(a.geometry).documentElement):null,b=a.value;null!=a.xmlValue&&(b=mxUtils.parseXml(a.xmlValue).documentElement);c=new mxCell(b,c,a.style);c.connectable=0!=a.connectable;c.collapsed=1==a.collapsed;c.visible=0!=a.visible;c.vertex=1==a.vertex;c.edge=1==a.edge;c.id=a.id;for(var d in a)this.cellProperties[d]||(c[d]=a[d]);return c}; EditorUi.prototype.getJsonForCell=function(a,c){var b={id:a.getId()};a.vertex&&(b.vertex=1);a.edge&&(b.edge=1);a.connectable||(b.connectable=0);null!=a.parent&&(b.parent=a.parent.getId());null!=c&&(b.previous=c.getId());null!=a.source&&(b.source=a.source.getId());null!=a.target&&(b.target=a.target.getId());null!=a.style&&(b.style=a.style);null!=a.geometry&&(b.geometry=mxUtils.getXml(this.codec.encode(a.geometry)));a.collapsed&&(b.collapsed=1);a.visible||(b.visible=0);null!=a.value&&("object"===typeof a.value&& "number"===typeof a.value.nodeType&&"string"===typeof a.value.nodeName&&"function"===typeof a.value.getAttribute?b.xmlValue=mxUtils.getXml(a.value):b.value=a.value);for(var d in a)this.cellProperties[d]||"function"===typeof a[d]||(b[d]=a[d]);return b}; EditorUi.prototype.diffCell=function(a,c){function b(a){return null!=a&&"object"===typeof a&&"number"===typeof a.nodeType&&"string"===typeof a.nodeName&&"function"===typeof a.getAttribute}var d={};a.vertex!=c.vertex&&(d.vertex=c.vertex?1:0);a.edge!=c.edge&&(d.edge=c.edge?1:0);a.connectable!=c.connectable&&(d.connectable=c.connectable?1:0);if((null!=a.parent?null==c.parent:null!=c.parent)||null!=a.parent&&null!=c.parent&&a.parent.getId()!=c.parent.getId())d.parent=null!=c.parent?c.parent.getId():""; if((null!=a.source?null==c.source:null!=c.source)||null!=a.source&&null!=c.source&&a.source.getId()!=c.source.getId())d.source=null!=c.source?c.source.getId():"";if((null!=a.target?null==c.target:null!=c.target)||null!=a.target&&null!=c.target&&a.target.getId()!=c.target.getId())d.target=null!=c.target?c.target.getId():"";b(a.value)&&b(c.value)?a.value.isEqualNode(c.value)||(d.xmlValue=mxUtils.getXml(c.value)):a.value!=c.value&&(b(c.value)?d.xmlValue=mxUtils.getXml(c.value):d.value=null!=c.value? -c.value:null);a.style!=c.style&&(d.style=c.style);a.visible!=c.visible&&(d.visible=c.visible?1:0);a.collapsed!=c.collapsed&&(d.collapsed=c.collapsed?1:0);this.isObjectEqual(a.geometry,c.geometry,new mxGeometry)||(d.geometry=mxUtils.getXml(this.codec.encode(c.geometry)));for(var f in a)this.cellProperties[f]||"function"===typeof a[f]||"function"===typeof c[f]||a[f]==c[f]||(d[f]=void 0===c[f]?null:c[f]);for(f in c)f in a||this.cellProperties[f]||"function"===typeof a[f]||"function"===typeof c[f]||a[f]== -c[f]||(d[f]=void 0===c[f]?null:c[f]);return d};EditorUi.prototype.isObjectEqual=function(a,c,b){if(null==a&&null==c)return!0;if(null!=a?null==c:null!=c)return!1;var d=function(a,c){return null==b||b[a]!=c?!0===c?1:c:void 0};return JSON.stringify(a,d)==JSON.stringify(c,d)};var mxSettings={currentVersion:17,defaultFormatWidth:600>screen.width?"0":"240",key:".drawio-config",getLanguage:function(){return mxSettings.settings.language},setLanguage:function(a){mxSettings.settings.language=a},getUi:function(){return mxSettings.settings.ui},setUi:function(a){mxSettings.settings.ui=a},getShowStartScreen:function(){return mxSettings.settings.showStartScreen},setShowStartScreen:function(a){mxSettings.settings.showStartScreen=a},getGridColor:function(){return mxSettings.settings.gridColor}, +c.value:null);a.style!=c.style&&(d.style=c.style);a.visible!=c.visible&&(d.visible=c.visible?1:0);a.collapsed!=c.collapsed&&(d.collapsed=c.collapsed?1:0);if(!this.isObjectEqual(a.geometry,c.geometry,new mxGeometry)){var g=this.codec.encode(c.geometry);null!=g&&(d.geometry=mxUtils.getXml(g))}for(var e in a)this.cellProperties[e]||"function"===typeof a[e]||"function"===typeof c[e]||a[e]==c[e]||(d[e]=void 0===c[e]?null:c[e]);for(e in c)e in a||this.cellProperties[e]||"function"===typeof a[e]||"function"=== +typeof c[e]||a[e]==c[e]||(d[e]=void 0===c[e]?null:c[e]);return d};EditorUi.prototype.isObjectEqual=function(a,c,b){if(null==a&&null==c)return!0;if(null!=a?null==c:null!=c)return!1;var d=function(a,c){return null==b||b[a]!=c?!0===c?1:c:void 0};return JSON.stringify(a,d)==JSON.stringify(c,d)};var mxSettings={currentVersion:17,defaultFormatWidth:600>screen.width?"0":"240",key:".drawio-config",getLanguage:function(){return mxSettings.settings.language},setLanguage:function(a){mxSettings.settings.language=a},getUi:function(){return mxSettings.settings.ui},setUi:function(a){mxSettings.settings.ui=a},getShowStartScreen:function(){return mxSettings.settings.showStartScreen},setShowStartScreen:function(a){mxSettings.settings.showStartScreen=a},getGridColor:function(){return mxSettings.settings.gridColor}, setGridColor:function(a){mxSettings.settings.gridColor=a},getAutosave:function(){return mxSettings.settings.autosave},setAutosave:function(a){mxSettings.settings.autosave=a},getResizeImages:function(){return mxSettings.settings.resizeImages},setResizeImages:function(a){mxSettings.settings.resizeImages=a},getOpenCounter:function(){return mxSettings.settings.openCounter},setOpenCounter:function(a){mxSettings.settings.openCounter=a},getLibraries:function(){return mxSettings.settings.libraries},setLibraries:function(a){mxSettings.settings.libraries= a},addCustomLibrary:function(a){mxSettings.load();0>mxUtils.indexOf(mxSettings.settings.customLibraries,a)&&("L.scratchpad"===a?mxSettings.settings.customLibraries.splice(0,0,a):mxSettings.settings.customLibraries.push(a));mxSettings.save()},removeCustomLibrary:function(a){mxSettings.load();mxUtils.remove(a,mxSettings.settings.customLibraries);mxSettings.save()},getCustomLibraries:function(){return mxSettings.settings.customLibraries},getPlugins:function(){return mxSettings.settings.plugins},setPlugins:function(a){mxSettings.settings.plugins= a},getRecentColors:function(){return mxSettings.settings.recentColors},setRecentColors:function(a){mxSettings.settings.recentColors=a},getFormatWidth:function(){return parseInt(mxSettings.settings.formatWidth)},setFormatWidth:function(a){mxSettings.settings.formatWidth=a},isCreateTarget:function(){return mxSettings.settings.createTarget},setCreateTarget:function(a){mxSettings.settings.createTarget=a},getPageFormat:function(){return mxSettings.settings.pageFormat},setPageFormat:function(a){mxSettings.settings.pageFormat= @@ -8260,13 +8268,12 @@ null:(mxSettings.settings=a,null==mxSettings.settings.plugins&&(mxSettings.setti mxSettings.defaultFormatWidth),null!=mxSettings.settings.lastAlert&&delete mxSettings.settings.lastAlert,null==mxSettings.settings.createTarget&&(mxSettings.settings.createTarget=!1),null==mxSettings.settings.pageFormat&&(mxSettings.settings.pageFormat=mxGraph.prototype.pageFormat),null==mxSettings.settings.search&&(mxSettings.settings.search=!0),null==mxSettings.settings.showStartScreen&&(mxSettings.settings.showStartScreen=!0),null==mxSettings.settings.gridColor&&(mxSettings.settings.gridColor= mxGraphView.prototype.gridColor),null==mxSettings.settings.autosave&&(mxSettings.settings.autosave=!0),null!=mxSettings.settings.scratchpadSeen&&delete mxSettings.settings.scratchpadSeen))},clear:function(){isLocalStorage&&localStorage.removeItem(mxSettings.key)}};("undefined"==typeof mxLoadSettings||mxLoadSettings)&&mxSettings.load();DrawioFileSync=function(a){mxEventSource.call(this);this.lastActivity=new Date;this.clientId=Editor.guid();this.ui=a.ui;this.file=a;this.onlineListener=mxUtils.bind(this,function(){this.updateOnlineState();this.isConnected()&&this.fileChangedNotify()});mxEvent.addListener(window,"online",this.onlineListener);this.visibleListener=mxUtils.bind(this,function(){"hidden"==document.visibilityState?this.isConnected()&&this.stop():this.start()});mxEvent.addListener(document,"visibilitychange",this.visibleListener); this.activityListener=mxUtils.bind(this,function(a){this.lastActivity=new Date;this.start()});mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.activityListener);mxEvent.addListener(document,"keypress",this.activityListener);mxEvent.addListener(window,"focus",this.activityListener);!mxClient.IS_POINTER&&mxClient.IS_TOUCH&&(mxEvent.addListener(document,"touchstart",this.activityListener),mxEvent.addListener(document,"touchmove",this.activityListener));this.pusherErrorListener= -mxUtils.bind(this,function(a){null!=a.error&&null!=a.error.data&&4004===a.error.data.code&&EditorUi.logError("Error: Pusher Limit",null,this.file.getId())});this.connectionListener=mxUtils.bind(this,function(){this.updateOnlineState();this.updateStatus();if(this.isConnected()){if(!this.announced){var a=this.file.getCurrentUser(),b={a:"join"};null!=a&&(b.name=a.displayName,b.uid=a.id);mxUtils.post(this.cacheUrl,this.getIdParameters()+"&msg="+encodeURIComponent(this.objectToString(this.createMessage(b)))); +mxUtils.bind(this,function(a){null!=a.error&&null!=a.error.data&&4004===a.error.data.code&&EditorUi.logError("Error: Pusher Limit",null,this.file.getId())});this.connectionListener=mxUtils.bind(this,function(){this.updateOnlineState();this.updateStatus();if(this.isConnected()){if(!this.announced){var a=this.file.getCurrentUser(),b={a:"join"};null!=a&&(b.name=a.displayName,b.uid=a.id);mxUtils.post(EditorUi.cacheUrl,this.getIdParameters()+"&msg="+encodeURIComponent(this.objectToString(this.createMessage(b)))); this.file.stats.msgSent++;this.announced=!0}this.fileChangedNotify()}});this.changeListener=mxUtils.bind(this,function(a){this.file.stats.msgReceived++;this.lastActivity=new Date;if(this.enabled&&!this.file.inConflictState&&!this.file.redirectDialogShowing)try{var b=this.stringToObject(a);null!=b&&(EditorUi.debug("Sync.message",[this],b,a.length,"bytes"),b.v>DrawioFileSync.PROTOCOL?this.file.redirectToNewApp(mxUtils.bind(this,function(){})):b.v===DrawioFileSync.PROTOCOL&&null!=b.d&&this.handleMessageData(b.d))}catch(d){null!= -window.console&&"1"==urlParams.test&&console.log(d)}})};DrawioFileSync.PROTOCOL=6;mxUtils.extend(DrawioFileSync,mxEventSource);DrawioFileSync.prototype.maxCacheEntrySize=1E6;DrawioFileSync.prototype.enabled=!0;DrawioFileSync.prototype.updateStatusInterval=1E4;DrawioFileSync.prototype.cacheUrl="1"==urlParams.dev?"/cache":"https://rt.draw.io/cache";DrawioFileSync.prototype.channelId=null;DrawioFileSync.prototype.channel=null;DrawioFileSync.prototype.catchupRetryCount=0; -DrawioFileSync.prototype.maxCatchupRetries=15;DrawioFileSync.prototype.maxCacheReadyRetries=2;DrawioFileSync.prototype.cacheReadyDelay=500;DrawioFileSync.prototype.inactivityTimeoutSeconds=3600;DrawioFileSync.prototype.lastActivity=null; -DrawioFileSync.prototype.start=function(){null==this.channelId&&(this.channelId=this.file.getChannelId());null==this.key&&(this.key=this.file.getChannelKey());if(null==this.pusher&&null!=this.channelId&&"hidden"!=document.visibilityState){this.pusher=this.ui.getPusher();if(null!=this.pusher){try{null!=this.pusher.connection&&this.pusher.connection.bind("error",this.pusherErrorListener)}catch(b){}try{if(this.pusher.connect(),this.channel=this.pusher.subscribe(this.channelId),EditorUi.debug("Sync.start", -[this]),null==this.file.stats.start&&(this.file.stats.start=(new Date).toISOString(),!this.ui.isOffline())){var a=this.file.getCurrentUser(),c=null!=a?this.ui.hashValue(a.id):"unknown";EditorUi.logEvent({category:"RT-START-"+DrawioFile.SYNC,action:"file-"+this.file.getId()+"-mode-"+this.file.getMode()+"-size-"+this.file.getSize()+"-user-"+c+"-client-"+this.clientId,label:this.file.stats.start})}}catch(b){}this.installListeners()}window.setTimeout(mxUtils.bind(this,function(){this.lastModified=this.file.getLastModifiedDate(); -this.lastActivity=new Date;this.resetUpdateStatusThread();this.updateOnlineState();this.updateStatus()},0))}};DrawioFileSync.prototype.isConnected=function(){return null!=this.pusher&&null!=this.pusher.connection?"connected"==this.pusher.connection.state:!1}; +window.console&&"1"==urlParams.test&&console.log(d)}})};DrawioFileSync.PROTOCOL=6;mxUtils.extend(DrawioFileSync,mxEventSource);DrawioFileSync.prototype.maxCacheEntrySize=1E6;DrawioFileSync.prototype.enabled=!0;DrawioFileSync.prototype.updateStatusInterval=1E4;DrawioFileSync.prototype.channelId=null;DrawioFileSync.prototype.channel=null;DrawioFileSync.prototype.catchupRetryCount=0;DrawioFileSync.prototype.maxCatchupRetries=15;DrawioFileSync.prototype.maxCacheReadyRetries=2; +DrawioFileSync.prototype.cacheReadyDelay=500;DrawioFileSync.prototype.inactivityTimeoutSeconds=1800;DrawioFileSync.prototype.lastActivity=null; +DrawioFileSync.prototype.start=function(){null==this.channelId&&(this.channelId=this.file.getChannelId());null==this.key&&(this.key=this.file.getChannelKey());if(null==this.pusher&&null!=this.channelId&&"hidden"!=document.visibilityState){this.pusher=this.ui.getPusher();if(null!=this.pusher){try{null!=this.pusher.connection&&this.pusher.connection.bind("error",this.pusherErrorListener)}catch(a){}try{this.pusher.connect(),this.channel=this.pusher.subscribe(this.channelId),EditorUi.debug("Sync.start", +[this])}catch(a){}this.installListeners()}window.setTimeout(mxUtils.bind(this,function(){this.lastModified=this.file.getLastModifiedDate();this.lastActivity=new Date;this.resetUpdateStatusThread();this.updateOnlineState();this.updateStatus()},0))}};DrawioFileSync.prototype.isConnected=function(){return null!=this.pusher&&null!=this.pusher.connection?"connected"==this.pusher.connection.state:!1}; DrawioFileSync.prototype.updateOnlineState=function(){var a=mxUtils.bind(this,function(a){mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){this.enabled=!this.enabled;this.ui.updateButtonContainer();this.resetUpdateStatusThread();this.updateOnlineState();this.updateStatus();!this.file.inConflictState&&this.enabled&&this.fileChangedNotify()}))});if("min"==uiTheme&&null!=this.ui.buttonContainer){if(null==this.collaboratorsElement){var c=document.createElement("a");c.className="geToolbarButton"; c.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;cursor:pointer;float:left;";c.style.backgroundPosition="center center";c.style.backgroundRepeat="no-repeat";c.style.backgroundSize="24px 24px";c.style.height="24px";c.style.width="24px";a(c);this.ui.buttonContainer.appendChild(c);this.collaboratorsElement=c}}else null!=this.ui.toolbarContainer&&null==this.collaboratorsElement&&(c=document.createElement("a"),c.className="geButton",c.style.position="absolute", c.style.display="inline-block",c.style.verticalAlign="bottom",c.style.color="#666",c.style.top="5px",c.style.right="atlas"==uiTheme?"42px":"60px",c.style.padding="2px",c.style.fontSize="8pt",c.style.verticalAlign="middle",c.style.textDecoration="none",c.style.backgroundPosition="center center",c.style.backgroundRepeat="no-repeat",c.style.backgroundSize="16px 16px",c.style.width="16px",c.style.height="16px",mxUtils.setOpacity(c,60),"dark"==uiTheme&&(c.style.filter="invert(100%)"),mxEvent.addListener(c, @@ -8282,64 +8289,63 @@ DrawioFileSync.prototype.isValidState=function(){return this.ui.getCurrentFile() DrawioFileSync.prototype.fileChangedNotify=function(){if(this.isValidState())if(this.file.savingFile)this.remoteFileChanged=!0;else var a=this.fileChanged(mxUtils.bind(this,function(a){this.updateStatus()}),mxUtils.bind(this,function(a){this.file.handleFileError(a)}),mxUtils.bind(this,function(){return!this.file.savingFile&&this.notifyThread!=a}))}; DrawioFileSync.prototype.fileChanged=function(a,c,b){var d=window.setTimeout(mxUtils.bind(this,function(){null!=b&&b()||(this.isValidState()?this.file.loadPatchDescriptor(mxUtils.bind(this,function(d){null!=b&&b()||(this.isValidState()?this.catchup(this.file.getDescriptorEtag(d),this.file.getDescriptorSecret(d),a,c,b):null!=c&&c())}),c):null!=c&&c())}),0);return this.notifyThread=d}; DrawioFileSync.prototype.reloadDescriptor=function(){this.file.loadDescriptor(mxUtils.bind(this,function(a){null!=a?(this.file.setDescriptorEtag(a,this.file.getCurrentEtag()),this.updateDescriptor(a),this.fileChangedNotify()):(this.file.inConflictState=!0,this.file.handleFileError())}),mxUtils.bind(this,function(a){this.file.inConflictState=!0;this.file.handleFileError(a)}))};DrawioFileSync.prototype.updateDescriptor=function(a){this.file.setDescriptor(a);this.file.descriptorChanged();this.start()}; -DrawioFileSync.prototype.catchup=function(a,c,b,d,f){if(null==f||!f()){var h=this.file.getCurrentEtag();if(h==a)null!=b&&b();else if(this.isValidState()){var k=0,m=!1,p=mxUtils.bind(this,function(){null!=f&&f()||(h!=this.file.getCurrentEtag()?null!=b&&b():this.isValidState()?mxUtils.get(this.cacheUrl+"?id="+encodeURIComponent(this.channelId)+"&from="+encodeURIComponent(h)+"&to="+encodeURIComponent(a)+(null!=c?"&secret="+encodeURIComponent(c):""),mxUtils.bind(this,function(c){this.file.stats.bytesReceived+= -c.getText().length;if(null==f||!f())if(h!=this.file.getCurrentEtag())null!=b&&b();else if(this.isValidState()){var g=null,n=[],q=[];if(200<=c.getStatus()&&299>=c.getStatus()&&0<c.getText().length)try{var t=JSON.parse(c.getText());if(null!=t&&0<t.length)for(var v=0;v<t.length;v++){var w=this.stringToObject(t[v]);if(w.v>DrawioFileSync.PROTOCOL){m=!0;q=[];break}else if(w.v===DrawioFileSync.PROTOCOL&&null!=w.d)g=w.d.checksum,q.push(w.d.patch),null!=w.d.details&&(w.d.details.checksum=g,n.push(JSON.stringify(w.d.details))); -else{m=!0;q=[];break}}}catch(y){q=[],null!=window.console&&"1"==urlParams.test&&console.log(y)}try{0<q.length?(this.file.stats.cacheHits++,this.merge(q,g,a,b,d,f,n)):k<=this.maxCacheReadyRetries&&!m&&401!=c.getStatus()?(k++,this.file.stats.cacheMiss++,window.setTimeout(p,(k+1)*this.cacheReadyDelay)):(this.file.stats.cacheFail++,this.reload(b,d,f))}catch(y){null!=d&&d(y)}}else null!=d&&d()})):null!=d&&d())});window.setTimeout(p,this.cacheReadyDelay)}else null!=d&&d()}}; -DrawioFileSync.prototype.reload=function(a,c,b,d){this.file.updateFile(mxUtils.bind(this,function(){this.lastModified=this.file.getLastModifiedDate();this.updateStatus();this.start();null!=a&&a()}),mxUtils.bind(this,function(a){null!=c&&c(a)}),b,d)}; -DrawioFileSync.prototype.merge=function(a,c,b,d,f,h,k){try{this.file.stats.merged++;this.lastModified=new Date;this.file.shadowPages=null!=this.file.shadowPages?this.file.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.file.shadowData).documentElement);this.file.backupPatch=this.file.isModified()?this.ui.diffPages(this.file.shadowPages,this.ui.pages):null;if(this.file.ignorePatches(a))this.file.stats.shadowState=this.ui.hashValue(b);else{for(h=0;h<a.length;h++)this.file.shadowPages=this.ui.patchPages(this.file.shadowPages, -a[h]);this.file.stats.shadowState=this.ui.hashValue(b);h={};var m=null!=c?this.ui.getHashValueForPages(this.file.shadowPages,h):null;"1"==urlParams.test&&EditorUi.debug("Sync.merge",[this],"from",this.file.getCurrentEtag(),"to",b,"backup",this.file.backupPatch,"attempt",this.catchupRetryCount,"details",k,h,"patches",a,"checksum",c==m,c);if(null!=c&&c!=m){var p=this.ui.hashValue(this.file.getCurrentEtag()),g=this.ui.hashValue(b);h.inConflictState=this.file.inConflictState;h.invalidChecksum=this.file.invalidChecksum; -this.file.checksumError(f,a,"From: "+p+"\nTo: "+g+(null!=k&&0<k.length?"\nDetails: "+k.join(", "):"")+"\nChecksum: "+c+"\nCurrent: "+m+(null!=h?"\nCurrent Details: "+JSON.stringify(h):""),b);return}this.file.patch(a,DrawioFile.LAST_WRITE_WINS?this.file.backupPatch:null)}this.file.stats.lastMergeTime=(new Date).toISOString();this.file.stats.lastMerge=k;this.file.invalidChecksum=!1;this.file.inConflictState=!1;this.file.setCurrentEtag(b);this.file.backupPatch=null;null!=d&&d()}catch(l){this.file.inConflictState= -!0;this.file.invalidChecksum=!0;this.file.descriptorChanged();null!=f&&f(l);try{p=this.ui.hashValue(this.file.getCurrentEtag()),g=this.ui.hashValue(b),this.file.sendErrorReport("Error in merge","From: "+p+"\nTo: "+g+(null!=k&&0<k.length?"\nDetails: "+k.join(", "):"")+"\nChecksum: "+c+"\nPatches:\n"+this.file.compressReportData(JSON.stringify(a,null,2)),l)}catch(n){}}}; -DrawioFileSync.prototype.descriptorChanged=function(a){this.lastModified=this.file.getLastModifiedDate();if(null!=this.channelId){var c=this.objectToString(this.createMessage({a:"desc",m:this.lastModified.getTime()})),b=this.file.getCurrentEtag(),d=this.objectToString({});mxUtils.post(this.cacheUrl,this.getIdParameters()+"&from="+encodeURIComponent(a)+"&to="+encodeURIComponent(b)+"&msg="+encodeURIComponent(c)+"&data="+encodeURIComponent(d));this.file.stats.bytesSent+=d.length;this.file.stats.msgSent++}this.updateStatus()}; +DrawioFileSync.prototype.catchup=function(a,c,b,d,g){if(null==g||!g()){var e=this.file.getCurrentEtag();if(e==a)null!=b&&b();else if(this.isValidState()){var k=0,m=!1,n=mxUtils.bind(this,function(){if(null==g||!g())if(e!=this.file.getCurrentEtag())null!=b&&b();else if(this.isValidState()){var q=!0,f=window.setTimeout(mxUtils.bind(this,function(){q=!1;this.reload(b,d,g)}),this.ui.timeout);mxUtils.get(EditorUi.cacheUrl+"?id="+encodeURIComponent(this.channelId)+"&from="+encodeURIComponent(e)+"&to="+ +encodeURIComponent(a)+(null!=c?"&secret="+encodeURIComponent(c):""),mxUtils.bind(this,function(c){this.file.stats.bytesReceived+=c.getText().length;window.clearTimeout(f);if(q&&(null==g||!g()))if(e!=this.file.getCurrentEtag())null!=b&&b();else if(this.isValidState()){var l=null,t=[];if(200<=c.getStatus()&&299>=c.getStatus()&&0<c.getText().length)try{var u=JSON.parse(c.getText());if(null!=u&&0<u.length)for(var x=0;x<u.length;x++){var z=this.stringToObject(u[x]);if(z.v>DrawioFileSync.PROTOCOL){m=!0; +t=[];break}else if(z.v===DrawioFileSync.PROTOCOL&&null!=z.d)l=z.d.checksum,t.push(z.d.patch);else{m=!0;t=[];break}}}catch(v){t=[],null!=window.console&&"1"==urlParams.test&&console.log(v)}try{0<t.length?(this.file.stats.cacheHits++,this.merge(t,l,a,b,d,g)):k<=this.maxCacheReadyRetries&&!m&&401!=c.getStatus()?(k++,this.file.stats.cacheMiss++,window.setTimeout(n,(k+1)*this.cacheReadyDelay)):(this.file.stats.cacheFail++,this.reload(b,d,g))}catch(v){null!=d&&d(v)}}else null!=d&&d()}))}else null!=d&&d()}); +window.setTimeout(n,this.cacheReadyDelay)}else null!=d&&d()}};DrawioFileSync.prototype.reload=function(a,c,b,d){this.file.updateFile(mxUtils.bind(this,function(){this.lastModified=this.file.getLastModifiedDate();this.updateStatus();this.start();null!=a&&a()}),mxUtils.bind(this,function(a){null!=c&&c(a)}),b,d)}; +DrawioFileSync.prototype.merge=function(a,c,b,d,g,e){try{this.file.stats.merged++;this.lastModified=new Date;this.file.shadowPages=null!=this.file.shadowPages?this.file.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.file.shadowData).documentElement);this.file.backupPatch=this.file.isModified()?this.ui.diffPages(this.file.shadowPages,this.ui.pages):null;if(!this.file.ignorePatches(a)){for(e=0;e<a.length;e++)this.file.shadowPages=this.ui.patchPages(this.file.shadowPages,a[e]);var k=null!= +c?this.ui.getHashValueForPages(this.file.shadowPages):null;"1"==urlParams.test&&EditorUi.debug("Sync.merge",[this],"from",this.file.getCurrentEtag(),"to",b,"backup",this.file.backupPatch,"attempt",this.catchupRetryCount,"patches",a,"checksum",c==k,c);if(null!=c&&c!=k){var m=this.ui.hashValue(this.file.getCurrentEtag()),n=this.ui.hashValue(b);this.file.checksumError(g,a,"From: "+m+"\nTo: "+n+"\nChecksum: "+c+"\nCurrent: "+k,b,"merge");return}this.file.patch(a,DrawioFile.LAST_WRITE_WINS?this.file.backupPatch: +null)}this.file.invalidChecksum=!1;this.file.inConflictState=!1;this.file.setCurrentEtag(b);this.file.backupPatch=null;null!=d&&d()}catch(q){this.file.inConflictState=!0;this.file.invalidChecksum=!0;this.file.descriptorChanged();null!=g&&g(q);try{this.file.errorReportsEnabled&&(m=this.ui.hashValue(this.file.getCurrentEtag()),n=this.ui.hashValue(b),this.file.sendErrorReport("Error in merge","From: "+m+"\nTo: "+n+"\nChecksum: "+c+"\nPatches:\n"+this.file.compressReportData(JSON.stringify(a,null,2)), +q))}catch(f){}}}; +DrawioFileSync.prototype.descriptorChanged=function(a){this.lastModified=this.file.getLastModifiedDate();if(null!=this.channelId){var c=this.objectToString(this.createMessage({a:"desc",m:this.lastModified.getTime()})),b=this.file.getCurrentEtag(),d=this.objectToString({});mxUtils.post(EditorUi.cacheUrl,this.getIdParameters()+"&from="+encodeURIComponent(a)+"&to="+encodeURIComponent(b)+"&msg="+encodeURIComponent(c)+"&data="+encodeURIComponent(d));this.file.stats.bytesSent+=d.length;this.file.stats.msgSent++}this.updateStatus()}; DrawioFileSync.prototype.objectToString=function(a){a=this.ui.editor.graph.compress(JSON.stringify(a));null!=this.key&&"undefined"!==typeof CryptoJS&&(a=CryptoJS.AES.encrypt(a,this.key).toString());return a};DrawioFileSync.prototype.stringToObject=function(a){null!=this.key&&"undefined"!==typeof CryptoJS&&(a=CryptoJS.AES.decrypt(a,this.key).toString(CryptoJS.enc.Utf8));return JSON.parse(this.ui.editor.graph.decompress(a))}; -DrawioFileSync.prototype.fileSaved=function(a,c,b,d){this.lastModified=this.file.getLastModifiedDate();this.resetUpdateStatusThread();this.catchupRetryCount=0;if(!this.ui.isOffline()&&!this.file.inConflictState&&!this.file.redirectDialogShowing&&(this.start(),null!=this.channelId&&this.isConnected())){var f=null!=this.file.shadowPages?this.file.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.file.shadowData).documentElement),h={v:EditorUi.VERSION,t:(new Date).toISOString(),ua:navigator.userAgent}; -d=this.ui.getHashValueForPages(a,h);f=this.ui.diffPages(f,a);c=this.file.getDescriptorEtag(c);var k=this.file.getCurrentEtag();h.from=this.ui.hashValue(c);h.to=this.ui.hashValue(k);var h=this.objectToString(this.createMessage({patch:f,checksum:d,details:h})),m=this.objectToString(this.createMessage({m:this.lastModified.getTime()})),p=this.file.getDescriptorSecret(this.file.getDescriptor());this.file.stats.bytesSent+=h.length;this.file.stats.msgSent++;mxUtils.post(this.cacheUrl,this.getIdParameters()+ -"&from="+encodeURIComponent(c)+"&to="+encodeURIComponent(k)+"&msg="+encodeURIComponent(m)+(null!=p?"&secret="+encodeURIComponent(p):"")+(h.length<this.maxCacheEntrySize?"&data="+encodeURIComponent(h):""),mxUtils.bind(this,function(a){}));"1"==urlParams.test&&EditorUi.debug("Sync.fileSaved",[this],"from",c,"to",k,h.length,"bytes","diff",f,"checksum",d)}this.file.shadowPages=a;this.file.stats.emptyPrefix=this.file.stats.emptyPrefix||0==this.ui.editor.graph.model.prefix.length;null!=b&&b()}; -DrawioFileSync.prototype.getIdParameters=function(){var a="id="+this.channelId;null!=this.pusher&&null!=this.pusher.connection&&(a+="&sid="+this.pusher.connection.socket_id);return a};DrawioFileSync.prototype.createMessage=function(a){return{v:DrawioFileSync.PROTOCOL,d:a,c:this.clientId}}; -DrawioFileSync.prototype.fileConflict=function(a,c,b){this.catchupRetryCount++;if(this.catchupRetryCount<this.maxCatchupRetries)if(this.file.stats.conflicts++,null!=a){var d=this.file.getDescriptorEtag(a);a=this.file.getDescriptorSecret(a);this.catchup(d,a,c,b)}else this.fileChanged(c,b);else this.catchupRetryCount=0,this.file.stats.timeouts++,null!=b&&b({message:mxResources.get("timeout")})}; +DrawioFileSync.prototype.fileSaved=function(a,c,b,d){this.lastModified=this.file.getLastModifiedDate();this.resetUpdateStatusThread();this.catchupRetryCount=0;if(!this.ui.isOffline()&&!this.file.inConflictState&&!this.file.redirectDialogShowing&&(this.start(),null!=this.channelId&&this.isConnected())){var g=null!=this.file.shadowPages?this.file.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.file.shadowData).documentElement);d=this.ui.getHashValueForPages(a);g=this.ui.diffPages(g,a);c=this.file.getDescriptorEtag(c); +var e=this.file.getCurrentEtag(),k=this.objectToString(this.createMessage({patch:g,checksum:d})),m=this.objectToString(this.createMessage({m:this.lastModified.getTime()})),n=this.file.getDescriptorSecret(this.file.getDescriptor());this.file.stats.bytesSent+=k.length;this.file.stats.msgSent++;mxUtils.post(EditorUi.cacheUrl,this.getIdParameters()+"&from="+encodeURIComponent(c)+"&to="+encodeURIComponent(e)+"&msg="+encodeURIComponent(m)+(null!=n?"&secret="+encodeURIComponent(n):"")+(k.length<this.maxCacheEntrySize? +"&data="+encodeURIComponent(k):""),mxUtils.bind(this,function(a){}));"1"==urlParams.test&&EditorUi.debug("Sync.fileSaved",[this],"from",c,"to",e,k.length,"bytes","diff",g,"checksum",d)}this.file.shadowPages=a;null!=b&&b()};DrawioFileSync.prototype.getIdParameters=function(){var a="id="+this.channelId;null!=this.pusher&&null!=this.pusher.connection&&(a+="&sid="+this.pusher.connection.socket_id);return a};DrawioFileSync.prototype.createMessage=function(a){return{v:DrawioFileSync.PROTOCOL,d:a,c:this.clientId}}; +DrawioFileSync.prototype.fileConflict=function(a,c,b){this.catchupRetryCount++;if(this.catchupRetryCount<this.maxCatchupRetries)if(this.file.stats.conflicts++,null!=a){var d=this.file.getDescriptorEtag(a);a=this.file.getDescriptorSecret(a);this.catchup(d,a,c,b)}else this.fileChanged(c,b);else this.file.stats.timeouts++,this.catchupRetryCount=0,null!=b&&b({message:mxResources.get("timeout")})}; DrawioFileSync.prototype.stop=function(){null!=this.pusher&&(EditorUi.debug("Sync.stop",[this]),null!=this.pusher.connection&&(this.pusher.connection.unbind("state_change",this.connectionListener),this.pusher.connection.unbind("error",this.pusherErrorListener)),null!=this.channel&&(this.channel.unbind("changed",this.changeListener),this.channel=null),this.pusher.disconnect(),this.pusher=null);this.updateOnlineState();this.updateStatus()}; -DrawioFileSync.prototype.destroy=function(){if(null!=this.channelId){var a=this.file.getCurrentUser(),c={a:"leave"};null!=a&&(c.name=a.displayName,c.uid=a.id);mxUtils.post(this.cacheUrl,this.getIdParameters()+"&msg="+encodeURIComponent(this.objectToString(this.createMessage(c))));this.file.stats.msgSent++}this.stop();null!=this.updateStatusThread&&(window.clearInterval(this.updateStatusThread),this.updateStatusThread=null);null!=this.onlineListener&&(mxEvent.removeListener(window,"online",this.onlineListener), +DrawioFileSync.prototype.destroy=function(){if(null!=this.channelId){var a=this.file.getCurrentUser(),c={a:"leave"};null!=a&&(c.name=a.displayName,c.uid=a.id);mxUtils.post(EditorUi.cacheUrl,this.getIdParameters()+"&msg="+encodeURIComponent(this.objectToString(this.createMessage(c))));this.file.stats.msgSent++}this.stop();null!=this.updateStatusThread&&(window.clearInterval(this.updateStatusThread),this.updateStatusThread=null);null!=this.onlineListener&&(mxEvent.removeListener(window,"online",this.onlineListener), this.onlineListener=null);null!=this.visibleListener&&(mxEvent.removeListener(document,"visibilitychange",this.visibleListener),this.visibleListener=null);null!=this.activityListener&&(mxEvent.removeListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.activityListener),mxEvent.removeListener(document,"keypress",this.activityListener),mxEvent.removeListener(window,"focus",this.activityListener),!mxClient.IS_POINTER&&mxClient.IS_TOUCH&&(mxEvent.removeListener(document,"touchstart",this.activityListener), mxEvent.removeListener(document,"touchmove",this.activityListener)),this.activityListener=null);null!=this.collaboratorsElement&&(this.collaboratorsElement.parentNode.removeChild(this.collaboratorsElement),this.collaboratorsElement=null)};Graph.prototype.defaultThemes[Graph.prototype.defaultThemeName]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="#ffffff"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#ffffff"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="white"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="#ffffff"/></add></mxStylesheet>').documentElement; Graph.prototype.defaultThemes.darkTheme=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="#2a2a2a"/><add as="strokeColor" value="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="#2a2a2a"/></add></mxStylesheet>').documentElement;function mxAsyncCanvas(a){mxAbstractCanvas2D.call(this);this.htmlCanvas=a;a.images=a.images||[];a.subCanvas=a.subCanvas||[]}mxUtils.extend(mxAsyncCanvas,mxAbstractCanvas2D);mxAsyncCanvas.prototype.htmlCanvas=null;mxAsyncCanvas.prototype.canvasIndex=0;mxAsyncCanvas.prototype.waitCounter=0;mxAsyncCanvas.prototype.onComplete=null;mxAsyncCanvas.prototype.incWaitCounter=function(){this.waitCounter++}; -mxAsyncCanvas.prototype.decWaitCounter=function(){this.waitCounter--;0==this.waitCounter&&null!=this.onComplete&&(this.onComplete(),this.onComplete=null)};mxAsyncCanvas.prototype.updateFont=function(){var a="";(this.state.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="bold ");(this.state.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="italic ");this.ctx.font=a+this.state.fontSize+"px "+this.state.fontFamily};mxAsyncCanvas.prototype.rotate=function(a,c,b,d,f){}; +mxAsyncCanvas.prototype.decWaitCounter=function(){this.waitCounter--;0==this.waitCounter&&null!=this.onComplete&&(this.onComplete(),this.onComplete=null)};mxAsyncCanvas.prototype.updateFont=function(){var a="";(this.state.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="bold ");(this.state.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="italic ");this.ctx.font=a+this.state.fontSize+"px "+this.state.fontFamily};mxAsyncCanvas.prototype.rotate=function(a,c,b,d,g){}; mxAsyncCanvas.prototype.setAlpha=function(a){this.state.alpha=a};mxAsyncCanvas.prototype.setFontColor=function(a){this.state.fontColor=a};mxAsyncCanvas.prototype.setFontBackgroundColor=function(a){a==mxConstants.NONE&&(a=null);this.state.fontBackgroundColor=a};mxAsyncCanvas.prototype.setFontBorderColor=function(a){a==mxConstants.NONE&&(a=null);this.state.fontBorderColor=a};mxAsyncCanvas.prototype.setFontSize=function(a){this.state.fontSize=a}; -mxAsyncCanvas.prototype.setFontFamily=function(a){this.state.fontFamily=a};mxAsyncCanvas.prototype.setFontStyle=function(a){this.state.fontStyle=a};mxAsyncCanvas.prototype.rect=function(a,c,b,d){};mxAsyncCanvas.prototype.roundrect=function(a,c,b,d,f,h){};mxAsyncCanvas.prototype.ellipse=function(a,c,b,d){};mxAsyncCanvas.prototype.rewriteImageSource=function(a){if("http://"==a.substring(0,7)||"https://"==a.substring(0,8))a="/proxy?url="+encodeURIComponent(a);return a}; -mxAsyncCanvas.prototype.image=function(a,c,b,d,f,h,k,m){f=this.rewriteImageSource(f);a=this.htmlCanvas.images[f];null==a&&(a=new Image,a.onload=mxUtils.bind(this,function(){this.decWaitCounter()}),a.onerror=mxUtils.bind(this,function(){this.decWaitCounter()}),this.incWaitCounter(),this.htmlCanvas.images[f]=a,a.src=f)};mxAsyncCanvas.prototype.fill=function(){};mxAsyncCanvas.prototype.stroke=function(){};mxAsyncCanvas.prototype.fillAndStroke=function(){}; -mxAsyncCanvas.prototype.text=function(a,c,b,d,f,h,k,m,p,g,l,n){if(null!=f&&0!=f.length&&(a=this.state.scale,"html"==p&&"function"===typeof html2canvas)){this.incWaitCounter();var q=this.canvasIndex++;html2canvas(f,{onrendered:mxUtils.bind(this,function(a){this.htmlCanvas.subCanvas[q]=a;this.decWaitCounter()}),scale:a,logging:!0})}};mxAsyncCanvas.prototype.finish=function(a){0==this.waitCounter?a():this.onComplete=a};function mxJsCanvas(a){mxAbstractCanvas2D.call(this);this.ctx=a.getContext("2d");this.ctx.textBaseline="top";this.ctx.fillStyle="rgba(255,255,255,0)";this.ctx.strokeStyle="rgba(0, 0, 0, 0)";this.M_RAD_PER_DEG=Math.PI/180;this.images=null==this.images?[]:this.images;this.subCanvas=null==this.subCanvas?[]:this.subCanvas}mxUtils.extend(mxJsCanvas,mxAbstractCanvas2D);mxJsCanvas.prototype.ctx=null;mxJsCanvas.prototype.waitCounter=0;mxJsCanvas.prototype.onComplete=null;mxJsCanvas.prototype.images=null; -mxJsCanvas.prototype.subCanvas=null;mxJsCanvas.prototype.canvasIndex=0;mxJsCanvas.prototype.hexToRgb=function(a){a=a.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,d,f){return b+b+d+d+f+f});return(a=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a))?{r:parseInt(a[1],16),g:parseInt(a[2],16),b:parseInt(a[3],16)}:null};mxJsCanvas.prototype.incWaitCounter=function(){this.waitCounter++}; +mxAsyncCanvas.prototype.setFontFamily=function(a){this.state.fontFamily=a};mxAsyncCanvas.prototype.setFontStyle=function(a){this.state.fontStyle=a};mxAsyncCanvas.prototype.rect=function(a,c,b,d){};mxAsyncCanvas.prototype.roundrect=function(a,c,b,d,g,e){};mxAsyncCanvas.prototype.ellipse=function(a,c,b,d){};mxAsyncCanvas.prototype.rewriteImageSource=function(a){if("http://"==a.substring(0,7)||"https://"==a.substring(0,8))a="/proxy?url="+encodeURIComponent(a);return a}; +mxAsyncCanvas.prototype.image=function(a,c,b,d,g,e,k,m){g=this.rewriteImageSource(g);a=this.htmlCanvas.images[g];null==a&&(a=new Image,a.onload=mxUtils.bind(this,function(){this.decWaitCounter()}),a.onerror=mxUtils.bind(this,function(){this.decWaitCounter()}),this.incWaitCounter(),this.htmlCanvas.images[g]=a,a.src=g)};mxAsyncCanvas.prototype.fill=function(){};mxAsyncCanvas.prototype.stroke=function(){};mxAsyncCanvas.prototype.fillAndStroke=function(){}; +mxAsyncCanvas.prototype.text=function(a,c,b,d,g,e,k,m,n,q,f,l){if(null!=g&&0!=g.length&&(a=this.state.scale,"html"==n&&"function"===typeof html2canvas)){this.incWaitCounter();var p=this.canvasIndex++;html2canvas(g,{onrendered:mxUtils.bind(this,function(a){this.htmlCanvas.subCanvas[p]=a;this.decWaitCounter()}),scale:a,logging:!0})}};mxAsyncCanvas.prototype.finish=function(a){0==this.waitCounter?a():this.onComplete=a};function mxJsCanvas(a){mxAbstractCanvas2D.call(this);this.ctx=a.getContext("2d");this.ctx.textBaseline="top";this.ctx.fillStyle="rgba(255,255,255,0)";this.ctx.strokeStyle="rgba(0, 0, 0, 0)";this.M_RAD_PER_DEG=Math.PI/180;this.images=null==this.images?[]:this.images;this.subCanvas=null==this.subCanvas?[]:this.subCanvas}mxUtils.extend(mxJsCanvas,mxAbstractCanvas2D);mxJsCanvas.prototype.ctx=null;mxJsCanvas.prototype.waitCounter=0;mxJsCanvas.prototype.onComplete=null;mxJsCanvas.prototype.images=null; +mxJsCanvas.prototype.subCanvas=null;mxJsCanvas.prototype.canvasIndex=0;mxJsCanvas.prototype.hexToRgb=function(a){a=a.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,d,g){return b+b+d+d+g+g});return(a=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a))?{r:parseInt(a[1],16),g:parseInt(a[2],16),b:parseInt(a[3],16)}:null};mxJsCanvas.prototype.incWaitCounter=function(){this.waitCounter++}; mxJsCanvas.prototype.decWaitCounter=function(){this.waitCounter--;0==this.waitCounter&&null!=this.onComplete&&(this.onComplete(),this.onComplete=null)};mxJsCanvas.prototype.updateFont=function(){var a="";(this.state.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="bold ");(this.state.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="italic ");this.ctx.font=a+this.state.fontSize+"px "+this.state.fontFamily}; mxJsCanvas.prototype.save=function(){this.states.push(this.state);this.state=mxUtils.clone(this.state);this.ctx.save()};mxJsCanvas.prototype.restore=function(){this.state=this.states.pop();this.ctx.restore()};mxJsCanvas.prototype.scale=function(a){this.state.scale*=a;this.state.strokeWidth*=a;this.ctx.scale(a,a)};mxJsCanvas.prototype.translate=function(a,c){this.state.dx+=a;this.state.dy+=c;this.ctx.translate(a,c)}; -mxJsCanvas.prototype.rotate=function(a,c,b,d,f){d-=this.state.dx;f-=this.state.dy;this.ctx.translate(d,f);(c||b)&&this.ctx.scale(c?-1:1,b?-1:1);this.ctx.rotate(a*this.M_RAD_PER_DEG);this.ctx.translate(-d,-f)};mxJsCanvas.prototype.setAlpha=function(a){this.state.alpha=a;this.ctx.globalAlpha=a};mxJsCanvas.prototype.setFillColor=function(a){a==mxConstants.NONE&&(a=null);this.state.fillColor=a;this.state.gradientColor=null;this.ctx.fillStyle=a}; -mxJsCanvas.prototype.setGradient=function(a,c,b,d,f,h,k,m,p){b=this.ctx.createLinearGradient(0,d,0,d+h);d=this.state;d.fillColor=a;d.fillAlpha=null!=m?m:1;d.gradientColor=c;d.gradientAlpha=null!=p?p:1;d.gradientDirection=k;a=this.hexToRgb(a);c=this.hexToRgb(c);null!=a&&b.addColorStop(0,"rgba("+a.r+","+a.g+","+a.b+","+d.fillAlpha+")");null!=c&&b.addColorStop(1,"rgba("+c.r+","+c.g+","+c.b+","+d.gradientAlpha+")");this.ctx.fillStyle=b}; +mxJsCanvas.prototype.rotate=function(a,c,b,d,g){d-=this.state.dx;g-=this.state.dy;this.ctx.translate(d,g);(c||b)&&this.ctx.scale(c?-1:1,b?-1:1);this.ctx.rotate(a*this.M_RAD_PER_DEG);this.ctx.translate(-d,-g)};mxJsCanvas.prototype.setAlpha=function(a){this.state.alpha=a;this.ctx.globalAlpha=a};mxJsCanvas.prototype.setFillColor=function(a){a==mxConstants.NONE&&(a=null);this.state.fillColor=a;this.state.gradientColor=null;this.ctx.fillStyle=a}; +mxJsCanvas.prototype.setGradient=function(a,c,b,d,g,e,k,m,n){b=this.ctx.createLinearGradient(0,d,0,d+e);d=this.state;d.fillColor=a;d.fillAlpha=null!=m?m:1;d.gradientColor=c;d.gradientAlpha=null!=n?n:1;d.gradientDirection=k;a=this.hexToRgb(a);c=this.hexToRgb(c);null!=a&&b.addColorStop(0,"rgba("+a.r+","+a.g+","+a.b+","+d.fillAlpha+")");null!=c&&b.addColorStop(1,"rgba("+c.r+","+c.g+","+c.b+","+d.gradientAlpha+")");this.ctx.fillStyle=b}; mxJsCanvas.prototype.setStrokeColor=function(a){null!=a&&(a==mxConstants.NONE?(this.state.strokeColor=null,this.ctx.strokeStyle="rgba(0, 0, 0, 0)"):(this.ctx.strokeStyle=a,this.state.strokeColor=a))};mxJsCanvas.prototype.setStrokeWidth=function(a){this.ctx.lineWidth=a};mxJsCanvas.prototype.setDashed=function(a){if(this.state.dashed=a){a=this.state.dashPattern.split(" ");for(var c=0;c<a.length;c++)a[c]=parseInt(a[c],10);this.setLineDash(a)}else this.setLineDash([0])}; mxJsCanvas.prototype.setLineDash=function(a){try{"function"===typeof this.ctx.setLineDash&&this.ctx.setLineDash(a)}catch(c){}};mxJsCanvas.prototype.setDashPattern=function(a){this.state.dashPattern=a;if(this.state.dashed){a=a.split(" ");for(var c=0;c<a.length;c++)a[c]=parseInt(a[c],10);this.ctx.setLineDash(a)}};mxJsCanvas.prototype.setLineCap=function(a){this.ctx.lineCap=a};mxJsCanvas.prototype.setLineJoin=function(a){this.ctx.lineJoin=a}; mxJsCanvas.prototype.setMiterLimit=function(a){this.ctx.lineJoin=a};mxJsCanvas.prototype.setFontColor=function(a){this.ctx.fillStyle=a};mxJsCanvas.prototype.setFontBackgroundColor=function(a){a==mxConstants.NONE&&(a=null);this.state.fontBackgroundColor=a};mxJsCanvas.prototype.setFontBorderColor=function(a){a==mxConstants.NONE&&(a=null);this.state.fontBorderColor=a};mxJsCanvas.prototype.setFontSize=function(a){this.state.fontSize=a}; mxJsCanvas.prototype.setFontFamily=function(a){this.state.fontFamily=a};mxJsCanvas.prototype.setFontStyle=function(a){this.state.fontStyle=a};mxJsCanvas.prototype.setShadow=function(a){(this.state.shadow=a)?(this.setShadowOffset(this.state.shadowDx,this.state.shadowDy),this.setShadowAlpha(this.state.shadowAlpha)):(this.ctx.shadowColor="transparent",this.ctx.shadowBlur=0,this.ctx.shadowOffsetX=0,this.ctx.shadowOffsetY=0)}; mxJsCanvas.prototype.setShadowColor=function(a){if(null==a||a==mxConstants.NONE)a=null,this.ctx.shadowColor="transparent";this.state.shadowColor=a;if(this.state.shadow&&null!=a){var c=null!=this.state.shadowAlpha?this.state.shadowAlpha:1;a=this.hexToRgb(a);this.ctx.shadowColor="rgba("+a.r+","+a.g+","+a.b+","+c+")"}};mxJsCanvas.prototype.setShadowAlpha=function(a){this.state.shadowAlpha=a;this.setShadowColor(this.state.shadowColor)}; mxJsCanvas.prototype.setShadowOffset=function(a,c){this.state.shadowDx=a;this.state.shadowDy=c;this.state.shadow&&(this.ctx.shadowOffsetX=a,this.ctx.shadowOffsetY=c)};mxJsCanvas.prototype.moveTo=function(a,c){this.ctx.moveTo(a,c);this.lastMoveX=a;this.lastMoveY=c};mxJsCanvas.prototype.lineTo=function(a,c){this.ctx.lineTo(a,c);this.lastMoveX=a;this.lastMoveY=c};mxJsCanvas.prototype.quadTo=function(a,c,b,d){this.ctx.quadraticCurveTo(a,c,b,d);this.lastMoveX=b;this.lastMoveY=d}; -mxJsCanvas.prototype.arcTo=function(a,c,b,d,f,h,k){a=mxUtils.arcToCurves(this.lastMoveX,this.lastMoveY,a,c,b,d,f,h,k);if(null!=a)for(c=0;c<a.length;c+=6)this.curveTo(a[c],a[c+1],a[c+2],a[c+3],a[c+4],a[c+5])};mxJsCanvas.prototype.curveTo=function(a,c,b,d,f,h){this.ctx.bezierCurveTo(a,c,b,d,f,h);this.lastMoveX=f;this.lastMoveY=h};mxJsCanvas.prototype.rect=function(a,c,b,d){this.begin();this.moveTo(a,c);this.lineTo(a+b,c);this.lineTo(a+b,c+d);this.lineTo(a,c+d);this.close()}; -mxJsCanvas.prototype.roundrect=function(a,c,b,d,f,h){this.begin();this.moveTo(a+f,c);this.lineTo(a+b-f,c);this.quadTo(a+b,c,a+b,c+h);this.lineTo(a+b,c+d-h);this.quadTo(a+b,c+d,a+b-f,c+d);this.lineTo(a+f,c+d);this.quadTo(a,c+d,a,c+d-h);this.lineTo(a,c+h);this.quadTo(a,c,a+f,c)};mxJsCanvas.prototype.ellipse=function(a,c,b,d){this.ctx.save();this.ctx.translate(a+b/2,c+d/2);this.ctx.scale(b/2,d/2);this.ctx.beginPath();this.ctx.arc(0,0,1,0,2*Math.PI,!1);this.ctx.restore()}; +mxJsCanvas.prototype.arcTo=function(a,c,b,d,g,e,k){a=mxUtils.arcToCurves(this.lastMoveX,this.lastMoveY,a,c,b,d,g,e,k);if(null!=a)for(c=0;c<a.length;c+=6)this.curveTo(a[c],a[c+1],a[c+2],a[c+3],a[c+4],a[c+5])};mxJsCanvas.prototype.curveTo=function(a,c,b,d,g,e){this.ctx.bezierCurveTo(a,c,b,d,g,e);this.lastMoveX=g;this.lastMoveY=e};mxJsCanvas.prototype.rect=function(a,c,b,d){this.begin();this.moveTo(a,c);this.lineTo(a+b,c);this.lineTo(a+b,c+d);this.lineTo(a,c+d);this.close()}; +mxJsCanvas.prototype.roundrect=function(a,c,b,d,g,e){this.begin();this.moveTo(a+g,c);this.lineTo(a+b-g,c);this.quadTo(a+b,c,a+b,c+e);this.lineTo(a+b,c+d-e);this.quadTo(a+b,c+d,a+b-g,c+d);this.lineTo(a+g,c+d);this.quadTo(a,c+d,a,c+d-e);this.lineTo(a,c+e);this.quadTo(a,c,a+g,c)};mxJsCanvas.prototype.ellipse=function(a,c,b,d){this.ctx.save();this.ctx.translate(a+b/2,c+d/2);this.ctx.scale(b/2,d/2);this.ctx.beginPath();this.ctx.arc(0,0,1,0,2*Math.PI,!1);this.ctx.restore()}; mxJsCanvas.prototype.rewriteImageSource=function(a){if("http://"==a.substring(0,7)||"https://"==a.substring(0,8))a="/proxy?url="+encodeURIComponent(a);return a}; -mxJsCanvas.prototype.image=function(a,c,b,d,f,h,k,m){f=this.rewriteImageSource(f);f=this.images[f];if(null!=f&&0<f.height&&0<f.width){var p=this.ctx;p.save();if(h){h=f.width;var g=f.height,l=Math.min(b/h,d/g);a+=(b-h*l)/2;c+=(d-g*l)/2;b=h*l;d=g*l}k&&(p.translate(2*a+b,0),p.scale(-1,1));m&&(p.translate(0,2*c+d),p.scale(1,-1));p.drawImage(f,a,c,b,d);p.restore()}};mxJsCanvas.prototype.begin=function(){this.ctx.beginPath()};mxJsCanvas.prototype.close=function(){this.ctx.closePath()}; +mxJsCanvas.prototype.image=function(a,c,b,d,g,e,k,m){g=this.rewriteImageSource(g);g=this.images[g];if(null!=g&&0<g.height&&0<g.width){var n=this.ctx;n.save();if(e){e=g.width;var q=g.height,f=Math.min(b/e,d/q);a+=(b-e*f)/2;c+=(d-q*f)/2;b=e*f;d=q*f}k&&(n.translate(2*a+b,0),n.scale(-1,1));m&&(n.translate(0,2*c+d),n.scale(1,-1));n.drawImage(g,a,c,b,d);n.restore()}};mxJsCanvas.prototype.begin=function(){this.ctx.beginPath()};mxJsCanvas.prototype.close=function(){this.ctx.closePath()}; mxJsCanvas.prototype.fill=function(){this.ctx.fill()};mxJsCanvas.prototype.stroke=function(){this.ctx.stroke()};mxJsCanvas.prototype.fillAndStroke=function(){if(this.state.shadow){this.ctx.stroke();this.ctx.fill();var a=this.ctx.shadowColor,c=this.ctx.shadowOffsetX,b=this.ctx.shadowOffsetY;this.ctx.shadowColor="transparent";this.ctx.shadowOffsetX=0;this.ctx.shadowOffsetY=0;this.ctx.stroke();this.ctx.shadowColor=a;this.ctx.shadowOffsetX=c;this.ctx.shadowOffsetY=b}else this.ctx.fill(),this.ctx.stroke()}; -mxJsCanvas.prototype.text=function(a,c,b,d,f,h,k,m,p,g,l,n){if(null!=f&&0!=f.length){b=this.state.scale;0!=n&&(this.ctx.translate(Math.round(a),Math.round(c)),this.ctx.rotate(n*Math.PI/180),this.ctx.translate(Math.round(-a),Math.round(-c)));if("html"==p){f=this.subCanvas[this.canvasIndex++];p=f.height;n=f.width;switch(k){case mxConstants.ALIGN_MIDDLE:c-=p/2/b;break;case mxConstants.ALIGN_BOTTOM:c-=p/b}switch(h){case mxConstants.ALIGN_CENTER:a-=n/2/b;break;case mxConstants.ALIGN_RIGHT:a-=n/b}this.ctx.save(); -if(null!=this.state.fontBackgroundColor||null!=this.state.fontBorderColor)null!=this.state.fontBackgroundColor&&(this.ctx.fillStyle=this.state.fontBackgroundColor,this.ctx.fillRect(Math.round(a)-.5,Math.round(c)-.5,Math.round(f.width/b),Math.round(f.height/b))),null!=this.state.fontBorderColor&&(this.ctx.strokeStyle=this.state.fontBorderColor,this.ctx.lineWidth=1,this.ctx.strokeRect(Math.round(a)-.5,Math.round(c)-.5,Math.round(f.width/b),Math.round(f.height/b)));this.ctx.scale(1/b,1/b);this.ctx.drawImage(f, -Math.round(a*b),Math.round(c*b))}else{this.ctx.save();this.updateFont();n=document.createElement("div");n.innerHTML=f;n.style.position="absolute";n.style.top="-9999px";n.style.left="-9999px";n.style.fontFamily=this.state.fontFamily;n.style.fontWeight="bold";n.style.fontSize=this.state.fontSize+"pt";document.body.appendChild(n);p=[n.offsetWidth,n.offsetHeight];document.body.removeChild(n);f=f.split("\n");n=p[1];this.ctx.textBaseline="top";p=c;switch(k){case mxConstants.ALIGN_MIDDLE:this.ctx.textBaseline= -"middle";c-=(f.length-1)*n/2;p=c-this.state.fontSize/2;break;case mxConstants.ALIGN_BOTTOM:this.ctx.textBaseline="alphabetic",c-=n*(f.length-1),p=c-this.state.fontSize}k=[];n=[];for(b=0;b<f.length;b++)n[b]=a,k[b]=this.ctx.measureText(f[b]).width,null!=h&&h!=mxConstants.ALIGN_LEFT&&(n[b]-=k[b],h==mxConstants.ALIGN_CENTER&&(n[b]+=k[b]/2));if(null!=this.state.fontBackgroundColor||null!=this.state.fontBorderColor){a=n[0];h=k[0];for(b=1;b<f.length;b++)a=Math.min(a,n[b]),h=Math.max(h,k[b]);this.ctx.save(); -a=Math.round(a)-.5;p=Math.round(p)-.5;null!=this.state.fontBackgroundColor&&(this.ctx.fillStyle=this.state.fontBackgroundColor,this.ctx.fillRect(a,p,h,this.state.fontSize*mxConstants.LINE_HEIGHT*f.length));null!=this.state.fontBorderColor&&(this.ctx.strokeStyle=this.state.fontBorderColor,this.ctx.lineWidth=1,this.ctx.strokeRect(a,p,h,this.state.fontSize*mxConstants.LINE_HEIGHT*f.length));this.ctx.restore()}for(b=0;b<f.length;b++)this.ctx.fillText(f[b],n[b],c),c+=this.state.fontSize*mxConstants.LINE_HEIGHT}this.ctx.restore()}}; +mxJsCanvas.prototype.text=function(a,c,b,d,g,e,k,m,n,q,f,l){if(null!=g&&0!=g.length){b=this.state.scale;0!=l&&(this.ctx.translate(Math.round(a),Math.round(c)),this.ctx.rotate(l*Math.PI/180),this.ctx.translate(Math.round(-a),Math.round(-c)));if("html"==n){g=this.subCanvas[this.canvasIndex++];n=g.height;l=g.width;switch(k){case mxConstants.ALIGN_MIDDLE:c-=n/2/b;break;case mxConstants.ALIGN_BOTTOM:c-=n/b}switch(e){case mxConstants.ALIGN_CENTER:a-=l/2/b;break;case mxConstants.ALIGN_RIGHT:a-=l/b}this.ctx.save(); +if(null!=this.state.fontBackgroundColor||null!=this.state.fontBorderColor)null!=this.state.fontBackgroundColor&&(this.ctx.fillStyle=this.state.fontBackgroundColor,this.ctx.fillRect(Math.round(a)-.5,Math.round(c)-.5,Math.round(g.width/b),Math.round(g.height/b))),null!=this.state.fontBorderColor&&(this.ctx.strokeStyle=this.state.fontBorderColor,this.ctx.lineWidth=1,this.ctx.strokeRect(Math.round(a)-.5,Math.round(c)-.5,Math.round(g.width/b),Math.round(g.height/b)));this.ctx.scale(1/b,1/b);this.ctx.drawImage(g, +Math.round(a*b),Math.round(c*b))}else{this.ctx.save();this.updateFont();l=document.createElement("div");l.innerHTML=g;l.style.position="absolute";l.style.top="-9999px";l.style.left="-9999px";l.style.fontFamily=this.state.fontFamily;l.style.fontWeight="bold";l.style.fontSize=this.state.fontSize+"pt";document.body.appendChild(l);n=[l.offsetWidth,l.offsetHeight];document.body.removeChild(l);g=g.split("\n");l=n[1];this.ctx.textBaseline="top";n=c;switch(k){case mxConstants.ALIGN_MIDDLE:this.ctx.textBaseline= +"middle";c-=(g.length-1)*l/2;n=c-this.state.fontSize/2;break;case mxConstants.ALIGN_BOTTOM:this.ctx.textBaseline="alphabetic",c-=l*(g.length-1),n=c-this.state.fontSize}k=[];l=[];for(b=0;b<g.length;b++)l[b]=a,k[b]=this.ctx.measureText(g[b]).width,null!=e&&e!=mxConstants.ALIGN_LEFT&&(l[b]-=k[b],e==mxConstants.ALIGN_CENTER&&(l[b]+=k[b]/2));if(null!=this.state.fontBackgroundColor||null!=this.state.fontBorderColor){a=l[0];e=k[0];for(b=1;b<g.length;b++)a=Math.min(a,l[b]),e=Math.max(e,k[b]);this.ctx.save(); +a=Math.round(a)-.5;n=Math.round(n)-.5;null!=this.state.fontBackgroundColor&&(this.ctx.fillStyle=this.state.fontBackgroundColor,this.ctx.fillRect(a,n,e,this.state.fontSize*mxConstants.LINE_HEIGHT*g.length));null!=this.state.fontBorderColor&&(this.ctx.strokeStyle=this.state.fontBorderColor,this.ctx.lineWidth=1,this.ctx.strokeRect(a,n,e,this.state.fontSize*mxConstants.LINE_HEIGHT*g.length));this.ctx.restore()}for(b=0;b<g.length;b++)this.ctx.fillText(g[b],l[b],c),c+=this.state.fontSize*mxConstants.LINE_HEIGHT}this.ctx.restore()}}; mxJsCanvas.prototype.getCanvas=function(){return canvas};mxJsCanvas.prototype.finish=function(a){0==this.waitCounter?a():this.onComplete=a};DrawioClient=function(a,c){mxEventSource.call(this);this.ui=a;this.cookieName=c;this.token=this.getPersistentToken()};mxUtils.extend(DrawioClient,mxEventSource);DrawioClient.prototype.token=null;DrawioClient.prototype.user=null;DrawioClient.prototype.setUser=function(a){this.user=a;this.fireEvent(new mxEventObject("userChanged"))};DrawioClient.prototype.getUser=function(){return this.user}; DrawioClient.prototype.clearPersistentToken=function(){if(isLocalStorage)localStorage.removeItem("."+this.cookieName),sessionStorage.removeItem("."+this.cookieName);else if("undefined"!=typeof Storage){var a=new Date;a.setYear(a.getFullYear()-1);document.cookie=this.cookieName+"=; expires="+a.toUTCString()}}; DrawioClient.prototype.getPersistentToken=function(a){var c=null;isLocalStorage&&(c=localStorage.getItem("."+this.cookieName),null==c&&a&&(c=sessionStorage.getItem("."+this.cookieName)));if(null==c&&"undefined"!=typeof Storage){var b=document.cookie;a=this.cookieName+"=";var d=b.indexOf(a);0<=d&&(d+=a.length,c=b.indexOf(";",d),0>c?c=b.length:postCookie=b.substring(c),c=b.substring(d,c),c=0<c.length?c:null,null!=c&&isLocalStorage&&(b=new Date,b.setYear(b.getFullYear()-1),document.cookie=a+"; expires="+ -b.toUTCString(),localStorage.setItem("."+this.cookieName,c)))}return c};DrawioClient.prototype.setPersistentToken=function(a,c){if(null!=a)if(isLocalStorage)c?sessionStorage.setItem("."+this.cookieName,a):localStorage.setItem("."+this.cookieName,a);else{if("undefined"!=typeof Storage){var b=new Date;b.setYear(b.getFullYear()+10);b=this.cookieName+"="+a+"; path=/"+(c?"":"; expires="+b.toUTCString());"https"==document.location.protocol.toLowerCase()&&(b+=";secure");document.cookie=b}}else this.clearPersistentToken()};DrawioUser=function(a,c,b,d,f){this.id=a;this.email=c;this.displayName=b;this.pictureUrl=d;this.locale=f};DriveFile=function(a,c,b){DrawioFile.call(this,a,c);this.desc=b};mxUtils.extend(DriveFile,DrawioFile);DriveFile.prototype.saveDelay=0;DriveFile.prototype.allChangesSavedKey="allChangesSavedInDrive";DriveFile.prototype.getSize=function(){return this.desc.fileSize};DriveFile.prototype.isRestricted=function(){return null!=this.desc.userPermission&&null!=this.desc.labels&&"reader"==this.desc.userPermission.role&&this.desc.labels.restricted}; +b.toUTCString(),localStorage.setItem("."+this.cookieName,c)))}return c};DrawioClient.prototype.setPersistentToken=function(a,c){if(null!=a)if(isLocalStorage)c?sessionStorage.setItem("."+this.cookieName,a):localStorage.setItem("."+this.cookieName,a);else{if("undefined"!=typeof Storage){var b=new Date;b.setYear(b.getFullYear()+10);b=this.cookieName+"="+a+"; path=/"+(c?"":"; expires="+b.toUTCString());"https"==document.location.protocol.toLowerCase()&&(b+=";secure");document.cookie=b}}else this.clearPersistentToken()};DrawioUser=function(a,c,b,d,g){this.id=a;this.email=c;this.displayName=b;this.pictureUrl=d;this.locale=g};DriveFile=function(a,c,b){DrawioFile.call(this,a,c);this.desc=b};mxUtils.extend(DriveFile,DrawioFile);DriveFile.prototype.saveDelay=0;DriveFile.prototype.allChangesSavedKey="allChangesSavedInDrive";DriveFile.prototype.getSize=function(){return this.desc.fileSize};DriveFile.prototype.isRestricted=function(){return null!=this.desc.userPermission&&null!=this.desc.labels&&"reader"==this.desc.userPermission.role&&this.desc.labels.restricted}; DriveFile.prototype.isConflict=function(a){return null!=a&&null!=a.error&&412==a.error.code};DriveFile.prototype.getCurrentUser=function(){return null!=this.ui.drive?this.ui.drive.user:null};DriveFile.prototype.getMode=function(){return App.MODE_GOOGLE}; DriveFile.prototype.getPublicUrl=function(a){gapi.client.drive.permissions.list({fileId:this.desc.id}).execute(mxUtils.bind(this,function(c){if(null!=c&&null!=c.items)for(var b=0;b<c.items.length;b++)if("anyoneWithLink"===c.items[b].id||"anyone"===c.items[b].id){a(this.desc.webContentLink);return}a(null)}))};DriveFile.prototype.isAutosaveOptional=function(){return!0};DriveFile.prototype.isRenamable=function(){return this.isEditable()&&DrawioFile.prototype.isEditable.apply(this,arguments)}; -DriveFile.prototype.isMovable=function(){return this.isEditable()};DriveFile.prototype.save=function(a,c,b,d,f){DrawioFile.prototype.save.apply(this,arguments);this.saveFile(null,a,c,b,d,f)}; -DriveFile.prototype.saveFile=function(a,c,b,d,f,h){if(!this.isEditable())null!=b&&b();else if(!this.savingFile){var k=mxUtils.bind(this,function(a,h){var g=this.data,l=this.desc,m=this.isModified();this.setModified(!1);this.savingFile=!0;var p=this.isModified;this.isModified=function(){return!0};this.ui.drive.saveFile(this,h,mxUtils.bind(this,function(a){this.isModified=p;this.savingFile=!1;0!=a?(c&&(this.lastAutosaveRevision=(new Date).getTime()),this.autosaveDelay=Math.min(6E3,Math.max(this.saveDelay+ -500,DrawioFile.prototype.autosaveDelay)),this.desc=a,this.fileSaved(g,l,mxUtils.bind(this,function(){this.contentChanged();null!=b&&b(a)}),d)):(this.setModified(m||this.isModified()),null!=d&&d(a))}),mxUtils.bind(this,function(b,c){this.savingFile=!1;this.isModified=p;this.setModified(m||this.isModified());this.isConflict(b)?(this.inConflictState=!0,null!=this.sync?(this.savingFile=!0,this.sync.fileConflict(c,mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){this.updateFileData(); -k(a,!0)}),100+500*Math.random())}),mxUtils.bind(this,function(){this.savingFile=!1;null!=d&&d()}))):null!=d&&d()):null!=d&&d(b)}),f,f,a)});k(h,c)}};DriveFile.prototype.copyFile=function(a,c){this.isRestricted()?DrawioFile.prototype.copyFile.apply(this,arguments):this.makeCopy(mxUtils.bind(this,function(){if(this.ui.spinner.spin(document.body,mxResources.get("saving")))try{this.save(!0,a,c)}catch(b){c(b)}}),c,!0)}; +DriveFile.prototype.isMovable=function(){return this.isEditable()};DriveFile.prototype.save=function(a,c,b,d,g){DrawioFile.prototype.save.apply(this,arguments);this.saveFile(null,a,c,b,d,g)}; +DriveFile.prototype.saveFile=function(a,c,b,d,g,e){if(!this.isEditable())null!=b&&b();else if(!this.savingFile){var k=mxUtils.bind(this,function(a,e){var m=this.desc,f=this.isModified();this.setModified(!1);this.savingFile=!0;var l=this.isModified;this.isModified=function(){return!0};this.ui.drive.saveFile(this,e,mxUtils.bind(this,function(a,e){this.isModified=l;this.savingFile=!1;0!=a?(c&&(this.lastAutosaveRevision=(new Date).getTime()),this.autosaveDelay=Math.min(6E3,Math.max(this.saveDelay+500, +DrawioFile.prototype.autosaveDelay)),this.desc=a,this.fileSaved(e,m,mxUtils.bind(this,function(){this.contentChanged();null!=b&&b(a)}),d)):(this.setModified(f||this.isModified()),null!=d&&d(a))}),mxUtils.bind(this,function(b,c){this.savingFile=!1;this.isModified=l;this.setModified(f||this.isModified());this.isConflict(b)?(this.inConflictState=!0,null!=this.sync?(this.savingFile=!0,this.sync.fileConflict(c,mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){this.updateFileData(); +k(a,!0)}),100+500*Math.random())}),mxUtils.bind(this,function(){this.savingFile=!1;null!=d&&d()}))):null!=d&&d()):null!=d&&d(b)}),g,g,a)});k(e,c)}};DriveFile.prototype.copyFile=function(a,c){this.isRestricted()?DrawioFile.prototype.copyFile.apply(this,arguments):this.makeCopy(mxUtils.bind(this,function(){if(this.ui.spinner.spin(document.body,mxResources.get("saving")))try{this.save(!0,a,c)}catch(b){c(b)}}),c,!0)}; DriveFile.prototype.makeCopy=function(a,c,b){this.ui.spinner.spin(document.body,mxResources.get("saving"))&&this.saveAs(this.ui.getCopyFilename(this,b),mxUtils.bind(this,function(b){this.desc=b;this.ui.spinner.stop();this.setModified(!1);this.backupPatch=null;this.inConflictState=this.invalidChecksum=!1;this.descriptorChanged();a()}),mxUtils.bind(this,function(){this.ui.spinner.stop();null!=c&&c()}))};DriveFile.prototype.saveAs=function(a,c,b){this.ui.drive.copyFile(this.getId(),a,c,b)}; -DriveFile.prototype.rename=function(a,c,b){var d=this.getCurrentEtag();this.ui.drive.renameFile(this.getId(),a,mxUtils.bind(this,function(f){this.hasSameExtension(a,this.getTitle())?(this.desc=f,this.descriptorChanged(),null!=this.sync&&this.sync.descriptorChanged(d),null!=c&&c(f)):(this.desc=f,null!=this.sync&&this.sync.descriptorChanged(d),this.save(!0,c,b))}),b)}; +DriveFile.prototype.rename=function(a,c,b){var d=this.getCurrentEtag();this.ui.drive.renameFile(this.getId(),a,mxUtils.bind(this,function(g){this.hasSameExtension(a,this.getTitle())?(this.desc=g,this.descriptorChanged(),null!=this.sync&&this.sync.descriptorChanged(d),null!=c&&c(g)):(this.desc=g,null!=this.sync&&this.sync.descriptorChanged(d),this.save(!0,c,b))}),b)}; DriveFile.prototype.move=function(a,c,b){this.ui.drive.moveFile(this.getId(),a,mxUtils.bind(this,function(a){this.desc=a;this.descriptorChanged();null!=c&&c(a)}),b)};DriveFile.prototype.getTitle=function(){return this.desc.title};DriveFile.prototype.getHash=function(){return"G"+this.getId()};DriveFile.prototype.getId=function(){return this.desc.id};DriveFile.prototype.isEditable=function(){return DrawioFile.prototype.isEditable.apply(this,arguments)&&this.desc.editable}; DriveFile.prototype.isSyncSupported=function(){return!0};DriveFile.prototype.isRevisionHistorySupported=function(){return!0}; DriveFile.prototype.getRevisions=function(a,c){this.ui.drive.executeRequest(gapi.client.drive.revisions.list({fileId:this.getId()}),mxUtils.bind(this,function(b){for(var c=0;c<b.items.length;c++)mxUtils.bind(this,function(a){a.getXml=mxUtils.bind(this,function(b,c){this.ui.drive.executeRequest(gapi.client.drive.revisions.get({fileId:this.getId(),revisionId:a.id}),mxUtils.bind(this,function(a){this.ui.drive.getXmlFile(a,mxUtils.bind(this,function(a){b(a.getData())}),c)}),c)});a.getUrl=mxUtils.bind(this, @@ -8355,185 +8361,186 @@ DriveClient.prototype.setUserId=function(a,c){if(c)if(isLocalStorage)localStorag DriveClient.prototype.getUserId=function(){var a=null;null!=this.user&&(a=this.user.id);null==a&&isLocalStorage&&(a=localStorage.getItem(".guid"));if(null==a&&"undefined"!=typeof Storage){for(var c=document.cookie.split(";"),b=0;b<c.length;b++){var d=mxUtils.trim(c[b]);if("GUID="==d.substring(0,5)){a=d.substring(5);break}}null!=a&&isLocalStorage&&(c=new Date,c.setYear(c.getFullYear()-1),document.cookie="GUID=; expires="+c.toUTCString(),localStorage.setItem(".guid",a))}return a}; DriveClient.prototype.execute=function(a){var c=mxUtils.bind(this,function(b){this.ui.showAuthDialog(this,!0,mxUtils.bind(this,function(b,c){this.authorize(!1,mxUtils.bind(this,function(){null!=c&&c();a()}),mxUtils.bind(this,function(a){var b=mxResources.get("cannotLogin");null!=a&&null!=a.error&&403==a.error.code&&null!=a.error.data&&0<a.error.data.length&&"domainPolicy"==a.error.data[0].reason&&(b=a.error.message);this.ui.drive.clearUserId();this.ui.drive.setUser(null);gapi.auth.signOut();this.ui.showError(mxResources.get("error"), b,mxResources.get("help"),mxUtils.bind(this,function(){this.ui.openLink("https://desk.draw.io/support/solutions/articles/16000074659")}),null,mxResources.get("ok"))}),b)}))});this.authorize(!0,a,c)}; -DriveClient.prototype.executeRequest=function(a,c,b){var d=!0,f=null,h=0;null!=this.requestThread&&window.clearTimeout(this.requestThread);var k=mxUtils.bind(this,function(){this.requestThread=null;this.currentRequest=a;null!=f&&window.clearTimeout(f);f=window.setTimeout(mxUtils.bind(this,function(){d=!1;null!=b&&b({code:App.ERROR_TIMEOUT,retry:k})}),this.ui.timeout);a.execute(mxUtils.bind(this,function(m){window.clearTimeout(f);if(d)if(null!=m&&null==m.error)null!=c&&c(m);else{var p=null!=m&&null!= -m.error?null!=m.error.data?m.error.data:m.error.errors:null,p=null!=p&&0<p.length?p[0].reason:null;null==b||null==m||null==m.error||-1!=m.error.code&&(403!=m.error.code||"domainPolicy"!=p&&"The requested mime type change is forbidden."!=m.error.message)?null!=m&&null!=m.error&&(401==m.error.code||403==m.error.code&&"rateLimitExceeded"!=p)?403==m.error.code&&null!=this.user||401==m.error.code&&null!=this.user&&"authError"==p?null!=b&&b(m):this.execute(k):null!=m&&null!=m.error&&412!=m.error.code&& -404!=m.error.code&&400!=m.error.code&&this.currentRequest==a&&h<this.maxRetries?(h++,this.requestThread=window.setTimeout(k,Math.round(Math.pow(2,h)*(1+.1*(Math.random()-.5))*this.coolOff))):null!=b&&b(m):b(m)}}))});null==gapi.auth.getToken()?this.execute(k):k()}; -DriveClient.prototype.authorize=function(a,c,b,d){var f=this.getUserId();null!=this.ui.stateArg&&null!=this.ui.stateArg.userId&&(f=this.ui.stateArg.userId);if(a&&null==f)null!=b&&b();else{var h={scope:this.scopes,client_id:this.clientId};a&&null!=f?(h.immediate=!0,h.user_id=f):(h.immediate=!1,h.authuser=-1);gapi.auth.authorize(h,mxUtils.bind(this,function(h){null!=h&&null==h.error?null!=this.user&&a&&this.user.id==f?null!=c&&c():this.updateUser(c,b,d):null!=b&&b(h);this.resetTokenRefresh(h)}))}}; +DriveClient.prototype.executeRequest=function(a,c,b){var d=!0,g=null,e=0;null!=this.requestThread&&window.clearTimeout(this.requestThread);var k=mxUtils.bind(this,function(){this.requestThread=null;this.currentRequest=a;null!=g&&window.clearTimeout(g);g=window.setTimeout(mxUtils.bind(this,function(){d=!1;null!=b&&b({code:App.ERROR_TIMEOUT,retry:k})}),this.ui.timeout);a.execute(mxUtils.bind(this,function(m){window.clearTimeout(g);if(d)if(null!=m&&null==m.error)null!=c&&c(m);else{var n=null!=m&&null!= +m.error?null!=m.error.data?m.error.data:m.error.errors:null,n=null!=n&&0<n.length?n[0].reason:null;null==b||null==m||null==m.error||-1!=m.error.code&&(403!=m.error.code||"domainPolicy"!=n&&"The requested mime type change is forbidden."!=m.error.message)?null!=m&&null!=m.error&&(401==m.error.code||403==m.error.code&&"rateLimitExceeded"!=n)?403==m.error.code&&null!=this.user||401==m.error.code&&null!=this.user&&"authError"==n?null!=b&&b(m):this.execute(k):null!=m&&null!=m.error&&412!=m.error.code&& +404!=m.error.code&&400!=m.error.code&&this.currentRequest==a&&e<this.maxRetries?(e++,this.requestThread=window.setTimeout(k,Math.round(Math.pow(2,e)*(1+.1*(Math.random()-.5))*this.coolOff))):null!=b&&b(m):b(m)}}))});null==gapi.auth.getToken()?this.execute(k):k()}; +DriveClient.prototype.authorize=function(a,c,b,d){var g=this.getUserId();null!=this.ui.stateArg&&null!=this.ui.stateArg.userId&&(g=this.ui.stateArg.userId);if(a&&null==g)null!=b&&b();else{var e={scope:this.scopes,client_id:this.clientId};a&&null!=g?(e.immediate=!0,e.user_id=g):(e.immediate=!1,e.authuser=-1);gapi.auth.authorize(e,mxUtils.bind(this,function(e){null!=e&&null==e.error?null!=this.user&&a&&this.user.id==g?null!=c&&c():this.updateUser(c,b,d):null!=b&&b(e);this.resetTokenRefresh(e)}))}}; DriveClient.prototype.resetTokenRefresh=function(a){null!=this.tokenRefreshThread&&(window.clearTimeout(this.tokenRefreshThread),this.tokenRefreshThread=null);null!=a&&null==a.error&&0<a.expires_in&&(this.tokenRefreshInterval=1E3*parseInt(a.expires_in),this.lastTokenRefresh=(new Date).getTime(),this.tokenRefreshThread=window.setTimeout(mxUtils.bind(this,function(){this.authorize(!0,mxUtils.bind(this,function(){}),mxUtils.bind(this,function(){}))}),900*a.expires_in))}; DriveClient.prototype.checkToken=function(a){var c=0<this.lastTokenRefresh;(new Date).getTime()-this.lastTokenRefresh>this.tokenRefreshInterval||null==this.tokenRefreshThread?this.execute(mxUtils.bind(this,function(){a();c&&this.fireEvent(new mxEventObject("disconnected"))})):a()}; -DriveClient.prototype.updateUser=function(a,c,b){var d=gapi.auth.getToken().access_token;this.ui.loadUrl("https://www.googleapis.com/oauth2/v2/userinfo?alt=json&access_token="+d,mxUtils.bind(this,function(d){var f=JSON.parse(d);this.executeRequest(gapi.client.drive.about.get(),mxUtils.bind(this,function(c){var d=mxResources.get("notAvailable"),h=d,g=null;null!=c&&null!=c.user&&(d=c.user.emailAddress,h=c.user.displayName,g=null!=c.user.picture?c.user.picture.url:null);this.setUser(new DrawioUser(f.id, -d,h,g,f.locale));this.setUserId(f.id,b);null!=a&&a()}),c)}),c)};DriveClient.prototype.copyFile=function(a,c,b,d){null!=a&&null!=c&&this.executeRequest(gapi.client.drive.files.copy({fileId:a,fields:this.allFields,supportsTeamDrives:!0,resource:{title:c,properties:[{key:"channel",value:Editor.guid()}]}}),b,d)};DriveClient.prototype.renameFile=function(a,c,b,d){null!=a&&null!=c&&this.executeRequest(this.createDriveRequest(a,{title:c}),b,d)}; +DriveClient.prototype.updateUser=function(a,c,b){var d=gapi.auth.getToken().access_token;this.ui.loadUrl("https://www.googleapis.com/oauth2/v2/userinfo?alt=json&access_token="+d,mxUtils.bind(this,function(d){var e=JSON.parse(d);this.executeRequest(gapi.client.drive.about.get(),mxUtils.bind(this,function(c){var d=mxResources.get("notAvailable"),g=d,k=null;null!=c&&null!=c.user&&(d=c.user.emailAddress,g=c.user.displayName,k=null!=c.user.picture?c.user.picture.url:null);this.setUser(new DrawioUser(e.id, +d,g,k,e.locale));this.setUserId(e.id,b);null!=a&&a()}),c)}),c)};DriveClient.prototype.copyFile=function(a,c,b,d){null!=a&&null!=c&&this.executeRequest(gapi.client.drive.files.copy({fileId:a,fields:this.allFields,supportsTeamDrives:!0,resource:{title:c,properties:[{key:"channel",value:Editor.guid()}]}}),b,d)};DriveClient.prototype.renameFile=function(a,c,b,d){null!=a&&null!=c&&this.executeRequest(this.createDriveRequest(a,{title:c}),b,d)}; DriveClient.prototype.moveFile=function(a,c,b,d){null!=a&&null!=c&&this.executeRequest(this.createDriveRequest(a,{parents:[{kind:"drive#fileLink",id:c}]}),b,d)};DriveClient.prototype.createDriveRequest=function(a,c){return gapi.client.request({path:"/drive/v2/files/"+a,method:"PUT",params:{uploadType:"multipart",supportsTeamDrives:!0},headers:{"Content-Type":"application/json; charset=UTF-8"},body:JSON.stringify(c)})};DriveClient.prototype.getLibrary=function(a,c,b){return this.getFile(a,c,b,!0,!0)}; -DriveClient.prototype.loadDescriptor=function(a,c,b,d){this.executeRequest(gapi.client.drive.files.get({fileId:a,fields:null!=d?d:this.allFields,supportsTeamDrives:!0}),c,b)};DriveClient.prototype.getCustomProperty=function(a,c){var b=a.properties,d=null;if(null!=b)for(var f=0;f<b.length;f++)if(b[f].key==c){d=b[f].value;break}return d}; -DriveClient.prototype.getFile=function(a,c,b,d,f){d=null!=d?d:!1;f=null!=f?f:!1;null!=urlParams.rev?this.executeRequest(gapi.client.drive.revisions.get({fileId:a,revisionId:urlParams.rev,supportsTeamDrives:!0}),mxUtils.bind(this,function(a){this.getXmlFile(a,c,b)}),b):this.loadDescriptor(a,mxUtils.bind(this,function(a){if(null!=this.user){var h=/\.png$/i.test(a.title);/\.v(dx|sdx?)$/i.test(a.title)||/\.gliffy$/i.test(a.title)||!this.ui.useCanvasForExport&&h?(h=a.downloadUrl+"&access_token="+gapi.auth.getToken().access_token, -this.ui.convertFile(h,a.title,a.mimeType,this.extension,c,b)):d||f||a.mimeType==this.libraryMimeType||a.mimeType==this.xmlMimeType?this.getXmlFile(a,c,b,!0,f):this.isGoogleRealtimeMimeType(a.mimeType)?this.convertRealtimeFile(a,c,b):this.getXmlFile(a,c,b)}else b({message:mxResources.get("loggedOut")})}),b)};DriveClient.prototype.isGoogleRealtimeMimeType=function(a){return null!=a&&"application/vnd.jgraph.mxfile."==a.substring(0,30)}; -DriveClient.prototype.getRealtimeData=function(a,c,b,d){this.executeRequest(gapi.client.drive.realtime.get({fileId:a,supportsTeamDrives:!0}),mxUtils.bind(this,function(d){d=null!=d.result?d.result.data:null;null!=d&&null!=d.value&&null!=d.value.diagrams?c(d):null!=b&&b({message:"realtime.get returned invalid data for "+a})}),mxUtils.bind(this,function(f){null==d&&(d=0);3>d?window.setTimeout(mxUtils.bind(this,function(){this.getRealtimeData(a,c,b,d+1)}),100*(d+1)):null!=b&&b({message:"realtime.get failed for "+ +DriveClient.prototype.loadDescriptor=function(a,c,b,d){this.executeRequest(gapi.client.drive.files.get({fileId:a,fields:null!=d?d:this.allFields,supportsTeamDrives:!0}),c,b)};DriveClient.prototype.getCustomProperty=function(a,c){var b=a.properties,d=null;if(null!=b)for(var g=0;g<b.length;g++)if(b[g].key==c){d=b[g].value;break}return d}; +DriveClient.prototype.getFile=function(a,c,b,d,g){d=null!=d?d:!1;g=null!=g?g:!1;null!=urlParams.rev?this.executeRequest(gapi.client.drive.revisions.get({fileId:a,revisionId:urlParams.rev,supportsTeamDrives:!0}),mxUtils.bind(this,function(a){this.getXmlFile(a,c,b)}),b):this.loadDescriptor(a,mxUtils.bind(this,function(a){if(null!=this.user){var e=/\.png$/i.test(a.title);/\.v(dx|sdx?)$/i.test(a.title)||/\.gliffy$/i.test(a.title)||!this.ui.useCanvasForExport&&e?(e=a.downloadUrl+"&access_token="+gapi.auth.getToken().access_token, +this.ui.convertFile(e,a.title,a.mimeType,this.extension,c,b)):d||g||a.mimeType==this.libraryMimeType||a.mimeType==this.xmlMimeType?this.getXmlFile(a,c,b,!0,g):this.isGoogleRealtimeMimeType(a.mimeType)?this.convertRealtimeFile(a,c,b):this.getXmlFile(a,c,b)}else b({message:mxResources.get("loggedOut")})}),b)};DriveClient.prototype.isGoogleRealtimeMimeType=function(a){return null!=a&&"application/vnd.jgraph.mxfile."==a.substring(0,30)}; +DriveClient.prototype.getRealtimeData=function(a,c,b,d){this.executeRequest(gapi.client.drive.realtime.get({fileId:a,supportsTeamDrives:!0}),mxUtils.bind(this,function(d){d=null!=d.result?d.result.data:null;null!=d&&null!=d.value&&null!=d.value.diagrams?c(d):null!=b&&b({message:"realtime.get returned invalid data for "+a})}),mxUtils.bind(this,function(g){null==d&&(d=0);3>d?window.setTimeout(mxUtils.bind(this,function(){this.getRealtimeData(a,c,b,d+1)}),100*(d+1)):null!=b&&b({message:"realtime.get failed for "+ a})}))};DriveClient.prototype.loadRealtime=function(a,c,b){"1"==urlParams.ignoremime||"420247213240"!=this.appId||"application/vnd.jgraph.mxfile.realtime"!=a.mimeType&&"application/mxr"!=a.mimeType?c():this.redirectToNewApp(b,a.id)}; -DriveClient.prototype.getXmlFile=function(a,c,b,d,f){d=gapi.auth.getToken().access_token;this.ui.loadUrl(a.downloadUrl+"&access_token="+d,mxUtils.bind(this,function(d){if(null==d)b({message:mxResources.get("invalidOrMissingFile")});else if(a.mimeType==this.libraryMimeType||f)a.mimeType!=this.libraryMimeType||f?c(new DriveLibrary(this.ui,d,a)):b({message:mxResources.get("notADiagramFile")});else{if(/\.png$/i.test(a.title)){var h=d.lastIndexOf(",");if(0<h){var m=this.ui.extractGraphModelFromPng(d.substring(h+ -1));if(null!=m&&0<m.length)d=m;else try{var p=atob(d.substring(h+1));null==p||"<mxfile "!==p.substring(0,8)&&"<mxGraphModel "!==p.substring(0,14)&&"<mxGraphModel>"!==p.substring(0,14)||(d=p)}catch(g){}}}else"data:image/png;base64,PG14ZmlsZS"==d.substring(0,32)&&(p=d.substring(22),d=window.atob&&!mxClient.IS_SF?atob(p):Base64.decode(p));c(new DriveFile(this.ui,d,a))}}),b,null!=a.mimeType&&"image/"==a.mimeType.substring(0,6)&&"image/svg"!=a.mimeType.substring(0,9)||/\.png$/i.test(a.title)||/\.jpe?g$/i.test(a.title))}; -DriveClient.prototype.saveFile=function(a,c,b,d,f,h,k,m){if(a.isEditable()){var p=(new Date).getTime();f=null!=f?f:!this.ui.isLegacyDriveDomain()||"1"==urlParams.ignoremime;h=null!=h?h:!1;var g=mxUtils.bind(this,function(f,g,l){var n=null,q=!1,t={mimeType:a.desc.mimeType,title:a.getTitle()};this.isGoogleRealtimeMimeType(a.desc.mimeType)&&(t.mimeType=this.xmlMimeType,n=a.desc,q=c=!0);a.constructor==DriveFile&&(null==m&&(m=[]),null==a.getChannelId()&&m.push({key:"channel",value:Editor.guid(32)}),null== -a.getChannelKey()&&m.push({key:"key",value:Editor.guid(32)}),m.push({key:"secret",value:Editor.guid(32)}));l||(null!=f||h||(f=this.placeholderThumbnail,g=this.placeholderMimeType),null!=f&&null!=g&&(t.thumbnail={image:f,mimeType:g}));var u=mxUtils.bind(this,function(){a.saveDelay=(new Date).getTime()-p;b.apply(this,arguments);null!=n&&(this.executeRequest(gapi.client.drive.revisions.get({fileId:n.id,revisionId:n.headRevisionId,supportsTeamDrives:!0}),mxUtils.bind(this,mxUtils.bind(this,function(a){a.pinned= -!0;this.executeRequest(gapi.client.drive.revisions.update({fileId:n.id,revisionId:n.headRevisionId,resource:a}))}))),EditorUi.logEvent({category:"RT-CONVERT-"+a.convertedFrom,action:"from-"+n.id+"."+n.headRevisionId+"-to-"+a.desc.id+"."+a.desc.headRevisionId+"-",label:null!=this.user?this.user.id:"unknown-user"}))}),x=mxUtils.bind(this,function(b,f){null!=m&&(t.properties=m);var g=k||a.constructor!=DriveFile||"manual"!=DrawioFile.SYNC&&"auto"!=DrawioFile.SYNC?null:a.getCurrentEtag(),h=0,l=mxUtils.bind(this, -function(k){var m=a.desc.mimeType!=this.xmlMimeType&&a.desc.mimeType!=this.mimeType&&a.desc.mimeType!=this.libraryMimeType;this.executeRequest(this.createUploadRequest(a.getId(),t,b,c||k||m,f,k?null:g,q),u,mxUtils.bind(this,function(b){a.isConflict(b)?this.executeRequest(gapi.client.drive.files.get({fileId:a.getId(),fields:this.catchupFields,supportsTeamDrives:!0}),mxUtils.bind(this,function(c){if(null!=c&&c.etag==g)if(h<this.maxRetries)h++,window.setTimeout(l,2*h*this.coolOff*(1+.1*(Math.random()- -.5)));else{l(!0);try{EditorUi.sendReport("Warning: Stale Etag Overwrite "+(new Date).toISOString()+":\n\nBrowser="+navigator.userAgent+"\nFile="+this.ui.hashValue(a.getId())+"\nUser="+(null!=this.user?this.ui.hashValue(this.user.id):"unknown")),EditorUi.logError("Warning: Stale Etag Overwrite",null,a.desc.id+"."+a.desc.headRevisionId,null!=this.user?this.user.id:"unknown")}catch(E){}}else null!=d&&d(b,c)}),mxUtils.bind(this,function(){null!=d&&d(b)})):d(b)}))});l(!1)});this.ui.useCanvasForExport&& -/(\.png)$/i.test(a.getTitle())?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){x(a,!0)}),d,this.ui.getCurrentFile()!=a?a.getData():null):x(a.getData(),!1)}),l=mxUtils.bind(this,function(){!h&&a.constructor!=DriveLibrary&&this.enableThumbnails&&"0"!=urlParams.thumb&&this.ui.getThumbnail(this.thumbnailWidth,mxUtils.bind(this,function(a){var b=null;if(null!=a)try{b=a.toDataURL("image/png")}catch(t){}b=null==b||b.length>this.maxThumbnailSize?null:b.substring(b.indexOf(",")+1).replace(/\+/g,"-").replace(/\//g, -"_");g(b,"image/png")}))||g(null,null,a.constructor!=DriveLibrary)});f||!c?l():this.verifyMimeType(a.getId(),l,!0)}else this.ui.editor.graph.reset(),null!=d&&d({message:mxResources.get("readOnly")})}; -DriveClient.prototype.verifyMimeType=function(a,c,b,d){null==this.lastMimeCheck&&(this.lastMimeCheck=0);var f=(new Date).getTime();if(b||f-this.lastMimeCheck>this.mimeTypeCheckCoolOff)this.lastMimeCheck=f,this.checkingMimeType||(this.checkingMimeType=!0,this.executeRequest(gapi.client.drive.files.get({fileId:a,fields:"mimeType",supportsTeamDrives:!0}),mxUtils.bind(this,function(b){this.checkingMimeType=!1;null!=b&&"application/vnd.jgraph.mxfile.realtime"==b.mimeType?this.redirectToNewApp(d,a):null!= +DriveClient.prototype.getXmlFile=function(a,c,b,d,g){d=gapi.auth.getToken().access_token;this.ui.loadUrl(a.downloadUrl+"&access_token="+d,mxUtils.bind(this,function(d){try{if(null==d)b({message:mxResources.get("invalidOrMissingFile")});else if(a.mimeType==this.libraryMimeType||g)a.mimeType!=this.libraryMimeType||g?c(new DriveLibrary(this.ui,d,a)):b({message:mxResources.get("notADiagramFile")});else{if(/\.png$/i.test(a.title)){var e=d.lastIndexOf(",");if(0<e){var m=this.ui.extractGraphModelFromPng(d.substring(e+ +1));if(null!=m&&0<m.length)d=m;else try{var n=atob(d.substring(e+1));null==n||"<mxfile "!==n.substring(0,8)&&"<mxGraphModel "!==n.substring(0,14)&&"<mxGraphModel>"!==n.substring(0,14)||(d=n)}catch(q){}}}else"data:image/png;base64,PG14ZmlsZS"==d.substring(0,32)&&(n=d.substring(22),d=window.atob&&!mxClient.IS_SF?atob(n):Base64.decode(n));c(new DriveFile(this.ui,d,a))}}catch(q){if(null!=b)b(q);else throw q;}}),b,null!=a.mimeType&&"image/"==a.mimeType.substring(0,6)&&"image/svg"!=a.mimeType.substring(0, +9)||/\.png$/i.test(a.title)||/\.jpe?g$/i.test(a.title))}; +DriveClient.prototype.saveFile=function(a,c,b,d,g,e,k,m){if(a.isEditable()){var n=(new Date).getTime();g=null!=g?g:!this.ui.isLegacyDriveDomain()||"1"==urlParams.ignoremime;e=null!=e?e:!1;var q=mxUtils.bind(this,function(g,f,q){var l=null,p=!1,t={mimeType:a.desc.mimeType,title:a.getTitle()};this.isGoogleRealtimeMimeType(a.desc.mimeType)&&(t.mimeType=this.xmlMimeType,l=a.desc,p=c=!0);a.constructor==DriveFile&&(null==m&&(m=[]),null==a.getChannelId()&&m.push({key:"channel",value:Editor.guid(32)}),null== +a.getChannelKey()&&m.push({key:"key",value:Editor.guid(32)}),m.push({key:"secret",value:Editor.guid(32)}));q||(null!=g||e||(g=this.placeholderThumbnail,f=this.placeholderMimeType),null!=g&&null!=f&&(t.thumbnail={image:g,mimeType:f}));var v=a.getData(),y=mxUtils.bind(this,function(c){a.saveDelay=(new Date).getTime()-n;b(c,v);null!=l&&(this.executeRequest(gapi.client.drive.revisions.get({fileId:l.id,revisionId:l.headRevisionId,supportsTeamDrives:!0}),mxUtils.bind(this,mxUtils.bind(this,function(a){a.pinned= +!0;this.executeRequest(gapi.client.drive.revisions.update({fileId:l.id,revisionId:l.headRevisionId,resource:a}))}))),EditorUi.logEvent({category:"RT-CONVERT-"+a.convertedFrom,action:"from-"+l.id+"."+l.headRevisionId+"-to-"+a.desc.id+"."+a.desc.headRevisionId+"-",label:null!=this.user?this.user.id:"unknown-user"}))}),B=mxUtils.bind(this,function(b,e){null!=m&&(t.properties=m);var g=k||a.constructor!=DriveFile||"manual"!=DrawioFile.SYNC&&"auto"!=DrawioFile.SYNC?null:a.getCurrentEtag(),f=0,l=mxUtils.bind(this, +function(k){var m=a.desc.mimeType!=this.xmlMimeType&&a.desc.mimeType!=this.mimeType&&a.desc.mimeType!=this.libraryMimeType;this.executeRequest(this.createUploadRequest(a.getId(),t,b,c||k||m,e,k?null:g,p),y,mxUtils.bind(this,function(b){a.isConflict(b)?this.executeRequest(gapi.client.drive.files.get({fileId:a.getId(),fields:this.catchupFields,supportsTeamDrives:!0}),mxUtils.bind(this,function(c){if(null!=c&&c.etag==g)if(f<this.maxRetries)f++,window.setTimeout(l,2*f*this.coolOff*(1+.1*(Math.random()- +.5)));else{l(!0);try{EditorUi.sendReport("Warning: Stale Etag Overwrite "+(new Date).toISOString()+":\n\nBrowser="+navigator.userAgent+"\nFile="+a.desc.id+"."+a.desc.headRevisionId+"\nUser="+(null!=this.user?this.user.id:"unknown")),EditorUi.logError("Warning: Stale Etag Overwrite",null,a.desc.id+"."+a.desc.headRevisionId,null!=this.user?this.user.id:"unknown")}catch(K){}}else null!=d&&d(b,c)}),mxUtils.bind(this,function(){null!=d&&d(b)})):d(b)}))});l(!1)});this.ui.useCanvasForExport&&/(\.png)$/i.test(a.getTitle())? +this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){B(a,!0)}),d,this.ui.getCurrentFile()!=a?v:null):B(v,!1)}),f=mxUtils.bind(this,function(){!e&&a.constructor!=DriveLibrary&&this.enableThumbnails&&"0"!=urlParams.thumb&&this.ui.getThumbnail(this.thumbnailWidth,mxUtils.bind(this,function(a){var b=null;if(null!=a)try{b=a.toDataURL("image/png")}catch(t){}b=null==b||b.length>this.maxThumbnailSize?null:b.substring(b.indexOf(",")+1).replace(/\+/g,"-").replace(/\//g,"_");q(b,"image/png")}))||q(null,null, +a.constructor!=DriveLibrary)});g||!c?f():this.verifyMimeType(a.getId(),f,!0)}else this.ui.editor.graph.reset(),null!=d&&d({message:mxResources.get("readOnly")})}; +DriveClient.prototype.verifyMimeType=function(a,c,b,d){null==this.lastMimeCheck&&(this.lastMimeCheck=0);var g=(new Date).getTime();if(b||g-this.lastMimeCheck>this.mimeTypeCheckCoolOff)this.lastMimeCheck=g,this.checkingMimeType||(this.checkingMimeType=!0,this.executeRequest(gapi.client.drive.files.get({fileId:a,fields:"mimeType",supportsTeamDrives:!0}),mxUtils.bind(this,function(b){this.checkingMimeType=!1;null!=b&&"application/vnd.jgraph.mxfile.realtime"==b.mimeType?this.redirectToNewApp(d,a):null!= c&&c()})))}; DriveClient.prototype.redirectToNewApp=function(a,c){this.ui.spinner.stop();if(!this.redirectDialogShowing){this.redirectDialogShowing=!0;var b=window.location.protocol+"//"+this.newAppHostname+"/"+this.ui.getSearch("create title mode url drive splash state".split(" "))+"#G"+c,d=mxUtils.bind(this,function(){this.redirectDialogShowing=!1;window.location.href==b?window.location.reload():window.location.href=b});null!=a?this.ui.confirm(mxResources.get("redirectToNewApp"),d,mxUtils.bind(this,function(){this.redirectDialogShowing= -!1;null!=a&&a()})):this.ui.alert(mxResources.get("redirectToNewApp"),d)}};DriveClient.prototype.insertFile=function(a,c,b,d,f,h,k){h=null!=h?h:this.xmlMimeType;a={mimeType:h,title:a};null!=b&&(a.parents=[{kind:"drive#fileLink",id:b}]);this.executeRequest(this.createUploadRequest(null,a,c,!1,k),mxUtils.bind(this,function(a){h==this.libraryMimeType?d(new DriveLibrary(this.ui,c,a)):0==a?null!=f&&f({message:mxResources.get("errorSavingFile")}):d(new DriveFile(this.ui,c,a))}),f)}; -DriveClient.prototype.createUploadRequest=function(a,c,b,d,f,h,k){f=null!=f?f:!1;var m={"Content-Type":'multipart/mixed; boundary="-------314159265358979323846"'};null!=h&&(m["If-Match"]=h);a={path:"/upload/drive/v2/files"+(null!=a?"/"+a:""),method:null!=a?"PUT":"POST",params:{uploadType:"multipart"},headers:m,body:"\r\n---------314159265358979323846\r\nContent-Type: application/json\r\n\r\n"+JSON.stringify(c)+"\r\n---------314159265358979323846\r\nContent-Type: application/octect-stream\r\nContent-Transfer-Encoding: base64\r\n\r\n"+ -(null!=b?f?b:Base64.encode(b):"")+"\r\n---------314159265358979323846--"};d||(a.params.newRevision=!1);k&&(a.params.pinned=!0);a.params.supportsTeamDrives=!0;a.params.fields=this.allFields;return gapi.client.request(a)}; -DriveClient.prototype.pickFile=function(a,c){this.filePickerCallback=null!=a?a:mxUtils.bind(this,function(a){this.ui.loadFile("G"+a)});this.filePicked=mxUtils.bind(this,function(a){a.action==google.picker.Action.PICKED&&this.filePickerCallback(a.docs[0].id)});this.ui.spinner.spin(document.body,mxResources.get("authorizing"))&&this.execute(mxUtils.bind(this,function(){this.ui.spinner.stop();var a=gapi.auth.getToken().access_token,d=c?"genericPicker":"filePicker",f=mxUtils.bind(this,function(a){"picker modal-dialog-bg picker-dialog-bg"== -mxEvent.getSource(a).className&&(mxEvent.removeListener(document,"click",f),this[d].setVisible(!1))});if(null==this[d]||this[d+"Token"]!=a){this[d+"Token"]=a;var a=(new google.picker.DocsView(google.picker.ViewId.FOLDERS)).setParent("root").setIncludeFolders(!0),h=(new google.picker.DocsView).setIncludeFolders(!0),k=(new google.picker.DocsView).setEnableTeamDrives(!0).setIncludeFolders(!0),m=(new google.picker.DocsUploadView).setIncludeFolders(!0);c?(a.setMimeTypes("*/*"),h.setMimeTypes("*/*"),k.setMimeTypes("*/*")): -(a.setMimeTypes(this.mimeTypes),h.setMimeTypes(this.mimeTypes),k.setMimeTypes(this.mimeTypes));this[d]=(new google.picker.PickerBuilder).setOAuthToken(this[d+"Token"]).setLocale(mxLanguage).setAppId(this.appId).enableFeature(google.picker.Feature.SUPPORT_TEAM_DRIVES).addView(a).addView(h).addView(k).addView(google.picker.ViewId.RECENTLY_PICKED).addView(m).setCallback(mxUtils.bind(this,function(a){a.action!=google.picker.Action.PICKED&&a.action!=google.picker.Action.CANCEL||mxEvent.removeListener(document, -"click",f);a.action==google.picker.Action.PICKED&&this.filePicked(a)})).build()}mxEvent.addListener(document,"click",f);this[d].setVisible(!0)}))}; +!1;null!=a&&a()})):this.ui.alert(mxResources.get("redirectToNewApp"),d)}};DriveClient.prototype.insertFile=function(a,c,b,d,g,e,k){e=null!=e?e:this.xmlMimeType;a={mimeType:e,title:a};null!=b&&(a.parents=[{kind:"drive#fileLink",id:b}]);this.executeRequest(this.createUploadRequest(null,a,c,!1,k),mxUtils.bind(this,function(a){e==this.libraryMimeType?d(new DriveLibrary(this.ui,c,a)):0==a?null!=g&&g({message:mxResources.get("errorSavingFile")}):d(new DriveFile(this.ui,c,a))}),g)}; +DriveClient.prototype.createUploadRequest=function(a,c,b,d,g,e,k){g=null!=g?g:!1;var m={"Content-Type":'multipart/mixed; boundary="-------314159265358979323846"'};null!=e&&(m["If-Match"]=e);a={path:"/upload/drive/v2/files"+(null!=a?"/"+a:""),method:null!=a?"PUT":"POST",params:{uploadType:"multipart"},headers:m,body:"\r\n---------314159265358979323846\r\nContent-Type: application/json\r\n\r\n"+JSON.stringify(c)+"\r\n---------314159265358979323846\r\nContent-Type: application/octect-stream\r\nContent-Transfer-Encoding: base64\r\n\r\n"+ +(null!=b?g?b:Base64.encode(b):"")+"\r\n---------314159265358979323846--"};d||(a.params.newRevision=!1);k&&(a.params.pinned=!0);a.params.supportsTeamDrives=!0;a.params.fields=this.allFields;return gapi.client.request(a)}; +DriveClient.prototype.pickFile=function(a,c){this.filePickerCallback=null!=a?a:mxUtils.bind(this,function(a){this.ui.loadFile("G"+a)});this.filePicked=mxUtils.bind(this,function(a){a.action==google.picker.Action.PICKED&&this.filePickerCallback(a.docs[0].id)});this.ui.spinner.spin(document.body,mxResources.get("authorizing"))&&this.execute(mxUtils.bind(this,function(){this.ui.spinner.stop();var a=gapi.auth.getToken().access_token,d=c?"genericPicker":"filePicker",g=mxUtils.bind(this,function(a){"picker modal-dialog-bg picker-dialog-bg"== +mxEvent.getSource(a).className&&(mxEvent.removeListener(document,"click",g),this[d].setVisible(!1))});if(null==this[d]||this[d+"Token"]!=a){this[d+"Token"]=a;var a=(new google.picker.DocsView(google.picker.ViewId.FOLDERS)).setParent("root").setIncludeFolders(!0),e=(new google.picker.DocsView).setIncludeFolders(!0),k=(new google.picker.DocsView).setEnableTeamDrives(!0).setIncludeFolders(!0),m=(new google.picker.DocsUploadView).setIncludeFolders(!0);c?(a.setMimeTypes("*/*"),e.setMimeTypes("*/*"),k.setMimeTypes("*/*")): +(a.setMimeTypes(this.mimeTypes),e.setMimeTypes(this.mimeTypes),k.setMimeTypes(this.mimeTypes));this[d]=(new google.picker.PickerBuilder).setOAuthToken(this[d+"Token"]).setLocale(mxLanguage).setAppId(this.appId).enableFeature(google.picker.Feature.SUPPORT_TEAM_DRIVES).addView(a).addView(e).addView(k).addView(google.picker.ViewId.RECENTLY_PICKED).addView(m).setCallback(mxUtils.bind(this,function(a){a.action!=google.picker.Action.PICKED&&a.action!=google.picker.Action.CANCEL||mxEvent.removeListener(document, +"click",g);a.action==google.picker.Action.PICKED&&this.filePicked(a)})).build()}mxEvent.addListener(document,"click",g);this[d].setVisible(!0)}))}; DriveClient.prototype.pickFolder=function(a){this.folderPickerCallback=a;var c=mxUtils.bind(this,function(){this.ui.spinner.spin(document.body,mxResources.get("authorizing"))&&this.execute(mxUtils.bind(this,function(){this.ui.spinner.stop();var a=gapi.auth.getToken().access_token,c=mxUtils.bind(this,function(a){"picker modal-dialog-bg picker-dialog-bg"==mxEvent.getSource(a).className&&(mxEvent.removeListener(document,"click",c),this.folderPicker.setVisible(!1))});if(null==this.folderPicker||this.folderPickerToken!= -a){this.folderPickerToken=a;var a=(new google.picker.DocsView(google.picker.ViewId.FOLDERS)).setParent("root").setIncludeFolders(!0).setSelectFolderEnabled(!0).setMimeTypes("application/vnd.google-apps.folder"),f=(new google.picker.DocsView).setIncludeFolders(!0).setSelectFolderEnabled(!0).setMimeTypes("application/vnd.google-apps.folder"),h=(new google.picker.DocsView).setIncludeFolders(!0).setEnableTeamDrives(!0).setSelectFolderEnabled(!0).setMimeTypes("application/vnd.google-apps.folder");this.folderPicker= -(new google.picker.PickerBuilder).setSelectableMimeTypes("application/vnd.google-apps.folder").setOAuthToken(this.folderPickerToken).setLocale(mxLanguage).setAppId(this.appId).enableFeature(google.picker.Feature.SUPPORT_TEAM_DRIVES).addView(a).addView(f).addView(h).addView(google.picker.ViewId.RECENTLY_PICKED).setTitle(mxResources.get("pickFolder")).setCallback(mxUtils.bind(this,function(a){a.action!=google.picker.Action.PICKED&&a.action!=google.picker.Action.CANCEL||mxEvent.removeListener(document, +a){this.folderPickerToken=a;var a=(new google.picker.DocsView(google.picker.ViewId.FOLDERS)).setParent("root").setIncludeFolders(!0).setSelectFolderEnabled(!0).setMimeTypes("application/vnd.google-apps.folder"),g=(new google.picker.DocsView).setIncludeFolders(!0).setSelectFolderEnabled(!0).setMimeTypes("application/vnd.google-apps.folder"),e=(new google.picker.DocsView).setIncludeFolders(!0).setEnableTeamDrives(!0).setSelectFolderEnabled(!0).setMimeTypes("application/vnd.google-apps.folder");this.folderPicker= +(new google.picker.PickerBuilder).setSelectableMimeTypes("application/vnd.google-apps.folder").setOAuthToken(this.folderPickerToken).setLocale(mxLanguage).setAppId(this.appId).enableFeature(google.picker.Feature.SUPPORT_TEAM_DRIVES).addView(a).addView(g).addView(e).addView(google.picker.ViewId.RECENTLY_PICKED).setTitle(mxResources.get("pickFolder")).setCallback(mxUtils.bind(this,function(a){a.action!=google.picker.Action.PICKED&&a.action!=google.picker.Action.CANCEL||mxEvent.removeListener(document, "click",c);this.folderPickerCallback(a)})).build()}mxEvent.addListener(document,"click",c);this.folderPicker.setVisible(!0)}))});this.ui.confirm(mxResources.get("useRootFolder"),mxUtils.bind(this,function(){this.folderPickerCallback({action:google.picker.Action.PICKED,docs:[{type:"folder",id:"root"}]})}),mxUtils.bind(this,function(){c()}),mxResources.get("yes"),mxResources.get("noPickFolder")+"...",!0)}; DriveClient.prototype.pickLibrary=function(a){this.filePickerCallback=a;this.filePicked=mxUtils.bind(this,function(a){a.action==google.picker.Action.PICKED?this.filePickerCallback(a.docs[0].id):a.action==google.picker.Action.CANCEL&&null==this.ui.getCurrentFile()&&this.ui.showSplash()});this.ui.spinner.spin(document.body,mxResources.get("authorizing"))&&this.execute(mxUtils.bind(this,function(){this.ui.spinner.stop();var a=mxUtils.bind(this,function(b){"picker modal-dialog-bg picker-dialog-bg"==mxEvent.getSource(b).className&& (mxEvent.removeListener(document,"click",a),this.libraryPicker.setVisible(!1))}),b=gapi.auth.getToken().access_token;if(null==this.libraryPicker||this.libraryPickerToken!=b){this.libraryPickerToken=b;var b=(new google.picker.DocsView(google.picker.ViewId.FOLDERS)).setParent("root").setIncludeFolders(!0).setMimeTypes(this.libraryMimeType+",application/xml,text/plain,application/octet-stream"),d=(new google.picker.DocsView).setIncludeFolders(!0).setMimeTypes(this.libraryMimeType+",application/xml,text/plain,application/octet-stream"), -f=(new google.picker.DocsView).setEnableTeamDrives(!0).setIncludeFolders(!0).setMimeTypes(this.libraryMimeType+",application/xml,text/plain,application/octet-stream"),h=(new google.picker.DocsUploadView).setIncludeFolders(!0);this.libraryPicker=(new google.picker.PickerBuilder).setOAuthToken(this.libraryPickerToken).setLocale(mxLanguage).setAppId(this.appId).enableFeature(google.picker.Feature.SUPPORT_TEAM_DRIVES).addView(b).addView(d).addView(f).addView(google.picker.ViewId.RECENTLY_PICKED).addView(h).setCallback(mxUtils.bind(this, +g=(new google.picker.DocsView).setEnableTeamDrives(!0).setIncludeFolders(!0).setMimeTypes(this.libraryMimeType+",application/xml,text/plain,application/octet-stream"),e=(new google.picker.DocsUploadView).setIncludeFolders(!0);this.libraryPicker=(new google.picker.PickerBuilder).setOAuthToken(this.libraryPickerToken).setLocale(mxLanguage).setAppId(this.appId).enableFeature(google.picker.Feature.SUPPORT_TEAM_DRIVES).addView(b).addView(d).addView(g).addView(google.picker.ViewId.RECENTLY_PICKED).addView(e).setCallback(mxUtils.bind(this, function(b){b.action!=google.picker.Action.PICKED&&b.action!=google.picker.Action.CANCEL||mxEvent.removeListener(document,"click",a);b.action==google.picker.Action.PICKED&&this.filePicked(b)})).build()}mxEvent.addListener(document,"click",a);this.libraryPicker.setVisible(!0)}))};DriveClient.prototype.showPermissions=function(a){this.checkToken(mxUtils.bind(this,function(){var c=new gapi.drive.share.ShareClient(this.appId);c.setOAuthToken(gapi.auth.getToken().access_token);c.setItemIds([a]);c.showSettingsDialog()}))}; DriveClient.prototype.getRealtimeAge=function(a,c){var b=null!=c&&null!=c.value&&null!=c.value.modifiedDate?c.value.modifiedDate.json:null,d=0;null!=b&&0<b&&(b=new Date(b),d=(new Date(a.modifiedDate)).getTime()-b.getTime());return d}; -DriveClient.prototype.convertRealtimeFile=function(a,c,b){var d=mxUtils.bind(this,function(a){a.convertedFrom="xml";c(a)}),f=mxUtils.bind(this,function(a){a.convertedFrom="json";c(a)});this.getRealtimeData(a.id,mxUtils.bind(this,function(c){try{3E5>this.getRealtimeAge(a,c)?f(new DriveFile(this.ui,mxUtils.getXml(this.convertJsonToXml(c)),a)):this.getXmlFile(a,d,mxUtils.bind(this,function(){try{f(new DriveFile(this.ui,mxUtils.getXml(this.convertJsonToXml(c)),a))}catch(k){this.getXmlFile(a,d,b)}}))}catch(k){this.getXmlFile(a, -d,b)}}),mxUtils.bind(this,function(){this.getXmlFile(a,d,b)}))};DriveClient.prototype.convertJsonToXml=function(a,c){if(null==a.value||null==a.value.diagrams)throw Error("Invalid JSON: no diagrams in root map");for(var b=mxUtils.createXmlDocument().createElement("mxfile"),d=a.value.diagrams.value,f=0;f<d.length;f++)try{var h=this.decodeJsonPage(d[f].value,b.ownerDocument.createElement("diagram"),c);b.appendChild(h)}catch(k){throw Error("Error on page "+f+": "+k.stack);}return b}; -DriveClient.prototype.decodeJsonPage=function(a,c,b){if(null==a)throw Error("Invalid JSON: json for page is null");var d=new mxCodec,f=this.createJsonCell(a.root,d);if(null==f)throw Error("Invalid JSON: no root cell for page");d=d.encode(new mxGraphModel(f));this.decodeJsonViewState(a,d);b?c.appendChild(d):mxUtils.setTextContent(c,this.ui.editor.graph.compressNode(d));null!=a.id?c.setAttribute("id",a.id.json):c.setAttribute("id",Editor.guid());null!=a.name&&c.setAttribute("name",a.name.json);return c}; +DriveClient.prototype.convertRealtimeFile=function(a,c,b){var d=mxUtils.bind(this,function(a){a.convertedFrom="xml";c(a)}),g=mxUtils.bind(this,function(a){a.convertedFrom="json";c(a)});this.getRealtimeData(a.id,mxUtils.bind(this,function(c){try{3E5>this.getRealtimeAge(a,c)?g(new DriveFile(this.ui,mxUtils.getXml(this.convertJsonToXml(c)),a)):this.getXmlFile(a,d,mxUtils.bind(this,function(){try{g(new DriveFile(this.ui,mxUtils.getXml(this.convertJsonToXml(c)),a))}catch(k){this.getXmlFile(a,d,b)}}))}catch(k){this.getXmlFile(a, +d,b)}}),mxUtils.bind(this,function(){this.getXmlFile(a,d,b)}))};DriveClient.prototype.convertJsonToXml=function(a,c){if(null==a.value||null==a.value.diagrams)throw Error("Invalid JSON: no diagrams in root map");for(var b=mxUtils.createXmlDocument().createElement("mxfile"),d=a.value.diagrams.value,g=0;g<d.length;g++)try{var e=this.decodeJsonPage(d[g].value,b.ownerDocument.createElement("diagram"),c);b.appendChild(e)}catch(k){throw Error("Error on page "+g+": "+k.stack);}return b}; +DriveClient.prototype.decodeJsonPage=function(a,c,b){if(null==a)throw Error("Invalid JSON: json for page is null");var d=new mxCodec,g=this.createJsonCell(a.root,d);if(null==g)throw Error("Invalid JSON: no root cell for page");d=d.encode(new mxGraphModel(g));this.decodeJsonViewState(a,d);b?c.appendChild(d):mxUtils.setTextContent(c,this.ui.editor.graph.compressNode(d));null!=a.id?c.setAttribute("id",a.id.json):c.setAttribute("id",Editor.guid());null!=a.name&&c.setAttribute("name",a.name.json);return c}; DriveClient.prototype.decodeJsonViewState=function(a,c){var b=null!=a.pageFormat?a.pageFormat.json:null;null!=b&&0<b.length&&(b=b.split(","),1<b.length&&(c.setAttribute("pageWidth",b[0]),c.setAttribute("pageHeight",b[1])));b=null!=a.backgroundColor?a.backgroundColor.json:null;null!=b&&0<b.length&&c.setAttribute("background",b);b=null!=a.backgroundImage?a.backgroundImage.json:null;null!=b&&0<b.length&&c.setAttribute("backgroundImage",b);c.setAttribute("fold",null!=a.foldingEnabled?a.foldingEnabled.json: "0");c.setAttribute("pageScale",null!=a.pageScale?a.pageScale.json:mxGraph.prototype.pageScale);c.setAttribute("math",null!=a.mathEnabled?a.mathEnabled.json:"0");c.setAttribute("shadow",null!=a.shadowVisible?a.shadowVisible.json:"0");return c}; -DriveClient.prototype.createJsonCell=function(a,c){if(null!=a&&null!=a.id){var b=a.value,d=this.jsonToCell(b,c);c.putObject(a.id,d);d.source=null!=b.source?this.createJsonCell(b.source,c):null;d.target=null!=b.target?this.createJsonCell(b.target,c):null;this.createJsonCell(b.parent,c);for(var f=0;f<b.children.value.length;f++){var h=this.createJsonCell(b.children.value[f],c);if(null!=h)d.insert(h);else throw Error("Invalid JSON: no child "+f+" for cell "+a.id);}return d}return null!=a&&null!=a.ref? +DriveClient.prototype.createJsonCell=function(a,c){if(null!=a&&null!=a.id){var b=a.value,d=this.jsonToCell(b,c);c.putObject(a.id,d);d.source=null!=b.source?this.createJsonCell(b.source,c):null;d.target=null!=b.target?this.createJsonCell(b.target,c):null;this.createJsonCell(b.parent,c);for(var g=0;g<b.children.value.length;g++){var e=this.createJsonCell(b.children.value[g],c);if(null!=e)d.insert(e);else throw Error("Invalid JSON: no child "+g+" for cell "+a.id);}return d}return null!=a&&null!=a.ref? c.objects[a.ref]:null}; DriveClient.prototype.jsonToCell=function(a,c){var b=new mxCell;b.id=a.cellId.json;b.vertex="vertex"==a.type.json;b.edge="edge"==a.type.json;b.connectable="0"!=a.connectable.json;b.collapsed="1"==a.collapsed.json;b.visible="0"!=a.visible.json;b.style=null!=a.style?a.style.json:null;b.value=null!=a.xmlValue?mxUtils.parseXml(a.xmlValue.json).documentElement:null!=a.value?a.value.json:null;b.geometry=null!=a.geometry?c.decode(mxUtils.parseXml(a.geometry.json).documentElement):null;return b};DropboxFile=function(a,c,b){DrawioFile.call(this,a,c);this.stat=b};mxUtils.extend(DropboxFile,DrawioFile);DropboxFile.prototype.getId=function(){return this.stat.path_display.substring(1)};DropboxFile.prototype.getHash=function(){return"D"+encodeURIComponent(this.getId())};DropboxFile.prototype.getMode=function(){return App.MODE_DROPBOX};DropboxFile.prototype.isAutosaveOptional=function(){return!0};DropboxFile.prototype.getTitle=function(){return this.stat.name}; DropboxFile.prototype.isRenamable=function(){return!0};DropboxFile.prototype.getSize=function(){return this.stat.size};DropboxFile.prototype.isRevisionHistorySupported=function(){return!0}; -DropboxFile.prototype.getRevisions=function(a,c){var b=this.ui.dropbox.client.filesListRevisions({path:this.stat.path_lower,limit:100});b.then(mxUtils.bind(this,function(b){try{for(var d=[],h=b.entries.length-1;0<=h;h--)mxUtils.bind(this,function(a){d.push({modifiedDate:a.client_modified,fileSize:a.size,getXml:mxUtils.bind(this,function(b,c){this.ui.dropbox.readFile({path:this.stat.path_lower,rev:a.rev},b,c)}),getUrl:mxUtils.bind(this,function(b){return this.ui.getUrl(window.location.pathname+"?rev="+ -a.rev+"&chrome=0&nav=1&layers=1&edit=_blank"+(null!=b?"&page="+b:""))+window.location.hash})})})(b.entries[h]);a(d)}catch(k){c(k)}}));b["catch"](function(a){c(a)})};DropboxFile.prototype.getLatestVersion=function(a,c){this.ui.dropbox.getFile(this.getId(),a,c)};DropboxFile.prototype.updateDescriptor=function(a){this.stat=a.stat};DropboxFile.prototype.save=function(a,c,b){this.doSave(this.getTitle(),c,b)};DropboxFile.prototype.saveAs=function(a,c,b){this.doSave(a,c,b)}; +DropboxFile.prototype.getRevisions=function(a,c){var b=this.ui.dropbox.client.filesListRevisions({path:this.stat.path_lower,limit:100});b.then(mxUtils.bind(this,function(b){try{for(var d=[],e=b.entries.length-1;0<=e;e--)mxUtils.bind(this,function(a){d.push({modifiedDate:a.client_modified,fileSize:a.size,getXml:mxUtils.bind(this,function(b,c){this.ui.dropbox.readFile({path:this.stat.path_lower,rev:a.rev},b,c)}),getUrl:mxUtils.bind(this,function(b){return this.ui.getUrl(window.location.pathname+"?rev="+ +a.rev+"&chrome=0&nav=1&layers=1&edit=_blank"+(null!=b?"&page="+b:""))+window.location.hash})})})(b.entries[e]);a(d)}catch(k){c(k)}}));b["catch"](function(a){c(a)})};DropboxFile.prototype.getLatestVersion=function(a,c){this.ui.dropbox.getFile(this.getId(),a,c)};DropboxFile.prototype.updateDescriptor=function(a){this.stat=a.stat};DropboxFile.prototype.save=function(a,c,b){this.doSave(this.getTitle(),c,b)};DropboxFile.prototype.saveAs=function(a,c,b){this.doSave(a,c,b)}; DropboxFile.prototype.doSave=function(a,c,b){var d=this.stat.name;this.stat.name=a;DrawioFile.prototype.save.apply(this,arguments);this.stat.name=d;this.saveFile(a,!1,c,b)}; -DropboxFile.prototype.saveFile=function(a,c,b,d){this.isEditable()?this.savingFile?null!=d&&d({code:App.ERROR_BUSY}):(c=mxUtils.bind(this,function(c){if(c){this.savingFile=!0;var f=this.isModified,k=this.isModified(),m=mxUtils.bind(this,function(){this.setModified(!1);this.isModified=function(){return k}});m();var p=mxUtils.bind(this,function(c){var g=this.stat.path_display.lastIndexOf("/"),g=1<g?this.stat.path_display.substring(1,g+1):null;this.ui.dropbox.saveFile(a,c,mxUtils.bind(this,function(a){this.savingFile= -!1;this.isModified=f;this.stat=a;this.contentChanged();null!=b&&b()}),mxUtils.bind(this,function(a){this.savingFile=!1;this.isModified=f;this.setModified(k||this.isModified());if(null!=d){if(null!=a&&null!=a.retry){var b=a.retry;a.retry=function(){m();b()}}d(a)}}),g)});this.ui.useCanvasForExport&&/(\.png)$/i.test(this.getTitle())?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){p(this.ui.base64ToBlob(a,"image/png"))}),d,this.ui.getCurrentFile()!=this?this.getData():null):p(this.getData())}else null!= +DropboxFile.prototype.saveFile=function(a,c,b,d){this.isEditable()?this.savingFile?null!=d&&d({code:App.ERROR_BUSY}):(c=mxUtils.bind(this,function(c){if(c){this.savingFile=!0;var e=this.isModified,g=this.isModified(),m=mxUtils.bind(this,function(){this.setModified(!1);this.isModified=function(){return g}});m();var n=mxUtils.bind(this,function(c){var f=this.stat.path_display.lastIndexOf("/"),f=1<f?this.stat.path_display.substring(1,f+1):null;this.ui.dropbox.saveFile(a,c,mxUtils.bind(this,function(a){this.savingFile= +!1;this.isModified=e;this.stat=a;this.contentChanged();null!=b&&b()}),mxUtils.bind(this,function(a){this.savingFile=!1;this.isModified=e;this.setModified(g||this.isModified());if(null!=d){if(null!=a&&null!=a.retry){var b=a.retry;a.retry=function(){m();b()}}d(a)}}),f)});this.ui.useCanvasForExport&&/(\.png)$/i.test(this.getTitle())?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){n(this.ui.base64ToBlob(a,"image/png"))}),d,this.ui.getCurrentFile()!=this?this.getData():null):n(this.getData())}else null!= d&&d()}),this.getTitle()==a?c(!0):this.ui.dropbox.checkExists(a,c)):null!=b&&b()};DropboxFile.prototype.rename=function(a,c,b){this.ui.dropbox.renameFile(this,a,mxUtils.bind(this,function(d){this.hasSameExtension(a,this.getTitle())?(this.stat=d,this.descriptorChanged(),null!=c&&c()):(this.stat=d,this.descriptorChanged(),this.save(!0,c,b))}),b)};DropboxLibrary=function(a,c,b){DropboxFile.call(this,a,c,b)};mxUtils.extend(DropboxLibrary,DropboxFile);DropboxLibrary.prototype.isAutosave=function(){return!0};DropboxLibrary.prototype.doSave=function(a,c,b){this.saveFile(a,!1,c,b)};DropboxLibrary.prototype.open=function(){};DropboxClient=function(a){DrawioClient.call(this,a,"dbauth");this.client=new Dropbox({clientId:App.DROPBOX_APPKEY});this.client.setAccessToken(this.token)};mxUtils.extend(DropboxClient,DrawioClient);DropboxClient.prototype.appPath="/drawio/";DropboxClient.prototype.extension=".html";DropboxClient.prototype.writingFile=!1;DropboxClient.prototype.maxRetries=4; DropboxClient.prototype.logout=function(){this.clearPersistentToken();this.setUser(null);this.token=null;this.client.authTokenRevoke().then(mxUtils.bind(this,function(){this.client.setAccessToken(null)}))}; -DropboxClient.prototype.updateUser=function(a,c,b){var d=!0,f=window.setTimeout(mxUtils.bind(this,function(){d=!1;c({code:App.ERROR_TIMEOUT})}),this.ui.timeout),h=this.client.usersGetCurrentAccount();h.then(mxUtils.bind(this,function(b){window.clearTimeout(f);d&&(this.setUser(new DrawioUser(b.account_id,b.email,b.name.display_name)),a())}));h["catch"](mxUtils.bind(this,function(h){window.clearTimeout(f);d&&(null==h||401!==h.status||b?c({message:mxResources.get("accessDenied")}):(this.setUser(null), +DropboxClient.prototype.updateUser=function(a,c,b){var d=!0,g=window.setTimeout(mxUtils.bind(this,function(){d=!1;c({code:App.ERROR_TIMEOUT})}),this.ui.timeout),e=this.client.usersGetCurrentAccount();e.then(mxUtils.bind(this,function(b){window.clearTimeout(g);d&&(this.setUser(new DrawioUser(b.account_id,b.email,b.name.display_name)),a())}));e["catch"](mxUtils.bind(this,function(e){window.clearTimeout(g);d&&(null==e||401!==e.status||b?c({message:mxResources.get("accessDenied")}):(this.setUser(null), this.client.setAccessToken(null),this.authenticate(mxUtils.bind(this,function(){this.updateUser(a,c,!0)}),c)))}))}; -DropboxClient.prototype.authenticate=function(a,c){if(null==window.onDropboxCallback){var b=mxUtils.bind(this,function(){var d=!0;this.ui.showAuthDialog(this,!0,mxUtils.bind(this,function(f,h){null!=window.open(this.client.getAuthenticationUrl("https://"+window.location.host+"/dropbox.html"),"dbauth")?window.onDropboxCallback=mxUtils.bind(this,function(k,m){if(d){window.onDropboxCallback=null;d=!1;try{null==k?c({message:mxResources.get("accessDenied"),retry:b}):(null!=h&&h(),this.client.setAccessToken(k), -this.setUser(null),f&&this.setPersistentToken(k),a())}catch(p){c(p)}finally{null!=m&&m.close()}}else null!=m&&m.close()}):c({message:mxResources.get("serviceUnavailableOrBlocked"),retry:b})}),mxUtils.bind(this,function(){d&&(window.onDropboxCallback=null,d=!1,c({message:mxResources.get("accessDenied"),retry:b}))}))});b()}else c({code:App.ERROR_BUSY})}; -DropboxClient.prototype.executePromise=function(a,c,b){var d=mxUtils.bind(this,function(h){var k=!0,m=window.setTimeout(mxUtils.bind(this,function(){k=!1;b({code:App.ERROR_TIMEOUT,retry:f})}),this.ui.timeout);a.then(mxUtils.bind(this,function(a){window.clearTimeout(m);k&&null!=c&&c(a)}));a["catch"](mxUtils.bind(this,function(a){window.clearTimeout(m);k&&(null==a||500!=a.status&&400!=a.status&&401!=a.status?b({message:mxResources.get("error")+" "+a.status}):(this.setUser(null),this.client.setAccessToken(null), -h?b({message:mxResources.get("accessDenied"),retry:mxUtils.bind(this,function(){this.authenticate(function(){f(!0)},b)})}):this.authenticate(function(){d(!0)},b)))}))}),f=mxUtils.bind(this,function(a){null==this.user?this.updateUser(function(){f(!0)},b,a):d(a)});null===this.client.getAccessToken()?this.authenticate(function(){f(!0)},b):f(!1)};DropboxClient.prototype.getLibrary=function(a,c,b){this.getFile(a,c,b,!0)}; -DropboxClient.prototype.getFile=function(a,c,b,d){d=null!=d?d:!1;var f=/\.png$/i.test(a);if(/^https:\/\//i.test(a)||/\.v(dx|sdx?)$/i.test(a)||/\.gliffy$/i.test(a)||!this.ui.useCanvasForExport&&f){var h=mxUtils.bind(this,function(){var d=a.split("/");this.ui.convertFile(a,0<d.length?d[d.length-1]:a,null,this.extension,c,b)});null!=this.token?h():this.authenticate(h,b)}else h={path:"/"+a},null!=urlParams.rev&&(h.rev=urlParams.rev),this.readFile(h,mxUtils.bind(this,function(b,h){var k=f?b.lastIndexOf(","): --1,g=null;0<k&&(k=this.ui.extractGraphModelFromPng(b.substring(k+1)),null!=k&&0<k.length?b=k:g=new LocalFile(this,b,a,!0));c(null!=g?g:d?new DropboxLibrary(this.ui,b,h):new DropboxFile(this.ui,b,h))}),b,f)}; -DropboxClient.prototype.readFile=function(a,c,b,d){var f=mxUtils.bind(this,function(k){var m=!0,p=window.setTimeout(mxUtils.bind(this,function(){m=!1;b({code:App.ERROR_TIMEOUT})}),this.ui.timeout),g=this.client.filesGetMetadata({path:"/"+a.path.substring(1),include_deleted:!1});g.then(mxUtils.bind(this,function(a){}));g["catch"](function(a){window.clearTimeout(p);m&&null!=a&&409==a.status&&(m=!1,b({message:mxResources.get("fileNotFound")}))});g=this.client.filesDownload(a);g.then(mxUtils.bind(this, -function(a){window.clearTimeout(p);if(m){m=!1;try{var f=new FileReader;f.onload=mxUtils.bind(this,function(b){c(f.result,a)});d?f.readAsDataURL(a.fileBlob):f.readAsText(a.fileBlob)}catch(q){b(q)}}}));g["catch"](mxUtils.bind(this,function(a){window.clearTimeout(p);m&&(m=!1,null==a||500!=a.status&&400!=a.status&&401!=a.status?b({message:mxResources.get("error")+" "+a.status}):(this.client.setAccessToken(null),this.setUser(null),k?b({message:mxResources.get("accessDenied"),retry:mxUtils.bind(this,function(){this.authenticate(function(){h(!0)}, -b)})}):this.authenticate(function(){f(!0)},b)))}))}),h=mxUtils.bind(this,function(a){null==this.user?this.updateUser(function(){h(!0)},b,a):f(a)});null===this.client.getAccessToken()?this.authenticate(function(){h(!0)},b):h(!1)}; +DropboxClient.prototype.authenticate=function(a,c){if(null==window.onDropboxCallback){var b=mxUtils.bind(this,function(){var d=!0;this.ui.showAuthDialog(this,!0,mxUtils.bind(this,function(g,e){null!=window.open(this.client.getAuthenticationUrl("https://"+window.location.host+"/dropbox.html"),"dbauth")?window.onDropboxCallback=mxUtils.bind(this,function(k,m){if(d){window.onDropboxCallback=null;d=!1;try{null==k?c({message:mxResources.get("accessDenied"),retry:b}):(null!=e&&e(),this.client.setAccessToken(k), +this.setUser(null),g&&this.setPersistentToken(k),a())}catch(n){c(n)}finally{null!=m&&m.close()}}else null!=m&&m.close()}):c({message:mxResources.get("serviceUnavailableOrBlocked"),retry:b})}),mxUtils.bind(this,function(){d&&(window.onDropboxCallback=null,d=!1,c({message:mxResources.get("accessDenied"),retry:b}))}))});b()}else c({code:App.ERROR_BUSY})}; +DropboxClient.prototype.executePromise=function(a,c,b){var d=mxUtils.bind(this,function(e){var k=!0,m=window.setTimeout(mxUtils.bind(this,function(){k=!1;b({code:App.ERROR_TIMEOUT,retry:g})}),this.ui.timeout);a.then(mxUtils.bind(this,function(a){window.clearTimeout(m);k&&null!=c&&c(a)}));a["catch"](mxUtils.bind(this,function(a){window.clearTimeout(m);k&&(null==a||500!=a.status&&400!=a.status&&401!=a.status?b({message:mxResources.get("error")+" "+a.status}):(this.setUser(null),this.client.setAccessToken(null), +e?b({message:mxResources.get("accessDenied"),retry:mxUtils.bind(this,function(){this.authenticate(function(){g(!0)},b)})}):this.authenticate(function(){d(!0)},b)))}))}),g=mxUtils.bind(this,function(a){null==this.user?this.updateUser(function(){g(!0)},b,a):d(a)});null===this.client.getAccessToken()?this.authenticate(function(){g(!0)},b):g(!1)};DropboxClient.prototype.getLibrary=function(a,c,b){this.getFile(a,c,b,!0)}; +DropboxClient.prototype.getFile=function(a,c,b,d){d=null!=d?d:!1;var g=/\.png$/i.test(a);if(/^https:\/\//i.test(a)||/\.v(dx|sdx?)$/i.test(a)||/\.gliffy$/i.test(a)||!this.ui.useCanvasForExport&&g){var e=mxUtils.bind(this,function(){var d=a.split("/");this.ui.convertFile(a,0<d.length?d[d.length-1]:a,null,this.extension,c,b)});null!=this.token?e():this.authenticate(e,b)}else e={path:"/"+a},null!=urlParams.rev&&(e.rev=urlParams.rev),this.readFile(e,mxUtils.bind(this,function(b,e){var k=g?b.lastIndexOf(","): +-1,m=null;0<k&&(k=this.ui.extractGraphModelFromPng(b.substring(k+1)),null!=k&&0<k.length?b=k:m=new LocalFile(this,b,a,!0));c(null!=m?m:d?new DropboxLibrary(this.ui,b,e):new DropboxFile(this.ui,b,e))}),b,g)}; +DropboxClient.prototype.readFile=function(a,c,b,d){var g=mxUtils.bind(this,function(k){var m=!0,n=window.setTimeout(mxUtils.bind(this,function(){m=!1;b({code:App.ERROR_TIMEOUT})}),this.ui.timeout),q=this.client.filesGetMetadata({path:"/"+a.path.substring(1),include_deleted:!1});q.then(mxUtils.bind(this,function(a){}));q["catch"](function(a){window.clearTimeout(n);m&&null!=a&&409==a.status&&(m=!1,b({message:mxResources.get("fileNotFound")}))});q=this.client.filesDownload(a);q.then(mxUtils.bind(this, +function(a){window.clearTimeout(n);if(m){m=!1;try{var e=new FileReader;e.onload=mxUtils.bind(this,function(b){c(e.result,a)});d?e.readAsDataURL(a.fileBlob):e.readAsText(a.fileBlob)}catch(p){b(p)}}}));q["catch"](mxUtils.bind(this,function(a){window.clearTimeout(n);m&&(m=!1,null==a||500!=a.status&&400!=a.status&&401!=a.status?b({message:mxResources.get("error")+" "+a.status}):(this.client.setAccessToken(null),this.setUser(null),k?b({message:mxResources.get("accessDenied"),retry:mxUtils.bind(this,function(){this.authenticate(function(){e(!0)}, +b)})}):this.authenticate(function(){g(!0)},b)))}))}),e=mxUtils.bind(this,function(a){null==this.user?this.updateUser(function(){e(!0)},b,a):g(a)});null===this.client.getAccessToken()?this.authenticate(function(){e(!0)},b):e(!1)}; DropboxClient.prototype.checkExists=function(a,c,b){var d=this.client.filesGetMetadata({path:"/"+a.toLowerCase(),include_deleted:!1});this.executePromise(d,mxUtils.bind(this,function(d){b?c(!1,!0,d):this.ui.confirm(mxResources.get("replaceIt",[a]),function(){c(!0,!0,d)},function(){c(!1,!0,d)})}),function(a){c(!0,!1)})}; -DropboxClient.prototype.renameFile=function(a,c,b,d){if(/[\\\/:\?\*"\|]/.test(c))d({message:mxResources.get("dropboxCharsNotAllowed")});else{if(null!=a&&null!=c){var f=a.stat.path_display.substring(1),h=f.lastIndexOf("/");0<h&&(c=f.substring(0,h+1)+c)}null!=a&&null!=c&&a.stat.path_lower.substring(1)!==c.toLowerCase()?this.checkExists(c,mxUtils.bind(this,function(f,h,p){f?(f=mxUtils.bind(this,function(f){f=this.client.filesMove({from_path:a.stat.path_display,to_path:"/"+c,autorename:!1});this.executePromise(f, -b,d)}),h&&p.path_lower.substring(1)!==c.toLowerCase()?(h=this.client.filesDelete({path:"/"+c.toLowerCase()}),this.executePromise(h,f,d)):f()):d()})):d({message:mxResources.get("invalidName")})}};DropboxClient.prototype.insertLibrary=function(a,c,b,d){this.insertFile(a,c,b,d,!0)}; -DropboxClient.prototype.insertFile=function(a,c,b,d,f){f=null!=f?f:!1;this.checkExists(a,mxUtils.bind(this,function(h){h?this.saveFile(a,c,mxUtils.bind(this,function(a){f?b(new DropboxLibrary(this.ui,c,a)):b(new DropboxFile(this.ui,c,a))}),d):d()}))}; -DropboxClient.prototype.saveFile=function(a,c,b,d,f){/[\\\/:\?\*"\|]/.test(a)?d({message:mxResources.get("dropboxCharsNotAllowed")}):15E7<=c.length?d({message:mxResources.get("drawingTooLarge")+" ("+this.ui.formatFileSize(c.length)+" / 150 MB)"}):(a=this.client.filesUpload({path:"/"+(null!=f?f:"")+a,mode:{".tag":"overwrite"},mute:!0,contents:new Blob([c],{type:"text/plain"})}),this.executePromise(a,b,d))}; -DropboxClient.prototype.pickLibrary=function(a){Dropbox.choose({linkType:"direct",cancel:mxUtils.bind(this,function(){}),success:mxUtils.bind(this,function(c){if(this.ui.spinner.spin(document.body,mxResources.get("loading"))){var b=mxUtils.bind(this,function(a){this.ui.spinner.stop();this.ui.handleError(a)}),d=c[0].link.indexOf(this.appPath);if(0<d){var f=decodeURIComponent(c[0].link.substring(d+this.appPath.length-1));this.readFile({path:f},mxUtils.bind(this,function(d,k){if(null!=k&&k.id==c[0].id)try{this.ui.spinner.stop(), -a(f.substring(1),new DropboxLibrary(this.ui,d,k))}catch(m){this.ui.handleError(m)}else this.createLibrary(c[0],a,b)}),b)}else this.createLibrary(c[0],a,b)}})})}; -DropboxClient.prototype.createLibrary=function(a,c,b){this.ui.confirm(mxResources.get("note")+": "+mxResources.get("fileWillBeSavedInAppFolder",[a.name]),mxUtils.bind(this,function(){this.ui.loadUrl(a.link,mxUtils.bind(this,function(d){this.insertFile(a.name,d,mxUtils.bind(this,function(a){try{this.ui.spinner.stop(),c(a.getHash().substring(1),a)}catch(h){b(h)}}),b,!0)}),b)}),mxUtils.bind(this,function(){this.ui.spinner.stop()}))}; -DropboxClient.prototype.pickFile=function(a,c){null!=Dropbox.choose?(a=null!=a?a:mxUtils.bind(this,function(a,c){this.ui.loadFile(null!=a?"D"+encodeURIComponent(a):c.getHash(),null,c)}),Dropbox.choose({linkType:"direct",cancel:mxUtils.bind(this,function(){}),success:mxUtils.bind(this,function(b){if(this.ui.spinner.spin(document.body,mxResources.get("loading")))if(c)this.ui.spinner.stop(),a(b[0].link);else{var d=mxUtils.bind(this,function(a){this.ui.spinner.stop();this.ui.handleError(a)}),f=mxUtils.bind(this, -function(b,c){this.ui.spinner.stop();a(b,c)}),h=/\.png$/i.test(b[0].name);if(/\.vsdx$/i.test(b[0].name)||/\.gliffy$/i.test(b[0].name)||!this.ui.useCanvasForExport&&h)f(b[0].link);else{var k=b[0].link.indexOf(this.appPath);if(0<k){var m=decodeURIComponent(b[0].link.substring(k+this.appPath.length-1));this.readFile({path:m},mxUtils.bind(this,function(c,g){if(null!=g&&g.id==b[0].id){var k=h?c.lastIndexOf(","):-1;this.ui.spinner.stop();var n=null;0<k&&(k=this.ui.extractGraphModelFromPng(c.substring(k+ -1)),null!=k&&0<k.length?c=k:n=new LocalFile(this,c,m,!0));a(m.substring(1),null!=n?n:new DropboxFile(this.ui,c,g))}else this.createFile(b[0],f,d)}),d,h)}else this.createFile(b[0],f,d)}}})})):this.ui.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})}; -DropboxClient.prototype.createFile=function(a,c,b){var d=/(\.png)$/i.test(a.name);this.ui.loadUrl(a.link,mxUtils.bind(this,function(f){null!=f&&0<f.length?this.ui.confirm(mxResources.get("note")+": "+mxResources.get("fileWillBeSavedInAppFolder",[a.name]),mxUtils.bind(this,function(){var h=d?f.lastIndexOf(","):-1;0<h&&(h=this.ui.extractGraphModelFromPng(f.substring(h+1)),null!=h&&0<h.length&&(f=h));this.insertFile(a.name,f,mxUtils.bind(this,function(b){c(a.name,b)}),b)}),mxUtils.bind(this,function(){this.ui.spinner.stop()})): +DropboxClient.prototype.renameFile=function(a,c,b,d){if(/[\\\/:\?\*"\|]/.test(c))d({message:mxResources.get("dropboxCharsNotAllowed")});else{if(null!=a&&null!=c){var g=a.stat.path_display.substring(1),e=g.lastIndexOf("/");0<e&&(c=g.substring(0,e+1)+c)}null!=a&&null!=c&&a.stat.path_lower.substring(1)!==c.toLowerCase()?this.checkExists(c,mxUtils.bind(this,function(e,g,n){e?(e=mxUtils.bind(this,function(e){e=this.client.filesMove({from_path:a.stat.path_display,to_path:"/"+c,autorename:!1});this.executePromise(e, +b,d)}),g&&n.path_lower.substring(1)!==c.toLowerCase()?(g=this.client.filesDelete({path:"/"+c.toLowerCase()}),this.executePromise(g,e,d)):e()):d()})):d({message:mxResources.get("invalidName")})}};DropboxClient.prototype.insertLibrary=function(a,c,b,d){this.insertFile(a,c,b,d,!0)}; +DropboxClient.prototype.insertFile=function(a,c,b,d,g){g=null!=g?g:!1;this.checkExists(a,mxUtils.bind(this,function(e){e?this.saveFile(a,c,mxUtils.bind(this,function(a){g?b(new DropboxLibrary(this.ui,c,a)):b(new DropboxFile(this.ui,c,a))}),d):d()}))}; +DropboxClient.prototype.saveFile=function(a,c,b,d,g){/[\\\/:\?\*"\|]/.test(a)?d({message:mxResources.get("dropboxCharsNotAllowed")}):15E7<=c.length?d({message:mxResources.get("drawingTooLarge")+" ("+this.ui.formatFileSize(c.length)+" / 150 MB)"}):(a=this.client.filesUpload({path:"/"+(null!=g?g:"")+a,mode:{".tag":"overwrite"},mute:!0,contents:new Blob([c],{type:"text/plain"})}),this.executePromise(a,b,d))}; +DropboxClient.prototype.pickLibrary=function(a){Dropbox.choose({linkType:"direct",cancel:mxUtils.bind(this,function(){}),success:mxUtils.bind(this,function(c){if(this.ui.spinner.spin(document.body,mxResources.get("loading"))){var b=mxUtils.bind(this,function(a){this.ui.spinner.stop();this.ui.handleError(a)}),d=c[0].link.indexOf(this.appPath);if(0<d){var g=decodeURIComponent(c[0].link.substring(d+this.appPath.length-1));this.readFile({path:g},mxUtils.bind(this,function(d,k){if(null!=k&&k.id==c[0].id)try{this.ui.spinner.stop(), +a(g.substring(1),new DropboxLibrary(this.ui,d,k))}catch(m){this.ui.handleError(m)}else this.createLibrary(c[0],a,b)}),b)}else this.createLibrary(c[0],a,b)}})})}; +DropboxClient.prototype.createLibrary=function(a,c,b){this.ui.confirm(mxResources.get("note")+": "+mxResources.get("fileWillBeSavedInAppFolder",[a.name]),mxUtils.bind(this,function(){this.ui.loadUrl(a.link,mxUtils.bind(this,function(d){this.insertFile(a.name,d,mxUtils.bind(this,function(a){try{this.ui.spinner.stop(),c(a.getHash().substring(1),a)}catch(e){b(e)}}),b,!0)}),b)}),mxUtils.bind(this,function(){this.ui.spinner.stop()}))}; +DropboxClient.prototype.pickFile=function(a,c){null!=Dropbox.choose?(a=null!=a?a:mxUtils.bind(this,function(a,c){this.ui.loadFile(null!=a?"D"+encodeURIComponent(a):c.getHash(),null,c)}),Dropbox.choose({linkType:"direct",cancel:mxUtils.bind(this,function(){}),success:mxUtils.bind(this,function(b){if(this.ui.spinner.spin(document.body,mxResources.get("loading")))if(c)this.ui.spinner.stop(),a(b[0].link);else{var d=mxUtils.bind(this,function(a){this.ui.spinner.stop();this.ui.handleError(a)}),g=mxUtils.bind(this, +function(b,c){this.ui.spinner.stop();a(b,c)}),e=/\.png$/i.test(b[0].name);if(/\.vsdx$/i.test(b[0].name)||/\.gliffy$/i.test(b[0].name)||!this.ui.useCanvasForExport&&e)g(b[0].link);else{var k=b[0].link.indexOf(this.appPath);if(0<k){var m=decodeURIComponent(b[0].link.substring(k+this.appPath.length-1));this.readFile({path:m},mxUtils.bind(this,function(c,k){if(null!=k&&k.id==b[0].id){var f=e?c.lastIndexOf(","):-1;this.ui.spinner.stop();var l=null;0<f&&(f=this.ui.extractGraphModelFromPng(c.substring(f+ +1)),null!=f&&0<f.length?c=f:l=new LocalFile(this,c,m,!0));a(m.substring(1),null!=l?l:new DropboxFile(this.ui,c,k))}else this.createFile(b[0],g,d)}),d,e)}else this.createFile(b[0],g,d)}}})})):this.ui.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})}; +DropboxClient.prototype.createFile=function(a,c,b){var d=/(\.png)$/i.test(a.name);this.ui.loadUrl(a.link,mxUtils.bind(this,function(g){null!=g&&0<g.length?this.ui.confirm(mxResources.get("note")+": "+mxResources.get("fileWillBeSavedInAppFolder",[a.name]),mxUtils.bind(this,function(){var e=d?g.lastIndexOf(","):-1;0<e&&(e=this.ui.extractGraphModelFromPng(g.substring(e+1)),null!=e&&0<e.length&&(g=e));this.insertFile(a.name,g,mxUtils.bind(this,function(b){c(a.name,b)}),b)}),mxUtils.bind(this,function(){this.ui.spinner.stop()})): (this.ui.spinner.stop(),b({message:mxResources.get("errorLoadingFile")}))}),b,d)};OneDriveFile=function(a,c,b){DrawioFile.call(this,a,c);this.meta=b};mxUtils.extend(OneDriveFile,DrawioFile);OneDriveFile.prototype.getId=function(){return this.getIdOf(this.meta)};OneDriveFile.prototype.getParentId=function(){return this.getIdOf(this.meta,!0)};OneDriveFile.prototype.getIdOf=function(a,c){return(a.parentReference.driveId?a.parentReference.driveId+"/":"")+(c?a.parentReference.id:a.id)}; OneDriveFile.prototype.getChannelId=function(){return"W-"+DrawioFile.prototype.getChannelId.apply(this,arguments)};OneDriveFile.prototype.getHash=function(){return"W"+encodeURIComponent(this.getId())};OneDriveFile.prototype.getMode=function(){return App.MODE_ONEDRIVE};OneDriveFile.prototype.isAutosaveOptional=function(){return!0};OneDriveFile.prototype.getTitle=function(){return this.meta.name};OneDriveFile.prototype.isRenamable=function(){return!0};OneDriveFile.prototype.isSyncSupported=function(){return!0}; OneDriveFile.prototype.getSize=function(){return this.meta.size};OneDriveFile.prototype.isConflict=function(a){return null!=a&&(412==a.getStatus()||409==a.getStatus())};OneDriveFile.prototype.getCurrentUser=function(){return null!=this.ui.oneDrive?this.ui.oneDrive.user:null}; OneDriveFile.prototype.loadDescriptor=function(a,c){this.ui.oneDrive.executeRequest(this.ui.oneDrive.getItemURL(this.getId()),mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()?a(JSON.parse(b.getText())):null!=c&&c()}),c)};OneDriveFile.prototype.getLatestVersion=function(a,c){this.ui.oneDrive.getFile(this.getId(),a,c)};OneDriveFile.prototype.getDescriptor=function(){return this.meta};OneDriveFile.prototype.setDescriptor=function(a){this.meta=a}; OneDriveFile.prototype.getDescriptorSecret=function(a){return null!=a.file&&null!=a.file.hashes&&null!=a.file.hashes.quickXorHash?a.file.hashes.quickXorHash:null};OneDriveFile.prototype.getDescriptorEtag=function(a){return a.eTag};OneDriveFile.prototype.setDescriptorEtag=function(a,c){a.eTag=c}; OneDriveFile.prototype.loadPatchDescriptor=function(a,c){var b=this.ui.oneDrive.getItemURL(this.getId());this.ui.oneDrive.executeRequest(b+"?select=etag,file",mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()?a(JSON.parse(b.getText())):c(this.ui.oneDrive.parseRequestText(b))}),c)}; -OneDriveFile.prototype.getChannelKey=function(){return"undefined"!==typeof CryptoJS?CryptoJS.MD5(this.meta.createdDateTime+(null!=this.meta.createdBy&&null!=this.meta.createdBy.user?this.meta.createdBy.user.id:"")).toString():null};OneDriveFile.prototype.getLastModifiedDate=function(){return new Date(this.meta.lastModifiedDateTime)};OneDriveFile.prototype.save=function(a,c,b,d,f){DrawioFile.prototype.save.apply(this,arguments);this.saveFile(this.getTitle(),!1,c,b,d,f)}; -OneDriveFile.prototype.saveAs=function(a,c,b){var d=this.meta.name;this.meta.name=a;DrawioFile.prototype.save.apply(this,arguments);this.meta.name=d;this.saveFile(a,!1,c,b)};OneDriveFile.prototype.doSave=function(a,c,b,d,f){this.saveFile(a,!1,c,b,d,f)}; -OneDriveFile.prototype.saveFile=function(a,c,b,d,f,h){if(!this.isEditable())null!=b&&b();else if(!this.savingFile)if(this.getTitle()==a){var k=mxUtils.bind(this,function(){var a=h||this.constructor!=OneDriveFile||"manual"!=DrawioFile.SYNC&&"auto"!=DrawioFile.SYNC?null:this.getCurrentEtag(),c=this.data,f=this.meta,l=this.isModified,n=this.isModified();this.savingFile=!0;var q=mxUtils.bind(this,function(){this.setModified(!1);this.isModified=function(){return n}});q();this.ui.oneDrive.saveFile(this, -mxUtils.bind(this,function(a){this.isModified=l;this.savingFile=!1;this.meta=a;this.fileSaved(c,f,mxUtils.bind(this,function(){this.contentChanged();null!=b&&b()}),d)}),mxUtils.bind(this,function(a,b){this.savingFile=!1;this.isModified=l;this.setModified(n||this.isModified());if(this.isConflict(b))this.inConflictState=!0,null!=this.sync?(this.savingFile=!0,this.sync.fileConflict(null,mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){this.updateFileData();k()}),100+500*Math.random())}), -mxUtils.bind(this,function(){this.savingFile=!1;null!=d&&d()}))):null!=d&&d();else if(null!=d){if(null!=a&&null!=a.retry){var c=a.retry;a.retry=function(){q();c()}}d(a)}}),a)});k()}else this.savingFile=!0,this.ui.oneDrive.insertFile(a,this.getData(),mxUtils.bind(this,function(a){this.savingFile=!1;null!=b&&b();this.ui.fileLoaded(a)}),mxUtils.bind(this,function(){this.savingFile=!1;null!=d&&d()}))}; -OneDriveFile.prototype.rename=function(a,c,b){var d=this.getCurrentEtag();this.ui.oneDrive.renameFile(this,a,mxUtils.bind(this,function(f){this.hasSameExtension(a,this.getTitle())?(this.meta=f,this.descriptorChanged(),null!=this.sync&&this.sync.descriptorChanged(d),null!=c&&c(f)):(this.meta=f,null!=this.sync&&this.sync.descriptorChanged(d),this.save(!0,c,b))}),b)}; +OneDriveFile.prototype.getChannelKey=function(){return"undefined"!==typeof CryptoJS?CryptoJS.MD5(this.meta.createdDateTime+(null!=this.meta.createdBy&&null!=this.meta.createdBy.user?this.meta.createdBy.user.id:"")).toString():null};OneDriveFile.prototype.getLastModifiedDate=function(){return new Date(this.meta.lastModifiedDateTime)};OneDriveFile.prototype.save=function(a,c,b,d,g){DrawioFile.prototype.save.apply(this,arguments);this.saveFile(this.getTitle(),!1,c,b,d,g)}; +OneDriveFile.prototype.saveAs=function(a,c,b){var d=this.meta.name;this.meta.name=a;DrawioFile.prototype.save.apply(this,arguments);this.meta.name=d;this.saveFile(a,!1,c,b)};OneDriveFile.prototype.doSave=function(a,c,b,d,g){this.saveFile(a,!1,c,b,d,g)}; +OneDriveFile.prototype.saveFile=function(a,c,b,d,g,e){if(!this.isEditable())null!=b&&b();else if(!this.savingFile)if(this.getTitle()==a){var k=mxUtils.bind(this,function(){var a=e||this.constructor!=OneDriveFile||"manual"!=DrawioFile.SYNC&&"auto"!=DrawioFile.SYNC?null:this.getCurrentEtag(),c=this.meta,g=this.isModified,f=this.isModified();this.savingFile=!0;var l=mxUtils.bind(this,function(){this.setModified(!1);this.isModified=function(){return f}});l();this.ui.oneDrive.saveFile(this,mxUtils.bind(this, +function(a,e){this.isModified=g;this.savingFile=!1;this.meta=a;this.fileSaved(e,c,mxUtils.bind(this,function(){this.contentChanged();null!=b&&b()}),d)}),mxUtils.bind(this,function(a,b){this.savingFile=!1;this.isModified=g;this.setModified(f||this.isModified());if(this.isConflict(b))this.inConflictState=!0,null!=this.sync?(this.savingFile=!0,this.sync.fileConflict(null,mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){this.updateFileData();k()}),100+500*Math.random())}),mxUtils.bind(this, +function(){this.savingFile=!1;null!=d&&d()}))):null!=d&&d();else if(null!=d){if(null!=a&&null!=a.retry){var c=a.retry;a.retry=function(){l();c()}}d(a)}}),a)});k()}else this.savingFile=!0,this.ui.oneDrive.insertFile(a,this.getData(),mxUtils.bind(this,function(a){this.savingFile=!1;null!=b&&b();this.ui.fileLoaded(a)}),mxUtils.bind(this,function(){this.savingFile=!1;null!=d&&d()}))}; +OneDriveFile.prototype.rename=function(a,c,b){var d=this.getCurrentEtag();this.ui.oneDrive.renameFile(this,a,mxUtils.bind(this,function(g){this.hasSameExtension(a,this.getTitle())?(this.meta=g,this.descriptorChanged(),null!=this.sync&&this.sync.descriptorChanged(d),null!=c&&c(g)):(this.meta=g,null!=this.sync&&this.sync.descriptorChanged(d),this.save(!0,c,b))}),b)}; OneDriveFile.prototype.move=function(a,c,b){this.ui.oneDrive.moveFile(this.getId(),a,mxUtils.bind(this,function(a){this.meta=a;this.descriptorChanged();null!=c&&c(a)}),b)};OneDriveLibrary=function(a,c,b){OneDriveFile.call(this,a,c,b)};mxUtils.extend(OneDriveLibrary,OneDriveFile);OneDriveLibrary.prototype.isAutosave=function(){return!0};OneDriveLibrary.prototype.doSave=function(a,c,b){this.saveFile(a,!1,c,b)};OneDriveLibrary.prototype.open=function(){};OneDriveClient=function(a){DrawioClient.call(this,a,"oneDriveAuthInfo");a=JSON.parse(this.token);null!=a&&(this.token=a.access_token,this.endpointHint=a.endpointHint,this.tokenExpiresOn=a.expiresOn,a=(this.tokenExpiresOn-Date.now())/1E3,this.resetTokenRefresh(600>a?1:a))};mxUtils.extend(OneDriveClient,DrawioClient);OneDriveClient.prototype.clientId="test.draw.io"==window.location.hostname?"2e598409-107f-4b59-89ca-d7723c8e00a4":"45c10911-200f-4e27-a666-9e9fca147395"; OneDriveClient.prototype.scopes="user.read files.readwrite.all offline_access";OneDriveClient.prototype.redirectUri="https://"+window.location.hostname+"/microsoft";OneDriveClient.prototype.pickerRedirectUri="https://"+window.location.hostname+"/onedrive3.html";OneDriveClient.prototype.defEndpointHint="api.onedrive.com";OneDriveClient.prototype.endpointHint=OneDriveClient.prototype.defEndpointHint;OneDriveClient.prototype.extension=".html";OneDriveClient.prototype.baseUrl="https://graph.microsoft.com/v1.0"; OneDriveClient.prototype.emptyFn=function(){};OneDriveClient.prototype.get=function(a,c,b){a=new mxXmlRequest(a,null,"GET");a.setRequestHeaders=mxUtils.bind(this,function(a,b){a.setRequestHeader("Authorization","Bearer "+this.token)});a.send(c,b);return a}; -OneDriveClient.prototype.updateUser=function(a,c,b){var d=!0,f=window.setTimeout(mxUtils.bind(this,function(){d=!1;c({code:App.ERROR_TIMEOUT})}),this.ui.timeout);this.get(this.baseUrl+"/me",mxUtils.bind(this,function(h){window.clearTimeout(f);d&&(200>h.getStatus()||300<=h.getStatus()?b?c({message:mxResources.get("accessDenied")}):(this.logout(),this.authenticate(mxUtils.bind(this,function(){this.updateUser(a,c,!0)}),c)):(h=JSON.parse(h.getText()),this.setUser(new DrawioUser(h.id,null,h.displayName)), +OneDriveClient.prototype.updateUser=function(a,c,b){var d=!0,g=window.setTimeout(mxUtils.bind(this,function(){d=!1;c({code:App.ERROR_TIMEOUT})}),this.ui.timeout);this.get(this.baseUrl+"/me",mxUtils.bind(this,function(e){window.clearTimeout(g);d&&(200>e.getStatus()||300<=e.getStatus()?b?c({message:mxResources.get("accessDenied")}):(this.logout(),this.authenticate(mxUtils.bind(this,function(){this.updateUser(a,c,!0)}),c)):(e=JSON.parse(e.getText()),this.setUser(new DrawioUser(e.id,null,e.displayName)), a()))}),c)};OneDriveClient.prototype.resetTokenRefresh=function(a){null!=this.tokenRefreshThread&&(window.clearTimeout(this.tokenRefreshThread),this.tokenRefreshThread=null);0<a&&(this.tokenRefreshInterval=1E3*a,this.tokenRefreshThread=window.setTimeout(mxUtils.bind(this,function(){this.authenticate(this.emptyFn,this.emptyFn,!0)}),900*a))}; -OneDriveClient.prototype.authenticate=function(a,c,b){if(null==window.onOneDriveCallback){var d=mxUtils.bind(this,function(){var f=!0,h=JSON.parse(this.getPersistentToken(!0));null!=h?(new mxXmlRequest(this.redirectUri+"?refresh_token="+h.refresh_token,null,"GET")).send(mxUtils.bind(this,function(f){200<=f.getStatus()&&299>=f.getStatus()?(f=JSON.parse(f.getText()),this.token=f.access_token,f.access_token=f.access_token,f.refresh_token=f.refresh_token,f.expiresOn=Date.now()+1E3*f.expires_in,this.tokenExpiresOn= -f.expiresOn,this.setPersistentToken(JSON.stringify(f),!f.remember),this.resetTokenRefresh(f.expires_in),a()):(this.clearPersistentToken(),this.setUser(null),this.token=null,401!=f.getStatus()||b?c({message:mxResources.get("accessDenied"),retry:d}):d())}),c):this.ui.showAuthDialog(this,!0,mxUtils.bind(this,function(b,h){var k="https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id="+this.clientId+"&response_type=code&redirect_uri="+encodeURIComponent(this.redirectUri)+"&scope="+encodeURIComponent(this.scopes), -k=window.open(k,"odauth",["width=525,height=525","top="+(window.screenY+Math.max(window.outerHeight-525,0)/2),"left="+(window.screenX+Math.max(window.outerWidth-525,0)/2),"status=no,resizable=yes,toolbar=no,menubar=no,scrollbars=yes"].join());null!=k&&(window.onOneDriveCallback=mxUtils.bind(this,function(g,k){if(f){window.onOneDriveCallback=null;f=!1;try{null==g?c({message:mxResources.get("accessDenied"),retry:d}):(null!=h&&h(),this.setUser(null),this.token=g.access_token,g.expiresOn=Date.now()+1E3* -g.expires_in,this.tokenExpiresOn=g.expiresOn,g.remember=b,this.setPersistentToken(JSON.stringify(g),!b),this.resetTokenRefresh(g.expires_in),this.getAccountTypeAndEndpoint(mxUtils.bind(this,function(){a()}),c))}catch(n){c(n)}finally{null!=k&&k.close()}}else null!=k&&k.close()}),k.focus())}),mxUtils.bind(this,function(){f&&(window.onOneDriveCallback=null,f=!1,c({message:mxResources.get("accessDenied"),retry:d}))}))});d()}else c({code:App.ERROR_BUSY})}; -OneDriveClient.prototype.getAccountTypeAndEndpoint=function(a,c){this.get(this.baseUrl+"/me/drive/root",mxUtils.bind(this,function(b){try{if(200<=b.getStatus()&&299>=b.getStatus()){var d=JSON.parse(b.getText());0<d.webUrl.indexOf(".sharepoint.com")?this.endpointHint=d.webUrl:this.endpointHint=this.defEndpointHint;var f=JSON.parse(this.getPersistentToken(!0));null!=f&&(f.endpointHint=this.endpointHint,this.setPersistentToken(JSON.stringify(f),!f.remember));a();return}}catch(h){}c({message:mxResources.get("unknownError")+ +OneDriveClient.prototype.authenticate=function(a,c,b){if(null==window.onOneDriveCallback){var d=mxUtils.bind(this,function(){var g=!0,e=JSON.parse(this.getPersistentToken(!0));null!=e?(new mxXmlRequest(this.redirectUri+"?refresh_token="+e.refresh_token,null,"GET")).send(mxUtils.bind(this,function(e){200<=e.getStatus()&&299>=e.getStatus()?(e=JSON.parse(e.getText()),this.token=e.access_token,e.access_token=e.access_token,e.refresh_token=e.refresh_token,e.expiresOn=Date.now()+1E3*e.expires_in,this.tokenExpiresOn= +e.expiresOn,this.setPersistentToken(JSON.stringify(e),!e.remember),this.resetTokenRefresh(e.expires_in),a()):(this.clearPersistentToken(),this.setUser(null),this.token=null,401!=e.getStatus()||b?c({message:mxResources.get("accessDenied"),retry:d}):d())}),c):this.ui.showAuthDialog(this,!0,mxUtils.bind(this,function(b,e){var k="https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id="+this.clientId+"&response_type=code&redirect_uri="+encodeURIComponent(this.redirectUri)+"&scope="+encodeURIComponent(this.scopes), +k=window.open(k,"odauth",["width=525,height=525","top="+(window.screenY+Math.max(window.outerHeight-525,0)/2),"left="+(window.screenX+Math.max(window.outerWidth-525,0)/2),"status=no,resizable=yes,toolbar=no,menubar=no,scrollbars=yes"].join());null!=k&&(window.onOneDriveCallback=mxUtils.bind(this,function(k,f){if(g){window.onOneDriveCallback=null;g=!1;try{null==k?c({message:mxResources.get("accessDenied"),retry:d}):(null!=e&&e(),this.setUser(null),this.token=k.access_token,k.expiresOn=Date.now()+1E3* +k.expires_in,this.tokenExpiresOn=k.expiresOn,k.remember=b,this.setPersistentToken(JSON.stringify(k),!b),this.resetTokenRefresh(k.expires_in),this.getAccountTypeAndEndpoint(mxUtils.bind(this,function(){a()}),c))}catch(l){c(l)}finally{null!=f&&f.close()}}else null!=f&&f.close()}),k.focus())}),mxUtils.bind(this,function(){g&&(window.onOneDriveCallback=null,g=!1,c({message:mxResources.get("accessDenied"),retry:d}))}))});d()}else c({code:App.ERROR_BUSY})}; +OneDriveClient.prototype.getAccountTypeAndEndpoint=function(a,c){this.get(this.baseUrl+"/me/drive/root",mxUtils.bind(this,function(b){try{if(200<=b.getStatus()&&299>=b.getStatus()){var d=JSON.parse(b.getText());0<d.webUrl.indexOf(".sharepoint.com")?this.endpointHint=d.webUrl:this.endpointHint=this.defEndpointHint;var g=JSON.parse(this.getPersistentToken(!0));null!=g&&(g.endpointHint=this.endpointHint,this.setPersistentToken(JSON.stringify(g),!g.remember));a();return}}catch(e){}c({message:mxResources.get("unknownError")+ " (Code: "+b.getStatus()+")"})}),c)}; -OneDriveClient.prototype.executeRequest=function(a,c,b){var d=mxUtils.bind(this,function(f){var h=!0,k=window.setTimeout(mxUtils.bind(this,function(){h=!1;b({code:App.ERROR_TIMEOUT,retry:fn})}),this.ui.timeout);this.get(a,mxUtils.bind(this,function(a){window.clearTimeout(k);h&&(200<=a.getStatus()&&299>=a.getStatus()||404==a.getStatus()?(null==this.user&&this.updateUser(this.emptyFn,this.emptyFn,!0),c(a)):401===a.getStatus()||400===a.getStatus()?this.authenticate(function(){d(!0)},b,f):b(this.parseRequestText(a)))}), +OneDriveClient.prototype.executeRequest=function(a,c,b){var d=mxUtils.bind(this,function(g){var e=!0,k=window.setTimeout(mxUtils.bind(this,function(){e=!1;b({code:App.ERROR_TIMEOUT,retry:d})}),this.ui.timeout);this.get(a,mxUtils.bind(this,function(a){window.clearTimeout(k);e&&(200<=a.getStatus()&&299>=a.getStatus()||404==a.getStatus()?(null==this.user&&this.updateUser(this.emptyFn,this.emptyFn,!0),c(a)):401===a.getStatus()||400===a.getStatus()?this.authenticate(function(){d(!0)},b,g):b(this.parseRequestText(a)))}), b)});null==this.token||6E4>this.tokenExpiresOn-Date.now()?this.authenticate(function(){d(!0)},b):d(!1)};OneDriveClient.prototype.checkToken=function(a){null==this.token||null==this.tokenRefreshThread||6E4>this.tokenExpiresOn-Date.now()?this.authenticate(a,this.emptyFn):a()};OneDriveClient.prototype.getItemRef=function(a){var c=a.split("/");return 1<c.length?{driveId:c[0],id:c[1]}:{id:a}}; OneDriveClient.prototype.getItemURL=function(a,c){var b=a.split("/");return 1<b.length?(c?"":this.baseUrl)+"/drives/"+b[0]+"/items/"+b[1]:(c?"":this.baseUrl)+"/me/drive/items/"+a};OneDriveClient.prototype.getLibrary=function(a,c,b){this.getFile(a,c,b,!1,!0)}; -OneDriveClient.prototype.getFile=function(a,c,b,d,f){f=null!=f?f:!1;this.executeRequest(this.getItemURL(a),mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){var d=JSON.parse(a.getText()),h=/\.png$/i.test(d.name);if(/\.v(dx|sdx?)$/i.test(d.name)||/\.gliffy$/i.test(d.name)||!this.ui.useCanvasForExport&&h)this.ui.convertFile(d["@microsoft.graph.downloadUrl"],d.name,null!=d.file?d.file.mimeType:null,this.extension,c,b);else{var p=!0,g=window.setTimeout(mxUtils.bind(this,function(){p= -!1;b({code:App.ERROR_TIMEOUT})}),this.ui.timeout);this.ui.loadUrl(d["@microsoft.graph.downloadUrl"],mxUtils.bind(this,function(a){window.clearTimeout(g);if(p){var b=h?a.lastIndexOf(","):-1,k=null;0<b?(b=this.ui.extractGraphModelFromPng(a.substring(b+1)),null!=b&&0<b.length?a=b:k=new LocalFile(this.ui,a,d.name,!0)):"data:image/png;base64,PG14ZmlsZS"==a.substring(0,32)&&(a=a.substring(22),a=window.atob&&!mxClient.IS_SF?atob(a):Base64.decode(a));null!=k?c(k):f?c(new OneDriveLibrary(this.ui,a,d)):c(new OneDriveFile(this.ui, -a,d))}}),mxUtils.bind(this,function(a){window.clearTimeout(g);p&&b(this.parseRequestText(a))}),h||null!=d.file&&null!=d.file.mimeType&&"image/"==d.file.mimeType.substring(0,6))}}else b(this.parseRequestText(a))}),b)};OneDriveClient.prototype.renameFile=function(a,c,b,d){null!=a&&null!=c&&this.checkExists(a.getParentId(),c,!1,mxUtils.bind(this,function(f){f?this.writeFile(this.getItemURL(a.getId()),JSON.stringify({name:c}),"PATCH","application/json",b,d):d()}))}; -OneDriveClient.prototype.moveFile=function(a,c,b,d){c=this.getItemRef(c);var f=this.getItemRef(a);c.driveId!=f.driveId?d({message:mxResources.get("cannotMoveOneDrive",null,"Moving a file between accounts is not supported yet.")}):this.writeFile(this.getItemURL(a),JSON.stringify({parentReference:c}),"PATCH","application/json",b,d)};OneDriveClient.prototype.insertLibrary=function(a,c,b,d,f){this.insertFile(a,c,b,d,!0,f)}; -OneDriveClient.prototype.insertFile=function(a,c,b,d,f,h){f=null!=f?f:!1;this.checkExists(h,a,!0,mxUtils.bind(this,function(k){k?(k="/me/drive/root",null!=h&&(k=this.getItemURL(h,!0)),this.writeFile(this.baseUrl+k+"/children/"+a+"/content",c,"PUT",null,mxUtils.bind(this,function(a){f?b(new OneDriveLibrary(this.ui,c,a)):b(new OneDriveFile(this.ui,c,a))}),d)):d()}))}; -OneDriveClient.prototype.checkExists=function(a,c,b,d){var f="/me/drive/root";null!=a&&(f=this.getItemURL(a,!0));this.executeRequest(this.baseUrl+f+"/children/"+c,mxUtils.bind(this,function(a){404==a.getStatus()?d(!0):b?(this.ui.spinner.stop(),this.ui.confirm(mxResources.get("replaceIt",[c]),function(){d(!0)},function(){d(!1)})):(this.ui.spinner.stop(),this.ui.showError(mxResources.get("error"),mxResources.get("fileExists"),mxResources.get("ok"),function(){d(!1)}))}),function(a){d(!1)},!0)}; -OneDriveClient.prototype.saveFile=function(a,c,b,d){var f=mxUtils.bind(this,function(f){var h=this.getItemURL(a.getId())+"/content/";this.writeFile(h,f,"PUT",null,c,b,d)});this.ui.useCanvasForExport&&/(\.png)$/i.test(a.meta.name)?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){f(this.ui.base64ToBlob(a,"image/png"))}),b,this.ui.getCurrentFile()!=a?a.getData():null):f(a.getData())}; -OneDriveClient.prototype.writeFile=function(a,c,b,d,f,h,k){if(null!=a&&null!=c){var m=mxUtils.bind(this,function(p){var g=!0,l=window.setTimeout(mxUtils.bind(this,function(){g=!1;h({code:App.ERROR_TIMEOUT,retry:m})}),this.ui.timeout),n=new mxXmlRequest(a,c,b);n.setRequestHeaders=mxUtils.bind(this,function(a,b){a.setRequestHeader("Content-Type",d||" ");a.setRequestHeader("Authorization","Bearer "+this.token);null!=k&&a.setRequestHeader("If-Match",k)});n.send(mxUtils.bind(this,function(a){window.clearTimeout(l); -g&&(200<=a.getStatus()&&299>=a.getStatus()?(null==this.user&&this.updateUser(this.emptyFn,this.emptyFn,!0),f(JSON.parse(a.getText()))):401===a.getStatus()?this.authenticate(function(){m(!0)},h,p):h(this.parseRequestText(a),a))}),mxUtils.bind(this,function(a){window.clearTimeout(l);g&&h(this.parseRequestText(a))}))});null==this.token||6E4>this.tokenExpiresOn-Date.now()?this.authenticate(function(){m(!0)},h):m(!1)}else h({message:mxResources.get("unknownError")})}; +OneDriveClient.prototype.getFile=function(a,c,b,d,g){g=null!=g?g:!1;this.executeRequest(this.getItemURL(a),mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){var d=JSON.parse(a.getText()),e=/\.png$/i.test(d.name);if(/\.v(dx|sdx?)$/i.test(d.name)||/\.gliffy$/i.test(d.name)||!this.ui.useCanvasForExport&&e)this.ui.convertFile(d["@microsoft.graph.downloadUrl"],d.name,null!=d.file?d.file.mimeType:null,this.extension,c,b);else{var n=!0,q=window.setTimeout(mxUtils.bind(this,function(){n= +!1;b({code:App.ERROR_TIMEOUT})}),this.ui.timeout);this.ui.loadUrl(d["@microsoft.graph.downloadUrl"],mxUtils.bind(this,function(a){window.clearTimeout(q);if(n){var b=e?a.lastIndexOf(","):-1,f=null;0<b?(b=this.ui.extractGraphModelFromPng(a.substring(b+1)),null!=b&&0<b.length?a=b:f=new LocalFile(this.ui,a,d.name,!0)):"data:image/png;base64,PG14ZmlsZS"==a.substring(0,32)&&(a=a.substring(22),a=window.atob&&!mxClient.IS_SF?atob(a):Base64.decode(a));null!=f?c(f):g?c(new OneDriveLibrary(this.ui,a,d)):c(new OneDriveFile(this.ui, +a,d))}}),mxUtils.bind(this,function(a){window.clearTimeout(q);n&&b(this.parseRequestText(a))}),e||null!=d.file&&null!=d.file.mimeType&&"image/"==d.file.mimeType.substring(0,6))}}else b(this.parseRequestText(a))}),b)};OneDriveClient.prototype.renameFile=function(a,c,b,d){null!=a&&null!=c&&this.checkExists(a.getParentId(),c,!1,mxUtils.bind(this,function(g){g?this.writeFile(this.getItemURL(a.getId()),JSON.stringify({name:c}),"PATCH","application/json",b,d):d()}))}; +OneDriveClient.prototype.moveFile=function(a,c,b,d){c=this.getItemRef(c);var g=this.getItemRef(a);c.driveId!=g.driveId?d({message:mxResources.get("cannotMoveOneDrive",null,"Moving a file between accounts is not supported yet.")}):this.writeFile(this.getItemURL(a),JSON.stringify({parentReference:c}),"PATCH","application/json",b,d)};OneDriveClient.prototype.insertLibrary=function(a,c,b,d,g){this.insertFile(a,c,b,d,!0,g)}; +OneDriveClient.prototype.insertFile=function(a,c,b,d,g,e){g=null!=g?g:!1;this.checkExists(e,a,!0,mxUtils.bind(this,function(k){k?(k="/me/drive/root",null!=e&&(k=this.getItemURL(e,!0)),this.writeFile(this.baseUrl+k+"/children/"+a+"/content",c,"PUT",null,mxUtils.bind(this,function(a){g?b(new OneDriveLibrary(this.ui,c,a)):b(new OneDriveFile(this.ui,c,a))}),d)):d()}))}; +OneDriveClient.prototype.checkExists=function(a,c,b,d){var g="/me/drive/root";null!=a&&(g=this.getItemURL(a,!0));this.executeRequest(this.baseUrl+g+"/children/"+c,mxUtils.bind(this,function(a){404==a.getStatus()?d(!0):b?(this.ui.spinner.stop(),this.ui.confirm(mxResources.get("replaceIt",[c]),function(){d(!0)},function(){d(!1)})):(this.ui.spinner.stop(),this.ui.showError(mxResources.get("error"),mxResources.get("fileExists"),mxResources.get("ok"),function(){d(!1)}))}),function(a){d(!1)},!0)}; +OneDriveClient.prototype.saveFile=function(a,c,b,d){var g=a.getData(),e=mxUtils.bind(this,function(e){var k=this.getItemURL(a.getId())+"/content/";this.writeFile(k,e,"PUT",null,mxUtils.bind(this,function(a){c(a,g)}),b,d)});this.ui.useCanvasForExport&&/(\.png)$/i.test(a.meta.name)?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){e(this.ui.base64ToBlob(a,"image/png"))}),b,this.ui.getCurrentFile()!=a?g:null):e(g)}; +OneDriveClient.prototype.writeFile=function(a,c,b,d,g,e,k){if(null!=a&&null!=c){var m=mxUtils.bind(this,function(n){var q=!0,f=window.setTimeout(mxUtils.bind(this,function(){q=!1;e({code:App.ERROR_TIMEOUT,retry:m})}),this.ui.timeout),l=new mxXmlRequest(a,c,b);l.setRequestHeaders=mxUtils.bind(this,function(a,b){a.setRequestHeader("Content-Type",d||" ");a.setRequestHeader("Authorization","Bearer "+this.token);null!=k&&a.setRequestHeader("If-Match",k)});l.send(mxUtils.bind(this,function(a){window.clearTimeout(f); +q&&(200<=a.getStatus()&&299>=a.getStatus()?(null==this.user&&this.updateUser(this.emptyFn,this.emptyFn,!0),g(JSON.parse(a.getText()))):401===a.getStatus()?this.authenticate(function(){m(!0)},e,n):e(this.parseRequestText(a),a))}),mxUtils.bind(this,function(a){window.clearTimeout(f);q&&e(this.parseRequestText(a))}))});null==this.token||6E4>this.tokenExpiresOn-Date.now()?this.authenticate(function(){m(!0)},e):m(!1)}else e({message:mxResources.get("unknownError")})}; OneDriveClient.prototype.parseRequestText=function(a){var c={message:mxResources.get("unknownError")};try{c=JSON.parse(a.getText())}catch(b){}return c};OneDriveClient.prototype.pickLibrary=function(a){this.pickFile(function(c){a(c)})}; OneDriveClient.prototype.pickFolder=function(a,c){var b=mxUtils.bind(this,function(b){var c=mxUtils.bind(this,function(){OneDrive.save({clientId:this.clientId,action:"query",openInNewWindow:!0,advanced:{endpointHint:mxClient.IS_IE11?null:this.endpointHint,redirectUri:this.pickerRedirectUri,queryParameters:"select=id,name,parentReference",accessToken:this.token,isConsumerAccount:!1},success:mxUtils.bind(this,function(b){a(b);mxClient.IS_IE11&&(this.token=b.accessToken)}),cancel:mxUtils.bind(this,function(){}), -error:mxUtils.bind(this,function(a){this.ui.showError(mxResources.get("error"),a)})})});b?c():this.ui.confirm(mxResources.get("useRootFolder"),mxUtils.bind(this,function(){a({value:[{id:"root",name:"root",parentReference:{driveId:"me"}}]})}),c,mxResources.get("yes"),mxResources.get("no"));null==this.user&&this.updateUser(this.emptyFn,this.emptyFn,!0)});null==this.token||6E4>this.tokenExpiresOn-Date.now()?this.authenticate(mxUtils.bind(this,function(){b(!1)}),this.emptyFn):b(c)}; +error:mxUtils.bind(this,function(a){this.ui.showError(mxResources.get("error"),a)})})});b?c():this.ui.confirm(mxResources.get("useRootFolder"),mxUtils.bind(this,function(){a({value:[{id:"root",name:"root",parentReference:{driveId:"me"}}]})}),c,mxResources.get("yes"),mxResources.get("noPickFolder")+"...",!0);null==this.user&&this.updateUser(this.emptyFn,this.emptyFn,!0)});null==this.token||6E4>this.tokenExpiresOn-Date.now()?this.authenticate(mxUtils.bind(this,function(){b(!1)}),this.emptyFn):b(c)}; OneDriveClient.prototype.pickFile=function(a){a=null!=a?a:mxUtils.bind(this,function(a){this.ui.loadFile("W"+encodeURIComponent(a))});var c=mxUtils.bind(this,function(){OneDrive.open({clientId:this.clientId,action:"query",multiSelect:!1,advanced:{endpointHint:mxClient.IS_IE11?null:this.endpointHint,redirectUri:this.pickerRedirectUri,queryParameters:"select=id,name,parentReference",accessToken:this.token,isConsumerAccount:!1},success:mxUtils.bind(this,function(b){null!=b&&null!=b.value&&0<b.value.length&& (mxClient.IS_IE11&&(this.token=b.accessToken),a(OneDriveFile.prototype.getIdOf(b.value[0]),b))}),cancel:mxUtils.bind(this,function(){}),error:mxUtils.bind(this,function(a){this.ui.showError(mxResources.get("error"),a)})});null==this.user&&this.updateUser(this.emptyFn,this.emptyFn,!0)});null==this.token||6E4>this.tokenExpiresOn-Date.now()?this.authenticate(mxUtils.bind(this,function(){this.ui.showDialog((new BtnDialog(this.ui,this,mxResources.get("open"),mxUtils.bind(this,function(){c();this.ui.hideDialog()}))).container, 300,140,!0,!0)}),this.emptyFn):c()};OneDriveClient.prototype.logout=function(){if(isLocalStorage){var a=localStorage.getItem("odpickerv7cache");null!=a&&'{"odsdkLoginHint":{'==a.substring(0,19)&&localStorage.removeItem("odpickerv7cache")}this.clearPersistentToken();this.setUser(null);this.token=null};GitHubFile=function(a,c,b){DrawioFile.call(this,a,c);this.meta=b};mxUtils.extend(GitHubFile,DrawioFile);GitHubFile.prototype.getId=function(){return encodeURIComponent(this.meta.org)+"/"+(null!=this.meta.repo?encodeURIComponent(this.meta.repo)+"/"+(null!=this.meta.ref?this.meta.ref+(null!=this.meta.path?"/"+this.meta.path:""):""):"")};GitHubFile.prototype.getHash=function(){return encodeURIComponent("H"+this.getId())}; GitHubFile.prototype.getPublicUrl=function(a){null!=this.meta.download_url?mxUtils.get(this.meta.download_url,mxUtils.bind(this,function(c){a(200<=c.getStatus()&&299>=c.getStatus()?this.meta.download_url:null)}),mxUtils.bind(this,function(){a(null)})):a(null)};GitHubFile.prototype.isConflict=function(a){return null!=a&&409==a.status};GitHubFile.prototype.getMode=function(){return App.MODE_GITHUB};GitHubFile.prototype.isAutosave=function(){return!1};GitHubFile.prototype.getTitle=function(){return this.meta.name}; -GitHubFile.prototype.isRenamable=function(){return!1};GitHubFile.prototype.getLatestVersion=function(a,c){this.ui.gitHub.getFile(this.getId(),a,c)};GitHubFile.prototype.getDescriptor=function(){return this.meta};GitHubFile.prototype.setDescriptor=function(a){this.meta=a};GitHubFile.prototype.getDescriptorEtag=function(a){return a.sha};GitHubFile.prototype.setDescriptorEtag=function(a,c){a.sha=c};GitHubFile.prototype.save=function(a,c,b,d,f,h){this.doSave(this.getTitle(),c,b,d,f,h)}; -GitHubFile.prototype.saveAs=function(a,c,b){this.doSave(a,c,b)};GitHubFile.prototype.doSave=function(a,c,b,d,f,h){var k=this.meta.name;this.meta.name=a;DrawioFile.prototype.save.apply(this,arguments);this.meta.name=k;this.saveFile(a,!1,c,b,d,f,h)}; -GitHubFile.prototype.saveFile=function(a,c,b,d,f,h,k){if(this.isEditable())if(this.savingFile)null!=d&&d({code:App.ERROR_BUSY});else{var m=mxUtils.bind(this,function(c){if(this.getTitle()==a){var f=this.getCurrentEtag(),k=this.data,n=this.isModified,m=this.isModified();this.savingFile=!0;var p=mxUtils.bind(this,function(){this.setModified(!1);this.isModified=function(){return m}});p();this.ui.gitHub.saveFile(this,mxUtils.bind(this,function(a){this.isModified=n;this.savingFile=!1;this.meta.sha=a.content.sha; -this.meta.html_url=a.content.html_url;this.meta.download_url=a.content.download_url;this.fileSaved(k,f,mxUtils.bind(this,function(){this.contentChanged();null!=b&&b()}),d)}),mxUtils.bind(this,function(a){this.savingFile=!1;this.isModified=n;this.setModified(m||this.isModified());if(this.isConflict(a))this.inConflictState=!0,null!=d&&d({commitMessage:c});else if(null!=d){if(null!=a&&null!=a.retry){var b=a.retry;a.retry=function(){p();b()}}d(a)}}),h,c)}else this.savingFile=!0,this.ui.pickFolder(App.MODE_GITHUB, -mxUtils.bind(this,function(f){this.ui.gitHub.insertFile(a,this.getData(),mxUtils.bind(this,function(a){this.savingFile=!1;null!=b&&b();this.ui.fileLoaded(a)}),mxUtils.bind(this,function(){this.savingFile=!1;null!=d&&d()}),!1,f,c)}))});null!=k?m(k):this.ui.gitHub.showCommitDialog(this.meta.name,null==this.meta.sha||this.meta.isNew,mxUtils.bind(this,function(a){m(a)}),d)}else null!=b&&b()};GitHubLibrary=function(a,c,b){GitHubFile.call(this,a,c,b)};mxUtils.extend(GitHubLibrary,GitHubFile);GitHubLibrary.prototype.doSave=function(a,c,b){this.saveFile(a,!1,c,b)};GitHubLibrary.prototype.open=function(){};GitHubClient=function(a){DrawioClient.call(this,a,"ghauth")};mxUtils.extend(GitHubClient,DrawioClient);GitHubClient.prototype.clientId="test.draw.io"==window.location.hostname?"23bc97120b9035515661":"89c9e4624ca416554489";GitHubClient.prototype.scope="repo";GitHubClient.prototype.extension=".xml";GitHubClient.prototype.baseUrl="https://api.github.com";GitHubClient.prototype.maxFileSize=1E6; -GitHubClient.prototype.updateUser=function(a,c,b){var d=!0,f=window.setTimeout(mxUtils.bind(this,function(){d=!1;c({code:App.ERROR_TIMEOUT})}),this.ui.timeout);mxUtils.get(this.baseUrl+"/user?access_token="+this.token,mxUtils.bind(this,function(h){window.clearTimeout(f);d&&(401===h.getStatus()?b?c({message:mxResources.get("accessDenied")}):(this.logout(),this.authenticate(mxUtils.bind(this,function(){this.updateUser(a,c,!0)}),c)):200>h.getStatus()||300<=h.getStatus()?c({message:mxResources.get("accessDenied")}): -(h=JSON.parse(h.getText()),this.setUser(new DrawioUser(h.id,h.email,h.name)),a()))}))}; -GitHubClient.prototype.authenticate=function(a,c){if(null==window.onGitHubCallback){var b=mxUtils.bind(this,function(){var d=!0;this.ui.showAuthDialog(this,!0,mxUtils.bind(this,function(f,h){null!=window.open("https://github.com/login/oauth/authorize?client_id="+this.clientId+"&scope="+this.scope,"ghauth")?window.onGitHubCallback=mxUtils.bind(this,function(k,m){if(d)if(window.onGitHubCallback=null,d=!1,null==k)c({message:mxResources.get("accessDenied"),retry:b});else{var p=mxUtils.bind(this,function(){var b= -!0,d=window.setTimeout(mxUtils.bind(this,function(){b=!1;c({code:App.ERROR_TIMEOUT,retry:p})}),this.ui.timeout);mxUtils.get("/github?client_id="+this.clientId+"&code="+k,mxUtils.bind(this,function(g){window.clearTimeout(d);if(b)try{if(200>g.getStatus()||300<=g.getStatus())c({message:mxResources.get("cannotLogin")});else{null!=h&&h();var k=g.getText();this.token=k.substring(k.indexOf("=")+1,k.indexOf("&"));this.setUser(null);f&&this.setPersistentToken(this.token);a()}}catch(t){c(t)}finally{null!=m&& -m.close()}}))});p()}else null!=m&&m.close()}):c({message:mxResources.get("serviceUnavailableOrBlocked"),retry:b})}),mxUtils.bind(this,function(){d&&(window.onGitHubCallback=null,d=!1,c({message:mxResources.get("accessDenied"),retry:b}))}))});b()}else c({code:App.ERROR_BUSY})}; -GitHubClient.prototype.executeRequest=function(a,c,b){var d=mxUtils.bind(this,function(h){var k=!0,m=window.setTimeout(mxUtils.bind(this,function(){k=!1;b({code:App.ERROR_TIMEOUT,retry:f})}),this.ui.timeout),p=this.token;a.setRequestHeaders=function(a,b){a.setRequestHeader("Authorization","token "+p)};a.send(mxUtils.bind(this,function(){window.clearTimeout(m);if(k)if(200<=a.getStatus()&&299>=a.getStatus())c(a);else if(401===a.getStatus())h?b({message:mxResources.get("accessDenied"),retry:mxUtils.bind(this, -function(){this.authenticate(function(){f(!0)},b)})}):this.authenticate(function(){d(!0)},b);else if(403===a.getStatus()){var g=!1;try{var l=JSON.parse(a.getText());null!=l&&null!=l.errors&&0<l.errors.length&&(g="too_large"==l.errors[0].code)}catch(n){}b({message:mxResources.get(g?"drawingTooLarge":"forbidden")})}else 404===a.getStatus()?b({message:mxResources.get("fileNotFound")}):409===a.getStatus()?b({status:409}):b({message:mxResources.get("error")+" "+a.getStatus()})}),b)}),f=mxUtils.bind(this, -function(a){null==this.user?this.updateUser(function(){f(!0)},b,a):d(a)});null==this.token?this.authenticate(function(){f(!0)},b):f(!1)};GitHubClient.prototype.getLibrary=function(a,c,b){this.getFile(a,c,b,!0)}; -GitHubClient.prototype.getFile=function(a,c,b,d,f){d=null!=d?d:!1;var h=a.split("/"),k=h[0],m=h[1],p=h[2];a=h.slice(3,h.length).join("/");h=/\.png$/i.test(a);!f&&(/\.v(dx|sdx?)$/i.test(a)||/\.gliffy$/i.test(a)||!this.ui.useCanvasForExport&&h)?null!=this.token?(f=this.baseUrl+"/repos/"+k+"/"+m+"/contents/"+a+"?ref="+p+"&token="+this.token,h=a.split("/"),this.ui.convertFile(f,0<h.length?h[h.length-1]:a,null,this.extension,c,b)):b({message:mxResources.get("accessDenied")}):(f="&t="+(new Date).getTime(), -a=new mxXmlRequest(this.baseUrl+"/repos/"+k+"/"+m+"/contents/"+a+"?ref="+p+f,null,"GET"),this.executeRequest(a,mxUtils.bind(this,function(a){try{c(this.createGitHubFile(k,m,p,JSON.parse(a.getText()),d))}catch(l){b(l)}}),b))}; -GitHubClient.prototype.createGitHubFile=function(a,c,b,d,f){a={org:a,repo:c,ref:b,name:d.name,path:d.path,sha:d.sha,html_url:d.html_url,download_url:d.download_url};c=d.content;"base64"===d.encoding&&("PG14ZmlsZS"==c.substring(0,10)?c=window.atob&&!mxClient.IS_SF?atob(c):Base64.decode(c):/\.jpe?g$/i.test(d.name)?c="data:image/jpeg;base64,"+c:/\.gif$/i.test(d.name)?c="data:image/gif;base64,"+c:/\.png$/i.test(d.name)?(d=this.ui.extractGraphModelFromPng(c),c=null!=d&&0<d.length?d:"data:image/png;base64,"+ -c):c=Base64.decode(c));return f?new GitHubLibrary(this.ui,c,a):new GitHubFile(this.ui,c,a)};GitHubClient.prototype.insertLibrary=function(a,c,b,d,f){this.insertFile(a,c,b,d,!0,f,!1)}; -GitHubClient.prototype.insertFile=function(a,c,b,d,f,h,k){f=null!=f?f:!1;h=h.split("/");var m=h[0],p=h[1],g=h[2],l=h.slice(3,h.length).join("/");0<l.length&&(l+="/");l+=a;this.checkExists(m+"/"+p+"/"+g+"/"+l,!0,mxUtils.bind(this,function(h,q){h?f?(k||(c=Base64.encode(c)),this.showCommitDialog(a,!0,mxUtils.bind(this,function(a){this.writeFile(m,p,g,l,a,c,q,mxUtils.bind(this,function(a){try{var c=JSON.parse(a.getText());b(this.createGitHubFile(m,p,g,c.content,f))}catch(y){d(y)}}),d)}),d)):b(new GitHubFile(this.ui, -c,{org:m,repo:p,ref:g,name:a,path:l,sha:q,isNew:!0})):d()}))};GitHubClient.prototype.showCommitDialog=function(a,c,b,d){var f=this.ui.spinner.pause();a=new FilenameDialog(this.ui,mxResources.get(c?"addedFile":"updateFile",[a]),mxResources.get("ok"),mxUtils.bind(this,function(a){f();b(a)}),mxResources.get("commitMessage"),null,null,null,null,mxUtils.bind(this,function(){d()}));this.ui.showDialog(a.container,300,80,!0,!1);a.init()}; -GitHubClient.prototype.writeFile=function(a,c,b,d,f,h,k,m,p){h.length>=this.maxFileSize?p({message:mxResources.get("drawingTooLarge")+" ("+this.ui.formatFileSize(h.length)+" / 1 MB)"}):(b={path:d,branch:decodeURIComponent(b),message:f,content:h},null!=k&&(b.sha=k),a=new mxXmlRequest(this.baseUrl+"/repos/"+a+"/"+c+"/contents/"+d,JSON.stringify(b),"PUT"),this.executeRequest(a,mxUtils.bind(this,function(a){m(a)}),p))}; -GitHubClient.prototype.checkExists=function(a,c,b){this.getFile(a,mxUtils.bind(this,function(d){if(c&&null!=d.meta){var f=this.ui.spinner.pause();this.ui.confirm(mxResources.get("replaceIt",[a]),function(){f();b(!0,d.meta.sha)},function(){f();b(!1)})}else this.ui.spinner.stop(),this.ui.showError(mxResources.get("error"),mxResources.get("fileExists"),mxResources.get("ok"),function(){b(!1)})}),mxUtils.bind(this,function(a){b(!0)}),null,!0)}; -GitHubClient.prototype.saveFile=function(a,c,b,d,f){var h=a.meta.org,k=a.meta.repo,m=a.meta.ref,p=a.meta.path,g=mxUtils.bind(this,function(d,g){this.writeFile(h,k,m,p,f,g,d,mxUtils.bind(this,function(b){delete a.meta.isNew;c(JSON.parse(b.getText()))}),mxUtils.bind(this,function(a){b(a)}))}),l=mxUtils.bind(this,function(){this.ui.useCanvasForExport&&/(\.png)$/i.test(p)?this.ui.getEmbeddedPng(mxUtils.bind(this,function(b){g(a.meta.sha,b)}),b,this.ui.getCurrentFile()!=a?a.getData():null):g(a.meta.sha, -Base64.encode(a.getData()))});d?this.getFile(h+"/"+k+"/"+encodeURIComponent(m)+"/"+p,mxUtils.bind(this,function(b){a.meta.sha=b.meta.sha;l()}),b):l()};GitHubClient.prototype.pickLibrary=function(a){this.pickFile(a)};GitHubClient.prototype.pickFolder=function(a){this.showGitHubDialog(!1,a)};GitHubClient.prototype.pickFile=function(a){a=null!=a?a:mxUtils.bind(this,function(a){this.ui.loadFile("H"+encodeURIComponent(a))});this.showGitHubDialog(!0,a)}; -GitHubClient.prototype.showGitHubDialog=function(a,c){var b=null,d=null,f=null,h=null,k=document.createElement("div");k.style.whiteSpace="nowrap";k.style.overflow="hidden";k.style.height="224px";var m=document.createElement("h3");mxUtils.write(m,mxResources.get(a?"selectFile":"selectFolder"));m.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";k.appendChild(m);var p=document.createElement("div");p.style.whiteSpace="nowrap";p.style.overflow="auto";p.style.height="194px"; -k.appendChild(p);var g=new CustomDialog(this.ui,k,mxUtils.bind(this,function(){c(b+"/"+d+"/"+encodeURIComponent(f)+"/"+h)}));this.ui.showDialog(g.container,340,270,!0,!0);a&&g.okButton.parentNode.removeChild(g.okButton);var l=mxUtils.bind(this,function(a,b){var c=document.createElement("a");c.setAttribute("href","javascript:void(0);");mxUtils.write(c,a);mxEvent.addListener(c,"click",b);return c}),n=mxUtils.bind(this,function(a){var c=document.createElement("div");c.style.marginBottom="8px";c.appendChild(l(b+ -"/"+d,mxUtils.bind(this,function(){h=null;u()})));a||(mxUtils.write(c," / "),c.appendChild(l(decodeURIComponent(f),mxUtils.bind(this,function(){h=null;y()}))));if(null!=h&&0<h.length){var g=h.split("/");for(a=0;a<g.length;a++)(function(a){mxUtils.write(c," / ");c.appendChild(l(g[a],mxUtils.bind(this,function(){h=g.slice(0,a+1).join("/");t()})))})(a)}p.appendChild(c)}),q=mxUtils.bind(this,function(a){this.ui.handleError(a,null,mxUtils.bind(this,function(){this.ui.spinner.stop();null!=this.getUser()? -(h=f=d=b=null,u()):this.ui.hideDialog()}))}),t=mxUtils.bind(this,function(){var k=new mxXmlRequest(this.baseUrl+"/repos/"+b+"/"+d+"/contents/"+h+"?ref="+encodeURIComponent(f),null,"GET");g.okButton.removeAttribute("disabled");p.innerHTML="";this.ui.spinner.spin(p,mxResources.get("loading"));this.executeRequest(k,mxUtils.bind(this,function(g){n();this.ui.spinner.stop();var k=JSON.parse(g.getText());p.appendChild(l("../ [Up]",mxUtils.bind(this,function(){if(""==h)h=null,u();else{var a=h.split("/"); -h=a.slice(0,a.length-1).join("/");t()}})));mxUtils.br(p);null==k||0==k.length?mxUtils.write(p,mxResources.get("noFiles")):(g=mxUtils.bind(this,function(g){for(var m=0;m<k.length;m++)mxUtils.bind(this,function(k){g==("dir"==k.type)&&(p.appendChild(l(k.name+("dir"==k.type?"/":""),mxUtils.bind(this,function(){"dir"==k.type?(h=k.path,t()):a&&"file"==k.type&&(this.ui.hideDialog(),c(b+"/"+d+"/"+encodeURIComponent(f)+"/"+k.path))}))),mxUtils.br(p))})(k[m])}),g(!0),a&&g(!1))}),q)}),v=null,w=null,y=mxUtils.bind(this, -function(a){null==a&&(p.innerHTML="",a=1);var c=new mxXmlRequest(this.baseUrl+"/repos/"+b+"/"+d+"/branches?per_page=100&page="+a,null,"GET");g.okButton.setAttribute("disabled","disabled");this.ui.spinner.spin(p,mxResources.get("loading"));null!=v&&null!=v.parentNode&&v.parentNode.removeChild(v);v=document.createElement("a");v.style.display="block";v.setAttribute("href","javascript:void(0);");mxUtils.write(v,mxResources.get("more")+"...");var k=mxUtils.bind(this,function(){mxEvent.removeListener(p, -"scroll",w);y(a+1)});mxEvent.addListener(v,"click",k);this.executeRequest(c,mxUtils.bind(this,function(b){this.ui.spinner.stop();1==a&&(n(!0),p.appendChild(l("../ [Up]",mxUtils.bind(this,function(){h=null;u()}))),mxUtils.br(p));b=JSON.parse(b.getText());if(null==b||0==b.length)mxUtils.write(p,mxResources.get("noFiles"));else{for(var c=0;c<b.length;c++)mxUtils.bind(this,function(a){p.appendChild(l(a.name,mxUtils.bind(this,function(){f=a.name;h="";t()})));mxUtils.br(p)})(b[c]);100==b.length&&(p.appendChild(v), -w=function(){p.scrollTop>=p.scrollHeight-p.offsetHeight&&k()},mxEvent.addListener(p,"scroll",w))}}),q)}),u=mxUtils.bind(this,function(a){null==a&&(p.innerHTML="",a=1);var c=new mxXmlRequest(this.baseUrl+"/user/repos?per_page=100&page="+a,null,"GET");g.okButton.setAttribute("disabled","disabled");this.ui.spinner.spin(p,mxResources.get("loading"));null!=v&&null!=v.parentNode&&v.parentNode.removeChild(v);v=document.createElement("a");v.style.display="block";v.setAttribute("href","javascript:void(0);"); -mxUtils.write(v,mxResources.get("more")+"...");var k=mxUtils.bind(this,function(){mxEvent.removeListener(p,"scroll",w);u(a+1)});mxEvent.addListener(v,"click",k);this.executeRequest(c,mxUtils.bind(this,function(c){this.ui.spinner.stop();c=JSON.parse(c.getText());if(null==c||0==c.length)mxUtils.write(p,mxResources.get("noFiles"));else{1==a&&(p.appendChild(l(mxResources.get("enterValue")+"...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.ui,"org/repo/ref",mxResources.get("ok"),mxUtils.bind(this, -function(a){if(null!=a){var c=a.split("/");if(1<c.length){a=c[0];var g=c[1];3>c.length?(b=a,d=g,h=f=null,y()):this.ui.spinner.spin(p,mxResources.get("loading"))&&(c=encodeURIComponent(c.slice(2,c.length).join("/")),this.getFile(a+"/"+g+"/"+c,mxUtils.bind(this,function(a){this.ui.spinner.stop();b=a.meta.org;d=a.meta.repo;f=decodeURIComponent(a.meta.ref);h="";t()}),mxUtils.bind(this,function(a){this.ui.spinner.stop();this.ui.handleError({message:mxResources.get("fileNotFound")})})))}else this.ui.spinner.stop(), -this.ui.handleError({message:mxResources.get("invalidName")})}}),mxResources.get("enterValue"));this.ui.showDialog(a.container,300,80,!0,!1);a.init()}))),mxUtils.br(p),mxUtils.br(p));for(var g=0;g<c.length;g++)mxUtils.bind(this,function(a){p.appendChild(l(a.full_name,mxUtils.bind(this,function(){b=a.owner.login;d=a.name;f=a.default_branch;h="";t()})));mxUtils.br(p)})(c[g])}100==c.length&&(p.appendChild(v),w=function(){p.scrollTop>=p.scrollHeight-p.offsetHeight&&k()},mxEvent.addListener(p,"scroll", -w))}),q)});u()};GitHubClient.prototype.logout=function(){this.clearPersistentToken();this.setUser(null);this.token=null};TrelloFile=function(a,c,b){DrawioFile.call(this,a,c);this.meta=b;this.saveNeededCounter=0};mxUtils.extend(TrelloFile,DrawioFile);TrelloFile.prototype.getHash=function(){return"T"+encodeURIComponent(this.meta.compoundId)};TrelloFile.prototype.getMode=function(){return App.MODE_TRELLO};TrelloFile.prototype.isAutosave=function(){return!0};TrelloFile.prototype.getTitle=function(){return this.meta.name};TrelloFile.prototype.isRenamable=function(){return!1};TrelloFile.prototype.getSize=function(){return this.meta.bytes}; +GitHubFile.prototype.isRenamable=function(){return!1};GitHubFile.prototype.getLatestVersion=function(a,c){this.ui.gitHub.getFile(this.getId(),a,c)};GitHubFile.prototype.getDescriptor=function(){return this.meta};GitHubFile.prototype.setDescriptor=function(a){this.meta=a};GitHubFile.prototype.getDescriptorEtag=function(a){return a.sha};GitHubFile.prototype.setDescriptorEtag=function(a,c){a.sha=c};GitHubFile.prototype.save=function(a,c,b,d,g,e){this.doSave(this.getTitle(),c,b,d,g,e)}; +GitHubFile.prototype.saveAs=function(a,c,b){this.doSave(a,c,b)};GitHubFile.prototype.doSave=function(a,c,b,d,g,e){var k=this.meta.name;this.meta.name=a;DrawioFile.prototype.save.apply(this,arguments);this.meta.name=k;this.saveFile(a,!1,c,b,d,g,e)}; +GitHubFile.prototype.saveFile=function(a,c,b,d,g,e,k){if(this.isEditable())if(this.savingFile)null!=d&&d({code:App.ERROR_BUSY});else{var m=mxUtils.bind(this,function(c){if(this.getTitle()==a){var g=this.getCurrentEtag(),f=this.data,k=this.isModified,m=this.isModified();this.savingFile=!0;var n=mxUtils.bind(this,function(){this.setModified(!1);this.isModified=function(){return m}});n();this.ui.gitHub.saveFile(this,mxUtils.bind(this,function(a){this.isModified=k;this.savingFile=!1;this.meta.sha=a.content.sha; +this.meta.html_url=a.content.html_url;this.meta.download_url=a.content.download_url;this.fileSaved(f,g,mxUtils.bind(this,function(){this.contentChanged();null!=b&&b()}),d)}),mxUtils.bind(this,function(a){this.savingFile=!1;this.isModified=k;this.setModified(m||this.isModified());if(this.isConflict(a))this.inConflictState=!0,null!=d&&d({commitMessage:c});else if(null!=d){if(null!=a&&null!=a.retry){var b=a.retry;a.retry=function(){n();b()}}d(a)}}),e,c)}else this.savingFile=!0,this.ui.pickFolder(App.MODE_GITHUB, +mxUtils.bind(this,function(e){this.ui.gitHub.insertFile(a,this.getData(),mxUtils.bind(this,function(a){this.savingFile=!1;null!=b&&b();this.ui.fileLoaded(a)}),mxUtils.bind(this,function(){this.savingFile=!1;null!=d&&d()}),!1,e,c)}))});null!=k?m(k):this.ui.gitHub.showCommitDialog(this.meta.name,null==this.meta.sha||this.meta.isNew,mxUtils.bind(this,function(a){m(a)}),d)}else null!=b&&b()};GitHubLibrary=function(a,c,b){GitHubFile.call(this,a,c,b)};mxUtils.extend(GitHubLibrary,GitHubFile);GitHubLibrary.prototype.doSave=function(a,c,b){this.saveFile(a,!1,c,b)};GitHubLibrary.prototype.open=function(){};GitHubClient=function(a){DrawioClient.call(this,a,"ghauth")};mxUtils.extend(GitHubClient,DrawioClient);GitHubClient.prototype.clientId="test.draw.io"==window.location.hostname?"23bc97120b9035515661":"89c9e4624ca416554489";GitHubClient.prototype.scope="repo";GitHubClient.prototype.extension=".xml";GitHubClient.prototype.baseUrl="https://api.github.com";GitHubClient.prototype.maxFileSize=1E6; +GitHubClient.prototype.updateUser=function(a,c,b){var d=!0,g=window.setTimeout(mxUtils.bind(this,function(){d=!1;c({code:App.ERROR_TIMEOUT})}),this.ui.timeout);mxUtils.get(this.baseUrl+"/user?access_token="+this.token,mxUtils.bind(this,function(e){window.clearTimeout(g);d&&(401===e.getStatus()?b?c({message:mxResources.get("accessDenied")}):(this.logout(),this.authenticate(mxUtils.bind(this,function(){this.updateUser(a,c,!0)}),c)):200>e.getStatus()||300<=e.getStatus()?c({message:mxResources.get("accessDenied")}): +(e=JSON.parse(e.getText()),this.setUser(new DrawioUser(e.id,e.email,e.name)),a()))}))}; +GitHubClient.prototype.authenticate=function(a,c){if(null==window.onGitHubCallback){var b=mxUtils.bind(this,function(){var d=!0;this.ui.showAuthDialog(this,!0,mxUtils.bind(this,function(g,e){null!=window.open("https://github.com/login/oauth/authorize?client_id="+this.clientId+"&scope="+this.scope,"ghauth")?window.onGitHubCallback=mxUtils.bind(this,function(k,m){if(d)if(window.onGitHubCallback=null,d=!1,null==k)c({message:mxResources.get("accessDenied"),retry:b});else{var n=mxUtils.bind(this,function(){var b= +!0,d=window.setTimeout(mxUtils.bind(this,function(){b=!1;c({code:App.ERROR_TIMEOUT,retry:n})}),this.ui.timeout);mxUtils.get("/github?client_id="+this.clientId+"&code="+k,mxUtils.bind(this,function(f){window.clearTimeout(d);if(b)try{if(200>f.getStatus()||300<=f.getStatus())c({message:mxResources.get("cannotLogin")});else{null!=e&&e();var k=f.getText();this.token=k.substring(k.indexOf("=")+1,k.indexOf("&"));this.setUser(null);g&&this.setPersistentToken(this.token);a()}}catch(t){c(t)}finally{null!=m&& +m.close()}}))});n()}else null!=m&&m.close()}):c({message:mxResources.get("serviceUnavailableOrBlocked"),retry:b})}),mxUtils.bind(this,function(){d&&(window.onGitHubCallback=null,d=!1,c({message:mxResources.get("accessDenied"),retry:b}))}))});b()}else c({code:App.ERROR_BUSY})};GitHubClient.prototype.getErrorMessage=function(a,c){try{var b=JSON.parse(a.getText());null!=b&&null!=b.message&&(c=b.message)}catch(d){}return c}; +GitHubClient.prototype.executeRequest=function(a,c,b,d){var g=mxUtils.bind(this,function(k){var m=!0,n=window.setTimeout(mxUtils.bind(this,function(){m=!1;b({code:App.ERROR_TIMEOUT,retry:e})}),this.ui.timeout),q=this.token;a.setRequestHeaders=function(a,b){a.setRequestHeader("Authorization","token "+q)};a.send(mxUtils.bind(this,function(){window.clearTimeout(n);if(m)if(200<=a.getStatus()&&299>=a.getStatus()||d&&404==a.getStatus())c(a);else if(401===a.getStatus())k?b({message:mxResources.get("accessDenied"), +retry:mxUtils.bind(this,function(){this.authenticate(function(){e(!0)},b)})}):this.authenticate(function(){g(!0)},b);else if(403===a.getStatus()){var f=!1;try{var l=JSON.parse(a.getText());null!=l&&null!=l.errors&&0<l.errors.length&&(f="too_large"==l.errors[0].code)}catch(p){}b({message:mxResources.get(f?"drawingTooLarge":"forbidden")})}else 404===a.getStatus()?b({message:this.getErrorMessage(a,mxResources.get("fileNotFound"))}):409===a.getStatus()?b({status:409}):b({message:this.getErrorMessage(a, +mxResources.get("error")+" "+a.getStatus())})}),b)}),e=mxUtils.bind(this,function(a){null==this.user?this.updateUser(function(){e(!0)},b,a):g(a)});null==this.token?this.authenticate(function(){e(!0)},b):e(!1)};GitHubClient.prototype.getLibrary=function(a,c,b){this.getFile(a,c,b,!0)}; +GitHubClient.prototype.getFile=function(a,c,b,d,g){d=null!=d?d:!1;var e=a.split("/"),k=e[0],m=e[1],n=e[2];a=e.slice(3,e.length).join("/");e=/\.png$/i.test(a);!g&&(/\.v(dx|sdx?)$/i.test(a)||/\.gliffy$/i.test(a)||!this.ui.useCanvasForExport&&e)?null!=this.token?(g=this.baseUrl+"/repos/"+k+"/"+m+"/contents/"+a+"?ref="+n+"&token="+this.token,e=a.split("/"),this.ui.convertFile(g,0<e.length?e[e.length-1]:a,null,this.extension,c,b)):b({message:mxResources.get("accessDenied")}):(g="&t="+(new Date).getTime(), +a=new mxXmlRequest(this.baseUrl+"/repos/"+k+"/"+m+"/contents/"+a+"?ref="+n+g,null,"GET"),this.executeRequest(a,mxUtils.bind(this,function(a){try{c(this.createGitHubFile(k,m,n,JSON.parse(a.getText()),d))}catch(f){b(f)}}),b))}; +GitHubClient.prototype.createGitHubFile=function(a,c,b,d,g){a={org:a,repo:c,ref:b,name:d.name,path:d.path,sha:d.sha,html_url:d.html_url,download_url:d.download_url};c=d.content;"base64"===d.encoding&&("PG14ZmlsZS"==c.substring(0,10)?c=window.atob&&!mxClient.IS_SF?atob(c):Base64.decode(c):/\.jpe?g$/i.test(d.name)?c="data:image/jpeg;base64,"+c:/\.gif$/i.test(d.name)?c="data:image/gif;base64,"+c:/\.png$/i.test(d.name)?(d=this.ui.extractGraphModelFromPng(c),c=null!=d&&0<d.length?d:"data:image/png;base64,"+ +c):c=Base64.decode(c));return g?new GitHubLibrary(this.ui,c,a):new GitHubFile(this.ui,c,a)};GitHubClient.prototype.insertLibrary=function(a,c,b,d,g){this.insertFile(a,c,b,d,!0,g,!1)}; +GitHubClient.prototype.insertFile=function(a,c,b,d,g,e,k){g=null!=g?g:!1;e=e.split("/");var m=e[0],n=e[1],q=e[2],f=e.slice(3,e.length).join("/");0<f.length&&(f+="/");f+=a;this.checkExists(m+"/"+n+"/"+q+"/"+f,!0,mxUtils.bind(this,function(e,p){e?g?(k||(c=Base64.encode(c)),this.showCommitDialog(a,!0,mxUtils.bind(this,function(a){this.writeFile(m,n,q,f,a,c,p,mxUtils.bind(this,function(a){try{var c=JSON.parse(a.getText());b(this.createGitHubFile(m,n,q,c.content,g))}catch(z){d(z)}}),d)}),d)):b(new GitHubFile(this.ui, +c,{org:m,repo:n,ref:q,name:a,path:f,sha:p,isNew:!0})):d()}))};GitHubClient.prototype.showCommitDialog=function(a,c,b,d){var g=this.ui.spinner.pause();a=new FilenameDialog(this.ui,mxResources.get(c?"addedFile":"updateFile",[a]),mxResources.get("ok"),mxUtils.bind(this,function(a){g();b(a)}),mxResources.get("commitMessage"),null,null,null,null,mxUtils.bind(this,function(){d()}));this.ui.showDialog(a.container,300,80,!0,!1);a.init()}; +GitHubClient.prototype.writeFile=function(a,c,b,d,g,e,k,m,n){e.length>=this.maxFileSize?n({message:mxResources.get("drawingTooLarge")+" ("+this.ui.formatFileSize(e.length)+" / 1 MB)"}):(b={path:d,branch:decodeURIComponent(b),message:g,content:e},null!=k&&(b.sha=k),a=new mxXmlRequest(this.baseUrl+"/repos/"+a+"/"+c+"/contents/"+d,JSON.stringify(b),"PUT"),this.executeRequest(a,mxUtils.bind(this,function(a){m(a)}),n))}; +GitHubClient.prototype.checkExists=function(a,c,b){this.getFile(a,mxUtils.bind(this,function(d){if(c&&null!=d.meta){var g=this.ui.spinner.pause();this.ui.confirm(mxResources.get("replaceIt",[a]),function(){g();b(!0,d.meta.sha)},function(){g();b(!1)})}else this.ui.spinner.stop(),this.ui.showError(mxResources.get("error"),mxResources.get("fileExists"),mxResources.get("ok"),function(){b(!1)})}),mxUtils.bind(this,function(a){b(!0)}),null,!0)}; +GitHubClient.prototype.saveFile=function(a,c,b,d,g){var e=a.meta.org,k=a.meta.repo,m=a.meta.ref,n=a.meta.path,q=mxUtils.bind(this,function(d,f){this.writeFile(e,k,m,n,g,f,d,mxUtils.bind(this,function(b){delete a.meta.isNew;c(JSON.parse(b.getText()))}),mxUtils.bind(this,function(a){b(a)}))}),f=mxUtils.bind(this,function(){this.ui.useCanvasForExport&&/(\.png)$/i.test(n)?this.ui.getEmbeddedPng(mxUtils.bind(this,function(b){q(a.meta.sha,b)}),b,this.ui.getCurrentFile()!=a?a.getData():null):q(a.meta.sha, +Base64.encode(a.getData()))});d?this.getFile(e+"/"+k+"/"+encodeURIComponent(m)+"/"+n,mxUtils.bind(this,function(b){a.meta.sha=b.meta.sha;f()}),b):f()};GitHubClient.prototype.pickLibrary=function(a){this.pickFile(a)};GitHubClient.prototype.pickFolder=function(a){this.showGitHubDialog(!1,a)};GitHubClient.prototype.pickFile=function(a){a=null!=a?a:mxUtils.bind(this,function(a){this.ui.loadFile("H"+encodeURIComponent(a))});this.showGitHubDialog(!0,a)}; +GitHubClient.prototype.showGitHubDialog=function(a,c){var b=null,d=null,g=null,e=null,k=document.createElement("div");k.style.whiteSpace="nowrap";k.style.overflow="hidden";k.style.height="224px";var m=document.createElement("h3");mxUtils.write(m,mxResources.get(a?"selectFile":"selectFolder"));m.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";k.appendChild(m);var n=document.createElement("div");n.style.whiteSpace="nowrap";n.style.overflow="auto";n.style.height="194px"; +k.appendChild(n);var q=new CustomDialog(this.ui,k,mxUtils.bind(this,function(){c(b+"/"+d+"/"+encodeURIComponent(g)+"/"+e)}));this.ui.showDialog(q.container,340,270,!0,!0);a&&q.okButton.parentNode.removeChild(q.okButton);var f=mxUtils.bind(this,function(a,b){var c=document.createElement("a");c.setAttribute("href","javascript:void(0);");mxUtils.write(c,a);mxEvent.addListener(c,"click",b);return c}),l=mxUtils.bind(this,function(a){var c=document.createElement("div");c.style.marginBottom="8px";c.appendChild(f(b+ +"/"+d,mxUtils.bind(this,function(){e=null;v()})));a||(mxUtils.write(c," / "),c.appendChild(f(decodeURIComponent(g),mxUtils.bind(this,function(){e=null;z()}))));if(null!=e&&0<e.length){var k=e.split("/");for(a=0;a<k.length;a++)(function(a){mxUtils.write(c," / ");c.appendChild(f(k[a],mxUtils.bind(this,function(){e=k.slice(0,a+1).join("/");t()})))})(a)}n.appendChild(c)}),p=mxUtils.bind(this,function(a){this.ui.handleError(a,null,mxUtils.bind(this,function(){this.ui.spinner.stop();null!=this.getUser()? +(e=g=d=b=null,v()):this.ui.hideDialog()}))}),t=mxUtils.bind(this,function(){var k=new mxXmlRequest(this.baseUrl+"/repos/"+b+"/"+d+"/contents/"+e+"?ref="+encodeURIComponent(g),null,"GET");q.okButton.removeAttribute("disabled");n.innerHTML="";this.ui.spinner.spin(n,mxResources.get("loading"));this.executeRequest(k,mxUtils.bind(this,function(k){l();this.ui.spinner.stop();var m=JSON.parse(k.getText());n.appendChild(f("../ [Up]",mxUtils.bind(this,function(){if(""==e)e=null,v();else{var a=e.split("/"); +e=a.slice(0,a.length-1).join("/");t()}})));mxUtils.br(n);null==m||0==m.length?mxUtils.write(n,mxResources.get("noFiles")):(k=mxUtils.bind(this,function(k){for(var l=0;l<m.length;l++)mxUtils.bind(this,function(l){k==("dir"==l.type)&&(n.appendChild(f(l.name+("dir"==l.type?"/":""),mxUtils.bind(this,function(){"dir"==l.type?(e=l.path,t()):a&&"file"==l.type&&(this.ui.hideDialog(),c(b+"/"+d+"/"+encodeURIComponent(g)+"/"+l.path))}))),mxUtils.br(n))})(m[l])}),k(!0),a&&k(!1))}),p,!0)}),u=null,x=null,z=mxUtils.bind(this, +function(a){null==a&&(n.innerHTML="",a=1);var c=new mxXmlRequest(this.baseUrl+"/repos/"+b+"/"+d+"/branches?per_page=100&page="+a,null,"GET");q.okButton.setAttribute("disabled","disabled");this.ui.spinner.spin(n,mxResources.get("loading"));null!=u&&null!=u.parentNode&&u.parentNode.removeChild(u);u=document.createElement("a");u.style.display="block";u.setAttribute("href","javascript:void(0);");mxUtils.write(u,mxResources.get("more")+"...");var k=mxUtils.bind(this,function(){mxEvent.removeListener(n, +"scroll",x);z(a+1)});mxEvent.addListener(u,"click",k);this.executeRequest(c,mxUtils.bind(this,function(b){this.ui.spinner.stop();1==a&&(l(!0),n.appendChild(f("../ [Up]",mxUtils.bind(this,function(){e=null;v()}))),mxUtils.br(n));b=JSON.parse(b.getText());if(null==b||0==b.length)mxUtils.write(n,mxResources.get("noFiles"));else{for(var c=0;c<b.length;c++)mxUtils.bind(this,function(a){n.appendChild(f(a.name,mxUtils.bind(this,function(){g=a.name;e="";t()})));mxUtils.br(n)})(b[c]);100==b.length&&(n.appendChild(u), +x=function(){n.scrollTop>=n.scrollHeight-n.offsetHeight&&k()},mxEvent.addListener(n,"scroll",x))}}),p)}),v=mxUtils.bind(this,function(a){null==a&&(n.innerHTML="",a=1);var c=new mxXmlRequest(this.baseUrl+"/user/repos?per_page=100&page="+a,null,"GET");q.okButton.setAttribute("disabled","disabled");this.ui.spinner.spin(n,mxResources.get("loading"));null!=u&&null!=u.parentNode&&u.parentNode.removeChild(u);u=document.createElement("a");u.style.display="block";u.setAttribute("href","javascript:void(0);"); +mxUtils.write(u,mxResources.get("more")+"...");var k=mxUtils.bind(this,function(){mxEvent.removeListener(n,"scroll",x);v(a+1)});mxEvent.addListener(u,"click",k);this.executeRequest(c,mxUtils.bind(this,function(c){this.ui.spinner.stop();c=JSON.parse(c.getText());if(null==c||0==c.length)mxUtils.write(n,mxResources.get("noFiles"));else{1==a&&(n.appendChild(f(mxResources.get("enterValue")+"...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.ui,"org/repo/ref",mxResources.get("ok"),mxUtils.bind(this, +function(a){if(null!=a){var c=a.split("/");if(1<c.length){a=c[0];var f=c[1];3>c.length?(b=a,d=f,e=g=null,z()):this.ui.spinner.spin(n,mxResources.get("loading"))&&(c=encodeURIComponent(c.slice(2,c.length).join("/")),this.getFile(a+"/"+f+"/"+c,mxUtils.bind(this,function(a){this.ui.spinner.stop();b=a.meta.org;d=a.meta.repo;g=decodeURIComponent(a.meta.ref);e="";t()}),mxUtils.bind(this,function(a){this.ui.spinner.stop();this.ui.handleError({message:mxResources.get("fileNotFound")})})))}else this.ui.spinner.stop(), +this.ui.handleError({message:mxResources.get("invalidName")})}}),mxResources.get("enterValue"));this.ui.showDialog(a.container,300,80,!0,!1);a.init()}))),mxUtils.br(n),mxUtils.br(n));for(var l=0;l<c.length;l++)mxUtils.bind(this,function(a){n.appendChild(f(a.full_name,mxUtils.bind(this,function(){b=a.owner.login;d=a.name;g=a.default_branch;e="";t()})));mxUtils.br(n)})(c[l])}100==c.length&&(n.appendChild(u),x=function(){n.scrollTop>=n.scrollHeight-n.offsetHeight&&k()},mxEvent.addListener(n,"scroll", +x))}),p)});v()};GitHubClient.prototype.logout=function(){this.clearPersistentToken();this.setUser(null);this.token=null};TrelloFile=function(a,c,b){DrawioFile.call(this,a,c);this.meta=b;this.saveNeededCounter=0};mxUtils.extend(TrelloFile,DrawioFile);TrelloFile.prototype.getHash=function(){return"T"+encodeURIComponent(this.meta.compoundId)};TrelloFile.prototype.getMode=function(){return App.MODE_TRELLO};TrelloFile.prototype.isAutosave=function(){return!0};TrelloFile.prototype.getTitle=function(){return this.meta.name};TrelloFile.prototype.isRenamable=function(){return!1};TrelloFile.prototype.getSize=function(){return this.meta.bytes}; TrelloFile.prototype.save=function(a,c,b){this.doSave(this.getTitle(),c,b)};TrelloFile.prototype.saveAs=function(a,c,b){this.doSave(a,c,b)};TrelloFile.prototype.doSave=function(a,c,b){var d=this.meta.name;this.meta.name=a;DrawioFile.prototype.save.apply(this,arguments);this.meta.name=d;this.saveFile(a,!1,c,b)}; -TrelloFile.prototype.saveFile=function(a,c,b,d){if(this.isEditable())if(this.savingFile)null!=d&&(this.saveNeededCounter++,d({code:App.ERROR_BUSY}));else if(this.savingFile=!0,this.getTitle()==a){var f=this.isModified,h=this.isModified(),k=mxUtils.bind(this,function(){this.setModified(!1);this.isModified=function(){return h}});k();this.ui.trello.saveFile(this,mxUtils.bind(this,function(h){this.savingFile=!1;this.isModified=f;this.meta=h;this.contentChanged();null!=b&&b();0<this.saveNeededCounter&& -(this.saveNeededCounter--,this.saveFile(a,c,b,d))}),mxUtils.bind(this,function(a){this.savingFile=!1;this.isModified=f;this.setModified(h||this.isModified());if(null!=d){if(null!=a&&null!=a.retry){var b=a.retry;a.retry=function(){k();b()}}d(a)}}))}else this.ui.pickFolder(App.MODE_TRELLO,mxUtils.bind(this,function(f){this.ui.trello.insertFile(a,this.getData(),mxUtils.bind(this,function(f){this.savingFile=!1;null!=b&&b();this.ui.fileLoaded(f);0<this.saveNeededCounter&&(this.saveNeededCounter--,this.saveFile(a, -c,b,d))}),mxUtils.bind(this,function(){this.savingFile=!1;null!=d&&d()}),!1,f)}));else null!=b&&b()};TrelloLibrary=function(a,c,b){TrelloFile.call(this,a,c,b)};mxUtils.extend(TrelloLibrary,TrelloFile);TrelloLibrary.prototype.doSave=function(a,c,b){this.saveFile(a,!1,c,b)};TrelloLibrary.prototype.open=function(){};TrelloClient=function(a){DrawioClient.call(this,a,"tauth");Trello.setKey(this.key)};mxUtils.extend(TrelloClient,DrawioClient);TrelloClient.prototype.key="e73615c79cf7e381aef91c85936e9553";TrelloClient.prototype.baseUrl="https://api.trello.com/1/";TrelloClient.prototype.SEPARATOR="|$|";TrelloClient.prototype.maxFileSize=1E7;TrelloClient.prototype.extension=".xml"; -TrelloClient.prototype.authenticate=function(a,c,b){b&&this.logout();b=mxUtils.bind(this,function(b,f){Trello.authorize({type:"popup",name:"draw.io",scope:{read:"true",write:"true"},expiration:b?"never":"1hour",success:function(){null!=f&&f();a()},error:function(){null!=f&&f();null!=c&&c(mxResources.get("loggedOut"))}})});this.isAuthorized()?b(!0):this.ui.showAuthDialog(this,!0,b)};TrelloClient.prototype.getLibrary=function(a,c,b){this.getFile(a,c,b,!1,!0)}; -TrelloClient.prototype.getFile=function(a,c,b,d,f){f=null!=f?f:!1;var h=mxUtils.bind(this,function(){var d=a.split(this.SEPARATOR),m=!0,p=window.setTimeout(mxUtils.bind(this,function(){m=!1;b({code:App.ERROR_TIMEOUT,retry:h})}),this.ui.timeout);Trello.cards.get(d[0]+"/attachments/"+d[1],mxUtils.bind(this,function(d){window.clearTimeout(p);if(m){var g=/\.png$/i.test(d.name);/\.v(dx|sdx?)$/i.test(d.name)||/\.gliffy$/i.test(d.name)||!this.ui.useCanvasForExport&&g?this.ui.convertFile(PROXY_URL+"?url="+ -encodeURIComponent(d.url),d.name,d.mimeType,this.extension,c,b):(m=!0,p=window.setTimeout(mxUtils.bind(this,function(){m=!1;b({code:App.ERROR_TIMEOUT})}),this.ui.timeout),this.ui.loadUrl(PROXY_URL+"?url="+encodeURIComponent(d.url),mxUtils.bind(this,function(b){window.clearTimeout(p);if(m){d.compoundId=a;var h=g?b.lastIndexOf(","):-1;0<h&&(h=this.ui.extractGraphModelFromPng(b.substring(h+1)),null!=h&&0<h.length&&(b=h));f?c(new TrelloLibrary(this.ui,b,d)):c(new TrelloFile(this.ui,b,d))}}),mxUtils.bind(this, -function(a,c){window.clearTimeout(p);m&&(401==c.status?this.authenticate(h,b,!0):b())}),g||null!=d.mimeType&&"image/"==d.mimeType.substring(0,6)))}}),mxUtils.bind(this,function(a){window.clearTimeout(p);m&&(401==a.status?this.authenticate(h,b,!0):b())}))});this.authenticate(h,b)};TrelloClient.prototype.insertLibrary=function(a,c,b,d,f){this.insertFile(a,c,b,d,!0,f)}; -TrelloClient.prototype.insertFile=function(a,c,b,d,f,h){f=null!=f?f:!1;var k=mxUtils.bind(this,function(){var k=mxUtils.bind(this,function(k){this.writeFile(a,k,h,mxUtils.bind(this,function(a){f?b(new TrelloLibrary(this.ui,c,a)):b(new TrelloFile(this.ui,c,a))}),d)});this.ui.useCanvasForExport&&/(\.png)$/i.test(a)?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){k(this.ui.base64ToBlob(a,"image/png"))}),d,c):k(c)});this.authenticate(k,d)}; -TrelloClient.prototype.saveFile=function(a,c,b){var d=a.meta.compoundId.split(this.SEPARATOR),f=mxUtils.bind(this,function(f){this.writeFile(a.meta.name,f,d[0],function(a){Trello.del("cards/"+d[0]+"/attachments/"+d[1],mxUtils.bind(this,function(){c(a)}),mxUtils.bind(this,function(a){401==a.status?this.authenticate(h,b,!0):b()}))},b)}),h=mxUtils.bind(this,function(){this.ui.useCanvasForExport&&/(\.png)$/i.test(a.meta.name)?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){f(this.ui.base64ToBlob(a, -"image/png"))}),b,this.ui.getCurrentFile()!=a?a.getData():null):f(a.getData())});this.authenticate(h,b)}; -TrelloClient.prototype.writeFile=function(a,c,b,d,f){if(null!=a&&null!=c)if(c.length>=this.maxFileSize)f({message:mxResources.get("drawingTooLarge")+" ("+this.ui.formatFileSize(c.length)+" / 10 MB)"});else{var h=mxUtils.bind(this,function(){var k=!0,m=window.setTimeout(mxUtils.bind(this,function(){k=!1;f({code:App.ERROR_TIMEOUT,retry:h})}),this.ui.timeout),p=new FormData;p.append("key",Trello.key());p.append("token",Trello.token());p.append("file","string"===typeof c?new Blob([c]):c,a);p.append("name", -a);var g=new XMLHttpRequest;g.responseType="json";g.onreadystatechange=mxUtils.bind(this,function(){if(4===g.readyState&&(window.clearTimeout(m),k))if(200==g.status){var a=g.response;a.compoundId=b+this.SEPARATOR+a.id;d(a)}else 401==g.status?this.authenticate(h,f,!0):f()});g.open("POST",this.baseUrl+"cards/"+b+"/attachments");g.send(p)});this.authenticate(h,f)}else f({message:mxResources.get("unknownError")})};TrelloClient.prototype.pickLibrary=function(a){this.pickFile(a)}; +TrelloFile.prototype.saveFile=function(a,c,b,d){if(this.isEditable())if(this.savingFile)null!=d&&(this.saveNeededCounter++,d({code:App.ERROR_BUSY}));else if(this.savingFile=!0,this.getTitle()==a){var g=this.isModified,e=this.isModified(),k=mxUtils.bind(this,function(){this.setModified(!1);this.isModified=function(){return e}});k();this.ui.trello.saveFile(this,mxUtils.bind(this,function(e){this.savingFile=!1;this.isModified=g;this.meta=e;this.contentChanged();null!=b&&b();0<this.saveNeededCounter&& +(this.saveNeededCounter--,this.saveFile(a,c,b,d))}),mxUtils.bind(this,function(a){this.savingFile=!1;this.isModified=g;this.setModified(e||this.isModified());if(null!=d){if(null!=a&&null!=a.retry){var b=a.retry;a.retry=function(){k();b()}}d(a)}}))}else this.ui.pickFolder(App.MODE_TRELLO,mxUtils.bind(this,function(e){this.ui.trello.insertFile(a,this.getData(),mxUtils.bind(this,function(e){this.savingFile=!1;null!=b&&b();this.ui.fileLoaded(e);0<this.saveNeededCounter&&(this.saveNeededCounter--,this.saveFile(a, +c,b,d))}),mxUtils.bind(this,function(){this.savingFile=!1;null!=d&&d()}),!1,e)}));else null!=b&&b()};TrelloLibrary=function(a,c,b){TrelloFile.call(this,a,c,b)};mxUtils.extend(TrelloLibrary,TrelloFile);TrelloLibrary.prototype.doSave=function(a,c,b){this.saveFile(a,!1,c,b)};TrelloLibrary.prototype.open=function(){};TrelloClient=function(a){DrawioClient.call(this,a,"tauth");Trello.setKey(this.key)};mxUtils.extend(TrelloClient,DrawioClient);TrelloClient.prototype.key="e73615c79cf7e381aef91c85936e9553";TrelloClient.prototype.baseUrl="https://api.trello.com/1/";TrelloClient.prototype.SEPARATOR="|$|";TrelloClient.prototype.maxFileSize=1E7;TrelloClient.prototype.extension=".xml"; +TrelloClient.prototype.authenticate=function(a,c,b){b&&this.logout();b=mxUtils.bind(this,function(b,g){Trello.authorize({type:"popup",name:"draw.io",scope:{read:"true",write:"true"},expiration:b?"never":"1hour",success:function(){null!=g&&g();a()},error:function(){null!=g&&g();null!=c&&c(mxResources.get("loggedOut"))}})});this.isAuthorized()?b(!0):this.ui.showAuthDialog(this,!0,b)};TrelloClient.prototype.getLibrary=function(a,c,b){this.getFile(a,c,b,!1,!0)}; +TrelloClient.prototype.getFile=function(a,c,b,d,g){g=null!=g?g:!1;var e=mxUtils.bind(this,function(){var d=a.split(this.SEPARATOR),m=!0,n=window.setTimeout(mxUtils.bind(this,function(){m=!1;b({code:App.ERROR_TIMEOUT,retry:e})}),this.ui.timeout);Trello.cards.get(d[0]+"/attachments/"+d[1],mxUtils.bind(this,function(d){window.clearTimeout(n);if(m){var f=/\.png$/i.test(d.name);/\.v(dx|sdx?)$/i.test(d.name)||/\.gliffy$/i.test(d.name)||!this.ui.useCanvasForExport&&f?this.ui.convertFile(PROXY_URL+"?url="+ +encodeURIComponent(d.url),d.name,d.mimeType,this.extension,c,b):(m=!0,n=window.setTimeout(mxUtils.bind(this,function(){m=!1;b({code:App.ERROR_TIMEOUT})}),this.ui.timeout),this.ui.loadUrl(PROXY_URL+"?url="+encodeURIComponent(d.url),mxUtils.bind(this,function(b){window.clearTimeout(n);if(m){d.compoundId=a;var e=f?b.lastIndexOf(","):-1;0<e&&(e=this.ui.extractGraphModelFromPng(b.substring(e+1)),null!=e&&0<e.length&&(b=e));g?c(new TrelloLibrary(this.ui,b,d)):c(new TrelloFile(this.ui,b,d))}}),mxUtils.bind(this, +function(a,c){window.clearTimeout(n);m&&(401==c.status?this.authenticate(e,b,!0):b())}),f||null!=d.mimeType&&"image/"==d.mimeType.substring(0,6)))}}),mxUtils.bind(this,function(a){window.clearTimeout(n);m&&(401==a.status?this.authenticate(e,b,!0):b())}))});this.authenticate(e,b)};TrelloClient.prototype.insertLibrary=function(a,c,b,d,g){this.insertFile(a,c,b,d,!0,g)}; +TrelloClient.prototype.insertFile=function(a,c,b,d,g,e){g=null!=g?g:!1;var k=mxUtils.bind(this,function(){var k=mxUtils.bind(this,function(k){this.writeFile(a,k,e,mxUtils.bind(this,function(a){g?b(new TrelloLibrary(this.ui,c,a)):b(new TrelloFile(this.ui,c,a))}),d)});this.ui.useCanvasForExport&&/(\.png)$/i.test(a)?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){k(this.ui.base64ToBlob(a,"image/png"))}),d,c):k(c)});this.authenticate(k,d)}; +TrelloClient.prototype.saveFile=function(a,c,b){var d=a.meta.compoundId.split(this.SEPARATOR),g=mxUtils.bind(this,function(g){this.writeFile(a.meta.name,g,d[0],function(a){Trello.del("cards/"+d[0]+"/attachments/"+d[1],mxUtils.bind(this,function(){c(a)}),mxUtils.bind(this,function(a){401==a.status?this.authenticate(e,b,!0):b()}))},b)}),e=mxUtils.bind(this,function(){this.ui.useCanvasForExport&&/(\.png)$/i.test(a.meta.name)?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){g(this.ui.base64ToBlob(a, +"image/png"))}),b,this.ui.getCurrentFile()!=a?a.getData():null):g(a.getData())});this.authenticate(e,b)}; +TrelloClient.prototype.writeFile=function(a,c,b,d,g){if(null!=a&&null!=c)if(c.length>=this.maxFileSize)g({message:mxResources.get("drawingTooLarge")+" ("+this.ui.formatFileSize(c.length)+" / 10 MB)"});else{var e=mxUtils.bind(this,function(){var k=!0,m=window.setTimeout(mxUtils.bind(this,function(){k=!1;g({code:App.ERROR_TIMEOUT,retry:e})}),this.ui.timeout),n=new FormData;n.append("key",Trello.key());n.append("token",Trello.token());n.append("file","string"===typeof c?new Blob([c]):c,a);n.append("name", +a);var q=new XMLHttpRequest;q.responseType="json";q.onreadystatechange=mxUtils.bind(this,function(){if(4===q.readyState&&(window.clearTimeout(m),k))if(200==q.status){var a=q.response;a.compoundId=b+this.SEPARATOR+a.id;d(a)}else 401==q.status?this.authenticate(e,g,!0):g()});q.open("POST",this.baseUrl+"cards/"+b+"/attachments");q.send(n)});this.authenticate(e,g)}else g({message:mxResources.get("unknownError")})};TrelloClient.prototype.pickLibrary=function(a){this.pickFile(a)}; TrelloClient.prototype.pickFolder=function(a){this.authenticate(mxUtils.bind(this,function(){this.showTrelloDialog(!1,a)}),mxUtils.bind(this,function(a){this.ui.showError(mxResources.get("error"),a)}))};TrelloClient.prototype.pickFile=function(a,c){a=null!=a?a:mxUtils.bind(this,function(a){this.ui.loadFile("T"+encodeURIComponent(a))});this.authenticate(mxUtils.bind(this,function(){this.showTrelloDialog(!0,a)}),mxUtils.bind(this,function(a){this.ui.showError(mxResources.get("error"),a,mxResources.get("ok"))}))}; -TrelloClient.prototype.showTrelloDialog=function(a,c){var b=null,d="@me",f=0,h=document.createElement("div");h.style.whiteSpace="nowrap";h.style.overflow="hidden";h.style.height="224px";var k=document.createElement("h3");mxUtils.write(k,a?mxResources.get("selectFile"):mxResources.get("selectCard"));k.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";h.appendChild(k);var m=document.createElement("div");m.style.whiteSpace="nowrap";m.style.overflow="auto";m.style.height= -"194px";h.appendChild(m);h=new CustomDialog(this.ui,h);this.ui.showDialog(h.container,340,270,!0,!0);h.okButton.parentNode.removeChild(h.okButton);var p=mxUtils.bind(this,function(a,b,c){f++;var d=document.createElement("div");d.style="width:100%;text-overflow:ellipsis;overflow:hidden;vertical-align:middle;background:"+(0==f%2?"#eee":"#fff");var g=document.createElement("a");g.setAttribute("href","javascript:void(0);");if(null!=c){var h=document.createElement("img");h.src=c.url;h.width=c.width;h.height= -c.height;h.style="border: 1px solid black;margin:5px;vertical-align:middle";g.appendChild(h)}mxUtils.write(g,a);mxEvent.addListener(g,"click",b);d.appendChild(g);return d}),g=mxUtils.bind(this,function(a){this.ui.handleError(a,null,mxUtils.bind(this,function(){this.ui.spinner.stop();this.ui.hideDialog()}))}),l=mxUtils.bind(this,function(){f=0;m.innerHTML="";this.ui.spinner.spin(m,mxResources.get("loading"));var a=mxUtils.bind(this,function(){Trello.cards.get(b+"/attachments",{fields:"id,name,previews"}, -mxUtils.bind(this,function(a){this.ui.spinner.stop();m.appendChild(p("../ [Up]",mxUtils.bind(this,function(){t()})));mxUtils.br(m);null==a||0==a.length?mxUtils.write(m,mxResources.get("noFiles")):mxUtils.bind(this,function(){for(var d=0;d<a.length;d++)mxUtils.bind(this,function(a){m.appendChild(p(a.name,mxUtils.bind(this,function(){this.ui.hideDialog();c(b+this.SEPARATOR+a.id)}),null!=a.previews?a.previews[0]:null))})(a[d])})()}),mxUtils.bind(this,function(b){401==b.status?this.authenticate(a,g,!0): -null!=g&&g(b)}))});a()}),n=null,q=null,t=mxUtils.bind(this,function(h){null==h&&(f=0,m.innerHTML="",h=1);this.ui.spinner.spin(m,mxResources.get("loading"));null!=n&&null!=n.parentNode&&n.parentNode.removeChild(n);n=document.createElement("a");n.style.display="block";n.setAttribute("href","javascript:void(0);");mxUtils.write(n,mxResources.get("more")+"...");var k=mxUtils.bind(this,function(){mxEvent.removeListener(m,"scroll",q);t(h+1)});mxEvent.addListener(n,"click",k);var v=mxUtils.bind(this,function(){Trello.get("search", -{query:""==mxUtils.trim(d)?"is:open":d,cards_limit:100,cards_page:h-1},mxUtils.bind(this,function(f){this.ui.spinner.stop();f=null!=f?f.cards:null;if(null==f||0==f.length)mxUtils.write(m,mxResources.get("noFiles"));else{1==h&&(m.appendChild(p(mxResources.get("filterCards")+"...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.ui,d,mxResources.get("ok"),mxUtils.bind(this,function(a){null!=a&&(d=a,t())}),mxResources.get("filterCards"),null,null,"http://help.trello.com/article/808-searching-for-cards-all-boards"); -this.ui.showDialog(a.container,300,80,!0,!1);a.init()}))),mxUtils.br(m));for(var g=0;g<f.length;g++)mxUtils.bind(this,function(d){m.appendChild(p(d.name,mxUtils.bind(this,function(){a?(b=d.id,l()):(this.ui.hideDialog(),c(d.id))})))})(f[g]);100==f.length&&(m.appendChild(n),q=function(){m.scrollTop>=m.scrollHeight-m.offsetHeight&&k()},mxEvent.addListener(m,"scroll",q))}}),mxUtils.bind(this,function(a){401==a.status?this.authenticate(v,g,!0):null!=g&&g({message:a.responseText})}))});v()});t()}; +TrelloClient.prototype.showTrelloDialog=function(a,c){var b=null,d="@me",g=0,e=document.createElement("div");e.style.whiteSpace="nowrap";e.style.overflow="hidden";e.style.height="224px";var k=document.createElement("h3");mxUtils.write(k,a?mxResources.get("selectFile"):mxResources.get("selectCard"));k.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";e.appendChild(k);var m=document.createElement("div");m.style.whiteSpace="nowrap";m.style.overflow="auto";m.style.height= +"194px";e.appendChild(m);e=new CustomDialog(this.ui,e);this.ui.showDialog(e.container,340,270,!0,!0);e.okButton.parentNode.removeChild(e.okButton);var n=mxUtils.bind(this,function(a,b,c){g++;var d=document.createElement("div");d.style="width:100%;text-overflow:ellipsis;overflow:hidden;vertical-align:middle;background:"+(0==g%2?"#eee":"#fff");var e=document.createElement("a");e.setAttribute("href","javascript:void(0);");if(null!=c){var f=document.createElement("img");f.src=c.url;f.width=c.width;f.height= +c.height;f.style="border: 1px solid black;margin:5px;vertical-align:middle";e.appendChild(f)}mxUtils.write(e,a);mxEvent.addListener(e,"click",b);d.appendChild(e);return d}),q=mxUtils.bind(this,function(a){this.ui.handleError(a,null,mxUtils.bind(this,function(){this.ui.spinner.stop();this.ui.hideDialog()}))}),f=mxUtils.bind(this,function(){g=0;m.innerHTML="";this.ui.spinner.spin(m,mxResources.get("loading"));var a=mxUtils.bind(this,function(){Trello.cards.get(b+"/attachments",{fields:"id,name,previews"}, +mxUtils.bind(this,function(a){this.ui.spinner.stop();m.appendChild(n("../ [Up]",mxUtils.bind(this,function(){t()})));mxUtils.br(m);null==a||0==a.length?mxUtils.write(m,mxResources.get("noFiles")):mxUtils.bind(this,function(){for(var d=0;d<a.length;d++)mxUtils.bind(this,function(a){m.appendChild(n(a.name,mxUtils.bind(this,function(){this.ui.hideDialog();c(b+this.SEPARATOR+a.id)}),null!=a.previews?a.previews[0]:null))})(a[d])})()}),mxUtils.bind(this,function(b){401==b.status?this.authenticate(a,q,!0): +null!=q&&q(b)}))});a()}),l=null,p=null,t=mxUtils.bind(this,function(e){null==e&&(g=0,m.innerHTML="",e=1);this.ui.spinner.spin(m,mxResources.get("loading"));null!=l&&null!=l.parentNode&&l.parentNode.removeChild(l);l=document.createElement("a");l.style.display="block";l.setAttribute("href","javascript:void(0);");mxUtils.write(l,mxResources.get("more")+"...");var k=mxUtils.bind(this,function(){mxEvent.removeListener(m,"scroll",p);t(e+1)});mxEvent.addListener(l,"click",k);var u=mxUtils.bind(this,function(){Trello.get("search", +{query:""==mxUtils.trim(d)?"is:open":d,cards_limit:100,cards_page:e-1},mxUtils.bind(this,function(g){this.ui.spinner.stop();g=null!=g?g.cards:null;if(null==g||0==g.length)mxUtils.write(m,mxResources.get("noFiles"));else{1==e&&(m.appendChild(n(mxResources.get("filterCards")+"...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.ui,d,mxResources.get("ok"),mxUtils.bind(this,function(a){null!=a&&(d=a,t())}),mxResources.get("filterCards"),null,null,"http://help.trello.com/article/808-searching-for-cards-all-boards"); +this.ui.showDialog(a.container,300,80,!0,!1);a.init()}))),mxUtils.br(m));for(var v=0;v<g.length;v++)mxUtils.bind(this,function(d){m.appendChild(n(d.name,mxUtils.bind(this,function(){a?(b=d.id,f()):(this.ui.hideDialog(),c(d.id))})))})(g[v]);100==g.length&&(m.appendChild(l),p=function(){m.scrollTop>=m.scrollHeight-m.offsetHeight&&k()},mxEvent.addListener(m,"scroll",p))}}),mxUtils.bind(this,function(a){401==a.status?this.authenticate(u,q,!0):null!=q&&q({message:a.responseText})}))});u()});t()}; TrelloClient.prototype.isAuthorized=function(){try{return null!=localStorage.trello_token}catch(a){}return!1};TrelloClient.prototype.logout=function(){localStorage.removeItem("trello_token");Trello.deauthorize()};App=function(a,c,b){EditorUi.call(this,a,c,null!=b?b:"1"==urlParams.lightbox||"min"==uiTheme&&"0"!=urlParams.chrome);mxClient.IS_SVG?mxGraph.prototype.warningImage.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAE7SURBVHjaYvz//z8DJQAggBjwGXDuHMP/tWuD/uPTCxBAOA0AaQRK/f/+XeJ/cbHlf1wGAAQQTgPu3QNLgfHSpZo4DQAIIKwGwGyH4e/fFbG6AiQJEEAs2Ew2NFzH8OOHBMO6dT/A/KCg7wxGRh+wuhQggDBcALMdFIAcHBxgDGJjcwVIIUAAYbhAUXEdVos4OO4DXcGBIQ4QQCguQPY7sgtgAYruCpAgQACx4LJdU1OCwctLEcyWlLwPJF+AXQE0EMUBAAEEdwF6yMOiD4RRY0QT7gqQAEAAseDzu6XldYYPH9DD4joQa8L5AAEENgWb7SBcXa0JDQMBrK4AcQACiAlfyOMCEFdAnAYQQEz4FLa0XGf4/v0H0IIPONUABBAjyBmMjIwMS5cK/L927QORbtBkaG29DtYLEGAAH6f7oq3Zc+kAAAAASUVORK5CYII=": (new Image).src=mxGraph.prototype.warningImage.src;window.openWindow=mxUtils.bind(this,function(a,b,c){var d=null;try{d=window.open(a)}catch(m){}null==d||void 0===d?this.showDialog((new PopupDialog(this,a,b,c)).container,320,140,!0,!0):null!=b&&b()});this.updateDocumentTitle();this.updateUi();window.showOpenAlert=mxUtils.bind(this,function(a){null!=window.openFile&&window.openFile.cancel(!0);this.handleError(a)});this.editor.chromeless&&!this.editor.editable||this.addFileDropHandler([document]);if(null!= App.DrawPlugins){for(a=0;a<App.DrawPlugins.length;a++)try{App.DrawPlugins[a](this)}catch(d){null!=window.console&&console.log("Plugin Error:",d,App.DrawPlugins[a])}window.Draw.loadPlugin=mxUtils.bind(this,function(a){a(this)})}this.load()};App.ERROR_TIMEOUT="timeout";App.ERROR_BUSY="busy";App.ERROR_UNKNOWN="unknown";App.MODE_GOOGLE="google";App.MODE_DROPBOX="dropbox";App.MODE_ONEDRIVE="onedrive";App.MODE_GITHUB="github";App.MODE_DEVICE="device";App.MODE_BROWSER="browser";App.MODE_TRELLO="trello"; @@ -8549,13 +8556,13 @@ null),"function"===typeof window.TrelloClient&&("0"!=urlParams.tr&&isSvgBrowser& App.main=function(a,c){function b(d){mxUtils.getAll("1"!=urlParams.dev?[d]:[d,"dark"==uiTheme?STYLE_PATH+"/dark-default.xml":STYLE_PATH+"/default.xml"],function(b){mxResources.parse(b[0].getText());1<b.length&&(Graph.prototype.defaultThemes[Graph.prototype.defaultThemeName]=b[1].getDocumentElement());b=null!=c?c():new App(new Editor("0"==urlParams.chrome||"min"==uiTheme,null,null,null,"0"!=urlParams.chrome));if(null!=window.mxscript){if("function"===typeof window.DropboxClient&&null==window.Dropbox&& null!=window.DrawDropboxClientCallback&&("1"!=urlParams.embed&&"0"!=urlParams.db||"1"==urlParams.embed&&"1"==urlParams.db)&&isSvgBrowser&&(null==document.documentMode||9<document.documentMode))mxscript(App.DROPBOX_URL,function(){mxscript(App.DROPINS_URL,function(){DrawDropboxClientCallback()},"dropboxjs",App.DROPBOX_APPKEY)});else if("undefined"===typeof window.Dropbox||"undefined"===typeof window.Dropbox.choose)window.DropboxClient=null;"function"===typeof window.OneDriveClient&&"undefined"===typeof OneDrive&& null!=window.DrawOneDriveClientCallback&&("1"!=urlParams.embed&&"0"!=urlParams.od||"1"==urlParams.embed&&"1"==urlParams.od)&&(0>navigator.userAgent.indexOf("MSIE")||10<=document.documentMode)?mxscript(App.ONEDRIVE_URL,window.DrawOneDriveClientCallback):"undefined"===typeof window.OneDrive&&(window.OneDriveClient=null);"function"===typeof window.TrelloClient&&"undefined"===typeof window.Trello&&null!=window.DrawTrelloClientCallback&&("1"!=urlParams.embed&&"0"!=urlParams.tr||"1"==urlParams.embed&&"1"== -urlParams.tr)&&(0>navigator.userAgent.indexOf("MSIE")||10<=document.documentMode)?mxscript(App.TRELLO_JQUERY_URL,function(){mxscript(App.TRELLO_URL,function(){DrawTrelloClientCallback()})}):"undefined"===typeof window.Trello&&(window.TrelloClient=null)}null!=a&&a(b);"0"!=urlParams.chrome&&"1"==urlParams.test&&(EditorUi.debug("Started in "+((new Date).getTime()-t0.getTime())+"ms"),null!=urlParams["export"]&&EditorUi.debug("Export:",EXPORT_URL))},function(a){document.getElementById("geStatus").innerHTML= -"Error loading page. <a>Please try refreshing.</a>";document.getElementById("geStatus").getElementsByTagName("a")[0].onclick=function(){mxLanguage="en";b(mxResources.getDefaultBundle(RESOURCE_BASE,mxLanguage)||mxResources.getSpecialBundle(RESOURCE_BASE,mxLanguage))}})}function d(){mxResources.loadDefaultBundle=!1;b(mxResources.getDefaultBundle(RESOURCE_BASE,mxLanguage)||mxResources.getSpecialBundle(RESOURCE_BASE,mxLanguage))}window.onerror=function(a,b,c,d,f){EditorUi.logError(a,b,c,d,f)};if("1"== -urlParams.embed||"1"==urlParams.lightbox){var f=document.getElementById("geInfo");null!=f&&f.parentNode.removeChild(f)}if(null!=window.mxscript){if("1"==urlParams.offline||"1"==urlParams.appcache)mxscript("js/shapes.min.js"),mxscript("js/stencils.min.js"),mxscript("js/extensions.min.js"),f=document.createElement("iframe"),f.setAttribute("width","0"),f.setAttribute("height","0"),f.setAttribute("src","offline.html"),document.body.appendChild(f);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||"auto"!= -DrawioFile.SYNC||mxscript(App.PUSHER_URL);if("0"!=urlParams.plugins&&"1"!=urlParams.offline){var f=null!=mxSettings.settings?mxSettings.getPlugins():null,h={},k=urlParams.p;App.initPluginCallback();if(null!=k)for(var m=k.split(";"),k=0;k<m.length;k++){var p=App.pluginRegistry[m[k]];null!=p&&null==h[p]?(h[p]=!0,"undefined"===typeof window.drawDevUrl?mxscript(p):mxscript(drawDevUrl+p)):null!=window.console&&console.log("Unknown plugin:",m[k])}else"0"==urlParams.chrome||EditorUi.isElectronApp||mxscript(App.FOOTER_PLUGIN_URL, -null,null,null,mxClient.IS_SVG);if(null!=f&&0<f.length&&"0"!=urlParams.plugins){for(var m=window.location.protocol+"//"+window.location.host,g=!0,k=0;k<f.length&&g;k++)"/"!=f[k].charAt(0)&&f[k].substring(0,m.length)!=m&&(g=!1);if(g||mxUtils.confirm(mxResources.replacePlaceholders("The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n",[f.join("\n")]).replace(/\\n/g, -"\n")))for(k=0;k<f.length;k++)try{null==h[f[k]]&&(h[p]=!0,mxscript(f[k]))}catch(q){}}}"function"===typeof window.DriveClient&&"undefined"===typeof gapi&&("1"!=urlParams.embed&&"0"!=urlParams.gapi||"1"==urlParams.embed&&"1"==urlParams.gapi)&&isSvgBrowser&&isLocalStorage&&(null==document.documentMode||10<=document.documentMode)?mxscript("https://apis.google.com/js/api.js?onload=DrawGapiClientCallback",null,null,null,mxClient.IS_SVG):"undefined"===typeof window.gapi&&(window.DriveClient=null)}"0"!=urlParams.math&& -Editor.initMath();if("1"==urlParams.configure){var l=window.opener||window.parent,n=function(a){if(a.source==l)try{var b=JSON.parse(a.data);null!=b&&"configure"==b.action&&(mxEvent.removeListener(window,"message",n),Editor.configure(b.config,!0),mxSettings.load(),d())}catch(v){null!=window.console&&console.log("Error in configuration: "+v)}};mxEvent.addListener(window,"message",n);l.postMessage(JSON.stringify({event:"load"}),"*")}else d()};mxUtils.extend(App,EditorUi); +urlParams.tr)&&(0>navigator.userAgent.indexOf("MSIE")||10<=document.documentMode)?mxscript(App.TRELLO_JQUERY_URL,function(){mxscript(App.TRELLO_URL,function(){DrawTrelloClientCallback()})}):"undefined"===typeof window.Trello&&(window.TrelloClient=null)}null!=a&&a(b);"0"!=urlParams.chrome&&"1"==urlParams.test&&(EditorUi.debug("Started in "+((new Date).getTime()-t0.getTime())+"ms"),null!=urlParams["export"]&&EditorUi.debug("Export:",EXPORT_URL))},function(a){a=document.getElementById("geStatus");null!= +a&&(a.innerHTML="Error loading page. <a>Please try refreshing.</a>",a.getElementsByTagName("a")[0].onclick=function(){mxLanguage="en";b(mxResources.getDefaultBundle(RESOURCE_BASE,mxLanguage)||mxResources.getSpecialBundle(RESOURCE_BASE,mxLanguage))})})}function d(){mxResources.loadDefaultBundle=!1;b(mxResources.getDefaultBundle(RESOURCE_BASE,mxLanguage)||mxResources.getSpecialBundle(RESOURCE_BASE,mxLanguage))}window.onerror=function(a,b,c,d,e){EditorUi.logError(a,b,c,d,e)};if("1"==urlParams.embed|| +"1"==urlParams.lightbox){var g=document.getElementById("geInfo");null!=g&&g.parentNode.removeChild(g)}if(null!=window.mxscript){if("1"==urlParams.offline||"1"==urlParams.appcache)mxscript("js/shapes.min.js"),mxscript("js/stencils.min.js"),mxscript("js/extensions.min.js"),g=document.createElement("iframe"),g.setAttribute("width","0"),g.setAttribute("height","0"),g.setAttribute("src","offline.html"),document.body.appendChild(g);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||"auto"!=DrawioFile.SYNC|| +mxscript(App.PUSHER_URL);if("0"!=urlParams.plugins&&"1"!=urlParams.offline){var g=null!=mxSettings.settings?mxSettings.getPlugins():null,e={},k=urlParams.p;App.initPluginCallback();if(null!=k)for(var m=k.split(";"),k=0;k<m.length;k++){var n=App.pluginRegistry[m[k]];null!=n&&null==e[n]?(e[n]=!0,"undefined"===typeof window.drawDevUrl?mxscript(n):mxscript(drawDevUrl+n)):null!=window.console&&console.log("Unknown plugin:",m[k])}else"0"==urlParams.chrome||EditorUi.isElectronApp||mxscript(App.FOOTER_PLUGIN_URL, +null,null,null,mxClient.IS_SVG);if(null!=g&&0<g.length&&"0"!=urlParams.plugins){for(var m=window.location.protocol+"//"+window.location.host,q=!0,k=0;k<g.length&&q;k++)"/"!=g[k].charAt(0)&&g[k].substring(0,m.length)!=m&&(q=!1);if(q||mxUtils.confirm(mxResources.replacePlaceholders("The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n",[g.join("\n")]).replace(/\\n/g, +"\n")))for(k=0;k<g.length;k++)try{null==e[g[k]]&&(e[n]=!0,mxscript(g[k]))}catch(p){}}}"function"===typeof window.DriveClient&&"undefined"===typeof gapi&&("1"!=urlParams.embed&&"0"!=urlParams.gapi||"1"==urlParams.embed&&"1"==urlParams.gapi)&&isSvgBrowser&&isLocalStorage&&(null==document.documentMode||10<=document.documentMode)?mxscript("https://apis.google.com/js/api.js?onload=DrawGapiClientCallback",null,null,null,mxClient.IS_SVG):"undefined"===typeof window.gapi&&(window.DriveClient=null)}"0"!=urlParams.math&& +Editor.initMath();if("1"==urlParams.configure){var f=window.opener||window.parent,l=function(a){if(a.source==f)try{var b=JSON.parse(a.data);null!=b&&"configure"==b.action&&(mxEvent.removeListener(window,"message",l),Editor.configure(b.config,!0),mxSettings.load(),d())}catch(u){null!=window.console&&console.log("Error in configuration: "+u)}};mxEvent.addListener(window,"message",l);f.postMessage(JSON.stringify({event:"load"}),"*")}else d()};mxUtils.extend(App,EditorUi); App.prototype.defaultUserPicture="https://lh3.googleusercontent.com/-HIzvXUy6QUY/AAAAAAAAAAI/AAAAAAAAAAA/giuR7PQyjEk/photo.jpg?sz=30";App.prototype.shareImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowOTgwMTE3NDA3MjA2ODExODhDNkFGMDBEQkQ0RTgwOSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxMjU2NzdEMTcwRDIxMUUxQjc0MDkxRDhCNUQzOEFGRCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxMjU2NzdEMDcwRDIxMUUxQjc0MDkxRDhCNUQzOEFGRCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowNjgwMTE3NDA3MjA2ODExODcxRkM4MUY1OTFDMjQ5OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowNzgwMTE3NDA3MjA2ODExODhDNkFGMDBEQkQ0RTgwOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PrM/fs0AAADgSURBVHjaYmDAA/7//88MwgzkAKDGFiD+BsQ/QWxSNaf9RwN37twpI8WAS+gGfP78+RpQSoRYA36iG/D379+vQClNdLVMOMz4gi7w79+/n0CKg1gD9qELvH379hzIHGK9oA508ieY8//8+fO5rq4uFCilRKwL1JmYmNhhHEZGRiZ+fn6Q2meEbDYG4u3/cYCfP38uA7kOm0ZOIJ7zn0jw48ePPiDFhmzArv8kgi9fvuwB+w5qwH9ykjswbFSZyM4sEMDPBDTlL5BxkFSd7969OwZ2BZKYGhDzkmjOJ4AAAwBhpRqGnEFb8QAAAABJRU5ErkJggg=="; App.prototype.chevronUpImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDg2NEE3NUY1MUVBMTFFM0I3MUVEMTc0N0YyOUI4QzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDg2NEE3NjA1MUVBMTFFM0I3MUVEMTc0N0YyOUI4QzEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0ODY0QTc1RDUxRUExMUUzQjcxRUQxNzQ3RjI5QjhDMSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0ODY0QTc1RTUxRUExMUUzQjcxRUQxNzQ3RjI5QjhDMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pg+qUokAAAAMUExURQAAANnZ2b+/v////5bgre4AAAAEdFJOU////wBAKqn0AAAAL0lEQVR42mJgRgMMRAswMKAKMDDARBjg8lARBoR6KImkH0wTbygT6YaS4DmAAAMAYPkClOEDDD0AAAAASUVORK5CYII=": IMAGE_PATH+"/chevron-up.png"; @@ -8571,32 +8578,32 @@ typeof window.Trello?(this.trello=new TrelloClient(this),this.trello.addListener "420247213240"==this.drive.appId&&this.editor.addListener("fileLoaded",mxUtils.bind(this,function(){var a=this.getCurrentFile();null!=a&&a.constructor==DriveFile&&(a=document.getElementById("geFooterItem2"),null!=a&&(a.innerHTML='<a href="https://support.draw.io/display/DO/2014/11/27/Switching+application+in+Google+Drive" target="_blank" title="IMPORTANT NOTICE">IMPORTANT NOTICE</a>'))}));this.drive.addListener("userChanged",mxUtils.bind(this,function(){this.updateUserElement();this.restoreLibraries(); this.checkLicense()}));this.fireEvent(new mxEventObject("clientLoaded","client",this.drive))});null!=window.DrawGapiClientCallback?(gapi.load(("0"!=urlParams.picker?"picker,":"")+"auth:"+App.GOOGLE_APIS,mxUtils.bind(this,function(b){null!=gapi.client&&gapi.client.load("drive","v2",mxUtils.bind(this,function(){gapi.auth.init(mxUtils.bind(this,function(){null!=gapi.client.drive&&a()}))}))})),window.DrawGapiClientCallback=null):a()}else null==window.DrawGapiClientCallback&&(window.DrawGapiClientCallback= b)});b()}if("1"!=urlParams.embed||"1"==urlParams.db){var d=mxUtils.bind(this,function(){"function"===typeof Dropbox&&"undefined"!==typeof Dropbox.choose?(window.DrawDropboxClientCallback=null,this.dropbox=new DropboxClient(this),this.dropbox.addListener("userChanged",mxUtils.bind(this,function(){this.updateUserElement();this.restoreLibraries()})),this.fireEvent(new mxEventObject("clientLoaded","client",this.dropbox))):null==window.DrawDropboxClientCallback&&(window.DrawDropboxClientCallback=d)}); -d()}"1"!=urlParams.embed?(this.bg=this.createBackground(),document.body.appendChild(this.bg),this.diagramContainer.style.visibility="hidden",this.formatContainer.style.visibility="hidden",this.hsplit.style.display="none",this.sidebarContainer.style.display="none",this.sidebarFooterContainer.style.display="none","1"==urlParams.local?this.setMode(App.MODE_DEVICE):this.mode=App.mode):null!=this.menubar&&(this.menubar.container.style.paddingTop="0px");this.updateHeader();null!=this.menubar&&(this.buttonContainer= -document.createElement("div"),this.buttonContainer.style.display="inline-block",this.buttonContainer.style.paddingRight="48px",this.buttonContainer.style.position="absolute",this.buttonContainer.style.right="0px",this.menubar.container.appendChild(this.buttonContainer));"atlas"==uiTheme&&null!=this.menubar&&(null!=this.toggleElement&&(this.toggleElement.click(),this.toggleElement.style.display="none"),this.icon=document.createElement("img"),this.icon.setAttribute("src",IMAGE_PATH+"/logo-flat-small.png"), -this.icon.setAttribute("title",mxResources.get("draw.io")),this.icon.style.paddingTop="11px",this.icon.style.marginLeft="4px",this.icon.style.marginRight="6px",mxClient.IS_QUIRKS&&(this.icon.style.marginTop="12px"),this.menubar.container.insertBefore(this.icon,this.menubar.container.firstChild))}; -App.prototype.isDriveDomain=function(){return"0"!=urlParams.drive&&("test.draw.io"==window.location.hostname||"cdn.draw.io"==window.location.hostname||"www.draw.io"==window.location.hostname||"drive.draw.io"==window.location.hostname||"jgraph.github.io"==window.location.hostname)};App.prototype.isLegacyDriveDomain=function(){return 0==urlParams.drive||"legacy.draw.io"==window.location.hostname}; -App.prototype.getPusher=function(){null==this.pusher&&"function"===typeof window.Pusher&&(this.pusher=new Pusher(App.PUSHER_KEY,{cluster:App.PUSHER_CLUSTER,encrypted:!0}));return this.pusher}; +d()}if("1"!=urlParams.embed){this.bg=this.createBackground();document.body.appendChild(this.bg);this.diagramContainer.style.visibility="hidden";this.formatContainer.style.visibility="hidden";this.hsplit.style.display="none";this.sidebarContainer.style.display="none";this.sidebarFooterContainer.style.display="none";"1"==urlParams.local?this.setMode(App.MODE_DEVICE):this.mode=App.mode;var g=!0,e=window.setTimeout(mxUtils.bind(this,function(){g=!1;EditorUi.logEvent({category:"Cache",action:"alive",label:408})}), +this.timeout),k=(new Date).getTime();mxUtils.get(EditorUi.cacheUrl+"?alive",mxUtils.bind(this,function(a){window.clearTimeout(e);g&&EditorUi.logEvent({category:"Cache",action:"alive",label:a.getStatus()+"."+((new Date).getTime()-k)})}))}else null!=this.menubar&&(this.menubar.container.style.paddingTop="0px");this.updateHeader();null!=this.menubar&&(this.buttonContainer=document.createElement("div"),this.buttonContainer.style.display="inline-block",this.buttonContainer.style.paddingRight="48px",this.buttonContainer.style.position= +"absolute",this.buttonContainer.style.right="0px",this.menubar.container.appendChild(this.buttonContainer));"atlas"==uiTheme&&null!=this.menubar&&(null!=this.toggleElement&&(this.toggleElement.click(),this.toggleElement.style.display="none"),this.icon=document.createElement("img"),this.icon.setAttribute("src",IMAGE_PATH+"/logo-flat-small.png"),this.icon.setAttribute("title",mxResources.get("draw.io")),this.icon.style.paddingTop="11px",this.icon.style.marginLeft="4px",this.icon.style.marginRight="6px", +mxClient.IS_QUIRKS&&(this.icon.style.marginTop="12px"),this.menubar.container.insertBefore(this.icon,this.menubar.container.firstChild))};App.prototype.isDriveDomain=function(){return"0"!=urlParams.drive&&("test.draw.io"==window.location.hostname||"cdn.draw.io"==window.location.hostname||"www.draw.io"==window.location.hostname||"drive.draw.io"==window.location.hostname||"jgraph.github.io"==window.location.hostname)}; +App.prototype.isLegacyDriveDomain=function(){return 0==urlParams.drive||"legacy.draw.io"==window.location.hostname};App.prototype.getPusher=function(){null==this.pusher&&"function"===typeof window.Pusher&&(this.pusher=new Pusher(App.PUSHER_KEY,{cluster:App.PUSHER_CLUSTER,encrypted:!0}));return this.pusher}; App.prototype.checkLicense=function(){var a=this.drive.getUser(),c=("1"==urlParams.dev?urlParams.lic:null)||(null!=a?a.email:null);if(!this.isOffline()&&!this.editor.chromeless&&null!=c){var b=c.lastIndexOf("@"),d=c;0<=b&&(d=c.substring(b+1),c=this.crc32(c.substring(0,b))+"@"+d);mxUtils.post("/license","domain="+encodeURIComponent(d)+"&email="+encodeURIComponent(c)+"&ds="+encodeURIComponent(a.displayName)+"&lc="+encodeURIComponent(a.locale)+"&ts="+(new Date).getTime(),mxUtils.bind(this,function(a){}))}}; -App.prototype.handleLicense=function(a,c){var b=document.getElementById("geFooter"),d=null;if(null!=b&&null!=a)if(d=a.expiry,null!=a.footer)b.innerHTML=decodeURIComponent(a.footer);else if(this.hideFooter(),null!=d&&"never"!=d){var f=new Date(Date.parse(d)),h=Math.round((f-Date.now())/864E5);if(90>h){var k="https://support.draw.io/display/DKB/draw.io+footer+state+that+license+is+expiring+on+Google+For+Work+account?domain="+encodeURIComponent(c);b.style.height="100%";b.style.margin="0px";b.style.display= -"";0>h?(this.footerHeight=80,b.innerHTML='<table height="100%"><tr><td valign="middle" align="center" class="geStatusAlert geBlink"><a href="'+k+'" style="padding-top:16px;" target="_blank"><img border="0" src="'+mxGraph.prototype.warningImage.src+'" align="top" style="margin-right:6px">'+mxResources.get("licenseHasExpired",[c,f.toLocaleDateString()])+"</a></td></tr></table>"):(this.footerHeight=46,b.innerHTML='<table height="100%"><tr><td valign="middle" align="center" class="geStatusAlert"><a href="'+ -k+'" target="_blank"><img border="0" src="'+mxGraph.prototype.warningImage.src+'" align="top" style="margin-right:6px">'+mxResources.get("licenseWillExpire",[c,f.toLocaleDateString()])+"</a></td></tr></table>");this.refresh()}}return d};App.prototype.getEditBlankXml=function(){var a=this.getCurrentFile();return null!=a&&this.editor.isChromelessView()&&this.editor.graph.isLightboxView()?a.getData():this.getFileData(!0)}; +App.prototype.handleLicense=function(a,c){var b=document.getElementById("geFooter"),d=null;if(null!=b&&null!=a)if(d=a.expiry,null!=a.footer)b.innerHTML=decodeURIComponent(a.footer);else if(this.hideFooter(),null!=d&&"never"!=d){var g=new Date(Date.parse(d)),e=Math.round((g-Date.now())/864E5);if(90>e){var k="https://support.draw.io/display/DKB/draw.io+footer+state+that+license+is+expiring+on+Google+For+Work+account?domain="+encodeURIComponent(c);b.style.height="100%";b.style.margin="0px";b.style.display= +"";0>e?(this.footerHeight=80,b.innerHTML='<table height="100%"><tr><td valign="middle" align="center" class="geStatusAlert geBlink"><a href="'+k+'" style="padding-top:16px;" target="_blank"><img border="0" src="'+mxGraph.prototype.warningImage.src+'" align="top" style="margin-right:6px">'+mxResources.get("licenseHasExpired",[c,g.toLocaleDateString()])+"</a></td></tr></table>"):(this.footerHeight=46,b.innerHTML='<table height="100%"><tr><td valign="middle" align="center" class="geStatusAlert"><a href="'+ +k+'" target="_blank"><img border="0" src="'+mxGraph.prototype.warningImage.src+'" align="top" style="margin-right:6px">'+mxResources.get("licenseWillExpire",[c,g.toLocaleDateString()])+"</a></td></tr></table>");this.refresh()}}return d};App.prototype.getEditBlankXml=function(){var a=this.getCurrentFile();return null!=a&&this.editor.isChromelessView()&&this.editor.graph.isLightboxView()?a.getData():this.getFileData(!0)}; App.prototype.updateActionStates=function(){EditorUi.prototype.updateActionStates.apply(this,arguments);var a=this.getCurrentFile();this.actions.get("revisionHistory").setEnabled(null!=a&&(a.constructor==DriveFile&&a.isEditable()||a.constructor==DropboxFile))};App.prototype.updateDraft=function(){isLocalStorage&&null!=localStorage&&localStorage.setItem(".draft",JSON.stringify({modified:(new Date).getTime(),data:this.getFileData()}))};App.prototype.getDraft=function(){return null}; App.prototype.addRecent=function(a){if(isLocalStorage&&null!=localStorage){var c=this.getRecent();if(null==c)c=[];else for(var b=0;b<c.length;b++)c[b].id==a.id&&c.splice(b,1);null!=c&&(c.unshift(a),c=c.slice(0,10),localStorage.setItem(".recent",JSON.stringify(c)))}};App.prototype.getRecent=function(){if(isLocalStorage&&null!=localStorage){try{var a=localStorage.getItem(".recent");if(null!=a)return JSON.parse(a)}catch(c){}return null}}; App.prototype.resetRecent=function(a){if(isLocalStorage&&null!=localStorage)try{localStorage.removeItem(".recent")}catch(c){}};App.prototype.removeDraft=function(){if(isLocalStorage&&null!=localStorage&&"0"==urlParams.splash)try{localStorage.removeItem(".draft")}catch(a){}}; App.prototype.onBeforeUnload=function(){if("1"==urlParams.embed&&this.editor.modified)return mxResources.get("allChangesLost");var a=this.getCurrentFile();if(null!=a)if(a.constructor!=LocalFile||""!=a.getHash()||a.isModified()||"1"==urlParams.nowarn||this.isDiagramEmpty()||null!=urlParams.url||this.editor.isChromelessView()){if(a.isModified())return mxResources.get("allChangesLost");a.close(!0)}else return mxResources.get("ensureDataSaved")}; App.prototype.updateDocumentTitle=function(){if(!this.editor.graph.isLightboxView()){var a=this.editor.appName,c=this.getCurrentFile();this.isOfflineApp()&&(a+=" app");null!=c&&(a=(null!=c.getTitle()?c.getTitle():this.defaultFilename)+" - "+a);document.title=a}};App.prototype.createCrcTable=function(){for(var a=[],c,b=0;256>b;b++){c=b;for(var d=0;8>d;d++)c=c&1?3988292384^c>>>1:c>>>1;a[b]=c}return a}; -App.prototype.getThumbnail=function(a,c){var b=!1;try{null==this.thumbImageCache&&(this.thumbImageCache={});var d=this.editor.graph;if(null!=this.pages&&this.currentPage!=this.pages[0]){var d=this.createTemporaryGraph(d.getStylesheet()),f=d.getGlobalVariable,h=this.pages[0];d.getGlobalVariable=function(a){return"page"==a?h.getName():"pagenumber"==a?1:f.apply(this,arguments)};document.body.appendChild(d.container);d.model.setRoot(h.root)}if(mxClient.IS_CHROMEAPP||!d.mathEnabled&&this.useCanvasForExport)this.exportToCanvas(mxUtils.bind(this, -function(a){d!=this.editor.graph&&d.container.parentNode.removeChild(d.container);c(a)}),a,this.thumbImageCache,"#ffffff",function(){c()},null,null,null,null,null,null,d),b=!0;else if(this.canvasSupported&&null!=this.getCurrentFile()){var k=document.createElement("canvas"),m=d.getGraphBounds(),p=a/m.width,p=Math.min(1,Math.min(3*a/(4*m.height),p)),g=Math.floor(m.x),l=Math.floor(m.y);k.setAttribute("width",Math.ceil(p*(m.width+4)));k.setAttribute("height",Math.ceil(p*(m.height+4)));var n=k.getContext("2d"); -n.scale(p,p);n.translate(-g,-l);var q=d.background;if(null==q||""==q||q==mxConstants.NONE)q="#ffffff";n.save();n.fillStyle=q;n.fillRect(g,l,Math.ceil(m.width+4),Math.ceil(m.height+4));n.restore();var t=new mxJsCanvas(k),v=new mxAsyncCanvas(this.thumbImageCache);t.images=this.thumbImageCache.images;var w=new mxImageExport;w.drawShape=function(a,b){a.shape instanceof mxShape&&a.shape.checkBounds()&&(b.save(),b.translate(.5,.5),a.shape.paint(b),b.translate(-.5,-.5),b.restore())};w.drawText=function(a, -b){};w.drawState(d.getView().getState(d.model.root),v);v.finish(mxUtils.bind(this,function(){w.drawState(d.getView().getState(d.model.root),t);d!=this.editor.graph&&d.container.parentNode.removeChild(d.container);c(k)}));b=!0}}catch(y){d!=this.editor.graph&&d.container.parentNode.removeChild(d.container)}return b}; +App.prototype.getThumbnail=function(a,c){var b=!1;try{null==this.thumbImageCache&&(this.thumbImageCache={});var d=this.editor.graph;if(null!=this.pages&&this.currentPage!=this.pages[0]){var d=this.createTemporaryGraph(d.getStylesheet()),g=d.getGlobalVariable,e=this.pages[0];d.getGlobalVariable=function(a){return"page"==a?e.getName():"pagenumber"==a?1:g.apply(this,arguments)};document.body.appendChild(d.container);d.model.setRoot(e.root)}if(mxClient.IS_CHROMEAPP||!d.mathEnabled&&this.useCanvasForExport)this.exportToCanvas(mxUtils.bind(this, +function(a){d!=this.editor.graph&&d.container.parentNode.removeChild(d.container);c(a)}),a,this.thumbImageCache,"#ffffff",function(){c()},null,null,null,null,null,null,d),b=!0;else if(this.canvasSupported&&null!=this.getCurrentFile()){var k=document.createElement("canvas"),m=d.getGraphBounds(),n=a/m.width,n=Math.min(1,Math.min(3*a/(4*m.height),n)),q=Math.floor(m.x),f=Math.floor(m.y);k.setAttribute("width",Math.ceil(n*(m.width+4)));k.setAttribute("height",Math.ceil(n*(m.height+4)));var l=k.getContext("2d"); +l.scale(n,n);l.translate(-q,-f);var p=d.background;if(null==p||""==p||p==mxConstants.NONE)p="#ffffff";l.save();l.fillStyle=p;l.fillRect(q,f,Math.ceil(m.width+4),Math.ceil(m.height+4));l.restore();var t=new mxJsCanvas(k),u=new mxAsyncCanvas(this.thumbImageCache);t.images=this.thumbImageCache.images;var x=new mxImageExport;x.drawShape=function(a,b){a.shape instanceof mxShape&&a.shape.checkBounds()&&(b.save(),b.translate(.5,.5),a.shape.paint(b),b.translate(-.5,-.5),b.restore())};x.drawText=function(a, +b){};x.drawState(d.getView().getState(d.model.root),u);u.finish(mxUtils.bind(this,function(){x.drawState(d.getView().getState(d.model.root),t);d!=this.editor.graph&&d.container.parentNode.removeChild(d.container);c(k)}));b=!0}}catch(z){d!=this.editor.graph&&d.container.parentNode.removeChild(d.container)}return b}; App.prototype.createBackground=function(){var a=this.createDiv("background");a.style.position="absolute";a.style.background="white";a.style.left="0px";a.style.top="0px";a.style.bottom="0px";a.style.right="0px";mxUtils.setOpacity(a,100);mxClient.IS_QUIRKS&&new mxDivResizer(a);return a}; -(function(){var a=EditorUi.prototype.setMode;App.prototype.setMode=function(c,b){a.apply(this,arguments);null!=this.mode&&(Editor.useLocalStorage=this.mode==App.MODE_BROWSER);if(b)if(isLocalStorage)localStorage.setItem(".mode",c);else if("undefined"!=typeof Storage){var d=new Date;d.setYear(d.getFullYear()+1);document.cookie="MODE="+c+"; expires="+d.toUTCString()}null!=this.appIcon&&(d=this.getCurrentFile(),c=null!=d?d.getMode():null,c==App.MODE_GOOGLE?(this.appIcon.setAttribute("title",mxResources.get("openIt", -[mxResources.get("googleDrive")])),this.appIcon.style.cursor="pointer"):c==App.MODE_DROPBOX?(this.appIcon.setAttribute("title",mxResources.get("openIt",[mxResources.get("dropbox")])),this.appIcon.style.cursor="pointer"):c==App.MODE_ONEDRIVE?(this.appIcon.setAttribute("title",mxResources.get("openIt",[mxResources.get("oneDrive")])),this.appIcon.style.cursor="pointer"):(this.appIcon.removeAttribute("title"),this.appIcon.style.cursor="default"))}})(); +(function(){var a=EditorUi.prototype.setMode;App.prototype.setMode=function(c,b){a.apply(this,arguments);null!=this.mode&&(Editor.useLocalStorage=this.mode==App.MODE_BROWSER);if(null!=this.appIcon){var d=this.getCurrentFile();c=null!=d?d.getMode():c;c==App.MODE_GOOGLE?(this.appIcon.setAttribute("title",mxResources.get("openIt",[mxResources.get("googleDrive")])),this.appIcon.style.cursor="pointer"):c==App.MODE_DROPBOX?(this.appIcon.setAttribute("title",mxResources.get("openIt",[mxResources.get("dropbox")])), +this.appIcon.style.cursor="pointer"):c==App.MODE_ONEDRIVE?(this.appIcon.setAttribute("title",mxResources.get("openIt",[mxResources.get("oneDrive")])),this.appIcon.style.cursor="pointer"):(this.appIcon.removeAttribute("title"),this.appIcon.style.cursor="default")}if(b)try{if(isLocalStorage)localStorage.setItem(".mode",c);else if("undefined"!=typeof Storage){var g=new Date;g.setYear(g.getFullYear()+1);document.cookie="MODE="+c+"; expires="+g.toUTCString()}}catch(e){}}})(); App.prototype.appIconClicked=function(a){if(mxEvent.isAltDown(a))this.showSplash(!0);else{var c=this.getCurrentFile(),b=null!=c?c.getMode():null;b==App.MODE_GOOGLE?null!=c.desc&&null!=c.desc.parents&&0<c.desc.parents.length?this.openLink("https://drive.google.com/drive/folders/"+c.desc.parents[0].id):this.openLink("https://drive.google.com/?authuser=0"):b==App.MODE_DROPBOX?this.openLink("https://www.dropbox.com/"):b==App.MODE_ONEDRIVE?this.openLink("https://onedrive.live.com/"):b==App.MODE_TRELLO? this.openLink("https://trello.com/"):b==App.MODE_GITHUB&&(null!=c&&c.constructor==GitHubFile?this.openLink(c.meta.html_url):this.openLink("https://github.com/"))}mxEvent.consume(a)};App.prototype.clearMode=function(){if(isLocalStorage)localStorage.removeItem(".mode");else if("undefined"!=typeof Storage){var a=new Date;a.setYear(a.getFullYear()-1);document.cookie="MODE=; expires="+a.toUTCString()}}; App.prototype.getDiagramId=function(){var a=window.location.hash;null!=a&&0<a.length&&(a=a.substring(1));return a}; -App.prototype.open=function(){try{if(null!=window.opener){var a=urlParams.create;null!=a&&(a=decodeURIComponent(a));if(null!=a&&0<a.length&&"http://"!=a.substring(0,7)&&"https://"!=a.substring(0,8)){var c=mxUtils.parseXml(window.opener[a]);this.editor.setGraphXml(c.documentElement)}else null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(a,c,f){this.spinner.stop();null==c&&(c=urlParams.title,f=!0,c=null!=c?decodeURIComponent(c):this.defaultFilename);0<(this.useCanvasForExport? --1:".png"==c.substring(c.length-4))&&(c=c.substring(0,c.length-4)+".xml");this.fileLoaded(mxClient.IS_IOS?new StorageFile(this,a,c):new LocalFile(this,a,c,f))}))}}catch(b){}}; +App.prototype.open=function(){try{if(null!=window.opener){var a=urlParams.create;null!=a&&(a=decodeURIComponent(a));if(null!=a&&0<a.length&&"http://"!=a.substring(0,7)&&"https://"!=a.substring(0,8)){var c=mxUtils.parseXml(window.opener[a]);this.editor.setGraphXml(c.documentElement)}else null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(a,c,g){this.spinner.stop();null==c&&(c=urlParams.title,g=!0,c=null!=c?decodeURIComponent(c):this.defaultFilename);0<(this.useCanvasForExport? +-1:".png"==c.substring(c.length-4))&&(c=c.substring(0,c.length-4)+".xml");this.fileLoaded(mxClient.IS_IOS?new StorageFile(this,a,c):new LocalFile(this,a,c,g))}))}}catch(b){}}; App.prototype.loadGapi=function(a){"undefined"!==typeof gapi&&gapi.load(("0"!=urlParams.picker?"picker,":"")+"auth:"+App.GOOGLE_APIS,mxUtils.bind(this,function(c){null==gapi.client?(this.mode=this.drive=null,a()):gapi.client.load("drive","v2",mxUtils.bind(this,function(){gapi.auth.init(mxUtils.bind(this,function(){null==gapi.client.drive&&(this.mode=this.drive=null);a()}))}))}))}; App.prototype.load=function(){if("1"!=urlParams.embed){if(this.spinner.spin(document.body,mxResources.get("starting"))){try{this.stateArg=null!=urlParams.state&&null!=this.drive?JSON.parse(decodeURIComponent(urlParams.state)):null}catch(a){}this.editor.graph.setEnabled(null!=this.getCurrentFile());null!=window.location.hash&&0!=window.location.hash.length||null==this.drive||null==this.stateArg||null==this.stateArg.userId||this.drive.setUserId(this.stateArg.userId);null!=urlParams.fileId?(window.location.hash= "G"+urlParams.fileId,window.location.search=this.getSearch(["fileId"])):null==this.drive?(this.mode==App.MODE_GOOGLE&&(this.mode=null),this.start()):this.loadGapi(mxUtils.bind(this,function(){this.start()}))}}else this.restoreLibraries(),"1"==urlParams.gapi&&this.loadGapi(function(){})}; @@ -8607,12 +8614,12 @@ mxResources.get("close");c.appendChild(a);mxEvent.addListener(a,"click",function App.prototype.start=function(){this.bg.parentNode.removeChild(this.bg);this.restoreLibraries();this.spinner.stop();try{if("1"!=urlParams.client&&"1"!=urlParams.embed&&mxEvent.addListener(window,"hashchange",mxUtils.bind(this,function(a){try{var b=this.getDiagramId(),c=this.getCurrentFile();null!=c&&c.getHash()==b||this.loadFile(b,!0)}catch(m){null!=document.body&&this.handleError(m,mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){var a=this.getCurrentFile();window.location.hash=null!= a?a.getHash():""}))}})),(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.url)this.loadFile("U"+urlParams.url,!0);else if(null==this.getCurrentFile()){var a=mxUtils.bind(this,function(){if("1"==urlParams.client&&(null==window.location.hash||0==window.location.hash.length||"#P"==window.location.hash.substring(0,2))){var a=mxUtils.bind(this,function(a){"data:image/png;base64,"==a.substring(0,22)&&(a=this.extractGraphModelFromPng(a));var b=urlParams.title,b=null!=b?decodeURIComponent(b): this.defaultFilename;a=new LocalFile(this,a,b,!0);null!=window.location.hash&&"#P"==window.location.hash.substring(0,2)&&(a.getHash=function(){return window.location.hash.substring(1)});this.fileLoaded(a);this.getCurrentFile().setModified(!this.editor.chromeless)}),b=window.opener||window.parent;if(b!=window){var c=urlParams.create;null!=c?a(b[decodeURIComponent(c)]):(c=urlParams.data,null!=c?a(decodeURIComponent(c)):this.installMessageHandler(mxUtils.bind(this,function(c,d){d.source==b&&a(c)})))}}else if(null== -this.dialog)if("1"==urlParams.demo)c=Editor.useLocalStorage,this.createFile(this.defaultFilename,null,null,null,null,null,null,!0),Editor.useLocalStorage=c;else{c=!1;try{c=null!=window.opener&&null!=window.opener.openFile}catch(g){}if(c)this.spinner.spin(document.body,mxResources.get("loading"));else if(c=this.getDiagramId(),"0"!=urlParams.splash||null!=c&&0!=c.length)this.loadFile(c);else if(!mxClient.IS_CHROMEAPP){var d=this.getDraft(),p=null!=d?d.data:this.getFileData(),c=Editor.useLocalStorage; -this.createFile(this.defaultFilename,p,null,null,null,null,null,!0);Editor.useLocalStorage=c;null!=d&&(c=this.getCurrentFile(),null!=c&&c.addUnsavedStatus())}}}),c=decodeURIComponent(urlParams.create||"");if((null==window.location.hash||1>=window.location.hash.length)&&null!=c&&0<c.length&&this.spinner.spin(document.body,mxResources.get("loading"))){var b=mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("reconnecting"))&&(window.location.search=this.getSearch(["create", +this.dialog)if("1"==urlParams.demo)c=Editor.useLocalStorage,this.createFile(this.defaultFilename,null,null,null,null,null,null,!0),Editor.useLocalStorage=c;else{c=!1;try{c=null!=window.opener&&null!=window.opener.openFile}catch(q){}if(c)this.spinner.spin(document.body,mxResources.get("loading"));else if(c=this.getDiagramId(),"0"!=urlParams.splash||null!=c&&0!=c.length)this.loadFile(c);else if(!mxClient.IS_CHROMEAPP){var d=this.getDraft(),n=null!=d?d.data:this.getFileData(),c=Editor.useLocalStorage; +this.createFile(this.defaultFilename,n,null,null,null,null,null,!0);Editor.useLocalStorage=c;null!=d&&(c=this.getCurrentFile(),null!=c&&c.addUnsavedStatus())}}}),c=decodeURIComponent(urlParams.create||"");if((null==window.location.hash||1>=window.location.hash.length)&&null!=c&&0<c.length&&this.spinner.spin(document.body,mxResources.get("loading"))){var b=mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("reconnecting"))&&(window.location.search=this.getSearch(["create", "title"]))}),d=mxUtils.bind(this,function(a){this.spinner.stop();if("0"!=urlParams.splash){this.fileLoaded(new LocalFile(this,a,null));this.editor.graph.setEnabled(!1);this.mode=urlParams.mode;var b=urlParams.title,b=null!=b?decodeURIComponent(b):this.defaultFilename;a=this.getServiceCount(!0);var c=4>=a?4:3,b=new CreateDialog(this,b,mxUtils.bind(this,function(a,b){if(null==b){this.hideDialog();var c=Editor.useLocalStorage;this.createFile(0<a.length?a:this.defaultFilename,this.getFileData(),null, null,null,!0,null,!0);Editor.useLocalStorage=c}else this.pickFolder(b,mxUtils.bind(this,function(c){this.createFile(a,this.getFileData(!0),null,b,null,!0,c)}))}),null,null,null,null,"1"==urlParams.browser,null,null,!0,c);this.showDialog(b.container,380,a>c?390:270,!0,!1,mxUtils.bind(this,function(a){a&&null==this.getCurrentFile()&&this.showSplash()}));b.init()}}),c=decodeURIComponent(c);if("http://"!=c.substring(0,7)&&"https://"!=c.substring(0,8))try{null!=window.opener&&null!=window.opener[c]?d(window.opener[c]): -this.handleError(null,mxResources.get("errorLoadingFile"))}catch(f){this.handleError(f,mxResources.get("errorLoadingFile"))}else this.loadTemplate(c,function(a){d(a)},mxUtils.bind(this,function(){this.handleError(null,mxResources.get("errorLoadingFile"),b)}))}else(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.state&&null!=this.stateArg&&"open"==this.stateArg.action&&null!=this.stateArg.ids&&(window.location.hash="G"+this.stateArg.ids[0]),(null==window.location.hash|| -1>=window.location.hash.length)&&null!=this.drive&&null!=this.stateArg&&"create"==this.stateArg.action?(this.setMode(App.MODE_GOOGLE),this.actions.get("new").funct()):a()}}catch(f){this.handleError(f)}}; +this.handleError(null,mxResources.get("errorLoadingFile"))}catch(g){this.handleError(g,mxResources.get("errorLoadingFile"))}else this.loadTemplate(c,function(a){d(a)},mxUtils.bind(this,function(){this.handleError(null,mxResources.get("errorLoadingFile"),b)}))}else(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.state&&null!=this.stateArg&&"open"==this.stateArg.action&&null!=this.stateArg.ids&&(window.location.hash="G"+this.stateArg.ids[0]),(null==window.location.hash|| +1>=window.location.hash.length)&&null!=this.drive&&null!=this.stateArg&&"create"==this.stateArg.action?(this.setMode(App.MODE_GOOGLE),this.actions.get("new").funct()):a()}}catch(g){this.handleError(g)}}; App.prototype.showSplash=function(a){var c=this.getServiceCount(!0,!0),b=mxUtils.bind(this,function(){var a=new SplashDialog(this);this.showDialog(a.container,340,2>c||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?200:260,!0,!0,mxUtils.bind(this,function(a){a&&!mxClient.IS_CHROMEAPP&&(a=Editor.useLocalStorage,this.createFile(this.defaultFilename,null,null,null,null,null,null,"1"!=urlParams.local),Editor.useLocalStorage=a)}),!0)});if(this.editor.isChromelessView())this.handleError({message:mxResources.get("noFileSelected")}, mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){this.showSplash()}));else if(mxClient.IS_CHROMEAPP||null!=this.mode&&!a)null==urlParams.create&&b();else{a=4==c?2:3;var d=new StorageDialog(this,mxUtils.bind(this,function(){this.hideDialog();b()}),a);this.showDialog(d.container,3>a?260:300,4<=c?420:300,!0,!1);d.init()}}; App.prototype.addLanguageMenu=function(a,c){var b=null;if((!this.isOfflineApp()||mxClient.IS_CHROMEAPP)&&null!=this.menus.get("language")){b=document.createElement("div");b.setAttribute("title",mxResources.get("language"));b.className="geIcon geSprite geSprite-globe";b.style.position="absolute";b.style.cursor="pointer";b.style.bottom="20px";b.style.right="20px";if(c){b.style.direction="rtl";b.style.textAlign="right";b.style.right="24px";var d=document.createElement("span");d.style.display="inline-block"; @@ -8620,64 +8627,62 @@ d.style.fontSize="12px";d.style.margin="5px 24px 0 0";d.style.color="gray";mxUti c.popup(d.x,d.y+b.offsetHeight,null,a);this.setCurrentMenu(c)}));a.appendChild(b)}return b}; App.prototype.pickFile=function(a){a=null!=a?a:this.mode;if(a==App.MODE_GOOGLE)null!=this.drive&&"undefined"!=typeof google&&"undefined"!=typeof google.picker?this.drive.pickFile():this.openLink("https://drive.google.com");else{var c=this.getPeerForMode(a);if(null!=c)c.pickFile();else if(a==App.MODE_DEVICE&&Graph.fileSupport&&(!mxClient.IS_IE&&!mxClient.IS_IE11||0>navigator.appVersion.indexOf("Windows NT 6.1"))){var b=document.createElement("input");b.setAttribute("type","file");mxEvent.addListener(b, "change",mxUtils.bind(this,function(){null!=b.files&&this.openFiles(b.files)}));b.click()}else{this.hideDialog();window.openNew=null!=this.getCurrentFile()&&!this.isDiagramEmpty();window.baseUrl=this.getUrl();window.openKey="open";var d=Editor.useLocalStorage;Editor.useLocalStorage=a==App.MODE_BROWSER;this.openFile();window.openFile.setConsumer(mxUtils.bind(this,function(b,c){this.useCanvasForExport||".png"!=c.substring(c.length-4)||(c=c.substring(0,c.length-4)+".xml");this.fileLoaded(a==App.MODE_BROWSER? -new StorageFile(this,b,c):new LocalFile(this,b,c))}));var f=this.dialog,h=f.close;this.dialog.close=mxUtils.bind(this,function(a){Editor.useLocalStorage=d;h.apply(f,arguments);null==this.getCurrentFile()&&this.showSplash()})}}}; +new StorageFile(this,b,c):new LocalFile(this,b,c))}));var g=this.dialog,e=g.close;this.dialog.close=mxUtils.bind(this,function(a){Editor.useLocalStorage=d;e.apply(g,arguments);null==this.getCurrentFile()&&this.showSplash()})}}}; App.prototype.pickLibrary=function(a){a=null!=a?a:this.mode;if(a==App.MODE_GOOGLE||a==App.MODE_DROPBOX||a==App.MODE_ONEDRIVE||a==App.MODE_GITHUB||a==App.MODE_TRELLO){var c=a==App.MODE_GOOGLE?this.drive:a==App.MODE_ONEDRIVE?this.oneDrive:a==App.MODE_GITHUB?this.gitHub:a==App.MODE_TRELLO?this.trello:this.dropbox;null!=c&&c.pickLibrary(mxUtils.bind(this,function(a,b){if(null!=b)try{this.loadLibrary(b)}catch(k){this.handleError(k,mxResources.get("errorLoadingFile"))}else this.spinner.spin(document.body, mxResources.get("loading"))&&c.getLibrary(a,mxUtils.bind(this,function(a){this.spinner.stop();try{this.loadLibrary(a)}catch(m){this.handleError(m,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(a){this.handleError(a,null!=a?mxResources.get("errorLoadingFile"):null)}))}))}else if(a!=App.MODE_DEVICE||!Graph.fileSupport||mxClient.IS_IE||mxClient.IS_IE11){window.openNew=!1;window.openKey="open";var b=Editor.useLocalStorage;Editor.useLocalStorage=a==App.MODE_BROWSER;window.openFile= new OpenFile(mxUtils.bind(this,function(a){this.hideDialog(a)}));window.openFile.setConsumer(mxUtils.bind(this,function(b,c){try{this.loadLibrary(a==App.MODE_BROWSER?new StorageLibrary(this,b,c):new LocalLibrary(this,b,c))}catch(k){this.handleError(k,mxResources.get("errorLoadingFile"))}}));this.showDialog((new OpenDialog(this)).container,Editor.useLocalStorage?640:360,Editor.useLocalStorage?480:220,!0,!0,function(){Editor.useLocalStorage=b;window.openFile=null})}else{var d=document.createElement("input"); -d.setAttribute("type","file");mxEvent.addListener(d,"change",mxUtils.bind(this,function(){if(null!=d.files)for(var a=0;a<d.files.length;a++)mxUtils.bind(this,function(a){var b=new FileReader;b.onload=mxUtils.bind(this,function(b){try{this.loadLibrary(new LocalLibrary(this,b.target.result,a.name))}catch(p){this.handleError(p,mxResources.get("errorLoadingFile"))}});b.readAsText(a)})(d.files[a])}));d.click()}}; -App.prototype.saveLibrary=function(a,c,b,d,f,h,k){d=null!=d?d:this.mode;f=null!=f?f:!1;h=null!=h?h:!1;var m=this.createLibraryDataFromImages(c),p=mxUtils.bind(this,function(a){this.spinner.stop();null!=k&&k();this.handleError(a,null!=a?mxResources.get("errorSavingFile"):null)});null==b&&d==App.MODE_DEVICE&&(b=new LocalLibrary(this,m,a));if(null==b)this.pickFolder(d,mxUtils.bind(this,function(b){d==App.MODE_GOOGLE&&null!=this.drive&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.drive.insertFile(a, -m,b,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),p,this.drive.libraryMimeType):d==App.MODE_GITHUB&&null!=this.gitHub&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.gitHub.insertLibrary(a,m,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),p,b):d==App.MODE_TRELLO&&null!=this.trello&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.trello.insertLibrary(a,m,mxUtils.bind(this, -function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),p,b):d==App.MODE_DROPBOX&&null!=this.dropbox&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.dropbox.insertLibrary(a,m,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),p,b):d==App.MODE_ONEDRIVE&&null!=this.oneDrive&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.oneDrive.insertLibrary(a,m,mxUtils.bind(this,function(a){this.spinner.stop(); -this.hideDialog(!0);this.libraryLoaded(a,c)}),p,b):d==App.MODE_BROWSER?(b=mxUtils.bind(this,function(){var b=new StorageLibrary(this,m,a);b.saveFile(a,!1,mxUtils.bind(this,function(){this.hideDialog(!0);this.libraryLoaded(b,c)}),p)}),null==localStorage.getItem(a)?b():this.confirm(mxResources.get("replaceIt",[a]),b)):this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})}));else if(f||this.spinner.spin(document.body,mxResources.get("saving"))){b.setData(m);var g=mxUtils.bind(this, -function(){b.save(!0,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);h||this.libraryLoaded(b,c);null!=k&&k()}),p)});if(a!=b.getTitle()){var l=b.getHash();b.rename(a,mxUtils.bind(this,function(a){b.constructor!=LocalLibrary&&l!=b.getHash()&&(mxSettings.removeCustomLibrary(l),mxSettings.addCustomLibrary(b.getHash()));this.removeLibrarySidebar(l);g()}),p)}else g()}}; -App.prototype.saveFile=function(a,c){var b=this.getCurrentFile();if(null!=b){var d=mxUtils.bind(this,function(){this.removeDraft();this.getCurrentFile()==b||b.isModified()||(b.getMode()!=App.MODE_DEVICE?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("allChangesSaved"))):this.editor.setStatus(""));null!=c&&c()});if(a||null==b.getTitle()||null==this.mode){var f=null!=b.getTitle()?b.getTitle():this.defaultFilename,h=!mxClient.IS_IOS||!navigator.standalone,k=this.mode,m=this.getServiceCount(!0); -isLocalStorage&&m++;var p=4>=m?2:6<m?4:3,f=new CreateDialog(this,f,mxUtils.bind(this,function(a,b){null!=a&&0<a.length&&(null==k&&b==App.MODE_DEVICE?(this.setMode(App.MODE_DEVICE),this.save(a,d)):"download"==b?(new LocalFile(this,null,a)).save():"_blank"==b?(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(this.getFileData(!0)),this.openLink(this.getUrl(window.location.pathname),null,!0)):k!=b?this.pickFolder(b,mxUtils.bind(this,function(c){this.createFile(a, -this.getFileData(/(\.xml)$/i.test(a)||0>a.indexOf("."),/(\.svg)$/i.test(a),/(\.html)$/i.test(a)),null,b,d,null==this.mode,c)})):null!=b&&this.save(a,d))}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),null,null,h,this.isOffline()?null:"https://desk.draw.io/support/solutions/articles/16000042485",!0,p);this.showDialog(f.container,460,m>p?390:270,!0,!0);f.init()}else this.save(b.getTitle(),d)}}; +d.setAttribute("type","file");mxEvent.addListener(d,"change",mxUtils.bind(this,function(){if(null!=d.files)for(var a=0;a<d.files.length;a++)mxUtils.bind(this,function(a){var b=new FileReader;b.onload=mxUtils.bind(this,function(b){try{this.loadLibrary(new LocalLibrary(this,b.target.result,a.name))}catch(n){this.handleError(n,mxResources.get("errorLoadingFile"))}});b.readAsText(a)})(d.files[a])}));d.click()}}; +App.prototype.saveLibrary=function(a,c,b,d,g,e,k){d=null!=d?d:this.mode;g=null!=g?g:!1;e=null!=e?e:!1;var m=this.createLibraryDataFromImages(c),n=mxUtils.bind(this,function(a){this.spinner.stop();null!=k&&k();this.handleError(a,null!=a?mxResources.get("errorSavingFile"):null)});null==b&&d==App.MODE_DEVICE&&(b=new LocalLibrary(this,m,a));if(null==b)this.pickFolder(d,mxUtils.bind(this,function(b){d==App.MODE_GOOGLE&&null!=this.drive&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.drive.insertFile(a, +m,b,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),n,this.drive.libraryMimeType):d==App.MODE_GITHUB&&null!=this.gitHub&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.gitHub.insertLibrary(a,m,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),n,b):d==App.MODE_TRELLO&&null!=this.trello&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.trello.insertLibrary(a,m,mxUtils.bind(this, +function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),n,b):d==App.MODE_DROPBOX&&null!=this.dropbox&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.dropbox.insertLibrary(a,m,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),n,b):d==App.MODE_ONEDRIVE&&null!=this.oneDrive&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.oneDrive.insertLibrary(a,m,mxUtils.bind(this,function(a){this.spinner.stop(); +this.hideDialog(!0);this.libraryLoaded(a,c)}),n,b):d==App.MODE_BROWSER?(b=mxUtils.bind(this,function(){var b=new StorageLibrary(this,m,a);b.saveFile(a,!1,mxUtils.bind(this,function(){this.hideDialog(!0);this.libraryLoaded(b,c)}),n)}),null==localStorage.getItem(a)?b():this.confirm(mxResources.get("replaceIt",[a]),b)):this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})}));else if(g||this.spinner.spin(document.body,mxResources.get("saving"))){b.setData(m);var q=mxUtils.bind(this, +function(){b.save(!0,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);e||this.libraryLoaded(b,c);null!=k&&k()}),n)});if(a!=b.getTitle()){var f=b.getHash();b.rename(a,mxUtils.bind(this,function(a){b.constructor!=LocalLibrary&&f!=b.getHash()&&(mxSettings.removeCustomLibrary(f),mxSettings.addCustomLibrary(b.getHash()));this.removeLibrarySidebar(f);q()}),n)}else q()}}; +App.prototype.saveFile=function(a,c){var b=this.getCurrentFile();if(null!=b){var d=mxUtils.bind(this,function(){this.removeDraft();this.getCurrentFile()==b||b.isModified()||(b.getMode()!=App.MODE_DEVICE?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("allChangesSaved"))):this.editor.setStatus(""));null!=c&&c()});if(a||null==b.getTitle()||null==this.mode){var g=null!=b.getTitle()?b.getTitle():this.defaultFilename,e=!mxClient.IS_IOS||!navigator.standalone,k=this.mode,m=this.getServiceCount(!0); +isLocalStorage&&m++;var n=4>=m?2:6<m?4:3,g=new CreateDialog(this,g,mxUtils.bind(this,function(a,b){null!=a&&0<a.length&&(null==k&&b==App.MODE_DEVICE?(this.setMode(App.MODE_DEVICE),this.save(a,d)):"download"==b?(new LocalFile(this,null,a)).save():"_blank"==b?(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(this.getFileData(!0)),this.openLink(this.getUrl(window.location.pathname),null,!0)):k!=b?this.pickFolder(b,mxUtils.bind(this,function(c){this.createFile(a, +this.getFileData(/(\.xml)$/i.test(a)||0>a.indexOf(".")||/(\.drawio)$/i.test(a),/(\.svg)$/i.test(a),/(\.html)$/i.test(a)),null,b,d,null==this.mode,c)})):null!=b&&this.save(a,d))}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),null,null,e,this.isOffline()?null:"https://desk.draw.io/support/solutions/articles/16000042485",!0,n);this.showDialog(g.container,460,m>n?390:270,!0,!0);g.init()}else this.save(b.getTitle(),d)}}; App.prototype.loadTemplate=function(a,c,b){var d=a;this.isCorsEnabledForUrl(d)||(d="t="+(new Date).getTime(),d=PROXY_URL+"?url="+encodeURIComponent(a)+"&"+d);this.loadUrl(d,mxUtils.bind(this,function(d){/(\.vsdx)($|\?)/i.test(a)?this.importVisio(this.base64ToBlob(d.substring(d.indexOf(",")+1)),function(a){c(a)},b,a):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,a)?this.parseFile(new Blob([d],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&& 200<=a.status&&299>=a.status&&"<mxGraphModel"==a.responseText.substring(0,13)&&c(a.responseText)}),a):this.isLucidChartData(d)?this.convertLucidChart(d,mxUtils.bind(this,function(a){c(a)}),mxUtils.bind(this,function(a){b(a)})):(/(\.png)($|\?)/i.test(a)&&(d=this.extractGraphModelFromPng(d)),c(d))}),b,/(\.png)($|\?)/i.test(a)||/(\.vsdx)($|\?)/i.test(a))}; App.prototype.getPeerForMode=function(a){return a==App.MODE_GOOGLE?this.drive:a==App.MODE_GITHUB?this.gitHub:a==App.MODE_DROPBOX?this.dropbox:a==App.MODE_ONEDRIVE?this.oneDrive:a==App.MODE_TRELLO?this.trello:null}; -App.prototype.createFile=function(a,c,b,d,f,h,k,m){d=m?null:null!=d?d:this.mode;if(null!=a&&this.spinner.spin(document.body,mxResources.get("inserting"))){c=null!=c?c:this.emptyDiagramXml;var p=mxUtils.bind(this,function(){this.spinner.stop()}),g=mxUtils.bind(this,function(a){p();null==a&&null==this.getCurrentFile()&&null==this.dialog?this.showSplash():null!=a&&this.handleError(a)});try{if(d==App.MODE_GOOGLE&&null!=this.drive)null==k&&null!=this.stateArg&&null!=this.stateArg.folderId&&(k=this.stateArg.folderId), -this.drive.insertFile(a,c,k,mxUtils.bind(this,function(a){p();this.fileCreated(a,b,h,f)}),g);else if(d==App.MODE_GITHUB&&null!=this.gitHub)this.gitHub.insertFile(a,c,mxUtils.bind(this,function(a){p();this.fileCreated(a,b,h,f)}),g,!1,k);else if(d==App.MODE_TRELLO&&null!=this.trello)this.trello.insertFile(a,c,mxUtils.bind(this,function(a){p();this.fileCreated(a,b,h,f)}),g,!1,k);else if(d==App.MODE_DROPBOX&&null!=this.dropbox)this.dropbox.insertFile(a,c,mxUtils.bind(this,function(a){p();this.fileCreated(a, -b,h,f)}),g);else if(d==App.MODE_ONEDRIVE&&null!=this.oneDrive)this.oneDrive.insertFile(a,c,mxUtils.bind(this,function(a){p();this.fileCreated(a,b,h,f)}),g,!1,k);else if(d==App.MODE_BROWSER){p();var l=mxUtils.bind(this,function(){var d=new StorageFile(this,c,a);d.saveFile(a,!1,mxUtils.bind(this,function(){this.fileCreated(d,b,h,f)}),g)});null==localStorage.getItem(a)?l():this.confirm(mxResources.get("replaceIt",[a]),l,mxUtils.bind(this,function(){null==this.getCurrentFile()&&null==this.dialog&&this.showSplash()}))}else p(), -this.fileCreated(new LocalFile(this,c,a,null==d),b,h,f)}catch(n){p(),this.handleError(n)}}}; -App.prototype.fileCreated=function(a,c,b,d){var f=window.location.pathname;null!=c&&0<c.length&&(f+="?libs="+c);f=this.getUrl(f);a.getMode()!=App.MODE_DEVICE&&(f+="#"+a.getHash());if(this.spinner.spin(document.body,mxResources.get("inserting"))){var h=a.getData(),h=0<h.length?this.editor.extractGraphModel(mxUtils.parseXml(h).documentElement,!0):null,k=window.location.protocol+"//"+window.location.hostname+f,m=h,p=null;null!=h&&/\.svg$/i.test(a.getTitle())&&(p=this.createTemporaryGraph(this.editor.graph.getStylesheet()), -document.body.appendChild(p.container),m=this.decodeNodeIntoGraph(m,p));a.setData(this.createFileData(h,p,a,k));null!=p&&p.container.parentNode.removeChild(p.container);var g=mxUtils.bind(this,function(){this.spinner.stop()}),l=mxUtils.bind(this,function(){g();var h=this.getCurrentFile();null==b&&null!=h&&(b=!h.isModified()&&null==h.getMode());var k=mxUtils.bind(this,function(){window.openFile=null;this.fileLoaded(a);b&&a.addAllSavedStatus();null!=c&&this.sidebar.showEntries(c)}),l=mxUtils.bind(this, -function(){b||null==h||!h.isModified()?k():this.confirm(mxResources.get("allChangesLost"),null,k,mxResources.get("cancel"),mxResources.get("discardChanges"))});null!=d&&d();null==b||b?l():(a.constructor==LocalFile&&(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(a.getData(),a.getTitle(),null==a.getMode())),null!=d&&d(),window.openWindow(f,null,l))});a.constructor==LocalFile?l():a.saveFile(a.getTitle(),!1,mxUtils.bind(this,function(){l()}),mxUtils.bind(this, -function(a){g();this.handleError(a)}))}}; -App.prototype.loadFile=function(a,c,b,d,f){this.hideDialog();var h=mxUtils.bind(this,function(){if(null==a||0==a.length)this.editor.setStatus(""),this.fileLoaded(null);else if(this.spinner.spin(document.body,mxResources.get("loading")))if("L"==a.charAt(0))if(this.spinner.stop(),isLocalStorage)try{a=decodeURIComponent(a.substring(1));var f=localStorage.getItem(a);if(null!=f)this.fileLoaded(new StorageFile(this,f,a)),null!=d&&d();else throw{message:mxResources.get("fileNotFound")};}catch(n){this.handleError(n, +App.prototype.createFile=function(a,c,b,d,g,e,k,m){d=m?null:null!=d?d:this.mode;if(null!=a&&this.spinner.spin(document.body,mxResources.get("inserting"))){c=null!=c?c:this.emptyDiagramXml;var n=mxUtils.bind(this,function(){this.spinner.stop()}),q=mxUtils.bind(this,function(a){n();null==a&&null==this.getCurrentFile()&&null==this.dialog?this.showSplash():null!=a&&this.handleError(a)});try{if(d==App.MODE_GOOGLE&&null!=this.drive)null==k&&null!=this.stateArg&&null!=this.stateArg.folderId&&(k=this.stateArg.folderId), +this.drive.insertFile(a,c,k,mxUtils.bind(this,function(a){n();this.fileCreated(a,b,e,g)}),q);else if(d==App.MODE_GITHUB&&null!=this.gitHub)this.gitHub.insertFile(a,c,mxUtils.bind(this,function(a){n();this.fileCreated(a,b,e,g)}),q,!1,k);else if(d==App.MODE_TRELLO&&null!=this.trello)this.trello.insertFile(a,c,mxUtils.bind(this,function(a){n();this.fileCreated(a,b,e,g)}),q,!1,k);else if(d==App.MODE_DROPBOX&&null!=this.dropbox)this.dropbox.insertFile(a,c,mxUtils.bind(this,function(a){n();this.fileCreated(a, +b,e,g)}),q);else if(d==App.MODE_ONEDRIVE&&null!=this.oneDrive)this.oneDrive.insertFile(a,c,mxUtils.bind(this,function(a){n();this.fileCreated(a,b,e,g)}),q,!1,k);else if(d==App.MODE_BROWSER){n();var f=mxUtils.bind(this,function(){var d=new StorageFile(this,c,a);d.saveFile(a,!1,mxUtils.bind(this,function(){this.fileCreated(d,b,e,g)}),q)});null==localStorage.getItem(a)?f():this.confirm(mxResources.get("replaceIt",[a]),f,mxUtils.bind(this,function(){null==this.getCurrentFile()&&null==this.dialog&&this.showSplash()}))}else n(), +this.fileCreated(new LocalFile(this,c,a,null==d),b,e,g)}catch(l){n(),this.handleError(l)}}}; +App.prototype.fileCreated=function(a,c,b,d){var g=window.location.pathname;null!=c&&0<c.length&&(g+="?libs="+c);g=this.getUrl(g);a.getMode()!=App.MODE_DEVICE&&(g+="#"+a.getHash());if(this.spinner.spin(document.body,mxResources.get("inserting"))){var e=a.getData(),e=0<e.length?this.editor.extractGraphModel(mxUtils.parseXml(e).documentElement,!0):null,k=window.location.protocol+"//"+window.location.hostname+g,m=e,n=null;null!=e&&/\.svg$/i.test(a.getTitle())&&(n=this.createTemporaryGraph(this.editor.graph.getStylesheet()), +document.body.appendChild(n.container),m=this.decodeNodeIntoGraph(m,n));a.setData(this.createFileData(e,n,a,k));null!=n&&n.container.parentNode.removeChild(n.container);var q=mxUtils.bind(this,function(){this.spinner.stop()}),f=mxUtils.bind(this,function(){q();var e=this.getCurrentFile();null==b&&null!=e&&(b=!e.isModified()&&null==e.getMode());var f=mxUtils.bind(this,function(){window.openFile=null;this.fileLoaded(a);b&&a.addAllSavedStatus();null!=c&&this.sidebar.showEntries(c)}),k=mxUtils.bind(this, +function(){b||null==e||!e.isModified()?f():this.confirm(mxResources.get("allChangesLost"),null,f,mxResources.get("cancel"),mxResources.get("discardChanges"))});null!=d&&d();null==b||b?k():(a.constructor==LocalFile&&(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(a.getData(),a.getTitle(),null==a.getMode())),null!=d&&d(),window.openWindow(g,null,k))});a.constructor==LocalFile?f():a.saveFile(a.getTitle(),!1,mxUtils.bind(this,function(){f()}),mxUtils.bind(this, +function(a){q();this.handleError(a)}))}}; +App.prototype.loadFile=function(a,c,b,d,g){this.hideDialog();var e=mxUtils.bind(this,function(){if(null==a||0==a.length)this.editor.setStatus(""),this.fileLoaded(null);else if(this.spinner.spin(document.body,mxResources.get("loading")))if("L"==a.charAt(0))if(this.spinner.stop(),isLocalStorage)try{a=decodeURIComponent(a.substring(1));var e=localStorage.getItem(a);if(null!=e)this.fileLoaded(new StorageFile(this,e,a)),null!=d&&d();else throw{message:mxResources.get("fileNotFound")};}catch(l){this.handleError(l, mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){var a=this.getCurrentFile();window.location.hash=null!=a?a.getHash():""}))}else this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")},mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){var a=this.getCurrentFile();window.location.hash=null!=a?a.getHash():""}));else if(null!=b)this.spinner.stop(),this.fileLoaded(b),null!=d&&d();else if("S"==a.charAt(0)){this.spinner.stop();try{this.loadDescriptor(JSON.parse(this.editor.graph.decompress(a.substring(1))), -d,mxUtils.bind(this,function(a){this.handleError(a,mxResources.get("errorLoadingFile"))}))}catch(n){this.handleError(n,mxResources.get("errorLoadingFile"))}}else if("R"==a.charAt(0))this.spinner.stop(),f=decodeURIComponent(a.substring(1)),"<"!=f.charAt(0)&&(f=this.editor.graph.decompress(f)),f=new LocalFile(this,f,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0),f.getHash=function(){return a},this.fileLoaded(f),null!=d&&d();else if("U"==a.charAt(0)){var g=decodeURIComponent(a.substring(1)), -h=mxUtils.bind(this,function(){if("https://drive.google.com/uc?id="!=g.substring(0,31)||null==this.drive&&"function"!==typeof window.DriveClient)return!1;this.hideDialog();var a=mxUtils.bind(this,function(){this.spinner.stop();return null!=this.drive?(this.loadFile("G"+g.substring(31,g.lastIndexOf("&ex")),c,d),!0):!1});!a()&&this.spinner.spin(document.body,mxResources.get("loading"))&&this.addListener("clientLoaded",a);return!0});this.loadTemplate(g,mxUtils.bind(this,function(b){this.spinner.stop(); -if(null!=b&&0<b.length){var c=this.defaultFilename;if(null==urlParams.title&&"1"!=urlParams.notitle){var d=g,f=g.lastIndexOf("."),k=d.lastIndexOf("/");f>k&&0<k&&(d=d.substring(k+1,f),f=g.substring(f),this.useCanvasForExport||".png"!=f||(f=".xml"),".svg"===f||".xml"===f||".html"===f||".png"===f)&&(c=d+f)}b=new LocalFile(this,b,null!=urlParams.title?decodeURIComponent(urlParams.title):c,!0);b.getHash=function(){return a};this.fileLoaded(b)||h()}}),mxUtils.bind(this,function(){h()||(this.spinner.stop(), -this.handleError({message:mxResources.get("fileNotFound")},mxResources.get("errorLoadingFile")))}))}else f=null,"G"==a.charAt(0)?f=this.drive:"D"==a.charAt(0)?f=this.dropbox:"W"==a.charAt(0)?f=this.oneDrive:"H"==a.charAt(0)?f=this.gitHub:"T"==a.charAt(0)&&(f=this.trello),null==f?this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")},mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){var a=this.getCurrentFile();window.location.hash=null!=a?a.getHash():""})):(a=decodeURIComponent(a.substring(1)), -f.getFile(a,mxUtils.bind(this,function(a){this.spinner.stop();this.fileLoaded(a);null!=d&&d()}),mxUtils.bind(this,function(b){null!=window.console&&null!=b&&console.log("error in loadFile:",a,b);this.handleError(b,null!=b?mxResources.get("errorLoadingFile"):null,mxUtils.bind(this,function(){var a=this.getCurrentFile();null==a?(window.location.hash="",this.showSplash()):window.location.hash=a.getHash()}))})))}),k=this.getCurrentFile(),m=mxUtils.bind(this,function(){f||null==k||!k.isModified()?h(): -this.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){null!=k&&(window.location.hash=k.getHash())}),h,mxResources.get("cancel"),mxResources.get("discardChanges"))});null==a||0==a.length?m():null!=k&&k.isModified()&&!c?window.openWindow(this.getUrl()+"#"+a,null,m):m()}; +d,mxUtils.bind(this,function(a){this.handleError(a,mxResources.get("errorLoadingFile"))}))}catch(l){this.handleError(l,mxResources.get("errorLoadingFile"))}}else if("R"==a.charAt(0))this.spinner.stop(),e=decodeURIComponent(a.substring(1)),"<"!=e.charAt(0)&&(e=this.editor.graph.decompress(e)),e=new LocalFile(this,e,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0),e.getHash=function(){return a},this.fileLoaded(e),null!=d&&d();else if("U"==a.charAt(0)){var g=decodeURIComponent(a.substring(1)), +f=mxUtils.bind(this,function(){if("https://drive.google.com/uc?id="!=g.substring(0,31)||null==this.drive&&"function"!==typeof window.DriveClient)return!1;this.hideDialog();var a=mxUtils.bind(this,function(){this.spinner.stop();return null!=this.drive?(this.loadFile("G"+g.substring(31,g.lastIndexOf("&ex")),c,d),!0):!1});!a()&&this.spinner.spin(document.body,mxResources.get("loading"))&&this.addListener("clientLoaded",a);return!0});this.loadTemplate(g,mxUtils.bind(this,function(b){this.spinner.stop(); +if(null!=b&&0<b.length){var c=this.defaultFilename;if(null==urlParams.title&&"1"!=urlParams.notitle){var d=g,e=g.lastIndexOf("."),k=d.lastIndexOf("/");e>k&&0<k&&(d=d.substring(k+1,e),e=g.substring(e),this.useCanvasForExport||".png"!=e||(e=".xml"),".svg"===e||".xml"===e||".html"===e||".png"===e||".drawio"===e)&&(c=d+e)}b=new LocalFile(this,b,null!=urlParams.title?decodeURIComponent(urlParams.title):c,!0);b.getHash=function(){return a};this.fileLoaded(b)||f()}}),mxUtils.bind(this,function(){f()||(this.spinner.stop(), +this.handleError({message:mxResources.get("fileNotFound")},mxResources.get("errorLoadingFile")))}))}else e=null,"G"==a.charAt(0)?e=this.drive:"D"==a.charAt(0)?e=this.dropbox:"W"==a.charAt(0)?e=this.oneDrive:"H"==a.charAt(0)?e=this.gitHub:"T"==a.charAt(0)&&(e=this.trello),null==e?this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")},mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){var a=this.getCurrentFile();window.location.hash=null!=a?a.getHash():""})):(a=decodeURIComponent(a.substring(1)), +e.getFile(a,mxUtils.bind(this,function(a){this.spinner.stop();this.fileLoaded(a);null!=d&&d()}),mxUtils.bind(this,function(b){null!=window.console&&null!=b&&console.log("error in loadFile:",a,b);this.handleError(b,null!=b?mxResources.get("errorLoadingFile"):null,mxUtils.bind(this,function(){var a=this.getCurrentFile();null==a?(window.location.hash="",this.showSplash()):window.location.hash=a.getHash()}))})))}),k=this.getCurrentFile(),m=mxUtils.bind(this,function(){g||null==k||!k.isModified()?e(): +this.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){null!=k&&(window.location.hash=k.getHash())}),e,mxResources.get("cancel"),mxResources.get("discardChanges"))});null==a||0==a.length?m():null!=k&&k.isModified()&&!c?window.openWindow(this.getUrl()+"#"+a,null,m):m()}; App.prototype.getLibraryStorageHint=function(a){var c=a.getTitle();a.constructor!=LocalLibrary&&(c+="\n"+a.getHash());a.constructor==DriveLibrary?c+=" ("+mxResources.get("googleDrive")+")":a.constructor==GitHubLibrary?c+=" ("+mxResources.get("github")+")":a.constructor==TrelloLibrary?c+=" ("+mxResources.get("trello")+")":a.constructor==DropboxLibrary?c+=" ("+mxResources.get("dropbox")+")":a.constructor==OneDriveLibrary?c+=" ("+mxResources.get("oneDrive")+")":a.constructor==StorageLibrary?c+=" ("+ mxResources.get("browser")+")":a.constructor==LocalLibrary&&(c+=" ("+mxResources.get("device")+")");return c}; -App.prototype.restoreLibraries=function(){if(null!=this.sidebar){null==this.pendingLibraries&&(this.pendingLibraries={});var a=mxUtils.bind(this,function(a,c){c||mxSettings.removeCustomLibrary(a);delete this.pendingLibraries[a]}),c=mxUtils.bind(this,function(b,c){var d=0,h=[],k=mxUtils.bind(this,function(){if(0==d){if(null!=b)for(var a=b.length-1;0<=a;a--)null!=h[a]&&this.loadLibrary(h[a]);null!=c&&c()}});if(null!=b)for(var m=0;m<b.length;m++){var p=encodeURIComponent(decodeURIComponent(b[m]));mxUtils.bind(this, -function(b,c){if(null!=b&&0<b.length&&null==this.pendingLibraries[b]&&null==this.sidebar.palettes[b]){d++;var f=mxUtils.bind(this,function(a){delete this.pendingLibraries[b];h[c]=a;d--;k()}),g=mxUtils.bind(this,function(c){a(b,c);d--;k()});this.pendingLibraries[b]=!0;var l=b.substring(0,1);if("L"==l)(isLocalStorage||mxClient.IS_CHROMEAPP)&&window.setTimeout(mxUtils.bind(this,function(){try{var a=decodeURIComponent(b.substring(1));this.getLocalData(a,mxUtils.bind(this,function(b){".scratchpad"==a&& -null==b&&(b=this.emptyLibraryXml);null!=b?f(new StorageLibrary(this,b,a)):g()}))}catch(u){g()}}),0);else if("U"==l){var m=decodeURIComponent(b.substring(1));if(!this.isOffline()){l=m;this.isCorsEnabledForUrl(l)||(l="t="+(new Date).getTime(),l=PROXY_URL+"?url="+encodeURIComponent(m)+"&"+l);try{mxUtils.get(l,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus())try{f(new UrlLibrary(this,a.getText(),m))}catch(u){g()}else g()}),function(){g()})}catch(y){g()}}}else{var p=null;"G"==l? -null!=this.drive&&null!=this.drive.user&&(p=this.drive):"H"==l?null!=this.gitHub&&null!=this.gitHub.getUser()&&(p=this.gitHub):"T"==l?null!=this.trello&&this.trello.isAuthorized()&&(p=this.trello):"D"==l?null!=this.dropbox&&null!=this.dropbox.getUser()&&(p=this.dropbox):"W"==l&&null!=this.oneDrive&&null!=this.oneDrive.getUser()&&(p=this.oneDrive);null!=p?p.getLibrary(decodeURIComponent(b.substring(1)),mxUtils.bind(this,function(a){try{f(a)}catch(u){g()}}),function(a){g()}):g(!0)}}})(p,m)}k()});c(mxSettings.getCustomLibraries(), +App.prototype.restoreLibraries=function(){if(null!=this.sidebar){null==this.pendingLibraries&&(this.pendingLibraries={});var a=mxUtils.bind(this,function(a,c){c||mxSettings.removeCustomLibrary(a);delete this.pendingLibraries[a]}),c=mxUtils.bind(this,function(b,c){var d=0,e=[],k=mxUtils.bind(this,function(){if(0==d){if(null!=b)for(var a=b.length-1;0<=a;a--)null!=e[a]&&this.loadLibrary(e[a]);null!=c&&c()}});if(null!=b)for(var m=0;m<b.length;m++){var n=encodeURIComponent(decodeURIComponent(b[m]));mxUtils.bind(this, +function(b,c){if(null!=b&&0<b.length&&null==this.pendingLibraries[b]&&null==this.sidebar.palettes[b]){d++;var g=mxUtils.bind(this,function(a){delete this.pendingLibraries[b];e[c]=a;d--;k()}),f=mxUtils.bind(this,function(c){a(b,c);d--;k()});this.pendingLibraries[b]=!0;var m=b.substring(0,1);if("L"==m)(isLocalStorage||mxClient.IS_CHROMEAPP)&&window.setTimeout(mxUtils.bind(this,function(){try{var a=decodeURIComponent(b.substring(1));this.getLocalData(a,mxUtils.bind(this,function(b){".scratchpad"==a&& +null==b&&(b=this.emptyLibraryXml);null!=b?g(new StorageLibrary(this,b,a)):f()}))}catch(v){f()}}),0);else if("U"==m){var n=decodeURIComponent(b.substring(1));if(!this.isOffline()){m=n;this.isCorsEnabledForUrl(m)||(m="t="+(new Date).getTime(),m=PROXY_URL+"?url="+encodeURIComponent(n)+"&"+m);try{mxUtils.get(m,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus())try{g(new UrlLibrary(this,a.getText(),n))}catch(v){f()}else f()}),function(){f()})}catch(z){f()}}}else{var q=null;"G"==m? +null!=this.drive&&null!=this.drive.user&&(q=this.drive):"H"==m?null!=this.gitHub&&null!=this.gitHub.getUser()&&(q=this.gitHub):"T"==m?null!=this.trello&&this.trello.isAuthorized()&&(q=this.trello):"D"==m?null!=this.dropbox&&null!=this.dropbox.getUser()&&(q=this.dropbox):"W"==m&&null!=this.oneDrive&&null!=this.oneDrive.getUser()&&(q=this.oneDrive);null!=q?q.getLibrary(decodeURIComponent(b.substring(1)),mxUtils.bind(this,function(a){try{g(a)}catch(v){f()}}),function(a){f()}):f(!0)}}})(n,m)}k()});c(mxSettings.getCustomLibraries(), function(){c((urlParams.clibs||"").split(";"))})}}; -App.prototype.updateButtonContainer=function(){if(null!=this.buttonContainer){var a=this.getCurrentFile();if(null!=a&&("manual"==DrawioFile.SYNC||"auto"==DrawioFile.SYNC)){var c=("manual"==DrawioFile.SYNC||null!=a.sync&&!a.sync.enabled&&"min"!=uiTheme)&&(a.constructor==DriveFile||a.constructor==OneDriveFile)||a.constructor==GitHubFile||EditorUi.isElectronApp;null==this.syncButton&&c?(this.syncButton=document.createElement("div"),this.syncButton.className="geBtn gePrimaryBtn",this.syncButton.style.display= -"inline-block",this.syncButton.style.padding="0 10px 0 10px",this.syncButton.style.marginTop="-4px",this.syncButton.style.height="28px",this.syncButton.style.lineHeight="28px",this.syncButton.style.minWidth="0px",this.syncButton.style.cssFloat="left",this.syncButton.setAttribute("title",mxResources.get("synchronize")+" (Alt+Shift+S)"),mxUtils.write(this.syncButton,mxResources.get("synchronize")),mxEvent.addListener(this.syncButton,"click",mxUtils.bind(this,function(){this.actions.get("synchronize").funct()})), -this.buttonContainer.appendChild(this.syncButton)):null==this.syncButton||c||(this.syncButton.parentNode.removeChild(this.syncButton),this.syncButton=null)}null!=a&&a.constructor==DriveFile?null==this.shareButton&&(this.shareButton=document.createElement("div"),this.shareButton.className="geBtn gePrimaryBtn",this.shareButton.style.display="inline-block",this.shareButton.style.padding="0 10px 0 10px",this.shareButton.style.marginTop="-4px",this.shareButton.style.height="28px",this.shareButton.style.lineHeight= -"28px",this.shareButton.style.minWidth="0px",this.shareButton.style.cssFloat="right",this.shareButton.setAttribute("title",mxResources.get("share")),a=document.createElement("img"),a.setAttribute("src",this.shareImage),a.setAttribute("align","absmiddle"),a.style.marginRight="4px",a.style.marginTop="-3px",this.shareButton.appendChild(a),mxUtils.write(this.shareButton,mxResources.get("share")),mxEvent.addListener(this.shareButton,"click",mxUtils.bind(this,function(){this.actions.get("share").funct()})), -this.buttonContainer.appendChild(this.shareButton)):null!=this.shareButton&&(this.shareButton.parentNode.removeChild(this.shareButton),this.shareButton=null)}}; -App.prototype.save=function(a,c){var b=this.getCurrentFile(),d=mxResources.get("saving");if(null!=b&&this.spinner.spin(document.body,d)){this.editor.setStatus("");this.editor.graph.isEditing()&&this.editor.graph.stopEditing();var d=mxUtils.bind(this,function(){b.handleFileSuccess(!0);null!=c&&c()}),f=mxUtils.bind(this,function(a){b.handleFileError(a,!0)});try{a==b.getTitle()?b.save(!0,d,f):b.saveAs(a,d,f)}catch(h){b.handleFileError(h,!0)}}}; -App.prototype.pickFolder=function(a,c,b,d){b=null!=b?b:!0;var f=this.spinner.pause();b&&a==App.MODE_GOOGLE&&null!=this.drive?this.drive.pickFolder(mxUtils.bind(this,function(a){f();if(a.action==google.picker.Action.PICKED){var b=null;null!=a.docs&&0<a.docs.length&&"folder"==a.docs[0].type&&(b=a.docs[0].id);c(b)}})):b&&a==App.MODE_ONEDRIVE&&null!=this.oneDrive?this.oneDrive.pickFolder(mxUtils.bind(this,function(a){f();null!=a&&null!=a.value&&0<a.value.length&&(a=OneDriveFile.prototype.getIdOf(a.value[0]), -c(a))}),d):b&&a==App.MODE_GITHUB&&null!=this.gitHub?this.gitHub.pickFolder(mxUtils.bind(this,function(a){f();c(a)})):b&&a==App.MODE_TRELLO&&null!=this.trello?this.trello.pickFolder(mxUtils.bind(this,function(a){f();c(a)})):EditorUi.prototype.pickFolder.apply(this,arguments)}; -App.prototype.exportFile=function(a,c,b,d,f,h){f==App.MODE_DROPBOX?null!=this.dropbox&&this.spinner.spin(document.body,mxResources.get("saving"))&&this.dropbox.insertFile(c,d?this.base64ToBlob(a,b):a,mxUtils.bind(this,function(){this.spinner.stop()}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)})):f==App.MODE_GOOGLE?null!=this.drive&&this.spinner.spin(document.body,mxResources.get("saving"))&&this.drive.insertFile(c,a,h,mxUtils.bind(this,function(a){this.spinner.stop()}), -mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),b,d):f==App.MODE_ONEDRIVE?null!=this.oneDrive&&this.spinner.spin(document.body,mxResources.get("saving"))&&this.oneDrive.insertFile(c,d?this.base64ToBlob(a,b):a,mxUtils.bind(this,function(){this.spinner.stop()}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),!1,h):f==App.MODE_GITHUB?null!=this.gitHub&&this.spinner.spin(document.body,mxResources.get("saving"))&&this.gitHub.insertFile(c,a,mxUtils.bind(this, -function(){this.spinner.stop()}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),!0,h,d):f==App.MODE_TRELLO?null!=this.trello&&this.spinner.spin(document.body,mxResources.get("saving"))&&this.trello.insertFile(c,d?this.base64ToBlob(a,b):a,mxUtils.bind(this,function(){this.spinner.stop()}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),!1,h):f==App.MODE_BROWSER&&(b=mxUtils.bind(this,function(){localStorage.setItem(c,a)}),null==localStorage.getItem(c)? +App.prototype.updateButtonContainer=function(){if(null!=this.buttonContainer){var a=this.getCurrentFile();null!=a&&a.constructor==DriveFile?null==this.shareButton&&(this.shareButton=document.createElement("div"),this.shareButton.className="geBtn gePrimaryBtn",this.shareButton.style.display="inline-block",this.shareButton.style.padding="0 10px 0 10px",this.shareButton.style.marginTop="-4px",this.shareButton.style.height="28px",this.shareButton.style.lineHeight="28px",this.shareButton.style.minWidth= +"0px",this.shareButton.style.cssFloat="right",this.shareButton.setAttribute("title",mxResources.get("share")),a=document.createElement("img"),a.setAttribute("src",this.shareImage),a.setAttribute("align","absmiddle"),a.style.marginRight="4px",a.style.marginTop="-3px",this.shareButton.appendChild(a),mxUtils.write(this.shareButton,mxResources.get("share")),mxEvent.addListener(this.shareButton,"click",mxUtils.bind(this,function(){this.actions.get("share").funct()})),this.buttonContainer.appendChild(this.shareButton)): +null!=this.shareButton&&(this.shareButton.parentNode.removeChild(this.shareButton),this.shareButton=null)}}; +App.prototype.save=function(a,c){var b=this.getCurrentFile(),d=mxResources.get("saving");if(null!=b&&this.spinner.spin(document.body,d)){this.editor.setStatus("");this.editor.graph.isEditing()&&this.editor.graph.stopEditing();var d=mxUtils.bind(this,function(){b.handleFileSuccess(!0);null!=c&&c()}),g=mxUtils.bind(this,function(a){b.handleFileError(a,!0)});try{a==b.getTitle()?b.save(!0,d,g):b.saveAs(a,d,g)}catch(e){b.handleFileError(e,!0)}}}; +App.prototype.pickFolder=function(a,c,b,d){b=null!=b?b:!0;var g=this.spinner.pause();b&&a==App.MODE_GOOGLE&&null!=this.drive?this.drive.pickFolder(mxUtils.bind(this,function(a){g();if(a.action==google.picker.Action.PICKED){var b=null;null!=a.docs&&0<a.docs.length&&"folder"==a.docs[0].type&&(b=a.docs[0].id);c(b)}})):b&&a==App.MODE_ONEDRIVE&&null!=this.oneDrive?this.oneDrive.pickFolder(mxUtils.bind(this,function(a){g();null!=a&&null!=a.value&&0<a.value.length&&(a=OneDriveFile.prototype.getIdOf(a.value[0]), +c(a))}),d):b&&a==App.MODE_GITHUB&&null!=this.gitHub?this.gitHub.pickFolder(mxUtils.bind(this,function(a){g();c(a)})):b&&a==App.MODE_TRELLO&&null!=this.trello?this.trello.pickFolder(mxUtils.bind(this,function(a){g();c(a)})):EditorUi.prototype.pickFolder.apply(this,arguments)}; +App.prototype.exportFile=function(a,c,b,d,g,e){g==App.MODE_DROPBOX?null!=this.dropbox&&this.spinner.spin(document.body,mxResources.get("saving"))&&this.dropbox.insertFile(c,d?this.base64ToBlob(a,b):a,mxUtils.bind(this,function(){this.spinner.stop()}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)})):g==App.MODE_GOOGLE?null!=this.drive&&this.spinner.spin(document.body,mxResources.get("saving"))&&this.drive.insertFile(c,a,e,mxUtils.bind(this,function(a){this.spinner.stop()}), +mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),b,d):g==App.MODE_ONEDRIVE?null!=this.oneDrive&&this.spinner.spin(document.body,mxResources.get("saving"))&&this.oneDrive.insertFile(c,d?this.base64ToBlob(a,b):a,mxUtils.bind(this,function(){this.spinner.stop()}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),!1,e):g==App.MODE_GITHUB?null!=this.gitHub&&this.spinner.spin(document.body,mxResources.get("saving"))&&this.gitHub.insertFile(c,a,mxUtils.bind(this, +function(){this.spinner.stop()}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),!0,e,d):g==App.MODE_TRELLO?null!=this.trello&&this.spinner.spin(document.body,mxResources.get("saving"))&&this.trello.insertFile(c,d?this.base64ToBlob(a,b):a,mxUtils.bind(this,function(){this.spinner.stop()}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),!1,e):g==App.MODE_BROWSER&&(b=mxUtils.bind(this,function(){localStorage.setItem(c,a)}),null==localStorage.getItem(c)? b():this.confirm(mxResources.get("replaceIt",[c]),b))}; App.prototype.descriptorChanged=function(){var a=this.getCurrentFile();if(null!=a){if(null!=this.fname){this.fnameWrapper.style.display="block";this.fname.innerHTML="";var c=null!=a.getTitle()?a.getTitle():this.defaultFilename;mxUtils.write(this.fname,c);this.fname.setAttribute("title",c+" - "+mxResources.get("rename"))}var c=this.editor.graph,b=a.isEditable()&&!a.invalidChecksum;c.isEnabled()&&!b&&c.reset();c.setEnabled(b);null==urlParams.rev&&(this.updateDocumentTitle(),a=a.getHash(),0<a.length? window.location.hash=a:0<window.location.hash.length&&(window.location.hash=""))}this.updateUi();null!=this.format&&this.format.refresh()}; -App.prototype.showAuthDialog=function(a,c,b,d){var f=this.spinner.pause();this.showDialog((new AuthDialog(this,a,c,mxUtils.bind(this,function(a){try{null!=b&&b(a,mxUtils.bind(this,function(){this.hideDialog();f()}))}catch(k){this.editor.setStatus(mxUtils.htmlEntities(k.message))}}))).container,300,c?180:140,!0,!0,mxUtils.bind(this,function(a){null!=d&&d();a&&null==this.getCurrentFile()&&null==this.dialog&&this.showSplash()}))}; -App.prototype.convertFile=function(a,c,b,d,f,h){var k=c;/\.svg$/i.test(k)||(k=k.substring(0,c.lastIndexOf("."))+d);var m=!1;null!=this.gitHub&&a.substring(0,this.gitHub.baseUrl.length)==this.gitHub.baseUrl&&(m=!0);if(/\.v(dx|sdx?)$/i.test(c)&&Graph.fileSupport&&(new XMLHttpRequest).upload&&"string"===typeof(new XMLHttpRequest).responseType){var p=new XMLHttpRequest;p.open("GET",a,!0);m||(p.responseType="blob");p.onload=mxUtils.bind(this,function(){var a=null;m?(a=JSON.parse(p.responseText),a=this.base64ToBlob(a.content, -"application/octet-stream")):a=new Blob([p.response],{type:"application/octet-stream"});this.importVisio(a,mxUtils.bind(this,function(a){f(new LocalFile(this,a,k,!0))}),h,c)});p.send()}else{var g=mxUtils.bind(this,function(b){try{/\.png$/i.test(c)?(temp=this.extractGraphModelFromPng(b),null!=temp?f(new LocalFile(this,temp,k,!0)):f(new LocalFile(this,b,c,!0))):Graph.fileSupport&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b,a)?this.parseFile(new Blob([b],{type:"application/octet-stream"}), -mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?f(new LocalFile(this,a.responseText,k,!0)):null!=h&&h({message:mxResources.get("errorLoadingFile")}))}),c):f(new LocalFile(this,b,k,!0))}catch(n){null!=h&&h(n)}});b=/\.png$/i.test(c)||/\.jpe?g$/i.test(c)||null!=b&&"image/"==b.substring(0,6);m?mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=f){a=JSON.parse(a.getText());var b=a.content;"base64"===a.encoding&&(b=/\.png$/i.test(c)? -"data:image/png;base64,"+b:!window.atob||mxClient.IS_IE||mxClient.IS_IE11?Base64.decode(b):atob(b));g(b)}}else null!=h&&h({code:App.ERROR_UNKNOWN})}),function(){null!=h&&h({code:App.ERROR_UNKNOWN})},!1,this.timeout,function(){null!=h&&h({code:App.ERROR_TIMEOUT,retry:fn})}):this.loadUrl(a,g,h,b)}}; +App.prototype.showAuthDialog=function(a,c,b,d){var g=this.spinner.pause();this.showDialog((new AuthDialog(this,a,c,mxUtils.bind(this,function(a){try{null!=b&&b(a,mxUtils.bind(this,function(){this.hideDialog();g()}))}catch(k){this.editor.setStatus(mxUtils.htmlEntities(k.message))}}))).container,300,c?180:140,!0,!0,mxUtils.bind(this,function(a){null!=d&&d();a&&null==this.getCurrentFile()&&null==this.dialog&&this.showSplash()}))}; +App.prototype.convertFile=function(a,c,b,d,g,e){var k=c;/\.svg$/i.test(k)||(k=k.substring(0,c.lastIndexOf("."))+d);var m=!1;null!=this.gitHub&&a.substring(0,this.gitHub.baseUrl.length)==this.gitHub.baseUrl&&(m=!0);if(/\.v(dx|sdx?)$/i.test(c)&&Graph.fileSupport&&(new XMLHttpRequest).upload&&"string"===typeof(new XMLHttpRequest).responseType){var n=new XMLHttpRequest;n.open("GET",a,!0);m||(n.responseType="blob");n.onload=mxUtils.bind(this,function(){var a=null;m?(a=JSON.parse(n.responseText),a=this.base64ToBlob(a.content, +"application/octet-stream")):a=new Blob([n.response],{type:"application/octet-stream"});this.importVisio(a,mxUtils.bind(this,function(a){g(new LocalFile(this,a,k,!0))}),e,c)});n.send()}else{var q=mxUtils.bind(this,function(b){try{/\.png$/i.test(c)?(temp=this.extractGraphModelFromPng(b),null!=temp?g(new LocalFile(this,temp,k,!0)):g(new LocalFile(this,b,c,!0))):Graph.fileSupport&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b,a)?this.parseFile(new Blob([b],{type:"application/octet-stream"}), +mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?g(new LocalFile(this,a.responseText,k,!0)):null!=e&&e({message:mxResources.get("errorLoadingFile")}))}),c):g(new LocalFile(this,b,k,!0))}catch(l){null!=e&&e(l)}});b=/\.png$/i.test(c)||/\.jpe?g$/i.test(c)||null!=b&&"image/"==b.substring(0,6);m?mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=g){a=JSON.parse(a.getText());var b=a.content;"base64"===a.encoding&&(b=/\.png$/i.test(c)? +"data:image/png;base64,"+b:!window.atob||mxClient.IS_IE||mxClient.IS_IE11?Base64.decode(b):atob(b));q(b)}}else null!=e&&e({code:App.ERROR_UNKNOWN})}),function(){null!=e&&e({code:App.ERROR_UNKNOWN})},!1,this.timeout,function(){null!=e&&e({code:App.ERROR_TIMEOUT,retry:fn})}):this.loadUrl(a,q,e,b)}}; App.prototype.updateHeader=function(){if(null!=this.menubar){this.appIcon=document.createElement("a");this.appIcon.style.display="block";this.appIcon.style.position="absolute";this.appIcon.style.width="40px";this.appIcon.style.backgroundColor="#f18808";this.appIcon.style.height=this.menubarHeight+"px";mxEvent.disableContextMenu(this.appIcon);mxEvent.addListener(this.appIcon,"click",mxUtils.bind(this,function(a){this.appIconClicked(a)}));var a=mxClient.IS_SVG?"url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMzA2LjE4NSAxMjAuMjk2IgogICB2aWV3Qm94PSIyNCAyNiA2OCA2OCIKICAgeT0iMHB4IgogICB4PSIwcHgiCiAgIHZlcnNpb249IjEuMSI+CiAgIAkgPGc+PGxpbmUKICAgICAgIHkyPSI3Mi4zOTQiCiAgICAgICB4Mj0iNDEuMDYxIgogICAgICAgeTE9IjQzLjM4NCIKICAgICAgIHgxPSI1OC4wNjkiCiAgICAgICBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiCiAgICAgICBzdHJva2Utd2lkdGg9IjMuNTUyOCIKICAgICAgIHN0cm9rZT0iI0ZGRkZGRiIKICAgICAgIGZpbGw9Im5vbmUiIC8+PGxpbmUKICAgICAgIHkyPSI3Mi4zOTQiCiAgICAgICB4Mj0iNzUuMDc2IgogICAgICAgeTE9IjQzLjM4NCIKICAgICAgIHgxPSI1OC4wNjgiCiAgICAgICBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiCiAgICAgICBzdHJva2Utd2lkdGg9IjMuNTAwOCIKICAgICAgIHN0cm9rZT0iI0ZGRkZGRiIKICAgICAgIGZpbGw9Im5vbmUiIC8+PGc+PHBhdGgKICAgICAgICAgZD0iTTUyLjc3Myw3Ny4wODRjMCwxLjk1NC0xLjU5OSwzLjU1My0zLjU1MywzLjU1M0gzNi45OTljLTEuOTU0LDAtMy41NTMtMS41OTktMy41NTMtMy41NTN2LTkuMzc5ICAgIGMwLTEuOTU0LDEuNTk5LTMuNTUzLDMuNTUzLTMuNTUzaDEyLjIyMmMxLjk1NCwwLDMuNTUzLDEuNTk5LDMuNTUzLDMuNTUzVjc3LjA4NHoiCiAgICAgICAgIGZpbGw9IiNGRkZGRkYiIC8+PC9nPjxnCiAgICAgICBpZD0iZzM0MTkiPjxwYXRoCiAgICAgICAgIGQ9Ik02Ny43NjIsNDguMDc0YzAsMS45NTQtMS41OTksMy41NTMtMy41NTMsMy41NTNINTEuOTg4Yy0xLjk1NCwwLTMuNTUzLTEuNTk5LTMuNTUzLTMuNTUzdi05LjM3OSAgICBjMC0xLjk1NCwxLjU5OS0zLjU1MywzLjU1My0zLjU1M0g2NC4yMWMxLjk1NCwwLDMuNTUzLDEuNTk5LDMuNTUzLDMuNTUzVjQ4LjA3NHoiCiAgICAgICAgIGZpbGw9IiNGRkZGRkYiIC8+PC9nPjxnPjxwYXRoCiAgICAgICAgIGQ9Ik04Mi43NTIsNzcuMDg0YzAsMS45NTQtMS41OTksMy41NTMtMy41NTMsMy41NTNINjYuOTc3Yy0xLjk1NCwwLTMuNTUzLTEuNTk5LTMuNTUzLTMuNTUzdi05LjM3OSAgICBjMC0xLjk1NCwxLjU5OS0zLjU1MywzLjU1My0zLjU1M2gxMi4yMjJjMS45NTQsMCwzLjU1MywxLjU5OSwzLjU1MywzLjU1M1Y3Ny4wODR6IgogICAgICAgICBmaWxsPSIjRkZGRkZGIiAvPjwvZz48L2c+PC9zdmc+)": "url('"+IMAGE_PATH+"/logo-white.png')";this.appIcon.style.backgroundImage=a;this.appIcon.style.backgroundPosition="center center";this.appIcon.style.backgroundRepeat="no-repeat";mxUtils.setPrefixedStyle(this.appIcon.style,"transition","all 125ms linear");mxEvent.addListener(this.appIcon,"mouseover",mxUtils.bind(this,function(){var a=this.getCurrentFile();null!=a&&(a=a.getMode(),a==App.MODE_GOOGLE?this.appIcon.style.backgroundImage="url("+IMAGE_PATH+"/google-drive-logo-white.svg)":a==App.MODE_DROPBOX? this.appIcon.style.backgroundImage="url("+IMAGE_PATH+"/dropbox-logo-white.svg)":a==App.MODE_ONEDRIVE?this.appIcon.style.backgroundImage="url("+IMAGE_PATH+"/onedrive-logo-white.svg)":a==App.MODE_GITHUB?this.appIcon.style.backgroundImage="url("+IMAGE_PATH+"/github-logo-white.svg)":a==App.MODE_TRELLO&&(this.appIcon.style.backgroundImage="url("+IMAGE_PATH+"/trello-logo-white-orange.svg)"))}));mxEvent.addListener(this.appIcon,"mouseout",mxUtils.bind(this,function(){this.appIcon.style.backgroundImage=a})); @@ -8712,120 +8717,121 @@ mxUtils.bind(this,function(){this.gitHub.logout();window.location.hash=""});a.is null==this.userPanel||null==this.userPanel.parentNode||this.userPanel.parentNode.removeChild(this.userPanel)})));var a=null;null!=this.drive&&null!=this.drive.getUser()?a=this.drive.getUser():null!=this.oneDrive&&null!=this.oneDrive.getUser()?a=this.oneDrive.getUser():null!=this.dropbox&&null!=this.dropbox.getUser()?a=this.dropbox.getUser():null!=this.gitHub&&null!=this.gitHub.getUser()&&(a=this.gitHub.getUser());null!=a?(this.userElement.innerHTML="",560<screen.width&&(mxUtils.write(this.userElement, a.displayName),this.userElement.style.display="block")):this.userElement.style.display="none"}else null!=this.userElement&&(this.userElement.parentNode.removeChild(this.userElement),this.userElement=null)};var editorResetGraph=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){editorResetGraph.apply(this,arguments);this.graph.pageFormat=mxSettings.getPageFormat()};(function(){var a=mxPopupMenu.prototype.showMenu;mxPopupMenu.prototype.showMenu=function(){a.apply(this,arguments);this.div.style.overflowY="auto";this.div.style.overflowX="hidden";this.div.style.maxHeight=Math.max(document.body.clientHeight,document.documentElement.clientHeight)-10+"px"};Menus.prototype.createHelpLink=function(a){var b=document.createElement("span");b.setAttribute("title",mxResources.get("help"));b.style.cssText="color:blue;text-decoration:underline;margin-left:8px;cursor:help;"; var c=document.createElement("img");mxUtils.setOpacity(c,50);c.style.height="16px";c.style.width="16px";c.setAttribute("border","0");c.setAttribute("valign","bottom");c.setAttribute("src",Editor.helpImage);b.appendChild(c);mxEvent.addGestureListeners(b,mxUtils.bind(this,function(b){null!=this.editorUi.menubar&&this.editorUi.menubar.hideMenu();this.editorUi.openLink(a);mxEvent.consume(b)}));return b};Menus.prototype.addLinkToItem=function(a,c){null!=a&&a.firstChild.nextSibling.appendChild(this.createHelpLink(c))}; -var c=Menus.prototype.init;Menus.prototype.init=function(){c.apply(this,arguments);var a=this.editorUi,d=a.editor.graph,f=mxUtils.bind(d,d.isEnabled),h=("1"!=urlParams.embed&&"0"!=urlParams.gapi||"1"==urlParams.embed&&"1"==urlParams.gapi)&&mxClient.IS_SVG&&isLocalStorage&&(null==document.documentMode||10<=document.documentMode),k=("1"!=urlParams.embed&&"0"!=urlParams.db||"1"==urlParams.embed&&"1"==urlParams.db)&&mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode),m=("www.draw.io"== -window.location.hostname||"test.draw.io"==window.location.hostname||"drive.draw.io"==window.location.hostname||"legacy.draw.io"==window.location.hostname)&&("1"!=urlParams.embed&&"0"!=urlParams.od||"1"==urlParams.embed&&"1"==urlParams.od)&&!navigator.userAgent.match(/(iPad|iPhone|iPod)/g)&&(0>navigator.userAgent.indexOf("MSIE")||10<=document.documentMode),p=("1"!=urlParams.embed&&"0"!=urlParams.tr||"1"==urlParams.embed&&"1"==urlParams.tr)&&mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode); +var c=Menus.prototype.init;Menus.prototype.init=function(){c.apply(this,arguments);var a=this.editorUi,d=a.editor.graph,g=mxUtils.bind(d,d.isEnabled),e=("1"!=urlParams.embed&&"0"!=urlParams.gapi||"1"==urlParams.embed&&"1"==urlParams.gapi)&&mxClient.IS_SVG&&isLocalStorage&&(null==document.documentMode||10<=document.documentMode),k=("1"!=urlParams.embed&&"0"!=urlParams.db||"1"==urlParams.embed&&"1"==urlParams.db)&&mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode),m=("www.draw.io"== +window.location.hostname||"test.draw.io"==window.location.hostname||"drive.draw.io"==window.location.hostname||"legacy.draw.io"==window.location.hostname)&&("1"!=urlParams.embed&&"0"!=urlParams.od||"1"==urlParams.embed&&"1"==urlParams.od)&&!navigator.userAgent.match(/(iPad|iPhone|iPod)/g)&&(0>navigator.userAgent.indexOf("MSIE")||10<=document.documentMode),n=("1"!=urlParams.embed&&"0"!=urlParams.tr||"1"==urlParams.embed&&"1"==urlParams.tr)&&mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode); mxClient.IS_SVG||a.isOffline()||((new Image).src=IMAGE_PATH+"/help.png");a.actions.addAction("new...",function(){var b=a.isOffline(),c=new NewDialog(a,b);a.showDialog(c.container,b?350:620,b?70:440,!0,!0,function(b){b&&null==a.getCurrentFile()&&a.showSplash()});c.init()});a.actions.put("exportSvg",new Action(mxResources.get("formatSvg")+"...",function(){a.showExportDialog(mxResources.get("formatSvg"),!0,mxResources.get("export"),"https://support.draw.io/display/DO/Exporting+Files",mxUtils.bind(this, -function(b,c,d,f,g,h,k,l,m,n){b=parseInt(b);!isNaN(b)&&0<b&&a.exportSvg(b/100,c,d,f,g,h,k,!l,m,n)}),!0,null,"svg")}));a.actions.put("insertTemplate",new Action(mxResources.get("template")+"...",function(){var b=new NewDialog(a,null,!1,function(b){a.hideDialog();null!=b&&(d.setSelectionCells(a.importXml(b)),d.scrollCellToVisible(d.getSelectionCell()))},null,null,null,null,null,null,null,null,null,null,!1,mxResources.get("insert"));a.showDialog(b.container,620,440,!0,!0)}));a.actions.put("exportXml", -new Action(mxResources.get("formatXml")+"...",function(){var b=document.createElement("div");b.style.whiteSpace="nowrap";var c=null==a.pages||1>=a.pages.length,f=document.createElement("h3");mxUtils.write(f,mxResources.get("formatXml"));f.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";b.appendChild(f);var g=a.addCheckbox(b,mxResources.get("selectionOnly"),!1,d.isSelectionEmpty()),h=a.addCheckbox(b,mxResources.get(c?"compressed":"allPages"),!0);h.style.marginBottom="16px"; -mxEvent.addListener(g,"change",function(){g.checked?h.setAttribute("disabled","disabled"):h.removeAttribute("disabled")});b=new CustomDialog(a,b,mxUtils.bind(this,function(){a.downloadFile("xml",c?!h.checked:null,null,!g.checked,c?null:!h.checked)}),null,mxResources.get("export"));a.showDialog(b.container,300,146,!0,!0)}));a.actions.put("exportUrl",new Action(mxResources.get("url")+"...",function(){a.showPublishLinkDialog(mxResources.get("url"),!0,null,null,function(b,c,d,f,g,h){b=new EmbedDialog(a, -a.createLink(b,c,d,f,g,h,null,!0));a.showDialog(b.container,440,240,!0,!0);b.init()})}));a.actions.put("exportHtml",new Action(mxResources.get("formatHtmlEmbedded")+"...",function(){a.spinner.spin(document.body,mxResources.get("loading"))&&a.getPublicUrl(a.getCurrentFile(),function(b){a.spinner.stop();a.showHtmlDialog(mxResources.get("export"),null,b,function(b,c,d,f,g,h,k,l,m,n){a.createHtml(b,c,d,f,g,h,k,l,m,n,mxUtils.bind(this,function(b,c){var d=a.getBaseFilename(k),f='\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n<!DOCTYPE html>\n<html>\n<head>\n<title>'+ -mxUtils.htmlEntities(d)+'</title>\n<meta charset="utf-8"/>\n</head>\n<body>'+b+"\n"+c+"\n</body>\n</html>";a.saveData(d+".html","html",f,"text/html")}))})})}));a.actions.put("exportPdf",new Action(mxResources.get("formatPdf")+"...",function(){if(a.isOffline()||a.printPdfExport)a.showDialog((new PrintDialog(a,mxResources.get("formatPdf"))).container,360,null!=a.pages&&1<a.pages.length?420:360,!0,!0);else{var b=null==a.pages||1>=a.pages.length,c=document.createElement("div");c.style.whiteSpace="nowrap"; -var f=document.createElement("h3");mxUtils.write(f,mxResources.get("formatPdf"));f.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";c.appendChild(f);var f=function(){h!=this&&this.checked?l.removeAttribute("disabled"):(l.setAttribute("disabled","disabled"),l.checked=!1)},g=146;if(a.pdfPageExport&&!b){var h=a.addRadiobox(c,"pages",mxResources.get("allPages"),!0),g=a.addRadiobox(c,"pages",mxResources.get("currentPage",null,"Current Page"),!1),k=a.addRadiobox(c,"pages",mxResources.get("selectionOnly"), -!1,d.isSelectionEmpty()),l=a.addCheckbox(c,mxResources.get("crop"),!1,!0);mxEvent.addListener(h,"change",f);mxEvent.addListener(g,"change",f);mxEvent.addListener(k,"change",f);g=205}else k=a.addCheckbox(c,mxResources.get("selectionOnly"),!1,d.isSelectionEmpty()),l=a.addCheckbox(c,mxResources.get("crop"),!d.pageVisible||!a.pdfPageExport,!a.pdfPageExport),a.pdfPageExport||mxEvent.addListener(k,"change",f);c=new CustomDialog(a,c,mxUtils.bind(this,function(){a.downloadFile("pdf",null,null,!k.checked, -b?!0:!h.checked,!l.checked)}),null,mxResources.get("export"));a.showDialog(c.container,300,g,!0,!0)}}));a.actions.addAction("open...",function(){a.pickFile()});a.actions.addAction("close",function(){function b(){a.fileLoaded(null)}var c=a.getCurrentFile();null!=c&&c.isModified()?a.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()});a.actions.addAction("editShape...",mxUtils.bind(this,function(){d.getSelectionCells();if(1==d.getSelectionCount()){var b= +function(b,c,d,e,f,g,k,m,l,n){b=parseInt(b);!isNaN(b)&&0<b&&a.exportSvg(b/100,c,d,e,f,g,k,!m,l,n)}),!0,null,"svg")}));a.actions.put("insertTemplate",new Action(mxResources.get("template")+"...",function(){var b=new NewDialog(a,null,!1,function(b){a.hideDialog();null!=b&&(d.setSelectionCells(a.importXml(b,20,20,!0)),d.scrollCellToVisible(d.getSelectionCell()))},null,null,null,null,null,null,null,null,null,null,!1,mxResources.get("insert"));a.showDialog(b.container,620,440,!0,!0)}));a.actions.put("exportXml", +new Action(mxResources.get("formatXml")+"...",function(){var b=document.createElement("div");b.style.whiteSpace="nowrap";var c=null==a.pages||1>=a.pages.length,e=document.createElement("h3");mxUtils.write(e,mxResources.get("formatXml"));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";b.appendChild(e);var f=a.addCheckbox(b,mxResources.get("selectionOnly"),!1,d.isSelectionEmpty()),g=a.addCheckbox(b,mxResources.get(c?"compressed":"allPages"),!0);g.style.marginBottom="16px"; +mxEvent.addListener(f,"change",function(){f.checked?g.setAttribute("disabled","disabled"):g.removeAttribute("disabled")});b=new CustomDialog(a,b,mxUtils.bind(this,function(){a.downloadFile("xml",c?!g.checked:null,null,!f.checked,c?null:!g.checked)}),null,mxResources.get("export"));a.showDialog(b.container,300,146,!0,!0)}));a.actions.put("exportUrl",new Action(mxResources.get("url")+"...",function(){a.showPublishLinkDialog(mxResources.get("url"),!0,null,null,function(b,c,d,e,f,g){b=new EmbedDialog(a, +a.createLink(b,c,d,e,f,g,null,!0));a.showDialog(b.container,440,240,!0,!0);b.init()})}));a.actions.put("exportHtml",new Action(mxResources.get("formatHtmlEmbedded")+"...",function(){a.spinner.spin(document.body,mxResources.get("loading"))&&a.getPublicUrl(a.getCurrentFile(),function(b){a.spinner.stop();a.showHtmlDialog(mxResources.get("export"),null,b,function(b,c,d,e,f,g,k,m,l,v){a.createHtml(b,c,d,e,f,g,k,m,l,v,mxUtils.bind(this,function(b,c){var d=a.getBaseFilename(k),e='\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n<!DOCTYPE html>\n<html>\n<head>\n<title>'+ +mxUtils.htmlEntities(d)+'</title>\n<meta charset="utf-8"/>\n</head>\n<body>'+b+"\n"+c+"\n</body>\n</html>";a.saveData(d+".html","html",e,"text/html")}))})})}));a.actions.put("exportPdf",new Action(mxResources.get("formatPdf")+"...",function(){if(a.isOffline()||a.printPdfExport)a.showDialog((new PrintDialog(a,mxResources.get("formatPdf"))).container,360,null!=a.pages&&1<a.pages.length?420:360,!0,!0);else{var b=null==a.pages||1>=a.pages.length,c=document.createElement("div");c.style.whiteSpace="nowrap"; +var e=document.createElement("h3");mxUtils.write(e,mxResources.get("formatPdf"));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";c.appendChild(e);var e=function(){g!=this&&this.checked?m.removeAttribute("disabled"):(m.setAttribute("disabled","disabled"),m.checked=!1)},f=146;if(a.pdfPageExport&&!b){var g=a.addRadiobox(c,"pages",mxResources.get("allPages"),!0),f=a.addRadiobox(c,"pages",mxResources.get("currentPage",null,"Current Page"),!1),k=a.addRadiobox(c,"pages",mxResources.get("selectionOnly"), +!1,d.isSelectionEmpty()),m=a.addCheckbox(c,mxResources.get("crop"),!1,!0);mxEvent.addListener(g,"change",e);mxEvent.addListener(f,"change",e);mxEvent.addListener(k,"change",e);f=205}else k=a.addCheckbox(c,mxResources.get("selectionOnly"),!1,d.isSelectionEmpty()),m=a.addCheckbox(c,mxResources.get("crop"),!d.pageVisible||!a.pdfPageExport,!a.pdfPageExport),a.pdfPageExport||mxEvent.addListener(k,"change",e);c=new CustomDialog(a,c,mxUtils.bind(this,function(){a.downloadFile("pdf",null,null,!k.checked, +b?!0:!g.checked,!m.checked)}),null,mxResources.get("export"));a.showDialog(c.container,300,f,!0,!0)}}));a.actions.addAction("open...",function(){a.pickFile()});a.actions.addAction("close",function(){function b(){a.fileLoaded(null)}var c=a.getCurrentFile();null!=c&&c.isModified()?a.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()});a.actions.addAction("editShape...",mxUtils.bind(this,function(){d.getSelectionCells();if(1==d.getSelectionCount()){var b= d.getSelectionCell(),c=d.view.getState(b);null!=c&&null!=c.shape&&null!=c.shape.stencil&&(b=new EditShapeDialog(a,b,mxResources.get("editShape")+":",630,400),a.showDialog(b.container,640,480,!0,!1),b.init())}}));a.actions.addAction("revisionHistory...",function(){var b=a.getCurrentFile();null!=b&&b.isRevisionHistorySupported()?a.spinner.spin(document.body,mxResources.get("loading"))&&b.getRevisions(mxUtils.bind(this,function(b){a.spinner.stop();b=new RevisionDialog(a,b);a.showDialog(b.container,640, -480,!0,!0);b.init()}),mxUtils.bind(this,function(b){a.handleError(b)})):a.showError(mxResources.get("error"),mxResources.get("notAvailable"),mxResources.get("ok"))});a.actions.addAction("createRevision",function(){a.actions.get("save").funct()},null,null,Editor.ctrlKey+"+S");var g=a.actions.addAction("synchronize",function(){a.synchronizeCurrentFile("none"==DrawioFile.SYNC)},null,null,"Alt+Shift+S");"none"==DrawioFile.SYNC&&(g.label=mxResources.get("refresh"));a.actions.addAction("upload...",function(){var b= -a.getCurrentFile();null!=b&&(window.drawdata=a.getFileData(),b=null!=b.getTitle()?b.getTitle():a.defaultFilename,a.openLink(window.location.protocol+"//"+window.location.host+"/?create=drawdata&"+(a.mode==App.MODE_DROPBOX?"mode=dropbox&":"")+"title="+encodeURIComponent(b),null,!0))});"undefined"!==typeof MathJax&&(g=a.actions.addAction("mathematicalTypesetting",function(){var b=new ChangePageSetup(a);b.ignoreColor=!0;b.ignoreImage=!0;b.mathEnabled=!a.isMathEnabled();d.model.execute(b)}),g.setToggleAction(!0), -g.setSelectedCallback(function(){return a.isMathEnabled()}),g.isEnabled=f);if(isLocalStorage||mxClient.IS_CHROMEAPP)g=a.actions.addAction("showStartScreen",function(){mxSettings.setShowStartScreen(!mxSettings.getShowStartScreen());mxSettings.save()}),g.setToggleAction(!0),g.setSelectedCallback(function(){return mxSettings.getShowStartScreen()});var l=a.actions.addAction("autosave",function(){a.editor.setAutosave(!a.editor.autosave)});l.setToggleAction(!0);l.setSelectedCallback(function(){return l.isEnabled()&& -a.editor.autosave});a.actions.addAction("editGeometry...",function(){for(var b=d.getSelectionCells(),c=[],f=0;f<b.length;f++)d.getModel().isVertex(b[f])&&c.push(b[f]);0<c.length&&(b=new EditGeometryDialog(a,c),a.showDialog(b.container,200,250,!0,!0),b.init())},null,null,Editor.ctrlKey+"+Shift+M");var n="rounded shadow dashed dashPattern fontFamily fontSize fontColor fontStyle align verticalAlign strokeColor strokeWidth fillColor gradientColor swimlaneFillColor textOpacity gradientDirection glass labelBackgroundColor labelBorderColor opacity spacing spacingTop spacingLeft spacingBottom spacingRight endFill endArrow endSize targetPerimeterSpacing startFill startArrow startSize sourcePerimeterSpacing arcSize".split(" "); -a.actions.addAction("copyStyle",function(){var b=d.view.getState(d.getSelectionCell());if(d.isEnabled()&&null!=b){a.copiedStyle=mxUtils.clone(b.style);for(var b=d.getModel().getStyle(b.cell),b=null!=b?b.split(";"):[],c=0;c<b.length;c++){var f=b[c],g=f.indexOf("=");if(0<=g){var h=f.substring(0,g),f=f.substring(g+1);null==a.copiedStyle[h]&&"none"==f&&(a.copiedStyle[h]="none")}}}},null,null,Editor.ctrlKey+"+Shift+C");a.actions.addAction("pasteStyle",function(){if(d.isEnabled()&&!d.isSelectionEmpty()&& -null!=a.copiedStyle){d.getModel().beginUpdate();try{for(var b=d.getSelectionCells(),c=0;c<b.length;c++)for(var f=d.view.getState(b[c]),g=0;g<n.length;g++){var h=n[g],k=a.copiedStyle[h];f.style[h]!=k&&d.setCellStyles(h,k,[b[c]])}}finally{d.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+V");a.actions.put("pageBackgroundImage",new Action(mxResources.get("backgroundImage")+"...",function(){if(!a.isOffline()){var b=new BackgroundImageDialog(a,function(b){a.setBackgroundImage(b)});a.showDialog(b.container, -320,170,!0,!0);b.init()}}));a.actions.put("exportPng",new Action(mxResources.get("formatPng")+"...",function(){a.isExportToCanvas()?a.showExportDialog(mxResources.get("image"),!1,mxResources.get("export"),"https://support.draw.io/display/DO/Exporting+Files",mxUtils.bind(this,function(b,c,d,f,g,h,k,l,m){b=parseInt(b);!isNaN(b)&&0<b&&a.exportImage(b/100,c,d,f,g,k,!l,m)}),!0,!1,"png"):a.isOffline()||mxClient.IS_IOS&&navigator.standalone||a.showRemoteExportDialog(mxResources.get("export"),null,mxUtils.bind(this, -function(b,c,d){a.downloadFile(c?"xmlpng":"png",null,null,b,null,null,d)}))}));a.actions.put("exportJpg",new Action(mxResources.get("formatJpg")+"...",function(){a.isExportToCanvas()?a.showExportDialog(mxResources.get("image"),!1,mxResources.get("export"),"https://support.draw.io/display/DO/Exporting+Files",mxUtils.bind(this,function(b,c,d,f,g,h,k,l,m){b=parseInt(b);!isNaN(b)&&0<b&&a.exportImage(b/100,!1,d,f,!1,k,!l,!1,"jpeg")}),!0,!1,"jpeg"):a.isOffline()||mxClient.IS_IOS&&navigator.standalone|| -a.showRemoteExportDialog(mxResources.get("export"),null,mxUtils.bind(this,function(b,c){a.downloadFile("jpeg",null,null,b)}),!0)}));g=a.actions.put("shadowVisible",new Action(mxResources.get("shadow"),function(){d.setShadowVisible(!d.shadowVisible)}));g.setToggleAction(!0);g.setSelectedCallback(function(){return d.shadowVisible});var q=!1;a.actions.put("about",new Action(mxResources.get("aboutDrawio")+"...",function(){q||(a.showDialog((new AboutDialog(a)).container,220,300,!0,!0,function(){q=!1}), -q=!0)},null,null,"F1"));a.actions.addAction("userManual...",function(){a.openLink("https://support.draw.io/display/DO/Draw.io+Online+User+Manual")});a.actions.addAction("support...",function(){a.openLink("https://about.draw.io/support/")});a.actions.addAction("exportOptionsDisabled...",function(){a.handleError({message:mxResources.get("exportOptionsDisabledDetails")},mxResources.get("exportOptionsDisabled"))});a.actions.addAction("keyboardShortcuts...",function(){mxClient.IS_CHROMEAPP||EditorUi.isElectronApp? -a.openLink("https://www.draw.io/shortcuts.svg"):mxClient.IS_SVG?a.openLink("shortcuts.svg"):a.openLink("https://www.draw.io/?lightbox=1#Uhttps%3A%2F%2Fwww.draw.io%2Fshortcuts.svg")});a.actions.addAction("feedback...",function(){var b=new FeedbackDialog(a);a.showDialog(b.container,610,360,!0,!0);b.init()});a.actions.addAction("quickStart...",function(){a.openLink("https://www.youtube.com/watch?v=Z0D96ZikMkc")});g=a.actions.addAction("tags...",mxUtils.bind(this,function(){null==this.tagsWindow?(this.tagsWindow= -new TagsWindow(a,document.body.offsetWidth-380,230,300,120),this.tagsWindow.window.addListener("show",function(){a.fireEvent(new mxEventObject("tags"))}),this.tagsWindow.window.addListener("hide",function(){a.fireEvent(new mxEventObject("tags"))}),this.tagsWindow.window.setVisible(!0),a.fireEvent(new mxEventObject("tags"))):this.tagsWindow.window.setVisible(!this.tagsWindow.window.isVisible())}));g.setToggleAction(!0);g.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.tagsWindow&& -this.tagsWindow.window.isVisible()}));g=a.actions.addAction("find...",mxUtils.bind(this,function(){null==this.findWindow?(this.findWindow=new FindWindow(a,document.body.offsetWidth-300,110,240,140),this.findWindow.window.addListener("show",function(){a.fireEvent(new mxEventObject("find"))}),this.findWindow.window.addListener("hide",function(){a.fireEvent(new mxEventObject("find"))}),this.findWindow.window.setVisible(!0),a.fireEvent(new mxEventObject("find"))):this.findWindow.window.setVisible(!this.findWindow.window.isVisible())})); -g.setToggleAction(!0);g.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.findWindow&&this.findWindow.window.isVisible()}));a.actions.put("exportVsdx",new Action(mxResources.get("formatVsdx")+" (beta)...",function(){a.exportVisio()}));if(mxClient.IS_CHROMEAPP||isLocalStorage&&"1"!=urlParams.offline)if(this.put("language",new Menu(mxUtils.bind(this,function(b,c){var d=mxUtils.bind(this,function(d){var f=""==d?mxResources.get("automatic"):mxLanguageMap[d],g=null;""!=f&&(g=b.addItem(f, -null,mxUtils.bind(this,function(){mxSettings.setLanguage(d);mxSettings.save();mxClient.language=d;mxResources.loadDefaultBundle=!1;mxResources.add(RESOURCE_BASE);a.alert(mxResources.get("restartForChangeRequired"))}),c),(d==mxLanguage||""==d&&null==mxLanguage)&&b.addCheckmark(g,Editor.checkmarkImage));return g});d("");b.addSeparator(c);for(var f in mxLanguageMap)d(f)}))),"atlas"!=uiTheme){var t=Menus.prototype.createMenubar;Menus.prototype.createMenubar=function(a){var b=t.apply(this,arguments);if(null!= +480,!0,!0);b.init()}),mxUtils.bind(this,function(b){a.handleError(b)})):a.showError(mxResources.get("error"),mxResources.get("notAvailable"),mxResources.get("ok"))});a.actions.addAction("createRevision",function(){a.actions.get("save").funct()},null,null,Editor.ctrlKey+"+S");var q=a.actions.addAction("synchronize",function(){a.synchronizeCurrentFile("none"==DrawioFile.SYNC)},null,null,"Alt+Shift+S");"none"==DrawioFile.SYNC&&(q.label=mxResources.get("refresh"));a.actions.addAction("upload...",function(){var b= +a.getCurrentFile();null!=b&&(window.drawdata=a.getFileData(),b=null!=b.getTitle()?b.getTitle():a.defaultFilename,a.openLink(window.location.protocol+"//"+window.location.host+"/?create=drawdata&"+(a.mode==App.MODE_DROPBOX?"mode=dropbox&":"")+"title="+encodeURIComponent(b),null,!0))});"undefined"!==typeof MathJax&&(q=a.actions.addAction("mathematicalTypesetting",function(){var b=new ChangePageSetup(a);b.ignoreColor=!0;b.ignoreImage=!0;b.mathEnabled=!a.isMathEnabled();d.model.execute(b)}),q.setToggleAction(!0), +q.setSelectedCallback(function(){return a.isMathEnabled()}),q.isEnabled=g);if(isLocalStorage||mxClient.IS_CHROMEAPP)q=a.actions.addAction("showStartScreen",function(){mxSettings.setShowStartScreen(!mxSettings.getShowStartScreen());mxSettings.save()}),q.setToggleAction(!0),q.setSelectedCallback(function(){return mxSettings.getShowStartScreen()});var f=a.actions.addAction("autosave",function(){a.editor.setAutosave(!a.editor.autosave)});f.setToggleAction(!0);f.setSelectedCallback(function(){return f.isEnabled()&& +a.editor.autosave});a.actions.addAction("editGeometry...",function(){for(var b=d.getSelectionCells(),c=[],e=0;e<b.length;e++)d.getModel().isVertex(b[e])&&c.push(b[e]);0<c.length&&(b=new EditGeometryDialog(a,c),a.showDialog(b.container,200,250,!0,!0),b.init())},null,null,Editor.ctrlKey+"+Shift+M");var l="rounded shadow dashed dashPattern fontFamily fontSize fontColor fontStyle align verticalAlign strokeColor strokeWidth fillColor gradientColor swimlaneFillColor textOpacity gradientDirection glass labelBackgroundColor labelBorderColor opacity spacing spacingTop spacingLeft spacingBottom spacingRight endFill endArrow endSize targetPerimeterSpacing startFill startArrow startSize sourcePerimeterSpacing arcSize".split(" "); +a.actions.addAction("copyStyle",function(){var b=d.view.getState(d.getSelectionCell());if(d.isEnabled()&&null!=b){a.copiedStyle=mxUtils.clone(b.style);for(var b=d.getModel().getStyle(b.cell),b=null!=b?b.split(";"):[],c=0;c<b.length;c++){var e=b[c],f=e.indexOf("=");if(0<=f){var g=e.substring(0,f),e=e.substring(f+1);null==a.copiedStyle[g]&&"none"==e&&(a.copiedStyle[g]="none")}}}},null,null,Editor.ctrlKey+"+Shift+C");a.actions.addAction("pasteStyle",function(){if(d.isEnabled()&&!d.isSelectionEmpty()&& +null!=a.copiedStyle){d.getModel().beginUpdate();try{for(var b=d.getSelectionCells(),c=0;c<b.length;c++)for(var e=d.view.getState(b[c]),f=0;f<l.length;f++){var g=l[f],k=a.copiedStyle[g];e.style[g]!=k&&d.setCellStyles(g,k,[b[c]])}}finally{d.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+V");a.actions.put("pageBackgroundImage",new Action(mxResources.get("backgroundImage")+"...",function(){if(!a.isOffline()){var b=new BackgroundImageDialog(a,function(b){a.setBackgroundImage(b)});a.showDialog(b.container, +320,170,!0,!0);b.init()}}));a.actions.put("exportPng",new Action(mxResources.get("formatPng")+"...",function(){a.isExportToCanvas()?a.showExportDialog(mxResources.get("image"),!1,mxResources.get("export"),"https://support.draw.io/display/DO/Exporting+Files",mxUtils.bind(this,function(b,c,d,e,f,g,k,m,l){b=parseInt(b);!isNaN(b)&&0<b&&a.exportImage(b/100,c,d,e,f,k,!m,l)}),!0,!1,"png"):a.isOffline()||mxClient.IS_IOS&&navigator.standalone||a.showRemoteExportDialog(mxResources.get("export"),null,mxUtils.bind(this, +function(b,c,d){a.downloadFile(c?"xmlpng":"png",null,null,b,null,null,d)}))}));a.actions.put("exportJpg",new Action(mxResources.get("formatJpg")+"...",function(){a.isExportToCanvas()?a.showExportDialog(mxResources.get("image"),!1,mxResources.get("export"),"https://support.draw.io/display/DO/Exporting+Files",mxUtils.bind(this,function(b,c,d,e,f,g,k,m,l){b=parseInt(b);!isNaN(b)&&0<b&&a.exportImage(b/100,!1,d,e,!1,k,!m,!1,"jpeg")}),!0,!1,"jpeg"):a.isOffline()||mxClient.IS_IOS&&navigator.standalone|| +a.showRemoteExportDialog(mxResources.get("export"),null,mxUtils.bind(this,function(b,c){a.downloadFile("jpeg",null,null,b)}),!0)}));q=a.actions.put("shadowVisible",new Action(mxResources.get("shadow"),function(){d.setShadowVisible(!d.shadowVisible)}));q.setToggleAction(!0);q.setSelectedCallback(function(){return d.shadowVisible});var p=!1;a.actions.put("about",new Action(mxResources.get("aboutDrawio")+"...",function(){p||(a.showDialog((new AboutDialog(a)).container,220,300,!0,!0,function(){p=!1}), +p=!0)},null,null,"F1"));a.actions.addAction("userManual...",function(){a.openLink("https://support.draw.io/display/DO/Draw.io+Online+User+Manual")});a.actions.addAction("support...",function(){a.openLink("https://about.draw.io/support/")});a.actions.addAction("exportOptionsDisabled...",function(){a.handleError({message:mxResources.get("exportOptionsDisabledDetails")},mxResources.get("exportOptionsDisabled"))});a.actions.addAction("keyboardShortcuts...",function(){mxClient.IS_CHROMEAPP||EditorUi.isElectronApp? +a.openLink("https://www.draw.io/shortcuts.svg"):mxClient.IS_SVG?a.openLink("shortcuts.svg"):a.openLink("https://www.draw.io/?lightbox=1#Uhttps%3A%2F%2Fwww.draw.io%2Fshortcuts.svg")});a.actions.addAction("feedback...",function(){var b=new FeedbackDialog(a);a.showDialog(b.container,610,360,!0,!0);b.init()});a.actions.addAction("quickStart...",function(){a.openLink("https://www.youtube.com/watch?v=Z0D96ZikMkc")});q=a.actions.addAction("tags...",mxUtils.bind(this,function(){null==this.tagsWindow?(this.tagsWindow= +new TagsWindow(a,document.body.offsetWidth-380,230,300,120),this.tagsWindow.window.addListener("show",function(){a.fireEvent(new mxEventObject("tags"))}),this.tagsWindow.window.addListener("hide",function(){a.fireEvent(new mxEventObject("tags"))}),this.tagsWindow.window.setVisible(!0),a.fireEvent(new mxEventObject("tags"))):this.tagsWindow.window.setVisible(!this.tagsWindow.window.isVisible())}));q.setToggleAction(!0);q.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.tagsWindow&& +this.tagsWindow.window.isVisible()}));q=a.actions.addAction("find...",mxUtils.bind(this,function(){null==this.findWindow?(this.findWindow=new FindWindow(a,document.body.offsetWidth-300,110,240,140),this.findWindow.window.addListener("show",function(){a.fireEvent(new mxEventObject("find"))}),this.findWindow.window.addListener("hide",function(){a.fireEvent(new mxEventObject("find"))}),this.findWindow.window.setVisible(!0),a.fireEvent(new mxEventObject("find"))):this.findWindow.window.setVisible(!this.findWindow.window.isVisible())})); +q.setToggleAction(!0);q.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.findWindow&&this.findWindow.window.isVisible()}));a.actions.put("exportVsdx",new Action(mxResources.get("formatVsdx")+" (beta)...",function(){a.exportVisio()}));if(mxClient.IS_CHROMEAPP||isLocalStorage&&"1"!=urlParams.offline)if(this.put("language",new Menu(mxUtils.bind(this,function(b,c){var d=mxUtils.bind(this,function(d){var e=""==d?mxResources.get("automatic"):mxLanguageMap[d],f=null;""!=e&&(f=b.addItem(e, +null,mxUtils.bind(this,function(){mxSettings.setLanguage(d);mxSettings.save();mxClient.language=d;mxResources.loadDefaultBundle=!1;mxResources.add(RESOURCE_BASE);a.alert(mxResources.get("restartForChangeRequired"))}),c),(d==mxLanguage||""==d&&null==mxLanguage)&&b.addCheckmark(f,Editor.checkmarkImage));return f});d("");b.addSeparator(c);for(var e in mxLanguageMap)d(e)}))),"atlas"!=uiTheme){var t=Menus.prototype.createMenubar;Menus.prototype.createMenubar=function(a){var b=t.apply(this,arguments);if(null!= b){var c=this.get("language");if(null!=c){c=b.addMenu("",c.funct);c.setAttribute("title",mxResources.get("language"));c.style.width="16px";c.style.paddingTop="2px";c.style.paddingLeft="4px";c.style.zIndex="1";c.style.position="absolute";c.style.top="2px";c.style.right="17px";c.style.display="block";c.style.cursor="pointer";if(mxClient.IS_VML)c.innerHTML='<div class="geIcon geSprite geSprite-globe"/>';else{var d=document.createElement("div");d.style.backgroundImage="url("+Editor.globeImage+")";d.style.backgroundPosition= "center center";d.style.backgroundRepeat="no-repeat";d.style.backgroundSize="19px 19px";d.style.position="absolute";d.style.height="19px";d.style.width="19px";d.style.marginTop="2px";d.style.zIndex="1";c.appendChild(d);mxUtils.setOpacity(c,40);"dark"==uiTheme&&(c.style.filter="invert(100%)")}document.body.appendChild(c)}}return b}}this.put("help",new Menu(mxUtils.bind(this,function(b,c){if(!mxClient.IS_CHROMEAPP&&a.isOffline())this.addMenuItems(b,["about"],c);else{var d=b.addItem("Search:",null,null, -c,null,null,!1);d.style.backgroundColor="dark"==uiTheme?"#505759":"whiteSmoke";d.style.cursor="default";var f=document.createElement("input");f.setAttribute("type","text");f.setAttribute("size","25");f.style.marginLeft="8px";mxEvent.addListener(f,"keydown",mxUtils.bind(this,function(a){var b=mxUtils.trim(f.value);13==a.keyCode&&0<b.length?(this.editorUi.openLink("https://desk.draw.io/support/search/solutions?term="+encodeURIComponent(b)),f.value="",EditorUi.logEvent({category:"Help",action:"search", -label:b}),null!=this.editorUi.menubar&&window.setTimeout(mxUtils.bind(this,function(){this.editorUi.menubar.hideMenu()}),0)):27==a.keyCode&&(f.value="")}));d.firstChild.nextSibling.appendChild(f);mxEvent.addGestureListeners(f,function(a){document.activeElement!=f&&f.focus();mxEvent.consume(a)},function(a){mxEvent.consume(a)},function(a){mxEvent.consume(a)});window.setTimeout(function(){f.focus()},0);this.addMenuItems(b,["-","quickStart","userManual","keyboardShortcuts","-"],c);mxClient.IS_CHROMEAPP|| +c,null,null,!1);d.style.backgroundColor="dark"==uiTheme?"#505759":"whiteSmoke";d.style.cursor="default";var e=document.createElement("input");e.setAttribute("type","text");e.setAttribute("size","25");e.style.marginLeft="8px";mxEvent.addListener(e,"keydown",mxUtils.bind(this,function(a){var b=mxUtils.trim(e.value);13==a.keyCode&&0<b.length?(this.editorUi.openLink("https://desk.draw.io/support/search/solutions?term="+encodeURIComponent(b)),e.value="",EditorUi.logEvent({category:"Help",action:"search", +label:b}),null!=this.editorUi.menubar&&window.setTimeout(mxUtils.bind(this,function(){this.editorUi.menubar.hideMenu()}),0)):27==a.keyCode&&(e.value="")}));d.firstChild.nextSibling.appendChild(e);mxEvent.addGestureListeners(e,function(a){document.activeElement!=e&&e.focus();mxEvent.consume(a)},function(a){mxEvent.consume(a)},function(a){mxEvent.consume(a)});window.setTimeout(function(){e.focus()},0);this.addMenuItems(b,["-","quickStart","userManual","keyboardShortcuts","-"],c);mxClient.IS_CHROMEAPP|| this.addMenuItems(b,["feedback"],c);this.addMenuItems(b,["support","-"],c);a.isOffline()||EditorUi.isElectronApp||navigator.standalone||"1"==urlParams.embed||this.addMenuItems(b,["downloadDesktop"],c);navigator.standalone||"1"==urlParams.embed||this.addMenuItems(b,["useOffline"],c);this.addMenuItems(b,["-","about"],c)}"1"==urlParams.test&&(b.addSeparator(c),this.addSubmenu("testDevelop",b,c));"1"==urlParams.ruler&&(mxResources.parse("rulerInch=Ruler unit: Inches"),a.actions.addAction("rulerInch", mxUtils.bind(this,function(){a.vRuler.setUnit(mxRuler.prototype.INCHES);a.hRuler.setUnit(mxRuler.prototype.INCHES);a.vRuler.drawRuler(!0);a.hRuler.drawRuler(!0)})),mxResources.parse("rulerCM=Ruler unit: CMs"),a.actions.addAction("rulerCM",mxUtils.bind(this,function(){a.vRuler.setUnit(mxRuler.prototype.CENTIMETER);a.hRuler.setUnit(mxRuler.prototype.CENTIMETER);a.vRuler.drawRuler(!0);a.hRuler.drawRuler(!0)})),mxResources.parse("rulerPixel=Ruler unit: Pixels"),a.actions.addAction("rulerPixel",mxUtils.bind(this, function(){a.vRuler.setUnit(mxRuler.prototype.PIXELS);a.hRuler.setUnit(mxRuler.prototype.PIXELS);a.vRuler.drawRuler(!0);a.hRuler.drawRuler(!0)})),this.addMenuItems(b,["-","rulerInch","rulerCM","rulerPixel"],c))})));"1"==urlParams.test&&(mxResources.parse("testDevelop=Develop"),mxResources.parse("showBoundingBox=Show bounding box"),mxResources.parse("createSidebarEntry=Create Sidebar Entry"),mxResources.parse("testCheckFile=Check File"),mxResources.parse("testDiff=Diff"),mxResources.parse("testInspect=Inspect"), mxResources.parse("testShowConsole=Show Console"),mxResources.parse("testXmlImageExport=XML Image Export"),mxResources.parse("testDownloadRtModel=Export RT model"),mxResources.parse("testImportRtModel=Import RT model"),a.actions.addAction("createSidebarEntry",mxUtils.bind(this,function(){d.isSelectionEmpty()||a.showTextDialog("Create Sidebar Entry","sb.createVertexTemplateFromData('"+d.compress(mxUtils.getXml(d.encodeCells(d.getSelectionCells())))+"', width, height, 'Title');")})),a.actions.addAction("showBoundingBox", -mxUtils.bind(this,function(){var a=d.getGraphBounds(),b=d.view.translate,c=d.view.scale;d.insertVertex(d.getDefaultParent(),null,"",a.x/c-b.x,a.y/c-b.y,a.width/c,a.height/c,"fillColor=none;strokeColor=red;")})),a.actions.addAction("testCheckFile",mxUtils.bind(this,function(){var b=null!=a.pages&&null!=a.getCurrentFile()?a.getCurrentFile().getAnonymizedXmlForPages(a.pages):"",b=new TextareaDialog(a,"Paste Data:",b,function(b){if(0<b.length)try{"<"!=b.charAt(0)&&(b=d.decompress(b),mxLog.debug("See console for uncompressed XML"), -console.log("xml",b));var c=mxUtils.parseXml(b),f=a.getPagesForNode(c.documentElement,"mxGraphModel");if(null!=f&&0<f.length)try{var g=a.getHashValueForPages(f);mxLog.debug("Checksum: ",g)}catch(D){mxLog.debug("Error: ",D.message)}else mxLog.debug("No pages found for checksum");var h=c.getElementsByTagName("*");b={};c={};for(f=0;f<h.length;f++){var k=h[f];null!=k.id&&0<k.id.length&&(null==b[k.id]?b[k.id]=k.id:c[k.id]=k.id)}if(0<Object.keys(c).length){var l=Object.keys(c).length+" Duplicates: "+Object.keys(c).join(", "); -mxLog.debug(l+" (see console)");console.log(l)}else mxLog.debug("No duplicates");mxLog.show()}catch(D){a.handleError(D),console.error(D)}});b.textarea.style.width="600px";b.textarea.style.height="380px";a.showDialog(b.container,620,460,!0,!0);b.init()})),a.actions.addAction("testDiff",mxUtils.bind(this,function(){if(null!=a.pages){var b=new TextareaDialog(a,"Paste Data:","",function(b){if(0<b.length)try{console.log(JSON.stringify(a.diffPages(a.pages,a.getPagesForNode(mxUtils.parseXml(b).documentElement)), -null,2))}catch(F){a.handleError(F),console.error(F)}});b.textarea.style.width="600px";b.textarea.style.height="380px";a.showDialog(b.container,620,460,!0,!0);b.init()}else a.alert("No pages")})),a.actions.addAction("testInspect",mxUtils.bind(this,function(){console.log(a,d.getModel())})),a.actions.addAction("testXmlImageExport",mxUtils.bind(this,function(){var a=new mxImageExport,b=d.getGraphBounds(),c=d.view.scale,f=mxUtils.createXmlDocument(),g=f.createElement("output");f.appendChild(g);f=new mxXmlCanvas2D(g); -f.translate(Math.floor((1-b.x)/c),Math.floor((1-b.y)/c));f.scale(1/c);var h=0,k=f.save;f.save=function(){h++;k.apply(this,arguments)};var l=f.restore;f.restore=function(){h--;l.apply(this,arguments)};var m=a.drawShape;a.drawShape=function(a){mxLog.debug("entering shape",a,h);m.apply(this,arguments);mxLog.debug("leaving shape",a,h)};a.drawState(d.getView().getState(d.model.root),f);mxLog.show();mxLog.debug(mxUtils.getXml(g));mxLog.debug("stateCounter",h)})),a.actions.addAction("testDownloadRtModel...", -mxUtils.bind(this,function(){null==a.drive?a.handleError({message:mxResources.get("serviceUnavailableOrBlocked")}):a.drive.execute(mxUtils.bind(this,function(){var b=prompt("File ID","");if(null!=b&&0<b.length&&a.spinner.spin(document.body,mxResources.get("export"))){var c=new mxXmlRequest("https://www.googleapis.com/drive/v2/files/"+b+"/realtime?supportsTeamDrives=true",null,"GET");c.setRequestHeaders=function(a){mxXmlRequest.prototype.setRequestHeaders.apply(this,arguments);var b=gapi.auth.getToken().access_token; -a.setRequestHeader("authorization","Bearer "+b)};c.send(function(c){a.spinner.stop();200<=c.getStatus()&&299>=c.getStatus()?a.saveLocalFile(c.getText(),"json-"+b+".txt","text/plain"):a.handleError({message:mxResources.get("fileNotFound")},mxResources.get("errorLoadingFile"))})}}))})),a.actions.addAction("testShowConsole",function(){mxLog.isVisible()?mxLog.window.fit():mxLog.show();mxLog.window.div.style.zIndex=mxPopupMenu.prototype.zIndex-1}),this.put("testDevelop",new Menu(mxUtils.bind(this,function(b, -c){this.addMenuItems(b,"createSidebarEntry showBoundingBox - testCheckFile testDiff - testInspect - testXmlImageExport - testDownloadRtModel".split(" "),c);b.addItem(mxResources.get("testImportRtModel")+"...",null,function(){var b=document.createElement("input");b.setAttribute("type","file");mxEvent.addListener(b,"change",mxUtils.bind(this,function(){if(null!=b.files){var c=new FileReader;c.onload=mxUtils.bind(this,function(c){try{a.openLocalFile(mxUtils.getXml(a.drive.convertJsonToXml(JSON.parse(c.target.result).data)), -b.files[0].name,!0)}catch(A){a.handleError(A,mxResources.get("errorLoadingFile"))}});c.readAsText(b.files[0])}}));b.click()},c);this.addMenuItems(b,["-","testShowConsole"],c)}))));a.actions.addAction("shapes...",function(){mxClient.IS_CHROMEAPP||!a.isOffline()?a.showDialog((new MoreShapesDialog(a,!0)).container,640,isLocalStorage?mxClient.IS_IOS?480:460:440,!0,!0):a.showDialog((new MoreShapesDialog(a,!1)).container,360,isLocalStorage?mxClient.IS_IOS?300:280:260,!0,!0)});a.actions.addAction("createShape...", +mxUtils.bind(this,function(){var a=d.getGraphBounds(),b=d.view.translate,c=d.view.scale;d.insertVertex(d.getDefaultParent(),null,"",a.x/c-b.x,a.y/c-b.y,a.width/c,a.height/c,"fillColor=none;strokeColor=red;")})),a.actions.addAction("testCheckFile",mxUtils.bind(this,function(){var b=null!=a.pages&&null!=a.getCurrentFile()?a.getCurrentFile().getAnonymizedXmlForPages(a.pages):"",b=new TextareaDialog(a,"Paste Data:",b,function(b){if(0<b.length)try{var c=function(a){function b(a){if(null==n[a]){if(n[a]= +!0,null!=e[a]){for(;0<e[a].length;){var d=e[a].pop();b(d)}delete e[a]}}else mxLog.debug(c+": Visited: "+a)}var c=a.parentNode.id,d=a.childNodes;a={};for(var e={},f=null,g={},k=0;k<d.length;k++){var m=d[k];if(null!=m.id&&0<m.id.length)if(null==a[m.id]){a[m.id]=m.id;var l=m.getAttribute("parent");null==l?null!=f?mxLog.debug(c+": Multiple roots: "+m.id):f=m.id:(null==e[l]&&(e[l]=[]),e[l].push(m.id))}else g[m.id]=m.id}0<Object.keys(g).length?(d=c+": "+Object.keys(g).length+" Duplicates: "+Object.keys(g).join(", "), +mxLog.debug(d+" (see console)")):mxLog.debug(c+": Checked");var n={};null==f?mxLog.debug(c+": No root"):(b(f),Object.keys(n).length!=Object.keys(a).length&&(mxLog.debug(c+": Invalid tree: (see console)"),console.log(c+": Invalid tree",e)))};"<"!=b.charAt(0)&&(b=d.decompress(b),mxLog.debug("See console for uncompressed XML"),console.log("xml",b));var e=mxUtils.parseXml(b),f=a.getPagesForNode(e.documentElement,"mxGraphModel");if(null!=f&&0<f.length)try{var g=a.getHashValueForPages(f);mxLog.debug("Checksum: ", +g)}catch(I){mxLog.debug("Error: ",I.message)}else mxLog.debug("No pages found for checksum");var k=e.getElementsByTagName("root");for(b=0;b<k.length;b++)c(k[b]);mxLog.show()}catch(I){a.handleError(I),console.error(I)}});b.textarea.style.width="600px";b.textarea.style.height="380px";a.showDialog(b.container,620,460,!0,!0);b.init()})),a.actions.addAction("testDiff",mxUtils.bind(this,function(){if(null!=a.pages){var b=new TextareaDialog(a,"Paste Data:","",function(b){if(0<b.length)try{console.log(JSON.stringify(a.diffPages(a.pages, +a.getPagesForNode(mxUtils.parseXml(b).documentElement)),null,2))}catch(B){a.handleError(B),console.error(B)}});b.textarea.style.width="600px";b.textarea.style.height="380px";a.showDialog(b.container,620,460,!0,!0);b.init()}else a.alert("No pages")})),a.actions.addAction("testInspect",mxUtils.bind(this,function(){console.log(a,d.getModel())})),a.actions.addAction("testXmlImageExport",mxUtils.bind(this,function(){var a=new mxImageExport,b=d.getGraphBounds(),c=d.view.scale,e=mxUtils.createXmlDocument(), +f=e.createElement("output");e.appendChild(f);e=new mxXmlCanvas2D(f);e.translate(Math.floor((1-b.x)/c),Math.floor((1-b.y)/c));e.scale(1/c);var g=0,k=e.save;e.save=function(){g++;k.apply(this,arguments)};var m=e.restore;e.restore=function(){g--;m.apply(this,arguments)};var l=a.drawShape;a.drawShape=function(a){mxLog.debug("entering shape",a,g);l.apply(this,arguments);mxLog.debug("leaving shape",a,g)};a.drawState(d.getView().getState(d.model.root),e);mxLog.show();mxLog.debug(mxUtils.getXml(f));mxLog.debug("stateCounter", +g)})),a.actions.addAction("testDownloadRtModel...",mxUtils.bind(this,function(){null==a.drive?a.handleError({message:mxResources.get("serviceUnavailableOrBlocked")}):a.drive.execute(mxUtils.bind(this,function(){var b=prompt("File ID","");if(null!=b&&0<b.length&&a.spinner.spin(document.body,mxResources.get("export"))){var c=new mxXmlRequest("https://www.googleapis.com/drive/v2/files/"+b+"/realtime?supportsTeamDrives=true",null,"GET");c.setRequestHeaders=function(a){mxXmlRequest.prototype.setRequestHeaders.apply(this, +arguments);var b=gapi.auth.getToken().access_token;a.setRequestHeader("authorization","Bearer "+b)};c.send(function(c){a.spinner.stop();200<=c.getStatus()&&299>=c.getStatus()?a.saveLocalFile(c.getText(),"json-"+b+".txt","text/plain"):a.handleError({message:mxResources.get("fileNotFound")},mxResources.get("errorLoadingFile"))})}}))})),a.actions.addAction("testShowConsole",function(){mxLog.isVisible()?mxLog.window.fit():mxLog.show();mxLog.window.div.style.zIndex=mxPopupMenu.prototype.zIndex-1}),this.put("testDevelop", +new Menu(mxUtils.bind(this,function(b,c){this.addMenuItems(b,"createSidebarEntry showBoundingBox - testCheckFile testDiff - testInspect - testXmlImageExport - testDownloadRtModel".split(" "),c);b.addItem(mxResources.get("testImportRtModel")+"...",null,function(){var b=document.createElement("input");b.setAttribute("type","file");mxEvent.addListener(b,"change",mxUtils.bind(this,function(){if(null!=b.files){var c=new FileReader;c.onload=mxUtils.bind(this,function(c){try{a.openLocalFile(mxUtils.getXml(a.drive.convertJsonToXml(JSON.parse(c.target.result).data)), +b.files[0].name,!0)}catch(D){a.handleError(D,mxResources.get("errorLoadingFile"))}});c.readAsText(b.files[0])}}));b.click()},c);this.addMenuItems(b,["-","testShowConsole"],c)}))));a.actions.addAction("shapes...",function(){mxClient.IS_CHROMEAPP||!a.isOffline()?a.showDialog((new MoreShapesDialog(a,!0)).container,640,isLocalStorage?mxClient.IS_IOS?480:460:440,!0,!0):a.showDialog((new MoreShapesDialog(a,!1)).container,360,isLocalStorage?mxClient.IS_IOS?300:280:260,!0,!0)});a.actions.addAction("createShape...", function(){a.getCurrentFile();if(d.isEnabled()){var b=new mxCell("",new mxGeometry(0,0,120,120),a.defaultCustomShapeStyle);b.vertex=!0;b=new EditShapeDialog(a,b,mxResources.get("editShape")+":",630,400);a.showDialog(b.container,640,480,!0,!1);b.init()}});a.actions.put("embedHtml",new Action(mxResources.get("html")+"...",function(){a.spinner.spin(document.body,mxResources.get("loading"))&&a.getPublicUrl(a.getCurrentFile(),function(b){a.spinner.stop();a.showHtmlDialog(mxResources.get("create"),"https://desk.draw.io/support/solutions/articles/16000042542", -b,function(b,c,d,f,g,h,k,l,m,n){a.createHtml(b,c,d,f,g,h,k,l,m,n,mxUtils.bind(this,function(b,c){var d=new EmbedDialog(a,b+"\n"+c,null,null,function(){var a=window.open(),d=a.document;"CSS1Compat"===document.compatMode&&d.writeln("<!DOCTYPE html>");d.writeln("<html>");d.writeln("<head><title>"+encodeURIComponent(mxResources.get("preview"))+'</title><meta charset="utf-8"></head>');d.writeln("<body>");d.writeln(b);var f=mxClient.IS_IE||mxClient.IS_EDGE||null!=document.documentMode;f&&d.writeln(c);d.writeln("</body>"); -d.writeln("</html>");d.close();if(!f){var g=a.document.createElement("div");g.marginLeft="26px";g.marginTop="26px";mxUtils.write(g,mxResources.get("updatingDocument"));f=a.document.createElement("img");f.setAttribute("src",window.location.protocol+"//"+window.location.hostname+"/"+IMAGE_PATH+"/spin.gif");f.style.marginLeft="6px";g.appendChild(f);a.document.body.insertBefore(g,a.document.body.firstChild);window.setTimeout(function(){var a=document.createElement("script");a.type="text/javascript";a.src= -/<script.*?src="(.*?)"/.exec(c)[1];d.body.appendChild(a);g.parentNode.removeChild(g)},20)}});a.showDialog(d.container,440,240,!0,!0);d.init()}))})})}));a.actions.put("liveImage",new Action("Live image...",function(){a.spinner.spin(document.body,mxResources.get("loading"))&&a.getPublicUrl(a.getCurrentFile(),function(b){a.spinner.stop();null!=b?(b=encodeURIComponent(b),b=new EmbedDialog(a,EXPORT_URL+"?format=png&url="+b,0),a.showDialog(b.container,440,240,!0,!0),b.init()):a.handleError({message:mxResources.get("invalidPublicUrl")})})})); -a.actions.put("embedImage",new Action(mxResources.get("image")+"...",function(){a.showEmbedImageDialog(function(b,c,d,f,g,h){a.spinner.spin(document.body,mxResources.get("loading"))&&a.createEmbedImage(b,c,d,f,g,h,function(b){a.spinner.stop();b=new EmbedDialog(a,b);a.showDialog(b.container,440,240,!0,!0);b.init()},function(b){a.spinner.stop();a.handleError(b)})},mxResources.get("image"),mxResources.get("retina"),a.isExportToCanvas())}));a.actions.put("embedSvg",new Action(mxResources.get("formatSvg")+ -"...",function(){a.showEmbedImageDialog(function(b,c,d,f,g,h){a.spinner.spin(document.body,mxResources.get("loading"))&&a.createEmbedSvg(b,c,d,f,g,h,function(b){a.spinner.stop();b=new EmbedDialog(a,b);a.showDialog(b.container,440,240,!0,!0);b.init()},function(b){a.spinner.stop();a.handleError(b)})},mxResources.get("formatSvg"),mxResources.get("image"),!0,"https://desk.draw.io/support/solutions/articles/16000042548")}));a.actions.put("embedIframe",new Action(mxResources.get("iframe")+"...",function(){var b= -d.getGraphBounds();a.showPublishLinkDialog(mxResources.get("iframe"),null,"100%",Math.ceil((b.y+b.height-d.view.translate.y)/d.view.scale)+2,function(b,c,d,f,g,h,k,l){a.spinner.spin(document.body,mxResources.get("loading"))&&a.getPublicUrl(a.getCurrentFile(),function(m){a.spinner.stop();m=new EmbedDialog(a,'<iframe frameborder="0" style="width:'+k+";height:"+l+';" src="'+a.createLink(b,c,d,f,g,h,m)+'"></iframe>');a.showDialog(m.container,440,240,!0,!0);m.init()})},!0)}));a.actions.put("publishLink", -new Action(mxResources.get("link")+"...",function(){a.showPublishLinkDialog(null,null,null,null,function(b,c,d,f,g,h){a.spinner.spin(document.body,mxResources.get("loading"))&&a.getPublicUrl(a.getCurrentFile(),function(k){a.spinner.stop();k=new EmbedDialog(a,a.createLink(b,c,d,f,g,h,k));a.showDialog(k.container,440,240,!0,!0);k.init()})})}));a.actions.addAction("googleDocs...",function(){a.openLink("http://docsaddon.draw.io")});a.actions.addAction("googleSlides...",function(){a.openLink("https://slidesaddon.draw.io")}); -a.actions.addAction("googleSites...",function(){a.spinner.spin(document.body,mxResources.get("loading"))&&a.getPublicUrl(a.getCurrentFile(),function(b){a.spinner.stop();b=new GoogleSitesDialog(a,b);a.showDialog(b.container,420,256,!0,!0);b.init()})});if(isLocalStorage||mxClient.IS_CHROMEAPP)g=a.actions.addAction("scratchpad",function(){a.toggleScratchpad()}),g.setToggleAction(!0),g.setSelectedCallback(function(){return null!=a.scratchpad}),a.actions.addAction("plugins...",function(){a.showDialog((new PluginsDialog(a)).container, -360,170,!0,!1)});g=a.actions.addAction("search",function(){var b=a.sidebar.isEntryVisible("search");a.sidebar.showPalette("search",!b);isLocalStorage&&(mxSettings.settings.search=!b,mxSettings.save())});g.setToggleAction(!0);g.setSelectedCallback(function(){return a.sidebar.isEntryVisible("search")});"1"==urlParams.embed&&(a.actions.get("save").funct=function(b){d.isEditing()&&d.stopEditing();var c="0"!=urlParams.pages||null!=a.pages&&1<a.pages.length?a.getFileData(!0):mxUtils.getXml(a.editor.getGraphXml()); -if("json"==urlParams.proto){var f=a.createLoadMessage("save");f.xml=c;b&&(f.exit=!0);c=JSON.stringify(f)}(window.opener||window.parent).postMessage(c,"*");"0"!=urlParams.modified&&"1"!=urlParams.keepmodified&&(a.editor.modified=!1,a.editor.setStatus(""));null!=a.getCurrentFile()&&a.saveFile()},a.actions.addAction("saveAndExit",function(){a.actions.get("save").funct(!0)}),a.actions.addAction("exit",function(){var b=function(){a.editor.modified=!1;var b="json"==urlParams.proto?JSON.stringify({event:"exit", -modified:a.editor.modified}):"";(window.opener||window.parent).postMessage(b,"*")};a.editor.modified?a.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()}));this.put("exportAs",new Menu(mxUtils.bind(this,function(b,c){a.isExportToCanvas()?(this.addMenuItems(b,["exportPng"],c),a.jpgSupported&&this.addMenuItems(b,["exportJpg"],c)):a.isOffline()||mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(b,["exportPng","exportJpg"],c);this.addMenuItems(b, -["exportSvg","-"],c);a.isOffline()||a.printPdfExport?this.addMenuItems(b,["exportPdf"],c):a.isOffline()||mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(b,["exportPdf"],c);mxClient.IS_IE||"undefined"===typeof VsdxExport&&a.isOffline()||this.addMenuItems(b,["exportVsdx"],c);this.addMenuItems(b,["-","exportHtml","exportXml","exportUrl"],c);a.isOffline()||(b.addSeparator(c),this.addMenuItem(b,"export",c).firstChild.nextSibling.innerHTML=mxResources.get("advanced")+"...")})));this.put("importFrom", -new Menu(mxUtils.bind(this,function(b,c){function f(b){b.pickFile(function(c){a.spinner.spin(document.body,mxResources.get("loading"))&&b.getFile(c,function(b){var c=l(b.getTitle());/\.svg$/i.test(b.getTitle())&&!a.editor.isDataSvg(b.getData())&&(b.setData(a.createSvgDataUri(b.getData())),c="image/svg+xml");g(b.getData(),c,b.getTitle())},function(b){a.handleError(b,null!=b?mxResources.get("errorLoadingFile"):null)},b==a.drive)},!0)}var g=mxUtils.bind(this,function(b,c,f){var g=d.view,h=d.getGraphBounds(), -k=d.snap(Math.ceil(Math.max(0,h.x/g.scale-g.translate.x)+4*d.gridSize)),l=d.snap(Math.ceil(Math.max(0,(h.y+h.height)/g.scale-g.translate.y)+4*d.gridSize));"data:image/"==b.substring(0,11)?a.loadImage(b,mxUtils.bind(this,function(g){var h=!0,m=mxUtils.bind(this,function(){a.resizeImage(g,b,mxUtils.bind(this,function(g,m,n){g=h?Math.min(1,Math.min(a.maxImageSize/m,a.maxImageSize/n)):1;a.importFile(b,c,k,l,Math.round(m*g),Math.round(n*g),f,function(b){a.spinner.stop();d.setSelectionCells(b);d.scrollCellToVisible(d.getSelectionCell())})}), -h)});b.length>a.resampleThreshold?a.confirmImageResize(function(a){h=a;m()}):m()}),mxUtils.bind(this,function(){a.handleError({message:mxResources.get("cannotOpenFile")})})):a.importFile(b,c,k,l,0,0,f,function(b){a.spinner.stop();d.setSelectionCells(b);d.scrollCellToVisible(d.getSelectionCell())})}),l=mxUtils.bind(this,function(a){var b="text/xml";/\.png$/i.test(a)?b="image/png":/\.jpe?g$/i.test(a)?b="image/jpg":/\.gif$/i.test(a)&&(b="image/gif");return b});"undefined"!=typeof google&&"undefined"!= -typeof google.picker&&(null!=a.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){f(a.drive)},c):h&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1));null!=a.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){f(a.oneDrive)},c):m&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){f(a.dropbox)}, -c):k&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){f(a.gitHub)},c);null!=a.trello?b.addItem(mxResources.get("trello")+"...",null,function(){f(a.trello)},c):p&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);b.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null, -function(){a.importLocalFile(!1)},c);b.addItem(mxResources.get("device")+"...",null,function(){a.importLocalFile(!0)},c);a.isOffline()||(b.addSeparator(c),b.addItem(mxResources.get("url")+"...",null,function(){var b=new FilenameDialog(a,"",mxResources.get("import"),function(b){if(null!=b&&0<b.length&&a.spinner.spin(document.body,mxResources.get("loading"))){var c=/(\.png)($|\?)/i.test(b)?"image/png":"text/xml";a.loadUrl(PROXY_URL+"?url="+encodeURIComponent(b),function(a){g(a,c,b)},function(){a.spinner.stop(); -a.handleError(null,mxResources.get("errorLoadingFile"))},"image/png"==c)}},mxResources.get("url"));a.showDialog(b.container,300,80,!0,!0);b.init()},c))}))).isEnabled=f;this.put("theme",new Menu(mxUtils.bind(this,function(b,c){var d=mxSettings.getUi(),f=b.addItem(mxResources.get("automatic"),null,function(){mxSettings.setUi("");mxSettings.save();a.alert(mxResources.get("restartForChangeRequired"))},c);"kennedy"!=d&&"atlas"!=d&&"dark"!=d&&"min"!=d&&b.addCheckmark(f,Editor.checkmarkImage);b.addSeparator(c); -f=b.addItem(mxResources.get("kennedy"),null,function(){mxSettings.setUi("kennedy");mxSettings.save();a.alert(mxResources.get("restartForChangeRequired"))},c);"kennedy"==d&&b.addCheckmark(f,Editor.checkmarkImage);f=b.addItem(mxResources.get("minimal"),null,function(){mxSettings.setUi("min");mxSettings.save();a.alert(mxResources.get("restartForChangeRequired"))},c);"min"==d&&b.addCheckmark(f,Editor.checkmarkImage);f=b.addItem(mxResources.get("atlas"),null,function(){mxSettings.setUi("atlas");mxSettings.save(); -a.alert(mxResources.get("restartForChangeRequired"))},c);"atlas"==d&&b.addCheckmark(f,Editor.checkmarkImage);f=b.addItem(mxResources.get("dark"),null,function(){mxSettings.setUi("dark");mxSettings.save();a.alert(mxResources.get("restartForChangeRequired"))},c);"dark"==d&&b.addCheckmark(f,Editor.checkmarkImage)})));g=this.editorUi.actions.addAction("rename...",mxUtils.bind(this,function(){var b=this.editorUi.getCurrentFile();if(null!=b){var c=null!=b.getTitle()?b.getTitle():this.editorUi.defaultFilename, -c=new FilenameDialog(this.editorUi,c,mxResources.get("rename"),mxUtils.bind(this,function(a){null!=a&&0<a.length&&null!=b&&this.editorUi.spinner.spin(document.body,mxResources.get("renaming"))&&b.rename(a,mxUtils.bind(this,function(a){this.editorUi.spinner.stop()}),mxUtils.bind(this,function(a){this.editorUi.handleError(a,null!=a?mxResources.get("errorRenamingFile"):null)}))}),b.constructor==DriveFile||b.constructor==StorageFile?mxResources.get("diagramName"):null,function(b){if(null!=b&&0<b.length)return!0; -a.showError(mxResources.get("error"),mxResources.get("invalidName"),mxResources.get("ok"));return!1});this.editorUi.showDialog(c.container,300,80,!0,!0);c.init()}}));g.isEnabled=function(){return this.enabled&&f.apply(this,arguments)};g.visible="1"!=urlParams.embed;a.actions.addAction("makeCopy...",mxUtils.bind(this,function(){var b=a.getCurrentFile();if(null!=b){var c=a.getCopyFilename(b);b.constructor==DriveFile?(c=new CreateDialog(a,c,mxUtils.bind(this,function(c,d){"download"==d&&(d=App.MODE_GOOGLE); -null!=c&&0<c.length&&(d==App.MODE_GOOGLE?a.spinner.spin(document.body,mxResources.get("saving"))&&b.saveAs(c,mxUtils.bind(this,function(c){b.desc=c;b.save(!1,mxUtils.bind(this,function(){a.spinner.stop();b.setModified(!1);b.addAllSavedStatus()}),mxUtils.bind(this,function(b){a.handleError(b)}))}),mxUtils.bind(this,function(b){a.handleError(b)})):a.createFile(c,a.getFileData(!0),null,d))}),mxUtils.bind(this,function(){a.hideDialog()}),mxResources.get("makeCopy"),mxResources.get("create"),null,null, -null,null,!0),a.showDialog(c.container,420,380,!0,!0),c.init()):a.editor.editAsNew(this.editorUi.getFileData(!0),c)}}));a.actions.addAction("moveToFolder...",mxUtils.bind(this,function(){var b=a.getCurrentFile();b.getMode()!=App.MODE_GOOGLE&&b.getMode()!=App.MODE_ONEDRIVE||a.pickFolder(b.getMode(),mxUtils.bind(this,function(c){a.spinner.spin(document.body,mxResources.get("moving"))&&b.move(c,mxUtils.bind(this,function(b){a.spinner.stop()}),mxUtils.bind(this,function(b){a.handleError(b)}))}),null, -!0)}));this.put("publish",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,["publishLink"],b)})));a.actions.put("useOffline",new Action(mxResources.get("useOffline")+"...",function(){a.openLink("https://app.draw.io/")}));a.actions.put("downloadDesktop",new Action(mxResources.get("downloadDesktop")+"...",function(){a.openLink("https://get.draw.io/")}));this.editorUi.actions.addAction("share...",mxUtils.bind(this,function(){var a=this.editorUi.getCurrentFile();null!=a&&this.editorUi.drive.showPermissions(a.getId())})); -this.put("embed",new Menu(mxUtils.bind(this,function(b,c){"1"==urlParams.test&&this.addMenuItems(b,["liveImage","-"],c);this.addMenuItems(b,["embedImage","embedSvg","-","embedHtml"],c);navigator.standalone||a.isOffline()||this.addMenuItems(b,["embedIframe"],c);a.isOffline()||this.addMenuItems(b,["-","googleDocs","googleSlides","googleSites"],c)})));var v=function(b,c,d,f){("plantUml"!=f||EditorUi.enablePlantUml&&!a.isOffline())&&b.addItem(d,null,mxUtils.bind(this,function(){if("fromText"==f||"formatSql"== -f||"plantUml"==f){var b=new ParseDialog(a,d,f);a.showDialog(b.container,620,420,!0,!1);a.dialog.container.style.overflow="auto"}else b=new CreateGraphDialog(a,d,f),a.showDialog(b.container,620,420,!0,!1);b.init()}),c)},w=function(a,b,c,f){var g=d.isMouseInsertPoint()?d.getInsertPoint():d.getFreeInsertPoint();a=new mxCell(a,new mxGeometry(g.x,g.y,b,c),f);a.vertex=!0;d.getModel().beginUpdate();try{a=d.addCell(a),d.fireEvent(new mxEventObject("cellsInserted","cells",[a]))}finally{d.getModel().endUpdate()}d.scrollCellToVisible(a); -d.setSelectionCell(a);d.container.focus();d.editAfterInsert&&d.startEditing(a);return a};a.actions.put("exportSvg",new Action(mxResources.get("formatSvg")+"...",function(){a.showExportDialog(mxResources.get("formatSvg"),!0,mxResources.get("export"),"https://support.draw.io/display/DO/Exporting+Files",mxUtils.bind(this,function(b,c,d,f,g,h,k,l,m,n){b=parseInt(b);!isNaN(b)&&0<b&&a.exportSvg(b/100,c,d,f,g,h,k,!l,m,n)}),!0,null,"svg")}));a.actions.put("insertText",new Action(mxResources.get("text"),function(){d.isEnabled()&& -!d.isCellLocked(d.getDefaultParent())&&d.startEditingAtCell(w("Text",40,20,"text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;rounded=0;"))}),null,null,Editor.ctrlKey+"+Shift+X").isEnabled=f;a.actions.put("insertRectangle",new Action(mxResources.get("rectangle"),function(){d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())&&w("",120,60,"whiteSpace=wrap;html=1;")}),null,null,Editor.ctrlKey+"+K").isEnabled=f;a.actions.put("insertEllipse", -new Action(mxResources.get("ellipse"),function(){d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())&&w("",80,80,"ellipse;whiteSpace=wrap;html=1;")}),null,null,Editor.ctrlKey+"+Shift+K").isEnabled=f;a.actions.put("insertRhombus",new Action(mxResources.get("rhombus"),function(){d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())&&w("",80,80,"rhombus;whiteSpace=wrap;html=1;")})).isEnabled=f;var y=mxUtils.bind(this,function(a,b,c){for(var d=0;d<c.length;d++)"-"==c[d]?a.addSeparator(b):v(a,b,mxResources.get(c[d])+ -"...",c[d])});this.put("insert",new Menu(mxUtils.bind(this,function(b,c){this.addMenuItems(b,"insertRectangle insertEllipse insertRhombus - insertText insertLink - insertImage".split(" "),c);a.insertTemplateEnabled&&!a.isOffline()&&this.addMenuItems(b,["insertTemplate","-"],c);this.addSubmenu("insertLayout",b,c,mxResources.get("layout"));b.addSeparator(c);y(b,c,["fromText","plantUml","-","formatSql"]);b.addItem(mxResources.get("csv")+"...",null,function(){a.showImportCsvDialog()},c)})));this.put("insertLayout", -new Menu(mxUtils.bind(this,function(a,b){y(a,b,"horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "))})));this.put("openRecent",new Menu(function(b,c){var d=a.getRecent();if(null!=d){for(var f=0;f<d.length;f++)(function(d){var f=d.mode;f==App.MODE_GOOGLE?f="googleDrive":f==App.MODE_ONEDRIVE&&(f="oneDrive");b.addItem(d.title+" ("+mxResources.get(f)+")",null,function(){a.loadFile(d.id)},c)})(d[f]);b.addSeparator(c)}b.addItem(mxResources.get("reset"),null, -function(){a.resetRecent()},c)}));this.put("openFrom",new Menu(function(b,c){null!=a.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){a.pickFile(App.MODE_GOOGLE)},c):h&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){a.pickFile(App.MODE_ONEDRIVE)},c):m&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){}, -c,null,!1);null!=a.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){a.pickFile(App.MODE_DROPBOX)},c):k&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){a.pickFile(App.MODE_GITHUB)},c);null!=a.trello?b.addItem(mxResources.get("trello")+"...",null,function(){a.pickFile(App.MODE_TRELLO)},c):p&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+ -"...)",null,function(){},c,null,!1);b.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){a.pickFile(App.MODE_BROWSER)},c);b.addItem(mxResources.get("device")+"...",null,function(){a.pickFile(App.MODE_DEVICE)},c);a.isOffline()||(b.addSeparator(c),b.addItem(mxResources.get("url")+"...",null,function(){var b=new FilenameDialog(a,"",mxResources.get("open"),function(b){null!=b&&0<b.length&&(null==a.getCurrentFile()?window.location.hash="#U"+ -encodeURIComponent(b):window.openWindow((mxClient.IS_CHROMEAPP?"https://www.draw.io/":"https://"+location.host+"/")+window.location.search+"#U"+encodeURIComponent(b)))},mxResources.get("url"));a.showDialog(b.container,300,80,!0,!0);b.init()},c))}));Editor.enableCustomLibraries&&(this.put("newLibrary",new Menu(function(b,c){"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!=a.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){a.showLibraryDialog(null,null,null, -null,App.MODE_GOOGLE)},c):h&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1));null!=a.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_ONEDRIVE)},c):m&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){a.showLibraryDialog(null,null,null,null, -App.MODE_DROPBOX)},c):k&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_GITHUB)},c);null!=a.trello?b.addItem(mxResources.get("trello")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_TRELLO)},c):p&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null, -!1);b.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_BROWSER)},c);b.addItem(mxResources.get("device")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_DEVICE)},c)})),this.put("openLibraryFrom",new Menu(function(b,c){"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!=a.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){a.pickLibrary(App.MODE_GOOGLE)}, -c):h&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1));null!=a.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){a.pickLibrary(App.MODE_ONEDRIVE)},c):m&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){a.pickLibrary(App.MODE_DROPBOX)},c):k&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+ -"...)",null,function(){},c,null,!1);null!=a.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){a.pickLibrary(App.MODE_GITHUB)},c);null!=a.trello?b.addItem(mxResources.get("trello")+"...",null,function(){a.pickLibrary(App.MODE_TRELLO)},c):p&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);b.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){a.pickLibrary(App.MODE_BROWSER)}, -c);b.addItem(mxResources.get("device")+"...",null,function(){a.pickLibrary(App.MODE_DEVICE)},c);a.isOffline()||(b.addSeparator(c),b.addItem(mxResources.get("url")+"...",null,function(){var b=new FilenameDialog(a,"",mxResources.get("open"),function(b){if(null!=b&&0<b.length&&a.spinner.spin(document.body,mxResources.get("loading"))){var c=b;a.isCorsEnabledForUrl(b)||(c=PROXY_URL+"?url="+encodeURIComponent(b));mxUtils.get(c,function(c){if(200<=c.getStatus()&&299>=c.getStatus()){a.spinner.stop();try{a.loadLibrary(new UrlLibrary(this, -c.getText(),b))}catch(H){a.handleError(H,mxResources.get("errorLoadingFile"))}}else a.spinner.stop(),a.handleError(null,mxResources.get("errorLoadingFile"))},function(){a.spinner.stop();a.handleError(null,mxResources.get("errorLoadingFile"))})}},mxResources.get("url"));a.showDialog(b.container,300,80,!0,!0);b.init()},c))})));this.put("edit",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,"undo redo - cut copy paste delete - duplicate - find - editData editTooltip - editStyle editGeometry - edit - editLink openLink - selectVertices selectEdges selectAll selectNone - lockUnlock".split(" "))}))); -this.put("view",new Menu(mxUtils.bind(this,function(b,c){this.addMenuItems(b,(null!=this.editorUi.format?["formatPanel"]:[]).concat(["outline","layers","-"]));this.addMenuItems(b,["-","search"],c);if(isLocalStorage||mxClient.IS_CHROMEAPP){var d=this.addMenuItem(b,"scratchpad",c);a.isOffline()&&!mxClient.IS_CHROMEAPP||this.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000042367")}this.addMenuItems(b,"shapes - pageView pageScale - scrollbars tooltips - grid guides".split(" "),c); -mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode)&&this.addMenuItem(b,"shadowVisible",c);this.addMenuItems(b,"- connectionArrows connectionPoints - resetView zoomIn zoomOut".split(" "),c)})));this.put("extras",new Menu(mxUtils.bind(this,function(b,c){"1"!=urlParams.embed&&(this.addSubmenu("theme",b,c),b.addSeparator(c));this.addMenuItems(b,["copyConnect","collapseExpand","-"],c);if("undefined"!==typeof MathJax){var d=this.addMenuItem(b,"mathematicalTypesetting",c);this.addLinkToItem(d, -"https://desk.draw.io/support/solutions/articles/16000032875")}"1"!=urlParams.embed&&this.addMenuItems(b,["autosave"],c);this.addMenuItems(b,["-","createShape","editDiagram"],c);b.addSeparator(c);"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&this.addMenuItems(b,["showStartScreen"],c);!a.isOfflineApp()&&isLocalStorage&&this.addMenuItem(b,"plugins",c);b.addSeparator(c);this.addMenuItem(b,"tags",c);b.addSeparator(c);"1"==urlParams.newTempDlg&&(a.actions.addAction("templates",function(){var b= -new TemplatesDialog;a.showDialog(b.container,b.width,b.height,!0,!1,null,!1,!0);b.init(a,function(a){console.log(a)},null,null,null,"user",function(a,b){setTimeout(function(){b?a([{url:"123",title:"Test 1Test 1Test 1Test 1Test 1Test 1Test 11Test 1Test 11Test 1Test 1dgdsgdfg fdg dfgdfg dfg dfg"},{url:"123",title:"Test 2",imgUrl:"https://www.google.com.eg/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"},{url:"123",title:"Test 3",changedBy:"Ashraf Teleb",lastModifiedOn:"Yesterday"},{url:"123", -title:"Test 4"},{url:"123",title:"Test 5"},{url:"123",title:"Test 6"}]):a([{url:"123",title:"Test 4",imgUrl:"https://images.pexels.com/photos/459225/pexels-photo-459225.jpeg"},{url:"123",title:"Test 5"},{url:"123",title:"Test 6"},{url:"123",title:"Test 1Test 1Test 1Test 1Test 1Test 1Test 11Test 1Test 11Test 1Test 1dgdsgdfg fdg dfgdfg dfg dfg"},{url:"123",title:"Test 2",imgUrl:"https://www.google.com.eg/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"},{url:"123",title:"Test 3",changedBy:"Ashraf Teleb", -lastModifiedOn:"Yesterday"}]);console.log(b)},1E3)},function(a,b,c){setTimeout(function(){b(c?[{url:"123",title:a+"Test 1Test 1Test 1Test 1Test 1Test 1Test 1"},{url:"123",title:a+"Test 2"},{url:"123",title:a+"Test 3"},{url:"123",title:a+"Test 4"},{url:"123",title:a+"Test 5"},{url:"123",title:a+"Test 6"}]:[{url:"123",title:a+"Test 5"},{url:"123",title:a+"Test 6"},{url:"123",title:a+"Test 1Test 1Test 1Test 1Test 1Test 1Test 1"},{url:"123",title:a+"Test 2"},{url:"123",title:a+"Test 3"},{url:"123",title:a+ -"Test 4"}])},2E3)},null)}),this.addMenuItem(b,"templates",c))})));this.put("file",new Menu(mxUtils.bind(this,function(b,c){if("1"==urlParams.embed)this.addSubmenu("importFrom",b,c),this.addSubmenu("exportAs",b,c),this.addSubmenu("embed",b,c),"1"==urlParams.libraries&&(this.addMenuItems(b,["-"],c),this.addSubmenu("newLibrary",b,c),this.addSubmenu("openLibraryFrom",b,c)),this.addMenuItems(b,"- pageSetup print - rename save".split(" "),c),"1"==urlParams.saveAndExit&&this.addMenuItems(b,["saveAndExit"], -c),this.addMenuItems(b,["exit"],c);else{var d=this.editorUi.getCurrentFile();if(null!=d&&d.constructor==DriveFile){d.isRestricted()&&this.addMenuItems(b,["exportOptionsDisabled"],c);this.addMenuItems(b,["save","-","share"],c);var f=this.addMenuItem(b,"synchronize",c);a.isOffline()&&!mxClient.IS_CHROMEAPP||this.addLinkToItem(f,"https://desk.draw.io/support/solutions/articles/16000087947");b.addSeparator(c)}else this.addMenuItems(b,["new"],c);this.addSubmenu("openFrom",b,c);isLocalStorage&&this.addSubmenu("openRecent", -b,c);null!=d&&d.constructor==DriveFile?this.addMenuItems(b,["new","-","rename","makeCopy","moveToFolder"],c):(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null==d||d.constructor==LocalFile||(b.addSeparator(c),f=this.addMenuItem(b,"synchronize",c),a.isOffline()&&!mxClient.IS_CHROMEAPP||this.addLinkToItem(f,"https://desk.draw.io/support/solutions/articles/16000087947")),this.addMenuItems(b,["-","save","saveAs"],c),this.addMenuItems(b,["-","rename"],c),a.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&& -this.addMenuItems(b,["upload"],c):(this.addMenuItems(b,["makeCopy"],c),null!=d&&d.constructor==OneDriveFile&&this.addMenuItems(b,["moveToFolder"],c)));b.addSeparator(c);this.addSubmenu("importFrom",b,c);this.addSubmenu("exportAs",b,c);b.addSeparator(c);this.addSubmenu("embed",b,c);this.addSubmenu("publish",b,c);b.addSeparator(c);this.addSubmenu("newLibrary",b,c);this.addSubmenu("openLibraryFrom",b,c);null!=d&&d.isRevisionHistorySupported()&&this.addMenuItems(b,["-","revisionHistory"],c);this.addMenuItems(b, -["-","pageSetup"],c);mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(b,["print"],c);this.addMenuItems(b,["-","close"])}})))}})();function DiagramPage(a){this.node=a;null==this.getId()&&this.node.setAttribute("id",Editor.guid())}DiagramPage.prototype.node=null;DiagramPage.prototype.root=null;DiagramPage.prototype.viewState=null;DiagramPage.prototype.getId=function(){return this.node.getAttribute("id")};DiagramPage.prototype.getName=function(){return this.node.getAttribute("name")};DiagramPage.prototype.setName=function(a){null==a?this.node.removeAttribute("name"):this.node.setAttribute("name",a)}; +b,function(b,c,d,e,f,g,k,m,l,n){a.createHtml(b,c,d,e,f,g,k,m,l,n,mxUtils.bind(this,function(b,c){var d=new EmbedDialog(a,b+"\n"+c,null,null,function(){var d=window.open(),e=d.document;if(null!=e){"CSS1Compat"===document.compatMode&&e.writeln("<!DOCTYPE html>");e.writeln("<html>");e.writeln("<head><title>"+encodeURIComponent(mxResources.get("preview"))+'</title><meta charset="utf-8"></head>');e.writeln("<body>");e.writeln(b);var f=mxClient.IS_IE||mxClient.IS_EDGE||null!=document.documentMode;f&&e.writeln(c); +e.writeln("</body>");e.writeln("</html>");e.close();if(!f){var g=d.document.createElement("div");g.marginLeft="26px";g.marginTop="26px";mxUtils.write(g,mxResources.get("updatingDocument"));f=d.document.createElement("img");f.setAttribute("src",window.location.protocol+"//"+window.location.hostname+"/"+IMAGE_PATH+"/spin.gif");f.style.marginLeft="6px";g.appendChild(f);d.document.body.insertBefore(g,d.document.body.firstChild);window.setTimeout(function(){var a=document.createElement("script");a.type= +"text/javascript";a.src=/<script.*?src="(.*?)"/.exec(c)[1];e.body.appendChild(a);g.parentNode.removeChild(g)},20)}}else a.handleError({message:mxResources.get("errorUpdatingPreview")})});a.showDialog(d.container,440,240,!0,!0);d.init()}))})})}));a.actions.put("liveImage",new Action("Live image...",function(){a.spinner.spin(document.body,mxResources.get("loading"))&&a.getPublicUrl(a.getCurrentFile(),function(b){a.spinner.stop();null!=b?(b=encodeURIComponent(b),b=new EmbedDialog(a,EXPORT_URL+"?format=png&url="+ +b,0),a.showDialog(b.container,440,240,!0,!0),b.init()):a.handleError({message:mxResources.get("invalidPublicUrl")})})}));a.actions.put("embedImage",new Action(mxResources.get("image")+"...",function(){a.showEmbedImageDialog(function(b,c,d,e,f,g){a.spinner.spin(document.body,mxResources.get("loading"))&&a.createEmbedImage(b,c,d,e,f,g,function(b){a.spinner.stop();b=new EmbedDialog(a,b);a.showDialog(b.container,440,240,!0,!0);b.init()},function(b){a.spinner.stop();a.handleError(b)})},mxResources.get("image"), +mxResources.get("retina"),a.isExportToCanvas())}));a.actions.put("embedSvg",new Action(mxResources.get("formatSvg")+"...",function(){a.showEmbedImageDialog(function(b,c,d,e,f,g){a.spinner.spin(document.body,mxResources.get("loading"))&&a.createEmbedSvg(b,c,d,e,f,g,function(b){a.spinner.stop();b=new EmbedDialog(a,b);a.showDialog(b.container,440,240,!0,!0);b.init()},function(b){a.spinner.stop();a.handleError(b)})},mxResources.get("formatSvg"),mxResources.get("image"),!0,"https://desk.draw.io/support/solutions/articles/16000042548")})); +a.actions.put("embedIframe",new Action(mxResources.get("iframe")+"...",function(){var b=d.getGraphBounds();a.showPublishLinkDialog(mxResources.get("iframe"),null,"100%",Math.ceil((b.y+b.height-d.view.translate.y)/d.view.scale)+2,function(b,c,d,e,f,g,k,m){a.spinner.spin(document.body,mxResources.get("loading"))&&a.getPublicUrl(a.getCurrentFile(),function(l){a.spinner.stop();l=new EmbedDialog(a,'<iframe frameborder="0" style="width:'+k+";height:"+m+';" src="'+a.createLink(b,c,d,e,f,g,l)+'"></iframe>'); +a.showDialog(l.container,440,240,!0,!0);l.init()})},!0)}));a.actions.put("publishLink",new Action(mxResources.get("link")+"...",function(){a.showPublishLinkDialog(null,null,null,null,function(b,c,d,e,f,g){a.spinner.spin(document.body,mxResources.get("loading"))&&a.getPublicUrl(a.getCurrentFile(),function(k){a.spinner.stop();k=new EmbedDialog(a,a.createLink(b,c,d,e,f,g,k));a.showDialog(k.container,440,240,!0,!0);k.init()})})}));a.actions.addAction("googleDocs...",function(){a.openLink("http://docsaddon.draw.io")}); +a.actions.addAction("googleSlides...",function(){a.openLink("https://slidesaddon.draw.io")});a.actions.addAction("googleSites...",function(){a.spinner.spin(document.body,mxResources.get("loading"))&&a.getPublicUrl(a.getCurrentFile(),function(b){a.spinner.stop();b=new GoogleSitesDialog(a,b);a.showDialog(b.container,420,256,!0,!0);b.init()})});if(isLocalStorage||mxClient.IS_CHROMEAPP)q=a.actions.addAction("scratchpad",function(){a.toggleScratchpad()}),q.setToggleAction(!0),q.setSelectedCallback(function(){return null!= +a.scratchpad}),a.actions.addAction("plugins...",function(){a.showDialog((new PluginsDialog(a)).container,360,170,!0,!1)});q=a.actions.addAction("search",function(){var b=a.sidebar.isEntryVisible("search");a.sidebar.showPalette("search",!b);isLocalStorage&&(mxSettings.settings.search=!b,mxSettings.save())});q.setToggleAction(!0);q.setSelectedCallback(function(){return a.sidebar.isEntryVisible("search")});"1"==urlParams.embed&&(a.actions.get("save").funct=function(b){d.isEditing()&&d.stopEditing(); +var c="0"!=urlParams.pages||null!=a.pages&&1<a.pages.length?a.getFileData(!0):mxUtils.getXml(a.editor.getGraphXml());if("json"==urlParams.proto){var e=a.createLoadMessage("save");e.xml=c;b&&(e.exit=!0);c=JSON.stringify(e)}(window.opener||window.parent).postMessage(c,"*");"0"!=urlParams.modified&&"1"!=urlParams.keepmodified&&(a.editor.modified=!1,a.editor.setStatus(""));null!=a.getCurrentFile()&&a.saveFile()},a.actions.addAction("saveAndExit",function(){a.actions.get("save").funct(!0)}),a.actions.addAction("exit", +function(){var b=function(){a.editor.modified=!1;var b="json"==urlParams.proto?JSON.stringify({event:"exit",modified:a.editor.modified}):"";(window.opener||window.parent).postMessage(b,"*")};a.editor.modified?a.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()}));this.put("exportAs",new Menu(mxUtils.bind(this,function(b,c){a.isExportToCanvas()?(this.addMenuItems(b,["exportPng"],c),a.jpgSupported&&this.addMenuItems(b,["exportJpg"],c)): +a.isOffline()||mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(b,["exportPng","exportJpg"],c);this.addMenuItems(b,["exportSvg","-"],c);a.isOffline()||a.printPdfExport?this.addMenuItems(b,["exportPdf"],c):a.isOffline()||mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(b,["exportPdf"],c);mxClient.IS_IE||"undefined"===typeof VsdxExport&&a.isOffline()||this.addMenuItems(b,["exportVsdx"],c);this.addMenuItems(b,["-","exportHtml","exportXml","exportUrl"],c);a.isOffline()||(b.addSeparator(c), +this.addMenuItem(b,"export",c).firstChild.nextSibling.innerHTML=mxResources.get("advanced")+"...")})));this.put("importFrom",new Menu(mxUtils.bind(this,function(b,c){function f(b){b.pickFile(function(c){a.spinner.spin(document.body,mxResources.get("loading"))&&b.getFile(c,function(b){var c=l(b.getTitle());/\.svg$/i.test(b.getTitle())&&!a.editor.isDataSvg(b.getData())&&(b.setData(a.createSvgDataUri(b.getData())),c="image/svg+xml");g(b.getData(),c,b.getTitle())},function(b){a.handleError(b,null!=b? +mxResources.get("errorLoadingFile"):null)},b==a.drive)},!0)}var g=mxUtils.bind(this,function(b,c,e){var f=d.view,g=d.getGraphBounds(),k=d.snap(Math.ceil(Math.max(0,g.x/f.scale-f.translate.x)+4*d.gridSize)),m=d.snap(Math.ceil(Math.max(0,(g.y+g.height)/f.scale-f.translate.y)+4*d.gridSize));"data:image/"==b.substring(0,11)?a.loadImage(b,mxUtils.bind(this,function(f){var g=!0,l=mxUtils.bind(this,function(){a.resizeImage(f,b,mxUtils.bind(this,function(f,l,n){f=g?Math.min(1,Math.min(a.maxImageSize/l,a.maxImageSize/ +n)):1;a.importFile(b,c,k,m,Math.round(l*f),Math.round(n*f),e,function(b){a.spinner.stop();d.setSelectionCells(b);d.scrollCellToVisible(d.getSelectionCell())})}),g)});b.length>a.resampleThreshold?a.confirmImageResize(function(a){g=a;l()}):l()}),mxUtils.bind(this,function(){a.handleError({message:mxResources.get("cannotOpenFile")})})):a.importFile(b,c,k,m,0,0,e,function(b){a.spinner.stop();d.setSelectionCells(b);d.scrollCellToVisible(d.getSelectionCell())})}),l=mxUtils.bind(this,function(a){var b="text/xml"; +/\.png$/i.test(a)?b="image/png":/\.jpe?g$/i.test(a)?b="image/jpg":/\.gif$/i.test(a)&&(b="image/gif");return b});"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!=a.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){f(a.drive)},c):e&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1));null!=a.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){f(a.oneDrive)},c):m&&b.addItem(mxResources.get("oneDrive")+ +" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){f(a.dropbox)},c):k&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){f(a.gitHub)},c);null!=a.trello?b.addItem(mxResources.get("trello")+"...",null,function(){f(a.trello)},c):n&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+ +"...)",null,function(){},c,null,!1);b.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){a.importLocalFile(!1)},c);b.addItem(mxResources.get("device")+"...",null,function(){a.importLocalFile(!0)},c);a.isOffline()||(b.addSeparator(c),b.addItem(mxResources.get("url")+"...",null,function(){var b=new FilenameDialog(a,"",mxResources.get("import"),function(b){if(null!=b&&0<b.length&&a.spinner.spin(document.body,mxResources.get("loading"))){var c= +/(\.png)($|\?)/i.test(b)?"image/png":"text/xml";a.loadUrl(PROXY_URL+"?url="+encodeURIComponent(b),function(a){g(a,c,b)},function(){a.spinner.stop();a.handleError(null,mxResources.get("errorLoadingFile"))},"image/png"==c)}},mxResources.get("url"));a.showDialog(b.container,300,80,!0,!0);b.init()},c))}))).isEnabled=g;this.put("theme",new Menu(mxUtils.bind(this,function(b,c){var d=mxSettings.getUi(),e=b.addItem(mxResources.get("automatic"),null,function(){mxSettings.setUi("");mxSettings.save();a.alert(mxResources.get("restartForChangeRequired"))}, +c);"kennedy"!=d&&"atlas"!=d&&"dark"!=d&&"min"!=d&&b.addCheckmark(e,Editor.checkmarkImage);b.addSeparator(c);e=b.addItem(mxResources.get("kennedy"),null,function(){mxSettings.setUi("kennedy");mxSettings.save();a.alert(mxResources.get("restartForChangeRequired"))},c);"kennedy"==d&&b.addCheckmark(e,Editor.checkmarkImage);e=b.addItem(mxResources.get("minimal"),null,function(){mxSettings.setUi("min");mxSettings.save();a.alert(mxResources.get("restartForChangeRequired"))},c);"min"==d&&b.addCheckmark(e, +Editor.checkmarkImage);e=b.addItem(mxResources.get("atlas"),null,function(){mxSettings.setUi("atlas");mxSettings.save();a.alert(mxResources.get("restartForChangeRequired"))},c);"atlas"==d&&b.addCheckmark(e,Editor.checkmarkImage);e=b.addItem(mxResources.get("dark"),null,function(){mxSettings.setUi("dark");mxSettings.save();a.alert(mxResources.get("restartForChangeRequired"))},c);"dark"==d&&b.addCheckmark(e,Editor.checkmarkImage)})));q=this.editorUi.actions.addAction("rename...",mxUtils.bind(this,function(){var b= +this.editorUi.getCurrentFile();if(null!=b){var c=null!=b.getTitle()?b.getTitle():this.editorUi.defaultFilename,c=new FilenameDialog(this.editorUi,c,mxResources.get("rename"),mxUtils.bind(this,function(a){null!=a&&0<a.length&&null!=b&&this.editorUi.spinner.spin(document.body,mxResources.get("renaming"))&&b.rename(a,mxUtils.bind(this,function(a){this.editorUi.spinner.stop()}),mxUtils.bind(this,function(a){this.editorUi.handleError(a,null!=a?mxResources.get("errorRenamingFile"):null)}))}),b.constructor== +DriveFile||b.constructor==StorageFile?mxResources.get("diagramName"):null,function(b){if(null!=b&&0<b.length)return!0;a.showError(mxResources.get("error"),mxResources.get("invalidName"),mxResources.get("ok"));return!1});this.editorUi.showDialog(c.container,300,80,!0,!0);c.init()}}));q.isEnabled=function(){return this.enabled&&g.apply(this,arguments)};q.visible="1"!=urlParams.embed;a.actions.addAction("makeCopy...",mxUtils.bind(this,function(){var b=a.getCurrentFile();if(null!=b){var c=a.getCopyFilename(b); +b.constructor==DriveFile?(c=new CreateDialog(a,c,mxUtils.bind(this,function(c,d){"download"==d&&(d=App.MODE_GOOGLE);null!=c&&0<c.length&&(d==App.MODE_GOOGLE?a.spinner.spin(document.body,mxResources.get("saving"))&&b.saveAs(c,mxUtils.bind(this,function(c){b.desc=c;b.save(!1,mxUtils.bind(this,function(){a.spinner.stop();b.setModified(!1);b.addAllSavedStatus()}),mxUtils.bind(this,function(b){a.handleError(b)}))}),mxUtils.bind(this,function(b){a.handleError(b)})):a.createFile(c,a.getFileData(!0),null, +d))}),mxUtils.bind(this,function(){a.hideDialog()}),mxResources.get("makeCopy"),mxResources.get("create"),null,null,null,null,!0),a.showDialog(c.container,420,380,!0,!0),c.init()):a.editor.editAsNew(this.editorUi.getFileData(!0),c)}}));a.actions.addAction("moveToFolder...",mxUtils.bind(this,function(){var b=a.getCurrentFile();b.getMode()!=App.MODE_GOOGLE&&b.getMode()!=App.MODE_ONEDRIVE||a.pickFolder(b.getMode(),mxUtils.bind(this,function(c){a.spinner.spin(document.body,mxResources.get("moving"))&& +b.move(c,mxUtils.bind(this,function(b){a.spinner.stop()}),mxUtils.bind(this,function(b){a.handleError(b)}))}),null,!0)}));this.put("publish",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,["publishLink"],b)})));a.actions.put("useOffline",new Action(mxResources.get("useOffline")+"...",function(){a.openLink("https://app.draw.io/")}));a.actions.put("downloadDesktop",new Action(mxResources.get("downloadDesktop")+"...",function(){a.openLink("https://get.draw.io/")}));this.editorUi.actions.addAction("share...", +mxUtils.bind(this,function(){var a=this.editorUi.getCurrentFile();null!=a&&this.editorUi.drive.showPermissions(a.getId())}));this.put("embed",new Menu(mxUtils.bind(this,function(b,c){"1"==urlParams.test&&this.addMenuItems(b,["liveImage","-"],c);this.addMenuItems(b,["embedImage","embedSvg","-","embedHtml"],c);navigator.standalone||a.isOffline()||this.addMenuItems(b,["embedIframe"],c);"1"==urlParams.embed||a.isOffline()||this.addMenuItems(b,["-","googleDocs","googleSlides"],c)})));var u=function(b, +c,d,e){("plantUml"!=e||EditorUi.enablePlantUml&&!a.isOffline())&&b.addItem(d,null,mxUtils.bind(this,function(){if("fromText"==e||"formatSql"==e||"plantUml"==e){var b=new ParseDialog(a,d,e);a.showDialog(b.container,620,420,!0,!1);a.dialog.container.style.overflow="auto"}else b=new CreateGraphDialog(a,d,e),a.showDialog(b.container,620,420,!0,!1);b.init()}),c)},x=function(a,b,c,e){var f=d.isMouseInsertPoint()?d.getInsertPoint():d.getFreeInsertPoint();a=new mxCell(a,new mxGeometry(f.x,f.y,b,c),e);a.vertex= +!0;d.getModel().beginUpdate();try{a=d.addCell(a),d.fireEvent(new mxEventObject("cellsInserted","cells",[a]))}finally{d.getModel().endUpdate()}d.scrollCellToVisible(a);d.setSelectionCell(a);d.container.focus();d.editAfterInsert&&d.startEditing(a);return a};a.actions.put("exportSvg",new Action(mxResources.get("formatSvg")+"...",function(){a.showExportDialog(mxResources.get("formatSvg"),!0,mxResources.get("export"),"https://support.draw.io/display/DO/Exporting+Files",mxUtils.bind(this,function(b,c,d, +e,f,g,k,m,l,n){b=parseInt(b);!isNaN(b)&&0<b&&a.exportSvg(b/100,c,d,e,f,g,k,!m,l,n)}),!0,null,"svg")}));a.actions.put("insertText",new Action(mxResources.get("text"),function(){d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())&&d.startEditingAtCell(x("Text",40,20,"text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;rounded=0;"))}),null,null,Editor.ctrlKey+"+Shift+X").isEnabled=g;a.actions.put("insertRectangle",new Action(mxResources.get("rectangle"), +function(){d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())&&x("",120,60,"whiteSpace=wrap;html=1;")}),null,null,Editor.ctrlKey+"+K").isEnabled=g;a.actions.put("insertEllipse",new Action(mxResources.get("ellipse"),function(){d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())&&x("",80,80,"ellipse;whiteSpace=wrap;html=1;")}),null,null,Editor.ctrlKey+"+Shift+K").isEnabled=g;a.actions.put("insertRhombus",new Action(mxResources.get("rhombus"),function(){d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())&& +x("",80,80,"rhombus;whiteSpace=wrap;html=1;")})).isEnabled=g;var z=mxUtils.bind(this,function(a,b,c){for(var d=0;d<c.length;d++)"-"==c[d]?a.addSeparator(b):u(a,b,mxResources.get(c[d])+"...",c[d])});this.put("insert",new Menu(mxUtils.bind(this,function(b,c){this.addMenuItems(b,"insertRectangle insertEllipse insertRhombus - insertText insertLink - insertImage".split(" "),c);a.insertTemplateEnabled&&!a.isOffline()&&this.addMenuItems(b,["insertTemplate","-"],c);this.addSubmenu("insertLayout",b,c,mxResources.get("layout")); +b.addSeparator(c);z(b,c,["fromText","plantUml","-","formatSql"]);b.addItem(mxResources.get("csv")+"...",null,function(){a.showImportCsvDialog()},c)})));this.put("insertLayout",new Menu(mxUtils.bind(this,function(a,b){z(a,b,"horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "))})));this.put("openRecent",new Menu(function(b,c){var d=a.getRecent();if(null!=d){for(var e=0;e<d.length;e++)(function(d){var e=d.mode;e==App.MODE_GOOGLE?e="googleDrive":e==App.MODE_ONEDRIVE&& +(e="oneDrive");b.addItem(d.title+" ("+mxResources.get(e)+")",null,function(){a.loadFile(d.id)},c)})(d[e]);b.addSeparator(c)}b.addItem(mxResources.get("reset"),null,function(){a.resetRecent()},c)}));this.put("openFrom",new Menu(function(b,c){null!=a.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){a.pickFile(App.MODE_GOOGLE)},c):e&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.oneDrive?b.addItem(mxResources.get("oneDrive")+ +"...",null,function(){a.pickFile(App.MODE_ONEDRIVE)},c):m&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){a.pickFile(App.MODE_DROPBOX)},c):k&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){a.pickFile(App.MODE_GITHUB)},c);null!=a.trello? +b.addItem(mxResources.get("trello")+"...",null,function(){a.pickFile(App.MODE_TRELLO)},c):n&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);b.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){a.pickFile(App.MODE_BROWSER)},c);b.addItem(mxResources.get("device")+"...",null,function(){a.pickFile(App.MODE_DEVICE)},c);a.isOffline()||(b.addSeparator(c),b.addItem(mxResources.get("url")+ +"...",null,function(){var b=new FilenameDialog(a,"",mxResources.get("open"),function(b){null!=b&&0<b.length&&(null==a.getCurrentFile()?window.location.hash="#U"+encodeURIComponent(b):window.openWindow((mxClient.IS_CHROMEAPP?"https://www.draw.io/":"https://"+location.host+"/")+window.location.search+"#U"+encodeURIComponent(b)))},mxResources.get("url"));a.showDialog(b.container,300,80,!0,!0);b.init()},c))}));Editor.enableCustomLibraries&&(this.put("newLibrary",new Menu(function(b,c){"undefined"!=typeof google&& +"undefined"!=typeof google.picker&&(null!=a.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_GOOGLE)},c):e&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1));null!=a.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_ONEDRIVE)},c):m&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)", +null,function(){},c,null,!1);null!=a.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_DROPBOX)},c):k&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_GITHUB)},c);null!=a.trello?b.addItem(mxResources.get("trello")+"...",null,function(){a.showLibraryDialog(null, +null,null,null,App.MODE_TRELLO)},c):n&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);b.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_BROWSER)},c);b.addItem(mxResources.get("device")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_DEVICE)},c)})),this.put("openLibraryFrom",new Menu(function(b,c){"undefined"!= +typeof google&&"undefined"!=typeof google.picker&&(null!=a.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){a.pickLibrary(App.MODE_GOOGLE)},c):e&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1));null!=a.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){a.pickLibrary(App.MODE_ONEDRIVE)},c):m&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!= +a.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){a.pickLibrary(App.MODE_DROPBOX)},c):k&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){a.pickLibrary(App.MODE_GITHUB)},c);null!=a.trello?b.addItem(mxResources.get("trello")+"...",null,function(){a.pickLibrary(App.MODE_TRELLO)},c):n&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+ +"...)",null,function(){},c,null,!1);b.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){a.pickLibrary(App.MODE_BROWSER)},c);b.addItem(mxResources.get("device")+"...",null,function(){a.pickLibrary(App.MODE_DEVICE)},c);a.isOffline()||(b.addSeparator(c),b.addItem(mxResources.get("url")+"...",null,function(){var b=new FilenameDialog(a,"",mxResources.get("open"),function(b){if(null!=b&&0<b.length&&a.spinner.spin(document.body,mxResources.get("loading"))){var c= +b;a.isCorsEnabledForUrl(b)||(c=PROXY_URL+"?url="+encodeURIComponent(b));mxUtils.get(c,function(c){if(200<=c.getStatus()&&299>=c.getStatus()){a.spinner.stop();try{a.loadLibrary(new UrlLibrary(this,c.getText(),b))}catch(E){a.handleError(E,mxResources.get("errorLoadingFile"))}}else a.spinner.stop(),a.handleError(null,mxResources.get("errorLoadingFile"))},function(){a.spinner.stop();a.handleError(null,mxResources.get("errorLoadingFile"))})}},mxResources.get("url"));a.showDialog(b.container,300,80,!0, +!0);b.init()},c))})));this.put("edit",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,"undo redo - cut copy paste delete - duplicate - find - editData editTooltip - editStyle editGeometry - edit - editLink openLink - selectVertices selectEdges selectAll selectNone - lockUnlock".split(" "))})));this.put("view",new Menu(mxUtils.bind(this,function(b,c){this.addMenuItems(b,(null!=this.editorUi.format?["formatPanel"]:[]).concat(["outline","layers","-"]));this.addMenuItems(b,["-","search"], +c);if(isLocalStorage||mxClient.IS_CHROMEAPP){var d=this.addMenuItem(b,"scratchpad",c);a.isOffline()&&!mxClient.IS_CHROMEAPP||this.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000042367")}this.addMenuItems(b,"shapes - pageView pageScale - scrollbars tooltips - grid guides".split(" "),c);mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode)&&this.addMenuItem(b,"shadowVisible",c);this.addMenuItems(b,"- connectionArrows connectionPoints - resetView zoomIn zoomOut".split(" "), +c)})));this.put("extras",new Menu(mxUtils.bind(this,function(b,c){"1"!=urlParams.embed&&(this.addSubmenu("theme",b,c),b.addSeparator(c));this.addMenuItems(b,["copyConnect","collapseExpand","-"],c);if("undefined"!==typeof MathJax){var d=this.addMenuItem(b,"mathematicalTypesetting",c);this.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000032875")}"1"!=urlParams.embed&&this.addMenuItems(b,["autosave"],c);this.addMenuItems(b,["-","createShape","editDiagram"],c);b.addSeparator(c); +"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&this.addMenuItems(b,["showStartScreen"],c);!a.isOfflineApp()&&isLocalStorage&&this.addMenuItem(b,"plugins",c);b.addSeparator(c);this.addMenuItem(b,"tags",c);b.addSeparator(c);"1"==urlParams.newTempDlg&&(a.actions.addAction("templates",function(){var b=new TemplatesDialog;a.showDialog(b.container,b.width,b.height,!0,!1,null,!1,!0);b.init(a,function(a){console.log(a)},null,null,null,"user",function(a,b){setTimeout(function(){b?a([{url:"123", +title:"Test 1Test 1Test 1Test 1Test 1Test 1Test 11Test 1Test 11Test 1Test 1dgdsgdfg fdg dfgdfg dfg dfg"},{url:"123",title:"Test 2",imgUrl:"https://www.google.com.eg/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"},{url:"123",title:"Test 3",changedBy:"Ashraf Teleb",lastModifiedOn:"Yesterday"},{url:"123",title:"Test 4"},{url:"123",title:"Test 5"},{url:"123",title:"Test 6"}]):a([{url:"123",title:"Test 4",imgUrl:"https://images.pexels.com/photos/459225/pexels-photo-459225.jpeg"},{url:"123", +title:"Test 5"},{url:"123",title:"Test 6"},{url:"123",title:"Test 1Test 1Test 1Test 1Test 1Test 1Test 11Test 1Test 11Test 1Test 1dgdsgdfg fdg dfgdfg dfg dfg"},{url:"123",title:"Test 2",imgUrl:"https://www.google.com.eg/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"},{url:"123",title:"Test 3",changedBy:"Ashraf Teleb",lastModifiedOn:"Yesterday"}]);console.log(b)},1E3)},function(a,b,c){setTimeout(function(){b(c?[{url:"123",title:a+"Test 1Test 1Test 1Test 1Test 1Test 1Test 1"},{url:"123", +title:a+"Test 2"},{url:"123",title:a+"Test 3"},{url:"123",title:a+"Test 4"},{url:"123",title:a+"Test 5"},{url:"123",title:a+"Test 6"}]:[{url:"123",title:a+"Test 5"},{url:"123",title:a+"Test 6"},{url:"123",title:a+"Test 1Test 1Test 1Test 1Test 1Test 1Test 1"},{url:"123",title:a+"Test 2"},{url:"123",title:a+"Test 3"},{url:"123",title:a+"Test 4"}])},2E3)},null)}),this.addMenuItem(b,"templates",c))})));this.put("file",new Menu(mxUtils.bind(this,function(b,c){if("1"==urlParams.embed)this.addSubmenu("importFrom", +b,c),this.addSubmenu("exportAs",b,c),this.addSubmenu("embed",b,c),"1"==urlParams.libraries&&(this.addMenuItems(b,["-"],c),this.addSubmenu("newLibrary",b,c),this.addSubmenu("openLibraryFrom",b,c)),this.addMenuItems(b,"- pageSetup print - rename save".split(" "),c),"1"==urlParams.saveAndExit&&this.addMenuItems(b,["saveAndExit"],c),this.addMenuItems(b,["exit"],c);else{var d=this.editorUi.getCurrentFile();if(null!=d&&d.constructor==DriveFile){d.isRestricted()&&this.addMenuItems(b,["exportOptionsDisabled"], +c);this.addMenuItems(b,["save","-","share"],c);var e=this.addMenuItem(b,"synchronize",c);a.isOffline()&&!mxClient.IS_CHROMEAPP||this.addLinkToItem(e,"https://desk.draw.io/support/solutions/articles/16000087947");b.addSeparator(c)}else this.addMenuItems(b,["new"],c);this.addSubmenu("openFrom",b,c);isLocalStorage&&this.addSubmenu("openRecent",b,c);null!=d&&d.constructor==DriveFile?this.addMenuItems(b,["new","-","rename","makeCopy","moveToFolder"],c):(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null== +d||d.constructor==LocalFile||(b.addSeparator(c),e=this.addMenuItem(b,"synchronize",c),a.isOffline()&&!mxClient.IS_CHROMEAPP||this.addLinkToItem(e,"https://desk.draw.io/support/solutions/articles/16000087947")),this.addMenuItems(b,["-","save","saveAs"],c),this.addMenuItems(b,["-","rename"],c),a.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&this.addMenuItems(b,["upload"],c):(this.addMenuItems(b,["makeCopy"],c),null!=d&&d.constructor==OneDriveFile&&this.addMenuItems(b,["moveToFolder"],c))); +b.addSeparator(c);this.addSubmenu("importFrom",b,c);this.addSubmenu("exportAs",b,c);b.addSeparator(c);this.addSubmenu("embed",b,c);this.addSubmenu("publish",b,c);b.addSeparator(c);this.addSubmenu("newLibrary",b,c);this.addSubmenu("openLibraryFrom",b,c);null!=d&&d.isRevisionHistorySupported()&&this.addMenuItems(b,["-","revisionHistory"],c);this.addMenuItems(b,["-","pageSetup"],c);mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(b,["print"],c);this.addMenuItems(b,["-","close"])}})))}})();function DiagramPage(a){this.node=a;null==this.getId()&&this.node.setAttribute("id",Editor.guid())}DiagramPage.prototype.node=null;DiagramPage.prototype.root=null;DiagramPage.prototype.viewState=null;DiagramPage.prototype.getId=function(){return this.node.getAttribute("id")};DiagramPage.prototype.getName=function(){return this.node.getAttribute("name")};DiagramPage.prototype.setName=function(a){null==a?this.node.removeAttribute("name"):this.node.setAttribute("name",a)}; function RenamePage(a,c,b){this.ui=a;this.page=c;this.previous=this.name=b}RenamePage.prototype.execute=function(){var a=this.page.getName();this.page.setName(this.previous);this.name=this.previous;this.previous=a;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageRenamed"))};function MovePage(a,c,b){this.ui=a;this.oldIndex=c;this.newIndex=b} MovePage.prototype.execute=function(){this.ui.pages.splice(this.newIndex,0,this.ui.pages.splice(this.oldIndex,1)[0]);var a=this.oldIndex;this.oldIndex=this.newIndex;this.newIndex=a;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageMoved"))};function SelectPage(a,c,b){this.ui=a;this.previousPage=this.page=c;this.neverShown=!0;null!=c&&(this.neverShown=null==c.viewState,this.ui.updatePageRoot(c),null!=b&&(c.viewState=b,this.neverShown=!1))} -SelectPage.prototype.execute=function(){var a=mxUtils.indexOf(this.ui.pages,this.previousPage);if(null!=this.page&&0<=a){var a=this.ui.currentPage,c=this.ui.editor,b=c.graph,d=c.graph.compress(b.zapGremlins(mxUtils.getXml(c.getGraphXml(!0))));mxUtils.setTextContent(a.node,d);a.viewState=b.getViewState();a.root=b.model.root;null!=a.model&&a.model.rootChanged(a.root);b.view.clear(a.root,!0);b.clearSelection();this.ui.currentPage=this.previousPage;this.previousPage=a;a=this.ui.currentPage;b.model.rootChanged(a.root); -b.setViewState(a.viewState);c.fireEvent(new mxEventObject("setViewState","change",this));b.gridEnabled=b.gridEnabled&&(!this.ui.editor.isChromelessView()||"1"==urlParams.grid);c.updateGraphComponents();b.view.validate();b.sizeDidChange();this.neverShown&&(this.neverShown=!1,b.selectUnlockedLayer());c.graph.fireEvent(new mxEventObject(mxEvent.ROOT));c.fireEvent(new mxEventObject("pageSelected","change",this))}}; +SelectPage.prototype.execute=function(){var a=mxUtils.indexOf(this.ui.pages,this.previousPage);if(null!=this.page&&0<=a){var a=this.ui.currentPage,c=this.ui.editor,b=c.graph,d=c.graph.compress(b.zapGremlins(mxUtils.getXml(c.getGraphXml(!0))));mxUtils.setTextContent(a.node,d);a.viewState=b.getViewState();a.root=b.model.root;null!=a.model&&a.model.rootChanged(a.root);b.view.clear(a.root,!0);b.clearSelection();this.ui.currentPage=this.previousPage;this.previousPage=a;a=this.ui.currentPage;b.model.prefix= +Editor.guid()+"-";b.model.rootChanged(a.root);b.setViewState(a.viewState);b.gridEnabled=b.gridEnabled&&(!this.ui.editor.isChromelessView()||"1"==urlParams.grid);c.updateGraphComponents();b.view.validate();b.sizeDidChange();this.neverShown&&(this.neverShown=!1,b.selectUnlockedLayer());c.graph.fireEvent(new mxEventObject(mxEvent.ROOT));c.fireEvent(new mxEventObject("pageSelected","change",this))}}; function ChangePage(a,c,b,d){SelectPage.call(this,a,b);this.relatedPage=c;this.index=d;this.previousIndex=null}mxUtils.extend(ChangePage,SelectPage); ChangePage.prototype.execute=function(){this.ui.editor.fireEvent(new mxEventObject("beforePageChange","change",this));this.previousIndex=this.index;if(null==this.index){var a=mxUtils.indexOf(this.ui.pages,this.relatedPage);this.ui.pages.splice(a,1);this.index=a}else this.ui.pages.splice(this.index,0,this.relatedPage),this.index=null;SelectPage.prototype.execute.apply(this,arguments)}; EditorUi.prototype.getSelectedPageIndex=function(){var a=null;if(null!=this.pages&&null!=this.currentPage)for(var c=0;c<this.pages.length;c++)if(this.pages[c]==this.currentPage){a=c;break}return a};EditorUi.prototype.getPageById=function(a){if(null!=this.pages)for(var c=0;c<this.pages.length;c++)if(this.pages[c].getId()==a)return this.pages[c];return null}; EditorUi.prototype.initPages=function(){this.actions.addAction("previousPage",mxUtils.bind(this,function(){this.selectNextPage(!1)}));this.actions.addAction("nextPage",mxUtils.bind(this,function(){this.selectNextPage(!0)}));this.keyHandler.bindAction(33,!0,"previousPage",!0);this.keyHandler.bindAction(34,!0,"nextPage",!0);var a=this.editor.graph,c=a.view.validateBackground;a.view.validateBackground=mxUtils.bind(this,function(){if(null!=this.tabContainer){var b=this.tabContainer.style.height;this.tabContainer.style.height= null==this.fileNode||null==this.pages||1==this.pages.length&&"0"==urlParams.pages?"0px":"30px";b!=this.tabContainer.style.height&&this.refresh(!1)}c.apply(a.view,arguments)});var b=null,d=mxUtils.bind(this,function(){this.updateTabContainer();var c=this.currentPage;null!=c&&c!=b&&(null==c.viewState||null==c.viewState.scrollLeft?(this.resetScrollbars(),a.isLightboxView()&&this.lightboxFit(),null!=this.chromelessResize&&(a.container.scrollLeft=0,a.container.scrollTop=0,this.chromelessResize())):(a.container.scrollLeft= a.view.translate.x*a.view.scale+c.viewState.scrollLeft,a.container.scrollTop=a.view.translate.y*a.view.scale+c.viewState.scrollTop),b=c);null!=this.actions.layersWindow&&this.actions.layersWindow.refreshLayers();"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?1!=MathJax.Hub.queue.pending||null==this.editor||this.editor.graph.mathEnabled||MathJax.Hub.Queue(mxUtils.bind(this,function(){null!=this.editor&&this.editor.graph.refresh()})):"undefined"===typeof Editor.MathJaxClear||null!=this.editor&& -this.editor.graph.mathEnabled||Editor.MathJaxClear()});this.editor.graph.model.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(a,b){for(var c=b.getProperty("edit").changes,f=0;f<c.length;f++)if(c[f]instanceof SelectPage||c[f]instanceof RenamePage||c[f]instanceof MovePage||c[f]instanceof mxRootChange){d();break}}));null!=this.toolbar&&this.editor.addListener("pageSelected",this.toolbar.updateZoom)}; +this.editor.graph.mathEnabled||Editor.MathJaxClear()});this.editor.graph.model.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(a,b){for(var c=b.getProperty("edit").changes,e=0;e<c.length;e++)if(c[e]instanceof SelectPage||c[e]instanceof RenamePage||c[e]instanceof MovePage||c[e]instanceof mxRootChange){d();break}}));null!=this.toolbar&&this.editor.addListener("pageSelected",this.toolbar.updateZoom)}; EditorUi.prototype.restoreViewState=function(a,c,b){a=null!=a?this.getPageById(a.getId()):null;var d=this.editor.graph;null!=a&&null!=this.currentPage&&null!=this.pages&&(a!=this.currentPage?this.selectPage(a,!0,c):(d.setViewState(c),this.editor.updateGraphComponents(),d.view.revalidate(),d.sizeDidChange()),d.container.scrollLeft=d.view.translate.x*d.view.scale+c.scrollLeft,d.container.scrollTop=d.view.translate.y*d.view.scale+c.scrollTop,d.restoreSelection(b))}; -Graph.prototype.createViewState=function(a){var c=a.getAttribute("page"),b=parseFloat(a.getAttribute("pageScale")),d=parseFloat(a.getAttribute("pageWidth")),f=parseFloat(a.getAttribute("pageHeight")),h=a.getAttribute("background"),k=a.getAttribute("backgroundImage"),k=null!=k&&0<k.length?JSON.parse(k):null;return{gridEnabled:"0"!=a.getAttribute("grid"),gridSize:parseFloat(a.getAttribute("gridSize"))||mxGraph.prototype.gridSize,guidesEnabled:"0"!=a.getAttribute("guides"),foldingEnabled:"0"!=a.getAttribute("fold"), -shadowVisible:"1"==a.getAttribute("shadow"),pageVisible:this.isLightboxView()?!1:null!=c?"0"!=c:this.defaultPageVisible,background:null!=h&&0<h.length?h:null,backgroundImage:null!=k?new mxImage(k.src,k.width,k.height):null,pageScale:isNaN(b)?mxGraph.prototype.pageScale:b,pageFormat:isNaN(d)||isNaN(f)?mxSettings.getPageFormat():new mxRectangle(0,0,d,f),tooltips:"0"!=a.getAttribute("tooltips"),connect:"0"!=a.getAttribute("connect"),arrows:"0"!=a.getAttribute("arrows"),mathEnabled:"1"==a.getAttribute("math"), +Graph.prototype.createViewState=function(a){var c=a.getAttribute("page"),b=parseFloat(a.getAttribute("pageScale")),d=parseFloat(a.getAttribute("pageWidth")),g=parseFloat(a.getAttribute("pageHeight")),e=a.getAttribute("background"),k=a.getAttribute("backgroundImage"),k=null!=k&&0<k.length?JSON.parse(k):null;return{gridEnabled:"0"!=a.getAttribute("grid"),gridSize:parseFloat(a.getAttribute("gridSize"))||mxGraph.prototype.gridSize,guidesEnabled:"0"!=a.getAttribute("guides"),foldingEnabled:"0"!=a.getAttribute("fold"), +shadowVisible:"1"==a.getAttribute("shadow"),pageVisible:this.isLightboxView()?!1:null!=c?"0"!=c:this.defaultPageVisible,background:null!=e&&0<e.length?e:null,backgroundImage:null!=k?new mxImage(k.src,k.width,k.height):null,pageScale:isNaN(b)?mxGraph.prototype.pageScale:b,pageFormat:isNaN(d)||isNaN(g)?mxSettings.getPageFormat():new mxRectangle(0,0,d,g),tooltips:"0"!=a.getAttribute("tooltips"),connect:"0"!=a.getAttribute("connect"),arrows:"0"!=a.getAttribute("arrows"),mathEnabled:"1"==a.getAttribute("math"), selectionCells:null,defaultParent:null,scrollbars:this.defaultScrollbars,scale:1}}; Graph.prototype.saveViewState=function(a,c,b){b||(c.setAttribute("grid",null==a||a.gridEnabled?"1":"0"),c.setAttribute("gridSize",null!=a?a.gridSize:mxGraph.prototype.gridSize),c.setAttribute("guides",null==a||a.guidesEnabled?"1":"0"),c.setAttribute("tooltips",null==a||a.tooltips?"1":"0"),c.setAttribute("connect",null==a||a.connect?"1":"0"),c.setAttribute("arrows",null==a||a.arrows?"1":"0"),c.setAttribute("page",null==a&&this.defaultPageVisible||null!=a&&a.pageVisible?"1":"0"),c.setAttribute("fold", null==a||a.foldingEnabled?"1":"0"));c.setAttribute("pageScale",null!=a&&null!=a.pageScale?a.pageScale:mxGraph.prototype.pageScale);b=null!=a?a.pageFormat:mxSettings.getPageFormat();null!=b&&(c.setAttribute("pageWidth",b.width),c.setAttribute("pageHeight",b.height));null!=a&&null!=a.background&&c.setAttribute("background",a.background);null!=a&&null!=a.backgroundImage&&c.setAttribute("backgroundImage",JSON.stringify(a.backgroundImage));c.setAttribute("math",null!=a&&a.mathEnabled?"1":"0");c.setAttribute("shadow", @@ -8835,143 +8841,143 @@ arrows:this.connectionArrowsEnabled,scale:this.view.scale,scrollLeft:this.contai Graph.prototype.setViewState=function(a){null!=a?(this.lastPasteXml=a.lastPasteXml,this.pasteCounter=a.pasteCounter||0,this.mathEnabled=a.mathEnabled,this.gridEnabled=a.gridEnabled,this.gridSize=a.gridSize,this.graphHandler.guidesEnabled=a.guidesEnabled,this.foldingEnabled=a.foldingEnabled,this.setShadowVisible(a.shadowVisible,!1),this.scrollbars=a.scrollbars,this.pageVisible=a.pageVisible,this.background=a.background,this.backgroundImage=a.backgroundImage,this.pageScale=a.pageScale,this.pageFormat= a.pageFormat,this.view.currentRoot=a.currentRoot,this.defaultParent=a.defaultParent,this.connectionArrowsEnabled=a.arrows,this.setTooltips(a.tooltips),this.setConnectable(a.connect),this.view.scale=null!=a.scale?a.scale:1,null==this.view.currentRoot||this.model.contains(this.view.currentRoot)||(this.view.currentRoot=null),null==this.defaultParent||this.model.contains(this.defaultParent)||(this.setDefaultParent(null),this.selectUnlockedLayer()),null!=a.translate&&(this.view.translate=a.translate)): (this.view.currentRoot=null,this.view.scale=1,this.gridEnabled=!0,this.gridSize=mxGraph.prototype.gridSize,this.pageScale=mxGraph.prototype.pageScale,this.pageFormat=mxSettings.getPageFormat(),this.pageVisible=this.defaultPageVisible,this.backgroundImage=this.background=null,this.scrollbars=this.defaultScrollbars,this.foldingEnabled=this.graphHandler.guidesEnabled=!0,this.setShadowVisible(!1,!1),this.defaultParent=null,this.setTooltips(!0),this.setConnectable(!0),this.lastPasteXml=null,this.pasteCounter= -0,this.mathEnabled=!1,this.connectionArrowsEnabled=!0);this.preferPageSize=this.pageBreaksVisible=this.pageVisible}; +0,this.mathEnabled=!1,this.connectionArrowsEnabled=!0);this.preferPageSize=this.pageBreaksVisible=this.pageVisible;this.fireEvent(new mxEventObject("viewStateChanged","state",a))}; EditorUi.prototype.updatePageRoot=function(a){if(null==a.root){var c=this.editor.extractGraphModel(a.node);if(null!=c){a.graphModelNode=c;a.viewState=this.editor.graph.createViewState(c);var b=new mxCodec(c.ownerDocument);a.root=b.decode(c).root}else a.root=this.editor.graph.model.createRoot()}else null==a.viewState&&(null==a.graphModelNode&&(c=this.editor.extractGraphModel(a.node),null!=c&&(a.graphModelNode=c)),null!=a.graphModelNode&&(a.viewState=this.editor.graph.createViewState(a.graphModelNode))); -return a};EditorUi.prototype.selectPage=function(a,c,b){try{this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);c=null!=c?c:!1;this.editor.graph.isMouseDown=!1;this.editor.graph.reset();var d=this.editor.graph.model.createUndoableEdit();d.ignoreEdit=!0;var f=new SelectPage(this,a,b);f.execute();d.add(f);d.notify();this.editor.graph.tooltipHandler.hide();c||this.editor.graph.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",d))}catch(h){this.handleError(h)}}; +return a};EditorUi.prototype.selectPage=function(a,c,b){try{this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);c=null!=c?c:!1;this.editor.graph.isMouseDown=!1;this.editor.graph.reset();var d=this.editor.graph.model.createUndoableEdit();d.ignoreEdit=!0;var g=new SelectPage(this,a,b);g.execute();d.add(g);d.notify();this.editor.graph.tooltipHandler.hide();c||this.editor.graph.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",d))}catch(e){this.handleError(e)}}; EditorUi.prototype.selectNextPage=function(a){var c=this.currentPage;null!=c&&null!=this.pages&&(c=mxUtils.indexOf(this.pages,c),a?this.selectPage(this.pages[mxUtils.mod(c+1,this.pages.length)]):a||this.selectPage(this.pages[mxUtils.mod(c-1,this.pages.length)]))};EditorUi.prototype.insertPage=function(a,c){if(this.editor.graph.isEnabled()){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);a=null!=a?a:this.createPage();c=null!=c?c:this.pages.length;var b=new ChangePage(this,a,a,c);this.editor.graph.model.execute(b)}return a}; EditorUi.prototype.createPage=function(a){var c=new DiagramPage(this.fileNode.ownerDocument.createElement("diagram"));c.setName(null!=a?a:this.createPageName());return c};EditorUi.prototype.createPageName=function(){for(var a={},c=0;c<this.pages.length;c++){var b=this.pages[c].getName();null!=b&&0<b.length&&(a[b]=b)}c=this.pages.length;do b=mxResources.get("pageWithNumber",[++c]);while(null!=a[b]);return b}; -EditorUi.prototype.removePage=function(a){try{var c=this.editor.graph,b=mxUtils.indexOf(this.pages,a);if(c.isEnabled()&&0<=b){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);c.model.beginUpdate();try{var d=this.currentPage;d==a&&1<this.pages.length?(b==this.pages.length-1?b--:b++,d=this.pages[b]):1>=this.pages.length&&(d=this.insertPage(),c.model.execute(new RenamePage(this,d,mxResources.get("pageWithNumber",[1]))));c.model.execute(new ChangePage(this,a,d))}finally{c.model.endUpdate()}}}catch(f){this.handleError(f)}return a}; -EditorUi.prototype.duplicatePage=function(a,c){var b=this.editor.graph,d=null;b.isEnabled()&&(b.isEditing()&&b.stopEditing(),d=a.node.cloneNode(!1),d.removeAttribute("id"),d=new DiagramPage(d),d.root=b.cloneCell(b.model.root),d.viewState=b.getViewState(),d.viewState.scale=1,d.viewState.scrollLeft=null,d.viewState.scrollTop=null,d.viewState.currentRoot=null,d.viewState.defaultParent=null,d.setName(c),d=this.insertPage(d,mxUtils.indexOf(this.pages,a)+1));return d}; +EditorUi.prototype.removePage=function(a){try{var c=this.editor.graph,b=mxUtils.indexOf(this.pages,a);if(c.isEnabled()&&0<=b){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);c.model.beginUpdate();try{var d=this.currentPage;d==a&&1<this.pages.length?(b==this.pages.length-1?b--:b++,d=this.pages[b]):1>=this.pages.length&&(d=this.insertPage(),c.model.execute(new RenamePage(this,d,mxResources.get("pageWithNumber",[1]))));c.model.execute(new ChangePage(this,a,d))}finally{c.model.endUpdate()}}}catch(g){this.handleError(g)}return a}; +EditorUi.prototype.duplicatePage=function(a,c){var b=null;try{var d=this.editor.graph;if(d.isEnabled()){d.isEditing()&&d.stopEditing();var g=a.node.cloneNode(!1);g.removeAttribute("id");b=new DiagramPage(g);b.root=d.cloneCell(d.model.root);b.viewState=d.getViewState();b.viewState.scale=1;b.viewState.scrollLeft=null;b.viewState.scrollTop=null;b.viewState.currentRoot=null;b.viewState.defaultParent=null;b.setName(c);b=this.insertPage(b,mxUtils.indexOf(this.pages,a)+1)}}catch(e){this.handleError(e)}return b}; EditorUi.prototype.renamePage=function(a){if(this.editor.graph.isEnabled()){var c=new FilenameDialog(this,a.getName(),mxResources.get("rename"),mxUtils.bind(this,function(b){null!=b&&0<b.length&&this.editor.graph.model.execute(new RenamePage(this,a,b))}),mxResources.get("rename"));this.showDialog(c.container,300,80,!0,!0);c.init()}return a};EditorUi.prototype.movePage=function(a,c){this.editor.graph.model.execute(new MovePage(this,a,c))}; EditorUi.prototype.createTabContainer=function(){var a=document.createElement("div");a.style.backgroundColor="dark"==uiTheme?"#2a2a2a":"#dcdcdc";a.style.position="absolute";a.style.whiteSpace="nowrap";a.style.overflow="hidden";a.style.height="0px";return a}; EditorUi.prototype.updateTabContainer=function(){if(null!=this.tabContainer&&null!=this.pages){var a=this.editor.graph,c=document.createElement("div");c.style.position="relative";c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";c.style.verticalAlign="top";c.style.height=this.tabContainer.style.height;c.style.whiteSpace="nowrap";c.style.overflow="hidden";c.style.fontSize="12px";c.style.marginLeft="30px";for(var b=this.editor.isChromelessView()?29:59,d=Math.min(140,Math.max(20,(this.tabContainer.clientWidth- -b)/this.pages.length)+1),f=null,h=0;h<this.pages.length;h++)mxUtils.bind(this,function(b,d){this.pages[b]==this.currentPage?(d.className="geActivePage",d.style.backgroundColor="dark"==uiTheme?"#2a2a2a":"#eeeeee",d.style.fontWeight="bold",d.style.borderTopStyle="none"):d.className="geInactivePage";d.setAttribute("draggable","true");mxEvent.addListener(d,"dragstart",mxUtils.bind(this,function(c){a.isEnabled()?(mxClient.IS_FF&&c.dataTransfer.setData("Text","<diagram/>"),f=b):mxEvent.consume(c)}));mxEvent.addListener(d, -"dragend",mxUtils.bind(this,function(a){f=null;a.stopPropagation();a.preventDefault()}));mxEvent.addListener(d,"dragover",mxUtils.bind(this,function(a){null!=f&&(a.dataTransfer.dropEffect="move");a.stopPropagation();a.preventDefault()}));mxEvent.addListener(d,"drop",mxUtils.bind(this,function(a){null!=f&&b!=f&&this.movePage(f,b);a.stopPropagation();a.preventDefault()}));c.appendChild(d)})(h,this.createTabForPage(this.pages[h],d,this.pages[h]!=this.currentPage));this.tabContainer.innerHTML="";this.tabContainer.appendChild(c); +b)/this.pages.length)+1),g=null,e=0;e<this.pages.length;e++)mxUtils.bind(this,function(b,d){this.pages[b]==this.currentPage?(d.className="geActivePage",d.style.backgroundColor="dark"==uiTheme?"#2a2a2a":"#eeeeee",d.style.fontWeight="bold",d.style.borderTopStyle="none"):d.className="geInactivePage";d.setAttribute("draggable","true");mxEvent.addListener(d,"dragstart",mxUtils.bind(this,function(c){a.isEnabled()?(mxClient.IS_FF&&c.dataTransfer.setData("Text","<diagram/>"),g=b):mxEvent.consume(c)}));mxEvent.addListener(d, +"dragend",mxUtils.bind(this,function(a){g=null;a.stopPropagation();a.preventDefault()}));mxEvent.addListener(d,"dragover",mxUtils.bind(this,function(a){null!=g&&(a.dataTransfer.dropEffect="move");a.stopPropagation();a.preventDefault()}));mxEvent.addListener(d,"drop",mxUtils.bind(this,function(a){null!=g&&b!=g&&this.movePage(g,b);a.stopPropagation();a.preventDefault()}));c.appendChild(d)})(e,this.createTabForPage(this.pages[e],d,this.pages[e]!=this.currentPage));this.tabContainer.innerHTML="";this.tabContainer.appendChild(c); d=this.createPageMenuTab();this.tabContainer.appendChild(d);d=null;this.isPageInsertTabVisible()&&(d=this.createPageInsertTab(),this.tabContainer.appendChild(d));if(c.clientWidth>this.tabContainer.clientWidth-b){null!=d&&(d.style.position="absolute",d.style.right="0px",c.style.marginRight="30px");var k=this.createControlTab(4," ❮ ");k.style.position="absolute";k.style.right=this.editor.chromeless?"29px":"55px";k.style.fontSize="13pt";this.tabContainer.appendChild(k);var m=this.createControlTab(4, -" ❯");m.style.position="absolute";m.style.right=this.editor.chromeless?"0px":"29px";m.style.fontSize="13pt";this.tabContainer.appendChild(m);var p=Math.max(0,this.tabContainer.clientWidth-(this.editor.chromeless?86:116));c.style.width=p+"px";mxEvent.addListener(k,"click",mxUtils.bind(this,function(a){c.scrollLeft-=Math.max(20,p-20);mxUtils.setOpacity(k,0<c.scrollLeft?100:50);mxUtils.setOpacity(m,c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.consume(a)}));mxUtils.setOpacity(k, -0<c.scrollLeft?100:50);mxUtils.setOpacity(m,c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.addListener(m,"click",mxUtils.bind(this,function(a){c.scrollLeft+=Math.max(20,p-20);mxUtils.setOpacity(k,0<c.scrollLeft?100:50);mxUtils.setOpacity(m,c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.consume(a)}))}}};EditorUi.prototype.isPageInsertTabVisible=function(){return 1==urlParams.embed||null!=this.getCurrentFile()&&this.getCurrentFile().isEditable()}; +" ❯");m.style.position="absolute";m.style.right=this.editor.chromeless?"0px":"29px";m.style.fontSize="13pt";this.tabContainer.appendChild(m);var n=Math.max(0,this.tabContainer.clientWidth-(this.editor.chromeless?86:116));c.style.width=n+"px";mxEvent.addListener(k,"click",mxUtils.bind(this,function(a){c.scrollLeft-=Math.max(20,n-20);mxUtils.setOpacity(k,0<c.scrollLeft?100:50);mxUtils.setOpacity(m,c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.consume(a)}));mxUtils.setOpacity(k, +0<c.scrollLeft?100:50);mxUtils.setOpacity(m,c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.addListener(m,"click",mxUtils.bind(this,function(a){c.scrollLeft+=Math.max(20,n-20);mxUtils.setOpacity(k,0<c.scrollLeft?100:50);mxUtils.setOpacity(m,c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.consume(a)}))}}};EditorUi.prototype.isPageInsertTabVisible=function(){return 1==urlParams.embed||null!=this.getCurrentFile()&&this.getCurrentFile().isEditable()}; EditorUi.prototype.createTab=function(a){var c=document.createElement("div");c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";c.style.whiteSpace="nowrap";c.style.boxSizing="border-box";c.style.position="relative";c.style.overflow="hidden";c.style.marginLeft="-1px";c.style.height=this.tabContainer.clientHeight+"px";c.style.padding="8px 4px 8px 4px";c.style.border="dark"==uiTheme?"1px solid #505759":"1px solid #c0c0c0";c.style.borderBottomStyle="solid";c.style.backgroundColor=this.tabContainer.style.backgroundColor; c.style.cursor="move";c.style.color="gray";a&&(mxEvent.addListener(c,"mouseenter",mxUtils.bind(this,function(a){this.editor.graph.isMouseDown||(c.style.backgroundColor="dark"==uiTheme?"black":"#d3d3d3",mxEvent.consume(a))})),mxEvent.addListener(c,"mouseleave",mxUtils.bind(this,function(a){c.style.backgroundColor=this.tabContainer.style.backgroundColor;mxEvent.consume(a)})));return c}; EditorUi.prototype.createControlTab=function(a,c){var b=this.createTab(!0);b.style.paddingTop=a+"px";b.style.cursor="pointer";b.style.width="30px";b.style.lineHeight="30px";b.innerHTML=c;null!=b.firstChild&&null!=b.firstChild.style&&mxUtils.setOpacity(b.firstChild,40);return b}; EditorUi.prototype.createPageMenuTab=function(){var a=this.createControlTab(3,'<div class="geSprite geSprite-dots" style="display:inline-block;width:21px;height:21px;"></div>');a.setAttribute("title",mxResources.get("pages"));a.style.position="absolute";a.style.top="0px";a.style.left="1px";mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){this.editor.graph.popupMenuHandler.hideMenu();var b=new mxPopupMenu(mxUtils.bind(this,function(a,b){for(var c=0;c<this.pages.length;c++)mxUtils.bind(this, function(c){var d=a.addItem(this.pages[c].getName(),null,mxUtils.bind(this,function(){this.selectPage(this.pages[c])}),b);this.pages[c]==this.currentPage&&a.addCheckmark(d,Editor.checkmarkImage)})(c);if(this.editor.graph.isEnabled()){a.addSeparator(b);a.addItem(mxResources.get("insertPage"),null,mxUtils.bind(this,function(){this.insertPage()}),b);var d=this.currentPage;null!=d&&(a.addSeparator(b),a.addItem(mxResources.get("delete"),null,mxUtils.bind(this,function(){this.removePage(d)}),b),a.addItem(mxResources.get("rename"), -null,mxUtils.bind(this,function(){this.renamePage(d,d.getName())}),b),a.addSeparator(b),a.addItem(mxResources.get("duplicate"),null,mxUtils.bind(this,function(){this.duplicatePage(d,mxResources.get("copyOf",[d.getName()]))}),b))}}));b.div.className+=" geMenubarMenu";b.smartSeparators=!0;b.showDisabled=!0;b.autoExpand=!0;b.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(b,arguments);b.destroy()});var c=mxEvent.getClientX(a),f=mxEvent.getClientY(a);b.popup(c,f,null,a);this.setCurrentMenu(b); +null,mxUtils.bind(this,function(){this.renamePage(d,d.getName())}),b),a.addSeparator(b),a.addItem(mxResources.get("duplicate"),null,mxUtils.bind(this,function(){this.duplicatePage(d,mxResources.get("copyOf",[d.getName()]))}),b))}}));b.div.className+=" geMenubarMenu";b.smartSeparators=!0;b.showDisabled=!0;b.autoExpand=!0;b.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(b,arguments);b.destroy()});var c=mxEvent.getClientX(a),g=mxEvent.getClientY(a);b.popup(c,g,null,a);this.setCurrentMenu(b); mxEvent.consume(a)}));return a};EditorUi.prototype.createPageInsertTab=function(){var a=this.createControlTab(4,'<div class="geSprite geSprite-plus" style="display:inline-block;width:21px;height:21px;"></div>');a.setAttribute("title",mxResources.get("insertPage"));mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){this.insertPage();mxEvent.consume(a)}));return a}; -EditorUi.prototype.createTabForPage=function(a,c,b){b=this.createTab(b);var d=a.getName()||mxResources.get("untitled"),f=a.getId();b.setAttribute("title",d+(null!=f?" ("+f+")":""));mxUtils.write(b,d);b.style.maxWidth=c+"px";b.style.width=c+"px";this.addTabListeners(a,b);42<c&&(b.style.textOverflow="ellipsis");return b}; -EditorUi.prototype.addTabListeners=function(a,c){mxEvent.disableContextMenu(c);var b=this.editor.graph;mxEvent.addListener(c,"dblclick",mxUtils.bind(this,function(b){this.renamePage(a);mxEvent.consume(b)}));var d=!1,f=!1;mxEvent.addGestureListeners(c,mxUtils.bind(this,function(c){d=null!=this.currentMenu;f=a==this.currentPage;b.isMouseDown||f||this.selectPage(a)}),null,mxUtils.bind(this,function(h){if(b.isEnabled()&&!b.isMouseDown&&(mxEvent.isTouchEvent(h)&&f||mxEvent.isPopupTrigger(h))){b.popupMenuHandler.hideMenu(); -this.hideCurrentMenu();if(!mxEvent.isTouchEvent(h)||!d){var k=new mxPopupMenu(this.createPageMenu(a));k.div.className+=" geMenubarMenu";k.smartSeparators=!0;k.showDisabled=!0;k.autoExpand=!0;k.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(k,arguments);this.resetCurrentMenu();k.destroy()});var m=mxEvent.getClientX(h),p=mxEvent.getClientY(h);k.popup(m,p,null,h);this.setCurrentMenu(k,c)}mxEvent.consume(h)}}))}; +EditorUi.prototype.createTabForPage=function(a,c,b){b=this.createTab(b);var d=a.getName()||mxResources.get("untitled"),g=a.getId();b.setAttribute("title",d+(null!=g?" ("+g+")":""));mxUtils.write(b,d);b.style.maxWidth=c+"px";b.style.width=c+"px";this.addTabListeners(a,b);42<c&&(b.style.textOverflow="ellipsis");return b}; +EditorUi.prototype.addTabListeners=function(a,c){mxEvent.disableContextMenu(c);var b=this.editor.graph;mxEvent.addListener(c,"dblclick",mxUtils.bind(this,function(b){this.renamePage(a);mxEvent.consume(b)}));var d=!1,g=!1;mxEvent.addGestureListeners(c,mxUtils.bind(this,function(c){d=null!=this.currentMenu;g=a==this.currentPage;b.isMouseDown||g||this.selectPage(a)}),null,mxUtils.bind(this,function(e){if(b.isEnabled()&&!b.isMouseDown&&(mxEvent.isTouchEvent(e)&&g||mxEvent.isPopupTrigger(e))){b.popupMenuHandler.hideMenu(); +this.hideCurrentMenu();if(!mxEvent.isTouchEvent(e)||!d){var k=new mxPopupMenu(this.createPageMenu(a));k.div.className+=" geMenubarMenu";k.smartSeparators=!0;k.showDisabled=!0;k.autoExpand=!0;k.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(k,arguments);this.resetCurrentMenu();k.destroy()});var m=mxEvent.getClientX(e),n=mxEvent.getClientY(e);k.popup(m,n,null,e);this.setCurrentMenu(k,c)}mxEvent.consume(e)}}))}; EditorUi.prototype.createPageMenu=function(a,c){return mxUtils.bind(this,function(b,d){b.addItem(mxResources.get("insert"),null,mxUtils.bind(this,function(){this.insertPage(null,mxUtils.indexOf(this.pages,a)+1)}),d);b.addItem(mxResources.get("delete"),null,mxUtils.bind(this,function(){this.removePage(a)}),d);b.addItem(mxResources.get("rename"),null,mxUtils.bind(this,function(){this.renamePage(a,c)}),d);b.addSeparator(d);b.addItem(mxResources.get("duplicate"),null,mxUtils.bind(this,function(){this.duplicatePage(a, mxResources.get("copyOf",[a.getName()]))}),d)})};(function(){var a=EditorUi.prototype.refresh;EditorUi.prototype.refresh=function(c){a.apply(this,arguments);this.updateTabContainer()}})();(function(){mxCodecRegistry.getCodec(ChangePageSetup).exclude.push("page")})();(function(){var a=new mxObjectCodec(new MovePage,["ui"]);a.beforeDecode=function(a,b,d){d.ui=a.ui;return b};a.afterDecode=function(a,b,d){a=d.oldIndex;d.oldIndex=d.newIndex;d.newIndex=a;return d};mxCodecRegistry.register(a)})(); (function(){var a=new mxObjectCodec(new RenamePage,["ui","page"]);a.beforeDecode=function(a,b,d){d.ui=a.ui;return b};a.afterDecode=function(a,b,d){a=d.previous;d.previous=d.name;d.name=a;return d};mxCodecRegistry.register(a)})(); -(function(){var a=new mxObjectCodec(new ChangePage,"ui relatedPage index neverShown page previousPage".split(" ")),c="defaultParent currentRoot scrollLeft scrollTop scale translate lastPasteXml pasteCounter".split(" ");a.afterEncode=function(a,d,f){f.setAttribute("relatedPage",d.relatedPage.getId());null==d.index&&(f.setAttribute("name",d.relatedPage.getName()),null!=d.relatedPage.viewState&&f.setAttribute("viewState",JSON.stringify(d.relatedPage.viewState,function(a,b){return 0>mxUtils.indexOf(c, -a)?b:void 0})),null!=d.relatedPage.root&&a.encodeCell(d.relatedPage.root,f));return f};a.beforeDecode=function(a,c,f){f.ui=a.ui;f.relatedPage=f.ui.getPageById(c.getAttribute("relatedPage"));if(null==f.relatedPage){var b=c.ownerDocument.createElement("diagram");b.setAttribute("id",c.getAttribute("relatedPage"));b.setAttribute("name",c.getAttribute("name"));f.relatedPage=new DiagramPage(b);b=c.getAttribute("viewState");null!=b&&(f.relatedPage.viewState=JSON.parse(b),c.removeAttribute("viewState")); -c=c.cloneNode(!0);b=c.firstChild;if(null!=b)for(f.relatedPage.root=a.decodeCell(b,!1),f=b.nextSibling,b.parentNode.removeChild(b),b=f;null!=b;){f=b.nextSibling;if(b.nodeType==mxConstants.NODETYPE_ELEMENT){var d=b.getAttribute("id");null==a.lookup(d)&&a.decodeCell(b)}b.parentNode.removeChild(b);b=f}}return c};a.afterDecode=function(a,c,f){f.index=f.previousIndex;return f};mxCodecRegistry.register(a)})();(function(){var a=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAASFBMVEUAAAAAAAB/f3/9/f319fUfHx/7+/s+Pj69vb0AAAAAAAAAAAAAAAAAAAAAAAAAAAB2dnZ1dXUAAAAAAAAVFRX///8ZGRkGBgbOcI1hAAAAE3RSTlMA+vr9/f38+fb1893Bo00u+/tFvPJUBQAAAIRJREFUGNM0jEcSxCAQAxlydGqD///TNWxZBx1aXVIrWysplbapL3sFxgDq/idXBnHgBPK1nIxwc55vCXl6dRFtrV6svs/A/UjsPcpzA5tqyByD92HqQlMFh45BG6ND1DiKSoPDdm96N77bg5F+wyaEqRGb8ZiOwHQqdg9hehszcLAEIQB2lQ4p/sEpnAAAAABJRU5ErkJggg==":IMAGE_PATH+"/move.png";EditorUi.prototype.altShiftActions[68]= -"selectDescendants";var c=Graph.prototype.foldCells;Graph.prototype.foldCells=function(a,b,d,m,p){b=null!=b?b:!1;null==d&&(d=this.getFoldableCells(this.getSelectionCells(),a));this.stopEditing();this.model.beginUpdate();try{for(var f=d.slice(),h=[],k=0;k<d.length;k++){var q=this.view.getState(d[k]),t=null!=q?q.style:this.getCellStyle(d[k]);"1"==mxUtils.getValue(t,"treeFolding","0")&&(this.traverse(d[k],!0,mxUtils.bind(this,function(a,b){null!=b&&h.push(b);a!=d[k]&&h.push(a);return a==d[k]||!this.model.isCollapsed(a)})), -this.model.setCollapsed(d[k],a))}for(k=0;k<h.length;k++)this.model.setVisible(h[k],!a);d=f;d=c.apply(this,arguments)}finally{this.model.endUpdate()}return d};var b=EditorUi.prototype.init;EditorUi.prototype.init=function(){b.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function b(a){return w.isVertex(a)&&c(a)}function c(a){var b=!1;null!=a&&(a=w.getParent(a),b=v.view.getState(a),v.view.getState(a),b="tree"==(null!= -b?b.style:v.getCellStyle(a)).containerType);return b}function d(a){var b=!1;null!=a&&(a=w.getParent(a),b=v.view.getState(a),v.view.getState(a),b=null!=(null!=b?b.style:v.getCellStyle(a)).childLayout);return b}function m(a){a=v.view.getState(a);if(null!=a){var b=v.getIncomingEdges(a.cell);if(0<b.length&&(b=v.view.getState(b[0]),null!=b&&(b=b.absolutePoints,null!=b&&0<b.length&&(b=b[b.length-1],null!=b)))){if(b.y==a.y&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_SOUTH;if(b.y== -a.y+a.height&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_NORTH;if(b.x>a.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function p(a,b){b=null!=b?b:!0;v.model.beginUpdate();try{var c=v.model.getParent(a),d=v.getIncomingEdges(a),f=v.cloneCells([d[0],a]);v.model.setTerminal(f[0],v.model.getTerminal(d[0],!0),!0);var g=m(a),h=c.geometry;g==mxConstants.DIRECTION_SOUTH||g==mxConstants.DIRECTION_NORTH?f[1].geometry.x+=b?a.geometry.width+10:-f[1].geometry.width- -10:f[1].geometry.y+=b?a.geometry.height+10:-f[1].geometry.height-10;v.view.currentRoot!=c&&(f[1].geometry.x-=h.x,f[1].geometry.y-=h.y);var k=v.view.getState(a),l=v.view.scale;if(null!=k){var n=mxRectangle.fromRectangle(k);g==mxConstants.DIRECTION_SOUTH||g==mxConstants.DIRECTION_NORTH?n.x+=(b?a.geometry.width+10:-f[1].geometry.width-10)*l:n.y+=(b?a.geometry.height+10:-f[1].geometry.height-10)*l;var p=v.getOutgoingEdges(v.model.getTerminal(d[0],!0));if(null!=p){for(var q=g==mxConstants.DIRECTION_SOUTH|| -g==mxConstants.DIRECTION_NORTH,w=h=d=0;w<p.length;w++){var t=v.model.getTerminal(p[w],!1);if(g==m(t)){var u=v.view.getState(t);t!=a&&null!=u&&(q&&b!=u.getCenterX()<k.getCenterX()||!q&&b!=u.getCenterY()<k.getCenterY())&&mxUtils.intersects(n,u)&&(d=10+Math.max(d,(Math.min(n.x+n.width,u.x+u.width)-Math.max(n.x,u.x))/l),h=10+Math.max(h,(Math.min(n.y+n.height,u.y+u.height)-Math.max(n.y,u.y))/l))}}q?h=0:d=0;for(w=0;w<p.length;w++)if(t=v.model.getTerminal(p[w],!1),g==m(t)&&(u=v.view.getState(t),t!=a&&null!= -u&&(q&&b!=u.getCenterX()<k.getCenterX()||!q&&b!=u.getCenterY()<k.getCenterY()))){var x=[];v.traverse(u.cell,!0,function(a,b){null!=b&&x.push(b);x.push(a);return!0});v.moveCells(x,(b?1:-1)*d,(b?1:-1)*h)}}}return v.addCells(f,c)}finally{v.model.endUpdate()}}function g(a){v.model.beginUpdate();try{var b=m(a),c=v.getIncomingEdges(a),d=v.cloneCells([c[0],a]);v.model.setTerminal(c[0],d[1],!1);v.model.setTerminal(d[0],d[1],!0);v.model.setTerminal(d[0],a,!1);var f=v.model.getParent(a),g=f.geometry,h=[];v.view.currentRoot!= -f&&(d[1].geometry.x-=g.x,d[1].geometry.y-=g.y);v.traverse(a,!0,function(a,b){null!=b&&h.push(b);h.push(a);return!0});var k=a.geometry.width+40,l=a.geometry.height+40;b==mxConstants.DIRECTION_SOUTH?k=0:b==mxConstants.DIRECTION_NORTH?(k=0,l=-40):b==mxConstants.DIRECTION_WEST?(k=-40,l=0):b==mxConstants.DIRECTION_EAST&&(l=0);v.moveCells(h,k,l);return v.addCells(d,f)}finally{v.model.endUpdate()}}function l(a){v.model.beginUpdate();try{var b=v.model.getParent(a),c=v.getIncomingEdges(a),d=v.cloneCells([c[0], -a]);v.model.setTerminal(d[0],a,!0);var c=v.getOutgoingEdges(a),f=b.geometry,g=[];v.view.currentRoot==b&&(f=new mxRectangle);for(var h=0;h<c.length;h++){var k=v.model.getTerminal(c[h],!1);null!=k&&g.push(k)}var l=v.view.getBounds(g),n=m(a),p=v.view.translate,q=v.view.scale;n==mxConstants.DIRECTION_SOUTH?(d[1].geometry.x=null==l?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(l.x+l.width)/q-p.x-f.x+10,d[1].geometry.y+=a.geometry.height-f.y+40):n==mxConstants.DIRECTION_NORTH?(d[1].geometry.x= -null==l?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(l.x+l.width)/q-p.x+-f.x+10,d[1].geometry.y-=d[1].geometry.height-f.y+40):(d[1].geometry.x=n==mxConstants.DIRECTION_WEST?d[1].geometry.x-(d[1].geometry.width-f.x+40):d[1].geometry.x+(a.geometry.width-f.x+40),d[1].geometry.y=null==l?a.geometry.y+(a.geometry.height-d[1].geometry.height)/2:(l.y+l.height)/q-p.y+-f.y+10);return v.addCells(d,b)}finally{v.model.endUpdate()}}function n(a,b,c){a=v.getOutgoingEdges(a);c=v.view.getState(c);var d= -[];if(null!=c&&null!=a){for(var f=0;f<a.length;f++){var g=v.view.getState(v.model.getTerminal(a[f],!1));null!=g&&(!b&&Math.min(g.x+g.width,c.x+c.width)>=Math.max(g.x,c.x)||b&&Math.min(g.y+g.height,c.y+c.height)>=Math.max(g.y,c.y))&&d.push(g)}d.sort(function(a,c){return b?a.x+a.width-c.x-c.width:a.y+a.height-c.y-c.height})}return d}function q(a,b){var c=m(a),d=b==mxConstants.DIRECTION_EAST||b==mxConstants.DIRECTION_WEST;(c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST)==d&&c!=b?t.actions.get("selectParent").funct(): -c==b?(d=v.getOutgoingEdges(a),null!=d&&0<d.length&&v.setSelectionCell(v.model.getTerminal(d[0],!1))):(c=v.getIncomingEdges(a),null!=c&&0<c.length&&(d=n(v.model.getTerminal(c[0],!0),d,a),c=v.view.getState(a),null!=c&&(c=mxUtils.indexOf(d,c),0<=c&&(c+=b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_WEST?-1:1,0<=c&&c<=d.length-1&&v.setSelectionCell(d[c].cell)))))}var t=this,v=t.editor.graph,w=v.getModel();mxResources.parse("selectChildren=Select Children");mxResources.parse("selectSiblings=Select Siblings"); -mxResources.parse("selectDescendants=Select Descendants");mxResources.parse("selectParent=Select Parent");var y=t.menus.createPopupMenu;t.menus.createPopupMenu=function(a,c,d){y.apply(this,arguments);if(1==v.getSelectionCount()){c=v.getSelectionCell();var f=v.getOutgoingEdges(c);a.addSeparator();null!=f&&0<f.length&&(b(v.getSelectionCell())&&this.addMenuItems(a,["selectChildren"],null,d),this.addMenuItems(a,["selectDescendants"],null,d));b(v.getSelectionCell())&&(a.addSeparator(),0<v.getIncomingEdges(c).length&& -this.addMenuItems(a,["selectSiblings","selectParent"],null,d))}};t.actions.addAction("selectChildren",function(){if(v.isEnabled()&&1==v.getSelectionCount()){var a=v.getSelectionCell(),a=v.getOutgoingEdges(a);if(null!=a){for(var b=[],c=0;c<a.length;c++)b.push(v.model.getTerminal(a[c],!1));v.setSelectionCells(b)}}},null,null,"Alt+Shift+X");t.actions.addAction("selectSiblings",function(){if(v.isEnabled()&&1==v.getSelectionCount()){var a=v.getSelectionCell(),a=v.getIncomingEdges(a);if(null!=a&&0<a.length&& -(a=v.getOutgoingEdges(v.model.getTerminal(a[0],!0)),null!=a)){for(var b=[],c=0;c<a.length;c++)b.push(v.model.getTerminal(a[c],!1));v.setSelectionCells(b)}}},null,null,"Alt+Shift+S");t.actions.addAction("selectParent",function(){if(v.isEnabled()&&1==v.getSelectionCount()){var a=v.getSelectionCell(),a=v.getIncomingEdges(a);null!=a&&0<a.length&&v.setSelectionCell(v.model.getTerminal(a[0],!0))}},null,null,"Alt+Shift+P");t.actions.addAction("selectDescendants",function(){if(v.isEnabled()&&1==v.getSelectionCount()){var a= -v.getSelectionCell(),b=[];v.traverse(a,!0,function(a,c){null!=c&&b.push(c);b.push(a);return!0});v.setSelectionCells(b)}},null,null,"Alt+Shift+D");var u=v.removeCells;v.removeCells=function(a,d){d=null!=d?d:!0;null==a&&(a=this.getDeletableCells(this.getSelectionCells()));d&&(a=this.getDeletableCells(this.addAllEdges(a)));for(var f=[],g=0;g<a.length;g++){var h=a[g];w.isEdge(h)&&c(h)&&(f.push(h),h=w.getTerminal(h,!1));b(h)?(v.traverse(h,!0,function(a,b){null!=b&&f.push(b);f.push(a);return!0}),h=v.getIncomingEdges(a[g]), -a=a.concat(h)):f.push(a[g])}a=f;return u.apply(this,arguments)};t.hoverIcons.getStateAt=function(a,c,d){return b(a.cell)?null:this.graph.view.getState(this.graph.getCellAt(c,d))};var x=v.duplicateCells;v.duplicateCells=function(a,c){a=null!=a?a:this.getSelectionCells();for(var d=a.slice(0),f=0;f<d.length;f++){var g=v.view.getState(d[f]);if(null!=g&&b(g.cell))for(var h=v.getIncomingEdges(g.cell),g=0;g<h.length;g++)mxUtils.remove(h[g],a)}this.model.beginUpdate();try{var k=x.call(this,a,c);if(k.length== -a.length)for(f=0;f<a.length;f++)if(b(a[f])){var l=v.getIncomingEdges(k[f]),h=v.getIncomingEdges(a[f]);if(0==l.length&&0<h.length){var m=this.cloneCell(h[0]);this.addEdge(m,v.getDefaultParent(),this.model.getTerminal(h[0],!0),k[f])}}}finally{this.model.endUpdate()}return k};var F=v.moveCells;v.moveCells=function(a,c,d,f,g,h,k){var l=null;this.model.beginUpdate();try{var m=g,n=this.view.getState(g),p=null!=n?n.style:this.getCellStyle(g);if(null!=a&&b(g)&&"1"==mxUtils.getValue(p,"treeFolding","0")){for(var q= -0;q<a.length;q++)if(b(a[q])||v.model.isEdge(a[q])&&null==v.model.getTerminal(a[q],!0)){g=v.model.getParent(a[q]);break}if(null!=m&&g!=m&&null!=this.view.getState(a[0])){var w=v.getIncomingEdges(a[0]);if(0<w.length){var u=v.view.getState(v.model.getTerminal(w[0],!0));if(null!=u){var t=v.view.getState(m);null!=t&&(c=(t.getCenterX()-u.getCenterX())/v.view.scale,d=(t.getCenterY()-u.getCenterY())/v.view.scale)}}}}l=F.apply(this,arguments);if(null!=l&&null!=a&&l.length==a.length)for(q=0;q<l.length;q++)if(this.model.isEdge(l[q]))b(m)&& -0>mxUtils.indexOf(l,this.model.getTerminal(l[q],!0))&&this.model.setTerminal(l[q],m,!0);else if(b(a[q])&&(w=v.getIncomingEdges(a[q]),0<w.length))if(!f)b(m)&&0>mxUtils.indexOf(a,this.model.getTerminal(w[0],!0))&&this.model.setTerminal(w[0],m,!0);else if(0==v.getIncomingEdges(l[q]).length){n=m;if(null==n||n==v.model.getParent(a[q]))n=v.model.getTerminal(w[0],!0);f=this.cloneCell(w[0]);this.addEdge(f,v.getDefaultParent(),n,l[q])}}finally{this.model.endUpdate()}return l};if(null!=t.sidebar){var G=t.sidebar.dropAndConnect; -t.sidebar.dropAndConnect=function(a,c,d,f){var g=v.model,h=null;g.beginUpdate();try{if(h=G.apply(this,arguments),b(a))for(var k=0;k<h.length;k++)if(g.isEdge(h[k])&&null==g.getTerminal(h[k],!0)){g.setTerminal(h[k],a,!0);var l=v.getCellGeometry(h[k]);l.points=null;null!=l.getTerminalPoint(!0)&&l.setTerminalPoint(null,!0)}}finally{g.endUpdate()}return h}}var z={88:t.actions.get("selectChildren"),84:t.actions.get("selectSubtree"),80:t.actions.get("selectParent"),83:t.actions.get("selectSiblings")},A= -t.onKeyDown;t.onKeyDown=function(a){try{if(v.isEnabled()&&!v.isEditing()&&b(v.getSelectionCell())&&1==v.getSelectionCount()){var c=null;0<v.getIncomingEdges(v.getSelectionCell()).length&&(9==a.which?c=mxEvent.isShiftDown(a)?g(v.getSelectionCell()):l(v.getSelectionCell()):13==a.which&&(c=p(v.getSelectionCell(),!mxEvent.isShiftDown(a))));if(null!=c&&0<c.length)1==c.length&&v.model.isEdge(c[0])?v.setSelectionCell(v.model.getTerminal(c[0],!1)):v.setSelectionCell(c[c.length-1]),null!=t.hoverIcons&&t.hoverIcons.update(v.view.getState(v.getSelectionCell())), -v.startEditingAtCell(v.getSelectionCell()),mxEvent.consume(a);else if(mxEvent.isAltDown(a)&&mxEvent.isShiftDown(a)){var d=z[a.keyCode];null!=d&&(d.funct(a),mxEvent.consume(a))}else 37==a.keyCode?(q(v.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(a)):38==a.keyCode?(q(v.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(a)):39==a.keyCode?(q(v.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(a)):40==a.keyCode&&(q(v.getSelectionCell(),mxConstants.DIRECTION_SOUTH), -mxEvent.consume(a))}}catch(M){console.log("error",M)}mxEvent.isConsumed(a)||A.apply(this,arguments)};var H=v.connectVertex;v.connectVertex=function(a,c,d,f,h,k){var n=v.getIncomingEdges(a);return b(a)&&0<n.length?(d=m(a),f=d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST,h=c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST,d==c?l(a):f==h?g(a):p(a,c!=mxConstants.DIRECTION_NORTH&&c!=mxConstants.DIRECTION_WEST)):H.call(this,a,c,d,f,h,k)};v.getSubtree=function(a){var c=[a];b(a)&& -!d(a)&&v.traverse(a,!0,function(a,b){null!=b&&0>mxUtils.indexOf(c,b)&&c.push(b);0>mxUtils.indexOf(c,a)&&c.push(a);return!0});return c};var B=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){B.apply(this,arguments);b(this.state.cell)&&0<this.graph.getOutgoingEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(a),this.moveHandle.setAttribute("title","Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width= +(function(){var a=new mxObjectCodec(new ChangePage,"ui relatedPage index neverShown page previousPage".split(" ")),c="defaultParent currentRoot scrollLeft scrollTop scale translate lastPasteXml pasteCounter".split(" ");a.afterEncode=function(a,d,g){g.setAttribute("relatedPage",d.relatedPage.getId());null==d.index&&(g.setAttribute("name",d.relatedPage.getName()),null!=d.relatedPage.viewState&&g.setAttribute("viewState",JSON.stringify(d.relatedPage.viewState,function(a,b){return 0>mxUtils.indexOf(c, +a)?b:void 0})),null!=d.relatedPage.root&&a.encodeCell(d.relatedPage.root,g));return g};a.beforeDecode=function(a,c,g){g.ui=a.ui;g.relatedPage=g.ui.getPageById(c.getAttribute("relatedPage"));if(null==g.relatedPage){var b=c.ownerDocument.createElement("diagram");b.setAttribute("id",c.getAttribute("relatedPage"));b.setAttribute("name",c.getAttribute("name"));g.relatedPage=new DiagramPage(b);b=c.getAttribute("viewState");null!=b&&(g.relatedPage.viewState=JSON.parse(b),c.removeAttribute("viewState")); +c=c.cloneNode(!0);b=c.firstChild;if(null!=b)for(g.relatedPage.root=a.decodeCell(b,!1),g=b.nextSibling,b.parentNode.removeChild(b),b=g;null!=b;){g=b.nextSibling;if(b.nodeType==mxConstants.NODETYPE_ELEMENT){var d=b.getAttribute("id");null==a.lookup(d)&&a.decodeCell(b)}b.parentNode.removeChild(b);b=g}}return c};a.afterDecode=function(a,c,g){g.index=g.previousIndex;return g};mxCodecRegistry.register(a)})();(function(){var a=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAASFBMVEUAAAAAAAB/f3/9/f319fUfHx/7+/s+Pj69vb0AAAAAAAAAAAAAAAAAAAAAAAAAAAB2dnZ1dXUAAAAAAAAVFRX///8ZGRkGBgbOcI1hAAAAE3RSTlMA+vr9/f38+fb1893Bo00u+/tFvPJUBQAAAIRJREFUGNM0jEcSxCAQAxlydGqD///TNWxZBx1aXVIrWysplbapL3sFxgDq/idXBnHgBPK1nIxwc55vCXl6dRFtrV6svs/A/UjsPcpzA5tqyByD92HqQlMFh45BG6ND1DiKSoPDdm96N77bg5F+wyaEqRGb8ZiOwHQqdg9hehszcLAEIQB2lQ4p/sEpnAAAAABJRU5ErkJggg==":IMAGE_PATH+"/move.png";EditorUi.prototype.altShiftActions[68]= +"selectDescendants";var c=Graph.prototype.foldCells;Graph.prototype.foldCells=function(a,b,d,m,n){b=null!=b?b:!1;null==d&&(d=this.getFoldableCells(this.getSelectionCells(),a));this.stopEditing();this.model.beginUpdate();try{for(var e=d.slice(),f=[],g=0;g<d.length;g++){var k=this.view.getState(d[g]),t=null!=k?k.style:this.getCellStyle(d[g]);"1"==mxUtils.getValue(t,"treeFolding","0")&&(this.traverse(d[g],!0,mxUtils.bind(this,function(a,b){null!=b&&f.push(b);a!=d[g]&&f.push(a);return a==d[g]||!this.model.isCollapsed(a)})), +this.model.setCollapsed(d[g],a))}for(g=0;g<f.length;g++)this.model.setVisible(f[g],!a);d=e;d=c.apply(this,arguments)}finally{this.model.endUpdate()}return d};var b=EditorUi.prototype.init;EditorUi.prototype.init=function(){b.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function b(a){return x.isVertex(a)&&c(a)}function c(a){var b=!1;null!=a&&(a=x.getParent(a),b=u.view.getState(a),u.view.getState(a),b="tree"==(null!= +b?b.style:u.getCellStyle(a)).containerType);return b}function d(a){var b=!1;null!=a&&(a=x.getParent(a),b=u.view.getState(a),u.view.getState(a),b=null!=(null!=b?b.style:u.getCellStyle(a)).childLayout);return b}function m(a){a=u.view.getState(a);if(null!=a){var b=u.getIncomingEdges(a.cell);if(0<b.length&&(b=u.view.getState(b[0]),null!=b&&(b=b.absolutePoints,null!=b&&0<b.length&&(b=b[b.length-1],null!=b)))){if(b.y==a.y&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_SOUTH;if(b.y== +a.y+a.height&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_NORTH;if(b.x>a.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function n(a,b){b=null!=b?b:!0;u.model.beginUpdate();try{var c=u.model.getParent(a),d=u.getIncomingEdges(a),e=u.cloneCells([d[0],a]);u.model.setTerminal(e[0],u.model.getTerminal(d[0],!0),!0);var f=m(a),g=c.geometry;f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH?e[1].geometry.x+=b?a.geometry.width+10:-e[1].geometry.width- +10:e[1].geometry.y+=b?a.geometry.height+10:-e[1].geometry.height-10;u.view.currentRoot!=c&&(e[1].geometry.x-=g.x,e[1].geometry.y-=g.y);var k=u.view.getState(a),l=u.view.scale;if(null!=k){var n=mxRectangle.fromRectangle(k);f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH?n.x+=(b?a.geometry.width+10:-e[1].geometry.width-10)*l:n.y+=(b?a.geometry.height+10:-e[1].geometry.height-10)*l;var p=u.getOutgoingEdges(u.model.getTerminal(d[0],!0));if(null!=p){for(var q=f==mxConstants.DIRECTION_SOUTH|| +f==mxConstants.DIRECTION_NORTH,x=g=d=0;x<p.length;x++){var t=u.model.getTerminal(p[x],!1);if(f==m(t)){var v=u.view.getState(t);t!=a&&null!=v&&(q&&b!=v.getCenterX()<k.getCenterX()||!q&&b!=v.getCenterY()<k.getCenterY())&&mxUtils.intersects(n,v)&&(d=10+Math.max(d,(Math.min(n.x+n.width,v.x+v.width)-Math.max(n.x,v.x))/l),g=10+Math.max(g,(Math.min(n.y+n.height,v.y+v.height)-Math.max(n.y,v.y))/l))}}q?g=0:d=0;for(x=0;x<p.length;x++)if(t=u.model.getTerminal(p[x],!1),f==m(t)&&(v=u.view.getState(t),t!=a&&null!= +v&&(q&&b!=v.getCenterX()<k.getCenterX()||!q&&b!=v.getCenterY()<k.getCenterY()))){var y=[];u.traverse(v.cell,!0,function(a,b){null!=b&&y.push(b);y.push(a);return!0});u.moveCells(y,(b?1:-1)*d,(b?1:-1)*g)}}}return u.addCells(e,c)}finally{u.model.endUpdate()}}function q(a){u.model.beginUpdate();try{var b=m(a),c=u.getIncomingEdges(a),d=u.cloneCells([c[0],a]);u.model.setTerminal(c[0],d[1],!1);u.model.setTerminal(d[0],d[1],!0);u.model.setTerminal(d[0],a,!1);var e=u.model.getParent(a),f=e.geometry,g=[];u.view.currentRoot!= +e&&(d[1].geometry.x-=f.x,d[1].geometry.y-=f.y);u.traverse(a,!0,function(a,b){null!=b&&g.push(b);g.push(a);return!0});var k=a.geometry.width+40,l=a.geometry.height+40;b==mxConstants.DIRECTION_SOUTH?k=0:b==mxConstants.DIRECTION_NORTH?(k=0,l=-40):b==mxConstants.DIRECTION_WEST?(k=-40,l=0):b==mxConstants.DIRECTION_EAST&&(l=0);u.moveCells(g,k,l);return u.addCells(d,e)}finally{u.model.endUpdate()}}function f(a){u.model.beginUpdate();try{var b=u.model.getParent(a),c=u.getIncomingEdges(a),d=u.cloneCells([c[0], +a]);u.model.setTerminal(d[0],a,!0);var c=u.getOutgoingEdges(a),e=b.geometry,f=[];u.view.currentRoot==b&&(e=new mxRectangle);for(var g=0;g<c.length;g++){var k=u.model.getTerminal(c[g],!1);null!=k&&f.push(k)}var l=u.view.getBounds(f),n=m(a),p=u.view.translate,q=u.view.scale;n==mxConstants.DIRECTION_SOUTH?(d[1].geometry.x=null==l?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(l.x+l.width)/q-p.x-e.x+10,d[1].geometry.y+=a.geometry.height-e.y+40):n==mxConstants.DIRECTION_NORTH?(d[1].geometry.x= +null==l?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(l.x+l.width)/q-p.x+-e.x+10,d[1].geometry.y-=d[1].geometry.height-e.y+40):(d[1].geometry.x=n==mxConstants.DIRECTION_WEST?d[1].geometry.x-(d[1].geometry.width-e.x+40):d[1].geometry.x+(a.geometry.width-e.x+40),d[1].geometry.y=null==l?a.geometry.y+(a.geometry.height-d[1].geometry.height)/2:(l.y+l.height)/q-p.y+-e.y+10);return u.addCells(d,b)}finally{u.model.endUpdate()}}function l(a,b,c){a=u.getOutgoingEdges(a);c=u.view.getState(c);var d= +[];if(null!=c&&null!=a){for(var e=0;e<a.length;e++){var f=u.view.getState(u.model.getTerminal(a[e],!1));null!=f&&(!b&&Math.min(f.x+f.width,c.x+c.width)>=Math.max(f.x,c.x)||b&&Math.min(f.y+f.height,c.y+c.height)>=Math.max(f.y,c.y))&&d.push(f)}d.sort(function(a,c){return b?a.x+a.width-c.x-c.width:a.y+a.height-c.y-c.height})}return d}function p(a,b){var c=m(a),d=b==mxConstants.DIRECTION_EAST||b==mxConstants.DIRECTION_WEST;(c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST)==d&&c!=b?t.actions.get("selectParent").funct(): +c==b?(d=u.getOutgoingEdges(a),null!=d&&0<d.length&&u.setSelectionCell(u.model.getTerminal(d[0],!1))):(c=u.getIncomingEdges(a),null!=c&&0<c.length&&(d=l(u.model.getTerminal(c[0],!0),d,a),c=u.view.getState(a),null!=c&&(c=mxUtils.indexOf(d,c),0<=c&&(c+=b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_WEST?-1:1,0<=c&&c<=d.length-1&&u.setSelectionCell(d[c].cell)))))}var t=this,u=t.editor.graph,x=u.getModel();mxResources.parse("selectChildren=Select Children");mxResources.parse("selectSiblings=Select Siblings"); +mxResources.parse("selectDescendants=Select Descendants");mxResources.parse("selectParent=Select Parent");var z=t.menus.createPopupMenu;t.menus.createPopupMenu=function(a,c,d){z.apply(this,arguments);if(1==u.getSelectionCount()){c=u.getSelectionCell();var e=u.getOutgoingEdges(c);a.addSeparator();null!=e&&0<e.length&&(b(u.getSelectionCell())&&this.addMenuItems(a,["selectChildren"],null,d),this.addMenuItems(a,["selectDescendants"],null,d));b(u.getSelectionCell())&&(a.addSeparator(),0<u.getIncomingEdges(c).length&& +this.addMenuItems(a,["selectSiblings","selectParent"],null,d))}};t.actions.addAction("selectChildren",function(){if(u.isEnabled()&&1==u.getSelectionCount()){var a=u.getSelectionCell(),a=u.getOutgoingEdges(a);if(null!=a){for(var b=[],c=0;c<a.length;c++)b.push(u.model.getTerminal(a[c],!1));u.setSelectionCells(b)}}},null,null,"Alt+Shift+X");t.actions.addAction("selectSiblings",function(){if(u.isEnabled()&&1==u.getSelectionCount()){var a=u.getSelectionCell(),a=u.getIncomingEdges(a);if(null!=a&&0<a.length&& +(a=u.getOutgoingEdges(u.model.getTerminal(a[0],!0)),null!=a)){for(var b=[],c=0;c<a.length;c++)b.push(u.model.getTerminal(a[c],!1));u.setSelectionCells(b)}}},null,null,"Alt+Shift+S");t.actions.addAction("selectParent",function(){if(u.isEnabled()&&1==u.getSelectionCount()){var a=u.getSelectionCell(),a=u.getIncomingEdges(a);null!=a&&0<a.length&&u.setSelectionCell(u.model.getTerminal(a[0],!0))}},null,null,"Alt+Shift+P");t.actions.addAction("selectDescendants",function(){if(u.isEnabled()&&1==u.getSelectionCount()){var a= +u.getSelectionCell(),b=[];u.traverse(a,!0,function(a,c){null!=c&&b.push(c);b.push(a);return!0});u.setSelectionCells(b)}},null,null,"Alt+Shift+D");var v=u.removeCells;u.removeCells=function(a,d){d=null!=d?d:!0;null==a&&(a=this.getDeletableCells(this.getSelectionCells()));d&&(a=this.getDeletableCells(this.addAllEdges(a)));for(var e=[],f=0;f<a.length;f++){var g=a[f];x.isEdge(g)&&c(g)&&(e.push(g),g=x.getTerminal(g,!1));b(g)?(u.traverse(g,!0,function(a,b){null!=b&&e.push(b);e.push(a);return!0}),g=u.getIncomingEdges(a[f]), +a=a.concat(g)):e.push(a[f])}a=e;return v.apply(this,arguments)};t.hoverIcons.getStateAt=function(a,c,d){return b(a.cell)?null:this.graph.view.getState(this.graph.getCellAt(c,d))};var y=u.duplicateCells;u.duplicateCells=function(a,c){a=null!=a?a:this.getSelectionCells();for(var d=a.slice(0),e=0;e<d.length;e++){var f=u.view.getState(d[e]);if(null!=f&&b(f.cell))for(var g=u.getIncomingEdges(f.cell),f=0;f<g.length;f++)mxUtils.remove(g[f],a)}this.model.beginUpdate();try{var k=y.call(this,a,c);if(k.length== +a.length)for(e=0;e<a.length;e++)if(b(a[e])){var m=u.getIncomingEdges(k[e]),g=u.getIncomingEdges(a[e]);if(0==m.length&&0<g.length){var l=this.cloneCell(g[0]);this.addEdge(l,u.getDefaultParent(),this.model.getTerminal(g[0],!0),k[e])}}}finally{this.model.endUpdate()}return k};var B=u.moveCells;u.moveCells=function(a,c,d,e,f,g,k){var m=null;this.model.beginUpdate();try{var l=f,n=this.view.getState(f),p=null!=n?n.style:this.getCellStyle(f);if(null!=a&&b(f)&&"1"==mxUtils.getValue(p,"treeFolding","0")){for(var q= +0;q<a.length;q++)if(b(a[q])||u.model.isEdge(a[q])&&null==u.model.getTerminal(a[q],!0)){f=u.model.getParent(a[q]);break}if(null!=l&&f!=l&&null!=this.view.getState(a[0])){var x=u.getIncomingEdges(a[0]);if(0<x.length){var v=u.view.getState(u.model.getTerminal(x[0],!0));if(null!=v){var t=u.view.getState(l);null!=t&&(c=(t.getCenterX()-v.getCenterX())/u.view.scale,d=(t.getCenterY()-v.getCenterY())/u.view.scale)}}}}m=B.apply(this,arguments);if(null!=m&&null!=a&&m.length==a.length)for(q=0;q<m.length;q++)if(this.model.isEdge(m[q]))b(l)&& +0>mxUtils.indexOf(m,this.model.getTerminal(m[q],!0))&&this.model.setTerminal(m[q],l,!0);else if(b(a[q])&&(x=u.getIncomingEdges(a[q]),0<x.length))if(!e)b(l)&&0>mxUtils.indexOf(a,this.model.getTerminal(x[0],!0))&&this.model.setTerminal(x[0],l,!0);else if(0==u.getIncomingEdges(m[q]).length){n=l;if(null==n||n==u.model.getParent(a[q]))n=u.model.getTerminal(x[0],!0);e=this.cloneCell(x[0]);this.addEdge(e,u.getDefaultParent(),n,m[q])}}finally{this.model.endUpdate()}return m};if(null!=t.sidebar){var H=t.sidebar.dropAndConnect; +t.sidebar.dropAndConnect=function(a,c,d,e){var f=u.model,g=null;f.beginUpdate();try{if(g=H.apply(this,arguments),b(a))for(var k=0;k<g.length;k++)if(f.isEdge(g[k])&&null==f.getTerminal(g[k],!0)){f.setTerminal(g[k],a,!0);var m=u.getCellGeometry(g[k]);m.points=null;null!=m.getTerminalPoint(!0)&&m.setTerminalPoint(null,!0)}}finally{f.endUpdate()}return g}}var F={88:t.actions.get("selectChildren"),84:t.actions.get("selectSubtree"),80:t.actions.get("selectParent"),83:t.actions.get("selectSiblings")},D= +t.onKeyDown;t.onKeyDown=function(a){try{if(u.isEnabled()&&!u.isEditing()&&b(u.getSelectionCell())&&1==u.getSelectionCount()){var c=null;0<u.getIncomingEdges(u.getSelectionCell()).length&&(9==a.which?c=mxEvent.isShiftDown(a)?q(u.getSelectionCell()):f(u.getSelectionCell()):13==a.which&&(c=n(u.getSelectionCell(),!mxEvent.isShiftDown(a))));if(null!=c&&0<c.length)1==c.length&&u.model.isEdge(c[0])?u.setSelectionCell(u.model.getTerminal(c[0],!1)):u.setSelectionCell(c[c.length-1]),null!=t.hoverIcons&&t.hoverIcons.update(u.view.getState(u.getSelectionCell())), +u.startEditingAtCell(u.getSelectionCell()),mxEvent.consume(a);else if(mxEvent.isAltDown(a)&&mxEvent.isShiftDown(a)){var d=F[a.keyCode];null!=d&&(d.funct(a),mxEvent.consume(a))}else 37==a.keyCode?(p(u.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(a)):38==a.keyCode?(p(u.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(a)):39==a.keyCode?(p(u.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(a)):40==a.keyCode&&(p(u.getSelectionCell(),mxConstants.DIRECTION_SOUTH), +mxEvent.consume(a))}}catch(M){console.log("error",M)}mxEvent.isConsumed(a)||D.apply(this,arguments)};var E=u.connectVertex;u.connectVertex=function(a,c,d,e,g,k){var l=u.getIncomingEdges(a);return b(a)&&0<l.length?(d=m(a),e=d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST,g=c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST,d==c?f(a):e==g?q(a):n(a,c!=mxConstants.DIRECTION_NORTH&&c!=mxConstants.DIRECTION_WEST)):E.call(this,a,c,d,e,g,k)};u.getSubtree=function(a){var c=[a];b(a)&& +!d(a)&&u.traverse(a,!0,function(a,b){null!=b&&0>mxUtils.indexOf(c,b)&&c.push(b);0>mxUtils.indexOf(c,a)&&c.push(a);return!0});return c};var I=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){I.apply(this,arguments);b(this.state.cell)&&0<this.graph.getOutgoingEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(a),this.moveHandle.setAttribute("title","Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width= "18px",this.moveHandle.style.height="18px",this.graph.container.appendChild(this.moveHandle),mxEvent.addGestureListeners(this.moveHandle,mxUtils.bind(this,function(a){this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(a),mxEvent.getClientY(a));this.graph.graphHandler.cells=this.graph.getSubtree(this.state.cell);this.graph.graphHandler.bounds=this.state.view.getBounds(this.graph.graphHandler.cells);this.graph.graphHandler.pBounds=this.graph.graphHandler.getPreviewBounds(this.graph.graphHandler.cells); -this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(a);this.graph.isMouseDown=!0;mxEvent.consume(a)})))};var D=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){D.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.left=this.state.x+this.state.width+(40>this.state.width?10:0)+2+"px",this.moveHandle.style.top=this.state.y+this.state.height+(40>this.state.height?10:0)+2+"px")};var J=mxVertexHandler.prototype.destroy; -mxVertexHandler.prototype.destroy=function(a,b){J.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.parentNode.removeChild(this.moveHandle),this.moveHandle=null)}};if("undefined"!==typeof Sidebar){var d=Sidebar.prototype.createAdvancedShapes;Sidebar.prototype.createAdvancedShapes=function(){var a=d.apply(this,arguments),b=this.graph;return a.concat([this.addEntry("tree container",function(){var a=new mxCell("Tree Container",new mxGeometry(0,0,220,160),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;"); +this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(a);this.graph.isMouseDown=!0;mxEvent.consume(a)})))};var C=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){C.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.left=this.state.x+this.state.width+(40>this.state.width?10:0)+2+"px",this.moveHandle.style.top=this.state.y+this.state.height+(40>this.state.height?10:0)+2+"px")};var G=mxVertexHandler.prototype.destroy; +mxVertexHandler.prototype.destroy=function(a,b){G.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.parentNode.removeChild(this.moveHandle),this.moveHandle=null)}};if("undefined"!==typeof Sidebar){var d=Sidebar.prototype.createAdvancedShapes;Sidebar.prototype.createAdvancedShapes=function(){var a=d.apply(this,arguments),b=this.graph;return a.concat([this.addEntry("tree container",function(){var a=new mxCell("Tree Container",new mxGeometry(0,0,220,160),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;"); a.vertex=!0;return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap central idea branch topic",function(){var a=new mxCell("Mindmap",new mxGeometry(0,0,420,126),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");a.vertex=!0;var b=new mxCell("Central Idea",new mxGeometry(160,60,100,40),"ellipse;whiteSpace=wrap;html=1;align=center;container=1;recursiveResize=0;treeFolding=1;");b.vertex=!0;var c=new mxCell("Topic",new mxGeometry(320, -40,80,20),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;");c.vertex=!0;var d=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");d.geometry.relative=!0;d.edge=!0;b.insertEdge(d,!0);c.insertEdge(d,!1);var f=new mxCell("Branch",new mxGeometry(320,80,72,26),"whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;"); -f.vertex=!0;var h=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");h.geometry.relative=!0;h.edge=!0;b.insertEdge(h,!0);f.insertEdge(h,!1);var q=new mxCell("Topic",new mxGeometry(20,40,80,20),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;");q.vertex=!0;var t=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;"); -t.geometry.relative=!0;t.edge=!0;b.insertEdge(t,!0);q.insertEdge(t,!1);var v=new mxCell("Branch",new mxGeometry(20,80,72,26),"whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;");v.vertex=!0;var w=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;"); -w.geometry.relative=!0;w.edge=!0;b.insertEdge(w,!0);v.insertEdge(w,!1);a.insert(d);a.insert(h);a.insert(t);a.insert(w);a.insert(b);a.insert(c);a.insert(f);a.insert(q);a.insert(v);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap central idea",function(){var a=new mxCell("Central Idea",new mxGeometry(0,0,100,40),"ellipse;whiteSpace=wrap;html=1;align=center;container=1;recursiveResize=0;treeFolding=1;");a.vertex=!0;return sb.createVertexTemplateFromCells([a], +40,80,20),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;");c.vertex=!0;var d=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");d.geometry.relative=!0;d.edge=!0;b.insertEdge(d,!0);c.insertEdge(d,!1);var e=new mxCell("Branch",new mxGeometry(320,80,72,26),"whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;"); +e.vertex=!0;var g=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");g.geometry.relative=!0;g.edge=!0;b.insertEdge(g,!0);e.insertEdge(g,!1);var p=new mxCell("Topic",new mxGeometry(20,40,80,20),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;");p.vertex=!0;var t=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;"); +t.geometry.relative=!0;t.edge=!0;b.insertEdge(t,!0);p.insertEdge(t,!1);var u=new mxCell("Branch",new mxGeometry(20,80,72,26),"whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;");u.vertex=!0;var x=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;"); +x.geometry.relative=!0;x.edge=!0;b.insertEdge(x,!0);u.insertEdge(x,!1);a.insert(d);a.insert(g);a.insert(t);a.insert(x);a.insert(b);a.insert(c);a.insert(e);a.insert(p);a.insert(u);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap central idea",function(){var a=new mxCell("Central Idea",new mxGeometry(0,0,100,40),"ellipse;whiteSpace=wrap;html=1;align=center;container=1;recursiveResize=0;treeFolding=1;");a.vertex=!0;return sb.createVertexTemplateFromCells([a], a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap branch",function(){var a=new mxCell("Branch",new mxGeometry(0,0,80,20),"whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;");a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;"); b.geometry.setTerminalPoint(new mxPoint(-40,40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);return sb.createVertexTemplateFromCells([a,b],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap sub topic",function(){var a=new mxCell("Sub Topic",new mxGeometry(0,0,72,26),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;");a.vertex=!0;var b=new mxCell("",new mxGeometry(0, 0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");b.geometry.setTerminalPoint(new mxPoint(-40,40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);return sb.createVertexTemplateFromCells([a,b],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree orgchart organization division",function(){var a=new mxCell("Orgchart",new mxGeometry(0,0,280,220),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");a.vertex=!0;var c=new mxCell("Organization", -new mxGeometry(80,40,120,60),"whiteSpace=wrap;html=1;align=center;treeFolding=1;container=1;recursiveResize=0;");b.setAttributeForCell(c,"treeRoot","1");c.vertex=!0;var d=new mxCell("Division",new mxGeometry(20,140,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;");d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");f.geometry.relative=!0;f.edge=!0; -c.insertEdge(f,!0);d.insertEdge(f,!1);var h=new mxCell("Division",new mxGeometry(160,140,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;");h.vertex=!0;var n=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");n.geometry.relative=!0;n.edge=!0;c.insertEdge(n,!0);h.insertEdge(n,!1);a.insert(f);a.insert(n);a.insert(c);a.insert(d);a.insert(h);return sb.createVertexTemplateFromCells([a], +new mxGeometry(80,40,120,60),"whiteSpace=wrap;html=1;align=center;treeFolding=1;container=1;recursiveResize=0;");b.setAttributeForCell(c,"treeRoot","1");c.vertex=!0;var d=new mxCell("Division",new mxGeometry(20,140,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;");d.vertex=!0;var e=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");e.geometry.relative=!0;e.edge=!0; +c.insertEdge(e,!0);d.insertEdge(e,!1);var f=new mxCell("Division",new mxGeometry(160,140,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;");f.vertex=!0;var g=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");g.geometry.relative=!0;g.edge=!0;c.insertEdge(g,!0);f.insertEdge(g,!1);a.insert(e);a.insert(g);a.insert(c);a.insert(d);a.insert(f);return sb.createVertexTemplateFromCells([a], a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree root",function(){var a=new mxCell("Organization",new mxGeometry(0,0,120,60),"whiteSpace=wrap;html=1;align=center;treeFolding=1;container=1;recursiveResize=0;");b.setAttributeForCell(a,"treeRoot","1");a.vertex=!0;return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree division",function(){var a=new mxCell("Division",new mxGeometry(20,40,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;"); a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");b.geometry.setTerminalPoint(new mxPoint(0,0),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);return sb.createVertexTemplateFromCells([a,b],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree sub sections",function(){var a=new mxCell("Sub Section",new mxGeometry(0,0,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;"); a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");b.geometry.setTerminalPoint(new mxPoint(110,-40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);var c=new mxCell("Sub Section",new mxGeometry(120,0,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;");c.vertex=!0;var d=new mxCell("",new mxGeometry(0, -0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");d.geometry.setTerminalPoint(new mxPoint(110,-40),!0);d.geometry.relative=!0;d.edge=!0;c.insertEdge(d,!1);return sb.createVertexTemplateFromCells([b,d,a,c],220,60,"Sub Sections")})])}}})();EditorUi.initMinimalTheme=function(){function a(a){var b=a.editor.graph;b.popupMenuHandler.hideMenu();null==a.formatWindow?(a.formatWindow=new f(a,mxResources.get("format"),Math.max(20,a.diagramContainer.clientWidth-240-12),56,240,Math.min(566,b.container.clientHeight-10),function(b){b=a.createFormat(b);b.init();return b}),a.formatWindow.window.minimumSize=new mxRectangle(0,0,240,80),a.formatWindow.window.setVisible(!0)):a.formatWindow.window.setVisible(!a.formatWindow.window.isVisible());a.formatWindow.window.isVisible()&& -a.formatWindow.window.fit()}function c(a){var b=a.editor.graph;b.popupMenuHandler.hideMenu();new mxRectangle;if(null==a.sidebarWindow){var c=Math.min(b.container.clientWidth-10,266);a.sidebarWindow=new f(a,mxResources.get("shapes"),10,56,c-6,Math.min(650,b.container.clientHeight-30),function(b){function c(c,d){var g=a.menus.get(c),h=f.addMenu(d,mxUtils.bind(this,function(){g.funct.apply(this,arguments)}));h.style.cssText="position:absolute;border-top:1px solid lightgray;width:50%;height:24px;bottom:0px;text-align:center;cursor:pointer;padding:6px 0 0 0;cusor:pointer;"; -h.className="geTitle";b.appendChild(h);return h}var d=document.createElement("div");d.style.cssText="position:absolute;left:0;right:0;border-top:1px solid lightgray;height:24px;bottom:31px;text-align:center;cursor:pointer;padding:6px 0 0 0;";d.className="geTitle";d.innerHTML='<span style="font-size:18px;margin-right:5px;">+</span>';mxUtils.write(d,mxResources.get("moreShapes"));b.appendChild(d);mxEvent.addListener(d,"click",function(){a.actions.get("shapes").funct()});var f=new Menubar(a,b);if(!Editor.enableCustomLibraries|| -"1"==urlParams.embed&&"1"!=urlParams.libraries)d.style.bottom="0";else if(null!=a.actions.get("newLibrary")){d=document.createElement("div");d.style.cssText="position:absolute;left:0px;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;";d.className="geTitle";var g=document.createElement("span");g.style.cssText="position:relative;top:6px;";mxUtils.write(g,mxResources.get("newLibrary"));d.appendChild(g);b.appendChild(d);mxEvent.addListener(d, -"click",a.actions.get("newLibrary").funct);d=document.createElement("div");d.style.cssText="position:absolute;left:50%;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;border-left: 1px solid lightgray;";d.className="geTitle";g=document.createElement("span");g.style.cssText="position:relative;top:6px;";mxUtils.write(g,mxResources.get("openLibrary"));d.appendChild(g);b.appendChild(d);mxEvent.addListener(d,"click",a.actions.get("openLibrary").funct)}else d= +0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");d.geometry.setTerminalPoint(new mxPoint(110,-40),!0);d.geometry.relative=!0;d.edge=!0;c.insertEdge(d,!1);return sb.createVertexTemplateFromCells([b,d,a,c],220,60,"Sub Sections")})])}}})();EditorUi.initMinimalTheme=function(){function a(a){var b=a.editor.graph;b.popupMenuHandler.hideMenu();null==a.formatWindow?(a.formatWindow=new g(a,mxResources.get("format"),Math.max(20,a.diagramContainer.clientWidth-240-12),56,240,Math.min(566,b.container.clientHeight-10),function(b){b=a.createFormat(b);b.init();return b}),a.formatWindow.window.minimumSize=new mxRectangle(0,0,240,80),a.formatWindow.window.setVisible(!0)):a.formatWindow.window.setVisible(!a.formatWindow.window.isVisible());a.formatWindow.window.isVisible()&& +a.formatWindow.window.fit()}function c(a){var b=a.editor.graph;b.popupMenuHandler.hideMenu();new mxRectangle;if(null==a.sidebarWindow){var c=Math.min(b.container.clientWidth-10,266);a.sidebarWindow=new g(a,mxResources.get("shapes"),10,56,c-6,Math.min(650,b.container.clientHeight-30),function(b){function c(c,d){var f=a.menus.get(c),g=e.addMenu(d,mxUtils.bind(this,function(){f.funct.apply(this,arguments)}));g.style.cssText="position:absolute;border-top:1px solid lightgray;width:50%;height:24px;bottom:0px;text-align:center;cursor:pointer;padding:6px 0 0 0;cusor:pointer;"; +g.className="geTitle";b.appendChild(g);return g}var d=document.createElement("div");d.style.cssText="position:absolute;left:0;right:0;border-top:1px solid lightgray;height:24px;bottom:31px;text-align:center;cursor:pointer;padding:6px 0 0 0;";d.className="geTitle";d.innerHTML='<span style="font-size:18px;margin-right:5px;">+</span>';mxUtils.write(d,mxResources.get("moreShapes"));b.appendChild(d);mxEvent.addListener(d,"click",function(){a.actions.get("shapes").funct()});var e=new Menubar(a,b);if(!Editor.enableCustomLibraries|| +"1"==urlParams.embed&&"1"!=urlParams.libraries)d.style.bottom="0";else if(null!=a.actions.get("newLibrary")){d=document.createElement("div");d.style.cssText="position:absolute;left:0px;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;";d.className="geTitle";var f=document.createElement("span");f.style.cssText="position:relative;top:6px;";mxUtils.write(f,mxResources.get("newLibrary"));d.appendChild(f);b.appendChild(d);mxEvent.addListener(d, +"click",a.actions.get("newLibrary").funct);d=document.createElement("div");d.style.cssText="position:absolute;left:50%;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;border-left: 1px solid lightgray;";d.className="geTitle";f=document.createElement("span");f.style.cssText="position:relative;top:6px;";mxUtils.write(f,mxResources.get("openLibrary"));d.appendChild(f);b.appendChild(d);mxEvent.addListener(d,"click",a.actions.get("openLibrary").funct)}else d= c("newLibrary",mxResources.get("newLibrary")),d.style.left="0",d=c("openLibraryFrom",mxResources.get("openLibraryFrom")),d.style.borderLeft="1px solid lightgray",d.style.left="50%";b.appendChild(a.sidebar.container);b.style.overflow="hidden";return b});a.sidebarWindow.window.minimumSize=new mxRectangle(0,0,90,90);a.sidebarWindow.window.setVisible(!0);a.getLocalData("sidebar",function(b){a.sidebar.showEntries(b,null,!0)});a.restoreLibraries()}else a.sidebarWindow.window.setVisible(!a.sidebarWindow.window.isVisible()); -a.sidebarWindow.window.isVisible()&&a.sidebarWindow.window.fit()}if("1"==urlParams.lightbox||"0"==urlParams.chrome||"undefined"===typeof window.Format||"undefined"===typeof window.Menus)window.uiTheme=null;else{var b=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;try{var d=document.createElement("style");d.type="text/css";d.innerHTML="* { -webkit-font-smoothing: antialiased; }html body .mxWindow button.geBtn { font-size:12px !important; margin-left: 0; }html body table.mxWindow td.mxWindowPane div.mxWindowPane * { font-size:9pt; }html body div.diagramContainer button, html body button.geBtn { font-size:14px; font-weight:700;border-radius: 5px; }html body button.geBtn:active { opacity: 0.6; }html body a.geMenuItem { opacity: 0.75; }html body a.geMenuItem[disabled] { opacity: 0.2; }html body a.geMenuItem[disabled]:active { opacity: 0.2; }html body div.geActivePage { opacity: 0.7; }html body a.geMenuItem:active { opacity: 0.2; }html body .geToolbarButton { opacity: 0.3; }html body .geToolbarButton:active { opacity: 0.15; }html body .geStatus:active { opacity: 0.5; }html table.mxPopupMenu tr.mxPopupMenuItemHover:active { opacity:0.7; }html body .geDialog input, html body .geToolbarContainer input, html body .mxWindow input {padding:2px;display:inline-block; }div.geDialog { border-radius: 5px; }html body div.geDialog button.geBigButton { color: #fff !important; }.mxWindow button, .geDialog select, .mxWindow select { display:inline-block; }html body .mxWindow .geColorBtn, html body .geDialog .geColorBtn { background: none; }html body div.diagramContainer button, html body .mxWindow button, html body .geDialog button { min-width: 0px; border-radius: 5px; color: #353535 !important; border-style: solid; border-width: 1px; border-color: rgb(216, 216, 216); }html body div.diagramContainer button:hover, html body .mxWindow button:hover, html body .geDialog button:hover { border-color: rgb(177, 177, 177); }html body div.diagramContainer button:active, html body .mxWindow button:active, html body .geDialog button:active { opacity: 0.6; }div.diagramContainer button.geBtn, .mxWindow button.geBtn, .geDialog button.geBtn { min-width:72px; font-weight: 600; background: none; }div.diagramContainer button.gePrimaryBtn, .mxWindow button.gePrimaryBtn, .geDialog button.gePrimaryBtn, html body .gePrimaryBtn { background: #29b6f2; color: #fff !important; border: none; box-shadow: none; }html body .gePrimaryBtn:hover { background: #29b6f2; border: none; box-shadow: inherit; }html body button.gePrimaryBtn:hover { background: #29b6f2; border: none; }.geBtn button { min-width:72px !important; }div.geToolbarContainer a.geButton { margin:2px; padding: 0 2px 4px 2px; } .geDialog, .mxWindow td.mxWindowPane *, div.geSprite, td.mxWindowTitle, .geDiagramContainer { box-sizing:content-box; }.mxWindow div button.geStyleButton { box-sizing: border-box; }table.mxWindow td.mxWindowPane button.geColorBtn { padding:0px; box-sizing: border-box; }td.mxWindowPane .geSidebarContainer button { padding:2px 0 2px 0; box-sizing: border-box; }html body .geMenuItem { font-size:14px; text-decoration: none; font-weight: normal; padding: 6px 10px 6px 10px; border: none; border-radius: 5px; color: #353535; box-shadow: inset 0 0 0 1px rgba(0,0,0,.11), inset 0 -1px 0 0 rgba(0,0,0,.08), 0 1px 2px 0 rgba(0,0,0,.04); }.geToolbarContainer { background:#fff !important; }div.mxWindow .geSidebarContainer .geTitle { background-color:#fdfdfd; }div.mxWindow .geSidebarContainer .geTitle:hover { background-color:#fafafa; }div.geSidebar { background-color: #fff !important;}div.mxWindow td.mxWindowPane button { background-image: none; float: none; }td.mxWindowTitle { height: 22px !important; background: none !important; font-size: 13px !important; text-align:center !important; border-bottom:1px solid lightgray; }div.mxWindow, div.mxWindowTitle { background-image: none !important; background-color:#fff !important; }div.mxWindow { border-radius:5px; box-shadow: 0px 0px 2px #C0C0C0 !important;}div.mxWindow * { font-family: inherit !important; }html div.geVerticalHandle { position:absolute;bottom:0px;left:50%;cursor:row-resize;width:11px;height:11px;background:white;margin-bottom:-6px; margin-left:-6px; border: none; border-radius: 6px; box-shadow: inset 0 0 0 1px rgba(0,0,0,.11), inset 0 -1px 0 0 rgba(0,0,0,.08), 0 1px 2px 0 rgba(0,0,0,.04); }html div.geInactivePage { background: rgb(249, 249, 249) !important; color:lightgray !important; } html div.geActivePage { background: white !important;color: #353535 !important; } html div.mxRubberband { border:1px solid; border-color: #29b6f2 !important; background:rgba(41,182,242,0.5) !important; } html body div.mxPopupMenu { border-radius:5px; border:1px solid #c0c0c0; padding:5px 0 5px 0; box-shadow: 0px 4px 17px -4px rgba(96,96,96,1); } html table.mxPopupMenu td.mxPopupMenuItem { color: #353535; font-size: 14px; padding-top: 4px; padding-bottom: 4px; }html table.mxPopupMenu tr.mxPopupMenuItemHover { background-color: #29b6f2; }html tr.mxPopupMenuItemHover td.mxPopupMenuItem, html tr.mxPopupMenuItemHover td.mxPopupMenuItem span { color: #fff !important; }html tr.mxPopupMenuItem, html td.mxPopupMenuItem { transition-property: none !important; }html table.mxPopupMenu hr { height: 2px; background-color: rgba(0,0,0,.07); margin: 5px 0; }"+ -(mxClient.IS_IOS?"html input[type=checkbox], html input[type=radio] { height:12px; }":"");document.getElementsByTagName("head")[0].appendChild(d)}catch(w){}var f=function(a,b,c,d,f,g,h){a=document.createElement("div");a.className="geSidebarContainer";a.style.position="absolute";a.style.width="100%";a.style.height="100%";a.style.border="1px solid whiteSmoke";a.style.overflowX="hidden";a.style.overflowY="auto";h(a);this.window=new mxWindow(b,a,c,d,f,g,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1); -this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.setLocation=function(a,b){var c=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)}};Editor.checkmarkImage= -Graph.createSvgImage(22,18,'<path transform="translate(4 0)" d="M7.181,15.007a1,1,0,0,1-.793-0.391L3.222,10.5A1,1,0,1,1,4.808,9.274L7.132,12.3l6.044-8.86A1,1,0,1,1,14.83,4.569l-6.823,10a1,1,0,0,1-.8.437H7.181Z" fill="#29b6f2"/>').src;mxWindow.prototype.closeImage=Graph.createSvgImage(18,10,'<path d="M 5 1 L 13 9 M 13 1 L 5 9" stroke="#C0C0C0" stroke-width="2"/>').src;mxWindow.prototype.minimizeImage=Graph.createSvgImage(14,10,'<path d="M 3 7 L 7 3 L 11 7" stroke="#C0C0C0" stroke-width="2" fill="#ffffff"/>').src; -mxWindow.prototype.normalizeImage=Graph.createSvgImage(14,10,'<path d="M 3 3 L 7 7 L 11 3" stroke="#C0C0C0" stroke-width="2" fill="#ffffff"/>').src;mxConstraintHandler.prototype.pointImage=Graph.createSvgImage(5,5,'<path d="m 0 0 L 5 5 M 0 5 L 5 0" stroke="#29b6f2"/>');mxOutline.prototype.sizerImage=null;mxConstants.VERTEX_SELECTION_COLOR="#C0C0C0";mxConstants.EDGE_SELECTION_COLOR="#C0C0C0";mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff";mxConstants.DEFAULT_VALID_COLOR="#29b6f2";mxConstants.GUIDE_COLOR= -"#C0C0C0";mxConstants.HIGHLIGHT_STROKEWIDTH=5;mxConstants.HIGHLIGHT_OPACITY=35;mxConstants.OUTLINE_COLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_FILLCOLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_STROKECOLOR="#fff";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity="0.4";Graph.prototype.svgShadowSize="0.6";Graph.prototype.svgShadowBlur="1.2";Format.prototype.inactiveTabBackgroundColor="#f0f0f0";mxGraphHandler.prototype.previewColor="#C0C0C0";mxRubberband.prototype.defaultOpacity=50; -HoverIcons.prototype.inactiveOpacity=25;Format.prototype.showCloseButton=!1;EditorUi.prototype.closableScratchpad=!1;EditorUi.prototype.toolbarHeight=46;EditorUi.prototype.footerHeight=0;Graph.prototype.editAfterInsert=!0;Editor.prototype.isChromelessView=function(){return!1};Graph.prototype.isLightboxView=function(){return!1};var h=EditorUi.prototype.updateTabContainer;EditorUi.prototype.updateTabContainer=function(){null!=this.tabContainer&&(this.tabContainer.style.right="70px",this.diagramContainer.style.bottom= -"30px");h.apply(this,arguments)};var k=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){k.apply(this,arguments);this.menus.get("save").setEnabled(null!=this.getCurrentFile()||"1"==urlParams.embed)};var m=Menus.prototype.addShortcut;Menus.prototype.addShortcut=function(a,c){null!=c.shortcut&&900>b&&!mxClient.IS_IOS?a.firstChild.nextSibling.setAttribute("title",c.shortcut):m.apply(this,arguments)};var p=App.prototype.updateUserElement;App.prototype.updateUserElement= -function(){p.apply(this,arguments);if(null!=this.userElement){var a=this.userElement;a.style.cssText="display:inline-block;position:relative;margin-right:4px;cursor:pointer;";a.className="geToolbarButton";a.innerHTML="";a.style.backgroundImage="url("+Editor.userImage+")";a.style.backgroundPosition="center center";a.style.backgroundRepeat="no-repeat";a.style.backgroundSize="24px 24px";a.style.height="24px";a.style.width="24px";a.style.cssFloat="right";a.setAttribute("title",mxResources.get("changeUser"))}}; -var g=App.prototype.updateButtonContainer;App.prototype.updateButtonContainer=function(){g.apply(this,arguments);if(null!=this.shareButton){var a=this.shareButton;a.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;cursor:pointer;";a.className="geToolbarButton";a.innerHTML="";a.style.backgroundImage="url("+Editor.shareImage+")";a.style.backgroundPosition="center center";a.style.backgroundRepeat="no-repeat";a.style.backgroundSize="24px 24px";a.style.height= -"24px";a.style.width="24px"}null!=this.syncButton&&(a=this.syncButton,a.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;cursor:pointer;",a.className="geToolbarButton",a.innerHTML="",a.style.backgroundImage="url("+Editor.syncImage+")",a.style.backgroundPosition="center center",a.style.backgroundRepeat="no-repeat",a.style.backgroundSize="24px 24px",a.style.height="24px",a.style.width="24px")};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.buttonContainer){var a= -document.createElement("div");a.style.display="inline-block";a.style.position="relative";a.style.marginTop="2px";var b=document.createElement("button");mxUtils.write(b,mxResources.get("save"));b.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)");b.className="1"==urlParams.saveAndExit?"geMenuItem":"geMenuItem gePrimaryBtn";b.style.fontSize="14px";b.style.padding="6px";b.style.borderRadius="3px";b.style.marginLeft="8px";b.style.cursor="pointer";mxEvent.addListener(b,"click",mxUtils.bind(this, -function(){this.actions.get("save").funct()}));a.appendChild(b);"1"==urlParams.saveAndExit&&(b=document.createElement("a"),mxUtils.write(b,mxResources.get("saveAndExit")),b.setAttribute("title",mxResources.get("saveAndExit")),b.className="geMenuItem gePrimaryBtn",b.style.fontSize="14px",b.style.marginLeft="6px",b.style.padding="6px",b.style.cursor="pointer",mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b));b=document.createElement("a"); -mxUtils.write(b,mxResources.get("exit"));b.setAttribute("title",mxResources.get("exit"));b.className="geMenuItem";b.style.fontSize="14px";b.style.marginLeft="6px";b.style.padding="6px";b.style.cursor="pointer";mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()}));a.appendChild(b);this.buttonContainer.appendChild(a);this.buttonContainer.style.top="6px"}};Sidebar.prototype.getTooltipOffset=function(){var a=mxUtils.getOffset(this.editorUi.sidebarWindow.window.div); -a.y+=40;return a};var l=Menus.prototype.createPopupMenu;Menus.prototype.createPopupMenu=function(a,b,c){var d=this.editorUi.editor.graph;a.smartSeparators=!0;l.apply(this,arguments);mxUtils.bind(this,function(a,b){var c=new FilenameDialog(this.editorUi,a,mxResources.get("apply"),function(a){b(parseFloat(a))},mxResources.get("spacing"));this.editorUi.showDialog(c.container,300,80,!0,!0);c.init()});1==d.getSelectionCount()?(this.addMenuItems(a,["editTooltip","-","editStyle","editGeometry","-"],null, -c),d.isCellFoldable(d.getSelectionCell())&&this.addMenuItems(a,d.isCellCollapsed(b)?["expand"]:["collapse"],null,c),this.addMenuItems(a,["collapsible","-","lockUnlock","enterGroup"],null,c),a.addSeparator(),this.addSubmenu("layout",a)):d.isSelectionEmpty()&&d.isEnabled()?(a.addSeparator(),this.addMenuItems(a,["editData"],null,c),a.addSeparator(),this.addSubmenu("layout",a),this.addSubmenu("view",a,null,mxResources.get("options")),this.addMenuItems(a,["-","exitGroup"],null,c)):d.isEnabled()&&this.addMenuItems(a, -["-","lockUnlock"],null,c)};EditorUi.prototype.toggleFormatPanel=function(b){null!=this.formatWindow?this.formatWindow.window.setVisible(b?!1:!this.formatWindow.window.isVisible()):a(this)};DiagramFormatPanel.prototype.isMathOptionVisible=function(){return!0};var n=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){null!=this.sidebarWindow&&(this.sidebarWindow.window.setVisible(!1),this.sidebarWindow.window.destroy(),this.sidebarWindow=null);null!=this.formatWindow&&(this.formatWindow.window.setVisible(!1), -this.formatWindow.window.destroy(),this.formatWindow=null);null!=this.actions.outlineWindow&&(this.actions.outlineWindow.window.setVisible(!1),this.actions.outlineWindow.window.destroy(),this.actions.outlineWindow=null);null!=this.actions.layersWindow&&(this.actions.layersWindow.window.setVisible(!1),this.actions.layersWindow.window.destroy(),this.actions.layersWindow=null);null!=this.menus.tagsWindow&&(this.menus.tagsWindow.window.setVisible(!1),this.menus.tagsWindow.window.destroy(),this.menus.tagsWindow= -null);null!=this.menus.findWindow&&(this.menus.findWindow.window.setVisible(!1),this.menus.findWindow.window.destroy(),this.menus.findWindow=null);n.apply(this,arguments)};var q=EditorUi.prototype.setGraphEnabled;EditorUi.prototype.setGraphEnabled=function(a){q.apply(this,arguments);a||(null!=this.sidebarWindow&&this.sidebarWindow.window.setVisible(!1),null!=this.formatWindow&&this.formatWindow.window.setVisible(!1))};EditorUi.prototype.chromelessWindowResize=function(){};var t=Menus.prototype.init; -Menus.prototype.init=function(){t.apply(this,arguments);var b=this.editorUi,d=b.editor.graph;b.actions.get("editDiagram").label=mxResources.get("formatXml")+"...";b.actions.get("createShape").label=mxResources.get("shape")+"...";b.actions.get("outline").label=mxResources.get("outline")+"...";b.actions.get("layers").label=mxResources.get("layers")+"...";b.actions.put("importFile",new Action("File...",function(){d.popupMenuHandler.hideMenu();var a=document.createElement("input");a.setAttribute("type", -"file");mxEvent.addListener(a,"change",function(){null!=a.files&&b.importFiles(a.files,null,null,b.maxImageSize)});a.click()}));b.actions.put("importCsv",new Action(mxResources.get("csv")+"...",function(){d.popupMenuHandler.hideMenu();b.showImportCsvDialog()}));b.actions.put("importText",new Action(mxResources.get("text")+"...",function(){var a=new ParseDialog(b,"Insert from Text");b.showDialog(a.container,620,420,!0,!1);a.init()}));b.actions.put("formatSql",new Action(mxResources.get("formatSql")+ -"...",function(){var a=new ParseDialog(b,"Insert from Text","formatSql");b.showDialog(a.container,620,420,!0,!1);a.init()}));b.actions.put("toggleShapes",new Action(mxResources.get("shapes")+"...",function(){c(b)}));b.actions.put("toggleFormat",new Action(mxResources.get("format")+"...",function(){a(b)}));EditorUi.enablePlantUml&&!b.isOffline()&&b.actions.put("plantUml",new Action(mxResources.get("plantUml")+"...",function(){var a=new ParseDialog(b,"Insert from Text","plantUml");b.showDialog(a.container, -620,420,!0,!1);a.init()}));this.put("diagram",new Menu(mxUtils.bind(this,function(a,c){var d=b.getCurrentFile();b.menus.addSubmenu("extras",a,c,mxResources.get("preferences"));a.addSeparator(c);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?(b.menus.addMenuItems(a,["new","open","-"],c),EditorUi.isElectronApp&&b.menus.addMenuItems(a,["synchronize","-"],c),b.menus.addMenuItems(a,["save","saveAs","-"],c)):"1"==urlParams.embed?(b.menus.addMenuItems(a,["-","save"],c),"1"==urlParams.saveAndExit&&b.menus.addMenuItems(a, -["saveAndExit"],c),a.addSeparator(c)):(b.menus.addMenuItems(a,["new"],c),b.menus.addSubmenu("openFrom",a,c),isLocalStorage&&this.addSubmenu("openRecent",a,c),a.addSeparator(c),null!=d&&d.constructor==DriveFile&&b.menus.addMenuItems(a,["share"],c),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null==d||d.constructor==LocalFile||b.menus.addMenuItems(a,["synchronize"],c),a.addSeparator(c),b.menus.addSubmenu("save",a,c));b.menus.addSubmenu("exportAs",a,c);b.menus.addMenuItems(a,"- outline layers - find tags".split(" "), -c);mxClient.IS_IOS&&navigator.standalone||b.menus.addMenuItems(a,["-","print","-"],c);b.menus.addSubmenu("help",a,c);"1"==urlParams.embed?b.menus.addMenuItems(a,["-","exit"],c):b.menus.addMenuItems(a,["-","close"])})));this.put("save",new Menu(mxUtils.bind(this,function(a,c){var d=b.getCurrentFile();null!=d&&d.constructor==DriveFile?b.menus.addMenuItems(a,["save","makeCopy","-","rename","moveToFolder"],c):(b.menus.addMenuItems(a,["save","saveAs","-","rename"],c),b.isOfflineApp()?navigator.onLine&& -"1"!=urlParams.stealth&&this.addMenuItems(a,["upload"],c):b.menus.addMenuItems(a,["makeCopy"],c));b.menus.addMenuItems(a,["-","autosave"],c);null!=d&&d.isRevisionHistorySupported()&&b.menus.addMenuItems(a,["-","revisionHistory"],c)})));var f=this.get("exportAs");this.put("exportAs",new Menu(mxUtils.bind(this,function(a,c){f.funct(a,c);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||b.menus.addMenuItems(a,["publishLink"],c);a.addSeparator(c);b.menus.addSubmenu("embed",a,c)})));var g=this.get("language"); -this.put("extras",new Menu(mxUtils.bind(this,function(a,c){"1"!=urlParams.embed&&b.menus.addSubmenu("theme",a,c);null!=g&&b.menus.addSubmenu("language",a,c);a.addSeparator(c);b.menus.addMenuItems(a,["scrollbars","tooltips"],c);"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&b.menus.addMenuItems(a,["-","search","scratchpad","-","showStartScreen"],c);!b.isOfflineApp()&&isLocalStorage&&(a.addSeparator(c),b.menus.addMenuItem(a,"plugins",c));a.addSeparator(c)})));this.put("insertAdvanced", -new Menu(mxUtils.bind(this,function(a,c){b.menus.addMenuItems(a,"importText plantUml - formatSql importCsv - createShape editDiagram".split(" "),c)})));mxResources.parse("insertLayout="+mxResources.get("layout"));mxResources.parse("insertAdvanced="+mxResources.get("advanced"));this.put("insert",new Menu(mxUtils.bind(this,function(a,c){b.menus.addMenuItems(a,"insertRectangle insertEllipse insertRhombus - insertText insertLink - insertImage".split(" "),c);b.insertTemplateEnabled&&!b.isOffline()&&b.menus.addMenuItems(a, -["insertTemplate"],c);a.addSeparator(c);b.menus.addSubmenu("insertLayout",a,c);b.menus.addSubmenu("insertAdvanced",a,c);a.addSeparator(c);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?b.menus.addMenuItems(a,["import"],c):b.menus.addSubmenu("importFrom",a,c)})));var h="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),k=function(a,c,d,f){a.addItem(d,null,mxUtils.bind(this,function(){var a=new CreateGraphDialog(b,d,f);b.showDialog(a.container,620,420, -!0,!1);a.init()}),c)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(a,b){for(var c=0;c<h.length;c++)"-"==h[c]?a.addSeparator(b):k(a,b,mxResources.get(h[c])+"...",h[c])})));this.put("view",new Menu(mxUtils.bind(this,function(a,c){b.menus.addMenuItems(a,"grid guides - connectionArrows connectionPoints -".split(" "),c);if("undefined"!==typeof MathJax){var d=b.menus.addMenuItem(a,"mathematicalTypesetting",c);b.menus.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000032875")}b.menus.addMenuItems(a, -["copyConnect","collapseExpand","-","pageScale"],c)})))};var v=EditorUi.prototype.init;EditorUi.prototype.init=function(){function a(a,b,c){var d=h.menus.get(a),f=n.addMenu(mxResources.get(a),mxUtils.bind(this,function(){d.funct.apply(this,arguments)}),m);f.className="geMenuItem";f.style.display="inline-block";f.style.boxSizing="border-box";f.style.top="6px";f.style.marginRight="6px";f.style.height="30px";f.style.paddingTop="6px";f.style.paddingBottom="6px";f.style.cursor="pointer";f.setAttribute("title", -mxResources.get(a));h.menus.menuCreated(d,f,"geMenuItem");null!=c?(f.style.backgroundImage="url("+c+")",f.style.backgroundPosition="center center",f.style.backgroundRepeat="no-repeat",f.style.backgroundSize="24px 24px",f.style.width="34px",f.innerHTML=""):b||(f.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",f.style.backgroundPosition="right 6px center",f.style.backgroundRepeat="no-repeat",f.style.paddingRight="22px");return f}function c(a,b,c,d,f,g){var k=document.createElement("a"); -k.className="geMenuItem";k.style.display="inline-block";k.style.boxSizing="border-box";k.style.height="30px";k.style.padding="6px";k.style.position="relative";k.style.verticalAlign="top";k.style.top="0px";null!=h.statusContainer?l.insertBefore(k,h.statusContainer):l.appendChild(k);null!=g?(k.style.backgroundImage="url("+g+")",k.style.backgroundPosition="center center",k.style.backgroundRepeat="no-repeat",k.style.backgroundSize="24px 24px",k.style.width="34px"):mxUtils.write(k,a);mxEvent.addListener(k, -mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(k,"click",function(a){"disabled"!=k.getAttribute("disabled")&&b(a);mxEvent.consume(a)});null==c&&(k.style.marginRight="4px");null!=d&&k.setAttribute("title",d);null!=f&&(a=function(){f.isEnabled()?(k.removeAttribute("disabled"),k.style.cursor="pointer"):(k.setAttribute("disabled","disabled"),k.style.cursor="default")},f.addListener("stateChanged",a),a());return k}function d(a,b){var c= -document.createElement("div");c.className="geMenuItem";c.style.display="inline-block";c.style.verticalAlign="top";c.style.marginRight="6px";c.style.padding="0 4px 0 4px";c.style.height="30px";c.style.position="relative";c.style.top="0px";for(var d=0;d<a.length;d++)null!=a[d]&&(a[d].style.margin="0px",a[d].style.boxShadow="none",c.appendChild(a[d]));null!=b&&mxUtils.setOpacity(c,b);null!=h.statusContainer?l.insertBefore(c,h.statusContainer):l.appendChild(c);return c}function f(){for(var f=l.firstChild;null!= -f;){var g=f.nextSibling;"geMenuItem"!=f.className&&"geItem"!=f.className||f.parentNode.removeChild(f);f=g}m=l.firstChild;b=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;(f=1E3>b)||a("diagram");d([f?a("diagram",null,IMAGE_PATH+"/drawlogo.svg"):null,c(mxResources.get("shapes"),h.actions.get("toggleShapes").funct,null,mxResources.get("shapes"),h.actions.get("image"),f?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTMgMTN2OGg4di04aC04ek0zIDIxaDh2LThIM3Y4ek0zIDN2OGg4VjNIM3ptMTMuNjYtMS4zMUwxMSA3LjM0IDE2LjY2IDEzbDUuNjYtNS42Ni01LjY2LTUuNjV6Ii8+PC9zdmc+": -null),c(mxResources.get("format"),h.actions.get("toggleFormat").funct,null,mxResources.get("format")+" ("+h.actions.get("formatPanel").shortcut+")",h.actions.get("image"),f?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIgM2MtNC45NyAwLTkgNC4wMy05IDlzNC4wMyA5IDkgOWMuODMgMCAxLjUtLjY3IDEuNS0xLjUgMC0uMzktLjE1LS43NC0uMzktMS4wMS0uMjMtLjI2LS4zOC0uNjEtLjM4LS45OSAwLS44My42Ny0xLjUgMS41LTEuNUgxNmMyLjc2IDAgNS0yLjI0IDUtNSAwLTQuNDItNC4wMy04LTktOHptLTUuNSA5Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNS42NyA5IDYuNSA5IDggOS42NyA4IDEwLjUgNy4zMyAxMiA2LjUgMTJ6bTMtNEM4LjY3IDggOCA3LjMzIDggNi41UzguNjcgNSA5LjUgNXMxLjUuNjcgMS41IDEuNVMxMC4zMyA4IDkuNSA4em01IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxMy42NyA1IDE0LjUgNXMxLjUuNjcgMS41IDEuNVMxNS4zMyA4IDE0LjUgOHptMyA0Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTYuNjcgOSAxNy41IDlzMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41eiIvPjwvc3ZnPg==": -null)],f?60:null);g=a("insert",!0,f?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgMTNoLTZ2NmgtMnYtNkg1di0yaDZWNWgydjZoNnYyeiIvPjwvc3ZnPg==":null);d([g,c(mxResources.get("delete"),h.actions.get("delete").funct,null,mxResources.get("delete"),h.actions.get("delete"),f?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek0xOSA0aC0zLjVsLTEtMWgtNWwtMSAxSDV2MmgxNFY0eiIvPjwvc3ZnPg==": -null)],f?60:null);if(411<=b&&(g=h.actions.get("undo"),f=h.actions.get("redo"),g=c("",g.funct,null,mxResources.get("undo")+" ("+g.shortcut+")",g,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIuNSA4Yy0yLjY1IDAtNS4wNS45OS02LjkgMi42TDIgN3Y5aDlsLTMuNjItMy42MmMxLjM5LTEuMTYgMy4xNi0xLjg4IDUuMTItMS44OCAzLjU0IDAgNi41NSAyLjMxIDcuNiA1LjVsMi4zNy0uNzhDMjEuMDggMTEuMDMgMTcuMTUgOCAxMi41IDh6Ii8+PC9zdmc+"),f=c("", -f.funct,null,mxResources.get("redo")+" ("+f.shortcut+")",f,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTguNCAxMC42QzE2LjU1IDguOTkgMTQuMTUgOCAxMS41IDhjLTQuNjUgMC04LjU4IDMuMDMtOS45NiA3LjIyTDMuOSAxNmMxLjA1LTMuMTkgNC4wNS01LjUgNy42LTUuNSAxLjk1IDAgMy43My43MiA1LjEyIDEuODhMMTMgMTZoOVY3bC0zLjYgMy42eiIvPjwvc3ZnPg=="),d([g,f],60),480<=b)){var f=h.actions.get("zoomIn"),g=h.actions.get("zoomOut"),p=h.actions.get("resetView"); -d([c("",function(){k.popupMenuHandler.hideMenu();var a=k.view.scale,b=k.view.translate.x,c=k.view.translate.y;h.actions.get("resetView").funct();1E-5>Math.abs(a-k.view.scale)&&b==k.view.translate.x&&c==k.view.translate.y&&h.actions.get(k.pageVisible?"fitPage":"fitWindow").funct()},!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",p,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMyA1djRoMlY1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnptMiAxMEgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6bTE0IDRoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6bTAtMTZoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yeiIvPjwvc3ZnPg=="), -640<=b?c("",f.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",f,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHptMi41LTRoLTJ2Mkg5di0ySDdWOWgyVjdoMXYyaDJ2MXoiLz48L3N2Zz4="): -null,640<=b?c("",g.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",g,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpNNyA5aDV2MUg3eiIvPjwvc3ZnPg=="): -null],60)}f=h.menus.get("language");null!=f&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=b?(null==M&&(g=n.addMenu("",f.funct),g.setAttribute("title",mxResources.get("language")),g.className="geToolbarButton",g.style.backgroundImage="url("+Editor.globeImage+")",g.style.backgroundPosition="center center",g.style.backgroundRepeat="no-repeat",g.style.backgroundSize="24px 24px",g.style.position="absolute",g.style.height="24px",g.style.width="24px",g.style.zIndex="1",g.style.top="11px",g.style.right= -"8px",g.style.cursor="pointer",l.appendChild(g),M=g),h.buttonContainer.style.paddingRight="34px"):(h.buttonContainer.style.paddingRight="4px",null!=M&&(M.parentNode.removeChild(M),M=null))}v.apply(this,arguments);var g=document.createElement("div");g.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";g.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(g);var h=this,k=h.editor.graph;h.toolbar=this.createToolbar(h.createDiv("geToolbar")); -h.defaultLibraryName=mxResources.get("untitledLibrary");var l=document.createElement("div");l.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;border-bottom:1px solid lightgray;background-color:#ffffff;text-align:left;white-space:nowrap;";var m=null,n=new Menubar(h,l);h.statusContainer=h.createStatusContainer();h.statusContainer.style.position="relative";h.statusContainer.style.maxWidth="";h.statusContainer.style.marginTop="7px";h.statusContainer.style.marginLeft= -"6px";h.statusContainer.style.color="gray";h.statusContainer.style.cursor="default";h.editor.addListener("statusChanged",mxUtils.bind(this,function(){h.setStatusText(h.editor.getStatus())}));var p=h.descriptorChanged;h.descriptorChanged=function(){p.apply(this,arguments);var a=h.getCurrentFile();if(null!=a&&null!=a.getTitle()){var b=a.getMode();"google"==b?b="googleDrive":"github"==b?b="gitHub":"onedrive"==b&&(b="oneDrive");b=mxResources.get(b);l.setAttribute("title",a.getTitle()+(null!=b?" ("+b+ -")":""))}else l.removeAttribute("title")};h.setStatusText(h.editor.getStatus());l.appendChild(h.statusContainer);h.buttonContainer=document.createElement("div");h.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";l.appendChild(h.buttonContainer);h.menubarContainer=h.buttonContainer;h.tabContainer=document.createElement("div");h.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;border-bottom:1px solid lightgray;background-color:#ffffff;border-top:1px solid lightgray;margin-bottom:-2px;visibility:hidden;"; -var g=h.diagramContainer.parentNode,q=document.createElement("div");q.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";h.diagramContainer.style.top="47px";var t=h.menus.get("viewZoom");if(null!=t){this.tabContainer.style.right="70px";var E=n.addMenu("100%",t.funct);E.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");E.style.whiteSpace="nowrap";E.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";E.style.backgroundPosition="right 6px center"; -E.style.backgroundRepeat="no-repeat";E.style.backgroundColor="#ffffff";E.style.paddingRight="10px";E.style.display="block";E.style.position="absolute";E.style.textDecoration="none";E.style.textDecoration="none";E.style.right="0px";E.style.bottom="0px";E.style.overflow="hidden";E.style.visibility="hidden";E.style.textAlign="center";E.style.color="#000";E.style.fontSize="12px";E.style.color="#707070";E.style.width="59px";E.style.borderTop="1px solid lightgray";E.style.borderLeft="1px solid lightgray"; -E.style.height=parseInt(h.tabContainer.style.height)-1+"px";E.style.lineHeight=parseInt(h.tabContainer.style.height)+1+"px";q.appendChild(E);t=mxUtils.bind(this,function(){E.innerHTML=Math.round(100*h.editor.graph.view.scale)+"%"});h.editor.graph.view.addListener(mxEvent.EVENT_SCALE,t);h.editor.addListener("resetGraphView",t);h.editor.addListener("pageSelected",t);var I=h.setGraphEnabled;h.setGraphEnabled=function(){I.apply(this,arguments);null!=this.tabContainer&&(E.style.visibility=this.tabContainer.style.visibility, -this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?"30px":"0px")}}q.appendChild(h.tabContainer);q.appendChild(l);q.appendChild(h.diagramContainer);g.appendChild(q);h.updateTabContainer();var M=null;f();mxEvent.addListener(window,"resize",function(){f();null!=h.sidebarWindow&&h.sidebarWindow.window.fit();null!=h.formatWindow&&h.formatWindow.window.fit();null!=h.actions.outlineWindow&&h.actions.outlineWindow.window.fit();null!=h.actions.layersWindow&&h.actions.layersWindow.window.fit(); -null!=h.menus.tagsWindow&&h.menus.tagsWindow.window.fit();null!=h.menus.findWindow&&h.menus.findWindow.window.fit()})}}};(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var c=EditorUi.initTheme;EditorUi.initTheme=function(){c.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();(function(){var a=mxGuide.prototype.move;mxGuide.prototype.move=function(b,c,h,k){var d=c.y,f=c.x,g=!1,l=!1;if(null!=this.states&&null!=b&&null!=c){var n=this,q=new mxCellState,t=this.graph.getView().scale,v=Math.max(2,this.getGuideTolerance()/2);q.x=b.x+f;q.y=b.y+d;q.width=b.width;q.height=b.height;for(var w=[],y=[],u=0;u<this.states.length;u++){var x=this.states[u];x instanceof mxCellState&&(k||!this.graph.isCellSelected(x.cell))&&((q.x>=x.x&&q.x<=x.x+x.width||x.x>=q.x&&x.x<=q.x+q.width)&&(q.y> -x.y+x.height+4||q.y+q.height+4<x.y)?w.push(x):(q.y>=x.y&&q.y<=x.y+x.height||x.y>=q.y&&x.y<=q.y+q.height)&&(q.x>x.x+x.width+4||q.x+q.width+4<x.x)&&y.push(x))}var F=0,G=0,z=x=0,A=0,H=0,B=0,D=0,J=5*t;if(1<w.length){w.push(q);w.sort(function(a,b){return a.y-b.y});var C=!1,u=q==w[0],t=q==w[w.length-1];if(!u&&!t)for(u=1;u<w.length-1;u++)if(q==w[u]){t=w[u-1];u=w[u+1];x=G=z=(u.y-t.y-t.height-q.height)/2;break}for(u=0;u<w.length-1;u++){var t=w[u],E=w[u+1],I=q==t||q==E,E=E.y-t.y-t.height,C=C|q==t;if(0==G&& -0==F)G=E,F=1;else if(Math.abs(G-E)<=(I||1==u&&C?v:0))F+=1;else if(1<F&&C){w=w.slice(0,u+1);break}else if(3<=w.length-u&&!C)F=0,x=G=0!=z?z:0,w.splice(0,0==u?1:u),u=-1;else break;0!=x||I||(G=x=E)}3==w.length&&w[1]==q&&(x=0)}if(1<y.length){y.push(q);y.sort(function(a,b){return a.x-b.x});C=!1;u=q==y[0];t=q==y[y.length-1];if(!u&&!t)for(u=1;u<y.length-1;u++)if(q==y[u]){t=y[u-1];u=y[u+1];B=H=D=(u.x-t.x-t.width-q.width)/2;break}for(u=0;u<y.length-1;u++){t=y[u];E=y[u+1];I=q==t||q==E;E=E.x-t.x-t.width;C|=q== -t;if(0==H&&0==A)H=E,A=1;else if(Math.abs(H-E)<=(I||1==u&&C?v:0))A+=1;else if(1<A&&C){y=y.slice(0,u+1);break}else if(3<=y.length-u&&!C)A=0,B=H=0!=D?D:0,y.splice(0,0==u?1:u),u=-1;else break;0!=B||I||(H=B=E)}3==y.length&&y[1]==q&&(B=0)}v=function(a,b,c,d){var f=[],g;d?(d=J,g=0):(d=0,g=J);f.push(new mxPoint(a.x-d,a.y-g));f.push(new mxPoint(a.x+d,a.y+g));f.push(a);f.push(b);f.push(new mxPoint(b.x-d,b.y-g));f.push(new mxPoint(b.x+d,b.y+g));if(null!=c)return c.points=f,c;a=new mxPolyline(f,mxConstants.GUIDE_COLOR, -mxConstants.GUIDE_STROKEWIDTH);a.dialect=mxConstants.DIALECT_SVG;a.pointerEvents=!1;a.init(n.graph.getView().getOverlayPane());return a};H=function(a,b){if(a&&null!=n.guidesArrHor)for(var c=0;c<n.guidesArrHor.length;c++)n.guidesArrHor[c].node.style.visibility="hidden";if(b&&null!=n.guidesArrVer)for(c=0;c<n.guidesArrVer.length;c++)n.guidesArrVer[c].node.style.visibility="hidden"};if(1<A&&A==y.length-1){A=[];D=n.guidesArrHor;g=[];f=0;u=y[0]==q?1:0;C=y[u].y+y[u].height;if(0<B)for(u=0;u<y.length-1;u++)t= -y[u],E=y[u+1],q==t?(f=E.x-t.width-B,g.push(new mxPoint(f+t.width+J,C)),g.push(new mxPoint(E.x-J,C))):q==E?(g.push(new mxPoint(t.x+t.width+J,C)),f=t.x+t.width+B,g.push(new mxPoint(f-J,C))):(g.push(new mxPoint(t.x+t.width+J,C)),g.push(new mxPoint(E.x-J,C)));else t=y[0],u=y[2],f=t.x+t.width+(u.x-t.x-t.width-q.width)/2,g.push(new mxPoint(t.x+t.width+J,C)),g.push(new mxPoint(f-J,C)),g.push(new mxPoint(f+q.width+J,C)),g.push(new mxPoint(u.x-J,C));for(u=0;u<g.length;u+=2)y=g[u],B=g[u+1],y=v(y,B,null!=D? -D[u/2]:null),y.node.style.visibility="visible",y.redraw(),A.push(y);for(u=g.length/2;null!=D&&u<D.length;u++)D[u].destroy();n.guidesArrHor=A;f-=b.x;g=!0}else H(!0);if(1<F&&F==w.length-1){A=[];D=n.guidesArrVer;l=[];d=0;u=w[0]==q?1:0;F=w[u].x+w[u].width;if(0<x)for(u=0;u<w.length-1;u++)t=w[u],E=w[u+1],q==t?(d=E.y-t.height-x,l.push(new mxPoint(F,d+t.height+J)),l.push(new mxPoint(F,E.y-J))):q==E?(l.push(new mxPoint(F,t.y+t.height+J)),d=t.y+t.height+x,l.push(new mxPoint(F,d-J))):(l.push(new mxPoint(F,t.y+ -t.height+J)),l.push(new mxPoint(F,E.y-J)));else t=w[0],u=w[2],d=t.y+t.height+(u.y-t.y-t.height-q.height)/2,l.push(new mxPoint(F,t.y+t.height+J)),l.push(new mxPoint(F,d-J)),l.push(new mxPoint(F,d+q.height+J)),l.push(new mxPoint(F,u.y-J));for(u=0;u<l.length;u+=2)y=l[u],B=l[u+1],y=v(y,B,null!=D?D[u/2]:null,!0),y.node.style.visibility="visible",y.redraw(),A.push(y);for(u=l.length/2;null!=D&&u<D.length;u++)D[u].destroy();n.guidesArrVer=A;d-=b.y;l=!0}else H(!1,!0)}if(g||l)return q=new mxPoint(f,d),w=a.call(this, -b,q,h,k),g&&!l?q.y=w.y:l&&!g&&(q.x=w.x),w.y!=q.y&&null!=this.guideY&&null!=this.guideY.node&&(this.guideY.node.style.visibility="hidden"),w.x!=q.x&&null!=this.guideX&&null!=this.guideX.node&&(this.guideX.node.style.visibility="hidden"),q;H(!0,!0);return a.apply(this,arguments)};var c=mxGuide.prototype.setVisible;mxGuide.prototype.setVisible=function(a){c.call(this,a);var b=this.guidesArrVer,d=this.guidesArrHor;if(null!=b)for(var k=0;k<b.length;k++)b[k].node.style.visibility=a?"visible":"hidden";if(null!= -d)for(k=0;k<d.length;k++)d[k].node.style.visibility=a?"visible":"hidden"};var b=mxGuide.prototype.destroy;mxGuide.prototype.destroy=function(){b.call(this);var a=this.guidesArrVer,c=this.guidesArrHor;if(null!=a){for(var h=0;h<a.length;h++)a[h].destroy();this.guidesArrVer=null}if(null!=c){for(h=0;h<c.length;h++)c[h].destroy();this.guidesArrHor=null}}})(); +a.sidebarWindow.window.isVisible()&&a.sidebarWindow.window.fit()}if("1"==urlParams.lightbox||"0"==urlParams.chrome||"undefined"===typeof window.Format||"undefined"===typeof window.Menus)window.uiTheme=null;else{var b=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;try{var d=document.createElement("style");d.type="text/css";d.innerHTML="* { -webkit-font-smoothing: antialiased; }html body .mxWindow button.geBtn { font-size:12px !important; margin-left: 0; }html body table.mxWindow td.mxWindowPane div.mxWindowPane *:not(svg *) { font-size:9pt; }html body div.diagramContainer button, html body button.geBtn { font-size:14px; font-weight:700;border-radius: 5px; }html body button.geBtn:active { opacity: 0.6; }html body a.geMenuItem { opacity: 0.75; }html body a.geMenuItem[disabled] { opacity: 0.2; }html body a.geMenuItem[disabled]:active { opacity: 0.2; }html body div.geActivePage { opacity: 0.7; }html body a.geMenuItem:active { opacity: 0.2; }html body .geToolbarButton { opacity: 0.3; }html body .geToolbarButton:active { opacity: 0.15; }html body .geStatus:active { opacity: 0.5; }html table.mxPopupMenu tr.mxPopupMenuItemHover:active { opacity:0.7; }html body .geDialog input, html body .geToolbarContainer input, html body .mxWindow input {padding:2px;display:inline-block; }div.geDialog { border-radius: 5px; }html body div.geDialog button.geBigButton { color: #fff !important; }.mxWindow button, .geDialog select, .mxWindow select { display:inline-block; }html body .mxWindow .geColorBtn, html body .geDialog .geColorBtn { background: none; }html body div.diagramContainer button, html body .mxWindow button, html body .geDialog button { min-width: 0px; border-radius: 5px; color: #353535 !important; border-style: solid; border-width: 1px; border-color: rgb(216, 216, 216); }html body div.diagramContainer button:hover, html body .mxWindow button:hover, html body .geDialog button:hover { border-color: rgb(177, 177, 177); }html body div.diagramContainer button:active, html body .mxWindow button:active, html body .geDialog button:active { opacity: 0.6; }div.diagramContainer button.geBtn, .mxWindow button.geBtn, .geDialog button.geBtn { min-width:72px; font-weight: 600; background: none; }div.diagramContainer button.gePrimaryBtn, .mxWindow button.gePrimaryBtn, .geDialog button.gePrimaryBtn, html body .gePrimaryBtn { background: #29b6f2; color: #fff !important; border: none; box-shadow: none; }html body .gePrimaryBtn:hover { background: #29b6f2; border: none; box-shadow: inherit; }html body button.gePrimaryBtn:hover { background: #29b6f2; border: none; }.geBtn button { min-width:72px !important; }div.geToolbarContainer a.geButton { margin:2px; padding: 0 2px 4px 2px; } .geDialog, .mxWindow td.mxWindowPane *, div.geSprite, td.mxWindowTitle, .geDiagramContainer { box-sizing:content-box; }.mxWindow div button.geStyleButton { box-sizing: border-box; }table.mxWindow td.mxWindowPane button.geColorBtn { padding:0px; box-sizing: border-box; }td.mxWindowPane .geSidebarContainer button { padding:2px 0 2px 0; box-sizing: border-box; }html body .geMenuItem { font-size:14px; text-decoration: none; font-weight: normal; padding: 6px 10px 6px 10px; border: none; border-radius: 5px; color: #353535; box-shadow: inset 0 0 0 1px rgba(0,0,0,.11), inset 0 -1px 0 0 rgba(0,0,0,.08), 0 1px 2px 0 rgba(0,0,0,.04); }.geToolbarContainer { background:#fff !important; }div.mxWindow .geSidebarContainer .geTitle { background-color:#fdfdfd; }div.mxWindow .geSidebarContainer .geTitle:hover { background-color:#fafafa; }div.geSidebar { background-color: #fff !important;}div.mxWindow td.mxWindowPane button { background-image: none; float: none; }td.mxWindowTitle { height: 22px !important; background: none !important; font-size: 13px !important; text-align:center !important; border-bottom:1px solid lightgray; }div.mxWindow, div.mxWindowTitle { background-image: none !important; background-color:#fff !important; }div.mxWindow { border-radius:5px; box-shadow: 0px 0px 2px #C0C0C0 !important;}div.mxWindow * { font-family: inherit !important; }html div.geVerticalHandle { position:absolute;bottom:0px;left:50%;cursor:row-resize;width:11px;height:11px;background:white;margin-bottom:-6px; margin-left:-6px; border: none; border-radius: 6px; box-shadow: inset 0 0 0 1px rgba(0,0,0,.11), inset 0 -1px 0 0 rgba(0,0,0,.08), 0 1px 2px 0 rgba(0,0,0,.04); }html div.geInactivePage { background: rgb(249, 249, 249) !important; color:lightgray !important; } html div.geActivePage { background: white !important;color: #353535 !important; } html div.mxRubberband { border:1px solid; border-color: #29b6f2 !important; background:rgba(41,182,242,0.5) !important; } html body div.mxPopupMenu { border-radius:5px; border:1px solid #c0c0c0; padding:5px 0 5px 0; box-shadow: 0px 4px 17px -4px rgba(96,96,96,1); } html table.mxPopupMenu td.mxPopupMenuItem { color: #353535; font-size: 14px; padding-top: 4px; padding-bottom: 4px; }html table.mxPopupMenu tr.mxPopupMenuItemHover { background-color: #29b6f2; }html tr.mxPopupMenuItemHover td.mxPopupMenuItem, html tr.mxPopupMenuItemHover td.mxPopupMenuItem span { color: #fff !important; }html tr.mxPopupMenuItem, html td.mxPopupMenuItem { transition-property: none !important; }html table.mxPopupMenu hr { height: 2px; background-color: rgba(0,0,0,.07); margin: 5px 0; }"+ +(mxClient.IS_IOS?"html input[type=checkbox], html input[type=radio] { height:12px; }":"");document.getElementsByTagName("head")[0].appendChild(d)}catch(x){}var g=function(a,b,c,d,e,f,g){var k=document.createElement("div");k.className="geSidebarContainer";k.style.position="absolute";k.style.width="100%";k.style.height="100%";k.style.border="1px solid whiteSmoke";k.style.overflowX="hidden";k.style.overflowY="auto";g(k);this.window=new mxWindow(b,k,c,d,e,f,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1); +this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.setLocation=function(a,b){var c=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};mxClient.IS_SF&& +(this.window.div.onselectstart=mxUtils.bind(this,function(b){null==b&&(b=window.event);return null!=b&&a.isSelectionAllowed(b)}))};Editor.checkmarkImage=Graph.createSvgImage(22,18,'<path transform="translate(4 0)" d="M7.181,15.007a1,1,0,0,1-.793-0.391L3.222,10.5A1,1,0,1,1,4.808,9.274L7.132,12.3l6.044-8.86A1,1,0,1,1,14.83,4.569l-6.823,10a1,1,0,0,1-.8.437H7.181Z" fill="#29b6f2"/>').src;mxWindow.prototype.closeImage=Graph.createSvgImage(18,10,'<path d="M 5 1 L 13 9 M 13 1 L 5 9" stroke="#C0C0C0" stroke-width="2"/>').src; +mxWindow.prototype.minimizeImage=Graph.createSvgImage(14,10,'<path d="M 3 7 L 7 3 L 11 7" stroke="#C0C0C0" stroke-width="2" fill="#ffffff"/>').src;mxWindow.prototype.normalizeImage=Graph.createSvgImage(14,10,'<path d="M 3 3 L 7 7 L 11 3" stroke="#C0C0C0" stroke-width="2" fill="#ffffff"/>').src;mxConstraintHandler.prototype.pointImage=Graph.createSvgImage(5,5,'<path d="m 0 0 L 5 5 M 0 5 L 5 0" stroke="#29b6f2"/>');mxOutline.prototype.sizerImage=null;mxConstants.VERTEX_SELECTION_COLOR="#C0C0C0";mxConstants.EDGE_SELECTION_COLOR= +"#C0C0C0";mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff";mxConstants.DEFAULT_VALID_COLOR="#29b6f2";mxConstants.GUIDE_COLOR="#C0C0C0";mxConstants.HIGHLIGHT_STROKEWIDTH=5;mxConstants.HIGHLIGHT_OPACITY=35;mxConstants.OUTLINE_COLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_FILLCOLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_STROKECOLOR="#fff";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity="0.4";Graph.prototype.svgShadowSize="0.6";Graph.prototype.svgShadowBlur="1.2";Format.prototype.inactiveTabBackgroundColor= +"#f0f0f0";mxGraphHandler.prototype.previewColor="#C0C0C0";mxRubberband.prototype.defaultOpacity=50;HoverIcons.prototype.inactiveOpacity=25;Format.prototype.showCloseButton=!1;EditorUi.prototype.closableScratchpad=!1;EditorUi.prototype.toolbarHeight=46;EditorUi.prototype.footerHeight=0;Graph.prototype.editAfterInsert=!0;Editor.prototype.isChromelessView=function(){return!1};Graph.prototype.isLightboxView=function(){return!1};var e=EditorUi.prototype.updateTabContainer;EditorUi.prototype.updateTabContainer= +function(){null!=this.tabContainer&&(this.tabContainer.style.right="70px",this.diagramContainer.style.bottom="30px");e.apply(this,arguments)};var k=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){k.apply(this,arguments);this.menus.get("save").setEnabled(null!=this.getCurrentFile()||"1"==urlParams.embed)};var m=Menus.prototype.addShortcut;Menus.prototype.addShortcut=function(a,c){null!=c.shortcut&&900>b&&!mxClient.IS_IOS?a.firstChild.nextSibling.setAttribute("title", +c.shortcut):m.apply(this,arguments)};var n=App.prototype.updateUserElement;App.prototype.updateUserElement=function(){n.apply(this,arguments);if(null!=this.userElement){var a=this.userElement;a.style.cssText="display:inline-block;position:relative;margin-right:4px;cursor:pointer;";a.className="geToolbarButton";a.innerHTML="";a.style.backgroundImage="url("+Editor.userImage+")";a.style.backgroundPosition="center center";a.style.backgroundRepeat="no-repeat";a.style.backgroundSize="24px 24px";a.style.height= +"24px";a.style.width="24px";a.style.cssFloat="right";a.setAttribute("title",mxResources.get("changeUser"))}};var q=App.prototype.updateButtonContainer;App.prototype.updateButtonContainer=function(){q.apply(this,arguments);if(null!=this.shareButton){var a=this.shareButton;a.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;cursor:pointer;";a.className="geToolbarButton";a.innerHTML="";a.style.backgroundImage="url("+Editor.shareImage+")";a.style.backgroundPosition= +"center center";a.style.backgroundRepeat="no-repeat";a.style.backgroundSize="24px 24px";a.style.height="24px";a.style.width="24px"}};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.buttonContainer){var a=document.createElement("div");a.style.display="inline-block";a.style.position="relative";a.style.marginTop="2px";var b=document.createElement("button");mxUtils.write(b,mxResources.get("save"));b.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)");b.className="1"==urlParams.saveAndExit? +"geMenuItem":"geMenuItem gePrimaryBtn";b.style.fontSize="14px";b.style.padding="6px";b.style.borderRadius="3px";b.style.marginLeft="8px";b.style.cursor="pointer";mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()}));a.appendChild(b);"1"==urlParams.saveAndExit&&(b=document.createElement("a"),mxUtils.write(b,mxResources.get("saveAndExit")),b.setAttribute("title",mxResources.get("saveAndExit")),b.className="geMenuItem gePrimaryBtn",b.style.fontSize="14px",b.style.marginLeft= +"6px",b.style.padding="6px",b.style.cursor="pointer",mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b));b=document.createElement("a");mxUtils.write(b,mxResources.get("exit"));b.setAttribute("title",mxResources.get("exit"));b.className="geMenuItem";b.style.fontSize="14px";b.style.marginLeft="6px";b.style.padding="6px";b.style.cursor="pointer";mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})); +a.appendChild(b);this.buttonContainer.appendChild(a);this.buttonContainer.style.top="6px"}};Sidebar.prototype.getTooltipOffset=function(){var a=mxUtils.getOffset(this.editorUi.sidebarWindow.window.div);a.y+=40;return a};var f=Menus.prototype.createPopupMenu;Menus.prototype.createPopupMenu=function(a,b,c){var d=this.editorUi.editor.graph;a.smartSeparators=!0;f.apply(this,arguments);mxUtils.bind(this,function(a,b){var c=new FilenameDialog(this.editorUi,a,mxResources.get("apply"),function(a){b(parseFloat(a))}, +mxResources.get("spacing"));this.editorUi.showDialog(c.container,300,80,!0,!0);c.init()});1==d.getSelectionCount()?(this.addMenuItems(a,["editTooltip","-","editStyle","editGeometry","-"],null,c),d.isCellFoldable(d.getSelectionCell())&&this.addMenuItems(a,d.isCellCollapsed(b)?["expand"]:["collapse"],null,c),this.addMenuItems(a,["collapsible","-","lockUnlock","enterGroup"],null,c),a.addSeparator(),this.addSubmenu("layout",a)):d.isSelectionEmpty()&&d.isEnabled()?(a.addSeparator(),this.addMenuItems(a, +["editData"],null,c),a.addSeparator(),this.addSubmenu("layout",a),this.addSubmenu("view",a,null,mxResources.get("options")),this.addMenuItems(a,["-","exitGroup"],null,c)):d.isEnabled()&&this.addMenuItems(a,["-","lockUnlock"],null,c)};EditorUi.prototype.toggleFormatPanel=function(b){null!=this.formatWindow?this.formatWindow.window.setVisible(b?!1:!this.formatWindow.window.isVisible()):a(this)};DiagramFormatPanel.prototype.isMathOptionVisible=function(){return!0};var l=EditorUi.prototype.destroy;EditorUi.prototype.destroy= +function(){null!=this.sidebarWindow&&(this.sidebarWindow.window.setVisible(!1),this.sidebarWindow.window.destroy(),this.sidebarWindow=null);null!=this.formatWindow&&(this.formatWindow.window.setVisible(!1),this.formatWindow.window.destroy(),this.formatWindow=null);null!=this.actions.outlineWindow&&(this.actions.outlineWindow.window.setVisible(!1),this.actions.outlineWindow.window.destroy(),this.actions.outlineWindow=null);null!=this.actions.layersWindow&&(this.actions.layersWindow.window.setVisible(!1), +this.actions.layersWindow.window.destroy(),this.actions.layersWindow=null);null!=this.menus.tagsWindow&&(this.menus.tagsWindow.window.setVisible(!1),this.menus.tagsWindow.window.destroy(),this.menus.tagsWindow=null);null!=this.menus.findWindow&&(this.menus.findWindow.window.setVisible(!1),this.menus.findWindow.window.destroy(),this.menus.findWindow=null);l.apply(this,arguments)};var p=EditorUi.prototype.setGraphEnabled;EditorUi.prototype.setGraphEnabled=function(a){p.apply(this,arguments);a||(null!= +this.sidebarWindow&&this.sidebarWindow.window.setVisible(!1),null!=this.formatWindow&&this.formatWindow.window.setVisible(!1))};EditorUi.prototype.chromelessWindowResize=function(){};var t=Menus.prototype.init;Menus.prototype.init=function(){t.apply(this,arguments);var b=this.editorUi,d=b.editor.graph;b.actions.get("editDiagram").label=mxResources.get("formatXml")+"...";b.actions.get("createShape").label=mxResources.get("shape")+"...";b.actions.get("outline").label=mxResources.get("outline")+"..."; +b.actions.get("layers").label=mxResources.get("layers")+"...";b.actions.put("importFile",new Action("File...",function(){d.popupMenuHandler.hideMenu();var a=document.createElement("input");a.setAttribute("type","file");mxEvent.addListener(a,"change",function(){null!=a.files&&b.importFiles(a.files,null,null,b.maxImageSize)});a.click()}));b.actions.put("importCsv",new Action(mxResources.get("csv")+"...",function(){d.popupMenuHandler.hideMenu();b.showImportCsvDialog()}));b.actions.put("importText",new Action(mxResources.get("text")+ +"...",function(){var a=new ParseDialog(b,"Insert from Text");b.showDialog(a.container,620,420,!0,!1);a.init()}));b.actions.put("formatSql",new Action(mxResources.get("formatSql")+"...",function(){var a=new ParseDialog(b,"Insert from Text","formatSql");b.showDialog(a.container,620,420,!0,!1);a.init()}));b.actions.put("toggleShapes",new Action(mxResources.get("shapes")+"...",function(){c(b)}));b.actions.put("toggleFormat",new Action(mxResources.get("format")+"...",function(){a(b)}));EditorUi.enablePlantUml&& +!b.isOffline()&&b.actions.put("plantUml",new Action(mxResources.get("plantUml")+"...",function(){var a=new ParseDialog(b,"Insert from Text","plantUml");b.showDialog(a.container,620,420,!0,!1);a.init()}));this.put("diagram",new Menu(mxUtils.bind(this,function(a,c){var d=b.getCurrentFile();b.menus.addSubmenu("extras",a,c,mxResources.get("preferences"));a.addSeparator(c);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?(b.menus.addMenuItems(a,["new","open","-"],c),EditorUi.isElectronApp&&b.menus.addMenuItems(a, +["synchronize","-"],c),b.menus.addMenuItems(a,["save","saveAs","-"],c)):"1"==urlParams.embed?(b.menus.addMenuItems(a,["-","save"],c),"1"==urlParams.saveAndExit&&b.menus.addMenuItems(a,["saveAndExit"],c),a.addSeparator(c)):(b.menus.addMenuItems(a,["new"],c),b.menus.addSubmenu("openFrom",a,c),isLocalStorage&&this.addSubmenu("openRecent",a,c),a.addSeparator(c),null!=d&&d.constructor==DriveFile&&b.menus.addMenuItems(a,["share"],c),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null==d||d.constructor== +LocalFile||b.menus.addMenuItems(a,["synchronize"],c),a.addSeparator(c),b.menus.addSubmenu("save",a,c));b.menus.addSubmenu("exportAs",a,c);b.menus.addMenuItems(a,"- outline layers - find tags".split(" "),c);mxClient.IS_IOS&&navigator.standalone||b.menus.addMenuItems(a,["-","print","-"],c);b.menus.addSubmenu("help",a,c);"1"==urlParams.embed?b.menus.addMenuItems(a,["-","exit"],c):b.menus.addMenuItems(a,["-","close"])})));this.put("save",new Menu(mxUtils.bind(this,function(a,c){var d=b.getCurrentFile(); +null!=d&&d.constructor==DriveFile?b.menus.addMenuItems(a,["save","makeCopy","-","rename","moveToFolder"],c):(b.menus.addMenuItems(a,["save","saveAs","-","rename"],c),b.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&this.addMenuItems(a,["upload"],c):b.menus.addMenuItems(a,["makeCopy"],c));b.menus.addMenuItems(a,["-","autosave"],c);null!=d&&d.isRevisionHistorySupported()&&b.menus.addMenuItems(a,["-","revisionHistory"],c)})));var e=this.get("exportAs");this.put("exportAs",new Menu(mxUtils.bind(this, +function(a,c){e.funct(a,c);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||b.menus.addMenuItems(a,["publishLink"],c);a.addSeparator(c);b.menus.addSubmenu("embed",a,c)})));var f=this.get("language");this.put("extras",new Menu(mxUtils.bind(this,function(a,c){"1"!=urlParams.embed&&b.menus.addSubmenu("theme",a,c);null!=f&&b.menus.addSubmenu("language",a,c);a.addSeparator(c);b.menus.addMenuItems(a,["scrollbars","tooltips"],c);"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&b.menus.addMenuItems(a, +["-","search","scratchpad","-","showStartScreen"],c);!b.isOfflineApp()&&isLocalStorage&&(a.addSeparator(c),b.menus.addMenuItem(a,"plugins",c));a.addSeparator(c)})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,function(a,c){b.menus.addMenuItems(a,"importText plantUml - formatSql importCsv - createShape editDiagram".split(" "),c)})));mxResources.parse("insertLayout="+mxResources.get("layout"));mxResources.parse("insertAdvanced="+mxResources.get("advanced"));this.put("insert",new Menu(mxUtils.bind(this, +function(a,c){b.menus.addMenuItems(a,"insertRectangle insertEllipse insertRhombus - insertText insertLink - insertImage".split(" "),c);b.insertTemplateEnabled&&!b.isOffline()&&b.menus.addMenuItems(a,["insertTemplate"],c);a.addSeparator(c);b.menus.addSubmenu("insertLayout",a,c);b.menus.addSubmenu("insertAdvanced",a,c);a.addSeparator(c);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?b.menus.addMenuItems(a,["import"],c):b.menus.addSubmenu("importFrom",a,c)})));var g="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "), +k=function(a,c,d,e){a.addItem(d,null,mxUtils.bind(this,function(){var a=new CreateGraphDialog(b,d,e);b.showDialog(a.container,620,420,!0,!1);a.init()}),c)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(a,b){for(var c=0;c<g.length;c++)"-"==g[c]?a.addSeparator(b):k(a,b,mxResources.get(g[c])+"...",g[c])})));this.put("view",new Menu(mxUtils.bind(this,function(a,c){b.menus.addMenuItems(a,"grid guides - connectionArrows connectionPoints -".split(" "),c);if("undefined"!==typeof MathJax){var d= +b.menus.addMenuItem(a,"mathematicalTypesetting",c);b.menus.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000032875")}b.menus.addMenuItems(a,["copyConnect","collapseExpand","-","pageScale"],c)})))};var u=EditorUi.prototype.init;EditorUi.prototype.init=function(){function a(a,b,c){var d=k.menus.get(a),e=p.addMenu(mxResources.get(a),mxUtils.bind(this,function(){d.funct.apply(this,arguments)}),n);e.className="geMenuItem";e.style.display="inline-block";e.style.boxSizing="border-box"; +e.style.top="6px";e.style.marginRight="6px";e.style.height="30px";e.style.paddingTop="6px";e.style.paddingBottom="6px";e.style.cursor="pointer";e.setAttribute("title",mxResources.get(a));k.menus.menuCreated(d,e,"geMenuItem");null!=c?(e.style.backgroundImage="url("+c+")",e.style.backgroundPosition="center center",e.style.backgroundRepeat="no-repeat",e.style.backgroundSize="24px 24px",e.style.width="34px",e.innerHTML=""):b||(e.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",e.style.backgroundPosition= +"right 6px center",e.style.backgroundRepeat="no-repeat",e.style.paddingRight="22px");return e}function d(a,b,c,d,e,f){var g=document.createElement("a");g.className="geMenuItem";g.style.display="inline-block";g.style.boxSizing="border-box";g.style.height="30px";g.style.padding="6px";g.style.position="relative";g.style.verticalAlign="top";g.style.top="0px";null!=k.statusContainer?l.insertBefore(g,k.statusContainer):l.appendChild(g);null!=f?(g.style.backgroundImage="url("+f+")",g.style.backgroundPosition= +"center center",g.style.backgroundRepeat="no-repeat",g.style.backgroundSize="24px 24px",g.style.width="34px"):mxUtils.write(g,a);mxEvent.addListener(g,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(g,"click",function(a){"disabled"!=g.getAttribute("disabled")&&b(a);mxEvent.consume(a)});null==c&&(g.style.marginRight="4px");null!=d&&g.setAttribute("title",d);null!=e&&(a=function(){e.isEnabled()?(g.removeAttribute("disabled"),g.style.cursor= +"pointer"):(g.setAttribute("disabled","disabled"),g.style.cursor="default")},e.addListener("stateChanged",a),a());return g}function e(a,b){var c=document.createElement("div");c.className="geMenuItem";c.style.display="inline-block";c.style.verticalAlign="top";c.style.marginRight="6px";c.style.padding="0 4px 0 4px";c.style.height="30px";c.style.position="relative";c.style.top="0px";for(var d=0;d<a.length;d++)null!=a[d]&&(a[d].style.margin="0px",a[d].style.boxShadow="none",c.appendChild(a[d]));null!= +b&&mxUtils.setOpacity(c,b);null!=k.statusContainer?l.insertBefore(c,k.statusContainer):l.appendChild(c);return c}function f(){for(var c=l.firstChild;null!=c;){var f=c.nextSibling;"geMenuItem"!=c.className&&"geItem"!=c.className||c.parentNode.removeChild(c);c=f}n=l.firstChild;b=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;(c=1E3>b)||a("diagram");e([c?a("diagram",null,IMAGE_PATH+"/drawlogo.svg"):null,d(mxResources.get("shapes"),k.actions.get("toggleShapes").funct, +null,mxResources.get("shapes"),k.actions.get("image"),c?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTMgMTN2OGg4di04aC04ek0zIDIxaDh2LThIM3Y4ek0zIDN2OGg4VjNIM3ptMTMuNjYtMS4zMUwxMSA3LjM0IDE2LjY2IDEzbDUuNjYtNS42Ni01LjY2LTUuNjV6Ii8+PC9zdmc+":null),d(mxResources.get("format"),k.actions.get("toggleFormat").funct,null,mxResources.get("format")+" ("+k.actions.get("formatPanel").shortcut+")",k.actions.get("image"), +c?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIgM2MtNC45NyAwLTkgNC4wMy05IDlzNC4wMyA5IDkgOWMuODMgMCAxLjUtLjY3IDEuNS0xLjUgMC0uMzktLjE1LS43NC0uMzktMS4wMS0uMjMtLjI2LS4zOC0uNjEtLjM4LS45OSAwLS44My42Ny0xLjUgMS41LTEuNUgxNmMyLjc2IDAgNS0yLjI0IDUtNSAwLTQuNDItNC4wMy04LTktOHptLTUuNSA5Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNS42NyA5IDYuNSA5IDggOS42NyA4IDEwLjUgNy4zMyAxMiA2LjUgMTJ6bTMtNEM4LjY3IDggOCA3LjMzIDggNi41UzguNjcgNSA5LjUgNXMxLjUuNjcgMS41IDEuNVMxMC4zMyA4IDkuNSA4em01IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxMy42NyA1IDE0LjUgNXMxLjUuNjcgMS41IDEuNVMxNS4zMyA4IDE0LjUgOHptMyA0Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTYuNjcgOSAxNy41IDlzMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41eiIvPjwvc3ZnPg==": +null)],c?60:null);f=a("insert",!0,c?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgMTNoLTZ2NmgtMnYtNkg1di0yaDZWNWgydjZoNnYyeiIvPjwvc3ZnPg==":null);e([f,d(mxResources.get("delete"),k.actions.get("delete").funct,null,mxResources.get("delete"),k.actions.get("delete"),c?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek0xOSA0aC0zLjVsLTEtMWgtNWwtMSAxSDV2MmgxNFY0eiIvPjwvc3ZnPg==": +null)],c?60:null);if(411<=b&&(f=k.actions.get("undo"),c=k.actions.get("redo"),f=d("",f.funct,null,mxResources.get("undo")+" ("+f.shortcut+")",f,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIuNSA4Yy0yLjY1IDAtNS4wNS45OS02LjkgMi42TDIgN3Y5aDlsLTMuNjItMy42MmMxLjM5LTEuMTYgMy4xNi0xLjg4IDUuMTItMS44OCAzLjU0IDAgNi41NSAyLjMxIDcuNiA1LjVsMi4zNy0uNzhDMjEuMDggMTEuMDMgMTcuMTUgOCAxMi41IDh6Ii8+PC9zdmc+"),c=d("", +c.funct,null,mxResources.get("redo")+" ("+c.shortcut+")",c,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTguNCAxMC42QzE2LjU1IDguOTkgMTQuMTUgOCAxMS41IDhjLTQuNjUgMC04LjU4IDMuMDMtOS45NiA3LjIyTDMuOSAxNmMxLjA1LTMuMTkgNC4wNS01LjUgNy42LTUuNSAxLjk1IDAgMy43My43MiA1LjEyIDEuODhMMTMgMTZoOVY3bC0zLjYgMy42eiIvPjwvc3ZnPg=="),e([f,c],60),480<=b)){var c=k.actions.get("zoomIn"),f=k.actions.get("zoomOut"),g=k.actions.get("resetView"); +e([d("",function(){m.popupMenuHandler.hideMenu();var a=m.view.scale,b=m.view.translate.x,c=m.view.translate.y;k.actions.get("resetView").funct();1E-5>Math.abs(a-m.view.scale)&&b==m.view.translate.x&&c==m.view.translate.y&&k.actions.get(m.pageVisible?"fitPage":"fitWindow").funct()},!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",g,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMyA1djRoMlY1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnptMiAxMEgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6bTE0IDRoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6bTAtMTZoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yeiIvPjwvc3ZnPg=="), +640<=b?d("",c.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",c,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHptMi41LTRoLTJ2Mkg5di0ySDdWOWgyVjdoMXYyaDJ2MXoiLz48L3N2Zz4="): +null,640<=b?d("",f.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",f,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpNNyA5aDV2MUg3eiIvPjwvc3ZnPg=="): +null],60)}c=k.menus.get("language");null!=c&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=b?(null==M&&(f=p.addMenu("",c.funct),f.setAttribute("title",mxResources.get("language")),f.className="geToolbarButton",f.style.backgroundImage="url("+Editor.globeImage+")",f.style.backgroundPosition="center center",f.style.backgroundRepeat="no-repeat",f.style.backgroundSize="24px 24px",f.style.position="absolute",f.style.height="24px",f.style.width="24px",f.style.zIndex="1",f.style.top="11px",f.style.right= +"8px",f.style.cursor="pointer",l.appendChild(f),M=f),k.buttonContainer.style.paddingRight="34px"):(k.buttonContainer.style.paddingRight="4px",null!=M&&(M.parentNode.removeChild(M),M=null))}u.apply(this,arguments);var g=document.createElement("div");g.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";g.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(g);urlParams.clibs&&c(this);var k=this,m=k.editor.graph; +k.toolbar=this.createToolbar(k.createDiv("geToolbar"));k.defaultLibraryName=mxResources.get("untitledLibrary");var l=document.createElement("div");l.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;border-bottom:1px solid lightgray;background-color:#ffffff;text-align:left;white-space:nowrap;";var n=null,p=new Menubar(k,l);k.statusContainer=k.createStatusContainer();k.statusContainer.style.position="relative";k.statusContainer.style.maxWidth="";k.statusContainer.style.marginTop= +"7px";k.statusContainer.style.marginLeft="6px";k.statusContainer.style.color="gray";k.statusContainer.style.cursor="default";k.editor.addListener("statusChanged",mxUtils.bind(this,function(){k.setStatusText(k.editor.getStatus())}));var q=k.descriptorChanged;k.descriptorChanged=function(){q.apply(this,arguments);var a=k.getCurrentFile();if(null!=a&&null!=a.getTitle()){var b=a.getMode();"google"==b?b="googleDrive":"github"==b?b="gitHub":"onedrive"==b&&(b="oneDrive");b=mxResources.get(b);l.setAttribute("title", +a.getTitle()+(null!=b?" ("+b+")":""))}else l.removeAttribute("title")};k.setStatusText(k.editor.getStatus());l.appendChild(k.statusContainer);k.buttonContainer=document.createElement("div");k.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";l.appendChild(k.buttonContainer);k.menubarContainer=k.buttonContainer;k.tabContainer=document.createElement("div");k.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;border-bottom:1px solid lightgray;background-color:#ffffff;border-top:1px solid lightgray;margin-bottom:-2px;visibility:hidden;"; +var g=k.diagramContainer.parentNode,t=document.createElement("div");t.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";k.diagramContainer.style.top="47px";var J=k.menus.get("viewZoom");if(null!=J){this.tabContainer.style.right="70px";var A=p.addMenu("100%",J.funct);A.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");A.style.whiteSpace="nowrap";A.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";A.style.backgroundPosition="right 6px center"; +A.style.backgroundRepeat="no-repeat";A.style.backgroundColor="#ffffff";A.style.paddingRight="10px";A.style.display="block";A.style.position="absolute";A.style.textDecoration="none";A.style.textDecoration="none";A.style.right="0px";A.style.bottom="0px";A.style.overflow="hidden";A.style.visibility="hidden";A.style.textAlign="center";A.style.color="#000";A.style.fontSize="12px";A.style.color="#707070";A.style.width="59px";A.style.borderTop="1px solid lightgray";A.style.borderLeft="1px solid lightgray"; +A.style.height=parseInt(k.tabContainer.style.height)-1+"px";A.style.lineHeight=parseInt(k.tabContainer.style.height)+1+"px";t.appendChild(A);J=mxUtils.bind(this,function(){A.innerHTML=Math.round(100*k.editor.graph.view.scale)+"%"});k.editor.graph.view.addListener(mxEvent.EVENT_SCALE,J);k.editor.addListener("resetGraphView",J);k.editor.addListener("pageSelected",J);var K=k.setGraphEnabled;k.setGraphEnabled=function(){K.apply(this,arguments);null!=this.tabContainer&&(A.style.visibility=this.tabContainer.style.visibility, +this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?"30px":"0px")}}t.appendChild(k.tabContainer);t.appendChild(l);t.appendChild(k.diagramContainer);g.appendChild(t);k.updateTabContainer();var M=null;f();mxEvent.addListener(window,"resize",function(){f();null!=k.sidebarWindow&&k.sidebarWindow.window.fit();null!=k.formatWindow&&k.formatWindow.window.fit();null!=k.actions.outlineWindow&&k.actions.outlineWindow.window.fit();null!=k.actions.layersWindow&&k.actions.layersWindow.window.fit(); +null!=k.menus.tagsWindow&&k.menus.tagsWindow.window.fit();null!=k.menus.findWindow&&k.menus.findWindow.window.fit()})}}};(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var c=EditorUi.initTheme;EditorUi.initTheme=function(){c.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();(function(){var a=mxGuide.prototype.move;mxGuide.prototype.move=function(b,c,e,k){var d=c.y,g=c.x,q=!1,f=!1;if(null!=this.states&&null!=b&&null!=c){var l=this,p=new mxCellState,t=this.graph.getView().scale,u=Math.max(2,this.getGuideTolerance()/2);p.x=b.x+g;p.y=b.y+d;p.width=b.width;p.height=b.height;for(var x=[],z=[],v=0;v<this.states.length;v++){var y=this.states[v];y instanceof mxCellState&&(k||!this.graph.isCellSelected(y.cell))&&((p.x>=y.x&&p.x<=y.x+y.width||y.x>=p.x&&y.x<=p.x+p.width)&&(p.y> +y.y+y.height+4||p.y+p.height+4<y.y)?x.push(y):(p.y>=y.y&&p.y<=y.y+y.height||y.y>=p.y&&y.y<=p.y+p.height)&&(p.x>y.x+y.width+4||p.x+p.width+4<y.x)&&z.push(y))}var B=0,H=0,F=y=0,D=0,E=0,I=0,C=0,G=5*t;if(1<x.length){x.push(p);x.sort(function(a,b){return a.y-b.y});var J=!1,v=p==x[0],t=p==x[x.length-1];if(!v&&!t)for(v=1;v<x.length-1;v++)if(p==x[v]){t=x[v-1];v=x[v+1];y=H=F=(v.y-t.y-t.height-p.height)/2;break}for(v=0;v<x.length-1;v++){var t=x[v],A=x[v+1],K=p==t||p==A,A=A.y-t.y-t.height,J=J|p==t;if(0==H&& +0==B)H=A,B=1;else if(Math.abs(H-A)<=(K||1==v&&J?u:0))B+=1;else if(1<B&&J){x=x.slice(0,v+1);break}else if(3<=x.length-v&&!J)B=0,y=H=0!=F?F:0,x.splice(0,0==v?1:v),v=-1;else break;0!=y||K||(H=y=A)}3==x.length&&x[1]==p&&(y=0)}if(1<z.length){z.push(p);z.sort(function(a,b){return a.x-b.x});J=!1;v=p==z[0];t=p==z[z.length-1];if(!v&&!t)for(v=1;v<z.length-1;v++)if(p==z[v]){t=z[v-1];v=z[v+1];I=E=C=(v.x-t.x-t.width-p.width)/2;break}for(v=0;v<z.length-1;v++){t=z[v];A=z[v+1];K=p==t||p==A;A=A.x-t.x-t.width;J|=p== +t;if(0==E&&0==D)E=A,D=1;else if(Math.abs(E-A)<=(K||1==v&&J?u:0))D+=1;else if(1<D&&J){z=z.slice(0,v+1);break}else if(3<=z.length-v&&!J)D=0,I=E=0!=C?C:0,z.splice(0,0==v?1:v),v=-1;else break;0!=I||K||(E=I=A)}3==z.length&&z[1]==p&&(I=0)}u=function(a,b,c,d){var e=[],f;d?(d=G,f=0):(d=0,f=G);e.push(new mxPoint(a.x-d,a.y-f));e.push(new mxPoint(a.x+d,a.y+f));e.push(a);e.push(b);e.push(new mxPoint(b.x-d,b.y-f));e.push(new mxPoint(b.x+d,b.y+f));if(null!=c)return c.points=e,c;a=new mxPolyline(e,mxConstants.GUIDE_COLOR, +mxConstants.GUIDE_STROKEWIDTH);a.dialect=mxConstants.DIALECT_SVG;a.pointerEvents=!1;a.init(l.graph.getView().getOverlayPane());return a};E=function(a,b){if(a&&null!=l.guidesArrHor)for(var c=0;c<l.guidesArrHor.length;c++)l.guidesArrHor[c].node.style.visibility="hidden";if(b&&null!=l.guidesArrVer)for(c=0;c<l.guidesArrVer.length;c++)l.guidesArrVer[c].node.style.visibility="hidden"};if(1<D&&D==z.length-1){D=[];C=l.guidesArrHor;q=[];g=0;v=z[0]==p?1:0;J=z[v].y+z[v].height;if(0<I)for(v=0;v<z.length-1;v++)t= +z[v],A=z[v+1],p==t?(g=A.x-t.width-I,q.push(new mxPoint(g+t.width+G,J)),q.push(new mxPoint(A.x-G,J))):p==A?(q.push(new mxPoint(t.x+t.width+G,J)),g=t.x+t.width+I,q.push(new mxPoint(g-G,J))):(q.push(new mxPoint(t.x+t.width+G,J)),q.push(new mxPoint(A.x-G,J)));else t=z[0],v=z[2],g=t.x+t.width+(v.x-t.x-t.width-p.width)/2,q.push(new mxPoint(t.x+t.width+G,J)),q.push(new mxPoint(g-G,J)),q.push(new mxPoint(g+p.width+G,J)),q.push(new mxPoint(v.x-G,J));for(v=0;v<q.length;v+=2)z=q[v],I=q[v+1],z=u(z,I,null!=C? +C[v/2]:null),z.node.style.visibility="visible",z.redraw(),D.push(z);for(v=q.length/2;null!=C&&v<C.length;v++)C[v].destroy();l.guidesArrHor=D;g-=b.x;q=!0}else E(!0);if(1<B&&B==x.length-1){D=[];C=l.guidesArrVer;f=[];d=0;v=x[0]==p?1:0;B=x[v].x+x[v].width;if(0<y)for(v=0;v<x.length-1;v++)t=x[v],A=x[v+1],p==t?(d=A.y-t.height-y,f.push(new mxPoint(B,d+t.height+G)),f.push(new mxPoint(B,A.y-G))):p==A?(f.push(new mxPoint(B,t.y+t.height+G)),d=t.y+t.height+y,f.push(new mxPoint(B,d-G))):(f.push(new mxPoint(B,t.y+ +t.height+G)),f.push(new mxPoint(B,A.y-G)));else t=x[0],v=x[2],d=t.y+t.height+(v.y-t.y-t.height-p.height)/2,f.push(new mxPoint(B,t.y+t.height+G)),f.push(new mxPoint(B,d-G)),f.push(new mxPoint(B,d+p.height+G)),f.push(new mxPoint(B,v.y-G));for(v=0;v<f.length;v+=2)z=f[v],I=f[v+1],z=u(z,I,null!=C?C[v/2]:null,!0),z.node.style.visibility="visible",z.redraw(),D.push(z);for(v=f.length/2;null!=C&&v<C.length;v++)C[v].destroy();l.guidesArrVer=D;d-=b.y;f=!0}else E(!1,!0)}if(q||f)return p=new mxPoint(g,d),x=a.call(this, +b,p,e,k),q&&!f?p.y=x.y:f&&!q&&(p.x=x.x),x.y!=p.y&&null!=this.guideY&&null!=this.guideY.node&&(this.guideY.node.style.visibility="hidden"),x.x!=p.x&&null!=this.guideX&&null!=this.guideX.node&&(this.guideX.node.style.visibility="hidden"),p;E(!0,!0);return a.apply(this,arguments)};var c=mxGuide.prototype.setVisible;mxGuide.prototype.setVisible=function(a){c.call(this,a);var b=this.guidesArrVer,d=this.guidesArrHor;if(null!=b)for(var k=0;k<b.length;k++)b[k].node.style.visibility=a?"visible":"hidden";if(null!= +d)for(k=0;k<d.length;k++)d[k].node.style.visibility=a?"visible":"hidden"};var b=mxGuide.prototype.destroy;mxGuide.prototype.destroy=function(){b.call(this);var a=this.guidesArrVer,c=this.guidesArrHor;if(null!=a){for(var e=0;e<a.length;e++)a[e].destroy();this.guidesArrVer=null}if(null!=c){for(e=0;e<c.length;e++)c[e].destroy();this.guidesArrHor=null}}})(); diff --git a/src/main/webapp/js/atlas-viewer.min.js b/src/main/webapp/js/atlas-viewer.min.js index f126f55f..7d2187ba 100644 --- a/src/main/webapp/js/atlas-viewer.min.js +++ b/src/main/webapp/js/atlas-viewer.min.js @@ -99,7 +99,7 @@ l--,_+=n[s++]<<u,u+=8}if(a.nlen=(31&_)+257,_>>>=5,u-=5,a.ndist=(31&_)+1,_>>>=5,u var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(a,b){var c="",d,e,f,g,k,l,m=0;for(null!=b&&b||(a=Base64._utf8_encode(a));m<a.length;)d=a.charCodeAt(m++),e=a.charCodeAt(m++),f=a.charCodeAt(m++),g=d>>2,d=(d&3)<<4|e>>4,k=(e&15)<<2|f>>6,l=f&63,isNaN(e)?k=l=64:isNaN(f)&&(l=64),c=c+this._keyStr.charAt(g)+this._keyStr.charAt(d)+this._keyStr.charAt(k)+this._keyStr.charAt(l);return c},decode:function(a,b){b=null!=b?b:!1;var c="",d,e,f,g,k,l=0;for(a=a.replace(/[^A-Za-z0-9\+\/\=]/g, "");l<a.length;)d=this._keyStr.indexOf(a.charAt(l++)),e=this._keyStr.indexOf(a.charAt(l++)),g=this._keyStr.indexOf(a.charAt(l++)),k=this._keyStr.indexOf(a.charAt(l++)),d=d<<2|e>>4,e=(e&15)<<4|g>>2,f=(g&3)<<6|k,c+=String.fromCharCode(d),64!=g&&(c+=String.fromCharCode(e)),64!=k&&(c+=String.fromCharCode(f));b||(c=Base64._utf8_decode(c));return c},_utf8_encode:function(a){a=a.replace(/\r\n/g,"\n");for(var b="",c=0;c<a.length;c++){var d=a.charCodeAt(c);128>d?b+=String.fromCharCode(d):(127<d&&2048>d?b+= String.fromCharCode(d>>6|192):(b+=String.fromCharCode(d>>12|224),b+=String.fromCharCode(d>>6&63|128)),b+=String.fromCharCode(d&63|128))}return b},_utf8_decode:function(a){var b="",c=0,d;for(c1=c2=0;c<a.length;)d=a.charCodeAt(c),128>d?(b+=String.fromCharCode(d),c++):191<d&&224>d?(c2=a.charCodeAt(c+1),b+=String.fromCharCode((d&31)<<6|c2&63),c+=2):(c2=a.charCodeAt(c+1),c3=a.charCodeAt(c+2),b+=String.fromCharCode((d&15)<<12|(c2&63)<<6|c3&63),c+=3);return b}};window.urlParams=window.urlParams||{};window.isLocalStorage=window.isLocalStorage||!1;window.mxLoadSettings=window.mxLoadSettings||"1"!=urlParams.configure;window.isSvgBrowser=window.isSvgBrowser||0>navigator.userAgent.indexOf("MSIE")||9<=document.documentMode;window.EXPORT_URL=window.EXPORT_URL||"https://exp.draw.io/ImageExport4/export";window.PLANT_URL=window.PLANT_URL||"https://exp-plant.draw.io/plantuml4";window.VSD_CONVERT_URL=window.VSD_CONVERT_URL||"https://convert.draw.io/VsdConverter/api/converter"; -window.EMF_CONVERT_URL=window.EMF_CONVERT_URL||"https://convert.draw.io/emf2png/convertEMF";window.SAVE_URL=window.SAVE_URL||"save";window.OPEN_URL=window.OPEN_URL||"open";window.PROXY_URL=window.PROXY_URL||"proxy";window.SHAPES_PATH=window.SHAPES_PATH||"shapes";window.GRAPH_IMAGE_PATH=window.GRAPH_IMAGE_PATH||"img";window.ICONSEARCH_PATH=window.ICONSEARCH_PATH||((0<=navigator.userAgent.indexOf("MSIE")||urlParams.dev)&&"file:"!=window.location.protocol?"iconSearch":"https://www.draw.io/iconSearch"); +window.EMF_CONVERT_URL=window.EMF_CONVERT_URL||"https://convert.draw.io/emf2png/convertEMF";window.SAVE_URL=window.SAVE_URL||"save";window.OPEN_URL=window.OPEN_URL||"open";window.PROXY_URL=window.PROXY_URL||"proxy";window.VIEWER_URL=null;window.SHAPES_PATH=window.SHAPES_PATH||"shapes";window.GRAPH_IMAGE_PATH=window.GRAPH_IMAGE_PATH||"img";window.ICONSEARCH_PATH=window.ICONSEARCH_PATH||((0<=navigator.userAgent.indexOf("MSIE")||urlParams.dev)&&"file:"!=window.location.protocol?"iconSearch":"https://www.draw.io/iconSearch"); window.TEMPLATE_PATH=window.TEMPLATE_PATH||"templates";window.NEW_DIAGRAM_CATS_PATH=window.NEW_DIAGRAM_CATS_PATH||"newDiagramCats";window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";window.RESOURCE_BASE=window.RESOURCE_BASE||RESOURCES_PATH+"/dia";window.mxLoadResources=window.mxLoadResources||!1; window.mxLanguage=window.mxLanguage||function(){var a="1"==urlParams.offline?"en":urlParams.lang;if(null==a&&"undefined"!=typeof JSON&&isLocalStorage)try{var b=localStorage.getItem(".drawio-config");null!=b&&(a=JSON.parse(b).language||null)}catch(c){isLocalStorage=!1}return a}(); window.mxLanguageMap=window.mxLanguageMap||{i18n:"",id:"Bahasa Indonesia",ms:"Bahasa Melayu",bs:"Bosanski",bg:"Bulgarian",ca:"Català",cs:"Čeština",da:"Dansk",de:"Deutsch",et:"Eesti",en:"English",es:"Español",fil:"Filipino",fr:"Français",it:"Italiano",hu:"Magyar",nl:"Nederlands",no:"Norsk",pl:"Polski","pt-br":"Português (Brasil)",pt:"Português (Portugal)",ro:"Română",fi:"Suomi",sv:"Svenska",vi:"Tiếng Việt",tr:"Türkçe",el:"Ελληνικά",ru:"Русский",sr:"Српски",uk:"Українська",he:"עברית",ar:"العربية",th:"ไทย", @@ -156,50 +156,50 @@ b(g.childNodes),e<a.length-1&&0<=mxUtils.indexOf(c,a[e+1].nodeName)&&d.push("\n" a.innerText=b:a[void 0===a.textContent?"text":"textContent"]=b},getInnerHtml:function(){return mxClient.IS_IE?function(a){return null!=a?a.innerHTML:""}:function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),getOuterHtml:function(){return mxClient.IS_IE?function(a){if(null!=a){if(null!=a.outerHTML)return a.outerHTML;var b=[];b.push("<"+a.nodeName);var c=a.attributes;if(null!=c)for(var d=0;d<c.length;d++){var e=c[d].value;null!=e&&0<e.length&&(b.push(" "),b.push(c[d].nodeName), b.push('="'),b.push(e),b.push('"'))}0==a.innerHTML.length?b.push("/>"):(b.push(">"),b.push(a.innerHTML),b.push("</"+a.nodeName+">"));return b.join("")}return""}:function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),write:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&a.appendChild(c);return c},writeln:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&(a.appendChild(c),a.appendChild(document.createElement("br")));return c},br:function(a,b){b=b||1;for(var c= null,d=0;d<b;d++)null!=a&&(c=a.ownerDocument.createElement("br"),a.appendChild(c));return c},button:function(a,b,c){c=null!=c?c:document;c=c.createElement("button");mxUtils.write(c,a);mxEvent.addListener(c,"click",function(a){b(a)});return c},para:function(a,b){var c=document.createElement("p");mxUtils.write(c,b);null!=a&&a.appendChild(c);return c},addTransparentBackgroundFilter:function(a){a.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"}, -linkAction:function(a,b,c,d,e){return mxUtils.link(a,b,function(){c.execute(d)},e)},linkInvoke:function(a,b,c,d,e,f){return mxUtils.link(a,b,function(){c[d](e)},f)},link:function(a,b,c,d){var e=document.createElement("span");e.style.color="blue";e.style.textDecoration="underline";e.style.cursor="pointer";null!=d&&(e.style.paddingLeft=d+"px");mxEvent.addListener(e,"click",c);mxUtils.write(e,b);null!=a&&a.appendChild(e);return e},fit:function(a){var b=parseInt(a.offsetLeft),c=parseInt(a.offsetWidth), -d=mxUtils.getDocumentScrollOrigin(a.ownerDocument),e=d.x,d=d.y,f=document.body,g=document.documentElement,k=e+(f.clientWidth||g.clientWidth);b+c>k&&(a.style.left=Math.max(e,k-c)+"px");b=parseInt(a.offsetTop);c=parseInt(a.offsetHeight);f=d+Math.max(f.clientHeight||0,g.clientHeight);b+c>f&&(a.style.top=Math.max(d,f-c)+"px")},load:function(a){a=new mxXmlRequest(a,null,"GET",!1);a.send();return a},get:function(a,b,c,d,e,f){a=new mxXmlRequest(a,null,"GET");null!=d&&a.setBinary(d);a.send(b,c,e,f);return a}, -getAll:function(a,b,c){for(var d=a.length,e=[],f=0,g=function(){0==f&&null!=c&&c();f++},k=0;k<a.length;k++)(function(a,c){mxUtils.get(a,function(a){var f=a.getStatus();200>f||299<f?g():(e[c]=a,d--,0==d&&b(e))},g)})(a[k],k);0==d&&b(e)},post:function(a,b,c,d){return(new mxXmlRequest(a,b)).send(c,d)},submit:function(a,b,c,d){return(new mxXmlRequest(a,b)).simulate(c,d)},loadInto:function(a,b,c){mxClient.IS_IE?b.onreadystatechange=function(){4==b.readyState&&c()}:b.addEventListener("load",c,!1);b.load(a)}, -getValue:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c);return a},getNumber:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c||0);return Number(a)},getColor:function(a,b,c){a=null!=a?a[b]:null;null==a?a=c:a==mxConstants.NONE&&(a=null);return a},clone:function(a,b,c){c=null!=c?c:!1;var d=null;if(null!=a&&"function"==typeof a.constructor){var d=new a.constructor,e;for(e in a)e!=mxObjectIdentity.FIELD_NAME&&(null==b||0>mxUtils.indexOf(b,e))&&(d[e]=c||"object"!=typeof a[e]?a[e]:mxUtils.clone(a[e]))}return d}, -equalPoints:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b)for(var c=0;c<a.length;c++)if(a[c]==b[c]||null!=a[c]&&!a[c].equals(b[c]))return!1;return!0},equalEntries:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b){var c=0,d;for(d in b)c++;for(d in a)if(c--,!(mxUtils.isNaN(a[d])&&mxUtils.isNaN(b[d])||a[d]==b[d]))return!1}return 0==c},removeDuplicates:function(a){for(var b= -new mxDictionary,c=[],d=0;d<a.length;d++)b.get(a[d])||(c.push(a[d]),b.put(a[d],!0));return c},isNaN:function(a){return"number"==typeof a&&isNaN(a)},extend:function(a,b){var c=function(){};c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a},toString:function(a){var b="",c;for(c in a)try{if(null==a[c])b+=c+" = [null]\n";else if("function"==typeof a[c])b+=c+" => [Function]\n";else if("object"==typeof a[c])var d=mxUtils.getFunctionName(a[c].constructor),b=b+(c+" => ["+d+"]\n");else b+= -c+" = "+a[c]+"\n"}catch(e){b+=c+"="+e.message}return b},toRadians:function(a){return Math.PI*a/180},toDegree:function(a){return 180*a/Math.PI},arcToCurves:function(a,b,c,d,e,f,g,k,l){k-=a;l-=b;if(0===c||0===d)return q;c=Math.abs(c);d=Math.abs(d);var m=-k/2,n=-l/2,p=Math.cos(e*Math.PI/180),q=Math.sin(e*Math.PI/180);e=p*m+q*n;var m=-1*q*m+p*n,n=e*e,r=m*m,t=c*c,u=d*d,x=n/t+r/u;1<x?(c*=Math.sqrt(x),d*=Math.sqrt(x),f=0):(x=1,f===g&&(x=-1),f=x*Math.sqrt((t*u-t*r-u*n)/(t*r+u*n)));n=f*c*m/d;r=-1*f*d*e/c; -k=p*n-q*r+k/2;l=q*n+p*r+l/2;t=Math.atan2((m-r)/d,(e-n)/c)-Math.atan2(0,1);f=0<=t?t:2*Math.PI+t;t=Math.atan2((-m-r)/d,(-e-n)/c)-Math.atan2((m-r)/d,(e-n)/c);e=0<=t?t:2*Math.PI+t;0==g&&0<e?e-=2*Math.PI:0!=g&&0>e&&(e+=2*Math.PI);g=2*e/Math.PI;g=Math.ceil(0>g?-1*g:g);e/=g;m=8/3*Math.sin(e/4)*Math.sin(e/4)/Math.sin(e/2);n=p*c;p*=d;c*=q;d*=q;for(var y=Math.cos(f),A=Math.sin(f),r=-m*(n*A+d*y),t=-m*(c*A-p*y),q=[],z=0;z<g;++z){f+=e;var y=Math.cos(f),A=Math.sin(f),u=n*y-d*A+k,x=c*y+p*A+l,v=-m*(n*A+d*y),y=-m* -(c*A-p*y),A=6*z;q[A]=Number(r+a);q[A+1]=Number(t+b);q[A+2]=Number(u-v+a);q[A+3]=Number(x-y+b);q[A+4]=Number(u+a);q[A+5]=Number(x+b);r=u+v;t=x+y}return q},getBoundingBox:function(a,b,c){var d=null;if(null!=a&&null!=b&&0!=b){b=mxUtils.toRadians(b);var d=Math.cos(b),e=Math.sin(b);c=null!=c?c:new mxPoint(a.x+a.width/2,a.y+a.height/2);var f=new mxPoint(a.x,a.y);b=new mxPoint(a.x+a.width,a.y);var g=new mxPoint(b.x,a.y+a.height);a=new mxPoint(a.x,g.y);f=mxUtils.getRotatedPoint(f,d,e,c);b=mxUtils.getRotatedPoint(b, -d,e,c);g=mxUtils.getRotatedPoint(g,d,e,c);a=mxUtils.getRotatedPoint(a,d,e,c);d=new mxRectangle(f.x,f.y,0,0);d.add(new mxRectangle(b.x,b.y,0,0));d.add(new mxRectangle(g.x,g.y,0,0));d.add(new mxRectangle(a.x,a.y,0,0))}return d},getRotatedPoint:function(a,b,c,d){d=null!=d?d:new mxPoint;var e=a.x-d.x;a=a.y-d.y;return new mxPoint(e*b-a*c+d.x,a*b+e*c+d.y)},getPortConstraints:function(a,b,c,d){b=mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT,mxUtils.getValue(b.style,c?mxConstants.STYLE_SOURCE_PORT_CONSTRAINT: -mxConstants.STYLE_TARGET_PORT_CONSTRAINT,null));if(null==b)return d;d=b.toString();b=mxConstants.DIRECTION_MASK_NONE;c=0;1==mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT_ROTATION,0)&&(c=mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION,0));a=0;45<c?(a=1,135<=c&&(a=2)):-45>c&&(a=3,-135>=c&&(a=2));if(0<=d.indexOf(mxConstants.DIRECTION_NORTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 1:b|=mxConstants.DIRECTION_MASK_EAST;break;case 2:b|=mxConstants.DIRECTION_MASK_SOUTH; -break;case 3:b|=mxConstants.DIRECTION_MASK_WEST}if(0<=d.indexOf(mxConstants.DIRECTION_WEST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_WEST;break;case 1:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 2:b|=mxConstants.DIRECTION_MASK_EAST;break;case 3:b|=mxConstants.DIRECTION_MASK_SOUTH}if(0<=d.indexOf(mxConstants.DIRECTION_SOUTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 1:b|=mxConstants.DIRECTION_MASK_WEST;break;case 2:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 3:b|= -mxConstants.DIRECTION_MASK_EAST}if(0<=d.indexOf(mxConstants.DIRECTION_EAST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_EAST;break;case 1:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 2:b|=mxConstants.DIRECTION_MASK_WEST;break;case 3:b|=mxConstants.DIRECTION_MASK_NORTH}return b},reversePortConstraints:function(a){var b;b=(a&mxConstants.DIRECTION_MASK_WEST)<<3;b|=(a&mxConstants.DIRECTION_MASK_NORTH)<<1;b|=(a&mxConstants.DIRECTION_MASK_SOUTH)>>1;return b|(a&mxConstants.DIRECTION_MASK_EAST)>>3}, -findNearestSegment:function(a,b,c){var d=-1;if(0<a.absolutePoints.length)for(var e=a.absolutePoints[0],f=null,g=1;g<a.absolutePoints.length;g++){var k=a.absolutePoints[g],e=mxUtils.ptSegDistSq(e.x,e.y,k.x,k.y,b,c);if(null==f||e<f)f=e,d=g-1;e=k}return d},getDirectedBounds:function(a,b,c,d,e){var f=mxUtils.getValue(c,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);d=null!=d?d:mxUtils.getValue(c,mxConstants.STYLE_FLIPH,!1);e=null!=e?e:mxUtils.getValue(c,mxConstants.STYLE_FLIPV,!1);b.x=Math.round(Math.max(0, -Math.min(a.width,b.x)));b.y=Math.round(Math.max(0,Math.min(a.height,b.y)));b.width=Math.round(Math.max(0,Math.min(a.width,b.width)));b.height=Math.round(Math.max(0,Math.min(a.height,b.height)));if(e&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||d&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.x,b.x=b.width,b.width=c;if(d&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||e&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.y, -b.y=b.height,b.height=c;d=mxRectangle.fromRectangle(b);f==mxConstants.DIRECTION_SOUTH?(d.y=b.x,d.x=b.height,d.width=b.y,d.height=b.width):f==mxConstants.DIRECTION_WEST?(d.y=b.height,d.x=b.width,d.width=b.x,d.height=b.y):f==mxConstants.DIRECTION_NORTH&&(d.y=b.width,d.x=b.y,d.width=b.height,d.height=b.x);return new mxRectangle(a.x+d.x,a.y+d.y,a.width-d.width-d.x,a.height-d.height-d.y)},getPerimeterPoint:function(a,b,c){for(var d=null,e=0;e<a.length-1;e++){var f=mxUtils.intersection(a[e].x,a[e].y,a[e+ -1].x,a[e+1].y,b.x,b.y,c.x,c.y);if(null!=f){var g=c.x-f.x,k=c.y-f.y,f={p:f,distSq:k*k+g*g};null!=f&&(null==d||d.distSq>f.distSq)&&(d=f)}}return null!=d?d.p:null},rectangleIntersectsSegment:function(a,b,c){var d=a.y,e=a.x,f=d+a.height,g=e+a.width;a=b.x;var k=c.x;b.x>c.x&&(a=c.x,k=b.x);k>g&&(k=g);a<e&&(a=e);if(a>k)return!1;var e=b.y,g=c.y,l=c.x-b.x;1E-7<Math.abs(l)&&(c=(c.y-b.y)/l,b=b.y-c*b.x,e=c*a+b,g=c*k+b);e>g&&(b=g,g=e,e=b);g>f&&(g=f);e<d&&(e=d);return e>g?!1:!0},contains:function(a,b,c){return a.x<= -b&&a.x+a.width>=b&&a.y<=c&&a.y+a.height>=c},intersects:function(a,b){var c=a.width,d=a.height,e=b.width,f=b.height;if(0>=e||0>=f||0>=c||0>=d)return!1;var g=a.x,k=a.y,l=b.x,m=b.y,e=e+l,f=f+m,c=c+g,d=d+k;return(e<l||e>g)&&(f<m||f>k)&&(c<g||c>l)&&(d<k||d>m)},intersectsHotspot:function(a,b,c,d,e,f){d=null!=d?d:1;e=null!=e?e:0;f=null!=f?f:0;if(0<d){var g=a.getCenterX(),k=a.getCenterY(),l=a.width,m=a.height,n=mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE)*a.view.scale;0<n&&(mxUtils.getValue(a.style, -mxConstants.STYLE_HORIZONTAL,!0)?(k=a.y+n/2,m=n):(g=a.x+n/2,l=n));l=Math.max(e,l*d);m=Math.max(e,m*d);0<f&&(l=Math.min(l,f),m=Math.min(m,f));d=new mxRectangle(g-l/2,k-m/2,l,m);g=mxUtils.toRadians(mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION)||0);0!=g&&(e=Math.cos(-g),f=Math.sin(-g),g=new mxPoint(a.getCenterX(),a.getCenterY()),a=mxUtils.getRotatedPoint(new mxPoint(b,c),e,f,g),b=a.x,c=a.y);return mxUtils.contains(d,b,c)}return!0},getOffset:function(a,b){for(var c=0,d=0,e=!1,f=a,g=document.body, -k=document.documentElement;null!=f&&f!=g&&f!=k&&!e;){var l=mxUtils.getCurrentStyle(f);null!=l&&(e=e||"fixed"==l.position);f=f.parentNode}b||e||(e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),c+=e.x,d+=e.y);e=a.getBoundingClientRect();null!=e&&(c+=e.left,d+=e.top);return new mxPoint(c,d)},getDocumentScrollOrigin:function(a){if(mxClient.IS_QUIRKS)return new mxPoint(a.body.scrollLeft,a.body.scrollTop);a=a.defaultView||a.parentWindow;return new mxPoint(null!=a&&void 0!==window.pageXOffset?window.pageXOffset: -(document.documentElement||document.body.parentNode||document.body).scrollLeft,null!=a&&void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop)},getScrollOrigin:function(a,b,c){b=null!=b?b:!1;c=null!=c?c:!0;for(var d=null!=a?a.ownerDocument:document,e=d.body,f=d.documentElement,g=new mxPoint,k=!1;null!=a&&a!=e&&a!=f;){isNaN(a.scrollLeft)||isNaN(a.scrollTop)||(g.x+=a.scrollLeft,g.y+=a.scrollTop);var l=mxUtils.getCurrentStyle(a); -null!=l&&(k=k||"fixed"==l.position);a=b?a.parentNode:null}!k&&c&&(a=mxUtils.getDocumentScrollOrigin(d),g.x+=a.x,g.y+=a.y);return g},convertPoint:function(a,b,c){var d=mxUtils.getScrollOrigin(a,!1);a=mxUtils.getOffset(a);a.x-=d.x;a.y-=d.y;return new mxPoint(b-a.x,c-a.y)},ltrim:function(a,b){return null!=a?a.replace(new RegExp("^["+(b||"\\s")+"]+","g"),""):null},rtrim:function(a,b){return null!=a?a.replace(new RegExp("["+(b||"\\s")+"]+$","g"),""):null},trim:function(a,b){return mxUtils.ltrim(mxUtils.rtrim(a, -b),b)},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)&&("string"!=typeof a||0>a.toLowerCase().indexOf("0x"))},isInteger:function(a){return String(parseInt(a))===String(a)},mod:function(a,b){return(a%b+b)%b},intersection:function(a,b,c,d,e,f,g,k){var l=(k-f)*(c-a)-(g-e)*(d-b);g=((g-e)*(b-f)-(k-f)*(a-e))/l;e=((c-a)*(b-f)-(d-b)*(a-e))/l;return 0<=g&&1>=g&&0<=e&&1>=e?new mxPoint(a+g*(c-a),b+g*(d-b)):null},ptSegDistSq:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;0>=e*c+f*d?c=0:(e=c-e,f=d- -f,a=e*c+f*d,c=0>=a?0:a*a/(c*c+d*d));e=e*e+f*f-c;0>e&&(e=0);return e},ptLineDist:function(a,b,c,d,e,f){return Math.abs((d-b)*e-(c-a)*f+c*b-d*a)/Math.sqrt((d-b)*(d-b)+(c-a)*(c-a))},relativeCcw:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;a=e*d-f*c;0==a&&(a=e*c+f*d,0<a&&(a=(e-c)*c+(f-d)*d,0>a&&(a=0)));return 0>a?-1:0<a?1:0},animateChanges:function(a,b){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(a,b,c){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(a,b,c,d, -e,f){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(a,b){mxUtils.isVml(a)?a.style.filter=100<=b?"":"alpha(opacity="+b/5+")":mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?a.style.filter=100<=b?"":"alpha(opacity="+b+")":a.style.opacity=b/100},createImage:function(a){var b;mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?(b=document.createElement(mxClient.VML_PREFIX+":image"),b.setAttribute("src",a),b.style.borderStyle="none"):(b=document.createElement("img"), -b.setAttribute("src",a),b.setAttribute("border","0"));return b},sortCells:function(a,b){b=null!=b?b:!0;var c=new mxDictionary;a.sort(function(a,e){var d=c.get(a);null==d&&(d=mxCellPath.create(a).split(mxCellPath.PATH_SEPARATOR),c.put(a,d));var g=c.get(e);null==g&&(g=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),c.put(e,g));d=mxCellPath.compare(d,g);return 0==d?0:0<d==b?1:-1});return a},getStylename:function(a){return null!=a&&(a=a.split(";")[0],0>a.indexOf("="))?a:""},getStylenames:function(a){var b= -[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0>a[c].indexOf("=")&&b.push(a[c])}return b},indexOfStylename:function(a,b){if(null!=a&&null!=b)for(var c=a.split(";"),d=0,e=0;e<c.length;e++){if(c[e]==b)return d;d+=c[e].length+1}return-1},addStylename:function(a,b){0>mxUtils.indexOfStylename(a,b)&&(null==a?a="":0<a.length&&";"!=a.charAt(a.length-1)&&(a+=";"),a+=b);return a},removeStylename:function(a,b){var c=[];if(null!=a)for(var d=a.split(";"),e=0;e<d.length;e++)d[e]!=b&&c.push(d[e]);return c.join(";")}, -removeAllStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0<=a[c].indexOf("=")&&b.push(a[c])}return b.join(";")},setCellStyles:function(a,b,c,d){if(null!=b&&0<b.length){a.beginUpdate();try{for(var e=0;e<b.length;e++)if(null!=b[e]){var f=mxUtils.setStyle(a.getStyle(b[e]),c,d);a.setStyle(b[e],f)}}finally{a.endUpdate()}}},setStyle:function(a,b,c){var d=null!=c&&("undefined"==typeof c.length||0<c.length);if(null==a||0==a.length)d&&(a=b+"="+c+";");else if(a.substring(0, -b.length+1)==b+"="){var e=a.indexOf(";");a=d?b+"="+c+(0>e?";":a.substring(e)):0>e||e==a.length-1?"":a.substring(e+1)}else{var f=a.indexOf(";"+b+"=");0>f?d&&(d=";"==a.charAt(a.length-1)?"":";",a=a+d+b+"="+c+";"):(e=a.indexOf(";",f+1),a=d?a.substring(0,f+1)+b+"="+c+(0>e?";":a.substring(e)):a.substring(0,f)+(0>e?";":a.substring(e)))}return a},setCellStyleFlags:function(a,b,c,d,e){if(null!=b&&0<b.length){a.beginUpdate();try{for(var f=0;f<b.length;f++)if(null!=b[f]){var g=mxUtils.setStyleFlag(a.getStyle(b[f]), -c,d,e);a.setStyle(b[f],g)}}finally{a.endUpdate()}}},setStyleFlag:function(a,b,c,d){if(null==a||0==a.length)a=d||null==d?b+"="+c:b+"=0";else{var e=a.indexOf(b+"=");if(0>e)e=";"==a.charAt(a.length-1)?"":";",a=d||null==d?a+e+b+"="+c:a+e+b+"=0";else{var f=a.indexOf(";",e),g;g=0>f?a.substring(e+b.length+1):a.substring(e+b.length+1,f);g=null==d?parseInt(g)^c:d?parseInt(g)|c:parseInt(g)&~c;a=a.substring(0,e)+b+"="+g+(0<=f?a.substring(f):"")}}return a},getAlignmentAsPoint:function(a,b){var c=0,d=0;a==mxConstants.ALIGN_CENTER? -c=-.5:a==mxConstants.ALIGN_RIGHT&&(c=-1);b==mxConstants.ALIGN_MIDDLE?d=-.5:b==mxConstants.ALIGN_BOTTOM&&(d=-1);return new mxPoint(c,d)},getSizeForString:function(a,b,c,d){b=null!=b?b:mxConstants.DEFAULT_FONTSIZE;c=null!=c?c:mxConstants.DEFAULT_FONTFAMILY;var e=document.createElement("div");e.style.fontFamily=c;e.style.fontSize=Math.round(b)+"px";e.style.lineHeight=Math.round(b*mxConstants.LINE_HEIGHT)+"px";e.style.position="absolute";e.style.visibility="hidden";e.style.display=mxClient.IS_QUIRKS? -"inline":"inline-block";e.style.zoom="1";null!=d?(e.style.width=d+"px",e.style.whiteSpace="normal"):e.style.whiteSpace="nowrap";e.innerHTML=a;document.body.appendChild(e);a=new mxRectangle(0,0,e.offsetWidth,e.offsetHeight);document.body.removeChild(e);return a},getViewXml:function(a,b,c,d,e){d=null!=d?d:0;e=null!=e?e:0;b=null!=b?b:1;null==c&&(c=[a.getModel().getRoot()]);var f=a.getView(),g=null,k=f.isEventsEnabled();f.setEventsEnabled(!1);var l=f.drawPane,m=f.overlayPane;a.dialect==mxConstants.DIALECT_SVG? -(f.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),f.canvas.appendChild(f.drawPane),f.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(f.drawPane=f.drawPane.cloneNode(!1),f.canvas.appendChild(f.drawPane),f.overlayPane=f.overlayPane.cloneNode(!1));f.canvas.appendChild(f.overlayPane);var n=f.getTranslate();f.translate=new mxPoint(d,e);b=new mxTemporaryCellStates(a.getView(),b,c);try{g=(new mxCodec).encode(a.getView())}finally{b.destroy(),f.translate=n,f.canvas.removeChild(f.drawPane), -f.canvas.removeChild(f.overlayPane),f.drawPane=l,f.overlayPane=m,f.setEventsEnabled(k)}return g},getScaleForPageCount:function(a,b,c,d){if(1>a)return 1;c=null!=c?c:mxConstants.PAGE_FORMAT_A4_PORTRAIT;d=null!=d?d:0;var e=c.width-2*d;c=c.height-2*d;d=b.getGraphBounds().clone();b=b.getView().getScale();d.width/=b;d.height/=b;b=d.width;var f=Math.sqrt(a);d=Math.sqrt(b/d.height/(e/c));c=f*d;d=f/d;if(1>c&&d>a){var g=d/a;d=a;c/=g}1>d&&c>a&&(g=c/a,c=a,d/=g);g=Math.ceil(c)*Math.ceil(d);for(f=0;g>a;){var g= -Math.floor(c)/c,k=Math.floor(d)/d;1==g&&(g=Math.floor(c-1)/c);1==k&&(k=Math.floor(d-1)/d);g=g>k?g:k;c*=g;d*=g;g=Math.ceil(c)*Math.ceil(d);f++;if(10<f)break}return e*c/b*.99999},show:function(a,b,c,d,e,f){c=null!=c?c:0;d=null!=d?d:0;null==b?b=window.open().document:b.open();9==document.documentMode&&b.writeln('\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=9"><![endif]--\x3e');var g=a.getGraphBounds(),k=Math.ceil(c-g.x),l=Math.ceil(d-g.y);null==e&&(e=Math.ceil(g.width+c)+Math.ceil(Math.ceil(g.x)- -g.x));null==f&&(f=Math.ceil(g.height+d)+Math.ceil(Math.ceil(g.y)-g.y));if(mxClient.IS_IE||11==document.documentMode){d="<html><head>";g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)d+=g[c].outerHTML;d+="<style>";for(c=0;c<document.styleSheets.length;c++)try{d+=document.styleSheets[c].cssText}catch(m){}d=d+'</style></head><body style="margin:0px;">'+('<div style="position:absolute;overflow:hidden;width:'+e+"px;height:"+f+'px;"><div style="position:relative;left:'+k+"px;top:"+l+'px;">')+ -a.container.innerHTML;b.writeln(d+"</div></div></body><html>");b.close()}else{b.writeln("<html><head>");g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)b.writeln(mxUtils.getOuterHtml(g[c]));d=document.getElementsByTagName("link");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));d=document.getElementsByTagName("style");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));b.writeln('</head><body style="margin:0px;"></body></html>');b.close();c=b.createElement("div"); -c.position="absolute";c.overflow="hidden";c.style.width=e+"px";c.style.height=f+"px";e=b.createElement("div");e.style.position="absolute";e.style.left=k+"px";e.style.top=l+"px";f=a.container.firstChild;for(d=null;null!=f;)g=f.cloneNode(!0),f==a.view.drawPane.ownerSVGElement?(c.appendChild(g),d=g):e.appendChild(g),f=f.nextSibling;b.body.appendChild(c);null!=e.firstChild&&b.body.appendChild(e);null!=d&&(d.style.minWidth="",d.style.minHeight="",d.firstChild.setAttribute("transform","translate("+k+","+ -l+")"))}mxUtils.removeCursors(b.body);return b},printScreen:function(a){var b=window.open();a.getGraphBounds();mxUtils.show(a,b.document);a=function(){b.focus();b.print();b.close()};mxClient.IS_GC?b.setTimeout(a,500):a()},popup:function(a,b){if(b){var c=document.createElement("div");c.style.overflow="scroll";c.style.width="636px";c.style.height="460px";var d=document.createElement("pre");d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g," ");c.appendChild(d);c=new mxWindow("Popup Window", -c,document.body.clientWidth/2-320,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight)/2-240,640,480,!1,!0);c.setClosable(!0);c.setVisible(!0)}else mxClient.IS_NS?(c=window.open(),c.document.writeln("<pre>"+mxUtils.htmlEntities(a)+"</pre"),c.document.close()):(c=window.open(),d=c.document.createElement("pre"),d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g," "),c.document.body.appendChild(d))},alert:function(a){alert(a)},prompt:function(a,b){return prompt(a, -null!=b?b:"")},confirm:function(a){return confirm(a)},error:function(a,b,c,d){var e=document.createElement("div");e.style.padding="20px";var f=document.createElement("img");f.setAttribute("src",d||mxUtils.errorImage);f.setAttribute("valign","bottom");f.style.verticalAlign="middle";e.appendChild(f);e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));mxUtils.write(e,a);a=document.body.clientWidth;d=document.body.clientHeight|| -document.documentElement.clientHeight;var g=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,e,(a-b)/2,d/4,b,null,!1,!0);c&&(mxUtils.br(e),b=document.createElement("p"),c=document.createElement("button"),mxClient.IS_IE?c.style.cssText="float:right":c.setAttribute("style","float:right"),mxEvent.addListener(c,"click",function(a){g.destroy()}),mxUtils.write(c,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),b.appendChild(c),e.appendChild(b),mxUtils.br(e),g.setClosable(!0)); -g.setVisible(!0);return g},makeDraggable:function(a,b,c,d,e,f,g,k,l,m){a=new mxDragSource(a,c);a.dragOffset=new mxPoint(null!=e?e:0,null!=f?f:mxConstants.TOOLTIP_VERTICAL_OFFSET);a.autoscroll=g;a.setGuidesEnabled(!1);null!=l&&(a.highlightDropTargets=l);null!=m&&(a.getDropTarget=m);a.getGraphForEvent=function(a){return"function"==typeof b?b(a):b};null!=d&&(a.createDragElement=function(){return d.cloneNode(!0)},k&&(a.createPreviewElement=function(a){var b=d.cloneNode(!0),c=parseInt(b.style.width),e= -parseInt(b.style.height);b.style.width=Math.round(c*a.view.scale)+"px";b.style.height=Math.round(e*a.view.scale)+"px";return b}));return a}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml", +linkAction:function(a,b,c,d,e){return mxUtils.link(a,b,function(){c.execute(d)},e)},linkInvoke:function(a,b,c,d,e,f){return mxUtils.link(a,b,function(){c[d](e)},f)},link:function(a,b,c,d){var e=document.createElement("span");e.style.color="blue";e.style.textDecoration="underline";e.style.cursor="pointer";null!=d&&(e.style.paddingLeft=d+"px");mxEvent.addListener(e,"click",c);mxUtils.write(e,b);null!=a&&a.appendChild(e);return e},getDocumentSize:function(){var a=document.body,b=document.documentElement; +try{return new mxRectangle(0,0,a.clientWidth||b.clientWidth,Math.max(a.clientHeight||0,b.clientHeight))}catch(c){return new mxRectangle}},fit:function(a){var b=mxUtils.getDocumentSize(),c=parseInt(a.offsetLeft),d=parseInt(a.offsetWidth),e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),f=e.x,e=e.y,g=f+b.width;c+d>g&&(a.style.left=Math.max(f,g-d)+"px");c=parseInt(a.offsetTop);d=parseInt(a.offsetHeight);b=e+b.height;c+d>b&&(a.style.top=Math.max(e,b-d)+"px")},load:function(a){a=new mxXmlRequest(a,null, +"GET",!1);a.send();return a},get:function(a,b,c,d,e,f){a=new mxXmlRequest(a,null,"GET");null!=d&&a.setBinary(d);a.send(b,c,e,f);return a},getAll:function(a,b,c){for(var d=a.length,e=[],f=0,g=function(){0==f&&null!=c&&c();f++},k=0;k<a.length;k++)(function(a,c){mxUtils.get(a,function(a){var f=a.getStatus();200>f||299<f?g():(e[c]=a,d--,0==d&&b(e))},g)})(a[k],k);0==d&&b(e)},post:function(a,b,c,d){return(new mxXmlRequest(a,b)).send(c,d)},submit:function(a,b,c,d){return(new mxXmlRequest(a,b)).simulate(c, +d)},loadInto:function(a,b,c){mxClient.IS_IE?b.onreadystatechange=function(){4==b.readyState&&c()}:b.addEventListener("load",c,!1);b.load(a)},getValue:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c);return a},getNumber:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c||0);return Number(a)},getColor:function(a,b,c){a=null!=a?a[b]:null;null==a?a=c:a==mxConstants.NONE&&(a=null);return a},clone:function(a,b,c){c=null!=c?c:!1;var d=null;if(null!=a&&"function"==typeof a.constructor){var d=new a.constructor, +e;for(e in a)e!=mxObjectIdentity.FIELD_NAME&&(null==b||0>mxUtils.indexOf(b,e))&&(d[e]=c||"object"!=typeof a[e]?a[e]:mxUtils.clone(a[e]))}return d},equalPoints:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b)for(var c=0;c<a.length;c++)if(a[c]==b[c]||null!=a[c]&&!a[c].equals(b[c]))return!1;return!0},equalEntries:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b){var c= +0,d;for(d in b)c++;for(d in a)if(c--,!(mxUtils.isNaN(a[d])&&mxUtils.isNaN(b[d])||a[d]==b[d]))return!1}return 0==c},removeDuplicates:function(a){for(var b=new mxDictionary,c=[],d=0;d<a.length;d++)b.get(a[d])||(c.push(a[d]),b.put(a[d],!0));return c},isNaN:function(a){return"number"==typeof a&&isNaN(a)},extend:function(a,b){var c=function(){};c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a},toString:function(a){var b="",c;for(c in a)try{if(null==a[c])b+=c+" = [null]\n";else if("function"== +typeof a[c])b+=c+" => [Function]\n";else if("object"==typeof a[c])var d=mxUtils.getFunctionName(a[c].constructor),b=b+(c+" => ["+d+"]\n");else b+=c+" = "+a[c]+"\n"}catch(e){b+=c+"="+e.message}return b},toRadians:function(a){return Math.PI*a/180},toDegree:function(a){return 180*a/Math.PI},arcToCurves:function(a,b,c,d,e,f,g,k,l){k-=a;l-=b;if(0===c||0===d)return q;c=Math.abs(c);d=Math.abs(d);var m=-k/2,n=-l/2,p=Math.cos(e*Math.PI/180),q=Math.sin(e*Math.PI/180);e=p*m+q*n;var m=-1*q*m+p*n,n=e*e,r=m*m, +t=c*c,u=d*d,x=n/t+r/u;1<x?(c*=Math.sqrt(x),d*=Math.sqrt(x),f=0):(x=1,f===g&&(x=-1),f=x*Math.sqrt((t*u-t*r-u*n)/(t*r+u*n)));n=f*c*m/d;r=-1*f*d*e/c;k=p*n-q*r+k/2;l=q*n+p*r+l/2;t=Math.atan2((m-r)/d,(e-n)/c)-Math.atan2(0,1);f=0<=t?t:2*Math.PI+t;t=Math.atan2((-m-r)/d,(-e-n)/c)-Math.atan2((m-r)/d,(e-n)/c);e=0<=t?t:2*Math.PI+t;0==g&&0<e?e-=2*Math.PI:0!=g&&0>e&&(e+=2*Math.PI);g=2*e/Math.PI;g=Math.ceil(0>g?-1*g:g);e/=g;m=8/3*Math.sin(e/4)*Math.sin(e/4)/Math.sin(e/2);n=p*c;p*=d;c*=q;d*=q;for(var y=Math.cos(f), +A=Math.sin(f),r=-m*(n*A+d*y),t=-m*(c*A-p*y),q=[],z=0;z<g;++z){f+=e;var y=Math.cos(f),A=Math.sin(f),u=n*y-d*A+k,x=c*y+p*A+l,v=-m*(n*A+d*y),y=-m*(c*A-p*y),A=6*z;q[A]=Number(r+a);q[A+1]=Number(t+b);q[A+2]=Number(u-v+a);q[A+3]=Number(x-y+b);q[A+4]=Number(u+a);q[A+5]=Number(x+b);r=u+v;t=x+y}return q},getBoundingBox:function(a,b,c){var d=null;if(null!=a&&null!=b&&0!=b){b=mxUtils.toRadians(b);var d=Math.cos(b),e=Math.sin(b);c=null!=c?c:new mxPoint(a.x+a.width/2,a.y+a.height/2);var f=new mxPoint(a.x,a.y); +b=new mxPoint(a.x+a.width,a.y);var g=new mxPoint(b.x,a.y+a.height);a=new mxPoint(a.x,g.y);f=mxUtils.getRotatedPoint(f,d,e,c);b=mxUtils.getRotatedPoint(b,d,e,c);g=mxUtils.getRotatedPoint(g,d,e,c);a=mxUtils.getRotatedPoint(a,d,e,c);d=new mxRectangle(f.x,f.y,0,0);d.add(new mxRectangle(b.x,b.y,0,0));d.add(new mxRectangle(g.x,g.y,0,0));d.add(new mxRectangle(a.x,a.y,0,0))}return d},getRotatedPoint:function(a,b,c,d){d=null!=d?d:new mxPoint;var e=a.x-d.x;a=a.y-d.y;return new mxPoint(e*b-a*c+d.x,a*b+e*c+d.y)}, +getPortConstraints:function(a,b,c,d){b=mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT,mxUtils.getValue(b.style,c?mxConstants.STYLE_SOURCE_PORT_CONSTRAINT:mxConstants.STYLE_TARGET_PORT_CONSTRAINT,null));if(null==b)return d;d=b.toString();b=mxConstants.DIRECTION_MASK_NONE;c=0;1==mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT_ROTATION,0)&&(c=mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION,0));a=0;45<c?(a=1,135<=c&&(a=2)):-45>c&&(a=3,-135>=c&&(a=2));if(0<=d.indexOf(mxConstants.DIRECTION_NORTH))switch(a){case 0:b|= +mxConstants.DIRECTION_MASK_NORTH;break;case 1:b|=mxConstants.DIRECTION_MASK_EAST;break;case 2:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 3:b|=mxConstants.DIRECTION_MASK_WEST}if(0<=d.indexOf(mxConstants.DIRECTION_WEST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_WEST;break;case 1:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 2:b|=mxConstants.DIRECTION_MASK_EAST;break;case 3:b|=mxConstants.DIRECTION_MASK_SOUTH}if(0<=d.indexOf(mxConstants.DIRECTION_SOUTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_SOUTH; +break;case 1:b|=mxConstants.DIRECTION_MASK_WEST;break;case 2:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 3:b|=mxConstants.DIRECTION_MASK_EAST}if(0<=d.indexOf(mxConstants.DIRECTION_EAST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_EAST;break;case 1:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 2:b|=mxConstants.DIRECTION_MASK_WEST;break;case 3:b|=mxConstants.DIRECTION_MASK_NORTH}return b},reversePortConstraints:function(a){var b;b=(a&mxConstants.DIRECTION_MASK_WEST)<<3;b|=(a&mxConstants.DIRECTION_MASK_NORTH)<< +1;b|=(a&mxConstants.DIRECTION_MASK_SOUTH)>>1;return b|(a&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(a,b,c){var d=-1;if(0<a.absolutePoints.length)for(var e=a.absolutePoints[0],f=null,g=1;g<a.absolutePoints.length;g++){var k=a.absolutePoints[g],e=mxUtils.ptSegDistSq(e.x,e.y,k.x,k.y,b,c);if(null==f||e<f)f=e,d=g-1;e=k}return d},getDirectedBounds:function(a,b,c,d,e){var f=mxUtils.getValue(c,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);d=null!=d?d:mxUtils.getValue(c,mxConstants.STYLE_FLIPH, +!1);e=null!=e?e:mxUtils.getValue(c,mxConstants.STYLE_FLIPV,!1);b.x=Math.round(Math.max(0,Math.min(a.width,b.x)));b.y=Math.round(Math.max(0,Math.min(a.height,b.y)));b.width=Math.round(Math.max(0,Math.min(a.width,b.width)));b.height=Math.round(Math.max(0,Math.min(a.height,b.height)));if(e&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||d&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.x,b.x=b.width,b.width=c;if(d&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)|| +e&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.y,b.y=b.height,b.height=c;d=mxRectangle.fromRectangle(b);f==mxConstants.DIRECTION_SOUTH?(d.y=b.x,d.x=b.height,d.width=b.y,d.height=b.width):f==mxConstants.DIRECTION_WEST?(d.y=b.height,d.x=b.width,d.width=b.x,d.height=b.y):f==mxConstants.DIRECTION_NORTH&&(d.y=b.width,d.x=b.y,d.width=b.height,d.height=b.x);return new mxRectangle(a.x+d.x,a.y+d.y,a.width-d.width-d.x,a.height-d.height-d.y)},getPerimeterPoint:function(a,b,c){for(var d= +null,e=0;e<a.length-1;e++){var f=mxUtils.intersection(a[e].x,a[e].y,a[e+1].x,a[e+1].y,b.x,b.y,c.x,c.y);if(null!=f){var g=c.x-f.x,k=c.y-f.y,f={p:f,distSq:k*k+g*g};null!=f&&(null==d||d.distSq>f.distSq)&&(d=f)}}return null!=d?d.p:null},rectangleIntersectsSegment:function(a,b,c){var d=a.y,e=a.x,f=d+a.height,g=e+a.width;a=b.x;var k=c.x;b.x>c.x&&(a=c.x,k=b.x);k>g&&(k=g);a<e&&(a=e);if(a>k)return!1;var e=b.y,g=c.y,l=c.x-b.x;1E-7<Math.abs(l)&&(c=(c.y-b.y)/l,b=b.y-c*b.x,e=c*a+b,g=c*k+b);e>g&&(b=g,g=e,e=b); +g>f&&(g=f);e<d&&(e=d);return e>g?!1:!0},contains:function(a,b,c){return a.x<=b&&a.x+a.width>=b&&a.y<=c&&a.y+a.height>=c},intersects:function(a,b){var c=a.width,d=a.height,e=b.width,f=b.height;if(0>=e||0>=f||0>=c||0>=d)return!1;var g=a.x,k=a.y,l=b.x,m=b.y,e=e+l,f=f+m,c=c+g,d=d+k;return(e<l||e>g)&&(f<m||f>k)&&(c<g||c>l)&&(d<k||d>m)},intersectsHotspot:function(a,b,c,d,e,f){d=null!=d?d:1;e=null!=e?e:0;f=null!=f?f:0;if(0<d){var g=a.getCenterX(),k=a.getCenterY(),l=a.width,m=a.height,n=mxUtils.getValue(a.style, +mxConstants.STYLE_STARTSIZE)*a.view.scale;0<n&&(mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,!0)?(k=a.y+n/2,m=n):(g=a.x+n/2,l=n));l=Math.max(e,l*d);m=Math.max(e,m*d);0<f&&(l=Math.min(l,f),m=Math.min(m,f));d=new mxRectangle(g-l/2,k-m/2,l,m);g=mxUtils.toRadians(mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION)||0);0!=g&&(e=Math.cos(-g),f=Math.sin(-g),g=new mxPoint(a.getCenterX(),a.getCenterY()),a=mxUtils.getRotatedPoint(new mxPoint(b,c),e,f,g),b=a.x,c=a.y);return mxUtils.contains(d,b,c)}return!0}, +getOffset:function(a,b){for(var c=0,d=0,e=!1,f=a,g=document.body,k=document.documentElement;null!=f&&f!=g&&f!=k&&!e;){var l=mxUtils.getCurrentStyle(f);null!=l&&(e=e||"fixed"==l.position);f=f.parentNode}b||e||(e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),c+=e.x,d+=e.y);e=a.getBoundingClientRect();null!=e&&(c+=e.left,d+=e.top);return new mxPoint(c,d)},getDocumentScrollOrigin:function(a){if(mxClient.IS_QUIRKS)return new mxPoint(a.body.scrollLeft,a.body.scrollTop);a=a.defaultView||a.parentWindow; +return new mxPoint(null!=a&&void 0!==window.pageXOffset?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft,null!=a&&void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop)},getScrollOrigin:function(a,b,c){b=null!=b?b:!1;c=null!=c?c:!0;for(var d=null!=a?a.ownerDocument:document,e=d.body,f=d.documentElement,g=new mxPoint,k=!1;null!=a&&a!=e&&a!=f;){isNaN(a.scrollLeft)||isNaN(a.scrollTop)|| +(g.x+=a.scrollLeft,g.y+=a.scrollTop);var l=mxUtils.getCurrentStyle(a);null!=l&&(k=k||"fixed"==l.position);a=b?a.parentNode:null}!k&&c&&(a=mxUtils.getDocumentScrollOrigin(d),g.x+=a.x,g.y+=a.y);return g},convertPoint:function(a,b,c){var d=mxUtils.getScrollOrigin(a,!1);a=mxUtils.getOffset(a);a.x-=d.x;a.y-=d.y;return new mxPoint(b-a.x,c-a.y)},ltrim:function(a,b){return null!=a?a.replace(new RegExp("^["+(b||"\\s")+"]+","g"),""):null},rtrim:function(a,b){return null!=a?a.replace(new RegExp("["+(b||"\\s")+ +"]+$","g"),""):null},trim:function(a,b){return mxUtils.ltrim(mxUtils.rtrim(a,b),b)},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)&&("string"!=typeof a||0>a.toLowerCase().indexOf("0x"))},isInteger:function(a){return String(parseInt(a))===String(a)},mod:function(a,b){return(a%b+b)%b},intersection:function(a,b,c,d,e,f,g,k){var l=(k-f)*(c-a)-(g-e)*(d-b);g=((g-e)*(b-f)-(k-f)*(a-e))/l;e=((c-a)*(b-f)-(d-b)*(a-e))/l;return 0<=g&&1>=g&&0<=e&&1>=e?new mxPoint(a+g*(c-a),b+g*(d-b)):null},ptSegDistSq:function(a, +b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;0>=e*c+f*d?c=0:(e=c-e,f=d-f,a=e*c+f*d,c=0>=a?0:a*a/(c*c+d*d));e=e*e+f*f-c;0>e&&(e=0);return e},ptLineDist:function(a,b,c,d,e,f){return Math.abs((d-b)*e-(c-a)*f+c*b-d*a)/Math.sqrt((d-b)*(d-b)+(c-a)*(c-a))},relativeCcw:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;a=e*d-f*c;0==a&&(a=e*c+f*d,0<a&&(a=(e-c)*c+(f-d)*d,0>a&&(a=0)));return 0>a?-1:0<a?1:0},animateChanges:function(a,b){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(a,b,c){mxEffects.cascadeOpacity.apply(this, +arguments)},fadeOut:function(a,b,c,d,e,f){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(a,b){mxUtils.isVml(a)?a.style.filter=100<=b?"":"alpha(opacity="+b/5+")":mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?a.style.filter=100<=b?"":"alpha(opacity="+b+")":a.style.opacity=b/100},createImage:function(a){var b;mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?(b=document.createElement(mxClient.VML_PREFIX+":image"),b.setAttribute("src",a),b.style.borderStyle= +"none"):(b=document.createElement("img"),b.setAttribute("src",a),b.setAttribute("border","0"));return b},sortCells:function(a,b){b=null!=b?b:!0;var c=new mxDictionary;a.sort(function(a,e){var d=c.get(a);null==d&&(d=mxCellPath.create(a).split(mxCellPath.PATH_SEPARATOR),c.put(a,d));var g=c.get(e);null==g&&(g=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),c.put(e,g));d=mxCellPath.compare(d,g);return 0==d?0:0<d==b?1:-1});return a},getStylename:function(a){return null!=a&&(a=a.split(";")[0],0>a.indexOf("="))? +a:""},getStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0>a[c].indexOf("=")&&b.push(a[c])}return b},indexOfStylename:function(a,b){if(null!=a&&null!=b)for(var c=a.split(";"),d=0,e=0;e<c.length;e++){if(c[e]==b)return d;d+=c[e].length+1}return-1},addStylename:function(a,b){0>mxUtils.indexOfStylename(a,b)&&(null==a?a="":0<a.length&&";"!=a.charAt(a.length-1)&&(a+=";"),a+=b);return a},removeStylename:function(a,b){var c=[];if(null!=a)for(var d=a.split(";"),e=0;e< +d.length;e++)d[e]!=b&&c.push(d[e]);return c.join(";")},removeAllStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0<=a[c].indexOf("=")&&b.push(a[c])}return b.join(";")},setCellStyles:function(a,b,c,d){if(null!=b&&0<b.length){a.beginUpdate();try{for(var e=0;e<b.length;e++)if(null!=b[e]){var f=mxUtils.setStyle(a.getStyle(b[e]),c,d);a.setStyle(b[e],f)}}finally{a.endUpdate()}}},setStyle:function(a,b,c){var d=null!=c&&("undefined"==typeof c.length||0<c.length);if(null== +a||0==a.length)d&&(a=b+"="+c+";");else if(a.substring(0,b.length+1)==b+"="){var e=a.indexOf(";");a=d?b+"="+c+(0>e?";":a.substring(e)):0>e||e==a.length-1?"":a.substring(e+1)}else{var f=a.indexOf(";"+b+"=");0>f?d&&(d=";"==a.charAt(a.length-1)?"":";",a=a+d+b+"="+c+";"):(e=a.indexOf(";",f+1),a=d?a.substring(0,f+1)+b+"="+c+(0>e?";":a.substring(e)):a.substring(0,f)+(0>e?";":a.substring(e)))}return a},setCellStyleFlags:function(a,b,c,d,e){if(null!=b&&0<b.length){a.beginUpdate();try{for(var f=0;f<b.length;f++)if(null!= +b[f]){var g=mxUtils.setStyleFlag(a.getStyle(b[f]),c,d,e);a.setStyle(b[f],g)}}finally{a.endUpdate()}}},setStyleFlag:function(a,b,c,d){if(null==a||0==a.length)a=d||null==d?b+"="+c:b+"=0";else{var e=a.indexOf(b+"=");if(0>e)e=";"==a.charAt(a.length-1)?"":";",a=d||null==d?a+e+b+"="+c:a+e+b+"=0";else{var f=a.indexOf(";",e),g;g=0>f?a.substring(e+b.length+1):a.substring(e+b.length+1,f);g=null==d?parseInt(g)^c:d?parseInt(g)|c:parseInt(g)&~c;a=a.substring(0,e)+b+"="+g+(0<=f?a.substring(f):"")}}return a},getAlignmentAsPoint:function(a, +b){var c=0,d=0;a==mxConstants.ALIGN_CENTER?c=-.5:a==mxConstants.ALIGN_RIGHT&&(c=-1);b==mxConstants.ALIGN_MIDDLE?d=-.5:b==mxConstants.ALIGN_BOTTOM&&(d=-1);return new mxPoint(c,d)},getSizeForString:function(a,b,c,d){b=null!=b?b:mxConstants.DEFAULT_FONTSIZE;c=null!=c?c:mxConstants.DEFAULT_FONTFAMILY;var e=document.createElement("div");e.style.fontFamily=c;e.style.fontSize=Math.round(b)+"px";e.style.lineHeight=Math.round(b*mxConstants.LINE_HEIGHT)+"px";e.style.position="absolute";e.style.visibility="hidden"; +e.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";e.style.zoom="1";null!=d?(e.style.width=d+"px",e.style.whiteSpace="normal"):e.style.whiteSpace="nowrap";e.innerHTML=a;document.body.appendChild(e);a=new mxRectangle(0,0,e.offsetWidth,e.offsetHeight);document.body.removeChild(e);return a},getViewXml:function(a,b,c,d,e){d=null!=d?d:0;e=null!=e?e:0;b=null!=b?b:1;null==c&&(c=[a.getModel().getRoot()]);var f=a.getView(),g=null,k=f.isEventsEnabled();f.setEventsEnabled(!1);var l=f.drawPane,m=f.overlayPane; +a.dialect==mxConstants.DIALECT_SVG?(f.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),f.canvas.appendChild(f.drawPane),f.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(f.drawPane=f.drawPane.cloneNode(!1),f.canvas.appendChild(f.drawPane),f.overlayPane=f.overlayPane.cloneNode(!1));f.canvas.appendChild(f.overlayPane);var n=f.getTranslate();f.translate=new mxPoint(d,e);b=new mxTemporaryCellStates(a.getView(),b,c);try{g=(new mxCodec).encode(a.getView())}finally{b.destroy(),f.translate= +n,f.canvas.removeChild(f.drawPane),f.canvas.removeChild(f.overlayPane),f.drawPane=l,f.overlayPane=m,f.setEventsEnabled(k)}return g},getScaleForPageCount:function(a,b,c,d){if(1>a)return 1;c=null!=c?c:mxConstants.PAGE_FORMAT_A4_PORTRAIT;d=null!=d?d:0;var e=c.width-2*d;c=c.height-2*d;d=b.getGraphBounds().clone();b=b.getView().getScale();d.width/=b;d.height/=b;b=d.width;var f=Math.sqrt(a);d=Math.sqrt(b/d.height/(e/c));c=f*d;d=f/d;if(1>c&&d>a){var g=d/a;d=a;c/=g}1>d&&c>a&&(g=c/a,c=a,d/=g);g=Math.ceil(c)* +Math.ceil(d);for(f=0;g>a;){var g=Math.floor(c)/c,k=Math.floor(d)/d;1==g&&(g=Math.floor(c-1)/c);1==k&&(k=Math.floor(d-1)/d);g=g>k?g:k;c*=g;d*=g;g=Math.ceil(c)*Math.ceil(d);f++;if(10<f)break}return e*c/b*.99999},show:function(a,b,c,d,e,f){c=null!=c?c:0;d=null!=d?d:0;null==b?b=window.open().document:b.open();9==document.documentMode&&b.writeln('\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=9"><![endif]--\x3e');var g=a.getGraphBounds(),k=Math.ceil(c-g.x),l=Math.ceil(d-g.y);null==e&&(e= +Math.ceil(g.width+c)+Math.ceil(Math.ceil(g.x)-g.x));null==f&&(f=Math.ceil(g.height+d)+Math.ceil(Math.ceil(g.y)-g.y));if(mxClient.IS_IE||11==document.documentMode){d="<html><head>";g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)d+=g[c].outerHTML;d+="<style>";for(c=0;c<document.styleSheets.length;c++)try{d+=document.styleSheets[c].cssText}catch(m){}d=d+'</style></head><body style="margin:0px;">'+('<div style="position:absolute;overflow:hidden;width:'+e+"px;height:"+f+'px;"><div style="position:relative;left:'+ +k+"px;top:"+l+'px;">')+a.container.innerHTML;b.writeln(d+"</div></div></body><html>");b.close()}else{b.writeln("<html><head>");g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)b.writeln(mxUtils.getOuterHtml(g[c]));d=document.getElementsByTagName("link");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));d=document.getElementsByTagName("style");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));b.writeln('</head><body style="margin:0px;"></body></html>');b.close(); +c=b.createElement("div");c.position="absolute";c.overflow="hidden";c.style.width=e+"px";c.style.height=f+"px";e=b.createElement("div");e.style.position="absolute";e.style.left=k+"px";e.style.top=l+"px";f=a.container.firstChild;for(d=null;null!=f;)g=f.cloneNode(!0),f==a.view.drawPane.ownerSVGElement?(c.appendChild(g),d=g):e.appendChild(g),f=f.nextSibling;b.body.appendChild(c);null!=e.firstChild&&b.body.appendChild(e);null!=d&&(d.style.minWidth="",d.style.minHeight="",d.firstChild.setAttribute("transform", +"translate("+k+","+l+")"))}mxUtils.removeCursors(b.body);return b},printScreen:function(a){var b=window.open();a.getGraphBounds();mxUtils.show(a,b.document);a=function(){b.focus();b.print();b.close()};mxClient.IS_GC?b.setTimeout(a,500):a()},popup:function(a,b){if(b){var c=document.createElement("div");c.style.overflow="scroll";c.style.width="636px";c.style.height="460px";var d=document.createElement("pre");d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g," ");c.appendChild(d); +c=new mxWindow("Popup Window",c,document.body.clientWidth/2-320,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight)/2-240,640,480,!1,!0);c.setClosable(!0);c.setVisible(!0)}else mxClient.IS_NS?(c=window.open(),c.document.writeln("<pre>"+mxUtils.htmlEntities(a)+"</pre"),c.document.close()):(c=window.open(),d=c.document.createElement("pre"),d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g," "),c.document.body.appendChild(d))},alert:function(a){alert(a)}, +prompt:function(a,b){return prompt(a,null!=b?b:"")},confirm:function(a){return confirm(a)},error:function(a,b,c,d){var e=document.createElement("div");e.style.padding="20px";var f=document.createElement("img");f.setAttribute("src",d||mxUtils.errorImage);f.setAttribute("valign","bottom");f.style.verticalAlign="middle";e.appendChild(f);e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));mxUtils.write(e,a);a=document.body.clientWidth; +d=document.body.clientHeight||document.documentElement.clientHeight;var g=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,e,(a-b)/2,d/4,b,null,!1,!0);c&&(mxUtils.br(e),b=document.createElement("p"),c=document.createElement("button"),mxClient.IS_IE?c.style.cssText="float:right":c.setAttribute("style","float:right"),mxEvent.addListener(c,"click",function(a){g.destroy()}),mxUtils.write(c,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),b.appendChild(c),e.appendChild(b), +mxUtils.br(e),g.setClosable(!0));g.setVisible(!0);return g},makeDraggable:function(a,b,c,d,e,f,g,k,l,m){a=new mxDragSource(a,c);a.dragOffset=new mxPoint(null!=e?e:0,null!=f?f:mxConstants.TOOLTIP_VERTICAL_OFFSET);a.autoscroll=g;a.setGuidesEnabled(!1);null!=l&&(a.highlightDropTargets=l);null!=m&&(a.getDropTarget=m);a.getGraphForEvent=function(a){return"function"==typeof b?b(a):b};null!=d&&(a.createDragElement=function(){return d.cloneNode(!0)},k&&(a.createPreviewElement=function(a){var b=d.cloneNode(!0), +c=parseInt(b.style.width),e=parseInt(b.style.height);b.style.width=Math.round(c*a.view.scale)+"px";b.style.height=Math.round(e*a.view.scale)+"px";return b}));return a}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml", NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",VML_SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",OUTLINE_HIGHLIGHT_COLOR:"#00FF00", OUTLINE_HIGHLIGHT_STROKEWIDTH:5,HIGHLIGHT_STROKEWIDTH:3,HIGHLIGHT_SIZE:2,HIGHLIGHT_OPACITY:100,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_TERMINAL_HANDLE:"pointer",CURSOR_BEND_HANDLE:"crosshair",CURSOR_VIRTUAL_BEND_HANDLE:"crosshair",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00", VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:6,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF", @@ -1194,7 +1194,8 @@ mxGraph.prototype.createTooltipHandler=function(){return new mxTooltipHandler(th mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)};mxGraph.prototype.createStylesheet=function(){return new mxStylesheet};mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)};mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer};mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)};mxGraph.prototype.getModel=function(){return this.model};mxGraph.prototype.getView=function(){return this.view}; mxGraph.prototype.getStylesheet=function(){return this.stylesheet};mxGraph.prototype.setStylesheet=function(a){this.stylesheet=a};mxGraph.prototype.getSelectionModel=function(){return this.selectionModel};mxGraph.prototype.setSelectionModel=function(a){this.selectionModel=a}; mxGraph.prototype.getSelectionCellsForChanges=function(a){for(var b=new mxDictionary,c=[],d=mxUtils.bind(this,function(a){if(!b.get(a)&&this.model.contains(a))if(this.model.isEdge(a)||this.model.isVertex(a))b.put(a,!0),c.push(a);else for(var e=this.model.getChildCount(a),f=0;f<e;f++)d(this.model.getChildAt(a,f))}),e=0;e<a.length;e++){var f=a[e];if(f.constructor!=mxRootChange){var g=null;f instanceof mxChildChange?g=f.child:null!=f.cell&&f.cell instanceof mxCell&&(g=f.cell);null!=g&&d(g)}}return c}; -mxGraph.prototype.graphModelChanged=function(a){for(var b=0;b<a.length;b++)this.processChange(a[b]);this.updateSelection();this.view.validate();this.sizeDidChange()};mxGraph.prototype.updateSelection=function(){for(var a=this.getSelectionCells(),b=[],c=0;c<a.length;c++)if(this.model.contains(a[c]))for(var d=this.model.getParent(a[c]);null!=d&&d!=this.view.currentRoot;){if(this.isCellCollapsed(d)||!this.isCellVisible(d)){b.push(a[c]);break}d=this.model.getParent(d)}else b.push(a[c]);this.removeSelectionCells(b)}; +mxGraph.prototype.graphModelChanged=function(a){for(var b=0;b<a.length;b++)this.processChange(a[b]);this.updateSelection();this.view.validate();this.sizeDidChange()}; +mxGraph.prototype.updateSelection=function(){for(var a=this.getSelectionCells(),b=[],c=0;c<a.length;c++)if(this.model.contains(a[c])&&this.isCellVisible(a[c]))for(var d=this.model.getParent(a[c]);null!=d&&d!=this.view.currentRoot;){if(this.isCellCollapsed(d)||!this.isCellVisible(d)){b.push(a[c]);break}d=this.model.getParent(d)}else b.push(a[c]);this.removeSelectionCells(b)}; mxGraph.prototype.processChange=function(a){if(a instanceof mxRootChange)this.clearSelection(),this.setDefaultParent(null),this.removeStateForCell(a.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(a instanceof mxChildChange){var b=this.model.getParent(a.child);this.view.invalidate(a.child,!0,!0);if(!this.model.contains(b)||this.isCellCollapsed(b))this.view.invalidate(a.child,!0,!0),this.removeStateForCell(a.child), this.view.currentRoot==a.child&&this.home();b!=a.previous&&(null!=b&&this.view.invalidate(b,!1,!1),null!=a.previous&&this.view.invalidate(a.previous,!1,!1))}else a instanceof mxTerminalChange||a instanceof mxGeometryChange?(a instanceof mxTerminalChange||null==a.previous&&null!=a.geometry||null!=a.previous&&!a.previous.equals(a.geometry))&&this.view.invalidate(a.cell):a instanceof mxValueChange?this.view.invalidate(a.cell,!1,!1):a instanceof mxStyleChange?(this.view.invalidate(a.cell,!0,!0),a=this.view.getState(a.cell), null!=a&&(a.style=null)):null!=a.cell&&a.cell instanceof mxCell&&this.removeStateForCell(a.cell)};mxGraph.prototype.removeStateForCell=function(a){for(var b=this.model.getChildCount(a),c=0;c<b;c++)this.removeStateForCell(this.model.getChildAt(a,c));this.view.invalidate(a,!1,!0);this.view.removeState(a)}; @@ -1244,17 +1245,17 @@ mxGraph.prototype.updateGroupBounds=function(a,b,c,d,e,f,g){null==a&&(a=this.get r.height;l=l.clone();c&&(l.x=Math.round(l.x+n.x-b-p-g),l.y=Math.round(l.y+n.y-b-q-d));l.width=Math.round(n.width+2*b+p+g+e);l.height=Math.round(n.height+2*b+q+d+f);this.model.setGeometry(a[k],l);this.moveCells(m,b+p-n.x+g,b+q-n.y+d)}}}}}finally{this.model.endUpdate()}return a}; mxGraph.prototype.getBoundingBox=function(a){var b=null;if(null!=a&&0<a.length)for(var c=0;c<a.length;c++)if(this.model.isVertex(a[c])||this.model.isEdge(a[c])){var d=this.view.getBoundingBox(this.view.getState(a[c]),!0);null!=d&&(null==b?b=mxRectangle.fromRectangle(d):b.add(d))}return b};mxGraph.prototype.cloneCell=function(a,b,c,d){return this.cloneCells([a],b,c,d)[0]}; mxGraph.prototype.cloneCells=function(a,b,c,d){b=null!=b?b:!0;var e=null;if(null!=a){for(var f=new mxDictionary,e=[],g=0;g<a.length;g++)f.put(a[g],!0),e.push(a[g]);if(0<e.length)for(var k=this.view.scale,l=this.view.translate,e=this.model.cloneCells(a,!0,c),g=0;g<a.length;g++)if(!b&&this.model.isEdge(e[g])&&null!=this.getEdgeValidationError(e[g],this.model.getTerminal(e[g],!0),this.model.getTerminal(e[g],!1)))e[g]=null;else{var m=this.model.getGeometry(e[g]);if(null!=m){var n=this.view.getState(a[g]), -p=this.view.getState(this.model.getParent(a[g]));if(null!=n&&null!=p)if(c=d?0:p.origin.x,p=d?0:p.origin.y,this.model.isEdge(e[g])){for(var n=n.absolutePoints,q=this.model.getTerminal(a[g],!0);null!=q&&!f.get(q);)q=this.model.getParent(q);null==q&&m.setTerminalPoint(new mxPoint(n[0].x/k-l.x,n[0].y/k-l.y),!0);for(q=this.model.getTerminal(a[g],!1);null!=q&&!f.get(q);)q=this.model.getParent(q);null==q&&(q=n.length-1,m.setTerminalPoint(new mxPoint(n[q].x/k-l.x,n[q].y/k-l.y),!1));m=m.points;if(null!=m)for(n= -0;n<m.length;n++)m[n].x+=c,m[n].y+=p}else m.translate(c,p)}}else e=[]}return e};mxGraph.prototype.insertVertex=function(a,b,c,d,e,f,g,k,l){b=this.createVertex(a,b,c,d,e,f,g,k,l);return this.addCell(b,a)};mxGraph.prototype.createVertex=function(a,b,c,d,e,f,g,k,l){a=new mxGeometry(d,e,f,g);a.relative=null!=l?l:!1;c=new mxCell(c,a,k);c.setId(b);c.setVertex(!0);c.setConnectable(!0);return c};mxGraph.prototype.insertEdge=function(a,b,c,d,e,f){b=this.createEdge(a,b,c,d,e,f);return this.addEdge(b,a,d,e)}; -mxGraph.prototype.createEdge=function(a,b,c,d,e,f){a=new mxCell(c,new mxGeometry,f);a.setId(b);a.setEdge(!0);a.geometry.relative=!0;return a};mxGraph.prototype.addEdge=function(a,b,c,d,e){return this.addCell(a,b,e,c,d)};mxGraph.prototype.addCell=function(a,b,c,d,e){return this.addCells([a],b,c,d,e)[0]}; +p=this.view.getState(this.model.getParent(a[g]));if(null!=n&&null!=p)if(c=d?0:p.origin.x,p=d?0:p.origin.y,this.model.isEdge(e[g])){if(n=n.absolutePoints,null!=n){for(var q=this.model.getTerminal(a[g],!0);null!=q&&!f.get(q);)q=this.model.getParent(q);null==q&&m.setTerminalPoint(new mxPoint(n[0].x/k-l.x,n[0].y/k-l.y),!0);for(q=this.model.getTerminal(a[g],!1);null!=q&&!f.get(q);)q=this.model.getParent(q);null==q&&(q=n.length-1,m.setTerminalPoint(new mxPoint(n[q].x/k-l.x,n[q].y/k-l.y),!1));m=m.points; +if(null!=m)for(n=0;n<m.length;n++)m[n].x+=c,m[n].y+=p}}else m.translate(c,p)}}else e=[]}return e};mxGraph.prototype.insertVertex=function(a,b,c,d,e,f,g,k,l){b=this.createVertex(a,b,c,d,e,f,g,k,l);return this.addCell(b,a)};mxGraph.prototype.createVertex=function(a,b,c,d,e,f,g,k,l){a=new mxGeometry(d,e,f,g);a.relative=null!=l?l:!1;c=new mxCell(c,a,k);c.setId(b);c.setVertex(!0);c.setConnectable(!0);return c}; +mxGraph.prototype.insertEdge=function(a,b,c,d,e,f){b=this.createEdge(a,b,c,d,e,f);return this.addEdge(b,a,d,e)};mxGraph.prototype.createEdge=function(a,b,c,d,e,f){a=new mxCell(c,new mxGeometry,f);a.setId(b);a.setEdge(!0);a.geometry.relative=!0;return a};mxGraph.prototype.addEdge=function(a,b,c,d,e){return this.addCell(a,b,e,c,d)};mxGraph.prototype.addCell=function(a,b,c,d,e){return this.addCells([a],b,c,d,e)[0]}; mxGraph.prototype.addCells=function(a,b,c,d,e){null==b&&(b=this.getDefaultParent());null==c&&(c=this.model.getChildCount(b));this.model.beginUpdate();try{this.cellsAdded(a,b,c,d,e,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",a,"parent",b,"index",c,"source",d,"target",e))}finally{this.model.endUpdate()}return a}; mxGraph.prototype.cellsAdded=function(a,b,c,d,e,f,g,k){if(null!=a&&null!=b&&null!=c){this.model.beginUpdate();try{for(var l=f?this.view.getState(b):null,m=null!=l?l.origin:null,n=new mxPoint(0,0),l=0;l<a.length;l++)if(null==a[l])c--;else{var p=this.model.getParent(a[l]);if(null!=m&&a[l]!=b&&b!=p){var q=this.view.getState(p),r=null!=q?q.origin:n,t=this.model.getGeometry(a[l]);if(null!=t){var u=r.x-m.x,x=r.y-m.y,t=t.clone();t.translate(u,x);t.relative||!this.model.isVertex(a[l])||this.isAllowNegativeCoordinates()|| (t.x=Math.max(0,t.x),t.y=Math.max(0,t.y));this.model.setGeometry(a[l],t)}}b==p&&c+l>this.model.getChildCount(b)&&c--;this.model.add(b,a[l],c+l);this.autoSizeCellsOnAdd&&this.autoSizeCell(a[l],!0);(null==k||k)&&this.isExtendParentsOnAdd(a[l])&&this.isExtendParent(a[l])&&this.extendParent(a[l]);(null==g||g)&&this.constrainChild(a[l]);null!=d&&this.cellConnected(a[l],d,!0);null!=e&&this.cellConnected(a[l],e,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",a,"parent",b,"index",c,"source", d,"target",e,"absolute",f))}finally{this.model.endUpdate()}}};mxGraph.prototype.autoSizeCell=function(a,b){if(null!=b?b:1)for(var c=this.model.getChildCount(a),d=0;d<c;d++)this.autoSizeCell(this.model.getChildAt(a,d));this.getModel().isVertex(a)&&this.isAutoSizeCell(a)&&this.updateCellSize(a)}; mxGraph.prototype.removeCells=function(a,b){b=null!=b?b:!0;null==a&&(a=this.getDeletableCells(this.getSelectionCells()));if(b)a=this.getDeletableCells(this.addAllEdges(a));else{a=a.slice();for(var c=this.getDeletableCells(this.getAllEdges(a)),d=new mxDictionary,e=0;e<a.length;e++)d.put(a[e],!0);for(e=0;e<c.length;e++)null!=this.view.getState(c[e])||d.get(c[e])||(d.put(c[e],!0),a.push(c[e]))}this.model.beginUpdate();try{this.cellsRemoved(a),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells", a,"includeEdges",b))}finally{this.model.endUpdate()}return a}; -mxGraph.prototype.cellsRemoved=function(a){if(null!=a&&0<a.length){var b=this.view.scale,c=this.view.translate;this.model.beginUpdate();try{for(var d=new mxDictionary,e=0;e<a.length;e++)d.put(a[e],!0);for(e=0;e<a.length;e++){for(var f=this.getAllEdges([a[e]]),g=mxUtils.bind(this,function(d,f){var g=this.model.getGeometry(d);if(null!=g){for(var k=this.model.getTerminal(d,f),l=!1,m=k;null!=m;){if(a[e]==m){l=!0;break}m=this.model.getParent(m)}l&&(g=g.clone(),l=this.view.getState(d),null!=l?(k=l.absolutePoints, -m=f?0:k.length-1,g.setTerminalPoint(new mxPoint(k[m].x/b-c.x-l.origin.x,k[m].y/b-c.y-l.origin.y),f)):(k=this.view.getState(k),null!=k&&g.setTerminalPoint(new mxPoint(k.getCenterX()/b-c.x,k.getCenterY()/b-c.y),f)),this.model.setGeometry(d,g),this.model.setTerminal(d,null,f))}}),k=0;k<f.length;k++)d.get(f[k])||(d.put(f[k],!0),g(f[k],!0),g(f[k],!1));this.model.remove(a[e])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",a))}finally{this.model.endUpdate()}}}; +mxGraph.prototype.cellsRemoved=function(a){if(null!=a&&0<a.length){var b=this.view.scale,c=this.view.translate;this.model.beginUpdate();try{for(var d=new mxDictionary,e=0;e<a.length;e++)d.put(a[e],!0);for(e=0;e<a.length;e++){for(var f=this.getAllEdges([a[e]]),g=mxUtils.bind(this,function(d,f){var g=this.model.getGeometry(d);if(null!=g){for(var k=this.model.getTerminal(d,f),l=!1,m=k;null!=m;){if(a[e]==m){l=!0;break}m=this.model.getParent(m)}l&&(g=g.clone(),l=this.view.getState(d),null!=l&&null!=l.absolutePoints? +(k=l.absolutePoints,m=f?0:k.length-1,g.setTerminalPoint(new mxPoint(k[m].x/b-c.x-l.origin.x,k[m].y/b-c.y-l.origin.y),f)):(k=this.view.getState(k),null!=k&&g.setTerminalPoint(new mxPoint(k.getCenterX()/b-c.x,k.getCenterY()/b-c.y),f)),this.model.setGeometry(d,g),this.model.setTerminal(d,null,f))}}),k=0;k<f.length;k++)d.get(f[k])||(d.put(f[k],!0),g(f[k],!0),g(f[k],!1));this.model.remove(a[e])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",a))}finally{this.model.endUpdate()}}}; mxGraph.prototype.splitEdge=function(a,b,c,d,e){d=d||0;e=e||0;var f=this.model.getParent(a),g=this.model.getTerminal(a,!0);this.model.beginUpdate();try{if(null==c){c=this.cloneCell(a);var k=this.view.getState(a),l=this.getCellGeometry(c);if(null!=l&&null!=l.points&&null!=k){var m=this.view.translate,n=this.view.scale,p=mxUtils.findNearestSegment(k,(d+m.x)*n,(e+m.y)*n);l.points=l.points.slice(0,p);l=this.getCellGeometry(a);null!=l&&null!=l.points&&(l=l.clone(),l.points=l.points.slice(p),this.model.setGeometry(a, l))}}this.cellsMoved(b,d,e,!1,!1);this.cellsAdded(b,f,this.model.getChildCount(f),null,null,!0);this.cellsAdded([c],f,this.model.getChildCount(f),g,b[0],!1);this.cellConnected(a,b[0],!0);this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",a,"cells",b,"newEdge",c,"dx",d,"dy",e))}finally{this.model.endUpdate()}return c}; mxGraph.prototype.toggleCells=function(a,b,c){null==b&&(b=this.getSelectionCells());c&&(b=this.addAllEdges(b));this.model.beginUpdate();try{this.cellsToggled(b,a),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",a,"cells",b,"includeEdges",c))}finally{this.model.endUpdate()}return b};mxGraph.prototype.cellsToggled=function(a,b){if(null!=a&&0<a.length){this.model.beginUpdate();try{for(var c=0;c<a.length;c++)this.model.setVisible(a[c],b)}finally{this.model.endUpdate()}}}; @@ -1895,8 +1896,9 @@ mxObjectCodec.prototype.afterEncode=function(a,b,c){return c};mxObjectCodec.prot mxObjectCodec.prototype.decodeAttributes=function(a,b,c){b=b.attributes;if(null!=b)for(var d=0;d<b.length;d++)this.decodeAttribute(a,b[d],c)};mxObjectCodec.prototype.isIgnoredAttribute=function(a,b,c){return"as"==b.nodeName||"id"==b.nodeName}; mxObjectCodec.prototype.decodeAttribute=function(a,b,c){if(!this.isIgnoredAttribute(a,b,c)){var d=b.nodeName;b=this.convertAttributeFromXml(a,b,c);var e=this.getFieldName(d);if(this.isReference(c,e,b,!1)){a=a.getObject(b);if(null==a){mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+d+"="+b);return}b=a}this.isExcluded(c,d,b,!1)||(c[d]=b)}}; mxObjectCodec.prototype.decodeChildren=function(a,b,c){for(b=b.firstChild;null!=b;){var d=b.nextSibling;b.nodeType!=mxConstants.NODETYPE_ELEMENT||this.processInclude(a,b,c)||this.decodeChild(a,b,c);b=d}}; -mxObjectCodec.prototype.decodeChild=function(a,b,c){var d=this.getFieldName(b.getAttribute("as"));if(null==d||!this.isExcluded(c,d,b,!1)){var e=this.getFieldTemplate(c,d,b);"add"==b.nodeName?(a=b.getAttribute("value"),null==a&&mxObjectCodec.allowEval&&(a=mxUtils.eval(mxUtils.getTextContent(b)))):a=a.decode(b,e);this.addObjectValue(c,d,a,e)}};mxObjectCodec.prototype.getFieldTemplate=function(a,b,c){a=a[b];a instanceof Array&&0<a.length&&(a=null);return a}; -mxObjectCodec.prototype.addObjectValue=function(a,b,c,d){null!=c&&c!=d&&(null!=b&&0<b.length?a[b]=c:a.push(c))};mxObjectCodec.prototype.processInclude=function(a,b,c){if("include"==b.nodeName){b=b.getAttribute("name");if(null!=b)try{var d=mxUtils.load(b).getDocumentElement();null!=d&&a.decode(d,c)}catch(e){}return!0}return!1};mxObjectCodec.prototype.beforeDecode=function(a,b,c){return b};mxObjectCodec.prototype.afterDecode=function(a,b,c){return c}; +mxObjectCodec.prototype.decodeChild=function(a,b,c){var d=this.getFieldName(b.getAttribute("as"));if(null==d||!this.isExcluded(c,d,b,!1)){var e=this.getFieldTemplate(c,d,b);"add"==b.nodeName?(a=b.getAttribute("value"),null==a&&mxObjectCodec.allowEval&&(a=mxUtils.eval(mxUtils.getTextContent(b)))):a=a.decode(b,e);try{this.addObjectValue(c,d,a,e)}catch(f){throw Error(f.message+" for "+b.nodeName);}}}; +mxObjectCodec.prototype.getFieldTemplate=function(a,b,c){a=a[b];a instanceof Array&&0<a.length&&(a=null);return a};mxObjectCodec.prototype.addObjectValue=function(a,b,c,d){null!=c&&c!=d&&(null!=b&&0<b.length?a[b]=c:a.push(c))};mxObjectCodec.prototype.processInclude=function(a,b,c){if("include"==b.nodeName){b=b.getAttribute("name");if(null!=b)try{var d=mxUtils.load(b).getDocumentElement();null!=d&&a.decode(d,c)}catch(e){}return!0}return!1};mxObjectCodec.prototype.beforeDecode=function(a,b,c){return b}; +mxObjectCodec.prototype.afterDecode=function(a,b,c){return c}; mxCodecRegistry.register(function(){var a=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);a.isCellCodec=function(){return!0};a.isNumericAttribute=function(a,c,d){return"value"!==c.nodeName&&mxObjectCodec.prototype.isNumericAttribute.apply(this,arguments)};a.isExcluded=function(a,c,d,e){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||e&&"value"==c&&d.nodeType==mxConstants.NODETYPE_ELEMENT};a.afterEncode=function(a,c,d){if(null!= c.value&&c.value.nodeType==mxConstants.NODETYPE_ELEMENT){var b=d;d=mxUtils.importNode(a.document,c.value,!0);d.appendChild(b);a=b.getAttribute("id");d.setAttribute("id",a);b.removeAttribute("id")}return d};a.beforeDecode=function(a,c,d){var b=c.cloneNode(!0),f=this.getName();c.nodeName!=f?(b=c.getElementsByTagName(f)[0],null!=b&&b.parentNode==c?(mxUtils.removeWhitespace(b,!0),mxUtils.removeWhitespace(b,!1),b.parentNode.removeChild(b)):b=null,d.value=c.cloneNode(!0),c=d.value.getAttribute("id"),null!= c&&(d.setId(c),d.value.removeAttribute("id"))):d.setId(c.getAttribute("id"));if(null!=b)for(c=0;c<this.idrefs.length;c++){var f=this.idrefs[c],g=b.getAttribute(f);if(null!=g){b.removeAttribute(f);var k=a.objects[g]||a.lookup(g);null==k&&(g=a.getElementById(g),null!=g&&(k=(mxCodecRegistry.codecs[g.nodeName]||this).decode(a,g)));d[f]=k}}return b};return a}()); @@ -1961,8 +1963,8 @@ x.style.color=.5>.213*this.rgb[0]+.715*this.rgb[1]+.072*this.rgb[2]?"#FFF":"#000 this.rgb[1]=b;var e=null===c?this.rgb[2]:this.rgb[2]=c,f=Math.min(Math.min(a,b),e);c=Math.max(Math.max(a,b),e);var g=c-f;0===g?a=[null,0,c]:(a=a===f?3+(e-b)/g:b===f?5+(a-e)/g:1+(b-a)/g,a=[6===a?0:a,g/c,c]);null!==a[0]&&(this.hsv[0]=a[0]);0!==a[2]&&(this.hsv[1]=a[1]);this.hsv[2]=a[2];this.exportColor(d)};this.fromString=function(a,b){var c=a.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i);return c?(6===c[1].length?this.fromRGB(parseInt(c[1].substr(0,2),16)/255,parseInt(c[1].substr(2,2),16)/255,parseInt(c[1].substr(4, 2),16)/255,b):this.fromRGB(parseInt(c[1].charAt(0)+c[1].charAt(0),16)/255,parseInt(c[1].charAt(1)+c[1].charAt(1),16)/255,parseInt(c[1].charAt(2)+c[1].charAt(2),16)/255,b),!0):!1};this.toString=function(){return(256|Math.round(255*this.rgb[0])).toString(16).substr(1)+(256|Math.round(255*this.rgb[1])).toString(16).substr(1)+(256|Math.round(255*this.rgb[2])).toString(16).substr(1)};var r=this,t="hvs"===this.pickerMode.toLowerCase()?1:0,u=jscolor.fetchElement(this.valueElement),x=jscolor.fetchElement(this.styleElement), y=!1,A=!1,z=1,v=2,B=4,C=8;u&&(q=function(){r.fromString(u.value,z);p()},jscolor.addEvent(u,"keyup",q),jscolor.addEvent(u,"input",q),jscolor.addEvent(u,"blur",l),u.setAttribute("autocomplete","off"));x&&(x.jscStyle={backgroundImage:x.style.backgroundImage,backgroundColor:x.style.backgroundColor,color:x.style.color});switch(t){case 0:jscolor.requireImage("hs.png");break;case 1:jscolor.requireImage("hv.png")}this.importColor()}};jscolor.install(); -Editor=function(a,b,f,d,k){mxEventSource.call(this);this.chromeless=null!=a?a:this.chromeless;this.initStencilRegistry();this.graph=d||this.createGraph(b,f);this.editable=null!=k?k:!a;this.undoManager=this.createUndoManager();this.status="";this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[Editor.pageCounter])+".xml"};this.getFilename=function(){return this.filename};this.setStatus=function(a){this.status=a;this.fireEvent(new mxEventObject("statusChanged"))};this.getStatus= -function(){return this.status};this.graphChangeListener=function(a,b){var d=null!=b?b.getProperty("edit"):null;null!=d&&d.ignoreEdit||this.setModified(!0)};this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)}));this.graph.resetViewOnRootChange=!1;this.init()};Editor.pageCounter=0; +Editor=function(a,b,e,c,k){mxEventSource.call(this);this.chromeless=null!=a?a:this.chromeless;this.initStencilRegistry();this.graph=c||this.createGraph(b,e);this.editable=null!=k?k:!a;this.undoManager=this.createUndoManager();this.status="";this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[Editor.pageCounter])+".xml"};this.getFilename=function(){return this.filename};this.setStatus=function(a){this.status=a;this.fireEvent(new mxEventObject("statusChanged"))};this.getStatus= +function(){return this.status};this.graphChangeListener=function(a,b){var c=null!=b?b.getProperty("edit"):null;null!=c&&c.ignoreEdit||this.setModified(!0)};this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)}));this.graph.resetViewOnRootChange=!1;this.init()};Editor.pageCounter=0; (function(){try{for(var a=window;null!=a.opener&&"undefined"!==typeof a.opener.Editor&&!isNaN(a.opener.Editor.pageCounter)&&a.opener!=a;)a=a.opener;null!=a&&(a.Editor.pageCounter++,Editor.pageCounter=a.Editor.pageCounter)}catch(b){}})();Editor.useLocalStorage="undefined"!=typeof Storage&&mxClient.IS_IOS; Editor.helpImage=mxClient.IS_SVG?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBmaWxsPSJub25lIiBkPSJNMCAwaDI0djI0SDB6Ii8+PHBhdGggZD0iTTExIDE4aDJ2LTJoLTJ2MnptMS0xNkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTAtMTRjLTIuMjEgMC00IDEuNzktNCA0aDJjMC0xLjEuOS0yIDItMnMyIC45IDIgMmMwIDItMyAxLjc1LTMgNWgyYzAtMi4yNSAzLTIuNSAzLTUgMC0yLjIxLTEuNzktNC00LTR6Ii8+PC9zdmc+":IMAGE_PATH+ "/help.png"; @@ -1980,31 +1982,31 @@ Editor.closeLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCA Editor.editLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAgVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9d3yJTAAAAKnRSTlMA+hzi3nRQWyXzkm0h2j3u54gzEgSXjlYoTBgJxL2loGpAOS3Jt7Wxm35Ga7gRAAAA6UlEQVQ4y63Q2XaCMBSF4Q0JBasoQ5DJqbXjfv8HbCK2BZNwo/8FXHx7rcMC7lQu0iX8qU/qtvAWCpoqH8dYzS0SwaV5eK/UAf8X9pd2CWKzuF5Jrftp1owXwnIGLUaL3PYndOHf4kNNXWrXK/m7CHunk7K8LE6YtBpcknwG9GKxnroY+ylBXcx4xKyx/u/EuXi509cP9V7OO1oyHnzrdFTcqLG/4ibBA5pIMr/4xvKzuQDkVy9wW8SgBFD6HDvuzMvrZcC9QlkfMzI7w64m+b4PqBMNHB05lH21PVxJo2/fBXxV4hB38PcD+5AkI4FuETsAAAAASUVORK5CYII="; Editor.previousLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAPFBMVEUAAAD////////////////////////////////////////////////////////////////////////////YSWgTAAAAE3RSTlMA7fci493c0MW8uJ6CZks4MxQHEZL6ewAAAFZJREFUOMvdkskRgDAMA4lDwg2B7b9XOlge/KKvdsa25KFb5XlRvxXC/DNBEv8IFNjBgGdDgXtFgTyhwDXiQAUHCvwa4Uv6mR6UR+1led2mVonvl+tML45qCQNQLIx7AAAAAElFTkSuQmCC";Editor.nextLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAPFBMVEUAAAD////////////////////////////////////////////////////////////////////////////YSWgTAAAAE3RSTlMA7fci493c0MW8uJ6CZks4MxQHEZL6ewAAAFRJREFUOMvd0skRgCAQBVEFwQ0V7fxzNQP6wI05v6pZ/kyj1b7FNgik2gQzzLcAwiUAigHOTwDHK4A1CmB5BJANJG1hQ9qafYcqFlZP3IFc9eVGrR+iIgkDQRUXIAAAAABJRU5ErkJggg=="; Editor.ctrlKey=mxClient.IS_MAC?"Cmd":"Ctrl";Editor.popupsAllowed=!0;mxUtils.extend(Editor,mxEventSource);Editor.prototype.originalNoForeignObject=mxClient.NO_FO;Editor.prototype.transparentImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhMAAwAIAAAP///wAAACH5BAEAAAAALAAAAAAwADAAAAIxhI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8egpAAA7":IMAGE_PATH+"/transparent.gif";Editor.prototype.extendCanvas=!0;Editor.prototype.chromeless=!1;Editor.prototype.cancelFirst=!0; -Editor.prototype.enabled=!0;Editor.prototype.filename=null;Editor.prototype.modified=!1;Editor.prototype.autosave=!0;Editor.prototype.initialTopSpacing=0;Editor.prototype.appName=document.title;Editor.prototype.editBlankUrl=window.location.protocol+"//"+window.location.host+"/";Editor.prototype.init=function(){};Editor.prototype.isChromelessView=function(){return this.chromeless};Editor.prototype.setAutosave=function(a){this.autosave=a;this.fireEvent(new mxEventObject("autosaveChanged"))}; +Editor.prototype.enabled=!0;Editor.prototype.filename=null;Editor.prototype.modified=!1;Editor.prototype.autosave=!0;Editor.prototype.initialTopSpacing=0;Editor.prototype.appName=document.title;Editor.prototype.editBlankUrl=window.location.protocol+"//"+window.location.host+"/";Editor.prototype.defaultGraphOverflow="hidden";Editor.prototype.init=function(){};Editor.prototype.isChromelessView=function(){return this.chromeless};Editor.prototype.setAutosave=function(a){this.autosave=a;this.fireEvent(new mxEventObject("autosaveChanged"))}; Editor.prototype.getEditBlankUrl=function(a){return this.editBlankUrl+a}; -Editor.prototype.editAsNew=function(a,b){var f=null!=b?"?title="+encodeURIComponent(b):"";null!=urlParams.ui&&(f+=(0<f.length?"&":"?")+"ui="+urlParams.ui);null==this.editorWindow||this.editorWindow.closed?"undefined"!==typeof window.postMessage&&(null==document.documentMode||10<=document.documentMode)?(null==this.editorWindow&&mxEvent.addListener(window,"message",mxUtils.bind(this,function(b){"ready"==b.data&&b.source==this.editorWindow&&this.editorWindow.postMessage(a,"*")})),this.editorWindow=this.graph.openLink(this.getEditBlankUrl(f+ -(0<f.length?"&":"?")+"client=1"),null,!0)):this.editorWindow=this.graph.openLink(this.getEditBlankUrl(f)+"#R"+encodeURIComponent(a)):this.editorWindow.focus()};Editor.prototype.createGraph=function(a,b){var f=new Graph(null,b,null,null,a);f.transparentBackground=!1;this.chromeless||(f.isBlankLink=function(a){return!this.isExternalProtocol(a)});return f}; +Editor.prototype.editAsNew=function(a,b){var e=null!=b?"?title="+encodeURIComponent(b):"";null!=urlParams.ui&&(e+=(0<e.length?"&":"?")+"ui="+urlParams.ui);null==this.editorWindow||this.editorWindow.closed?"undefined"!==typeof window.postMessage&&(null==document.documentMode||10<=document.documentMode)?(null==this.editorWindow&&mxEvent.addListener(window,"message",mxUtils.bind(this,function(b){"ready"==b.data&&b.source==this.editorWindow&&this.editorWindow.postMessage(a,"*")})),this.editorWindow=this.graph.openLink(this.getEditBlankUrl(e+ +(0<e.length?"&":"?")+"client=1"),null,!0)):this.editorWindow=this.graph.openLink(this.getEditBlankUrl(e)+"#R"+encodeURIComponent(a)):this.editorWindow.focus()};Editor.prototype.createGraph=function(a,b){var e=new Graph(null,b,null,null,a);e.transparentBackground=!1;this.chromeless||(e.isBlankLink=function(a){return!this.isExternalProtocol(a)});return e}; Editor.prototype.resetGraph=function(){this.graph.gridEnabled=!this.isChromelessView()||"1"==urlParams.grid;this.graph.graphHandler.guidesEnabled=!0;this.graph.setTooltips(!0);this.graph.setConnectable(!0);this.graph.foldingEnabled=!0;this.graph.scrollbars=this.graph.defaultScrollbars;this.graph.pageVisible=this.graph.defaultPageVisible;this.graph.pageBreaksVisible=this.graph.pageVisible;this.graph.preferPageSize=this.graph.pageBreaksVisible;this.graph.background=null;this.graph.pageScale=mxGraph.prototype.pageScale; this.graph.pageFormat=mxGraph.prototype.pageFormat;this.graph.currentScale=1;this.graph.currentTranslate.x=0;this.graph.currentTranslate.y=0;this.updateGraphComponents();this.graph.view.setScale(1)}; Editor.prototype.readGraphState=function(a){this.graph.gridEnabled="0"!=a.getAttribute("grid")&&(!this.isChromelessView()||"1"==urlParams.grid);this.graph.gridSize=parseFloat(a.getAttribute("gridSize"))||mxGraph.prototype.gridSize;this.graph.graphHandler.guidesEnabled="0"!=a.getAttribute("guides");this.graph.setTooltips("0"!=a.getAttribute("tooltips"));this.graph.setConnectable("0"!=a.getAttribute("connect"));this.graph.connectionArrowsEnabled="0"!=a.getAttribute("arrows");this.graph.foldingEnabled= "0"!=a.getAttribute("fold");this.isChromelessView()&&this.graph.foldingEnabled&&(this.graph.foldingEnabled="1"==urlParams.nav,this.graph.cellRenderer.forceControlClickHandler=this.graph.foldingEnabled);var b=parseFloat(a.getAttribute("pageScale"));!isNaN(b)&&0<b?this.graph.pageScale=b:this.graph.pageScale=mxGraph.prototype.pageScale;this.graph.isLightboxView()?this.graph.pageVisible=!1:(b=a.getAttribute("page"),this.graph.pageVisible=null!=b?"0"!=b:this.graph.defaultPageVisible);this.graph.pageBreaksVisible= -this.graph.pageVisible;this.graph.preferPageSize=this.graph.pageBreaksVisible;var b=parseFloat(a.getAttribute("pageWidth")),f=parseFloat(a.getAttribute("pageHeight"));isNaN(b)||isNaN(f)||(this.graph.pageFormat=new mxRectangle(0,0,b,f));a=a.getAttribute("background");this.graph.background=null!=a&&0<a.length?a:null}; -Editor.prototype.setGraphXml=function(a){if(null!=a){var b=new mxCodec(a.ownerDocument);if("mxGraphModel"==a.nodeName){this.graph.model.beginUpdate();try{this.graph.model.clear(),this.graph.view.scale=1,this.readGraphState(a),this.updateGraphComponents(),b.decode(a,this.graph.getModel())}finally{this.graph.model.endUpdate()}this.fireEvent(new mxEventObject("resetGraphView"))}else if("root"==a.nodeName){this.resetGraph();var f=b.document.createElement("mxGraphModel");f.appendChild(a);b.decode(f,this.graph.getModel()); +this.graph.pageVisible;this.graph.preferPageSize=this.graph.pageBreaksVisible;var b=parseFloat(a.getAttribute("pageWidth")),e=parseFloat(a.getAttribute("pageHeight"));isNaN(b)||isNaN(e)||(this.graph.pageFormat=new mxRectangle(0,0,b,e));a=a.getAttribute("background");this.graph.background=null!=a&&0<a.length?a:null}; +Editor.prototype.setGraphXml=function(a){if(null!=a){var b=new mxCodec(a.ownerDocument);if("mxGraphModel"==a.nodeName){this.graph.model.beginUpdate();try{this.graph.model.clear(),this.graph.view.scale=1,this.readGraphState(a),this.updateGraphComponents(),b.decode(a,this.graph.getModel())}finally{this.graph.model.endUpdate()}this.fireEvent(new mxEventObject("resetGraphView"))}else if("root"==a.nodeName){this.resetGraph();var e=b.document.createElement("mxGraphModel");e.appendChild(a);b.decode(e,this.graph.getModel()); this.updateGraphComponents();this.fireEvent(new mxEventObject("resetGraphView"))}else throw{message:mxResources.get("cannotOpenFile"),node:a,toString:function(){return this.message}};}else this.resetGraph(),this.graph.model.clear(),this.fireEvent(new mxEventObject("resetGraphView"))}; Editor.prototype.getGraphXml=function(a){a=(null!=a?a:1)?(new mxCodec(mxUtils.createXmlDocument())).encode(this.graph.getModel()):this.graph.encodeCells(mxUtils.sortCells(this.graph.model.getTopmostCells(this.graph.getSelectionCells())));if(0!=this.graph.view.translate.x||0!=this.graph.view.translate.y)a.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),a.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100);a.setAttribute("grid",this.graph.isGridEnabled()?"1":"0");a.setAttribute("gridSize", this.graph.gridSize);a.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0");a.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0");a.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0");a.setAttribute("arrows",this.graph.connectionArrowsEnabled?"1":"0");a.setAttribute("fold",this.graph.foldingEnabled?"1":"0");a.setAttribute("page",this.graph.pageVisible?"1":"0");a.setAttribute("pageScale",this.graph.pageScale);a.setAttribute("pageWidth",this.graph.pageFormat.width); -a.setAttribute("pageHeight",this.graph.pageFormat.height);null!=this.graph.background&&a.setAttribute("background",this.graph.background);return a};Editor.prototype.updateGraphComponents=function(){var a=this.graph;null!=a.container&&(a.view.validateBackground(),a.container.style.overflow=a.scrollbars?"auto":"hidden",this.fireEvent(new mxEventObject("updateGraphComponents")))};Editor.prototype.setModified=function(a){this.modified=a};Editor.prototype.setFilename=function(a){this.filename=a}; -Editor.prototype.createUndoManager=function(){var a=this.graph,b=new mxUndoManager;this.undoListener=function(a,f){b.undoableEditHappened(f.getProperty("edit"))};var f=mxUtils.bind(this,function(a,b){this.undoListener.apply(this,arguments)});a.getModel().addListener(mxEvent.UNDO,f);a.getView().addListener(mxEvent.UNDO,f);f=function(b,f){var d=a.getSelectionCellsForChanges(f.getProperty("edit").changes);a.getModel();for(var k=[],q=0;q<d.length;q++)null!=a.view.getState(d[q])&&k.push(d[q]);a.setSelectionCells(k)}; -b.addListener(mxEvent.UNDO,f);b.addListener(mxEvent.REDO,f);return b};Editor.prototype.initStencilRegistry=function(){};Editor.prototype.destroy=function(){null!=this.graph&&(this.graph.destroy(),this.graph=null)};OpenFile=function(a){this.consumer=this.producer=null;this.done=a;this.args=null};OpenFile.prototype.setConsumer=function(a){this.consumer=a;this.execute()};OpenFile.prototype.setData=function(){this.args=arguments;this.execute()};OpenFile.prototype.error=function(a){this.cancel(!0);mxUtils.alert(a)}; +a.setAttribute("pageHeight",this.graph.pageFormat.height);null!=this.graph.background&&a.setAttribute("background",this.graph.background);return a};Editor.prototype.updateGraphComponents=function(){var a=this.graph;null!=a.container&&(a.view.validateBackground(),a.container.style.overflow=a.scrollbars?"auto":this.defaultGraphOverflow,this.fireEvent(new mxEventObject("updateGraphComponents")))};Editor.prototype.setModified=function(a){this.modified=a}; +Editor.prototype.setFilename=function(a){this.filename=a}; +Editor.prototype.createUndoManager=function(){var a=this.graph,b=new mxUndoManager;this.undoListener=function(a,e){b.undoableEditHappened(e.getProperty("edit"))};var e=mxUtils.bind(this,function(a,b){this.undoListener.apply(this,arguments)});a.getModel().addListener(mxEvent.UNDO,e);a.getView().addListener(mxEvent.UNDO,e);e=function(b,e){var c=a.getSelectionCellsForChanges(e.getProperty("edit").changes);a.getModel();for(var k=[],r=0;r<c.length;r++)null!=a.view.getState(c[r])&&k.push(c[r]);a.setSelectionCells(k)}; +b.addListener(mxEvent.UNDO,e);b.addListener(mxEvent.REDO,e);return b};Editor.prototype.initStencilRegistry=function(){};Editor.prototype.destroy=function(){null!=this.graph&&(this.graph.destroy(),this.graph=null)};OpenFile=function(a){this.consumer=this.producer=null;this.done=a;this.args=null};OpenFile.prototype.setConsumer=function(a){this.consumer=a;this.execute()};OpenFile.prototype.setData=function(){this.args=arguments;this.execute()};OpenFile.prototype.error=function(a){this.cancel(!0);mxUtils.alert(a)}; OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.args&&(this.cancel(!1),this.consumer.apply(this,this.args))};OpenFile.prototype.cancel=function(a){null!=this.done&&this.done(null!=a?a:!0)}; -function Dialog(a,b,f,d,k,n,p,q,w,c){var g=0;mxClient.IS_VML&&(null==document.documentMode||8>document.documentMode)&&(g=80);f+=g;d+=g;var h=f,l=d,t=0<document.documentElement.clientHeight?document.documentElement.clientHeight:Math.max(document.body.clientHeight||0,document.documentElement.clientHeight),m=Math.max(1,Math.round((document.body.clientWidth-f-64)/2)),r=Math.max(1,Math.round((t-d-a.footerHeight)/3));mxClient.IS_QUIRKS||(b.style.maxHeight="100%");f=Math.min(f,document.body.scrollWidth- -64);d=Math.min(d,t-64);0<a.dialogs.length&&(this.zIndex+=2*a.dialogs.length);null==this.bg&&(this.bg=a.createDiv("background"),this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=t+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity),mxClient.IS_QUIRKS&&new mxDivResizer(this.bg));var x=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=x.x+"px";this.bg.style.top=x.y+"px";m+=x.x;r+=x.y; -k&&document.body.appendChild(this.bg);var v=a.createDiv(w?"geTransDialog":"geDialog");k=this.getPosition(m,r,f,d);m=k.x;r=k.y;v.style.width=f+"px";v.style.height=d+"px";v.style.left=m+"px";v.style.top=r+"px";v.style.zIndex=this.zIndex;v.appendChild(b);document.body.appendChild(v);!q&&b.clientHeight>v.clientHeight-64&&(b.style.overflowY="auto");n&&(n=document.createElement("img"),n.setAttribute("src",Dialog.prototype.closeImage),n.setAttribute("title",mxResources.get("close")),n.className="geDialogClose", -n.style.top=r+14+"px",n.style.left=m+f+38-g+"px",n.style.zIndex=this.zIndex,mxEvent.addListener(n,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})),document.body.appendChild(n),this.dialogImg=n,mxEvent.addGestureListeners(this.bg,null,null,mxUtils.bind(this,function(c){a.hideDialog(!0)})));this.resizeListener=mxUtils.bind(this,function(){if(null!=c){var x=c();null!=x&&(h=f=x.w,l=d=x.h)}t=Math.max(document.body.clientHeight,document.documentElement.clientHeight);this.bg.style.height=t+"px"; -m=Math.max(1,Math.round((document.body.clientWidth-f-64)/2));r=Math.max(1,Math.round((t-d-a.footerHeight)/3));f=Math.min(h,document.body.scrollWidth-64);d=Math.min(l,t-64);x=this.getPosition(m,r,f,d);m=x.x;r=x.y;v.style.left=m+"px";v.style.top=r+"px";v.style.width=f+"px";v.style.height=d+"px";!q&&b.clientHeight>v.clientHeight-64&&(b.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=r+14+"px",this.dialogImg.style.left=m+f+38-g+"px")});mxEvent.addListener(window,"resize",this.resizeListener); -this.onDialogClose=p;this.container=v;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-1; -Dialog.prototype.noColorImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkEzRDlBMUUwODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkEzRDlBMUUxODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTNEOUExREU4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTNEOUExREY4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5xh3fmAAAABlBMVEX////MzMw46qqDAAAAGElEQVR42mJggAJGKGAYIIGBth8KAAIMAEUQAIElnLuQAAAAAElFTkSuQmCC":IMAGE_PATH+ -"/nocolor.png";Dialog.prototype.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAQMAAADaX5RTAAAABlBMVEV7mr3///+wksspAAAAAnRSTlP/AOW3MEoAAAAdSURBVAgdY9jXwCDDwNDRwHCwgeExmASygSL7GgB12QiqNHZZIwAAAABJRU5ErkJggg==":IMAGE_PATH+"/close.png"; +function Dialog(a,b,e,c,k,m,q,r,v,z){var d=0;mxClient.IS_VML&&(null==document.documentMode||8>document.documentMode)&&(d=80);e+=d;c+=d;var f=e,l=c,n=mxUtils.getDocumentSize(),g=n.height,p=Math.max(1,Math.round((n.width-e-64)/2)),B=Math.max(1,Math.round((g-c-a.footerHeight)/3));mxClient.IS_QUIRKS||(b.style.maxHeight="100%");e=null!=document.body?Math.min(e,document.body.scrollWidth-64):e;c=Math.min(c,g-64);0<a.dialogs.length&&(this.zIndex+=2*a.dialogs.length);null==this.bg&&(this.bg=a.createDiv("background"), +this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=g+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity),mxClient.IS_QUIRKS&&new mxDivResizer(this.bg));n=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=n.x+"px";this.bg.style.top=n.y+"px";p+=n.x;B+=n.y;k&&document.body.appendChild(this.bg);var x=a.createDiv(v?"geTransDialog":"geDialog");k=this.getPosition(p,B,e,c);p=k.x;B=k.y;x.style.width= +e+"px";x.style.height=c+"px";x.style.left=p+"px";x.style.top=B+"px";x.style.zIndex=this.zIndex;x.appendChild(b);document.body.appendChild(x);!r&&b.clientHeight>x.clientHeight-64&&(b.style.overflowY="auto");m&&(m=document.createElement("img"),m.setAttribute("src",Dialog.prototype.closeImage),m.setAttribute("title",mxResources.get("close")),m.className="geDialogClose",m.style.top=B+14+"px",m.style.left=p+e+38-d+"px",m.style.zIndex=this.zIndex,mxEvent.addListener(m,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})), +document.body.appendChild(m),this.dialogImg=m,mxEvent.addGestureListeners(this.bg,null,null,mxUtils.bind(this,function(d){a.hideDialog(!0)})));this.resizeListener=mxUtils.bind(this,function(){if(null!=z){var n=z();null!=n&&(f=e=n.w,l=c=n.h)}n=mxUtils.getDocumentSize();g=n.height;this.bg.style.height=g+"px";p=Math.max(1,Math.round((n.width-e-64)/2));B=Math.max(1,Math.round((g-c-a.footerHeight)/3));e=null!=document.body?Math.min(f,document.body.scrollWidth-64):f;c=Math.min(l,g-64);n=this.getPosition(p, +B,e,c);p=n.x;B=n.y;x.style.left=p+"px";x.style.top=B+"px";x.style.width=e+"px";x.style.height=c+"px";!r&&b.clientHeight>x.clientHeight-64&&(b.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=B+14+"px",this.dialogImg.style.left=p+e+38-d+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=q;this.container=x;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-1; +Dialog.prototype.noColorImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkEzRDlBMUUwODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkEzRDlBMUUxODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTNEOUExREU4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTNEOUExREY4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5xh3fmAAAABlBMVEX////MzMw46qqDAAAAGElEQVR42mJggAJGKGAYIIGBth8KAAIMAEUQAIElnLuQAAAAAElFTkSuQmCC": +IMAGE_PATH+"/nocolor.png";Dialog.prototype.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAQMAAADaX5RTAAAABlBMVEV7mr3///+wksspAAAAAnRSTlP/AOW3MEoAAAAdSURBVAgdY9jXwCDDwNDRwHCwgeExmASygSL7GgB12QiqNHZZIwAAAABJRU5ErkJggg==":IMAGE_PATH+"/close.png"; Dialog.prototype.clearImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQAKAIABAMDAwP///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUIzOEM1NzI4NjEyMTFFMUEzMkNDMUE3NjZERDE2QjIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUIzOEM1NzM4NjEyMTFFMUEzMkNDMUE3NjZERDE2QjIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5QjM4QzU3MDg2MTIxMUUxQTMyQ0MxQTc2NkREMTZCMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5QjM4QzU3MTg2MTIxMUUxQTMyQ0MxQTc2NkREMTZCMiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEAAAEALAAAAAANAAoAAAIXTGCJebD9jEOTqRlttXdrB32PJ2ncyRQAOw==":IMAGE_PATH+ "/clear.gif"; Dialog.prototype.lockedImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAMAAABhq6zVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzdDMDZCODExNzIxMTFFNUI0RTk5NTg4OTcyMUUyODEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzdDMDZCODIxNzIxMTFFNUI0RTk5NTg4OTcyMUUyODEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozN0MwNkI3RjE3MjExMUU1QjRFOTk1ODg5NzIxRTI4MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozN0MwNkI4MDE3MjExMUU1QjRFOTk1ODg5NzIxRTI4MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvqMCFYAAAAVUExURZmZmb+/v7KysqysrMzMzLGxsf///4g8N1cAAAAHdFJOU////////wAaSwNGAAAAPElEQVR42lTMQQ4AIQgEwUa0//9kTQirOweYOgDqAMbZUr10AGlAwx4/BJ2QJ4U0L5brYjovvpv32xZgAHZaATFtMbu4AAAAAElFTkSuQmCC":IMAGE_PATH+ @@ -2012,148 +2014,148 @@ Dialog.prototype.lockedImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoA Dialog.prototype.unlockedImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAMAAABhq6zVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzdDMDZCN0QxNzIxMTFFNUI0RTk5NTg4OTcyMUUyODEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzdDMDZCN0UxNzIxMTFFNUI0RTk5NTg4OTcyMUUyODEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozN0MwNkI3QjE3MjExMUU1QjRFOTk1ODg5NzIxRTI4MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozN0MwNkI3QzE3MjExMUU1QjRFOTk1ODg5NzIxRTI4MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkKMpVwAAAAYUExURZmZmbKysr+/v6ysrOXl5czMzLGxsf///zHN5lwAAAAIdFJOU/////////8A3oO9WQAAADxJREFUeNpUzFESACAEBNBVsfe/cZJU+8Mzs8CIABCidtfGOndnYsT40HDSiCcbPdoJo10o9aI677cpwACRoAF3dFNlswAAAABJRU5ErkJggg==":IMAGE_PATH+ "/unlocked.png";Dialog.prototype.bgOpacity=80;Dialog.prototype.getPosition=function(a,b){return new mxPoint(a,b)};Dialog.prototype.close=function(a,b){if(null!=this.onDialogClose){if(0==this.onDialogClose(a,b))return!1;this.onDialogClose=null}null!=this.dialogImg&&(this.dialogImg.parentNode.removeChild(this.dialogImg),this.dialogImg=null);null!=this.bg&&null!=this.bg.parentNode&&this.bg.parentNode.removeChild(this.bg);mxEvent.removeListener(window,"resize",this.resizeListener);this.container.parentNode.removeChild(this.container)}; var PrintDialog=function(a,b){this.create(a,b)}; -PrintDialog.prototype.create=function(a){function b(a){var b=q.checked||c.checked,d=parseInt(h.value)/100;isNaN(d)&&(d=1,h.value="100%");var d=.75*d,l=f.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,t=1/f.pageScale;if(b){var k=q.checked?1:parseInt(g.value);isNaN(k)||(t=mxUtils.getScaleForPageCount(k,f,l))}f.getGraphBounds();var y=k=0,l=mxRectangle.fromRectangle(l);l.width=Math.ceil(l.width*d);l.height=Math.ceil(l.height*d);t*=d;!b&&f.pageVisible?(d=f.getPageLayout(),k-=d.x*l.width,y-=d.y*l.height): -b=!0;b=PrintDialog.createPrintPreview(f,t,l,0,k,y,b);b.open();a&&PrintDialog.printPreview(b)}var f=a.editor.graph,d,k,n=document.createElement("table");n.style.width="100%";n.style.height="100%";var p=document.createElement("tbody");d=document.createElement("tr");var q=document.createElement("input");q.setAttribute("type","checkbox");k=document.createElement("td");k.setAttribute("colspan","2");k.style.fontSize="10pt";k.appendChild(q);var w=document.createElement("span");mxUtils.write(w," "+mxResources.get("fitPage")); -k.appendChild(w);mxEvent.addListener(w,"click",function(a){q.checked=!q.checked;c.checked=!q.checked;mxEvent.consume(a)});mxEvent.addListener(q,"change",function(){c.checked=!q.checked});d.appendChild(k);p.appendChild(d);d=d.cloneNode(!1);var c=document.createElement("input");c.setAttribute("type","checkbox");k=document.createElement("td");k.style.fontSize="10pt";k.appendChild(c);w=document.createElement("span");mxUtils.write(w," "+mxResources.get("posterPrint")+":");k.appendChild(w);mxEvent.addListener(w, -"click",function(a){c.checked=!c.checked;q.checked=!c.checked;mxEvent.consume(a)});d.appendChild(k);var g=document.createElement("input");g.setAttribute("value","1");g.setAttribute("type","number");g.setAttribute("min","1");g.setAttribute("size","4");g.setAttribute("disabled","disabled");g.style.width="50px";k=document.createElement("td");k.style.fontSize="10pt";k.appendChild(g);mxUtils.write(k," "+mxResources.get("pages")+" (max)");d.appendChild(k);p.appendChild(d);mxEvent.addListener(c,"change", -function(){c.checked?g.removeAttribute("disabled"):g.setAttribute("disabled","disabled");q.checked=!c.checked});d=d.cloneNode(!1);k=document.createElement("td");mxUtils.write(k,mxResources.get("pageScale")+":");d.appendChild(k);k=document.createElement("td");var h=document.createElement("input");h.setAttribute("value","100 %");h.setAttribute("size","5");h.style.width="50px";k.appendChild(h);d.appendChild(k);p.appendChild(d);d=document.createElement("tr");k=document.createElement("td");k.colSpan=2; -k.style.paddingTop="20px";k.setAttribute("align","right");w=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});w.className="geBtn";a.editor.cancelFirst&&k.appendChild(w);if(PrintDialog.previewEnabled){var l=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();b(!1)});l.className="geBtn";k.appendChild(l)}l=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();b(!0)});l.className="geBtn gePrimaryBtn";k.appendChild(l);a.editor.cancelFirst|| -k.appendChild(w);d.appendChild(k);p.appendChild(d);n.appendChild(p);this.container=n};PrintDialog.printPreview=function(a){if(null!=a.wnd){var b=function(){a.wnd.focus();a.wnd.print();a.wnd.close()};mxClient.IS_GC?window.setTimeout(b,500):b()}}; -PrintDialog.createPrintPreview=function(a,b,f,d,k,n,p){b=new mxPrintPreview(a,b,f,d,k,n);b.title=mxResources.get("preview");b.printBackgroundImage=!0;b.autoOrigin=p;a=a.background;if(null==a||""==a||a==mxConstants.NONE)a="#ffffff";b.backgroundColor=a;var q=b.writeHead;b.writeHead=function(a){q.apply(this,arguments);a.writeln('<style type="text/css">');a.writeln("@media screen {");a.writeln(" body > div { padding:30px;box-sizing:content-box; }");a.writeln("}");a.writeln("</style>")};return b}; +PrintDialog.prototype.create=function(a){function b(a){var b=r.checked||z.checked,c=parseInt(f.value)/100;isNaN(c)&&(c=1,f.value="100%");var c=.75*c,l=e.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,n=1/e.pageScale;if(b){var t=r.checked?1:parseInt(d.value);isNaN(t)||(n=mxUtils.getScaleForPageCount(t,e,l))}e.getGraphBounds();var y=t=0,l=mxRectangle.fromRectangle(l);l.width=Math.ceil(l.width*c);l.height=Math.ceil(l.height*c);n*=c;!b&&e.pageVisible?(c=e.getPageLayout(),t-=c.x*l.width,y-=c.y*l.height): +b=!0;b=PrintDialog.createPrintPreview(e,n,l,0,t,y,b);b.open();a&&PrintDialog.printPreview(b)}var e=a.editor.graph,c,k,m=document.createElement("table");m.style.width="100%";m.style.height="100%";var q=document.createElement("tbody");c=document.createElement("tr");var r=document.createElement("input");r.setAttribute("type","checkbox");k=document.createElement("td");k.setAttribute("colspan","2");k.style.fontSize="10pt";k.appendChild(r);var v=document.createElement("span");mxUtils.write(v," "+mxResources.get("fitPage")); +k.appendChild(v);mxEvent.addListener(v,"click",function(a){r.checked=!r.checked;z.checked=!r.checked;mxEvent.consume(a)});mxEvent.addListener(r,"change",function(){z.checked=!r.checked});c.appendChild(k);q.appendChild(c);c=c.cloneNode(!1);var z=document.createElement("input");z.setAttribute("type","checkbox");k=document.createElement("td");k.style.fontSize="10pt";k.appendChild(z);v=document.createElement("span");mxUtils.write(v," "+mxResources.get("posterPrint")+":");k.appendChild(v);mxEvent.addListener(v, +"click",function(a){z.checked=!z.checked;r.checked=!z.checked;mxEvent.consume(a)});c.appendChild(k);var d=document.createElement("input");d.setAttribute("value","1");d.setAttribute("type","number");d.setAttribute("min","1");d.setAttribute("size","4");d.setAttribute("disabled","disabled");d.style.width="50px";k=document.createElement("td");k.style.fontSize="10pt";k.appendChild(d);mxUtils.write(k," "+mxResources.get("pages")+" (max)");c.appendChild(k);q.appendChild(c);mxEvent.addListener(z,"change", +function(){z.checked?d.removeAttribute("disabled"):d.setAttribute("disabled","disabled");r.checked=!z.checked});c=c.cloneNode(!1);k=document.createElement("td");mxUtils.write(k,mxResources.get("pageScale")+":");c.appendChild(k);k=document.createElement("td");var f=document.createElement("input");f.setAttribute("value","100 %");f.setAttribute("size","5");f.style.width="50px";k.appendChild(f);c.appendChild(k);q.appendChild(c);c=document.createElement("tr");k=document.createElement("td");k.colSpan=2; +k.style.paddingTop="20px";k.setAttribute("align","right");v=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});v.className="geBtn";a.editor.cancelFirst&&k.appendChild(v);if(PrintDialog.previewEnabled){var l=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();b(!1)});l.className="geBtn";k.appendChild(l)}l=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();b(!0)});l.className="geBtn gePrimaryBtn";k.appendChild(l);a.editor.cancelFirst|| +k.appendChild(v);c.appendChild(k);q.appendChild(c);m.appendChild(q);this.container=m};PrintDialog.printPreview=function(a){if(null!=a.wnd){var b=function(){a.wnd.focus();a.wnd.print();a.wnd.close()};mxClient.IS_GC?window.setTimeout(b,500):b()}}; +PrintDialog.createPrintPreview=function(a,b,e,c,k,m,q){b=new mxPrintPreview(a,b,e,c,k,m);b.title=mxResources.get("preview");b.printBackgroundImage=!0;b.autoOrigin=q;a=a.background;if(null==a||""==a||a==mxConstants.NONE)a="#ffffff";b.backgroundColor=a;var r=b.writeHead;b.writeHead=function(a){r.apply(this,arguments);a.writeln('<style type="text/css">');a.writeln("@media screen {");a.writeln(" body > div { padding:30px;box-sizing:content-box; }");a.writeln("}");a.writeln("</style>")};return b}; PrintDialog.previewEnabled=!0; -var PageSetupDialog=function(a){function b(){null==g||g==mxConstants.NONE?(c.style.backgroundColor="",c.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(c.style.backgroundColor=g,c.style.backgroundImage="")}function f(){null==t?(l.removeAttribute("title"),l.style.fontSize="",l.innerHTML=mxResources.get("change")+"..."):(l.setAttribute("title",t.src),l.style.fontSize="11px",l.innerHTML=t.src.substring(0,42)+"...")}var d=a.editor.graph,k,n,p=document.createElement("table");p.style.width= -"100%";p.style.height="100%";var q=document.createElement("tbody");k=document.createElement("tr");n=document.createElement("td");n.style.verticalAlign="top";n.style.fontSize="10pt";mxUtils.write(n,mxResources.get("paperSize")+":");k.appendChild(n);n=document.createElement("td");n.style.verticalAlign="top";n.style.fontSize="10pt";var w=PageSetupDialog.addPageFormatPanel(n,"pagesetupdialog",d.pageFormat);k.appendChild(n);q.appendChild(k);k=document.createElement("tr");n=document.createElement("td"); -mxUtils.write(n,mxResources.get("background")+":");k.appendChild(n);n=document.createElement("td");n.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var c=document.createElement("button");c.style.width="18px";c.style.height="18px";c.style.marginRight="20px";c.style.backgroundPosition="center center";c.style.backgroundRepeat="no-repeat";var g=d.background;b();mxEvent.addListener(c,"click",function(c){a.pickColor(g||"none",function(a){g=a;b()});mxEvent.consume(c)}); -n.appendChild(c);mxUtils.write(n,mxResources.get("gridSize")+":");var h=document.createElement("input");h.setAttribute("type","number");h.setAttribute("min","0");h.style.width="40px";h.style.marginLeft="6px";h.value=d.getGridSize();n.appendChild(h);mxEvent.addListener(h,"change",function(){var a=parseInt(h.value);h.value=Math.max(1,isNaN(a)?d.getGridSize():a)});k.appendChild(n);q.appendChild(k);k=document.createElement("tr");n=document.createElement("td");mxUtils.write(n,mxResources.get("image")+ -":");k.appendChild(n);n=document.createElement("td");var l=document.createElement("a");l.style.textDecoration="underline";l.style.cursor="pointer";l.style.color="#a0a0a0";var t=d.backgroundImage;mxEvent.addListener(l,"click",function(c){a.showBackgroundImageDialog(function(a){t=a;f()});mxEvent.consume(c)});f();n.appendChild(l);k.appendChild(n);q.appendChild(k);k=document.createElement("tr");n=document.createElement("td");n.colSpan=2;n.style.paddingTop="16px";n.setAttribute("align","right");var m= -mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});m.className="geBtn";a.editor.cancelFirst&&n.appendChild(m);var r=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();d.gridSize!==h.value&&d.setGridSize(parseInt(h.value));var c=new ChangePageSetup(a,g,t,w.get());c.ignoreColor=d.background==g;c.ignoreImage=(null!=d.backgroundImage?d.backgroundImage.src:null)===(null!=t?t.src:null);d.pageFormat.width==c.previousFormat.width&&d.pageFormat.height==c.previousFormat.height&& -c.ignoreColor&&c.ignoreImage||d.model.execute(c)});r.className="geBtn gePrimaryBtn";n.appendChild(r);a.editor.cancelFirst||n.appendChild(m);k.appendChild(n);q.appendChild(k);p.appendChild(q);this.container=p}; -PageSetupDialog.addPageFormatPanel=function(a,b,f,d){function k(a,c,b){if(b||h!=document.activeElement&&l!=document.activeElement){a=!1;for(c=0;c<m.length;c++)b=m[c],D?"custom"==b.key&&(q.value=b.key,D=!1):null!=b.format&&("a4"==b.key?826==f.width?(f=mxRectangle.fromRectangle(f),f.width=827):826==f.height&&(f=mxRectangle.fromRectangle(f),f.height=827):"a5"==b.key&&(584==f.width?(f=mxRectangle.fromRectangle(f),f.width=583):584==f.height&&(f=mxRectangle.fromRectangle(f),f.height=583)),f.width==b.format.width&& -f.height==b.format.height?(q.value=b.key,n.setAttribute("checked","checked"),n.defaultChecked=!0,n.checked=!0,p.removeAttribute("checked"),p.defaultChecked=!1,p.checked=!1,a=!0):f.width==b.format.height&&f.height==b.format.width&&(q.value=b.key,n.removeAttribute("checked"),n.defaultChecked=!1,n.checked=!1,p.setAttribute("checked","checked"),p.defaultChecked=!0,a=p.checked=!0));a?(w.style.display="",g.style.display="none"):(h.value=f.width/100,l.value=f.height/100,n.setAttribute("checked","checked"), -q.value="custom",w.style.display="none",g.style.display="")}}b="format-"+b;var n=document.createElement("input");n.setAttribute("name",b);n.setAttribute("type","radio");n.setAttribute("value","portrait");var p=document.createElement("input");p.setAttribute("name",b);p.setAttribute("type","radio");p.setAttribute("value","landscape");var q=document.createElement("select");q.style.marginBottom="8px";q.style.width="202px";var w=document.createElement("div");w.style.marginLeft="4px";w.style.width="210px"; -w.style.height="24px";n.style.marginRight="6px";w.appendChild(n);b=document.createElement("span");b.style.maxWidth="100px";mxUtils.write(b,mxResources.get("portrait"));w.appendChild(b);p.style.marginLeft="10px";p.style.marginRight="6px";w.appendChild(p);var c=document.createElement("span");c.style.width="100px";mxUtils.write(c,mxResources.get("landscape"));w.appendChild(c);var g=document.createElement("div");g.style.marginLeft="4px";g.style.width="210px";g.style.height="24px";var h=document.createElement("input"); -h.setAttribute("size","7");h.style.textAlign="right";g.appendChild(h);mxUtils.write(g," in x ");var l=document.createElement("input");l.setAttribute("size","7");l.style.textAlign="right";g.appendChild(l);mxUtils.write(g," in");w.style.display="none";g.style.display="none";for(var t={},m=PageSetupDialog.getFormats(),r=0;r<m.length;r++){var x=m[r];t[x.key]=x;var v=document.createElement("option");v.setAttribute("value",x.key);mxUtils.write(v,x.title);q.appendChild(v)}var D=!1;k();a.appendChild(q);mxUtils.br(a); -a.appendChild(w);a.appendChild(g);var y=f,u=function(a,c){var b=t[q.value];null!=b.format?(h.value=b.format.width/100,l.value=b.format.height/100,g.style.display="none",w.style.display=""):(w.style.display="none",g.style.display="");b=parseFloat(h.value);if(isNaN(b)||0>=b)h.value=f.width/100;b=parseFloat(l.value);if(isNaN(b)||0>=b)l.value=f.height/100;b=new mxRectangle(0,0,Math.floor(100*parseFloat(h.value)),Math.floor(100*parseFloat(l.value)));"custom"!=q.value&&p.checked&&(b=new mxRectangle(0,0, -b.height,b.width));c&&D||b.width==y.width&&b.height==y.height||(y=b,null!=d&&d(y))};mxEvent.addListener(b,"click",function(a){n.checked=!0;u(a);mxEvent.consume(a)});mxEvent.addListener(c,"click",function(a){p.checked=!0;u(a);mxEvent.consume(a)});mxEvent.addListener(h,"blur",u);mxEvent.addListener(h,"click",u);mxEvent.addListener(l,"blur",u);mxEvent.addListener(l,"click",u);mxEvent.addListener(p,"change",u);mxEvent.addListener(n,"change",u);mxEvent.addListener(q,"change",function(a){D="custom"==q.value; -u(a,!0)});u();return{set:function(a){f=a;k(null,null,!0)},get:function(){return y},widthInput:h,heightInput:l}}; +var PageSetupDialog=function(a){function b(){null==d||d==mxConstants.NONE?(z.style.backgroundColor="",z.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(z.style.backgroundColor=d,z.style.backgroundImage="")}function e(){null==n?(l.removeAttribute("title"),l.style.fontSize="",l.innerHTML=mxResources.get("change")+"..."):(l.setAttribute("title",n.src),l.style.fontSize="11px",l.innerHTML=n.src.substring(0,42)+"...")}var c=a.editor.graph,k,m,q=document.createElement("table");q.style.width= +"100%";q.style.height="100%";var r=document.createElement("tbody");k=document.createElement("tr");m=document.createElement("td");m.style.verticalAlign="top";m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("paperSize")+":");k.appendChild(m);m=document.createElement("td");m.style.verticalAlign="top";m.style.fontSize="10pt";var v=PageSetupDialog.addPageFormatPanel(m,"pagesetupdialog",c.pageFormat);k.appendChild(m);r.appendChild(k);k=document.createElement("tr");m=document.createElement("td"); +mxUtils.write(m,mxResources.get("background")+":");k.appendChild(m);m=document.createElement("td");m.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var z=document.createElement("button");z.style.width="18px";z.style.height="18px";z.style.marginRight="20px";z.style.backgroundPosition="center center";z.style.backgroundRepeat="no-repeat";var d=c.background;b();mxEvent.addListener(z,"click",function(f){a.pickColor(d||"none",function(a){d=a;b()});mxEvent.consume(f)}); +m.appendChild(z);mxUtils.write(m,mxResources.get("gridSize")+":");var f=document.createElement("input");f.setAttribute("type","number");f.setAttribute("min","0");f.style.width="40px";f.style.marginLeft="6px";f.value=c.getGridSize();m.appendChild(f);mxEvent.addListener(f,"change",function(){var a=parseInt(f.value);f.value=Math.max(1,isNaN(a)?c.getGridSize():a)});k.appendChild(m);r.appendChild(k);k=document.createElement("tr");m=document.createElement("td");mxUtils.write(m,mxResources.get("image")+ +":");k.appendChild(m);m=document.createElement("td");var l=document.createElement("a");l.style.textDecoration="underline";l.style.cursor="pointer";l.style.color="#a0a0a0";var n=c.backgroundImage;mxEvent.addListener(l,"click",function(d){a.showBackgroundImageDialog(function(a){n=a;e()});mxEvent.consume(d)});e();m.appendChild(l);k.appendChild(m);r.appendChild(k);k=document.createElement("tr");m=document.createElement("td");m.colSpan=2;m.style.paddingTop="16px";m.setAttribute("align","right");var g= +mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});g.className="geBtn";a.editor.cancelFirst&&m.appendChild(g);var p=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();c.gridSize!==f.value&&c.setGridSize(parseInt(f.value));var b=new ChangePageSetup(a,d,n,v.get());b.ignoreColor=c.background==d;b.ignoreImage=(null!=c.backgroundImage?c.backgroundImage.src:null)===(null!=n?n.src:null);c.pageFormat.width==b.previousFormat.width&&c.pageFormat.height==b.previousFormat.height&& +b.ignoreColor&&b.ignoreImage||c.model.execute(b)});p.className="geBtn gePrimaryBtn";m.appendChild(p);a.editor.cancelFirst||m.appendChild(g);k.appendChild(m);r.appendChild(k);q.appendChild(r);this.container=q}; +PageSetupDialog.addPageFormatPanel=function(a,b,e,c){function k(a,b,c){if(c||f!=document.activeElement&&l!=document.activeElement){a=!1;for(b=0;b<g.length;b++)c=g[b],t?"custom"==c.key&&(r.value=c.key,t=!1):null!=c.format&&("a4"==c.key?826==e.width?(e=mxRectangle.fromRectangle(e),e.width=827):826==e.height&&(e=mxRectangle.fromRectangle(e),e.height=827):"a5"==c.key&&(584==e.width?(e=mxRectangle.fromRectangle(e),e.width=583):584==e.height&&(e=mxRectangle.fromRectangle(e),e.height=583)),e.width==c.format.width&& +e.height==c.format.height?(r.value=c.key,m.setAttribute("checked","checked"),m.defaultChecked=!0,m.checked=!0,q.removeAttribute("checked"),q.defaultChecked=!1,q.checked=!1,a=!0):e.width==c.format.height&&e.height==c.format.width&&(r.value=c.key,m.removeAttribute("checked"),m.defaultChecked=!1,m.checked=!1,q.setAttribute("checked","checked"),q.defaultChecked=!0,a=q.checked=!0));a?(v.style.display="",d.style.display="none"):(f.value=e.width/100,l.value=e.height/100,m.setAttribute("checked","checked"), +r.value="custom",v.style.display="none",d.style.display="")}}b="format-"+b;var m=document.createElement("input");m.setAttribute("name",b);m.setAttribute("type","radio");m.setAttribute("value","portrait");var q=document.createElement("input");q.setAttribute("name",b);q.setAttribute("type","radio");q.setAttribute("value","landscape");var r=document.createElement("select");r.style.marginBottom="8px";r.style.width="202px";var v=document.createElement("div");v.style.marginLeft="4px";v.style.width="210px"; +v.style.height="24px";m.style.marginRight="6px";v.appendChild(m);b=document.createElement("span");b.style.maxWidth="100px";mxUtils.write(b,mxResources.get("portrait"));v.appendChild(b);q.style.marginLeft="10px";q.style.marginRight="6px";v.appendChild(q);var z=document.createElement("span");z.style.width="100px";mxUtils.write(z,mxResources.get("landscape"));v.appendChild(z);var d=document.createElement("div");d.style.marginLeft="4px";d.style.width="210px";d.style.height="24px";var f=document.createElement("input"); +f.setAttribute("size","7");f.style.textAlign="right";d.appendChild(f);mxUtils.write(d," in x ");var l=document.createElement("input");l.setAttribute("size","7");l.style.textAlign="right";d.appendChild(l);mxUtils.write(d," in");v.style.display="none";d.style.display="none";for(var n={},g=PageSetupDialog.getFormats(),p=0;p<g.length;p++){var B=g[p];n[B.key]=B;var x=document.createElement("option");x.setAttribute("value",B.key);mxUtils.write(x,B.title);r.appendChild(x)}var t=!1;k();a.appendChild(r);mxUtils.br(a); +a.appendChild(v);a.appendChild(d);var y=e,u=function(a,b){var g=n[r.value];null!=g.format?(f.value=g.format.width/100,l.value=g.format.height/100,d.style.display="none",v.style.display=""):(v.style.display="none",d.style.display="");g=parseFloat(f.value);if(isNaN(g)||0>=g)f.value=e.width/100;g=parseFloat(l.value);if(isNaN(g)||0>=g)l.value=e.height/100;g=new mxRectangle(0,0,Math.floor(100*parseFloat(f.value)),Math.floor(100*parseFloat(l.value)));"custom"!=r.value&&q.checked&&(g=new mxRectangle(0,0, +g.height,g.width));b&&t||g.width==y.width&&g.height==y.height||(y=g,null!=c&&c(y))};mxEvent.addListener(b,"click",function(a){m.checked=!0;u(a);mxEvent.consume(a)});mxEvent.addListener(z,"click",function(a){q.checked=!0;u(a);mxEvent.consume(a)});mxEvent.addListener(f,"blur",u);mxEvent.addListener(f,"click",u);mxEvent.addListener(l,"blur",u);mxEvent.addListener(l,"click",u);mxEvent.addListener(q,"change",u);mxEvent.addListener(m,"change",u);mxEvent.addListener(r,"change",function(a){t="custom"==r.value; +u(a,!0)});u();return{set:function(a){e=a;k(null,null,!0)},get:function(){return y},widthInput:f,heightInput:l}}; PageSetupDialog.getFormats=function(){return[{key:"letter",title:'US-Letter (8,5" x 11")',format:mxConstants.PAGE_FORMAT_LETTER_PORTRAIT},{key:"legal",title:'US-Legal (8,5" x 14")',format:new mxRectangle(0,0,850,1400)},{key:"tabloid",title:"US-Tabloid (279 mm x 432 mm)",format:new mxRectangle(0,0,1100,1700)},{key:"a0",title:"A0 (841 mm x 1189 mm)",format:new mxRectangle(0,0,3300,4681)},{key:"a1",title:"A1 (594 mm x 841 mm)",format:new mxRectangle(0,0,2339,3300)},{key:"a2",title:"A2 (420 mm x 594 mm)", format:new mxRectangle(0,0,1654,2336)},{key:"a3",title:"A3 (297 mm x 420 mm)",format:new mxRectangle(0,0,1169,1654)},{key:"a4",title:"A4 (210 mm x 297 mm)",format:mxConstants.PAGE_FORMAT_A4_PORTRAIT},{key:"a5",title:"A5 (148 mm x 210 mm)",format:new mxRectangle(0,0,583,827)},{key:"a6",title:"A6 (105 mm x 148 mm)",format:new mxRectangle(0,0,413,583)},{key:"a7",title:"A7 (74 mm x 105 mm)",format:new mxRectangle(0,0,291,413)},{key:"custom",title:mxResources.get("custom"),format:null}]}; (function(){mxGraphView.prototype.validateBackgroundPage=function(){var a=this.graph;if(null!=a.container&&!a.transparentBackground){if(a.pageVisible){var b=this.getBackgroundPageBounds();if(null==this.backgroundPageShape){for(var c=a.container.firstChild;null!=c&&c.nodeType!=mxConstants.NODETYPE_ELEMENT;)c=c.nextSibling;null!=c&&(this.backgroundPageShape=this.createBackgroundPageShape(b),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!mxClient.IS_QUIRKS,this.backgroundPageShape.dialect= -mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(a.container),c.style.position="absolute",a.container.insertBefore(this.backgroundPageShape.node,c),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(c){a.dblClick(c)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(c){a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(c))}), -mxUtils.bind(this,function(c){null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide();a.isMouseDown&&!mxEvent.isConsumed(c)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(c))}),mxUtils.bind(this,function(c){a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(c))})))}else this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=b,this.backgroundPageShape.redraw()}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape= -null);this.validateBackgroundStyles()}};mxGraphView.prototype.validateBackgroundStyles=function(){var a=this.graph,b=null==a.background||a.background==mxConstants.NONE?a.defaultPageBackgroundColor:a.background,c=null!=b&&this.gridColor!=b.toLowerCase()?this.gridColor:"#ffffff",d="none",h="";if(a.isGridEnabled()){h=10;mxClient.IS_SVG?(d=unescape(encodeURIComponent(this.createSvgGrid(c))),d=window.btoa?btoa(d):Base64.encode(d,!0),d="url(data:image/svg+xml;base64,"+d+")",h=a.gridSize*this.scale*this.gridSteps): -d="url("+this.gridImage+")";var f=c=0;null!=a.view.backgroundPageShape&&(f=this.getBackgroundPageBounds(),c=1+f.x,f=1+f.y);h=-Math.round(h-mxUtils.mod(this.translate.x*this.scale-c,h))+"px "+-Math.round(h-mxUtils.mod(this.translate.y*this.scale-f,h))+"px"}c=a.view.canvas;null!=c.ownerSVGElement&&(c=c.ownerSVGElement);null!=a.view.backgroundPageShape?(a.view.backgroundPageShape.node.style.backgroundPosition=h,a.view.backgroundPageShape.node.style.backgroundImage=d,a.view.backgroundPageShape.node.style.backgroundColor= -b,a.container.className="geDiagramContainer geDiagramBackdrop",c.style.backgroundImage="none",c.style.backgroundColor=""):(a.container.className="geDiagramContainer",c.style.backgroundPosition=h,c.style.backgroundColor=b,c.style.backgroundImage=d)};mxGraphView.prototype.createSvgGrid=function(a){for(var b=this.graph.gridSize*this.scale;b<this.minGridSize;)b*=2;for(var c=this.gridSteps*b,d=[],h=1;h<this.gridSteps;h++){var f=h*b;d.push("M 0 "+f+" L "+c+" "+f+" M "+f+" 0 L "+f+" "+c)}return'<svg width="'+ -c+'" height="'+c+'" xmlns="'+mxConstants.NS_SVG+'"><defs><pattern id="grid" width="'+c+'" height="'+c+'" patternUnits="userSpaceOnUse"><path d="'+d.join(" ")+'" fill="none" stroke="'+a+'" opacity="0.2" stroke-width="1"/><path d="M '+c+" 0 L 0 0 0 "+c+'" fill="none" stroke="'+a+'" stroke-width="1"/></pattern></defs><rect width="100%" height="100%" fill="url(#grid)"/></svg>'};var a=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(b,d){a.apply(this,arguments);if(null!=this.shiftPreview1){var c= -this.view.canvas;null!=c.ownerSVGElement&&(c=c.ownerSVGElement);var g=this.gridSize*this.view.scale*this.view.gridSteps,g=-Math.round(g-mxUtils.mod(this.view.translate.x*this.view.scale+b,g))+"px "+-Math.round(g-mxUtils.mod(this.view.translate.y*this.view.scale+d,g))+"px";c.style.backgroundPosition=g}};mxGraph.prototype.updatePageBreaks=function(a,b,c){var d=this.view.scale,h=this.view.translate,f=this.pageFormat,t=d*this.pageScale,m=this.view.getBackgroundPageBounds();b=m.width;c=m.height;var r= -new mxRectangle(d*h.x,d*h.y,f.width*t,f.height*t),k=(a=a&&Math.min(r.width,r.height)>this.minPageBreakDist)?Math.ceil(c/r.height)-1:0,v=a?Math.ceil(b/r.width)-1:0,q=m.x+b,y=m.y+c;null==this.horizontalPageBreaks&&0<k&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<v&&(this.verticalPageBreaks=[]);a=mxUtils.bind(this,function(a){if(null!=a){for(var c=a==this.horizontalPageBreaks?k:v,b=0;b<=c;b++){var d=a==this.horizontalPageBreaks?[new mxPoint(Math.round(m.x),Math.round(m.y+(b+1)*r.height)), -new mxPoint(Math.round(q),Math.round(m.y+(b+1)*r.height))]:[new mxPoint(Math.round(m.x+(b+1)*r.width),Math.round(m.y)),new mxPoint(Math.round(m.x+(b+1)*r.width),Math.round(y))];null!=a[b]?(a[b].points=d,a[b].redraw()):(d=new mxPolyline(d,this.pageBreakColor),d.dialect=this.dialect,d.isDashed=this.pageBreakDashed,d.pointerEvents=!1,d.init(this.view.backgroundPane),d.redraw(),a[b]=d)}for(b=c;b<a.length;b++)a[b].destroy();a.splice(c,a.length-c)}});a(this.horizontalPageBreaks);a(this.verticalPageBreaks)}; -var b=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(a,d,c){for(var g=0;g<d.length;g++)if(this.graph.getModel().isVertex(d[g])){var h=this.graph.getCellGeometry(d[g]);if(null!=h&&h.relative)return!1}return b.apply(this,arguments)};var f=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var a=f.apply(this,arguments);a.intersects=mxUtils.bind(this,function(b,c){return this.isConnecting()? -!0:mxCellMarker.prototype.intersects.apply(a,arguments)});return a};mxGraphView.prototype.createBackgroundPageShape=function(a){return new mxRectangleShape(a,"#ffffff",this.graph.defaultPageBorderColor)};mxGraphView.prototype.getBackgroundPageBounds=function(){var a=this.getGraphBounds(),b=0<a.width?a.x/this.scale-this.translate.x:0,c=0<a.height?a.y/this.scale-this.translate.y:0,d=this.graph.pageFormat,h=this.graph.pageScale,f=d.width*h,d=d.height*h,h=Math.floor(Math.min(0,b)/f),t=Math.floor(Math.min(0, -c)/d);return new mxRectangle(this.scale*(this.translate.x+h*f),this.scale*(this.translate.y+t*d),this.scale*(Math.ceil(Math.max(1,b+a.width/this.scale)/f)-h)*f,this.scale*(Math.ceil(Math.max(1,c+a.height/this.scale)/d)-t)*d)};var d=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(a,b){d.apply(this,arguments);this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft= -a+"px",this.view.backgroundPageShape.node.style.marginTop=b+"px")};var k=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(a,b,c,d,h,f){var g=k.apply(this,arguments);null==f||f||mxEvent.addListener(g,"mousedown",function(a){mxEvent.consume(a)});return g};var n=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(a){var b=this.graph.getModel(),c=b.getParent(this.graph.getSelectionCell()),d=n.apply(this,arguments),h=b.getParent(d); -if(null==c||c!=d&&c!=h)for(;!this.graph.isCellSelected(d)&&!this.graph.isCellSelected(h)&&b.isVertex(h)&&!this.graph.isContainer(h);)d=h,h=this.graph.getModel().getParent(d);return d};var p=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(a,b){var c=p.apply(this,arguments);if(!c)for(var d=this.graph.getModel(),h=d.getParent(a);null!=h;){if(this.graph.isCellSelected(h)&&d.isVertex(h)){c=!0;break}h=d.getParent(h)}return c};mxGraphHandler.prototype.selectDelayed= +mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(a.container),c.style.position="absolute",a.container.insertBefore(this.backgroundPageShape.node,c),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(d){a.dblClick(d)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(d){a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(d))}), +mxUtils.bind(this,function(d){null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide();a.isMouseDown&&!mxEvent.isConsumed(d)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(d))}),mxUtils.bind(this,function(d){a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(d))})))}else this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=b,this.backgroundPageShape.redraw()}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape= +null);this.validateBackgroundStyles()}};mxGraphView.prototype.validateBackgroundStyles=function(){var a=this.graph,b=null==a.background||a.background==mxConstants.NONE?a.defaultPageBackgroundColor:a.background,c=null!=b&&this.gridColor!=b.toLowerCase()?this.gridColor:"#ffffff",d="none",f="";if(a.isGridEnabled()){f=10;mxClient.IS_SVG?(d=unescape(encodeURIComponent(this.createSvgGrid(c))),d=window.btoa?btoa(d):Base64.encode(d,!0),d="url(data:image/svg+xml;base64,"+d+")",f=a.gridSize*this.scale*this.gridSteps): +d="url("+this.gridImage+")";var l=c=0;null!=a.view.backgroundPageShape&&(l=this.getBackgroundPageBounds(),c=1+l.x,l=1+l.y);f=-Math.round(f-mxUtils.mod(this.translate.x*this.scale-c,f))+"px "+-Math.round(f-mxUtils.mod(this.translate.y*this.scale-l,f))+"px"}c=a.view.canvas;null!=c.ownerSVGElement&&(c=c.ownerSVGElement);null!=a.view.backgroundPageShape?(a.view.backgroundPageShape.node.style.backgroundPosition=f,a.view.backgroundPageShape.node.style.backgroundImage=d,a.view.backgroundPageShape.node.style.backgroundColor= +b,a.container.className="geDiagramContainer geDiagramBackdrop",c.style.backgroundImage="none",c.style.backgroundColor=""):(a.container.className="geDiagramContainer",c.style.backgroundPosition=f,c.style.backgroundColor=b,c.style.backgroundImage=d)};mxGraphView.prototype.createSvgGrid=function(a){for(var b=this.graph.gridSize*this.scale;b<this.minGridSize;)b*=2;for(var c=this.gridSteps*b,d=[],f=1;f<this.gridSteps;f++){var l=f*b;d.push("M 0 "+l+" L "+c+" "+l+" M "+l+" 0 L "+l+" "+c)}return'<svg width="'+ +c+'" height="'+c+'" xmlns="'+mxConstants.NS_SVG+'"><defs><pattern id="grid" width="'+c+'" height="'+c+'" patternUnits="userSpaceOnUse"><path d="'+d.join(" ")+'" fill="none" stroke="'+a+'" opacity="0.2" stroke-width="1"/><path d="M '+c+" 0 L 0 0 0 "+c+'" fill="none" stroke="'+a+'" stroke-width="1"/></pattern></defs><rect width="100%" height="100%" fill="url(#grid)"/></svg>'};var a=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(b,c){a.apply(this,arguments);if(null!=this.shiftPreview1){var e= +this.view.canvas;null!=e.ownerSVGElement&&(e=e.ownerSVGElement);var d=this.gridSize*this.view.scale*this.view.gridSteps,d=-Math.round(d-mxUtils.mod(this.view.translate.x*this.view.scale+b,d))+"px "+-Math.round(d-mxUtils.mod(this.view.translate.y*this.view.scale+c,d))+"px";e.style.backgroundPosition=d}};mxGraph.prototype.updatePageBreaks=function(a,b,c){var d=this.view.scale,f=this.view.translate,e=this.pageFormat,n=d*this.pageScale,g=this.view.getBackgroundPageBounds();b=g.width;c=g.height;var p= +new mxRectangle(d*f.x,d*f.y,e.width*n,e.height*n),k=(a=a&&Math.min(p.width,p.height)>this.minPageBreakDist)?Math.ceil(c/p.height)-1:0,r=a?Math.ceil(b/p.width)-1:0,t=g.x+b,y=g.y+c;null==this.horizontalPageBreaks&&0<k&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<r&&(this.verticalPageBreaks=[]);a=mxUtils.bind(this,function(a){if(null!=a){for(var d=a==this.horizontalPageBreaks?k:r,b=0;b<=d;b++){var f=a==this.horizontalPageBreaks?[new mxPoint(Math.round(g.x),Math.round(g.y+(b+1)*p.height)), +new mxPoint(Math.round(t),Math.round(g.y+(b+1)*p.height))]:[new mxPoint(Math.round(g.x+(b+1)*p.width),Math.round(g.y)),new mxPoint(Math.round(g.x+(b+1)*p.width),Math.round(y))];null!=a[b]?(a[b].points=f,a[b].redraw()):(f=new mxPolyline(f,this.pageBreakColor),f.dialect=this.dialect,f.isDashed=this.pageBreakDashed,f.pointerEvents=!1,f.init(this.view.backgroundPane),f.redraw(),a[b]=f)}for(b=d;b<a.length;b++)a[b].destroy();a.splice(d,a.length-d)}});a(this.horizontalPageBreaks);a(this.verticalPageBreaks)}; +var b=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(a,c,e){for(var d=0;d<c.length;d++)if(this.graph.getModel().isVertex(c[d])){var f=this.graph.getCellGeometry(c[d]);if(null!=f&&f.relative)return!1}return b.apply(this,arguments)};var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var a=e.apply(this,arguments);a.intersects=mxUtils.bind(this,function(b,c){return this.isConnecting()? +!0:mxCellMarker.prototype.intersects.apply(a,arguments)});return a};mxGraphView.prototype.createBackgroundPageShape=function(a){return new mxRectangleShape(a,"#ffffff",this.graph.defaultPageBorderColor)};mxGraphView.prototype.getBackgroundPageBounds=function(){var a=this.getGraphBounds(),b=0<a.width?a.x/this.scale-this.translate.x:0,c=0<a.height?a.y/this.scale-this.translate.y:0,d=this.graph.pageFormat,f=this.graph.pageScale,e=d.width*f,d=d.height*f,f=Math.floor(Math.min(0,b)/e),n=Math.floor(Math.min(0, +c)/d);return new mxRectangle(this.scale*(this.translate.x+f*e),this.scale*(this.translate.y+n*d),this.scale*(Math.ceil(Math.max(1,b+a.width/this.scale)/e)-f)*e,this.scale*(Math.ceil(Math.max(1,c+a.height/this.scale)/d)-n)*d)};var c=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(a,b){c.apply(this,arguments);this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft= +a+"px",this.view.backgroundPageShape.node.style.marginTop=b+"px")};var k=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(a,b,c,d,f,e){var l=k.apply(this,arguments);null==e||e||mxEvent.addListener(l,"mousedown",function(a){mxEvent.consume(a)});return l};var m=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(a){var b=this.graph.getModel(),c=b.getParent(this.graph.getSelectionCell()),d=m.apply(this,arguments),f=b.getParent(d); +if(null==c||c!=d&&c!=f)for(;!this.graph.isCellSelected(d)&&!this.graph.isCellSelected(f)&&b.isVertex(f)&&!this.graph.isContainer(f);)d=f,f=this.graph.getModel().getParent(d);return d};var q=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(a,b){var c=q.apply(this,arguments);if(!c)for(var d=this.graph.getModel(),f=d.getParent(a);null!=f;){if(this.graph.isCellSelected(f)&&d.isVertex(f)){c=!0;break}f=d.getParent(f)}return c};mxGraphHandler.prototype.selectDelayed= function(a){if(!this.graph.popupMenuHandler.isPopupTrigger(a)){var b=a.getCell();null==b&&(b=this.cell);var c=this.graph.view.getState(b);if(null==c||!a.isSource(c.control))for(var c=this.graph.getModel(),d=c.getParent(b);!this.graph.isCellSelected(d)&&c.isVertex(d);)b=d,d=c.getParent(b);this.graph.selectCellForEvent(b,a.getEvent())}};mxPopupMenuHandler.prototype.getCellForPopupEvent=function(a){a=a.getCell();for(var b=this.graph.getModel(),c=b.getParent(a);b.isVertex(c)&&!this.graph.isContainer(c);)this.graph.isCellSelected(c)&& -(a=c),c=b.getParent(c);return a}})();EditorUi=function(a,b,f){mxEventSource.call(this);this.destroyFunctions=[];this.editor=a||new Editor;this.container=b||document.body;var d=this.editor.graph;d.lightbox=f;d.useCssTransforms&&(this.lazyZoomDelay=0);mxClient.IS_SVG?mxPopupMenu.prototype.submenuImage="data:image/gif;base64,R0lGODlhCQAJAIAAAP///zMzMyH5BAEAAAAALAAAAAAJAAkAAAIPhI8WebHsHopSOVgb26AAADs=":(new Image).src=mxPopupMenu.prototype.submenuImage;mxClient.IS_SVG||null==mxConnectionHandler.prototype.connectImage||((new Image).src=mxConnectionHandler.prototype.connectImage.src); -this.editor.chromeless&&!this.editor.editable&&(this.footerHeight=0,d.isEnabled=function(){return!1},d.panningHandler.isForcePanningEvent=function(a){return!mxEvent.isPopupTrigger(a.getEvent())});this.actions=new Actions(this);this.menus=this.createMenus();this.createDivs();this.createUi();this.refresh();var k=mxUtils.bind(this,function(a){null==a&&(a=window.event);return this.isSelectionAllowed(a)||d.isEditing()});this.container==document.body&&(this.menubarContainer.onselectstart=k,this.menubarContainer.onmousedown= -k,this.toolbarContainer.onselectstart=k,this.toolbarContainer.onmousedown=k,this.diagramContainer.onselectstart=k,this.diagramContainer.onmousedown=k,this.sidebarContainer.onselectstart=k,this.sidebarContainer.onmousedown=k,this.formatContainer.onselectstart=k,this.formatContainer.onmousedown=k,this.footerContainer.onselectstart=k,this.footerContainer.onmousedown=k,null!=this.tabContainer&&(this.tabContainer.onselectstart=k));!this.editor.chromeless||this.editor.editable?(b=function(a){var c=mxEvent.getSource(a); -if("A"==c.nodeName)for(;null!=c;){if("geHint"==c.className)return!0;c=c.parentNode}return k(a)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,"contextmenu",b):this.diagramContainer.oncontextmenu=b):d.panningHandler.usePopupTrigger=!1;d.init(this.diagramContainer);mxClient.IS_SVG&&null!=d.view.getDrawPane()&&(b=d.view.getDrawPane().ownerSVGElement,null!=b&&(b.style.position="absolute"));this.hoverIcons=this.createHoverIcons(); -mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(a){var c=mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(a)-c.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(a)-c.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var n=!1,p=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(a,c){return n||p.apply(this,arguments)};this.keydownHandler= -mxUtils.bind(this,function(a){32==a.which?(n=!0,this.hoverIcons.reset(),d.container.style.cursor="move",d.isEditing()||mxEvent.getSource(a)!=d.container||mxEvent.consume(a)):mxEvent.isConsumed(a)||27!=a.keyCode||this.hideDialog(null,!0)});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(a){d.container.style.cursor="";n=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var q=d.panningHandler.isForcePanningEvent;d.panningHandler.isForcePanningEvent= -function(a){return q.apply(this,arguments)||n||mxEvent.isMouseEvent(a.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(a.getEvent()))&&(!mxEvent.isControlDown(a.getEvent())&&mxEvent.isRightMouseButton(a.getEvent())||mxEvent.isMiddleMouseButton(a.getEvent()))};var w=d.cellEditor.isStopEditingEvent;d.cellEditor.isStopEditingEvent=function(a){return w.apply(this,arguments)||13==a.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxClient.IS_SF&&mxEvent.isShiftDown(a))}; -var c=!1,g=null,h=null,l=null,t=mxUtils.bind(this,function(){if(null!=this.toolbar&&c!=d.cellEditor.isContentEditing()){for(var a=this.toolbar.container.firstChild,b=[];null!=a;){var f=a.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,a)&&(a.parentNode.removeChild(a),b.push(a));a=f}a=this.toolbar.fontMenu;f=this.toolbar.sizeMenu;if(null==l)this.toolbar.createTextToolbar();else{for(var m=0;m<l.length;m++)this.toolbar.container.appendChild(l[m]);this.toolbar.fontMenu=g;this.toolbar.sizeMenu= -h}c=d.cellEditor.isContentEditing();g=a;h=f;l=b}}),m=this,r=d.cellEditor.startEditing;d.cellEditor.startEditing=function(){r.apply(this,arguments);t();if(d.cellEditor.isContentEditing()){var a=!1,c=function(){a||(a=!0,window.setTimeout(function(){for(var c=d.getSelectedElement();null!=c&&c.nodeType!=mxConstants.NODETYPE_ELEMENT;)c=c.parentNode;if(null!=c&&(c=mxUtils.getCurrentStyle(c),null!=c&&null!=m.toolbar)){var b=c.fontFamily;"'"==b.charAt(0)&&(b=b.substring(1));"'"==b.charAt(b.length-1)&&(b= -b.substring(0,b.length-1));m.toolbar.setFontName(b);m.toolbar.setFontSize(parseInt(c.fontSize))}a=!1},0))};mxEvent.addListener(d.cellEditor.textarea,"input",c);mxEvent.addListener(d.cellEditor.textarea,"touchend",c);mxEvent.addListener(d.cellEditor.textarea,"mouseup",c);mxEvent.addListener(d.cellEditor.textarea,"keyup",c);c()}};var x=d.cellEditor.stopEditing;d.cellEditor.stopEditing=function(a,c){x.apply(this,arguments);t()};d.container.setAttribute("tabindex","0");d.container.style.cursor="default"; -if(window.self===window.top&&null!=d.container.parentNode)try{d.container.focus()}catch(G){}var v=d.fireMouseEvent;d.fireMouseEvent=function(a,c,b){a==mxEvent.MOUSE_DOWN&&this.container.focus();v.apply(this,arguments)};d.popupMenuHandler.autoExpand=!0;null!=this.menus&&(d.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a,c,b){this.menus.createPopupMenu(a,c,b)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(a){d.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(a); -this.getKeyHandler=function(){return keyHandler};var D="rounded shadow glass dashed dashPattern comic labelBackgroundColor".split(" "),y="shape edgeStyle curved rounded elbow comic jumpStyle jumpSize".split(" ");this.setDefaultStyle=function(a){var c=d.view.getState(a);if(null!=c){a=a.clone();a.style="";a=d.getCellStyle(a);var b=[],g=[],h;for(h in c.style)a[h]!=c.style[h]&&(b.push(c.style[h]),g.push(h));h=d.getModel().getStyle(c.cell);for(var f=null!=h?h.split(";"):[],l=0;l<f.length;l++){var m=f[l], -t=m.indexOf("=");0<=t&&(h=m.substring(0,t),m=m.substring(t+1),null!=a[h]&&"none"==m&&(b.push(m),g.push(h)))}d.getModel().isEdge(c.cell)?d.currentEdgeStyle={}:d.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",g,"values",b,"cells",[c.cell]))}};this.clearDefaultStyle=function(){d.currentEdgeStyle=mxUtils.clone(d.defaultEdgeStyle);d.currentVertexStyle=mxUtils.clone(d.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var u= -["fontFamily","fontSize","fontColor"],A="edgeStyle startArrow startFill startSize endArrow endFill endSize jettySize orthogonalLoop".split(" "),F=["startArrow startFill startSize sourcePerimeterSpacing endArrow endFill endSize targetPerimeterSpacing jettySize orthogonalLoop".split(" "),["strokeColor","strokeWidth"],["fillColor","gradientColor"],u,["opacity"],["align"],["html"]];for(a=0;a<F.length;a++)for(b=0;b<F[a].length;b++)D.push(F[a][b]);for(a=0;a<y.length;a++)0>mxUtils.indexOf(D,y[a])&&D.push(y[a]); -var Q=function(a,c){var b=d.getModel();b.beginUpdate();try{if(c)for(var h=b.isEdge(m),g=h?d.currentEdgeStyle:d.currentVertexStyle,h=["fontSize","fontFamily","fontColor"],f=0;f<h.length;f++){var l=g[h[f]];null!=l&&d.setCellStyles(h[f],l,a)}else for(l=0;l<a.length;l++){for(var m=a[l],t=b.getStyle(m),r=null!=t?t.split(";"):[],J=D.slice(),f=0;f<r.length;f++){var u=r[f],v=u.indexOf("=");if(0<=v){var k=u.substring(0,v),A=mxUtils.indexOf(J,k);0<=A&&J.splice(A,1);for(var x=0;x<F.length;x++){var q=F[x];if(0<= -mxUtils.indexOf(q,k))for(var n=0;n<q.length;n++){var p=mxUtils.indexOf(J,q[n]);0<=p&&J.splice(p,1)}}}}for(var g=(h=b.isEdge(m))?d.currentEdgeStyle:d.currentVertexStyle,I=b.getStyle(m),f=0;f<J.length;f++){var k=J[f],G=g[k];null==G||"shape"==k&&!h||h&&!(0>mxUtils.indexOf(y,k))||(I=mxUtils.setStyle(I,k,G))}b.setStyle(m,I)}}finally{b.endUpdate()}};d.addListener("cellsInserted",function(a,c){Q(c.getProperty("cells"))});d.addListener("textInserted",function(a,c){Q(c.getProperty("cells"),!0)});d.connectionHandler.addListener(mxEvent.CONNECT, -function(a,c){var b=[c.getProperty("cell")];c.getProperty("terminalInserted")&&b.push(c.getProperty("terminal"));Q(b)});this.addListener("styleChanged",mxUtils.bind(this,function(a,c){var b=c.getProperty("cells"),h=!1,g=!1;if(0<b.length)for(var f=0;f<b.length&&(h=d.getModel().isVertex(b[f])||h,!(g=d.getModel().isEdge(b[f])||g)||!h);f++);else g=h=!0;for(var b=c.getProperty("keys"),l=c.getProperty("values"),f=0;f<b.length;f++){var m=0<=mxUtils.indexOf(u,b[f]);if("strokeColor"!=b[f]||null!=l[f]&&"none"!= -l[f])if(0<=mxUtils.indexOf(y,b[f]))g||0<=mxUtils.indexOf(A,b[f])?null==l[f]?delete d.currentEdgeStyle[b[f]]:d.currentEdgeStyle[b[f]]=l[f]:h&&0<=mxUtils.indexOf(D,b[f])&&(null==l[f]?delete d.currentVertexStyle[b[f]]:d.currentVertexStyle[b[f]]=l[f]);else if(0<=mxUtils.indexOf(D,b[f])){if(h||m)null==l[f]?delete d.currentVertexStyle[b[f]]:d.currentVertexStyle[b[f]]=l[f];if(g||m||0<=mxUtils.indexOf(A,b[f]))null==l[f]?delete d.currentEdgeStyle[b[f]]:d.currentEdgeStyle[b[f]]=l[f]}}null!=this.toolbar&&(this.toolbar.setFontName(d.currentVertexStyle.fontFamily|| -Menus.prototype.defaultFont),this.toolbar.setFontSize(d.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==d.currentEdgeStyle.edgeStyle&&"1"==d.currentEdgeStyle.curved?"geSprite geSprite-curved":"straight"==d.currentEdgeStyle.edgeStyle||"none"==d.currentEdgeStyle.edgeStyle||null==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"== -d.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==d.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==d.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):"geSprite geSprite-orthogonal"),null!=this.toolbar.edgeShapeMenu&&(this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==d.currentEdgeStyle.shape? -"geSprite geSprite-linkedge":"flexArrow"==d.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==d.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"),null!=this.toolbar.lineStartMenu&&(this.toolbar.lineStartMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("start",d.currentEdgeStyle.shape,d.currentEdgeStyle[mxConstants.STYLE_STARTARROW],mxUtils.getValue(d.currentEdgeStyle,"startFill","1"))),null!=this.toolbar.lineEndMenu&&(this.toolbar.lineEndMenu.getElementsByTagName("div")[0].className= -this.getCssClassForMarker("end",d.currentEdgeStyle.shape,d.currentEdgeStyle[mxConstants.STYLE_ENDARROW],mxUtils.getValue(d.currentEdgeStyle,"endFill","1"))))}));null!=this.toolbar&&(a=mxUtils.bind(this,function(){var a=d.currentVertexStyle.fontFamily||"Helvetica",c=String(d.currentVertexStyle.fontSize||"12"),b=d.getView().getState(d.getSelectionCell());null!=b&&(a=b.style[mxConstants.STYLE_FONTFAMILY]||a,c=b.style[mxConstants.STYLE_FONTSIZE]||c,10<a.length&&(a=a.substring(0,8)+"..."));this.toolbar.setFontName(a); -this.toolbar.setFontSize(c)}),d.getSelectionModel().addListener(mxEvent.CHANGE,a),d.getModel().addListener(mxEvent.CHANGE,a));d.addListener(mxEvent.CELLS_ADDED,function(a,c){var b=c.getProperty("cells"),h=c.getProperty("parent");d.getModel().isLayer(h)&&!d.isCellVisible(h)&&null!=b&&0<b.length&&d.getModel().setVisible(h,!0)});this.gestureHandler=mxUtils.bind(this,function(a){null!=this.currentMenu&&mxEvent.getSource(a)!=this.currentMenu.div&&this.hideCurrentMenu()});mxEvent.addGestureListeners(document, -this.gestureHandler);this.resizeHandler=mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){null!=this.editor.graph&&this.refresh()}),0)});mxEvent.addListener(window,"resize",this.resizeHandler);this.orientationChangeHandler=mxUtils.bind(this,function(){this.refresh()});mxEvent.addListener(window,"orientationchange",this.orientationChangeHandler);mxClient.IS_IOS&&!window.navigator.standalone&&(this.scrollHandler=mxUtils.bind(this,function(){window.scrollTo(0,0)}),mxEvent.addListener(window, -"scroll",this.scrollHandler));this.editor.addListener("resetGraphView",mxUtils.bind(this,function(){this.resetScrollbars()}));this.addListener("gridEnabledChanged",mxUtils.bind(this,function(){d.view.validateBackground()}));this.addListener("backgroundColorChanged",mxUtils.bind(this,function(){d.view.validateBackground()}));d.addListener("gridSizeChanged",mxUtils.bind(this,function(){d.isGridEnabled()&&d.view.validateBackground()}));this.editor.resetGraph();this.init();this.open()}; -mxUtils.extend(EditorUi,mxEventSource);EditorUi.compactUi=!0;EditorUi.prototype.splitSize=mxClient.IS_TOUCH||mxClient.IS_POINTER?12:8;EditorUi.prototype.menubarHeight=30;EditorUi.prototype.formatEnabled=!0;EditorUi.prototype.formatWidth=240;EditorUi.prototype.toolbarHeight=34;EditorUi.prototype.footerHeight=28;EditorUi.prototype.sidebarFooterHeight=34;EditorUi.prototype.hsplitPosition=640>=screen.width?118:208;EditorUi.prototype.allowAnimation=!0;EditorUi.prototype.lightboxMaxFitScale=2; -EditorUi.prototype.lightboxVerticalDivider=4;EditorUi.prototype.hsplitClickEnabled=!1; +(a=c),c=b.getParent(c);return a}})();EditorUi=function(a,b,e){mxEventSource.call(this);this.destroyFunctions=[];this.editor=a||new Editor;this.container=b||document.body;var c=this.editor.graph;c.lightbox=e;c.useCssTransforms&&(this.lazyZoomDelay=0);mxClient.IS_SVG?mxPopupMenu.prototype.submenuImage="data:image/gif;base64,R0lGODlhCQAJAIAAAP///zMzMyH5BAEAAAAALAAAAAAJAAkAAAIPhI8WebHsHopSOVgb26AAADs=":(new Image).src=mxPopupMenu.prototype.submenuImage;mxClient.IS_SVG||null==mxConnectionHandler.prototype.connectImage||((new Image).src=mxConnectionHandler.prototype.connectImage.src); +this.editor.chromeless&&!this.editor.editable&&(this.footerHeight=0,c.isEnabled=function(){return!1},c.panningHandler.isForcePanningEvent=function(a){return!mxEvent.isPopupTrigger(a.getEvent())});this.actions=new Actions(this);this.menus=this.createMenus();this.createDivs();this.createUi();this.refresh();var k=mxUtils.bind(this,function(a){null==a&&(a=window.event);return c.isEditing()||null!=a&&this.isSelectionAllowed(a)});this.container==document.body&&(this.menubarContainer.onselectstart=k,this.menubarContainer.onmousedown= +k,this.toolbarContainer.onselectstart=k,this.toolbarContainer.onmousedown=k,this.diagramContainer.onselectstart=k,this.diagramContainer.onmousedown=k,this.sidebarContainer.onselectstart=k,this.sidebarContainer.onmousedown=k,this.formatContainer.onselectstart=k,this.formatContainer.onmousedown=k,this.footerContainer.onselectstart=k,this.footerContainer.onmousedown=k,null!=this.tabContainer&&(this.tabContainer.onselectstart=k));!this.editor.chromeless||this.editor.editable?(b=function(a){if(null!=a){var d= +mxEvent.getSource(a);if("A"==d.nodeName)for(;null!=d;){if("geHint"==d.className)return!0;d=d.parentNode}}return k(a)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,"contextmenu",b):this.diagramContainer.oncontextmenu=b):c.panningHandler.usePopupTrigger=!1;c.init(this.diagramContainer);mxClient.IS_SVG&&null!=c.view.getDrawPane()&&(b=c.view.getDrawPane().ownerSVGElement,null!=b&&(b.style.position="absolute"));this.hoverIcons= +this.createHoverIcons();mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(a){var d=mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(a)-d.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(a)-d.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var m=!1,q=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(a,d){return m||q.apply(this, +arguments)};this.keydownHandler=mxUtils.bind(this,function(a){32==a.which?(m=!0,this.hoverIcons.reset(),c.container.style.cursor="move",c.isEditing()||mxEvent.getSource(a)!=c.container||mxEvent.consume(a)):mxEvent.isConsumed(a)||27!=a.keyCode||this.hideDialog(null,!0)});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(a){c.container.style.cursor="";m=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var r=c.panningHandler.isForcePanningEvent; +c.panningHandler.isForcePanningEvent=function(a){return r.apply(this,arguments)||m||mxEvent.isMouseEvent(a.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(a.getEvent()))&&(!mxEvent.isControlDown(a.getEvent())&&mxEvent.isRightMouseButton(a.getEvent())||mxEvent.isMiddleMouseButton(a.getEvent()))};var v=c.cellEditor.isStopEditingEvent;c.cellEditor.isStopEditingEvent=function(a){return v.apply(this,arguments)||13==a.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a)|| +mxClient.IS_SF&&mxEvent.isShiftDown(a))};var z=!1,d=null,f=null,l=null,n=mxUtils.bind(this,function(){if(null!=this.toolbar&&z!=c.cellEditor.isContentEditing()){for(var a=this.toolbar.container.firstChild,b=[];null!=a;){var e=a.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,a)&&(a.parentNode.removeChild(a),b.push(a));a=e}a=this.toolbar.fontMenu;e=this.toolbar.sizeMenu;if(null==l)this.toolbar.createTextToolbar();else{for(var g=0;g<l.length;g++)this.toolbar.container.appendChild(l[g]);this.toolbar.fontMenu= +d;this.toolbar.sizeMenu=f}z=c.cellEditor.isContentEditing();d=a;f=e;l=b}}),g=this,p=c.cellEditor.startEditing;c.cellEditor.startEditing=function(){p.apply(this,arguments);n();if(c.cellEditor.isContentEditing()){var a=!1,d=function(){a||(a=!0,window.setTimeout(function(){for(var d=c.getSelectedElement();null!=d&&d.nodeType!=mxConstants.NODETYPE_ELEMENT;)d=d.parentNode;if(null!=d&&(d=mxUtils.getCurrentStyle(d),null!=d&&null!=g.toolbar)){var b=d.fontFamily;"'"==b.charAt(0)&&(b=b.substring(1));"'"==b.charAt(b.length- +1)&&(b=b.substring(0,b.length-1));g.toolbar.setFontName(b);g.toolbar.setFontSize(parseInt(d.fontSize))}a=!1},0))};mxEvent.addListener(c.cellEditor.textarea,"input",d);mxEvent.addListener(c.cellEditor.textarea,"touchend",d);mxEvent.addListener(c.cellEditor.textarea,"mouseup",d);mxEvent.addListener(c.cellEditor.textarea,"keyup",d);d()}};var B=c.cellEditor.stopEditing;c.cellEditor.stopEditing=function(a,d){B.apply(this,arguments);n()};c.container.setAttribute("tabindex","0");c.container.style.cursor= +"default";if(window.self===window.top&&null!=c.container.parentNode)try{c.container.focus()}catch(S){}var x=c.fireMouseEvent;c.fireMouseEvent=function(a,d,b){a==mxEvent.MOUSE_DOWN&&this.container.focus();x.apply(this,arguments)};c.popupMenuHandler.autoExpand=!0;null!=this.menus&&(c.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a,d,b){this.menus.createPopupMenu(a,d,b)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(a){c.popupMenuHandler.hideMenu()}));this.keyHandler= +this.createKeyHandler(a);this.getKeyHandler=function(){return keyHandler};var t="rounded shadow glass dashed dashPattern comic labelBackgroundColor".split(" "),y="shape edgeStyle curved rounded elbow comic jumpStyle jumpSize".split(" ");this.setDefaultStyle=function(a){var d=c.view.getState(a);if(null!=d){a=a.clone();a.style="";a=c.getCellStyle(a);var b=[],f=[],e;for(e in d.style)a[e]!=d.style[e]&&(b.push(d.style[e]),f.push(e));e=c.getModel().getStyle(d.cell);for(var g=null!=e?e.split(";"):[],l=0;l< +g.length;l++){var n=g[l],p=n.indexOf("=");0<=p&&(e=n.substring(0,p),n=n.substring(p+1),null!=a[e]&&"none"==n&&(b.push(n),f.push(e)))}c.getModel().isEdge(d.cell)?c.currentEdgeStyle={}:c.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",f,"values",b,"cells",[d.cell]))}};this.clearDefaultStyle=function(){c.currentEdgeStyle=mxUtils.clone(c.defaultEdgeStyle);c.currentVertexStyle=mxUtils.clone(c.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values", +[],"cells",[]))};var u=["fontFamily","fontSize","fontColor"],A="edgeStyle startArrow startFill startSize endArrow endFill endSize jettySize orthogonalLoop".split(" "),D=["startArrow startFill startSize sourcePerimeterSpacing endArrow endFill endSize targetPerimeterSpacing jettySize orthogonalLoop".split(" "),["strokeColor","strokeWidth"],["fillColor","gradientColor"],u,["opacity"],["align"],["html"]];for(a=0;a<D.length;a++)for(b=0;b<D[a].length;b++)t.push(D[a][b]);for(a=0;a<y.length;a++)0>mxUtils.indexOf(t, +y[a])&&t.push(y[a]);var U=function(a,d){var b=c.getModel();b.beginUpdate();try{if(d)for(var f=b.isEdge(n),e=f?c.currentEdgeStyle:c.currentVertexStyle,f=["fontSize","fontFamily","fontColor"],g=0;g<f.length;g++){var l=e[f[g]];null!=l&&c.setCellStyles(f[g],l,a)}else for(l=0;l<a.length;l++){for(var n=a[l],p=b.getStyle(n),u=null!=p?p.split(";"):[],J=t.slice(),g=0;g<u.length;g++){var k=u[g],B=k.indexOf("=");if(0<=B){var A=k.substring(0,B),x=mxUtils.indexOf(J,A);0<=x&&J.splice(x,1);for(var r=0;r<D.length;r++){var m= +D[r];if(0<=mxUtils.indexOf(m,A))for(var q=0;q<m.length;q++){var S=mxUtils.indexOf(J,m[q]);0<=S&&J.splice(S,1)}}}}for(var e=(f=b.isEdge(n))?c.currentEdgeStyle:c.currentVertexStyle,U=b.getStyle(n),g=0;g<J.length;g++){var A=J[g],v=e[A];null==v||"shape"==A&&!f||f&&!(0>mxUtils.indexOf(y,A))||(U=mxUtils.setStyle(U,A,v))}b.setStyle(n,U)}}finally{b.endUpdate()}};c.addListener("cellsInserted",function(a,d){U(d.getProperty("cells"))});c.addListener("textInserted",function(a,d){U(d.getProperty("cells"),!0)}); +c.connectionHandler.addListener(mxEvent.CONNECT,function(a,d){var b=[d.getProperty("cell")];d.getProperty("terminalInserted")&&b.push(d.getProperty("terminal"));U(b)});this.addListener("styleChanged",mxUtils.bind(this,function(a,d){var b=d.getProperty("cells"),f=!1,e=!1;if(0<b.length)for(var g=0;g<b.length&&(f=c.getModel().isVertex(b[g])||f,!(e=c.getModel().isEdge(b[g])||e)||!f);g++);else e=f=!0;for(var b=d.getProperty("keys"),l=d.getProperty("values"),g=0;g<b.length;g++){var n=0<=mxUtils.indexOf(u, +b[g]);if("strokeColor"!=b[g]||null!=l[g]&&"none"!=l[g])if(0<=mxUtils.indexOf(y,b[g]))e||0<=mxUtils.indexOf(A,b[g])?null==l[g]?delete c.currentEdgeStyle[b[g]]:c.currentEdgeStyle[b[g]]=l[g]:f&&0<=mxUtils.indexOf(t,b[g])&&(null==l[g]?delete c.currentVertexStyle[b[g]]:c.currentVertexStyle[b[g]]=l[g]);else if(0<=mxUtils.indexOf(t,b[g])){if(f||n)null==l[g]?delete c.currentVertexStyle[b[g]]:c.currentVertexStyle[b[g]]=l[g];if(e||n||0<=mxUtils.indexOf(A,b[g]))null==l[g]?delete c.currentEdgeStyle[b[g]]:c.currentEdgeStyle[b[g]]= +l[g]}}null!=this.toolbar&&(this.toolbar.setFontName(c.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(c.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==c.currentEdgeStyle.edgeStyle&&"1"==c.currentEdgeStyle.curved?"geSprite geSprite-curved":"straight"==c.currentEdgeStyle.edgeStyle||"none"==c.currentEdgeStyle.edgeStyle||null== +c.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"==c.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==c.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==c.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==c.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==c.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):"geSprite geSprite-orthogonal"),null!=this.toolbar.edgeShapeMenu&& +(this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==c.currentEdgeStyle.shape?"geSprite geSprite-linkedge":"flexArrow"==c.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==c.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"),null!=this.toolbar.lineStartMenu&&(this.toolbar.lineStartMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("start",c.currentEdgeStyle.shape,c.currentEdgeStyle[mxConstants.STYLE_STARTARROW], +mxUtils.getValue(c.currentEdgeStyle,"startFill","1"))),null!=this.toolbar.lineEndMenu&&(this.toolbar.lineEndMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("end",c.currentEdgeStyle.shape,c.currentEdgeStyle[mxConstants.STYLE_ENDARROW],mxUtils.getValue(c.currentEdgeStyle,"endFill","1"))))}));null!=this.toolbar&&(a=mxUtils.bind(this,function(){var a=c.currentVertexStyle.fontFamily||"Helvetica",d=String(c.currentVertexStyle.fontSize||"12"),b=c.getView().getState(c.getSelectionCell()); +null!=b&&(a=b.style[mxConstants.STYLE_FONTFAMILY]||a,d=b.style[mxConstants.STYLE_FONTSIZE]||d,10<a.length&&(a=a.substring(0,8)+"..."));this.toolbar.setFontName(a);this.toolbar.setFontSize(d)}),c.getSelectionModel().addListener(mxEvent.CHANGE,a),c.getModel().addListener(mxEvent.CHANGE,a));c.addListener(mxEvent.CELLS_ADDED,function(a,d){var b=d.getProperty("cells"),f=d.getProperty("parent");c.getModel().isLayer(f)&&!c.isCellVisible(f)&&null!=b&&0<b.length&&c.getModel().setVisible(f,!0)});this.gestureHandler= +mxUtils.bind(this,function(a){null!=this.currentMenu&&mxEvent.getSource(a)!=this.currentMenu.div&&this.hideCurrentMenu()});mxEvent.addGestureListeners(document,this.gestureHandler);this.resizeHandler=mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){null!=this.editor.graph&&this.refresh()}),0)});mxEvent.addListener(window,"resize",this.resizeHandler);this.orientationChangeHandler=mxUtils.bind(this,function(){this.refresh()});mxEvent.addListener(window,"orientationchange", +this.orientationChangeHandler);mxClient.IS_IOS&&!window.navigator.standalone&&(this.scrollHandler=mxUtils.bind(this,function(){window.scrollTo(0,0)}),mxEvent.addListener(window,"scroll",this.scrollHandler));this.editor.addListener("resetGraphView",mxUtils.bind(this,function(){this.resetScrollbars()}));this.addListener("gridEnabledChanged",mxUtils.bind(this,function(){c.view.validateBackground()}));this.addListener("backgroundColorChanged",mxUtils.bind(this,function(){c.view.validateBackground()})); +c.addListener("gridSizeChanged",mxUtils.bind(this,function(){c.isGridEnabled()&&c.view.validateBackground()}));this.editor.resetGraph();this.init();this.open()};mxUtils.extend(EditorUi,mxEventSource);EditorUi.compactUi=!0;EditorUi.prototype.splitSize=mxClient.IS_TOUCH||mxClient.IS_POINTER?12:8;EditorUi.prototype.menubarHeight=30;EditorUi.prototype.formatEnabled=!0;EditorUi.prototype.formatWidth=240;EditorUi.prototype.toolbarHeight=34;EditorUi.prototype.footerHeight=28; +EditorUi.prototype.sidebarFooterHeight=34;EditorUi.prototype.hsplitPosition=640>=screen.width?118:208;EditorUi.prototype.allowAnimation=!0;EditorUi.prototype.lightboxMaxFitScale=2;EditorUi.prototype.lightboxVerticalDivider=4;EditorUi.prototype.hsplitClickEnabled=!1; EditorUi.prototype.init=function(){var a=this.editor.graph;mxEvent.addListener(a.container,"keydown",mxUtils.bind(this,function(a){this.onKeyDown(a)}));mxEvent.addListener(a.container,"keypress",mxUtils.bind(this,function(a){this.onKeyPress(a)}));this.addUndoListener();this.addBeforeUnloadListener();a.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.updateActionStates()}));a.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.updateActionStates()})); -var b=a.setDefaultParent,f=this;this.editor.graph.setDefaultParent=function(){b.apply(this,arguments);f.updateActionStates()};a.editLink=f.actions.get("editLink").funct;this.updateActionStates();this.initClipboard();this.initCanvas();null!=this.format&&this.format.init()};EditorUi.prototype.onKeyDown=function(a){var b=this.editor.graph;9==a.which&&b.isEnabled()&&!mxEvent.isAltDown(a)&&(b.isEditing()?b.stopEditing(!1):b.selectCell(!mxEvent.isShiftDown(a)),mxEvent.consume(a))}; +var b=a.setDefaultParent,e=this;this.editor.graph.setDefaultParent=function(){b.apply(this,arguments);e.updateActionStates()};a.editLink=e.actions.get("editLink").funct;this.updateActionStates();this.initClipboard();this.initCanvas();null!=this.format&&this.format.init()};EditorUi.prototype.onKeyDown=function(a){var b=this.editor.graph;9==a.which&&b.isEnabled()&&!mxEvent.isAltDown(a)&&(b.isEditing()?b.stopEditing(!1):b.selectCell(!mxEvent.isShiftDown(a)),mxEvent.consume(a))}; EditorUi.prototype.onKeyPress=function(a){var b=this.editor.graph;!this.isImmediateEditingEvent(a)||b.isEditing()||b.isSelectionEmpty()||0===a.which||mxEvent.isAltDown(a)||mxEvent.isControlDown(a)||mxEvent.isMetaDown(a)||(b.escape(),b.startEditing(),mxClient.IS_FF&&(b=b.cellEditor,b.textarea.innerHTML=String.fromCharCode(a.which),a=document.createRange(),a.selectNodeContents(b.textarea),a.collapse(!1),b=window.getSelection(),b.removeAllRanges(),b.addRange(a)))}; EditorUi.prototype.isImmediateEditingEvent=function(a){return!0}; -EditorUi.prototype.getCssClassForMarker=function(a,b,f,d){return"flexArrow"==b?null!=f&&f!=mxConstants.NONE?"geSprite geSprite-"+a+"blocktrans":"geSprite geSprite-noarrow":f==mxConstants.ARROW_CLASSIC?"1"==d?"geSprite geSprite-"+a+"classic":"geSprite geSprite-"+a+"classictrans":f==mxConstants.ARROW_CLASSIC_THIN?"1"==d?"geSprite geSprite-"+a+"classicthin":"geSprite geSprite-"+a+"classicthintrans":f==mxConstants.ARROW_OPEN?"geSprite geSprite-"+a+"open":f==mxConstants.ARROW_OPEN_THIN?"geSprite geSprite-"+ -a+"openthin":f==mxConstants.ARROW_BLOCK?"1"==d?"geSprite geSprite-"+a+"block":"geSprite geSprite-"+a+"blocktrans":f==mxConstants.ARROW_BLOCK_THIN?"1"==d?"geSprite geSprite-"+a+"blockthin":"geSprite geSprite-"+a+"blockthintrans":f==mxConstants.ARROW_OVAL?"1"==d?"geSprite geSprite-"+a+"oval":"geSprite geSprite-"+a+"ovaltrans":f==mxConstants.ARROW_DIAMOND?"1"==d?"geSprite geSprite-"+a+"diamond":"geSprite geSprite-"+a+"diamondtrans":f==mxConstants.ARROW_DIAMOND_THIN?"1"==d?"geSprite geSprite-"+a+"thindiamond": -"geSprite geSprite-"+a+"thindiamondtrans":"openAsync"==f?"geSprite geSprite-"+a+"openasync":"dash"==f?"geSprite geSprite-"+a+"dash":"cross"==f?"geSprite geSprite-"+a+"cross":"async"==f?"1"==d?"geSprite geSprite-"+a+"async":"geSprite geSprite-"+a+"asynctrans":"circle"==f||"circlePlus"==f?"1"==d||"circle"==f?"geSprite geSprite-"+a+"circle":"geSprite geSprite-"+a+"circleplus":"ERone"==f?"geSprite geSprite-"+a+"erone":"ERmandOne"==f?"geSprite geSprite-"+a+"eronetoone":"ERmany"==f?"geSprite geSprite-"+ -a+"ermany":"ERoneToMany"==f?"geSprite geSprite-"+a+"eronetomany":"ERzeroToOne"==f?"geSprite geSprite-"+a+"eroneopt":"ERzeroToMany"==f?"geSprite geSprite-"+a+"ermanyopt":"geSprite geSprite-noarrow"};EditorUi.prototype.createMenus=function(){return null}; -EditorUi.prototype.updatePasteActionStates=function(){var a=this.editor.graph,b=this.actions.get("paste"),f=this.actions.get("pasteHere");b.setEnabled(this.editor.graph.cellEditor.isContentEditing()||!mxClipboard.isEmpty()&&a.isEnabled()&&!a.isCellLocked(a.getDefaultParent()));f.setEnabled(b.isEnabled())}; -EditorUi.prototype.initClipboard=function(){var a=this,b=mxClipboard.cut;mxClipboard.cut=function(d){d.cellEditor.isContentEditing()?document.execCommand("cut",!1,null):b.apply(this,arguments);a.updatePasteActionStates()};var f=mxClipboard.copy;mxClipboard.copy=function(b){b.cellEditor.isContentEditing()?document.execCommand("copy",!1,null):f.apply(this,arguments);a.updatePasteActionStates()};var d=mxClipboard.paste;mxClipboard.paste=function(b){var f=null;b.cellEditor.isContentEditing()?document.execCommand("paste", -!1,null):f=d.apply(this,arguments);a.updatePasteActionStates();return f};var k=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){k.apply(this,arguments);a.updatePasteActionStates()};var n=this.editor.graph.cellEditor.stopEditing;this.editor.graph.cellEditor.stopEditing=function(b,d){n.apply(this,arguments);a.updatePasteActionStates()};this.updatePasteActionStates()};EditorUi.prototype.lazyZoomDelay=20; -EditorUi.prototype.initCanvas=function(){var a=this.editor.graph;a.timerAutoScroll=!0;a.getPagePadding=function(){return new mxPoint(Math.max(0,Math.round((a.container.offsetWidth-34)/a.view.scale)),Math.max(0,Math.round((a.container.offsetHeight-34)/a.view.scale)))};a.view.getBackgroundPageBounds=function(){var a=this.graph.getPageLayout(),c=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+a.x*c.width),this.scale*(this.translate.y+a.y*c.height),this.scale*a.width*c.width, -this.scale*a.height*c.height)};a.getPreferredPageSize=function(a,c,b){a=this.getPageLayout();c=this.getPageSize();return new mxRectangle(0,0,a.width*c.width,a.height*c.height)};var b=null,f=this;if(this.editor.isChromelessView()){this.chromelessResize=b=mxUtils.bind(this,function(c,b,d,h){if(null!=a.container){d=null!=d?d:0;h=null!=h?h:0;var g=a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds(),f=mxUtils.hasScrollbars(a.container),l=a.view.translate,m=a.view.scale,t=mxRectangle.fromRectangle(g); -t.x=t.x/m-l.x;t.y=t.y/m-l.y;t.width/=m;t.height/=m;var l=a.container.scrollTop,r=a.container.scrollLeft,u=mxClient.IS_QUIRKS||8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)u+=3;var y=a.container.offsetWidth-u,u=a.container.offsetHeight-u;c=c?Math.max(.3,Math.min(b||1,y/t.width)):m;b=(y-c*t.width)/2/c;var J=0==this.lightboxVerticalDivider?0:(u-c*t.height)/this.lightboxVerticalDivider/c;f&&(b=Math.max(b,0),J=Math.max(J,0));if(f||g.width<y||g.height<u)a.view.scaleAndTranslate(c, -Math.floor(b-t.x),Math.floor(J-t.y)),a.container.scrollTop=l*c/m,a.container.scrollLeft=r*c/m;else if(0!=d||0!=h)g=a.view.translate,a.view.setTranslate(Math.floor(g.x+d/m),Math.floor(g.y+h/m))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var d=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",d);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",d)});this.editor.addListener("resetGraphView", -mxUtils.bind(this,function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(c){a.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(c){a.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){this.chromelessToolbar=document.createElement("div");this.chromelessToolbar.style.position="fixed";this.chromelessToolbar.style.overflow="hidden";this.chromelessToolbar.style.boxSizing="border-box";this.chromelessToolbar.style.whiteSpace= -"nowrap";this.chromelessToolbar.style.backgroundColor="#000000";this.chromelessToolbar.style.padding="10px 10px 8px 10px";this.chromelessToolbar.style.left="50%";mxClient.IS_VML||(mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"borderRadius","20px"),mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transition","opacity 600ms ease-in-out"));var k=mxUtils.bind(this,function(){var c=mxUtils.getCurrentStyle(a.container);this.chromelessToolbar.style.bottom=(null!=c?parseInt(c["margin-bottom"]|| -0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",k);k();var n=0,k=mxUtils.bind(this,function(a,c,b){n++;var d=document.createElement("span");d.style.paddingLeft="8px";d.style.paddingRight="8px";d.style.cursor="pointer";mxEvent.addListener(d,"click",a);null!=b&&d.setAttribute("title",b);a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("src",c);d.appendChild(a);this.chromelessToolbar.appendChild(d); -return d}),p=k(mxUtils.bind(this,function(a){this.actions.get("previousPage").funct();mxEvent.consume(a)}),Editor.previousLargeImage,mxResources.get("previousPage")),q=document.createElement("div");q.style.display="inline-block";q.style.verticalAlign="top";q.style.fontFamily="Helvetica,Arial";q.style.marginTop="8px";q.style.fontSize="14px";q.style.color="#ffffff";this.chromelessToolbar.appendChild(q);var w=k(mxUtils.bind(this,function(a){this.actions.get("nextPage").funct();mxEvent.consume(a)}),Editor.nextLargeImage, -mxResources.get("nextPage")),c=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(q.innerHTML="",mxUtils.write(q,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});p.style.paddingLeft="0px";p.style.paddingRight="4px";w.style.paddingLeft="4px";w.style.paddingRight="0px";var g=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(w.style.display="",p.style.display="",q.style.display="inline-block"): -(w.style.display="none",p.style.display="none",q.style.display="none");c()});this.editor.addListener("resetGraphView",g);this.editor.addListener("pageSelected",c);k(mxUtils.bind(this,function(a){this.actions.get("zoomOut").funct();mxEvent.consume(a)}),Editor.zoomOutLargeImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");k(mxUtils.bind(this,function(a){this.actions.get("zoomIn").funct();mxEvent.consume(a)}),Editor.zoomInLargeImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");k(mxUtils.bind(this, -function(c){a.isLightboxView()?(1==a.view.scale?this.lightboxFit():a.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(c)}),Editor.actualSizeLargeImage,mxResources.get("fit"));var h=null,l=null,t=mxUtils.bind(this,function(a){null!=h&&(window.clearTimeout(h),fadeThead=null);null!=l&&(window.clearTimeout(l),fadeThead2=null);h=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,0);h=null;l=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display= -"none";l=null}),600)}),a||200)}),m=mxUtils.bind(this,function(a){null!=h&&(window.clearTimeout(h),fadeThead=null);null!=l&&(window.clearTimeout(l),fadeThead2=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,a||30)});if("1"==urlParams.layers){this.layersDialog=null;var r=k(mxUtils.bind(this,function(c){if(null!=this.layersDialog)this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null;else{this.layersDialog=a.createLayersDialog();mxEvent.addListener(this.layersDialog, -"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog=null}));var b=r.getBoundingClientRect();mxUtils.setPrefixedStyle(this.layersDialog.style,"borderRadius","5px");this.layersDialog.style.position="fixed";this.layersDialog.style.fontFamily="Helvetica,Arial";this.layersDialog.style.backgroundColor="#000000";this.layersDialog.style.width="160px";this.layersDialog.style.padding="4px 2px 4px 2px";this.layersDialog.style.color="#ffffff"; -mxUtils.setOpacity(this.layersDialog,70);this.layersDialog.style.left=b.left+"px";this.layersDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";b=mxUtils.getCurrentStyle(this.editor.graph.container);this.layersDialog.style.zIndex=b.zIndex;document.body.appendChild(this.layersDialog)}mxEvent.consume(c)}),Editor.layersLargeImage,mxResources.get("layers")),x=a.getModel();x.addListener(mxEvent.CHANGE,function(){r.style.display=1<x.getChildCount(x.root)? -"":"none"})}this.addChromelessToolbarItems(k);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||k(mxUtils.bind(this,function(c){null!=this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):a.openLink(this.editor.editButtonLink,"editWindow");mxEvent.consume(c)}),Editor.editLargeImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(g=0;g<this.lightboxToolbarActions.length;g++){var v= -this.lightboxToolbarActions[g];k(v.fn,v.icon,v.tooltip)}!a.lightbox||"1"!=urlParams.close&&this.container==document.body||k(mxUtils.bind(this,function(a){"1"==urlParams.close?window.close():(this.destroy(),mxEvent.consume(a))}),Editor.closeLargeImage,mxResources.get("close")+" (Escape)");this.chromelessToolbar.style.display="none";mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transform","translate(-50%,0)");a.container.appendChild(this.chromelessToolbar);mxEvent.addListener(a.container,mxClient.IS_POINTER? -"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||(mxEvent.isShiftDown(a)||m(30),t())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?t():m(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?t():m(100);mxEvent.consume(a)})); -mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||m(30)}));var D=a.getTolerance();a.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(c,b){this.startX=b.getGraphX();this.startY=b.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(a,c){},mouseUp:function(c,b){mxEvent.isTouchEvent(b.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<D&&Math.abs(this.scrollTop- -a.container.scrollTop)<D&&Math.abs(this.startX-b.getGraphX())<D&&Math.abs(this.startY-b.getGraphY())<D&&(0<parseFloat(f.chromelessToolbar.style.opacity||0)?t():m(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var y=a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var a=this.graph.getPagePadding(),c=this.graph.getPageSize();this.translate.x=a.x-(this.x0||0)*c.width;this.translate.y= -a.y-(this.y0||0)*c.height}y.apply(this,arguments)};var u=a.sizeDidChange;a.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var c=this.getPageLayout(),b=this.getPagePadding(),d=this.getPageSize(),h=Math.ceil(2*b.x+c.width*d.width),g=Math.ceil(2*b.y+c.height*d.height),f=a.minimumGraphSize;if(null==f||f.width!=h||f.height!=g)a.minimumGraphSize=new mxRectangle(0,0,h,g);h=b.x-c.x*d.width;b=b.y-c.y*d.height;this.autoTranslate||this.view.translate.x==h&&this.view.translate.y== -b?u.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=c.x,this.view.y0=c.y,c=a.view.translate.x,d=a.view.translate.y,a.view.setTranslate(h,b),a.container.scrollLeft+=Math.round((h-c)*a.view.scale),a.container.scrollTop+=Math.round((b-d)*a.view.scale),this.autoTranslate=!1)}}}a.updateZoomTimeout=null;a.cumulativeZoomFactor=1;var A=null;a.lazyZoom=function(c){null!=this.updateZoomTimeout&&window.clearTimeout(this.updateZoomTimeout);c?.15>this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor= +EditorUi.prototype.getCssClassForMarker=function(a,b,e,c){return"flexArrow"==b?null!=e&&e!=mxConstants.NONE?"geSprite geSprite-"+a+"blocktrans":"geSprite geSprite-noarrow":e==mxConstants.ARROW_CLASSIC?"1"==c?"geSprite geSprite-"+a+"classic":"geSprite geSprite-"+a+"classictrans":e==mxConstants.ARROW_CLASSIC_THIN?"1"==c?"geSprite geSprite-"+a+"classicthin":"geSprite geSprite-"+a+"classicthintrans":e==mxConstants.ARROW_OPEN?"geSprite geSprite-"+a+"open":e==mxConstants.ARROW_OPEN_THIN?"geSprite geSprite-"+ +a+"openthin":e==mxConstants.ARROW_BLOCK?"1"==c?"geSprite geSprite-"+a+"block":"geSprite geSprite-"+a+"blocktrans":e==mxConstants.ARROW_BLOCK_THIN?"1"==c?"geSprite geSprite-"+a+"blockthin":"geSprite geSprite-"+a+"blockthintrans":e==mxConstants.ARROW_OVAL?"1"==c?"geSprite geSprite-"+a+"oval":"geSprite geSprite-"+a+"ovaltrans":e==mxConstants.ARROW_DIAMOND?"1"==c?"geSprite geSprite-"+a+"diamond":"geSprite geSprite-"+a+"diamondtrans":e==mxConstants.ARROW_DIAMOND_THIN?"1"==c?"geSprite geSprite-"+a+"thindiamond": +"geSprite geSprite-"+a+"thindiamondtrans":"openAsync"==e?"geSprite geSprite-"+a+"openasync":"dash"==e?"geSprite geSprite-"+a+"dash":"cross"==e?"geSprite geSprite-"+a+"cross":"async"==e?"1"==c?"geSprite geSprite-"+a+"async":"geSprite geSprite-"+a+"asynctrans":"circle"==e||"circlePlus"==e?"1"==c||"circle"==e?"geSprite geSprite-"+a+"circle":"geSprite geSprite-"+a+"circleplus":"ERone"==e?"geSprite geSprite-"+a+"erone":"ERmandOne"==e?"geSprite geSprite-"+a+"eronetoone":"ERmany"==e?"geSprite geSprite-"+ +a+"ermany":"ERoneToMany"==e?"geSprite geSprite-"+a+"eronetomany":"ERzeroToOne"==e?"geSprite geSprite-"+a+"eroneopt":"ERzeroToMany"==e?"geSprite geSprite-"+a+"ermanyopt":"geSprite geSprite-noarrow"};EditorUi.prototype.createMenus=function(){return null}; +EditorUi.prototype.updatePasteActionStates=function(){var a=this.editor.graph,b=this.actions.get("paste"),e=this.actions.get("pasteHere");b.setEnabled(this.editor.graph.cellEditor.isContentEditing()||!mxClipboard.isEmpty()&&a.isEnabled()&&!a.isCellLocked(a.getDefaultParent()));e.setEnabled(b.isEnabled())}; +EditorUi.prototype.initClipboard=function(){var a=this,b=mxClipboard.cut;mxClipboard.cut=function(c){c.cellEditor.isContentEditing()?document.execCommand("cut",!1,null):b.apply(this,arguments);a.updatePasteActionStates()};var e=mxClipboard.copy;mxClipboard.copy=function(b){b.cellEditor.isContentEditing()?document.execCommand("copy",!1,null):e.apply(this,arguments);a.updatePasteActionStates()};var c=mxClipboard.paste;mxClipboard.paste=function(b){var e=null;b.cellEditor.isContentEditing()?document.execCommand("paste", +!1,null):e=c.apply(this,arguments);a.updatePasteActionStates();return e};var k=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){k.apply(this,arguments);a.updatePasteActionStates()};var m=this.editor.graph.cellEditor.stopEditing;this.editor.graph.cellEditor.stopEditing=function(b,c){m.apply(this,arguments);a.updatePasteActionStates()};this.updatePasteActionStates()};EditorUi.prototype.lazyZoomDelay=20; +EditorUi.prototype.initCanvas=function(){var a=this.editor.graph;a.timerAutoScroll=!0;a.getPagePadding=function(){return new mxPoint(Math.max(0,Math.round((a.container.offsetWidth-34)/a.view.scale)),Math.max(0,Math.round((a.container.offsetHeight-34)/a.view.scale)))};a.view.getBackgroundPageBounds=function(){var a=this.graph.getPageLayout(),d=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+a.x*d.width),this.scale*(this.translate.y+a.y*d.height),this.scale*a.width*d.width, +this.scale*a.height*d.height)};a.getPreferredPageSize=function(a,d,b){a=this.getPageLayout();d=this.getPageSize();return new mxRectangle(0,0,a.width*d.width,a.height*d.height)};var b=null,e=this;if(this.editor.isChromelessView()){this.chromelessResize=b=mxUtils.bind(this,function(d,b,f,c){if(null!=a.container){f=null!=f?f:0;c=null!=c?c:0;var g=a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds(),e=mxUtils.hasScrollbars(a.container),l=a.view.translate,n=a.view.scale,p=mxRectangle.fromRectangle(g); +p.x=p.x/n-l.x;p.y=p.y/n-l.y;p.width/=n;p.height/=n;var l=a.container.scrollTop,u=a.container.scrollLeft,y=mxClient.IS_QUIRKS||8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)y+=3;var t=a.container.offsetWidth-y,y=a.container.offsetHeight-y;d=d?Math.max(.3,Math.min(b||1,t/p.width)):n;b=(t-d*p.width)/2/d;var J=0==this.lightboxVerticalDivider?0:(y-d*p.height)/this.lightboxVerticalDivider/d;e&&(b=Math.max(b,0),J=Math.max(J,0));if(e||g.width<t||g.height<y)a.view.scaleAndTranslate(d, +Math.floor(b-p.x),Math.floor(J-p.y)),a.container.scrollTop=l*d/n,a.container.scrollLeft=u*d/n;else if(0!=f||0!=c)g=a.view.translate,a.view.setTranslate(Math.floor(g.x+f/n),Math.floor(g.y+c/n))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var c=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",c);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",c)});this.editor.addListener("resetGraphView", +mxUtils.bind(this,function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(d){a.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(d){a.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){this.chromelessToolbar=document.createElement("div");this.chromelessToolbar.style.position="fixed";this.chromelessToolbar.style.overflow="hidden";this.chromelessToolbar.style.boxSizing="border-box";this.chromelessToolbar.style.whiteSpace= +"nowrap";this.chromelessToolbar.style.backgroundColor="#000000";this.chromelessToolbar.style.padding="10px 10px 8px 10px";this.chromelessToolbar.style.left="50%";mxClient.IS_VML||(mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"borderRadius","20px"),mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transition","opacity 600ms ease-in-out"));var k=mxUtils.bind(this,function(){var d=mxUtils.getCurrentStyle(a.container);this.chromelessToolbar.style.bottom=(null!=d?parseInt(d["margin-bottom"]|| +0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",k);k();var m=0,k=mxUtils.bind(this,function(a,d,b){m++;var f=document.createElement("span");f.style.paddingLeft="8px";f.style.paddingRight="8px";f.style.cursor="pointer";mxEvent.addListener(f,"click",a);null!=b&&f.setAttribute("title",b);a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("src",d);f.appendChild(a);this.chromelessToolbar.appendChild(f); +return f}),q=k(mxUtils.bind(this,function(a){this.actions.get("previousPage").funct();mxEvent.consume(a)}),Editor.previousLargeImage,mxResources.get("previousPage")),r=document.createElement("div");r.style.display="inline-block";r.style.verticalAlign="top";r.style.fontFamily="Helvetica,Arial";r.style.marginTop="8px";r.style.fontSize="14px";r.style.color="#ffffff";this.chromelessToolbar.appendChild(r);var v=k(mxUtils.bind(this,function(a){this.actions.get("nextPage").funct();mxEvent.consume(a)}),Editor.nextLargeImage, +mxResources.get("nextPage")),z=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(r.innerHTML="",mxUtils.write(r,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});q.style.paddingLeft="0px";q.style.paddingRight="4px";v.style.paddingLeft="4px";v.style.paddingRight="0px";var d=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(v.style.display="",q.style.display="",r.style.display="inline-block"): +(v.style.display="none",q.style.display="none",r.style.display="none");z()});this.editor.addListener("resetGraphView",d);this.editor.addListener("pageSelected",z);k(mxUtils.bind(this,function(a){this.actions.get("zoomOut").funct();mxEvent.consume(a)}),Editor.zoomOutLargeImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");k(mxUtils.bind(this,function(a){this.actions.get("zoomIn").funct();mxEvent.consume(a)}),Editor.zoomInLargeImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");k(mxUtils.bind(this, +function(d){a.isLightboxView()?(1==a.view.scale?this.lightboxFit():a.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(d)}),Editor.actualSizeLargeImage,mxResources.get("fit"));var f=null,l=null,n=mxUtils.bind(this,function(a){null!=f&&(window.clearTimeout(f),fadeThead=null);null!=l&&(window.clearTimeout(l),fadeThead2=null);f=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,0);f=null;l=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display= +"none";l=null}),600)}),a||200)}),g=mxUtils.bind(this,function(a){null!=f&&(window.clearTimeout(f),fadeThead=null);null!=l&&(window.clearTimeout(l),fadeThead2=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,a||30)});if("1"==urlParams.layers){this.layersDialog=null;var p=k(mxUtils.bind(this,function(d){if(null!=this.layersDialog)this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null;else{this.layersDialog=a.createLayersDialog();mxEvent.addListener(this.layersDialog, +"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog=null}));var b=p.getBoundingClientRect();mxUtils.setPrefixedStyle(this.layersDialog.style,"borderRadius","5px");this.layersDialog.style.position="fixed";this.layersDialog.style.fontFamily="Helvetica,Arial";this.layersDialog.style.backgroundColor="#000000";this.layersDialog.style.width="160px";this.layersDialog.style.padding="4px 2px 4px 2px";this.layersDialog.style.color="#ffffff"; +mxUtils.setOpacity(this.layersDialog,70);this.layersDialog.style.left=b.left+"px";this.layersDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";b=mxUtils.getCurrentStyle(this.editor.graph.container);this.layersDialog.style.zIndex=b.zIndex;document.body.appendChild(this.layersDialog)}mxEvent.consume(d)}),Editor.layersLargeImage,mxResources.get("layers")),B=a.getModel();B.addListener(mxEvent.CHANGE,function(){p.style.display=1<B.getChildCount(B.root)? +"":"none"})}this.addChromelessToolbarItems(k);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||k(mxUtils.bind(this,function(d){null!=this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):a.openLink(this.editor.editButtonLink,"editWindow");mxEvent.consume(d)}),Editor.editLargeImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(d=0;d<this.lightboxToolbarActions.length;d++){var x= +this.lightboxToolbarActions[d];k(x.fn,x.icon,x.tooltip)}!a.lightbox||"1"!=urlParams.close&&this.container==document.body||k(mxUtils.bind(this,function(a){"1"==urlParams.close?window.close():(this.destroy(),mxEvent.consume(a))}),Editor.closeLargeImage,mxResources.get("close")+" (Escape)");this.chromelessToolbar.style.display="none";mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transform","translate(-50%,0)");a.container.appendChild(this.chromelessToolbar);mxEvent.addListener(a.container,mxClient.IS_POINTER? +"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||(mxEvent.isShiftDown(a)||g(30),n())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?n():g(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?n():g(100);mxEvent.consume(a)})); +mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||g(30)}));var t=a.getTolerance();a.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(d,b){this.startX=b.getGraphX();this.startY=b.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(a,d){},mouseUp:function(d,b){mxEvent.isTouchEvent(b.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<t&&Math.abs(this.scrollTop- +a.container.scrollTop)<t&&Math.abs(this.startX-b.getGraphX())<t&&Math.abs(this.startY-b.getGraphY())<t&&(0<parseFloat(e.chromelessToolbar.style.opacity||0)?n():g(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var y=a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var a=this.graph.getPagePadding(),d=this.graph.getPageSize();this.translate.x=a.x-(this.x0||0)*d.width;this.translate.y= +a.y-(this.y0||0)*d.height}y.apply(this,arguments)};var u=a.sizeDidChange;a.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var d=this.getPageLayout(),b=this.getPagePadding(),f=this.getPageSize(),c=Math.ceil(2*b.x+d.width*f.width),g=Math.ceil(2*b.y+d.height*f.height),e=a.minimumGraphSize;if(null==e||e.width!=c||e.height!=g)a.minimumGraphSize=new mxRectangle(0,0,c,g);c=b.x-d.x*f.width;b=b.y-d.y*f.height;this.autoTranslate||this.view.translate.x==c&&this.view.translate.y== +b?u.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=d.x,this.view.y0=d.y,d=a.view.translate.x,f=a.view.translate.y,a.view.setTranslate(c,b),a.container.scrollLeft+=Math.round((c-d)*a.view.scale),a.container.scrollTop+=Math.round((b-f)*a.view.scale),this.autoTranslate=!1)}}}a.updateZoomTimeout=null;a.cumulativeZoomFactor=1;var A=null;a.lazyZoom=function(d){null!=this.updateZoomTimeout&&window.clearTimeout(this.updateZoomTimeout);d?.15>this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor= (this.view.scale+.01)/this.view.scale:(this.cumulativeZoomFactor*=this.zoomFactor,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor=(this.view.scale-.01)/this.view.scale:(this.cumulativeZoomFactor/=this.zoomFactor,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale);this.cumulativeZoomFactor=Math.max(.01,Math.min(this.view.scale* -this.cumulativeZoomFactor,160)/this.view.scale);this.updateZoomTimeout=window.setTimeout(mxUtils.bind(this,function(){var c=mxUtils.getOffset(a.container),d=0,h=0;null!=A&&(d=a.container.offsetWidth/2-A.x+c.x,h=a.container.offsetHeight/2-A.y+c.y);c=this.view.scale;this.zoom(this.cumulativeZoomFactor);this.view.scale!=c&&(null!=b&&f.chromelessResize(!1,null,d*(this.cumulativeZoomFactor-1),h*(this.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==d&&0==h||(a.container.scrollLeft-=d*(this.cumulativeZoomFactor- -1),a.container.scrollTop-=h*(this.cumulativeZoomFactor-1)));this.cumulativeZoomFactor=1;this.updateZoomTimeout=null}),this.lazyZoomDelay)};mxEvent.addMouseWheelListener(mxUtils.bind(this,function(c,b){if((null==this.dialogs||0==this.dialogs.length)&&a.isZoomWheelEvent(c))for(var d=mxEvent.getSource(c);null!=d;){if(d==a.container){A=new mxPoint(mxEvent.getClientX(c),mxEvent.getClientY(c));a.lazyZoom(b);mxEvent.consume(c);break}d=d.parentNode}}))}; +this.cumulativeZoomFactor,160)/this.view.scale);this.updateZoomTimeout=window.setTimeout(mxUtils.bind(this,function(){var d=mxUtils.getOffset(a.container),f=0,c=0;null!=A&&(f=a.container.offsetWidth/2-A.x+d.x,c=a.container.offsetHeight/2-A.y+d.y);d=this.view.scale;this.zoom(this.cumulativeZoomFactor);this.view.scale!=d&&(null!=b&&e.chromelessResize(!1,null,f*(this.cumulativeZoomFactor-1),c*(this.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==f&&0==c||(a.container.scrollLeft-=f*(this.cumulativeZoomFactor- +1),a.container.scrollTop-=c*(this.cumulativeZoomFactor-1)));this.cumulativeZoomFactor=1;this.updateZoomTimeout=null}),this.lazyZoomDelay)};mxEvent.addMouseWheelListener(mxUtils.bind(this,function(d,b){if((null==this.dialogs||0==this.dialogs.length)&&a.isZoomWheelEvent(d))for(var f=mxEvent.getSource(d);null!=f;){if(f==a.container){A=new mxPoint(mxEvent.getClientX(d),mxEvent.getClientY(d));a.lazyZoom(b);mxEvent.consume(d);break}f=f.parentNode}}))}; EditorUi.prototype.addChromelessToolbarItems=function(a){a(mxUtils.bind(this,function(a){this.actions.get("print").funct();mxEvent.consume(a)}),Editor.printLargeImage,mxResources.get("print"))}; EditorUi.prototype.createTemporaryGraph=function(a){a=new Graph(document.createElement("div"),null,null,a);a.resetViewOnRootChange=!1;a.setConnectable(!1);a.gridEnabled=!1;a.autoScroll=!1;a.setTooltips(!1);a.setEnabled(!1);a.container.style.visibility="hidden";a.container.style.position="absolute";a.container.style.overflow="hidden";a.container.style.height="1px";a.container.style.width="1px";return a}; -EditorUi.prototype.addChromelessClickHandler=function(){var a=urlParams.highlight;null!=a&&0<a.length&&(a="#"+a);this.editor.graph.addClickHandler(a)};EditorUi.prototype.toggleFormatPanel=function(a){this.formatWidth=a||0<this.formatWidth?0:240;this.formatContainer.style.display=a||0<this.formatWidth?"":"none";this.refresh();this.format.refresh();this.fireEvent(new mxEventObject("formatWidthChanged"))}; -EditorUi.prototype.lightboxFit=function(a){if(this.isDiagramEmpty())this.editor.graph.view.setScale(1);else{var b=urlParams.border,f=60;null!=b&&(f=parseInt(b));this.editor.graph.maxFitScale=this.lightboxMaxFitScale;this.editor.graph.fit(f,null,null,null,null,null,a);this.editor.graph.maxFitScale=null}};EditorUi.prototype.isDiagramEmpty=function(){var a=this.editor.graph.getModel();return 1==a.getChildCount(a.root)&&0==a.getChildCount(a.getChildAt(a.root,0))}; +EditorUi.prototype.addChromelessClickHandler=function(){var a=urlParams.highlight;null!=a&&0<a.length&&(a="#"+a);this.editor.graph.addClickHandler(a)};EditorUi.prototype.toggleFormatPanel=function(a){null!=this.format&&(this.formatWidth=a||0<this.formatWidth?0:240,this.formatContainer.style.display=a||0<this.formatWidth?"":"none",this.refresh(),this.format.refresh(),this.fireEvent(new mxEventObject("formatWidthChanged")))}; +EditorUi.prototype.lightboxFit=function(a){if(this.isDiagramEmpty())this.editor.graph.view.setScale(1);else{var b=urlParams.border,e=60;null!=b&&(e=parseInt(b));this.editor.graph.maxFitScale=this.lightboxMaxFitScale;this.editor.graph.fit(e,null,null,null,null,null,a);this.editor.graph.maxFitScale=null}};EditorUi.prototype.isDiagramEmpty=function(){var a=this.editor.graph.getModel();return 1==a.getChildCount(a.root)&&0==a.getChildCount(a.getChildAt(a.root,0))}; EditorUi.prototype.isSelectionAllowed=function(a){return"SELECT"==mxEvent.getSource(a).nodeName||"INPUT"==mxEvent.getSource(a).nodeName&&mxUtils.isAncestorNode(this.formatContainer,mxEvent.getSource(a))};EditorUi.prototype.addBeforeUnloadListener=function(){window.onbeforeunload=mxUtils.bind(this,function(){if(!this.editor.isChromelessView())return this.onBeforeUnload()})};EditorUi.prototype.onBeforeUnload=function(){if(this.editor.modified)return mxResources.get("allChangesLost")}; -EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(a,b){try{var f=mxUtils.parseXml(a);this.editor.setGraphXml(f.documentElement);this.editor.setModified(!1);this.editor.undoManager.clear();null!=b&&(this.editor.setFilename(b),this.updateDocumentTitle())}catch(d){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+d.message)}}))}catch(a){}this.editor.graph.view.validate();this.editor.graph.sizeDidChange(); +EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(a,b){try{var e=mxUtils.parseXml(a);this.editor.setGraphXml(e.documentElement);this.editor.setModified(!1);this.editor.undoManager.clear();null!=b&&(this.editor.setFilename(b),this.updateDocumentTitle())}catch(c){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+c.message)}}))}catch(a){}this.editor.graph.view.validate();this.editor.graph.sizeDidChange(); this.editor.fireEvent(new mxEventObject("resetGraphView"))};EditorUi.prototype.setCurrentMenu=function(a,b){this.currentMenuElt=b;this.currentMenu=a};EditorUi.prototype.resetCurrentMenu=function(){this.currentMenu=this.currentMenuElt=null};EditorUi.prototype.hideCurrentMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.resetCurrentMenu())}; EditorUi.prototype.updateDocumentTitle=function(){var a=this.editor.getOrCreateFilename();null!=this.editor.appName&&(a+=" - "+this.editor.appName);document.title=a};EditorUi.prototype.createHoverIcons=function(){return new HoverIcons(this.editor.graph)};EditorUi.prototype.redo=function(){try{this.editor.graph.isEditing()?document.execCommand("redo",!1,null):this.editor.undoManager.redo()}catch(a){}}; -EditorUi.prototype.undo=function(){try{var a=this.editor.graph;if(a.isEditing()){var b=a.cellEditor.textarea.innerHTML;document.execCommand("undo",!1,null);b==a.cellEditor.textarea.innerHTML&&(a.stopEditing(!0),this.editor.undoManager.undo())}else this.editor.undoManager.undo()}catch(f){}};EditorUi.prototype.canRedo=function(){return this.editor.graph.isEditing()||this.editor.undoManager.canRedo()};EditorUi.prototype.canUndo=function(){return this.editor.graph.isEditing()||this.editor.undoManager.canUndo()}; -EditorUi.prototype.getEditBlankXml=function(){return mxUtils.getXml(this.editor.getGraphXml())};EditorUi.prototype.getUrl=function(a){a=null!=a?a:window.location.pathname;var b=0<a.indexOf("?")?1:0,f;for(f in urlParams)a=0==b?a+"?":a+"&",a+=f+"="+urlParams[f],b++;return a}; -EditorUi.prototype.setScrollbars=function(a){var b=this.editor.graph,f=b.container.style.overflow;b.scrollbars=a;this.editor.updateGraphComponents();f!=b.container.style.overflow&&("hidden"==b.container.style.overflow?(a=b.view.translate,b.view.setTranslate(a.x-b.container.scrollLeft/b.view.scale,a.y-b.container.scrollTop/b.view.scale),b.container.scrollLeft=0,b.container.scrollTop=0,b.minimumGraphSize=null,b.sizeDidChange()):(a=b.view.translate.x,f=b.view.translate.y,b.view.translate.x=0,b.view.translate.y= -0,b.sizeDidChange(),b.container.scrollLeft-=Math.round(a*b.view.scale),b.container.scrollTop-=Math.round(f*b.view.scale)));this.fireEvent(new mxEventObject("scrollbarsChanged"))};EditorUi.prototype.hasScrollbars=function(){return this.editor.graph.scrollbars}; +EditorUi.prototype.undo=function(){try{var a=this.editor.graph;if(a.isEditing()){var b=a.cellEditor.textarea.innerHTML;document.execCommand("undo",!1,null);b==a.cellEditor.textarea.innerHTML&&(a.stopEditing(!0),this.editor.undoManager.undo())}else this.editor.undoManager.undo()}catch(e){}};EditorUi.prototype.canRedo=function(){return this.editor.graph.isEditing()||this.editor.undoManager.canRedo()};EditorUi.prototype.canUndo=function(){return this.editor.graph.isEditing()||this.editor.undoManager.canUndo()}; +EditorUi.prototype.getEditBlankXml=function(){return mxUtils.getXml(this.editor.getGraphXml())};EditorUi.prototype.getUrl=function(a){a=null!=a?a:window.location.pathname;var b=0<a.indexOf("?")?1:0,e;for(e in urlParams)a=0==b?a+"?":a+"&",a+=e+"="+urlParams[e],b++;return a}; +EditorUi.prototype.setScrollbars=function(a){var b=this.editor.graph,e=b.container.style.overflow;b.scrollbars=a;this.editor.updateGraphComponents();e!=b.container.style.overflow&&("hidden"==b.container.style.overflow?(a=b.view.translate,b.view.setTranslate(a.x-b.container.scrollLeft/b.view.scale,a.y-b.container.scrollTop/b.view.scale),b.container.scrollLeft=0,b.container.scrollTop=0,b.minimumGraphSize=null,b.sizeDidChange()):(a=b.view.translate.x,e=b.view.translate.y,b.view.translate.x=0,b.view.translate.y= +0,b.sizeDidChange(),b.container.scrollLeft-=Math.round(a*b.view.scale),b.container.scrollTop-=Math.round(e*b.view.scale)));this.fireEvent(new mxEventObject("scrollbarsChanged"))};EditorUi.prototype.hasScrollbars=function(){return this.editor.graph.scrollbars}; EditorUi.prototype.resetScrollbars=function(){var a=this.editor.graph;if(!this.editor.extendCanvas)a.container.scrollTop=0,a.container.scrollLeft=0,mxUtils.hasScrollbars(a.container)||a.view.setTranslate(0,0);else if(!this.editor.isChromelessView())if(mxUtils.hasScrollbars(a.container))if(a.pageVisible){var b=a.getPagePadding();a.container.scrollTop=Math.floor(b.y-this.editor.initialTopSpacing)-1;a.container.scrollLeft=Math.floor(Math.min(b.x,(a.container.scrollWidth-a.container.clientWidth)/2))- -1;b=a.getGraphBounds();0<b.width&&0<b.height&&(b.x>a.container.scrollLeft+.9*a.container.clientWidth&&(a.container.scrollLeft=Math.min(b.x+b.width-a.container.clientWidth,b.x-10)),b.y>a.container.scrollTop+.9*a.container.clientHeight&&(a.container.scrollTop=Math.min(b.y+b.height-a.container.clientHeight,b.y-10)))}else{var b=a.getGraphBounds(),f=Math.max(b.width,a.scrollTileSize.width*a.view.scale);a.container.scrollTop=Math.floor(Math.max(0,b.y-Math.max(20,(a.container.clientHeight-Math.max(b.height, -a.scrollTileSize.height*a.view.scale))/4)));a.container.scrollLeft=Math.floor(Math.max(0,b.x-Math.max(0,(a.container.clientWidth-f)/2)))}else a.pageVisible?(b=a.view.getBackgroundPageBounds(),a.view.setTranslate(Math.floor(Math.max(0,(a.container.clientWidth-b.width)/2)-b.x),Math.floor(Math.max(0,(a.container.clientHeight-b.height)/2)-b.y))):(b=a.getGraphBounds(),a.view.setTranslate(Math.floor(Math.max(0,Math.max(0,(a.container.clientWidth-b.width)/2)-b.x)),Math.floor(Math.max(0,Math.max(20,(a.container.clientHeight- +1;b=a.getGraphBounds();0<b.width&&0<b.height&&(b.x>a.container.scrollLeft+.9*a.container.clientWidth&&(a.container.scrollLeft=Math.min(b.x+b.width-a.container.clientWidth,b.x-10)),b.y>a.container.scrollTop+.9*a.container.clientHeight&&(a.container.scrollTop=Math.min(b.y+b.height-a.container.clientHeight,b.y-10)))}else{var b=a.getGraphBounds(),e=Math.max(b.width,a.scrollTileSize.width*a.view.scale);a.container.scrollTop=Math.floor(Math.max(0,b.y-Math.max(20,(a.container.clientHeight-Math.max(b.height, +a.scrollTileSize.height*a.view.scale))/4)));a.container.scrollLeft=Math.floor(Math.max(0,b.x-Math.max(0,(a.container.clientWidth-e)/2)))}else a.pageVisible?(b=a.view.getBackgroundPageBounds(),a.view.setTranslate(Math.floor(Math.max(0,(a.container.clientWidth-b.width)/2)-b.x),Math.floor(Math.max(0,(a.container.clientHeight-b.height)/2)-b.y))):(b=a.getGraphBounds(),a.view.setTranslate(Math.floor(Math.max(0,Math.max(0,(a.container.clientWidth-b.width)/2)-b.x)),Math.floor(Math.max(0,Math.max(20,(a.container.clientHeight- b.height)/4))-b.y)))}; -EditorUi.prototype.setPageVisible=function(a){var b=this.editor.graph,f=mxUtils.hasScrollbars(b.container),d=0,k=0;f&&(d=b.view.translate.x*b.view.scale-b.container.scrollLeft,k=b.view.translate.y*b.view.scale-b.container.scrollTop);b.pageVisible=a;b.pageBreaksVisible=a;b.preferPageSize=a;b.view.validateBackground();f&&(a=b.getSelectionCells(),b.clearSelection(),b.setSelectionCells(a));b.sizeDidChange();f&&(b.container.scrollLeft=b.view.translate.x*b.view.scale-d,b.container.scrollTop=b.view.translate.y* -b.view.scale-k);this.fireEvent(new mxEventObject("pageViewChanged"))};function ChangePageSetup(a,b,f,d){this.ui=a;this.previousColor=this.color=b;this.previousImage=this.image=f;this.previousFormat=this.format=d;this.ignoreImage=this.ignoreColor=!1} +EditorUi.prototype.setPageVisible=function(a){var b=this.editor.graph,e=mxUtils.hasScrollbars(b.container),c=0,k=0;e&&(c=b.view.translate.x*b.view.scale-b.container.scrollLeft,k=b.view.translate.y*b.view.scale-b.container.scrollTop);b.pageVisible=a;b.pageBreaksVisible=a;b.preferPageSize=a;b.view.validateBackground();e&&(a=b.getSelectionCells(),b.clearSelection(),b.setSelectionCells(a));b.sizeDidChange();e&&(b.container.scrollLeft=b.view.translate.x*b.view.scale-c,b.container.scrollTop=b.view.translate.y* +b.view.scale-k);this.fireEvent(new mxEventObject("pageViewChanged"))};function ChangePageSetup(a,b,e,c){this.ui=a;this.previousColor=this.color=b;this.previousImage=this.image=e;this.previousFormat=this.format=c;this.ignoreImage=this.ignoreColor=!1} ChangePageSetup.prototype.execute=function(){var a=this.ui.editor.graph;if(!this.ignoreColor){this.color=this.previousColor;var b=a.background;this.ui.setBackgroundColor(this.previousColor);this.previousColor=b}this.ignoreImage||(this.image=this.previousImage,b=a.backgroundImage,this.ui.setBackgroundImage(this.previousImage),this.previousImage=b);null!=this.previousFormat&&(this.format=this.previousFormat,b=a.pageFormat,this.previousFormat.width!=b.width||this.previousFormat.height!=b.height)&&(this.ui.setPageFormat(this.previousFormat), -this.previousFormat=b);null!=this.foldingEnabled&&this.foldingEnabled!=this.ui.editor.graph.foldingEnabled&&(this.ui.setFoldingEnabled(this.foldingEnabled),this.foldingEnabled=!this.foldingEnabled)};(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.afterDecode=function(a,f,d){d.previousColor=d.color;d.previousImage=d.image;d.previousFormat=d.format;null!=d.foldingEnabled&&(d.foldingEnabled=!d.foldingEnabled);return d};mxCodecRegistry.register(a)})(); +this.previousFormat=b);null!=this.foldingEnabled&&this.foldingEnabled!=this.ui.editor.graph.foldingEnabled&&(this.ui.setFoldingEnabled(this.foldingEnabled),this.foldingEnabled=!this.foldingEnabled)};(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.afterDecode=function(a,e,c){c.previousColor=c.color;c.previousImage=c.image;c.previousFormat=c.format;null!=c.foldingEnabled&&(c.foldingEnabled=!c.foldingEnabled);return c};mxCodecRegistry.register(a)})(); EditorUi.prototype.setBackgroundColor=function(a){this.editor.graph.background=a;this.editor.graph.view.validateBackground();this.fireEvent(new mxEventObject("backgroundColorChanged"))};EditorUi.prototype.setFoldingEnabled=function(a){this.editor.graph.foldingEnabled=a;this.editor.graph.view.revalidate();this.fireEvent(new mxEventObject("foldingEnabledChanged"))}; EditorUi.prototype.setPageFormat=function(a){this.editor.graph.pageFormat=a;this.editor.graph.pageVisible?(this.editor.graph.view.validateBackground(),this.editor.graph.sizeDidChange()):this.actions.get("pageView").funct();this.fireEvent(new mxEventObject("pageFormatChanged"))};EditorUi.prototype.setPageScale=function(a){this.editor.graph.pageScale=a;this.editor.graph.pageVisible?(this.editor.graph.view.validateBackground(),this.editor.graph.sizeDidChange()):this.actions.get("pageView").funct();this.fireEvent(new mxEventObject("pageScaleChanged"))}; EditorUi.prototype.setGridColor=function(a){this.editor.graph.view.gridColor=a;this.editor.graph.view.validateBackground();this.fireEvent(new mxEventObject("gridColorChanged"))}; -EditorUi.prototype.addUndoListener=function(){var a=this.actions.get("undo"),b=this.actions.get("redo"),f=this.editor.undoManager,d=mxUtils.bind(this,function(){a.setEnabled(this.canUndo());b.setEnabled(this.canRedo())});f.addListener(mxEvent.ADD,d);f.addListener(mxEvent.UNDO,d);f.addListener(mxEvent.REDO,d);f.addListener(mxEvent.CLEAR,d);var k=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){k.apply(this,arguments);d()};var n=this.editor.graph.cellEditor.stopEditing; -this.editor.graph.cellEditor.stopEditing=function(a,b){n.apply(this,arguments);d()};d()}; -EditorUi.prototype.updateActionStates=function(){var a=this.editor.graph,b=!a.isSelectionEmpty(),f=!1,d=!1,k=a.getSelectionCells();if(null!=k)for(var n=0;n<k.length;n++){var p=k[n];a.getModel().isEdge(p)&&(d=!0);a.getModel().isVertex(p)&&(f=!0);if(d&&f)break}k="cut copy bold italic underline delete duplicate editStyle editTooltip editLink backgroundColor borderColor edit toFront toBack lockUnlock solid dashed pasteSize dotted fillColor gradientColor shadow fontColor formattedText rounded toggleRounded sharp strokeColor".split(" ");for(n= -0;n<k.length;n++)this.actions.get(k[n]).setEnabled(b);this.actions.get("setAsDefaultStyle").setEnabled(1==a.getSelectionCount());this.actions.get("clearWaypoints").setEnabled(!a.isSelectionEmpty());this.actions.get("copySize").setEnabled(1==a.getSelectionCount());this.actions.get("turn").setEnabled(!a.isSelectionEmpty());this.actions.get("curved").setEnabled(d);this.actions.get("rotation").setEnabled(f);this.actions.get("wordWrap").setEnabled(f);this.actions.get("autosize").setEnabled(f);d=f&&1== -a.getSelectionCount();this.actions.get("group").setEnabled(1<a.getSelectionCount()||d&&!a.isContainer(a.getSelectionCell()));this.actions.get("ungroup").setEnabled(1==a.getSelectionCount()&&(0<a.getModel().getChildCount(a.getSelectionCell())||d&&a.isContainer(a.getSelectionCell())));this.actions.get("removeFromGroup").setEnabled(d&&a.getModel().isVertex(a.getModel().getParent(a.getSelectionCell())));a.view.getState(a.getSelectionCell());this.menus.get("navigation").setEnabled(b||null!=a.view.currentRoot); -this.actions.get("collapsible").setEnabled(f&&(a.isContainer(a.getSelectionCell())||0<a.model.getChildCount(a.getSelectionCell())));this.actions.get("home").setEnabled(null!=a.view.currentRoot);this.actions.get("exitGroup").setEnabled(null!=a.view.currentRoot);this.actions.get("enterGroup").setEnabled(1==a.getSelectionCount()&&a.isValidRoot(a.getSelectionCell()));b=1==a.getSelectionCount()&&a.isCellFoldable(a.getSelectionCell());this.actions.get("expand").setEnabled(b);this.actions.get("collapse").setEnabled(b); -this.actions.get("editLink").setEnabled(1==a.getSelectionCount());this.actions.get("openLink").setEnabled(1==a.getSelectionCount()&&null!=a.getLinkForCell(a.getSelectionCell()));this.actions.get("guides").setEnabled(a.isEnabled());this.actions.get("grid").setEnabled(!this.editor.chromeless||this.editor.editable);b=a.isEnabled()&&!a.isCellLocked(a.getDefaultParent());this.menus.get("layout").setEnabled(b);this.menus.get("insert").setEnabled(b);this.menus.get("direction").setEnabled(b&&f);this.menus.get("align").setEnabled(b&& -f&&1<a.getSelectionCount());this.menus.get("distribute").setEnabled(b&&f&&1<a.getSelectionCount());this.actions.get("selectVertices").setEnabled(b);this.actions.get("selectEdges").setEnabled(b);this.actions.get("selectAll").setEnabled(b);this.actions.get("selectNone").setEnabled(b);this.updatePasteActionStates()}; -EditorUi.prototype.refresh=function(a){a=null!=a?a:!0;var b=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),f=this.container.clientWidth,d=this.container.clientHeight;this.container==document.body&&(f=document.body.clientWidth||document.documentElement.clientWidth,d=b?document.body.clientHeight||document.documentElement.clientHeight:document.documentElement.clientHeight);var k=0;mxClient.IS_IOS&&!window.navigator.standalone&&window.innerHeight!=document.documentElement.clientHeight&& -(k=document.documentElement.clientHeight-window.innerHeight,window.scrollTo(0,0));var n=Math.max(0,Math.min(this.hsplitPosition,f-this.splitSize-20)),p=0;null!=this.menubar&&(this.menubarContainer.style.height=this.menubarHeight+"px",p+=this.menubarHeight);null!=this.toolbar&&(this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px",p+=this.toolbarHeight);0<p&&!mxClient.IS_QUIRKS&&(p+=1);var q=0;if(null!=this.sidebarFooterContainer){var w= -this.footerHeight+k,q=Math.max(0,Math.min(d-p-w,this.sidebarFooterHeight));this.sidebarFooterContainer.style.width=n+"px";this.sidebarFooterContainer.style.height=q+"px";this.sidebarFooterContainer.style.bottom=w+"px"}w=null!=this.format?this.formatWidth:0;this.sidebarContainer.style.top=p+"px";this.sidebarContainer.style.width=n+"px";this.formatContainer.style.top=p+"px";this.formatContainer.style.width=w+"px";this.formatContainer.style.display=null!=this.format?"":"none";this.diagramContainer.style.left= -null!=this.hsplit.parentNode?n+this.splitSize+"px":"0px";this.diagramContainer.style.top=this.sidebarContainer.style.top;this.footerContainer.style.height=this.footerHeight+"px";this.hsplit.style.top=this.sidebarContainer.style.top;this.hsplit.style.bottom=this.footerHeight+k+"px";this.hsplit.style.left=n+"px";this.footerContainer.style.display=0==this.footerHeight?"none":"";null!=this.tabContainer&&(this.tabContainer.style.left=this.diagramContainer.style.left);b?(this.menubarContainer.style.width= -f+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width,b=Math.max(0,d-this.footerHeight-this.menubarHeight-this.toolbarHeight),this.sidebarContainer.style.height=b-q+"px",this.formatContainer.style.height=b+"px",this.diagramContainer.style.width=null!=this.hsplit.parentNode?Math.max(0,f-n-this.splitSize-w)+"px":f+"px",this.footerContainer.style.width=this.menubarContainer.style.width,q=Math.max(0,d-this.footerHeight-this.menubarHeight-this.toolbarHeight),null!=this.tabContainer&& -(this.tabContainer.style.width=this.diagramContainer.style.width,this.tabContainer.style.bottom=this.footerHeight+k+"px",q-=this.tabContainer.clientHeight),this.diagramContainer.style.height=q+"px",this.hsplit.style.height=q+"px"):(0<this.footerHeight&&(this.footerContainer.style.bottom=k+"px"),this.diagramContainer.style.right=w+"px",f=0,null!=this.tabContainer&&(this.tabContainer.style.bottom=this.footerHeight+k+"px",this.tabContainer.style.right=this.diagramContainer.style.right,f=this.tabContainer.clientHeight), -this.sidebarContainer.style.bottom=this.footerHeight+q+k+"px",this.formatContainer.style.bottom=this.footerHeight+k+"px",this.diagramContainer.style.bottom=this.footerHeight+k+f+"px");a&&this.editor.graph.sizeDidChange()};EditorUi.prototype.createTabContainer=function(){return null}; +EditorUi.prototype.addUndoListener=function(){var a=this.actions.get("undo"),b=this.actions.get("redo"),e=this.editor.undoManager,c=mxUtils.bind(this,function(){a.setEnabled(this.canUndo());b.setEnabled(this.canRedo())});e.addListener(mxEvent.ADD,c);e.addListener(mxEvent.UNDO,c);e.addListener(mxEvent.REDO,c);e.addListener(mxEvent.CLEAR,c);var k=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){k.apply(this,arguments);c()};var m=this.editor.graph.cellEditor.stopEditing; +this.editor.graph.cellEditor.stopEditing=function(a,b){m.apply(this,arguments);c()};c()}; +EditorUi.prototype.updateActionStates=function(){var a=this.editor.graph,b=!a.isSelectionEmpty(),e=!1,c=!1,k=a.getSelectionCells();if(null!=k)for(var m=0;m<k.length;m++){var q=k[m];a.getModel().isEdge(q)&&(c=!0);a.getModel().isVertex(q)&&(e=!0);if(c&&e)break}k="cut copy bold italic underline delete duplicate editStyle editTooltip editLink backgroundColor borderColor edit toFront toBack lockUnlock solid dashed pasteSize dotted fillColor gradientColor shadow fontColor formattedText rounded toggleRounded sharp strokeColor".split(" ");for(m= +0;m<k.length;m++)this.actions.get(k[m]).setEnabled(b);this.actions.get("setAsDefaultStyle").setEnabled(1==a.getSelectionCount());this.actions.get("clearWaypoints").setEnabled(!a.isSelectionEmpty());this.actions.get("copySize").setEnabled(1==a.getSelectionCount());this.actions.get("turn").setEnabled(!a.isSelectionEmpty());this.actions.get("curved").setEnabled(c);this.actions.get("rotation").setEnabled(e);this.actions.get("wordWrap").setEnabled(e);this.actions.get("autosize").setEnabled(e);c=e&&1== +a.getSelectionCount();this.actions.get("group").setEnabled(1<a.getSelectionCount()||c&&!a.isContainer(a.getSelectionCell()));this.actions.get("ungroup").setEnabled(1==a.getSelectionCount()&&(0<a.getModel().getChildCount(a.getSelectionCell())||c&&a.isContainer(a.getSelectionCell())));this.actions.get("removeFromGroup").setEnabled(c&&a.getModel().isVertex(a.getModel().getParent(a.getSelectionCell())));a.view.getState(a.getSelectionCell());this.menus.get("navigation").setEnabled(b||null!=a.view.currentRoot); +this.actions.get("collapsible").setEnabled(e&&(a.isContainer(a.getSelectionCell())||0<a.model.getChildCount(a.getSelectionCell())));this.actions.get("home").setEnabled(null!=a.view.currentRoot);this.actions.get("exitGroup").setEnabled(null!=a.view.currentRoot);this.actions.get("enterGroup").setEnabled(1==a.getSelectionCount()&&a.isValidRoot(a.getSelectionCell()));b=1==a.getSelectionCount()&&a.isCellFoldable(a.getSelectionCell());this.actions.get("expand").setEnabled(b);this.actions.get("collapse").setEnabled(b); +this.actions.get("editLink").setEnabled(1==a.getSelectionCount());this.actions.get("openLink").setEnabled(1==a.getSelectionCount()&&null!=a.getLinkForCell(a.getSelectionCell()));this.actions.get("guides").setEnabled(a.isEnabled());this.actions.get("grid").setEnabled(!this.editor.chromeless||this.editor.editable);b=a.isEnabled()&&!a.isCellLocked(a.getDefaultParent());this.menus.get("layout").setEnabled(b);this.menus.get("insert").setEnabled(b);this.menus.get("direction").setEnabled(b&&e);this.menus.get("align").setEnabled(b&& +e&&1<a.getSelectionCount());this.menus.get("distribute").setEnabled(b&&e&&1<a.getSelectionCount());this.actions.get("selectVertices").setEnabled(b);this.actions.get("selectEdges").setEnabled(b);this.actions.get("selectAll").setEnabled(b);this.actions.get("selectNone").setEnabled(b);this.updatePasteActionStates()}; +EditorUi.prototype.refresh=function(a){a=null!=a?a:!0;var b=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),e=this.container.clientWidth,c=this.container.clientHeight;this.container==document.body&&(e=document.body.clientWidth||document.documentElement.clientWidth,c=b?document.body.clientHeight||document.documentElement.clientHeight:document.documentElement.clientHeight);var k=0;mxClient.IS_IOS&&!window.navigator.standalone&&window.innerHeight!=document.documentElement.clientHeight&& +(k=document.documentElement.clientHeight-window.innerHeight,window.scrollTo(0,0));var m=Math.max(0,Math.min(this.hsplitPosition,e-this.splitSize-20)),q=0;null!=this.menubar&&(this.menubarContainer.style.height=this.menubarHeight+"px",q+=this.menubarHeight);null!=this.toolbar&&(this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px",q+=this.toolbarHeight);0<q&&!mxClient.IS_QUIRKS&&(q+=1);var r=0;if(null!=this.sidebarFooterContainer){var v= +this.footerHeight+k,r=Math.max(0,Math.min(c-q-v,this.sidebarFooterHeight));this.sidebarFooterContainer.style.width=m+"px";this.sidebarFooterContainer.style.height=r+"px";this.sidebarFooterContainer.style.bottom=v+"px"}v=null!=this.format?this.formatWidth:0;this.sidebarContainer.style.top=q+"px";this.sidebarContainer.style.width=m+"px";this.formatContainer.style.top=q+"px";this.formatContainer.style.width=v+"px";this.formatContainer.style.display=null!=this.format?"":"none";this.diagramContainer.style.left= +null!=this.hsplit.parentNode?m+this.splitSize+"px":"0px";this.diagramContainer.style.top=this.sidebarContainer.style.top;this.footerContainer.style.height=this.footerHeight+"px";this.hsplit.style.top=this.sidebarContainer.style.top;this.hsplit.style.bottom=this.footerHeight+k+"px";this.hsplit.style.left=m+"px";this.footerContainer.style.display=0==this.footerHeight?"none":"";null!=this.tabContainer&&(this.tabContainer.style.left=this.diagramContainer.style.left);b?(this.menubarContainer.style.width= +e+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width,b=Math.max(0,c-this.footerHeight-this.menubarHeight-this.toolbarHeight),this.sidebarContainer.style.height=b-r+"px",this.formatContainer.style.height=b+"px",this.diagramContainer.style.width=null!=this.hsplit.parentNode?Math.max(0,e-m-this.splitSize-v)+"px":e+"px",this.footerContainer.style.width=this.menubarContainer.style.width,r=Math.max(0,c-this.footerHeight-this.menubarHeight-this.toolbarHeight),null!=this.tabContainer&& +(this.tabContainer.style.width=this.diagramContainer.style.width,this.tabContainer.style.bottom=this.footerHeight+k+"px",r-=this.tabContainer.clientHeight),this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"):(0<this.footerHeight&&(this.footerContainer.style.bottom=k+"px"),this.diagramContainer.style.right=v+"px",e=0,null!=this.tabContainer&&(this.tabContainer.style.bottom=this.footerHeight+k+"px",this.tabContainer.style.right=this.diagramContainer.style.right,e=this.tabContainer.clientHeight), +this.sidebarContainer.style.bottom=this.footerHeight+r+k+"px",this.formatContainer.style.bottom=this.footerHeight+k+"px",this.diagramContainer.style.bottom=this.footerHeight+k+e+"px");a&&this.editor.graph.sizeDidChange()};EditorUi.prototype.createTabContainer=function(){return null}; EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer");this.toolbarContainer=this.createDiv("geToolbarContainer");this.sidebarContainer=this.createDiv("geSidebarContainer");this.formatContainer=this.createDiv("geSidebarContainer geFormatContainer");this.diagramContainer=this.createDiv("geDiagramContainer");this.footerContainer=this.createDiv("geFooterContainer");this.hsplit=this.createDiv("geHsplit");this.hsplit.setAttribute("title",mxResources.get("collapseExpand")); this.menubarContainer.style.top="0px";this.menubarContainer.style.left="0px";this.menubarContainer.style.right="0px";this.toolbarContainer.style.left="0px";this.toolbarContainer.style.right="0px";this.sidebarContainer.style.left="0px";this.formatContainer.style.right="0px";this.formatContainer.style.zIndex="1";this.diagramContainer.style.right=(null!=this.format?this.formatWidth:0)+"px";this.footerContainer.style.left="0px";this.footerContainer.style.right="0px";this.footerContainer.style.bottom= "0px";this.footerContainer.style.zIndex=mxPopupMenu.prototype.zIndex-2;this.hsplit.style.width=this.splitSize+"px";if(this.sidebarFooterContainer=this.createSidebarFooterContainer())this.sidebarFooterContainer.style.left="0px";this.editor.chromeless?this.diagramContainer.style.border="none":this.tabContainer=this.createTabContainer()};EditorUi.prototype.createSidebarFooterContainer=function(){return null}; @@ -2162,120 +2164,120 @@ this.sidebar=this.editor.chromeless?null:this.createSidebar(this.sidebarContaine this.container.appendChild(this.sidebarFooterContainer);this.container.appendChild(this.diagramContainer);null!=this.container&&null!=this.tabContainer&&this.container.appendChild(this.tabContainer);this.toolbar=this.editor.chromeless?null:this.createToolbar(this.createDiv("geToolbar"));null!=this.toolbar&&(this.toolbarContainer.appendChild(this.toolbar.container),this.container.appendChild(this.toolbarContainer));null!=this.sidebar&&(this.container.appendChild(this.hsplit),this.addSplitHandler(this.hsplit, !0,0,mxUtils.bind(this,function(a){this.hsplitPosition=a;this.refresh()})))};EditorUi.prototype.createStatusContainer=function(){var a=document.createElement("a");a.className="geItem geStatus";420>screen.width&&(a.style.maxWidth=Math.max(20,screen.width-320)+"px",a.style.overflow="hidden");return a};EditorUi.prototype.setStatusText=function(a){this.statusContainer.innerHTML=a};EditorUi.prototype.createToolbar=function(a){return new Toolbar(this,a)}; EditorUi.prototype.createSidebar=function(a){return new Sidebar(this,a)};EditorUi.prototype.createFormat=function(a){return new Format(this,a)};EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")};EditorUi.prototype.createDiv=function(a){var b=document.createElement("div");b.className=a;return b}; -EditorUi.prototype.addSplitHandler=function(a,b,f,d){function k(a){if(null!=p){var h=new mxPoint(mxEvent.getClientX(a),mxEvent.getClientY(a));d(Math.max(0,q+(b?h.x-p.x:p.y-h.y)-f));mxEvent.consume(a);q!=g()&&(w=!0,c=null)}}function n(a){k(a);p=q=null}var p=null,q=null,w=!0,c=null;mxClient.IS_POINTER&&(a.style.touchAction="none");var g=mxUtils.bind(this,function(){var c=parseInt(b?a.style.left:a.style.bottom);b||(c=c+f-this.footerHeight);return c});mxEvent.addGestureListeners(a,function(a){p=new mxPoint(mxEvent.getClientX(a), -mxEvent.getClientY(a));q=g();w=!1;mxEvent.consume(a)});mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){if(!w&&this.hsplitClickEnabled){var b=null!=c?c-f:0;c=g();d(b);mxEvent.consume(a)}}));mxEvent.addGestureListeners(document,null,k,n);this.destroyFunctions.push(function(){mxEvent.removeGestureListeners(document,null,k,n)})}; -EditorUi.prototype.showDialog=function(a,b,f,d,k,n,p,q,w){this.editor.graph.tooltipHandler.hideTooltip();null==this.dialogs&&(this.dialogs=[]);this.dialog=new Dialog(this,a,b,f,d,k,n,p,q,w);this.dialogs.push(this.dialog)}; -EditorUi.prototype.hideDialog=function(a,b){if(null!=this.dialogs&&0<this.dialogs.length){var f=this.dialogs.pop();0==f.close(a,b)?this.dialogs.push(f):(this.dialog=0<this.dialogs.length?this.dialogs[this.dialogs.length-1]:null,null==this.dialog&&"hidden"!=this.editor.graph.container.style.visibility&&this.editor.graph.container.focus(),mxUtils.clearSelection(),this.editor.fireEvent(new mxEventObject("hideDialog")))}}; -EditorUi.prototype.pickColor=function(a,b){var f=this.editor.graph,d=f.cellEditor.saveSelection(),k=226+17*(Math.ceil(ColorDialog.prototype.presetColors.length/12)+Math.ceil(ColorDialog.prototype.defaultColors.length/12)),n=new ColorDialog(this,a||"none",function(a){f.cellEditor.restoreSelection(d);b(a)},function(){f.cellEditor.restoreSelection(d)});this.showDialog(n.container,230,k,!0,!1);n.init()}; +EditorUi.prototype.addSplitHandler=function(a,b,e,c){function k(a){if(null!=q){var f=new mxPoint(mxEvent.getClientX(a),mxEvent.getClientY(a));c(Math.max(0,r+(b?f.x-q.x:q.y-f.y)-e));mxEvent.consume(a);r!=d()&&(v=!0,z=null)}}function m(a){k(a);q=r=null}var q=null,r=null,v=!0,z=null;mxClient.IS_POINTER&&(a.style.touchAction="none");var d=mxUtils.bind(this,function(){var d=parseInt(b?a.style.left:a.style.bottom);b||(d=d+e-this.footerHeight);return d});mxEvent.addGestureListeners(a,function(a){q=new mxPoint(mxEvent.getClientX(a), +mxEvent.getClientY(a));r=d();v=!1;mxEvent.consume(a)});mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){if(!v&&this.hsplitClickEnabled){var b=null!=z?z-e:0;z=d();c(b);mxEvent.consume(a)}}));mxEvent.addGestureListeners(document,null,k,m);this.destroyFunctions.push(function(){mxEvent.removeGestureListeners(document,null,k,m)})}; +EditorUi.prototype.showDialog=function(a,b,e,c,k,m,q,r,v){this.editor.graph.tooltipHandler.hideTooltip();null==this.dialogs&&(this.dialogs=[]);this.dialog=new Dialog(this,a,b,e,c,k,m,q,r,v);this.dialogs.push(this.dialog)}; +EditorUi.prototype.hideDialog=function(a,b){if(null!=this.dialogs&&0<this.dialogs.length){var e=this.dialogs.pop();0==e.close(a,b)?this.dialogs.push(e):(this.dialog=0<this.dialogs.length?this.dialogs[this.dialogs.length-1]:null,null==this.dialog&&"hidden"!=this.editor.graph.container.style.visibility&&this.editor.graph.container.focus(),mxUtils.clearSelection(),this.editor.fireEvent(new mxEventObject("hideDialog")))}}; +EditorUi.prototype.pickColor=function(a,b){var e=this.editor.graph,c=e.cellEditor.saveSelection(),k=226+17*(Math.ceil(ColorDialog.prototype.presetColors.length/12)+Math.ceil(ColorDialog.prototype.defaultColors.length/12)),m=new ColorDialog(this,a||"none",function(a){e.cellEditor.restoreSelection(c);b(a)},function(){e.cellEditor.restoreSelection(c)});this.showDialog(m.container,230,k,!0,!1);m.init()}; EditorUi.prototype.openFile=function(){window.openFile=new OpenFile(mxUtils.bind(this,function(a){this.hideDialog(a)}));this.showDialog((new OpenDialog(this)).container,Editor.useLocalStorage?640:320,Editor.useLocalStorage?480:220,!0,!0,function(){window.openFile=null})}; -EditorUi.prototype.extractGraphModelFromHtml=function(a){var b=null;try{var f=a.indexOf("<mxGraphModel ");if(0<=f){var d=a.lastIndexOf("</mxGraphModel>");d>f&&(b=a.substring(f,d+21).replace(/>/g,">").replace(/</g,"<").replace(/\\"/g,'"').replace(/\n/g,""))}}catch(k){}return b}; -EditorUi.prototype.extractGraphModelFromEvent=function(a){var b=null,f=null;null!=a&&(a=null!=a.dataTransfer?a.dataTransfer:a.clipboardData,null!=a&&(10==document.documentMode||11==document.documentMode?f=a.getData("Text"):(f=0<=mxUtils.indexOf(a.types,"text/html")?a.getData("text/html"):null,mxUtils.indexOf(a.types,null==f||0==f.length)&&(f=a.getData("text/plain"))),null!=f&&(f=this.editor.graph.zapGremlins(mxUtils.trim(f)),a=this.extractGraphModelFromHtml(f),null!=a&&(f=a))));null!=f&&this.isCompatibleString(f)&& -(b=f);return b};EditorUi.prototype.isCompatibleString=function(a){return!1};EditorUi.prototype.saveFile=function(a){a||null==this.editor.filename?(a=new FilenameDialog(this,this.editor.getOrCreateFilename(),mxResources.get("save"),mxUtils.bind(this,function(a){this.save(a)}),null,mxUtils.bind(this,function(a){if(null!=a&&0<a.length)return!0;mxUtils.confirm(mxResources.get("invalidName"));return!1})),this.showDialog(a.container,300,100,!0,!0),a.init()):this.save(this.editor.getOrCreateFilename())}; +EditorUi.prototype.extractGraphModelFromHtml=function(a){var b=null;try{var e=a.indexOf("<mxGraphModel ");if(0<=e){var c=a.lastIndexOf("</mxGraphModel>");c>e&&(b=a.substring(e,c+21).replace(/>/g,">").replace(/</g,"<").replace(/\\"/g,'"').replace(/\n/g,""))}}catch(k){}return b}; +EditorUi.prototype.extractGraphModelFromEvent=function(a){var b=null,e=null;null!=a&&(a=null!=a.dataTransfer?a.dataTransfer:a.clipboardData,null!=a&&(10==document.documentMode||11==document.documentMode?e=a.getData("Text"):(e=0<=mxUtils.indexOf(a.types,"text/html")?a.getData("text/html"):null,mxUtils.indexOf(a.types,null==e||0==e.length)&&(e=a.getData("text/plain"))),null!=e&&(e=this.editor.graph.zapGremlins(mxUtils.trim(e)),a=this.extractGraphModelFromHtml(e),null!=a&&(e=a))));null!=e&&this.isCompatibleString(e)&& +(b=e);return b};EditorUi.prototype.isCompatibleString=function(a){return!1};EditorUi.prototype.saveFile=function(a){a||null==this.editor.filename?(a=new FilenameDialog(this,this.editor.getOrCreateFilename(),mxResources.get("save"),mxUtils.bind(this,function(a){this.save(a)}),null,mxUtils.bind(this,function(a){if(null!=a&&0<a.length)return!0;mxUtils.confirm(mxResources.get("invalidName"));return!1})),this.showDialog(a.container,300,100,!0,!0),a.init()):this.save(this.editor.getOrCreateFilename())}; EditorUi.prototype.save=function(a){if(null!=a){this.editor.graph.isEditing()&&this.editor.graph.stopEditing();var b=mxUtils.getXml(this.editor.getGraphXml());try{if(Editor.useLocalStorage){if(null!=localStorage.getItem(a)&&!mxUtils.confirm(mxResources.get("replaceIt",[a])))return;localStorage.setItem(a,b);this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("saved"))+" "+new Date)}else if(b.length<MAX_REQUEST_SIZE)(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(a)+"&xml="+encodeURIComponent(b))).simulate(document, -"_blank");else{mxUtils.alert(mxResources.get("drawingTooLarge"));mxUtils.popup(b);return}this.editor.setModified(!1);this.editor.setFilename(a);this.updateDocumentTitle()}catch(f){this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("errorSavingFile")))}}}; -EditorUi.prototype.executeLayout=function(a,b,f){var d=this.editor.graph;if(d.isEnabled()){d.getModel().beginUpdate();try{a()}catch(k){throw k;}finally{this.allowAnimation&&b&&0>navigator.userAgent.indexOf("Camino")?(a=new mxMorphing(d),a.addListener(mxEvent.DONE,mxUtils.bind(this,function(){d.getModel().endUpdate();null!=f&&f()})),a.startAnimation()):(d.getModel().endUpdate(),null!=f&&f())}}}; -EditorUi.prototype.showImageDialog=function(a,b,f,d){d=this.editor.graph.cellEditor;var k=d.saveSelection(),n=mxUtils.prompt(a,b);d.restoreSelection(k);if(null!=n&&0<n.length){var p=new Image;p.onload=function(){f(n,p.width,p.height)};p.onerror=function(){f(null);mxUtils.alert(mxResources.get("fileNotFound"))};p.src=n}else f(null)};EditorUi.prototype.showLinkDialog=function(a,b,f){a=new LinkDialog(this,a,b,f);this.showDialog(a.container,420,90,!0,!0);a.init()}; +"_blank");else{mxUtils.alert(mxResources.get("drawingTooLarge"));mxUtils.popup(b);return}this.editor.setModified(!1);this.editor.setFilename(a);this.updateDocumentTitle()}catch(e){this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("errorSavingFile")))}}}; +EditorUi.prototype.executeLayout=function(a,b,e){var c=this.editor.graph;if(c.isEnabled()){c.getModel().beginUpdate();try{a()}catch(k){throw k;}finally{this.allowAnimation&&b&&0>navigator.userAgent.indexOf("Camino")?(a=new mxMorphing(c),a.addListener(mxEvent.DONE,mxUtils.bind(this,function(){c.getModel().endUpdate();null!=e&&e()})),a.startAnimation()):(c.getModel().endUpdate(),null!=e&&e())}}}; +EditorUi.prototype.showImageDialog=function(a,b,e,c){c=this.editor.graph.cellEditor;var k=c.saveSelection(),m=mxUtils.prompt(a,b);c.restoreSelection(k);if(null!=m&&0<m.length){var q=new Image;q.onload=function(){e(m,q.width,q.height)};q.onerror=function(){e(null);mxUtils.alert(mxResources.get("fileNotFound"))};q.src=m}else e(null)};EditorUi.prototype.showLinkDialog=function(a,b,e){a=new LinkDialog(this,a,b,e);this.showDialog(a.container,420,90,!0,!0);a.init()}; EditorUi.prototype.showDataDialog=function(a){null!=a&&(a=new EditDataDialog(this,a),this.showDialog(a.container,340,340,!0,!1,null,!1),a.init())}; -EditorUi.prototype.showBackgroundImageDialog=function(a){a=null!=a?a:mxUtils.bind(this,function(a){a=new ChangePageSetup(this,null,a);a.ignoreColor=!0;this.editor.graph.model.execute(a)});var b=mxUtils.prompt(mxResources.get("backgroundImage"),"");if(null!=b&&0<b.length){var f=new Image;f.onload=function(){a(new mxImage(b,f.width,f.height))};f.onerror=function(){a(null);mxUtils.alert(mxResources.get("fileNotFound"))};f.src=b}else a(null)}; -EditorUi.prototype.setBackgroundImage=function(a){this.editor.graph.setBackgroundImage(a);this.editor.graph.view.validateBackgroundImage();this.fireEvent(new mxEventObject("backgroundImageChanged"))};EditorUi.prototype.confirm=function(a,b,f){mxUtils.confirm(a)?null!=b&&b():null!=f&&f()}; +EditorUi.prototype.showBackgroundImageDialog=function(a){a=null!=a?a:mxUtils.bind(this,function(a){a=new ChangePageSetup(this,null,a);a.ignoreColor=!0;this.editor.graph.model.execute(a)});var b=mxUtils.prompt(mxResources.get("backgroundImage"),"");if(null!=b&&0<b.length){var e=new Image;e.onload=function(){a(new mxImage(b,e.width,e.height))};e.onerror=function(){a(null);mxUtils.alert(mxResources.get("fileNotFound"))};e.src=b}else a(null)}; +EditorUi.prototype.setBackgroundImage=function(a){this.editor.graph.setBackgroundImage(a);this.editor.graph.view.validateBackgroundImage();this.fireEvent(new mxEventObject("backgroundImageChanged"))};EditorUi.prototype.confirm=function(a,b,e){mxUtils.confirm(a)?null!=b&&b():null!=e&&e()}; EditorUi.prototype.createOutline=function(a){var b=new mxOutline(this.editor.graph);b.border=20;mxEvent.addListener(window,"resize",function(){b.update()});this.addListener("pageFormatChanged",function(){b.update()});return b};EditorUi.prototype.altShiftActions={67:"clearWaypoints",65:"connectionArrows",76:"editLink",80:"connectionPoints",84:"editTooltip",86:"pasteSize",88:"copySize"}; -EditorUi.prototype.createKeyHandler=function(a){function b(a,c,b){p.push(function(){if(!d.isSelectionEmpty()&&d.isEnabled())if(c=null!=c?c:1,b){d.getModel().beginUpdate();try{for(var g=d.getSelectionCells(),h=0;h<g.length;h++)if(d.getModel().isVertex(g[h])&&d.isCellResizable(g[h])){var f=d.getCellGeometry(g[h]);null!=f&&(f=f.clone(),37==a?f.width=Math.max(0,f.width-c):38==a?f.height=Math.max(0,f.height-c):39==a?f.width+=c:40==a&&(f.height+=c),d.getModel().setGeometry(g[h],f))}}finally{d.getModel().endUpdate()}}else g= -d.getSelectionCell(),h=d.model.getParent(g),f=null,1==d.getSelectionCount()&&d.model.isVertex(g)&&null!=d.layoutManager&&!d.isCellLocked(g)&&(f=d.layoutManager.getLayout(h)),null!=f&&f.constructor==mxStackLayout?(f=h.getIndex(g),37==a||38==a?d.model.add(h,g,Math.max(0,f-1)):39!=a&&40!=a||d.model.add(h,g,Math.min(d.model.getChildCount(h),f+1))):(h=g=0,37==a?g=-c:38==a?h=-c:39==a?g=c:40==a&&(h=c),d.moveCells(d.getMovableCells(d.getSelectionCells()),g,h))});null!=q&&window.clearTimeout(q);q=window.setTimeout(function(){if(0< -p.length){d.getModel().beginUpdate();try{for(var a=0;a<p.length;a++)p[a]();p=[]}finally{d.getModel().endUpdate()}d.scrollCellToVisible(d.getSelectionCell())}},200)}var f=this,d=this.editor.graph,k=new mxKeyHandler(d),n=k.isEventIgnored;k.isEventIgnored=function(a){return(!this.isControlDown(a)||mxEvent.isShiftDown(a)||90!=a.keyCode&&89!=a.keyCode&&188!=a.keyCode&&190!=a.keyCode&&85!=a.keyCode)&&(66!=a.keyCode&&73!=a.keyCode||!this.isControlDown(a)||this.graph.cellEditor.isContentEditing()&&!mxClient.IS_FF&& -!mxClient.IS_SF)&&n.apply(this,arguments)};k.isEnabledForEvent=function(a){return!mxEvent.isConsumed(a)&&this.isGraphEvent(a)&&this.isEnabled()&&(null==f.dialogs||0==f.dialogs.length)};k.isControlDown=function(a){return mxEvent.isControlDown(a)||mxClient.IS_MAC&&a.metaKey};var p=[],q=null,w={37:mxConstants.DIRECTION_WEST,38:mxConstants.DIRECTION_NORTH,39:mxConstants.DIRECTION_EAST,40:mxConstants.DIRECTION_SOUTH},c=k.getFunction;mxKeyHandler.prototype.getFunction=function(a){if(d.isEnabled()){if(mxEvent.isShiftDown(a)&& -mxEvent.isAltDown(a)){var g=f.actions.get(f.altShiftActions[a.keyCode]);if(null!=g)return g.funct}if(9==a.keyCode&&mxEvent.isAltDown(a))return mxEvent.isShiftDown(a)?function(){d.selectParentCell()}:function(){d.selectChildCell()};if(null!=w[a.keyCode]&&!d.isSelectionEmpty())if(mxEvent.isShiftDown(a)&&mxEvent.isAltDown(a)){if(d.model.isVertex(d.getSelectionCell()))return function(){var c=d.connectVertex(d.getSelectionCell(),w[a.keyCode],d.defaultEdgeLength,a,!0);null!=c&&0<c.length&&(1==c.length&& -d.model.isEdge(c[0])?d.setSelectionCell(d.model.getTerminal(c[0],!1)):d.setSelectionCell(c[c.length-1]),d.scrollCellToVisible(d.getSelectionCell()),null!=f.hoverIcons&&f.hoverIcons.update(d.view.getState(d.getSelectionCell())))}}else return this.isControlDown(a)?function(){b(a.keyCode,mxEvent.isShiftDown(a)?d.gridSize:null,!0)}:function(){b(a.keyCode,mxEvent.isShiftDown(a)?d.gridSize:null)}}return c.apply(this,arguments)};k.bindAction=mxUtils.bind(this,function(a,c,b,d){var g=this.actions.get(b); -null!=g&&(b=function(){g.isEnabled()&&g.funct()},c?d?k.bindControlShiftKey(a,b):k.bindControlKey(a,b):d?k.bindShiftKey(a,b):k.bindKey(a,b))});var g=k.escape;k.escape=function(a){g.apply(this,arguments)};k.enter=function(){};k.bindControlShiftKey(36,function(){d.exitGroup()});k.bindControlShiftKey(35,function(){d.enterGroup()});k.bindKey(36,function(){d.home()});k.bindKey(35,function(){d.refresh()});k.bindAction(107,!0,"zoomIn");k.bindAction(109,!0,"zoomOut");k.bindAction(80,!0,"print");k.bindAction(79, -!0,"outline",!0);k.bindAction(112,!1,"about");if(!this.editor.chromeless||this.editor.editable)k.bindControlKey(36,function(){d.isEnabled()&&d.foldCells(!0)}),k.bindControlKey(35,function(){d.isEnabled()&&d.foldCells(!1)}),k.bindControlKey(13,function(){d.isEnabled()&&d.setSelectionCells(d.duplicateCells(d.getSelectionCells(),!1))}),k.bindAction(8,!1,"delete"),k.bindAction(8,!0,"deleteAll"),k.bindAction(46,!1,"delete"),k.bindAction(46,!0,"deleteAll"),k.bindAction(72,!0,"resetView"),k.bindAction(72, +EditorUi.prototype.createKeyHandler=function(a){function b(a,d,b){q.push(function(){if(!c.isSelectionEmpty()&&c.isEnabled())if(d=null!=d?d:1,b){c.getModel().beginUpdate();try{for(var f=c.getSelectionCells(),e=0;e<f.length;e++)if(c.getModel().isVertex(f[e])&&c.isCellResizable(f[e])){var l=c.getCellGeometry(f[e]);null!=l&&(l=l.clone(),37==a?l.width=Math.max(0,l.width-d):38==a?l.height=Math.max(0,l.height-d):39==a?l.width+=d:40==a&&(l.height+=d),c.getModel().setGeometry(f[e],l))}}finally{c.getModel().endUpdate()}}else f= +c.getSelectionCell(),e=c.model.getParent(f),l=null,1==c.getSelectionCount()&&c.model.isVertex(f)&&null!=c.layoutManager&&!c.isCellLocked(f)&&(l=c.layoutManager.getLayout(e)),null!=l&&l.constructor==mxStackLayout?(l=e.getIndex(f),37==a||38==a?c.model.add(e,f,Math.max(0,l-1)):39!=a&&40!=a||c.model.add(e,f,Math.min(c.model.getChildCount(e),l+1))):(e=f=0,37==a?f=-d:38==a?e=-d:39==a?f=d:40==a&&(e=d),c.moveCells(c.getMovableCells(c.getSelectionCells()),f,e))});null!=r&&window.clearTimeout(r);r=window.setTimeout(function(){if(0< +q.length){c.getModel().beginUpdate();try{for(var a=0;a<q.length;a++)q[a]();q=[]}finally{c.getModel().endUpdate()}c.scrollCellToVisible(c.getSelectionCell())}},200)}var e=this,c=this.editor.graph,k=new mxKeyHandler(c),m=k.isEventIgnored;k.isEventIgnored=function(a){return(!this.isControlDown(a)||mxEvent.isShiftDown(a)||90!=a.keyCode&&89!=a.keyCode&&188!=a.keyCode&&190!=a.keyCode&&85!=a.keyCode)&&(66!=a.keyCode&&73!=a.keyCode||!this.isControlDown(a)||this.graph.cellEditor.isContentEditing()&&!mxClient.IS_FF&& +!mxClient.IS_SF)&&m.apply(this,arguments)};k.isEnabledForEvent=function(a){return!mxEvent.isConsumed(a)&&this.isGraphEvent(a)&&this.isEnabled()&&(null==e.dialogs||0==e.dialogs.length)};k.isControlDown=function(a){return mxEvent.isControlDown(a)||mxClient.IS_MAC&&a.metaKey};var q=[],r=null,v={37:mxConstants.DIRECTION_WEST,38:mxConstants.DIRECTION_NORTH,39:mxConstants.DIRECTION_EAST,40:mxConstants.DIRECTION_SOUTH},z=k.getFunction;mxKeyHandler.prototype.getFunction=function(a){if(c.isEnabled()){if(mxEvent.isShiftDown(a)&& +mxEvent.isAltDown(a)){var d=e.actions.get(e.altShiftActions[a.keyCode]);if(null!=d)return d.funct}if(9==a.keyCode&&mxEvent.isAltDown(a))return mxEvent.isShiftDown(a)?function(){c.selectParentCell()}:function(){c.selectChildCell()};if(null!=v[a.keyCode]&&!c.isSelectionEmpty())if(mxEvent.isShiftDown(a)&&mxEvent.isAltDown(a)){if(c.model.isVertex(c.getSelectionCell()))return function(){var d=c.connectVertex(c.getSelectionCell(),v[a.keyCode],c.defaultEdgeLength,a,!0);null!=d&&0<d.length&&(1==d.length&& +c.model.isEdge(d[0])?c.setSelectionCell(c.model.getTerminal(d[0],!1)):c.setSelectionCell(d[d.length-1]),c.scrollCellToVisible(c.getSelectionCell()),null!=e.hoverIcons&&e.hoverIcons.update(c.view.getState(c.getSelectionCell())))}}else return this.isControlDown(a)?function(){b(a.keyCode,mxEvent.isShiftDown(a)?c.gridSize:null,!0)}:function(){b(a.keyCode,mxEvent.isShiftDown(a)?c.gridSize:null)}}return z.apply(this,arguments)};k.bindAction=mxUtils.bind(this,function(a,d,b,c){var f=this.actions.get(b); +null!=f&&(b=function(){f.isEnabled()&&f.funct()},d?c?k.bindControlShiftKey(a,b):k.bindControlKey(a,b):c?k.bindShiftKey(a,b):k.bindKey(a,b))});var d=k.escape;k.escape=function(a){d.apply(this,arguments)};k.enter=function(){};k.bindControlShiftKey(36,function(){c.exitGroup()});k.bindControlShiftKey(35,function(){c.enterGroup()});k.bindKey(36,function(){c.home()});k.bindKey(35,function(){c.refresh()});k.bindAction(107,!0,"zoomIn");k.bindAction(109,!0,"zoomOut");k.bindAction(80,!0,"print");k.bindAction(79, +!0,"outline",!0);k.bindAction(112,!1,"about");if(!this.editor.chromeless||this.editor.editable)k.bindControlKey(36,function(){c.isEnabled()&&c.foldCells(!0)}),k.bindControlKey(35,function(){c.isEnabled()&&c.foldCells(!1)}),k.bindControlKey(13,function(){c.isEnabled()&&c.setSelectionCells(c.duplicateCells(c.getSelectionCells(),!1))}),k.bindAction(8,!1,"delete"),k.bindAction(8,!0,"deleteAll"),k.bindAction(46,!1,"delete"),k.bindAction(46,!0,"deleteAll"),k.bindAction(72,!0,"resetView"),k.bindAction(72, !0,"fitWindow",!0),k.bindAction(74,!0,"fitPage"),k.bindAction(74,!0,"fitTwoPages",!0),k.bindAction(48,!0,"customZoom"),k.bindAction(82,!0,"turn"),k.bindAction(82,!0,"clearDefaultStyle",!0),k.bindAction(83,!0,"save"),k.bindAction(83,!0,"saveAs",!0),k.bindAction(65,!0,"selectAll"),k.bindAction(65,!0,"selectNone",!0),k.bindAction(73,!0,"selectVertices",!0),k.bindAction(69,!0,"selectEdges",!0),k.bindAction(69,!0,"editStyle"),k.bindAction(66,!0,"bold"),k.bindAction(66,!0,"toBack",!0),k.bindAction(70,!0, "toFront",!0),k.bindAction(68,!0,"duplicate"),k.bindAction(68,!0,"setAsDefaultStyle",!0),k.bindAction(90,!0,"undo"),k.bindAction(89,!0,"autosize",!0),k.bindAction(88,!0,"cut"),k.bindAction(67,!0,"copy"),k.bindAction(86,!0,"paste"),k.bindAction(71,!0,"group"),k.bindAction(77,!0,"editData"),k.bindAction(71,!0,"grid",!0),k.bindAction(73,!0,"italic"),k.bindAction(76,!0,"lockUnlock"),k.bindAction(76,!0,"layers",!0),k.bindAction(80,!0,"formatPanel",!0),k.bindAction(85,!0,"underline"),k.bindAction(85,!0, -"ungroup",!0),k.bindAction(190,!0,"superscript"),k.bindAction(188,!0,"subscript"),k.bindKey(13,function(){d.isEnabled()&&d.startEditingAtCell()}),k.bindKey(113,function(){d.isEnabled()&&d.startEditingAtCell()});mxClient.IS_WIN?k.bindAction(89,!0,"redo"):k.bindAction(90,!0,"redo",!0);return k}; +"ungroup",!0),k.bindAction(190,!0,"superscript"),k.bindAction(188,!0,"subscript"),k.bindKey(13,function(){c.isEnabled()&&c.startEditingAtCell()}),k.bindKey(113,function(){c.isEnabled()&&c.startEditingAtCell()});mxClient.IS_WIN?k.bindAction(89,!0,"redo"):k.bindAction(90,!0,"redo",!0);return k}; EditorUi.prototype.destroy=function(){null!=this.editor&&(this.editor.destroy(),this.editor=null);null!=this.menubar&&(this.menubar.destroy(),this.menubar=null);null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null);null!=this.sidebar&&(this.sidebar.destroy(),this.sidebar=null);null!=this.keyHandler&&(this.keyHandler.destroy(),this.keyHandler=null);null!=this.keydownHandler&&(mxEvent.removeListener(document,"keydown",this.keydownHandler),this.keydownHandler=null);null!=this.keyupHandler&& (mxEvent.removeListener(document,"keyup",this.keyupHandler),this.keyupHandler=null);null!=this.resizeHandler&&(mxEvent.removeListener(window,"resize",this.resizeHandler),this.resizeHandler=null);null!=this.gestureHandler&&(mxEvent.removeGestureListeners(document,this.gestureHandler),this.gestureHandler=null);null!=this.orientationChangeHandler&&(mxEvent.removeListener(window,"orientationchange",this.orientationChangeHandler),this.orientationChangeHandler=null);null!=this.scrollHandler&&(mxEvent.removeListener(window, "scroll",this.scrollHandler),this.scrollHandler=null);if(null!=this.destroyFunctions){for(var a=0;a<this.destroyFunctions.length;a++)this.destroyFunctions[a]();this.destroyFunctions=null}for(var b=[this.menubarContainer,this.toolbarContainer,this.sidebarContainer,this.formatContainer,this.diagramContainer,this.footerContainer,this.chromelessToolbar,this.hsplit,this.sidebarFooterContainer,this.layersDialog],a=0;a<b.length;a++)null!=b[a]&&null!=b[a].parentNode&&b[a].parentNode.removeChild(b[a])};"undefined"!==typeof html4&&(html4.ATTRIBS["a::target"]=0,html4.ATTRIBS["source::src"]=0,html4.ATTRIBS["video::src"]=0);mxConstants.SHADOW_OPACITY=.25;mxConstants.SHADOWCOLOR="#000000";mxConstants.VML_SHADOWCOLOR="#d0d0d0";mxGraph.prototype.pageBreakColor="#c0c0c0";mxGraph.prototype.pageScale=1; (function(){try{if(null!=navigator&&null!=navigator.language){var a=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===a||"en-ca"===a||"es-mx"===a?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(b){}})();mxText.prototype.baseSpacingTop=5;mxText.prototype.baseSpacingBottom=1;mxGraphModel.prototype.ignoreRelativeEdgeParent=!1; -mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif";mxGraphView.prototype.gridSteps=4;mxGraphView.prototype.minGridSize=4;mxGraphView.prototype.gridColor="#e0e0e0";mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(a,b,f){return null}; -Graph=function(a,b,f,d,k){mxGraph.call(this,a,b,f,d);this.themes=k||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);a=this.baseUrl;b=a.indexOf("//");this.domainPathUrl=this.domainUrl="";0<b&&(b=a.indexOf("/",b+2),0<b&&(this.domainUrl=a.substring(0,b)),b=a.lastIndexOf("/"),0<b&&(this.domainPathUrl=a.substring(0,b+1)));this.isHtmlLabel=function(a){var c=this.view.getState(a);a=null!=c?c.style:this.getCellStyle(a); -return"1"==a.html||"wrap"==a[mxConstants.STYLE_WHITE_SPACE]};if(this.edgeMode){var n=null,p=null,q=null,w=null,c=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,b){if("mouseDown"==b.getProperty("eventName")&&this.isEnabled()){var d=b.getProperty("event");if(!mxEvent.isControlDown(d.getEvent())&&!mxEvent.isShiftDown(d.getEvent())){var g=d.getState();null!=g&&this.model.isEdge(g.cell)&&(n=new mxPoint(d.getGraphX(),d.getGraphY()),c=this.isCellSelected(g.cell),q=g,p=d,null!= -g.text&&null!=g.text.boundingBox&&mxUtils.contains(g.text.boundingBox,d.getGraphX(),d.getGraphY())?w=mxEvent.LABEL_HANDLE:(g=this.selectionCellsHandler.getHandler(g.cell),null!=g&&null!=g.bends&&0<g.bends.length&&(w=g.getHandleForEvent(d))))}}}));this.addMouseListener({mouseDown:function(a,c){},mouseMove:mxUtils.bind(this,function(a,b){var d=this.selectionCellsHandler.handlers.map,g;for(g in d)if(null!=d[g].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isControlDown(b.getEvent())&& -!mxEvent.isShiftDown(b.getEvent())&&!mxEvent.isAltDown(b.getEvent()))if(g=this.tolerance,null!=n&&null!=q&&null!=p){if(d=q,Math.abs(n.x-b.getGraphX())>g||Math.abs(n.y-b.getGraphY())>g){this.isCellSelected(d.cell)||this.setSelectionCell(d.cell);var h=this.selectionCellsHandler.getHandler(d.cell);if(null!=h&&null!=h.bends&&0<h.bends.length){var f=h.getHandleForEvent(p),l=this.view.getEdgeStyle(d);g=l==mxEdgeStyle.EntityRelation;c||w!=mxEvent.LABEL_HANDLE||(f=w);if(g&&0!=f&&f!=h.bends.length-1&&f!=mxEvent.LABEL_HANDLE)!g|| -null==d.visibleSourceState&&null==d.visibleTargetState||(this.graphHandler.reset(),b.consume());else if(f==mxEvent.LABEL_HANDLE||0==f||null!=d.visibleSourceState||f==h.bends.length-1||null!=d.visibleTargetState)g||f==mxEvent.LABEL_HANDLE||(g=d.absolutePoints,null!=g&&(null==l&&null==f||l==mxEdgeStyle.OrthConnector)&&(f=w,null==f&&(f=new mxRectangle(n.x,n.y),f.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(f,g[0].x,g[0].y)?f=0:mxUtils.contains(f,g[g.length-1].x,g[g.length-1].y)? -f=h.bends.length-1:null!=l&&(2==g.length||3==g.length&&(0==Math.round(g[0].x-g[1].x)&&0==Math.round(g[1].x-g[2].x)||0==Math.round(g[0].y-g[1].y)&&0==Math.round(g[1].y-g[2].y)))?f=2:(f=mxUtils.findNearestSegment(d,n.x,n.y),f=null==l?mxEvent.VIRTUAL_HANDLE-f:f+1))),null==f&&(f=mxEvent.VIRTUAL_HANDLE)),h.start(b.getGraphX(),b.getGraphX(),f),w=n=p=q=null,c=!1,b.consume(),this.graphHandler.reset()}}}else if(d=b.getState(),null!=d&&this.model.isEdge(d.cell)){h=null;g=d.absolutePoints;if(null!=g)if(f=new mxRectangle(b.getGraphX(), -b.getGraphY()),f.grow(mxEdgeHandler.prototype.handleImage.width/2),null!=d.text&&null!=d.text.boundingBox&&mxUtils.contains(d.text.boundingBox,b.getGraphX(),b.getGraphY()))h="move";else if(mxUtils.contains(f,g[0].x,g[0].y)||mxUtils.contains(f,g[g.length-1].x,g[g.length-1].y))h="pointer";else if(null!=d.visibleSourceState||null!=d.visibleTargetState)l=this.view.getEdgeStyle(d),h="crosshair",l!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(d)&&(l=mxUtils.findNearestSegment(d,b.getGraphX(),b.getGraphY()), -l<g.length-1&&0<=l&&(h=0==Math.round(g[l].x-g[l+1].x)?"col-resize":"row-resize"));null!=h&&d.setCursor(h)}}),mouseUp:mxUtils.bind(this,function(a,c){w=n=p=q=null})})}this.cellRenderer.getLabelValue=function(a){var c=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);a.view.graph.isHtmlLabel(a.cell)&&(c=1!=a.style.html?mxUtils.htmlEntities(c,!1):a.view.graph.sanitizeHtml(c));return c};if("undefined"!==typeof mxVertexHandler){this.setConnectable(!0);this.setDropEnabled(!0);this.setPanning(!0); -this.setTooltips(!0);this.setAllowLoops(!0);this.allowAutoPanning=!0;this.constrainChildren=this.resetEdgesOnConnect=!1;this.constrainRelativeChildren=!0;this.graphHandler.scrollOnMove=!1;this.graphHandler.scaleGrid=!0;this.connectionHandler.setCreateTarget(!1);this.connectionHandler.insertBeforeSource=!0;this.connectionHandler.isValidSource=function(a,c){return!1};this.alternateEdgeStyle="vertical";null==d&&this.loadStylesheet();var g=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates= -function(){var a=g.apply(this,arguments);if(this.graph.pageVisible){for(var c=[],b=this.graph.pageFormat,d=this.graph.pageScale,h=b.width*d,b=b.height*d,d=this.graph.view.translate,f=this.graph.view.scale,l=this.graph.getPageLayout(),m=0;m<l.width;m++)c.push(new mxRectangle(((l.x+m)*h+d.x)*f,(l.y*b+d.y)*f,h*f,b*f));for(m=0;m<l.height;m++)c.push(new mxRectangle((l.x*h+d.x)*f,((l.y+m)*b+d.y)*f,h*f,b*f));a=c.concat(a)}return a};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor= -function(a,c){return null==a.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(a){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};this.graphHandler.getCells=function(a){for(var c=mxGraphHandler.prototype.getCells.apply(this,arguments),b=[],d=0;d<c.length;d++){var g=this.graph.view.getState(c[d]),g=null!=g?g.style:this.graph.getCellStyle(c[d]); -"1"==mxUtils.getValue(g,"part","0")?(g=this.graph.model.getParent(c[d]),this.graph.model.isVertex(g)&&0>mxUtils.indexOf(c,g)&&b.push(g)):b.push(c[d])}return b};this.connectionHandler.createTargetVertex=function(a,c){var b=this.graph.view.getState(c),b=null!=b?b.style:this.graph.getCellStyle(c);mxUtils.getValue(b,"part",!1)&&(b=this.graph.model.getParent(c),this.graph.model.isVertex(b)&&(c=b));return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var h=new mxRubberband(this); -this.getRubberband=function(){return h};var l=(new Date).getTime(),t=0,m=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var a=this.currentState;m.apply(this,arguments);a!=this.currentState?(l=(new Date).getTime(),t=0):t=(new Date).getTime()-l};var r=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(a){return null!=this.currentState&&a.getState()==this.currentState&&2E3<t||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style, -"outlineConnect","1"))&&r.apply(this,arguments)};var x=this.isToggleEvent;this.isToggleEvent=function(a){return x.apply(this,arguments)||mxEvent.isShiftDown(a)};var v=h.isForceRubberbandEvent;h.isForceRubberbandEvent=function(a){return v.apply(this,arguments)||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==a.getState()&&mxEvent.isTouchEvent(a.getEvent())};var D=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&& -(D=this.container.style.cursor,this.container.style.cursor="move")}));this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.isEnabled()&&(this.container.style.cursor=D)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(a){return mxEvent.isMouseEvent(a.getEvent())};var y=this.click;this.click=function(a){var c=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);if(this.isEnabled()&&!c||a.isConsumed())return y.apply(this, -arguments);c=c?a.sourceState.cell:a.getCell();null!=c&&(c=this.getLinkForCell(c),null!=c&&(this.isCustomLink(c)?this.customLinkClicked(c):this.openLink(c)))};this.tooltipHandler.getStateForEvent=function(a){return a.sourceState};this.getCursorForMouseEvent=function(a){var c=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);return this.getCursorForCell(c?a.sourceState.cell:a.getCell())};var u=this.getCursorForCell;this.getCursorForCell=function(a){if(!this.isEnabled()||this.isCellLocked(a)){if(null!= -this.getLinkForCell(a))return"pointer";if(this.isCellLocked(a))return"default"}return u.apply(this,arguments)};this.selectRegion=function(a,c){var b=this.getAllCells(a.x,a.y,a.width,a.height);this.selectCellsForEvent(b,c);return b};this.getAllCells=function(a,c,b,d,g,h){h=null!=h?h:[];if(0<b||0<d){var f=this.getModel(),l=a+b,m=c+d;null==g&&(g=this.getCurrentRoot(),null==g&&(g=f.getRoot()));if(null!=g)for(var t=f.getChildCount(g),J=0;J<t;J++){var r=f.getChildAt(g,J),u=this.view.getState(r);if(null!= -u&&this.isCellVisible(r)&&"1"!=mxUtils.getValue(u.style,"locked","0")){var y=mxUtils.getValue(u.style,mxConstants.STYLE_ROTATION)||0;0!=y&&(u=mxUtils.getBoundingBox(u,y));(f.isEdge(r)||f.isVertex(r))&&u.x>=a&&u.y+u.height<=m&&u.y>=c&&u.x+u.width<=l&&h.push(r);this.getAllCells(a,c,b,d,r,h)}}}return h};var A=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,c,b){return this.graph.isCellSelected(a)?!1:A.apply(this,arguments)};this.isCellLocked=function(a){for(a= -this.view.getState(a);null!=a;){if("1"==mxUtils.getValue(a.style,"locked","0"))return!0;a=this.view.getState(this.model.getParent(a.cell))}return!1};var F=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,c){if("mouseDown"==c.getProperty("eventName")){var b=c.getProperty("event").getState();F=null==b||this.isSelectionEmpty()||this.isCellSelected(b.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(a,c){if(!mxEvent.isMultiTouchEvent(c)){var b= -c.getProperty("event"),d=c.getProperty("cell");null==d?(b=mxUtils.convertPoint(this.container,mxEvent.getClientX(b),mxEvent.getClientY(b)),h.start(b.x,b.y)):null!=F?this.addSelectionCells(F):1<this.getSelectionCount()&&this.isCellSelected(d)&&this.removeSelectionCell(d);F=null;c.consume()}}));this.connectionHandler.selectCells=function(a,c){this.graph.setSelectionCell(c||a)};this.connectionHandler.constraintHandler.isStateIgnored=function(a,c){return c&&a.view.graph.isCellSelected(a.cell)};this.selectionModel.addListener(mxEvent.CHANGE, -mxUtils.bind(this,function(){var a=this.connectionHandler.constraintHandler;null!=a.currentFocus&&a.isStateIgnored(a.currentFocus,!0)&&(a.currentFocus=null,a.constraints=null,a.destroyIcons());a.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var Q=this.updateMouseEvent;this.updateMouseEvent=function(a){a=Q.apply(this,arguments);null!=a.state&&this.isCellLocked(a.getCell())&&(a.state=null);return a}}this.currentTranslate=new mxPoint(0,0)}; +mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif";mxGraphView.prototype.gridSteps=4;mxGraphView.prototype.minGridSize=4;mxGraphView.prototype.gridColor="#e0e0e0";mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(a,b,e){return null}; +Graph=function(a,b,e,c,k){mxGraph.call(this,a,b,e,c);this.themes=k||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);a=this.baseUrl;b=a.indexOf("//");this.domainPathUrl=this.domainUrl="";0<b&&(b=a.indexOf("/",b+2),0<b&&(this.domainUrl=a.substring(0,b)),b=a.lastIndexOf("/"),0<b&&(this.domainPathUrl=a.substring(0,b+1)));this.isHtmlLabel=function(a){var d=this.view.getState(a);a=null!=d?d.style:this.getCellStyle(a); +return null!=a?"1"==a.html||"wrap"==a[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var m=null,q=null,r=null,v=null,z=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,d){if("mouseDown"==d.getProperty("eventName")&&this.isEnabled()){var b=d.getProperty("event");if(!mxEvent.isControlDown(b.getEvent())&&!mxEvent.isShiftDown(b.getEvent())){var c=b.getState();null!=c&&this.model.isEdge(c.cell)&&(m=new mxPoint(b.getGraphX(),b.getGraphY()),z=this.isCellSelected(c.cell),r= +c,q=b,null!=c.text&&null!=c.text.boundingBox&&mxUtils.contains(c.text.boundingBox,b.getGraphX(),b.getGraphY())?v=mxEvent.LABEL_HANDLE:(c=this.selectionCellsHandler.getHandler(c.cell),null!=c&&null!=c.bends&&0<c.bends.length&&(v=c.getHandleForEvent(b))))}}}));this.addMouseListener({mouseDown:function(a,d){},mouseMove:mxUtils.bind(this,function(a,d){var b=this.selectionCellsHandler.handlers.map,c;for(c in b)if(null!=b[c].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isControlDown(d.getEvent())&& +!mxEvent.isShiftDown(d.getEvent())&&!mxEvent.isAltDown(d.getEvent()))if(c=this.tolerance,null!=m&&null!=r&&null!=q){if(b=r,Math.abs(m.x-d.getGraphX())>c||Math.abs(m.y-d.getGraphY())>c){this.isCellSelected(b.cell)||this.setSelectionCell(b.cell);var f=this.selectionCellsHandler.getHandler(b.cell);if(null!=f&&null!=f.bends&&0<f.bends.length){var e=f.getHandleForEvent(q),g=this.view.getEdgeStyle(b);c=g==mxEdgeStyle.EntityRelation;z||v!=mxEvent.LABEL_HANDLE||(e=v);if(c&&0!=e&&e!=f.bends.length-1&&e!=mxEvent.LABEL_HANDLE)!c|| +null==b.visibleSourceState&&null==b.visibleTargetState||(this.graphHandler.reset(),d.consume());else if(e==mxEvent.LABEL_HANDLE||0==e||null!=b.visibleSourceState||e==f.bends.length-1||null!=b.visibleTargetState)c||e==mxEvent.LABEL_HANDLE||(c=b.absolutePoints,null!=c&&(null==g&&null==e||g==mxEdgeStyle.OrthConnector)&&(e=v,null==e&&(e=new mxRectangle(m.x,m.y),e.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(e,c[0].x,c[0].y)?e=0:mxUtils.contains(e,c[c.length-1].x,c[c.length-1].y)? +e=f.bends.length-1:null!=g&&(2==c.length||3==c.length&&(0==Math.round(c[0].x-c[1].x)&&0==Math.round(c[1].x-c[2].x)||0==Math.round(c[0].y-c[1].y)&&0==Math.round(c[1].y-c[2].y)))?e=2:(e=mxUtils.findNearestSegment(b,m.x,m.y),e=null==g?mxEvent.VIRTUAL_HANDLE-e:e+1))),null==e&&(e=mxEvent.VIRTUAL_HANDLE)),f.start(d.getGraphX(),d.getGraphX(),e),v=m=q=r=null,z=!1,d.consume(),this.graphHandler.reset()}}}else if(b=d.getState(),null!=b&&this.model.isEdge(b.cell)){f=null;c=b.absolutePoints;if(null!=c)if(e=new mxRectangle(d.getGraphX(), +d.getGraphY()),e.grow(mxEdgeHandler.prototype.handleImage.width/2),null!=b.text&&null!=b.text.boundingBox&&mxUtils.contains(b.text.boundingBox,d.getGraphX(),d.getGraphY()))f="move";else if(mxUtils.contains(e,c[0].x,c[0].y)||mxUtils.contains(e,c[c.length-1].x,c[c.length-1].y))f="pointer";else if(null!=b.visibleSourceState||null!=b.visibleTargetState)g=this.view.getEdgeStyle(b),f="crosshair",g!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(b)&&(g=mxUtils.findNearestSegment(b,d.getGraphX(),d.getGraphY()), +g<c.length-1&&0<=g&&(f=0==Math.round(c[g].x-c[g+1].x)?"col-resize":"row-resize"));null!=f&&b.setCursor(f)}}),mouseUp:mxUtils.bind(this,function(a,d){v=m=q=r=null})})}this.cellRenderer.getLabelValue=function(a){var d=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);a.view.graph.isHtmlLabel(a.cell)&&(d=1!=a.style.html?mxUtils.htmlEntities(d,!1):a.view.graph.sanitizeHtml(d));return d};if("undefined"!==typeof mxVertexHandler){this.setConnectable(!0);this.setDropEnabled(!0);this.setPanning(!0); +this.setTooltips(!0);this.setAllowLoops(!0);this.allowAutoPanning=!0;this.constrainChildren=this.resetEdgesOnConnect=!1;this.constrainRelativeChildren=!0;this.graphHandler.scrollOnMove=!1;this.graphHandler.scaleGrid=!0;this.connectionHandler.setCreateTarget(!1);this.connectionHandler.insertBeforeSource=!0;this.connectionHandler.isValidSource=function(a,d){return!1};this.alternateEdgeStyle="vertical";null==c&&this.loadStylesheet();var d=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates= +function(){var a=d.apply(this,arguments);if(this.graph.pageVisible){for(var b=[],c=this.graph.pageFormat,f=this.graph.pageScale,e=c.width*f,c=c.height*f,f=this.graph.view.translate,g=this.graph.view.scale,l=this.graph.getPageLayout(),n=0;n<l.width;n++)b.push(new mxRectangle(((l.x+n)*e+f.x)*g,(l.y*c+f.y)*g,e*g,c*g));for(n=0;n<l.height;n++)b.push(new mxRectangle((l.x*e+f.x)*g,((l.y+n)*c+f.y)*g,e*g,c*g));a=b.concat(a)}return a};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor= +function(a,d){return null==a.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(a){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};this.graphHandler.getCells=function(a){for(var d=mxGraphHandler.prototype.getCells.apply(this,arguments),b=[],c=0;c<d.length;c++){var f=this.graph.view.getState(d[c]),f=null!=f?f.style:this.graph.getCellStyle(d[c]); +"1"==mxUtils.getValue(f,"part","0")?(f=this.graph.model.getParent(d[c]),this.graph.model.isVertex(f)&&0>mxUtils.indexOf(d,f)&&b.push(f)):b.push(d[c])}return b};this.connectionHandler.createTargetVertex=function(a,d){var b=this.graph.view.getState(d),b=null!=b?b.style:this.graph.getCellStyle(d);mxUtils.getValue(b,"part",!1)&&(b=this.graph.model.getParent(d),this.graph.model.isVertex(b)&&(d=b));return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var f=new mxRubberband(this); +this.getRubberband=function(){return f};var l=(new Date).getTime(),n=0,g=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var a=this.currentState;g.apply(this,arguments);a!=this.currentState?(l=(new Date).getTime(),n=0):n=(new Date).getTime()-l};var p=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(a){return null!=this.currentState&&a.getState()==this.currentState&&2E3<n||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style, +"outlineConnect","1"))&&p.apply(this,arguments)};var B=this.isToggleEvent;this.isToggleEvent=function(a){return B.apply(this,arguments)||mxEvent.isShiftDown(a)};var x=f.isForceRubberbandEvent;f.isForceRubberbandEvent=function(a){return x.apply(this,arguments)||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==a.getState()&&mxEvent.isTouchEvent(a.getEvent())};var t=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&& +(t=this.container.style.cursor,this.container.style.cursor="move")}));this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.isEnabled()&&(this.container.style.cursor=t)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(a){return mxEvent.isMouseEvent(a.getEvent())};var y=this.click;this.click=function(a){var d=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);if(this.isEnabled()&&!d||a.isConsumed())return y.apply(this, +arguments);d=d?a.sourceState.cell:a.getCell();null!=d&&(d=this.getLinkForCell(d),null!=d&&(this.isCustomLink(d)?this.customLinkClicked(d):this.openLink(d)))};this.tooltipHandler.getStateForEvent=function(a){return a.sourceState};this.getCursorForMouseEvent=function(a){var d=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);return this.getCursorForCell(d?a.sourceState.cell:a.getCell())};var u=this.getCursorForCell;this.getCursorForCell=function(a){if(!this.isEnabled()||this.isCellLocked(a)){if(null!= +this.getLinkForCell(a))return"pointer";if(this.isCellLocked(a))return"default"}return u.apply(this,arguments)};this.selectRegion=function(a,d){var b=this.getAllCells(a.x,a.y,a.width,a.height);this.selectCellsForEvent(b,d);return b};this.getAllCells=function(a,d,b,c,f,e){e=null!=e?e:[];if(0<b||0<c){var g=this.getModel(),l=a+b,n=d+c;null==f&&(f=this.getCurrentRoot(),null==f&&(f=g.getRoot()));if(null!=f)for(var p=g.getChildCount(f),u=0;u<p;u++){var y=g.getChildAt(f,u),t=this.view.getState(y);if(null!= +t&&this.isCellVisible(y)&&"1"!=mxUtils.getValue(t.style,"locked","0")){var k=mxUtils.getValue(t.style,mxConstants.STYLE_ROTATION)||0;0!=k&&(t=mxUtils.getBoundingBox(t,k));(g.isEdge(y)||g.isVertex(y))&&t.x>=a&&t.y+t.height<=n&&t.y>=d&&t.x+t.width<=l&&e.push(y);this.getAllCells(a,d,b,c,y,e)}}}return e};var A=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,d,b){return this.graph.isCellSelected(a)?!1:A.apply(this,arguments)};this.isCellLocked=function(a){for(a= +this.view.getState(a);null!=a;){if("1"==mxUtils.getValue(a.style,"locked","0"))return!0;a=this.view.getState(this.model.getParent(a.cell))}return!1};var D=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,d){if("mouseDown"==d.getProperty("eventName")){var b=d.getProperty("event").getState();D=null==b||this.isSelectionEmpty()||this.isCellSelected(b.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(a,d){if(!mxEvent.isMultiTouchEvent(d)){var b= +d.getProperty("event"),c=d.getProperty("cell");null==c?(b=mxUtils.convertPoint(this.container,mxEvent.getClientX(b),mxEvent.getClientY(b)),f.start(b.x,b.y)):null!=D?this.addSelectionCells(D):1<this.getSelectionCount()&&this.isCellSelected(c)&&this.removeSelectionCell(c);D=null;d.consume()}}));this.connectionHandler.selectCells=function(a,d){this.graph.setSelectionCell(d||a)};this.connectionHandler.constraintHandler.isStateIgnored=function(a,d){return d&&a.view.graph.isCellSelected(a.cell)};this.selectionModel.addListener(mxEvent.CHANGE, +mxUtils.bind(this,function(){var a=this.connectionHandler.constraintHandler;null!=a.currentFocus&&a.isStateIgnored(a.currentFocus,!0)&&(a.currentFocus=null,a.constraints=null,a.destroyIcons());a.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var U=this.updateMouseEvent;this.updateMouseEvent=function(a){a=U.apply(this,arguments);null!=a.state&&this.isCellLocked(a.getCell())&&(a.state=null);return a}}this.currentTranslate=new mxPoint(0,0)}; Graph.touchStyle=mxClient.IS_TOUCH||mxClient.IS_FF&&mxClient.IS_WIN||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||null==window.urlParams||"1"==urlParams.touch;Graph.fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList&&(null==window.urlParams||"0"!=urlParams.filesupport);Graph.lineJumpsEnabled=!0;Graph.defaultJumpSize=6; -Graph.createSvgImage=function(a,b,f){f=unescape(encodeURIComponent('<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'+a+'px" height="'+b+'px" version="1.1">'+f+"</svg>"));return new mxImage("data:image/svg+xml;base64,"+(window.btoa?btoa(f):Base64.encode(f,!0)),a,b)};mxUtils.extend(Graph,mxGraph);Graph.prototype.minFitScale=null;Graph.prototype.maxFitScale=null; +Graph.createSvgImage=function(a,b,e){e=unescape(encodeURIComponent('<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'+a+'px" height="'+b+'px" version="1.1">'+e+"</svg>"));return new mxImage("data:image/svg+xml;base64,"+(window.btoa?btoa(e):Base64.encode(e,!0)),a,b)};mxUtils.extend(Graph,mxGraph);Graph.prototype.minFitScale=null;Graph.prototype.maxFitScale=null; Graph.prototype.linkPolicy="frame"==urlParams.target?"blank":urlParams.target||"auto";Graph.prototype.linkTarget="frame"==urlParams.target?"_self":"_blank";Graph.prototype.linkRelation="nofollow noopener noreferrer";Graph.prototype.defaultScrollbars=!mxClient.IS_IOS;Graph.prototype.defaultPageVisible=!0;Graph.prototype.lightbox=!1;Graph.prototype.defaultPageBackgroundColor="#ffffff";Graph.prototype.defaultPageBorderColor="#ffffff";Graph.prototype.scrollTileSize=new mxRectangle(0,0,400,400); Graph.prototype.transparentBackground=!0;Graph.prototype.defaultEdgeLength=80;Graph.prototype.edgeMode=!1;Graph.prototype.connectionArrowsEnabled=!0;Graph.prototype.placeholderPattern=RegExp("%(date{.*}|[^%^{^}]+)%","g");Graph.prototype.absoluteUrlPattern=/^(?:[a-z]+:)?\/\//i;Graph.prototype.defaultThemeName="default";Graph.prototype.defaultThemes={};Graph.prototype.baseUrl=null!=urlParams.base?decodeURIComponent(urlParams.base):(window!=window.top?document.referrer:document.location.toString()).split("#")[0]; Graph.prototype.editAfterInsert=!1;Graph.prototype.builtInProperties=["label","tooltip","placeholders","placeholder"]; -Graph.prototype.init=function(a){mxGraph.prototype.init.apply(this,arguments);this.cellRenderer.initializeLabel=function(a,f){mxCellRenderer.prototype.initializeLabel.apply(this,arguments);var b=a.view.graph.tolerance,k=!0,n=null,p=mxUtils.bind(this,function(a){k=!0;n=new mxPoint(mxEvent.getClientX(a),mxEvent.getClientY(a))}),q=mxUtils.bind(this,function(a){k=k&&null!=n&&Math.abs(n.x-mxEvent.getClientX(a))<b&&Math.abs(n.y-mxEvent.getClientY(a))<b}),w=mxUtils.bind(this,function(c){if(k)for(var b=mxEvent.getSource(c);null!= -b&&b!=f.node;){if("a"==b.nodeName.toLowerCase()){a.view.graph.labelLinkClicked(a,b,c);break}b=b.parentNode}});mxEvent.addGestureListeners(f.node,p,q,w);mxEvent.addListener(f.node,"click",function(a){mxEvent.consume(a)})};this.initLayoutManager()}; -(function(){Graph.prototype.useCssTransforms=!1;Graph.prototype.currentScale=1;Graph.prototype.currentTranslate=new mxPoint(0,0);Graph.prototype.isCssTransformsSupported=function(){return this.dialect==mxConstants.DIALECT_SVG&&!mxClient.NO_FO};Graph.prototype.getCellAt=function(a,b,f,p,q,w){this.useCssTransforms&&(a=a/this.currentScale-this.currentTranslate.x,b=b/this.currentScale-this.currentTranslate.y);return this.getScaledCellAt.apply(this,arguments)};Graph.prototype.getScaledCellAt=function(a, -b,f,p,q,w){p=null!=p?p:!0;q=null!=q?q:!0;null==f&&(f=this.getCurrentRoot(),null==f&&(f=this.getModel().getRoot()));if(null!=f)for(var c=this.model.getChildCount(f)-1;0<=c;c--){var d=this.model.getChildAt(f,c),h=this.getScaledCellAt(a,b,d,p,q,w);if(null!=h)return h;if(this.isCellVisible(d)&&(q&&this.model.isEdge(d)||p&&this.model.isVertex(d))&&(h=this.view.getState(d),null!=h&&(null==w||!w(h,a,b))&&this.intersects(h,a,b)))return d}return null};mxCellHighlight.prototype.getStrokeWidth=function(a){a= -this.strokeWidth;this.graph.useCssTransforms&&(a/=this.graph.currentScale);return a};mxGraphView.prototype.getGraphBounds=function(){var a=this.graphBounds;if(this.graph.useCssTransforms)var b=this.graph.currentTranslate,f=this.graph.currentScale,a=new mxRectangle((a.x+b.x)*f,(a.y+b.y)*f,a.width*f,a.height*f);return a};mxGraphView.prototype.viewStateChanged=function(){this.graph.useCssTransforms?this.validate():this.revalidate();this.graph.sizeDidChange()};var a=mxGraphView.prototype.validate;mxGraphView.prototype.validate= +Graph.prototype.init=function(a){mxGraph.prototype.init.apply(this,arguments);this.cellRenderer.initializeLabel=function(a,e){mxCellRenderer.prototype.initializeLabel.apply(this,arguments);var b=a.view.graph.tolerance,k=!0,m=null,q=mxUtils.bind(this,function(a){k=!0;m=new mxPoint(mxEvent.getClientX(a),mxEvent.getClientY(a))}),r=mxUtils.bind(this,function(a){k=k&&null!=m&&Math.abs(m.x-mxEvent.getClientX(a))<b&&Math.abs(m.y-mxEvent.getClientY(a))<b}),v=mxUtils.bind(this,function(b){if(k)for(var d=mxEvent.getSource(b);null!= +d&&d!=e.node;){if("a"==d.nodeName.toLowerCase()){a.view.graph.labelLinkClicked(a,d,b);break}d=d.parentNode}});mxEvent.addGestureListeners(e.node,q,r,v);mxEvent.addListener(e.node,"click",function(a){mxEvent.consume(a)})};this.initLayoutManager()}; +(function(){Graph.prototype.useCssTransforms=!1;Graph.prototype.currentScale=1;Graph.prototype.currentTranslate=new mxPoint(0,0);Graph.prototype.isCssTransformsSupported=function(){return this.dialect==mxConstants.DIALECT_SVG&&!mxClient.NO_FO};Graph.prototype.getCellAt=function(a,b,e,q,r,v){this.useCssTransforms&&(a=a/this.currentScale-this.currentTranslate.x,b=b/this.currentScale-this.currentTranslate.y);return this.getScaledCellAt.apply(this,arguments)};Graph.prototype.getScaledCellAt=function(a, +b,e,q,r,v){q=null!=q?q:!0;r=null!=r?r:!0;null==e&&(e=this.getCurrentRoot(),null==e&&(e=this.getModel().getRoot()));if(null!=e)for(var c=this.model.getChildCount(e)-1;0<=c;c--){var d=this.model.getChildAt(e,c),f=this.getScaledCellAt(a,b,d,q,r,v);if(null!=f)return f;if(this.isCellVisible(d)&&(r&&this.model.isEdge(d)||q&&this.model.isVertex(d))&&(f=this.view.getState(d),null!=f&&(null==v||!v(f,a,b))&&this.intersects(f,a,b)))return d}return null};mxCellHighlight.prototype.getStrokeWidth=function(a){a= +this.strokeWidth;this.graph.useCssTransforms&&(a/=this.graph.currentScale);return a};mxGraphView.prototype.getGraphBounds=function(){var a=this.graphBounds;if(this.graph.useCssTransforms)var b=this.graph.currentTranslate,e=this.graph.currentScale,a=new mxRectangle((a.x+b.x)*e,(a.y+b.y)*e,a.width*e,a.height*e);return a};mxGraphView.prototype.viewStateChanged=function(){this.graph.useCssTransforms?this.validate():this.revalidate();this.graph.sizeDidChange()};var a=mxGraphView.prototype.validate;mxGraphView.prototype.validate= function(b){this.graph.useCssTransforms&&(this.graph.currentScale=this.scale,this.graph.currentTranslate.x=this.translate.x,this.graph.currentTranslate.y=this.translate.y,this.scale=1,this.translate.x=0,this.translate.y=0);a.apply(this,arguments);this.graph.useCssTransforms&&(this.graph.updateCssTransform(),this.scale=this.graph.currentScale,this.translate.x=this.graph.currentTranslate.x,this.translate.y=this.graph.currentTranslate.y)};Graph.prototype.updateCssTransform=function(){var a=this.view.getDrawPane(); -if(null!=a)if(a=a.parentNode,this.useCssTransforms){var b=a.getAttribute("transform");a.setAttribute("transformOrigin","0 0");a.setAttribute("transform","scale("+this.currentScale+","+this.currentScale+")translate("+this.currentTranslate.x+","+this.currentTranslate.y+")");if(b!=a.getAttribute("transform"))try{if(mxClient.IS_EDGE){var f=a.style.display;a.style.display="none";a.getBBox();a.style.display=f}}catch(p){}}else a.removeAttribute("transformOrigin"),a.removeAttribute("transform")};var b=mxGraphView.prototype.validateBackgroundPage; -mxGraphView.prototype.validateBackgroundPage=function(){var a=this.graph.useCssTransforms,f=this.scale,n=this.translate;a&&(this.scale=this.graph.currentScale,this.translate=this.graph.currentTranslate);b.apply(this,arguments);a&&(this.scale=f,this.translate=n)};var f=mxGraph.prototype.updatePageBreaks;mxGraph.prototype.updatePageBreaks=function(a,b,n){var d=this.useCssTransforms,k=this.view.scale,w=this.view.translate;d&&(this.view.scale=1,this.view.translate=new mxPoint(0,0),this.useCssTransforms= -!1);f.apply(this,arguments);d&&(this.view.scale=k,this.view.translate=w,this.useCssTransforms=!0)}})();Graph.prototype.isLightboxView=function(){return this.lightbox};Graph.prototype.labelLinkClicked=function(a,b,f){b=b.getAttribute("href");if(null!=b&&!this.isCustomLink(b)&&mxEvent.isLeftMouseButton(f)&&!mxEvent.isPopupTrigger(f)||mxEvent.isTouchEvent(f)){if(!this.isEnabled()||this.isCellLocked(a.cell))a=this.isBlankLink(b)?this.linkTarget:"_top",this.openLink(this.getAbsoluteUrl(b),a);mxEvent.consume(f)}}; -Graph.prototype.openLink=function(a,b,f){var d=window;"_self"==b&&window!=window.top?window.location.href=a:a.substring(0,this.baseUrl.length)==this.baseUrl&&"#"==a.charAt(this.baseUrl.length)&&"_top"==b&&window==window.top?(a=a.split("#")[1],window.location.hash=="#"+a&&(window.location.hash=""),window.location.hash=a):(d=window.open(a,b),null==d||f||(d.opener=null));return d};Graph.prototype.getLinkTitle=function(a){return a.substring(a.lastIndexOf("/")+1)}; +if(null!=a)if(a=a.parentNode,this.useCssTransforms){var b=a.getAttribute("transform");a.setAttribute("transformOrigin","0 0");a.setAttribute("transform","scale("+this.currentScale+","+this.currentScale+")translate("+this.currentTranslate.x+","+this.currentTranslate.y+")");if(b!=a.getAttribute("transform"))try{if(mxClient.IS_EDGE){var e=a.style.display;a.style.display="none";a.getBBox();a.style.display=e}}catch(q){}}else a.removeAttribute("transformOrigin"),a.removeAttribute("transform")};var b=mxGraphView.prototype.validateBackgroundPage; +mxGraphView.prototype.validateBackgroundPage=function(){var a=this.graph.useCssTransforms,e=this.scale,m=this.translate;a&&(this.scale=this.graph.currentScale,this.translate=this.graph.currentTranslate);b.apply(this,arguments);a&&(this.scale=e,this.translate=m)};var e=mxGraph.prototype.updatePageBreaks;mxGraph.prototype.updatePageBreaks=function(a,b,m){var c=this.useCssTransforms,k=this.view.scale,v=this.view.translate;c&&(this.view.scale=1,this.view.translate=new mxPoint(0,0),this.useCssTransforms= +!1);e.apply(this,arguments);c&&(this.view.scale=k,this.view.translate=v,this.useCssTransforms=!0)}})();Graph.prototype.isLightboxView=function(){return this.lightbox};Graph.prototype.labelLinkClicked=function(a,b,e){b=b.getAttribute("href");if(null!=b&&!this.isCustomLink(b)&&mxEvent.isLeftMouseButton(e)&&!mxEvent.isPopupTrigger(e)||mxEvent.isTouchEvent(e)){if(!this.isEnabled()||this.isCellLocked(a.cell))a=this.isBlankLink(b)?this.linkTarget:"_top",this.openLink(this.getAbsoluteUrl(b),a);mxEvent.consume(e)}}; +Graph.prototype.openLink=function(a,b,e){var c=window;if("_self"==b&&window!=window.top)window.location.href=a;else if(a.substring(0,this.baseUrl.length)==this.baseUrl&&"#"==a.charAt(this.baseUrl.length)&&"_top"==b&&window==window.top)a=a.split("#")[1],window.location.hash=="#"+a&&(window.location.hash=""),window.location.hash=a;else{c=window.open(a,b);try{null==c||e||(c.opener=null)}catch(k){}}return c};Graph.prototype.getLinkTitle=function(a){return a.substring(a.lastIndexOf("/")+1)}; Graph.prototype.isCustomLink=function(a){return"data:"==a.substring(0,5)};Graph.prototype.customLinkClicked=function(a){return!1};Graph.prototype.isExternalProtocol=function(a){return"mailto:"===a.substring(0,7)};Graph.prototype.isBlankLink=function(a){return!this.isExternalProtocol(a)&&("blank"===this.linkPolicy||"self"!==this.linkPolicy&&!this.isRelativeUrl(a)&&a.substring(0,this.domainUrl.length)!==this.domainUrl)}; Graph.prototype.isRelativeUrl=function(a){return null!=a&&!this.absoluteUrlPattern.test(a)&&"data:"!==a.substring(0,5)&&!this.isExternalProtocol(a)}; Graph.prototype.initLayoutManager=function(){this.layoutManager=new mxLayoutManager(this);this.layoutManager.getLayout=function(a){var b=this.graph.view.getState(a);a=null!=b?b.style:this.graph.getCellStyle(a);if(null!=a){if("stackLayout"==a.childLayout)return b=new mxStackLayout(this.graph,!0),b.resizeParentMax="1"==mxUtils.getValue(a,"resizeParentMax","1"),b.horizontal="1"==mxUtils.getValue(a,"horizontalStack","1"),b.resizeParent="1"==mxUtils.getValue(a,"resizeParent","1"),b.resizeLast="1"==mxUtils.getValue(a, "resizeLast","0"),b.spacing=a.stackSpacing||b.spacing,b.border=a.stackBorder||b.border,b.marginLeft=a.marginLeft||0,b.marginRight=a.marginRight||0,b.marginTop=a.marginTop||0,b.marginBottom=a.marginBottom||0,b.fill=!0,b;if("treeLayout"==a.childLayout)return b=new mxCompactTreeLayout(this.graph),b.horizontal="1"==mxUtils.getValue(a,"horizontalTree","1"),b.resizeParent="1"==mxUtils.getValue(a,"resizeParent","1"),b.groupPadding=mxUtils.getValue(a,"parentPadding",20),b.levelDistance=mxUtils.getValue(a, "treeLevelDistance",30),b.maintainParentLocation=!0,b.edgeRouting=!1,b.resetEdges=!1,b;if("flowLayout"==a.childLayout)return b=new mxHierarchicalLayout(this.graph,mxUtils.getValue(a,"flowOrientation",mxConstants.DIRECTION_EAST)),b.resizeParent="1"==mxUtils.getValue(a,"resizeParent","1"),b.parentBorder=mxUtils.getValue(a,"parentPadding",20),b.maintainParentLocation=!0,b.intraCellSpacing=mxUtils.getValue(a,"intraCellSpacing",mxHierarchicalLayout.prototype.intraCellSpacing),b.interRankCellSpacing=mxUtils.getValue(a, "interRankCellSpacing",mxHierarchicalLayout.prototype.interRankCellSpacing),b.interHierarchySpacing=mxUtils.getValue(a,"interHierarchySpacing",mxHierarchicalLayout.prototype.interHierarchySpacing),b.parallelEdgeSpacing=mxUtils.getValue(a,"parallelEdgeSpacing",mxHierarchicalLayout.prototype.parallelEdgeSpacing),b}return null}};Graph.prototype.getPageSize=function(){return this.pageVisible?new mxRectangle(0,0,this.pageFormat.width*this.pageScale,this.pageFormat.height*this.pageScale):this.scrollTileSize}; -Graph.prototype.getPageLayout=function(){var a=this.getPageSize(),b=this.getGraphBounds();if(0==b.width||0==b.height)return new mxRectangle(0,0,1,1);var f=Math.ceil(b.x/this.view.scale-this.view.translate.x),d=Math.ceil(b.y/this.view.scale-this.view.translate.y),k=Math.floor(f/a.width),n=Math.floor(d/a.height);return new mxRectangle(k,n,Math.ceil((f+Math.floor(b.width/this.view.scale))/a.width)-k,Math.ceil((d+Math.floor(b.height/this.view.scale))/a.height)-n)}; -Graph.prototype.sanitizeHtml=function(a,b){return html_sanitize(a,function(a){return null!=a&&"javascript:"!==a.toString().toLowerCase().substring(0,11)?a:null},function(a){return a})};Graph.prototype.updatePlaceholders=function(){var a=!1,b;for(b in this.model.cells){var f=this.model.cells[b];this.isReplacePlaceholders(f)&&(this.view.invalidate(f,!1,!1),a=!0)}a&&this.view.validate()};Graph.prototype.isReplacePlaceholders=function(a){return null!=a.value&&"object"==typeof a.value&&"1"==a.value.getAttribute("placeholders")}; +Graph.prototype.getPageLayout=function(){var a=this.getPageSize(),b=this.getGraphBounds();if(0==b.width||0==b.height)return new mxRectangle(0,0,1,1);var e=Math.ceil(b.x/this.view.scale-this.view.translate.x),c=Math.ceil(b.y/this.view.scale-this.view.translate.y),k=Math.floor(e/a.width),m=Math.floor(c/a.height);return new mxRectangle(k,m,Math.ceil((e+Math.floor(b.width/this.view.scale))/a.width)-k,Math.ceil((c+Math.floor(b.height/this.view.scale))/a.height)-m)}; +Graph.prototype.sanitizeHtml=function(a,b){return html_sanitize(a,function(a){return null!=a&&"javascript:"!==a.toString().toLowerCase().substring(0,11)?a:null},function(a){return a})};Graph.prototype.updatePlaceholders=function(){var a=!1,b;for(b in this.model.cells){var e=this.model.cells[b];this.isReplacePlaceholders(e)&&(this.view.invalidate(e,!1,!1),a=!0)}a&&this.view.validate()};Graph.prototype.isReplacePlaceholders=function(a){return null!=a.value&&"object"==typeof a.value&&"1"==a.value.getAttribute("placeholders")}; Graph.prototype.isZoomWheelEvent=function(a){return mxEvent.isAltDown(a)||mxEvent.isMetaDown(a)&&mxClient.IS_MAC||mxEvent.isControlDown(a)&&!mxClient.IS_MAC};Graph.prototype.isTransparentClickEvent=function(a){return mxEvent.isAltDown(a)};Graph.prototype.isIgnoreTerminalEvent=function(a){return mxEvent.isShiftDown(a)&&mxEvent.isControlDown(a)}; -Graph.prototype.isSplitTarget=function(a,b,f){return!this.model.isEdge(b[0])&&!mxEvent.isAltDown(f)&&!mxEvent.isShiftDown(f)&&mxGraph.prototype.isSplitTarget.apply(this,arguments)};Graph.prototype.getLabel=function(a){var b=mxGraph.prototype.getLabel.apply(this,arguments);null!=b&&this.isReplacePlaceholders(a)&&null==a.getAttribute("placeholder")&&(b=this.replacePlaceholders(a,b));return b}; +Graph.prototype.isSplitTarget=function(a,b,e){return!this.model.isEdge(b[0])&&!mxEvent.isAltDown(e)&&!mxEvent.isShiftDown(e)&&mxGraph.prototype.isSplitTarget.apply(this,arguments)};Graph.prototype.getLabel=function(a){var b=mxGraph.prototype.getLabel.apply(this,arguments);null!=b&&this.isReplacePlaceholders(a)&&null==a.getAttribute("placeholder")&&(b=this.replacePlaceholders(a,b));return b}; Graph.prototype.isLabelMovable=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return!this.isCellLocked(a)&&(this.model.isEdge(a)&&this.edgeLabelsMovable||this.model.isVertex(a)&&(this.vertexLabelsMovable||"1"==mxUtils.getValue(b,"labelMovable","0")))};Graph.prototype.setGridSize=function(a){this.gridSize=a;this.fireEvent(new mxEventObject("gridSizeChanged"))}; Graph.prototype.getGlobalVariable=function(a){var b=null;"date"==a?b=(new Date).toLocaleDateString():"time"==a?b=(new Date).toLocaleTimeString():"timestamp"==a?b=(new Date).toLocaleString():"date{"==a.substring(0,5)&&(a=a.substring(5,a.length-1),b=this.formatDate(new Date,a));return b}; -Graph.prototype.formatDate=function(a,b,f){null==this.dateFormatCache&&(this.dateFormatCache={i18n:{dayNames:"Sun Mon Tue Wed Thu Fri Sat Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),monthNames:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec January February March April May June July August September October November December".split(" ")},masks:{"default":"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy", -shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:ss",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"}});var d=this.dateFormatCache,k=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,n=/[^-+\dA-Z]/g,p=function(a,c){a=String(a);for(c=c||2;a.length<c;)a="0"+a;return a};1!=arguments.length||"[object String]"!=Object.prototype.toString.call(a)|| -/\d/.test(a)||(b=a,a=void 0);a=a?new Date(a):new Date;if(isNaN(a))throw SyntaxError("invalid date");b=String(d.masks[b]||b||d.masks["default"]);"UTC:"==b.slice(0,4)&&(b=b.slice(4),f=!0);var q=f?"getUTC":"get",w=a[q+"Date"](),c=a[q+"Day"](),g=a[q+"Month"](),h=a[q+"FullYear"](),l=a[q+"Hours"](),t=a[q+"Minutes"](),m=a[q+"Seconds"](),q=a[q+"Milliseconds"](),r=f?0:a.getTimezoneOffset(),x={d:w,dd:p(w),ddd:d.i18n.dayNames[c],dddd:d.i18n.dayNames[c+7],m:g+1,mm:p(g+1),mmm:d.i18n.monthNames[g],mmmm:d.i18n.monthNames[g+ -12],yy:String(h).slice(2),yyyy:h,h:l%12||12,hh:p(l%12||12),H:l,HH:p(l),M:t,MM:p(t),s:m,ss:p(m),l:p(q,3),L:p(99<q?Math.round(q/10):q),t:12>l?"a":"p",tt:12>l?"am":"pm",T:12>l?"A":"P",TT:12>l?"AM":"PM",Z:f?"UTC":(String(a).match(k)||[""]).pop().replace(n,""),o:(0<r?"-":"+")+p(100*Math.floor(Math.abs(r)/60)+Math.abs(r)%60,4),S:["th","st","nd","rd"][3<w%10?0:(10!=w%100-w%10)*w%10]};return b.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(a){return a in x?x[a]:a.slice(1, +Graph.prototype.formatDate=function(a,b,e){null==this.dateFormatCache&&(this.dateFormatCache={i18n:{dayNames:"Sun Mon Tue Wed Thu Fri Sat Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),monthNames:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec January February March April May June July August September October November December".split(" ")},masks:{"default":"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy", +shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:ss",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"}});var c=this.dateFormatCache,k=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,m=/[^-+\dA-Z]/g,q=function(a,d){a=String(a);for(d=d||2;a.length<d;)a="0"+a;return a};1!=arguments.length||"[object String]"!=Object.prototype.toString.call(a)|| +/\d/.test(a)||(b=a,a=void 0);a=a?new Date(a):new Date;if(isNaN(a))throw SyntaxError("invalid date");b=String(c.masks[b]||b||c.masks["default"]);"UTC:"==b.slice(0,4)&&(b=b.slice(4),e=!0);var r=e?"getUTC":"get",v=a[r+"Date"](),z=a[r+"Day"](),d=a[r+"Month"](),f=a[r+"FullYear"](),l=a[r+"Hours"](),n=a[r+"Minutes"](),g=a[r+"Seconds"](),r=a[r+"Milliseconds"](),p=e?0:a.getTimezoneOffset(),B={d:v,dd:q(v),ddd:c.i18n.dayNames[z],dddd:c.i18n.dayNames[z+7],m:d+1,mm:q(d+1),mmm:c.i18n.monthNames[d],mmmm:c.i18n.monthNames[d+ +12],yy:String(f).slice(2),yyyy:f,h:l%12||12,hh:q(l%12||12),H:l,HH:q(l),M:n,MM:q(n),s:g,ss:q(g),l:q(r,3),L:q(99<r?Math.round(r/10):r),t:12>l?"a":"p",tt:12>l?"am":"pm",T:12>l?"A":"P",TT:12>l?"AM":"PM",Z:e?"UTC":(String(a).match(k)||[""]).pop().replace(m,""),o:(0<p?"-":"+")+q(100*Math.floor(Math.abs(p)/60)+Math.abs(p)%60,4),S:["th","st","nd","rd"][3<v%10?0:(10!=v%100-v%10)*v%10]};return b.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(a){return a in B?B[a]:a.slice(1, a.length-1)})}; -Graph.prototype.createLayersDialog=function(){var a=document.createElement("div");a.style.position="absolute";for(var b=this.getModel(),f=b.getChildCount(b.root),d=0;d<f;d++)mxUtils.bind(this,function(d){var f=document.createElement("div");f.style.overflow="hidden";f.style.textOverflow="ellipsis";f.style.padding="2px";f.style.whiteSpace="nowrap";var k=document.createElement("input");k.style.display="inline-block";k.setAttribute("type","checkbox");b.isVisible(d)&&(k.setAttribute("checked","checked"), -k.defaultChecked=!0);f.appendChild(k);var q=this.convertValueToString(d)||mxResources.get("background")||"Background";f.setAttribute("title",q);mxUtils.write(f,q);a.appendChild(f);mxEvent.addListener(k,"click",function(){null!=k.getAttribute("checked")?k.removeAttribute("checked"):k.setAttribute("checked","checked");b.setVisible(d,k.checked)})})(b.getChildAt(b.root,d));return a}; -Graph.prototype.replacePlaceholders=function(a,b){var f=[];if(null!=b){for(var d=0;match=this.placeholderPattern.exec(b);){var k=match[0];if(2<k.length&&"%label%"!=k&&"%tooltip%"!=k){var n=null;if(match.index>d&&"%"==b.charAt(match.index-1))n=k.substring(1);else{var p=k.substring(1,k.length-1);if(0>p.indexOf("{"))for(var q=a;null==n&&null!=q;)null!=q.value&&"object"==typeof q.value&&(n=q.hasAttribute(p)?null!=q.getAttribute(p)?q.getAttribute(p):"":null),q=this.model.getParent(q);null==n&&(n=this.getGlobalVariable(p))}f.push(b.substring(d, -match.index)+(null!=n?n:k));d=match.index+k.length}}f.push(b.substring(d))}return f.join("")};Graph.prototype.restoreSelection=function(a){if(null!=a&&0<a.length){for(var b=[],f=0;f<a.length;f++){var d=this.model.getCell(a[f].id);null!=d&&b.push(d)}this.setSelectionCells(b)}else this.clearSelection()}; -Graph.prototype.selectCellsForConnectVertex=function(a,b,f){2==a.length&&this.model.isVertex(a[1])?(this.setSelectionCell(a[1]),null!=f&&(mxEvent.isTouchEvent(b)?f.update(f.getState(this.view.getState(a[1]))):f.reset()),this.scrollCellToVisible(a[1])):this.setSelectionCells(a)}; -Graph.prototype.connectVertex=function(a,b,f,d,k,n){n=n?n:!1;var p=a.geometry.relative&&null!=a.parent.geometry?new mxPoint(a.parent.geometry.width*a.geometry.x,a.parent.geometry.height*a.geometry.y):new mxPoint(a.geometry.x,a.geometry.y);b==mxConstants.DIRECTION_NORTH?(p.x+=a.geometry.width/2,p.y-=f):b==mxConstants.DIRECTION_SOUTH?(p.x+=a.geometry.width/2,p.y+=a.geometry.height+f):(p.x=b==mxConstants.DIRECTION_WEST?p.x-f:p.x+(a.geometry.width+f),p.y+=a.geometry.height/2);f=this.view.getState(this.model.getParent(a)); -var q=this.view.scale,w=this.view.translate,c=w.x*q,w=w.y*q;this.model.isVertex(f.cell)&&(c=f.x,w=f.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(p.x+=a.parent.geometry.x,p.y+=a.parent.geometry.y);n=n||mxEvent.isControlDown(d)&&!k?null:this.getCellAt(c+p.x*q,w+p.y*q);this.model.isAncestor(n,a)&&(n=null);for(f=n;null!=f;){if(this.isCellLocked(f)){n=null;break}f=this.model.getParent(f)}null!=n&&(f=this.view.getState(a),q=this.view.getState(n),null!=f&&null!=q&&mxUtils.intersects(f,q)&&(n= -null));if(k=!mxEvent.isShiftDown(d)||k)b==mxConstants.DIRECTION_NORTH?p.y-=a.geometry.height/2:b==mxConstants.DIRECTION_SOUTH?p.y+=a.geometry.height/2:p.x=b==mxConstants.DIRECTION_WEST?p.x-a.geometry.width/2:p.x+a.geometry.width/2;null==n||this.isCellConnectable(n)||(f=this.getModel().getParent(n),this.getModel().isVertex(f)&&this.isCellConnectable(f)&&(n=f));if(n==a||this.model.isEdge(n)||!this.isCellConnectable(n))n=null;f=[];this.model.beginUpdate();try{q=n;if(null==q&&k){for(var c=a,g=this.getCellGeometry(a);null!= -g&&g.relative;)c=this.getModel().getParent(c),g=this.getCellGeometry(c);var h=this.view.getState(c),l=null!=h?h.style:this.getCellStyle(c);if(mxUtils.getValue(l,"part",!1)){var t=this.model.getParent(c);this.model.isVertex(t)&&(c=t)}q=this.duplicateCells([c],!1)[0];g=this.getCellGeometry(q);null!=g&&(g.x=p.x-g.width/2,g.y=p.y-g.height/2)}g=null;null!=this.layoutManager&&(g=this.layoutManager.getLayout(this.model.getParent(a)));var m=mxEvent.isControlDown(d)&&k||null==n&&null!=g&&g.constructor==mxStackLayout? -null:this.insertEdge(this.model.getParent(a),null,"",a,q,this.createCurrentEdgeStyle());if(null!=m&&this.connectionHandler.insertBeforeSource){var r=null;for(d=a;null!=d.parent&&null!=d.geometry&&d.geometry.relative&&d.parent!=m.parent;)d=this.model.getParent(d);null!=d&&null!=d.parent&&d.parent==m.parent&&(r=d.parent.getIndex(d),this.model.add(d.parent,m,r))}null==n&&null!=q&&null!=g&&null!=a.parent&&g.constructor==mxStackLayout&&b==mxConstants.DIRECTION_WEST&&(r=a.parent.getIndex(a),this.model.add(a.parent, -q,r));null!=m&&f.push(m);null==n&&null!=q&&f.push(q);null==q&&null!=m&&m.geometry.setTerminalPoint(p,!1);null!=m&&this.fireEvent(new mxEventObject("cellsInserted","cells",[m]))}finally{this.model.endUpdate()}return f}; -Graph.prototype.getIndexableText=function(){var a=document.createElement("div"),b=[],f,d;for(d in this.model.cells)if(f=this.model.cells[d],this.model.isVertex(f)||this.model.isEdge(f))this.isHtmlLabel(f)?(a.innerHTML=this.getLabel(f),f=mxUtils.extractTextWithWhitespace([a])):f=this.getLabel(f),f=mxUtils.trim(f.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<f.length&&b.push(f);return b.join(" ")}; -Graph.prototype.convertValueToString=function(a){if(null!=a.value&&"object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder")){for(var b=a.getAttribute("placeholder"),f=a,d=null;null==d&&null!=f;)null!=f.value&&"object"==typeof f.value&&(d=f.hasAttribute(b)?null!=f.getAttribute(b)?f.getAttribute(b):"":null),f=this.model.getParent(f);return d||""}return a.value.getAttribute("label")||""}return mxGraph.prototype.convertValueToString.apply(this,arguments)}; +Graph.prototype.createLayersDialog=function(){var a=document.createElement("div");a.style.position="absolute";for(var b=this.getModel(),e=b.getChildCount(b.root),c=0;c<e;c++)mxUtils.bind(this,function(c){var e=document.createElement("div");e.style.overflow="hidden";e.style.textOverflow="ellipsis";e.style.padding="2px";e.style.whiteSpace="nowrap";var k=document.createElement("input");k.style.display="inline-block";k.setAttribute("type","checkbox");b.isVisible(c)&&(k.setAttribute("checked","checked"), +k.defaultChecked=!0);e.appendChild(k);var r=this.convertValueToString(c)||mxResources.get("background")||"Background";e.setAttribute("title",r);mxUtils.write(e,r);a.appendChild(e);mxEvent.addListener(k,"click",function(){null!=k.getAttribute("checked")?k.removeAttribute("checked"):k.setAttribute("checked","checked");b.setVisible(c,k.checked)})})(b.getChildAt(b.root,c));return a}; +Graph.prototype.replacePlaceholders=function(a,b){var e=[];if(null!=b){for(var c=0;match=this.placeholderPattern.exec(b);){var k=match[0];if(2<k.length&&"%label%"!=k&&"%tooltip%"!=k){var m=null;if(match.index>c&&"%"==b.charAt(match.index-1))m=k.substring(1);else{var q=k.substring(1,k.length-1);if(0>q.indexOf("{"))for(var r=a;null==m&&null!=r;)null!=r.value&&"object"==typeof r.value&&(m=r.hasAttribute(q)?null!=r.getAttribute(q)?r.getAttribute(q):"":null),r=this.model.getParent(r);null==m&&(m=this.getGlobalVariable(q))}e.push(b.substring(c, +match.index)+(null!=m?m:k));c=match.index+k.length}}e.push(b.substring(c))}return e.join("")};Graph.prototype.restoreSelection=function(a){if(null!=a&&0<a.length){for(var b=[],e=0;e<a.length;e++){var c=this.model.getCell(a[e].id);null!=c&&b.push(c)}this.setSelectionCells(b)}else this.clearSelection()}; +Graph.prototype.selectCellsForConnectVertex=function(a,b,e){2==a.length&&this.model.isVertex(a[1])?(this.setSelectionCell(a[1]),null!=e&&(mxEvent.isTouchEvent(b)?e.update(e.getState(this.view.getState(a[1]))):e.reset()),this.scrollCellToVisible(a[1])):this.setSelectionCells(a)}; +Graph.prototype.connectVertex=function(a,b,e,c,k,m){m=m?m:!1;var q=a.geometry.relative&&null!=a.parent.geometry?new mxPoint(a.parent.geometry.width*a.geometry.x,a.parent.geometry.height*a.geometry.y):new mxPoint(a.geometry.x,a.geometry.y);b==mxConstants.DIRECTION_NORTH?(q.x+=a.geometry.width/2,q.y-=e):b==mxConstants.DIRECTION_SOUTH?(q.x+=a.geometry.width/2,q.y+=a.geometry.height+e):(q.x=b==mxConstants.DIRECTION_WEST?q.x-e:q.x+(a.geometry.width+e),q.y+=a.geometry.height/2);e=this.view.getState(this.model.getParent(a)); +var r=this.view.scale,v=this.view.translate,z=v.x*r,v=v.y*r;null!=e&&this.model.isVertex(e.cell)&&(z=e.x,v=e.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(q.x+=a.parent.geometry.x,q.y+=a.parent.geometry.y);m=m||mxEvent.isControlDown(c)&&!k?null:this.getCellAt(z+q.x*r,v+q.y*r);this.model.isAncestor(m,a)&&(m=null);for(e=m;null!=e;){if(this.isCellLocked(e)){m=null;break}e=this.model.getParent(e)}null!=m&&(e=this.view.getState(a),r=this.view.getState(m),null!=e&&null!=r&&mxUtils.intersects(e, +r)&&(m=null));if(k=!mxEvent.isShiftDown(c)||k)b==mxConstants.DIRECTION_NORTH?q.y-=a.geometry.height/2:b==mxConstants.DIRECTION_SOUTH?q.y+=a.geometry.height/2:q.x=b==mxConstants.DIRECTION_WEST?q.x-a.geometry.width/2:q.x+a.geometry.width/2;null==m||this.isCellConnectable(m)||(e=this.getModel().getParent(m),this.getModel().isVertex(e)&&this.isCellConnectable(e)&&(m=e));if(m==a||this.model.isEdge(m)||!this.isCellConnectable(m))m=null;e=[];this.model.beginUpdate();try{r=m;if(null==r&&k){for(var z=a,d= +this.getCellGeometry(a);null!=d&&d.relative;)z=this.getModel().getParent(z),d=this.getCellGeometry(z);var f=this.view.getState(z),l=null!=f?f.style:this.getCellStyle(z);if(mxUtils.getValue(l,"part",!1)){var n=this.model.getParent(z);this.model.isVertex(n)&&(z=n)}r=this.duplicateCells([z],!1)[0];d=this.getCellGeometry(r);null!=d&&(d.x=q.x-d.width/2,d.y=q.y-d.height/2)}d=null;null!=this.layoutManager&&(d=this.layoutManager.getLayout(this.model.getParent(a)));var g=mxEvent.isControlDown(c)&&k||null== +m&&null!=d&&d.constructor==mxStackLayout?null:this.insertEdge(this.model.getParent(a),null,"",a,r,this.createCurrentEdgeStyle());if(null!=g&&this.connectionHandler.insertBeforeSource){var p=null;for(c=a;null!=c.parent&&null!=c.geometry&&c.geometry.relative&&c.parent!=g.parent;)c=this.model.getParent(c);null!=c&&null!=c.parent&&c.parent==g.parent&&(p=c.parent.getIndex(c),this.model.add(c.parent,g,p))}null==m&&null!=r&&null!=d&&null!=a.parent&&d.constructor==mxStackLayout&&b==mxConstants.DIRECTION_WEST&& +(p=a.parent.getIndex(a),this.model.add(a.parent,r,p));null!=g&&e.push(g);null==m&&null!=r&&e.push(r);null==r&&null!=g&&g.geometry.setTerminalPoint(q,!1);null!=g&&this.fireEvent(new mxEventObject("cellsInserted","cells",[g]))}finally{this.model.endUpdate()}return e}; +Graph.prototype.getIndexableText=function(){var a=document.createElement("div"),b=[],e,c;for(c in this.model.cells)if(e=this.model.cells[c],this.model.isVertex(e)||this.model.isEdge(e))this.isHtmlLabel(e)?(a.innerHTML=this.getLabel(e),e=mxUtils.extractTextWithWhitespace([a])):e=this.getLabel(e),e=mxUtils.trim(e.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<e.length&&b.push(e);return b.join(" ")}; +Graph.prototype.convertValueToString=function(a){if(null!=a.value&&"object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder")){for(var b=a.getAttribute("placeholder"),e=a,c=null;null==c&&null!=e;)null!=e.value&&"object"==typeof e.value&&(c=e.hasAttribute(b)?null!=e.getAttribute(b)?e.getAttribute(b):"":null),e=this.model.getParent(e);return c||""}return a.value.getAttribute("label")||""}return mxGraph.prototype.convertValueToString.apply(this,arguments)}; Graph.prototype.getLinksForState=function(a){return null!=a&&null!=a.text&&null!=a.text.node?a.text.node.getElementsByTagName("a"):null};Graph.prototype.getLinkForCell=function(a){return null!=a.value&&"object"==typeof a.value?(a=a.value.getAttribute("link"),null!=a&&"javascript:"===a.toLowerCase().substring(0,11)&&(a=a.substring(11)),a):null}; -Graph.prototype.getCellStyle=function(a){var b=mxGraph.prototype.getCellStyle.apply(this,arguments);if(null!=a&&null!=this.layoutManager){var f=this.model.getParent(a);this.model.isVertex(f)&&this.isCellCollapsed(a)&&(f=this.layoutManager.getLayout(f),null!=f&&f.constructor==mxStackLayout&&(b[mxConstants.STYLE_HORIZONTAL]=!f.horizontal))}return b}; -Graph.prototype.updateAlternateBounds=function(a,b,f){if(null!=a&&null!=b&&null!=this.layoutManager&&null!=b.alternateBounds){var d=this.layoutManager.getLayout(this.model.getParent(a));null!=d&&d.constructor==mxStackLayout&&(d.horizontal?b.alternateBounds.height=0:b.alternateBounds.width=0)}mxGraph.prototype.updateAlternateBounds.apply(this,arguments)};Graph.prototype.isMoveCellsEvent=function(a){return mxEvent.isShiftDown(a)}; -Graph.prototype.foldCells=function(a,b,f,d,k){b=null!=b?b:!1;null==f&&(f=this.getFoldableCells(this.getSelectionCells(),a));if(null!=f){this.model.beginUpdate();try{if(mxGraph.prototype.foldCells.apply(this,arguments),null!=this.layoutManager)for(var n=0;n<f.length;n++){var p=this.view.getState(f[n]),q=this.getCellGeometry(f[n]);if(null!=p&&null!=q){var w=Math.round(q.width-p.width/this.view.scale),c=Math.round(q.height-p.height/this.view.scale);if(0!=c||0!=w){var g=this.model.getParent(f[n]),h=this.layoutManager.getLayout(g); -null==h?null!=k&&this.isMoveCellsEvent(k)&&this.moveSiblings(p,g,w,c):null!=k&&mxEvent.isAltDown(k)||h.constructor!=mxStackLayout||h.resizeLast||this.resizeParentStacks(g,h,w,c)}}}}finally{this.model.endUpdate()}this.isEnabled()&&this.setSelectionCells(f)}}; -Graph.prototype.moveSiblings=function(a,b,f,d){this.model.beginUpdate();try{var k=this.getCellsBeyond(a.x,a.y,b,!0,!0);for(b=0;b<k.length;b++)if(k[b]!=a.cell){var n=this.view.getState(k[b]),p=this.getCellGeometry(k[b]);null!=n&&null!=p&&(p=p.clone(),p.translate(Math.round(f*Math.max(0,Math.min(1,(n.x-a.x)/a.width))),Math.round(d*Math.max(0,Math.min(1,(n.y-a.y)/a.height)))),this.model.setGeometry(k[b],p))}}finally{this.model.endUpdate()}}; -Graph.prototype.resizeParentStacks=function(a,b,f,d){if(null!=this.layoutManager&&null!=b&&b.constructor==mxStackLayout&&!b.resizeLast){this.model.beginUpdate();try{for(var k=b.horizontal;null!=a&&null!=b&&b.constructor==mxStackLayout&&b.horizontal==k&&!b.resizeLast;){var n=this.getCellGeometry(a),p=this.view.getState(a);null!=p&&null!=n&&(n=n.clone(),b.horizontal?n.width+=f+Math.min(0,p.width/this.view.scale-n.width):n.height+=d+Math.min(0,p.height/this.view.scale-n.height),this.model.setGeometry(a, -n));a=this.model.getParent(a);b=this.layoutManager.getLayout(a)}}finally{this.model.endUpdate()}}};Graph.prototype.isContainer=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return this.isSwimlane(a)?"0"!=b.container:"1"==b.container};Graph.prototype.isCellConnectable=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return null!=b.connectable?"0"!=b.connectable:mxGraph.prototype.isCellConnectable.apply(this,arguments)}; -Graph.prototype.selectAll=function(a){a=a||this.getDefaultParent();this.isCellLocked(a)||mxGraph.prototype.selectAll.apply(this,arguments)};Graph.prototype.selectCells=function(a,b,f){f=f||this.getDefaultParent();this.isCellLocked(f)||mxGraph.prototype.selectCells.apply(this,arguments)};Graph.prototype.getSwimlaneAt=function(a,b,f){f=f||this.getDefaultParent();return this.isCellLocked(f)?null:mxGraph.prototype.getSwimlaneAt.apply(this,arguments)}; +Graph.prototype.getCellStyle=function(a){var b=mxGraph.prototype.getCellStyle.apply(this,arguments);if(null!=a&&null!=this.layoutManager){var e=this.model.getParent(a);this.model.isVertex(e)&&this.isCellCollapsed(a)&&(e=this.layoutManager.getLayout(e),null!=e&&e.constructor==mxStackLayout&&(b[mxConstants.STYLE_HORIZONTAL]=!e.horizontal))}return b}; +Graph.prototype.updateAlternateBounds=function(a,b,e){if(null!=a&&null!=b&&null!=this.layoutManager&&null!=b.alternateBounds){var c=this.layoutManager.getLayout(this.model.getParent(a));null!=c&&c.constructor==mxStackLayout&&(c.horizontal?b.alternateBounds.height=0:b.alternateBounds.width=0)}mxGraph.prototype.updateAlternateBounds.apply(this,arguments)};Graph.prototype.isMoveCellsEvent=function(a){return mxEvent.isShiftDown(a)}; +Graph.prototype.foldCells=function(a,b,e,c,k){b=null!=b?b:!1;null==e&&(e=this.getFoldableCells(this.getSelectionCells(),a));if(null!=e){this.model.beginUpdate();try{if(mxGraph.prototype.foldCells.apply(this,arguments),null!=this.layoutManager)for(var m=0;m<e.length;m++){var q=this.view.getState(e[m]),r=this.getCellGeometry(e[m]);if(null!=q&&null!=r){var v=Math.round(r.width-q.width/this.view.scale),z=Math.round(r.height-q.height/this.view.scale);if(0!=z||0!=v){var d=this.model.getParent(e[m]),f=this.layoutManager.getLayout(d); +null==f?null!=k&&this.isMoveCellsEvent(k)&&this.moveSiblings(q,d,v,z):null!=k&&mxEvent.isAltDown(k)||f.constructor!=mxStackLayout||f.resizeLast||this.resizeParentStacks(d,f,v,z)}}}}finally{this.model.endUpdate()}this.isEnabled()&&this.setSelectionCells(e)}}; +Graph.prototype.moveSiblings=function(a,b,e,c){this.model.beginUpdate();try{var k=this.getCellsBeyond(a.x,a.y,b,!0,!0);for(b=0;b<k.length;b++)if(k[b]!=a.cell){var m=this.view.getState(k[b]),q=this.getCellGeometry(k[b]);null!=m&&null!=q&&(q=q.clone(),q.translate(Math.round(e*Math.max(0,Math.min(1,(m.x-a.x)/a.width))),Math.round(c*Math.max(0,Math.min(1,(m.y-a.y)/a.height)))),this.model.setGeometry(k[b],q))}}finally{this.model.endUpdate()}}; +Graph.prototype.resizeParentStacks=function(a,b,e,c){if(null!=this.layoutManager&&null!=b&&b.constructor==mxStackLayout&&!b.resizeLast){this.model.beginUpdate();try{for(var k=b.horizontal;null!=a&&null!=b&&b.constructor==mxStackLayout&&b.horizontal==k&&!b.resizeLast;){var m=this.getCellGeometry(a),q=this.view.getState(a);null!=q&&null!=m&&(m=m.clone(),b.horizontal?m.width+=e+Math.min(0,q.width/this.view.scale-m.width):m.height+=c+Math.min(0,q.height/this.view.scale-m.height),this.model.setGeometry(a, +m));a=this.model.getParent(a);b=this.layoutManager.getLayout(a)}}finally{this.model.endUpdate()}}};Graph.prototype.isContainer=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return this.isSwimlane(a)?"0"!=b.container:"1"==b.container};Graph.prototype.isCellConnectable=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return null!=b&&null!=b.connectable?"0"!=b.connectable:mxGraph.prototype.isCellConnectable.apply(this,arguments)}; +Graph.prototype.selectAll=function(a){a=a||this.getDefaultParent();this.isCellLocked(a)||mxGraph.prototype.selectAll.apply(this,arguments)};Graph.prototype.selectCells=function(a,b,e){e=e||this.getDefaultParent();this.isCellLocked(e)||mxGraph.prototype.selectCells.apply(this,arguments)};Graph.prototype.getSwimlaneAt=function(a,b,e){e=e||this.getDefaultParent();return this.isCellLocked(e)?null:mxGraph.prototype.getSwimlaneAt.apply(this,arguments)}; Graph.prototype.isCellFoldable=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return this.foldingEnabled&&!this.isCellLocked(a)&&(this.isContainer(a)&&"0"!=b.collapsible||!this.isContainer(a)&&"1"==b.collapsible)};Graph.prototype.reset=function(){this.isEditing()&&this.stopEditing(!0);this.escape();this.isSelectionEmpty()||this.clearSelection()}; Graph.prototype.zoom=function(a,b){a=Math.max(.01,Math.min(this.view.scale*a,160))/this.view.scale;mxGraph.prototype.zoom.apply(this,arguments)};Graph.prototype.zoomIn=function(){.15>this.view.scale?this.zoom((this.view.scale+.01)/this.view.scale):this.zoom(Math.round(this.view.scale*this.zoomFactor*20)/20/this.view.scale)};Graph.prototype.zoomOut=function(){.15>=this.view.scale?this.zoom((this.view.scale-.01)/this.view.scale):this.zoom(Math.round(1/this.zoomFactor*this.view.scale*20)/20/this.view.scale)}; -Graph.prototype.getTooltipForCell=function(a){var b="";if(mxUtils.isNode(a.value)){var f=a.value.getAttribute("tooltip");if(null!=f)null!=f&&this.isReplacePlaceholders(a)&&(f=this.replacePlaceholders(a,f)),b=this.sanitizeHtml(f);else{f=this.builtInProperties;a=a.value.attributes;var d=[];this.isEnabled()&&f.push("link");for(var k=0;k<a.length;k++)0>mxUtils.indexOf(f,a[k].nodeName)&&0<a[k].nodeValue.length&&d.push({name:a[k].nodeName,value:a[k].nodeValue});d.sort(function(a,b){return a.name<b.name? --1:a.name>b.name?1:0});for(k=0;k<d.length;k++)"link"==d[k].name&&this.isCustomLink(d[k].value)||(b+=("link"!=d[k].name?"<b>"+d[k].name+":</b> ":"")+mxUtils.htmlEntities(d[k].value)+"\n");0<b.length&&(b=b.substring(0,b.length-1),mxClient.IS_SVG&&(b='<div style="max-width:360px;">'+b+"</div>"))}}return b};Graph.prototype.stringToBytes=function(a){for(var b=Array(a.length),f=0;f<a.length;f++)b[f]=a.charCodeAt(f);return b}; -Graph.prototype.bytesToString=function(a){for(var b=Array(a.length),f=0;f<a.length;f++)b[f]=String.fromCharCode(a[f]);return b.join("")};Graph.prototype.compressNode=function(a){return this.compress(this.zapGremlins(mxUtils.getXml(a)))};Graph.prototype.compress=function(a){if(null==a||0==a.length||"undefined"===typeof pako)return a;a=this.bytesToString(pako.deflateRaw(encodeURIComponent(a)));return window.btoa?btoa(a):Base64.encode(a,!0)}; -Graph.prototype.decompress=function(a){if(null==a||0==a.length||"undefined"===typeof pako)return a;a=window.atob?atob(a):Base64.decode(a,!0);return this.zapGremlins(decodeURIComponent(this.bytesToString(pako.inflateRaw(a))))};Graph.prototype.zapGremlins=function(a){for(var b=[],f=0;f<a.length;f++){var d=a.charCodeAt(f);(32<=d||9==d||10==d||13==d)&&b.push(a.charAt(f))}return b.join("")};HoverIcons=function(a){this.graph=a;this.init()};HoverIcons.prototype.arrowSpacing=2; +Graph.prototype.getTooltipForCell=function(a){var b="";if(mxUtils.isNode(a.value)){var e=a.value.getAttribute("tooltip");if(null!=e)null!=e&&this.isReplacePlaceholders(a)&&(e=this.replacePlaceholders(a,e)),b=this.sanitizeHtml(e);else{e=this.builtInProperties;a=a.value.attributes;var c=[];this.isEnabled()&&e.push("link");for(var k=0;k<a.length;k++)0>mxUtils.indexOf(e,a[k].nodeName)&&0<a[k].nodeValue.length&&c.push({name:a[k].nodeName,value:a[k].nodeValue});c.sort(function(a,b){return a.name<b.name? +-1:a.name>b.name?1:0});for(k=0;k<c.length;k++)"link"==c[k].name&&this.isCustomLink(c[k].value)||(b+=("link"!=c[k].name?"<b>"+c[k].name+":</b> ":"")+mxUtils.htmlEntities(c[k].value)+"\n");0<b.length&&(b=b.substring(0,b.length-1),mxClient.IS_SVG&&(b='<div style="max-width:360px;">'+b+"</div>"))}}return b};Graph.prototype.stringToBytes=function(a){for(var b=Array(a.length),e=0;e<a.length;e++)b[e]=a.charCodeAt(e);return b}; +Graph.prototype.bytesToString=function(a){for(var b=Array(a.length),e=0;e<a.length;e++)b[e]=String.fromCharCode(a[e]);return b.join("")};Graph.prototype.compressNode=function(a){return this.compress(this.zapGremlins(mxUtils.getXml(a)))};Graph.prototype.compress=function(a){if(null==a||0==a.length||"undefined"===typeof pako)return a;a=this.bytesToString(pako.deflateRaw(encodeURIComponent(a)));return window.btoa?btoa(a):Base64.encode(a,!0)}; +Graph.prototype.decompress=function(a){if(null==a||0==a.length||"undefined"===typeof pako)return a;a=window.atob?atob(a):Base64.decode(a,!0);return this.zapGremlins(decodeURIComponent(this.bytesToString(pako.inflateRaw(a))))};Graph.prototype.zapGremlins=function(a){for(var b=[],e=0;e<a.length;e++){var c=a.charCodeAt(e);(32<=c||9==c||10==c||13==c)&&b.push(a.charAt(e))}return b.join("")};HoverIcons=function(a){this.graph=a;this.init()};HoverIcons.prototype.arrowSpacing=2; HoverIcons.prototype.updateDelay=500;HoverIcons.prototype.activationDelay=140;HoverIcons.prototype.currentState=null;HoverIcons.prototype.activeArrow=null;HoverIcons.prototype.inactiveOpacity=15;HoverIcons.prototype.cssCursor="copy";HoverIcons.prototype.checkCollisions=!0;HoverIcons.prototype.arrowFill="#29b6f2"; HoverIcons.prototype.triangleUp=mxClient.IS_SVG?Graph.createSvgImage(18,28,'<path d="m 6 26 L 12 26 L 12 12 L 18 12 L 9 1 L 1 12 L 6 12 z" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/>'):new mxImage(IMAGE_PATH+"/triangle-up.png",26,14);HoverIcons.prototype.triangleRight=mxClient.IS_SVG?Graph.createSvgImage(26,18,'<path d="m 1 6 L 14 6 L 14 1 L 26 9 L 14 18 L 14 12 L 1 12 z" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/>'):new mxImage(IMAGE_PATH+"/triangle-right.png",14,26); HoverIcons.prototype.triangleDown=mxClient.IS_SVG?Graph.createSvgImage(18,26,'<path d="m 6 1 L 6 14 L 1 14 L 9 26 L 18 14 L 12 14 L 12 1 z" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/>'):new mxImage(IMAGE_PATH+"/triangle-down.png",26,14);HoverIcons.prototype.triangleLeft=mxClient.IS_SVG?Graph.createSvgImage(28,18,'<path d="m 1 9 L 12 1 L 12 6 L 26 6 L 26 12 L 12 12 L 12 18 z" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/>'):new mxImage(IMAGE_PATH+"/triangle-left.png",14,26); @@ -2285,447 +2287,451 @@ HoverIcons.prototype.refreshTarget=new mxImage(mxClient.IS_SVG?"data:image/png;b HoverIcons.prototype.init=function(){this.arrowUp=this.createArrow(this.triangleUp,mxResources.get("plusTooltip"));this.arrowRight=this.createArrow(this.triangleRight,mxResources.get("plusTooltip"));this.arrowDown=this.createArrow(this.triangleDown,mxResources.get("plusTooltip"));this.arrowLeft=this.createArrow(this.triangleLeft,mxResources.get("plusTooltip"));this.elts=[this.arrowUp,this.arrowRight,this.arrowDown,this.arrowLeft];this.repaintHandler=mxUtils.bind(this,function(){this.repaint()});this.graph.selectionModel.addListener(mxEvent.CHANGE, this.repaintHandler);this.graph.model.addListener(mxEvent.CHANGE,this.repaintHandler);this.graph.view.addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler);this.graph.view.addListener(mxEvent.TRANSLATE,this.repaintHandler);this.graph.view.addListener(mxEvent.SCALE,this.repaintHandler);this.graph.view.addListener(mxEvent.DOWN,this.repaintHandler);this.graph.view.addListener(mxEvent.UP,this.repaintHandler);this.graph.addListener(mxEvent.ROOT,this.repaintHandler);this.graph.addListener(mxEvent.ESCAPE, mxUtils.bind(this,function(){this.mouseDownPoint=null}));mxEvent.addListener(this.graph.container,"mouseleave",mxUtils.bind(this,function(a){null!=a.relatedTarget&&mxEvent.getSource(a)==this.graph.container&&this.setDisplay("none")}));this.graph.addListener(mxEvent.START_EDITING,mxUtils.bind(this,function(a){this.reset()}));var a=this.graph.click;this.graph.click=mxUtils.bind(this,function(b){a.apply(this.graph,arguments);null==this.currentState||this.graph.isCellSelected(this.currentState.cell)|| -!mxEvent.isTouchEvent(b.getEvent())||this.graph.model.isVertex(b.getCell())||this.reset()});var b=!1;this.graph.addMouseListener({mouseDown:mxUtils.bind(this,function(a,d){b=!1;var f=d.getEvent();if(this.isResetEvent(f))this.reset();else if(!this.isActive()){var n=this.getState(d.getState());null==n&&mxEvent.isTouchEvent(f)||this.update(n)}this.setDisplay("none")}),mouseMove:mxUtils.bind(this,function(a,d){var f=d.getEvent();this.isResetEvent(f)?this.reset():this.graph.isMouseDown||mxEvent.isTouchEvent(f)|| -this.update(this.getState(d.getState()),d.getGraphX(),d.getGraphY());null!=this.graph.connectionHandler&&null!=this.graph.connectionHandler.shape&&(b=!0)}),mouseUp:mxUtils.bind(this,function(a,d){var f=d.getEvent();mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(f),mxEvent.getClientY(f));this.isResetEvent(f)?this.reset():this.isActive()&&!b&&null!=this.mouseDownPoint?this.click(this.currentState,this.getDirection(),d):this.isActive()?1==this.graph.getSelectionCount()&&this.graph.model.isEdge(this.graph.getSelectionCell())? -this.reset():this.update(this.getState(this.graph.view.getState(this.graph.getCellAt(d.getGraphX(),d.getGraphY())))):mxEvent.isTouchEvent(f)||null!=this.bbox&&mxUtils.contains(this.bbox,d.getGraphX(),d.getGraphY())?(this.setDisplay(""),this.repaint()):mxEvent.isTouchEvent(f)||this.reset();b=!1;this.resetActiveArrow()})})};HoverIcons.prototype.isResetEvent=function(a,b){return mxEvent.isAltDown(a)||null==this.activeArrow&&mxEvent.isShiftDown(a)||mxEvent.isMetaDown(a)||mxEvent.isPopupTrigger(a)&&!mxEvent.isControlDown(a)}; -HoverIcons.prototype.createArrow=function(a,b){var f=null;mxClient.IS_IE&&!mxClient.IS_SVG?(mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?(f=document.createElement(mxClient.VML_PREFIX+":image"),f.setAttribute("src",a.src),f.style.borderStyle="none"):(f=document.createElement("div"),f.style.backgroundImage="url("+a.src+")",f.style.backgroundPosition="center",f.style.backgroundRepeat="no-repeat"),f.style.width=a.width+4+"px",f.style.height=a.height+4+"px",f.style.display=mxClient.IS_QUIRKS?"inline": -"inline-block"):(f=mxUtils.createImage(a.src),f.style.width=a.width+"px",f.style.height=a.height+"px",f.style.padding=this.tolerance+"px");null!=b&&f.setAttribute("title",b);f.style.position="absolute";f.style.cursor=this.cssCursor;mxEvent.addGestureListeners(f,mxUtils.bind(this,function(a){null==this.currentState||this.isResetEvent(a)||(this.mouseDownPoint=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(a),mxEvent.getClientY(a)),this.drag(a,this.mouseDownPoint.x,this.mouseDownPoint.y), -this.activeArrow=f,this.setDisplay("none"),mxEvent.consume(a))}));mxEvent.redirectMouseEvents(f,this.graph,this.currentState);mxEvent.addListener(f,"mouseenter",mxUtils.bind(this,function(a){mxEvent.isMouseEvent(a)&&(null!=this.activeArrow&&this.activeArrow!=f&&mxUtils.setOpacity(this.activeArrow,this.inactiveOpacity),this.graph.connectionHandler.constraintHandler.reset(),mxUtils.setOpacity(f,100),this.activeArrow=f)}));mxEvent.addListener(f,"mouseleave",mxUtils.bind(this,function(a){this.graph.isMouseDown|| -this.resetActiveArrow()}));return f};HoverIcons.prototype.resetActiveArrow=function(){null!=this.activeArrow&&(mxUtils.setOpacity(this.activeArrow,this.inactiveOpacity),this.activeArrow=null)};HoverIcons.prototype.getDirection=function(){var a=mxConstants.DIRECTION_EAST;this.activeArrow==this.arrowUp?a=mxConstants.DIRECTION_NORTH:this.activeArrow==this.arrowDown?a=mxConstants.DIRECTION_SOUTH:this.activeArrow==this.arrowLeft&&(a=mxConstants.DIRECTION_WEST);return a}; +!mxEvent.isTouchEvent(b.getEvent())||this.graph.model.isVertex(b.getCell())||this.reset()});var b=!1;this.graph.addMouseListener({mouseDown:mxUtils.bind(this,function(a,c){b=!1;var e=c.getEvent();if(this.isResetEvent(e))this.reset();else if(!this.isActive()){var m=this.getState(c.getState());null==m&&mxEvent.isTouchEvent(e)||this.update(m)}this.setDisplay("none")}),mouseMove:mxUtils.bind(this,function(a,c){var e=c.getEvent();this.isResetEvent(e)?this.reset():this.graph.isMouseDown||mxEvent.isTouchEvent(e)|| +this.update(this.getState(c.getState()),c.getGraphX(),c.getGraphY());null!=this.graph.connectionHandler&&null!=this.graph.connectionHandler.shape&&(b=!0)}),mouseUp:mxUtils.bind(this,function(a,c){var e=c.getEvent();mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.isResetEvent(e)?this.reset():this.isActive()&&!b&&null!=this.mouseDownPoint?this.click(this.currentState,this.getDirection(),c):this.isActive()?1==this.graph.getSelectionCount()&&this.graph.model.isEdge(this.graph.getSelectionCell())? +this.reset():this.update(this.getState(this.graph.view.getState(this.graph.getCellAt(c.getGraphX(),c.getGraphY())))):mxEvent.isTouchEvent(e)||null!=this.bbox&&mxUtils.contains(this.bbox,c.getGraphX(),c.getGraphY())?(this.setDisplay(""),this.repaint()):mxEvent.isTouchEvent(e)||this.reset();b=!1;this.resetActiveArrow()})})};HoverIcons.prototype.isResetEvent=function(a,b){return mxEvent.isAltDown(a)||null==this.activeArrow&&mxEvent.isShiftDown(a)||mxEvent.isMetaDown(a)||mxEvent.isPopupTrigger(a)&&!mxEvent.isControlDown(a)}; +HoverIcons.prototype.createArrow=function(a,b){var e=null;mxClient.IS_IE&&!mxClient.IS_SVG?(mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?(e=document.createElement(mxClient.VML_PREFIX+":image"),e.setAttribute("src",a.src),e.style.borderStyle="none"):(e=document.createElement("div"),e.style.backgroundImage="url("+a.src+")",e.style.backgroundPosition="center",e.style.backgroundRepeat="no-repeat"),e.style.width=a.width+4+"px",e.style.height=a.height+4+"px",e.style.display=mxClient.IS_QUIRKS?"inline": +"inline-block"):(e=mxUtils.createImage(a.src),e.style.width=a.width+"px",e.style.height=a.height+"px",e.style.padding=this.tolerance+"px");null!=b&&e.setAttribute("title",b);e.style.position="absolute";e.style.cursor=this.cssCursor;mxEvent.addGestureListeners(e,mxUtils.bind(this,function(a){null==this.currentState||this.isResetEvent(a)||(this.mouseDownPoint=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(a),mxEvent.getClientY(a)),this.drag(a,this.mouseDownPoint.x,this.mouseDownPoint.y), +this.activeArrow=e,this.setDisplay("none"),mxEvent.consume(a))}));mxEvent.redirectMouseEvents(e,this.graph,this.currentState);mxEvent.addListener(e,"mouseenter",mxUtils.bind(this,function(a){mxEvent.isMouseEvent(a)&&(null!=this.activeArrow&&this.activeArrow!=e&&mxUtils.setOpacity(this.activeArrow,this.inactiveOpacity),this.graph.connectionHandler.constraintHandler.reset(),mxUtils.setOpacity(e,100),this.activeArrow=e)}));mxEvent.addListener(e,"mouseleave",mxUtils.bind(this,function(a){this.graph.isMouseDown|| +this.resetActiveArrow()}));return e};HoverIcons.prototype.resetActiveArrow=function(){null!=this.activeArrow&&(mxUtils.setOpacity(this.activeArrow,this.inactiveOpacity),this.activeArrow=null)};HoverIcons.prototype.getDirection=function(){var a=mxConstants.DIRECTION_EAST;this.activeArrow==this.arrowUp?a=mxConstants.DIRECTION_NORTH:this.activeArrow==this.arrowDown?a=mxConstants.DIRECTION_SOUTH:this.activeArrow==this.arrowLeft&&(a=mxConstants.DIRECTION_WEST);return a}; HoverIcons.prototype.visitNodes=function(a){for(var b=0;b<this.elts.length;b++)null!=this.elts[b]&&a(this.elts[b])};HoverIcons.prototype.removeNodes=function(){this.visitNodes(function(a){null!=a.parentNode&&a.parentNode.removeChild(a)})};HoverIcons.prototype.setDisplay=function(a){this.visitNodes(function(b){b.style.display=a})};HoverIcons.prototype.isActive=function(){return null!=this.activeArrow&&null!=this.currentState}; -HoverIcons.prototype.drag=function(a,b,f){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);null!=this.currentState&&(this.graph.connectionHandler.start(this.currentState,b,f),this.graph.isMouseTrigger=mxEvent.isMouseEvent(a),this.graph.isMouseDown=!0,b=this.graph.selectionCellsHandler.getHandler(this.currentState.cell),null!=b&&b.setHandlesVisible(!1),b=this.graph.connectionHandler.edgeState,null!=a&&mxEvent.isShiftDown(a)&&mxEvent.isControlDown(a)&&null!=b&&"orthogonalEdgeStyle"=== -mxUtils.getValue(b.style,mxConstants.STYLE_EDGE,null)&&(a=this.getDirection(),b.cell.style=mxUtils.setStyle(b.cell.style,"sourcePortConstraint",a),b.style.sourcePortConstraint=a))};HoverIcons.prototype.getStateAt=function(a,b,f){return this.graph.view.getState(this.graph.getCellAt(b,f))}; -HoverIcons.prototype.click=function(a,b,f){var d=f.getEvent(),k=f.getGraphX(),n=f.getGraphY(),k=this.getStateAt(a,k,n);null==k||!this.graph.model.isEdge(k.cell)||mxEvent.isControlDown(d)||k.getVisibleTerminalState(!0)!=a&&k.getVisibleTerminalState(!1)!=a?null!=a&&(a=this.graph.connectVertex(a.cell,b,this.graph.defaultEdgeLength,d),this.graph.selectCellsForConnectVertex(a,d,this),2==a.length&&this.graph.model.isVertex(a[1])?(this.graph.setSelectionCell(a[1]),mxEvent.isTouchEvent(d)?this.update(this.getState(this.graph.view.getState(a[1]))): -this.reset(),this.graph.scrollCellToVisible(a[1])):this.graph.setSelectionCells(a)):(this.graph.setSelectionCell(k.cell),this.reset());f.consume()};HoverIcons.prototype.reset=function(a){null!=a&&!a||null==this.updateThread||window.clearTimeout(this.updateThread);this.activeArrow=this.currentState=this.mouseDownPoint=null;this.removeNodes();this.bbox=null}; +HoverIcons.prototype.drag=function(a,b,e){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);null!=this.currentState&&(this.graph.connectionHandler.start(this.currentState,b,e),this.graph.isMouseTrigger=mxEvent.isMouseEvent(a),this.graph.isMouseDown=!0,b=this.graph.selectionCellsHandler.getHandler(this.currentState.cell),null!=b&&b.setHandlesVisible(!1),b=this.graph.connectionHandler.edgeState,null!=a&&mxEvent.isShiftDown(a)&&mxEvent.isControlDown(a)&&null!=b&&"orthogonalEdgeStyle"=== +mxUtils.getValue(b.style,mxConstants.STYLE_EDGE,null)&&(a=this.getDirection(),b.cell.style=mxUtils.setStyle(b.cell.style,"sourcePortConstraint",a),b.style.sourcePortConstraint=a))};HoverIcons.prototype.getStateAt=function(a,b,e){return this.graph.view.getState(this.graph.getCellAt(b,e))}; +HoverIcons.prototype.click=function(a,b,e){var c=e.getEvent(),k=e.getGraphX(),m=e.getGraphY(),k=this.getStateAt(a,k,m);null==k||!this.graph.model.isEdge(k.cell)||mxEvent.isControlDown(c)||k.getVisibleTerminalState(!0)!=a&&k.getVisibleTerminalState(!1)!=a?null!=a&&(a=this.graph.connectVertex(a.cell,b,this.graph.defaultEdgeLength,c),this.graph.selectCellsForConnectVertex(a,c,this),2==a.length&&this.graph.model.isVertex(a[1])?(this.graph.setSelectionCell(a[1]),mxEvent.isTouchEvent(c)?this.update(this.getState(this.graph.view.getState(a[1]))): +this.reset(),this.graph.scrollCellToVisible(a[1])):this.graph.setSelectionCells(a)):(this.graph.setSelectionCell(k.cell),this.reset());e.consume()};HoverIcons.prototype.reset=function(a){null!=a&&!a||null==this.updateThread||window.clearTimeout(this.updateThread);this.activeArrow=this.currentState=this.mouseDownPoint=null;this.removeNodes();this.bbox=null}; HoverIcons.prototype.repaint=function(){this.bbox=null;if(null!=this.currentState){this.currentState=this.getState(this.currentState);if(null!=this.currentState&&this.graph.model.isVertex(this.currentState.cell)&&this.graph.isCellConnectable(this.currentState.cell)){var a=mxRectangle.fromRectangle(this.currentState);null!=this.currentState.shape&&null!=this.currentState.shape.boundingBox&&(a=mxRectangle.fromRectangle(this.currentState.shape.boundingBox));a.grow(this.graph.tolerance);a.grow(this.arrowSpacing); var b=this.graph.selectionCellsHandler.getHandler(this.currentState.cell);null!=b&&(a.x-=b.horizontalOffset/2,a.y-=b.verticalOffset/2,a.width+=b.horizontalOffset,a.height+=b.verticalOffset,null!=b.rotationShape&&null!=b.rotationShape.node&&"hidden"!=b.rotationShape.node.style.visibility&&"none"!=b.rotationShape.node.style.display&&null!=b.rotationShape.boundingBox&&a.add(b.rotationShape.boundingBox));this.arrowUp.style.left=Math.round(this.currentState.getCenterX()-this.triangleUp.width/2-this.tolerance)+ "px";this.arrowUp.style.top=Math.round(a.y-this.triangleUp.height-this.tolerance)+"px";mxUtils.setOpacity(this.arrowUp,this.inactiveOpacity);this.arrowRight.style.left=Math.round(a.x+a.width-this.tolerance)+"px";this.arrowRight.style.top=Math.round(this.currentState.getCenterY()-this.triangleRight.height/2-this.tolerance)+"px";mxUtils.setOpacity(this.arrowRight,this.inactiveOpacity);this.arrowDown.style.left=this.arrowUp.style.left;this.arrowDown.style.top=Math.round(a.y+a.height-this.tolerance)+ -"px";mxUtils.setOpacity(this.arrowDown,this.inactiveOpacity);this.arrowLeft.style.left=Math.round(a.x-this.triangleLeft.width-this.tolerance)+"px";this.arrowLeft.style.top=this.arrowRight.style.top;mxUtils.setOpacity(this.arrowLeft,this.inactiveOpacity);if(this.checkCollisions){var b=this.graph.getCellAt(a.x+a.width+this.triangleRight.width/2,this.currentState.getCenterY()),f=this.graph.getCellAt(a.x-this.triangleLeft.width/2,this.currentState.getCenterY()),d=this.graph.getCellAt(this.currentState.getCenterX(), -a.y-this.triangleUp.height/2),a=this.graph.getCellAt(this.currentState.getCenterX(),a.y+a.height+this.triangleDown.height/2);null!=b&&b==f&&f==d&&d==a&&(a=d=f=b=null);var k=this.graph.getCellGeometry(this.currentState.cell),n=mxUtils.bind(this,function(a,b){var d=this.graph.model.isVertex(a)&&this.graph.getCellGeometry(a);null!=a&&!this.graph.model.isAncestor(a,this.currentState.cell)&&(null==d||null==k||d.height<6*k.height&&d.width<6*k.width)?b.style.visibility="hidden":b.style.visibility="visible"}); -n(b,this.arrowRight);n(f,this.arrowLeft);n(d,this.arrowUp);n(a,this.arrowDown)}else this.arrowLeft.style.visibility="visible",this.arrowRight.style.visibility="visible",this.arrowUp.style.visibility="visible",this.arrowDown.style.visibility="visible";this.graph.tooltipHandler.isEnabled()?(this.arrowLeft.setAttribute("title",mxResources.get("plusTooltip")),this.arrowRight.setAttribute("title",mxResources.get("plusTooltip")),this.arrowUp.setAttribute("title",mxResources.get("plusTooltip")),this.arrowDown.setAttribute("title", +"px";mxUtils.setOpacity(this.arrowDown,this.inactiveOpacity);this.arrowLeft.style.left=Math.round(a.x-this.triangleLeft.width-this.tolerance)+"px";this.arrowLeft.style.top=this.arrowRight.style.top;mxUtils.setOpacity(this.arrowLeft,this.inactiveOpacity);if(this.checkCollisions){var b=this.graph.getCellAt(a.x+a.width+this.triangleRight.width/2,this.currentState.getCenterY()),e=this.graph.getCellAt(a.x-this.triangleLeft.width/2,this.currentState.getCenterY()),c=this.graph.getCellAt(this.currentState.getCenterX(), +a.y-this.triangleUp.height/2),a=this.graph.getCellAt(this.currentState.getCenterX(),a.y+a.height+this.triangleDown.height/2);null!=b&&b==e&&e==c&&c==a&&(a=c=e=b=null);var k=this.graph.getCellGeometry(this.currentState.cell),m=mxUtils.bind(this,function(a,b){var c=this.graph.model.isVertex(a)&&this.graph.getCellGeometry(a);null!=a&&!this.graph.model.isAncestor(a,this.currentState.cell)&&(null==c||null==k||c.height<6*k.height&&c.width<6*k.width)?b.style.visibility="hidden":b.style.visibility="visible"}); +m(b,this.arrowRight);m(e,this.arrowLeft);m(c,this.arrowUp);m(a,this.arrowDown)}else this.arrowLeft.style.visibility="visible",this.arrowRight.style.visibility="visible",this.arrowUp.style.visibility="visible",this.arrowDown.style.visibility="visible";this.graph.tooltipHandler.isEnabled()?(this.arrowLeft.setAttribute("title",mxResources.get("plusTooltip")),this.arrowRight.setAttribute("title",mxResources.get("plusTooltip")),this.arrowUp.setAttribute("title",mxResources.get("plusTooltip")),this.arrowDown.setAttribute("title", mxResources.get("plusTooltip"))):(this.arrowLeft.removeAttribute("title"),this.arrowRight.removeAttribute("title"),this.arrowUp.removeAttribute("title"),this.arrowDown.removeAttribute("title"))}else this.reset();null!=this.currentState&&(this.bbox=this.computeBoundingBox(),null!=this.bbox&&this.bbox.grow(10))}}; HoverIcons.prototype.computeBoundingBox=function(){var a=this.graph.model.isEdge(this.currentState.cell)?null:mxRectangle.fromRectangle(this.currentState);this.visitNodes(function(b){null!=b.parentNode&&(b=new mxRectangle(b.offsetLeft,b.offsetTop,b.offsetWidth,b.offsetHeight),null==a?a=b:a.add(b))});return a}; -HoverIcons.prototype.getState=function(a){if(null!=a){a=a.cell;if(this.graph.getModel().isVertex(a)&&!this.graph.isCellConnectable(a)){var b=this.graph.getModel().getParent(a);this.graph.getModel().isVertex(b)&&this.graph.isCellConnectable(b)&&(a=b)}if(this.graph.isCellLocked(a)||this.graph.model.isEdge(a))a=null;a=this.graph.view.getState(a)}return a}; -HoverIcons.prototype.update=function(a,b,f){if(this.graph.connectionArrowsEnabled){var d=null;this.prev!=a||this.isActive()?(this.startTime=(new Date).getTime(),this.prev=a,d=0,null!=this.updateThread&&window.clearTimeout(this.updateThread),null!=a&&(this.updateThread=window.setTimeout(mxUtils.bind(this,function(){this.isActive()||this.graph.isMouseDown||this.graph.panningHandler.isActive()||(this.prev=a,this.update(a,b,f))}),this.updateDelay+10))):null!=this.startTime&&(d=(new Date).getTime()-this.startTime); -this.setDisplay("");null!=this.currentState&&this.currentState!=a&&d<this.activationDelay&&null!=this.bbox&&!mxUtils.contains(this.bbox,b,f)?this.reset(!1):(null!=this.currentState||d>this.activationDelay)&&this.currentState!=a&&(d>this.updateDelay&&null!=a||null==this.bbox||null==b||null==f||!mxUtils.contains(this.bbox,b,f))&&(null!=a&&this.graph.isEnabled()?(this.removeNodes(),this.setCurrentState(a),this.repaint(),this.graph.connectionHandler.constraintHandler.currentFocus!=a&&this.graph.connectionHandler.constraintHandler.reset()): +HoverIcons.prototype.getState=function(a){if(null!=a)if(a=a.cell,this.graph.getModel().contains(a)){if(this.graph.getModel().isVertex(a)&&!this.graph.isCellConnectable(a)){var b=this.graph.getModel().getParent(a);this.graph.getModel().isVertex(b)&&this.graph.isCellConnectable(b)&&(a=b)}if(this.graph.isCellLocked(a)||this.graph.model.isEdge(a))a=null;a=this.graph.view.getState(a);null!=a&&null==a.style&&(a=null)}else a=null;return a}; +HoverIcons.prototype.update=function(a,b,e){if(this.graph.connectionArrowsEnabled){var c=null;this.prev!=a||this.isActive()?(this.startTime=(new Date).getTime(),this.prev=a,c=0,null!=this.updateThread&&window.clearTimeout(this.updateThread),null!=a&&(this.updateThread=window.setTimeout(mxUtils.bind(this,function(){this.isActive()||this.graph.isMouseDown||this.graph.panningHandler.isActive()||(this.prev=a,this.update(a,b,e))}),this.updateDelay+10))):null!=this.startTime&&(c=(new Date).getTime()-this.startTime); +this.setDisplay("");null!=this.currentState&&this.currentState!=a&&c<this.activationDelay&&null!=this.bbox&&!mxUtils.contains(this.bbox,b,e)?this.reset(!1):(null!=this.currentState||c>this.activationDelay)&&this.currentState!=a&&(c>this.updateDelay&&null!=a||null==this.bbox||null==b||null==e||!mxUtils.contains(this.bbox,b,e))&&(null!=a&&this.graph.isEnabled()?(this.removeNodes(),this.setCurrentState(a),this.repaint(),this.graph.connectionHandler.constraintHandler.currentFocus!=a&&this.graph.connectionHandler.constraintHandler.reset()): this.reset())}else this.reset()};HoverIcons.prototype.setCurrentState=function(a){"eastwest"!=a.style.portConstraint&&(this.graph.container.appendChild(this.arrowUp),this.graph.container.appendChild(this.arrowDown));this.graph.container.appendChild(this.arrowRight);this.graph.container.appendChild(this.arrowLeft);this.currentState=a}; (function(){var a=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){a.apply(this,arguments);this.validEdges=[]};var b=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(a,c){var d=this.getState(a);null!=d&&this.graph.model.isEdge(d.cell)&&null!=d.style&&1!=d.style[mxConstants.STYLE_CURVED]&&!d.invalid&&this.updateLineJumps(d)&&this.graph.cellRenderer.redraw(d,!1,this.isRendering());d=b.apply(this,arguments);null!= -d&&this.graph.model.isEdge(d.cell)&&1!=d.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(d);return d};var f=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(a,c){return f.apply(this,arguments)||null!=a.routedPoints&&null!=c.routedPoints&&!mxUtils.equalPoints(c.routedPoints,a.routedPoints)};var d=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=function(a){d.apply(this,arguments);this.graph.model.isEdge(a.cell)&&1!=a.style[mxConstants.STYLE_CURVED]&& -this.updateLineJumps(a)};mxGraphView.prototype.updateLineJumps=function(a){var c=a.absolutePoints;if(Graph.lineJumpsEnabled){var b=null!=a.routedPoints,d=null;if(null!=c&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var f=function(c,b,g){var h=new mxPoint(b,g);h.type=c;d.push(h);h=null!=a.routedPoints?a.routedPoints[d.length-1]:null;return null==h||h.type!=c||h.x!=b||h.y!=g},t=.5*this.scale,b=!1,d=[],m=0;m<c.length-1;m++){for(var r=c[m+1],k=c[m],v=[],q=c[m+2];m< -c.length-2&&mxUtils.ptSegDistSq(k.x,k.y,q.x,q.y,r.x,r.y)<1*this.scale*this.scale;)r=q,m++,q=c[m+2];for(var b=f(0,k.x,k.y)||b,y=0;y<this.validEdges.length;y++){var u=this.validEdges[y],A=u.absolutePoints;if(null!=A&&mxUtils.intersects(a,u)&&"1"!=u.style.noJump)for(u=0;u<A.length-1;u++){for(var n=A[u+1],p=A[u],q=A[u+2];u<A.length-2&&mxUtils.ptSegDistSq(p.x,p.y,q.x,q.y,n.x,n.y)<1*this.scale*this.scale;)n=q,u++,q=A[u+2];q=mxUtils.intersection(k.x,k.y,r.x,r.y,p.x,p.y,n.x,n.y);if(null!=q&&(Math.abs(q.x- -p.x)>t||Math.abs(q.y-p.y)>t)&&(Math.abs(q.x-n.x)>t||Math.abs(q.y-n.y)>t)){n=q.x-k.x;p=q.y-k.y;q={distSq:n*n+p*p,x:q.x,y:q.y};for(n=0;n<v.length;n++)if(v[n].distSq>q.distSq){v.splice(n,0,q);q=null;break}null==q||0!=v.length&&v[v.length-1].x===q.x&&v[v.length-1].y===q.y||v.push(q)}}}for(u=0;u<v.length;u++)b=f(1,v[u].x,v[u].y)||b}q=c[c.length-1];b=f(0,q.x,q.y)||b}a.routedPoints=d;return b}return!1};var k=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(a,c,b){this.routedPoints= -null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)k.apply(this,arguments);else{var d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,g=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,f=mxUtils.getValue(this.style,"jumpStyle","none"),m,r=!0,x=null,v=null;m=[];var q=null;a.begin();for(var y=0;y<this.state.routedPoints.length;y++){var u= -this.state.routedPoints[y],A=new mxPoint(u.x/this.scale,u.y/this.scale);0==y?A=c[0]:y==this.state.routedPoints.length-1&&(A=c[c.length-1]);var n=!1;if(null!=x&&1==u.type){var p=this.state.routedPoints[y+1],u=p.x/this.scale-A.x,p=p.y/this.scale-A.y,u=u*u+p*p;null==q&&(q=new mxPoint(A.x-x.x,A.y-x.y),v=Math.sqrt(q.x*q.x+q.y*q.y),q.x=q.x*g/v,q.y=q.y*g/v);u>g*g&&0<v&&(u=x.x-A.x,p=x.y-A.y,u=u*u+p*p,u>g*g&&(n=new mxPoint(A.x-q.x,A.y-q.y),u=new mxPoint(A.x+q.x,A.y+q.y),m.push(n),this.addPoints(a,m,b,d,!1, -null,r),m=0>Math.round(q.x)||0==Math.round(q.x)&&0>=Math.round(q.y)?1:-1,r=!1,"sharp"==f?(a.lineTo(n.x-q.y*m,n.y+q.x*m),a.lineTo(u.x-q.y*m,u.y+q.x*m),a.lineTo(u.x,u.y)):"arc"==f?(m*=1.3,a.curveTo(n.x-q.y*m,n.y+q.x*m,u.x-q.y*m,u.y+q.x*m,u.x,u.y)):(a.moveTo(u.x,u.y),r=!0),m=[u],n=!0))}else q=null;n||(m.push(A),x=A)}this.addPoints(a,m,b,d,!1,null,r);a.stroke()}};var n=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint=function(a,c,b,d){if(null==c||null== -a||"1"!=c.style.snapToPoint&&"1"!=a.style.snapToPoint)n.apply(this,arguments);else{c=this.getTerminalPort(a,c,d);var g=this.getNextPoint(a,b,d),h=this.graph.isOrthogonal(a),f=mxUtils.toRadians(Number(c.style[mxConstants.STYLE_ROTATION]||"0")),r=new mxPoint(c.getCenterX(),c.getCenterY());if(0!=f)var k=Math.cos(-f),v=Math.sin(-f),g=mxUtils.getRotatedPoint(g,k,v,r);k=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||0);k+=parseFloat(a.style[d?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]|| -0);g=this.getPerimeterPoint(c,g,0==f&&h,k);0!=f&&(k=Math.cos(f),v=Math.sin(f),g=mxUtils.getRotatedPoint(g,k,v,r));a.setAbsoluteTerminalPoint(this.snapToAnchorPoint(a,c,b,d,g),d)}};mxGraphView.prototype.snapToAnchorPoint=function(a,c,b,d,f){if(null!=c&&null!=a){a=this.graph.getAllConnectionConstraints(c);d=b=null;if(null!=a)for(var g=0;g<a.length;g++){var h=this.graph.getConnectionPoint(c,a[g]);if(null!=h){var l=(h.x-f.x)*(h.x-f.x)+(h.y-f.y)*(h.y-f.y);if(null==d||l<d)b=h,d=l}}null!=b&&(f=b)}return f}; -var p=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(a,c,b){var d=p.apply(this,arguments);"1"==a.getAttribute("placeholders")&&null!=b.state&&(d=b.state.view.graph.replacePlaceholders(b.state.cell,d));return d};var q=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(a){if(null!=a.style&&"undefined"!==typeof pako){var c=mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null);if(null!=c&&"stencil("==c.substring(0,8))try{var b= -c.substring(8,c.length-1),d=mxUtils.parseXml(a.view.graph.decompress(b));return new mxShape(new mxStencil(d.documentElement))}catch(l){null!=window.console&&console.log("Error in shape: "+l)}}return q.apply(this,arguments)}})();mxStencilRegistry.libraries={};mxStencilRegistry.dynamicLoading=!0;mxStencilRegistry.allowEval=!0;mxStencilRegistry.packages=[]; -mxStencilRegistry.getStencil=function(a){var b=mxStencilRegistry.stencils[a];if(null==b&&null==mxCellRenderer.defaultShapes[a]&&mxStencilRegistry.dynamicLoading){var f=mxStencilRegistry.getBasenameForStencil(a);if(null!=f){b=mxStencilRegistry.libraries[f];if(null!=b){if(null==mxStencilRegistry.packages[f]){for(var d=0;d<b.length;d++){var k=b[d];if(".xml"==k.toLowerCase().substring(k.length-4,k.length))mxStencilRegistry.loadStencilSet(k,null);else if(".js"==k.toLowerCase().substring(k.length-3,k.length))try{if(mxStencilRegistry.allowEval){var n= -mxUtils.load(k);null!=n&&200<=n.getStatus()&&299>=n.getStatus()&&eval.call(window,n.getText())}}catch(p){null!=window.console&&console.log("error in getStencil:",k,p)}}mxStencilRegistry.packages[f]=1}}else f=f.replace("_-_","_"),mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+f+".xml",null);b=mxStencilRegistry.stencils[a]}}return b}; -mxStencilRegistry.getBasenameForStencil=function(a){var b=null;if(null!=a&&(a=a.split("."),0<a.length&&"mxgraph"==a[0]))for(var b=a[1],f=2;f<a.length-1;f++)b+="/"+a[f];return b}; -mxStencilRegistry.loadStencilSet=function(a,b,f,d){var k=mxStencilRegistry.packages[a];if(null!=f&&f||null==k){var n=!1;if(null==k)try{if(d){mxStencilRegistry.loadStencil(a,mxUtils.bind(this,function(d){null!=d&&null!=d.documentElement&&(mxStencilRegistry.packages[a]=d,n=!0,mxStencilRegistry.parseStencilSet(d.documentElement,b,n))}));return}k=mxStencilRegistry.loadStencil(a);mxStencilRegistry.packages[a]=k;n=!0}catch(p){null!=window.console&&console.log("error in loadStencilSet:",a,p)}null!=k&&null!= -k.documentElement&&mxStencilRegistry.parseStencilSet(k.documentElement,b,n)}};mxStencilRegistry.loadStencil=function(a,b){if(null!=b)mxUtils.get(a,mxUtils.bind(this,function(a){b(200<=a.getStatus()&&299>=a.getStatus()?a.getXml():null)}));else return mxUtils.load(a).getXml()};mxStencilRegistry.parseStencilSets=function(a){for(var b=0;b<a.length;b++)mxStencilRegistry.parseStencilSet(mxUtils.parseXml(a[b]).documentElement)}; -mxStencilRegistry.parseStencilSet=function(a,b,f){if("stencils"==a.nodeName)for(var d=a.firstChild;null!=d;)"shapes"==d.nodeName&&mxStencilRegistry.parseStencilSet(d,b,f),d=d.nextSibling;else{f=null!=f?f:!0;var d=a.firstChild,k="";a=a.getAttribute("name");for(null!=a&&(k=a+".");null!=d;){if(d.nodeType==mxConstants.NODETYPE_ELEMENT&&(a=d.getAttribute("name"),null!=a)){var k=k.toLowerCase(),n=a.replace(/ /g,"_");f&&mxStencilRegistry.addStencil(k+n.toLowerCase(),new mxStencil(d));if(null!=b){var p=d.getAttribute("w"), -q=d.getAttribute("h"),p=null==p?80:parseInt(p,10),q=null==q?80:parseInt(q,10);b(k,n,a,p,q)}}d=d.nextSibling}}}; +d&&this.graph.model.isEdge(d.cell)&&null!=d.style&&1!=d.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(d);return d};var e=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(a,b){return e.apply(this,arguments)||null!=a.routedPoints&&null!=b.routedPoints&&!mxUtils.equalPoints(b.routedPoints,a.routedPoints)};var c=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=function(a){c.apply(this,arguments);this.graph.model.isEdge(a.cell)&& +1!=a.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(a)};mxGraphView.prototype.updateLineJumps=function(a){var b=a.absolutePoints;if(Graph.lineJumpsEnabled){var d=null!=a.routedPoints,c=null;if(null!=b&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var e=function(d,b,f){var e=new mxPoint(b,f);e.type=d;c.push(e);e=null!=a.routedPoints?a.routedPoints[c.length-1]:null;return null==e||e.type!=d||e.x!=b||e.y!=f},n=.5*this.scale,d=!1,c=[],g=0;g<b.length-1;g++){for(var p= +b[g+1],k=b[g],x=[],t=b[g+2];g<b.length-2&&mxUtils.ptSegDistSq(k.x,k.y,t.x,t.y,p.x,p.y)<1*this.scale*this.scale;)p=t,g++,t=b[g+2];for(var d=e(0,k.x,k.y)||d,y=0;y<this.validEdges.length;y++){var u=this.validEdges[y],A=u.absolutePoints;if(null!=A&&mxUtils.intersects(a,u)&&"1"!=u.style.noJump)for(u=0;u<A.length-1;u++){for(var D=A[u+1],r=A[u],t=A[u+2];u<A.length-2&&mxUtils.ptSegDistSq(r.x,r.y,t.x,t.y,D.x,D.y)<1*this.scale*this.scale;)D=t,u++,t=A[u+2];t=mxUtils.intersection(k.x,k.y,p.x,p.y,r.x,r.y,D.x, +D.y);if(null!=t&&(Math.abs(t.x-r.x)>n||Math.abs(t.y-r.y)>n)&&(Math.abs(t.x-D.x)>n||Math.abs(t.y-D.y)>n)){D=t.x-k.x;r=t.y-k.y;t={distSq:D*D+r*r,x:t.x,y:t.y};for(D=0;D<x.length;D++)if(x[D].distSq>t.distSq){x.splice(D,0,t);t=null;break}null==t||0!=x.length&&x[x.length-1].x===t.x&&x[x.length-1].y===t.y||x.push(t)}}}for(u=0;u<x.length;u++)d=e(1,x[u].x,x[u].y)||d}t=b[b.length-1];d=e(0,t.x,t.y)||d}a.routedPoints=c;return d}return!1};var k=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(a, +b,d){this.routedPoints=null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)k.apply(this,arguments);else{var c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,e=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,n=mxUtils.getValue(this.style,"jumpStyle","none"),g,p=!0,B=null,x=null;g=[];var t=null;a.begin();for(var y= +0;y<this.state.routedPoints.length;y++){var u=this.state.routedPoints[y],A=new mxPoint(u.x/this.scale,u.y/this.scale);0==y?A=b[0]:y==this.state.routedPoints.length-1&&(A=b[b.length-1]);var D=!1;if(null!=B&&1==u.type){var r=this.state.routedPoints[y+1],u=r.x/this.scale-A.x,r=r.y/this.scale-A.y,u=u*u+r*r;null==t&&(t=new mxPoint(A.x-B.x,A.y-B.y),x=Math.sqrt(t.x*t.x+t.y*t.y),t.x=t.x*e/x,t.y=t.y*e/x);u>e*e&&0<x&&(u=B.x-A.x,r=B.y-A.y,u=u*u+r*r,u>e*e&&(D=new mxPoint(A.x-t.x,A.y-t.y),u=new mxPoint(A.x+t.x, +A.y+t.y),g.push(D),this.addPoints(a,g,d,c,!1,null,p),g=0>Math.round(t.x)||0==Math.round(t.x)&&0>=Math.round(t.y)?1:-1,p=!1,"sharp"==n?(a.lineTo(D.x-t.y*g,D.y+t.x*g),a.lineTo(u.x-t.y*g,u.y+t.x*g),a.lineTo(u.x,u.y)):"arc"==n?(g*=1.3,a.curveTo(D.x-t.y*g,D.y+t.x*g,u.x-t.y*g,u.y+t.x*g,u.x,u.y)):(a.moveTo(u.x,u.y),p=!0),g=[u],D=!0))}else t=null;D||(g.push(A),B=A)}this.addPoints(a,g,d,c,!1,null,p);a.stroke()}};var m=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint= +function(a,b,d,c){if(null==b||null==a||"1"!=b.style.snapToPoint&&"1"!=a.style.snapToPoint)m.apply(this,arguments);else{b=this.getTerminalPort(a,b,c);var f=this.getNextPoint(a,d,c),e=this.graph.isOrthogonal(a),g=mxUtils.toRadians(Number(b.style[mxConstants.STYLE_ROTATION]||"0")),p=new mxPoint(b.getCenterX(),b.getCenterY());if(0!=g)var k=Math.cos(-g),r=Math.sin(-g),f=mxUtils.getRotatedPoint(f,k,r,p);k=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||0);k+=parseFloat(a.style[c?mxConstants.STYLE_SOURCE_PERIMETER_SPACING: +mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);f=this.getPerimeterPoint(b,f,0==g&&e,k);0!=g&&(k=Math.cos(g),r=Math.sin(g),f=mxUtils.getRotatedPoint(f,k,r,p));a.setAbsoluteTerminalPoint(this.snapToAnchorPoint(a,b,d,c,f),c)}};mxGraphView.prototype.snapToAnchorPoint=function(a,b,d,c,e){if(null!=b&&null!=a){a=this.graph.getAllConnectionConstraints(b);c=d=null;if(null!=a)for(var f=0;f<a.length;f++){var g=this.graph.getConnectionPoint(b,a[f]);if(null!=g){var l=(g.x-e.x)*(g.x-e.x)+(g.y-e.y)*(g.y-e.y);if(null== +c||l<c)d=g,c=l}}null!=d&&(e=d)}return e};var q=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(a,b,d){var c=q.apply(this,arguments);"1"==a.getAttribute("placeholders")&&null!=d.state&&(c=d.state.view.graph.replacePlaceholders(d.state.cell,c));return c};var r=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(a){if(null!=a.style&&"undefined"!==typeof pako){var b=mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null);if(null!= +b&&"stencil("==b.substring(0,8))try{var d=b.substring(8,b.length-1),c=mxUtils.parseXml(a.view.graph.decompress(d));return new mxShape(new mxStencil(c.documentElement))}catch(l){null!=window.console&&console.log("Error in shape: "+l)}}return r.apply(this,arguments)}})();mxStencilRegistry.libraries={};mxStencilRegistry.dynamicLoading=!0;mxStencilRegistry.allowEval=!0;mxStencilRegistry.packages=[]; +mxStencilRegistry.getStencil=function(a){var b=mxStencilRegistry.stencils[a];if(null==b&&null==mxCellRenderer.defaultShapes[a]&&mxStencilRegistry.dynamicLoading){var e=mxStencilRegistry.getBasenameForStencil(a);if(null!=e){b=mxStencilRegistry.libraries[e];if(null!=b){if(null==mxStencilRegistry.packages[e]){for(var c=0;c<b.length;c++){var k=b[c];if(".xml"==k.toLowerCase().substring(k.length-4,k.length))mxStencilRegistry.loadStencilSet(k,null);else if(".js"==k.toLowerCase().substring(k.length-3,k.length))try{if(mxStencilRegistry.allowEval){var m= +mxUtils.load(k);null!=m&&200<=m.getStatus()&&299>=m.getStatus()&&eval.call(window,m.getText())}}catch(q){null!=window.console&&console.log("error in getStencil:",k,q)}}mxStencilRegistry.packages[e]=1}}else e=e.replace("_-_","_"),mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+e+".xml",null);b=mxStencilRegistry.stencils[a]}}return b}; +mxStencilRegistry.getBasenameForStencil=function(a){var b=null;if(null!=a&&(a=a.split("."),0<a.length&&"mxgraph"==a[0]))for(var b=a[1],e=2;e<a.length-1;e++)b+="/"+a[e];return b}; +mxStencilRegistry.loadStencilSet=function(a,b,e,c){var k=mxStencilRegistry.packages[a];if(null!=e&&e||null==k){var m=!1;if(null==k)try{if(c){mxStencilRegistry.loadStencil(a,mxUtils.bind(this,function(c){null!=c&&null!=c.documentElement&&(mxStencilRegistry.packages[a]=c,m=!0,mxStencilRegistry.parseStencilSet(c.documentElement,b,m))}));return}k=mxStencilRegistry.loadStencil(a);mxStencilRegistry.packages[a]=k;m=!0}catch(q){null!=window.console&&console.log("error in loadStencilSet:",a,q)}null!=k&&null!= +k.documentElement&&mxStencilRegistry.parseStencilSet(k.documentElement,b,m)}};mxStencilRegistry.loadStencil=function(a,b){if(null!=b)mxUtils.get(a,mxUtils.bind(this,function(a){b(200<=a.getStatus()&&299>=a.getStatus()?a.getXml():null)}));else return mxUtils.load(a).getXml()};mxStencilRegistry.parseStencilSets=function(a){for(var b=0;b<a.length;b++)mxStencilRegistry.parseStencilSet(mxUtils.parseXml(a[b]).documentElement)}; +mxStencilRegistry.parseStencilSet=function(a,b,e){if("stencils"==a.nodeName)for(var c=a.firstChild;null!=c;)"shapes"==c.nodeName&&mxStencilRegistry.parseStencilSet(c,b,e),c=c.nextSibling;else{e=null!=e?e:!0;var c=a.firstChild,k="";a=a.getAttribute("name");for(null!=a&&(k=a+".");null!=c;){if(c.nodeType==mxConstants.NODETYPE_ELEMENT&&(a=c.getAttribute("name"),null!=a)){var k=k.toLowerCase(),m=a.replace(/ /g,"_");e&&mxStencilRegistry.addStencil(k+m.toLowerCase(),new mxStencil(c));if(null!=b){var q=c.getAttribute("w"), +r=c.getAttribute("h"),q=null==q?80:parseInt(q,10),r=null==r?80:parseInt(r,10);b(k,m,a,q,r)}}c=c.nextSibling}}}; "undefined"!=typeof mxVertexHandler&&function(){function a(){var a=document.createElement("div");a.className="geHint";a.style.whiteSpace="nowrap";a.style.position="absolute";return a}mxConstants.HANDLE_FILLCOLOR="#29b6f2";mxConstants.HANDLE_STROKECOLOR="#0088cf";mxConstants.VERTEX_SELECTION_COLOR="#00a8ff";mxConstants.OUTLINE_COLOR="#00a8ff";mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff";mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff";mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff";mxConstants.EDGE_SELECTION_COLOR= "#00a8ff";mxConstants.DEFAULT_VALID_COLOR="#00a8ff";mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff";mxConstants.GUIDE_COLOR="#0088cf";mxConstants.HIGHLIGHT_OPACITY=30;mxConstants.HIGHLIGHT_SIZE=5;mxEdgeHandler.prototype.snapToTerminals=!0;mxGraphHandler.prototype.guidesEnabled=!0;mxRubberband.prototype.fadeOut=!0;mxGuide.prototype.isEnabledForEvent=function(a){return!mxEvent.isAltDown(a)};var b=mxConnectionHandler.prototype.isCreateTarget;mxConnectionHandler.prototype.isCreateTarget=function(a){return mxEvent.isControlDown(a)|| b.apply(this,arguments)};mxConstraintHandler.prototype.createHighlightShape=function(){var a=new mxEllipse(null,this.highlightColor,this.highlightColor,0);a.opacity=mxConstants.HIGHLIGHT_OPACITY;return a};mxConnectionHandler.prototype.livePreview=!0;mxConnectionHandler.prototype.cursor="crosshair";mxConnectionHandler.prototype.createEdgeState=function(a){a=this.graph.createCurrentEdgeStyle();a=this.graph.createEdge(null,null,null,null,null,a);a=new mxCellState(this.graph.view,a,this.graph.getCellStyle(a)); -for(var c in this.graph.currentEdgeStyle)a.style[c]=this.graph.currentEdgeStyle[c];return a};var f=mxConnectionHandler.prototype.createShape;mxConnectionHandler.prototype.createShape=function(){var a=f.apply(this,arguments);a.isDashed="1"==this.graph.currentEdgeStyle[mxConstants.STYLE_DASHED];return a};mxConnectionHandler.prototype.updatePreview=function(a){};var d=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var a=d.apply(this,arguments),c=a.getCell; -a.getCell=mxUtils.bind(this,function(a){var b=c.apply(this,arguments);this.error=null;return b});return a};mxConnectionHandler.prototype.isCellEnabled=function(a){return!this.graph.isCellLocked(a)};Graph.prototype.defaultVertexStyle={};Graph.prototype.defaultEdgeStyle={edgeStyle:"orthogonalEdgeStyle",rounded:"0",jettySize:"auto",orthogonalLoop:"1"};Graph.prototype.createCurrentEdgeStyle=function(){var a="edgeStyle="+(this.currentEdgeStyle.edgeStyle||"none")+";";null!=this.currentEdgeStyle.shape&& +for(var d in this.graph.currentEdgeStyle)a.style[d]=this.graph.currentEdgeStyle[d];return a};var e=mxConnectionHandler.prototype.createShape;mxConnectionHandler.prototype.createShape=function(){var a=e.apply(this,arguments);a.isDashed="1"==this.graph.currentEdgeStyle[mxConstants.STYLE_DASHED];return a};mxConnectionHandler.prototype.updatePreview=function(a){};var c=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var a=c.apply(this,arguments),d=a.getCell; +a.getCell=mxUtils.bind(this,function(a){var b=d.apply(this,arguments);this.error=null;return b});return a};mxConnectionHandler.prototype.isCellEnabled=function(a){return!this.graph.isCellLocked(a)};Graph.prototype.defaultVertexStyle={};Graph.prototype.defaultEdgeStyle={edgeStyle:"orthogonalEdgeStyle",rounded:"0",jettySize:"auto",orthogonalLoop:"1"};Graph.prototype.createCurrentEdgeStyle=function(){var a="edgeStyle="+(this.currentEdgeStyle.edgeStyle||"none")+";";null!=this.currentEdgeStyle.shape&& (a+="shape="+this.currentEdgeStyle.shape+";");null!=this.currentEdgeStyle.curved&&(a+="curved="+this.currentEdgeStyle.curved+";");null!=this.currentEdgeStyle.rounded&&(a+="rounded="+this.currentEdgeStyle.rounded+";");null!=this.currentEdgeStyle.comic&&(a+="comic="+this.currentEdgeStyle.comic+";");null!=this.currentEdgeStyle.jumpStyle&&(a+="jumpStyle="+this.currentEdgeStyle.jumpStyle+";");null!=this.currentEdgeStyle.jumpSize&&(a+="jumpSize="+this.currentEdgeStyle.jumpSize+";");"elbowEdgeStyle"==this.currentEdgeStyle.edgeStyle&& null!=this.currentEdgeStyle.elbow&&(a+="elbow="+this.currentEdgeStyle.elbow+";");return a=null!=this.currentEdgeStyle.html?a+("html="+this.currentEdgeStyle.html+";"):a+"html=1;"};Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var a=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement():null;null!=a&&(new mxCodec(a.ownerDocument)).decode(a,this.getStylesheet())}; -Graph.prototype.importGraphModel=function(a,c,b,d){c=null!=c?c:0;b=null!=b?b:0;var g=new mxCodec(a.ownerDocument),h=new mxGraphModel;g.decode(a,h);a=[];g=h.getChildren(this.cloneCell(h.root,this.isCloneInvalidEdges()));if(null!=g){g=g.slice();this.model.beginUpdate();try{if(1!=g.length||this.isCellLocked(this.getDefaultParent()))for(h=0;h<g.length;h++)a=a.concat(this.model.getChildren(this.moveCells([g[h]],c,b,!1,this.model.getRoot())[0]));else a=this.moveCells(h.getChildren(g[0]),c,b,!1,this.getDefaultParent()); -if(d){this.isGridEnabled()&&(c=this.snap(c),b=this.snap(b));var f=this.getBoundingBoxFromGeometry(a,!0);null!=f&&this.moveCells(a,c-f.x,b-f.y)}}finally{this.model.endUpdate()}}return a};Graph.prototype.getAllConnectionConstraints=function(a,c){if(null!=a){var b=null;if(null!=a.shape){var d=a.shape.direction,g=a.shape.bounds,h=a.shape.scale,b=g.width/h,g=g.height/h;if(d==mxConstants.DIRECTION_NORTH||d==mxConstants.DIRECTION_SOUTH)var f=b,b=g,g=f;b=a.shape.getConstraints(a.style,b,g)}if(null!=b)return b; -b=mxUtils.getValue(a.style,"points",null);if(null!=b){d=[];try{for(var l=JSON.parse(b),b=0;b<l.length;b++)f=l[b],d.push(new mxConnectionConstraint(new mxPoint(f[0],f[1]),2<f.length?"0"!=f[2]:!0,null,3<f.length?f[3]:0,4<f.length?f[4]:0))}catch(L){}return d}if(null!=a.shape)if(null!=a.shape.stencil){if(null!=a.shape.stencil)return a.shape.stencil.constraints}else if(null!=a.shape.constraints)return a.shape.constraints}return null};Graph.prototype.flipEdge=function(a){if(null!=a){var c=this.view.getState(a), -c=null!=c?c.style:this.getCellStyle(a);null!=c&&(c=mxUtils.getValue(c,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL,this.setCellStyles(mxConstants.STYLE_ELBOW,c,[a]))}};Graph.prototype.isValidRoot=function(a){for(var c=this.model.getChildCount(a),b=0,d=0;d<c;d++){var g=this.model.getChildAt(a,d);this.model.isVertex(g)&&(g=this.getCellGeometry(g),null==g||g.relative||b++)}return 0<b||this.isContainer(a)}; -Graph.prototype.isValidDropTarget=function(a){var c=this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);return"1"!=mxUtils.getValue(c,"part","0")&&(this.isContainer(a)||mxGraph.prototype.isValidDropTarget.apply(this,arguments)&&"0"!=mxUtils.getValue(c,"dropTarget","1"))};Graph.prototype.createGroupCell=function(){var a=mxGraph.prototype.createGroupCell.apply(this,arguments);a.setStyle("group");return a};Graph.prototype.isExtendParentsOnAdd=function(a){var c=mxGraph.prototype.isExtendParentsOnAdd.apply(this, -arguments);if(c&&null!=a&&null!=this.layoutManager){var b=this.model.getParent(a);null!=b&&(b=this.layoutManager.getLayout(b),null!=b&&b.constructor==mxStackLayout&&(c=!1))}return c};Graph.prototype.getPreferredSizeForCell=function(a){var c=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=c&&(c.width+=10,c.height+=4,this.gridEnabled&&(c.width=this.snap(c.width),c.height=this.snap(c.height)));return c};Graph.prototype.turnShapes=function(a){var c=this.getModel(),b=[];c.beginUpdate(); -try{for(var d=0;d<a.length;d++){var g=a[d];if(c.isEdge(g)){var h=c.getTerminal(g,!0),f=c.getTerminal(g,!1);c.setTerminal(g,f,!0);c.setTerminal(g,h,!1);var l=c.getGeometry(g);if(null!=l){l=l.clone();null!=l.points&&l.points.reverse();var m=l.getTerminalPoint(!0),t=l.getTerminalPoint(!1);l.setTerminalPoint(m,!1);l.setTerminalPoint(t,!0);c.setGeometry(g,l);var r=this.view.getState(g),u=this.view.getState(h),y=this.view.getState(f);if(null!=r){var J=null!=u?this.getConnectionConstraint(r,u,!0):null,k= -null!=y?this.getConnectionConstraint(r,y,!1):null;this.setConnectionConstraint(g,h,!0,k);this.setConnectionConstraint(g,f,!1,J)}b.push(g)}}else if(c.isVertex(g)&&(l=this.getCellGeometry(g),null!=l)){l=l.clone();l.x+=l.width/2-l.height/2;l.y+=l.height/2-l.width/2;var v=l.width;l.width=l.height;l.height=v;c.setGeometry(g,l);var A=this.view.getState(g);if(null!=A){var q=A.style[mxConstants.STYLE_DIRECTION]||"east";"east"==q?q="south":"south"==q?q="west":"west"==q?q="north":"north"==q&&(q="east");this.setCellStyles(mxConstants.STYLE_DIRECTION, -q,[g])}b.push(g)}}}finally{c.endUpdate()}return b};Graph.prototype.stencilHasPlaceholders=function(a){if(null!=a&&null!=a.fgNode)for(a=a.fgNode.firstChild;null!=a;){if("text"==a.nodeName&&"1"==a.getAttribute("placeholders"))return!0;a=a.nextSibling}return!1};Graph.prototype.processChange=function(a){mxGraph.prototype.processChange.apply(this,arguments);if(a instanceof mxValueChange&&null!=a.cell&&null!=a.cell.value&&"object"==typeof a.cell.value){var c=this.model.getDescendants(a.cell);if(0<c.length)for(var b= -0;b<c.length;b++){var d=this.view.getState(c[b]);null!=d&&null!=d.shape&&null!=d.shape.stencil&&this.stencilHasPlaceholders(d.shape.stencil)?this.removeStateForCell(c[b]):this.isReplacePlaceholders(c[b])&&this.view.invalidate(c[b],!1,!1)}}};Graph.prototype.replaceElement=function(a,c){for(var b=a.ownerDocument.createElement(null!=c?c:"span"),d=Array.prototype.slice.call(a.attributes);attr=d.pop();)b.setAttribute(attr.nodeName,attr.nodeValue);b.innerHTML=a.innerHTML;a.parentNode.replaceChild(b,a)}; -Graph.prototype.updateLabelElements=function(a,c,b){a=null!=a?a:this.getSelectionCells();for(var d=document.createElement("div"),g=0;g<a.length;g++)if(this.isHtmlLabel(a[g])){var h=this.convertValueToString(a[g]);if(null!=h&&0<h.length){d.innerHTML=h;for(var f=d.getElementsByTagName(null!=b?b:"*"),l=0;l<f.length;l++)c(f[l]);d.innerHTML!=h&&this.cellLabelChanged(a[g],d.innerHTML)}}};Graph.prototype.cellLabelChanged=function(a,c,b){c=this.zapGremlins(c);this.model.beginUpdate();try{if(null!=a.value&& -"object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder"))for(var d=a.getAttribute("placeholder"),g=a;null!=g;){if(g==this.model.getRoot()||null!=g.value&&"object"==typeof g.value&&g.hasAttribute(d)){this.setAttributeForCell(g,d,c);break}g=this.model.getParent(g)}var h=a.value.cloneNode(!0);h.setAttribute("label",c);c=h}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(a){if(null!=a){for(var c= -new mxDictionary,b=0;b<a.length;b++)c.put(a[b],!0);for(var d=[],b=0;b<a.length;b++){var g=this.model.getParent(a[b]);null==g||c.get(g)||(c.put(g,!0),d.push(g))}for(b=0;b<d.length;b++)if(g=this.view.getState(d[b]),null!=g&&(this.model.isEdge(g.cell)||this.model.isVertex(g.cell))&&this.isCellDeletable(g.cell)){var h=mxUtils.getValue(g.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),f=mxUtils.getValue(g.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);if(h==mxConstants.NONE&&f==mxConstants.NONE){h= -!0;for(f=0;f<this.model.getChildCount(g.cell)&&h;f++)c.get(this.model.getChildAt(g.cell,f))||(h=!1);h&&a.push(g.cell)}}}mxGraph.prototype.cellsRemoved.apply(this,arguments)};Graph.prototype.removeCellsAfterUngroup=function(a){for(var c=[],b=0;b<a.length;b++)if(this.isCellDeletable(a[b])){var d=this.view.getState(a[b]);if(null!=d){var g=mxUtils.getValue(d.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),d=mxUtils.getValue(d.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);g==mxConstants.NONE&& -d==mxConstants.NONE&&c.push(a[b])}}a=c;mxGraph.prototype.removeCellsAfterUngroup.apply(this,arguments)};Graph.prototype.setLinkForCell=function(a,c){this.setAttributeForCell(a,"link",c)};Graph.prototype.setTooltipForCell=function(a,c){this.setAttributeForCell(a,"tooltip",c)};Graph.prototype.setAttributeForCell=function(a,c,b){var d;null!=a.value&&"object"==typeof a.value?d=a.value.cloneNode(!0):(d=mxUtils.createXmlDocument().createElement("UserObject"),d.setAttribute("label",a.value||""));null!=b&& -0<b.length?d.setAttribute(c,b):d.removeAttribute(c);this.model.setValue(a,d)};Graph.prototype.getDropTarget=function(a,c,b,d){this.getModel();if(mxEvent.isAltDown(c))return null;for(var g=0;g<a.length;g++)if(this.model.isEdge(this.model.getParent(a[g])))return null;return mxGraph.prototype.getDropTarget.apply(this,arguments)};Graph.prototype.click=function(a){mxGraph.prototype.click.call(this,a);this.firstClickState=a.getState();this.firstClickSource=a.getSource()};Graph.prototype.dblClick=function(a, -c){if(this.isEnabled()){var b=mxUtils.convertPoint(this.container,mxEvent.getClientX(a),mxEvent.getClientY(a));if(null!=a&&!this.model.isVertex(c)){var d=this.model.isEdge(c)?this.view.getState(c):null,g=mxEvent.getSource(a);this.firstClickState!=d||this.firstClickSource!=g||null!=d&&null!=d.text&&null!=d.text.node&&(mxUtils.contains(d.text.boundingBox,b.x,b.y)||mxUtils.isAncestorNode(d.text.node,mxEvent.getSource(a)))||(null!=d||this.isCellLocked(this.getDefaultParent()))&&(null==d||this.isCellLocked(d.cell))|| -!(null!=d||mxClient.IS_VML&&g==this.view.getCanvas()||mxClient.IS_SVG&&g==this.view.getCanvas().ownerSVGElement)||(c=this.addText(b.x,b.y,d))}mxGraph.prototype.dblClick.call(this,a,c)}};Graph.prototype.getInsertPoint=function(){var a=this.getGridSize(),c=this.container.scrollLeft/this.view.scale-this.view.translate.x,b=this.container.scrollTop/this.view.scale-this.view.translate.y;if(this.pageVisible)var d=this.getPageLayout(),g=this.getPageSize(),c=Math.max(c,d.x*g.width),b=Math.max(b,d.y*g.height); -return new mxPoint(this.snap(c+a),this.snap(b+a))};Graph.prototype.getFreeInsertPoint=function(){var a=this.view,c=this.getGraphBounds(),b=this.getInsertPoint(),d=this.snap(Math.round(Math.max(b.x,c.x/a.scale-a.translate.x+(0==c.width?2*this.gridSize:0)))),a=this.snap(Math.round(Math.max(b.y,(c.y+c.height)/a.scale-a.translate.y+2*this.gridSize)));return new mxPoint(d,a)};Graph.prototype.isMouseInsertPoint=function(){return!1};Graph.prototype.addText=function(a,c,b){var d=new mxCell;d.value="Text"; -d.style="text;html=1;resizable=0;points=[];";d.geometry=new mxGeometry(0,0,0,0);d.vertex=!0;if(null!=b){d.style+="align=center;verticalAlign=middle;labelBackgroundColor=#ffffff;";d.geometry.relative=!0;d.connectable=!1;var g=this.view.getRelativePoint(b,a,c);d.geometry.x=Math.round(1E4*g.x)/1E4;d.geometry.y=Math.round(g.y);d.geometry.offset=new mxPoint(0,0);var g=this.view.getPoint(b,d.geometry),h=this.view.scale;d.geometry.offset=new mxPoint(Math.round((a-g.x)/h),Math.round((c-g.y)/h))}else d.style+= -"autosize=1;align=left;verticalAlign=top;spacingTop=-4;",g=this.view.translate,d.geometry.width=40,d.geometry.height=20,d.geometry.x=Math.round(a/this.view.scale)-g.x,d.geometry.y=Math.round(c/this.view.scale)-g.y;this.getModel().beginUpdate();try{this.addCells([d],null!=b?b.cell:null),this.fireEvent(new mxEventObject("textInserted","cells",[d])),this.autoSizeCell(d)}finally{this.getModel().endUpdate()}return d};Graph.prototype.getAbsoluteUrl=function(a){null!=a&&this.isRelativeUrl(a)&&(a="#"==a.charAt(0)? -this.baseUrl+a:"/"==a.charAt(0)?this.domainUrl+a:this.domainPathUrl+a);return a};Graph.prototype.addClickHandler=function(a,c,b){var d=mxUtils.bind(this,function(){var a=this.container.getElementsByTagName("a");if(null!=a)for(var b=0;b<a.length;b++){var d=this.getAbsoluteUrl(a[b].getAttribute("href"));null!=d&&(a[b].setAttribute("rel",this.linkRelation),a[b].setAttribute("href",d),null!=c&&mxEvent.addGestureListeners(a[b],null,null,c))}});this.model.addListener(mxEvent.CHANGE,d);d();var g=this.container.style.cursor, -h=this.getTolerance(),f=this,l={currentState:null,currentLink:null,highlight:null!=a&&""!=a&&a!=mxConstants.NONE?new mxCellHighlight(f,a,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(a){var c=a.sourceState;if(null==c||null==f.getLinkForCell(c.cell))a=f.getCellAt(a.getGraphX(),a.getGraphY(),null,null,null,function(a,c,b){return null==f.getLinkForCell(a.cell)}),c=f.view.getState(a);c!=this.currentState&&(null!=this.currentState&&this.clear(),this.currentState=c,null!= -this.currentState&&this.activate(this.currentState))},mouseDown:function(a,c){this.startX=c.getGraphX();this.startY=c.getGraphY();this.scrollLeft=f.container.scrollLeft;this.scrollTop=f.container.scrollTop;null==this.currentLink&&"auto"==f.container.style.overflow&&(f.container.style.cursor="move");this.updateCurrentState(c)},mouseMove:function(a,c){if(f.isMouseDown){if(null!=this.currentLink){var b=Math.abs(this.startX-c.getGraphX()),d=Math.abs(this.startY-c.getGraphY());(b>h||d>h)&&this.clear()}}else{for(b= -c.getSource();null!=b&&"a"!=b.nodeName.toLowerCase();)b=b.parentNode;null!=b?this.clear():(null!=f.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&&f.tooltipHandler.reset(c,!0,this.currentState),(null==this.currentState||c.getState()!=this.currentState&&null!=c.sourceState||!f.intersects(this.currentState,c.getGraphX(),c.getGraphY()))&&this.updateCurrentState(c))}},mouseUp:function(a,d){for(var g=d.getSource(),l=d.getEvent();null!=g&&"a"!=g.nodeName.toLowerCase();)g=g.parentNode;null== -g&&Math.abs(this.scrollLeft-f.container.scrollLeft)<h&&Math.abs(this.scrollTop-f.container.scrollTop)<h&&(null==d.sourceState||!d.isSource(d.sourceState.control))&&((mxEvent.isLeftMouseButton(l)||mxEvent.isMiddleMouseButton(l))&&!mxEvent.isPopupTrigger(l)||mxEvent.isTouchEvent(l))&&(null!=this.currentLink?(g=f.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&g||null==c||c(l,this.currentLink),mxEvent.isConsumed(l)||(l=mxEvent.isMiddleMouseButton(l)?"_blank":g?f.linkTarget:"_top", -f.openLink(this.currentLink,l),d.consume())):null!=b&&!d.isConsumed()&&Math.abs(this.scrollLeft-f.container.scrollLeft)<h&&Math.abs(this.scrollTop-f.container.scrollTop)<h&&Math.abs(this.startX-d.getGraphX())<h&&Math.abs(this.startY-d.getGraphY())<h&&b(d.getEvent()));this.clear()},activate:function(a){this.currentLink=f.getAbsoluteUrl(f.getLinkForCell(a.cell));null!=this.currentLink&&(f.container.style.cursor="pointer",null!=this.highlight&&this.highlight.highlight(a))},clear:function(){null!=f.container&& -(f.container.style.cursor=g);this.currentLink=this.currentState=null;null!=this.highlight&&this.highlight.hide();null!=f.tooltipHandler&&f.tooltipHandler.hide()}};f.click=function(a){};f.addMouseListener(l);mxEvent.addListener(document,"mouseleave",function(a){l.clear()})};Graph.prototype.duplicateCells=function(a,c){a=null!=a?a:this.getSelectionCells();c=null!=c?c:!0;a=this.model.getTopmostCells(a);var b=this.getModel(),d=this.gridSize,g=[];b.beginUpdate();try{for(var f=this.cloneCells(a,!1,null, -!0),h=0;h<a.length;h++){var l=b.getParent(a[h]),m=this.moveCells([f[h]],d,d,!1)[0];g.push(m);if(c)b.add(l,f[h]);else{var t=l.getIndex(a[h]);b.add(l,f[h],t+1)}}}finally{b.endUpdate()}return g};Graph.prototype.insertImage=function(a,c,b){if(null!=a){for(var d=this.cellEditor.textarea.getElementsByTagName("img"),g=[],f=0;f<d.length;f++)g.push(d[f]);document.execCommand("insertimage",!1,a);a=this.cellEditor.textarea.getElementsByTagName("img");if(a.length==g.length+1)for(f=a.length-1;0<=f;f--)if(0==f|| -a[f]!=g[f-1]){a[f].setAttribute("width",c);a[f].setAttribute("height",b);break}}};Graph.prototype.insertLink=function(a){if(0==a.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var c=this.cellEditor.textarea.getElementsByTagName("a"),b=[],d=0;d<c.length;d++)b.push(c[d]);document.execCommand("createlink",!1,mxUtils.trim(a));c=this.cellEditor.textarea.getElementsByTagName("a");if(c.length==b.length+1)for(d=c.length-1;0<=d;d--)if(c[d]!=b[d-1]){for(c=c[d].getElementsByTagName("a");0< -c.length;){for(b=c[0].parentNode;null!=c[0].firstChild;)b.insertBefore(c[0].firstChild,c[0]);b.removeChild(c[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(a))};Graph.prototype.isCellResizable=function(a){var c=mxGraph.prototype.isCellResizable.apply(this,arguments),b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return c||"0"!=mxUtils.getValue(b,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==b[mxConstants.STYLE_WHITE_SPACE]};Graph.prototype.distributeCells=function(a, -c){null==c&&(c=this.getSelectionCells());if(null!=c&&1<c.length){for(var b=[],d=null,g=null,f=0;f<c.length;f++)if(this.getModel().isVertex(c[f])){var h=this.view.getState(c[f]);if(null!=h){var l=a?h.getCenterX():h.getCenterY(),d=null!=d?Math.max(d,l):l,g=null!=g?Math.min(g,l):l;b.push(h)}}if(2<b.length){b.sort(function(c,b){return a?c.x-b.x:c.y-b.y});h=this.view.translate;l=this.view.scale;g=g/l-(a?h.x:h.y);d=d/l-(a?h.x:h.y);this.getModel().beginUpdate();try{for(var m=(d-g)/(b.length-1),d=g,f=1;f< -b.length-1;f++){var t=this.view.getState(this.model.getParent(b[f].cell)),r=this.getCellGeometry(b[f].cell),d=d+m;null!=r&&null!=t&&(r=r.clone(),a?r.x=Math.round(d-r.width/2)-t.origin.x:r.y=Math.round(d-r.height/2)-t.origin.y,this.getModel().setGeometry(b[f].cell,r))}}finally{this.getModel().endUpdate()}}}return c};Graph.prototype.isCloneEvent=function(a){return mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxEvent.isControlDown(a)};Graph.prototype.encodeCells=function(a){for(var c=this.cloneCells(a),b= -new mxDictionary,d=0;d<a.length;d++)b.put(a[d],!0);for(d=0;d<c.length;d++){var g=this.view.getState(a[d]);if(null!=g){var f=this.getCellGeometry(c[d]);null==f||!f.relative||this.model.isEdge(a[d])||b.get(this.model.getParent(a[d]))||(f.relative=!1,f.x=g.x/g.view.scale-g.view.translate.x,f.y=g.y/g.view.scale-g.view.translate.y)}}b=new mxCodec;g=new mxGraphModel;f=g.getChildAt(g.getRoot(),0);for(d=0;d<a.length;d++)g.add(f,c[d]);return b.encode(g)};Graph.prototype.createSvgImageExport=function(){var a= -new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,c){return this.getLinkForCell(a.cell)});return a};Graph.prototype.getSvg=function(a,c,b,d,g,f,h,l,m,t){var r=this.useCssTransforms;r&&(this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange());try{c=null!=c?c:1;b=null!=b?b:0;g=null!=g?g:!0;f=null!=f?f:!0;h=null!=h?h:!0;var u=f||d?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells());if(null==u)throw Error(mxResources.get("drawingEmpty"));var y=this.view.scale, -k=mxUtils.createXmlDocument(),v=null!=k.createElementNS?k.createElementNS(mxConstants.NS_SVG,"svg"):k.createElement("svg");null!=a&&(null!=v.style?v.style.backgroundColor=a:v.setAttribute("style","background-color:"+a));null==k.createElementNS?(v.setAttribute("xmlns",mxConstants.NS_SVG),v.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):v.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=c/y;var q=Math.max(1,Math.ceil(u.width*a)+2*b)+(t?5:0),A=Math.max(1,Math.ceil(u.height* -a)+2*b)+(t?5:0);v.setAttribute("version","1.1");v.setAttribute("width",q+"px");v.setAttribute("height",A+"px");v.setAttribute("viewBox",(g?"-0.5 -0.5":"0 0")+" "+q+" "+A);k.appendChild(v);var x=this.createSvgCanvas(v);x.foOffset=g?-.5:0;x.textOffset=g?-.5:0;x.imageOffset=g?-.5:0;x.translate(Math.floor((b/c-u.x)/y),Math.floor((b/c-u.y)/y));var n=document.createElement("textarea"),z=x.createAlternateContent;x.createAlternateContent=function(a,c,b,d,g,f,h,l,m,t,r,u,y){var v=this.state;if(null!=this.foAltText&& -(0==d||0!=v.fontSize&&f.length<5*d/v.fontSize)){var k=this.createElement("text");k.setAttribute("x",Math.round(d/2));k.setAttribute("y",Math.round((g+v.fontSize)/2));k.setAttribute("fill",v.fontColor||"black");k.setAttribute("text-anchor","middle");k.setAttribute("font-size",Math.round(v.fontSize)+"px");k.setAttribute("font-family",v.fontFamily);(v.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&k.setAttribute("font-weight","bold");(v.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&& -k.setAttribute("font-style","italic");(v.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&k.setAttribute("text-decoration","underline");try{return n.innerHTML=f,k.textContent=n.value,k}catch(ua){return z.apply(this,arguments)}}else return z.apply(this,arguments)};var J=this.backgroundImage;if(null!=J){c=y/c;var p=this.view.translate,F=new mxRectangle(p.x*c,p.y*c,J.width*c,J.height*c);mxUtils.intersects(u,F)&&x.image(p.x,p.y,J.width,J.height,J.src,!0)}x.scale(a);x.textEnabled=h;l= -null!=l?l:this.createSvgImageExport();var D=l.drawCellState;l.drawCellState=function(a,c){for(var b=a.view.graph,d=b.isCellSelected(a.cell),g=b.model.getParent(a.cell);!f&&!d&&null!=g;)d=b.isCellSelected(g),g=b.model.getParent(g);(f||d)&&D.apply(this,arguments)};l.drawState(this.getView().getState(this.model.root),x);this.updateSvgLinks(v,m,!0);return v}finally{r&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.updateSvgLinks=function(a,c,b){a=a.getElementsByTagName("a"); -for(var d=0;d<a.length;d++){var g=a[d].getAttribute("href");null==g&&(g=a[d].getAttribute("xlink:href"));null!=g&&(null!=c&&/^https?:\/\//.test(g)?a[d].setAttribute("target",c):b&&this.isCustomLink(g)&&a[d].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(a){return new mxSvgCanvas2D(a)};Graph.prototype.getSelectedElement=function(){var a=null;if(window.getSelection){var c=window.getSelection();c.getRangeAt&&c.rangeCount&&(a=c.getRangeAt(0).commonAncestorContainer)}else document.selection&& -(a=document.selection.createRange().parentElement());return a};Graph.prototype.getParentByName=function(a,c,b){for(;null!=a&&a.nodeName!=c;){if(a==b)return null;a=a.parentNode}return a};Graph.prototype.selectNode=function(a){var c=null;if(window.getSelection){if(c=window.getSelection(),c.getRangeAt&&c.rangeCount){var b=document.createRange();b.selectNode(a);c.removeAllRanges();c.addRange(b)}}else(c=document.selection)&&"Control"!=c.type&&(a=c.createRange(),a.collapse(!0),b=c.createRange(),b.setEndPoint("StartToStart", -a),b.select())};Graph.prototype.insertRow=function(a,c){for(var b=a.tBodies[0],d=b.rows[0].cells,g=0,f=0;f<d.length;f++)var h=d[f].getAttribute("colspan"),g=g+(null!=h?parseInt(h):1);b=b.insertRow(c);for(f=0;f<g;f++)mxUtils.br(b.insertCell(-1));return b.cells[0]};Graph.prototype.deleteRow=function(a,c){a.tBodies[0].deleteRow(c)};Graph.prototype.insertColumn=function(a,c){var b=a.tHead;if(null!=b)for(var d=0;d<b.rows.length;d++){var g=document.createElement("th");b.rows[d].appendChild(g);mxUtils.br(g)}b= -a.tBodies[0];for(d=0;d<b.rows.length;d++)g=b.rows[d].insertCell(c),mxUtils.br(g);return b.rows[0].cells[0<=c?c:b.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(a,c){if(0<=c)for(var b=a.tBodies[0].rows,d=0;d<b.length;d++)b[d].cells.length>c&&b[d].deleteCell(c)};Graph.prototype.pasteHtmlAtCaret=function(a){var c;if(window.getSelection){if(c=window.getSelection(),c.getRangeAt&&c.rangeCount){c=c.getRangeAt(0);c.deleteContents();var b=document.createElement("div");b.innerHTML=a;a=document.createDocumentFragment(); -for(var d;d=b.firstChild;)lastNode=a.appendChild(d);c.insertNode(a)}}else(c=document.selection)&&"Control"!=c.type&&c.createRange().pasteHTML(a)};Graph.prototype.createLinkForHint=function(a,c){function b(a,c){a.length>c&&(a=a.substring(0,Math.round(c/2))+"..."+a.substring(a.length-Math.round(c/4)));return a}a=null!=a?a:"javascript:void(0);";if(null==c||0==c.length)c=this.isCustomLink(a)?this.getLinkTitle(a):a;var d=document.createElement("a");d.setAttribute("rel",this.linkRelation);d.setAttribute("href", -this.getAbsoluteUrl(a));d.setAttribute("title",b(this.isCustomLink(a)?this.getLinkTitle(a):a,80));null!=this.linkTarget&&d.setAttribute("target",this.linkTarget);mxUtils.write(d,b(c,40));this.isCustomLink(a)&&mxEvent.addListener(d,"click",mxUtils.bind(this,function(c){this.customLinkClicked(a);mxEvent.consume(c)}));return d};Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING, -function(a,c){this.popupMenuHandler.hideMenu()});var a=this.updateMouseEvent;this.updateMouseEvent=function(c){c=a.apply(this,arguments);if(mxEvent.isTouchEvent(c.getEvent())&&null==c.getState()){var b=this.getCellAt(c.graphX,c.graphY);null!=b&&this.isSwimlane(b)&&this.hitsSwimlaneContent(b,c.graphX,c.graphY)||(c.state=this.view.getState(b),null!=c.state&&null!=c.state.shape&&(this.container.style.cursor=c.state.shape.node.style.cursor))}null==c.getState()&&this.isEnabled()&&(this.container.style.cursor= -"default");return c};var c=!1,b=!1,d=!1,g=this.fireMouseEvent;this.fireMouseEvent=function(a,f,h){a==mxEvent.MOUSE_DOWN&&(f=this.updateMouseEvent(f),c=this.isCellSelected(f.getCell()),b=this.isSelectionEmpty(),d=this.popupMenuHandler.isMenuShowing());g.apply(this,arguments)};this.popupMenuHandler.mouseUp=mxUtils.bind(this,function(a,g){this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==g.getState()||!g.isSource(g.getState().control))&&(this.popupMenuHandler.popupTrigger|| -!d&&!mxEvent.isMouseEvent(g.getEvent())&&(b&&null==g.getCell()&&this.isSelectionEmpty()||c&&this.isCellSelected(g.getCell())));mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,arguments)})};mxCellEditor.prototype.isContentEditing=function(){var a=this.graph.view.getState(this.editingCell);return null!=a&&1==a.style.html};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var a=window.getSelection();if(a.getRangeAt&&a.rangeCount){for(var c=[],b=0,d=a.rangeCount;b< -d;++b)c.push(a.getRangeAt(b));return c}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(a){try{if(a)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var c=0,b=a.length;c<b;++c)sel.addRange(a[c])}else document.selection&&a.select&&a.select()}catch(Y){}};var k=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=function(a){null!=a.text&& -(a.text.replaceLinefeeds="0"!=mxUtils.getValue(a.style,"nl2Br","1"));k.apply(this,arguments)};var n=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(a,c){this.isKeepFocusEvent(a)||!mxEvent.isAltDown(a.getEvent())?n.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(a){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=!1;var p=mxCellEditor.prototype.startEditing; -mxCellEditor.prototype.startEditing=function(a,c){p.apply(this,arguments);var b=this.graph.view.getState(a);this.textarea.className=null!=b&&1==b.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(a);var b=this.graph.getModel().getParent(a),d=this.graph.getCellGeometry(a);this.graph.getModel().isEdge(b)&&null!=d&&d.relative||this.graph.getModel().isEdge(a)?mxClient.IS_QUIRKS?this.textarea.style.border= -"gray dotted 1px":this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":"":mxClient.IS_QUIRKS&&(this.textarea.style.outline="none",this.textarea.style.border="")};var q=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(a){function c(a,b){b.originalNode=a;a=a.firstChild;for(var d=b.firstChild;null!=a&&null!=d;)c(a,d),a=a.nextSibling,d=d.nextSibling;return b}function b(a,c){if(null!=a)if(c.originalNode!= -a)d(a);else for(a=a.firstChild,c=c.firstChild;null!=a;){var g=a.nextSibling;null==c?d(a):(b(a,c),c=c.nextSibling);a=g}}function d(a){for(var c=a.firstChild;null!=c;){var b=c.nextSibling;d(c);c=b}1==a.nodeType&&("BR"===a.nodeName||null!=a.firstChild)||3==a.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(a)).length?(3==a.nodeType&&mxUtils.setTextContent(a,mxUtils.getTextContent(a).replace(/\n|\r/g,"")),1==a.nodeType&&(a.removeAttribute("style"),a.removeAttribute("class"),a.removeAttribute("width"), -a.removeAttribute("cellpadding"),a.removeAttribute("cellspacing"),a.removeAttribute("border"))):a.parentNode.removeChild(a)}q.apply(this,arguments);mxClient.IS_QUIRKS||7===document.documentMode||8===document.documentMode||mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(a){var d=c(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){b(this.textarea,d)}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var a=this.graph.view.getState(this.editingCell), -c=null!=a&&"0"!=mxUtils.getValue(a.style,"nl2Br","1"),b=this.saveSelection();if(this.codeViewMode){l=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<l.length&&"\n"==l.charAt(l.length-1)&&(l=l.substring(0,l.length-1));l=this.graph.sanitizeHtml(c?l.replace(/\n/g,"<br/>"):l,!0);this.textarea.className="mxCellEditor geContentEditable";var d=mxUtils.getValue(a.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),c=mxUtils.getValue(a.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY), -g=mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),f=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,h=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,a=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(d*mxConstants.LINE_HEIGHT)+ -"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(d)+"px";this.textarea.style.textDecoration=a?"underline":"";this.textarea.style.fontWeight=f?"bold":"normal";this.textarea.style.fontStyle=h?"italic":"";this.textarea.style.fontFamily=c;this.textarea.style.textAlign=g;this.textarea.style.padding="0px";this.textarea.innerHTML!=l&&(this.textarea.innerHTML=l,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length)); -this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerHTML="");var l=mxUtils.htmlEntities(this.textarea.innerHTML);mxClient.IS_QUIRKS||8==document.documentMode||(l=mxUtils.replaceTrailingNewlines(l,"<div><br></div>"));l=this.graph.sanitizeHtml(c?l.replace(/\n/g,"").replace(/<br\s*.?>/g,"<br>"):l,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var d=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight= -mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(d*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(d)+"px";this.textarea.style.textDecoration="";this.textarea.style.fontWeight="normal";this.textarea.style.fontStyle="";this.textarea.style.fontFamily=mxConstants.DEFAULT_FONTFAMILY;this.textarea.style.textAlign="left";this.textarea.style.padding="2px";this.textarea.innerHTML!=l&&(this.textarea.innerHTML=l);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&& -this.restoreSelection(this.switchSelectionState);this.switchSelectionState=b;this.resize()};var w=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(a,c){if(null!=this.textarea)if(a=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=a){var b=a.view.scale;this.bounds=mxRectangle.fromRectangle(a);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=160*b;this.bounds.height=60*b;var d=null!=a.text?a.text.margin:null;null==d&&(d=mxUtils.getAlignmentAsPoint(mxUtils.getValue(a.style, -mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(a.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=d.x*this.bounds.width;this.bounds.y+=d.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-4)/b)+"px";this.textarea.style.height=Math.round((this.bounds.height-4)/b)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/b)+(this.textarea.offsetHeight- -this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*b);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/b)+(this.textarea.offsetWidth-this.textarea.clientWidth)+"px",this.bounds.width=parseInt(this.textarea.style.width)*b);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxClient.IS_VML?this.textarea.style.zoom=b:mxUtils.setPrefixedStyle(this.textarea.style, -"transform","scale("+b+","+b+")")}else this.textarea.style.height="",this.textarea.style.overflow="",w.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(a,c){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetInitialValue.apply(this,arguments);var b=this.graph.getEditingValue(a.cell,c);"1"==mxUtils.getValue(a.style,"nl2Br","1")&&(b=b.replace(/\n/g,"<br/>"));return b=this.graph.sanitizeHtml(b,!0)}; -mxCellEditorGetCurrentValue=mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(a){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var c=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return c="1"==mxUtils.getValue(a.style,"nl2Br","1")?c.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):c.replace(/\r\n/g,"").replace(/\n/g,"")};var c=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(a){this.codeViewMode&& -this.toggleViewMode();c.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(J){}};var g=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(a,c){this.graph.getModel().beginUpdate();try{if(g.apply(this,arguments),this.graph.isCellDeletable(a.cell)&&0==this.graph.model.getChildCount(a.cell)){var b=mxUtils.getValue(a.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),d=mxUtils.getValue(a.style, -mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);""==c&&b==mxConstants.NONE&&d==mxConstants.NONE&&this.graph.removeCells([a.cell],!1)}}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=function(a){var c=null;if(this.graph.getModel().isEdge(a.cell)||this.graph.getModel().isEdge(this.graph.getModel().getParent(a.cell)))c=mxUtils.getValue(a.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null),c==mxConstants.NONE&&(c=null);return c};mxCellEditor.prototype.getMinimumSize= -function(a){var c=this.graph.getView().scale;return new mxRectangle(0,0,null==a.text?30:a.text.size*c+20,30)};var h=mxGraphHandler.prototype.moveCells;mxGraphHandler.prototype.moveCells=function(a,c,b,d,g,f){mxEvent.isAltDown(f)&&(g=null);h.apply(this,arguments)};mxGraphHandler.prototype.updateHint=function(c){if(null!=this.shape){null==this.hint&&(this.hint=a(),this.graph.container.appendChild(this.hint));var b=this.graph.view.translate,d=this.graph.view.scale;c=this.roundLength((this.bounds.x+this.currentDx)/ -d-b.x);b=this.roundLength((this.bounds.y+this.currentDy)/d-b.y);this.hint.innerHTML=c+", "+b;this.hint.style.left=this.shape.bounds.x+Math.round((this.shape.bounds.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=this.shape.bounds.y+this.shape.bounds.height+12+"px"}};mxGraphHandler.prototype.removeHint=function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint),this.hint=null)};mxVertexHandler.prototype.isRecursiveResize=function(a,c){return!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&& -!mxEvent.isControlDown(c.getEvent())&&!this.graph.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null)};mxVertexHandler.prototype.isCenteredEvent=function(a,c){return!(!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&&!this.graph.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null))&&mxEvent.isControlDown(c.getEvent())||mxEvent.isMetaDown(c.getEvent())}; -var l=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var a=new mxPoint(0,0),c=this.tolerance;this.graph.cellEditor.getEditingCell()==this.state.cell&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(c/=2,a.x=this.sizers[0].bounds.width+c,a.y=this.sizers[0].bounds.height+c):a=l.apply(this,arguments);return a};mxVertexHandler.prototype.updateHint=function(c){this.index!=mxEvent.LABEL_HANDLE&&(null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint)), -this.index==mxEvent.ROTATION_HANDLE?this.hint.innerHTML=this.currentAlpha+"°":(c=this.state.view.scale,this.hint.innerHTML=this.roundLength(this.bounds.width/c)+" x "+this.roundLength(this.bounds.height/c)),c=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||"0"),null==c&&(c=this.bounds),this.hint.style.left=c.x+Math.round((c.width-this.hint.clientWidth)/2)+"px",this.hint.style.top=c.y+c.height+12+"px",null!=this.linkHint&& -(this.linkHint.style.display="none"))};mxVertexHandler.prototype.removeHint=function(){mxGraphHandler.prototype.removeHint.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(c,b){null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));var d=this.graph.view.translate,g=this.graph.view.scale,f=this.roundLength(b.x/g-d.x),d=this.roundLength(b.y/g-d.y);this.hint.innerHTML=f+", "+d;this.hint.style.visibility= -"visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(f=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*f.x)+"%, "+Math.round(100*f.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility="hidden");this.hint.style.left=Math.round(c.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(c.getGraphY(),b.y)+this.state.view.graph.gridSize+"px";null!=this.linkHint&& -(this.linkHint.style.display="none")};mxEdgeHandler.prototype.removeHint=mxVertexHandler.prototype.removeHint;HoverIcons.prototype.mainHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/>'):new mxImage(IMAGE_PATH+"/handle-main.png",17,17);HoverIcons.prototype.secondaryHandle=mxClient.IS_SVG?Graph.createSvgImage(16,16,'<path d="m 8 3 L 13 8 L 8 13 L 3 8 z" stroke="#fff" fill="#fca000"/>'):new mxImage(IMAGE_PATH+ -"/handle-secondary.png",17,17);HoverIcons.prototype.fixedHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/><path d="m 7 7 L 11 11 M 7 11 L 11 7" stroke="#fff"/>'):new mxImage(IMAGE_PATH+"/handle-fixed.png",17,17);HoverIcons.prototype.terminalHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/><circle cx="9" cy="9" r="2" stroke="#fff" fill="transparent"/>'): -new mxImage(IMAGE_PATH+"/handle-terminal.png",17,17);HoverIcons.prototype.rotationHandle=new mxImage(mxClient.IS_SVG?"data:image/png;base64,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": +Graph.prototype.importGraphModel=function(a,d,b,c){d=null!=d?d:0;b=null!=b?b:0;var f=new mxCodec(a.ownerDocument),e=new mxGraphModel;f.decode(a,e);a=[];f=e.getChildren(this.cloneCell(e.root,this.isCloneInvalidEdges()));if(null!=f){f=f.slice();this.model.beginUpdate();try{if(1!=f.length||this.isCellLocked(this.getDefaultParent()))for(e=0;e<f.length;e++)a=a.concat(this.model.getChildren(this.moveCells([f[e]],d,b,!1,this.model.getRoot())[0]));else a=this.moveCells(e.getChildren(f[0]),d,b,!1,this.getDefaultParent()); +if(c){this.isGridEnabled()&&(d=this.snap(d),b=this.snap(b));var g=this.getBoundingBoxFromGeometry(a,!0);null!=g&&this.moveCells(a,d-g.x,b-g.y)}}finally{this.model.endUpdate()}}return a};Graph.prototype.getAllConnectionConstraints=function(a,d){if(null!=a){var b=mxUtils.getValue(a.style,"points",null);if(null!=b){var c=[];try{for(var f=JSON.parse(b),b=0;b<f.length;b++){var e=f[b];c.push(new mxConnectionConstraint(new mxPoint(e[0],e[1]),2<e.length?"0"!=e[2]:!0,null,3<e.length?e[3]:0,4<e.length?e[4]: +0))}}catch(H){}return c}if(null!=a.shape){e=a.shape.direction;f=a.shape.bounds;b=a.shape.scale;c=f.width/b;f=f.height/b;if(e==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH)e=c,c=f,f=e;b=a.shape.getConstraints(a.style,c,f);if(null!=b)return b;if(null!=a.shape.stencil&&null!=a.shape.stencil.constraints)return a.shape.stencil.constraints;if(null!=a.shape.constraints)return a.shape.constraints}}return null};Graph.prototype.flipEdge=function(a){if(null!=a){var d=this.view.getState(a),d=null!= +d?d.style:this.getCellStyle(a);null!=d&&(d=mxUtils.getValue(d,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL,this.setCellStyles(mxConstants.STYLE_ELBOW,d,[a]))}};Graph.prototype.isValidRoot=function(a){for(var d=this.model.getChildCount(a),b=0,c=0;c<d;c++){var f=this.model.getChildAt(a,c);this.model.isVertex(f)&&(f=this.getCellGeometry(f),null==f||f.relative||b++)}return 0<b||this.isContainer(a)};Graph.prototype.isValidDropTarget= +function(a){var d=this.view.getState(a),d=null!=d?d.style:this.getCellStyle(a);return"1"!=mxUtils.getValue(d,"part","0")&&(this.isContainer(a)||mxGraph.prototype.isValidDropTarget.apply(this,arguments)&&"0"!=mxUtils.getValue(d,"dropTarget","1"))};Graph.prototype.createGroupCell=function(){var a=mxGraph.prototype.createGroupCell.apply(this,arguments);a.setStyle("group");return a};Graph.prototype.isExtendParentsOnAdd=function(a){var d=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(d&& +null!=a&&null!=this.layoutManager){var b=this.model.getParent(a);null!=b&&(b=this.layoutManager.getLayout(b),null!=b&&b.constructor==mxStackLayout&&(d=!1))}return d};Graph.prototype.getPreferredSizeForCell=function(a){var d=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=d&&(d.width+=10,d.height+=4,this.gridEnabled&&(d.width=this.snap(d.width),d.height=this.snap(d.height)));return d};Graph.prototype.turnShapes=function(a){var d=this.getModel(),b=[];d.beginUpdate();try{for(var c= +0;c<a.length;c++){var f=a[c];if(d.isEdge(f)){var e=d.getTerminal(f,!0),g=d.getTerminal(f,!1);d.setTerminal(f,g,!0);d.setTerminal(f,e,!1);var l=d.getGeometry(f);if(null!=l){l=l.clone();null!=l.points&&l.points.reverse();var n=l.getTerminalPoint(!0),p=l.getTerminalPoint(!1);l.setTerminalPoint(n,!1);l.setTerminalPoint(p,!0);d.setGeometry(f,l);var u=this.view.getState(f),y=this.view.getState(e),t=this.view.getState(g);if(null!=u){var J=null!=y?this.getConnectionConstraint(u,y,!0):null,k=null!=t?this.getConnectionConstraint(u, +t,!1):null;this.setConnectionConstraint(f,e,!0,k);this.setConnectionConstraint(f,g,!1,J)}b.push(f)}}else if(d.isVertex(f)&&(l=this.getCellGeometry(f),null!=l)){l=l.clone();l.x+=l.width/2-l.height/2;l.y+=l.height/2-l.width/2;var A=l.width;l.width=l.height;l.height=A;d.setGeometry(f,l);var r=this.view.getState(f);if(null!=r){var B=r.style[mxConstants.STYLE_DIRECTION]||"east";"east"==B?B="south":"south"==B?B="west":"west"==B?B="north":"north"==B&&(B="east");this.setCellStyles(mxConstants.STYLE_DIRECTION, +B,[f])}b.push(f)}}}finally{d.endUpdate()}return b};Graph.prototype.stencilHasPlaceholders=function(a){if(null!=a&&null!=a.fgNode)for(a=a.fgNode.firstChild;null!=a;){if("text"==a.nodeName&&"1"==a.getAttribute("placeholders"))return!0;a=a.nextSibling}return!1};Graph.prototype.processChange=function(a){mxGraph.prototype.processChange.apply(this,arguments);if(a instanceof mxValueChange&&null!=a.cell&&null!=a.cell.value&&"object"==typeof a.cell.value){var d=this.model.getDescendants(a.cell);if(0<d.length)for(var b= +0;b<d.length;b++){var c=this.view.getState(d[b]);null!=c&&null!=c.shape&&null!=c.shape.stencil&&this.stencilHasPlaceholders(c.shape.stencil)?this.removeStateForCell(d[b]):this.isReplacePlaceholders(d[b])&&this.view.invalidate(d[b],!1,!1)}}};Graph.prototype.replaceElement=function(a,d){for(var b=a.ownerDocument.createElement(null!=d?d:"span"),c=Array.prototype.slice.call(a.attributes);attr=c.pop();)b.setAttribute(attr.nodeName,attr.nodeValue);b.innerHTML=a.innerHTML;a.parentNode.replaceChild(b,a)}; +Graph.prototype.updateLabelElements=function(a,d,b){a=null!=a?a:this.getSelectionCells();for(var c=document.createElement("div"),f=0;f<a.length;f++)if(this.isHtmlLabel(a[f])){var e=this.convertValueToString(a[f]);if(null!=e&&0<e.length){c.innerHTML=e;for(var g=c.getElementsByTagName(null!=b?b:"*"),l=0;l<g.length;l++)d(g[l]);c.innerHTML!=e&&this.cellLabelChanged(a[f],c.innerHTML)}}};Graph.prototype.cellLabelChanged=function(a,d,b){d=this.zapGremlins(d);this.model.beginUpdate();try{if(null!=a.value&& +"object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder"))for(var c=a.getAttribute("placeholder"),f=a;null!=f;){if(f==this.model.getRoot()||null!=f.value&&"object"==typeof f.value&&f.hasAttribute(c)){this.setAttributeForCell(f,c,d);break}f=this.model.getParent(f)}var e=a.value.cloneNode(!0);e.setAttribute("label",d);d=e}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(a){if(null!=a){for(var d= +new mxDictionary,b=0;b<a.length;b++)d.put(a[b],!0);for(var c=[],b=0;b<a.length;b++){var f=this.model.getParent(a[b]);null==f||d.get(f)||(d.put(f,!0),c.push(f))}for(b=0;b<c.length;b++)if(f=this.view.getState(c[b]),null!=f&&(this.model.isEdge(f.cell)||this.model.isVertex(f.cell))&&this.isCellDeletable(f.cell)){var e=mxUtils.getValue(f.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),g=mxUtils.getValue(f.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);if(e==mxConstants.NONE&&g==mxConstants.NONE){e= +!0;for(g=0;g<this.model.getChildCount(f.cell)&&e;g++)d.get(this.model.getChildAt(f.cell,g))||(e=!1);e&&a.push(f.cell)}}}mxGraph.prototype.cellsRemoved.apply(this,arguments)};Graph.prototype.removeCellsAfterUngroup=function(a){for(var d=[],b=0;b<a.length;b++)if(this.isCellDeletable(a[b])){var c=this.view.getState(a[b]);if(null!=c){var f=mxUtils.getValue(c.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),c=mxUtils.getValue(c.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);f==mxConstants.NONE&& +c==mxConstants.NONE&&d.push(a[b])}}a=d;mxGraph.prototype.removeCellsAfterUngroup.apply(this,arguments)};Graph.prototype.setLinkForCell=function(a,d){this.setAttributeForCell(a,"link",d)};Graph.prototype.setTooltipForCell=function(a,d){this.setAttributeForCell(a,"tooltip",d)};Graph.prototype.setAttributeForCell=function(a,d,b){var c;null!=a.value&&"object"==typeof a.value?c=a.value.cloneNode(!0):(c=mxUtils.createXmlDocument().createElement("UserObject"),c.setAttribute("label",a.value||""));null!=b&& +0<b.length?c.setAttribute(d,b):c.removeAttribute(d);this.model.setValue(a,c)};Graph.prototype.getDropTarget=function(a,d,b,c){this.getModel();if(mxEvent.isAltDown(d))return null;for(var f=0;f<a.length;f++)if(this.model.isEdge(this.model.getParent(a[f])))return null;return mxGraph.prototype.getDropTarget.apply(this,arguments)};Graph.prototype.click=function(a){mxGraph.prototype.click.call(this,a);this.firstClickState=a.getState();this.firstClickSource=a.getSource()};Graph.prototype.dblClick=function(a, +d){if(this.isEnabled()){var b=mxUtils.convertPoint(this.container,mxEvent.getClientX(a),mxEvent.getClientY(a));if(null!=a&&!this.model.isVertex(d)){var c=this.model.isEdge(d)?this.view.getState(d):null,f=mxEvent.getSource(a);this.firstClickState!=c||this.firstClickSource!=f||null!=c&&null!=c.text&&null!=c.text.node&&(mxUtils.contains(c.text.boundingBox,b.x,b.y)||mxUtils.isAncestorNode(c.text.node,mxEvent.getSource(a)))||(null!=c||this.isCellLocked(this.getDefaultParent()))&&(null==c||this.isCellLocked(c.cell))|| +!(null!=c||mxClient.IS_VML&&f==this.view.getCanvas()||mxClient.IS_SVG&&f==this.view.getCanvas().ownerSVGElement)||(d=this.addText(b.x,b.y,c))}mxGraph.prototype.dblClick.call(this,a,d)}};Graph.prototype.getInsertPoint=function(){var a=this.getGridSize(),d=this.container.scrollLeft/this.view.scale-this.view.translate.x,b=this.container.scrollTop/this.view.scale-this.view.translate.y;if(this.pageVisible)var c=this.getPageLayout(),f=this.getPageSize(),d=Math.max(d,c.x*f.width),b=Math.max(b,c.y*f.height); +return new mxPoint(this.snap(d+a),this.snap(b+a))};Graph.prototype.getFreeInsertPoint=function(){var a=this.view,d=this.getGraphBounds(),b=this.getInsertPoint(),c=this.snap(Math.round(Math.max(b.x,d.x/a.scale-a.translate.x+(0==d.width?2*this.gridSize:0)))),a=this.snap(Math.round(Math.max(b.y,(d.y+d.height)/a.scale-a.translate.y+2*this.gridSize)));return new mxPoint(c,a)};Graph.prototype.isMouseInsertPoint=function(){return!1};Graph.prototype.addText=function(a,d,b){var c=new mxCell;c.value="Text"; +c.style="text;html=1;resizable=0;points=[];";c.geometry=new mxGeometry(0,0,0,0);c.vertex=!0;if(null!=b){c.style+="align=center;verticalAlign=middle;labelBackgroundColor=#ffffff;";c.geometry.relative=!0;c.connectable=!1;var f=this.view.getRelativePoint(b,a,d);c.geometry.x=Math.round(1E4*f.x)/1E4;c.geometry.y=Math.round(f.y);c.geometry.offset=new mxPoint(0,0);var f=this.view.getPoint(b,c.geometry),e=this.view.scale;c.geometry.offset=new mxPoint(Math.round((a-f.x)/e),Math.round((d-f.y)/e))}else c.style+= +"autosize=1;align=left;verticalAlign=top;spacingTop=-4;",f=this.view.translate,c.geometry.width=40,c.geometry.height=20,c.geometry.x=Math.round(a/this.view.scale)-f.x,c.geometry.y=Math.round(d/this.view.scale)-f.y;this.getModel().beginUpdate();try{this.addCells([c],null!=b?b.cell:null),this.fireEvent(new mxEventObject("textInserted","cells",[c])),this.autoSizeCell(c)}finally{this.getModel().endUpdate()}return c};Graph.prototype.getAbsoluteUrl=function(a){null!=a&&this.isRelativeUrl(a)&&(a="#"==a.charAt(0)? +this.baseUrl+a:"/"==a.charAt(0)?this.domainUrl+a:this.domainPathUrl+a);return a};Graph.prototype.addClickHandler=function(a,d,b){var c=mxUtils.bind(this,function(){var a=this.container.getElementsByTagName("a");if(null!=a)for(var b=0;b<a.length;b++){var c=this.getAbsoluteUrl(a[b].getAttribute("href"));null!=c&&(a[b].setAttribute("rel",this.linkRelation),a[b].setAttribute("href",c),null!=d&&mxEvent.addGestureListeners(a[b],null,null,d))}});this.model.addListener(mxEvent.CHANGE,c);c();var f=this.container.style.cursor, +e=this.getTolerance(),g=this,l={currentState:null,currentLink:null,highlight:null!=a&&""!=a&&a!=mxConstants.NONE?new mxCellHighlight(g,a,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(a){var d=a.sourceState;if(null==d||null==g.getLinkForCell(d.cell))a=g.getCellAt(a.getGraphX(),a.getGraphY(),null,null,null,function(a,d,b){return null==g.getLinkForCell(a.cell)}),d=g.view.getState(a);d!=this.currentState&&(null!=this.currentState&&this.clear(),this.currentState=d,null!= +this.currentState&&this.activate(this.currentState))},mouseDown:function(a,d){this.startX=d.getGraphX();this.startY=d.getGraphY();this.scrollLeft=g.container.scrollLeft;this.scrollTop=g.container.scrollTop;null==this.currentLink&&"auto"==g.container.style.overflow&&(g.container.style.cursor="move");this.updateCurrentState(d)},mouseMove:function(a,d){if(g.isMouseDown){if(null!=this.currentLink){var b=Math.abs(this.startX-d.getGraphX()),c=Math.abs(this.startY-d.getGraphY());(b>e||c>e)&&this.clear()}}else{for(b= +d.getSource();null!=b&&"a"!=b.nodeName.toLowerCase();)b=b.parentNode;null!=b?this.clear():(null!=g.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&&g.tooltipHandler.reset(d,!0,this.currentState),(null==this.currentState||d.getState()!=this.currentState&&null!=d.sourceState||!g.intersects(this.currentState,d.getGraphX(),d.getGraphY()))&&this.updateCurrentState(d))}},mouseUp:function(a,c){for(var f=c.getSource(),l=c.getEvent();null!=f&&"a"!=f.nodeName.toLowerCase();)f=f.parentNode;null== +f&&Math.abs(this.scrollLeft-g.container.scrollLeft)<e&&Math.abs(this.scrollTop-g.container.scrollTop)<e&&(null==c.sourceState||!c.isSource(c.sourceState.control))&&((mxEvent.isLeftMouseButton(l)||mxEvent.isMiddleMouseButton(l))&&!mxEvent.isPopupTrigger(l)||mxEvent.isTouchEvent(l))&&(null!=this.currentLink?(f=g.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&f||null==d||d(l,this.currentLink),mxEvent.isConsumed(l)||(l=mxEvent.isMiddleMouseButton(l)?"_blank":f?g.linkTarget:"_top", +g.openLink(this.currentLink,l),c.consume())):null!=b&&!c.isConsumed()&&Math.abs(this.scrollLeft-g.container.scrollLeft)<e&&Math.abs(this.scrollTop-g.container.scrollTop)<e&&Math.abs(this.startX-c.getGraphX())<e&&Math.abs(this.startY-c.getGraphY())<e&&b(c.getEvent()));this.clear()},activate:function(a){this.currentLink=g.getAbsoluteUrl(g.getLinkForCell(a.cell));null!=this.currentLink&&(g.container.style.cursor="pointer",null!=this.highlight&&this.highlight.highlight(a))},clear:function(){null!=g.container&& +(g.container.style.cursor=f);this.currentLink=this.currentState=null;null!=this.highlight&&this.highlight.hide();null!=g.tooltipHandler&&g.tooltipHandler.hide()}};g.click=function(a){};g.addMouseListener(l);mxEvent.addListener(document,"mouseleave",function(a){l.clear()})};Graph.prototype.duplicateCells=function(a,d){a=null!=a?a:this.getSelectionCells();d=null!=d?d:!0;a=this.model.getTopmostCells(a);var b=this.getModel(),c=this.gridSize,f=[];b.beginUpdate();try{for(var e=this.cloneCells(a,!1,null, +!0),g=0;g<a.length;g++){var l=b.getParent(a[g]),n=this.moveCells([e[g]],c,c,!1)[0];f.push(n);if(d)b.add(l,e[g]);else{var p=l.getIndex(a[g]);b.add(l,e[g],p+1)}}}finally{b.endUpdate()}return f};Graph.prototype.insertImage=function(a,d,b){if(null!=a&&null!=this.cellEditor.textarea){for(var c=this.cellEditor.textarea.getElementsByTagName("img"),f=[],e=0;e<c.length;e++)f.push(c[e]);document.execCommand("insertimage",!1,a);a=this.cellEditor.textarea.getElementsByTagName("img");if(a.length==f.length+1)for(e= +a.length-1;0<=e;e--)if(0==e||a[e]!=f[e-1]){a[e].setAttribute("width",d);a[e].setAttribute("height",b);break}}};Graph.prototype.insertLink=function(a){if(null!=this.cellEditor.textarea)if(0==a.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var d=this.cellEditor.textarea.getElementsByTagName("a"),b=[],c=0;c<d.length;c++)b.push(d[c]);document.execCommand("createlink",!1,mxUtils.trim(a));d=this.cellEditor.textarea.getElementsByTagName("a");if(d.length==b.length+1)for(c=d.length- +1;0<=c;c--)if(d[c]!=b[c-1]){for(d=d[c].getElementsByTagName("a");0<d.length;){for(b=d[0].parentNode;null!=d[0].firstChild;)b.insertBefore(d[0].firstChild,d[0]);b.removeChild(d[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(a))};Graph.prototype.isCellResizable=function(a){var d=mxGraph.prototype.isCellResizable.apply(this,arguments),b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return d||"0"!=mxUtils.getValue(b,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==b[mxConstants.STYLE_WHITE_SPACE]}; +Graph.prototype.distributeCells=function(a,d){null==d&&(d=this.getSelectionCells());if(null!=d&&1<d.length){for(var b=[],c=null,f=null,e=0;e<d.length;e++)if(this.getModel().isVertex(d[e])){var g=this.view.getState(d[e]);if(null!=g){var l=a?g.getCenterX():g.getCenterY(),c=null!=c?Math.max(c,l):l,f=null!=f?Math.min(f,l):l;b.push(g)}}if(2<b.length){b.sort(function(d,b){return a?d.x-b.x:d.y-b.y});g=this.view.translate;l=this.view.scale;f=f/l-(a?g.x:g.y);c=c/l-(a?g.x:g.y);this.getModel().beginUpdate(); +try{for(var n=(c-f)/(b.length-1),c=f,e=1;e<b.length-1;e++){var p=this.view.getState(this.model.getParent(b[e].cell)),u=this.getCellGeometry(b[e].cell),c=c+n;null!=u&&null!=p&&(u=u.clone(),a?u.x=Math.round(c-u.width/2)-p.origin.x:u.y=Math.round(c-u.height/2)-p.origin.y,this.getModel().setGeometry(b[e].cell,u))}}finally{this.getModel().endUpdate()}}}return d};Graph.prototype.isCloneEvent=function(a){return mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxEvent.isControlDown(a)};Graph.prototype.encodeCells= +function(a){for(var d=this.cloneCells(a),b=new mxDictionary,c=0;c<a.length;c++)b.put(a[c],!0);for(c=0;c<d.length;c++){var f=this.view.getState(a[c]);if(null!=f){var e=this.getCellGeometry(d[c]);null==e||!e.relative||this.model.isEdge(a[c])||b.get(this.model.getParent(a[c]))||(e.relative=!1,e.x=f.x/f.view.scale-f.view.translate.x,e.y=f.y/f.view.scale-f.view.translate.y)}}b=new mxCodec;f=new mxGraphModel;e=f.getChildAt(f.getRoot(),0);for(c=0;c<a.length;c++)f.add(e,d[c]);return b.encode(f)};Graph.prototype.createSvgImageExport= +function(){var a=new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,d){return this.getLinkForCell(a.cell)});return a};Graph.prototype.getSvg=function(a,d,b,c,f,e,g,l,n,u){var p=this.useCssTransforms;p&&(this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange());try{d=null!=d?d:1;b=null!=b?b:0;f=null!=f?f:!0;e=null!=e?e:!0;g=null!=g?g:!0;var y=e||c?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells());if(null==y)throw Error(mxResources.get("drawingEmpty")); +var t=this.view.scale,k=mxUtils.createXmlDocument(),A=null!=k.createElementNS?k.createElementNS(mxConstants.NS_SVG,"svg"):k.createElement("svg");null!=a&&(null!=A.style?A.style.backgroundColor=a:A.setAttribute("style","background-color:"+a));null==k.createElementNS?(A.setAttribute("xmlns",mxConstants.NS_SVG),A.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):A.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=d/t;var B=Math.max(1,Math.ceil(y.width*a)+2*b)+(u?5: +0),r=Math.max(1,Math.ceil(y.height*a)+2*b)+(u?5:0);A.setAttribute("version","1.1");A.setAttribute("width",B+"px");A.setAttribute("height",r+"px");A.setAttribute("viewBox",(f?"-0.5 -0.5":"0 0")+" "+B+" "+r);k.appendChild(A);var D=null!=k.createElementNS?k.createElementNS(mxConstants.NS_SVG,"g"):k.createElement("g");A.appendChild(D);var x=this.createSvgCanvas(D);x.foOffset=f?-.5:0;x.textOffset=f?-.5:0;x.imageOffset=f?-.5:0;x.translate(Math.floor((b/d-y.x)/t),Math.floor((b/d-y.y)/t));var m=document.createElement("textarea"), +q=x.createAlternateContent;x.createAlternateContent=function(a,d,b,c,f,e,g,l,n,u,p,y,t){var k=this.state;if(null!=this.foAltText&&(0==c||0!=k.fontSize&&e.length<5*c/k.fontSize)){var A=this.createElement("text");A.setAttribute("x",Math.round(c/2));A.setAttribute("y",Math.round((f+k.fontSize)/2));A.setAttribute("fill",k.fontColor||"black");A.setAttribute("text-anchor","middle");A.setAttribute("font-size",Math.round(k.fontSize)+"px");A.setAttribute("font-family",k.fontFamily);(k.fontStyle&mxConstants.FONT_BOLD)== +mxConstants.FONT_BOLD&&A.setAttribute("font-weight","bold");(k.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&A.setAttribute("font-style","italic");(k.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&A.setAttribute("text-decoration","underline");try{return m.innerHTML=e,A.textContent=m.value,A}catch(oa){return q.apply(this,arguments)}}else return q.apply(this,arguments)};var J=this.backgroundImage;if(null!=J){d=t/d;var C=this.view.translate,X=new mxRectangle(C.x*d, +C.y*d,J.width*d,J.height*d);mxUtils.intersects(y,X)&&x.image(C.x,C.y,J.width,J.height,J.src,!0)}x.scale(a);x.textEnabled=g;l=null!=l?l:this.createSvgImageExport();var E=l.drawCellState;l.drawCellState=function(a,d){for(var b=a.view.graph,c=b.isCellSelected(a.cell),f=b.model.getParent(a.cell);!e&&!c&&null!=f;)c=b.isCellSelected(f),f=b.model.getParent(f);(e||c)&&E.apply(this,arguments)};l.drawState(this.getView().getState(this.model.root),x);this.updateSvgLinks(A,n,!0);return A}finally{p&&(this.useCssTransforms= +!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.updateSvgLinks=function(a,d,b){a=a.getElementsByTagName("a");for(var c=0;c<a.length;c++){var f=a[c].getAttribute("href");null==f&&(f=a[c].getAttribute("xlink:href"));null!=f&&(null!=d&&/^https?:\/\//.test(f)?a[c].setAttribute("target",d):b&&this.isCustomLink(f)&&a[c].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(a){return new mxSvgCanvas2D(a)};Graph.prototype.getSelectedElement=function(){var a= +null;if(window.getSelection){var d=window.getSelection();d.getRangeAt&&d.rangeCount&&(a=d.getRangeAt(0).commonAncestorContainer)}else document.selection&&(a=document.selection.createRange().parentElement());return a};Graph.prototype.getParentByName=function(a,d,b){for(;null!=a&&a.nodeName!=d;){if(a==b)return null;a=a.parentNode}return a};Graph.prototype.selectNode=function(a){var d=null;if(window.getSelection){if(d=window.getSelection(),d.getRangeAt&&d.rangeCount){var b=document.createRange();b.selectNode(a); +d.removeAllRanges();d.addRange(b)}}else(d=document.selection)&&"Control"!=d.type&&(a=d.createRange(),a.collapse(!0),b=d.createRange(),b.setEndPoint("StartToStart",a),b.select())};Graph.prototype.insertRow=function(a,d){for(var b=a.tBodies[0],c=b.rows[0].cells,f=0,e=0;e<c.length;e++)var g=c[e].getAttribute("colspan"),f=f+(null!=g?parseInt(g):1);b=b.insertRow(d);for(e=0;e<f;e++)mxUtils.br(b.insertCell(-1));return b.cells[0]};Graph.prototype.deleteRow=function(a,d){a.tBodies[0].deleteRow(d)};Graph.prototype.insertColumn= +function(a,d){var b=a.tHead;if(null!=b)for(var c=0;c<b.rows.length;c++){var f=document.createElement("th");b.rows[c].appendChild(f);mxUtils.br(f)}b=a.tBodies[0];for(c=0;c<b.rows.length;c++)f=b.rows[c].insertCell(d),mxUtils.br(f);return b.rows[0].cells[0<=d?d:b.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(a,d){if(0<=d)for(var b=a.tBodies[0].rows,c=0;c<b.length;c++)b[c].cells.length>d&&b[c].deleteCell(d)};Graph.prototype.pasteHtmlAtCaret=function(a){var d;if(window.getSelection){if(d= +window.getSelection(),d.getRangeAt&&d.rangeCount){d=d.getRangeAt(0);d.deleteContents();var b=document.createElement("div");b.innerHTML=a;a=document.createDocumentFragment();for(var c;c=b.firstChild;)lastNode=a.appendChild(c);d.insertNode(a)}}else(d=document.selection)&&"Control"!=d.type&&d.createRange().pasteHTML(a)};Graph.prototype.createLinkForHint=function(a,d){function b(a,d){a.length>d&&(a=a.substring(0,Math.round(d/2))+"..."+a.substring(a.length-Math.round(d/4)));return a}a=null!=a?a:"javascript:void(0);"; +if(null==d||0==d.length)d=this.isCustomLink(a)?this.getLinkTitle(a):a;var c=document.createElement("a");c.setAttribute("rel",this.linkRelation);c.setAttribute("href",this.getAbsoluteUrl(a));c.setAttribute("title",b(this.isCustomLink(a)?this.getLinkTitle(a):a,80));null!=this.linkTarget&&c.setAttribute("target",this.linkTarget);mxUtils.write(c,b(d,40));this.isCustomLink(a)&&mxEvent.addListener(c,"click",mxUtils.bind(this,function(d){this.customLinkClicked(a);mxEvent.consume(d)}));return c};Graph.prototype.initTouch= +function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(a,d){this.popupMenuHandler.hideMenu()});var a=this.updateMouseEvent;this.updateMouseEvent=function(d){d=a.apply(this,arguments);if(mxEvent.isTouchEvent(d.getEvent())&&null==d.getState()){var b=this.getCellAt(d.graphX,d.graphY);null!=b&&this.isSwimlane(b)&&this.hitsSwimlaneContent(b,d.graphX,d.graphY)||(d.state=this.view.getState(b),null!=d.state&& +null!=d.state.shape&&(this.container.style.cursor=d.state.shape.node.style.cursor))}null==d.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return d};var d=!1,b=!1,c=!1,f=this.fireMouseEvent;this.fireMouseEvent=function(a,e,g){a==mxEvent.MOUSE_DOWN&&(e=this.updateMouseEvent(e),d=this.isCellSelected(e.getCell()),b=this.isSelectionEmpty(),c=this.popupMenuHandler.isMenuShowing());f.apply(this,arguments)};this.popupMenuHandler.mouseUp=mxUtils.bind(this,function(a,f){this.popupMenuHandler.popupTrigger= +!this.isEditing()&&this.isEnabled()&&(null==f.getState()||!f.isSource(f.getState().control))&&(this.popupMenuHandler.popupTrigger||!c&&!mxEvent.isMouseEvent(f.getEvent())&&(b&&null==f.getCell()&&this.isSelectionEmpty()||d&&this.isCellSelected(f.getCell())));mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,arguments)})};mxCellEditor.prototype.isContentEditing=function(){var a=this.graph.view.getState(this.editingCell);return null!=a&&1==a.style.html};mxCellEditor.prototype.saveSelection= +function(){if(window.getSelection){var a=window.getSelection();if(a.getRangeAt&&a.rangeCount){for(var d=[],b=0,c=a.rangeCount;b<c;++b)d.push(a.getRangeAt(b));return d}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(a){try{if(a)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var d=0,b=a.length;d<b;++d)sel.addRange(a[d])}else document.selection&&a.select&&a.select()}catch(fa){}}; +var k=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=function(a){null!=a.text&&(a.text.replaceLinefeeds="0"!=mxUtils.getValue(a.style,"nl2Br","1"));k.apply(this,arguments)};var m=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(a,d){this.isKeepFocusEvent(a)||!mxEvent.isAltDown(a.getEvent())?m.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(a){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)}; +mxCellEditor.prototype.escapeCancelsEditing=!1;var q=mxCellEditor.prototype.startEditing;mxCellEditor.prototype.startEditing=function(a,d){q.apply(this,arguments);var b=this.graph.view.getState(a);this.textarea.className=null!=b&&1==b.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(a);var b=this.graph.getModel().getParent(a),c=this.graph.getCellGeometry(a);this.graph.getModel().isEdge(b)&& +null!=c&&c.relative||this.graph.getModel().isEdge(a)?mxClient.IS_QUIRKS?this.textarea.style.border="gray dotted 1px":this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":"":mxClient.IS_QUIRKS&&(this.textarea.style.outline="none",this.textarea.style.border="")};var r=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(a){function d(a,b){b.originalNode=a;a=a.firstChild;for(var c=b.firstChild;null!=a&&null!= +c;)d(a,c),a=a.nextSibling,c=c.nextSibling;return b}function b(a,d){if(null!=a)if(d.originalNode!=a)c(a);else for(a=a.firstChild,d=d.firstChild;null!=a;){var f=a.nextSibling;null==d?c(a):(b(a,d),d=d.nextSibling);a=f}}function c(a){for(var d=a.firstChild;null!=d;){var b=d.nextSibling;c(d);d=b}1==a.nodeType&&("BR"===a.nodeName||null!=a.firstChild)||3==a.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(a)).length?(3==a.nodeType&&mxUtils.setTextContent(a,mxUtils.getTextContent(a).replace(/\n|\r/g,"")), +1==a.nodeType&&(a.removeAttribute("style"),a.removeAttribute("class"),a.removeAttribute("width"),a.removeAttribute("cellpadding"),a.removeAttribute("cellspacing"),a.removeAttribute("border"))):a.parentNode.removeChild(a)}r.apply(this,arguments);mxClient.IS_QUIRKS||7===document.documentMode||8===document.documentMode||mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(a){var c=d(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){b(this.textarea, +c)}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var a=this.graph.view.getState(this.editingCell);if(null!=a){var d=null!=a&&"0"!=mxUtils.getValue(a.style,"nl2Br","1"),b=this.saveSelection();if(this.codeViewMode){l=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<l.length&&"\n"==l.charAt(l.length-1)&&(l=l.substring(0,l.length-1));l=this.graph.sanitizeHtml(d?l.replace(/\n/g,"<br/>"):l,!0);this.textarea.className="mxCellEditor geContentEditable";var c=mxUtils.getValue(a.style, +mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),d=mxUtils.getValue(a.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY),f=mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),e=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,g=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,a=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)== +mxConstants.FONT_UNDERLINE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(c*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(c)+"px";this.textarea.style.textDecoration=a?"underline":"";this.textarea.style.fontWeight=e?"bold":"normal";this.textarea.style.fontStyle=g?"italic":"";this.textarea.style.fontFamily=d;this.textarea.style.textAlign=f;this.textarea.style.padding="0px";this.textarea.innerHTML!=l&&(this.textarea.innerHTML= +l,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length));this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerHTML="");var l=mxUtils.htmlEntities(this.textarea.innerHTML);mxClient.IS_QUIRKS||8==document.documentMode||(l=mxUtils.replaceTrailingNewlines(l,"<div><br></div>"));l=this.graph.sanitizeHtml(d?l.replace(/\n/g,"").replace(/<br\s*.?>/g, +"<br>"):l,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var c=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(c*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(c)+"px";this.textarea.style.textDecoration="";this.textarea.style.fontWeight="normal";this.textarea.style.fontStyle="";this.textarea.style.fontFamily=mxConstants.DEFAULT_FONTFAMILY;this.textarea.style.textAlign="left";this.textarea.style.padding= +"2px";this.textarea.innerHTML!=l&&(this.textarea.innerHTML=l);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);this.switchSelectionState=b;this.resize()}};var v=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(a,d){if(null!=this.textarea)if(a=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=a){var b=a.view.scale;this.bounds=mxRectangle.fromRectangle(a);if(0==this.bounds.width&&0== +this.bounds.height){this.bounds.width=160*b;this.bounds.height=60*b;var c=null!=a.text?a.text.margin:null;null==c&&(c=mxUtils.getAlignmentAsPoint(mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(a.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=c.x*this.bounds.width;this.bounds.y+=c.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-4)/b)+"px";this.textarea.style.height=Math.round((this.bounds.height- +4)/b)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/b)+(this.textarea.offsetHeight-this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*b);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/b)+(this.textarea.offsetWidth-this.textarea.clientWidth)+"px",this.bounds.width=parseInt(this.textarea.style.width)* +b);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxClient.IS_VML?this.textarea.style.zoom=b:mxUtils.setPrefixedStyle(this.textarea.style,"transform","scale("+b+","+b+")")}else this.textarea.style.height="",this.textarea.style.overflow="",v.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(a,d){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetInitialValue.apply(this, +arguments);var b=this.graph.getEditingValue(a.cell,d);"1"==mxUtils.getValue(a.style,"nl2Br","1")&&(b=b.replace(/\n/g,"<br/>"));return b=this.graph.sanitizeHtml(b,!0)};mxCellEditorGetCurrentValue=mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(a){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var d=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return d="1"==mxUtils.getValue(a.style,"nl2Br","1")?d.replace(/\r\n/g, +"<br/>").replace(/\n/g,"<br/>"):d.replace(/\r\n/g,"").replace(/\n/g,"")};var z=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(a){this.codeViewMode&&this.toggleViewMode();z.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(J){}};var d=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(a,b){this.graph.getModel().beginUpdate();try{if(d.apply(this,arguments),this.graph.isCellDeletable(a.cell)&& +0==this.graph.model.getChildCount(a.cell)){var c=mxUtils.getValue(a.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),f=mxUtils.getValue(a.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);""==b&&c==mxConstants.NONE&&f==mxConstants.NONE&&this.graph.removeCells([a.cell],!1)}}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=function(a){var d=null;if(this.graph.getModel().isEdge(a.cell)||this.graph.getModel().isEdge(this.graph.getModel().getParent(a.cell)))d= +mxUtils.getValue(a.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null),d==mxConstants.NONE&&(d=null);return d};mxCellEditor.prototype.getMinimumSize=function(a){var d=this.graph.getView().scale;return new mxRectangle(0,0,null==a.text?30:a.text.size*d+20,30)};var f=mxGraphHandler.prototype.moveCells;mxGraphHandler.prototype.moveCells=function(a,d,b,c,e,g){mxEvent.isAltDown(g)&&(e=null);f.apply(this,arguments)};mxGraphHandler.prototype.updateHint=function(d){if(null!=this.shape){null==this.hint&&(this.hint= +a(),this.graph.container.appendChild(this.hint));var b=this.graph.view.translate,c=this.graph.view.scale;d=this.roundLength((this.bounds.x+this.currentDx)/c-b.x);b=this.roundLength((this.bounds.y+this.currentDy)/c-b.y);this.hint.innerHTML=d+", "+b;this.hint.style.left=this.shape.bounds.x+Math.round((this.shape.bounds.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=this.shape.bounds.y+this.shape.bounds.height+12+"px"}};mxGraphHandler.prototype.removeHint=function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint), +this.hint=null)};mxVertexHandler.prototype.isRecursiveResize=function(a,d){return!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&&!mxEvent.isControlDown(d.getEvent())&&!this.graph.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null)};mxVertexHandler.prototype.isCenteredEvent=function(a,d){return!(!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&&!this.graph.isCellCollapsed(a.cell)&& +"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null))&&mxEvent.isControlDown(d.getEvent())||mxEvent.isMetaDown(d.getEvent())};var l=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var a=new mxPoint(0,0),d=this.tolerance;this.graph.cellEditor.getEditingCell()==this.state.cell&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(d/=2,a.x=this.sizers[0].bounds.width+d,a.y=this.sizers[0].bounds.height+ +d):a=l.apply(this,arguments);return a};mxVertexHandler.prototype.updateHint=function(d){this.index!=mxEvent.LABEL_HANDLE&&(null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint)),this.index==mxEvent.ROTATION_HANDLE?this.hint.innerHTML=this.currentAlpha+"°":(d=this.state.view.scale,this.hint.innerHTML=this.roundLength(this.bounds.width/d)+" x "+this.roundLength(this.bounds.height/d)),d=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha: +this.state.style[mxConstants.STYLE_ROTATION]||"0"),null==d&&(d=this.bounds),this.hint.style.left=d.x+Math.round((d.width-this.hint.clientWidth)/2)+"px",this.hint.style.top=d.y+d.height+12+"px",null!=this.linkHint&&(this.linkHint.style.display="none"))};mxVertexHandler.prototype.removeHint=function(){mxGraphHandler.prototype.removeHint.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(d,b){null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint)); +var c=this.graph.view.translate,f=this.graph.view.scale,e=this.roundLength(b.x/f-c.x),c=this.roundLength(b.y/f-c.y);this.hint.innerHTML=e+", "+c;this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(e=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*e.x)+"%, "+Math.round(100*e.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility="hidden");this.hint.style.left= +Math.round(d.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(d.getGraphY(),b.y)+this.state.view.graph.gridSize+"px";null!=this.linkHint&&(this.linkHint.style.display="none")};mxEdgeHandler.prototype.removeHint=mxVertexHandler.prototype.removeHint;HoverIcons.prototype.mainHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/>'):new mxImage(IMAGE_PATH+"/handle-main.png",17,17);HoverIcons.prototype.secondaryHandle= +mxClient.IS_SVG?Graph.createSvgImage(16,16,'<path d="m 8 3 L 13 8 L 8 13 L 3 8 z" stroke="#fff" fill="#fca000"/>'):new mxImage(IMAGE_PATH+"/handle-secondary.png",17,17);HoverIcons.prototype.fixedHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/><path d="m 7 7 L 11 11 M 7 11 L 11 7" stroke="#fff"/>'):new mxImage(IMAGE_PATH+"/handle-fixed.png",17,17);HoverIcons.prototype.terminalHandle=mxClient.IS_SVG? +Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/><circle cx="9" cy="9" r="2" stroke="#fff" fill="transparent"/>'):new mxImage(IMAGE_PATH+"/handle-terminal.png",17,17);HoverIcons.prototype.rotationHandle=new mxImage(mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAVCAYAAACkCdXRAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAA6ZJREFUeNqM001IY1cUB/D/fYmm2sbR2lC1zYlgoRG6MpEyBlpxM9iFIGKFIm3s0lCKjOByhCLZCFqLBF1YFVJdSRbdFHRhBbULtRuFVBTzYRpJgo2mY5OX5N9Fo2TG+eiFA/dd3vvd8+65ByTxshARTdf1JySp6/oTEdFe9T5eg5lIcnBwkCSZyWS+exX40oyur68/KxaLf5Okw+H4X+A9JBaLfUySZ2dnnJqaosPhIAACeC34DJRKpb7IZrMcHx+nwWCgUopGo/EOKwf9fn/1CzERUevr6+9ls1mOjIwQAH0+H4PBIKPR6D2ofAQCgToRUeVYJUkuLy8TANfW1kiS8/PzCy84Mw4MDBAAZ2dnmc/nub+/X0MSEBF1cHDwMJVKsaGhgV6vl+l0mqOjo1+KyKfl1dze3l4NBoM/PZ+diFSLiIKIGBOJxA9bW1sEwNXVVSaTyQMRaRaRxrOzs+9J8ujoaE5EPhQRq67rcZ/PRwD0+/3Udf03EdEgIqZisZibnJykwWDg4eEhd3Z2xkXELCJvPpdBrYjUiEhL+Xo4HH4sIhUaAKNSqiIcDsNkMqG+vh6RSOQQQM7tdhsAQCkFAHC73UUATxcWFqypVApmsxnDw8OwWq2TADQNgAYAFosF+XweyWQSdru9BUBxcXFRB/4rEgDcPouIIx6P4+bmBi0tLSCpAzBqAIqnp6c/dnZ2IpfLYXNzE62traMADACKNputpr+/v8lms9UAKAAwiMjXe3t7KBQKqKurQy6Xi6K0i2l6evpROp1mbW0t29vbGY/Hb8/IVIqq2zlJXl1dsaOjg2azmefn5wwEAl+JSBVExCgi75PkzMwMlVJsbGxkIpFgPp8PX15ePopEIs3JZPITXdf/iEajbGpqolKKExMT1HWdHo/nIxGpgIgoEXnQ3d39kCTHxsYIgC6Xi3NzcwyHw8xkMozFYlxaWmJbWxuVUuzt7WUul6PX6/1cRN4WEe2uA0SkaWVl5XGpRVhdXU0A1DSNlZWVdz3qdDrZ09PDWCzG4+Pjn0XEWvp9KJKw2WwKwBsA3gHQHAqFfr24uMDGxgZ2d3cRiUQAAHa7HU6nE319fTg5Ofmlq6vrGwB/AngaCoWK6rbsNptNA1AJoA7Aux6Pp3NoaMhjsVg+QNmIRqO/u1yubwFEASRKUAEA7rASqABUAKgC8KAUb5XWCOAfAFcA/gJwDSB7C93DylCtdM8qABhLc5TumV6KQigUeubjfwcAHkQJ94ndWeYAAAAASUVORK5CYII=": IMAGE_PATH+"/handle-rotate.png",19,21);mxClient.IS_SVG&&(mxConstraintHandler.prototype.pointImage=Graph.createSvgImage(5,5,'<path d="m 0 0 L 5 5 M 0 5 L 5 0" stroke="'+HoverIcons.prototype.arrowFill+'"/>'));mxVertexHandler.prototype.handleImage=HoverIcons.prototype.mainHandle;mxVertexHandler.prototype.secondaryHandleImage=HoverIcons.prototype.secondaryHandle;mxEdgeHandler.prototype.handleImage=HoverIcons.prototype.mainHandle;mxEdgeHandler.prototype.terminalHandleImage=HoverIcons.prototype.terminalHandle; mxEdgeHandler.prototype.fixedHandleImage=HoverIcons.prototype.fixedHandle;mxEdgeHandler.prototype.labelHandleImage=HoverIcons.prototype.secondaryHandle;mxOutline.prototype.sizerImage=HoverIcons.prototype.mainHandle;null!=window.Sidebar&&(Sidebar.prototype.triangleUp=HoverIcons.prototype.triangleUp,Sidebar.prototype.triangleRight=HoverIcons.prototype.triangleRight,Sidebar.prototype.triangleDown=HoverIcons.prototype.triangleDown,Sidebar.prototype.triangleLeft=HoverIcons.prototype.triangleLeft,Sidebar.prototype.refreshTarget= HoverIcons.prototype.refreshTarget,Sidebar.prototype.roundDrop=HoverIcons.prototype.roundDrop);mxClient.IS_SVG||((new Image).src=HoverIcons.prototype.mainHandle.src,(new Image).src=HoverIcons.prototype.fixedHandle.src,(new Image).src=HoverIcons.prototype.terminalHandle.src,(new Image).src=HoverIcons.prototype.secondaryHandle.src,(new Image).src=HoverIcons.prototype.rotationHandle.src,(new Image).src=HoverIcons.prototype.triangleUp.src,(new Image).src=HoverIcons.prototype.triangleRight.src,(new Image).src= HoverIcons.prototype.triangleDown.src,(new Image).src=HoverIcons.prototype.triangleLeft.src,(new Image).src=HoverIcons.prototype.refreshTarget.src,(new Image).src=HoverIcons.prototype.roundDrop.src);mxVertexHandler.prototype.rotationEnabled=!0;mxVertexHandler.prototype.manageSizers=!0;mxVertexHandler.prototype.livePreview=!0;mxRubberband.prototype.defaultOpacity=30;mxConnectionHandler.prototype.outlineConnect=!0;mxCellHighlight.prototype.keepOnTop=!0;mxVertexHandler.prototype.parentHighlightEnabled= !0;mxVertexHandler.prototype.rotationHandleVSpacing=-20;mxEdgeHandler.prototype.parentHighlightEnabled=!0;mxEdgeHandler.prototype.dblClickRemoveEnabled=!0;mxEdgeHandler.prototype.straightRemoveEnabled=!0;mxEdgeHandler.prototype.virtualBendsEnabled=!0;mxEdgeHandler.prototype.mergeRemoveEnabled=!0;mxEdgeHandler.prototype.manageLabelHandle=!0;mxEdgeHandler.prototype.outlineConnect=!0;mxEdgeHandler.prototype.isAddVirtualBendEvent=function(a){return!mxEvent.isShiftDown(a.getEvent())};mxEdgeHandler.prototype.isCustomHandleEvent= function(a){return!mxEvent.isShiftDown(a.getEvent())};if(Graph.touchStyle){if(mxClient.IS_TOUCH||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints)mxShape.prototype.svgStrokeTolerance=18,mxVertexHandler.prototype.tolerance=12,mxEdgeHandler.prototype.tolerance=12,Graph.prototype.tolerance=12,mxVertexHandler.prototype.rotationHandleVSpacing=-24,mxConstraintHandler.prototype.getTolerance=function(a){return mxEvent.isMouseEvent(a.getEvent())?4:this.graph.getTolerance()};mxPanningHandler.prototype.isPanningTrigger= -function(a){var c=a.getEvent();return null==a.getState()&&!mxEvent.isMouseEvent(c)||mxEvent.isPopupTrigger(c)&&(null==a.getState()||mxEvent.isControlDown(c)||mxEvent.isShiftDown(c))};var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(a,c){t.apply(this,arguments);mxEvent.isTouchEvent(c.getEvent())&&this.graph.isCellSelected(c.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)}}else mxPanningHandler.prototype.isPanningTrigger=function(a){var c= -a.getEvent();return mxEvent.isLeftMouseButton(c)&&(this.useLeftButtonForPanning&&null==a.getState()||mxEvent.isControlDown(c)&&!mxEvent.isShiftDown(c))||this.usePopupTrigger&&mxEvent.isPopupTrigger(c)};mxRubberband.prototype.isSpaceEvent=function(a){return this.graph.isEnabled()&&!this.graph.isCellLocked(this.graph.getDefaultParent())&&mxEvent.isControlDown(a.getEvent())&&mxEvent.isShiftDown(a.getEvent())};mxRubberband.prototype.mouseUp=function(a,c){var b=null!=this.div&&"none"!=this.div.style.display, -d=null,g=null,f=null,h=null;null!=this.first&&null!=this.currentX&&null!=this.currentY&&(d=this.first.x,g=this.first.y,f=(this.currentX-d)/this.graph.view.scale,h=(this.currentY-g)/this.graph.view.scale,mxEvent.isAltDown(c.getEvent())||(f=this.graph.snap(f),h=this.graph.snap(h),this.graph.isGridEnabled()||(Math.abs(f)<this.graph.tolerance&&(f=0),Math.abs(h)<this.graph.tolerance&&(h=0))));this.reset();if(b){if(mxEvent.isAltDown(c.getEvent())&&this.graph.isToggleEvent(c.getEvent())){var f=new mxRectangle(this.x, -this.y,this.width,this.height),l=this.graph.getCells(f.x,f.y,f.width,f.height);this.graph.removeSelectionCells(l)}else if(this.isSpaceEvent(c)){this.graph.model.beginUpdate();try{for(l=this.graph.getCellsBeyond(d,g,this.graph.getDefaultParent(),!0,!0),b=0;b<l.length;b++)if(this.graph.isCellMovable(l[b])){var m=this.graph.view.getState(l[b]),t=this.graph.getCellGeometry(l[b]);null!=m&&null!=t&&(t=t.clone(),t.translate(f,h),this.graph.model.setGeometry(l[b],t))}}finally{this.graph.model.endUpdate()}}else f= -new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(f,c.getEvent());c.consume()}};mxRubberband.prototype.mouseMove=function(a,c){if(!c.isConsumed()&&null!=this.first){var b=mxUtils.getScrollOrigin(this.graph.container),d=mxUtils.getOffset(this.graph.container);b.x-=d.x;b.y-=d.y;var d=c.getX()+b.x,b=c.getY()+b.y,g=this.first.x-d,f=this.first.y-b,h=this.graph.tolerance;if(null!=this.div||Math.abs(g)>h||Math.abs(f)>h)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(), -this.update(d,b),this.isSpaceEvent(c)?(d=this.x+this.width,b=this.y+this.height,g=this.graph.view.scale,mxEvent.isAltDown(c.getEvent())||(this.width=this.graph.snap(this.width/g)*g,this.height=this.graph.snap(this.height/g)*g,this.graph.isGridEnabled()||(this.width<this.graph.tolerance&&(this.width=0),this.height<this.graph.tolerance&&(this.height=0)),this.x<this.first.x&&(this.x=d-this.width),this.y<this.first.y&&(this.y=b-this.height)),this.div.style.borderStyle="dashed",this.div.style.backgroundColor= +function(a){var d=a.getEvent();return null==a.getState()&&!mxEvent.isMouseEvent(d)||mxEvent.isPopupTrigger(d)&&(null==a.getState()||mxEvent.isControlDown(d)||mxEvent.isShiftDown(d))};var n=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(a,d){n.apply(this,arguments);mxEvent.isTouchEvent(d.getEvent())&&this.graph.isCellSelected(d.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)}}else mxPanningHandler.prototype.isPanningTrigger=function(a){var d= +a.getEvent();return mxEvent.isLeftMouseButton(d)&&(this.useLeftButtonForPanning&&null==a.getState()||mxEvent.isControlDown(d)&&!mxEvent.isShiftDown(d))||this.usePopupTrigger&&mxEvent.isPopupTrigger(d)};mxRubberband.prototype.isSpaceEvent=function(a){return this.graph.isEnabled()&&!this.graph.isCellLocked(this.graph.getDefaultParent())&&mxEvent.isControlDown(a.getEvent())&&mxEvent.isShiftDown(a.getEvent())};mxRubberband.prototype.mouseUp=function(a,d){var b=null!=this.div&&"none"!=this.div.style.display, +c=null,f=null,e=null,g=null;null!=this.first&&null!=this.currentX&&null!=this.currentY&&(c=this.first.x,f=this.first.y,e=(this.currentX-c)/this.graph.view.scale,g=(this.currentY-f)/this.graph.view.scale,mxEvent.isAltDown(d.getEvent())||(e=this.graph.snap(e),g=this.graph.snap(g),this.graph.isGridEnabled()||(Math.abs(e)<this.graph.tolerance&&(e=0),Math.abs(g)<this.graph.tolerance&&(g=0))));this.reset();if(b){if(mxEvent.isAltDown(d.getEvent())&&this.graph.isToggleEvent(d.getEvent())){var e=new mxRectangle(this.x, +this.y,this.width,this.height),l=this.graph.getCells(e.x,e.y,e.width,e.height);this.graph.removeSelectionCells(l)}else if(this.isSpaceEvent(d)){this.graph.model.beginUpdate();try{for(l=this.graph.getCellsBeyond(c,f,this.graph.getDefaultParent(),!0,!0),b=0;b<l.length;b++)if(this.graph.isCellMovable(l[b])){var n=this.graph.view.getState(l[b]),u=this.graph.getCellGeometry(l[b]);null!=n&&null!=u&&(u=u.clone(),u.translate(e,g),this.graph.model.setGeometry(l[b],u))}}finally{this.graph.model.endUpdate()}}else e= +new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(e,d.getEvent());d.consume()}};mxRubberband.prototype.mouseMove=function(a,d){if(!d.isConsumed()&&null!=this.first){var b=mxUtils.getScrollOrigin(this.graph.container),c=mxUtils.getOffset(this.graph.container);b.x-=c.x;b.y-=c.y;var c=d.getX()+b.x,b=d.getY()+b.y,f=this.first.x-c,e=this.first.y-b,g=this.graph.tolerance;if(null!=this.div||Math.abs(f)>g||Math.abs(e)>g)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(), +this.update(c,b),this.isSpaceEvent(d)?(c=this.x+this.width,b=this.y+this.height,f=this.graph.view.scale,mxEvent.isAltDown(d.getEvent())||(this.width=this.graph.snap(this.width/f)*f,this.height=this.graph.snap(this.height/f)*f,this.graph.isGridEnabled()||(this.width<this.graph.tolerance&&(this.width=0),this.height<this.graph.tolerance&&(this.height=0)),this.x<this.first.x&&(this.x=c-this.width),this.y<this.first.y&&(this.y=b-this.height)),this.div.style.borderStyle="dashed",this.div.style.backgroundColor= "white",this.div.style.left=this.x+"px",this.div.style.top=this.y+"px",this.div.style.width=Math.max(0,this.width)+"px",this.div.style.height=this.graph.container.clientHeight+"px",this.div.style.borderWidth=0>=this.width?"0px 1px 0px 0px":"0px 1px 0px 1px",null==this.secondDiv&&(this.secondDiv=this.div.cloneNode(!0),this.div.parentNode.appendChild(this.secondDiv)),this.secondDiv.style.left=this.x+"px",this.secondDiv.style.top=this.y+"px",this.secondDiv.style.width=this.graph.container.clientWidth+ -"px",this.secondDiv.style.height=Math.max(0,this.height)+"px",this.secondDiv.style.borderWidth=0>=this.height?"1px 0px 0px 0px":"1px 0px 1px 0px"):(this.div.style.backgroundColor="",this.div.style.borderWidth="",this.div.style.borderStyle="",null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null)),c.consume()}};var m=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv), -this.secondDiv=null);m.apply(this,arguments)};var r=(new Date).getTime(),x=0,v=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(a,c,b,d){v.apply(this,arguments);b!=this.currentTerminalState?(r=(new Date).getTime(),x=0):x=(new Date).getTime()-r;this.currentTerminalState=b};var D=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(a){return null!=this.currentTerminalState&&a.getState()==this.currentTerminalState&& -2E3<x||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&D.apply(this,arguments)};mxVertexHandler.prototype.isCustomHandleEvent=function(a){return!mxEvent.isShiftDown(a.getEvent())};mxEdgeHandler.prototype.createHandleShape=function(a,c){var b=null!=a&&0==a,d=this.state.getVisibleTerminalState(b),g=null!=a&&(0==a||a>=this.state.absolutePoints.length-1||this.constructor==mxElbowEdgeHandler&&2==a)?this.graph.getConnectionConstraint(this.state, -d,b):null,b=null!=(null!=g?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(b),g):null)?this.fixedHandleImage:null!=g&&null!=d?this.terminalHandleImage:this.handleImage;if(null!=b)return b=new mxImageShape(new mxRectangle(0,0,b.width,b.height),b.src),b.preserveImageAspect=!1,b;b=mxConstants.HANDLE_SIZE;this.preferHtml&&--b;return new mxRectangleShape(new mxRectangle(0,0,b,b),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var y=mxVertexHandler.prototype.createSizerShape; -mxVertexHandler.prototype.createSizerShape=function(a,c,b){this.handleImage=c==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:c==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;return y.apply(this,arguments)};var u=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(a){if(null!=a&&1==a.length){var c=this.graph.getModel(),b=c.getParent(a[0]),d=this.graph.getCellGeometry(a[0]);if(c.isEdge(b)&&null!=d&&d.relative&&(c=this.graph.view.getState(a[0]), -null!=c&&2>c.width&&2>c.height&&null!=c.text&&null!=c.text.boundingBox))return mxRectangle.fromRectangle(c.text.boundingBox)}return u.apply(this,arguments)};var A=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(a){var c=this.graph.getModel(),b=c.getParent(a.cell),d=this.graph.getCellGeometry(a.cell);return c.isEdge(b)&&null!=d&&d.relative&&2>a.width&&2>a.height&&null!=a.text&&null!=a.text.boundingBox?(c=a.text.unrotatedBoundingBox||a.text.boundingBox, -new mxRectangle(Math.round(c.x),Math.round(c.y),Math.round(c.width),Math.round(c.height))):A.apply(this,arguments)};var F=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(a,c){var b=this.graph.getModel(),d=b.getParent(this.state.cell),g=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(c)==mxEvent.ROTATION_HANDLE||!b.isEdge(d)||null==g||!g.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&F.apply(this,arguments)};mxVertexHandler.prototype.isRotationHandleVisible= -function(){return this.graph.isEnabled()&&this.rotationEnabled&&this.graph.isCellRotatable(this.state.cell)&&(0>=mxGraphHandler.prototype.maxCells||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)};mxVertexHandler.prototype.rotateClick=function(){this.state.view.graph.turnShapes([this.state.cell])};var Q=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(a,c){Q.apply(this,arguments);null!=this.graph.graphHandler.first&&null!=this.rotationShape&&null!= -this.rotationShape.node&&(this.rotationShape.node.style.display="none")};var G=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(a,c){G.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none")};var I=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){I.apply(this,arguments);var a=!1;null!=this.rotationShape&&this.rotationShape.node.setAttribute("title", -mxResources.get("rotateTooltip"));var c=mxUtils.bind(this,function(){null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none");null!=this.specialHandle&&(this.specialHandle.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none");this.redrawHandles()});this.selectionHandler=mxUtils.bind(this,function(a,b){c()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE, -this.selectionHandler);this.changeHandler=mxUtils.bind(this,function(a,b){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));c()});this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(a,c){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,this.editingHandler);var b=this.graph.getLinkForCell(this.state.cell),d=this.graph.getLinksForState(this.state);this.updateLinkHint(b, -d);if(null!=b||null!=d&&0<d.length)a=!0;a&&this.redrawHandles()};mxVertexHandler.prototype.updateLinkHint=function(c,b){if(null==c&&(null==b||0==b.length)||1<this.graph.getSelectionCount())null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);else if(null!=c||null!=b&&0<b.length){null==this.linkHint&&(this.linkHint=a(),this.linkHint.style.padding="6px 8px 6px 8px",this.linkHint.style.opacity="1",this.linkHint.style.filter="",this.graph.container.appendChild(this.linkHint)); -this.linkHint.innerHTML="";if(null!=c&&(this.linkHint.appendChild(this.graph.createLinkForHint(c)),this.graph.isEnabled()&&"function"===typeof this.graph.editLink)){var d=document.createElement("img");d.setAttribute("src",Editor.editImage);d.setAttribute("title",mxResources.get("editLink"));d.setAttribute("width","11");d.setAttribute("height","11");d.style.marginLeft="10px";d.style.marginBottom="-1px";d.style.cursor="pointer";this.linkHint.appendChild(d);mxEvent.addListener(d,"click",mxUtils.bind(this, -function(a){this.graph.setSelectionCell(this.state.cell);this.graph.editLink();mxEvent.consume(a)}));d=document.createElement("img");d.setAttribute("src",Dialog.prototype.clearImage);d.setAttribute("title",mxResources.get("removeIt",[mxResources.get("link")]));d.setAttribute("width","13");d.setAttribute("height","10");d.style.marginLeft="4px";d.style.marginBottom="-1px";d.style.cursor="pointer";this.linkHint.appendChild(d);mxEvent.addListener(d,"click",mxUtils.bind(this,function(a){this.graph.setLinkForCell(this.state.cell, -null);mxEvent.consume(a)}))}if(null!=b)for(d=0;d<b.length;d++){var g=document.createElement("div");g.style.marginTop=null!=c||0<d?"6px":"0px";g.appendChild(this.graph.createLinkForHint(b[d].getAttribute("href"),mxUtils.getTextContent(b[d])));this.linkHint.appendChild(g)}}};mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var M=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){M.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this, -function(){return this.state.view.graph.connectionHandler.isEnabled()});var a=mxUtils.bind(this,function(){null!=this.linkHint&&(this.linkHint.style.display=1==this.graph.getSelectionCount()?"":"none");null!=this.labelShape&&(this.labelShape.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none")});this.selectionHandler=mxUtils.bind(this,function(c,b){a()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.selectionHandler); -this.changeHandler=mxUtils.bind(this,function(c,b){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));a();this.redrawHandles()});this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var c=this.graph.getLinkForCell(this.state.cell),b=this.graph.getLinksForState(this.state);if(null!=c||null!=b&&0<b.length)this.updateLinkHint(c,b),this.redrawHandles()};var z=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){z.apply(this, -arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var B=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){B.apply(this);if(null!=this.state&&null!=this.linkHint){var a=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),c=new mxRectangle(this.state.x,this.state.y-22,this.state.width+24,this.state.height+22),b=mxUtils.getBoundingBox(c,this.state.style[mxConstants.STYLE_ROTATION]|| -"0",a),a=null!=b?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,c=null!=this.state.text?this.state.text.boundingBox:null;null==b&&(b=this.state);b=b.y+b.height;null!=c&&(b=Math.max(b,c.y+c.height));this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(b+this.verticalOffset/2+6+this.state.view.graph.tolerance)+"px"}};var K=mxVertexHandler.prototype.reset;mxVertexHandler.prototype.reset= -function(){K.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none")};var O=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){O.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.selectionHandler&&(this.graph.getSelectionModel().removeListener(this.selectionHandler),this.selectionHandler= -null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null);null!=this.editingHandler&&(this.graph.removeListener(this.editingHandler),this.editingHandler=null)};var T=mxEdgeHandler.prototype.redrawHandles;mxEdgeHandler.prototype.redrawHandles=function(){if(null!=this.marker&&(T.apply(this),null!=this.state&&null!=this.linkHint)){var a=this.state;null!=this.state.text&&null!=this.state.text.bounds&&(a=new mxRectangle(a.x,a.y,a.width,a.height), -a.add(this.state.text.bounds));this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(a.y+a.height+6+this.state.view.graph.tolerance)+"px"}};var W=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){W.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var V=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){V.apply(this,arguments);null!=this.linkHint&& -(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.selectionHandler&&(this.graph.getSelectionModel().removeListener(this.selectionHandler),this.selectionHandler=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null)}}();(function(){function a(){mxCylinder.call(this)}function b(){mxActor.call(this)}function f(){mxCylinder.call(this)}function d(){mxCylinder.call(this)}function k(){mxCylinder.call(this)}function n(){mxActor.call(this)}function p(){mxCylinder.call(this)}function q(){mxActor.call(this)}function w(){mxActor.call(this)}function c(){mxActor.call(this)}function g(){mxActor.call(this)}function h(){mxActor.call(this)}function l(){mxActor.call(this)}function t(){mxActor.call(this)}function m(a,c){this.canvas= -a;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.defaultVariation=c;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,m.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,m.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,m.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,m.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo; -this.canvas.curveTo=mxUtils.bind(this,m.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,m.prototype.arcTo)}function r(){mxRectangleShape.call(this)}function x(){mxRectangleShape.call(this)}function v(){mxActor.call(this)}function D(){mxActor.call(this)}function y(){mxActor.call(this)}function u(){mxRectangleShape.call(this)}function A(){mxRectangleShape.call(this)}function F(){mxCylinder.call(this)}function Q(){mxShape.call(this)}function G(){mxShape.call(this)} -function I(){mxEllipse.call(this)}function M(){mxShape.call(this)}function z(){mxShape.call(this)}function B(){mxRectangleShape.call(this)}function K(){mxShape.call(this)}function O(){mxShape.call(this)}function T(){mxShape.call(this)}function W(){mxShape.call(this)}function V(){mxShape.call(this)}function J(){mxCylinder.call(this)}function ha(){mxDoubleEllipse.call(this)}function na(){mxDoubleEllipse.call(this)}function Y(){mxArrowConnector.call(this);this.spacing=0}function ba(){mxArrowConnector.call(this); -this.spacing=0}function N(){mxActor.call(this)}function H(){mxRectangleShape.call(this)}function U(){mxActor.call(this)}function L(){mxActor.call(this)}function P(){mxActor.call(this)}function R(){mxActor.call(this)}function ja(){mxActor.call(this)}function E(){mxActor.call(this)}function ea(){mxActor.call(this)}function X(){mxActor.call(this)}function Z(){mxActor.call(this)}function ca(){mxActor.call(this)}function fa(){mxEllipse.call(this)}function aa(){mxEllipse.call(this)}function qa(){mxEllipse.call(this)} -function sa(){mxRhombus.call(this)}function la(){mxEllipse.call(this)}function oa(){mxEllipse.call(this)}function va(){mxEllipse.call(this)}function ka(){mxEllipse.call(this)}function ta(){mxActor.call(this)}function ia(){mxActor.call(this)}function ga(){mxActor.call(this)}function da(){mxConnector.call(this)}function ya(a,c,b,d,g,f,h,l,m,t){h+=m;var C=d.clone();d.x-=g*(2*h+m);d.y-=f*(2*h+m);g*=h+m;f*=h+m;return function(){a.ellipse(C.x-g-h,C.y-f-h,2*h,2*h);t?a.fillAndStroke():a.stroke()}}mxUtils.extend(a, -mxCylinder);a.prototype.size=20;a.prototype.darkOpacity=0;a.prototype.darkOpacity2=0;a.prototype.paintVertexShape=function(a,c,b,d,g){var f=Math.max(0,Math.min(d,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),h=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),C=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));a.translate(c,b);a.begin();a.moveTo(0,0);a.lineTo(d-f,0);a.lineTo(d, -f);a.lineTo(d,g);a.lineTo(f,g);a.lineTo(0,g-f);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=h&&(a.setFillAlpha(Math.abs(h)),a.setFillColor(0>h?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(d-f,0),a.lineTo(d,f),a.lineTo(f,f),a.close(),a.fill()),0!=C&&(a.setFillAlpha(Math.abs(C)),a.setFillColor(0>C?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(f,f),a.lineTo(f,g),a.lineTo(0,g-f),a.close(),a.fill()),a.begin(),a.moveTo(f,g),a.lineTo(f,f),a.lineTo(0, -0),a.moveTo(f,f),a.lineTo(d,f),a.end(),a.stroke())};a.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?(a=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(a,a,0,0)):null};mxCellRenderer.registerShape("cube",a);var wa=Math.tan(mxUtils.toRadians(30)),ra=(.5-wa)/2;mxUtils.extend(b,mxActor);b.prototype.size=20;b.prototype.redrawPath=function(a,c,b,d,g){c=Math.min(d,g/wa);a.translate((d-c)/2,(g-c)/2+c/4);a.moveTo(0,.25*c);a.lineTo(.5* -c,c*ra);a.lineTo(c,.25*c);a.lineTo(.5*c,(.5-ra)*c);a.lineTo(0,.25*c);a.close();a.end()};mxCellRenderer.registerShape("isoRectangle",b);mxUtils.extend(f,mxCylinder);f.prototype.size=20;f.prototype.redrawPath=function(a,c,b,d,g,f){c=Math.min(d,g/(.5+wa));f?(a.moveTo(0,.25*c),a.lineTo(.5*c,(.5-ra)*c),a.lineTo(c,.25*c),a.moveTo(.5*c,(.5-ra)*c),a.lineTo(.5*c,(1-ra)*c)):(a.translate((d-c)/2,(g-c)/2),a.moveTo(0,.25*c),a.lineTo(.5*c,c*ra),a.lineTo(c,.25*c),a.lineTo(c,.75*c),a.lineTo(.5*c,(1-ra)*c),a.lineTo(0, -.75*c),a.close());a.end()};mxCellRenderer.registerShape("isoCube",f);mxUtils.extend(d,mxCylinder);d.prototype.redrawPath=function(a,c,b,d,g,f){c=Math.min(g/2,Math.round(g/8)+this.strokewidth-1);if(f&&null!=this.fill||!f&&null==this.fill)a.moveTo(0,c),a.curveTo(0,2*c,d,2*c,d,c),f||(a.stroke(),a.begin()),a.translate(0,c/2),a.moveTo(0,c),a.curveTo(0,2*c,d,2*c,d,c),f||(a.stroke(),a.begin()),a.translate(0,c/2),a.moveTo(0,c),a.curveTo(0,2*c,d,2*c,d,c),f||(a.stroke(),a.begin()),a.translate(0,-c);f||(a.moveTo(0, -c),a.curveTo(0,-c/3,d,-c/3,d,c),a.lineTo(d,g-c),a.curveTo(d,g+c/3,0,g+c/3,0,g-c),a.close())};d.prototype.getLabelMargins=function(a){return new mxRectangle(0,2.5*Math.min(a.height/2,Math.round(a.height/8)+this.strokewidth-1)*this.scale,0,0)};mxCellRenderer.registerShape("datastore",d);mxUtils.extend(k,mxCylinder);k.prototype.size=30;k.prototype.darkOpacity=0;k.prototype.paintVertexShape=function(a,c,b,d,g){var f=Math.max(0,Math.min(d,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.size))))), -h=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));a.translate(c,b);a.begin();a.moveTo(0,0);a.lineTo(d-f,0);a.lineTo(d,f);a.lineTo(d,g);a.lineTo(0,g);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=h&&(a.setFillAlpha(Math.abs(h)),a.setFillColor(0>h?"#FFFFFF":"#000000"),a.begin(),a.moveTo(d-f,0),a.lineTo(d-f,f),a.lineTo(d,f),a.close(),a.fill()),a.begin(),a.moveTo(d-f,0),a.lineTo(d-f,f),a.lineTo(d,f),a.end(),a.stroke())}; -mxCellRenderer.registerShape("note",k);mxUtils.extend(n,mxActor);n.prototype.redrawPath=function(a,c,b,d,g){a.moveTo(0,0);a.quadTo(d/2,.5*g,d,0);a.quadTo(.5*d,g/2,d,g);a.quadTo(d/2,.5*g,0,g);a.quadTo(.5*d,g/2,0,0);a.end()};mxCellRenderer.registerShape("switch",n);mxUtils.extend(p,mxCylinder);p.prototype.tabWidth=60;p.prototype.tabHeight=20;p.prototype.tabPosition="right";p.prototype.redrawPath=function(a,c,b,d,g,f){c=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))); -b=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var h=mxUtils.getValue(this.style,"tabPosition",this.tabPosition);f?"left"==h?(a.moveTo(0,b),a.lineTo(c,b)):(a.moveTo(d-c,b),a.lineTo(d,b)):("left"==h?(a.moveTo(0,0),a.lineTo(c,0),a.lineTo(c,b),a.lineTo(d,b)):(a.moveTo(0,b),a.lineTo(d-c,b),a.lineTo(d-c,0),a.lineTo(d,0)),a.lineTo(d,g),a.lineTo(0,g),a.lineTo(0,b),a.close());a.end()};mxCellRenderer.registerShape("folder",p);mxUtils.extend(q,mxActor);q.prototype.size= -30;q.prototype.isRoundable=function(){return!0};q.prototype.redrawPath=function(a,c,b,d,g){c=Math.max(0,Math.min(d,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(c,0),new mxPoint(d,0),new mxPoint(d,g),new mxPoint(0,g),new mxPoint(0,c)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("card",q);mxUtils.extend(w,mxActor);w.prototype.size=.4;w.prototype.redrawPath= -function(a,c,b,d,g){c=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(0,c/2);a.quadTo(d/4,1.4*c,d/2,c/2);a.quadTo(3*d/4,c*(1-1.4),d,c/2);a.lineTo(d,g-c/2);a.quadTo(3*d/4,g-1.4*c,d/2,g-c/2);a.quadTo(d/4,g-c*(1-1.4),0,g-c/2);a.lineTo(0,c/2);a.close();a.end()};w.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var c=mxUtils.getValue(this.style,"size",this.size),b=a.width,d=a.height;if(null==this.direction||this.direction== -mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)return c*=d,new mxRectangle(a.x,a.y+c,b,d-2*c);c*=b;return new mxRectangle(a.x+c,a.y,b-2*c,d)}return a};mxCellRenderer.registerShape("tape",w);mxUtils.extend(c,mxActor);c.prototype.size=.3;c.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*a.height):null};c.prototype.redrawPath=function(a,c,b,d,g){c=g*Math.max(0, -Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(0,0);a.lineTo(d,0);a.lineTo(d,g-c/2);a.quadTo(3*d/4,g-1.4*c,d/2,g-c/2);a.quadTo(d/4,g-c*(1-1.4),0,g-c/2);a.lineTo(0,c/2);a.close();a.end()};mxCellRenderer.registerShape("document",c);var Ha=mxCylinder.prototype.getCylinderSize;mxCylinder.prototype.getCylinderSize=function(a,c,b,d){var g=mxUtils.getValue(this.style,"size");return null!=g?d*Math.max(0,Math.min(1,g)):Ha.apply(this,arguments)};mxCylinder.prototype.getLabelMargins= -function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var c=2*mxUtils.getValue(this.style,"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,a.height*c),0,0)}return null};mxUtils.extend(g,mxActor);g.prototype.size=.2;g.prototype.isRoundable=function(){return!0};g.prototype.redrawPath=function(a,c,b,d,g){c=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/ -2;this.addPoints(a,[new mxPoint(0,g),new mxPoint(c,0),new mxPoint(d,0),new mxPoint(d-c,g)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("parallelogram",g);mxUtils.extend(h,mxActor);h.prototype.size=.2;h.prototype.isRoundable=function(){return!0};h.prototype.redrawPath=function(a,c,b,d,g){c=d*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0, -g),new mxPoint(c,0),new mxPoint(d-c,0),new mxPoint(d,g)],this.isRounded,b,!0)};mxCellRenderer.registerShape("trapezoid",h);mxUtils.extend(l,mxActor);l.prototype.size=.5;l.prototype.redrawPath=function(a,c,b,d,g){a.setFillColor(null);c=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(d,0),new mxPoint(c,0),new mxPoint(c,g/2),new mxPoint(0,g/2),new mxPoint(c, -g/2),new mxPoint(c,g),new mxPoint(d,g)],this.isRounded,b,!1);a.end()};mxCellRenderer.registerShape("curlyBracket",l);mxUtils.extend(t,mxActor);t.prototype.redrawPath=function(a,c,b,d,g){a.setStrokeWidth(1);a.setFillColor(this.stroke);c=d/5;a.rect(0,0,c,g);a.fillAndStroke();a.rect(2*c,0,c,g);a.fillAndStroke();a.rect(4*c,0,c,g);a.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",t);m.prototype.moveTo=function(a,c){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=a;this.lastY= -c;this.firstX=a;this.firstY=c};m.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,arguments));this.originalClose.apply(this.canvas,arguments)};m.prototype.quadTo=function(a,c,b,d){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=d};m.prototype.curveTo=function(a,c,b,d,g,f){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=g;this.lastY=f};m.prototype.arcTo=function(a,c,b,d, -g,f,h){this.originalArcTo.apply(this.canvas,arguments);this.lastX=f;this.lastY=h};m.prototype.lineTo=function(a,c){if(null!=this.lastX&&null!=this.lastY){var b=function(a){return"number"===typeof a?a?0>a?-1:1:a===a?0:NaN:NaN},d=Math.abs(a-this.lastX),g=Math.abs(c-this.lastY),f=Math.sqrt(d*d+g*g);if(2>f){this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=c;return}var h=Math.round(f/10),C=this.defaultVariation;5>h&&(h=5,C/=3);for(var l=b(a-this.lastX)*d/h,b=b(c-this.lastY)*g/h, -d=d/f,g=g/f,f=0;f<h;f++){var m=(Math.random()-.5)*C;this.originalLineTo.call(this.canvas,l*f+this.lastX-m*g,b*f+this.lastY-m*d)}this.originalLineTo.call(this.canvas,a,c)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=c};m.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo}; -var Ia=mxShape.prototype.paint;mxShape.prototype.defaultJiggle=1.5;mxShape.prototype.paint=function(a){null!=this.style&&"0"!=mxUtils.getValue(this.style,"comic","0")&&null==a.handHiggle&&(a.handJiggle=new m(a,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle)));Ia.apply(this,arguments);null!=a.handJiggle&&(a.handJiggle.destroy(),delete a.handJiggle)};mxRhombus.prototype.defaultJiggle=2;var Ja=mxRectangleShape.prototype.isHtmlAllowed;mxRectangleShape.prototype.isHtmlAllowed=function(){return(null== -this.style||"0"==mxUtils.getValue(this.style,"comic","0"))&&Ja.apply(this,arguments)};var Ka=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(a,c,b,d,g){if(null==a.handJiggle)Ka.apply(this,arguments);else{var f=!0;null!=this.style&&(f="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(f||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)f||null!=this.fill&&this.fill!=mxConstants.NONE|| -(a.pointerEvents=!1),a.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?f=Math.min(d/2,Math.min(g/2,mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2)):(f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.min(d*f,g*f)),a.moveTo(c+f,b),a.lineTo(c+d-f,b),a.quadTo(c+d,b,c+d,b+f),a.lineTo(c+d,b+g-f),a.quadTo(c+d,b+g,c+d-f,b+g),a.lineTo(c+f,b+g),a.quadTo(c,b+g,c,b+g-f), -a.lineTo(c,b+f),a.quadTo(c,b,c+f,b)):(a.moveTo(c,b),a.lineTo(c+d,b),a.lineTo(c+d,b+g),a.lineTo(c,b+g),a.lineTo(c,b)),a.close(),a.end(),a.fillAndStroke()}};var La=mxRectangleShape.prototype.paintForeground;mxRectangleShape.prototype.paintForeground=function(a,c,b,d,g){null==a.handJiggle&&La.apply(this,arguments)};mxUtils.extend(r,mxRectangleShape);r.prototype.size=.1;r.prototype.isHtmlAllowed=function(){return!1};r.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL, -!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var c=a.width,b=a.height;a=new mxRectangle(a.x,a.y,c,b);var d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,d=Math.max(d,Math.min(c*g,b*g));a.x+=Math.round(d);a.width-=Math.round(2*d)}return a};r.prototype.paintForeground= -function(a,c,b,d,g){var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var h=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(d*h,g*h));f=Math.round(f);a.begin();a.moveTo(c+f,b);a.lineTo(c+f,b+g);a.moveTo(c+d-f,b);a.lineTo(c+d-f,b+g);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("process",r);mxUtils.extend(x, -mxRectangleShape);x.prototype.paintBackground=function(a,c,b,d,g){a.setFillColor(mxConstants.NONE);a.rect(c,b,d,g);a.fill()};x.prototype.paintForeground=function(a,c,b,d,g){};mxCellRenderer.registerShape("transparent",x);mxUtils.extend(v,mxHexagon);v.prototype.size=30;v.prototype.position=.5;v.prototype.position2=.5;v.prototype.base=20;v.prototype.getLabelMargins=function(){return new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};v.prototype.isRoundable= -function(){return!0};v.prototype.redrawPath=function(a,c,b,d,g){c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;b=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),h=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2)))),C=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"base",this.base)))); -this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,g-b),new mxPoint(Math.min(d,f+C),g-b),new mxPoint(h,g),new mxPoint(Math.max(0,f),g-b),new mxPoint(0,g-b)],this.isRounded,c,!0,[4])};mxCellRenderer.registerShape("callout",v);mxUtils.extend(D,mxActor);D.prototype.size=.2;D.prototype.fixedSize=20;D.prototype.isRoundable=function(){return!0};D.prototype.redrawPath=function(a,c,b,d,g){c="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style, -"size",this.fixedSize)))):d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d-c,0),new mxPoint(d,g/2),new mxPoint(d-c,g),new mxPoint(0,g),new mxPoint(c,g/2)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("step",D);mxUtils.extend(y,mxHexagon);y.prototype.size=.25;y.prototype.isRoundable=function(){return!0};y.prototype.redrawPath= -function(a,c,b,d,g){c=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(c,0),new mxPoint(d-c,0),new mxPoint(d,.5*g),new mxPoint(d-c,g),new mxPoint(c,g),new mxPoint(0,.5*g)],this.isRounded,b,!0)};mxCellRenderer.registerShape("hexagon",y);mxUtils.extend(u,mxRectangleShape);u.prototype.isHtmlAllowed=function(){return!1};u.prototype.paintForeground=function(a, -c,b,d,g){var f=Math.min(d/5,g/5)+1;a.begin();a.moveTo(c+d/2,b+f);a.lineTo(c+d/2,b+g-f);a.moveTo(c+f,b+g/2);a.lineTo(c+d-f,b+g/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",u);var Ea=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var c=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+ -c,a.y+c,a.width-2*c,a.height-2*c)}return a};mxRhombus.prototype.paintVertexShape=function(a,c,b,d,g){Ea.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var f=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);c+=f;b+=f;d-=2*f;g-=2*f;0<d&&0<g&&(a.setShadow(!1),Ea.apply(this,[a,c,b,d,g]))}};mxUtils.extend(A,mxRectangleShape);A.prototype.isHtmlAllowed=function(){return!1};A.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var c=(Math.max(2, -this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+c,a.y+c,a.width-2*c,a.height-2*c)}return a};A.prototype.paintForeground=function(a,c,b,d,g){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var f=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);c+=f;b+=f;d-=2*f;g-=2*f;0<d&&0<g&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var f=0,h;do{h=mxCellRenderer.defaultShapes[this.style["symbol"+ -f]];if(null!=h){var C=this.style["symbol"+f+"Align"],l=this.style["symbol"+f+"VerticalAlign"],m=this.style["symbol"+f+"Width"],t=this.style["symbol"+f+"Height"],r=this.style["symbol"+f+"Spacing"]||0,u=this.style["symbol"+f+"VSpacing"]||r,y=this.style["symbol"+f+"ArcSpacing"];null!=y&&(y*=this.getArcSize(d+this.strokewidth,g+this.strokewidth),r+=y,u+=y);var y=c,v=b,y=C==mxConstants.ALIGN_CENTER?y+(d-m)/2:C==mxConstants.ALIGN_RIGHT?y+(d-m-r):y+r,v=l==mxConstants.ALIGN_MIDDLE?v+(g-t)/2:l==mxConstants.ALIGN_BOTTOM? -v+(g-t-u):v+u;a.save();C=new h;C.style=this.style;h.prototype.paintVertexShape.call(C,a,y,v,m,t);a.restore()}f++}while(null!=h)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",A);mxUtils.extend(F,mxCylinder);F.prototype.redrawPath=function(a,c,b,d,g,f){f?(a.moveTo(0,0),a.lineTo(d/2,g/2),a.lineTo(d,0),a.end()):(a.moveTo(0,0),a.lineTo(d,0),a.lineTo(d,g),a.lineTo(0,g),a.close())};mxCellRenderer.registerShape("message",F);mxUtils.extend(Q,mxShape); -Q.prototype.paintBackground=function(a,c,b,d,g){a.translate(c,b);a.ellipse(d/4,0,d/2,g/4);a.fillAndStroke();a.begin();a.moveTo(d/2,g/4);a.lineTo(d/2,2*g/3);a.moveTo(d/2,g/3);a.lineTo(0,g/3);a.moveTo(d/2,g/3);a.lineTo(d,g/3);a.moveTo(d/2,2*g/3);a.lineTo(0,g);a.moveTo(d/2,2*g/3);a.lineTo(d,g);a.end();a.stroke()};mxCellRenderer.registerShape("umlActor",Q);mxUtils.extend(G,mxShape);G.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};G.prototype.paintBackground=function(a, -c,b,d,g){a.translate(c,b);a.begin();a.moveTo(0,g/4);a.lineTo(0,3*g/4);a.end();a.stroke();a.begin();a.moveTo(0,g/2);a.lineTo(d/6,g/2);a.end();a.stroke();a.ellipse(d/6,0,5*d/6,g);a.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",G);mxUtils.extend(I,mxEllipse);I.prototype.paintVertexShape=function(a,c,b,d,g){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(c+d/8,b+g);a.lineTo(c+7*d/8,b+g);a.end();a.stroke()};mxCellRenderer.registerShape("umlEntity",I);mxUtils.extend(M, -mxShape);M.prototype.paintVertexShape=function(a,c,b,d,g){a.translate(c,b);a.begin();a.moveTo(d,0);a.lineTo(0,g);a.moveTo(0,0);a.lineTo(d,g);a.end();a.stroke()};mxCellRenderer.registerShape("umlDestroy",M);mxUtils.extend(z,mxShape);z.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+a.height/8,a.width,7*a.height/8)};z.prototype.paintBackground=function(a,c,b,d,g){a.translate(c,b);a.begin();a.moveTo(3*d/8,g/8*1.1);a.lineTo(5*d/8,0);a.end();a.stroke();a.ellipse(0,g/8,d,7*g/8);a.fillAndStroke()}; -z.prototype.paintForeground=function(a,c,b,d,g){a.begin();a.moveTo(3*d/8,g/8*1.1);a.lineTo(5*d/8,g/4);a.end();a.stroke()};mxCellRenderer.registerShape("umlControl",z);mxUtils.extend(B,mxRectangleShape);B.prototype.size=40;B.prototype.isHtmlAllowed=function(){return!1};B.prototype.getLabelBounds=function(a){var c=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(a.x,a.y,a.width,c)};B.prototype.paintBackground=function(a,c,b,d, -g){var f=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),h=mxUtils.getValue(this.style,"participant");null==h||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,a,c,b,d,f):(h=this.state.view.graph.cellRenderer.getShape(h),null!=h&&h!=B&&(h=new h,h.apply(this.state),a.save(),h.paintVertexShape(a,c,b,d,f),a.restore()));f<g&&(a.setDashed(!0),a.begin(),a.moveTo(c+d/2,b+f),a.lineTo(c+d/2,b+g),a.end(),a.stroke())};B.prototype.paintForeground=function(a, -c,b,d,g){var f=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,a,c,b,d,Math.min(g,f))};mxCellRenderer.registerShape("umlLifeline",B);mxUtils.extend(K,mxShape);K.prototype.width=60;K.prototype.height=30;K.prototype.corner=10;K.prototype.getLabelMargins=function(a){return new mxRectangle(0,0,a.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),a.height-parseFloat(mxUtils.getValue(this.style, -"height",this.height)*this.scale))};K.prototype.paintBackground=function(a,c,b,d,g){var f=this.corner,h=Math.min(d,Math.max(f,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),l=Math.min(g,Math.max(1.5*f,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),C=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);C!=mxConstants.NONE&&(a.setFillColor(C),a.rect(c,b,d,g),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!= -mxConstants.NONE?(this.getGradientBounds(a,c,b,d,g),a.setGradient(this.fill,this.gradient,c,b,d,g,this.gradientDirection)):a.setFillColor(this.fill);a.begin();a.moveTo(c,b);a.lineTo(c+h,b);a.lineTo(c+h,b+Math.max(0,l-1.5*f));a.lineTo(c+Math.max(0,h-f),b+l);a.lineTo(c,b+l);a.close();a.fillAndStroke();a.begin();a.moveTo(c+h,b);a.lineTo(c+d,b);a.lineTo(c+d,b+g);a.lineTo(c,b+g);a.lineTo(c,b+l);a.stroke()};mxCellRenderer.registerShape("umlFrame",K);mxPerimeter.LifelinePerimeter=function(a,c,b,d){d=B.prototype.size; -null!=c&&(d=mxUtils.getValue(c.style,"size",d)*c.view.scale);c=parseFloat(c.style[mxConstants.STYLE_STROKEWIDTH]||1)*c.view.scale/2-1;b.x<a.getCenterX()&&(c=-1*(c+1));return new mxPoint(a.getCenterX()+c,Math.min(a.y+a.height,Math.max(a.y+d,b.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(a,c,b,d){d=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",mxPerimeter.OrthogonalPerimeter); -mxPerimeter.BackbonePerimeter=function(a,c,b,d){d=parseFloat(c.style[mxConstants.STYLE_STROKEWIDTH]||1)*c.view.scale/2-1;null!=c.style.backboneSize&&(d+=parseFloat(c.style.backboneSize)*c.view.scale/2-1);if("south"==c.style[mxConstants.STYLE_DIRECTION]||"north"==c.style[mxConstants.STYLE_DIRECTION])return b.x<a.getCenterX()&&(d=-1*(d+1)),new mxPoint(a.getCenterX()+d,Math.min(a.y+a.height,Math.max(a.y,b.y)));b.y<a.getCenterY()&&(d=-1*(d+1));return new mxPoint(Math.min(a.x+a.width,Math.max(a.x,b.x)), -a.getCenterY()+d)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(a,c,b,d){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(a,new mxRectangle(0,0,0,Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(c.style,"size",v.prototype.size))*c.view.scale))),c.style),c,b,d)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(a,c,b,d){var f=g.prototype.size; -null!=c&&(f=mxUtils.getValue(c.style,"size",f));var h=a.x,l=a.y,m=a.width,C=a.height;c=null!=c?mxUtils.getValue(c.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;c==mxConstants.DIRECTION_NORTH||c==mxConstants.DIRECTION_SOUTH?(f=C*Math.max(0,Math.min(1,f)),l=[new mxPoint(h,l),new mxPoint(h+m,l+f),new mxPoint(h+m,l+C),new mxPoint(h,l+C-f),new mxPoint(h,l)]):(f=m*Math.max(0,Math.min(1,f)),l=[new mxPoint(h+f,l),new mxPoint(h+m,l),new mxPoint(h+m-f,l+C),new mxPoint(h, -l+C),new mxPoint(h+f,l)]);C=a.getCenterX();a=a.getCenterY();a=new mxPoint(C,a);d&&(b.x<h||b.x>h+m?a.y=b.y:a.x=b.x);return mxUtils.getPerimeterPoint(l,a,b)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(a,c,b,d){var g=h.prototype.size;null!=c&&(g=mxUtils.getValue(c.style,"size",g));var f=a.x,l=a.y,m=a.width,C=a.height;c=null!=c?mxUtils.getValue(c.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST; -c==mxConstants.DIRECTION_EAST?(g=m*Math.max(0,Math.min(1,g)),l=[new mxPoint(f+g,l),new mxPoint(f+m-g,l),new mxPoint(f+m,l+C),new mxPoint(f,l+C),new mxPoint(f+g,l)]):c==mxConstants.DIRECTION_WEST?(g=m*Math.max(0,Math.min(1,g)),l=[new mxPoint(f,l),new mxPoint(f+m,l),new mxPoint(f+m-g,l+C),new mxPoint(f+g,l+C),new mxPoint(f,l)]):c==mxConstants.DIRECTION_NORTH?(g=C*Math.max(0,Math.min(1,g)),l=[new mxPoint(f,l+g),new mxPoint(f+m,l),new mxPoint(f+m,l+C),new mxPoint(f,l+C-g),new mxPoint(f,l+g)]):(g=C*Math.max(0, -Math.min(1,g)),l=[new mxPoint(f,l),new mxPoint(f+m,l+g),new mxPoint(f+m,l+C-g),new mxPoint(f,l+C),new mxPoint(f,l)]);C=a.getCenterX();a=a.getCenterY();a=new mxPoint(C,a);d&&(b.x<f||b.x>f+m?a.y=b.y:a.x=b.x);return mxUtils.getPerimeterPoint(l,a,b)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(a,c,b,d){var g="0"!=mxUtils.getValue(c.style,"fixedSize","0"),f=g?D.prototype.fixedSize:D.prototype.size;null!=c&&(f=mxUtils.getValue(c.style, -"size",f));var h=a.x,l=a.y,m=a.width,C=a.height,t=a.getCenterX();a=a.getCenterY();c=null!=c?mxUtils.getValue(c.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;c==mxConstants.DIRECTION_EAST?(g=g?Math.max(0,Math.min(m,f)):m*Math.max(0,Math.min(1,f)),l=[new mxPoint(h,l),new mxPoint(h+m-g,l),new mxPoint(h+m,a),new mxPoint(h+m-g,l+C),new mxPoint(h,l+C),new mxPoint(h+g,a),new mxPoint(h,l)]):c==mxConstants.DIRECTION_WEST?(g=g?Math.max(0,Math.min(m,f)):m*Math.max(0, -Math.min(1,f)),l=[new mxPoint(h+g,l),new mxPoint(h+m,l),new mxPoint(h+m-g,a),new mxPoint(h+m,l+C),new mxPoint(h+g,l+C),new mxPoint(h,a),new mxPoint(h+g,l)]):c==mxConstants.DIRECTION_NORTH?(g=g?Math.max(0,Math.min(C,f)):C*Math.max(0,Math.min(1,f)),l=[new mxPoint(h,l+g),new mxPoint(t,l),new mxPoint(h+m,l+g),new mxPoint(h+m,l+C),new mxPoint(t,l+C-g),new mxPoint(h,l+C),new mxPoint(h,l+g)]):(g=g?Math.max(0,Math.min(C,f)):C*Math.max(0,Math.min(1,f)),l=[new mxPoint(h,l),new mxPoint(t,l+g),new mxPoint(h+ -m,l),new mxPoint(h+m,l+C-g),new mxPoint(t,l+C),new mxPoint(h,l+C-g),new mxPoint(h,l)]);t=new mxPoint(t,a);d&&(b.x<h||b.x>h+m?t.y=b.y:t.x=b.x);return mxUtils.getPerimeterPoint(l,t,b)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(a,c,b,d){var g=y.prototype.size;null!=c&&(g=mxUtils.getValue(c.style,"size",g));var f=a.x,h=a.y,l=a.width,m=a.height,C=a.getCenterX();a=a.getCenterY();c=null!=c?mxUtils.getValue(c.style,mxConstants.STYLE_DIRECTION, -mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;c==mxConstants.DIRECTION_NORTH||c==mxConstants.DIRECTION_SOUTH?(g=m*Math.max(0,Math.min(1,g)),h=[new mxPoint(C,h),new mxPoint(f+l,h+g),new mxPoint(f+l,h+m-g),new mxPoint(C,h+m),new mxPoint(f,h+m-g),new mxPoint(f,h+g),new mxPoint(C,h)]):(g=l*Math.max(0,Math.min(1,g)),h=[new mxPoint(f+g,h),new mxPoint(f+l-g,h),new mxPoint(f+l,a),new mxPoint(f+l-g,h+m),new mxPoint(f+g,h+m),new mxPoint(f,a),new mxPoint(f+g,h)]);C=new mxPoint(C,a);d&&(b.x<f||b.x>f+ -l?C.y=b.y:C.x=b.x);return mxUtils.getPerimeterPoint(h,C,b)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(O,mxShape);O.prototype.size=10;O.prototype.paintBackground=function(a,c,b,d,g){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size));a.translate(c,b);a.ellipse((d-f)/2,0,f,f);a.fillAndStroke();a.begin();a.moveTo(d/2,f);a.lineTo(d/2,g);a.end();a.stroke()};mxCellRenderer.registerShape("lollipop",O);mxUtils.extend(T,mxShape);T.prototype.size= -10;T.prototype.inset=2;T.prototype.paintBackground=function(a,c,b,d,g){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size)),h=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(c,b);a.begin();a.moveTo(d/2,f+h);a.lineTo(d/2,g);a.end();a.stroke();a.begin();a.moveTo((d-f)/2-h,f/2);a.quadTo((d-f)/2-h,f+h,d/2,f+h);a.quadTo((d+f)/2+h,f+h,(d+f)/2+h,f/2);a.end();a.stroke()};mxCellRenderer.registerShape("requires",T);mxUtils.extend(W,mxShape);W.prototype.paintBackground= -function(a,c,b,d,g){a.translate(c,b);a.begin();a.moveTo(0,0);a.quadTo(d,0,d,g/2);a.quadTo(d,g,0,g);a.end();a.stroke()};mxCellRenderer.registerShape("requiredInterface",W);mxUtils.extend(V,mxShape);V.prototype.inset=2;V.prototype.paintBackground=function(a,c,b,d,g){var f=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(c,b);a.ellipse(0,f,d-2*f,g-2*f);a.fillAndStroke();a.begin();a.moveTo(d/2,0);a.quadTo(d,0,d,g/2);a.quadTo(d,g,d/2,g);a.end();a.stroke()};mxCellRenderer.registerShape("providedRequiredInterface", -V);mxUtils.extend(J,mxCylinder);J.prototype.jettyWidth=32;J.prototype.jettyHeight=12;J.prototype.redrawPath=function(a,c,b,d,g,f){var h=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));c=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));b=h/2;var h=b+h/2,l=.3*g-c/2,m=.7*g-c/2;f?(a.moveTo(b,l),a.lineTo(h,l),a.lineTo(h,l+c),a.lineTo(b,l+c),a.moveTo(b,m),a.lineTo(h,m),a.lineTo(h,m+c),a.lineTo(b,m+c)):(a.moveTo(b,0),a.lineTo(d,0),a.lineTo(d,g),a.lineTo(b,g), -a.lineTo(b,m+c),a.lineTo(0,m+c),a.lineTo(0,m),a.lineTo(b,m),a.lineTo(b,l+c),a.lineTo(0,l+c),a.lineTo(0,l),a.lineTo(b,l),a.close());a.end()};mxCellRenderer.registerShape("component",J);mxUtils.extend(ha,mxDoubleEllipse);ha.prototype.outerStroke=!0;ha.prototype.paintVertexShape=function(a,c,b,d,g){var f=Math.min(4,Math.min(d/5,g/5));0<d&&0<g&&(a.ellipse(c+f,b+f,d-2*f,g-2*f),a.fillAndStroke());a.setShadow(!1);this.outerStroke&&(a.ellipse(c,b,d,g),a.stroke())};mxCellRenderer.registerShape("endState", -ha);mxUtils.extend(na,ha);na.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",na);mxUtils.extend(Y,mxArrowConnector);Y.prototype.defaultWidth=4;Y.prototype.isOpenEnded=function(){return!0};Y.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};Y.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",Y);mxUtils.extend(ba,mxArrowConnector);ba.prototype.defaultWidth=10; -ba.prototype.defaultArrowWidth=20;ba.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};ba.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};ba.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",ba);mxUtils.extend(N,mxActor); -N.prototype.size=30;N.prototype.isRoundable=function(){return!0};N.prototype.redrawPath=function(a,c,b,d,g){c=Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.size)));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,g),new mxPoint(0,c),new mxPoint(d,0),new mxPoint(d,g)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("manualInput",N);mxUtils.extend(H,mxRectangleShape);H.prototype.dx=20;H.prototype.dy=20;H.prototype.isHtmlAllowed= -function(){return!1};H.prototype.paintForeground=function(a,c,b,d,g){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var f=0;if(this.isRounded)var h=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(d*h,g*h));h=Math.max(f,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));f=Math.max(f,Math.min(g,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(c,b+f);a.lineTo(c+d,b+f); -a.end();a.stroke();a.begin();a.moveTo(c+h,b);a.lineTo(c+h,b+g);a.end();a.stroke()};mxCellRenderer.registerShape("internalStorage",H);mxUtils.extend(U,mxActor);U.prototype.dx=20;U.prototype.dy=20;U.prototype.redrawPath=function(a,c,b,d,g){c=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));b=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE, -mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,b),new mxPoint(c,b),new mxPoint(c,g),new mxPoint(0,g)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("corner",U);mxUtils.extend(L,mxActor);L.prototype.redrawPath=function(a,c,b,d,g){a.moveTo(0,0);a.lineTo(0,g);a.end();a.moveTo(d,0);a.lineTo(d,g);a.end();a.moveTo(0,g/2);a.lineTo(d,g/2);a.end()};mxCellRenderer.registerShape("crossbar",L);mxUtils.extend(P,mxActor);P.prototype.dx=20;P.prototype.dy= -20;P.prototype.redrawPath=function(a,c,b,d,g){c=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));b=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,b),new mxPoint((d+c)/2,b),new mxPoint((d+c)/2,g),new mxPoint((d-c)/2,g),new mxPoint((d- -c)/2,b),new mxPoint(0,b)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("tee",P);mxUtils.extend(R,mxActor);R.prototype.arrowWidth=.3;R.prototype.arrowSize=.2;R.prototype.redrawPath=function(a,c,b,d,g){var f=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth))));c=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));b=(g-f)/2;var f=b+f,h=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/ -2;this.addPoints(a,[new mxPoint(0,b),new mxPoint(d-c,b),new mxPoint(d-c,0),new mxPoint(d,g/2),new mxPoint(d-c,g),new mxPoint(d-c,f),new mxPoint(0,f)],this.isRounded,h,!0);a.end()};mxCellRenderer.registerShape("singleArrow",R);mxUtils.extend(ja,mxActor);ja.prototype.redrawPath=function(a,c,b,d,g){var f=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",R.prototype.arrowWidth))));c=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",R.prototype.arrowSize)))); -b=(g-f)/2;var f=b+f,h=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,g/2),new mxPoint(c,0),new mxPoint(c,b),new mxPoint(d-c,b),new mxPoint(d-c,0),new mxPoint(d,g/2),new mxPoint(d-c,g),new mxPoint(d-c,f),new mxPoint(c,f),new mxPoint(c,g)],this.isRounded,h,!0);a.end()};mxCellRenderer.registerShape("doubleArrow",ja);mxUtils.extend(E,mxActor);E.prototype.size=.1;E.prototype.redrawPath=function(a,c,b,d,g){c=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style, -"size",this.size))));a.moveTo(c,0);a.lineTo(d,0);a.quadTo(d-2*c,g/2,d,g);a.lineTo(c,g);a.quadTo(c-2*c,g/2,c,0);a.close();a.end()};mxCellRenderer.registerShape("dataStorage",E);mxUtils.extend(ea,mxActor);ea.prototype.redrawPath=function(a,c,b,d,g){a.moveTo(0,0);a.quadTo(d,0,d,g/2);a.quadTo(d,g,0,g);a.close();a.end()};mxCellRenderer.registerShape("or",ea);mxUtils.extend(X,mxActor);X.prototype.redrawPath=function(a,c,b,d,g){a.moveTo(0,0);a.quadTo(d,0,d,g/2);a.quadTo(d,g,0,g);a.quadTo(d/2,g/2,0,0);a.close(); -a.end()};mxCellRenderer.registerShape("xor",X);mxUtils.extend(Z,mxActor);Z.prototype.size=20;Z.prototype.isRoundable=function(){return!0};Z.prototype.redrawPath=function(a,c,b,d,g){c=Math.min(d/2,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(c,0),new mxPoint(d-c,0),new mxPoint(d,.8*c),new mxPoint(d,g),new mxPoint(0,g),new mxPoint(0,.8*c)],this.isRounded,b,!0); -a.end()};mxCellRenderer.registerShape("loopLimit",Z);mxUtils.extend(ca,mxActor);ca.prototype.size=.375;ca.prototype.isRoundable=function(){return!0};ca.prototype.redrawPath=function(a,c,b,d,g){c=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,g-c),new mxPoint(d/2,g),new mxPoint(0,g-c)],this.isRounded,b,!0);a.end()}; -mxCellRenderer.registerShape("offPageConnector",ca);mxUtils.extend(fa,mxEllipse);fa.prototype.paintVertexShape=function(a,c,b,d,g){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(c+d/2,b+g);a.lineTo(c+d,b+g);a.end();a.stroke()};mxCellRenderer.registerShape("tapeData",fa);mxUtils.extend(aa,mxEllipse);aa.prototype.paintVertexShape=function(a,c,b,d,g){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(c,b+g/2);a.lineTo(c+d,b+g/ -2);a.end();a.stroke();a.begin();a.moveTo(c+d/2,b);a.lineTo(c+d/2,b+g);a.end();a.stroke()};mxCellRenderer.registerShape("orEllipse",aa);mxUtils.extend(qa,mxEllipse);qa.prototype.paintVertexShape=function(a,c,b,d,g){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(c+.145*d,b+.145*g);a.lineTo(c+.855*d,b+.855*g);a.end();a.stroke();a.begin();a.moveTo(c+.855*d,b+.145*g);a.lineTo(c+.145*d,b+.855*g);a.end();a.stroke()};mxCellRenderer.registerShape("sumEllipse", -qa);mxUtils.extend(sa,mxRhombus);sa.prototype.paintVertexShape=function(a,c,b,d,g){mxRhombus.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(c,b+g/2);a.lineTo(c+d,b+g/2);a.end();a.stroke()};mxCellRenderer.registerShape("sortShape",sa);mxUtils.extend(la,mxEllipse);la.prototype.paintVertexShape=function(a,c,b,d,g){a.begin();a.moveTo(c,b);a.lineTo(c+d,b);a.lineTo(c+d/2,b+g/2);a.close();a.fillAndStroke();a.begin();a.moveTo(c,b+g);a.lineTo(c+d,b+g);a.lineTo(c+d/2,b+ -g/2);a.close();a.fillAndStroke()};mxCellRenderer.registerShape("collate",la);mxUtils.extend(oa,mxEllipse);oa.prototype.paintVertexShape=function(a,c,b,d,g){var f=b+g-5;a.begin();a.moveTo(c,b);a.lineTo(c,b+g);a.moveTo(c,f);a.lineTo(c+10,f-5);a.moveTo(c,f);a.lineTo(c+10,f+5);a.moveTo(c,f);a.lineTo(c+d,f);a.moveTo(c+d,b);a.lineTo(c+d,b+g);a.moveTo(c+d,f);a.lineTo(c+d-10,f-5);a.moveTo(c+d,f);a.lineTo(c+d-10,f+5);a.end();a.stroke()};mxCellRenderer.registerShape("dimension",oa);mxUtils.extend(va,mxEllipse); -va.prototype.paintVertexShape=function(a,c,b,d,g){this.outline||a.setStrokeColor(null);mxRectangleShape.prototype.paintBackground.apply(this,arguments);null!=this.style&&(a.setStrokeColor(this.stroke),a.rect(c,b,d,g),a.fill(),a.begin(),a.moveTo(c,b),"1"==mxUtils.getValue(this.style,"top","1")?a.lineTo(c+d,b):a.moveTo(c+d,b),"1"==mxUtils.getValue(this.style,"right","1")?a.lineTo(c+d,b+g):a.moveTo(c+d,b+g),"1"==mxUtils.getValue(this.style,"bottom","1")?a.lineTo(c,b+g):a.moveTo(c,b+g),"1"==mxUtils.getValue(this.style, -"left","1")&&a.lineTo(c,b-this.strokewidth/2),a.end(),a.stroke())};mxCellRenderer.registerShape("partialRectangle",va);mxUtils.extend(ka,mxEllipse);ka.prototype.paintVertexShape=function(a,c,b,d,g){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();"vertical"==mxUtils.getValue(this.style,"line")?(a.moveTo(c+d/2,b),a.lineTo(c+d/2,b+g)):(a.moveTo(c,b+g/2),a.lineTo(c+d,b+g/2));a.end();a.stroke()};mxCellRenderer.registerShape("lineEllipse",ka);mxUtils.extend(ta,mxActor); -ta.prototype.redrawPath=function(a,c,b,d,g){c=Math.min(d,g/2);a.moveTo(0,0);a.lineTo(d-c,0);a.quadTo(d,0,d,g/2);a.quadTo(d,g,d-c,g);a.lineTo(0,g);a.close();a.end()};mxCellRenderer.registerShape("delay",ta);mxUtils.extend(ia,mxActor);ia.prototype.size=.2;ia.prototype.redrawPath=function(a,c,b,d,g){c=Math.min(g,d);var f=Math.max(0,Math.min(c,c*parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=(g-f)/2;b=c+f;var h=(d-f)/2,f=h+f;a.moveTo(0,c);a.lineTo(h,c);a.lineTo(h,0);a.lineTo(f,0);a.lineTo(f, -c);a.lineTo(d,c);a.lineTo(d,b);a.lineTo(f,b);a.lineTo(f,g);a.lineTo(h,g);a.lineTo(h,b);a.lineTo(0,b);a.close();a.end()};mxCellRenderer.registerShape("cross",ia);mxUtils.extend(ga,mxActor);ga.prototype.size=.25;ga.prototype.redrawPath=function(a,c,b,d,g){c=Math.min(d,g/2);b=Math.min(d-c,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*d);a.moveTo(0,g/2);a.lineTo(b,0);a.lineTo(d-c,0);a.quadTo(d,0,d,g/2);a.quadTo(d,g,d-c,g);a.lineTo(b,g);a.close();a.end()};mxCellRenderer.registerShape("display", -ga);mxUtils.extend(da,mxConnector);da.prototype.origPaintEdgeShape=da.prototype.paintEdgeShape;da.prototype.paintEdgeShape=function(a,c,b){for(var d=[],g=0;g<c.length;g++)d.push(mxUtils.clone(c[g]));var g=a.state.dashed,f=a.state.fixDash;da.prototype.origPaintEdgeShape.apply(this,[a,d,b]);3<=a.state.strokeWidth&&(d=mxUtils.getValue(this.style,"fillColor",null),null!=d&&(a.setStrokeColor(d),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(g,f),da.prototype.origPaintEdgeShape.apply(this,[a,c,b])))}; -mxCellRenderer.registerShape("filledEdge",da);"undefined"!==typeof StyleFormatPanel&&function(){var a=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var c=this.format.getSelectionState(),b=a.apply(this,arguments);"umlFrame"==c.style.shape&&b.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});return b}}();mxMarker.addMarker("dash",function(a,c,b,d,g,f,h,l,m,t){var r=g*(h+m+1),u=f*(h+m+1);return function(){a.begin(); -a.moveTo(d.x-r/2-u/2,d.y-u/2+r/2);a.lineTo(d.x+u/2-3*r/2,d.y-3*u/2-r/2);a.stroke()}});mxMarker.addMarker("cross",function(a,c,b,d,g,f,h,l,m,t){var r=g*(h+m+1),u=f*(h+m+1);return function(){a.begin();a.moveTo(d.x-r/2-u/2,d.y-u/2+r/2);a.lineTo(d.x+u/2-3*r/2,d.y-3*u/2-r/2);a.moveTo(d.x-r/2+u/2,d.y-u/2-r/2);a.lineTo(d.x-u/2-3*r/2,d.y-3*u/2+r/2);a.stroke()}});mxMarker.addMarker("circle",ya);mxMarker.addMarker("circlePlus",function(a,c,b,d,g,f,h,l,m,t){var r=d.clone(),u=ya.apply(this,arguments),y=g*(h+ -2*m),v=f*(h+2*m);return function(){u.apply(this,arguments);a.begin();a.moveTo(r.x-g*m,r.y-f*m);a.lineTo(r.x-2*y+g*m,r.y-2*v+f*m);a.moveTo(r.x-y-v+f*m,r.y-v+y-g*m);a.lineTo(r.x+v-y-f*m,r.y-v-y+g*m);a.stroke()}});mxMarker.addMarker("async",function(a,c,b,d,g,f,h,l,m,t){c=g*m*1.118;b=f*m*1.118;g*=h+m;f*=h+m;var r=d.clone();r.x-=c;r.y-=b;d.x+=1*-g-c;d.y+=1*-f-b;return function(){a.begin();a.moveTo(r.x,r.y);l?a.lineTo(r.x-g-f/2,r.y-f+g/2):a.lineTo(r.x+f/2-g,r.y-f-g/2);a.lineTo(r.x-g,r.y-f);a.close();t? -a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync",function(a){a=null!=a?a:2;return function(c,b,d,g,f,h,l,m,r,t){f*=l+r;h*=l+r;var u=g.clone();return function(){c.begin();c.moveTo(u.x,u.y);m?c.lineTo(u.x-f-h/a,u.y-h+f/a):c.lineTo(u.x+h/a-f,u.y-h-f/a);c.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Fa=function(a,c,b){return ua(a,["width"],c,function(c,d,g,f,h){h=a.shape.getEdgeWidth()*a.view.scale+b;return new mxPoint(f.x+d*c/4+g*h/2,f.y+g*c/4-d*h/2)},function(c,d,g,f,h, -l){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,h.x,h.y,l.x,l.y));a.style.width=Math.round(2*c)/a.view.scale-b})},ua=function(a,c,b,d,g){return S(a,c,function(c){var g=a.absolutePoints,f=g.length-1;c=a.view.translate;var h=a.view.scale,l=b?g[0]:g[f],g=b?g[1]:g[f-1],f=g.x-l.x,m=g.y-l.y,r=Math.sqrt(f*f+m*m),l=d.call(this,r,f/r,m/r,l,g);return new mxPoint(l.x/h-c.x,l.y/h-c.y)},function(c,d,f){var h=a.absolutePoints,l=h.length-1;c=a.view.translate;var m=a.view.scale,r=b?h[0]:h[l],h=b?h[1]:h[l-1],l=h.x-r.x, -t=h.y-r.y,u=Math.sqrt(l*l+t*t);d.x=(d.x+c.x)*m;d.y=(d.y+c.y)*m;g.call(this,u,l/u,t/u,r,h,d,f)})},pa=function(a){return function(c){return[S(c,["arrowWidth","arrowSize"],function(c){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",R.prototype.arrowWidth))),d=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",R.prototype.arrowSize)));return new mxPoint(c.x+(1-d)*c.width,c.y+(1-b)*c.height/2)},function(c,b){this.state.style.arrowWidth=Math.max(0,Math.min(1, -Math.abs(c.y+c.height/2-b.y)/c.height*2));this.state.style.arrowSize=Math.max(0,Math.min(a,(c.x+c.width-b.x)/c.width))})]}},Da=function(a,c,b){return function(d){var g=[S(d,["size"],function(b){var d=Math.max(0,Math.min(b.width,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",c)))))*a;return new mxPoint(b.x+d,b.y+d)},function(c,b){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(c.width,b.x-c.x),Math.min(c.height,b.y-c.y)))/a)})];b&&mxUtils.getValue(d.style,mxConstants.STYLE_ROUNDED, -!1)&&g.push(ma(d));return g}},za=function(a,c,b,d,g){b=null!=b?b:1;return function(f){var h=[S(f,["size"],function(c){var b=null!=g?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,d=parseFloat(mxUtils.getValue(this.state.style,"size",b?g:a));return new mxPoint(c.x+Math.max(0,Math.min(c.width,d*(b?1:c.width))),c.getCenterY())},function(a,c,d){var h=null!=g?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null;a=h?c.x-a.x:Math.max(0,Math.min(b,(c.x-a.x)/a.width));h&&!mxEvent.isAltDown(d.getEvent())&& -(a=f.view.graph.snap(a));this.state.style.size=a},null,d)];c&&mxUtils.getValue(f.style,mxConstants.STYLE_ROUNDED,!1)&&h.push(ma(f));return h}},Ga=function(a){return function(c){var b=[S(c,["size"],function(c){var b=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.state.style,"size",h.prototype.size))));return new mxPoint(c.x+b*c.width*.75,c.y+c.height/4)},function(c,b){this.state.style.size=Math.max(0,Math.min(a,(b.x-c.x)/(.75*c.width)))},null,!0)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED, -!1)&&b.push(ma(c));return b}},xa=function(){return function(a){var c=[];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&c.push(ma(a));return c}},ma=function(a,c){return S(a,[mxConstants.STYLE_ARCSIZE],function(b){var d=null!=c?c:b.height/8;if("1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var g=mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(b.x+b.width-Math.min(b.width/2,g),b.y+d)}g=Math.max(0,parseFloat(mxUtils.getValue(a.style, -mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(b.x+b.width-Math.min(Math.max(b.width/2,b.height/2),Math.min(b.width,b.height)*g),b.y+d)},function(c,b,d){"1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(c.width,2*(c.x+c.width-b.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(c.width-b.x+c.x)/Math.min(c.width,c.height))))})}, -S=function(a,c,b,d,g,f){var h=new mxHandle(a,null,mxVertexHandler.prototype.secondaryHandleImage);h.execute=function(){for(var a=0;a<c.length;a++)this.copyStyle(c[a])};h.getPosition=b;h.setPosition=d;h.ignoreGrid=null!=g?g:!0;if(f){var l=h.positionChanged;h.positionChanged=function(){l.apply(this,arguments);a.view.invalidate(this.state.cell);a.view.validate()}}return h},Aa={link:function(a){return[Fa(a,!0,10),Fa(a,!1,10)]},flexArrow:function(a){var c=a.view.graph.gridSize/a.view.scale,b=[];mxUtils.getValue(a.style, -mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(b.push(ua(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(c,b,d,g,f){c=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(g.x+b*(f+a.shape.strokewidth*a.view.scale)+d*c/2,g.y+d*(f+a.shape.strokewidth*a.view.scale)-b*c/2)},function(b,d,g,f,h,l,m){b=Math.sqrt(mxUtils.ptSegDistSq(f.x, -f.y,h.x,h.y,l.x,l.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+g,f.y-d,l.x,l.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*b)/a.view.scale;mxEvent.isControlDown(m.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(m.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<c/6&&(a.style[mxConstants.STYLE_STARTSIZE]= -a.style[mxConstants.STYLE_ENDSIZE])})),b.push(ua(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(c,b,d,g,f){c=(a.shape.getStartArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(g.x+b*(f+a.shape.strokewidth*a.view.scale)+d*c/2,g.y+d*(f+a.shape.strokewidth*a.view.scale)-b*c/2)},function(b,d,g,f,h,l,m){b=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,h.x, -h.y,l.x,l.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+g,f.y-d,l.x,l.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.startWidth=Math.max(0,Math.round(2*b)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(m.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE],a.style.endWidth=a.style.startWidth);mxEvent.isAltDown(m.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))< -c/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(a.style.startWidth)-parseFloat(a.style.endWidth))<c&&(a.style.startWidth=a.style.endWidth))})));mxUtils.getValue(a.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(b.push(ua(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(c,b,d,g,f){c=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/ -5)*a.view.scale;return new mxPoint(g.x+b*(f+a.shape.strokewidth*a.view.scale)-d*c/2,g.y+d*(f+a.shape.strokewidth*a.view.scale)+b*c/2)},function(b,d,g,f,h,l,m){b=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,h.x,h.y,l.x,l.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+g,f.y-d,l.x,l.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*b)/a.view.scale;mxEvent.isControlDown(m.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]); -mxEvent.isAltDown(m.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<c/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE])})),b.push(ua(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(c,b,d,g,f){c=(a.shape.getEndArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(g.x+ -b*(f+a.shape.strokewidth*a.view.scale)-d*c/2,g.y+d*(f+a.shape.strokewidth*a.view.scale)+b*c/2)},function(b,d,g,f,h,l,m){b=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,h.x,h.y,l.x,l.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+g,f.y-d,l.x,l.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.endWidth=Math.max(0,Math.round(2*b)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(m.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE], -a.style.startWidth=a.style.endWidth);mxEvent.isAltDown(m.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<c/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(a.style.endWidth)-parseFloat(a.style.startWidth))<c&&(a.style.endWidth=a.style.startWidth))})));return b},swimlane:function(a){var c=[S(a,[mxConstants.STYLE_STARTSIZE],function(c){var b=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE, -mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(c.getCenterX(),c.y+Math.max(0,Math.min(c.height,b))):new mxPoint(c.x+Math.max(0,Math.min(c.width,b)),c.getCenterY())},function(c,b){a.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(c.height,b.y-c.y))):Math.round(Math.max(0,Math.min(c.width,b.x-c.x)))})];if(mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED)){var b= -parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));c.push(ma(a,b/2))}return c},label:xa(),ext:xa(),rectangle:xa(),triangle:xa(),rhombus:xa(),umlLifeline:function(a){return[S(a,["size"],function(a){var c=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",B.prototype.size))));return new mxPoint(a.getCenterX(),a.y+c)},function(a,c){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,c.y-a.y)))},!1)]},umlFrame:function(a){return[S(a, -["width","height"],function(a){var c=Math.max(K.prototype.corner,Math.min(a.width,mxUtils.getValue(this.state.style,"width",K.prototype.width))),b=Math.max(1.5*K.prototype.corner,Math.min(a.height,mxUtils.getValue(this.state.style,"height",K.prototype.height)));return new mxPoint(a.x+c,a.y+b)},function(a,c){this.state.style.width=Math.round(Math.max(K.prototype.corner,Math.min(a.width,c.x-a.x)));this.state.style.height=Math.round(Math.max(1.5*K.prototype.corner,Math.min(a.height,c.y-a.y)))},!1)]}, -process:function(a){var c=[S(a,["size"],function(a){var c=Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.state.style,"size",r.prototype.size))));return new mxPoint(a.x+a.width*c,a.y+a.height/4)},function(a,c){this.state.style.size=Math.max(0,Math.min(.5,(c.x-a.x)/a.width))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&c.push(ma(a));return c},cross:function(a){return[S(a,["size"],function(a){var c=Math.min(a.width,a.height),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style, -"size",ia.prototype.size)))*c/2;return new mxPoint(a.getCenterX()-c,a.getCenterY()-c)},function(a,c){var b=Math.min(a.width,a.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,a.getCenterY()-c.y)/b*2,Math.max(0,a.getCenterX()-c.x)/b*2)))})]},note:function(a){return[S(a,["size"],function(a){var c=Math.max(0,Math.min(a.width,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",k.prototype.size)))));return new mxPoint(a.x+a.width-c,a.y+c)},function(a,c){this.state.style.size= -Math.round(Math.max(0,Math.min(Math.min(a.width,a.x+a.width-c.x),Math.min(a.height,c.y-a.y))))})]},manualInput:function(a){var c=[S(a,["size"],function(a){var c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",N.prototype.size)));return new mxPoint(a.x+a.width/4,a.y+3*c/4)},function(a,c){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,4*(c.y-a.y)/3)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&c.push(ma(a));return c},dataStorage:function(a){return[S(a, -["size"],function(a){var c=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",E.prototype.size))));return new mxPoint(a.x+(1-c)*a.width,a.getCenterY())},function(a,c){this.state.style.size=Math.max(0,Math.min(1,(a.x+a.width-c.x)/a.width))})]},callout:function(a){var c=[S(a,["size","position"],function(a){var c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",v.prototype.size))),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",v.prototype.position))); -mxUtils.getValue(this.state.style,"base",v.prototype.base);return new mxPoint(a.x+b*a.width,a.y+a.height-c)},function(a,c){mxUtils.getValue(this.state.style,"base",v.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(a.height,a.y+a.height-c.y)));this.state.style.position=Math.round(100*Math.max(0,Math.min(1,(c.x-a.x)/a.width)))/100}),S(a,["position2"],function(a){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",v.prototype.position2)));return new mxPoint(a.x+ -c*a.width,a.y+a.height)},function(a,c){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(c.x-a.x)/a.width)))/100}),S(a,["base"],function(a){var c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",v.prototype.size))),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",v.prototype.position))),d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"base",v.prototype.base)));return new mxPoint(a.x+Math.min(a.width,b*a.width+d),a.y+a.height- -c)},function(a,c){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",v.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(a.width,c.x-a.x-b*a.width)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&c.push(ma(a));return c},internalStorage:function(a){var c=[S(a,["dx","dy"],function(a){var c=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",H.prototype.dx))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy", -H.prototype.dy)));return new mxPoint(a.x+c,a.y+b)},function(a,c){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,c.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,c.y-a.y)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&c.push(ma(a));return c},corner:function(a){return[S(a,["dx","dy"],function(a){var c=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",U.prototype.dx))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy", -U.prototype.dy)));return new mxPoint(a.x+c,a.y+b)},function(a,c){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,c.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,c.y-a.y)))})]},tee:function(a){return[S(a,["dx","dy"],function(a){var c=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",P.prototype.dx))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",P.prototype.dy)));return new mxPoint(a.x+(a.width+c)/2,a.y+b)},function(a,c){this.state.style.dx= -Math.round(Math.max(0,2*Math.min(a.width/2,c.x-a.x-a.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,c.y-a.y)))})]},singleArrow:pa(1),doubleArrow:pa(.5),folder:function(a){return[S(a,["tabWidth","tabHeight"],function(a){var c=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"tabWidth",p.prototype.tabWidth))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"tabHeight",p.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",p.prototype.tabPosition)== -mxConstants.ALIGN_RIGHT&&(c=a.width-c);return new mxPoint(a.x+c,a.y+b)},function(a,c){var b=Math.max(0,Math.min(a.width,c.x-a.x));mxUtils.getValue(this.state.style,"tabPosition",p.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(b=a.width-b);this.state.style.tabWidth=Math.round(b);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(a.height,c.y-a.y)))})]},document:function(a){return[S(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",c.prototype.size)))); -return new mxPoint(a.x+3*a.width/4,a.y+(1-b)*a.height)},function(a,c){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-c.y)/a.height))})]},tape:function(a){return[S(a,["size"],function(a){var c=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",w.prototype.size))));return new mxPoint(a.getCenterX(),a.y+c*a.height/2)},function(a,c){this.state.style.size=Math.max(0,Math.min(1,(c.y-a.y)/a.height*2))})]},offPageConnector:function(a){return[S(a,["size"],function(a){var c= -Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ca.prototype.size))));return new mxPoint(a.getCenterX(),a.y+(1-c)*a.height)},function(a,c){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-c.y)/a.height))})]},step:za(D.prototype.size,!0,null,!0,D.prototype.fixedSize),hexagon:za(y.prototype.size,!0,.5,!0),curlyBracket:za(l.prototype.size,!1),display:za(ga.prototype.size,!1),cube:Da(1,a.prototype.size,!1),card:Da(.5,q.prototype.size,!0),loopLimit:Da(.5,Z.prototype.size, -!0),trapezoid:Ga(.5),parallelogram:Ga(1)};Graph.createHandle=S;Graph.handleFactory=Aa;mxVertexHandler.prototype.createCustomHandles=function(){if(1==this.state.view.graph.getSelectionCount()&&this.graph.isCellRotatable(this.state.cell)){var a=this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_RECTANGLE);a=Aa[a];null==a&&null!=this.state.shape&&this.state.shape.isRoundable()&&(a=Aa[mxConstants.SHAPE_RECTANGLE]);if(null!=a)return a(this.state)}return null}; -mxEdgeHandler.prototype.createCustomHandles=function(){if(1==this.state.view.graph.getSelectionCount()){var a=this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_CONNECTOR);a=Aa[a];if(null!=a)return a(this.state)}return null}}else Graph.createHandle=function(){},Graph.handleFactory={};var Ba=new mxPoint(1,0),Ca=new mxPoint(1,0),pa=mxUtils.toRadians(-30),Ba=mxUtils.getRotatedPoint(Ba,Math.cos(pa),Math.sin(pa)),pa=mxUtils.toRadians(-150), -Ca=mxUtils.getRotatedPoint(Ca,Math.cos(pa),Math.sin(pa));mxEdgeStyle.IsometricConnector=function(a,c,b,d,g){var f=a.view;d=null!=d&&0<d.length?d[0]:null;var h=a.absolutePoints,l=h[0],h=h[h.length-1];null!=d&&(d=f.transformControlPoint(a,d));null==l&&null!=c&&(l=new mxPoint(c.getCenterX(),c.getCenterY()));null==h&&null!=b&&(h=new mxPoint(b.getCenterX(),b.getCenterY()));var m=Ba.x,r=Ba.y,t=Ca.x,u=Ca.y,y="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!=h&&null!=l){a=function(a,c, -b){a-=v.x;var d=c-v.y;c=(u*a-t*d)/(m*u-r*t);a=(r*a-m*d)/(r*t-m*u);y?(b&&(v=new mxPoint(v.x+m*c,v.y+r*c),g.push(v)),v=new mxPoint(v.x+t*a,v.y+u*a)):(b&&(v=new mxPoint(v.x+t*a,v.y+u*a),g.push(v)),v=new mxPoint(v.x+m*c,v.y+r*c));g.push(v)};var v=l;null==d&&(d=new mxPoint(l.x+(h.x-l.x)/2,l.y+(h.y-l.y)/2));a(d.x,d.y,!0);a(h.x,h.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var Ma=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(a,c){if(c== -mxEdgeStyle.IsometricConnector){var b=new mxElbowEdgeHandler(a);b.snapToTerminals=!1;return b}return Ma.apply(this,arguments)};b.prototype.constraints=[];f.prototype.getConstraints=function(a,c,b){a=[];var d=Math.tan(mxUtils.toRadians(30)),g=(.5-d)/2,d=Math.min(c,b/(.5+d));c=(c-d)/2;b=(b-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,b+.25*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c+.5*d,b+d*g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c+d, -b+.25*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c+d,b+.75*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c+.5*d,b+(1-g)*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,b+.75*d));return a};v.prototype.getConstraints=function(a,c,b){a=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position", -this.position));var g=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2))));parseFloat(mxUtils.getValue(this.style,"base",this.base));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,c,.5*(b-d)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,b-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,b-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(b-d)));c>=2*d&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5, +"px",this.secondDiv.style.height=Math.max(0,this.height)+"px",this.secondDiv.style.borderWidth=0>=this.height?"1px 0px 0px 0px":"1px 0px 1px 0px"):(this.div.style.backgroundColor="",this.div.style.borderWidth="",this.div.style.borderStyle="",null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null)),d.consume()}};var g=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv), +this.secondDiv=null);g.apply(this,arguments)};var p=(new Date).getTime(),B=0,x=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(a,d,b,c){x.apply(this,arguments);b!=this.currentTerminalState?(p=(new Date).getTime(),B=0):B=(new Date).getTime()-p;this.currentTerminalState=b};var t=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(a){return null!=this.currentTerminalState&&a.getState()==this.currentTerminalState&& +2E3<B||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&t.apply(this,arguments)};mxVertexHandler.prototype.isCustomHandleEvent=function(a){return!mxEvent.isShiftDown(a.getEvent())};mxEdgeHandler.prototype.createHandleShape=function(a,d){var b=null!=a&&0==a,c=this.state.getVisibleTerminalState(b),f=null!=a&&(0==a||a>=this.state.absolutePoints.length-1||this.constructor==mxElbowEdgeHandler&&2==a)?this.graph.getConnectionConstraint(this.state, +c,b):null,b=null!=(null!=f?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(b),f):null)?this.fixedHandleImage:null!=f&&null!=c?this.terminalHandleImage:this.handleImage;if(null!=b)return b=new mxImageShape(new mxRectangle(0,0,b.width,b.height),b.src),b.preserveImageAspect=!1,b;b=mxConstants.HANDLE_SIZE;this.preferHtml&&--b;return new mxRectangleShape(new mxRectangle(0,0,b,b),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var y=mxVertexHandler.prototype.createSizerShape; +mxVertexHandler.prototype.createSizerShape=function(a,d,b){this.handleImage=d==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:d==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;return y.apply(this,arguments)};var u=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(a){if(null!=a&&1==a.length){var d=this.graph.getModel(),b=d.getParent(a[0]),c=this.graph.getCellGeometry(a[0]);if(d.isEdge(b)&&null!=c&&c.relative&&(d=this.graph.view.getState(a[0]), +null!=d&&2>d.width&&2>d.height&&null!=d.text&&null!=d.text.boundingBox))return mxRectangle.fromRectangle(d.text.boundingBox)}return u.apply(this,arguments)};var A=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(a){var d=this.graph.getModel(),b=d.getParent(a.cell),c=this.graph.getCellGeometry(a.cell);return d.isEdge(b)&&null!=c&&c.relative&&2>a.width&&2>a.height&&null!=a.text&&null!=a.text.boundingBox?(d=a.text.unrotatedBoundingBox||a.text.boundingBox, +new mxRectangle(Math.round(d.x),Math.round(d.y),Math.round(d.width),Math.round(d.height))):A.apply(this,arguments)};var D=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(a,d){var b=this.graph.getModel(),c=b.getParent(this.state.cell),f=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(d)==mxEvent.ROTATION_HANDLE||!b.isEdge(c)||null==f||!f.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&D.apply(this,arguments)};mxVertexHandler.prototype.isRotationHandleVisible= +function(){return this.graph.isEnabled()&&this.rotationEnabled&&this.graph.isCellRotatable(this.state.cell)&&(0>=mxGraphHandler.prototype.maxCells||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)};mxVertexHandler.prototype.rotateClick=function(){this.state.view.graph.turnShapes([this.state.cell])};var U=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(a,d){U.apply(this,arguments);null!=this.graph.graphHandler.first&&null!=this.rotationShape&&null!= +this.rotationShape.node&&(this.rotationShape.node.style.display="none")};var S=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(a,d){S.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none")};var N=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){N.apply(this,arguments);var a=!1;null!=this.rotationShape&&this.rotationShape.node.setAttribute("title", +mxResources.get("rotateTooltip"));var d=mxUtils.bind(this,function(){null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none");null!=this.specialHandle&&(this.specialHandle.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none");this.redrawHandles()});this.selectionHandler=mxUtils.bind(this,function(a,b){d()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE, +this.selectionHandler);this.changeHandler=mxUtils.bind(this,function(a,b){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));d()});this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(a,d){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,this.editingHandler);var b=this.graph.getLinkForCell(this.state.cell),c=this.graph.getLinksForState(this.state);this.updateLinkHint(b, +c);if(null!=b||null!=c&&0<c.length)a=!0;a&&this.redrawHandles()};mxVertexHandler.prototype.updateLinkHint=function(d,b){if(null==d&&(null==b||0==b.length)||1<this.graph.getSelectionCount())null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);else if(null!=d||null!=b&&0<b.length){null==this.linkHint&&(this.linkHint=a(),this.linkHint.style.padding="6px 8px 6px 8px",this.linkHint.style.opacity="1",this.linkHint.style.filter="",this.graph.container.appendChild(this.linkHint)); +this.linkHint.innerHTML="";if(null!=d&&(this.linkHint.appendChild(this.graph.createLinkForHint(d)),this.graph.isEnabled()&&"function"===typeof this.graph.editLink)){var c=document.createElement("img");c.setAttribute("src",Editor.editImage);c.setAttribute("title",mxResources.get("editLink"));c.setAttribute("width","11");c.setAttribute("height","11");c.style.marginLeft="10px";c.style.marginBottom="-1px";c.style.cursor="pointer";this.linkHint.appendChild(c);mxEvent.addListener(c,"click",mxUtils.bind(this, +function(a){this.graph.setSelectionCell(this.state.cell);this.graph.editLink();mxEvent.consume(a)}));c=document.createElement("img");c.setAttribute("src",Dialog.prototype.clearImage);c.setAttribute("title",mxResources.get("removeIt",[mxResources.get("link")]));c.setAttribute("width","13");c.setAttribute("height","10");c.style.marginLeft="4px";c.style.marginBottom="-1px";c.style.cursor="pointer";this.linkHint.appendChild(c);mxEvent.addListener(c,"click",mxUtils.bind(this,function(a){this.graph.setLinkForCell(this.state.cell, +null);mxEvent.consume(a)}))}if(null!=b)for(c=0;c<b.length;c++){var f=document.createElement("div");f.style.marginTop=null!=d||0<c?"6px":"0px";f.appendChild(this.graph.createLinkForHint(b[c].getAttribute("href"),mxUtils.getTextContent(b[c])));this.linkHint.appendChild(f)}}};mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var K=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){K.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this, +function(){return this.state.view.graph.connectionHandler.isEnabled()});var a=mxUtils.bind(this,function(){null!=this.linkHint&&(this.linkHint.style.display=1==this.graph.getSelectionCount()?"":"none");null!=this.labelShape&&(this.labelShape.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none")});this.selectionHandler=mxUtils.bind(this,function(d,b){a()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.selectionHandler); +this.changeHandler=mxUtils.bind(this,function(d,b){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));a();this.redrawHandles()});this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var d=this.graph.getLinkForCell(this.state.cell),b=this.graph.getLinksForState(this.state);if(null!=d||null!=b&&0<b.length)this.updateLinkHint(d,b),this.redrawHandles()};var E=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){E.apply(this, +arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var C=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){C.apply(this);if(null!=this.state&&null!=this.linkHint){var a=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),d=new mxRectangle(this.state.x,this.state.y-22,this.state.width+24,this.state.height+22),b=mxUtils.getBoundingBox(d,this.state.style[mxConstants.STYLE_ROTATION]|| +"0",a),a=null!=b?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,d=null!=this.state.text?this.state.text.boundingBox:null;null==b&&(b=this.state);b=b.y+b.height;null!=d&&(b=Math.max(b,d.y+d.height));this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(b+this.verticalOffset/2+6+this.state.view.graph.tolerance)+"px"}};var M=mxVertexHandler.prototype.reset;mxVertexHandler.prototype.reset= +function(){M.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none")};var O=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){O.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.selectionHandler&&(this.graph.getSelectionModel().removeListener(this.selectionHandler),this.selectionHandler= +null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null);null!=this.editingHandler&&(this.graph.removeListener(this.editingHandler),this.editingHandler=null)};var V=mxEdgeHandler.prototype.redrawHandles;mxEdgeHandler.prototype.redrawHandles=function(){if(null!=this.marker&&(V.apply(this),null!=this.state&&null!=this.linkHint)){var a=this.state;null!=this.state.text&&null!=this.state.text.bounds&&(a=new mxRectangle(a.x,a.y,a.width,a.height), +a.add(this.state.text.bounds));this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(a.y+a.height+6+this.state.view.graph.tolerance)+"px"}};var T=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){T.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var W=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){W.apply(this,arguments);null!=this.linkHint&& +(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.selectionHandler&&(this.graph.getSelectionModel().removeListener(this.selectionHandler),this.selectionHandler=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null)}}();(function(){function a(){mxCylinder.call(this)}function b(){mxActor.call(this)}function e(){mxCylinder.call(this)}function c(){mxCylinder.call(this)}function k(){mxCylinder.call(this)}function m(){mxActor.call(this)}function q(){mxCylinder.call(this)}function r(){mxActor.call(this)}function v(){mxActor.call(this)}function z(){mxActor.call(this)}function d(){mxActor.call(this)}function f(){mxActor.call(this)}function l(){mxActor.call(this)}function n(){mxActor.call(this)}function g(a,d){this.canvas= +a;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.defaultVariation=d;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,g.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,g.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,g.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,g.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo; +this.canvas.curveTo=mxUtils.bind(this,g.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,g.prototype.arcTo)}function p(){mxRectangleShape.call(this)}function B(){mxRectangleShape.call(this)}function x(){mxActor.call(this)}function t(){mxActor.call(this)}function y(){mxActor.call(this)}function u(){mxRectangleShape.call(this)}function A(){mxRectangleShape.call(this)}function D(){mxCylinder.call(this)}function U(){mxShape.call(this)}function S(){mxShape.call(this)} +function N(){mxEllipse.call(this)}function K(){mxShape.call(this)}function E(){mxShape.call(this)}function C(){mxRectangleShape.call(this)}function M(){mxShape.call(this)}function O(){mxShape.call(this)}function V(){mxShape.call(this)}function T(){mxShape.call(this)}function W(){mxShape.call(this)}function J(){mxCylinder.call(this)}function X(){mxDoubleEllipse.call(this)}function la(){mxDoubleEllipse.call(this)}function fa(){mxArrowConnector.call(this);this.spacing=0}function Y(){mxArrowConnector.call(this); +this.spacing=0}function ca(){mxActor.call(this)}function H(){mxRectangleShape.call(this)}function I(){mxActor.call(this)}function aa(){mxActor.call(this)}function L(){mxActor.call(this)}function P(){mxActor.call(this)}function da(){mxActor.call(this)}function Z(){mxActor.call(this)}function G(){mxActor.call(this)}function ja(){mxActor.call(this)}function Q(){mxActor.call(this)}function ha(){mxActor.call(this)}function ka(){mxEllipse.call(this)}function ga(){mxEllipse.call(this)}function ba(){mxEllipse.call(this)} +function wa(){mxRhombus.call(this)}function ua(){mxEllipse.call(this)}function pa(){mxEllipse.call(this)}function ta(){mxEllipse.call(this)}function va(){mxEllipse.call(this)}function ma(){mxActor.call(this)}function ra(){mxActor.call(this)}function ia(){mxActor.call(this)}function ea(){mxConnector.call(this)}function sa(a,d,b,c,f,e,g,l,n,u){g+=n;var F=c.clone();c.x-=f*(2*g+n);c.y-=e*(2*g+n);f*=g+n;e*=g+n;return function(){a.ellipse(F.x-f-g,F.y-e-g,2*g,2*g);u?a.fillAndStroke():a.stroke()}}mxUtils.extend(a, +mxCylinder);a.prototype.size=20;a.prototype.darkOpacity=0;a.prototype.darkOpacity2=0;a.prototype.paintVertexShape=function(a,d,b,c,f){var e=Math.max(0,Math.min(c,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),F=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),g=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));a.translate(d,b);a.begin();a.moveTo(0,0);a.lineTo(c-e,0);a.lineTo(c, +e);a.lineTo(c,f);a.lineTo(e,f);a.lineTo(0,f-e);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=F&&(a.setFillAlpha(Math.abs(F)),a.setFillColor(0>F?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(c-e,0),a.lineTo(c,e),a.lineTo(e,e),a.close(),a.fill()),0!=g&&(a.setFillAlpha(Math.abs(g)),a.setFillColor(0>g?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(e,e),a.lineTo(e,f),a.lineTo(0,f-e),a.close(),a.fill()),a.begin(),a.moveTo(e,f),a.lineTo(e,e),a.lineTo(0, +0),a.moveTo(e,e),a.lineTo(c,e),a.end(),a.stroke())};a.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?(a=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(a,a,0,0)):null};mxCellRenderer.registerShape("cube",a);var xa=Math.tan(mxUtils.toRadians(30)),na=(.5-xa)/2;mxUtils.extend(b,mxActor);b.prototype.size=20;b.prototype.redrawPath=function(a,d,b,c,f){d=Math.min(c,f/xa);a.translate((c-d)/2,(f-d)/2+d/4);a.moveTo(0,.25*d);a.lineTo(.5* +d,d*na);a.lineTo(d,.25*d);a.lineTo(.5*d,(.5-na)*d);a.lineTo(0,.25*d);a.close();a.end()};mxCellRenderer.registerShape("isoRectangle",b);mxUtils.extend(e,mxCylinder);e.prototype.size=20;e.prototype.redrawPath=function(a,d,b,c,f,e){d=Math.min(c,f/(.5+xa));e?(a.moveTo(0,.25*d),a.lineTo(.5*d,(.5-na)*d),a.lineTo(d,.25*d),a.moveTo(.5*d,(.5-na)*d),a.lineTo(.5*d,(1-na)*d)):(a.translate((c-d)/2,(f-d)/2),a.moveTo(0,.25*d),a.lineTo(.5*d,d*na),a.lineTo(d,.25*d),a.lineTo(d,.75*d),a.lineTo(.5*d,(1-na)*d),a.lineTo(0, +.75*d),a.close());a.end()};mxCellRenderer.registerShape("isoCube",e);mxUtils.extend(c,mxCylinder);c.prototype.redrawPath=function(a,d,b,c,f,e){d=Math.min(f/2,Math.round(f/8)+this.strokewidth-1);if(e&&null!=this.fill||!e&&null==this.fill)a.moveTo(0,d),a.curveTo(0,2*d,c,2*d,c,d),e||(a.stroke(),a.begin()),a.translate(0,d/2),a.moveTo(0,d),a.curveTo(0,2*d,c,2*d,c,d),e||(a.stroke(),a.begin()),a.translate(0,d/2),a.moveTo(0,d),a.curveTo(0,2*d,c,2*d,c,d),e||(a.stroke(),a.begin()),a.translate(0,-d);e||(a.moveTo(0, +d),a.curveTo(0,-d/3,c,-d/3,c,d),a.lineTo(c,f-d),a.curveTo(c,f+d/3,0,f+d/3,0,f-d),a.close())};c.prototype.getLabelMargins=function(a){return new mxRectangle(0,2.5*Math.min(a.height/2,Math.round(a.height/8)+this.strokewidth-1)*this.scale,0,0)};mxCellRenderer.registerShape("datastore",c);mxUtils.extend(k,mxCylinder);k.prototype.size=30;k.prototype.darkOpacity=0;k.prototype.paintVertexShape=function(a,d,b,c,f){var e=Math.max(0,Math.min(c,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size))))), +F=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));a.translate(d,b);a.begin();a.moveTo(0,0);a.lineTo(c-e,0);a.lineTo(c,e);a.lineTo(c,f);a.lineTo(0,f);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=F&&(a.setFillAlpha(Math.abs(F)),a.setFillColor(0>F?"#FFFFFF":"#000000"),a.begin(),a.moveTo(c-e,0),a.lineTo(c-e,e),a.lineTo(c,e),a.close(),a.fill()),a.begin(),a.moveTo(c-e,0),a.lineTo(c-e,e),a.lineTo(c,e),a.end(),a.stroke())}; +mxCellRenderer.registerShape("note",k);mxUtils.extend(m,mxActor);m.prototype.redrawPath=function(a,d,b,c,f){a.moveTo(0,0);a.quadTo(c/2,.5*f,c,0);a.quadTo(.5*c,f/2,c,f);a.quadTo(c/2,.5*f,0,f);a.quadTo(.5*c,f/2,0,0);a.end()};mxCellRenderer.registerShape("switch",m);mxUtils.extend(q,mxCylinder);q.prototype.tabWidth=60;q.prototype.tabHeight=20;q.prototype.tabPosition="right";q.prototype.redrawPath=function(a,d,b,c,f,e){d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))); +b=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var F=mxUtils.getValue(this.style,"tabPosition",this.tabPosition);e?"left"==F?(a.moveTo(0,b),a.lineTo(d,b)):(a.moveTo(c-d,b),a.lineTo(c,b)):("left"==F?(a.moveTo(0,0),a.lineTo(d,0),a.lineTo(d,b),a.lineTo(c,b)):(a.moveTo(0,b),a.lineTo(c-d,b),a.lineTo(c-d,0),a.lineTo(c,0)),a.lineTo(c,f),a.lineTo(0,f),a.lineTo(0,b),a.close());a.end()};mxCellRenderer.registerShape("folder",q);mxUtils.extend(r,mxActor);r.prototype.size= +30;r.prototype.isRoundable=function(){return!0};r.prototype.redrawPath=function(a,d,b,c,f){d=Math.max(0,Math.min(c,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(d,0),new mxPoint(c,0),new mxPoint(c,f),new mxPoint(0,f),new mxPoint(0,d)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("card",r);mxUtils.extend(v,mxActor);v.prototype.size=.4;v.prototype.redrawPath= +function(a,d,b,c,f){d=f*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(0,d/2);a.quadTo(c/4,1.4*d,c/2,d/2);a.quadTo(3*c/4,d*(1-1.4),c,d/2);a.lineTo(c,f-d/2);a.quadTo(3*c/4,f-1.4*d,c/2,f-d/2);a.quadTo(c/4,f-d*(1-1.4),0,f-d/2);a.lineTo(0,d/2);a.close();a.end()};v.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"size",this.size),b=a.width,c=a.height;if(null==this.direction||this.direction== +mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)return d*=c,new mxRectangle(a.x,a.y+d,b,c-2*d);d*=b;return new mxRectangle(a.x+d,a.y,b-2*d,c)}return a};mxCellRenderer.registerShape("tape",v);mxUtils.extend(z,mxActor);z.prototype.size=.3;z.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*a.height):null};z.prototype.redrawPath=function(a,d,b,c,f){d=f*Math.max(0, +Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(0,0);a.lineTo(c,0);a.lineTo(c,f-d/2);a.quadTo(3*c/4,f-1.4*d,c/2,f-d/2);a.quadTo(c/4,f-d*(1-1.4),0,f-d/2);a.lineTo(0,d/2);a.close();a.end()};mxCellRenderer.registerShape("document",z);var Ia=mxCylinder.prototype.getCylinderSize;mxCylinder.prototype.getCylinderSize=function(a,d,b,c){var f=mxUtils.getValue(this.style,"size");return null!=f?c*Math.max(0,Math.min(1,f)):Ia.apply(this,arguments)};mxCylinder.prototype.getLabelMargins= +function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=2*mxUtils.getValue(this.style,"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,a.height*d),0,0)}return null};mxUtils.extend(d,mxActor);d.prototype.size=.2;d.prototype.isRoundable=function(){return!0};d.prototype.redrawPath=function(a,d,b,c,f){d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/ +2;this.addPoints(a,[new mxPoint(0,f),new mxPoint(d,0),new mxPoint(c,0),new mxPoint(c-d,f)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("parallelogram",d);mxUtils.extend(f,mxActor);f.prototype.size=.2;f.prototype.isRoundable=function(){return!0};f.prototype.redrawPath=function(a,d,b,c,f){d=c*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0, +f),new mxPoint(d,0),new mxPoint(c-d,0),new mxPoint(c,f)],this.isRounded,b,!0)};mxCellRenderer.registerShape("trapezoid",f);mxUtils.extend(l,mxActor);l.prototype.size=.5;l.prototype.redrawPath=function(a,d,b,c,f){a.setFillColor(null);d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(c,0),new mxPoint(d,0),new mxPoint(d,f/2),new mxPoint(0,f/2),new mxPoint(d, +f/2),new mxPoint(d,f),new mxPoint(c,f)],this.isRounded,b,!1);a.end()};mxCellRenderer.registerShape("curlyBracket",l);mxUtils.extend(n,mxActor);n.prototype.redrawPath=function(a,d,b,c,f){a.setStrokeWidth(1);a.setFillColor(this.stroke);d=c/5;a.rect(0,0,d,f);a.fillAndStroke();a.rect(2*d,0,d,f);a.fillAndStroke();a.rect(4*d,0,d,f);a.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",n);g.prototype.moveTo=function(a,d){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=a;this.lastY= +d;this.firstX=a;this.firstY=d};g.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,arguments));this.originalClose.apply(this.canvas,arguments)};g.prototype.quadTo=function(a,d,b,c){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=c};g.prototype.curveTo=function(a,d,b,c,f,e){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=f;this.lastY=e};g.prototype.arcTo=function(a,d,b,c, +f,e,g){this.originalArcTo.apply(this.canvas,arguments);this.lastX=e;this.lastY=g};g.prototype.lineTo=function(a,d){if(null!=this.lastX&&null!=this.lastY){var b=function(a){return"number"===typeof a?a?0>a?-1:1:a===a?0:NaN:NaN},c=Math.abs(a-this.lastX),f=Math.abs(d-this.lastY),e=Math.sqrt(c*c+f*f);if(2>e){this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=d;return}var g=Math.round(e/10),F=this.defaultVariation;5>g&&(g=5,F/=3);for(var l=b(a-this.lastX)*c/g,b=b(d-this.lastY)*f/g, +c=c/e,f=f/e,e=0;e<g;e++){var n=(Math.random()-.5)*F;this.originalLineTo.call(this.canvas,l*e+this.lastX-n*f,b*e+this.lastY-n*c)}this.originalLineTo.call(this.canvas,a,d)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=d};g.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo}; +var Ja=mxShape.prototype.paint;mxShape.prototype.defaultJiggle=1.5;mxShape.prototype.paint=function(a){null!=this.style&&"0"!=mxUtils.getValue(this.style,"comic","0")&&null==a.handHiggle&&(a.handJiggle=new g(a,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle)));Ja.apply(this,arguments);null!=a.handJiggle&&(a.handJiggle.destroy(),delete a.handJiggle)};mxRhombus.prototype.defaultJiggle=2;var Ka=mxRectangleShape.prototype.isHtmlAllowed;mxRectangleShape.prototype.isHtmlAllowed=function(){return(null== +this.style||"0"==mxUtils.getValue(this.style,"comic","0"))&&Ka.apply(this,arguments)};var La=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(a,d,b,c,f){if(null==a.handJiggle)La.apply(this,arguments);else{var e=!0;null!=this.style&&(e="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(e||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)e||null!=this.fill&&this.fill!=mxConstants.NONE|| +(a.pointerEvents=!1),a.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?e=Math.min(c/2,Math.min(f/2,mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2)):(e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,e=Math.min(c*e,f*e)),a.moveTo(d+e,b),a.lineTo(d+c-e,b),a.quadTo(d+c,b,d+c,b+e),a.lineTo(d+c,b+f-e),a.quadTo(d+c,b+f,d+c-e,b+f),a.lineTo(d+e,b+f),a.quadTo(d,b+f,d,b+f-e), +a.lineTo(d,b+e),a.quadTo(d,b,d+e,b)):(a.moveTo(d,b),a.lineTo(d+c,b),a.lineTo(d+c,b+f),a.lineTo(d,b+f),a.lineTo(d,b)),a.close(),a.end(),a.fillAndStroke()}};var Ma=mxRectangleShape.prototype.paintForeground;mxRectangleShape.prototype.paintForeground=function(a,d,b,c,f){null==a.handJiggle&&Ma.apply(this,arguments)};mxUtils.extend(p,mxRectangleShape);p.prototype.size=.1;p.prototype.isHtmlAllowed=function(){return!1};p.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL, +!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var d=a.width,b=a.height;a=new mxRectangle(a.x,a.y,d,b);var c=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,c=Math.max(c,Math.min(d*f,b*f));a.x+=Math.round(c);a.width-=Math.round(2*c)}return a};p.prototype.paintForeground= +function(a,d,b,c,f){var e=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,e=Math.max(e,Math.min(c*g,f*g));e=Math.round(e);a.begin();a.moveTo(d+e,b);a.lineTo(d+e,b+f);a.moveTo(d+c-e,b);a.lineTo(d+c-e,b+f);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("process",p);mxUtils.extend(B, +mxRectangleShape);B.prototype.paintBackground=function(a,d,b,c,f){a.setFillColor(mxConstants.NONE);a.rect(d,b,c,f);a.fill()};B.prototype.paintForeground=function(a,d,b,c,f){};mxCellRenderer.registerShape("transparent",B);mxUtils.extend(x,mxHexagon);x.prototype.size=30;x.prototype.position=.5;x.prototype.position2=.5;x.prototype.base=20;x.prototype.getLabelMargins=function(){return new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};x.prototype.isRoundable= +function(){return!0};x.prototype.redrawPath=function(a,d,b,c,f){d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;b=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var e=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),g=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2)))),l=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"base",this.base)))); +this.addPoints(a,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,f-b),new mxPoint(Math.min(c,e+l),f-b),new mxPoint(g,f),new mxPoint(Math.max(0,e),f-b),new mxPoint(0,f-b)],this.isRounded,d,!0,[4])};mxCellRenderer.registerShape("callout",x);mxUtils.extend(t,mxActor);t.prototype.size=.2;t.prototype.fixedSize=20;t.prototype.isRoundable=function(){return!0};t.prototype.redrawPath=function(a,d,b,c,f){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style, +"size",this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c-d,0),new mxPoint(c,f/2),new mxPoint(c-d,f),new mxPoint(0,f),new mxPoint(d,f/2)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("step",t);mxUtils.extend(y,mxHexagon);y.prototype.size=.25;y.prototype.isRoundable=function(){return!0};y.prototype.redrawPath= +function(a,d,b,c,f){d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(d,0),new mxPoint(c-d,0),new mxPoint(c,.5*f),new mxPoint(c-d,f),new mxPoint(d,f),new mxPoint(0,.5*f)],this.isRounded,b,!0)};mxCellRenderer.registerShape("hexagon",y);mxUtils.extend(u,mxRectangleShape);u.prototype.isHtmlAllowed=function(){return!1};u.prototype.paintForeground=function(a, +d,b,c,f){var e=Math.min(c/5,f/5)+1;a.begin();a.moveTo(d+c/2,b+e);a.lineTo(d+c/2,b+f-e);a.moveTo(d+e,b+f/2);a.lineTo(d+c-e,b+f/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",u);var Fa=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var d=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+ +d,a.y+d,a.width-2*d,a.height-2*d)}return a};mxRhombus.prototype.paintVertexShape=function(a,d,b,c,f){Fa.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var e=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);d+=e;b+=e;c-=2*e;f-=2*e;0<c&&0<f&&(a.setShadow(!1),Fa.apply(this,[a,d,b,c,f]))}};mxUtils.extend(A,mxRectangleShape);A.prototype.isHtmlAllowed=function(){return!1};A.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var d=(Math.max(2, +this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+d,a.y+d,a.width-2*d,a.height-2*d)}return a};A.prototype.paintForeground=function(a,d,b,c,f){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var e=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);d+=e;b+=e;c-=2*e;f-=2*e;0<c&&0<f&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var e=0,g;do{g=mxCellRenderer.defaultShapes[this.style["symbol"+ +e]];if(null!=g){var l=this.style["symbol"+e+"Align"],F=this.style["symbol"+e+"VerticalAlign"],n=this.style["symbol"+e+"Width"],u=this.style["symbol"+e+"Height"],p=this.style["symbol"+e+"Spacing"]||0,y=this.style["symbol"+e+"VSpacing"]||p,t=this.style["symbol"+e+"ArcSpacing"];null!=t&&(t*=this.getArcSize(c+this.strokewidth,f+this.strokewidth),p+=t,y+=t);var t=d,k=b,t=l==mxConstants.ALIGN_CENTER?t+(c-n)/2:l==mxConstants.ALIGN_RIGHT?t+(c-n-p):t+p,k=F==mxConstants.ALIGN_MIDDLE?k+(f-u)/2:F==mxConstants.ALIGN_BOTTOM? +k+(f-u-y):k+y;a.save();l=new g;l.style=this.style;g.prototype.paintVertexShape.call(l,a,t,k,n,u);a.restore()}e++}while(null!=g)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",A);mxUtils.extend(D,mxCylinder);D.prototype.redrawPath=function(a,d,b,c,f,e){e?(a.moveTo(0,0),a.lineTo(c/2,f/2),a.lineTo(c,0),a.end()):(a.moveTo(0,0),a.lineTo(c,0),a.lineTo(c,f),a.lineTo(0,f),a.close())};mxCellRenderer.registerShape("message",D);mxUtils.extend(U,mxShape); +U.prototype.paintBackground=function(a,d,b,c,f){a.translate(d,b);a.ellipse(c/4,0,c/2,f/4);a.fillAndStroke();a.begin();a.moveTo(c/2,f/4);a.lineTo(c/2,2*f/3);a.moveTo(c/2,f/3);a.lineTo(0,f/3);a.moveTo(c/2,f/3);a.lineTo(c,f/3);a.moveTo(c/2,2*f/3);a.lineTo(0,f);a.moveTo(c/2,2*f/3);a.lineTo(c,f);a.end();a.stroke()};mxCellRenderer.registerShape("umlActor",U);mxUtils.extend(S,mxShape);S.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};S.prototype.paintBackground=function(a, +d,b,c,f){a.translate(d,b);a.begin();a.moveTo(0,f/4);a.lineTo(0,3*f/4);a.end();a.stroke();a.begin();a.moveTo(0,f/2);a.lineTo(c/6,f/2);a.end();a.stroke();a.ellipse(c/6,0,5*c/6,f);a.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",S);mxUtils.extend(N,mxEllipse);N.prototype.paintVertexShape=function(a,d,b,c,f){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(d+c/8,b+f);a.lineTo(d+7*c/8,b+f);a.end();a.stroke()};mxCellRenderer.registerShape("umlEntity",N);mxUtils.extend(K, +mxShape);K.prototype.paintVertexShape=function(a,d,b,c,f){a.translate(d,b);a.begin();a.moveTo(c,0);a.lineTo(0,f);a.moveTo(0,0);a.lineTo(c,f);a.end();a.stroke()};mxCellRenderer.registerShape("umlDestroy",K);mxUtils.extend(E,mxShape);E.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+a.height/8,a.width,7*a.height/8)};E.prototype.paintBackground=function(a,d,b,c,f){a.translate(d,b);a.begin();a.moveTo(3*c/8,f/8*1.1);a.lineTo(5*c/8,0);a.end();a.stroke();a.ellipse(0,f/8,c,7*f/8);a.fillAndStroke()}; +E.prototype.paintForeground=function(a,d,b,c,f){a.begin();a.moveTo(3*c/8,f/8*1.1);a.lineTo(5*c/8,f/4);a.end();a.stroke()};mxCellRenderer.registerShape("umlControl",E);mxUtils.extend(C,mxRectangleShape);C.prototype.size=40;C.prototype.isHtmlAllowed=function(){return!1};C.prototype.getLabelBounds=function(a){var d=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(a.x,a.y,a.width,d)};C.prototype.paintBackground=function(a,d,b,c, +f){var e=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),g=mxUtils.getValue(this.style,"participant");null==g||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,a,d,b,c,e):(g=this.state.view.graph.cellRenderer.getShape(g),null!=g&&g!=C&&(g=new g,g.apply(this.state),a.save(),g.paintVertexShape(a,d,b,c,e),a.restore()));e<f&&(a.setDashed(!0),a.begin(),a.moveTo(d+c/2,b+e),a.lineTo(d+c/2,b+f),a.end(),a.stroke())};C.prototype.paintForeground=function(a, +d,b,c,f){var e=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,a,d,b,c,Math.min(f,e))};mxCellRenderer.registerShape("umlLifeline",C);mxUtils.extend(M,mxShape);M.prototype.width=60;M.prototype.height=30;M.prototype.corner=10;M.prototype.getLabelMargins=function(a){return new mxRectangle(0,0,a.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),a.height-parseFloat(mxUtils.getValue(this.style, +"height",this.height)*this.scale))};M.prototype.paintBackground=function(a,d,b,c,f){var e=this.corner,g=Math.min(c,Math.max(e,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),l=Math.min(f,Math.max(1.5*e,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),F=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);F!=mxConstants.NONE&&(a.setFillColor(F),a.rect(d,b,c,f),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!= +mxConstants.NONE?(this.getGradientBounds(a,d,b,c,f),a.setGradient(this.fill,this.gradient,d,b,c,f,this.gradientDirection)):a.setFillColor(this.fill);a.begin();a.moveTo(d,b);a.lineTo(d+g,b);a.lineTo(d+g,b+Math.max(0,l-1.5*e));a.lineTo(d+Math.max(0,g-e),b+l);a.lineTo(d,b+l);a.close();a.fillAndStroke();a.begin();a.moveTo(d+g,b);a.lineTo(d+c,b);a.lineTo(d+c,b+f);a.lineTo(d,b+f);a.lineTo(d,b+l);a.stroke()};mxCellRenderer.registerShape("umlFrame",M);mxPerimeter.LifelinePerimeter=function(a,d,b,c){c=C.prototype.size; +null!=d&&(c=mxUtils.getValue(d.style,"size",c)*d.view.scale);d=parseFloat(d.style[mxConstants.STYLE_STROKEWIDTH]||1)*d.view.scale/2-1;b.x<a.getCenterX()&&(d=-1*(d+1));return new mxPoint(a.getCenterX()+d,Math.min(a.y+a.height,Math.max(a.y+c,b.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(a,d,b,c){c=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",mxPerimeter.OrthogonalPerimeter); +mxPerimeter.BackbonePerimeter=function(a,d,b,c){c=parseFloat(d.style[mxConstants.STYLE_STROKEWIDTH]||1)*d.view.scale/2-1;null!=d.style.backboneSize&&(c+=parseFloat(d.style.backboneSize)*d.view.scale/2-1);if("south"==d.style[mxConstants.STYLE_DIRECTION]||"north"==d.style[mxConstants.STYLE_DIRECTION])return b.x<a.getCenterX()&&(c=-1*(c+1)),new mxPoint(a.getCenterX()+c,Math.min(a.y+a.height,Math.max(a.y,b.y)));b.y<a.getCenterY()&&(c=-1*(c+1));return new mxPoint(Math.min(a.x+a.width,Math.max(a.x,b.x)), +a.getCenterY()+c)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(a,d,b,c){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(a,new mxRectangle(0,0,0,Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(d.style,"size",x.prototype.size))*d.view.scale))),d.style),d,b,c)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(a,b,c,f){var e=d.prototype.size; +null!=b&&(e=mxUtils.getValue(b.style,"size",e));var g=a.x,l=a.y,F=a.width,n=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(e=n*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(g+F,l+e),new mxPoint(g+F,l+n),new mxPoint(g,l+n-e),new mxPoint(g,l)]):(e=F*Math.max(0,Math.min(1,e)),l=[new mxPoint(g+e,l),new mxPoint(g+F,l),new mxPoint(g+F-e,l+n),new mxPoint(g, +l+n),new mxPoint(g+e,l)]);n=a.getCenterX();a=a.getCenterY();a=new mxPoint(n,a);f&&(c.x<g||c.x>g+F?a.y=c.y:a.x=c.x);return mxUtils.getPerimeterPoint(l,a,c)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(a,d,b,c){var e=f.prototype.size;null!=d&&(e=mxUtils.getValue(d.style,"size",e));var g=a.x,l=a.y,F=a.width,n=a.height;d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST; +d==mxConstants.DIRECTION_EAST?(e=F*Math.max(0,Math.min(1,e)),l=[new mxPoint(g+e,l),new mxPoint(g+F-e,l),new mxPoint(g+F,l+n),new mxPoint(g,l+n),new mxPoint(g+e,l)]):d==mxConstants.DIRECTION_WEST?(e=F*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(g+F,l),new mxPoint(g+F-e,l+n),new mxPoint(g+e,l+n),new mxPoint(g,l)]):d==mxConstants.DIRECTION_NORTH?(e=n*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l+e),new mxPoint(g+F,l),new mxPoint(g+F,l+n),new mxPoint(g,l+n-e),new mxPoint(g,l+e)]):(e=n*Math.max(0, +Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(g+F,l+e),new mxPoint(g+F,l+n-e),new mxPoint(g,l+n),new mxPoint(g,l)]);n=a.getCenterX();a=a.getCenterY();a=new mxPoint(n,a);c&&(b.x<g||b.x>g+F?a.y=b.y:a.x=b.x);return mxUtils.getPerimeterPoint(l,a,b)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(a,d,b,c){var f="0"!=mxUtils.getValue(d.style,"fixedSize","0"),e=f?t.prototype.fixedSize:t.prototype.size;null!=d&&(e=mxUtils.getValue(d.style, +"size",e));var g=a.x,l=a.y,F=a.width,n=a.height,u=a.getCenterX();a=a.getCenterY();d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_EAST?(f=f?Math.max(0,Math.min(F,e)):F*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(g+F-f,l),new mxPoint(g+F,a),new mxPoint(g+F-f,l+n),new mxPoint(g,l+n),new mxPoint(g+f,a),new mxPoint(g,l)]):d==mxConstants.DIRECTION_WEST?(f=f?Math.max(0,Math.min(F,e)):F*Math.max(0, +Math.min(1,e)),l=[new mxPoint(g+f,l),new mxPoint(g+F,l),new mxPoint(g+F-f,a),new mxPoint(g+F,l+n),new mxPoint(g+f,l+n),new mxPoint(g,a),new mxPoint(g+f,l)]):d==mxConstants.DIRECTION_NORTH?(f=f?Math.max(0,Math.min(n,e)):n*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l+f),new mxPoint(u,l),new mxPoint(g+F,l+f),new mxPoint(g+F,l+n),new mxPoint(u,l+n-f),new mxPoint(g,l+n),new mxPoint(g,l+f)]):(f=f?Math.max(0,Math.min(n,e)):n*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(u,l+f),new mxPoint(g+ +F,l),new mxPoint(g+F,l+n-f),new mxPoint(u,l+n),new mxPoint(g,l+n-f),new mxPoint(g,l)]);u=new mxPoint(u,a);c&&(b.x<g||b.x>g+F?u.y=b.y:u.x=b.x);return mxUtils.getPerimeterPoint(l,u,b)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(a,d,b,c){var f=y.prototype.size;null!=d&&(f=mxUtils.getValue(d.style,"size",f));var e=a.x,g=a.y,l=a.width,F=a.height,n=a.getCenterX();a=a.getCenterY();d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION, +mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_NORTH||d==mxConstants.DIRECTION_SOUTH?(f=F*Math.max(0,Math.min(1,f)),g=[new mxPoint(n,g),new mxPoint(e+l,g+f),new mxPoint(e+l,g+F-f),new mxPoint(n,g+F),new mxPoint(e,g+F-f),new mxPoint(e,g+f),new mxPoint(n,g)]):(f=l*Math.max(0,Math.min(1,f)),g=[new mxPoint(e+f,g),new mxPoint(e+l-f,g),new mxPoint(e+l,a),new mxPoint(e+l-f,g+F),new mxPoint(e+f,g+F),new mxPoint(e,a),new mxPoint(e+f,g)]);n=new mxPoint(n,a);c&&(b.x<e||b.x>e+ +l?n.y=b.y:n.x=b.x);return mxUtils.getPerimeterPoint(g,n,b)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(O,mxShape);O.prototype.size=10;O.prototype.paintBackground=function(a,d,b,c,f){var e=parseFloat(mxUtils.getValue(this.style,"size",this.size));a.translate(d,b);a.ellipse((c-e)/2,0,e,e);a.fillAndStroke();a.begin();a.moveTo(c/2,e);a.lineTo(c/2,f);a.end();a.stroke()};mxCellRenderer.registerShape("lollipop",O);mxUtils.extend(V,mxShape);V.prototype.size= +10;V.prototype.inset=2;V.prototype.paintBackground=function(a,d,b,c,f){var e=parseFloat(mxUtils.getValue(this.style,"size",this.size)),g=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(d,b);a.begin();a.moveTo(c/2,e+g);a.lineTo(c/2,f);a.end();a.stroke();a.begin();a.moveTo((c-e)/2-g,e/2);a.quadTo((c-e)/2-g,e+g,c/2,e+g);a.quadTo((c+e)/2+g,e+g,(c+e)/2+g,e/2);a.end();a.stroke()};mxCellRenderer.registerShape("requires",V);mxUtils.extend(T,mxShape);T.prototype.paintBackground= +function(a,d,b,c,f){a.translate(d,b);a.begin();a.moveTo(0,0);a.quadTo(c,0,c,f/2);a.quadTo(c,f,0,f);a.end();a.stroke()};mxCellRenderer.registerShape("requiredInterface",T);mxUtils.extend(W,mxShape);W.prototype.inset=2;W.prototype.paintBackground=function(a,d,b,c,f){var e=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(d,b);a.ellipse(0,e,c-2*e,f-2*e);a.fillAndStroke();a.begin();a.moveTo(c/2,0);a.quadTo(c,0,c,f/2);a.quadTo(c,f,c/2,f);a.end();a.stroke()};mxCellRenderer.registerShape("providedRequiredInterface", +W);mxUtils.extend(J,mxCylinder);J.prototype.jettyWidth=32;J.prototype.jettyHeight=12;J.prototype.redrawPath=function(a,d,b,c,f,e){var g=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));d=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));b=g/2;var g=b+g/2,l=.3*f-d/2,n=.7*f-d/2;e?(a.moveTo(b,l),a.lineTo(g,l),a.lineTo(g,l+d),a.lineTo(b,l+d),a.moveTo(b,n),a.lineTo(g,n),a.lineTo(g,n+d),a.lineTo(b,n+d)):(a.moveTo(b,0),a.lineTo(c,0),a.lineTo(c,f),a.lineTo(b,f), +a.lineTo(b,n+d),a.lineTo(0,n+d),a.lineTo(0,n),a.lineTo(b,n),a.lineTo(b,l+d),a.lineTo(0,l+d),a.lineTo(0,l),a.lineTo(b,l),a.close());a.end()};mxCellRenderer.registerShape("component",J);mxUtils.extend(X,mxDoubleEllipse);X.prototype.outerStroke=!0;X.prototype.paintVertexShape=function(a,d,b,c,f){var e=Math.min(4,Math.min(c/5,f/5));0<c&&0<f&&(a.ellipse(d+e,b+e,c-2*e,f-2*e),a.fillAndStroke());a.setShadow(!1);this.outerStroke&&(a.ellipse(d,b,c,f),a.stroke())};mxCellRenderer.registerShape("endState",X); +mxUtils.extend(la,X);la.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",la);mxUtils.extend(fa,mxArrowConnector);fa.prototype.defaultWidth=4;fa.prototype.isOpenEnded=function(){return!0};fa.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};fa.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",fa);mxUtils.extend(Y,mxArrowConnector);Y.prototype.defaultWidth=10; +Y.prototype.defaultArrowWidth=20;Y.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};Y.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};Y.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",Y);mxUtils.extend(ca,mxActor); +ca.prototype.size=30;ca.prototype.isRoundable=function(){return!0};ca.prototype.redrawPath=function(a,d,b,c,f){d=Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size)));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,f),new mxPoint(0,d),new mxPoint(c,0),new mxPoint(c,f)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("manualInput",ca);mxUtils.extend(H,mxRectangleShape);H.prototype.dx=20;H.prototype.dy=20; +H.prototype.isHtmlAllowed=function(){return!1};H.prototype.paintForeground=function(a,d,b,c,f){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var e=0;if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,e=Math.max(e,Math.min(c*g,f*g));g=Math.max(e,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));e=Math.max(e,Math.min(f,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(d, +b+e);a.lineTo(d+c,b+e);a.end();a.stroke();a.begin();a.moveTo(d+g,b);a.lineTo(d+g,b+f);a.end();a.stroke()};mxCellRenderer.registerShape("internalStorage",H);mxUtils.extend(I,mxActor);I.prototype.dx=20;I.prototype.dy=20;I.prototype.redrawPath=function(a,d,b,c,f){d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));b=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var e=mxUtils.getValue(this.style, +mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,b),new mxPoint(d,b),new mxPoint(d,f),new mxPoint(0,f)],this.isRounded,e,!0);a.end()};mxCellRenderer.registerShape("corner",I);mxUtils.extend(aa,mxActor);aa.prototype.redrawPath=function(a,d,b,c,f){a.moveTo(0,0);a.lineTo(0,f);a.end();a.moveTo(c,0);a.lineTo(c,f);a.end();a.moveTo(0,f/2);a.lineTo(c,f/2);a.end()};mxCellRenderer.registerShape("crossbar",aa);mxUtils.extend(L,mxActor);L.prototype.dx= +20;L.prototype.dy=20;L.prototype.redrawPath=function(a,d,b,c,f){d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));b=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,b),new mxPoint((c+d)/2,b),new mxPoint((c+d)/2,f),new mxPoint((c-d)/ +2,f),new mxPoint((c-d)/2,b),new mxPoint(0,b)],this.isRounded,e,!0);a.end()};mxCellRenderer.registerShape("tee",L);mxUtils.extend(P,mxActor);P.prototype.arrowWidth=.3;P.prototype.arrowSize=.2;P.prototype.redrawPath=function(a,d,b,c,f){var e=f*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth))));d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));b=(f-e)/2;var e=b+e,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE, +mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,b),new mxPoint(c-d,b),new mxPoint(c-d,0),new mxPoint(c,f/2),new mxPoint(c-d,f),new mxPoint(c-d,e),new mxPoint(0,e)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("singleArrow",P);mxUtils.extend(da,mxActor);da.prototype.redrawPath=function(a,d,b,c,f){var e=f*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",P.prototype.arrowWidth))));d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize", +P.prototype.arrowSize))));b=(f-e)/2;var e=b+e,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,f/2),new mxPoint(d,0),new mxPoint(d,b),new mxPoint(c-d,b),new mxPoint(c-d,0),new mxPoint(c,f/2),new mxPoint(c-d,f),new mxPoint(c-d,e),new mxPoint(d,e),new mxPoint(d,f)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("doubleArrow",da);mxUtils.extend(Z,mxActor);Z.prototype.size=.1;Z.prototype.redrawPath=function(a,d,b,c,f){d=c* +Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(d,0);a.lineTo(c,0);a.quadTo(c-2*d,f/2,c,f);a.lineTo(d,f);a.quadTo(d-2*d,f/2,d,0);a.close();a.end()};mxCellRenderer.registerShape("dataStorage",Z);mxUtils.extend(G,mxActor);G.prototype.redrawPath=function(a,d,b,c,f){a.moveTo(0,0);a.quadTo(c,0,c,f/2);a.quadTo(c,f,0,f);a.close();a.end()};mxCellRenderer.registerShape("or",G);mxUtils.extend(ja,mxActor);ja.prototype.redrawPath=function(a,d,b,c,f){a.moveTo(0,0);a.quadTo(c, +0,c,f/2);a.quadTo(c,f,0,f);a.quadTo(c/2,f/2,0,0);a.close();a.end()};mxCellRenderer.registerShape("xor",ja);mxUtils.extend(Q,mxActor);Q.prototype.size=20;Q.prototype.isRoundable=function(){return!0};Q.prototype.redrawPath=function(a,d,b,c,f){d=Math.min(c/2,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(d,0),new mxPoint(c-d,0),new mxPoint(c,.8*d),new mxPoint(c,f), +new mxPoint(0,f),new mxPoint(0,.8*d)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("loopLimit",Q);mxUtils.extend(ha,mxActor);ha.prototype.size=.375;ha.prototype.isRoundable=function(){return!0};ha.prototype.redrawPath=function(a,d,b,c,f){d=f*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,f-d),new mxPoint(c/ +2,f),new mxPoint(0,f-d)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("offPageConnector",ha);mxUtils.extend(ka,mxEllipse);ka.prototype.paintVertexShape=function(a,d,b,c,f){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(d+c/2,b+f);a.lineTo(d+c,b+f);a.end();a.stroke()};mxCellRenderer.registerShape("tapeData",ka);mxUtils.extend(ga,mxEllipse);ga.prototype.paintVertexShape=function(a,d,b,c,f){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1); +a.begin();a.moveTo(d,b+f/2);a.lineTo(d+c,b+f/2);a.end();a.stroke();a.begin();a.moveTo(d+c/2,b);a.lineTo(d+c/2,b+f);a.end();a.stroke()};mxCellRenderer.registerShape("orEllipse",ga);mxUtils.extend(ba,mxEllipse);ba.prototype.paintVertexShape=function(a,d,b,c,f){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(d+.145*c,b+.145*f);a.lineTo(d+.855*c,b+.855*f);a.end();a.stroke();a.begin();a.moveTo(d+.855*c,b+.145*f);a.lineTo(d+.145*c,b+.855*f);a.end();a.stroke()}; +mxCellRenderer.registerShape("sumEllipse",ba);mxUtils.extend(wa,mxRhombus);wa.prototype.paintVertexShape=function(a,d,b,c,f){mxRhombus.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(d,b+f/2);a.lineTo(d+c,b+f/2);a.end();a.stroke()};mxCellRenderer.registerShape("sortShape",wa);mxUtils.extend(ua,mxEllipse);ua.prototype.paintVertexShape=function(a,d,b,c,f){a.begin();a.moveTo(d,b);a.lineTo(d+c,b);a.lineTo(d+c/2,b+f/2);a.close();a.fillAndStroke();a.begin();a.moveTo(d, +b+f);a.lineTo(d+c,b+f);a.lineTo(d+c/2,b+f/2);a.close();a.fillAndStroke()};mxCellRenderer.registerShape("collate",ua);mxUtils.extend(pa,mxEllipse);pa.prototype.paintVertexShape=function(a,d,b,c,f){var e=b+f-5;a.begin();a.moveTo(d,b);a.lineTo(d,b+f);a.moveTo(d,e);a.lineTo(d+10,e-5);a.moveTo(d,e);a.lineTo(d+10,e+5);a.moveTo(d,e);a.lineTo(d+c,e);a.moveTo(d+c,b);a.lineTo(d+c,b+f);a.moveTo(d+c,e);a.lineTo(d+c-10,e-5);a.moveTo(d+c,e);a.lineTo(d+c-10,e+5);a.end();a.stroke()};mxCellRenderer.registerShape("dimension", +pa);mxUtils.extend(ta,mxEllipse);ta.prototype.paintVertexShape=function(a,d,b,c,f){this.outline||a.setStrokeColor(null);mxRectangleShape.prototype.paintBackground.apply(this,arguments);null!=this.style&&(a.setStrokeColor(this.stroke),a.rect(d,b,c,f),a.fill(),a.begin(),a.moveTo(d,b),"1"==mxUtils.getValue(this.style,"top","1")?a.lineTo(d+c,b):a.moveTo(d+c,b),"1"==mxUtils.getValue(this.style,"right","1")?a.lineTo(d+c,b+f):a.moveTo(d+c,b+f),"1"==mxUtils.getValue(this.style,"bottom","1")?a.lineTo(d,b+ +f):a.moveTo(d,b+f),"1"==mxUtils.getValue(this.style,"left","1")&&a.lineTo(d,b-this.strokewidth/2),a.end(),a.stroke())};mxCellRenderer.registerShape("partialRectangle",ta);mxUtils.extend(va,mxEllipse);va.prototype.paintVertexShape=function(a,d,b,c,f){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();"vertical"==mxUtils.getValue(this.style,"line")?(a.moveTo(d+c/2,b),a.lineTo(d+c/2,b+f)):(a.moveTo(d,b+f/2),a.lineTo(d+c,b+f/2));a.end();a.stroke()};mxCellRenderer.registerShape("lineEllipse", +va);mxUtils.extend(ma,mxActor);ma.prototype.redrawPath=function(a,d,b,c,f){d=Math.min(c,f/2);a.moveTo(0,0);a.lineTo(c-d,0);a.quadTo(c,0,c,f/2);a.quadTo(c,f,c-d,f);a.lineTo(0,f);a.close();a.end()};mxCellRenderer.registerShape("delay",ma);mxUtils.extend(ra,mxActor);ra.prototype.size=.2;ra.prototype.redrawPath=function(a,d,b,c,f){d=Math.min(f,c);var e=Math.max(0,Math.min(d,d*parseFloat(mxUtils.getValue(this.style,"size",this.size))));d=(f-e)/2;b=d+e;var g=(c-e)/2,e=g+e;a.moveTo(0,d);a.lineTo(g,d);a.lineTo(g, +0);a.lineTo(e,0);a.lineTo(e,d);a.lineTo(c,d);a.lineTo(c,b);a.lineTo(e,b);a.lineTo(e,f);a.lineTo(g,f);a.lineTo(g,b);a.lineTo(0,b);a.close();a.end()};mxCellRenderer.registerShape("cross",ra);mxUtils.extend(ia,mxActor);ia.prototype.size=.25;ia.prototype.redrawPath=function(a,d,b,c,f){d=Math.min(c,f/2);b=Math.min(c-d,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*c);a.moveTo(0,f/2);a.lineTo(b,0);a.lineTo(c-d,0);a.quadTo(c,0,c,f/2);a.quadTo(c,f,c-d,f);a.lineTo(b,f);a.close();a.end()}; +mxCellRenderer.registerShape("display",ia);mxUtils.extend(ea,mxConnector);ea.prototype.origPaintEdgeShape=ea.prototype.paintEdgeShape;ea.prototype.paintEdgeShape=function(a,d,b){for(var c=[],f=0;f<d.length;f++)c.push(mxUtils.clone(d[f]));var f=a.state.dashed,e=a.state.fixDash;ea.prototype.origPaintEdgeShape.apply(this,[a,c,b]);3<=a.state.strokeWidth&&(c=mxUtils.getValue(this.style,"fillColor",null),null!=c&&(a.setStrokeColor(c),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(f,e),ea.prototype.origPaintEdgeShape.apply(this, +[a,d,b])))};mxCellRenderer.registerShape("filledEdge",ea);"undefined"!==typeof StyleFormatPanel&&function(){var a=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var d=this.format.getSelectionState(),b=a.apply(this,arguments);"umlFrame"==d.style.shape&&b.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});return b}}();mxMarker.addMarker("dash",function(a,d,b,c,f,e,g,l,n,u){var p=f*(g+n+1),y=e*(g+n+1);return function(){a.begin(); +a.moveTo(c.x-p/2-y/2,c.y-y/2+p/2);a.lineTo(c.x+y/2-3*p/2,c.y-3*y/2-p/2);a.stroke()}});mxMarker.addMarker("cross",function(a,d,b,c,f,e,g,l,n,u){var p=f*(g+n+1),y=e*(g+n+1);return function(){a.begin();a.moveTo(c.x-p/2-y/2,c.y-y/2+p/2);a.lineTo(c.x+y/2-3*p/2,c.y-3*y/2-p/2);a.moveTo(c.x-p/2+y/2,c.y-y/2-p/2);a.lineTo(c.x-y/2-3*p/2,c.y-3*y/2+p/2);a.stroke()}});mxMarker.addMarker("circle",sa);mxMarker.addMarker("circlePlus",function(a,d,b,c,f,e,g,l,n,u){var p=c.clone(),y=sa.apply(this,arguments),t=f*(g+ +2*n),k=e*(g+2*n);return function(){y.apply(this,arguments);a.begin();a.moveTo(p.x-f*n,p.y-e*n);a.lineTo(p.x-2*t+f*n,p.y-2*k+e*n);a.moveTo(p.x-t-k+e*n,p.y-k+t-f*n);a.lineTo(p.x+k-t-e*n,p.y-k-t+f*n);a.stroke()}});mxMarker.addMarker("async",function(a,d,b,c,f,e,g,l,n,p){d=f*n*1.118;b=e*n*1.118;f*=g+n;e*=g+n;var u=c.clone();u.x-=d;u.y-=b;c.x+=1*-f-d;c.y+=1*-e-b;return function(){a.begin();a.moveTo(u.x,u.y);l?a.lineTo(u.x-f-e/2,u.y-e+f/2):a.lineTo(u.x+e/2-f,u.y-e-f/2);a.lineTo(u.x-f,u.y-e);a.close();p? +a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync",function(a){a=null!=a?a:2;return function(d,b,c,f,e,g,l,n,u,p){e*=l+u;g*=l+u;var y=f.clone();return function(){d.begin();d.moveTo(y.x,y.y);n?d.lineTo(y.x-e-g/a,y.y-g+e/a):d.lineTo(y.x+g/a-e,y.y-g-e/a);d.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Ga=function(a,d,b){return ya(a,["width"],d,function(d,c,f,e,g){g=a.shape.getEdgeWidth()*a.view.scale+b;return new mxPoint(e.x+c*d/4+f*g/2,e.y+f*d/4-c*g/2)},function(d,c,f,e,g, +l){d=Math.sqrt(mxUtils.ptSegDistSq(e.x,e.y,g.x,g.y,l.x,l.y));a.style.width=Math.round(2*d)/a.view.scale-b})},ya=function(a,d,b,c,f){return R(a,d,function(d){var f=a.absolutePoints,e=f.length-1;d=a.view.translate;var g=a.view.scale,l=b?f[0]:f[e],f=b?f[1]:f[e-1],e=f.x-l.x,n=f.y-l.y,u=Math.sqrt(e*e+n*n),l=c.call(this,u,e/u,n/u,l,f);return new mxPoint(l.x/g-d.x,l.y/g-d.y)},function(d,c,e){var g=a.absolutePoints,l=g.length-1;d=a.view.translate;var n=a.view.scale,u=b?g[0]:g[l],g=b?g[1]:g[l-1],l=g.x-u.x, +p=g.y-u.y,y=Math.sqrt(l*l+p*p);c.x=(c.x+d.x)*n;c.y=(c.y+d.y)*n;f.call(this,y,l/y,p/y,u,g,c,e)})},oa=function(a){return function(d){return[R(d,["arrowWidth","arrowSize"],function(d){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",P.prototype.arrowWidth))),c=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",P.prototype.arrowSize)));return new mxPoint(d.x+(1-c)*d.width,d.y+(1-b)*d.height/2)},function(d,b){this.state.style.arrowWidth=Math.max(0,Math.min(1, +Math.abs(d.y+d.height/2-b.y)/d.height*2));this.state.style.arrowSize=Math.max(0,Math.min(a,(d.x+d.width-b.x)/d.width))})]}},Ea=function(a,d,b){return function(c){var f=[R(c,["size"],function(b){var c=Math.max(0,Math.min(b.width,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",d)))))*a;return new mxPoint(b.x+c,b.y+c)},function(d,b){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(d.width,b.x-d.x),Math.min(d.height,b.y-d.y)))/a)})];b&&mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED, +!1)&&f.push(qa(c));return f}},Aa=function(a,d,b,c,f){b=null!=b?b:1;return function(e){var g=[R(e,["size"],function(d){var b=null!=f?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,c=parseFloat(mxUtils.getValue(this.state.style,"size",b?f:a));return new mxPoint(d.x+Math.max(0,Math.min(d.width,c*(b?1:d.width))),d.getCenterY())},function(a,d,c){var g=null!=f?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null;a=g?d.x-a.x:Math.max(0,Math.min(b,(d.x-a.x)/a.width));g&&!mxEvent.isAltDown(c.getEvent())&& +(a=e.view.graph.snap(a));this.state.style.size=a},null,c)];d&&mxUtils.getValue(e.style,mxConstants.STYLE_ROUNDED,!1)&&g.push(qa(e));return g}},Ha=function(a){return function(d){var b=[R(d,["size"],function(d){var b=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.state.style,"size",f.prototype.size))));return new mxPoint(d.x+b*d.width*.75,d.y+d.height/4)},function(d,b){this.state.style.size=Math.max(0,Math.min(a,(b.x-d.x)/(.75*d.width)))},null,!0)];mxUtils.getValue(d.style,mxConstants.STYLE_ROUNDED, +!1)&&b.push(qa(d));return b}},za=function(){return function(a){var d=[];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(qa(a));return d}},qa=function(a,d){return R(a,[mxConstants.STYLE_ARCSIZE],function(b){var c=null!=d?d:b.height/8;if("1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var f=mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(b.x+b.width-Math.min(b.width/2,f),b.y+c)}f=Math.max(0,parseFloat(mxUtils.getValue(a.style, +mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(b.x+b.width-Math.min(Math.max(b.width/2,b.height/2),Math.min(b.width,b.height)*f),b.y+c)},function(d,b,c){"1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(d.width,2*(d.x+d.width-b.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(d.width-b.x+d.x)/Math.min(d.width,d.height))))})}, +R=function(a,d,b,c,f,e){var g=new mxHandle(a,null,mxVertexHandler.prototype.secondaryHandleImage);g.execute=function(){for(var a=0;a<d.length;a++)this.copyStyle(d[a])};g.getPosition=b;g.setPosition=c;g.ignoreGrid=null!=f?f:!0;if(e){var l=g.positionChanged;g.positionChanged=function(){l.apply(this,arguments);a.view.invalidate(this.state.cell);a.view.validate()}}return g},Ba={link:function(a){return[Ga(a,!0,10),Ga(a,!1,10)]},flexArrow:function(a){var d=a.view.graph.gridSize/a.view.scale,b=[];mxUtils.getValue(a.style, +mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(b.push(ya(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(d,b,c,f,e){d=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;e=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(f.x+b*(e+a.shape.strokewidth*a.view.scale)+c*d/2,f.y+c*(e+a.shape.strokewidth*a.view.scale)-b*d/2)},function(b,c,f,e,g,l,n){b=Math.sqrt(mxUtils.ptSegDistSq(e.x, +e.y,g.x,g.y,l.x,l.y));c=mxUtils.ptLineDist(e.x,e.y,e.x+f,e.y-c,l.x,l.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(c-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*b)/a.view.scale;mxEvent.isControlDown(n.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(n.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<d/6&&(a.style[mxConstants.STYLE_STARTSIZE]= +a.style[mxConstants.STYLE_ENDSIZE])})),b.push(ya(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(d,b,c,f,e){d=(a.shape.getStartArrowWidth()-a.shape.strokewidth)*a.view.scale;e=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(f.x+b*(e+a.shape.strokewidth*a.view.scale)+c*d/2,f.y+c*(e+a.shape.strokewidth*a.view.scale)-b*d/2)},function(b,c,f,e,g,l,n){b=Math.sqrt(mxUtils.ptSegDistSq(e.x,e.y,g.x, +g.y,l.x,l.y));c=mxUtils.ptLineDist(e.x,e.y,e.x+f,e.y-c,l.x,l.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(c-a.shape.strokewidth)/3)/100/a.view.scale;a.style.startWidth=Math.max(0,Math.round(2*b)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(n.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE],a.style.endWidth=a.style.startWidth);mxEvent.isAltDown(n.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))< +d/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(a.style.startWidth)-parseFloat(a.style.endWidth))<d&&(a.style.startWidth=a.style.endWidth))})));mxUtils.getValue(a.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(b.push(ya(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(d,b,c,f,e){d=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;e=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/ +5)*a.view.scale;return new mxPoint(f.x+b*(e+a.shape.strokewidth*a.view.scale)-c*d/2,f.y+c*(e+a.shape.strokewidth*a.view.scale)+b*d/2)},function(b,c,f,e,g,l,n){b=Math.sqrt(mxUtils.ptSegDistSq(e.x,e.y,g.x,g.y,l.x,l.y));c=mxUtils.ptLineDist(e.x,e.y,e.x+f,e.y-c,l.x,l.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(c-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*b)/a.view.scale;mxEvent.isControlDown(n.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]); +mxEvent.isAltDown(n.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<d/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE])})),b.push(ya(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(d,b,c,f,e){d=(a.shape.getEndArrowWidth()-a.shape.strokewidth)*a.view.scale;e=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(f.x+ +b*(e+a.shape.strokewidth*a.view.scale)-c*d/2,f.y+c*(e+a.shape.strokewidth*a.view.scale)+b*d/2)},function(b,c,f,e,g,l,n){b=Math.sqrt(mxUtils.ptSegDistSq(e.x,e.y,g.x,g.y,l.x,l.y));c=mxUtils.ptLineDist(e.x,e.y,e.x+f,e.y-c,l.x,l.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(c-a.shape.strokewidth)/3)/100/a.view.scale;a.style.endWidth=Math.max(0,Math.round(2*b)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(n.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE], +a.style.startWidth=a.style.endWidth);mxEvent.isAltDown(n.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<d/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(a.style.endWidth)-parseFloat(a.style.startWidth))<d&&(a.style.endWidth=a.style.startWidth))})));return b},swimlane:function(a){var d=[R(a,[mxConstants.STYLE_STARTSIZE],function(d){var b=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE, +mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(d.getCenterX(),d.y+Math.max(0,Math.min(d.height,b))):new mxPoint(d.x+Math.max(0,Math.min(d.width,b)),d.getCenterY())},function(d,b){a.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(d.height,b.y-d.y))):Math.round(Math.max(0,Math.min(d.width,b.x-d.x)))})];if(mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED)){var b= +parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));d.push(qa(a,b/2))}return d},label:za(),ext:za(),rectangle:za(),triangle:za(),rhombus:za(),umlLifeline:function(a){return[R(a,["size"],function(a){var d=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",C.prototype.size))));return new mxPoint(a.getCenterX(),a.y+d)},function(a,d){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,d.y-a.y)))},!1)]},umlFrame:function(a){return[R(a, +["width","height"],function(a){var d=Math.max(M.prototype.corner,Math.min(a.width,mxUtils.getValue(this.state.style,"width",M.prototype.width))),b=Math.max(1.5*M.prototype.corner,Math.min(a.height,mxUtils.getValue(this.state.style,"height",M.prototype.height)));return new mxPoint(a.x+d,a.y+b)},function(a,d){this.state.style.width=Math.round(Math.max(M.prototype.corner,Math.min(a.width,d.x-a.x)));this.state.style.height=Math.round(Math.max(1.5*M.prototype.corner,Math.min(a.height,d.y-a.y)))},!1)]}, +process:function(a){var d=[R(a,["size"],function(a){var d=Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.state.style,"size",p.prototype.size))));return new mxPoint(a.x+a.width*d,a.y+a.height/4)},function(a,d){this.state.style.size=Math.max(0,Math.min(.5,(d.x-a.x)/a.width))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(qa(a));return d},cross:function(a){return[R(a,["size"],function(a){var d=Math.min(a.width,a.height),d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style, +"size",ra.prototype.size)))*d/2;return new mxPoint(a.getCenterX()-d,a.getCenterY()-d)},function(a,d){var b=Math.min(a.width,a.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,a.getCenterY()-d.y)/b*2,Math.max(0,a.getCenterX()-d.x)/b*2)))})]},note:function(a){return[R(a,["size"],function(a){var d=Math.max(0,Math.min(a.width,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",k.prototype.size)))));return new mxPoint(a.x+a.width-d,a.y+d)},function(a,d){this.state.style.size= +Math.round(Math.max(0,Math.min(Math.min(a.width,a.x+a.width-d.x),Math.min(a.height,d.y-a.y))))})]},manualInput:function(a){var d=[R(a,["size"],function(a){var d=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",ca.prototype.size)));return new mxPoint(a.x+a.width/4,a.y+3*d/4)},function(a,d){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,4*(d.y-a.y)/3)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(qa(a));return d},dataStorage:function(a){return[R(a, +["size"],function(a){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",Z.prototype.size))));return new mxPoint(a.x+(1-d)*a.width,a.getCenterY())},function(a,d){this.state.style.size=Math.max(0,Math.min(1,(a.x+a.width-d.x)/a.width))})]},callout:function(a){var d=[R(a,["size","position"],function(a){var d=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",x.prototype.size))),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",x.prototype.position))); +mxUtils.getValue(this.state.style,"base",x.prototype.base);return new mxPoint(a.x+b*a.width,a.y+a.height-d)},function(a,d){mxUtils.getValue(this.state.style,"base",x.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(a.height,a.y+a.height-d.y)));this.state.style.position=Math.round(100*Math.max(0,Math.min(1,(d.x-a.x)/a.width)))/100}),R(a,["position2"],function(a){var d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",x.prototype.position2)));return new mxPoint(a.x+ +d*a.width,a.y+a.height)},function(a,d){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(d.x-a.x)/a.width)))/100}),R(a,["base"],function(a){var d=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",x.prototype.size))),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",x.prototype.position))),c=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"base",x.prototype.base)));return new mxPoint(a.x+Math.min(a.width,b*a.width+c),a.y+a.height- +d)},function(a,d){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",x.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(a.width,d.x-a.x-b*a.width)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(qa(a));return d},internalStorage:function(a){var d=[R(a,["dx","dy"],function(a){var d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",H.prototype.dx))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy", +H.prototype.dy)));return new mxPoint(a.x+d,a.y+b)},function(a,d){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,d.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,d.y-a.y)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(qa(a));return d},corner:function(a){return[R(a,["dx","dy"],function(a){var d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",I.prototype.dx))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy", +I.prototype.dy)));return new mxPoint(a.x+d,a.y+b)},function(a,d){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,d.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,d.y-a.y)))})]},tee:function(a){return[R(a,["dx","dy"],function(a){var d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",L.prototype.dx))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",L.prototype.dy)));return new mxPoint(a.x+(a.width+d)/2,a.y+b)},function(a,d){this.state.style.dx= +Math.round(Math.max(0,2*Math.min(a.width/2,d.x-a.x-a.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,d.y-a.y)))})]},singleArrow:oa(1),doubleArrow:oa(.5),folder:function(a){return[R(a,["tabWidth","tabHeight"],function(a){var d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"tabWidth",q.prototype.tabWidth))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"tabHeight",q.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",q.prototype.tabPosition)== +mxConstants.ALIGN_RIGHT&&(d=a.width-d);return new mxPoint(a.x+d,a.y+b)},function(a,d){var b=Math.max(0,Math.min(a.width,d.x-a.x));mxUtils.getValue(this.state.style,"tabPosition",q.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(b=a.width-b);this.state.style.tabWidth=Math.round(b);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(a.height,d.y-a.y)))})]},document:function(a){return[R(a,["size"],function(a){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",z.prototype.size)))); +return new mxPoint(a.x+3*a.width/4,a.y+(1-d)*a.height)},function(a,d){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-d.y)/a.height))})]},tape:function(a){return[R(a,["size"],function(a){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",v.prototype.size))));return new mxPoint(a.getCenterX(),a.y+d*a.height/2)},function(a,d){this.state.style.size=Math.max(0,Math.min(1,(d.y-a.y)/a.height*2))})]},offPageConnector:function(a){return[R(a,["size"],function(a){var d= +Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ha.prototype.size))));return new mxPoint(a.getCenterX(),a.y+(1-d)*a.height)},function(a,d){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-d.y)/a.height))})]},step:Aa(t.prototype.size,!0,null,!0,t.prototype.fixedSize),hexagon:Aa(y.prototype.size,!0,.5,!0),curlyBracket:Aa(l.prototype.size,!1),display:Aa(ia.prototype.size,!1),cube:Ea(1,a.prototype.size,!1),card:Ea(.5,r.prototype.size,!0),loopLimit:Ea(.5,Q.prototype.size, +!0),trapezoid:Ha(.5),parallelogram:Ha(1)};Graph.createHandle=R;Graph.handleFactory=Ba;mxVertexHandler.prototype.createCustomHandles=function(){if(1==this.state.view.graph.getSelectionCount()&&this.graph.isCellRotatable(this.state.cell)){var a=this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_RECTANGLE);a=Ba[a];null==a&&null!=this.state.shape&&this.state.shape.isRoundable()&&(a=Ba[mxConstants.SHAPE_RECTANGLE]);if(null!=a)return a(this.state)}return null}; +mxEdgeHandler.prototype.createCustomHandles=function(){if(1==this.state.view.graph.getSelectionCount()){var a=this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_CONNECTOR);a=Ba[a];if(null!=a)return a(this.state)}return null}}else Graph.createHandle=function(){},Graph.handleFactory={};var Ca=new mxPoint(1,0),Da=new mxPoint(1,0),oa=mxUtils.toRadians(-30),Ca=mxUtils.getRotatedPoint(Ca,Math.cos(oa),Math.sin(oa)),oa=mxUtils.toRadians(-150), +Da=mxUtils.getRotatedPoint(Da,Math.cos(oa),Math.sin(oa));mxEdgeStyle.IsometricConnector=function(a,d,b,c,f){var e=a.view;c=null!=c&&0<c.length?c[0]:null;var g=a.absolutePoints,l=g[0],g=g[g.length-1];null!=c&&(c=e.transformControlPoint(a,c));null==l&&null!=d&&(l=new mxPoint(d.getCenterX(),d.getCenterY()));null==g&&null!=b&&(g=new mxPoint(b.getCenterX(),b.getCenterY()));var n=Ca.x,u=Ca.y,p=Da.x,y=Da.y,t="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!=g&&null!=l){a=function(a,d, +b){a-=k.x;var c=d-k.y;d=(y*a-p*c)/(n*y-u*p);a=(u*a-n*c)/(u*p-n*y);t?(b&&(k=new mxPoint(k.x+n*d,k.y+u*d),f.push(k)),k=new mxPoint(k.x+p*a,k.y+y*a)):(b&&(k=new mxPoint(k.x+p*a,k.y+y*a),f.push(k)),k=new mxPoint(k.x+n*d,k.y+u*d));f.push(k)};var k=l;null==c&&(c=new mxPoint(l.x+(g.x-l.x)/2,l.y+(g.y-l.y)/2));a(c.x,c.y,!0);a(g.x,g.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var Na=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(a,d){if(d== +mxEdgeStyle.IsometricConnector){var b=new mxElbowEdgeHandler(a);b.snapToTerminals=!1;return b}return Na.apply(this,arguments)};b.prototype.constraints=[];e.prototype.getConstraints=function(a,d,b){a=[];var c=Math.tan(mxUtils.toRadians(30)),f=(.5-c)/2,c=Math.min(d,b/(.5+c));d=(d-c)/2;b=(b-c)/2;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b+.25*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+.5*c,b+c*f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+c, +b+.25*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+c,b+.75*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+.5*c,b+(1-f)*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b+.75*c));return a};x.prototype.getConstraints=function(a,d,b){a=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var c=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position", +this.position));var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2))));parseFloat(mxUtils.getValue(this.style,"base",this.base));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,d,.5*(b-c)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,b-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(b-c)));d>=2*c&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5, 0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)]; mxEllipse.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(0,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(1,.5))];mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;mxImageShape.prototype.constraints= -mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;u.prototype.constraints=mxRectangleShape.prototype.constraints;k.prototype.getConstraints=function(a,c,b){a=[];var d=Math.max(0,Math.min(c,Math.min(b,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c-d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0), -!1,null,c-d,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c-.5*d,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,.5*(b+d)));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c>=2*d&&a.push(new mxConnectionConstraint(new mxPoint(.5, -0),!1));return a};q.prototype.getConstraints=function(a,c,b){a=[];var d=Math.max(0,Math.min(c,Math.min(b,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c+d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,0,.5*(b+d)));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c>=2*d&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};a.prototype.getConstraints=function(a,c,b){a=[];var d=Math.max(0,Math.min(c,Math.min(b,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c-d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c-d,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c-.5*d,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,.5*(b+d)));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c+d),b));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,d,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,b-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,b-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(b-d)));return a};p.prototype.constraints=mxRectangleShape.prototype.constraints;H.prototype.constraints=mxRectangleShape.prototype.constraints;E.prototype.constraints=mxRectangleShape.prototype.constraints;fa.prototype.constraints=mxEllipse.prototype.constraints;aa.prototype.constraints= -mxEllipse.prototype.constraints;qa.prototype.constraints=mxEllipse.prototype.constraints;ka.prototype.constraints=mxEllipse.prototype.constraints;N.prototype.constraints=mxRectangleShape.prototype.constraints;ta.prototype.constraints=mxRectangleShape.prototype.constraints;ga.prototype.getConstraints=function(a,c,b){a=[];var d=Math.min(c,b/2),g=Math.min(c-d,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*c);a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,g,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(g+c-d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c-d,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c-d,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(g+c-d),b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,b));return a};Z.prototype.constraints=mxRectangleShape.prototype.constraints;ca.prototype.constraints= -mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1, -.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];Q.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,.1),!1),new mxConnectionConstraint(new mxPoint(0,1/3),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(1,1/3),!1),new mxConnectionConstraint(new mxPoint(1, -1),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1)];J.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25, -1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxActor.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.25,.2),!1),new mxConnectionConstraint(new mxPoint(.1,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.75,.25),!1),new mxConnectionConstraint(new mxPoint(.9,.5),!1),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25, -1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];n.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(.5,.25),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5,.75),!1),new mxConnectionConstraint(new mxPoint(1, -1),!1)];w.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.35),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.65),!1),new mxConnectionConstraint(new mxPoint(1,.35),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,.65),!1),new mxConnectionConstraint(new mxPoint(.25,1),!1),new mxConnectionConstraint(new mxPoint(.75,0),!1)];D.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0), -!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1, -.75),!0)];mxLine.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];O.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1)];mxDoubleEllipse.prototype.constraints=mxEllipse.prototype.constraints;mxRhombus.prototype.constraints=mxEllipse.prototype.constraints;mxTriangle.prototype.constraints= -[new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0)];mxHexagon.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.375,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.625,0),!0),new mxConnectionConstraint(new mxPoint(0, -.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.375,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.625,1),!0)];mxCloud.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.25),!1),new mxConnectionConstraint(new mxPoint(.4, -.1),!1),new mxConnectionConstraint(new mxPoint(.16,.55),!1),new mxConnectionConstraint(new mxPoint(.07,.4),!1),new mxConnectionConstraint(new mxPoint(.31,.8),!1),new mxConnectionConstraint(new mxPoint(.13,.77),!1),new mxConnectionConstraint(new mxPoint(.8,.8),!1),new mxConnectionConstraint(new mxPoint(.55,.95),!1),new mxConnectionConstraint(new mxPoint(.875,.5),!1),new mxConnectionConstraint(new mxPoint(.96,.7),!1),new mxConnectionConstraint(new mxPoint(.625,.2),!1),new mxConnectionConstraint(new mxPoint(.88, -.25),!1)];g.prototype.constraints=mxRectangleShape.prototype.constraints;h.prototype.constraints=mxRectangleShape.prototype.constraints;c.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25), -!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;P.prototype.getConstraints=function(a,c,b){a=[];var d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),g=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1, -0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,.5*g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*c+.25*d,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c+d),g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c+d),.5*(b+g)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c+d),b));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,.5*(c-d),b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c-d),.5*(b+g)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c-d),g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*c-.25*d,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*g));return a};U.prototype.getConstraints=function(a,c,b){a=[];var d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style, -"dx",this.dx)))),g=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,.5*g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c+d),g));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,d,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(b+g)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,b));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));return a};L.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0, -1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];R.prototype.getConstraints=function(a,c,b){a=[];var d=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),g=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style, -"arrowSize",this.arrowSize)))),d=(b-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c-g),d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c-g,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c-g,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c-g),b-d));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,0,b-d));return a};ja.prototype.getConstraints=function(a,c,b){a=[];var d=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",R.prototype.arrowWidth)))),g=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",R.prototype.arrowSize)))),d=(b-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,d));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,c-g,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c-g,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,b-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,b));return a};ia.prototype.getConstraints=function(a,c,b){a=[];var d=Math.min(b,c),g=Math.max(0,Math.min(d,d*parseFloat(mxUtils.getValue(this.style,"size",this.size)))),d=(b-g)/2,f=d+g,h=(c-g)/2,g=h+g;a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,h,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,0));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,b-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,b));a.push(new mxConnectionConstraint(new mxPoint(.5, -1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,b-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c+g),d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,d));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,f));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,.5*(c+g),f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*h,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*h,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,d));return a};B.prototype.constraints= -null;ea.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];X.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.175,.25),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.175, -.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];W.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];V.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)]})();function Actions(a){this.editorUi=a;this.actions={};this.init()} -Actions.prototype.init=function(){function a(a){d.escape();var b=d.getDeletableCells(d.getSelectionCells());if(null!=b&&0<b.length){var c=d.model.getParents(b);d.removeCells(b,a);if(null!=c){a=[];for(b=0;b<c.length;b++)d.model.contains(c[b])&&(d.model.isVertex(c[b])||d.model.isEdge(c[b]))&&a.push(c[b]);d.setSelectionCells(a)}}}var b=this.editorUi,f=b.editor,d=f.graph,k=function(){return Action.prototype.isEnabled.apply(this,arguments)&&d.isEnabled()};this.addAction("new...",function(){d.openLink(b.getUrl())}); -this.addAction("open...",function(){window.openNew=!0;window.openKey="open";b.openFile()});this.addAction("import...",function(){window.openNew=!1;window.openKey="import";window.openFile=new OpenFile(mxUtils.bind(this,function(){b.hideDialog()}));window.openFile.setConsumer(mxUtils.bind(this,function(a,b){try{var c=mxUtils.parseXml(a);f.graph.setSelectionCells(f.graph.importGraphModel(c.documentElement))}catch(g){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+g.message)}}));b.showDialog((new OpenDialog(this)).container, +mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;u.prototype.constraints=mxRectangleShape.prototype.constraints;k.prototype.getConstraints=function(a,d,b){a=[];var c=Math.max(0,Math.min(d,Math.min(b,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),0));a.push(new mxConnectionConstraint(new mxPoint(0,0), +!1,null,d-c,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*c,.5*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(b+c)));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));d>=2*c&&a.push(new mxConnectionConstraint(new mxPoint(.5, +0),!1));return a};r.prototype.getConstraints=function(a,d,b){a=[];var c=Math.max(0,Math.min(d,Math.min(b,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,.5*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,0,.5*(b+c)));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));d>=2*c&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};a.prototype.getConstraints=function(a,d,b){a=[];var c=Math.max(0,Math.min(d,Math.min(b,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-c,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*c,.5*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(b+c)));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),b));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,c,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,b-.5*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,b-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(b-c)));return a};q.prototype.getConstraints=function(a,d,b){a=[];var c=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))),f=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style, +"tabPosition",this.tabPosition)?(a.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,f)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),f))):(a.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*c,0)),a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,d-c,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-c,f)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),f)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.25*(b-f)+f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(b-f)+f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.75*(b-f)+f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1, +null,d,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(b-f)+f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(b-f)+f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.75*(b-f)+f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,b));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75, +1),!1));return a};H.prototype.constraints=mxRectangleShape.prototype.constraints;Z.prototype.constraints=mxRectangleShape.prototype.constraints;ka.prototype.constraints=mxEllipse.prototype.constraints;ga.prototype.constraints=mxEllipse.prototype.constraints;ba.prototype.constraints=mxEllipse.prototype.constraints;va.prototype.constraints=mxEllipse.prototype.constraints;ca.prototype.constraints=mxRectangleShape.prototype.constraints;ma.prototype.constraints=mxRectangleShape.prototype.constraints;ia.prototype.getConstraints= +function(a,d,b){a=[];var c=Math.min(d,b/2),f=Math.min(d-c,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*d);a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(f+d-c),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-c,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,d-c,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(f+d-c),b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,b));return a};Q.prototype.constraints=mxRectangleShape.prototype.constraints;ha.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0, +.3),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];U.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.1),!1),new mxConnectionConstraint(new mxPoint(.5, +0),!1),new mxConnectionConstraint(new mxPoint(.75,.1),!1),new mxConnectionConstraint(new mxPoint(0,1/3),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(1,1/3),!1),new mxConnectionConstraint(new mxPoint(1,1),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1)];J.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0, +.3),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxActor.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.25,.2),!1),new mxConnectionConstraint(new mxPoint(.1, +.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.75,.25),!1),new mxConnectionConstraint(new mxPoint(.9,.5),!1),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];m.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(.5,.25),!1),new mxConnectionConstraint(new mxPoint(1, +0),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5,.75),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];v.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.35),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.65),!1),new mxConnectionConstraint(new mxPoint(1,.35),!1),new mxConnectionConstraint(new mxPoint(1, +.5),!1),new mxConnectionConstraint(new mxPoint(1,.65),!1),new mxConnectionConstraint(new mxPoint(.25,1),!1),new mxConnectionConstraint(new mxPoint(.75,0),!1)];t.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(0, +.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxLine.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];O.prototype.constraints= +[new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1)];mxDoubleEllipse.prototype.constraints=mxEllipse.prototype.constraints;mxRhombus.prototype.constraints=mxEllipse.prototype.constraints;mxTriangle.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5, +1),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0)];mxHexagon.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.375,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.625,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1, +.75),!0),new mxConnectionConstraint(new mxPoint(.375,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.625,1),!0)];mxCloud.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.25),!1),new mxConnectionConstraint(new mxPoint(.4,.1),!1),new mxConnectionConstraint(new mxPoint(.16,.55),!1),new mxConnectionConstraint(new mxPoint(.07,.4),!1),new mxConnectionConstraint(new mxPoint(.31,.8),!1),new mxConnectionConstraint(new mxPoint(.13,.77),!1),new mxConnectionConstraint(new mxPoint(.8, +.8),!1),new mxConnectionConstraint(new mxPoint(.55,.95),!1),new mxConnectionConstraint(new mxPoint(.875,.5),!1),new mxConnectionConstraint(new mxPoint(.96,.7),!1),new mxConnectionConstraint(new mxPoint(.625,.2),!1),new mxConnectionConstraint(new mxPoint(.88,.25),!1)];d.prototype.constraints=mxRectangleShape.prototype.constraints;f.prototype.constraints=mxRectangleShape.prototype.constraints;z.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5, +0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;L.prototype.getConstraints=function(a,d,b){a=[];var c=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style, +"dx",this.dx)))),f=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*d+.25*c,f));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,.5*(d+c),f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),.5*(b+f)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),b));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),.5*(b+f)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),f));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,.25*d-.25*c,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*f));return a};I.prototype.getConstraints=function(a,d,b){a=[];var c=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),f=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1, +0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,.5*(b+f)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,b));a.push(new mxConnectionConstraint(new mxPoint(0, +.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));return a};aa.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1, +1),!1)];P.prototype.getConstraints=function(a,d,b){a=[];var c=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize)))),c=(b-c)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-f),c));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,d-f,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-f,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-f),b-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,b-c));return a};da.prototype.getConstraints=function(a,d,b){a=[];var c=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",P.prototype.arrowWidth)))),f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style, +"arrowSize",P.prototype.arrowSize)))),c=(b-c)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-f,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-f,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,b-c));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,f,b));return a};ra.prototype.getConstraints=function(a,d,b){a=[];var c=Math.min(b,d),f=Math.max(0,Math.min(c,c*parseFloat(mxUtils.getValue(this.style,"size",this.size)))),c=(b-f)/2,e=c+f,g=(d-f)/2,f=g+f;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,.5*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,0));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,0));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,f,.5*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,b-.5*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,b));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,b-.5*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,e));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,.5*(d+f),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+f),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));a.push(new mxConnectionConstraint(new mxPoint(0, +.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,c));return a};C.prototype.constraints=null;G.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7, +.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];ja.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.175,.25),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.175,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];T.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1, +.5),!1)];W.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)]})();function Actions(a){this.editorUi=a;this.actions={};this.init()} +Actions.prototype.init=function(){function a(a){c.escape();var b=c.getDeletableCells(c.getSelectionCells());if(null!=b&&0<b.length){var e=c.model.getParents(b);c.removeCells(b,a);if(null!=e){a=[];for(b=0;b<e.length;b++)c.model.contains(e[b])&&(c.model.isVertex(e[b])||c.model.isEdge(e[b]))&&a.push(e[b]);c.setSelectionCells(a)}}}var b=this.editorUi,e=b.editor,c=e.graph,k=function(){return Action.prototype.isEnabled.apply(this,arguments)&&c.isEnabled()};this.addAction("new...",function(){c.openLink(b.getUrl())}); +this.addAction("open...",function(){window.openNew=!0;window.openKey="open";b.openFile()});this.addAction("import...",function(){window.openNew=!1;window.openKey="import";window.openFile=new OpenFile(mxUtils.bind(this,function(){b.hideDialog()}));window.openFile.setConsumer(mxUtils.bind(this,function(a,b){try{var c=mxUtils.parseXml(a);e.graph.setSelectionCells(e.graph.importGraphModel(c.documentElement))}catch(d){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+d.message)}}));b.showDialog((new OpenDialog(this)).container, 320,220,!0,!0,function(){window.openFile=null})}).isEnabled=k;this.addAction("save",function(){b.saveFile(!1)},null,null,Editor.ctrlKey+"+S").isEnabled=k;this.addAction("saveAs...",function(){b.saveFile(!0)},null,null,Editor.ctrlKey+"+Shift+S").isEnabled=k;this.addAction("export...",function(){b.showDialog((new ExportDialog(b)).container,300,230,!0,!0)});this.addAction("editDiagram...",function(){var a=new EditDiagramDialog(b);b.showDialog(a.container,620,420,!0,!1);a.init()});this.addAction("pageSetup...", -function(){b.showDialog((new PageSetupDialog(b)).container,320,220,!0,!0)}).isEnabled=k;this.addAction("print...",function(){b.showDialog((new PrintDialog(b)).container,300,180,!0,!0)},null,"sprite-print",Editor.ctrlKey+"+P");this.addAction("preview",function(){mxUtils.show(d,null,10,10)});this.addAction("undo",function(){b.undo()},null,"sprite-undo",Editor.ctrlKey+"+Z");this.addAction("redo",function(){b.redo()},null,"sprite-redo",mxClient.IS_WIN?Editor.ctrlKey+"+Y":Editor.ctrlKey+"+Shift+Z");this.addAction("cut", -function(){mxClipboard.cut(d)},null,"sprite-cut",Editor.ctrlKey+"+X");this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())&&mxClipboard.paste(d)},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(a){if(d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())){d.getModel().beginUpdate();try{var b=mxClipboard.paste(d);if(null!=b){a=!0;for(var c=0;c<b.length&& -a;c++)a=a&&d.model.isEdge(b[c]);var g=d.view.translate,f=d.view.scale,l=g.x,t=g.y,g=null;if(1==b.length&&a){var m=d.getCellGeometry(b[0]);null!=m&&(g=m.getTerminalPoint(!0))}g=null!=g?g:d.getBoundingBoxFromGeometry(b,a);if(null!=g){var r=Math.round(d.snap(d.popupMenuHandler.triggerX/f-l)),k=Math.round(d.snap(d.popupMenuHandler.triggerY/f-t));d.cellsMoved(b,r-g.x,k-g.y)}}}finally{d.getModel().endUpdate()}}});this.addAction("copySize",function(a){a=d.getSelectionCell();d.isEnabled()&&null!=a&&d.getModel().isVertex(a)&& -(a=d.getCellGeometry(a),null!=a&&(b.copiedSize=new mxRectangle(a.x,a.y,a.width,a.height)))},null,null,"Alt+Shit+X");this.addAction("pasteSize",function(a){if(d.isEnabled()&&!d.isSelectionEmpty()&&null!=b.copiedSize){d.getModel().beginUpdate();try{var f=d.getSelectionCells();for(a=0;a<f.length;a++)if(d.getModel().isVertex(f[a])){var c=d.getCellGeometry(f[a]);null!=c&&(c=c.clone(),c.width=b.copiedSize.width,c.height=b.copiedSize.height,d.getModel().setGeometry(f[a],c))}}finally{d.getModel().endUpdate()}}}, -null,null,"Alt+Shit+V");this.addAction("delete",function(b){a(null!=b&&mxEvent.isShiftDown(b))},null,null,"Delete");this.addAction("deleteAll",function(){a(!0)},null,null,Editor.ctrlKey+"+Delete");this.addAction("duplicate",function(){d.setSelectionCells(d.duplicateCells())},null,null,Editor.ctrlKey+"+D");this.put("turn",new Action(mxResources.get("turn")+" / "+mxResources.get("reverse"),function(){d.turnShapes(d.getSelectionCells())},null,null,Editor.ctrlKey+"+R"));this.addAction("selectVertices", -function(){d.selectVertices()},null,null,Editor.ctrlKey+"+Shift+I");this.addAction("selectEdges",function(){d.selectEdges()},null,null,Editor.ctrlKey+"+Shift+E");this.addAction("selectAll",function(){d.selectAll(null,!0)},null,null,Editor.ctrlKey+"+A");this.addAction("selectNone",function(){d.clearSelection()},null,null,Editor.ctrlKey+"+Shift+A");this.addAction("lockUnlock",function(){if(!d.isSelectionEmpty()){d.getModel().beginUpdate();try{var a=d.isCellMovable(d.getSelectionCell())?1:0;d.toggleCellStyles(mxConstants.STYLE_MOVABLE, -a);d.toggleCellStyles(mxConstants.STYLE_RESIZABLE,a);d.toggleCellStyles(mxConstants.STYLE_ROTATABLE,a);d.toggleCellStyles(mxConstants.STYLE_DELETABLE,a);d.toggleCellStyles(mxConstants.STYLE_EDITABLE,a);d.toggleCellStyles("connectable",a)}finally{d.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+L");this.addAction("home",function(){d.home()},null,null,"Home");this.addAction("exitGroup",function(){d.exitGroup()},null,null,Editor.ctrlKey+"+Shift+Home");this.addAction("enterGroup",function(){d.enterGroup()}, -null,null,Editor.ctrlKey+"+Shift+End");this.addAction("collapse",function(){d.foldCells(!0)},null,null,Editor.ctrlKey+"+Home");this.addAction("expand",function(){d.foldCells(!1)},null,null,Editor.ctrlKey+"+End");this.addAction("toFront",function(){d.orderCells(!1)},null,null,Editor.ctrlKey+"+Shift+F");this.addAction("toBack",function(){d.orderCells(!0)},null,null,Editor.ctrlKey+"+Shift+B");this.addAction("group",function(){1==d.getSelectionCount()?d.setCellStyles("container","1"):d.setSelectionCell(d.groupCells(null, -0))},null,null,Editor.ctrlKey+"+G");this.addAction("ungroup",function(){1==d.getSelectionCount()&&0==d.getModel().getChildCount(d.getSelectionCell())?d.setCellStyles("container","0"):d.setSelectionCells(d.ungroupCells())},null,null,Editor.ctrlKey+"+Shift+U");this.addAction("removeFromGroup",function(){d.removeCellsFromParent()});this.addAction("edit",function(){d.isEnabled()&&d.startEditingAtCell()},null,null,"F2/Enter");this.addAction("editData...",function(){var a=d.getSelectionCell()||d.getModel().getRoot(); -b.showDataDialog(a)},null,null,Editor.ctrlKey+"+M");this.addAction("editTooltip...",function(){var a=b.editor.graph;if(a.isEnabled()&&!a.isSelectionEmpty()){var d=a.getSelectionCell(),c="";if(mxUtils.isNode(d.value)){var g=d.value.getAttribute("tooltip");null!=g&&(c=g)}c=new TextareaDialog(b,mxResources.get("editTooltip")+":",c,function(c){a.setTooltipForCell(d,c)});b.showDialog(c.container,320,200,!0,!0);c.init()}},null,null,"Alt+Shift+T");this.addAction("openLink",function(){var a=d.getLinkForCell(d.getSelectionCell()); -null!=a&&d.openLink(a)});this.addAction("editLink...",function(){var a=b.editor.graph;if(a.isEnabled()&&!a.isSelectionEmpty()){var d=a.getSelectionCell(),c=a.getLinkForCell(d)||"";b.showLinkDialog(c,mxResources.get("apply"),function(c){c=mxUtils.trim(c);a.setLinkForCell(d,0<c.length?c:null)})}},null,null,"Alt+Shift+L");this.put("insertImage",new Action(mxResources.get("image")+"...",function(){d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())&&(d.clearSelection(),b.actions.get("image").funct())})).isEnabled= -k;this.put("insertLink",new Action(mxResources.get("link")+"...",function(){d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())&&b.showLinkDialog("",mxResources.get("insert"),function(a,b){a=mxUtils.trim(a);if(0<a.length){var c=null,g=d.getLinkTitle(a);null!=b&&0<b.length&&(c=b[0].iconUrl,g=b[0].name||b[0].type,g=g.charAt(0).toUpperCase()+g.substring(1),30<g.length&&(g=g.substring(0,30)+"..."));var f=d.getFreeInsertPoint(),c=new mxCell(g,new mxGeometry(f.x,f.y,100,40),"fontColor=#0000EE;fontStyle=4;rounded=1;overflow=hidden;"+ -(null!=c?"shape=label;imageWidth=16;imageHeight=16;spacingLeft=26;align=left;image="+c:"spacing=10;"));c.vertex=!0;d.setLinkForCell(c,a);d.cellSizeUpdated(c,!0);d.getModel().beginUpdate();try{c=d.addCell(c),d.fireEvent(new mxEventObject("cellsInserted","cells",[c]))}finally{d.getModel().endUpdate()}d.setSelectionCell(c);d.scrollCellToVisible(d.getSelectionCell())}})})).isEnabled=k;this.addAction("link...",mxUtils.bind(this,function(){var a=b.editor.graph;if(a.isEnabled())if(a.cellEditor.isContentEditing()){var d= -a.getSelectedElement(),c=a.getParentByName(d,"A",a.cellEditor.textarea),g="";if(null==c&&null!=d&&null!=d.getElementsByTagName)for(var f=d.getElementsByTagName("a"),l=0;l<f.length&&null==c;l++)f[l].textContent==d.textContent&&(a.selectNode(f[l]),c=f[l]);null!=c&&"A"==c.nodeName&&(g=c.getAttribute("href")||"");var t=a.cellEditor.saveSelection();b.showLinkDialog(g,mxResources.get("apply"),mxUtils.bind(this,function(c){a.cellEditor.restoreSelection(t);null!=c&&a.insertLink(c)}))}else a.isSelectionEmpty()? -this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=k;this.addAction("autosize",function(){var a=d.getSelectionCells();if(null!=a){d.getModel().beginUpdate();try{for(var b=0;b<a.length;b++){var c=a[b];if(d.getModel().getChildCount(c))d.updateGroupBounds([c],20);else{var g=d.view.getState(c),f=d.getCellGeometry(c);d.getModel().isVertex(c)&&null!=g&&null!=g.text&&null!=f&&d.isWrapping(c)?(f=f.clone(),f.height=g.text.boundingBox.height/d.view.scale,d.getModel().setGeometry(c,f)): -d.updateCellSize(c)}}}finally{d.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+Y");this.addAction("formattedText",function(){var a=d.getView().getState(d.getSelectionCell());if(null!=a){var f="1";d.stopEditing();d.getModel().beginUpdate();try{if("1"==a.style.html){var f=null,c=d.convertValueToString(a.cell);"0"!=mxUtils.getValue(a.style,"nl2Br","1")&&(c=c.replace(/\n/g,"").replace(/<br\s*.?>/g,"\n"));var g=document.createElement("div");g.innerHTML=c;c=mxUtils.extractTextWithWhitespace(g.childNodes); -d.cellLabelChanged(a.cell,c)}else c=mxUtils.htmlEntities(d.convertValueToString(a.cell),!1),"0"!=mxUtils.getValue(a.style,"nl2Br","1")&&(c=c.replace(/\n/g,"<br/>")),d.cellLabelChanged(a.cell,d.sanitizeHtml(c));d.setCellStyles("html",f);b.fireEvent(new mxEventObject("styleChanged","keys",["html"],"values",[null!=f?f:"0"],"cells",d.getSelectionCells()))}finally{d.getModel().endUpdate()}}});this.addAction("wordWrap",function(){var a=d.getView().getState(d.getSelectionCell()),b="wrap";d.stopEditing(); -null!=a&&"wrap"==a.style[mxConstants.STYLE_WHITE_SPACE]&&(b=null);d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,b)});this.addAction("rotation",function(){var a="0",f=d.getView().getState(d.getSelectionCell());null!=f&&(a=f.style[mxConstants.STYLE_ROTATION]||a);a=new FilenameDialog(b,a,mxResources.get("apply"),function(a){null!=a&&0<a.length&&d.setCellStyles(mxConstants.STYLE_ROTATION,a)},mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)");b.showDialog(a.container,375,80,!0,!0); -a.init()});this.addAction("resetView",function(){d.zoomTo(1);b.resetScrollbars()},null,null,Editor.ctrlKey+"+H");this.addAction("zoomIn",function(a){d.zoomIn()},null,null,Editor.ctrlKey+" + (Numpad) / Alt+Mousewheel");this.addAction("zoomOut",function(a){d.zoomOut()},null,null,Editor.ctrlKey+" - (Numpad) / Alt+Mousewheel");this.addAction("fitWindow",function(){d.fit()},null,null,Editor.ctrlKey+"+Shift+H");this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct(); -var a=d.pageFormat,b=d.pageScale;d.zoomTo(Math.floor(20*Math.min((d.container.clientWidth-10)/a.width/b,(d.container.clientHeight-10)/a.height/b))/20);mxUtils.hasScrollbars(d.container)&&(a=d.getPagePadding(),d.container.scrollTop=a.y*d.view.scale-1,d.container.scrollLeft=Math.min(a.x*d.view.scale,(d.container.scrollWidth-d.container.clientWidth)/2)-1)}),null,null,Editor.ctrlKey+"+J");this.addAction("fitTwoPages",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var a=d.pageFormat, -b=d.pageScale;d.zoomTo(Math.floor(20*Math.min((d.container.clientWidth-10)/(2*a.width)/b,(d.container.clientHeight-10)/a.height/b))/20);mxUtils.hasScrollbars(d.container)&&(a=d.getPagePadding(),d.container.scrollTop=Math.min(a.y,(d.container.scrollHeight-d.container.clientHeight)/2),d.container.scrollLeft=Math.min(a.x,(d.container.scrollWidth-d.container.clientWidth)/2))}),null,null,Editor.ctrlKey+"+Shift+J");this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct(); -d.zoomTo(Math.floor(20*(d.container.clientWidth-10)/d.pageFormat.width/d.pageScale)/20);if(mxUtils.hasScrollbars(d.container)){var a=d.getPagePadding();d.container.scrollLeft=Math.min(a.x*d.view.scale,(d.container.scrollWidth-d.container.clientWidth)/2)}}));this.put("customZoom",new Action(mxResources.get("custom")+"...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.editorUi,parseInt(100*d.getView().getScale()),mxResources.get("apply"),mxUtils.bind(this,function(a){a=parseInt(a);!isNaN(a)&& -0<a&&d.zoomTo(a/100)}),mxResources.get("zoom")+" (%)");this.editorUi.showDialog(a.container,300,80,!0,!0);a.init()}),null,null,Editor.ctrlKey+"+0"));this.addAction("pageScale...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.editorUi,parseInt(100*d.pageScale),mxResources.get("apply"),mxUtils.bind(this,function(a){a=parseInt(a);!isNaN(a)&&0<a&&b.setPageScale(a/100)}),mxResources.get("pageScale")+" (%)");this.editorUi.showDialog(a.container,300,80,!0,!0);a.init()}));var n=null,n=this.addAction("grid", -function(){d.setGridEnabled(!d.isGridEnabled());b.fireEvent(new mxEventObject("gridEnabledChanged"))},null,null,Editor.ctrlKey+"+Shift+G");n.setToggleAction(!0);n.setSelectedCallback(function(){return d.isGridEnabled()});n.setEnabled(!1);n=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled;b.fireEvent(new mxEventObject("guidesEnabledChanged"))});n.setToggleAction(!0);n.setSelectedCallback(function(){return d.graphHandler.guidesEnabled});n.setEnabled(!1); -n=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())});n.setToggleAction(!0);n.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()});n=this.addAction("collapseExpand",function(){var a=new ChangePageSetup(b);a.ignoreColor=!0;a.ignoreImage=!0;a.foldingEnabled=!d.foldingEnabled;d.model.execute(a)});n.setToggleAction(!0);n.setSelectedCallback(function(){return d.foldingEnabled});n.isEnabled=k;n=this.addAction("scrollbars",function(){b.setScrollbars(!b.hasScrollbars())}); -n.setToggleAction(!0);n.setSelectedCallback(function(){return d.scrollbars});n=this.addAction("pageView",mxUtils.bind(this,function(){b.setPageVisible(!d.pageVisible)}));n.setToggleAction(!0);n.setSelectedCallback(function(){return d.pageVisible});n=this.addAction("connectionArrows",function(){d.connectionArrowsEnabled=!d.connectionArrowsEnabled;b.fireEvent(new mxEventObject("connectionArrowsChanged"))},null,null,"Alt+Shift+A");n.setToggleAction(!0);n.setSelectedCallback(function(){return d.connectionArrowsEnabled}); -n=this.addAction("connectionPoints",function(){d.setConnectable(!d.connectionHandler.isEnabled());b.fireEvent(new mxEventObject("connectionPointsChanged"))},null,null,"Alt+Shift+P");n.setToggleAction(!0);n.setSelectedCallback(function(){return d.connectionHandler.isEnabled()});n=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget());b.fireEvent(new mxEventObject("copyConnectChanged"))});n.setToggleAction(!0);n.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}); -n.isEnabled=k;n=this.addAction("autosave",function(){b.editor.setAutosave(!b.editor.autosave)});n.setToggleAction(!0);n.setSelectedCallback(function(){return b.editor.autosave});n.isEnabled=k;n.visible=!1;this.addAction("help",function(){var a="";mxResources.isLanguageSupported(mxClient.language)&&(a="_"+mxClient.language);d.openLink(RESOURCES_PATH+"/help"+a+".html")});var p=!1;this.put("about",new Action(mxResources.get("about")+" Graph Editor...",function(){p||(b.showDialog((new AboutDialog(b)).container, -320,280,!0,!0,function(){p=!1}),p=!0)},null,null,"F1"));n=mxUtils.bind(this,function(a,b,c,g){return this.addAction(a,function(){if(null!=c&&d.cellEditor.isContentEditing())c();else{d.stopEditing(!1);d.getModel().beginUpdate();try{d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,b),(b&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?d.updateLabelElements(d.getSelectionCells(),function(a){a.style.fontWeight=null;"B"==a.nodeName&&d.replaceElement(a)}):(b&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC? -d.updateLabelElements(d.getSelectionCells(),function(a){a.style.fontStyle=null;"I"==a.nodeName&&d.replaceElement(a)}):(b&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&d.updateLabelElements(d.getSelectionCells(),function(a){a.style.textDecoration=null;"U"==a.nodeName&&d.replaceElement(a)})}finally{d.getModel().endUpdate()}}},null,null,g)});n("bold",mxConstants.FONT_BOLD,function(){document.execCommand("bold",!1,null)},Editor.ctrlKey+"+B");n("italic",mxConstants.FONT_ITALIC,function(){document.execCommand("italic", -!1,null)},Editor.ctrlKey+"+I");n("underline",mxConstants.FONT_UNDERLINE,function(){document.execCommand("underline",!1,null)},Editor.ctrlKey+"+U");this.addAction("fontColor...",function(){b.menus.pickColor(mxConstants.STYLE_FONTCOLOR,"forecolor","000000")});this.addAction("strokeColor...",function(){b.menus.pickColor(mxConstants.STYLE_STROKECOLOR)});this.addAction("fillColor...",function(){b.menus.pickColor(mxConstants.STYLE_FILLCOLOR)});this.addAction("gradientColor...",function(){b.menus.pickColor(mxConstants.STYLE_GRADIENTCOLOR)}); -this.addAction("backgroundColor...",function(){b.menus.pickColor(mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,"backcolor")});this.addAction("borderColor...",function(){b.menus.pickColor(mxConstants.STYLE_LABEL_BORDERCOLOR)});this.addAction("vertical",function(){b.menus.toggleStyle(mxConstants.STYLE_HORIZONTAL,!0)});this.addAction("shadow",function(){b.menus.toggleStyle(mxConstants.STYLE_SHADOW)});this.addAction("solid",function(){d.getModel().beginUpdate();try{d.setCellStyles(mxConstants.STYLE_DASHED, -null),d.setCellStyles(mxConstants.STYLE_DASH_PATTERN,null),b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",[null,null],"cells",d.getSelectionCells()))}finally{d.getModel().endUpdate()}});this.addAction("dashed",function(){d.getModel().beginUpdate();try{d.setCellStyles(mxConstants.STYLE_DASHED,"1"),d.setCellStyles(mxConstants.STYLE_DASH_PATTERN,null),b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED, -mxConstants.STYLE_DASH_PATTERN],"values",["1",null],"cells",d.getSelectionCells()))}finally{d.getModel().endUpdate()}});this.addAction("dotted",function(){d.getModel().beginUpdate();try{d.setCellStyles(mxConstants.STYLE_DASHED,"1"),d.setCellStyles(mxConstants.STYLE_DASH_PATTERN,"1 4"),b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",["1","1 4"],"cells",d.getSelectionCells()))}finally{d.getModel().endUpdate()}});this.addAction("sharp", -function(){d.getModel().beginUpdate();try{d.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),d.setCellStyles(mxConstants.STYLE_CURVED,"0"),b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","0"],"cells",d.getSelectionCells()))}finally{d.getModel().endUpdate()}});this.addAction("rounded",function(){d.getModel().beginUpdate();try{d.setCellStyles(mxConstants.STYLE_ROUNDED,"1"),d.setCellStyles(mxConstants.STYLE_CURVED,"0"),b.fireEvent(new mxEventObject("styleChanged", -"keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["1","0"],"cells",d.getSelectionCells()))}finally{d.getModel().endUpdate()}});this.addAction("toggleRounded",function(){if(!d.isSelectionEmpty()&&d.isEnabled()){d.getModel().beginUpdate();try{var a=d.getSelectionCells(),f=d.view.getState(a[0]),c=null!=f?f.style:d.getCellStyle(a[0]),g="1"==mxUtils.getValue(c,mxConstants.STYLE_ROUNDED,"0")?"0":"1";d.setCellStyles(mxConstants.STYLE_ROUNDED,g);d.setCellStyles(mxConstants.STYLE_CURVED, -null);b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",[g,"0"],"cells",d.getSelectionCells()))}finally{d.getModel().endUpdate()}}});this.addAction("curved",function(){d.getModel().beginUpdate();try{d.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),d.setCellStyles(mxConstants.STYLE_CURVED,"1"),b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","1"],"cells",d.getSelectionCells()))}finally{d.getModel().endUpdate()}}); -this.addAction("collapsible",function(){var a=d.view.getState(d.getSelectionCell()),f="1";null!=a&&null!=d.getFoldingImage(a)&&(f="0");d.setCellStyles("collapsible",f);b.fireEvent(new mxEventObject("styleChanged","keys",["collapsible"],"values",[f],"cells",d.getSelectionCells()))});this.addAction("editStyle...",mxUtils.bind(this,function(){var a=d.getSelectionCells();if(null!=a&&0<a.length){var b=d.getModel(),b=new TextareaDialog(this.editorUi,mxResources.get("editStyle")+":",b.getStyle(a[0])||"", -function(c){null!=c&&d.setCellStyle(mxUtils.trim(c),a)},null,null,400,220);this.editorUi.showDialog(b.container,420,300,!0,!0);b.init()}}),null,null,Editor.ctrlKey+"+E");this.addAction("setAsDefaultStyle",function(){d.isEnabled()&&!d.isSelectionEmpty()&&b.setDefaultStyle(d.getSelectionCell())},null,null,Editor.ctrlKey+"+Shift+D");this.addAction("clearDefaultStyle",function(){d.isEnabled()&&b.clearDefaultStyle()},null,null,Editor.ctrlKey+"+Shift+R");this.addAction("addWaypoint",function(){var a=d.getSelectionCell(); -if(null!=a&&d.getModel().isEdge(a)){var b=f.graph.selectionCellsHandler.getHandler(a);if(b instanceof mxEdgeHandler){for(var c=d.view.translate,g=d.view.scale,h=c.x,c=c.y,a=d.getModel().getParent(a),l=d.getCellGeometry(a);d.getModel().isVertex(a)&&null!=l;)h+=l.x,c+=l.y,a=d.getModel().getParent(a),l=d.getCellGeometry(a);h=Math.round(d.snap(d.popupMenuHandler.triggerX/g-h));g=Math.round(d.snap(d.popupMenuHandler.triggerY/g-c));b.addPointAt(b.state,h,g)}}});this.addAction("removeWaypoint",function(){var a= -b.actions.get("removeWaypoint");null!=a.handler&&a.handler.removePoint(a.handler.state,a.index)});this.addAction("clearWaypoints",function(){var a=d.getSelectionCells();if(null!=a){a=d.addAllEdges(a);d.getModel().beginUpdate();try{for(var b=0;b<a.length;b++){var c=a[b];if(d.getModel().isEdge(c)){var g=d.getCellGeometry(c);null!=g&&(g=g.clone(),g.points=null,d.getModel().setGeometry(c,g))}}}finally{d.getModel().endUpdate()}}},null,null,"Alt+Shift+C");n=this.addAction("subscript",mxUtils.bind(this, -function(){d.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");n=this.addAction("superscript",mxUtils.bind(this,function(){d.cellEditor.isContentEditing()&&document.execCommand("superscript",!1,null)}),null,null,Editor.ctrlKey+"+.");this.addAction("image...",function(){if(d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())){var a=mxResources.get("image")+" ("+mxResources.get("url")+"):",f=d.getView().getState(d.getSelectionCell()),c="";null!= -f&&(c=f.style[mxConstants.STYLE_IMAGE]||c);var g=d.cellEditor.saveSelection();b.showImageDialog(a,c,function(a,c,b){if(d.cellEditor.isContentEditing())d.cellEditor.restoreSelection(g),d.insertImage(a,c,b);else{var f=d.getSelectionCells();if(null!=a&&(0<a.length||0<f.length)){var h=null;d.getModel().beginUpdate();try{if(0==f.length){var l=d.getFreeInsertPoint(),h=f=[d.insertVertex(d.getDefaultParent(),null,"",l.x,l.y,c,b,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")]; -d.fireEvent(new mxEventObject("cellsInserted","cells",h))}d.setCellStyles(mxConstants.STYLE_IMAGE,0<a.length?a:null,f);var t=d.view.getState(f[0]),k=null!=t?t.style:d.getCellStyle(f[0]);"image"!=k[mxConstants.STYLE_SHAPE]&&"label"!=k[mxConstants.STYLE_SHAPE]?d.setCellStyles(mxConstants.STYLE_SHAPE,"image",f):0==a.length&&d.setCellStyles(mxConstants.STYLE_SHAPE,null,f);if(1==d.getSelectionCount()&&null!=c&&null!=b){var y=f[0],u=d.getModel().getGeometry(y);null!=u&&(u=u.clone(),u.width=c,u.height=b, -d.getModel().setGeometry(y,u))}}finally{d.getModel().endUpdate()}null!=h&&(d.setSelectionCells(h),d.scrollCellToVisible(h[0]))}}},d.cellEditor.isContentEditing(),!d.cellEditor.isContentEditing())}}).isEnabled=k;n=this.addAction("layers",mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(b,document.body.offsetWidth-280,120,220,180),this.layersWindow.window.addListener("show",function(){b.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.addListener("hide", -function(){b.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.setVisible(!0),b.fireEvent(new mxEventObject("layers"))):this.layersWindow.window.setVisible(!this.layersWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+L");n.setToggleAction(!0);n.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.layersWindow&&this.layersWindow.window.isVisible()}));n=this.addAction("formatPanel",mxUtils.bind(this,function(){b.toggleFormatPanel()}),null,null,Editor.ctrlKey+ -"+Shift+P");n.setToggleAction(!0);n.setSelectedCallback(mxUtils.bind(this,function(){return 0<b.formatWidth}));n=this.addAction("outline",mxUtils.bind(this,function(){null==this.outlineWindow?(this.outlineWindow=new OutlineWindow(b,document.body.offsetWidth-260,100,180,180),this.outlineWindow.window.addListener("show",function(){b.fireEvent(new mxEventObject("outline"))}),this.outlineWindow.window.addListener("hide",function(){b.fireEvent(new mxEventObject("outline"))}),this.outlineWindow.window.setVisible(!0), -b.fireEvent(new mxEventObject("outline"))):this.outlineWindow.window.setVisible(!this.outlineWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+O");n.setToggleAction(!0);n.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.outlineWindow&&this.outlineWindow.window.isVisible()}))}; -Actions.prototype.addAction=function(a,b,f,d,k){var n;"..."==a.substring(a.length-3)?(a=a.substring(0,a.length-3),n=mxResources.get(a)+"..."):n=mxResources.get(a);return this.put(a,new Action(n,b,f,d,k))};Actions.prototype.put=function(a,b){return this.actions[a]=b};Actions.prototype.get=function(a){return this.actions[a]};function Action(a,b,f,d,k){mxEventSource.call(this);this.label=a;this.funct=this.createFunction(b);this.enabled=null!=f?f:!0;this.iconCls=d;this.shortcut=k;this.visible=!0} -mxUtils.extend(Action,mxEventSource);Action.prototype.createFunction=function(a){return a};Action.prototype.setEnabled=function(a){this.enabled!=a&&(this.enabled=a,this.fireEvent(new mxEventObject("stateChanged")))};Action.prototype.isEnabled=function(){return this.enabled};Action.prototype.setToggleAction=function(a){this.toggleAction=a};Action.prototype.setSelectedCallback=function(a){this.selectedCallback=a};Action.prototype.isSelected=function(){return this.selectedCallback()};DrawioFile=function(a,b){mxEventSource.call(this);this.ui=a;this.shadowData=this.data=b||"";this.stats={joined:0,merged:0,lastMerge:0,lastMergeTime:0,lastOpenTime:0,emptyPrefix:!1,shadowState:0,opened:0,closed:0,destroyed:0,fileMerged:0,fileSaved:0,reload:0,checksumErrors:0,bytesSent:0,bytesReceived:0,msgSent:0,msgReceived:0,cacheHits:0,cacheMiss:0,cacheFail:0,conflicts:0,timeouts:0}};DrawioFile.SYNC=urlParams.sync||"auto";DrawioFile.LAST_WRITE_WINS=!0;mxUtils.extend(DrawioFile,mxEventSource); -DrawioFile.prototype.allChangesSavedKey="allChangesSaved";DrawioFile.prototype.autosaveDelay=1500;DrawioFile.prototype.maxAutosaveDelay=3E4;DrawioFile.prototype.autosaveThread=null;DrawioFile.prototype.lastAutosave=null;DrawioFile.prototype.modified=!1;DrawioFile.prototype.data=null;DrawioFile.prototype.shadowData=null;DrawioFile.prototype.shadowPages=null;DrawioFile.prototype.changeListenerEnabled=!0;DrawioFile.prototype.lastAutosaveRevision=null;DrawioFile.prototype.maxAutosaveRevisionDelay=18E5; -DrawioFile.prototype.inConflictState=!1;DrawioFile.prototype.invalidChecksum=!1;DrawioFile.prototype.reportEnabled=!0;DrawioFile.prototype.getSize=function(){return null!=this.data?this.data.length:0};DrawioFile.prototype.synchronizeFile=function(a,b){this.savingFile?null!=b&&b({message:mxResources.get("busy")}):null!=this.sync?this.sync.fileChanged(a,b):this.updateFile(a,b)}; -DrawioFile.prototype.updateFile=function(a,b,f,d){null!=f&&f()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=b&&b(e):this.getLatestVersion(mxUtils.bind(this,function(k){try{null!=f&&f()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=b&&b(e):null!=k?this.mergeFile(k,a,b,d):this.reloadFile(a,b))}catch(n){null!=b&&b(n)}}),b))}; -DrawioFile.prototype.mergeFile=function(a,b,f,d){try{this.stats.fileMerged++;var k=null!=this.shadowPages?this.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.shadowData).documentElement),n=this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement);if(null!=n&&0<n.length){this.shadowPages=n;this.backupPatch=this.isModified()?this.ui.diffPages(k,this.ui.pages):null;var p=[this.ui.diffPages(null!=d?d:k,this.shadowPages)];if(this.ignorePatches(p))this.stats.shadowState=this.ui.hashValue(a.getCurrentEtag()); -else{var q=this.ui.patchPages(k,p[0]);this.stats.shadowState=this.ui.hashValue(a.getCurrentEtag());d={};var w=this.ui.getHashValueForPages(q,d),k={},c=this.ui.getHashValueForPages(this.shadowPages,k);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",p,"checksum",c==w,w);if(null!=w&&w!=c){var g=this.compressReportData(this.getAnonymizedXmlForPages(q));this.checksumError(f,p,(null!=d?"Details: "+JSON.stringify(d):"")+"\nChecksum: "+w+"\nCurrent: "+c+(null!= -k?"\nCurrent Details: "+JSON.stringify(k):"")+"\nPatched:\n"+g);return}this.patch(p,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(a.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=b&&b()}catch(h){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=f&&f(h);try{this.sendErrorReport("Error in mergeFile",null,h)}catch(l){}}}; -DrawioFile.prototype.getAnonymizedXmlForPages=function(a){var b=new mxCodec(mxUtils.createXmlDocument()),f=b.document.createElement("mxfile");if(null!=a)for(var d=0;d<a.length;d++){var k=b.encode(new mxGraphModel(a[d].root));"1"!=urlParams.dev&&(k=this.ui.anonymizeNode(k,!0));k.setAttribute("id",a[d].getId());a[d].viewState&&this.ui.editor.graph.saveViewState(a[d].viewState,k,!0);f.appendChild(k)}return mxUtils.getPrettyXml(f)}; -DrawioFile.prototype.compressReportData=function(a,b,f){null!=a&&a.length>(null!=b?b:1E4)&&(a=this.ui.editor.graph.compress(a)+"\n");null!=f&&null!=a&&a.length>f&&(a=a.substring(0,f)+"[...]");return a}; -DrawioFile.prototype.checksumError=function(a,b,f,d){this.stats.checksumErrors++;this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=this.sync&&this.sync.updateOnlineState();null!=a&&a();try{if(null!=b)for(a=0;a<b.length;a++)this.ui.anonymizePatch(b[a]);var k=Error(),n=mxUtils.bind(this,function(a){var d=this.compressReportData(JSON.stringify(b,null,2));a=null!=a?this.compressReportData(this.getAnonymizedXmlForPages(this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement)), -25E3):"n/a";this.sendErrorReport("Checksum Error",(null!=f?f:"")+"\n\nPatches:\n"+d+(null!=a?"\n\nMaster:\n"+a:""),k,7E4)});null==d?n(null):this.getLatestVersion(mxUtils.bind(this,function(a){null!=a&&a.getCurrentEtag()==d?n(a):n(null)}),function(){})}catch(p){}}; -DrawioFile.prototype.sendErrorReport=function(a,b,f,d){try{var k=this.compressReportData(this.getAnonymizedXmlForPages(this.shadowPages),25E3),n=this.getCurrentUser(),p=null!=n?this.ui.hashValue(n.id):"unknown",q=null!=this.sync?this.sync.clientId:"no sync";null!=this.stats.start&&(this.stats.uptime=Math.round(((new Date).getTime()-(new Date(this.stats.start)).getTime())/1E3));var w=this.getTitle(),c=w.lastIndexOf("."),n="xml";0<c&&(n=w.substring(c));var g=null!=f?f.stack:Error().stack;EditorUi.sendReport(a+ -" "+(new Date).toISOString()+":\n\nBrowser="+navigator.userAgent+"\nFile="+this.ui.hashValue(this.getId())+" ("+this.getMode()+")"+(this.isModified()?" modified":"")+"\nSize/Type="+this.getSize()+" ("+n+")\nUser="+p+" ("+q+")\nPlugins="+(null!=mxSettings.settings?mxSettings.getPlugins():"null")+"\nSync="+DrawioFile.SYNC+(null!=f?"\nError="+f:"")+"\n\nStats:\n"+JSON.stringify(this.stats,null,2)+(null!=b?"\n\n"+b:"")+"\n\nShadow:\n"+k+"\n\nStack:\n"+g,d)}catch(h){}}; -DrawioFile.prototype.reloadFile=function(a,b){try{this.ui.spinner.stop();var f=mxUtils.bind(this,function(){this.stats.reload++;this.reportEnabled=!1;var b=this.ui.editor.graph.getViewState(),f=this.ui.editor.graph.getSelectionCells(),n=this.ui.currentPage;this.ui.loadFile(this.getHash(),!0,null,mxUtils.bind(this,function(){if(null==this.ui.fileLoadedError){this.ui.restoreViewState(n,b,f);null!=this.backupPatch&&this.patch([this.backupPatch]);var d=this.ui.getCurrentFile();null!=d&&(d.stats=this.stats); -null!=a&&a()}}),!0)});this.isModified()&&null==this.backupPatch?this.ui.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){this.handleFileSuccess("manual"==DrawioFile.SYNC)}),f,mxResources.get("cancel"),mxResources.get("discardChanges")):f()}catch(d){null!=b&&b(d)}};DrawioFile.prototype.copyFile=function(a,b){this.ui.editor.editAsNew(this.ui.getFileData(!0),this.ui.getCopyFilename(this))}; -DrawioFile.prototype.ignorePatches=function(a){for(var b=!0,f=0;f<a.length&&b;f++)b=b&&0==Object.keys(a[f]).length;return b}; -DrawioFile.prototype.patch=function(a,b){var f=this.ui.editor.undoManager,d=f.history.slice(),k=f.indexOfNextAdd,n=this.ui.editor.graph;n.container.style.visibility="hidden";var p=this.changeListenerEnabled;this.changeListenerEnabled=!1;var q=n.foldingEnabled,w=n.mathEnabled,c=n.cellRenderer.redraw;n.cellRenderer.redraw=function(a){a.view.graph.isEditing(a.cell)&&(a.view.graph.scrollCellToVisible(a.cell),a.view.graph.cellEditor.resize());c.apply(this,arguments)};n.model.beginUpdate();try{for(var g= -0;g<a.length;g++)this.ui.pages=this.ui.patchPages(this.ui.pages,a[g],!0,b,this.isModified());0==this.ui.pages.length&&this.ui.pages.push(this.ui.createPage());0>mxUtils.indexOf(this.ui.pages,this.ui.currentPage)&&this.ui.selectPage(this.ui.pages[0],!0)}finally{n.model.endUpdate();n.container.style.visibility="";n.cellRenderer.redraw=c;this.changeListenerEnabled=p;f.history=d;f.indexOfNextAdd=k;f.fireEvent(new mxEventObject(mxEvent.CLEAR));if(null==this.ui.currentPage||this.ui.currentPage.needsUpdate)w!= -n.mathEnabled?(this.ui.editor.updateGraphComponents(),n.refresh()):(q!=n.foldingEnabled?n.view.revalidate():n.view.validate(),n.sizeDidChange()),null!=this.ui.format&&n.isSelectionEmpty()&&this.ui.format.refresh();this.ui.updateTabContainer()}}; -DrawioFile.prototype.save=function(a,b,f,d,k,n){if(this.isEditable())if(!k&&this.invalidChecksum)if(null!=f)f({message:mxResources.get("checksum")});else throw Error(mxResources.get("checksum"));else this.updateFileData(),this.clearAutosave();else if(null!=f)f({message:mxResources.get("readOnly")});else throw Error(mxResources.get("readOnly"));};DrawioFile.prototype.updateFileData=function(){this.setData(this.ui.getFileData(null,null,null,null,null,null,null,null,this))}; -DrawioFile.prototype.saveAs=function(a,b,f){};DrawioFile.prototype.saveFile=function(a,b,f,d){};DrawioFile.prototype.getPublicUrl=function(a){a(null)};DrawioFile.prototype.isRestricted=function(){return!1};DrawioFile.prototype.isModified=function(){return this.modified};DrawioFile.prototype.setModified=function(a){this.modified=a};DrawioFile.prototype.isAutosaveOptional=function(){return!1};DrawioFile.prototype.isAutosave=function(){return!this.inConflictState&&this.ui.editor.autosave}; -DrawioFile.prototype.isRenamable=function(){return!1};DrawioFile.prototype.rename=function(a,b,f){};DrawioFile.prototype.isMovable=function(){return!1};DrawioFile.prototype.move=function(a,b,f){};DrawioFile.prototype.getHash=function(){return""};DrawioFile.prototype.getId=function(){return""};DrawioFile.prototype.isEditable=function(){return!this.ui.editor.isChromelessView()||this.ui.editor.editable};DrawioFile.prototype.getUi=function(){return this.ui};DrawioFile.prototype.getTitle=function(){return""}; -DrawioFile.prototype.setData=function(a){this.data=a};DrawioFile.prototype.getData=function(){return this.data};DrawioFile.prototype.open=function(){this.stats.opened++;this.stats.lastOpenTime=(new Date).toISOString();var a=this.getData();null!=a?(this.ui.setFileData(a),this.isModified()||(this.shadowData=mxUtils.getXml(this.ui.getXmlFileData()),this.shadowPages=null)):this.sendErrorReport("Error in open","Data was null");this.installListeners();this.isSyncSupported()&&this.startSync()}; -DrawioFile.prototype.isSyncSupported=function(){return!1};DrawioFile.prototype.isRevisionHistorySupported=function(){return!1};DrawioFile.prototype.getRevisions=function(a,b){a(null)};DrawioFile.prototype.loadDescriptor=function(a,b){a(null)};DrawioFile.prototype.loadPatchDescriptor=function(a,b){this.loadDescriptor(mxUtils.bind(this,function(b){a(b)}),b)}; -DrawioFile.prototype.startSync=function(){"auto"!=DrawioFile.SYNC||"1"==urlParams.stealth||"1"!=urlParams.rt&&this.ui.editor.chromeless&&!this.ui.editor.editable||(null==this.sync&&(this.sync=new DrawioFileSync(this)),this.sync.start())};DrawioFile.prototype.isConflict=function(){return!1};DrawioFile.prototype.getChannelId=function(){return this.ui.editor.graph.compress(this.getHash()).replace(/[\/ +]/g,"_")};DrawioFile.prototype.getChannelKey=function(a){return null}; -DrawioFile.prototype.getCurrentUser=function(){return null};DrawioFile.prototype.getLatestVersion=function(a,b){a(null)};DrawioFile.prototype.getLastModifiedDate=function(){return new Date};DrawioFile.prototype.setCurrentEtag=function(a){this.setDescriptorEtag(this.getDescriptor(),a)};DrawioFile.prototype.getCurrentEtag=function(){return this.getDescriptorEtag(this.getDescriptor())};DrawioFile.prototype.getDescriptor=function(){return null};DrawioFile.prototype.setDescriptor=function(){}; -DrawioFile.prototype.setDescriptorEtag=function(a,b){};DrawioFile.prototype.getDescriptorEtag=function(a){return null};DrawioFile.prototype.getDescriptorSecret=function(a){return null}; -DrawioFile.prototype.installListeners=function(){null==this.changeListener&&(this.changeListener=mxUtils.bind(this,function(a,b){var f=null!=b?b.getProperty("edit"):null;!this.changeListenerEnabled||!this.isEditable()||null!=f&&f.ignoreEdit||this.fileChanged()}),this.ui.editor.graph.model.addListener(mxEvent.CHANGE,this.changeListener),this.ui.editor.graph.addListener("gridSizeChanged",this.changeListener),this.ui.editor.graph.addListener("shadowVisibleChanged",this.changeListener),this.ui.addListener("pageFormatChanged", +function(){b.showDialog((new PageSetupDialog(b)).container,320,220,!0,!0)}).isEnabled=k;this.addAction("print...",function(){b.showDialog((new PrintDialog(b)).container,300,180,!0,!0)},null,"sprite-print",Editor.ctrlKey+"+P");this.addAction("preview",function(){mxUtils.show(c,null,10,10)});this.addAction("undo",function(){b.undo()},null,"sprite-undo",Editor.ctrlKey+"+Z");this.addAction("redo",function(){b.redo()},null,"sprite-redo",mxClient.IS_WIN?Editor.ctrlKey+"+Y":Editor.ctrlKey+"+Shift+Z");this.addAction("cut", +function(){mxClipboard.cut(c)},null,"sprite-cut",Editor.ctrlKey+"+X");this.addAction("copy",function(){mxClipboard.copy(c)},null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){c.isEnabled()&&!c.isCellLocked(c.getDefaultParent())&&mxClipboard.paste(c)},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(a){if(c.isEnabled()&&!c.isCellLocked(c.getDefaultParent())){c.getModel().beginUpdate();try{var b=mxClipboard.paste(c);if(null!=b){a=!0;for(var e=0;e<b.length&& +a;e++)a=a&&c.model.isEdge(b[e]);var d=c.view.translate,f=c.view.scale,l=d.x,n=d.y,d=null;if(1==b.length&&a){var g=c.getCellGeometry(b[0]);null!=g&&(d=g.getTerminalPoint(!0))}d=null!=d?d:c.getBoundingBoxFromGeometry(b,a);if(null!=d){var p=Math.round(c.snap(c.popupMenuHandler.triggerX/f-l)),k=Math.round(c.snap(c.popupMenuHandler.triggerY/f-n));c.cellsMoved(b,p-d.x,k-d.y)}}}finally{c.getModel().endUpdate()}}});this.addAction("copySize",function(a){a=c.getSelectionCell();c.isEnabled()&&null!=a&&c.getModel().isVertex(a)&& +(a=c.getCellGeometry(a),null!=a&&(b.copiedSize=new mxRectangle(a.x,a.y,a.width,a.height)))},null,null,"Alt+Shit+X");this.addAction("pasteSize",function(a){if(c.isEnabled()&&!c.isSelectionEmpty()&&null!=b.copiedSize){c.getModel().beginUpdate();try{var e=c.getSelectionCells();for(a=0;a<e.length;a++)if(c.getModel().isVertex(e[a])){var k=c.getCellGeometry(e[a]);null!=k&&(k=k.clone(),k.width=b.copiedSize.width,k.height=b.copiedSize.height,c.getModel().setGeometry(e[a],k))}}finally{c.getModel().endUpdate()}}}, +null,null,"Alt+Shit+V");this.addAction("delete",function(b){a(null!=b&&mxEvent.isShiftDown(b))},null,null,"Delete");this.addAction("deleteAll",function(){a(!0)},null,null,Editor.ctrlKey+"+Delete");this.addAction("duplicate",function(){c.setSelectionCells(c.duplicateCells())},null,null,Editor.ctrlKey+"+D");this.put("turn",new Action(mxResources.get("turn")+" / "+mxResources.get("reverse"),function(){c.turnShapes(c.getSelectionCells())},null,null,Editor.ctrlKey+"+R"));this.addAction("selectVertices", +function(){c.selectVertices()},null,null,Editor.ctrlKey+"+Shift+I");this.addAction("selectEdges",function(){c.selectEdges()},null,null,Editor.ctrlKey+"+Shift+E");this.addAction("selectAll",function(){c.selectAll(null,!0)},null,null,Editor.ctrlKey+"+A");this.addAction("selectNone",function(){c.clearSelection()},null,null,Editor.ctrlKey+"+Shift+A");this.addAction("lockUnlock",function(){if(!c.isSelectionEmpty()){c.getModel().beginUpdate();try{var a=c.isCellMovable(c.getSelectionCell())?1:0;c.toggleCellStyles(mxConstants.STYLE_MOVABLE, +a);c.toggleCellStyles(mxConstants.STYLE_RESIZABLE,a);c.toggleCellStyles(mxConstants.STYLE_ROTATABLE,a);c.toggleCellStyles(mxConstants.STYLE_DELETABLE,a);c.toggleCellStyles(mxConstants.STYLE_EDITABLE,a);c.toggleCellStyles("connectable",a)}finally{c.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+L");this.addAction("home",function(){c.home()},null,null,"Home");this.addAction("exitGroup",function(){c.exitGroup()},null,null,Editor.ctrlKey+"+Shift+Home");this.addAction("enterGroup",function(){c.enterGroup()}, +null,null,Editor.ctrlKey+"+Shift+End");this.addAction("collapse",function(){c.foldCells(!0)},null,null,Editor.ctrlKey+"+Home");this.addAction("expand",function(){c.foldCells(!1)},null,null,Editor.ctrlKey+"+End");this.addAction("toFront",function(){c.orderCells(!1)},null,null,Editor.ctrlKey+"+Shift+F");this.addAction("toBack",function(){c.orderCells(!0)},null,null,Editor.ctrlKey+"+Shift+B");this.addAction("group",function(){1==c.getSelectionCount()?c.setCellStyles("container","1"):c.setSelectionCell(c.groupCells(null, +0))},null,null,Editor.ctrlKey+"+G");this.addAction("ungroup",function(){1==c.getSelectionCount()&&0==c.getModel().getChildCount(c.getSelectionCell())?c.setCellStyles("container","0"):c.setSelectionCells(c.ungroupCells())},null,null,Editor.ctrlKey+"+Shift+U");this.addAction("removeFromGroup",function(){c.removeCellsFromParent()});this.addAction("edit",function(){c.isEnabled()&&c.startEditingAtCell()},null,null,"F2/Enter");this.addAction("editData...",function(){var a=c.getSelectionCell()||c.getModel().getRoot(); +b.showDataDialog(a)},null,null,Editor.ctrlKey+"+M");this.addAction("editTooltip...",function(){var a=b.editor.graph;if(a.isEnabled()&&!a.isSelectionEmpty()){var c=a.getSelectionCell(),e="";if(mxUtils.isNode(c.value)){var d=c.value.getAttribute("tooltip");null!=d&&(e=d)}e=new TextareaDialog(b,mxResources.get("editTooltip")+":",e,function(d){a.setTooltipForCell(c,d)});b.showDialog(e.container,320,200,!0,!0);e.init()}},null,null,"Alt+Shift+T");this.addAction("openLink",function(){var a=c.getLinkForCell(c.getSelectionCell()); +null!=a&&c.openLink(a)});this.addAction("editLink...",function(){var a=b.editor.graph;if(a.isEnabled()&&!a.isSelectionEmpty()){var c=a.getSelectionCell(),e=a.getLinkForCell(c)||"";b.showLinkDialog(e,mxResources.get("apply"),function(d){d=mxUtils.trim(d);a.setLinkForCell(c,0<d.length?d:null)})}},null,null,"Alt+Shift+L");this.put("insertImage",new Action(mxResources.get("image")+"...",function(){c.isEnabled()&&!c.isCellLocked(c.getDefaultParent())&&(c.clearSelection(),b.actions.get("image").funct())})).isEnabled= +k;this.put("insertLink",new Action(mxResources.get("link")+"...",function(){c.isEnabled()&&!c.isCellLocked(c.getDefaultParent())&&b.showLinkDialog("",mxResources.get("insert"),function(a,b){a=mxUtils.trim(a);if(0<a.length){var e=null,d=c.getLinkTitle(a);null!=b&&0<b.length&&(e=b[0].iconUrl,d=b[0].name||b[0].type,d=d.charAt(0).toUpperCase()+d.substring(1),30<d.length&&(d=d.substring(0,30)+"..."));var f=c.getFreeInsertPoint(),e=new mxCell(d,new mxGeometry(f.x,f.y,100,40),"fontColor=#0000EE;fontStyle=4;rounded=1;overflow=hidden;"+ +(null!=e?"shape=label;imageWidth=16;imageHeight=16;spacingLeft=26;align=left;image="+e:"spacing=10;"));e.vertex=!0;c.setLinkForCell(e,a);c.cellSizeUpdated(e,!0);c.getModel().beginUpdate();try{e=c.addCell(e),c.fireEvent(new mxEventObject("cellsInserted","cells",[e]))}finally{c.getModel().endUpdate()}c.setSelectionCell(e);c.scrollCellToVisible(c.getSelectionCell())}})})).isEnabled=k;this.addAction("link...",mxUtils.bind(this,function(){var a=b.editor.graph;if(a.isEnabled())if(a.cellEditor.isContentEditing()){var c= +a.getSelectedElement(),e=a.getParentByName(c,"A",a.cellEditor.textarea),d="";if(null==e&&null!=c&&null!=c.getElementsByTagName)for(var f=c.getElementsByTagName("a"),l=0;l<f.length&&null==e;l++)f[l].textContent==c.textContent&&(e=f[l]);null!=e&&"A"==e.nodeName&&(d=e.getAttribute("href")||"",a.selectNode(e));var n=a.cellEditor.saveSelection();b.showLinkDialog(d,mxResources.get("apply"),mxUtils.bind(this,function(d){a.cellEditor.restoreSelection(n);null!=d&&a.insertLink(d)}))}else a.isSelectionEmpty()? +this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=k;this.addAction("autosize",function(){var a=c.getSelectionCells();if(null!=a){c.getModel().beginUpdate();try{for(var b=0;b<a.length;b++){var e=a[b];if(c.getModel().getChildCount(e))c.updateGroupBounds([e],20);else{var d=c.view.getState(e),f=c.getCellGeometry(e);c.getModel().isVertex(e)&&null!=d&&null!=d.text&&null!=f&&c.isWrapping(e)?(f=f.clone(),f.height=d.text.boundingBox.height/c.view.scale,c.getModel().setGeometry(e,f)): +c.updateCellSize(e)}}}finally{c.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+Y");this.addAction("formattedText",function(){var a=c.getView().getState(c.getSelectionCell());if(null!=a){var e="1";c.stopEditing();c.getModel().beginUpdate();try{if("1"==a.style.html){var e=null,k=c.convertValueToString(a.cell);"0"!=mxUtils.getValue(a.style,"nl2Br","1")&&(k=k.replace(/\n/g,"").replace(/<br\s*.?>/g,"\n"));var d=document.createElement("div");d.innerHTML=k;k=mxUtils.extractTextWithWhitespace(d.childNodes); +c.cellLabelChanged(a.cell,k)}else k=mxUtils.htmlEntities(c.convertValueToString(a.cell),!1),"0"!=mxUtils.getValue(a.style,"nl2Br","1")&&(k=k.replace(/\n/g,"<br/>")),c.cellLabelChanged(a.cell,c.sanitizeHtml(k));c.setCellStyles("html",e);b.fireEvent(new mxEventObject("styleChanged","keys",["html"],"values",[null!=e?e:"0"],"cells",c.getSelectionCells()))}finally{c.getModel().endUpdate()}}});this.addAction("wordWrap",function(){var a=c.getView().getState(c.getSelectionCell()),b="wrap";c.stopEditing(); +null!=a&&"wrap"==a.style[mxConstants.STYLE_WHITE_SPACE]&&(b=null);c.setCellStyles(mxConstants.STYLE_WHITE_SPACE,b)});this.addAction("rotation",function(){var a="0",e=c.getView().getState(c.getSelectionCell());null!=e&&(a=e.style[mxConstants.STYLE_ROTATION]||a);a=new FilenameDialog(b,a,mxResources.get("apply"),function(a){null!=a&&0<a.length&&c.setCellStyles(mxConstants.STYLE_ROTATION,a)},mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)");b.showDialog(a.container,375,80,!0,!0); +a.init()});this.addAction("resetView",function(){c.zoomTo(1);b.resetScrollbars()},null,null,Editor.ctrlKey+"+H");this.addAction("zoomIn",function(a){c.zoomIn()},null,null,Editor.ctrlKey+" + (Numpad) / Alt+Mousewheel");this.addAction("zoomOut",function(a){c.zoomOut()},null,null,Editor.ctrlKey+" - (Numpad) / Alt+Mousewheel");this.addAction("fitWindow",function(){c.fit()},null,null,Editor.ctrlKey+"+Shift+H");this.addAction("fitPage",mxUtils.bind(this,function(){c.pageVisible||this.get("pageView").funct(); +var a=c.pageFormat,b=c.pageScale;c.zoomTo(Math.floor(20*Math.min((c.container.clientWidth-10)/a.width/b,(c.container.clientHeight-10)/a.height/b))/20);mxUtils.hasScrollbars(c.container)&&(a=c.getPagePadding(),c.container.scrollTop=a.y*c.view.scale-1,c.container.scrollLeft=Math.min(a.x*c.view.scale,(c.container.scrollWidth-c.container.clientWidth)/2)-1)}),null,null,Editor.ctrlKey+"+J");this.addAction("fitTwoPages",mxUtils.bind(this,function(){c.pageVisible||this.get("pageView").funct();var a=c.pageFormat, +b=c.pageScale;c.zoomTo(Math.floor(20*Math.min((c.container.clientWidth-10)/(2*a.width)/b,(c.container.clientHeight-10)/a.height/b))/20);mxUtils.hasScrollbars(c.container)&&(a=c.getPagePadding(),c.container.scrollTop=Math.min(a.y,(c.container.scrollHeight-c.container.clientHeight)/2),c.container.scrollLeft=Math.min(a.x,(c.container.scrollWidth-c.container.clientWidth)/2))}),null,null,Editor.ctrlKey+"+Shift+J");this.addAction("fitPageWidth",mxUtils.bind(this,function(){c.pageVisible||this.get("pageView").funct(); +c.zoomTo(Math.floor(20*(c.container.clientWidth-10)/c.pageFormat.width/c.pageScale)/20);if(mxUtils.hasScrollbars(c.container)){var a=c.getPagePadding();c.container.scrollLeft=Math.min(a.x*c.view.scale,(c.container.scrollWidth-c.container.clientWidth)/2)}}));this.put("customZoom",new Action(mxResources.get("custom")+"...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.editorUi,parseInt(100*c.getView().getScale()),mxResources.get("apply"),mxUtils.bind(this,function(a){a=parseInt(a);!isNaN(a)&& +0<a&&c.zoomTo(a/100)}),mxResources.get("zoom")+" (%)");this.editorUi.showDialog(a.container,300,80,!0,!0);a.init()}),null,null,Editor.ctrlKey+"+0"));this.addAction("pageScale...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.editorUi,parseInt(100*c.pageScale),mxResources.get("apply"),mxUtils.bind(this,function(a){a=parseInt(a);!isNaN(a)&&0<a&&b.setPageScale(a/100)}),mxResources.get("pageScale")+" (%)");this.editorUi.showDialog(a.container,300,80,!0,!0);a.init()}));var m=null,m=this.addAction("grid", +function(){c.setGridEnabled(!c.isGridEnabled());b.fireEvent(new mxEventObject("gridEnabledChanged"))},null,null,Editor.ctrlKey+"+Shift+G");m.setToggleAction(!0);m.setSelectedCallback(function(){return c.isGridEnabled()});m.setEnabled(!1);m=this.addAction("guides",function(){c.graphHandler.guidesEnabled=!c.graphHandler.guidesEnabled;b.fireEvent(new mxEventObject("guidesEnabledChanged"))});m.setToggleAction(!0);m.setSelectedCallback(function(){return c.graphHandler.guidesEnabled});m.setEnabled(!1); +m=this.addAction("tooltips",function(){c.tooltipHandler.setEnabled(!c.tooltipHandler.isEnabled())});m.setToggleAction(!0);m.setSelectedCallback(function(){return c.tooltipHandler.isEnabled()});m=this.addAction("collapseExpand",function(){var a=new ChangePageSetup(b);a.ignoreColor=!0;a.ignoreImage=!0;a.foldingEnabled=!c.foldingEnabled;c.model.execute(a)});m.setToggleAction(!0);m.setSelectedCallback(function(){return c.foldingEnabled});m.isEnabled=k;m=this.addAction("scrollbars",function(){b.setScrollbars(!b.hasScrollbars())}); +m.setToggleAction(!0);m.setSelectedCallback(function(){return c.scrollbars});m=this.addAction("pageView",mxUtils.bind(this,function(){b.setPageVisible(!c.pageVisible)}));m.setToggleAction(!0);m.setSelectedCallback(function(){return c.pageVisible});m=this.addAction("connectionArrows",function(){c.connectionArrowsEnabled=!c.connectionArrowsEnabled;b.fireEvent(new mxEventObject("connectionArrowsChanged"))},null,null,"Alt+Shift+A");m.setToggleAction(!0);m.setSelectedCallback(function(){return c.connectionArrowsEnabled}); +m=this.addAction("connectionPoints",function(){c.setConnectable(!c.connectionHandler.isEnabled());b.fireEvent(new mxEventObject("connectionPointsChanged"))},null,null,"Alt+Shift+P");m.setToggleAction(!0);m.setSelectedCallback(function(){return c.connectionHandler.isEnabled()});m=this.addAction("copyConnect",function(){c.connectionHandler.setCreateTarget(!c.connectionHandler.isCreateTarget());b.fireEvent(new mxEventObject("copyConnectChanged"))});m.setToggleAction(!0);m.setSelectedCallback(function(){return c.connectionHandler.isCreateTarget()}); +m.isEnabled=k;m=this.addAction("autosave",function(){b.editor.setAutosave(!b.editor.autosave)});m.setToggleAction(!0);m.setSelectedCallback(function(){return b.editor.autosave});m.isEnabled=k;m.visible=!1;this.addAction("help",function(){var a="";mxResources.isLanguageSupported(mxClient.language)&&(a="_"+mxClient.language);c.openLink(RESOURCES_PATH+"/help"+a+".html")});var q=!1;this.put("about",new Action(mxResources.get("about")+" Graph Editor...",function(){q||(b.showDialog((new AboutDialog(b)).container, +320,280,!0,!0,function(){q=!1}),q=!0)},null,null,"F1"));m=mxUtils.bind(this,function(a,b,e,d){return this.addAction(a,function(){if(null!=e&&c.cellEditor.isContentEditing())e();else{c.stopEditing(!1);c.getModel().beginUpdate();try{c.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,b),(b&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?c.updateLabelElements(c.getSelectionCells(),function(a){a.style.fontWeight=null;"B"==a.nodeName&&c.replaceElement(a)}):(b&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC? +c.updateLabelElements(c.getSelectionCells(),function(a){a.style.fontStyle=null;"I"==a.nodeName&&c.replaceElement(a)}):(b&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&c.updateLabelElements(c.getSelectionCells(),function(a){a.style.textDecoration=null;"U"==a.nodeName&&c.replaceElement(a)})}finally{c.getModel().endUpdate()}}},null,null,d)});m("bold",mxConstants.FONT_BOLD,function(){document.execCommand("bold",!1,null)},Editor.ctrlKey+"+B");m("italic",mxConstants.FONT_ITALIC,function(){document.execCommand("italic", +!1,null)},Editor.ctrlKey+"+I");m("underline",mxConstants.FONT_UNDERLINE,function(){document.execCommand("underline",!1,null)},Editor.ctrlKey+"+U");this.addAction("fontColor...",function(){b.menus.pickColor(mxConstants.STYLE_FONTCOLOR,"forecolor","000000")});this.addAction("strokeColor...",function(){b.menus.pickColor(mxConstants.STYLE_STROKECOLOR)});this.addAction("fillColor...",function(){b.menus.pickColor(mxConstants.STYLE_FILLCOLOR)});this.addAction("gradientColor...",function(){b.menus.pickColor(mxConstants.STYLE_GRADIENTCOLOR)}); +this.addAction("backgroundColor...",function(){b.menus.pickColor(mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,"backcolor")});this.addAction("borderColor...",function(){b.menus.pickColor(mxConstants.STYLE_LABEL_BORDERCOLOR)});this.addAction("vertical",function(){b.menus.toggleStyle(mxConstants.STYLE_HORIZONTAL,!0)});this.addAction("shadow",function(){b.menus.toggleStyle(mxConstants.STYLE_SHADOW)});this.addAction("solid",function(){c.getModel().beginUpdate();try{c.setCellStyles(mxConstants.STYLE_DASHED, +null),c.setCellStyles(mxConstants.STYLE_DASH_PATTERN,null),b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",[null,null],"cells",c.getSelectionCells()))}finally{c.getModel().endUpdate()}});this.addAction("dashed",function(){c.getModel().beginUpdate();try{c.setCellStyles(mxConstants.STYLE_DASHED,"1"),c.setCellStyles(mxConstants.STYLE_DASH_PATTERN,null),b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED, +mxConstants.STYLE_DASH_PATTERN],"values",["1",null],"cells",c.getSelectionCells()))}finally{c.getModel().endUpdate()}});this.addAction("dotted",function(){c.getModel().beginUpdate();try{c.setCellStyles(mxConstants.STYLE_DASHED,"1"),c.setCellStyles(mxConstants.STYLE_DASH_PATTERN,"1 4"),b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",["1","1 4"],"cells",c.getSelectionCells()))}finally{c.getModel().endUpdate()}});this.addAction("sharp", +function(){c.getModel().beginUpdate();try{c.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),c.setCellStyles(mxConstants.STYLE_CURVED,"0"),b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","0"],"cells",c.getSelectionCells()))}finally{c.getModel().endUpdate()}});this.addAction("rounded",function(){c.getModel().beginUpdate();try{c.setCellStyles(mxConstants.STYLE_ROUNDED,"1"),c.setCellStyles(mxConstants.STYLE_CURVED,"0"),b.fireEvent(new mxEventObject("styleChanged", +"keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["1","0"],"cells",c.getSelectionCells()))}finally{c.getModel().endUpdate()}});this.addAction("toggleRounded",function(){if(!c.isSelectionEmpty()&&c.isEnabled()){c.getModel().beginUpdate();try{var a=c.getSelectionCells(),e=c.view.getState(a[0]),k=null!=e?e.style:c.getCellStyle(a[0]),d="1"==mxUtils.getValue(k,mxConstants.STYLE_ROUNDED,"0")?"0":"1";c.setCellStyles(mxConstants.STYLE_ROUNDED,d);c.setCellStyles(mxConstants.STYLE_CURVED, +null);b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",[d,"0"],"cells",c.getSelectionCells()))}finally{c.getModel().endUpdate()}}});this.addAction("curved",function(){c.getModel().beginUpdate();try{c.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),c.setCellStyles(mxConstants.STYLE_CURVED,"1"),b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","1"],"cells",c.getSelectionCells()))}finally{c.getModel().endUpdate()}}); +this.addAction("collapsible",function(){var a=c.view.getState(c.getSelectionCell()),e="1";null!=a&&null!=c.getFoldingImage(a)&&(e="0");c.setCellStyles("collapsible",e);b.fireEvent(new mxEventObject("styleChanged","keys",["collapsible"],"values",[e],"cells",c.getSelectionCells()))});this.addAction("editStyle...",mxUtils.bind(this,function(){var a=c.getSelectionCells();if(null!=a&&0<a.length){var b=c.getModel(),b=new TextareaDialog(this.editorUi,mxResources.get("editStyle")+":",b.getStyle(a[0])||"", +function(b){null!=b&&c.setCellStyle(mxUtils.trim(b),a)},null,null,400,220);this.editorUi.showDialog(b.container,420,300,!0,!0);b.init()}}),null,null,Editor.ctrlKey+"+E");this.addAction("setAsDefaultStyle",function(){c.isEnabled()&&!c.isSelectionEmpty()&&b.setDefaultStyle(c.getSelectionCell())},null,null,Editor.ctrlKey+"+Shift+D");this.addAction("clearDefaultStyle",function(){c.isEnabled()&&b.clearDefaultStyle()},null,null,Editor.ctrlKey+"+Shift+R");this.addAction("addWaypoint",function(){var a=c.getSelectionCell(); +if(null!=a&&c.getModel().isEdge(a)){var b=e.graph.selectionCellsHandler.getHandler(a);if(b instanceof mxEdgeHandler){for(var k=c.view.translate,d=c.view.scale,f=k.x,k=k.y,a=c.getModel().getParent(a),l=c.getCellGeometry(a);c.getModel().isVertex(a)&&null!=l;)f+=l.x,k+=l.y,a=c.getModel().getParent(a),l=c.getCellGeometry(a);f=Math.round(c.snap(c.popupMenuHandler.triggerX/d-f));d=Math.round(c.snap(c.popupMenuHandler.triggerY/d-k));b.addPointAt(b.state,f,d)}}});this.addAction("removeWaypoint",function(){var a= +b.actions.get("removeWaypoint");null!=a.handler&&a.handler.removePoint(a.handler.state,a.index)});this.addAction("clearWaypoints",function(){var a=c.getSelectionCells();if(null!=a){a=c.addAllEdges(a);c.getModel().beginUpdate();try{for(var b=0;b<a.length;b++){var e=a[b];if(c.getModel().isEdge(e)){var d=c.getCellGeometry(e);null!=d&&(d=d.clone(),d.points=null,c.getModel().setGeometry(e,d))}}}finally{c.getModel().endUpdate()}}},null,null,"Alt+Shift+C");m=this.addAction("subscript",mxUtils.bind(this, +function(){c.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");m=this.addAction("superscript",mxUtils.bind(this,function(){c.cellEditor.isContentEditing()&&document.execCommand("superscript",!1,null)}),null,null,Editor.ctrlKey+"+.");this.addAction("image...",function(){if(c.isEnabled()&&!c.isCellLocked(c.getDefaultParent())){var a=mxResources.get("image")+" ("+mxResources.get("url")+"):",e=c.getView().getState(c.getSelectionCell()),k="";null!= +e&&(k=e.style[mxConstants.STYLE_IMAGE]||k);var d=c.cellEditor.saveSelection();b.showImageDialog(a,k,function(a,b,e){if(c.cellEditor.isContentEditing())c.cellEditor.restoreSelection(d),c.insertImage(a,b,e);else{var f=c.getSelectionCells();if(null!=a&&(0<a.length||0<f.length)){var l=null;c.getModel().beginUpdate();try{if(0==f.length){var n=c.getFreeInsertPoint(),l=f=[c.insertVertex(c.getDefaultParent(),null,"",n.x,n.y,b,e,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")]; +c.fireEvent(new mxEventObject("cellsInserted","cells",l))}c.setCellStyles(mxConstants.STYLE_IMAGE,0<a.length?a:null,f);var k=c.view.getState(f[0]),t=null!=k?k.style:c.getCellStyle(f[0]);"image"!=t[mxConstants.STYLE_SHAPE]&&"label"!=t[mxConstants.STYLE_SHAPE]?c.setCellStyles(mxConstants.STYLE_SHAPE,"image",f):0==a.length&&c.setCellStyles(mxConstants.STYLE_SHAPE,null,f);if(1==c.getSelectionCount()&&null!=b&&null!=e){var y=f[0],u=c.getModel().getGeometry(y);null!=u&&(u=u.clone(),u.width=b,u.height=e, +c.getModel().setGeometry(y,u))}}finally{c.getModel().endUpdate()}null!=l&&(c.setSelectionCells(l),c.scrollCellToVisible(l[0]))}}},c.cellEditor.isContentEditing(),!c.cellEditor.isContentEditing())}}).isEnabled=k;m=this.addAction("layers",mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(b,document.body.offsetWidth-280,120,220,180),this.layersWindow.window.addListener("show",function(){b.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.addListener("hide", +function(){b.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.setVisible(!0),b.fireEvent(new mxEventObject("layers"))):this.layersWindow.window.setVisible(!this.layersWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+L");m.setToggleAction(!0);m.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.layersWindow&&this.layersWindow.window.isVisible()}));m=this.addAction("formatPanel",mxUtils.bind(this,function(){b.toggleFormatPanel()}),null,null,Editor.ctrlKey+ +"+Shift+P");m.setToggleAction(!0);m.setSelectedCallback(mxUtils.bind(this,function(){return 0<b.formatWidth}));m=this.addAction("outline",mxUtils.bind(this,function(){null==this.outlineWindow?(this.outlineWindow=new OutlineWindow(b,document.body.offsetWidth-260,100,180,180),this.outlineWindow.window.addListener("show",function(){b.fireEvent(new mxEventObject("outline"))}),this.outlineWindow.window.addListener("hide",function(){b.fireEvent(new mxEventObject("outline"))}),this.outlineWindow.window.setVisible(!0), +b.fireEvent(new mxEventObject("outline"))):this.outlineWindow.window.setVisible(!this.outlineWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+O");m.setToggleAction(!0);m.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.outlineWindow&&this.outlineWindow.window.isVisible()}))}; +Actions.prototype.addAction=function(a,b,e,c,k){var m;"..."==a.substring(a.length-3)?(a=a.substring(0,a.length-3),m=mxResources.get(a)+"..."):m=mxResources.get(a);return this.put(a,new Action(m,b,e,c,k))};Actions.prototype.put=function(a,b){return this.actions[a]=b};Actions.prototype.get=function(a){return this.actions[a]};function Action(a,b,e,c,k){mxEventSource.call(this);this.label=a;this.funct=this.createFunction(b);this.enabled=null!=e?e:!0;this.iconCls=c;this.shortcut=k;this.visible=!0} +mxUtils.extend(Action,mxEventSource);Action.prototype.createFunction=function(a){return a};Action.prototype.setEnabled=function(a){this.enabled!=a&&(this.enabled=a,this.fireEvent(new mxEventObject("stateChanged")))};Action.prototype.isEnabled=function(){return this.enabled};Action.prototype.setToggleAction=function(a){this.toggleAction=a};Action.prototype.setSelectedCallback=function(a){this.selectedCallback=a};Action.prototype.isSelected=function(){return this.selectedCallback()};DrawioFile=function(a,b){mxEventSource.call(this);this.ui=a;this.shadowData=this.data=b||"";this.shadowPages=null;this.stats={opened:0,merged:0,fileMerged:0,fileReloaded:0,conflicts:0,timeouts:0,saved:0,closed:0,destroyed:0,joined:0,checksumErrors:0,bytesSent:0,bytesReceived:0,msgSent:0,msgReceived:0,cacheHits:0,cacheMiss:0,cacheFail:0}};DrawioFile.SYNC=urlParams.sync||"auto";DrawioFile.LAST_WRITE_WINS=!0;mxUtils.extend(DrawioFile,mxEventSource);DrawioFile.prototype.allChangesSavedKey="allChangesSaved"; +DrawioFile.prototype.autosaveDelay=1500;DrawioFile.prototype.maxAutosaveDelay=3E4;DrawioFile.prototype.autosaveThread=null;DrawioFile.prototype.lastAutosave=null;DrawioFile.prototype.modified=!1;DrawioFile.prototype.data=null;DrawioFile.prototype.shadowData=null;DrawioFile.prototype.shadowPages=null;DrawioFile.prototype.changeListenerEnabled=!0;DrawioFile.prototype.lastAutosaveRevision=null;DrawioFile.prototype.maxAutosaveRevisionDelay=18E5;DrawioFile.prototype.inConflictState=!1; +DrawioFile.prototype.invalidChecksum=!1;DrawioFile.prototype.errorReportsEnabled=!1;DrawioFile.prototype.reportEnabled=!0;DrawioFile.prototype.getSize=function(){return null!=this.data?this.data.length:0};DrawioFile.prototype.synchronizeFile=function(a,b){this.savingFile?null!=b&&b({message:mxResources.get("busy")}):null!=this.sync?this.sync.fileChanged(a,b):this.updateFile(a,b)}; +DrawioFile.prototype.updateFile=function(a,b,e,c){null!=e&&e()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=b&&b():this.getLatestVersion(mxUtils.bind(this,function(k){try{null!=e&&e()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=b&&b():null!=k?this.mergeFile(k,a,b,c):this.reloadFile(a,b))}catch(m){null!=b&&b(m)}}),b))}; +DrawioFile.prototype.mergeFile=function(a,b,e,c){var k=!0;try{this.stats.fileMerged++;var m=null!=this.shadowPages?this.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.shadowData).documentElement),q=this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement);if(null!=q&&0<q.length){this.shadowPages=q;this.backupPatch=this.isModified()?this.ui.diffPages(m,this.ui.pages):null;var r=[this.ui.diffPages(null!=c?c:m,this.shadowPages)];if(!this.ignorePatches(r)){var v=this.ui.patchPages(m, +r[0]);c={};var z=this.ui.getHashValueForPages(v,c),m={},d=this.ui.getHashValueForPages(this.shadowPages,m);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",r,"checksum",d==z,z);if(null!=z&&z!=d){var f=this.compressReportData(this.getAnonymizedXmlForPages(q)),l=this.compressReportData(this.getAnonymizedXmlForPages(v)),n=this.ui.hashValue(a.getCurrentEtag()),g=this.ui.hashValue(this.getCurrentEtag());this.checksumError(e,r,"Shadow Details: "+JSON.stringify(c)+ +"\nChecksum: "+z+"\nCurrent: "+d+"\nCurrent Details: "+JSON.stringify(m)+"\nFrom: "+n+"\nTo: "+g+"\n\nFile Data:\n"+f+"\nPatched Shadow:\n"+l,null,"mergeFile");return}this.patch(r,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw k=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(a.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=b&&b()}catch(p){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged(); +null!=e&&e(p);try{this.errorReportsEnabled&&k&&this.sendErrorReport("Error in mergeFile",null,p)}catch(B){}}};DrawioFile.prototype.getAnonymizedXmlForPages=function(a){var b=new mxCodec(mxUtils.createXmlDocument()),e=b.document.createElement("mxfile");if(null!=a)for(var c=0;c<a.length;c++){var k=b.encode(new mxGraphModel(a[c].root));"1"!=urlParams.dev&&(k=this.ui.anonymizeNode(k,!0));k.setAttribute("id",a[c].getId());a[c].viewState&&this.ui.editor.graph.saveViewState(a[c].viewState,k,!0);e.appendChild(k)}return mxUtils.getPrettyXml(e)}; +DrawioFile.prototype.compressReportData=function(a,b,e){b=null!=b?b:1E4;null!=e&&null!=a&&a.length>e?a=a.substring(0,e)+"[...]":null!=a&&a.length>b&&(a=this.ui.editor.graph.compress(a)+"\n");return a}; +DrawioFile.prototype.checksumError=function(a,b,e,c,k){this.stats.checksumErrors++;this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=this.sync&&this.sync.updateOnlineState();null!=a&&a();try{if(this.errorReportsEnabled){if(null!=b)for(a=0;a<b.length;a++)this.ui.anonymizePatch(b[a]);var m=mxUtils.bind(this,function(a){var c=this.compressReportData(JSON.stringify(b,null,2));a=null!=a?this.compressReportData(this.getAnonymizedXmlForPages(this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement)), +25E3):"n/a";this.sendErrorReport("Checksum Error in "+k,(null!=e?e:"")+"\n\nPatches:\n"+c+(null!=a?"\n\nRemote:\n"+a:""),null,7E4)});null==c?m(null):this.getLatestVersion(mxUtils.bind(this,function(a){null!=a&&a.getCurrentEtag()==c?m(a):m(null)}),function(){})}}catch(q){}}; +DrawioFile.prototype.sendErrorReport=function(a,b,e,c){try{var k=this.compressReportData(this.getAnonymizedXmlForPages(this.shadowPages),25E3),m=this.compressReportData(this.getAnonymizedXmlForPages(this.ui.pages),25E3),q=this.getCurrentUser(),r=null!=q?this.ui.hashValue(q.id):"unknown",v=null!=this.sync?this.sync.clientId:"no sync",z=this.getTitle(),d=z.lastIndexOf("."),q="xml";0<d&&(q=z.substring(d));var f=null!=e?e.stack:Error().stack;EditorUi.sendReport(a+" "+(new Date).toISOString()+":\n\nBrowser="+ +navigator.userAgent+"\nFile="+this.ui.hashValue(this.getId())+" ("+this.getMode()+")"+(this.isModified()?" modified":"")+"\nSize/Type="+this.getSize()+" ("+q+")\nUser="+r+" ("+v+")\nPrefix="+this.ui.editor.graph.model.prefix+"\nSync="+DrawioFile.SYNC+(null!=this.sync?(this.sync.enabled?" enabled":"")+(this.sync.isConnected()?" connected":""):"")+"\nPlugins="+(null!=mxSettings.settings?mxSettings.getPlugins():"null")+"\n\nStats:\n"+JSON.stringify(this.stats,null,2)+(null!=b?"\n\n"+b:"")+(null!=e?"\n\nError: "+ +e.message:"")+"\n\nStack:\n"+f+"\n\nShadow:\n"+k+"\n\nData:\n"+m,c)}catch(l){}}; +DrawioFile.prototype.reloadFile=function(a,b){try{this.ui.spinner.stop();var e=mxUtils.bind(this,function(){this.stats.fileReloaded++;this.reportEnabled=!1;var b=this.ui.editor.graph.getViewState(),e=this.ui.editor.graph.getSelectionCells(),m=this.ui.currentPage;this.ui.loadFile(this.getHash(),!0,null,mxUtils.bind(this,function(){if(null==this.ui.fileLoadedError){this.ui.restoreViewState(m,b,e);null!=this.backupPatch&&this.patch([this.backupPatch]);var c=this.ui.getCurrentFile();null!=c&&(c.stats= +this.stats);null!=a&&a()}}),!0)});this.isModified()&&null==this.backupPatch?this.ui.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){this.handleFileSuccess("manual"==DrawioFile.SYNC)}),e,mxResources.get("cancel"),mxResources.get("discardChanges")):e()}catch(c){null!=b&&b(c)}};DrawioFile.prototype.copyFile=function(a,b){this.ui.editor.editAsNew(this.ui.getFileData(!0),this.ui.getCopyFilename(this))}; +DrawioFile.prototype.ignorePatches=function(a){for(var b=!0,e=0;e<a.length&&b;e++)b=b&&0==Object.keys(a[e]).length;return b}; +DrawioFile.prototype.patch=function(a,b){var e=this.ui.editor.undoManager,c=e.history.slice(),k=e.indexOfNextAdd,m=this.ui.editor.graph;m.container.style.visibility="hidden";var q=this.changeListenerEnabled;this.changeListenerEnabled=!1;var r=m.foldingEnabled,v=m.mathEnabled,z=m.cellRenderer.redraw;m.cellRenderer.redraw=function(a){a.view.graph.isEditing(a.cell)&&(a.view.graph.scrollCellToVisible(a.cell),a.view.graph.cellEditor.resize());z.apply(this,arguments)};m.model.beginUpdate();try{for(var d= +0;d<a.length;d++)this.ui.pages=this.ui.patchPages(this.ui.pages,a[d],!0,b,this.isModified());0==this.ui.pages.length&&this.ui.pages.push(this.ui.createPage());0>mxUtils.indexOf(this.ui.pages,this.ui.currentPage)&&this.ui.selectPage(this.ui.pages[0],!0)}finally{m.container.style.visibility="";m.model.endUpdate();m.cellRenderer.redraw=z;this.changeListenerEnabled=q;e.history=c;e.indexOfNextAdd=k;e.fireEvent(new mxEventObject(mxEvent.CLEAR));if(null==this.ui.currentPage||this.ui.currentPage.needsUpdate)v!= +m.mathEnabled?(this.ui.editor.updateGraphComponents(),m.refresh()):(r!=m.foldingEnabled?m.view.revalidate():m.view.validate(),m.sizeDidChange());this.ui.updateTabContainer()}}; +DrawioFile.prototype.save=function(a,b,e,c,k,m){if(this.isEditable())if(!k&&this.invalidChecksum)if(null!=e)e({message:mxResources.get("checksum")});else throw Error(mxResources.get("checksum"));else this.updateFileData(),this.clearAutosave();else if(null!=e)e({message:mxResources.get("readOnly")});else throw Error(mxResources.get("readOnly"));};DrawioFile.prototype.updateFileData=function(){this.setData(this.ui.getFileData(null,null,null,null,null,null,null,null,this))}; +DrawioFile.prototype.saveAs=function(a,b,e){};DrawioFile.prototype.saveFile=function(a,b,e,c){};DrawioFile.prototype.getPublicUrl=function(a){a(null)};DrawioFile.prototype.isRestricted=function(){return!1};DrawioFile.prototype.isModified=function(){return this.modified};DrawioFile.prototype.setModified=function(a){this.modified=a};DrawioFile.prototype.isAutosaveOptional=function(){return!1};DrawioFile.prototype.isAutosave=function(){return!this.inConflictState&&this.ui.editor.autosave}; +DrawioFile.prototype.isRenamable=function(){return!1};DrawioFile.prototype.rename=function(a,b,e){};DrawioFile.prototype.isMovable=function(){return!1};DrawioFile.prototype.move=function(a,b,e){};DrawioFile.prototype.getHash=function(){return""};DrawioFile.prototype.getId=function(){return""};DrawioFile.prototype.isEditable=function(){return!this.ui.editor.isChromelessView()||this.ui.editor.editable};DrawioFile.prototype.getUi=function(){return this.ui};DrawioFile.prototype.getTitle=function(){return""}; +DrawioFile.prototype.setData=function(a){this.data=a};DrawioFile.prototype.getData=function(){return this.data};DrawioFile.prototype.open=function(){this.stats.opened++;var a=this.getData();null!=a&&(this.ui.setFileData(a),this.isModified()||(this.shadowData=mxUtils.getXml(this.ui.getXmlFileData()),this.shadowPages=null));this.installListeners();this.isSyncSupported()&&this.startSync()};DrawioFile.prototype.isSyncSupported=function(){return!1};DrawioFile.prototype.isRevisionHistorySupported=function(){return!1}; +DrawioFile.prototype.getRevisions=function(a,b){a(null)};DrawioFile.prototype.loadDescriptor=function(a,b){a(null)};DrawioFile.prototype.loadPatchDescriptor=function(a,b){this.loadDescriptor(mxUtils.bind(this,function(b){a(b)}),b)};DrawioFile.prototype.startSync=function(){"auto"!=DrawioFile.SYNC||"1"==urlParams.stealth||"1"!=urlParams.rt&&this.ui.editor.chromeless&&!this.ui.editor.editable||(null==this.sync&&(this.sync=new DrawioFileSync(this)),this.sync.start())}; +DrawioFile.prototype.isConflict=function(){return!1};DrawioFile.prototype.getChannelId=function(){return this.ui.editor.graph.compress(this.getHash()).replace(/[\/ +]/g,"_")};DrawioFile.prototype.getChannelKey=function(a){return null};DrawioFile.prototype.getCurrentUser=function(){return null};DrawioFile.prototype.getLatestVersion=function(a,b){a(null)};DrawioFile.prototype.getLastModifiedDate=function(){return new Date}; +DrawioFile.prototype.setCurrentEtag=function(a){this.setDescriptorEtag(this.getDescriptor(),a)};DrawioFile.prototype.getCurrentEtag=function(){return this.getDescriptorEtag(this.getDescriptor())};DrawioFile.prototype.getDescriptor=function(){return null};DrawioFile.prototype.setDescriptor=function(){};DrawioFile.prototype.setDescriptorEtag=function(a,b){};DrawioFile.prototype.getDescriptorEtag=function(a){return null};DrawioFile.prototype.getDescriptorSecret=function(a){return null}; +DrawioFile.prototype.installListeners=function(){null==this.changeListener&&(this.changeListener=mxUtils.bind(this,function(a,b){var e=null!=b?b.getProperty("edit"):null;!this.changeListenerEnabled||!this.isEditable()||null!=e&&e.ignoreEdit||this.fileChanged()}),this.ui.editor.graph.model.addListener(mxEvent.CHANGE,this.changeListener),this.ui.editor.graph.addListener("gridSizeChanged",this.changeListener),this.ui.editor.graph.addListener("shadowVisibleChanged",this.changeListener),this.ui.addListener("pageFormatChanged", this.changeListener),this.ui.addListener("pageScaleChanged",this.changeListener),this.ui.addListener("backgroundColorChanged",this.changeListener),this.ui.addListener("backgroundImageChanged",this.changeListener),this.ui.addListener("foldingEnabledChanged",this.changeListener),this.ui.addListener("mathEnabledChanged",this.changeListener),this.ui.addListener("gridEnabledChanged",this.changeListener),this.ui.addListener("guidesEnabledChanged",this.changeListener),this.ui.addListener("pageViewChanged", this.changeListener))};DrawioFile.prototype.addAllSavedStatus=function(a){null!=this.ui.statusContainer&&this.ui.getCurrentFile()==this&&(a=null!=a?a:mxUtils.htmlEntities(mxResources.get(this.allChangesSavedKey)),this.ui.editor.setStatus('<div title="'+a+'">'+a+"</div>"),a=this.ui.statusContainer.getElementsByTagName("div"),0<a.length&&this.isRevisionHistorySupported()&&(a[0].style.cursor="pointer",a[0].style.textDecoration="underline",mxEvent.addListener(a[0],"click",mxUtils.bind(this,function(){this.ui.actions.get("revisionHistory").funct()}))))}; DrawioFile.prototype.addUnsavedStatus=function(a){if(!this.inConflictState&&null!=this.ui.statusContainer&&this.ui.getCurrentFile()==this)if(a instanceof Error&&null!=a.message&&""!=a.message){var b=mxUtils.htmlEntities(mxResources.get("unsavedChanges"));this.ui.editor.setStatus('<div title="'+b+'" class="geStatusAlert" style="overflow:hidden;">'+b+" ("+mxUtils.htmlEntities(a.message)+")</div>")}else b=this.getErrorMessage(a),null!=b&&60<b.length&&(b=b.substring(0,60)+"..."),b=mxUtils.htmlEntities(mxResources.get("unsavedChangesClickHereToSave"))+ (null!=b&&""!=b?" ("+mxUtils.htmlEntities(b)+")":""),this.ui.editor.setStatus('<div title="'+b+'" class="geStatusAlert" style="cursor:pointer;overflow:hidden;">'+b+"</div>"),b=this.ui.statusContainer.getElementsByTagName("div"),null!=b&&0<b.length?mxEvent.addListener(b[0],"click",mxUtils.bind(this,function(){this.ui.actions.get(null!=this.ui.mode&&this.isEditable()?"save":"saveAs").funct()})):(b=mxUtils.htmlEntities(mxResources.get("unsavedChanges")),this.ui.editor.setStatus('<div title="'+b+'" class="geStatusAlert" style="overflow:hidden;">'+ b+" ("+mxUtils.htmlEntities(a.message)+")</div>"))}; -DrawioFile.prototype.addConflictStatus=function(a,b){this.invalidChecksum&&null==b&&(b=mxResources.get("checksum"));this.setConflictStatus(mxUtils.htmlEntities(mxResources.get("fileChangedSync"))+(null!=b&&""!=b?" ("+mxUtils.htmlEntities(b)+")":""));this.ui.spinner.stop();this.clearAutosave();var f=null!=this.ui.statusContainer?this.ui.statusContainer.getElementsByTagName("div"):null;null!=f&&0<f.length?mxEvent.addListener(f[0],"click",mxUtils.bind(this,function(b){"IMG"!=mxEvent.getSource(b).nodeName&& +DrawioFile.prototype.addConflictStatus=function(a,b){this.invalidChecksum&&null==b&&(b=mxResources.get("checksum"));this.setConflictStatus(mxUtils.htmlEntities(mxResources.get("fileChangedSync"))+(null!=b&&""!=b?" ("+mxUtils.htmlEntities(b)+")":""));this.ui.spinner.stop();this.clearAutosave();var e=null!=this.ui.statusContainer?this.ui.statusContainer.getElementsByTagName("div"):null;null!=e&&0<e.length?mxEvent.addListener(e[0],"click",mxUtils.bind(this,function(b){"IMG"!=mxEvent.getSource(b).nodeName&& a()})):this.ui.alert(mxUtils.htmlEntities(mxResources.get("fileChangedSync")),a)};DrawioFile.prototype.setConflictStatus=function(a){this.ui.editor.setStatus('<div title="'+a+'" class="geStatusAlert geBlink" style="cursor:pointer;overflow:hidden;">'+a+' <a href="https://desk.draw.io/support/solutions/articles/16000087947" target="_blank"><img border="0" style="margin-left:2px;cursor:help;opacity:0.5;width:16px;height:16px;" valign="bottom" src="'+Editor.helpImage+'" style=""/></a></div>')}; -DrawioFile.prototype.showRefreshDialog=function(a,b,f){null==f&&(f=mxResources.get("checksum"));this.ui.editor.isChromelessView()&&!this.ui.editor.editable?this.ui.alert(mxResources.get("fileChangedSync"),mxUtils.bind(this,function(){this.reloadFile(a,b)})):(this.addConflictStatus(mxUtils.bind(this,function(){this.showRefreshDialog(a,b)}),f),this.ui.showError(mxResources.get("error")+" ("+f+")",mxResources.get("fileChangedSyncDialog"),mxResources.get("makeCopy"),mxUtils.bind(this,function(){this.copyFile(a, +DrawioFile.prototype.showRefreshDialog=function(a,b,e){null==e&&(e=mxResources.get("checksum"));this.ui.editor.isChromelessView()&&!this.ui.editor.editable?this.ui.alert(mxResources.get("fileChangedSync"),mxUtils.bind(this,function(){this.reloadFile(a,b)})):(this.addConflictStatus(mxUtils.bind(this,function(){this.showRefreshDialog(a,b)}),e),this.ui.showError(mxResources.get("error")+" ("+e+")",mxResources.get("fileChangedSyncDialog"),mxResources.get("makeCopy"),mxUtils.bind(this,function(){this.copyFile(a, b)}),null,mxResources.get("synchronize"),mxUtils.bind(this,function(){this.reloadFile(a,b)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.ui.hideDialog()}),360,150))}; -DrawioFile.prototype.showCopyDialog=function(a,b,f){this.invalidChecksum=this.inConflictState=!1;this.addUnsavedStatus();this.ui.showError(mxResources.get("externalChanges"),mxResources.get("fileChangedOverwriteDialog"),mxResources.get("makeCopy"),mxUtils.bind(this,function(){this.copyFile(a,b)}),null,mxResources.get("overwrite"),f,mxResources.get("cancel"),mxUtils.bind(this,function(){this.ui.hideDialog()}),360,150)}; +DrawioFile.prototype.showCopyDialog=function(a,b,e){this.invalidChecksum=this.inConflictState=!1;this.addUnsavedStatus();this.ui.showError(mxResources.get("externalChanges"),mxResources.get("fileChangedOverwriteDialog"),mxResources.get("makeCopy"),mxUtils.bind(this,function(){this.copyFile(a,b)}),null,mxResources.get("overwrite"),e,mxResources.get("cancel"),mxUtils.bind(this,function(){this.ui.hideDialog()}),360,150)}; DrawioFile.prototype.showConflictDialog=function(a,b){this.ui.showError(mxResources.get("externalChanges"),mxResources.get("fileChangedSyncDialog"),mxResources.get("overwrite"),a,null,mxResources.get("synchronize"),b,mxResources.get("cancel"),mxUtils.bind(this,function(){this.ui.hideDialog();this.handleFileError(null,!1)}),340,150)}; -DrawioFile.prototype.redirectToNewApp=function(a){this.ui.spinner.stop();if(!this.redirectDialogShowing){this.redirectDialogShowing=!0;var b=window.location.protocol+"//"+window.location.host+"/"+this.ui.getSearch("create title mode url drive splash state".split(" "))+"#"+this.getHash(),f=mxUtils.bind(this,function(){var d=mxUtils.bind(this,function(){this.redirectDialogShowing=!1;window.location.href==b?window.location.reload():window.location.href=b});null==a&&this.isModified()?this.ui.confirm(mxResources.get("allChangesLost"), -mxUtils.bind(this,function(){this.redirectDialogShowing=!1}),d,mxResources.get("cancel"),mxResources.get("discardChanges")):d()});null!=a?this.isModified()?this.ui.confirm(mxResources.get("redirectToNewApp"),mxUtils.bind(this,function(){this.redirectDialogShowing=!1;a()}),f,mxResources.get("cancel"),mxResources.get("discardChanges")):this.ui.confirm(mxResources.get("redirectToNewApp"),f,mxUtils.bind(this,function(){this.redirectDialogShowing=!1;a()})):this.ui.alert(mxResources.get("redirectToNewApp"), -f)}};DrawioFile.prototype.handleFileSuccess=function(a){this.ui.spinner.stop();this.ui.getCurrentFile()==this&&(this.isModified()?this.fileChanged():a?(this.addAllSavedStatus(),null!=this.sync&&(this.sync.resetUpdateStatusThread(),this.sync.remoteFileChanged&&(this.sync.remoteFileChanged=!1,this.sync.fileChangedNotify()))):this.ui.editor.setStatus(""))}; -DrawioFile.prototype.handleFileError=function(a,b){this.ui.spinner.stop();if(this.ui.getCurrentFile()==this)if(this.inConflictState)this.handleConflictError(a,b);else if(this.isModified()&&this.addUnsavedStatus(a),b)this.ui.handleError(a,null!=a?mxResources.get("errorSavingFile"):null);else if(!this.isModified()){var f=null!=a?null!=a.error?a.error.message:a.message:null;null!=f&&60<f.length&&(f=f.substring(0,60)+"...");this.ui.editor.setStatus('<div class="geStatusAlert" style="cursor:pointer;overflow:hidden;">'+ -mxUtils.htmlEntities(mxResources.get("error"))+(null!=f?" ("+mxUtils.htmlEntities(f)+")":"")+"</div>")}}; -DrawioFile.prototype.handleConflictError=function(a,b){var f=mxUtils.bind(this,function(){this.handleFileSuccess(!0)}),d=mxUtils.bind(this,function(a){this.handleFileError(a,!0)}),k=mxUtils.bind(this,function(){this.ui.spinner.spin(document.body,mxResources.get("saving"))&&(this.ui.editor.setStatus(""),this.save(!0,f,d,null,!0,this.constructor==GitHubFile&&null!=a?a.commitMessage:null))}),n=mxUtils.bind(this,function(){this.ui.spinner.spin(document.body,mxResources.get("updatingDocument"))&&this.synchronizeFile(mxUtils.bind(this, -function(){this.ui.spinner.stop();this.ui.spinner.spin(document.body,mxResources.get("saving"))&&this.save(!0,f,d,null,null,this.constructor==GitHubFile&&null!=a?a.commitMessage:null)}),d)});"none"==DrawioFile.SYNC?this.showCopyDialog(f,d,k):this.invalidChecksum?this.showRefreshDialog(f,d,this.getErrorMessage(a)):b?this.showConflictDialog(k,n):this.addConflictStatus(mxUtils.bind(this,function(){this.ui.editor.setStatus(mxUtils.htmlEntities(mxResources.get("updatingDocument")));this.synchronizeFile(f, -d)}),this.getErrorMessage(a))};DrawioFile.prototype.getErrorMessage=function(a){return null!=a?null!=a.error?a.error.message:a.message:null}; +DrawioFile.prototype.redirectToNewApp=function(a){this.ui.spinner.stop();if(!this.redirectDialogShowing){this.redirectDialogShowing=!0;var b=window.location.protocol+"//"+window.location.host+"/"+this.ui.getSearch("create title mode url drive splash state".split(" "))+"#"+this.getHash(),e=mxUtils.bind(this,function(){var c=mxUtils.bind(this,function(){this.redirectDialogShowing=!1;window.location.href==b?window.location.reload():window.location.href=b});null==a&&this.isModified()?this.ui.confirm(mxResources.get("allChangesLost"), +mxUtils.bind(this,function(){this.redirectDialogShowing=!1}),c,mxResources.get("cancel"),mxResources.get("discardChanges")):c()});null!=a?this.isModified()?this.ui.confirm(mxResources.get("redirectToNewApp"),mxUtils.bind(this,function(){this.redirectDialogShowing=!1;a()}),e,mxResources.get("cancel"),mxResources.get("discardChanges")):this.ui.confirm(mxResources.get("redirectToNewApp"),e,mxUtils.bind(this,function(){this.redirectDialogShowing=!1;a()})):this.ui.alert(mxResources.get("redirectToNewApp"), +e)}};DrawioFile.prototype.handleFileSuccess=function(a){this.ui.spinner.stop();this.ui.getCurrentFile()==this&&(this.isModified()?this.fileChanged():a?(this.addAllSavedStatus(),null!=this.sync&&(this.sync.resetUpdateStatusThread(),this.sync.remoteFileChanged&&(this.sync.remoteFileChanged=!1,this.sync.fileChangedNotify()))):this.ui.editor.setStatus(""))}; +DrawioFile.prototype.handleFileError=function(a,b){this.ui.spinner.stop();if(this.ui.getCurrentFile()==this)if(this.inConflictState)this.handleConflictError(a,b);else if(this.isModified()&&this.addUnsavedStatus(a),b)this.ui.handleError(a,null!=a?mxResources.get("errorSavingFile"):null);else if(!this.isModified()){var e=null!=a?null!=a.error?a.error.message:a.message:null;null!=e&&60<e.length&&(e=e.substring(0,60)+"...");this.ui.editor.setStatus('<div class="geStatusAlert" style="cursor:pointer;overflow:hidden;">'+ +mxUtils.htmlEntities(mxResources.get("error"))+(null!=e?" ("+mxUtils.htmlEntities(e)+")":"")+"</div>")}}; +DrawioFile.prototype.handleConflictError=function(a,b){var e=mxUtils.bind(this,function(){this.handleFileSuccess(!0)}),c=mxUtils.bind(this,function(a){this.handleFileError(a,!0)}),k=mxUtils.bind(this,function(){this.ui.spinner.spin(document.body,mxResources.get("saving"))&&(this.ui.editor.setStatus(""),this.save(!0,e,c,null,!0,this.constructor==GitHubFile&&null!=a?a.commitMessage:null))}),m=mxUtils.bind(this,function(){this.ui.spinner.spin(document.body,mxResources.get("updatingDocument"))&&this.synchronizeFile(mxUtils.bind(this, +function(){this.ui.spinner.stop();this.ui.spinner.spin(document.body,mxResources.get("saving"))&&this.save(!0,e,c,null,null,this.constructor==GitHubFile&&null!=a?a.commitMessage:null)}),c)});"none"==DrawioFile.SYNC?this.showCopyDialog(e,c,k):this.invalidChecksum?this.showRefreshDialog(e,c,this.getErrorMessage(a)):b?this.showConflictDialog(k,m):this.addConflictStatus(mxUtils.bind(this,function(){this.ui.editor.setStatus(mxUtils.htmlEntities(mxResources.get("updatingDocument")));this.synchronizeFile(e, +c)}),this.getErrorMessage(a))};DrawioFile.prototype.getErrorMessage=function(a){return null!=a?null!=a.error?a.error.message:a.message:null}; DrawioFile.prototype.fileChanged=function(){this.setModified(!0);this.isAutosave()?(this.addAllSavedStatus(mxUtils.htmlEntities(mxResources.get("saving"))+"..."),this.autosave(this.autosaveDelay,this.maxAutosaveDelay,mxUtils.bind(this,function(a){null==this.autosaveThread&&this.handleFileSuccess(!0)}),mxUtils.bind(this,function(a){this.handleFileError(a)}))):this.isAutosaveOptional()&&this.ui.editor.autosave||this.inConflictState||this.addUnsavedStatus()}; -DrawioFile.prototype.fileSaved=function(a,b,f,d){try{this.stats.fileSaved++,this.invalidChecksum=this.inConflictState=!1,null==this.sync?(this.shadowData=a,this.shadowPages=null,null!=f&&f()):this.sync.fileSaved(this.ui.getPagesForNode(mxUtils.parseXml(a).documentElement),b,f,d)}catch(k){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=d&&d(k);try{this.sendErrorReport("Error in fileSaved","Saved Data:\n"+this.compressReportData(this.ui.anonymizeString(a),null,1E3),k)}catch(n){}}}; -DrawioFile.prototype.autosave=function(a,b,f,d){null==this.lastAutosave&&(this.lastAutosave=(new Date).getTime());a=(new Date).getTime()-this.lastAutosave<b?a:0;this.clearAutosave();var k=window.setTimeout(mxUtils.bind(this,function(){this.lastAutosave=null;this.autosaveThread==k&&(this.autosaveThread=null);if(this.isModified()&&this.isAutosaveNow()){var a=this.isAutosaveRevision();a&&(this.lastAutosaveRevision=(new Date).getTime());this.save(a,mxUtils.bind(this,function(a){this.autosaveCompleted(); -null!=f&&f(a)}),mxUtils.bind(this,function(a){null!=d&&d(a)}))}else this.isModified()||this.ui.editor.setStatus(""),null!=f&&f(null)}),a);this.autosaveThread=k};DrawioFile.prototype.isAutosaveNow=function(){return!0};DrawioFile.prototype.autosaveCompleted=function(){};DrawioFile.prototype.clearAutosave=function(){null!=this.autosaveThread&&(window.clearTimeout(this.autosaveThread),this.autosaveThread=null)}; +DrawioFile.prototype.fileSaved=function(a,b,e,c){try{this.stats.saved++,this.invalidChecksum=this.inConflictState=!1,null==this.sync?(this.shadowData=a,this.shadowPages=null,null!=e&&e()):this.sync.fileSaved(this.ui.getPagesForNode(mxUtils.parseXml(a).documentElement),b,e,c,a)}catch(k){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=c&&c(k);try{this.errorReportsEnabled&&this.sendErrorReport("Error in fileSaved",null,k)}catch(m){}}}; +DrawioFile.prototype.autosave=function(a,b,e,c){null==this.lastAutosave&&(this.lastAutosave=(new Date).getTime());a=(new Date).getTime()-this.lastAutosave<b?a:0;this.clearAutosave();var k=window.setTimeout(mxUtils.bind(this,function(){this.lastAutosave=null;this.autosaveThread==k&&(this.autosaveThread=null);if(this.isModified()&&this.isAutosaveNow()){var a=this.isAutosaveRevision();a&&(this.lastAutosaveRevision=(new Date).getTime());this.save(a,mxUtils.bind(this,function(a){this.autosaveCompleted(); +null!=e&&e(a)}),mxUtils.bind(this,function(a){null!=c&&c(a)}))}else this.isModified()||this.ui.editor.setStatus(""),null!=e&&e(null)}),a);this.autosaveThread=k};DrawioFile.prototype.isAutosaveNow=function(){return!0};DrawioFile.prototype.autosaveCompleted=function(){};DrawioFile.prototype.clearAutosave=function(){null!=this.autosaveThread&&(window.clearTimeout(this.autosaveThread),this.autosaveThread=null)}; DrawioFile.prototype.isAutosaveRevision=function(){var a=(new Date).getTime();return null==this.lastAutosaveRevision||a-this.lastAutosaveRevision>this.maxAutosaveRevisionDelay};DrawioFile.prototype.descriptorChanged=function(){this.fireEvent(new mxEventObject("descriptorChanged"))};DrawioFile.prototype.contentChanged=function(){this.fireEvent(new mxEventObject("contentChanged"))}; -DrawioFile.prototype.close=function(a){this.updateFileData();this.stats.closed++;this.isAutosave()&&this.isModified()&&this.save(this.isAutosaveRevision(),null,null,a);this.destroy()};DrawioFile.prototype.hasSameExtension=function(a,b){if(null!=a&&null!=b){var f=a.lastIndexOf("."),d=0<f?a.substring(f):"",f=b.lastIndexOf(".");return d===(0<f?b.substring(f):"")}return a==b}; +DrawioFile.prototype.close=function(a){this.updateFileData();this.stats.closed++;this.isAutosave()&&this.isModified()&&this.save(this.isAutosaveRevision(),null,null,a);this.destroy()};DrawioFile.prototype.hasSameExtension=function(a,b){if(null!=a&&null!=b){var e=a.lastIndexOf("."),c=0<e?a.substring(e):"",e=b.lastIndexOf(".");return c===(0<e?b.substring(e):"")}return a==b}; DrawioFile.prototype.removeListeners=function(){null!=this.changeListener&&(this.ui.editor.graph.model.removeListener(this.changeListener),this.ui.editor.graph.removeListener(this.changeListener),this.ui.removeListener(this.changeListener),this.changeListener=null)}; -DrawioFile.prototype.destroy=function(){this.stats.destroyed++;try{if(!this.ui.isOffline()&&this.reportEnabled&&("auto"==DrawioFile.SYNC||"manual"==DrawioFile.SYNC)){var a=this.getCurrentUser(),b=null!=a?this.ui.hashValue(a.id):"unknown";this.stats.end=(new Date).toISOString();null!=this.stats.start&&(this.stats.uptime=Math.round(((new Date).getTime()-(new Date(this.stats.start)).getTime())/1E3));EditorUi.logEvent({category:"RT-END-"+DrawioFile.SYNC,action:"file-"+this.getId()+"-mode-"+this.getMode()+ -"-size-"+this.getSize()+"-user-"+b+(null!=this.sync?"-client-"+this.sync.clientId:""),label:this.stats})}}catch(f){}this.clearAutosave();this.removeListeners();null!=this.sync&&(this.sync.destroy(),this.sync=null)};LocalFile=function(a,b,f,d){DrawioFile.call(this,a,b);this.title=f;this.mode=d?null:App.MODE_DEVICE};mxUtils.extend(LocalFile,DrawioFile);LocalFile.prototype.isAutosave=function(){return!1};LocalFile.prototype.getMode=function(){return this.mode};LocalFile.prototype.getTitle=function(){return this.title};LocalFile.prototype.isRenamable=function(){return!0};LocalFile.prototype.save=function(a,b,f){this.saveAs(this.title,b,f)};LocalFile.prototype.saveAs=function(a,b,f){this.saveFile(a,!1,b,f)}; -LocalFile.prototype.saveFile=function(a,b,f,d){this.title=a;this.updateFileData();b=this.getData();var k=this.ui.useCanvasForExport&&/(\.png)$/i.test(this.getTitle()),n=mxUtils.bind(this,function(b){if(this.ui.isOfflineApp()||this.ui.isLocalFileSave())this.ui.doSaveLocalFile(b,a,k?"image/png":"text/xml",k);else if(b.length<MAX_REQUEST_SIZE){var d=a.lastIndexOf("."),d=0<d?a.substring(d+1):"xml";(new mxXmlRequest(SAVE_URL,"format="+d+"&xml="+encodeURIComponent(b)+"&filename="+encodeURIComponent(a)+ -(k?"&binary=1":""))).simulate(document,"_blank")}else this.ui.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}));this.setModified(!1);this.contentChanged();null!=f&&f()});k?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){n(a)}),d,this.ui.getCurrentFile()!=this?this.getData():null):n(b)};LocalFile.prototype.rename=function(a,b,f){this.title=a;this.descriptorChanged();null!=b&&b()}; +DrawioFile.prototype.destroy=function(){this.stats.destroyed++;try{if(!this.ui.isOffline()&&this.reportEnabled&&("auto"==DrawioFile.SYNC||"manual"==DrawioFile.SYNC)){var a=this.getCurrentUser(),b=null!=a?a.id:"unknown";EditorUi.logEvent({category:"RT-END-"+DrawioFile.SYNC,action:"file-"+this.getId()+"-mode-"+this.getMode()+"-size-"+this.getSize()+"-user-"+b+(null!=this.sync?"-client-"+this.sync.clientId:""),label:this.stats})}}catch(e){}this.clearAutosave();this.removeListeners();null!=this.sync&& +(this.sync.destroy(),this.sync=null)};LocalFile=function(a,b,e,c){DrawioFile.call(this,a,b);this.title=e;this.mode=c?null:App.MODE_DEVICE};mxUtils.extend(LocalFile,DrawioFile);LocalFile.prototype.isAutosave=function(){return!1};LocalFile.prototype.getMode=function(){return this.mode};LocalFile.prototype.getTitle=function(){return this.title};LocalFile.prototype.isRenamable=function(){return!0};LocalFile.prototype.save=function(a,b,e){this.saveAs(this.title,b,e)};LocalFile.prototype.saveAs=function(a,b,e){this.saveFile(a,!1,b,e)}; +LocalFile.prototype.saveFile=function(a,b,e,c){this.title=a;this.updateFileData();b=this.getData();var k=this.ui.useCanvasForExport&&/(\.png)$/i.test(this.getTitle()),m=mxUtils.bind(this,function(b){if(this.ui.isOfflineApp()||this.ui.isLocalFileSave())this.ui.doSaveLocalFile(b,a,k?"image/png":"text/xml",k);else if(b.length<MAX_REQUEST_SIZE){var c=a.lastIndexOf("."),c=0<c?a.substring(c+1):"xml";(new mxXmlRequest(SAVE_URL,"format="+c+"&xml="+encodeURIComponent(b)+"&filename="+encodeURIComponent(a)+ +(k?"&binary=1":""))).simulate(document,"_blank")}else this.ui.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}));this.setModified(!1);this.contentChanged();null!=e&&e()});k?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){m(a)}),c,this.ui.getCurrentFile()!=this?this.getData():null):m(b)};LocalFile.prototype.rename=function(a,b,e){this.title=a;this.descriptorChanged();null!=b&&b()}; LocalFile.prototype.open=function(){this.ui.setFileData(this.getData());this.installListeners()};(function(){Editor.prototype.appName="draw.io";Editor.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAMAAADzN3VRAAAApVBMVEUAAAD////k5OT///8AAAB1dXXMzMz9/f39/f37+/v5+fn+/v7///9iYmJaWlqFhYWnp6ejo6OHh4f////////////////7+/v5+fnx8fH///8AAAD///8bGxv7+/v5+fkoKCghISFDQ0MYGBjh4eHY2Njb29tQUFBvb29HR0c/Pz82NjYrKyu/v78SEhLu7u7s7OzV1dVVVVU7OzsVFRXAv78QEBBzqehMAAAAG3RSTlMAA/7p/vz5xZlrTiPL/v78+/v7+OXd2TYQDs8L70ZbAAABKUlEQVQoz3VS13LCMBBUXHChd8iukDslQChJ/v/TchaG4cXS+OSb1c7trU7V60OpdRz2ZtNZL4zXNlcN8BEtSG6+NxIXkeRPoBuQ1cjvZ31/VJFB10ISli6diYfH8iYO3WUNCcNlB0gTrXOtkxTo0O1aKKiBBMhhv2MNBQKoiA5wxlZo0JDzD3AYKbWacyj3fs01wxey0pyEP+R8pWKWXoqtIZ0DDg5pbki9krEKOa6LVDQsdoXEsi46Zqh69KFz7B1u7Hb2yDV8firXDKBlZ4UFiswKGRhXTS93/ECK7yxnJ3+S3y/ThpO+cfSD017nqa18aasabU0/t7d+tk0/1oMEJ1NaD67iwdF68OabFSLn+eHb0+vjy+uk8br9fdrftH0O2menfd7+AQfYM/lNjoDHAAAAAElFTkSuQmCC": IMAGE_PATH+"/delete.png";Editor.plusImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDdCMTdENjVCOEM4MTFFNDlCRjVBNDdCODU5NjNBNUMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDdCMTdENjZCOEM4MTFFNDlCRjVBNDdCODU5NjNBNUMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowN0IxN0Q2M0I4QzgxMUU0OUJGNUE0N0I4NTk2M0E1QyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowN0IxN0Q2NEI4QzgxMUU0OUJGNUE0N0I4NTk2M0E1QyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PtjrjmgAAAAtSURBVHjaYvz//z8DMigvLwcLdHZ2MiKLMzEQCaivkLGsrOw/dU0cAr4GCDAARQsQbTFrv10AAAAASUVORK5CYII=": IMAGE_PATH+"/plus.png";Editor.spinImage=mxClient.IS_SVG?"data:image/gif;base64,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": @@ -2747,31 +2753,31 @@ dispName:"West"}]},{name:"portConstraintRotation",dispName:"Port Const. Rot.",ty dispName:"Lifeline"},{val:"orthogonalPerimeter",dispName:"Orthogonal"},{val:"backbonePerimeter",dispName:"Backbone"},{val:"calloutPerimeter",dispName:"Callout"},{val:"parallelogramPerimeter",dispName:"Parallelogram"},{val:"trapezoidPerimeter",dispName:"Trapezoid"},{val:"stepPerimeter",dispName:"Step"}]},{name:"fixDash",dispName:"Fixed Dash",type:"bool",defVal:!1},{name:"jiggle",dispName:"Jiggle",type:"float",min:0,defVal:1.5,isVisible:function(a){return"1"==mxUtils.getValue(a.style,"comic","0")}}, {name:"autosize",dispName:"Autosize",type:"bool",defVal:!1},{name:"collapsible",dispName:"Collapsible",type:"bool",defVal:!1},{name:"container",dispName:"Container",type:"bool",defVal:!1},{name:"recursiveResize",dispName:"Resize Children",type:"bool",defVal:!0},{name:"part",dispName:"Part",type:"bool",defVal:!1},{name:"editable",dispName:"Editable",type:"bool",defVal:!0},{name:"backgroundOutline",dispName:"Background Outline",type:"bool",defVal:!1},{name:"movable",dispName:"Movable",type:"bool",defVal:!0}, {name:"resizable",dispName:"Resizable",type:"bool",defVal:!0},{name:"resizeWidth",dispName:"Resize Width",type:"bool",defVal:!1},{name:"resizeHeight",dispName:"Resize Height",type:"bool",defVal:!1},{name:"rotatable",dispName:"Rotatable",type:"bool",defVal:!0},{name:"cloneable",dispName:"Cloneable",type:"bool",defVal:!0},{name:"deletable",dispName:"Deletable",type:"bool",defVal:!0}];Editor.defaultCsvValue='##\n## Example CSV import. Use ## for comments and # for configuration. Paste CSV below.\n## The following names are reserved and should not be used (or ignored):\n## id, tooltip, placeholder(s), link and label (see below)\n##\n#\n## Node label with placeholders and HTML.\n## Default is \'%name_of_first_column%\'.\n#\n# label: %name%<br><i style="color:gray;">%position%</i><br><a href="mailto:%email%">Email</a>\n#\n## Node style (placeholders are replaced once).\n## Default is the current style for nodes.\n#\n# style: label;image=%image%;whiteSpace=wrap;html=1;rounded=1;fillColor=%fill%;strokeColor=%stroke%;\n#\n## Parent style for nodes with child nodes (placeholders are replaced once).\n#\n# parentstyle: swimlane;whiteSpace=wrap;html=1;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;\n#\n## Uses the given column name as the identity for cells (updates existing cells).\n## Default is no identity (empty value or -).\n#\n# identity: -\n#\n## Uses the given column name as the parent reference for cells. Default is no parent (empty or -).\n## The identity above is used for resolving the reference so it must be specified.\n#\n# parent: -\n#\n## Adds a prefix to the identity of cells to make sure they do not collide with existing cells (whose\n## IDs are numbers from 0..n, sometimes with a GUID prefix in the context of realtime collaboration).\n## Default is csvimport-.\n#\n# namespace: csvimport-\n#\n## Connections between rows ("from": source colum, "to": target column).\n## Label, style and invert are optional. Defaults are \'\', current style and false.\n## In addition to label, an optional fromlabel and tolabel can be used to name the column\n## that contains the text for the label in the edges source or target (invert ignored).\n## The label is concatenated in the form fromlabel + label + tolabel if all are defined.\n## The target column may contain a comma-separated list of values.\n## Multiple connect entries are allowed.\n#\n# connect: {"from": "manager", "to": "name", "invert": true, "label": "manages", \\\n# "style": "curved=1;endArrow=blockThin;endFill=1;fontSize=11;"}\n# connect: {"from": "refs", "to": "id", "style": "curved=1;fontSize=11;"}\n#\n## Node x-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# left: \n#\n## Node y-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# top: \n#\n## Node width. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the width. Default is auto.\n#\n# width: auto\n#\n## Node height. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the height. Default is auto.\n#\n# height: auto\n#\n## Padding for autosize. Default is 0.\n#\n# padding: -12\n#\n## Comma-separated list of ignored columns for metadata. (These can be\n## used for connections and styles but will not be added as metadata.)\n#\n# ignore: id,image,fill,stroke\n#\n## Column to be renamed to link attribute (used as link).\n#\n# link: url\n#\n## Spacing between nodes. Default is 40.\n#\n# nodespacing: 40\n#\n## Spacing between levels of hierarchical layouts. Default is 100.\n#\n# levelspacing: 100\n#\n## Spacing between parallel edges. Default is 40.\n#\n# edgespacing: 40\n#\n## Name of layout. Possible values are auto, none, verticaltree, horizontaltree,\n## verticalflow, horizontalflow, organic, circle. Default is auto.\n#\n# layout: auto\n#\n## ---- CSV below this line. First line are column names. ----\nname,position,id,location,manager,email,fill,stroke,refs,url,image\nEvan Miller,CFO,emi,Office 1,,me@example.com,#dae8fc,#6c8ebf,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-9-2-128.png\nEdward Morrison,Brand Manager,emo,Office 2,Evan Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-10-3-128.png\nRon Donovan,System Admin,rdo,Office 3,Evan Miller,me@example.com,#d5e8d4,#82b366,"emo,tva",https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-2-128.png\nTessa Valet,HR Director,tva,Office 4,Evan Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-3-128.png\n'; -Editor.shadowOptionEnabled=!0;Editor.config=null;Editor.configVersion=null;Editor.configure=function(a,c){if(null!=a){Editor.config=a;Editor.configVersion=a.version;Menus.prototype.defaultFonts=a.defaultFonts||Menus.prototype.defaultFonts;ColorDialog.prototype.presetColors=a.presetColors||ColorDialog.prototype.presetColors;ColorDialog.prototype.defaultColors=a.defaultColors||ColorDialog.prototype.defaultColors;StyleFormatPanel.prototype.defaultColorSchemes=a.defaultColorSchemes||StyleFormatPanel.prototype.defaultColorSchemes; +Editor.shadowOptionEnabled=!0;Editor.config=null;Editor.configVersion=null;Editor.configure=function(a,d){if(null!=a){Editor.config=a;Editor.configVersion=a.version;Menus.prototype.defaultFonts=a.defaultFonts||Menus.prototype.defaultFonts;ColorDialog.prototype.presetColors=a.presetColors||ColorDialog.prototype.presetColors;ColorDialog.prototype.defaultColors=a.defaultColors||ColorDialog.prototype.defaultColors;StyleFormatPanel.prototype.defaultColorSchemes=a.defaultColorSchemes||StyleFormatPanel.prototype.defaultColorSchemes; Graph.prototype.defaultEdgeLength=a.defaultEdgeLength||Graph.prototype.defaultEdgeLength;null!=a.templateFile&&(EditorUi.templateFile=a.templateFile);a.customFonts&&(Menus.prototype.defaultFonts=a.customFonts.concat(Menus.prototype.defaultFonts));a.customPresetColors&&(ColorDialog.prototype.presetColors=a.customPresetColors.concat(ColorDialog.prototype.presetColors));null!=a.customColorSchemes&&(StyleFormatPanel.prototype.defaultColorSchemes=a.customColorSchemes.concat(StyleFormatPanel.prototype.defaultColorSchemes)); -if(null!=a.css){var b=document.createElement("style");b.setAttribute("type","text/css");b.appendChild(document.createTextNode(a.css));var d=document.getElementsByTagName("script")[0];d.parentNode.insertBefore(b,d)}null!=a.libraries&&(Sidebar.prototype.customEntries=a.libraries);null!=a.enabledLibraries&&(Sidebar.prototype.enabledLibraries=a.enabledLibraries);null!=a.defaultLibraries&&(Sidebar.prototype.defaultEntries=a.defaultLibraries);null!=a.defaultCustomLibraries&&(Editor.defaultCustomLibraries= +if(null!=a.css){var b=document.createElement("style");b.setAttribute("type","text/css");b.appendChild(document.createTextNode(a.css));var c=document.getElementsByTagName("script")[0];c.parentNode.insertBefore(b,c)}null!=a.libraries&&(Sidebar.prototype.customEntries=a.libraries);null!=a.enabledLibraries&&(Sidebar.prototype.enabledLibraries=a.enabledLibraries);null!=a.defaultLibraries&&(Sidebar.prototype.defaultEntries=a.defaultLibraries);null!=a.defaultCustomLibraries&&(Editor.defaultCustomLibraries= a.defaultCustomLibraries);null!=a.enableCustomLibraries&&(Editor.enableCustomLibraries=a.enableCustomLibraries);null!=a.defaultVertexStyle&&(Graph.prototype.defaultVertexStyle=a.defaultVertexStyle);null!=a.defaultEdgeStyle&&(Graph.prototype.defaultEdgeStyle=a.defaultEdgeStyle);a.emptyDiagramXml&&(EditorUi.prototype.emptyDiagramXml=a.emptyDiagramXml);a.thumbWidth&&(Sidebar.prototype.thumbWidth=a.thumbWidth);a.thumbHeight&&(Sidebar.prototype.thumbHeight=a.thumbHeight);a.emptyLibraryXml&&(EditorUi.prototype.emptyLibraryXml= -a.emptyLibraryXml);a.sidebarWidth&&(EditorUi.prototype.hsplitPosition=a.sidebarWidth);a.fontCss&&(b=document.createElement("style"),b.setAttribute("type","text/css"),b.appendChild(document.createTextNode(a.fontCss)),d=document.getElementsByTagName("script")[0],d.parentNode.insertBefore(b,d),Editor.prototype.fontCss=a.fontCss);if(null!=a.plugins&&!c)for(App.initPluginCallback(),b=0;b<a.plugins.length;b++)mxscript(a.plugins[b])}};Editor.GUID_ALPHABET="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_"; -Editor.GUID_LENGTH=20;Editor.guid=function(a){a=null!=a?a:Editor.GUID_LENGTH;for(var c=[],b=0;b<a;b++)c.push(Editor.GUID_ALPHABET.charAt(Math.floor(Math.random()*Editor.GUID_ALPHABET.length)));return c.join("")};Editor.prototype.useForeignObjectForMath=!1;Editor.prototype.editButtonLink=null!=urlParams.edit?decodeURIComponent(urlParams.edit):null;var a=Editor.prototype.setGraphXml;Editor.prototype.setGraphXml=function(c){c=null!=c&&"mxlibrary"!=c.nodeName?this.extractGraphModel(c):null;if(null!=c){var b= -c.getElementsByTagName("parsererror");if(null!=b&&0<b.length){var b=b[0],d=b.getElementsByTagName("div");null!=d&&0<d.length&&(b=d[0]);throw{message:mxUtils.getTextContent(b)};}if("mxGraphModel"==c.nodeName){b=c.getAttribute("style")||"default-style2";if("1"==urlParams.embed||null!=b&&""!=b)b!=this.graph.currentStyle&&(d=null!=this.graph.themes?this.graph.themes[b]:mxUtils.load(STYLE_PATH+"/"+b+".xml").getDocumentElement(),null!=d&&(g=new mxCodec(d.ownerDocument),g.decode(d,this.graph.getStylesheet()))); -else if(d=null!=this.graph.themes?this.graph.themes["default-old"]:mxUtils.load(STYLE_PATH+"/default-old.xml").getDocumentElement(),null!=d){var g=new mxCodec(d.ownerDocument);g.decode(d,this.graph.getStylesheet())}this.graph.currentStyle=b;this.graph.mathEnabled="1"==urlParams.math||"1"==c.getAttribute("math");b=c.getAttribute("backgroundImage");null!=b?(b=JSON.parse(b),this.graph.setBackgroundImage(new mxImage(b.src,b.width,b.height))):this.graph.setBackgroundImage(null);mxClient.NO_FO=this.graph.mathEnabled&& -!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();this.graph.setShadowVisible("1"==c.getAttribute("shadow"),!1)}a.apply(this,arguments)}else throw{message:mxResources.get("notADiagramFile")||"Invalid data",toString:function(){return this.message}};};var b=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=function(a){a=null!=a?a:!0;var c=b.apply(this, -arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&c.setAttribute("style",this.graph.currentStyle);null!=this.graph.backgroundImage&&c.setAttribute("backgroundImage",JSON.stringify(this.graph.backgroundImage));c.setAttribute("math",this.graph.mathEnabled?"1":"0");c.setAttribute("shadow",this.graph.shadowVisible?"1":"0");return c};Editor.prototype.isDataSvg=function(a){try{var c=mxUtils.parseXml(a).documentElement.getAttribute("content");if(null!=c&&(null!=c&&"<"!= -c.charAt(0)&&"%"!=c.charAt(0)&&(c=unescape(window.atob?atob(c):Base64.decode(cont,c))),null!=c&&"%"==c.charAt(0)&&(c=decodeURIComponent(c)),null!=c&&0<c.length)){var b=mxUtils.parseXml(c).documentElement;return"mxfile"==b.nodeName||"mxGraphModel"==b.nodeName}}catch(F){}return!1};Editor.prototype.extractGraphModel=function(a,c){if(null!=a&&"undefined"!==typeof pako){var b=a.ownerDocument.getElementsByTagName("div"),d=[];if(null!=b&&0<b.length)for(var g=0;g<b.length;g++)if("mxgraph"==b[g].getAttribute("class")){d.push(b[g]); -break}0<d.length&&(b=d[0].getAttribute("data-mxgraph"),null!=b?(d=JSON.parse(b),null!=d&&null!=d.xml&&(d=mxUtils.parseXml(d.xml),a=d.documentElement)):(d=d[0].getElementsByTagName("div"),0<d.length&&(b=mxUtils.getTextContent(d[0]),b=this.graph.decompress(b),0<b.length&&(d=mxUtils.parseXml(b),a=d.documentElement))))}if(null!=a&&"svg"==a.nodeName)if(b=a.getAttribute("content"),null!=b&&"<"!=b.charAt(0)&&"%"!=b.charAt(0)&&(b=unescape(window.atob?atob(b):Base64.decode(cont,b))),null!=b&&"%"==b.charAt(0)&& -(b=decodeURIComponent(b)),null!=b&&0<b.length)a=mxUtils.parseXml(b).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==a||c||(d=null,"diagram"==a.nodeName?d=a:"mxfile"==a.nodeName&&(b=a.getElementsByTagName("diagram"),0<b.length&&(d=b[Math.max(0,Math.min(b.length-1,urlParams.page||0))])),null!=d&&(b=this.graph.decompress(mxUtils.getTextContent(d)),null!=b&&0<b.length&&(a=mxUtils.parseXml(b).documentElement)));null==a||"mxGraphModel"==a.nodeName||c&&"mxfile"==a.nodeName|| -(a=null);return a};var f=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled="1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0=null;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();f.apply(this,arguments)};var d=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphComponents= -function(){d.apply(this,arguments);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath&&null!=Editor.MathJaxRender?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform()};Editor.initMath=function(a,c){a=null!=a?a:"https://math.draw.io/current/MathJax.js?config=TeX-MML-AM_HTMLorMML";Editor.mathJaxQueue=[];Editor.doMathJaxRender=function(a){window.setTimeout(function(){"hidden"!= -a.style.visibility&&MathJax.Hub.Queue(["Typeset",MathJax.Hub,a])},0)};window.MathJax={skipStartupTypeset:!0,showMathMenu:!1,messageStyle:"none",AuthorInit:function(){MathJax.Hub.Config(c||{jax:["input/TeX","input/MathML","input/AsciiMath","output/HTML-CSS"],extensions:["tex2jax.js","mml2jax.js","asciimath2jax.js"],"HTML-CSS":{imageFont:null},TeX:{extensions:["AMSmath.js","AMSsymbols.js","noErrors.js","noUndefined.js"]},tex2jax:{ignoreClass:"mxCellEditor"},asciimath2jax:{ignoreClass:"mxCellEditor"}}); +a.emptyLibraryXml);a.sidebarWidth&&(EditorUi.prototype.hsplitPosition=a.sidebarWidth);a.fontCss&&(b=document.createElement("style"),b.setAttribute("type","text/css"),b.appendChild(document.createTextNode(a.fontCss)),c=document.getElementsByTagName("script")[0],c.parentNode.insertBefore(b,c),Editor.prototype.fontCss=a.fontCss);if(null!=a.plugins&&!d)for(App.initPluginCallback(),b=0;b<a.plugins.length;b++)mxscript(a.plugins[b])}};Editor.GUID_ALPHABET="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_"; +Editor.GUID_LENGTH=20;Editor.guid=function(a){a=null!=a?a:Editor.GUID_LENGTH;for(var d=[],b=0;b<a;b++)d.push(Editor.GUID_ALPHABET.charAt(Math.floor(Math.random()*Editor.GUID_ALPHABET.length)));return d.join("")};Editor.prototype.useForeignObjectForMath=!1;Editor.prototype.editButtonLink=null!=urlParams.edit?decodeURIComponent(urlParams.edit):null;var a=Editor.prototype.setGraphXml;Editor.prototype.setGraphXml=function(d){d=null!=d&&"mxlibrary"!=d.nodeName?this.extractGraphModel(d):null;if(null!=d){var b= +d.getElementsByTagName("parsererror");if(null!=b&&0<b.length){var b=b[0],c=b.getElementsByTagName("div");null!=c&&0<c.length&&(b=c[0]);throw{message:mxUtils.getTextContent(b)};}if("mxGraphModel"==d.nodeName){b=d.getAttribute("style")||"default-style2";if("1"==urlParams.embed||null!=b&&""!=b)b!=this.graph.currentStyle&&(c=null!=this.graph.themes?this.graph.themes[b]:mxUtils.load(STYLE_PATH+"/"+b+".xml").getDocumentElement(),null!=c&&(f=new mxCodec(c.ownerDocument),f.decode(c,this.graph.getStylesheet()))); +else if(c=null!=this.graph.themes?this.graph.themes["default-old"]:mxUtils.load(STYLE_PATH+"/default-old.xml").getDocumentElement(),null!=c){var f=new mxCodec(c.ownerDocument);f.decode(c,this.graph.getStylesheet())}this.graph.currentStyle=b;this.graph.mathEnabled="1"==urlParams.math||"1"==d.getAttribute("math");b=d.getAttribute("backgroundImage");null!=b?(b=JSON.parse(b),this.graph.setBackgroundImage(new mxImage(b.src,b.width,b.height))):this.graph.setBackgroundImage(null);mxClient.NO_FO=this.graph.mathEnabled&& +!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();this.graph.setShadowVisible("1"==d.getAttribute("shadow"),!1)}a.apply(this,arguments)}else throw{message:mxResources.get("notADiagramFile")||"Invalid data",toString:function(){return this.message}};};var b=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=function(a){a=null!=a?a:!0;var d=b.apply(this, +arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&d.setAttribute("style",this.graph.currentStyle);null!=this.graph.backgroundImage&&d.setAttribute("backgroundImage",JSON.stringify(this.graph.backgroundImage));d.setAttribute("math",this.graph.mathEnabled?"1":"0");d.setAttribute("shadow",this.graph.shadowVisible?"1":"0");return d};Editor.prototype.isDataSvg=function(a){try{var d=mxUtils.parseXml(a).documentElement.getAttribute("content");if(null!=d&&(null!=d&&"<"!= +d.charAt(0)&&"%"!=d.charAt(0)&&(d=unescape(window.atob?atob(d):Base64.decode(cont,d))),null!=d&&"%"==d.charAt(0)&&(d=decodeURIComponent(d)),null!=d&&0<d.length)){var b=mxUtils.parseXml(d).documentElement;return"mxfile"==b.nodeName||"mxGraphModel"==b.nodeName}}catch(D){}return!1};Editor.prototype.extractGraphModel=function(a,d){if(null!=a&&"undefined"!==typeof pako){var b=a.ownerDocument.getElementsByTagName("div"),c=[];if(null!=b&&0<b.length)for(var f=0;f<b.length;f++)if("mxgraph"==b[f].getAttribute("class")){c.push(b[f]); +break}0<c.length&&(b=c[0].getAttribute("data-mxgraph"),null!=b?(c=JSON.parse(b),null!=c&&null!=c.xml&&(c=mxUtils.parseXml(c.xml),a=c.documentElement)):(c=c[0].getElementsByTagName("div"),0<c.length&&(b=mxUtils.getTextContent(c[0]),b=this.graph.decompress(b),0<b.length&&(c=mxUtils.parseXml(b),a=c.documentElement))))}if(null!=a&&"svg"==a.nodeName)if(b=a.getAttribute("content"),null!=b&&"<"!=b.charAt(0)&&"%"!=b.charAt(0)&&(b=unescape(window.atob?atob(b):Base64.decode(cont,b))),null!=b&&"%"==b.charAt(0)&& +(b=decodeURIComponent(b)),null!=b&&0<b.length)a=mxUtils.parseXml(b).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==a||d||(c=null,"diagram"==a.nodeName?c=a:"mxfile"==a.nodeName&&(b=a.getElementsByTagName("diagram"),0<b.length&&(c=b[Math.max(0,Math.min(b.length-1,urlParams.page||0))])),null!=c&&(b=this.graph.decompress(mxUtils.getTextContent(c)),null!=b&&0<b.length&&(a=mxUtils.parseXml(b).documentElement)));null==a||"mxGraphModel"==a.nodeName||d&&"mxfile"==a.nodeName|| +(a=null);return a};var e=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled="1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0=null;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();e.apply(this,arguments)};var c=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphComponents= +function(){c.apply(this,arguments);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath&&null!=Editor.MathJaxRender?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform()};Editor.initMath=function(a,d){a=null!=a?a:"https://math.draw.io/current/MathJax.js?config=TeX-MML-AM_HTMLorMML";Editor.mathJaxQueue=[];Editor.doMathJaxRender=function(a){window.setTimeout(function(){"hidden"!= +a.style.visibility&&MathJax.Hub.Queue(["Typeset",MathJax.Hub,a])},0)};window.MathJax={skipStartupTypeset:!0,showMathMenu:!1,messageStyle:"none",AuthorInit:function(){MathJax.Hub.Config(d||{jax:["input/TeX","input/MathML","input/AsciiMath","output/HTML-CSS"],extensions:["tex2jax.js","mml2jax.js","asciimath2jax.js"],"HTML-CSS":{imageFont:null},TeX:{extensions:["AMSmath.js","AMSsymbols.js","noErrors.js","noUndefined.js"]},tex2jax:{ignoreClass:"mxCellEditor"},asciimath2jax:{ignoreClass:"mxCellEditor"}}); MathJax.Hub.Register.StartupHook("Begin",function(){for(var a=0;a<Editor.mathJaxQueue.length;a++)Editor.doMathJaxRender(Editor.mathJaxQueue[a])})}};Editor.MathJaxRender=function(a){"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?Editor.doMathJaxRender(a):Editor.mathJaxQueue.push(a)};Editor.MathJaxClear=function(){Editor.mathJaxQueue=[]};var b=Editor.prototype.init;Editor.prototype.init=function(){b.apply(this,arguments);this.graph.addListener(mxEvent.SIZE,mxUtils.bind(this,function(a, -c){null!=this.graph.container&&this.graph.mathEnabled&&Editor.MathJaxRender(this.graph.container)}))};var d=document.getElementsByTagName("script");if(null!=d&&0<d.length){var g=document.createElement("script");g.type="text/javascript";g.src=a;d[0].parentNode.appendChild(g)}};Editor.prototype.csvToArray=function(a){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(a))return null; -var c=[];a.replace(/(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g,function(a,b,d,g){void 0!==b?c.push(b.replace(/\\'/g,"'")):void 0!==d?c.push(d.replace(/\\"/g,'"')):void 0!==g&&c.push(g);return""});/,\s*$/.test(a)&&c.push("");return c};if(window.ColorDialog){var k=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(a,c){k.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}; -var n=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){n.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&(EditDataDialog.getDisplayIdForCell=function(a,c){var b=null;null!=a.editor.graph.getModel().getParent(c)?b=c.getId():null!=a.currentPage&&(b=a.currentPage.getId());return b});if(null!=window.StyleFormatPanel){var p=Format.prototype.init;Format.prototype.init=function(){p.apply(this,arguments);this.editorUi.editor.addListener("fileLoaded", -this.update)};var q=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?q.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var a=this.editorUi.getCurrentFile();return"1"==urlParams.embed||null!=a&&a.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=function(a){return!1};var w=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView= -function(a){a=w.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var c=this.editorUi,b=c.editor.graph,d=this.createOption(mxResources.get("shadow"),function(){return b.shadowVisible},function(a){var d=new ChangePageSetup(c);d.ignoreColor=!0;d.ignoreImage=!0;d.shadowVisible=a;b.model.execute(d)},{install:function(a){this.listener=function(){a(b.shadowVisible)};c.addListener("shadowVisibleChanged",this.listener)},destroy:function(){c.removeListener(this.listener)}}); -Editor.shadowOptionEnabled||(d.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(d,60));a.appendChild(d)}return a};var c=DiagramFormatPanel.prototype.addOptions;DiagramFormatPanel.prototype.addOptions=function(a){a=c.apply(this,arguments);var b=this.editorUi,d=b.editor.graph;if(d.isEnabled()){var g=b.getCurrentFile();null!=g&&g.isAutosaveOptional()&&(g=this.createOption(mxResources.get("autosave"),function(){return b.editor.autosave},function(a){b.editor.setAutosave(a)}, -{install:function(a){this.listener=function(){a(b.editor.autosave)};b.editor.addListener("autosaveChanged",this.listener)},destroy:function(){b.editor.removeListener(this.listener)}}),a.appendChild(g))}if(this.isMathOptionVisible()&&d.isEnabled()&&"undefined"!==typeof MathJax){g=this.createOption(mxResources.get("mathematicalTypesetting"),function(){return d.mathEnabled},function(a){b.actions.get("mathematicalTypesetting").funct()},{install:function(a){this.listener=function(){a(d.mathEnabled)};b.addListener("mathEnabledChanged", -this.listener)},destroy:function(){b.removeListener(this.listener)}});g.style.paddingTop="5px";a.appendChild(g);var f=b.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000032875");f.style.position="relative";f.style.marginLeft="6px";f.style.top="2px";g.appendChild(f)}return a};mxCellRenderer.prototype.defaultVertexShape.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"absoluteArcSize",dispName:"Abs. Arc Size", +d){null!=this.graph.container&&this.graph.mathEnabled&&Editor.MathJaxRender(this.graph.container)}))};var c=document.getElementsByTagName("script");if(null!=c&&0<c.length){var f=document.createElement("script");f.type="text/javascript";f.src=a;c[0].parentNode.appendChild(f)}};Editor.prototype.csvToArray=function(a){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(a))return null; +var d=[];a.replace(/(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g,function(a,b,c,f){void 0!==b?d.push(b.replace(/\\'/g,"'")):void 0!==c?d.push(c.replace(/\\"/g,'"')):void 0!==f&&d.push(f);return""});/,\s*$/.test(a)&&d.push("");return d};if(window.ColorDialog){var k=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(a,d){k.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}; +var m=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){m.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&(EditDataDialog.getDisplayIdForCell=function(a,d){var b=null;null!=a.editor.graph.getModel().getParent(d)?b=d.getId():null!=a.currentPage&&(b=a.currentPage.getId());return b});if(null!=window.StyleFormatPanel){var q=Format.prototype.init;Format.prototype.init=function(){q.apply(this,arguments);this.editorUi.editor.addListener("fileLoaded", +this.update)};var r=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?r.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var a=this.editorUi.getCurrentFile();return"1"==urlParams.embed||null!=a&&a.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=function(a){return!1};var v=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView= +function(a){a=v.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var d=this.editorUi,b=d.editor.graph,c=this.createOption(mxResources.get("shadow"),function(){return b.shadowVisible},function(a){var c=new ChangePageSetup(d);c.ignoreColor=!0;c.ignoreImage=!0;c.shadowVisible=a;b.model.execute(c)},{install:function(a){this.listener=function(){a(b.shadowVisible)};d.addListener("shadowVisibleChanged",this.listener)},destroy:function(){d.removeListener(this.listener)}}); +Editor.shadowOptionEnabled||(c.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(c,60));a.appendChild(c)}return a};var z=DiagramFormatPanel.prototype.addOptions;DiagramFormatPanel.prototype.addOptions=function(a){a=z.apply(this,arguments);var d=this.editorUi,b=d.editor.graph;if(b.isEnabled()){var c=d.getCurrentFile();null!=c&&c.isAutosaveOptional()&&(c=this.createOption(mxResources.get("autosave"),function(){return d.editor.autosave},function(a){d.editor.setAutosave(a)}, +{install:function(a){this.listener=function(){a(d.editor.autosave)};d.editor.addListener("autosaveChanged",this.listener)},destroy:function(){d.editor.removeListener(this.listener)}}),a.appendChild(c))}if(this.isMathOptionVisible()&&b.isEnabled()&&"undefined"!==typeof MathJax){c=this.createOption(mxResources.get("mathematicalTypesetting"),function(){return b.mathEnabled},function(a){d.actions.get("mathematicalTypesetting").funct()},{install:function(a){this.listener=function(){a(b.mathEnabled)};d.addListener("mathEnabledChanged", +this.listener)},destroy:function(){d.removeListener(this.listener)}});c.style.paddingTop="5px";a.appendChild(c);var f=d.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000032875");f.style.position="relative";f.style.marginLeft="6px";f.style.top="2px";c.appendChild(f)}return a};mxCellRenderer.prototype.defaultVertexShape.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"absoluteArcSize",dispName:"Abs. Arc Size", type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.link.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:4}];mxCellRenderer.defaultShapes.flexArrow.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:10},{name:"startWidth",dispName:"Start Width",type:"float",min:0,defVal:20},{name:"endWidth",dispName:"End Width",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.process.prototype.customProperties=[{name:"size",dispName:"Indent", type:"float",min:0,max:.5,defVal:.1}];mxCellRenderer.defaultShapes.rhombus.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,max:50,defVal:mxConstants.LINE_ARCSIZE},{name:"double",dispName:"Double",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.partialRectangle.prototype.customProperties=[{name:"top",dispName:"Top Line",type:"bool",defVal:!0},{name:"bottom",dispName:"Bottom Line",type:"bool",defVal:!0},{name:"left",dispName:"Left Line",type:"bool",defVal:!0}, {name:"right",dispName:"Right Line",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.parallelogram.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.hexagon.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1, @@ -2792,609 +2798,609 @@ defVal:60,min:0},{name:"height",dispName:"Title Height",type:"float",defVal:30,m stroke:"#006EAF",font:"#ffffff"},{fill:"#0050ef",stroke:"#001DBC",font:"#ffffff"},{fill:"#6a00ff",stroke:"#3700CC",font:"#ffffff"},{fill:"#aa00ff",stroke:"#7700CC",font:"#ffffff"},{fill:"#d80073",stroke:"#A50040",font:"#ffffff"},{fill:"#a20025",stroke:"#6F0000",font:"#ffffff"}],[{fill:"#e51400",stroke:"#B20000",font:"#ffffff"},{fill:"#fa6800",stroke:"#C73500",font:"#ffffff"},{fill:"#f0a30a",stroke:"#BD7000",font:"#ffffff"},{fill:"#e3c800",stroke:"#B09500",font:"#ffffff"},{fill:"#6d8764",stroke:"#3A5431", font:"#ffffff"},{fill:"#647687",stroke:"#314354",font:"#ffffff"},{fill:"#76608a",stroke:"#432D57",font:"#ffffff"},{fill:"#a0522d",stroke:"#6D1F00",font:"#ffffff"}],[null,{fill:mxConstants.NONE,stroke:"#36393d"},{fill:"#fad7ac",stroke:"#b46504"},{fill:"#fad9d5",stroke:"#ae4132"},{fill:"#b0e3e6",stroke:"#0e8088"},{fill:"#b1ddf0",stroke:"#10739e"},{fill:"#d0cee2",stroke:"#56517e"},{fill:"#bac8d3",stroke:"#23445d"}],[null,{fill:"#f5f5f5",stroke:"#666666",gradient:"#b3b3b3"},{fill:"#dae8fc",stroke:"#6c8ebf", gradient:"#7ea6e0"},{fill:"#d5e8d4",stroke:"#82b366",gradient:"#97d077"},{fill:"#ffcd28",stroke:"#d79b00",gradient:"#ffa500"},{fill:"#fff2cc",stroke:"#d6b656",gradient:"#ffd966"},{fill:"#f8cecc",stroke:"#b85450",gradient:"#ea6b66"},{fill:"#e6d0de",stroke:"#996185",gradient:"#d5739d"}],[null,{fill:"#eeeeee",stroke:"#36393d"},{fill:"#f9f7ed",stroke:"#36393d"},{fill:"#ffcc99",stroke:"#36393d"},{fill:"#cce5ff",stroke:"#36393d"},{fill:"#ffff88",stroke:"#36393d"},{fill:"#cdeb8b",stroke:"#36393d"},{fill:"#ffcccc", -stroke:"#36393d"}]];StyleFormatPanel.prototype.customColorSchemes=null;StyleFormatPanel.prototype.findCommonProperties=function(a,c,b){if(null!=c){var d=function(a){if(null!=a)if(b)for(var d=0;d<a.length;d++)c[a[d].name]=a[d];else for(var g in c){for(var f=!1,d=0;d<a.length;d++)if(a[d].name==g&&a[d].type==c[g].type){f=!0;break}f||delete c[g]}},g=this.editorUi.editor.graph.view.getState(a);null!=g&&null!=g.shape&&(g.shape.commonCustomPropAdded||(g.shape.commonCustomPropAdded=!0,g.shape.customProperties= -g.shape.customProperties||[],g.cell.vertex?Array.prototype.push.apply(g.shape.customProperties,Editor.commonVertexProperties):Array.prototype.push.apply(g.shape.customProperties,Editor.commonEdgeProperties)),d(g.shape.customProperties));a=a.getAttribute("customProperties");if(null!=a)try{d(JSON.parse(a))}catch(G){}}};var g=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var a=this.format.createSelectionState();"image"!=a.style.shape&&this.container.appendChild(this.addStyles(this.createPanel())); -g.apply(this,arguments);if(Editor.enableCustomProperties){for(var c={},b=a.vertices,d=a.edges,f=0;f<b.length;f++)this.findCommonProperties(b[f],c,0==f);for(f=0;f<d.length;f++)this.findCommonProperties(d[f],c,0==b.length&&0==f);0<Object.getOwnPropertyNames(c).length&&this.container.appendChild(this.addProperties(this.createPanel(),c,a))}};var h=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(a){var c=mxUtils.button(mxResources.get("copyStyle"),mxUtils.bind(this, -function(a){this.editorUi.actions.get("copyStyle").funct()}));c.setAttribute("title",mxResources.get("copyStyle")+" ("+this.editorUi.actions.get("copyStyle").shortcut+")");c.style.marginBottom="2px";c.style.width="100px";c.style.marginRight="2px";a.appendChild(c);c=mxUtils.button(mxResources.get("pasteStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("pasteStyle").funct()}));c.setAttribute("title",mxResources.get("pasteStyle")+" ("+this.editorUi.actions.get("pasteStyle").shortcut+")"); -c.style.marginBottom="2px";c.style.width="100px";a.appendChild(c);mxUtils.br(a);return h.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=function(a,c,b){function d(a,c,b,d){v.getModel().beginUpdate();try{var g=[],f=[];if(null!=b.index){for(var h=[],l=b.parentRow.nextSibling;l&&l.getAttribute("data-pName")==a;)h.push(l.getAttribute("data-pValue")),l=l.nextSibling;b.index<h.length?null!=d?h.splice(d,1):h[b.index]=c:h.push(c);null!=b.size&&h.length> -b.size&&(h=h.slice(0,b.size));c=h.join(",");null!=b.countProperty&&(v.setCellStyles(b.countProperty,h.length,v.getSelectionCells()),g.push(b.countProperty),f.push(h.length))}v.setCellStyles(a,c,v.getSelectionCells());g.push(a);f.push(c);if(null!=b.dependentProps)for(a=0;a<b.dependentProps.length;a++){var m=b.dependentPropsDefVal[a],r=b.dependentPropsVals[a];if(r.length>c)r=r.slice(0,c);else for(var u=r.length;u<c;u++)r.push(m);r=r.join(",");v.setCellStyles(b.dependentProps[a],r,v.getSelectionCells()); -g.push(b.dependentProps[a]);f.push(r)}t.editorUi.fireEvent(new mxEventObject("styleChanged","keys",g,"values",f,"cells",v.getSelectionCells()))}finally{v.getModel().endUpdate()}}function g(c,b,d){var g=mxUtils.getOffset(a,!0),f=mxUtils.getOffset(c,!0);b.style.position="absolute";b.style.left=f.x-g.x+"px";b.style.top=f.y-g.y+"px";b.style.width=c.offsetWidth+"px";b.style.height=c.offsetHeight-(d?4:0)+"px";b.style.zIndex=5}function f(a,c,b){var g=document.createElement("div");g.style.width="32px";g.style.height= -"4px";g.style.margin="2px";g.style.border="1px solid black";g.style.background=c&&"none"!=c?c:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(t,function(f){this.editorUi.pickColor(c,function(c){g.style.background="none"==c?"url('"+Dialog.prototype.noColorImage+"')":c;d(a,c,b)});mxEvent.consume(f)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(g);return btn}function h(a,c,b,g,f,h,l){null!=c&&(c=c.split(","),u.push({name:a, -values:c,type:b,defVal:g,countProperty:f,parentRow:h,isDeletable:!0,flipBkg:l}));btn=mxUtils.button("+",mxUtils.bind(t,function(c){for(var m=h,t=0;null!=m.nextSibling;)if(m.nextSibling.getAttribute("data-pName")==a)m=m.nextSibling,t++;else break;var v={type:b,parentRow:h,index:t,isDeletable:!0,defVal:g,countProperty:f},t=r(a,"",v,0==t%2,l);d(a,g,v);m.parentNode.insertBefore(t,m.nextSibling);mxEvent.consume(c)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn} -function l(a,c,b,d,g,f,h){if(0<g){var l=Array(g);c=null!=c?c.split(","):[];for(var m=0;m<g;m++)l[m]=null!=c[m]?c[m]:null!=d?d:"";u.push({name:a,values:l,type:b,defVal:d,parentRow:f,flipBkg:h,size:g})}return document.createElement("div")}function m(a,c,b){var g=document.createElement("input");g.type="checkbox";g.checked="1"==c;mxEvent.addListener(g,"change",function(){d(a,g.checked?"1":"0",b)});return g}function r(c,b,r,v,u){var k=r.dispName,x=r.type,y=document.createElement("tr");y.className="gePropRow"+ -(u?"Dark":"")+(v?"Alt":"")+" gePropNonHeaderRow";y.setAttribute("data-pName",c);y.setAttribute("data-pValue",b);v=!1;null!=r.index&&(y.setAttribute("data-index",r.index),k=(null!=k?k:"")+"["+r.index+"]",v=!0);var n=document.createElement("td");n.className="gePropRowCell";n.innerHTML=mxUtils.htmlEntities(mxResources.get(k,null,k));v&&(n.style.textAlign="right");y.appendChild(n);n=document.createElement("td");n.className="gePropRowCell";if("color"==x)n.appendChild(f(c,b,r));else if("bool"==x||"boolean"== -x)n.appendChild(m(c,b,r));else if("enum"==x){var z=r.enumList;for(u=0;u<z.length;u++)if(k=z[u],k.val==b){n.innerHTML=mxUtils.htmlEntities(mxResources.get(k.dispName,null,k.dispName));break}mxEvent.addListener(n,"click",mxUtils.bind(t,function(){var f=document.createElement("select");g(n,f);for(var h=0;h<z.length;h++){var l=z[h],m=document.createElement("option");m.value=mxUtils.htmlEntities(l.val);m.innerHTML=mxUtils.htmlEntities(mxResources.get(l.dispName,null,l.dispName));f.appendChild(m)}f.value= -b;a.appendChild(f);mxEvent.addListener(f,"change",function(){var a=mxUtils.htmlEntities(f.value);d(c,a,r)});f.focus();mxEvent.addListener(f,"blur",function(){a.removeChild(f)})}))}else"dynamicArr"==x?n.appendChild(h(c,b,r.subType,r.subDefVal,r.countProperty,y,u)):"staticArr"==x?n.appendChild(l(c,b,r.subType,r.subDefVal,r.size,y,u)):(n.innerHTML=b,mxEvent.addListener(n,"click",mxUtils.bind(t,function(){function f(){var a=h.value,a=0==a.length&&"string"!=x?0:a;r.allowAuto&&("auto"==a.trim().toLowerCase()? -(a="auto",x="string"):(a=parseFloat(a),a=isNaN(a)?0:a));null!=r.min&&a<r.min?a=r.min:null!=r.max&&a>r.max&&(a=r.max);a=mxUtils.htmlEntities(("int"==x?parseInt(a):a)+"");d(c,a,r)}var h=document.createElement("input");g(n,h,!0);h.value=b;h.className="gePropEditor";"int"!=x&&"float"!=x||r.allowAuto||(h.type="number",h.step="int"==x?"1":"any",null!=r.min&&(h.min=parseFloat(r.min)),null!=r.max&&(h.max=parseFloat(r.max)));a.appendChild(h);mxEvent.addListener(h,"keypress",function(a){13==a.keyCode&&f()}); -h.focus();mxEvent.addListener(h,"blur",function(){f()})})));r.isDeletable&&(u=mxUtils.button("-",mxUtils.bind(t,function(a){d(c,"",r,r.index);mxEvent.consume(a)})),u.style.height="16px",u.style.width="25px",u.style["float"]="right",u.className="geColorBtn",n.appendChild(u));y.appendChild(n);return y}var t=this,v=this.editorUi.editor.graph,u=[];a.style.position="relative";a.style.padding="0";var k=document.createElement("table");k.style.whiteSpace="nowrap";k.style.width="100%";var x=document.createElement("tr"); -x.className="gePropHeader";var y=document.createElement("th");y.className="gePropHeaderCell";var n=document.createElement("img");n.src=Sidebar.prototype.expandedImage;y.appendChild(n);mxUtils.write(y,mxResources.get("property"));x.style.cursor="pointer";var A=function(){var c=k.querySelectorAll(".gePropNonHeaderRow"),b;if(t.editorUi.propertiesCollapsed){n.src=Sidebar.prototype.collapsedImage;b="none";for(var d=a.childNodes.length-1;0<=d;d--)try{var g=a.childNodes[d],f=g.nodeName.toUpperCase();"INPUT"!= -f&&"SELECT"!=f||a.removeChild(g)}catch(ca){}}else n.src=Sidebar.prototype.expandedImage,b="";for(d=0;d<c.length;d++)c[d].style.display=b};mxEvent.addListener(x,"click",function(){t.editorUi.propertiesCollapsed=!t.editorUi.propertiesCollapsed;A()});x.appendChild(y);y=document.createElement("th");y.className="gePropHeaderCell";y.innerHTML=mxResources.get("value");x.appendChild(y);k.appendChild(x);var p=!1,q=!1,D;for(D in c)if(x=c[D],"function"!=typeof x.isVisible||x.isVisible(b)){var w=null!=b.style[D]? -mxUtils.htmlEntities(b.style[D]+""):x.defVal;if("separator"==x.type)q=!q;else{if("staticArr"==x.type)x.size=parseInt(b.style[x.sizeProperty]||c[x.sizeProperty].defVal)||0;else if(null!=x.dependentProps){for(var U=x.dependentProps,L=[],P=[],y=0;y<U.length;y++){var R=b.style[U[y]];P.push(c[U[y]].subDefVal);L.push(null!=R?R.split(","):[])}x.dependentPropsDefVal=P;x.dependentPropsVals=L}k.appendChild(r(D,w,x,p,q));p=!p}}for(y=0;y<u.length;y++)for(x=u[y],c=x.parentRow,b=0;b<x.values.length;b++)D=r(x.name, -x.values[b],{type:x.type,parentRow:x.parentRow,isDeletable:x.isDeletable,index:b,defVal:x.defVal,countProperty:x.countProperty,size:x.size},0==b%2,x.flipBkg),c.parentNode.insertBefore(D,c.nextSibling),c=D;a.appendChild(k);A();return a};StyleFormatPanel.prototype.addStyles=function(a){function c(a){function c(a){var c=mxUtils.button("",function(c){d.getModel().beginUpdate();try{var b=d.getSelectionCells();for(c=0;c<b.length;c++){for(var g=d.getModel().getStyle(b[c]),h=0;h<f.length;h++)g=mxUtils.removeStylename(g, -f[h]);var l=d.getModel().isVertex(b[c])?d.defaultVertexStyle:d.defaultEdgeStyle;null!=a?(g=mxUtils.setStyle(g,mxConstants.STYLE_FILLCOLOR,a.fill||mxUtils.getValue(l,mxConstants.STYLE_FILLCOLOR,null)),g=mxUtils.setStyle(g,mxConstants.STYLE_STROKECOLOR,a.stroke||mxUtils.getValue(l,mxConstants.STYLE_STROKECOLOR,null)),g=mxUtils.setStyle(g,mxConstants.STYLE_GRADIENTCOLOR,a.gradient||mxUtils.getValue(l,mxConstants.STYLE_GRADIENTCOLOR,null)),d.getModel().isVertex(b[c])&&(g=mxUtils.setStyle(g,mxConstants.STYLE_FONTCOLOR, -a.font||mxUtils.getValue(l,mxConstants.STYLE_FONTCOLOR,null)))):(g=mxUtils.setStyle(g,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(l,mxConstants.STYLE_FILLCOLOR,"#ffffff")),g=mxUtils.setStyle(g,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(l,mxConstants.STYLE_STROKECOLOR,"#000000")),g=mxUtils.setStyle(g,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(l,mxConstants.STYLE_GRADIENTCOLOR,null)),d.getModel().isVertex(b[c])&&(g=mxUtils.setStyle(g,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(l,mxConstants.STYLE_FONTCOLOR, -null))));d.getModel().setStyle(b[c],g)}}finally{d.getModel().endUpdate()}});c.className="geStyleButton";c.style.width="36px";c.style.height="30px";c.style.margin="0px 6px 6px 0px";if(null!=a)null!=a.gradient?mxClient.IS_IE&&(mxClient.IS_QUIRKS||10>document.documentMode)?c.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+a.fill+"', EndColorStr='"+a.gradient+"', GradientType=0)":c.style.backgroundImage="linear-gradient("+a.fill+" 0px,"+a.gradient+" 100%)":a.fill==mxConstants.NONE? -c.style.background="url('"+Dialog.prototype.noColorImage+"')":c.style.backgroundColor=a.fill||mxUtils.getValue(d.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),c.style.border="1px solid "+(a.stroke||mxUtils.getValue(d.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000"));else{var b=mxUtils.getValue(d.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),h=mxUtils.getValue(d.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");c.style.backgroundColor=b;c.style.border="1px solid "+ -h}g.appendChild(c)}g.innerHTML="";for(var b=0;b<a.length;b++)0<b&&0==mxUtils.mod(b,4)&&mxUtils.br(g),c(a[b])}function b(a){mxEvent.addListener(a,"mouseenter",function(){a.style.opacity="1"});mxEvent.addListener(a,"mouseleave",function(){a.style.opacity="0.5"})}var d=this.editorUi.editor.graph,g=document.createElement("div");g.style.whiteSpace="nowrap";g.style.paddingLeft="24px";g.style.paddingRight="20px";a.style.paddingLeft="16px";a.style.paddingBottom="6px";a.style.position="relative";a.appendChild(g); -var f="plain-gray plain-blue plain-green plain-turquoise plain-orange plain-yellow plain-red plain-pink plain-purple gray blue green turquoise orange yellow red pink purple".split(" ");null==this.editorUi.currentScheme&&(this.editorUi.currentScheme=0);var h=document.createElement("div");h.style.cssText="position:absolute;left:10px;top:8px;bottom:8px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);"; -mxEvent.addListener(h,"click",mxUtils.bind(this,function(){this.editorUi.currentScheme=mxUtils.mod(this.editorUi.currentScheme-1,this.defaultColorSchemes.length);c(this.defaultColorSchemes[this.editorUi.currentScheme])}));var l=document.createElement("div");l.style.cssText="position:absolute;left:202px;top:8px;bottom:8px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYBuwCcAAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADZJREFUCNdjQAOMAmBKaiGY8loF5rKswsZlrVo8AUiFrTICcbIWK8A5DF1gDoMymMPApIAwHwCS0Qx/U7qCBQAAAABJRU5ErkJggg==);"; -1<this.defaultColorSchemes.length&&(a.appendChild(h),a.appendChild(l));mxEvent.addListener(l,"click",mxUtils.bind(this,function(){this.editorUi.currentScheme=mxUtils.mod(this.editorUi.currentScheme+1,this.defaultColorSchemes.length);c(this.defaultColorSchemes[this.editorUi.currentScheme])}));b(h);b(l);c(this.defaultColorSchemes[this.editorUi.currentScheme]);return a};StyleFormatPanel.prototype.addEditOps=function(a){var c=this.format.getSelectionState(),b=null;1==this.editorUi.editor.graph.getSelectionCount()&& -(b=mxUtils.button(mxResources.get("editStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("editStyle").funct()})),b.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),b.style.width="202px",b.style.marginBottom="2px",a.appendChild(b));var d=this.editorUi.editor.graph,g=d.view.getState(d.getSelectionCell());1==d.getSelectionCount()&&null!=g&&null!=g.shape&&null!=g.shape.stencil?(c=mxUtils.button(mxResources.get("editShape"),mxUtils.bind(this, -function(a){this.editorUi.actions.get("editShape").funct()})),c.setAttribute("title",mxResources.get("editShape")),c.style.marginBottom="2px",null==b?c.style.width="202px":(b.style.width="100px",c.style.width="100px",c.style.marginLeft="2px"),a.appendChild(c)):c.image&&(c=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,function(a){this.editorUi.actions.get("image").funct()})),c.setAttribute("title",mxResources.get("editImage")),c.style.marginBottom="2px",null==b?c.style.width="202px": -(b.style.width="100px",c.style.width="100px",c.style.marginLeft="2px"),a.appendChild(c));return a}}Graph.prototype.defaultThemeName="default-style2";Graph.prototype.lastPasteXml=null;Graph.prototype.pasteCounter=0;Graph.prototype.defaultScrollbars="0"!=urlParams.sb;Graph.prototype.defaultPageVisible="0"!=urlParams.pv;Graph.prototype.shadowId="dropShadow";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity="0.4";Graph.prototype.svgShadowBlur="1.7";Graph.prototype.svgShadowSize= -"3";Graph.prototype.edgeMode="move"!=urlParams.edge;var l=Graph.prototype.init;Graph.prototype.init=function(){function a(a){c=a;if(mxClient.IS_QUIRKS||7==document.documentMode||8==document.documentMode)c=mxUtils.clone(a)}l.apply(this,arguments);var c=null;mxEvent.addListener(this.container,"mouseenter",a);mxEvent.addListener(this.container,"mousemove",a);mxEvent.addListener(this.container,"mouseleave",function(a){c=null});this.isMouseInsertPoint=function(){return null!=c};var b=this.getInsertPoint; -this.getInsertPoint=function(){return null!=c?this.getPointForEvent(c):b.apply(this,arguments)};var d=this.layoutManager.getLayout;this.layoutManager.getLayout=function(a){var c=this.graph.view.getState(a),c=null!=c?c.style:this.graph.getCellStyle(a);if(null!=c){if("undefined"!=typeof mxRackContainer&&"rack"==c.childLayout){var b=new mxStackLayout(this.graph,!1);b.setChildGeometry=function(a,c){c.height=Math.max(c.height,20);if(1<c.height/20){var b=c.height%20;c.height+=10<b?20-b:-b}this.graph.getModel().setGeometry(a, -c)};b.fill=!0;b.unitSize=mxRackContainer.unitSize|20;b.marginLeft=c.marginLeft||0;b.marginRight=c.marginRight||0;b.marginTop=c.marginTop||0;b.marginBottom=c.marginBottom||0;b.resizeParent=!1;return b}if("undefined"!=typeof mxTableLayout&&"tableLayout"==c.childLayout)return b=new mxTableLayout(this.graph),b.rows=c.tableRows||2,b.columns=c.tableColumns||2,b.colPercentages=c.colPercentages,b.rowPercentages=c.rowPercentages,b.equalColumns="1"==mxUtils.getValue(c,"equalColumns",b.colPercentages?"0":"1"), -b.equalRows="1"==mxUtils.getValue(c,"equalRows",b.rowPercentages?"0":"1"),b.resizeParent="1"==mxUtils.getValue(c,"resizeParent","1"),b.border=c.tableBorder||b.border,b.marginLeft=c.marginLeft||0,b.marginRight=c.marginRight||0,b.marginTop=c.marginTop||0,b.marginBottom=c.marginBottom||0,b.autoAddCol="1"==mxUtils.getValue(c,"autoAddCol","0"),b.autoAddRow="1"==mxUtils.getValue(c,"autoAddRow",b.autoAddCol?"0":"1"),b.colWidths=c.colWidths||"100",b.rowHeights=c.rowHeights||"50",b}return d.apply(this,arguments)}}; -var t=Graph.prototype.isCssTransformsSupported;Graph.prototype.isCssTransformsSupported=function(){return t.apply(this,arguments)&&!mxClient.IS_SF};var m=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(a){var c=m.apply(this,arguments);if(null==c){if(null==this.globalUrlVars&&null!=urlParams.vars)try{this.globalUrlVars=JSON.parse(decodeURIComponent(urlParams.vars))}catch(A){null!=window.console&&console.log("Error in vars URL parameter: "+A)}null!=this.globalUrlVars&&(c= -this.globalUrlVars[a])}return c};var r=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){r.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var a=this.getDrawPane().parentNode;!this.graph.mathEnabled||mxClient.NO_FO||null!=this.webKitForceRepaintNode&&null!=this.webKitForceRepaintNode.parentNode||"svg"!=this.graph.container.firstChild.nodeName?null==this.webKitForceRepaintNode||this.graph.mathEnabled&&("svg"==this.graph.container.firstChild.nodeName|| -this.graph.container.firstChild==this.webKitForceRepaintNode)||(null!=this.webKitForceRepaintNode.parentNode&&this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",a.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,a.ownerSVGElement))}};var x=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet= -function(){x.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(a){if("data:action/json,"==a.substring(0,17)&&(a=JSON.parse(a.substring(17)),null!=a.actions)){for(var c=0;c<a.actions.length;c++)if(null!=a.actions[c].open)if(this.isCustomLink(a.actions[c].open)){if(!this.customLinkClicked(a.actions[c].open))return}else this.openLink(a.actions[c].open);this.model.beginUpdate();try{for(c=0;c<a.actions.length;c++)this.handleLinkAction(a.actions[c])}finally{this.model.endUpdate()}}}; -Graph.prototype.handleLinkAction=function(a){var c=[];null!=a.select&&this.isEnabled()&&(c=this.getCellsForAction(a.select),this.setSelectionCells(c));null!=a.highlight&&(c=this.getCellsForAction(a.highlight),this.highlightCells(c,a.highlight.color,a.highlight.duration,a.highlight.opacity));null!=a.toggle&&this.toggleCells(this.getCellsForAction(a.toggle));null!=a.show&&this.setCellsVisible(this.getCellsForAction(a.show),!0);null!=a.hide&&this.setCellsVisible(this.getCellsForAction(a.hide),!1);null!= -a.scroll&&(c=this.getCellsForAction(a.scroll));0<c.length&&this.scrollCellToVisible(c[0])};Graph.prototype.getCellsForAction=function(a){return this.getCellsById(a.cells).concat(this.getCellsForTags(a.tags))};Graph.prototype.getCellsById=function(a){var c=[];if(null!=a)for(var b=0;b<a.length;b++)if("*"==a[b])var d=this.getDefaultParent(),c=c.concat(this.model.filterDescendants(function(a){return a!=d},d));else{var g=this.model.getCell(a[b]);null!=g&&c.push(g)}return c};Graph.prototype.getCellsForTags= -function(a,c,b){var d=[];if(null!=a){c=null!=c?c:this.model.getDescendants(this.model.getRoot());b=null!=b?b:"tags";for(var g=0;g<c.length;g++)if(this.model.isVertex(c[g])||this.model.isEdge(c[g])){var f=null!=c[g].value&&"object"==typeof c[g].value?mxUtils.trim(c[g].value.getAttribute(b)||""):"",h=!0;if(0<f.length)for(var f=f.toLowerCase().split(" "),l=0;l<a.length&&h;l++)var m=mxUtils.trim(a[l]).toLowerCase(),h=h&&(0==m.length||0<=mxUtils.indexOf(f,m));else h=0==a.length;h&&d.push(c[g])}}return d}; -Graph.prototype.toggleCells=function(a){this.model.beginUpdate();try{for(var c=0;c<a.length;c++)this.model.setVisible(a[c],!this.model.isVisible(a[c]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(a,c){this.model.beginUpdate();try{for(var b=0;b<a.length;b++)this.model.setVisible(a[b],c)}finally{this.model.endUpdate()}};Graph.prototype.highlightCells=function(a,c,b,d){for(var g=0;g<a.length;g++)this.highlightCell(a[g],c,b,d)};Graph.prototype.highlightCell=function(a,c, -b,d){c=null!=c?c:mxConstants.DEFAULT_VALID_COLOR;b=null!=b?b:1E3;a=this.view.getState(a);if(null!=a){var g=Math.max(5,mxUtils.getValue(a.style,mxConstants.STYLE_STROKEWIDTH,1)+4),f=new mxCellHighlight(this,c,g,!1);null!=d&&(f.opacity=d);f.highlight(a);window.setTimeout(function(){null!=f.shape&&(mxUtils.setPrefixedStyle(f.shape.node.style,"transition","all 1200ms ease-in-out"),f.shape.node.style.opacity=0);window.setTimeout(function(){f.destroy()},1200)},b)}};Graph.prototype.addSvgShadow=function(a, -c,b){b=null!=b?b:!1;var d=a.ownerDocument,g=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG,"filter"):d.createElement("filter");g.setAttribute("id",this.shadowId);var f=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):d.createElement("feGaussianBlur");f.setAttribute("in","SourceAlpha");f.setAttribute("stdDeviation",this.svgShadowBlur);f.setAttribute("result","blur");g.appendChild(f);f=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG,"feOffset"): -d.createElement("feOffset");f.setAttribute("in","blur");f.setAttribute("dx",this.svgShadowSize);f.setAttribute("dy",this.svgShadowSize);f.setAttribute("result","offsetBlur");g.appendChild(f);f=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG,"feFlood"):d.createElement("feFlood");f.setAttribute("flood-color",this.svgShadowColor);f.setAttribute("flood-opacity",this.svgShadowOpacity);f.setAttribute("result","offsetColor");g.appendChild(f);f=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG, -"feComposite"):d.createElement("feComposite");f.setAttribute("in","offsetColor");f.setAttribute("in2","offsetBlur");f.setAttribute("operator","in");f.setAttribute("result","offsetBlur");g.appendChild(f);f=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG,"feBlend"):d.createElement("feBlend");f.setAttribute("in","SourceGraphic");f.setAttribute("in2","offsetBlur");g.appendChild(f);f=a.getElementsByTagName("defs");0==f.length?(d=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG, -"defs"):d.createElement("defs"),null!=a.firstChild?a.insertBefore(d,a.firstChild):a.appendChild(d)):d=f[0];d.appendChild(g);b||((c||a.getElementsByTagName("g")[0]).setAttribute("filter","url(#"+this.shadowId+")"),isNaN(parseInt(a.getAttribute("width")))||(a.setAttribute("width",parseInt(a.getAttribute("width"))+6),a.setAttribute("height",parseInt(a.getAttribute("height"))+6)));return g};Graph.prototype.setShadowVisible=function(a,c){mxClient.IS_SVG&&(c=null!=c?c:!0,(this.shadowVisible=a)?this.view.getDrawPane().setAttribute("filter", -"url(#"+this.shadowId+")"):this.view.getDrawPane().removeAttribute("filter"),c&&this.fireEvent(new mxEventObject("shadowVisibleChanged")))};Graph.prototype.selectUnlockedLayer=function(){if(null==this.defaultParent){var a=this.model.getChildCount(this.model.root),c,b=0;do c=this.model.getChildAt(this.model.root,b);while(b++<a&&"1"==mxUtils.getValue(this.getCellStyle(c),"locked","0"));null!=c&&this.setDefaultParent(c)}};mxStencilRegistry.libraries.mockup=[SHAPES_PATH+"/mockup/mxMockupButtons.js"]; -mxStencilRegistry.libraries.arrows2=[SHAPES_PATH+"/mxArrows.js"];mxStencilRegistry.libraries.atlassian=[STENCIL_PATH+"/atlassian.xml",SHAPES_PATH+"/mxAtlassian.js"];mxStencilRegistry.libraries.bpmn=[SHAPES_PATH+"/bpmn/mxBpmnShape2.js",STENCIL_PATH+"/bpmn.xml"];mxStencilRegistry.libraries.dfd=[SHAPES_PATH+"/mxDFD.js"];mxStencilRegistry.libraries.er=[SHAPES_PATH+"/er/mxER.js"];mxStencilRegistry.libraries.flowchart=[SHAPES_PATH+"/mxFlowchart.js",STENCIL_PATH+"/flowchart.xml"];mxStencilRegistry.libraries.ios= -[SHAPES_PATH+"/mockup/mxMockupiOS.js"];mxStencilRegistry.libraries.rackGeneral=[SHAPES_PATH+"/rack/mxRack.js",STENCIL_PATH+"/rack/general.xml"];mxStencilRegistry.libraries.rackF5=[STENCIL_PATH+"/rack/f5.xml"];mxStencilRegistry.libraries.lean_mapping=[SHAPES_PATH+"/mxLeanMap.js",STENCIL_PATH+"/lean_mapping.xml"];mxStencilRegistry.libraries.basic=[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/basic.xml"];mxStencilRegistry.libraries.ios7icons=[STENCIL_PATH+"/ios7/icons.xml"];mxStencilRegistry.libraries.ios7ui= -[SHAPES_PATH+"/ios7/mxIOS7Ui.js",STENCIL_PATH+"/ios7/misc.xml"];mxStencilRegistry.libraries.android=[SHAPES_PATH+"/mxAndroid.js",STENCIL_PATH+"/android/android.xml"];mxStencilRegistry.libraries["electrical/transmission"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/transmission.xml"];mxStencilRegistry.libraries["electrical/logic_gates"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/logic_gates.xml"];mxStencilRegistry.libraries["electrical/abstract"]=[SHAPES_PATH+"/mxElectrical.js", -STENCIL_PATH+"/electrical/abstract.xml"];mxStencilRegistry.libraries.infographic=[SHAPES_PATH+"/mxInfographic.js"];mxStencilRegistry.libraries["mockup/buttons"]=[SHAPES_PATH+"/mockup/mxMockupButtons.js"];mxStencilRegistry.libraries["mockup/containers"]=[SHAPES_PATH+"/mockup/mxMockupContainers.js"];mxStencilRegistry.libraries["mockup/forms"]=[SHAPES_PATH+"/mockup/mxMockupForms.js"];mxStencilRegistry.libraries["mockup/graphics"]=[SHAPES_PATH+"/mockup/mxMockupGraphics.js",STENCIL_PATH+"/mockup/misc.xml"]; -mxStencilRegistry.libraries["mockup/markup"]=[SHAPES_PATH+"/mockup/mxMockupMarkup.js"];mxStencilRegistry.libraries["mockup/misc"]=[SHAPES_PATH+"/mockup/mxMockupMisc.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/navigation"]=[SHAPES_PATH+"/mockup/mxMockupNavigation.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/text"]=[SHAPES_PATH+"/mockup/mxMockupText.js"];mxStencilRegistry.libraries.floorplan=[SHAPES_PATH+"/mxFloorplan.js",STENCIL_PATH+"/floorplan.xml"]; -mxStencilRegistry.libraries.bootstrap=[SHAPES_PATH+"/mxBootstrap.js",STENCIL_PATH+"/bootstrap.xml"];mxStencilRegistry.libraries.gmdl=[SHAPES_PATH+"/mxGmdl.js",STENCIL_PATH+"/gmdl.xml"];mxStencilRegistry.libraries.gcp2=[SHAPES_PATH+"/mxGCP2.js",STENCIL_PATH+"/gcp2.xml"];mxStencilRegistry.libraries.cabinets=[SHAPES_PATH+"/mxCabinets.js",STENCIL_PATH+"/cabinets.xml"];mxStencilRegistry.libraries.archimate=[SHAPES_PATH+"/mxArchiMate.js"];mxStencilRegistry.libraries.archimate3=[SHAPES_PATH+"/mxArchiMate3.js"]; -mxStencilRegistry.libraries.sysml=[SHAPES_PATH+"/mxSysML.js"];mxStencilRegistry.libraries.eip=[SHAPES_PATH+"/mxEip.js",STENCIL_PATH+"/eip.xml"];mxStencilRegistry.libraries.networks=[SHAPES_PATH+"/mxNetworks.js",STENCIL_PATH+"/networks.xml"];mxStencilRegistry.libraries.aws3d=[SHAPES_PATH+"/mxAWS3D.js",STENCIL_PATH+"/aws3d.xml"];mxStencilRegistry.libraries.aws4=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.veeam=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml", -STENCIL_PATH+"/veeam/veeam.xml"];mxStencilRegistry.libraries.pid2inst=[SHAPES_PATH+"/pid2/mxPidInstruments.js"];mxStencilRegistry.libraries.pid2misc=[SHAPES_PATH+"/pid2/mxPidMisc.js",STENCIL_PATH+"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"];mxMarker.getPackageForType=function(a){var c=null;null!=a&&0<a.length&&("ER"==a.substring(0,2)?c="mxgraph.er":"sysML"==a.substring(0, -5)&&(c="mxgraph.sysml"));return c};var v=mxMarker.createMarker;mxMarker.createMarker=function(a,c,b,d,g,f,h,l,m,r){if(null!=b&&null==mxMarker.markers[b]){var t=this.getPackageForType(b);null!=t&&mxStencilRegistry.getStencil(t)}return v.apply(this,arguments)};PrintDialog.prototype.create=function(a,c){function b(){x.value=Math.max(1,Math.min(l,Math.max(parseInt(x.value),parseInt(k.value))));k.value=Math.max(1,Math.min(l,Math.min(parseInt(x.value),parseInt(k.value))))}function d(c){function b(c,b,g){var f= -c.getGraphBounds(),h=0,l=0,m=X.get(),r=1/c.pageScale,t=y.checked;if(t)var r=parseInt(E.value),v=parseInt(ea.value),r=Math.min(m.height*v/(f.height/c.view.scale),m.width*r/(f.width/c.view.scale));else r=parseInt(p.value)/(100*c.pageScale),isNaN(r)&&(d=1/c.pageScale,p.value="100 %");m=mxRectangle.fromRectangle(m);m.width=Math.ceil(m.width*d);m.height=Math.ceil(m.height*d);r*=d;!t&&c.pageVisible?(f=c.getPageLayout(),h-=f.x*m.width,l-=f.y*m.height):t=!0;if(null==b){b=PrintDialog.createPrintPreview(c, -r,m,0,h,l,t);b.pageSelector=!1;b.mathEnabled=!1;c=a.getCurrentFile();null!=c&&(b.title=c.getTitle());var k=b.writeHead;b.writeHead=function(c){k.apply(this,arguments);null!=a.editor.fontCss&&(c.writeln('<style type="text/css">'),c.writeln(a.editor.fontCss),c.writeln("</style>"))};if("undefined"!==typeof MathJax){var x=b.renderPage;b.renderPage=function(a,c,b,d,g,f){var h=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;var l=x.apply(this, -arguments);mxClient.NO_FO=h;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:l.className="geDisableMathJax";return l}}b.open(null,null,g,!0)}else{m=c.background;if(null==m||""==m||m==mxConstants.NONE)m="#ffffff";b.backgroundColor=m;b.autoOrigin=t;b.appendGraph(c,r,h,l,g,!0)}return b}var d=parseInt(Z.value)/100;isNaN(d)&&(d=1,Z.value="100 %");var d=.75*d,f=k.value,h=x.value,l=!t.checked,r=null;l&&(l=f==m&&h==m);if(!l&&null!=a.pages&&a.pages.length){var v=0,l=a.pages.length-1;t.checked|| -(v=parseInt(f)-1,l=parseInt(h)-1);for(var u=v;u<=l;u++){var n=a.pages[u],f=n==a.currentPage?g:null;if(null==f){var f=a.createTemporaryGraph(g.getStylesheet()),h=!0,v=!1,z=null,A=null;null==n.viewState&&null==n.root&&a.updatePageRoot(n);null!=n.viewState&&(h=n.viewState.pageVisible,v=n.viewState.mathEnabled,z=n.viewState.background,A=n.viewState.backgroundImage);f.background=z;f.backgroundImage=null!=A?new mxImage(A.src,A.width,A.height):null;f.pageVisible=h;f.mathEnabled=v;var D=f.getGlobalVariable; -f.getGlobalVariable=function(a){return"page"==a?n.getName():"pagenumber"==a?u+1:D.apply(this,arguments)};document.body.appendChild(f.container);a.updatePageRoot(n);f.model.setRoot(n.root)}r=b(f,r,u!=l);f!=g&&f.container.parentNode.removeChild(f.container)}}else r=b(g);r.mathEnabled&&(l=r.wnd.document,l.writeln('<script type="text/x-mathjax-config">'),l.writeln("MathJax.Hub.Config({"),l.writeln("showMathMenu: false,"),l.writeln('messageStyle: "none",'),l.writeln('jax: ["input/TeX", "input/MathML", "input/AsciiMath", "output/HTML-CSS"],'), -l.writeln('extensions: ["tex2jax.js", "mml2jax.js", "asciimath2jax.js"],'),l.writeln('"HTML-CSS": {'),l.writeln("imageFont: null"),l.writeln("},"),l.writeln("TeX: {"),l.writeln('extensions: ["AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js"]'),l.writeln("},"),l.writeln("tex2jax: {"),l.writeln('\tignoreClass: "geDisableMathJax"'),l.writeln("},"),l.writeln("asciimath2jax: {"),l.writeln('\tignoreClass: "geDisableMathJax"'),l.writeln("}"),l.writeln("});"),c&&(l.writeln("MathJax.Hub.Queue(function () {"), -l.writeln("window.print();"),l.writeln("});")),l.writeln("\x3c/script>"),l.writeln('<script type="text/javascript" src="https://math.draw.io/current/MathJax.js">\x3c/script>'));r.closeDocument();!r.mathEnabled&&c&&PrintDialog.printPreview(r)}var g=a.editor.graph,f=document.createElement("div"),h=document.createElement("h3");h.style.width="100%";h.style.textAlign="center";h.style.marginTop="0px";mxUtils.write(h,c||mxResources.get("print"));f.appendChild(h);var l=1,m=1,r=document.createElement("div"); -r.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var t=document.createElement("input");t.style.cssText="margin-right:8px;margin-bottom:8px;";t.setAttribute("value","all");t.setAttribute("type","radio");t.setAttribute("name","pages-printdialog");r.appendChild(t);h=document.createElement("span");mxUtils.write(h,mxResources.get("printAllPages"));r.appendChild(h);mxUtils.br(r);var v=t.cloneNode(!0);t.setAttribute("checked","checked");v.setAttribute("value","range"); -r.appendChild(v);h=document.createElement("span");mxUtils.write(h,mxResources.get("pages")+":");r.appendChild(h);var k=document.createElement("input");k.style.cssText="margin:0 8px 0 8px;";k.setAttribute("value","1");k.setAttribute("type","number");k.setAttribute("min","1");k.style.width="50px";r.appendChild(k);h=document.createElement("span");mxUtils.write(h,mxResources.get("to"));r.appendChild(h);var x=k.cloneNode(!0);r.appendChild(x);mxEvent.addListener(k,"focus",function(){v.checked=!0});mxEvent.addListener(x, -"focus",function(){v.checked=!0});mxEvent.addListener(k,"change",b);mxEvent.addListener(x,"change",b);if(null!=a.pages&&(l=a.pages.length,null!=a.currentPage))for(h=0;h<a.pages.length;h++)if(a.currentPage==a.pages[h]){m=h+1;k.value=m;x.value=m;break}k.setAttribute("max",l);x.setAttribute("max",l);1<l&&f.appendChild(r);var u=document.createElement("div");u.style.marginBottom="10px";var n=document.createElement("input");n.style.marginRight="8px";n.setAttribute("value","adjust");n.setAttribute("type", -"radio");n.setAttribute("name","printZoom");u.appendChild(n);h=document.createElement("span");mxUtils.write(h,mxResources.get("adjustTo"));u.appendChild(h);var p=document.createElement("input");p.style.cssText="margin:0 8px 0 8px;";p.setAttribute("value","100 %");p.style.width="50px";u.appendChild(p);mxEvent.addListener(p,"focus",function(){n.checked=!0});f.appendChild(u);var r=r.cloneNode(!1),y=n.cloneNode(!0);y.setAttribute("value","fit");n.setAttribute("checked","checked");h=document.createElement("div"); -h.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";h.appendChild(y);r.appendChild(h);u=document.createElement("table");u.style.display="inline-block";var D=document.createElement("tbody"),q=document.createElement("tr"),w=q.cloneNode(!0),H=document.createElement("td"),U=H.cloneNode(!0),L=H.cloneNode(!0),P=H.cloneNode(!0),R=H.cloneNode(!0),ja=H.cloneNode(!0);H.style.textAlign="right";P.style.textAlign="right";mxUtils.write(H,mxResources.get("fitTo"));var E=document.createElement("input"); -E.style.cssText="margin:0 8px 0 8px;";E.setAttribute("value","1");E.setAttribute("min","1");E.setAttribute("type","number");E.style.width="40px";U.appendChild(E);h=document.createElement("span");mxUtils.write(h,mxResources.get("fitToSheetsAcross"));L.appendChild(h);mxUtils.write(P,mxResources.get("fitToBy"));var ea=E.cloneNode(!0);R.appendChild(ea);mxEvent.addListener(E,"focus",function(){y.checked=!0});mxEvent.addListener(ea,"focus",function(){y.checked=!0});h=document.createElement("span");mxUtils.write(h, -mxResources.get("fitToSheetsDown"));ja.appendChild(h);q.appendChild(H);q.appendChild(U);q.appendChild(L);w.appendChild(P);w.appendChild(R);w.appendChild(ja);D.appendChild(q);D.appendChild(w);u.appendChild(D);r.appendChild(u);f.appendChild(r);r=document.createElement("div");h=document.createElement("div");h.style.fontWeight="bold";h.style.marginBottom="12px";mxUtils.write(h,mxResources.get("paperSize"));r.appendChild(h);h=document.createElement("div");h.style.marginBottom="12px";var X=PageSetupDialog.addPageFormatPanel(h, -"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);r.appendChild(h);h=document.createElement("span");mxUtils.write(h,mxResources.get("pageScale"));r.appendChild(h);var Z=document.createElement("input");Z.style.cssText="margin:0 8px 0 8px;";Z.setAttribute("value","100 %");Z.style.width="60px";r.appendChild(Z);f.appendChild(r);h=document.createElement("div");h.style.cssText="text-align:right;margin:48px 0 0 0;";r=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()}); -r.className="geBtn";a.editor.cancelFirst&&h.appendChild(r);a.isOffline()||(u=mxUtils.button(mxResources.get("help"),function(){g.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),u.className="geBtn",h.appendChild(u));PrintDialog.previewEnabled&&(u=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();d(!1)}),u.className="geBtn",h.appendChild(u));u=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();d(!0)});u.className= -"geBtn gePrimaryBtn";h.appendChild(u);a.editor.cancelFirst||h.appendChild(r);f.appendChild(h);this.container=f};var D=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page=this.ui.currentPage);this.page!=this.ui.currentPage?null!=this.page.viewState&&(this.ignoreColor||(this.page.viewState.background=this.color),this.ignoreImage||(this.page.viewState.backgroundImage=this.image),null!=this.format&&(this.page.viewState.pageFormat=this.format),null!= -this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled),null!=this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)):(D.apply(this,arguments),null!=this.mathEnabled&&this.mathEnabled!=this.ui.isMathEnabled()&&(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled),null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=!this.shadowVisible))}})(); -var ErrorDialog=function(a,b,f,d,k,n,p,q,w,c,g){w=null!=w?w:!0;var h=document.createElement("div");h.style.textAlign="center";if(null!=b){var l=document.createElement("div");l.style.padding="0px";l.style.margin="0px";l.style.fontSize="18px";l.style.paddingBottom="16px";l.style.marginBottom="16px";l.style.borderBottom="1px solid #c0c0c0";l.style.color="gray";l.style.whiteSpace="nowrap";l.style.textOverflow="ellipsis";l.style.overflow="hidden";mxUtils.write(l,b);l.setAttribute("title",b);h.appendChild(l)}b= -document.createElement("div");b.style.padding="6px";b.innerHTML=f;h.appendChild(b);f=document.createElement("div");f.style.marginTop="16px";f.style.textAlign="center";null!=n&&(b=mxUtils.button(mxResources.get("tryAgain"),function(){a.hideDialog();n()}),b.className="geBtn",f.appendChild(b),f.style.textAlign="center");null!=c&&(c=mxUtils.button(c,function(){null!=g&&g()}),c.className="geBtn",f.appendChild(c));var t=mxUtils.button(d,function(){w&&a.hideDialog();null!=k&&k()});t.className="geBtn";f.appendChild(t); -null!=p&&(d=mxUtils.button(p,function(){w&&a.hideDialog();null!=q&&q()}),d.className="geBtn gePrimaryBtn",f.appendChild(d));this.init=function(){t.focus()};h.appendChild(f);this.container=h}; -(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,f,d){d.ui=a.ui;return f};a.afterDecode=function(a,f,d){d.previousColor=d.color;d.previousImage=d.image;d.previousFormat=d.format;null!=d.foldingEnabled&&(d.foldingEnabled=!d.foldingEnabled);null!=d.mathEnabled&&(d.mathEnabled=!d.mathEnabled);null!=d.shadowVisible&&(d.shadowVisible=!d.shadowVisible);return d};mxCodecRegistry.register(a)})();(function(){EditorUi.VERSION="@DRAWIO-VERSION@";EditorUi.compactUi="atlas"!=uiTheme;EditorUi.enableLogging="1"!=urlParams.stealth&&/.*\.draw\.io$/.test(window.location.hostname)&&"support.draw.io"!=window.location.hostname;EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.logError=function(a,b,d,f,t){if("1"==urlParams.dev)EditorUi.debug("logError",a,b,d,f,t);else if(EditorUi.enableLogging)try{if(a!=EditorUi.lastErrorMessage&&(null== -a||null==b||-1==a.indexOf("Script error")&&-1==a.indexOf("extension"))&&null!=a&&0>a.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=a;var c=0<=a.indexOf("NetworkError")||0<=a.indexOf("SecurityError")||0<=a.indexOf("NS_ERROR_FAILURE")||0<=a.indexOf("out of memory")?"CONFIG":"SEVERE",g=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=g+"/log?severity="+c+"&v="+encodeURIComponent(EditorUi.VERSION)+"&msg=clientError:"+encodeURIComponent(a)+":url:"+encodeURIComponent(window.location.href)+ -":lnum:"+encodeURIComponent(d)+(null!=f?":colno:"+encodeURIComponent(f):"")+(null!=t&&null!=t.stack?"&stack="+encodeURIComponent(t.stack):"")}}catch(x){}};EditorUi.logEvent=function(a){if("1"==urlParams.dev)EditorUi.debug("logEvent",a);else if(EditorUi.enableLogging)try{var c=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=c+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=a?"&data="+encodeURIComponent(JSON.stringify(a)):"")}catch(h){}};EditorUi.sendReport=function(a, -b){if("1"==urlParams.dev)EditorUi.debug("sendReport",a);else if(EditorUi.enableLogging)try{b=null!=b?b:5E4,a.length>b&&(a=a.substring(0,b)+"\n...[SHORTENED]"),mxUtils.post("/email","version="+encodeURIComponent(EditorUi.VERSION)+"&url="+encodeURIComponent(window.location.href)+"&data="+encodeURIComponent(a))}catch(h){}};EditorUi.debug=function(){if(null!=window.console&&"1"==urlParams.test){for(var a=[(new Date).toISOString()],b=0;b<arguments.length;b++)a.push(arguments[b]);console.log.apply(console, -a)}};EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.scratchpadHelpLink="https://desk.draw.io/support/solutions/articles/16000042367";EditorUi.prototype.emptyDiagramXml='<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/></root></mxGraphModel>';EditorUi.prototype.emptyLibraryXml="<mxlibrary>[]</mxlibrary>"; -EditorUi.prototype.mode=null;EditorUi.prototype.sidebarFooterHeight=36;EditorUi.prototype.defaultCustomShapeStyle="shape=stencil(tZRtTsQgEEBPw1+DJR7AoN6DbWftpAgE0Ortd/jYRGq72R+YNE2YgTePloEJGWblgA18ZuKFDcMj5/Sm8boZq+BgjCX4pTyqk6ZlKROitwusOMXKQDODx5iy4pXxZ5qTHiFHawxB0JrQZH7lCabQ0Fr+XWC1/E8zcsT/gAi+Subo2/3Mh6d/oJb5nU1b5tW7r2knautaa3T+U32o7f7vZwpJkaNDLORJjcu7t59m2jXxqX9un+tt022acsfmoKaQZ+vhhswZtS6Ne/ThQGt0IV0N3Yyv6P3CeT9/tHO0XFI5cAE=);whiteSpace=wrap;html=1;";EditorUi.prototype.svgBrokenImage=Graph.createSvgImage(10, -10,'<rect x="0" y="0" width="10" height="10" stroke="#000" fill="transparent"/><path d="m 0 0 L 10 10 L 0 10 L 10 0" stroke="#000" fill="transparent"/>');EditorUi.prototype.crossOriginImages=!mxClient.IS_IE;EditorUi.prototype.maxBackgroundSize=1600;EditorUi.prototype.maxImageSize=520;EditorUi.prototype.resampleThreshold=1E5;EditorUi.prototype.maxImageBytes=1E6;EditorUi.prototype.maxBackgroundBytes=25E5;EditorUi.prototype.currentFile=null;EditorUi.prototype.printPdfExport=!1;EditorUi.prototype.pdfPageExport= -!0;EditorUi.prototype.formatEnabled="0"!=urlParams.format;EditorUi.prototype.insertTemplateEnabled=!0;EditorUi.prototype.closableScratchpad=!0;(function(){EditorUi.prototype.useCanvasForExport=!1;EditorUi.prototype.jpgSupported=!1;try{var a=document.createElement("canvas");EditorUi.prototype.canvasSupported=!(!a.getContext||!a.getContext("2d"))}catch(t){}try{var b=document.createElement("canvas"),d=new Image;d.onload=function(){try{b.getContext("2d").drawImage(d,0,0);var a=b.toDataURL("image/png"); -EditorUi.prototype.useCanvasForExport=null!=a&&6<a.length}catch(m){}};d.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(t){}try{b=document.createElement("canvas");b.width=b.height=1;var f=b.toDataURL("image/jpeg");EditorUi.prototype.jpgSupported= -null!==f.match("image/jpeg")}catch(t){}})();EditorUi.prototype.openLink=function(a,b,d){return this.editor.graph.openLink(a,b,d)};EditorUi.prototype.showSplash=function(a){};EditorUi.prototype.getLocalData=function(a,b){b(localStorage.getItem(a))};EditorUi.prototype.setLocalData=function(a,b,d){localStorage.setItem(a,b);null!=d&&d()};EditorUi.prototype.removeLocalData=function(a,b){localStorage.removeItem(a);b()};EditorUi.prototype.setMathEnabled=function(a){this.editor.graph.mathEnabled=a;this.editor.updateGraphComponents(); -this.editor.graph.refresh();this.fireEvent(new mxEventObject("mathEnabledChanged"))};EditorUi.prototype.isMathEnabled=function(a){return this.editor.graph.mathEnabled};EditorUi.prototype.isAppCache=function(){return"1"==urlParams.appcache||this.isOfflineApp()};EditorUi.prototype.isOfflineApp=function(){return"1"==urlParams.offline};EditorUi.prototype.isOffline=function(){return this.isOfflineApp()||!navigator.onLine||"1"==urlParams.stealth};EditorUi.prototype.createSpinner=function(a,b,d){d=null!= -d?d:24;var c=new Spinner({lines:12,length:d,width:Math.round(d/3),radius:Math.round(d/2),rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),g=c.spin;c.spin=function(d,f){var h=!1;this.active||(g.call(this,d),this.active=!0,null!=f&&(h=document.createElement("div"),h.style.position="absolute",h.style.whiteSpace="nowrap",h.style.background="#4B4243",h.style.color="white",h.style.fontFamily="Helvetica, Arial",h.style.fontSize="9pt",h.style.padding="6px", -h.style.paddingLeft="10px",h.style.paddingRight="10px",h.style.zIndex=2E9,h.style.left=Math.max(0,a)+"px",h.style.top=Math.max(0,b+70)+"px",mxUtils.setPrefixedStyle(h.style,"borderRadius","6px"),mxUtils.setPrefixedStyle(h.style,"transform","translate(-50%,-50%)"),"dark"!=uiTheme&&mxUtils.setPrefixedStyle(h.style,"boxShadow","2px 2px 3px 0px #ddd"),"..."!=f.substring(f.length-3,f.length)&&(f+="..."),h.innerHTML=f,d.appendChild(h),c.status=h,mxClient.IS_VML&&(null==document.documentMode||8>=document.documentMode)&& -(h.style.left=Math.round(Math.max(0,a-h.offsetWidth/2))+"px",h.style.top=Math.round(Math.max(0,b+70-h.offsetHeight/2))+"px")),this.pause=mxUtils.bind(this,function(){var a=function(){};this.active&&(a=mxUtils.bind(this,function(){this.spin(d,f)}));this.stop();return a}),h=!0);return h};var f=c.stop;c.stop=function(){f.call(this);this.active=!1;null!=c.status&&(c.status.parentNode.removeChild(c.status),c.status=null)};c.pause=function(){return function(){}};return c};EditorUi.parsePng=function(a,b, -d){function c(a,c){var b=f;f+=c;return a.substring(b,f)}function g(a){a=c(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}var f=0;if(c(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=d&&d();else if(c(a,4),"IHDR"!=c(a,4))null!=d&&d();else{c(a,17);do{d=g(a);var h=c(a,4);if(null!=b&&b(f-8,h,d))break;value=c(a,d);c(a,4);if("IEND"==h)break}while(d)}};EditorUi.prototype.isCompatibleString=function(a){try{var c=mxUtils.parseXml(a), -b=this.editor.extractGraphModel(c.documentElement,!0);return null!=b&&0==b.getElementsByTagName("parsererror").length}catch(l){}return!1};var a=EditorUi.prototype.extractGraphModelFromHtml;EditorUi.prototype.extractGraphModelFromHtml=function(c){var b=a.apply(this,arguments);if(null==b)try{var d=c.indexOf("<mxfile ");if(0<=d){var f=c.lastIndexOf("</mxfile>");f>d&&(b=c.substring(d,f+15).replace(/>/g,">").replace(/</g,"<").replace(/\\"/g,'"').replace(/\n/g,""))}else var t=mxUtils.parseXml(c), -m=this.editor.extractGraphModel(t.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility),b=null!=m?mxUtils.getXml(m):""}catch(r){}return b};EditorUi.prototype.validateFileData=function(a){if(null!=a&&0<a.length){var c=a.indexOf('<meta charset="utf-8">');0<=c&&(a=a.slice(0,c)+'<meta charset="utf-8"/>'+a.slice(c+23-1,a.length));a=this.editor.graph.zapGremlins(a)}return a};EditorUi.prototype.replaceFileData=function(a){a=this.validateFileData(a);a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement: -null;var c=null!=a?this.editor.extractGraphModel(a,!0):null;null!=c&&(a=c);if(null!=a){c=this.editor.graph;c.model.beginUpdate();try{var b=null!=this.pages?this.pages.slice():null,d=a.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<d.length||1==d.length&&d[0].hasAttribute("name")){this.fileNode=a;this.pages=null!=this.pages?this.pages:[];for(var f=d.length-1;0<=f;f--){var m=this.updatePageRoot(new DiagramPage(d[f]));null==m.getName()&&m.setName(mxResources.get("pageWithNumber",[f+1])); -c.model.execute(new ChangePage(this,m,0==f?m:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),c.model.execute(new ChangePage(this,this.currentPage,this.currentPage,0))),this.editor.setGraphXml(a),null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=b)for(f=0;f<b.length;f++)c.model.execute(new ChangePage(this, -b[f],null))}finally{c.model.endUpdate()}}};EditorUi.prototype.createFileData=function(a,b,d,f,t,m,r,k,v,n){b=null!=b?b:this.editor.graph;t=null!=t?t:!1;v=null!=v?v:!0;var c,g=null;null==d||d.getMode()==App.MODE_DEVICE||d.getMode()==App.MODE_BROWSER?c="_blank":g=c=f;if(null==a)return"";var h=a;if("mxfile"!=h.nodeName.toLowerCase()){var l=b.zapGremlins(mxUtils.getXml(a)),h=b.compress(l);if(b.decompress(h)!=l)return l;l=a.ownerDocument.createElement("diagram");l.setAttribute("id",Editor.guid());mxUtils.setTextContent(l, -h);h=a.ownerDocument.createElement("mxfile");h.appendChild(l)}n?(h=h.cloneNode(!0),h.removeAttribute("userAgent"),h.removeAttribute("version"),h.removeAttribute("editor"),h.removeAttribute("type")):(h.removeAttribute("userAgent"),h.removeAttribute("version"),h.removeAttribute("editor"),h.removeAttribute("type"),h.setAttribute("modified",(new Date).toISOString()),h.setAttribute("host",window.location.hostname),h.setAttribute("agent",navigator.userAgent),h.setAttribute("version",EditorUi.VERSION),h.setAttribute("etag", -Editor.guid()),a=null!=d?d.getMode():this.mode,null!=a&&h.setAttribute("type",a));a=mxUtils.getXml(h);if(!m&&!t&&(r||null!=d&&/(\.html)$/i.test(d.getTitle())))a=this.getHtml2(mxUtils.getXml(h),b,null!=d?d.getTitle():null,c,g);else if(m||!t&&null!=d&&/(\.svg)$/i.test(d.getTitle()))null==d||d.getMode()!=App.MODE_DEVICE&&d.getMode()!=App.MODE_BROWSER||(f=null),a=this.getEmbeddedSvg(a,b,f,null,k,v,g);return a};EditorUi.prototype.getXmlFileData=function(a,b){a=null!=a?a:!0;b=null!=b?b:!1;var c=this.editor.getGraphXml(a); -if(a&&null!=this.fileNode&&null!=this.currentPage)if(c=this.editor.graph.compress(this.editor.graph.zapGremlins(mxUtils.getXml(c))),mxUtils.setTextContent(this.currentPage.node,c),c=this.fileNode.cloneNode(!1),b)c.appendChild(this.currentPage.node);else for(var d=0;d<this.pages.length;d++){if(this.currentPage!=this.pages[d]&&this.pages[d].needsUpdate){var g=(new mxCodec(mxUtils.createXmlDocument())).encode(new mxGraphModel(this.pages[d].root));this.editor.graph.saveViewState(this.pages[d].viewState, -g);mxUtils.setTextContent(this.pages[d].node,this.editor.graph.compressNode(g));delete this.pages[d].needsUpdate}c.appendChild(this.pages[d].node)}return c};EditorUi.prototype.anonymizeString=function(a,b){for(var c=[],d=0;d<a.length;d++){var g=a.charAt(d);0<=EditorUi.ignoredAnonymizedChars.indexOf(g)?c.push(g):isNaN(parseInt(g))?g.toLowerCase()!=g?c.push(String.fromCharCode(65+Math.round(25*Math.random()))):g.toUpperCase()!=g?c.push(String.fromCharCode(97+Math.round(25*Math.random()))):/\s/.test(g)? -c.push(" "):c.push("?"):c.push(b?"0":Math.round(9*Math.random()))}return c.join("")};EditorUi.prototype.anonymizePatch=function(a){if(null!=a[EditorUi.DIFF_INSERT])for(var c=0;c<a[EditorUi.DIFF_INSERT].length;c++)try{var b=mxUtils.parseXml(a[EditorUi.DIFF_INSERT][c].data).documentElement.cloneNode(!1);null!=b.getAttribute("name")&&b.setAttribute("name",this.anonymizeString(b.getAttribute("name")));a[EditorUi.DIFF_INSERT][c].data=mxUtils.getXml(b)}catch(m){a[EditorUi.DIFF_INSERT][c].data=m.message}if(null!= -a[EditorUi.DIFF_UPDATE]){for(var d in a[EditorUi.DIFF_UPDATE]){var f=a[EditorUi.DIFF_UPDATE][d];null!=f.name&&(f.name=this.anonymizeString(f.name));null!=f.cells&&(c=mxUtils.bind(this,function(a){var c=f.cells[a];if(null!=c){for(var b in c)null!=c[b].value&&(c[b].value="["+c[b].value.length+"]"),null!=c[b].style&&(c[b].style="["+c[b].style.length+"]"),null!=c[b].geometry&&(c[b].geometry="["+c[b].geometry.length+"]"),0==Object.keys(c[b]).length&&delete c[b];0==Object.keys(c).length&&delete f.cells[a]}}), -c(EditorUi.DIFF_INSERT),c(EditorUi.DIFF_UPDATE),0==Object.keys(f.cells).length&&delete f.cells);0==Object.keys(f).length&&delete a[EditorUi.DIFF_UPDATE][d]}0==Object.keys(a[EditorUi.DIFF_UPDATE]).length&&delete a[EditorUi.DIFF_UPDATE]}return a};EditorUi.prototype.anonymizeAttributes=function(a,b){if(null!=a.attributes)for(var c=0;c<a.attributes.length;c++)"as"!=a.attributes[c].name&&a.setAttribute(a.attributes[c].name,this.anonymizeString(a.attributes[c].value,b));if(null!=a.childNodes)for(c=0;c< -a.childNodes.length;c++)this.anonymizeAttributes(a.childNodes[c],b)};EditorUi.prototype.anonymizeNode=function(a,b){for(var c=a.getElementsByTagName("mxCell"),d=0;d<c.length;d++)null!=c[d].getAttribute("value")&&c[d].setAttribute("value","["+c[d].getAttribute("value").length+"]"),null!=c[d].getAttribute("style")&&c[d].setAttribute("style","["+c[d].getAttribute("style").length+"]"),null!=c[d].parentNode&&"root"!=c[d].parentNode.nodeName&&null!=c[d].parentNode.parentNode&&(c[d].setAttribute("id",c[d].parentNode.getAttribute("id")), -c[d].parentNode.parentNode.replaceChild(c[d],c[d].parentNode));c=a.getElementsByTagName("mxGeometry");for(d=0;d<c.length;d++)this.anonymizeAttributes(c[d],b);return a};EditorUi.prototype.synchronizeCurrentFile=function(a){var c=this.getCurrentFile();null!=c&&(c.savingFile?this.handleError({message:mxResources.get("busy")}):!a&&c.invalidChecksum?c.handleFileError(null,!0):this.spinner.spin(document.body,mxResources.get("updatingDocument"))&&(c.clearAutosave(),this.editor.setStatus(""),a?c.reloadFile(mxUtils.bind(this, -function(){c.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){c.handleFileError(a,!0)})):c.synchronizeFile(mxUtils.bind(this,function(){c.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){c.handleFileError(a,!0)}))))};EditorUi.prototype.getFileData=function(a,b,d,f,t,m,r,k,v){t=null!=t?t:!0;r=null!=r?r:this.getXmlFileData(t,null!=m?m:!1);v=null!=v?v:this.getCurrentFile();m=this.editor.graph;if(null!=this.pages&&this.currentPage!=this.pages[0]&& -(b||!a&&null!=v&&/(\.svg)$/i.test(v.getTitle()))){m=this.createTemporaryGraph(m.getStylesheet());var c=m.getGlobalVariable,g=this.pages[0];m.getGlobalVariable=function(a){return"page"==a?g.getName():"pagenumber"==a?1:c.apply(this,arguments)};document.body.appendChild(m.container);m.model.setRoot(g.root)}a=this.createFileData(r,m,v,window.location.href,a,b,d,f,t,k);m!=this.editor.graph&&m.container.parentNode.removeChild(m.container);return a};EditorUi.prototype.getHtml=function(a,b,d,f,t,m){m=null!= -m?m:!0;var c=null,g="https://www.draw.io/js/embed-static.min.js";if(null!=b){var c=m?b.getGraphBounds():b.getBoundingBox(b.getSelectionCells()),h=b.view.scale;m=Math.floor(c.x/h-b.view.translate.x);h=Math.floor(c.y/h-b.view.translate.y);c=b.background;null==t&&(b=this.getBasenames().join(";"),0<b.length&&(g="https://www.draw.io/embed.js?s="+b));a.setAttribute("x0",m);a.setAttribute("y0",h)}null!=a&&(a.setAttribute("pan","1"),a.setAttribute("zoom","1"),a.setAttribute("resize","0"),a.setAttribute("fit", -"0"),a.setAttribute("border","20"),a.setAttribute("links","1"),null!=f&&a.setAttribute("edit",f));null!=t&&(t=t.replace(/&/g,"&"));a=null!=a?this.editor.graph.zapGremlins(mxUtils.getXml(a)):"";f=this.editor.graph.compress(a);this.editor.graph.decompress(f)!=a&&(f=encodeURIComponent(a));return(null==t?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=t?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null== -t?null!=d?"<title>"+mxUtils.htmlEntities(d)+"</title>\n":"":"<title>Draw.io Diagram</title>\n")+(null!=t?'<meta http-equiv="refresh" content="0;URL=\''+t+"'\"/>\n":"")+"</head>\n<body"+(null==t&&null!=c&&c!=mxConstants.NONE?' style="background-color:'+c+';">':">")+'\n<div class="mxgraph" style="position:relative;overflow:auto;width:100%;">\n<div style="width:1px;height:1px;overflow:hidden;">'+f+"</div>\n</div>\n"+(null==t?'<script type="text/javascript" src="'+g+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+ -t+'" target="_blank"><img border="0" src="https://www.draw.io/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(a,b,d,f,t){null!=t&&(t=t.replace(/&/g,"&"));a={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,resize:!0,xml:this.editor.graph.zapGremlins(a),toolbar:"pages zoom layers lightbox"};null!=this.pages&&null!=this.currentPage&&(a.page=mxUtils.indexOf(this.pages,this.currentPage));return(null==t?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n': -"")+"<!DOCTYPE html>\n<html"+(null!=t?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==t?null!=d?"<title>"+mxUtils.htmlEntities(d)+"</title>\n":"":"<title>Draw.io Diagram</title>\n")+(null!=t?'<meta http-equiv="refresh" content="0;URL=\''+t+"'\"/>\n":"")+'<meta charset="utf-8"/>\n</head>\n<body>\n<div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(a))+'"></div>\n'+(null==t?'<script type="text/javascript" src="https://www.draw.io/js/viewer.min.js">\x3c/script>': -'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+t+'" target="_blank"><img border="0" src="https://www.draw.io/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.setFileData=function(a){a=this.validateFileData(a);this.pages=this.fileNode=this.currentPage=null;a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement:null;var c=null!=a?a.getElementsByTagName("parsererror"):null;if(null!=c&&0<c.length)throw a=mxResources.get("invalidOrMissingFile"), -c=c[0].getElementsByTagName("div"),0<c.length&&(a=mxUtils.getTextContent(c[0])),Error(a);c=null!=a?this.editor.extractGraphModel(a,!0):null;null!=c&&(a=c);if(null!=a&&"mxfile"==a.nodeName&&(c=a.getElementsByTagName("diagram"),"0"!=urlParams.pages||1<c.length||1==c.length&&c[0].hasAttribute("name"))){this.fileNode=a;this.pages=[];for(a=0;a<c.length;a++){null==c[a].getAttribute("id")&&c[a].setAttribute("id",a);var b=new DiagramPage(c[a]);null==b.getName()&&b.setName(mxResources.get("pageWithNumber", -[a+1]));this.pages.push(b)}this.currentPage=this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];a=this.currentPage.node}"0"!=urlParams.pages&&null==this.fileNode&&null!=a&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(a);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root)}; -EditorUi.prototype.getBaseFilename=function(a){var c=this.getCurrentFile(),c=null!=c&&null!=c.getTitle()?c.getTitle():this.defaultFilename;if(/(\.xml)$/i.test(c)||/(\.html)$/i.test(c)||/(\.svg)$/i.test(c)||/(\.png)$/i.test(c))c=c.substring(0,c.lastIndexOf("."));!a&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&0<this.currentPage.getName().length&&(c=c+"-"+this.currentPage.getName());return c};EditorUi.prototype.downloadFile=function(a, -b,d,f,t,m,r){try{f=null!=f?f:this.editor.graph.isSelectionEmpty();var c=this.getBaseFilename(!t),g=c+"."+a;if("xml"==a){var h='<?xml version="1.0" encoding="UTF-8"?>\n'+(b?mxUtils.getXml(this.editor.getGraphXml(f)):this.getFileData(!0,null,null,null,f,t));this.saveData(g,a,h,"text/xml")}else if("html"==a)h=this.getHtml2(this.getFileData(!0),this.editor.graph,c),this.saveData(g,a,h,"text/html");else if("svg"!=a&&"xmlsvg"!=a||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==a?g= -c+".png":"jpeg"==a&&(g=c+".jpg"),this.saveRequest(g,a,mxUtils.bind(this,function(c,b){try{var d=this.editor.graph.pageVisible;null!=m&&(this.editor.graph.pageVisible=m);var g=this.createDownloadRequest(c,a,f,b,r,t);this.editor.graph.pageVisible=d;return g}catch(z){this.handleError(z)}}));else{var l=null,k=mxUtils.bind(this,function(a){a.length<=MAX_REQUEST_SIZE?this.saveData(g,"svg",a,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this, -function(){mxUtils.popup(l)}))});if("svg"==a){var n=this.editor.graph.background;if(r||n==mxConstants.NONE)n=null;var p=this.editor.graph.getSvg(n,null,null,null,null,f);d&&this.editor.graph.addSvgShadow(p);this.convertImages(p,mxUtils.bind(this,mxUtils.bind(this,function(a){this.spinner.stop();k('<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a))})))}else g=c+".svg",l=this.getFileData(!1, -!0,null,mxUtils.bind(this,function(a){this.spinner.stop();k(a)}),f)}}catch(Q){this.handleError(Q)}};EditorUi.prototype.createDownloadRequest=function(a,b,d,f,t,m){var c=this.editor.graph.getGraphBounds();d=this.getFileData(!0,null,null,null,d,0==m?!1:"xmlpng"!=b);var g="",h="";if(c.width*c.height>MAX_AREA||d.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};c="0";"pdf"==b&&0==m&&(h="&allPages=1");if("xmlpng"==b&&(c="1",b="png",null!=this.pages&&null!=this.currentPage))for(m= -0;m<this.pages.length;m++)if(this.pages[m]==this.currentPage){g="&from="+m;break}m=this.editor.graph.background;"png"==b&&t&&(m=mxConstants.NONE);return new mxXmlRequest(EXPORT_URL,"format="+b+g+h+"&bg="+(null!=m?m:mxConstants.NONE)+"&base64="+f+"&embedXml="+c+"&xml="+encodeURIComponent(d)+(null!=a?"&filename="+encodeURIComponent(a):""))};EditorUi.prototype.setMode=function(a,b){this.mode=a};EditorUi.prototype.loadDescriptor=function(a,b,d){var c=window.location.hash,g=mxUtils.bind(this,function(d){var g= -null!=a.data?a.data:"";null!=d&&0<d.length&&(0<g.length&&(g+="\n"),g+=d);d=new LocalFile(this,"csv"!=a.format&&0<g.length?g:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);d.getHash=function(){return c};this.fileLoaded(d);"csv"==a.format&&this.importCsv(g,mxUtils.bind(this,function(a){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=a.update){var f=null!=a.interval?parseInt(a.interval):6E4,h=null, -l=mxUtils.bind(this,function(){var c=this.currentPage;mxUtils.post(a.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(a){c===this.currentPage&&(200<=a.getStatus()&&300>=a.getStatus()?(this.updateDiagram(a.getText()),m()):this.handleError({message:mxResources.get("error")+" "+a.getStatus()}))}),mxUtils.bind(this,function(a){this.handleError(a)}))}),m=mxUtils.bind(this,function(){window.clearTimeout(h);h=window.setTimeout(l,f)});this.editor.addListener("pageSelected", -mxUtils.bind(this,function(){m();l()}));m();l()}null!=b&&b()});if(null!=a.url&&0<a.url.length){var f=a.url;/^https?:\/\//.test(f)&&!this.isCorsEnabledForUrl(f)&&(f=PROXY_URL+"?url="+encodeURIComponent(f));this.loadUrl(f,mxUtils.bind(this,function(a){g(a)}),mxUtils.bind(this,function(a){null!=d&&d(a)}))}else g("")};EditorUi.prototype.updateDiagram=function(a){function c(a){var c=new mxCellOverlay(a.image||f.warningImage,a.tooltip,a.align,a.valign,a.offset);c.addListener(mxEvent.CLICK,function(c,b){d.alert(a.tooltip)}); -return c}var b=null,d=this;if(null!=a&&0<a.length&&(b=mxUtils.parseXml(a),a=null!=b?b.documentElement:null,null!=a&&"updates"==a.nodeName)){var f=this.editor.graph,m=f.getModel();m.beginUpdate();var r=null;try{for(a=a.firstChild;null!=a;){if("update"==a.nodeName){var k=m.getCell(a.getAttribute("id"));if(null!=k){try{var v=a.getAttribute("value");if(null!=v){var n=mxUtils.parseXml(v).documentElement;if(null!=n)if("1"==n.getAttribute("replace-value"))m.setValue(k,n);else for(var p=n.attributes,u=0;u< -p.length;u++)f.setAttributeForCell(k,p[u].nodeName,0<p[u].nodeValue.length?p[u].nodeValue:null)}}catch(B){null!=window.console&&console.log("Error in value for "+k.id+": "+B)}try{var q=a.getAttribute("style");null!=q&&f.model.setStyle(k,q)}catch(B){null!=window.console&&console.log("Error in style for "+k.id+": "+B)}try{var F=a.getAttribute("icon");if(null!=F){var w=0<F.length?JSON.parse(F):null;null!=w&&w.append||f.removeCellOverlays(k);null!=w&&f.addCellOverlay(k,c(w))}}catch(B){null!=window.console&& -console.log("Error in icon for "+k.id+": "+B)}try{var G=a.getAttribute("geometry");if(null!=G){var G=JSON.parse(G),I=f.getCellGeometry(k);if(null!=I){I=I.clone();for(key in G){var M=parseFloat(G[key]);"dx"==key?I.x+=M:"dy"==key?I.y+=M:"dw"==key?I.width+=M:"dh"==key?I.height+=M:I[key]=parseFloat(G[key])}f.model.setGeometry(k,I)}}}catch(B){null!=window.console&&console.log("Error in icon for "+k.id+": "+B)}}}else if("model"==a.nodeName){for(var z=a.firstChild;null!=z&&z.nodeType!=mxConstants.NODETYPE_ELEMENT;)z= -z.nextSibling;null!=z&&(new mxCodec(a.firstChild)).decode(z,m)}else if("view"==a.nodeName){if(a.hasAttribute("scale")&&(f.view.scale=parseFloat(a.getAttribute("scale"))),a.hasAttribute("dx")||a.hasAttribute("dy"))f.view.translate=new mxPoint(parseFloat(a.getAttribute("dx")||0),parseFloat(a.getAttribute("dy")||0))}else"fit"==a.nodeName&&(r=a.hasAttribute("max-scale")?parseFloat(a.getAttribute("max-scale")):1);a=a.nextSibling}}finally{m.endUpdate()}null!=r&&this.chromelessResize&&this.chromelessResize(!0, -r)}return b};EditorUi.prototype.getCopyFilename=function(a,b){var c=null!=a&&null!=a.getTitle()?a.getTitle():this.defaultFilename,d="",g=c.lastIndexOf(".");0<=g&&(d=c.substring(g),c=c.substring(0,g));if(b)var f=new Date,g=f.getFullYear(),r=f.getMonth()+1,k=f.getDate(),v=f.getHours(),n=f.getMinutes(),f=f.getSeconds(),c=c+(" "+(g+"-"+r+"-"+k+"-"+v+"-"+n+"-"+f));return c=mxResources.get("copyOf",[c])+d};EditorUi.prototype.fileLoaded=function(a){var c=this.getCurrentFile();this.fileLoadedError=null;this.setCurrentFile(null); -var b=!1;this.hideDialog();null!=c&&(c.removeListener(this.descriptorChangedListener),c.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var d=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=c&&this.updateDocumentTitle();this.editor.graph.model.clear();this.editor.undoManager.clear();this.setBackgroundImage(null);null!=window.location.hash&&0<window.location.hash.length&&(window.location.hash="");null!=this.fname&&(this.fnameWrapper.style.display= -"none",this.fname.innerHTML="",this.fname.setAttribute("title",mxResources.get("rename")));this.editor.setStatus("");this.updateUi();this.showSplash()});if(null!=a)try{mxClient.IS_SF&&"min"==uiTheme&&(this.diagramContainer.style.visibility="");this.setCurrentFile(a);a.addListener("descriptorChanged",this.descriptorChangedListener);a.addListener("contentChanged",this.descriptorChangedListener);a.open();this.setGraphEnabled(!0);this.setMode(a.getMode());this.editor.graph.model.prefix=Editor.guid()+ -"-";this.editor.undoManager.clear();this.descriptorChanged();this.updateUi();a.isEditable()?a.isModified()?(a.addUnsavedStatus(),null!=a.backupPatch&&a.patch([a.backupPatch])):this.editor.setStatus(""):this.editor.setStatus('<span class="geStatusAlert" style="margin-left:8px;">'+mxUtils.htmlEntities(mxResources.get("readOnly"))+"</span>");!this.editor.isChromelessView()||this.editor.editable?(this.editor.graph.selectUnlockedLayer(),this.showLayersDialog(),this.restoreLibraries(),window.self!==window.top&& -window.focus()):this.editor.graph.isLightboxView()&&this.lightboxFit();this.chromelessResize&&this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));b=!0;this.isOffline()||null==a.getMode()||EditorUi.logEvent({category:"File",action:"open",label:a.getMode()+"."+a.getSize()});if(this.editor.editable&&this.mode==a.getMode()&&a.getMode()!=App.MODE_DEVICE&&null!=a.getMode())try{this.addRecent({id:a.getHash(),title:a.getTitle(),mode:a.getMode()})}catch(t){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+ -1),mxSettings.save()}catch(t){}}catch(t){this.fileLoadedError=t;null!=window.console&&console.log("error in fileLoaded:",a,t);if(EditorUi.enableLogging&&!this.isOffline())try{(new Image).src=(null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"")+"/log?v="+encodeURIComponent(EditorUi.VERSION)+"&msg=errorInFileLoaded:url:"+encodeURIComponent(window.location.href)+(null!=t&&null!=t.message?":err:"+encodeURIComponent(t.message):"")+(null!=t&&null!=t.stack?"&stack="+encodeURIComponent(t.stack):"")}catch(m){}this.handleError(t, -mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=c?this.fileLoaded(c):d()}),!0)}else d();return b};EditorUi.prototype.isActive=function(){return this.editor.graph.isEditing()||this.editor.graph.isMouseDown||null!=this.dialog};EditorUi.prototype.runWhenIdle=function(a){if(this.isActive()){var c=mxUtils.bind(this,function(){this.isActive()||(this.editor.graph.removeMouseListener(b), -this.editor.removeListener("hideDialog",c),this.editor.graph.removeListener(c),null!=window.requestAnimationFrame?window.requestAnimationFrame(a):a())}),b={mouseDown:function(){},mouseMove:function(){},mouseUp:c};this.editor.graph.addListener(mxEvent.EDITING_STOPPED,c);this.editor.graph.addListener(mxEvent.ESCAPE,c);this.editor.graph.addMouseListener(b);this.editor.addListener("hideDialog",c)}else null!=window.requestAnimationFrame?window.requestAnimationFrame(a):a()};EditorUi.prototype.getHashValueForPages= -function(a,b){var c=0,d=new mxGraphModel,g=new mxCodec;null!=b&&(b.byteCount=0,b.attrCount=0,b.eltCount=0,b.nodeCount=0);for(var f=0;f<a.length;f++){this.updatePageRoot(a[f]);var r=a[f].node.cloneNode(!1);r.removeAttribute("name");d.root=a[f].root;var k=g.encode(d);this.editor.graph.saveViewState(a[f].viewState,k,!0);k.removeAttribute("pageWidth");k.removeAttribute("pageHeight");r.appendChild(k);null!=b&&(b.eltCount+=r.getElementsByTagName("*").length,b.nodeCount+=r.getElementsByTagName("mxCell").length); -c=(c<<5)-c+this.hashValue(r,function(a,c,b,d){return!d||"mxGeometry"!=a.nodeName&&"mxPoint"!=a.nodeName||"x"!=c&&"y"!=c&&"width"!=c&&"height"!=c?d&&"mxCell"==a.nodeName&&"previous"==c?null:b:Math.round(b)},b)<<0}return c};EditorUi.prototype.hashValue=function(a,b,d){var c=0;if(null!=a&&"object"===typeof a&&"number"===typeof a.nodeType&&"string"===typeof a.nodeName&&"function"===typeof a.getAttribute){null!=a.nodeName&&(c^=this.hashValue(a.nodeName,b,d));if(null!=a.attributes){null!=d&&(d.attrCount+= -a.attributes.length);for(var g=0;g<a.attributes.length;g++){var f=a.attributes[g].name,h=null!=b?b(a,f,a.attributes[g].value,!0):a.attributes[g].value;null!=h&&(c^=this.hashValue(f,b,d)+this.hashValue(h,b,d))}}if(null!=a.childNodes)for(g=0;g<a.childNodes.length;g++)c=(c<<5)-c+this.hashValue(a.childNodes[g],b,d)<<0}else if(null!=a&&"function"!==typeof a){a=String(a);b=0;null!=d&&(d.byteCount+=a.length);for(g=0;g<a.length;g++)b=(b<<5)-b+a.charCodeAt(g)<<0;c^=b}return c};EditorUi.prototype.descriptorChanged= -function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary=function(a,b,d,f,t,m,r){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||mxClient.IS_CHROMEAPP};EditorUi.prototype.toggleScratchpad=function(){this.isScratchpadEnabled()&&(null==this.scratchpad?this.getLocalData(".scratchpad",mxUtils.bind(this,function(a){null==a&&(a=this.emptyLibraryXml);this.loadLibrary(new StorageLibrary(this,a,".scratchpad"))})):this.closeLibrary(this.scratchpad))}; -EditorUi.prototype.createLibraryDataFromImages=function(a){var c=mxUtils.createXmlDocument(),b=c.createElement("mxlibrary");mxUtils.setTextContent(b,JSON.stringify(a));c.appendChild(b);return mxUtils.getXml(c)};EditorUi.prototype.closeLibrary=function(a){null!=a&&(this.removeLibrarySidebar(a.getHash()),a.constructor!=LocalLibrary&&mxSettings.removeCustomLibrary(a.getHash()),".scratchpad"==a.title&&(this.scratchpad=null))};EditorUi.prototype.removeLibrarySidebar=function(a){var c=this.sidebar.palettes[a]; -if(null!=c){for(var b=0;b<c.length;b++)c[b].parentNode.removeChild(c[b]);delete this.sidebar.palettes[a]}};EditorUi.prototype.repositionLibrary=function(a){var c=this.sidebar.container;if(null==a){var b=this.sidebar.palettes["L.scratchpad"];null==b&&(b=this.sidebar.palettes.search);null!=b&&(a=b[b.length-1].nextSibling)}a=null!=a?a:c.firstChild.nextSibling.nextSibling;var b=c.lastChild,d=b.previousSibling;c.insertBefore(b,a);c.insertBefore(d,b)};EditorUi.prototype.loadLibrary=function(a){var c=mxUtils.parseXml(a.getData()); -if("mxlibrary"==c.documentElement.nodeName){var b=JSON.parse(mxUtils.getTextContent(c.documentElement));this.libraryLoaded(a,b,c.documentElement.getAttribute("title"))}else throw{message:mxResources.get("notALibraryFile")};};EditorUi.prototype.getLibraryStorageHint=function(a){return""};EditorUi.prototype.libraryLoaded=function(a,b,d){if(null!=this.sidebar){a.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(a.getHash());".scratchpad"==a.title&&(this.scratchpad=a);var c=this.sidebar.palettes[a.getHash()], -c=null!=c?c[c.length-1].nextSibling:null;this.removeLibrarySidebar(a.getHash());var f=null,g=mxUtils.bind(this,function(c,b){0==c.length&&a.isEditable()?(null==f&&(f=document.createElement("div"),mxUtils.setPrefixedStyle(f.style,"borderRadius","6px"),f.style.border="3px dotted lightGray",f.style.textAlign="center",f.style.padding="8px",f.style.color="#B3B3B3",mxUtils.write(f,mxResources.get("dragElementsHere"))),b.appendChild(f)):this.addLibraryEntries(c,b)});if(null!=this.sidebar&&null!=b)for(var h= -0;h<b.length;h++)mxUtils.bind(this,function(a){var c=a.data;null!=c&&null!=a.title?this.sidebar.addEntry(a.title,mxUtils.bind(this,function(){c=this.convertDataUri(c);var b="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==a.aspect&&(b+="aspect=fixed;");return this.sidebar.createVertexTemplate(b+"image="+c,a.w,a.h,"",a.title||"",!1,!1,!0)})):null!=a.xml&&null!=a.title&&this.sidebar.addEntry(a.title,mxUtils.bind(this,function(){var c=this.stringToCells(this.editor.graph.decompress(a.xml)); -return this.sidebar.createVertexTemplateFromCells(c,a.w,a.h,a.title||"",!0,!1,!0)}))})(b[h]);d=null!=d&&0<d.length?d:a.getTitle();var k=this.sidebar.addPalette(a.getHash(),d,!0,mxUtils.bind(this,function(a){g(b,a)}));this.repositionLibrary(c);var v=k.parentNode.previousSibling;d=v.getAttribute("title");null!=d&&0<d.length&&".scratchpad"!=a.title&&v.setAttribute("title",this.getLibraryStorageHint(a)+"\n"+d);var n=document.createElement("div");n.style.position="absolute";n.style.right="0px";n.style.top= -"0px";n.style.padding="8px";mxClient.IS_QUIRKS||8==document.documentMode||(n.style.backgroundColor="inherit");v.style.position="relative";var p=document.createElement("img");p.setAttribute("src",Dialog.prototype.closeImage);p.setAttribute("title",mxResources.get("close"));p.setAttribute("valign","absmiddle");p.setAttribute("border","0");p.style.margin="0 3px";var u=null;if(".scratchpad"!=a.title||this.closableScratchpad)n.appendChild(p),mxEvent.addListener(p,"click",mxUtils.bind(this,function(c){if(!mxEvent.isConsumed(c)){var b= -mxUtils.bind(this,function(){this.closeLibrary(a)});null!=u?this.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b();mxEvent.consume(c)}}));if(a.isEditable()){var q=this.editor.graph,F=null,w=mxUtils.bind(this,function(c){this.showLibraryDialog(a.getTitle(),k,b,a,a.getMode());mxEvent.consume(c)}),G=mxUtils.bind(this,function(c){a.setModified(!0);a.isAutosave()?(null!=F&&null!=F.parentNode&&F.parentNode.removeChild(F),F=p.cloneNode(!1), -F.setAttribute("src",Editor.spinImage),F.setAttribute("title",mxResources.get("saving")),F.style.cursor="default",F.style.marginRight="2px",F.style.marginTop="-2px",n.insertBefore(F,n.firstChild),v.style.paddingRight=18*n.childNodes.length+"px",this.saveLibrary(a.getTitle(),b,a,a.getMode(),!0,!0,function(){null!=F&&null!=F.parentNode&&(F.parentNode.removeChild(F),v.style.paddingRight=18*n.childNodes.length+"px")})):null==u&&(u=p.cloneNode(!1),u.setAttribute("src",IMAGE_PATH+"/download.png"),u.setAttribute("title", -mxResources.get("save")),n.insertBefore(u,n.firstChild),mxEvent.addListener(u,"click",mxUtils.bind(this,function(c){this.saveLibrary(a.getTitle(),b,a,a.getMode(),a.constructor==LocalLibrary,!0,function(){null==u||a.isModified()||(v.style.paddingRight=18*n.childNodes.length+"px",u.parentNode.removeChild(u),u=null)});mxEvent.consume(c)})),v.style.paddingRight=18*n.childNodes.length+"px")}),I=mxUtils.bind(this,function(a,c,d,g){a=q.cloneCells(mxUtils.sortCells(q.model.getTopmostCells(a)));for(var h= -0;h<a.length;h++){var l=q.getCellGeometry(a[h]);null!=l&&l.translate(-c.x,-c.y)}k.appendChild(this.sidebar.createVertexTemplateFromCells(a,c.width,c.height,g||"",!0,!1,!1));a={xml:this.editor.graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(a))),w:c.width,h:c.height};null!=g&&(a.title=g);b.push(a);G(d);null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null)}),M=mxUtils.bind(this,function(a){if(q.isSelectionEmpty())q.getRubberband().isActive()?(q.getRubberband().execute(a), -q.getRubberband().reset()):this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var c=q.getSelectionCells(),b=q.view.getBounds(c),d=q.view.scale;b.x/=d;b.y/=d;b.width/=d;b.height/=d;b.x-=q.view.translate.x;b.y-=q.view.translate.y;I(c,b)}mxEvent.consume(a)});k.style.border="3px solid transparent";mxEvent.addGestureListeners(k,function(){},mxUtils.bind(this,function(a){q.isMouseDown&&null!=q.panningManager&&null!=q.graphHandler.shape&&(q.graphHandler.shape.node.style.visibility= -"hidden",null!=f?f.style.border="3px dotted rgb(254, 137, 12)":k.style.border="3px dotted rgb(254, 137, 12)",k.style.cursor="copy",q.panningManager.stop(),q.autoScroll=!1,null!=q.graphHandler.guide&&q.graphHandler.guide.setVisible(!1),null!=q.graphHandler.hint&&(q.graphHandler.hint.style.visibility="hidden"),mxEvent.consume(a))}),mxUtils.bind(this,function(a){q.isMouseDown&&null!=q.panningManager&&null!=q.graphHandler&&(k.style.border="3px solid transparent",null!=f&&(f.style.border="3px dotted lightGray"), -k.style.cursor="default",this.sidebar.showTooltips=!0,q.panningManager.stop(),q.graphHandler.reset(),q.isMouseDown=!1,q.autoScroll=!0,M(a),mxEvent.consume(a))}));mxEvent.addListener(k,"mouseleave",mxUtils.bind(this,function(a){q.isMouseDown&&null!=q.graphHandler.shape&&(q.graphHandler.shape.node.style.visibility="visible",k.style.border="3px solid transparent",k.style.cursor="",q.autoScroll=!0,null!=q.graphHandler.guide&&q.graphHandler.guide.setVisible(!0),null!=q.graphHandler.hint&&(q.graphHandler.hint.style.visibility= -"visible"),null!=f&&(f.style.border="3px dotted lightGray"))}));Graph.fileSupport&&(mxEvent.addListener(k,"dragover",mxUtils.bind(this,function(a){null!=f?f.style.border="3px dotted rgb(254, 137, 12)":k.style.border="3px dotted rgb(254, 137, 12)";a.dataTransfer.dropEffect="copy";k.style.cursor="copy";this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()})),mxEvent.addListener(k,"drop",mxUtils.bind(this,function(a){k.style.border="3px solid transparent";k.style.cursor="";null!=f&&(f.style.border= -"3px dotted lightGray");0<a.dataTransfer.files.length&&this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(c,d,h,l,m,r,t,v,n){if(null!=c&&"image/"==d.substring(0,6))c="shape=image;verticalLabelPosition=bottom;verticalAlign=top;aspect=fixed;image="+this.convertDataUri(c),c=[new mxCell("",new mxGeometry(0,0,m,r),c)],c[0].vertex=!0,I(c,new mxRectangle(0,0,m,r),a,mxEvent.isAltDown(a)?null:t.substring(0,t.lastIndexOf(".")).replace(/_/g," ")),null!=f&&null!=f.parentNode&& -0<b.length&&(f.parentNode.removeChild(f),f=null);else{var u=!1,x=mxUtils.bind(this,function(c,d){if(null!=c&&"text/xml"==d){var h=mxUtils.parseXml(c);if("mxlibrary"==h.documentElement.nodeName)try{var l=JSON.parse(mxUtils.getTextContent(h.documentElement));g(l,k);b=b.concat(l);G(a);this.spinner.stop();u=!0}catch(E){}else if("mxfile"==h.documentElement.nodeName)try{for(var m=h.documentElement.getElementsByTagName("diagram"),h=0;h<m.length;h++){var l=mxUtils.getTextContent(m[h]),r=this.stringToCells(this.editor.graph.decompress(l)), -t=this.editor.graph.getBoundingBoxFromGeometry(r);I(r,new mxRectangle(0,0,t.width,t.height),a)}u=!0}catch(E){null!=window.console&&console.log("error in drop handler:",E)}}u||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null)});null!=n&&null!=t&&(/(\.v(dx|sdx?))($|\?)/i.test(t)||/(\.vs(x|sx?))($|\?)/i.test(t))?this.importVisio(n,function(a){x(a,"text/xml")},null,t):!this.isOffline()&&(new XMLHttpRequest).upload&& -this.isRemoteFileFormat(c,t)&&null!=n?this.parseFile(n,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?x(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):x(c,d)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(k,"dragleave",function(a){null!=f?f.style.border="3px dotted lightGray":(k.style.border="3px solid transparent", -k.style.cursor="");a.stopPropagation();a.preventDefault()}));p=p.cloneNode(!1);p.setAttribute("src",Editor.editImage);p.setAttribute("title",mxResources.get("edit"));n.insertBefore(p,n.firstChild);mxEvent.addListener(p,"click",w);mxEvent.addListener(k,"dblclick",function(a){mxEvent.getSource(a)==k&&w(a)});d=p.cloneNode(!1);d.setAttribute("src",Editor.plusImage);d.setAttribute("title",mxResources.get("add"));n.insertBefore(d,n.firstChild);mxEvent.addListener(d,"click",M);this.isOffline()||".scratchpad"!= -a.title||null==EditorUi.scratchpadHelpLink||(d=document.createElement("span"),d.setAttribute("title",mxResources.get("help")),d.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;",mxUtils.write(d,"?"),mxEvent.addGestureListeners(d,mxUtils.bind(this,function(a){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(a)})),n.insertBefore(d,n.firstChild))}v.appendChild(n);v.style.paddingRight=18*n.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(a,b){for(var c= -0;c<a.length;c++){var d=a[c],f=d.data;if(null!=f){var f=this.convertDataUri(f),g="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==d.aspect&&(g+="aspect=fixed;");b.appendChild(this.sidebar.createVertexTemplate(g+"image="+f,d.w,d.h,"",d.title||"",!1,!1,!0))}else null!=d.xml&&(f=this.stringToCells(this.editor.graph.decompress(d.xml)),0<f.length&&b.appendChild(this.sidebar.createVertexTemplateFromCells(f,d.w,d.h,d.title||"",!0,!1,!0)))}};EditorUi.prototype.getResource= -function(a){return null!=a?a[mxLanguage]||a.main:null};EditorUi.prototype.footerHeight=0;"1"==urlParams.offline||EditorUi.isElectronApp||("1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64),EditorUi.prototype.createFooter=function(){return document.getElementById("geFooter")});EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground=mxClient.IS_QUIRKS? -"none":"linear-gradient(rgb(255, 255, 255) 0px, rgb(242, 242, 242) 100%)",Toolbar.prototype.selectedBackground="rgb(242, 242, 242)"),Editor.prototype.initialTopSpacing=3,EditorUi.prototype.menubarHeight=41,EditorUi.prototype.toolbarHeight=38,EditorUi.prototype.hsplitPosition=188,Sidebar.prototype.thumbWidth=46,Sidebar.prototype.thumbHeight=46,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2):"dark"==uiTheme&&(mxClient.link("stylesheet",STYLE_PATH+"/dark.css"), -Dialog.backdropColor="#2a2a2a",Graph.prototype.defaultThemeName="darkTheme",Graph.prototype.defaultPageBackgroundColor="#2a2a2a",Graph.prototype.defaultPageBorderColor="#505759",Graph.prototype.svgShadowColor="#e0e0e0",Graph.prototype.svgShadowOpacity="0.6",Graph.prototype.svgShadowSize="0.8",Graph.prototype.svgShadowBlur="1.4",Format.prototype.inactiveTabBackgroundColor="black",BaseFormatPanel.prototype.buttonBackgroundColor="#2a2a2a",Sidebar.prototype.dragPreviewBorder="1px dashed #cccccc",mxGraphHandler.prototype.previewColor= -"#cccccc",StyleFormatPanel.prototype.defaultStrokeColor="#cccccc",mxClient.IS_SVG&&(Editor.helpImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAP1BMVEUAAAD///////////////////////////////////////////////////////////////////////////////9Du/pqAAAAFXRSTlMAT30qCJRBboyDZyCgRzUUdF46MJlgXETgAAAAeklEQVQY022O2w4DIQhEQUURda/9/28tUO2+7CQS5sgQ4F1RapX78YUwRqQjTU8ILqQfKerTKTvACJ4nLX3krt+8aS82oI8aQC4KavRgtvEW/mDvsICgA03PSGRr79MqX1YPNIxzjyqtw8ZnnRo4t5a5undtJYRywau+ds4Cyza3E6YAAAAASUVORK5CYII=", -Editor.checkmarkImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAMAAACeyVWkAAAARVBMVEUAAACZmZkICAgEBASNjY2Dg4MYGBiTk5N5eXl1dXVmZmZQUFBCQkI3NzceHh4MDAykpKSJiYl+fn5sbGxaWlo/Pz8SEhK96uPlAAAAAXRSTlMAQObYZgAAAE5JREFUGNPFzTcSgDAQQ1HJGUfy/Y9K7V1qeOUfzQifCQZai1XHaz11LFysbDbzgDSSWMZiETz3+b8yNUc/MMsktxuC8XQBSncdLwz+8gCCggGXzBcozAAAAABJRU5ErkJggg=="))};EditorUi.initTheme();EditorUi.prototype.hideFooter=function(){var a=document.getElementById("geFooter");null!=a&&(this.footerHeight=0,a.style.display= -"none",this.refresh())};EditorUi.prototype.showFooter=function(a){var c=document.getElementById("geFooter");null!=c&&(this.footerHeight=a,c.style.display="inline",this.refresh())};EditorUi.prototype.showImageDialog=function(a,b,d,f,k){a=new ImageDialog(this,a,b,d,f,k);this.showDialog(a.container,Graph.fileSupport?440:360,Graph.fileSupport?200:90,!0,!0);a.init()};EditorUi.prototype.showBackgroundImageDialog=function(a){a=null!=a?a:mxUtils.bind(this,function(a){a=new ChangePageSetup(this,null,a);a.ignoreColor= -!0;this.editor.graph.model.execute(a)});var c=new BackgroundImageDialog(this,mxUtils.bind(this,function(c){a(c)}));this.showDialog(c.container,360,200,!0,!0);c.init()};EditorUi.prototype.showLibraryDialog=function(a,b,d,f,k){a=new LibraryDialog(this,a,b,d,f,k);this.showDialog(a.container,620,440,!0,!1,mxUtils.bind(this,function(a){a&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));a.init()};EditorUi.prototype.createSidebarFooterContainer=function(){var a=this.createDiv("geSidebarContainer"); -a.style.position="absolute";a.style.overflow="hidden";a.style.borderWidth="3px";var b=document.createElement("a");b.className="geTitle";b.style.height="100%";b.style.paddingTop="9px";b.innerHTML='<span style="font-size:18px;margin-right:5px;">+</span>';mxUtils.write(b,mxResources.get("moreShapes")+"...");mxEvent.addListener(b,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(b,"click",mxUtils.bind(this,function(a){this.actions.get("shapes").funct(); -mxEvent.consume(a)}));a.appendChild(b);return a};EditorUi.prototype.handleError=function(a,b,d,f){var c=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},g=null!=a&&null!=a.error?a.error:a;if(null!=g||null!=b){a=mxUtils.htmlEntities(mxResources.get("unknownError"));var h=mxResources.get("ok"),l=null;b=null!=b?b:mxResources.get("error");if(null!=g)if(null!=g.retry&&(h=mxResources.get("cancel"),l=function(){c();g.retry()}),404==g.code||404==g.status||403==g.code){a=403== -g.code?null!=g.message?mxUtils.htmlEntities(g.message):mxUtils.htmlEntities(mxResources.get("accessDenied")):mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied"));var k=window.location.hash;null!=k&&"#G"==k.substring(0,2)&&(k=k.substring(2),a+='<br><a href="https://drive.google.com/open?id='+k+'" target="_blank">'+mxUtils.htmlEntities(mxResources.get("tryOpeningViaThisPage"))+"</a>")}else null!=g.message?a=mxUtils.htmlEntities(g.message):null!=g.response&&null!=g.response.error?a=mxUtils.htmlEntities(g.response.error): -"undefined"!==window.App&&(g.code==App.ERROR_TIMEOUT?a=mxUtils.htmlEntities(mxResources.get("timeout")):g.code==App.ERROR_BUSY&&(a=mxUtils.htmlEntities(mxResources.get("busy"))));this.showError(b,a,h,d,l,null,null,null,null,null,null,null,f?d:null)}else null!=d&&d()};EditorUi.prototype.showError=function(a,b,d,f,k,m,r,n,v,p,q,u,A){a=new ErrorDialog(this,a,b,d||mxResources.get("ok"),f,k,m,r,u,n,v);this.showDialog(a.container,p||340,q||(null!=b&&120<b.length?180:150),!0,!1,A);a.init()};EditorUi.prototype.alert= -function(a,b){var c=new ErrorDialog(this,null,a,mxResources.get("ok"),b);this.showDialog(c.container,340,100,!0,!1);c.init()};EditorUi.prototype.confirm=function(a,b,d,f,k,m){var c=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){};a=new ConfirmDialog(this,a,function(){c();null!=b&&b()},function(){c();null!=d&&d()},f,k);this.showDialog(a.container,340,90,!0,m);a.init()};EditorUi.prototype.setCurrentFile=function(a){this.currentFile=a};EditorUi.prototype.getCurrentFile= -function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||!this.editor.graph.mathEnabled&&this.useCanvasForExport};EditorUi.prototype.createSvgDataUri=function(a){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(a)))};EditorUi.prototype.createImageDataUri=function(a,b,d){var c=a.toDataURL("image/"+d);if(6>=c.length||c==a.cloneNode(!1).toDataURL("image/"+d))throw{message:"Invalid image"};null!=b&&(c=this.writeGraphModelToPng(c, -"zTXt","mxGraphModel",atob(this.editor.graph.compress(b))));return c};EditorUi.prototype.saveCanvas=function(a,b,d){var c="jpeg"==d?"jpg":d,f=this.getBaseFilename()+"."+c;a=this.createImageDataUri(a,b,d);this.saveData(f,c,a.substring(a.lastIndexOf(",")+1),"image/"+d,!0)};EditorUi.prototype.isLocalFileSave=function(){return"remote"!=urlParams.save&&(mxClient.IS_IE||"undefined"!==typeof window.Blob&&"undefined"!==typeof window.URL)&&9!=document.documentMode&&8!=document.documentMode&&7!=document.documentMode&& -!mxClient.IS_QUIRKS||this.isOfflineApp()||mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(a,b){var c=new TextareaDialog(this,a,b,null,null,mxResources.get("close"));c.textarea.style.width="600px";c.textarea.style.height="380px";this.showDialog(c.container,620,460,!0,!0);c.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(a,b,d,f,k){if(window.Blob&&navigator.msSaveOrOpenBlob)a=f?this.base64ToBlob(a,d):new Blob([a],{type:d}),navigator.msSaveOrOpenBlob(a, -b);else if(mxClient.IS_IE)d=window.open("about:blank","_blank"),null==d?mxUtils.popup(a,!0):(d.document.write(a),d.document.close(),d.document.execCommand("SaveAs",!0,b),d.close());else{var c=document.createElement("a"),g=!mxClient.IS_SF&&0>navigator.userAgent.indexOf("PaleMoon/")&&"undefined"!==typeof c.download;if(mxClient.IS_GC)var h=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./),g=65==(h?parseInt(h[2],10):!1)?!1:g;if(g||this.isOffline()){c.href=URL.createObjectURL(f?this.base64ToBlob(a, -d):new Blob([a],{type:d}));g?c.download=b:c.setAttribute("target","_blank");document.body.appendChild(c);try{window.setTimeout(function(){URL.revokeObjectURL(c.href)},0),c.click(),c.parentNode.removeChild(c)}catch(v){}}else this.createEchoRequest(a,b,d,f,k).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(a,b,d,f,k,m){a="xml="+encodeURIComponent(a);return new mxXmlRequest(SAVE_URL,a+(null!=d?"&mime="+d:"")+(null!=k?"&format="+k:"")+(null!=m?"&base64="+m:"")+(null!=b?"&filename="+ -encodeURIComponent(b):"")+(f?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(a,b){b=b||"";for(var c=atob(a),d=c.length,f=Math.ceil(d/1024),g=Array(f),r=0;r<f;++r){for(var k=1024*r,v=Math.min(k+1024,d),n=Array(v-k),p=0;k<v;++p,++k)n[p]=c[k].charCodeAt(0);g[r]=new Uint8Array(n)}return new Blob(g,{type:b})};EditorUi.prototype.saveLocalFile=function(a,b,d,f,k,m,r){m=null!=m?m:!1;r=null!=r?r:"vsdx"!=k&&(!mxClient.IS_IOS||!navigator.standalone);k=this.getServiceCount(m);b=new CreateDialog(this, -b,mxUtils.bind(this,function(c,b){try{if("_blank"==b)if(null==d||"image/"!=d.substring(0,6)||"image/svg"==d.substring(0,9)&&!mxClient.IS_SVG){var g=window.open("about:blank");null==g?mxUtils.popup(a,!0):(g.document.write(mxUtils.htmlEntities(a,!1)),g.document.close())}else this.openInNewWindow(a,d,f);else b==App.MODE_DEVICE||"download"==b?this.doSaveLocalFile(a,c,d,f):null!=c&&0<c.length&&this.pickFolder(b,mxUtils.bind(this,function(g){try{this.exportFile(a,c,d,f,b,g)}catch(u){this.handleError(u)}}))}catch(y){this.handleError(y)}}), -mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,m,r,null,1<k,4<k&&(!m||6>k)?3:4,a,d,f);this.showDialog(b.container,420,1==k?160:4<k?390:270,!0,!0);b.init()};EditorUi.prototype.openInNewWindow=function(a,b,d){if(mxClient.IS_GC||mxClient.IS_EDGE||11==document.documentMode||10==document.documentMode){var c=window.open("about:blank");null==c?mxUtils.popup(a,!0):("image/svg+xml"==b?c.document.write("<html>"+a+"</html>"):c.document.write('<html><img src="data:'+ -b+(d?";base64,"+a:";charset=utf8,"+encodeURIComponent(a))+'"/></html>'),c.document.close())}else c=window.open("data:"+b+(d?";base64,"+a:";charset=utf8,"+encodeURIComponent(a))),null==c&&mxUtils.popup(a,!0)};var b=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.addChromelessToolbarItems=function(a){if(this.isExportToCanvas()){this.exportDialog=null;var c=a(mxUtils.bind(this,function(a){var b=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",b); -null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null)});if(null!=this.exportDialog)b.apply(this);else{this.exportDialog=document.createElement("div");var d=c.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";this.exportDialog.style.fontFamily="Helvetica,Arial";this.exportDialog.style.backgroundColor="#000000";this.exportDialog.style.width= -"50px";this.exportDialog.style.height="50px";this.exportDialog.style.padding="4px 2px 4px 2px";this.exportDialog.style.color="#ffffff";mxUtils.setOpacity(this.exportDialog,70);this.exportDialog.style.left=d.left+"px";this.exportDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";d=mxUtils.getCurrentStyle(this.editor.graph.container);this.exportDialog.style.zIndex=d.zIndex;var f=new Spinner({lines:8,length:6,width:5,radius:6,rotate:0,color:"#fff", -speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"28px",zIndex:2E9});f.spin(this.exportDialog);this.exportToCanvas(mxUtils.bind(this,function(a){f.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var c=this.createImageDataUri(a,null,"png");a=document.createElement("img");a.style.maxWidth="140px";a.style.maxHeight="140px";a.style.cursor="pointer";a.style.backgroundColor="white";a.setAttribute("title",mxResources.get("openInNewWindow")); -a.setAttribute("border","0");a.setAttribute("src",c);this.exportDialog.appendChild(a);mxEvent.addListener(a,"click",mxUtils.bind(this,function(){this.openInNewWindow(c.substring(c.indexOf(",")+1),"image/png",!0);b.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));mxEvent.addListener(this.editor.graph.container,"click",b);document.body.appendChild(this.exportDialog)}mxEvent.consume(a)}),Editor.cameraLargeImage,mxResources.get("export"))}b.apply(this, -arguments)};EditorUi.prototype.saveData=function(a,b,d,f,k){this.isLocalFileSave()?this.saveLocalFile(d,a,f,k,b):this.saveRequest(a,b,mxUtils.bind(this,function(a,c){return this.createEchoRequest(d,a,f,k,b,c)}),d,k,f)};EditorUi.prototype.saveRequest=function(a,b,d,f,k,m,r){r=null!=r?r:!mxClient.IS_IOS||!navigator.standalone;var c=this.getServiceCount(!1);a=new CreateDialog(this,a,mxUtils.bind(this,function(a,c){if("_blank"==c||null!=a&&0<a.length){var g=d("_blank"==c?null:a,c==App.MODE_DEVICE||"download"== -c||null==c||"_blank"==c?"0":"1");null!=g&&(c==App.MODE_DEVICE||"download"==c||"_blank"==c?g.simulate(document,"_blank"):this.pickFolder(c,mxUtils.bind(this,function(d){m=null!=m?m:"pdf"==b?"application/pdf":"image/"+b;if(null!=f)try{this.exportFile(f,a,m,!0,c,d)}catch(A){this.handleError(A)}else this.spinner.spin(document.body,mxResources.get("saving"))&&g.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=g.getStatus()&&299>=g.getStatus())try{this.exportFile(g.getText(),a,m,!0,c,d)}catch(A){this.handleError(A)}else this.handleError({message:mxResources.get("errorSavingFile")})}), -function(a){this.spinner.stop();this.handleError(a)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,r,null,1<c,4<c?3:4,f,m,k);this.showDialog(a.container,380,1==c?160:4<c?390:270,!0,!0);a.init()};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(a,b,d,f,k,m){};EditorUi.prototype.pickFolder=function(a,b,d){b(null)};EditorUi.prototype.exportSvg=function(a,b,d,f,k,m,r, -n,v,p){if(this.spinner.spin(document.body,mxResources.get("export"))){var c=this.editor.graph.isSelectionEmpty();d=null!=d?d:c;c=b?null:this.editor.graph.background;c==mxConstants.NONE&&(c=null);null==c&&0==b&&(c="#ffffff");var g=this.editor.graph.getSvg(c,a,r,n,null,d,null,null,"blank"==p?"_blank":"self"==p?"_top":null);f&&this.editor.graph.addSvgShadow(g,g);var h=this.getBaseFilename()+".svg",l=mxUtils.bind(this,function(a){this.spinner.stop();k&&a.setAttribute("content",this.getFileData(!0,null, -null,null,d,v));if(null!=this.editor.fontCss){var c=a.ownerDocument,c=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"style"):c.createElement("style");c.setAttribute("type","text/css");mxUtils.setTextContent(c,this.editor.fontCss);a.getElementsByTagName("defs")[0].appendChild(c)}var b='<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a);this.isLocalFileSave()||b.length<=MAX_REQUEST_SIZE?this.saveData(h,"svg",b,"image/svg+xml"): -this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});this.convertMath(this.editor.graph,g,!1,mxUtils.bind(this,function(){m?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.convertImages(g,l,this.thumbImageCache)):l(g)}))}};EditorUi.prototype.addRadiobox=function(a,b,d,f,k,m,r){return this.addCheckbox(a,d,f,k,m,r,!0,b)};EditorUi.prototype.addCheckbox=function(a,b,d,f,k,m,r,n){m=null!=m?m:!0;var c=document.createElement("input"); -c.style.marginRight="8px";c.style.marginTop="16px";c.setAttribute("type",r?"radio":"checkbox");r="geCheckbox-"+Editor.guid();c.id=r;null!=n&&c.setAttribute("name",n);d&&(c.setAttribute("checked","checked"),c.defaultChecked=!0);f&&c.setAttribute("disabled","disabled");m&&(a.appendChild(c),d=document.createElement("label"),mxUtils.write(d,b),d.setAttribute("for",r),a.appendChild(d),k||mxUtils.br(a));return c};EditorUi.prototype.addEditButton=function(a,b){var c=this.addCheckbox(a,mxResources.get("edit")+ -":",!0,null,!0);c.style.marginLeft="24px";var d=this.getCurrentFile(),f="";null!=d&&d.getMode()!=App.MODE_DEVICE&&d.getMode()!=App.MODE_BROWSER&&(f=window.location.href);var g=document.createElement("select");g.style.width="120px";g.style.marginLeft="8px";g.style.marginRight="10px";g.className="geBtn";d=document.createElement("option");d.setAttribute("value","blank");mxUtils.write(d,mxResources.get("makeCopy"));g.appendChild(d);d=document.createElement("option");d.setAttribute("value","custom");mxUtils.write(d, -mxResources.get("custom")+"...");g.appendChild(d);a.appendChild(g);mxEvent.addListener(g,"change",mxUtils.bind(this,function(){if("custom"==g.value){var a=new FilenameDialog(this,f,mxResources.get("ok"),function(a){null!=a?f=a:g.value="blank"},mxResources.get("url"),null,null,null,null,function(){g.value="blank"});this.showDialog(a.container,300,80,!0,!1);a.init()}}));mxEvent.addListener(c,"change",mxUtils.bind(this,function(){c.checked&&(null==b||b.checked)?g.removeAttribute("disabled"):g.setAttribute("disabled", -"disabled")}));mxUtils.br(a);return{getLink:function(){return c.checked?"blank"===g.value?"_blank":f:null},getEditInput:function(){return c},getEditSelect:function(){return g}}};EditorUi.prototype.addLinkSection=function(a,b){function c(){r.innerHTML='<div style="width:100%;height:100%;box-sizing:border-box;'+(null!=g&&g!=mxConstants.NONE?"border:1px solid black;background-color:"+g:"background-position:center center;background-repeat:no-repeat;background-image:url('"+Dialog.prototype.closeImage+ -"')")+';"></div>'}mxUtils.write(a,mxResources.get("links")+":");var d=document.createElement("select");d.style.width="100px";d.style.marginLeft="8px";d.style.marginRight="10px";d.className="geBtn";var f=document.createElement("option");f.setAttribute("value","auto");mxUtils.write(f,mxResources.get("automatic"));d.appendChild(f);f=document.createElement("option");f.setAttribute("value","blank");mxUtils.write(f,mxResources.get("openInNewWindow"));d.appendChild(f);f=document.createElement("option"); -f.setAttribute("value","self");mxUtils.write(f,mxResources.get("openInThisWindow"));d.appendChild(f);b&&(f=document.createElement("option"),f.setAttribute("value","frame"),mxUtils.write(f,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),d.appendChild(f));a.appendChild(d);mxUtils.write(a,mxResources.get("borderColor")+":");var g="#0000ff",r=null,r=mxUtils.button("",mxUtils.bind(this,function(a){this.pickColor(g||"none",function(a){g=a;c()});mxEvent.consume(a)}));c();r.style.padding= -mxClient.IS_FF?"4px 2px 4px 2px":"4px";r.style.marginLeft="4px";r.style.height="22px";r.style.width="22px";r.style.position="relative";r.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";r.className="geColorBtn";a.appendChild(r);mxUtils.br(a);return{getColor:function(){return g},getTarget:function(){return d.value},focus:function(){d.focus()}}};EditorUi.prototype.createLink=function(a,b,d,f,k,m,r,n){var c=this.getCurrentFile(),g=[];f&&(g.push("lightbox=1"),"auto"!=a&&g.push("target="+ -a),null!=b&&b!=mxConstants.NONE&&g.push("highlight="+("#"==b.charAt(0)?b.substring(1):b)),null!=k&&0<k.length&&g.push("edit="+encodeURIComponent(k)),m&&g.push("layers=1"),this.editor.graph.foldingEnabled&&g.push("nav=1"));d&&(a=this.getSelectedPageIndex(),0<a&&g.push("page="+a));a=!0;null!=r?d="#U"+encodeURIComponent(r):(c=this.getCurrentFile(),n||null==c||c.constructor!=window.DriveFile?d="#R"+encodeURIComponent(d?this.getFileData(!0,null,null,null,null,null,null,!0):this.editor.graph.compress(mxUtils.getXml(this.editor.getGraphXml()))): -(d="#"+c.getHash(),a=!1));a&&null!=c&&null!=c.getTitle()&&c.getTitle()!=this.defaultFilename&&g.push("title="+encodeURIComponent(c.getTitle()));return(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?"https://www.draw.io/":"https://"+window.location.host+"/")+(0<g.length?"?"+g.join("&"):"")+d};EditorUi.prototype.createHtml=function(a,b,d,f,k,m,r,n,v,p,q){this.getBasenames();var c={};""!=k&&k!=mxConstants.NONE&&(c.highlight=k);"auto"!==f&&(c.target=f); -v||(c.lightbox=!1);c.nav=this.editor.graph.foldingEnabled;d=parseInt(d);isNaN(d)||100==d||(c.zoom=d/100);d=[];r&&(d.push("pages"),c.resize=!0,null!=this.pages&&null!=this.currentPage&&(c.page=mxUtils.indexOf(this.pages,this.currentPage)));b&&(d.push("zoom"),c.resize=!0);n&&d.push("layers");0<d.length&&(v&&d.push("lightbox"),c.toolbar=d.join(" "));null!=p&&0<p.length&&(c.edit=p);null!=a?c.url=a:c.xml=this.getFileData(!0,null,null,null,null,!r);b='<div class="mxgraph" style="'+(m?"max-width:100%;": -"")+(""!=d?"border:1px solid transparent;":"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(c))+'"></div>';a=null!=a?"&fetch="+encodeURIComponent(a):"";q(b,'<script type="text/javascript" src="'+(0<a.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":"https://www.draw.io/embed2.js?")+a:"1"==urlParams.dev?"https://test.draw.io/js/viewer.min.js":"https://www.draw.io/js/viewer.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(a,b,d,f){var c=document.createElement("div"); -c.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,mxResources.get("html"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";c.appendChild(g);var h=document.createElement("div");h.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var l=document.createElement("input");l.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";l.setAttribute("value","url");l.setAttribute("type","radio");l.setAttribute("name", -"type-embedhtmldialog");g=l.cloneNode(!0);g.setAttribute("value","copy");h.appendChild(g);var k=document.createElement("span");mxUtils.write(k,mxResources.get("includeCopyOfMyDiagram"));h.appendChild(k);mxUtils.br(h);h.appendChild(l);k=document.createElement("span");mxUtils.write(k,mxResources.get("publicDiagramUrl"));h.appendChild(k);var n=this.getCurrentFile();null==d&&null!=n&&n.constructor==window.DriveFile&&(k=document.createElement("a"),k.style.paddingLeft="12px",k.style.color="gray",k.setAttribute("href", -"javascript:void(0);"),mxUtils.write(k,mxResources.get("share")),h.appendChild(k),mxEvent.addListener(k,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(n.getId())})));g.setAttribute("checked","checked");null==d&&l.setAttribute("disabled","disabled");c.appendChild(h);var p=this.addLinkSection(c),u=this.addCheckbox(c,mxResources.get("zoom"),!0,null,!0);mxUtils.write(c,":");var q=document.createElement("input");q.setAttribute("type","text");q.style.marginRight="16px"; -q.style.width="60px";q.style.marginLeft="4px";q.style.marginRight="12px";q.value="100%";c.appendChild(q);var F=this.addCheckbox(c,mxResources.get("fit"),!0),h=null!=this.pages&&1<this.pages.length,w=w=this.addCheckbox(c,mxResources.get("allPages"),h,!h),G=this.addCheckbox(c,mxResources.get("layers"),!0),I=this.addCheckbox(c,mxResources.get("lightbox"),!0),M=this.addEditButton(c,I),z=M.getEditInput();z.style.marginBottom="16px";mxEvent.addListener(I,"change",function(){I.checked?z.removeAttribute("disabled"): -z.setAttribute("disabled","disabled");z.checked&&I.checked?M.getEditSelect().removeAttribute("disabled"):M.getEditSelect().setAttribute("disabled","disabled")});a=new CustomDialog(this,c,mxUtils.bind(this,function(){f(l.checked?d:null,u.checked,q.value,p.getTarget(),p.getColor(),F.checked,w.checked,G.checked,I.checked,M.getLink())}),null,a,b);this.showDialog(a.container,340,384,!0,!0);g.focus()};EditorUi.prototype.showPublishLinkDialog=function(a,b,d,f,k,m){var c=document.createElement("div");c.style.whiteSpace= -"nowrap";var g=document.createElement("h3");mxUtils.write(g,a||mxResources.get("link"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";c.appendChild(g);var h=this.getCurrentFile(),g="https://desk.draw.io/support/solutions/articles/16000051941";a=0;if(null!=h&&h.constructor==window.DriveFile&&!b){a=80;var g="https://desk.draw.io/support/solutions/articles/16000039384",l=document.createElement("div");l.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;"; -var n=document.createElement("div");n.style.whiteSpace="normal";mxUtils.write(n,mxResources.get("linkAccountRequired"));l.appendChild(n);n=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(h.getId())}));n.style.marginTop="12px";n.className="geBtn";l.appendChild(n);c.appendChild(l);n=document.createElement("a");n.style.paddingLeft="12px";n.style.color="gray";n.style.fontSize="11px";n.setAttribute("href","javascript:void(0);");mxUtils.write(n,mxResources.get("check")); -l.appendChild(n);mxEvent.addListener(n,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(a){this.spinner.stop();a=new ErrorDialog(this,null,mxResources.get(null!=a?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(a.container,300,80,!0,!1);a.init()}))}))}var t=null,p=null;if(null!=d||null!=f)a+=30,mxUtils.write(c,mxResources.get("width")+":"),t=document.createElement("input"), -t.setAttribute("type","text"),t.style.marginRight="16px",t.style.width="50px",t.style.marginLeft="6px",t.style.marginRight="16px",t.style.marginBottom="10px",t.value="100%",c.appendChild(t),mxUtils.write(c,mxResources.get("height")+":"),p=document.createElement("input"),p.setAttribute("type","text"),p.style.width="50px",p.style.marginLeft="6px",p.style.marginBottom="10px",p.value=f+"px",c.appendChild(p),mxUtils.br(c);var q=this.addLinkSection(c,m);d=null!=this.pages&&1<this.pages.length;var w=null; -if(null==h||h.constructor!=window.DriveFile||b)w=this.addCheckbox(c,mxResources.get("allPages"),d,!d);var G=this.addCheckbox(c,mxResources.get("lightbox"),!0),I=this.addEditButton(c,G),M=I.getEditInput(),z=this.addCheckbox(c,mxResources.get("layers"),!0);z.style.marginLeft=M.style.marginLeft;z.style.marginBottom="16px";z.style.marginTop="8px";mxEvent.addListener(G,"change",function(){G.checked?(z.removeAttribute("disabled"),M.removeAttribute("disabled")):(z.setAttribute("disabled","disabled"),M.setAttribute("disabled", -"disabled"));M.checked&&G.checked?I.getEditSelect().removeAttribute("disabled"):I.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,c,mxUtils.bind(this,function(){k(q.getTarget(),q.getColor(),null==w?!0:w.checked,G.checked,I.getLink(),z.checked,null!=t?t.value:null,null!=p?p.value:null)}),null,mxResources.get("create"),g);this.showDialog(b.container,340,254+a,!0,!0);null!=t?(t.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?t.select(): -document.execCommand("selectAll",!1,null)):q.focus()};EditorUi.prototype.showRemoteExportDialog=function(a,b,d,f){var c=document.createElement("div");c.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,mxResources.get("image"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";c.appendChild(g);var h=this.addCheckbox(c,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),l=f?null:this.addCheckbox(c,mxResources.get("includeCopyOfMyDiagram"), -!0),g=this.editor.graph,k=f?null:this.addCheckbox(c,mxResources.get("transparentBackground"),g.background==mxConstants.NONE||null==g.background);null!=k&&(k.style.marginBottom="16px");a=new CustomDialog(this,c,mxUtils.bind(this,function(){d(!h.checked,null!=l?l.checked:!1,null!=k?k.checked:!1)}),null,a,b);this.showDialog(a.container,300,f?100:186,!0,!0)};EditorUi.prototype.showExportDialog=function(a,b,d,f,k,m,r,n){r=null!=r?r:!0;var c=document.createElement("div");c.style.whiteSpace="nowrap";var g= -this.editor.graph,h="jpeg"==n?196:300,l=document.createElement("h3");mxUtils.write(l,a);l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";c.appendChild(l);mxUtils.write(c,mxResources.get("zoom")+":");var t=document.createElement("input");t.setAttribute("type","text");t.style.marginRight="16px";t.style.width="60px";t.style.marginLeft="4px";t.style.marginRight="12px";t.value=this.lastExportZoom||"100%";c.appendChild(t);mxUtils.write(c,mxResources.get("borderWidth")+":"); -var p=document.createElement("input");p.setAttribute("type","text");p.style.marginRight="16px";p.style.width="60px";p.style.marginLeft="4px";p.value=this.lastExportBorder||"0";c.appendChild(p);mxUtils.br(c);var q=this.addCheckbox(c,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=n),x=this.addCheckbox(c,mxResources.get("selectionOnly"),!1,g.isSelectionEmpty()),w=document.createElement("input");w.style.marginTop="16px";w.style.marginRight="8px";w.style.marginLeft="24px";w.setAttribute("disabled", -"disabled");w.setAttribute("type","checkbox");m&&(c.appendChild(w),mxUtils.write(c,mxResources.get("crop")),mxUtils.br(c),h+=26,mxEvent.addListener(x,"change",function(){x.checked?w.removeAttribute("disabled"):w.setAttribute("disabled","disabled")}));g.isSelectionEmpty()||(w.setAttribute("checked","checked"),w.defaultChecked=!0);var M=this.addCheckbox(c,mxResources.get("shadow"),g.shadowVisible),z=document.createElement("input");z.style.marginTop="16px";z.style.marginRight="8px";z.setAttribute("type", -"checkbox");!this.isOffline()&&this.canvasSupported||z.setAttribute("disabled","disabled");b&&(c.appendChild(z),mxUtils.write(c,mxResources.get("embedImages")),mxUtils.br(c),h+=26);var B=this.addCheckbox(c,mxResources.get("includeCopyOfMyDiagram"),r,null,null,"jpeg"!=n),K=null!=this.pages&&1<this.pages.length,O=this.addCheckbox(c,K?mxResources.get("allPages"):"",K,!K,null,"jpeg"!=n);O.style.marginLeft="24px";O.style.marginBottom="16px";K||(O.style.display="none");mxEvent.addListener(B,"change",function(){B.checked&& -K?O.removeAttribute("disabled"):O.setAttribute("disabled","disabled")});r&&K||O.setAttribute("disabled","disabled");var T=document.createElement("select");T.style.maxWidth="260px";T.style.marginLeft="8px";T.style.marginRight="10px";T.className="geBtn";a=document.createElement("option");a.setAttribute("value","auto");mxUtils.write(a,mxResources.get("automatic"));T.appendChild(a);a=document.createElement("option");a.setAttribute("value","blank");mxUtils.write(a,mxResources.get("openInNewWindow"));T.appendChild(a); -a=document.createElement("option");a.setAttribute("value","self");mxUtils.write(a,mxResources.get("openInThisWindow"));T.appendChild(a);"svg"==n&&(mxUtils.write(c,mxResources.get("links")+":"),c.appendChild(T),mxUtils.br(c),mxUtils.br(c),h+=26);d=new CustomDialog(this,c,mxUtils.bind(this,function(){this.lastExportBorder=p.value;this.lastExportZoom=t.value;k(t.value,q.checked,!x.checked,M.checked,B.checked,z.checked,p.value,w.checked,!O.checked,T.value)}),null,d,f);this.showDialog(d.container,340, -h,!0,!0);t.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?t.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(a,b,d,f,k){var c=document.createElement("div");c.style.whiteSpace="nowrap";var g=this.editor.graph;if(null!=b){var h=document.createElement("h3");mxUtils.write(h,b);h.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";c.appendChild(h)}var l=this.addCheckbox(c,mxResources.get("fit"), -!0),n=this.addCheckbox(c,mxResources.get("shadow"),g.shadowVisible&&f,!f),t=this.addCheckbox(c,d),u=this.addCheckbox(c,mxResources.get("lightbox"),!0),p=this.addEditButton(c,u),q=p.getEditInput(),w=1<g.model.getChildCount(g.model.getRoot()),G=this.addCheckbox(c,mxResources.get("layers"),w,!w);G.style.marginLeft=q.style.marginLeft;G.style.marginBottom="12px";G.style.marginTop="8px";mxEvent.addListener(u,"change",function(){u.checked?(w&&G.removeAttribute("disabled"),q.removeAttribute("disabled")): -(G.setAttribute("disabled","disabled"),q.setAttribute("disabled","disabled"));q.checked&&u.checked?p.getEditSelect().removeAttribute("disabled"):p.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,c,mxUtils.bind(this,function(){a(l.checked,n.checked,t.checked,u.checked,p.getLink(),G.checked)}),null,mxResources.get("embed"),k);this.showDialog(b.container,280,280,!0,!0)};EditorUi.prototype.createEmbedImage=function(a,b,d,f,k,m,r,n){function c(c){var b=" ",h="";f&&(b=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('https://www.draw.io/?client=1&lightbox=1"+ -(k?"&edit=_blank":"")+(m?"&layers=1":"")+"');}})(this);\"",h+="cursor:pointer;");a&&(h+="max-width:100%;");var l="";d&&(l=' width="'+Math.round(g.width)+'" height="'+Math.round(g.height)+'"');r('<img src="'+c+'"'+l+(""!=h?' style="'+h+'"':"")+b+"/>")}var g=this.editor.graph.getGraphBounds();if(this.isExportToCanvas())this.exportToCanvas(mxUtils.bind(this,function(a){var b=f?this.getFileData(!0):null;a=this.createImageDataUri(a,b,"png");c(a)}),null,null,null,mxUtils.bind(this,function(a){n({message:mxResources.get("unknownError")})}), -null,!0,d?2:1,null,b);else if(b=this.getFileData(!0),g.width*g.height<=MAX_AREA&&b.length<=MAX_REQUEST_SIZE){var h="";d&&(h="&w="+Math.round(2*g.width)+"&h="+Math.round(2*g.height));var l=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(f?"1":"0")+h+"&xml="+encodeURIComponent(b));l.send(mxUtils.bind(this,function(){200<=l.getStatus()&&299>=l.getStatus()?c("data:image/png;base64,"+l.getText()):n({message:mxResources.get("unknownError")})}))}else n({message:mxResources.get("drawingTooLarge")})}; -EditorUi.prototype.createEmbedSvg=function(a,b,d,f,k,m,r){var c=this.editor.graph.getSvg(),g=c.getElementsByTagName("a");if(null!=g)for(var h=0;h<g.length;h++){var l=g[h].getAttribute("href");null!=l&&"#"==l.charAt(0)&&"_blank"==g[h].getAttribute("target")&&g[h].removeAttribute("target")}f&&c.setAttribute("content",this.getFileData(!0));b&&this.editor.graph.addSvgShadow(c);if(d){var n=" ",t="";f&&(n="onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('https://www.draw.io/?client=1&lightbox=1"+ -(k?"&edit=_blank":"")+(m?"&layers=1":"")+"');}})(this);\"",t+="cursor:pointer;");a&&(t+="max-width:100%;");this.convertImages(c,mxUtils.bind(this,function(a){r('<img src="'+this.createSvgDataUri(mxUtils.getXml(a))+'"'+(""!=t?' style="'+t+'"':"")+n+"/>")}))}else t="",f&&(c.setAttribute("onclick","(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&&src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&&!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('https://www.draw.io/?client=1&lightbox=1"+ -(k?"&edit=_blank":"")+(m?"&layers=1":"")+"');}}})(this);"),t+="cursor:pointer;"),a&&(a=parseInt(c.getAttribute("width")),b=parseInt(c.getAttribute("height")),c.setAttribute("viewBox","0 0 "+a+" "+b),t+="max-width:100%;max-height:"+b+"px;",c.removeAttribute("height")),""!=t&&c.setAttribute("style",t),r(mxUtils.getXml(c))};EditorUi.prototype.timeSince=function(a){a=Math.floor((new Date-a)/1E3);var c=Math.floor(a/31536E3);if(1<c)return c+" "+mxResources.get("years");c=Math.floor(a/2592E3);if(1<c)return c+ -" "+mxResources.get("months");c=Math.floor(a/86400);if(1<c)return c+" "+mxResources.get("days");c=Math.floor(a/3600);if(1<c)return c+" "+mxResources.get("hours");c=Math.floor(a/60);return 1<c?c+" "+mxResources.get("minutes"):1==c?c+" "+mxResources.get("minute"):null};EditorUi.prototype.convertMath=function(a,b,d,f){a.mathEnabled&&"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?(Editor.MathJaxRender(b),window.setTimeout(mxUtils.bind(this,function(){MathJax.Hub.Queue(mxUtils.bind(this, -function(){f()}))}),0)):f()};EditorUi.prototype.decodeNodeIntoGraph=function(a,b){if(null!=a){var c=null;if("diagram"==a.nodeName)c=a;else if("mxfile"==a.nodeName){var d=a.getElementsByTagName("diagram");if(0<d.length){var c=d[0],f=b.getGlobalVariable;b.getGlobalVariable=function(a){return"page"==a?c.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==a?1:f.apply(this,arguments)}}}null!=c&&(d=b.decompress(mxUtils.getTextContent(c)),null!=d&&0<d.length&&(a=mxUtils.parseXml(d).documentElement))}d= -this.editor.graph;try{this.editor.graph=b,this.editor.setGraphXml(a)}catch(m){}finally{this.editor.graph=d}return a};EditorUi.prototype.getEmbeddedPng=function(a,b,d){var c=this.editor.graph,f=null;if(null!=d&&0<d.length)c=this.createTemporaryGraph(this.editor.graph.getStylesheet()),document.body.appendChild(c.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(d).documentElement,!0),c),f=d;else if(null!=this.pages&&this.currentPage!=this.pages[0]){var c=this.createTemporaryGraph(c.getStylesheet()), -g=c.getGlobalVariable,h=this.pages[0];c.getGlobalVariable=function(a){return"page"==a?h.getName():"pagenumber"==a?1:g.apply(this,arguments)};document.body.appendChild(c.container);c.model.setRoot(h.root)}this.exportToCanvas(mxUtils.bind(this,function(d){try{null==f&&(f=this.getFileData(!0));var g=d.toDataURL("image/png"),g=this.writeGraphModelToPng(g,"zTXt","mxGraphModel",atob(this.editor.graph.compress(f)));a(g.substring(g.lastIndexOf(",")+1));c!=this.editor.graph&&c.container.parentNode.removeChild(c.container)}catch(D){null!= -b&&b(D)}}),null,null,null,mxUtils.bind(this,function(a){null!=b&&b(a)}),null,null,null,null,c.shadowVisible,null,c)};EditorUi.prototype.getEmbeddedSvg=function(a,b,d,f,k,m,r){r=b.background;r==mxConstants.NONE&&(r=null);b=b.getSvg(r,null,null,null,null,m);null!=a&&b.setAttribute("content",a);null!=d&&b.setAttribute("resource",d);if(null!=k)this.convertImages(b,mxUtils.bind(this,function(a){k((f?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+ -mxUtils.getXml(a))}));else return(f?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(b)};EditorUi.prototype.exportImage=function(a,b,d,f,k,m,r,n,v){v=null!=v?v:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var c=this.editor.graph.isSelectionEmpty();d=null!=d?d:c;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.exportToCanvas(mxUtils.bind(this,function(a){this.spinner.stop(); -try{this.saveCanvas(a,k?this.getFileData(!0,null,null,null,d,n):null,v)}catch(u){"Invalid image"==u.message?this.downloadFile(v):this.handleError(u)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),null,d,a||1,b,f,null,null,m,r)}catch(y){this.spinner.stop(),this.handleError(y)}}};EditorUi.prototype.loadFonts=function(a){if(null!=this.editor.fontCss&&null==this.editor.resolvedFontCss){var c=function(a){return a.replace(RegExp("^[\\s\"']+","g"), -"").replace(RegExp("[\\s\"']+$","g"),"")},b=this.editor.fontCss.split("url("),d=0,f={},m=mxUtils.bind(this,function(){if(0==d){for(var g=[b[0]],h=1;h<b.length;h++){var l=b[h].indexOf(")");g.push('url("');g.push(f[c(b[h].substring(0,l))]);g.push('"'+b[h].substring(l))}this.editor.resolvedFontCss=g.join("");a()}});if(0<b.length)for(var k=1;k<b.length;k++){var n=b[k].indexOf(")"),v=null,p=b[k].indexOf("format(",n);0<p&&(v=c(b[k].substring(p+7,b[k].indexOf(")",p))));mxUtils.bind(this,function(a){if(null== -f[a]){f[a]=a;d++;var c="application/x-font-ttf";if("svg"==v||/(\.svg)($|\?)/i.test(a))c="image/svg+xml";else if("otf"==v||"embedded-opentype"==v||/(\.otf)($|\?)/i.test(a))c="application/x-font-opentype";else if("woff"==v||/(\.woff)($|\?)/i.test(a))c="application/font-woff";else if("woff2"==v||/(\.woff2)($|\?)/i.test(a))c="application/font-woff2";else if("eot"==v||/(\.eot)($|\?)/i.test(a))c="application/vnd.ms-fontobject";else if("sfnt"==v||/(\.sfnt)($|\?)/i.test(a))c="application/font-sfnt";var b= -a;/^https?:\/\//.test(b)&&!this.isCorsEnabledForUrl(b)&&(b=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(b,mxUtils.bind(this,function(c){f[a]=c;d--;m()}),mxUtils.bind(this,function(a){d--;m()}),!0,null,"data:"+c+";charset=utf-8;base64,")}})(c(b[k].substring(0,n)),v)}}else a()};EditorUi.prototype.exportToCanvas=function(a,b,d,f,k,m,r,n,p,q,y,u,A,w){m=null!=m?m:!0;u=null!=u?u:this.editor.graph;A=null!=A?A:0;var c=p?null:u.background;c==mxConstants.NONE&&(c=null);null==c&&(c=f);null==c&&0==p&& -(c=this.editor.graph.defaultPageBackgroundColor);this.convertImages(u.getSvg(c,null,null,w,null,null!=r?r:!0,null,null,null,q),mxUtils.bind(this,function(d){var f=new Image;f.onload=mxUtils.bind(this,function(){try{var g=document.createElement("canvas"),h=parseInt(d.getAttribute("width")),l=parseInt(d.getAttribute("height"));n=null!=n?n:1;null!=b&&(n=m?Math.min(1,Math.min(3*b/(4*l),b/h)):b/h);h=Math.ceil(n*h)+2*A;l=Math.ceil(n*l)+2*A;g.setAttribute("width",h);g.setAttribute("height",l);var r=g.getContext("2d"); -null!=c&&(r.beginPath(),r.rect(0,0,h,l),r.fillStyle=c,r.fill());r.scale(n,n);mxClient.IS_SF?window.setTimeout(function(){r.drawImage(f,A/n,A/n);a(g)},0):(r.drawImage(f,A/n,A/n),a(g))}catch(T){null!=k&&k(T)}});f.onerror=function(a){null!=k&&k(a)};try{q&&this.editor.graph.addSvgShadow(d,d);var g=mxUtils.bind(this,function(){if(null!=this.editor.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.editor.resolvedFontCss;d.getElementsByTagName("defs")[0].appendChild(a)}this.convertMath(u, -d,!0,mxUtils.bind(this,function(){f.src=this.createSvgDataUri(mxUtils.getXml(d))}))});this.loadFonts(g)}catch(z){null!=k&&k(z)}}),d,y)};EditorUi.prototype.createImageUrlConverter=function(){var a=new mxUrlConverter;a.updateBaseUrl();var b=a.convert,d=this;a.convert=function(c){if(null!=c){var f="http://"==c.substring(0,7)||"https://"==c.substring(0,8);f&&!navigator.onLine?c=d.svgBrokenImage.src:!f||c.substring(0,a.baseUrl.length)==a.baseUrl||d.crossOriginImages&&d.isCorsEnabledForUrl(c)?"chrome-extension://"!= -c.substring(0,19)&&(c=b.apply(this,arguments)):c=PROXY_URL+"?url="+encodeURIComponent(c)}return c};return a};EditorUi.prototype.convertImages=function(a,b,d,f){null==f&&(f=this.createImageUrlConverter());var c=0,g=d||{};d=mxUtils.bind(this,function(d,h){for(var l=a.getElementsByTagName(d),m=0;m<l.length;m++)mxUtils.bind(this,function(d){var l=f.convert(d.getAttribute(h));if(null!=l&&"data:"!=l.substring(0,5)){var m=g[l];null==m?(c++,this.convertImageToDataUri(l,function(f){null!=f&&(g[l]=f,d.setAttribute(h, -f));c--;0==c&&b(a)})):d.setAttribute(h,m)}else null!=l&&d.setAttribute(h,l)})(l[m])});d("image","xlink:href");d("img","src");0==c&&b(a)};EditorUi.prototype.loadUrl=function(a,b,d,f,k,m){try{var c=f||/(\.png)($|\?)/i.test(a)||/(\.jpe?g)($|\?)/i.test(a)||/(\.gif)($|\?)/i.test(a);k=null!=k?k:!0;var g=mxUtils.bind(this,function(){mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=b){var f=a.getText();if(c){if((9==document.documentMode||10==document.documentMode)&& -"undefined"!==typeof window.mxUtilsBinaryToArray){a=mxUtilsBinaryToArray(a.request.responseBody).toArray();for(var f=Array(a.length),g=0;g<a.length;g++)f[g]=String.fromCharCode(a[g]);f=f.join("")}m=null!=m?m:"data:image/png;base64,";f=m+this.base64Encode(f)}b(f)}}else null!=d&&d({code:App.ERROR_UNKNOWN},a)}),function(){null!=d&&d({code:App.ERROR_UNKNOWN})},c,this.timeout,function(){k&&null!=d&&d({code:App.ERROR_TIMEOUT,retry:g})})});g()}catch(v){null!=d&&d(v)}};EditorUi.prototype.isCorsEnabledForUrl= +stroke:"#36393d"}]];StyleFormatPanel.prototype.customColorSchemes=null;StyleFormatPanel.prototype.findCommonProperties=function(a,d,b){if(null!=d){var c=function(a){if(null!=a)if(b)for(var c=0;c<a.length;c++)d[a[c].name]=a[c];else for(var f in d){for(var e=!1,c=0;c<a.length;c++)if(a[c].name==f&&a[c].type==d[f].type){e=!0;break}e||delete d[f]}},f=this.editorUi.editor.graph.view.getState(a);null!=f&&null!=f.shape&&(f.shape.commonCustomPropAdded||(f.shape.commonCustomPropAdded=!0,f.shape.customProperties= +f.shape.customProperties||[],f.cell.vertex?Array.prototype.push.apply(f.shape.customProperties,Editor.commonVertexProperties):Array.prototype.push.apply(f.shape.customProperties,Editor.commonEdgeProperties)),c(f.shape.customProperties));a=a.getAttribute("customProperties");if(null!=a)try{c(JSON.parse(a))}catch(S){}}};var d=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var a=this.format.createSelectionState();"image"!=a.style.shape&&this.container.appendChild(this.addStyles(this.createPanel())); +d.apply(this,arguments);if(Editor.enableCustomProperties){for(var b={},c=a.vertices,f=a.edges,e=0;e<c.length;e++)this.findCommonProperties(c[e],b,0==e);for(e=0;e<f.length;e++)this.findCommonProperties(f[e],b,0==c.length&&0==e);0<Object.getOwnPropertyNames(b).length&&this.container.appendChild(this.addProperties(this.createPanel(),b,a))}};var f=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(a){var d=mxUtils.button(mxResources.get("copyStyle"),mxUtils.bind(this, +function(a){this.editorUi.actions.get("copyStyle").funct()}));d.setAttribute("title",mxResources.get("copyStyle")+" ("+this.editorUi.actions.get("copyStyle").shortcut+")");d.style.marginBottom="2px";d.style.width="100px";d.style.marginRight="2px";a.appendChild(d);d=mxUtils.button(mxResources.get("pasteStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("pasteStyle").funct()}));d.setAttribute("title",mxResources.get("pasteStyle")+" ("+this.editorUi.actions.get("pasteStyle").shortcut+")"); +d.style.marginBottom="2px";d.style.width="100px";a.appendChild(d);mxUtils.br(a);return f.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=function(a,d,b){function c(a,d,b,c){k.getModel().beginUpdate();try{var f=[],e=[];if(null!=b.index){for(var g=[],l=b.parentRow.nextSibling;l&&l.getAttribute("data-pName")==a;)g.push(l.getAttribute("data-pValue")),l=l.nextSibling;b.index<g.length?null!=c?g.splice(c,1):g[b.index]=d:g.push(d);null!=b.size&&g.length> +b.size&&(g=g.slice(0,b.size));d=g.join(",");null!=b.countProperty&&(k.setCellStyles(b.countProperty,g.length,k.getSelectionCells()),f.push(b.countProperty),e.push(g.length))}k.setCellStyles(a,d,k.getSelectionCells());f.push(a);e.push(d);if(null!=b.dependentProps)for(a=0;a<b.dependentProps.length;a++){var n=b.dependentPropsDefVal[a],p=b.dependentPropsVals[a];if(p.length>d)p=p.slice(0,d);else for(var t=p.length;t<d;t++)p.push(n);p=p.join(",");k.setCellStyles(b.dependentProps[a],p,k.getSelectionCells()); +f.push(b.dependentProps[a]);e.push(p)}u.editorUi.fireEvent(new mxEventObject("styleChanged","keys",f,"values",e,"cells",k.getSelectionCells()))}finally{k.getModel().endUpdate()}}function f(d,b,c){var f=mxUtils.getOffset(a,!0),e=mxUtils.getOffset(d,!0);b.style.position="absolute";b.style.left=e.x-f.x+"px";b.style.top=e.y-f.y+"px";b.style.width=d.offsetWidth+"px";b.style.height=d.offsetHeight-(c?4:0)+"px";b.style.zIndex=5}function e(a,d,b){var f=document.createElement("div");f.style.width="32px";f.style.height= +"4px";f.style.margin="2px";f.style.border="1px solid black";f.style.background=d&&"none"!=d?d:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(u,function(e){this.editorUi.pickColor(d,function(d){f.style.background="none"==d?"url('"+Dialog.prototype.noColorImage+"')":d;c(a,d,b)});mxEvent.consume(e)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(f);return btn}function g(a,d,b,f,e,g,l){null!=d&&(d=d.split(","),t.push({name:a, +values:d,type:b,defVal:f,countProperty:e,parentRow:g,isDeletable:!0,flipBkg:l}));btn=mxUtils.button("+",mxUtils.bind(u,function(d){for(var n=g,u=0;null!=n.nextSibling;)if(n.nextSibling.getAttribute("data-pName")==a)n=n.nextSibling,u++;else break;var k={type:b,parentRow:g,index:u,isDeletable:!0,defVal:f,countProperty:e},u=p(a,"",k,0==u%2,l);c(a,f,k);n.parentNode.insertBefore(u,n.nextSibling);mxEvent.consume(d)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn} +function l(a,d,b,c,f,e,g){if(0<f){var l=Array(f);d=null!=d?d.split(","):[];for(var n=0;n<f;n++)l[n]=null!=d[n]?d[n]:null!=c?c:"";t.push({name:a,values:l,type:b,defVal:c,parentRow:e,flipBkg:g,size:f})}return document.createElement("div")}function n(a,d,b){var f=document.createElement("input");f.type="checkbox";f.checked="1"==d;mxEvent.addListener(f,"change",function(){c(a,f.checked?"1":"0",b)});return f}function p(d,b,p,k,t){var y=p.dispName,B=p.type,x=document.createElement("tr");x.className="gePropRow"+ +(t?"Dark":"")+(k?"Alt":"")+" gePropNonHeaderRow";x.setAttribute("data-pName",d);x.setAttribute("data-pValue",b);k=!1;null!=p.index&&(x.setAttribute("data-index",p.index),y=(null!=y?y:"")+"["+p.index+"]",k=!0);var A=document.createElement("td");A.className="gePropRowCell";A.innerHTML=mxUtils.htmlEntities(mxResources.get(y,null,y));k&&(A.style.textAlign="right");x.appendChild(A);A=document.createElement("td");A.className="gePropRowCell";if("color"==B)A.appendChild(e(d,b,p));else if("bool"==B||"boolean"== +B)A.appendChild(n(d,b,p));else if("enum"==B){var m=p.enumList;for(t=0;t<m.length;t++)if(y=m[t],y.val==b){A.innerHTML=mxUtils.htmlEntities(mxResources.get(y.dispName,null,y.dispName));break}mxEvent.addListener(A,"click",mxUtils.bind(u,function(){var e=document.createElement("select");f(A,e);for(var g=0;g<m.length;g++){var l=m[g],n=document.createElement("option");n.value=mxUtils.htmlEntities(l.val);n.innerHTML=mxUtils.htmlEntities(mxResources.get(l.dispName,null,l.dispName));e.appendChild(n)}e.value= +b;a.appendChild(e);mxEvent.addListener(e,"change",function(){var a=mxUtils.htmlEntities(e.value);c(d,a,p)});e.focus();mxEvent.addListener(e,"blur",function(){a.removeChild(e)})}))}else"dynamicArr"==B?A.appendChild(g(d,b,p.subType,p.subDefVal,p.countProperty,x,t)):"staticArr"==B?A.appendChild(l(d,b,p.subType,p.subDefVal,p.size,x,t)):(A.innerHTML=b,mxEvent.addListener(A,"click",mxUtils.bind(u,function(){function e(){var a=g.value,a=0==a.length&&"string"!=B?0:a;p.allowAuto&&("auto"==a.trim().toLowerCase()? +(a="auto",B="string"):(a=parseFloat(a),a=isNaN(a)?0:a));null!=p.min&&a<p.min?a=p.min:null!=p.max&&a>p.max&&(a=p.max);a=mxUtils.htmlEntities(("int"==B?parseInt(a):a)+"");c(d,a,p)}var g=document.createElement("input");f(A,g,!0);g.value=b;g.className="gePropEditor";"int"!=B&&"float"!=B||p.allowAuto||(g.type="number",g.step="int"==B?"1":"any",null!=p.min&&(g.min=parseFloat(p.min)),null!=p.max&&(g.max=parseFloat(p.max)));a.appendChild(g);mxEvent.addListener(g,"keypress",function(a){13==a.keyCode&&e()}); +g.focus();mxEvent.addListener(g,"blur",function(){e()})})));p.isDeletable&&(t=mxUtils.button("-",mxUtils.bind(u,function(a){c(d,"",p,p.index);mxEvent.consume(a)})),t.style.height="16px",t.style.width="25px",t.style["float"]="right",t.className="geColorBtn",A.appendChild(t));x.appendChild(A);return x}var u=this,k=this.editorUi.editor.graph,t=[];a.style.position="relative";a.style.padding="0";var y=document.createElement("table");y.style.whiteSpace="nowrap";y.style.width="100%";var B=document.createElement("tr"); +B.className="gePropHeader";var x=document.createElement("th");x.className="gePropHeaderCell";var A=document.createElement("img");A.src=Sidebar.prototype.expandedImage;x.appendChild(A);mxUtils.write(x,mxResources.get("property"));B.style.cursor="pointer";var m=function(){var d=y.querySelectorAll(".gePropNonHeaderRow"),b;if(u.editorUi.propertiesCollapsed){A.src=Sidebar.prototype.collapsedImage;b="none";for(var c=a.childNodes.length-1;0<=c;c--)try{var f=a.childNodes[c],e=f.nodeName.toUpperCase();"INPUT"!= +e&&"SELECT"!=e||a.removeChild(f)}catch(ha){}}else A.src=Sidebar.prototype.expandedImage,b="";for(c=0;c<d.length;c++)d[c].style.display=b};mxEvent.addListener(B,"click",function(){u.editorUi.propertiesCollapsed=!u.editorUi.propertiesCollapsed;m()});B.appendChild(x);x=document.createElement("th");x.className="gePropHeaderCell";x.innerHTML=mxResources.get("value");B.appendChild(x);y.appendChild(B);var q=!1,r=!1,v;for(v in d)if(B=d[v],"function"!=typeof B.isVisible||B.isVisible(b)){var z=null!=b.style[v]? +mxUtils.htmlEntities(b.style[v]+""):B.defVal;if("separator"==B.type)r=!r;else{if("staticArr"==B.type)B.size=parseInt(b.style[B.sizeProperty]||d[B.sizeProperty].defVal)||0;else if(null!=B.dependentProps){for(var I=B.dependentProps,aa=[],L=[],x=0;x<I.length;x++){var P=b.style[I[x]];L.push(d[I[x]].subDefVal);aa.push(null!=P?P.split(","):[])}B.dependentPropsDefVal=L;B.dependentPropsVals=aa}y.appendChild(p(v,z,B,q,r));q=!q}}for(x=0;x<t.length;x++)for(B=t[x],d=B.parentRow,b=0;b<B.values.length;b++)v=p(B.name, +B.values[b],{type:B.type,parentRow:B.parentRow,isDeletable:B.isDeletable,index:b,defVal:B.defVal,countProperty:B.countProperty,size:B.size},0==b%2,B.flipBkg),d.parentNode.insertBefore(v,d.nextSibling),d=v;a.appendChild(y);m();return a};StyleFormatPanel.prototype.addStyles=function(a){function d(a){function d(a){var d=mxUtils.button("",function(d){c.getModel().beginUpdate();try{var b=c.getSelectionCells();for(d=0;d<b.length;d++){for(var f=c.getModel().getStyle(b[d]),g=0;g<e.length;g++)f=mxUtils.removeStylename(f, +e[g]);var l=c.getModel().isVertex(b[d])?c.defaultVertexStyle:c.defaultEdgeStyle;null!=a?(f=mxUtils.setStyle(f,mxConstants.STYLE_FILLCOLOR,a.fill||mxUtils.getValue(l,mxConstants.STYLE_FILLCOLOR,null)),f=mxUtils.setStyle(f,mxConstants.STYLE_STROKECOLOR,a.stroke||mxUtils.getValue(l,mxConstants.STYLE_STROKECOLOR,null)),f=mxUtils.setStyle(f,mxConstants.STYLE_GRADIENTCOLOR,a.gradient||mxUtils.getValue(l,mxConstants.STYLE_GRADIENTCOLOR,null)),c.getModel().isVertex(b[d])&&(f=mxUtils.setStyle(f,mxConstants.STYLE_FONTCOLOR, +a.font||mxUtils.getValue(l,mxConstants.STYLE_FONTCOLOR,null)))):(f=mxUtils.setStyle(f,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(l,mxConstants.STYLE_FILLCOLOR,"#ffffff")),f=mxUtils.setStyle(f,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(l,mxConstants.STYLE_STROKECOLOR,"#000000")),f=mxUtils.setStyle(f,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(l,mxConstants.STYLE_GRADIENTCOLOR,null)),c.getModel().isVertex(b[d])&&(f=mxUtils.setStyle(f,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(l,mxConstants.STYLE_FONTCOLOR, +null))));c.getModel().setStyle(b[d],f)}}finally{c.getModel().endUpdate()}});d.className="geStyleButton";d.style.width="36px";d.style.height="30px";d.style.margin="0px 6px 6px 0px";if(null!=a)null!=a.gradient?mxClient.IS_IE&&(mxClient.IS_QUIRKS||10>document.documentMode)?d.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+a.fill+"', EndColorStr='"+a.gradient+"', GradientType=0)":d.style.backgroundImage="linear-gradient("+a.fill+" 0px,"+a.gradient+" 100%)":a.fill==mxConstants.NONE? +d.style.background="url('"+Dialog.prototype.noColorImage+"')":d.style.backgroundColor=a.fill||mxUtils.getValue(c.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),d.style.border="1px solid "+(a.stroke||mxUtils.getValue(c.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000"));else{var b=mxUtils.getValue(c.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),g=mxUtils.getValue(c.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");d.style.backgroundColor=b;d.style.border="1px solid "+ +g}f.appendChild(d)}f.innerHTML="";for(var b=0;b<a.length;b++)0<b&&0==mxUtils.mod(b,4)&&mxUtils.br(f),d(a[b])}function b(a){mxEvent.addListener(a,"mouseenter",function(){a.style.opacity="1"});mxEvent.addListener(a,"mouseleave",function(){a.style.opacity="0.5"})}var c=this.editorUi.editor.graph,f=document.createElement("div");f.style.whiteSpace="nowrap";f.style.paddingLeft="24px";f.style.paddingRight="20px";a.style.paddingLeft="16px";a.style.paddingBottom="6px";a.style.position="relative";a.appendChild(f); +var e="plain-gray plain-blue plain-green plain-turquoise plain-orange plain-yellow plain-red plain-pink plain-purple gray blue green turquoise orange yellow red pink purple".split(" ");null==this.editorUi.currentScheme&&(this.editorUi.currentScheme=0);var g=document.createElement("div");g.style.cssText="position:absolute;left:10px;top:8px;bottom:8px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);"; +mxEvent.addListener(g,"click",mxUtils.bind(this,function(){this.editorUi.currentScheme=mxUtils.mod(this.editorUi.currentScheme-1,this.defaultColorSchemes.length);d(this.defaultColorSchemes[this.editorUi.currentScheme])}));var l=document.createElement("div");l.style.cssText="position:absolute;left:202px;top:8px;bottom:8px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYBuwCcAAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADZJREFUCNdjQAOMAmBKaiGY8loF5rKswsZlrVo8AUiFrTICcbIWK8A5DF1gDoMymMPApIAwHwCS0Qx/U7qCBQAAAABJRU5ErkJggg==);"; +1<this.defaultColorSchemes.length&&(a.appendChild(g),a.appendChild(l));mxEvent.addListener(l,"click",mxUtils.bind(this,function(){this.editorUi.currentScheme=mxUtils.mod(this.editorUi.currentScheme+1,this.defaultColorSchemes.length);d(this.defaultColorSchemes[this.editorUi.currentScheme])}));b(g);b(l);d(this.defaultColorSchemes[this.editorUi.currentScheme]);return a};StyleFormatPanel.prototype.addEditOps=function(a){var d=this.format.getSelectionState(),b=null;1==this.editorUi.editor.graph.getSelectionCount()&& +(b=mxUtils.button(mxResources.get("editStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("editStyle").funct()})),b.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),b.style.width="202px",b.style.marginBottom="2px",a.appendChild(b));var c=this.editorUi.editor.graph,f=c.view.getState(c.getSelectionCell());1==c.getSelectionCount()&&null!=f&&null!=f.shape&&null!=f.shape.stencil?(d=mxUtils.button(mxResources.get("editShape"),mxUtils.bind(this, +function(a){this.editorUi.actions.get("editShape").funct()})),d.setAttribute("title",mxResources.get("editShape")),d.style.marginBottom="2px",null==b?d.style.width="202px":(b.style.width="100px",d.style.width="100px",d.style.marginLeft="2px"),a.appendChild(d)):d.image&&(d=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,function(a){this.editorUi.actions.get("image").funct()})),d.setAttribute("title",mxResources.get("editImage")),d.style.marginBottom="2px",null==b?d.style.width="202px": +(b.style.width="100px",d.style.width="100px",d.style.marginLeft="2px"),a.appendChild(d));return a}}Graph.prototype.defaultThemeName="default-style2";Graph.prototype.lastPasteXml=null;Graph.prototype.pasteCounter=0;Graph.prototype.defaultScrollbars="0"!=urlParams.sb;Graph.prototype.defaultPageVisible="0"!=urlParams.pv;Graph.prototype.shadowId="dropShadow";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity="0.4";Graph.prototype.svgShadowBlur="1.7";Graph.prototype.svgShadowSize= +"3";Graph.prototype.edgeMode="move"!=urlParams.edge;var l=Graph.prototype.init;Graph.prototype.init=function(){function a(a){d=a;if(mxClient.IS_QUIRKS||7==document.documentMode||8==document.documentMode)d=mxUtils.clone(a)}l.apply(this,arguments);var d=null;mxEvent.addListener(this.container,"mouseenter",a);mxEvent.addListener(this.container,"mousemove",a);mxEvent.addListener(this.container,"mouseleave",function(a){d=null});this.isMouseInsertPoint=function(){return null!=d};var b=this.getInsertPoint; +this.getInsertPoint=function(){return null!=d?this.getPointForEvent(d):b.apply(this,arguments)};var c=this.layoutManager.getLayout;this.layoutManager.getLayout=function(a){var d=this.graph.view.getState(a),d=null!=d?d.style:this.graph.getCellStyle(a);if(null!=d){if("undefined"!=typeof mxRackContainer&&"rack"==d.childLayout){var b=new mxStackLayout(this.graph,!1);b.setChildGeometry=function(a,d){d.height=Math.max(d.height,20);if(1<d.height/20){var b=d.height%20;d.height+=10<b?20-b:-b}this.graph.getModel().setGeometry(a, +d)};b.fill=!0;b.unitSize=mxRackContainer.unitSize|20;b.marginLeft=d.marginLeft||0;b.marginRight=d.marginRight||0;b.marginTop=d.marginTop||0;b.marginBottom=d.marginBottom||0;b.resizeParent=!1;return b}if("undefined"!=typeof mxTableLayout&&"tableLayout"==d.childLayout)return b=new mxTableLayout(this.graph),b.rows=d.tableRows||2,b.columns=d.tableColumns||2,b.colPercentages=d.colPercentages,b.rowPercentages=d.rowPercentages,b.equalColumns="1"==mxUtils.getValue(d,"equalColumns",b.colPercentages?"0":"1"), +b.equalRows="1"==mxUtils.getValue(d,"equalRows",b.rowPercentages?"0":"1"),b.resizeParent="1"==mxUtils.getValue(d,"resizeParent","1"),b.border=d.tableBorder||b.border,b.marginLeft=d.marginLeft||0,b.marginRight=d.marginRight||0,b.marginTop=d.marginTop||0,b.marginBottom=d.marginBottom||0,b.autoAddCol="1"==mxUtils.getValue(d,"autoAddCol","0"),b.autoAddRow="1"==mxUtils.getValue(d,"autoAddRow",b.autoAddCol?"0":"1"),b.colWidths=d.colWidths||"100",b.rowHeights=d.rowHeights||"50",b}return c.apply(this,arguments)}}; +var n=Graph.prototype.isCssTransformsSupported;Graph.prototype.isCssTransformsSupported=function(){return n.apply(this,arguments)&&!mxClient.IS_SF};var g=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(a){var d=g.apply(this,arguments);if(null==d){if(null==this.globalUrlVars&&null!=urlParams.vars)try{this.globalUrlVars=JSON.parse(decodeURIComponent(urlParams.vars))}catch(A){null!=window.console&&console.log("Error in vars URL parameter: "+A)}null!=this.globalUrlVars&&(d= +this.globalUrlVars[a])}return d};var p=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){p.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var a=this.getDrawPane().parentNode;!this.graph.mathEnabled||mxClient.NO_FO||null!=this.webKitForceRepaintNode&&null!=this.webKitForceRepaintNode.parentNode||"svg"!=this.graph.container.firstChild.nodeName?null==this.webKitForceRepaintNode||this.graph.mathEnabled&&("svg"==this.graph.container.firstChild.nodeName|| +this.graph.container.firstChild==this.webKitForceRepaintNode)||(null!=this.webKitForceRepaintNode.parentNode&&this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",a.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,a.ownerSVGElement))}};var B=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet= +function(){B.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(a){if("data:action/json,"==a.substring(0,17)&&(a=JSON.parse(a.substring(17)),null!=a.actions)){for(var d=0;d<a.actions.length;d++)if(null!=a.actions[d].open)if(this.isCustomLink(a.actions[d].open)){if(!this.customLinkClicked(a.actions[d].open))return}else this.openLink(a.actions[d].open);this.model.beginUpdate();try{for(d=0;d<a.actions.length;d++)this.handleLinkAction(a.actions[d])}finally{this.model.endUpdate()}}}; +Graph.prototype.handleLinkAction=function(a){var d=[];null!=a.select&&this.isEnabled()&&(d=this.getCellsForAction(a.select),this.setSelectionCells(d));null!=a.highlight&&(d=this.getCellsForAction(a.highlight),this.highlightCells(d,a.highlight.color,a.highlight.duration,a.highlight.opacity));null!=a.toggle&&this.toggleCells(this.getCellsForAction(a.toggle));null!=a.show&&this.setCellsVisible(this.getCellsForAction(a.show),!0);null!=a.hide&&this.setCellsVisible(this.getCellsForAction(a.hide),!1);null!= +a.scroll&&(d=this.getCellsForAction(a.scroll));0<d.length&&this.scrollCellToVisible(d[0])};Graph.prototype.getCellsForAction=function(a){return this.getCellsById(a.cells).concat(this.getCellsForTags(a.tags))};Graph.prototype.getCellsById=function(a){var d=[];if(null!=a)for(var b=0;b<a.length;b++)if("*"==a[b])var c=this.getDefaultParent(),d=d.concat(this.model.filterDescendants(function(a){return a!=c},c));else{var f=this.model.getCell(a[b]);null!=f&&d.push(f)}return d};Graph.prototype.getCellsForTags= +function(a,d,b){var c=[];if(null!=a){d=null!=d?d:this.model.getDescendants(this.model.getRoot());b=null!=b?b:"tags";for(var f=0;f<d.length;f++)if(this.model.isVertex(d[f])||this.model.isEdge(d[f])){var e=null!=d[f].value&&"object"==typeof d[f].value?mxUtils.trim(d[f].value.getAttribute(b)||""):"",g=!0;if(0<e.length)for(var e=e.toLowerCase().split(" "),l=0;l<a.length&&g;l++)var n=mxUtils.trim(a[l]).toLowerCase(),g=g&&(0==n.length||0<=mxUtils.indexOf(e,n));else g=0==a.length;g&&c.push(d[f])}}return c}; +Graph.prototype.toggleCells=function(a){this.model.beginUpdate();try{for(var d=0;d<a.length;d++)this.model.setVisible(a[d],!this.model.isVisible(a[d]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(a,d){this.model.beginUpdate();try{for(var b=0;b<a.length;b++)this.model.setVisible(a[b],d)}finally{this.model.endUpdate()}};Graph.prototype.highlightCells=function(a,d,b,c){for(var f=0;f<a.length;f++)this.highlightCell(a[f],d,b,c)};Graph.prototype.highlightCell=function(a,d, +b,c){d=null!=d?d:mxConstants.DEFAULT_VALID_COLOR;b=null!=b?b:1E3;a=this.view.getState(a);if(null!=a){var f=Math.max(5,mxUtils.getValue(a.style,mxConstants.STYLE_STROKEWIDTH,1)+4),e=new mxCellHighlight(this,d,f,!1);null!=c&&(e.opacity=c);e.highlight(a);window.setTimeout(function(){null!=e.shape&&(mxUtils.setPrefixedStyle(e.shape.node.style,"transition","all 1200ms ease-in-out"),e.shape.node.style.opacity=0);window.setTimeout(function(){e.destroy()},1200)},b)}};Graph.prototype.addSvgShadow=function(a, +d,b){b=null!=b?b:!1;var c=a.ownerDocument,f=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"filter"):c.createElement("filter");f.setAttribute("id",this.shadowId);var e=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):c.createElement("feGaussianBlur");e.setAttribute("in","SourceAlpha");e.setAttribute("stdDeviation",this.svgShadowBlur);e.setAttribute("result","blur");f.appendChild(e);e=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"feOffset"): +c.createElement("feOffset");e.setAttribute("in","blur");e.setAttribute("dx",this.svgShadowSize);e.setAttribute("dy",this.svgShadowSize);e.setAttribute("result","offsetBlur");f.appendChild(e);e=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"feFlood"):c.createElement("feFlood");e.setAttribute("flood-color",this.svgShadowColor);e.setAttribute("flood-opacity",this.svgShadowOpacity);e.setAttribute("result","offsetColor");f.appendChild(e);e=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG, +"feComposite"):c.createElement("feComposite");e.setAttribute("in","offsetColor");e.setAttribute("in2","offsetBlur");e.setAttribute("operator","in");e.setAttribute("result","offsetBlur");f.appendChild(e);e=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"feBlend"):c.createElement("feBlend");e.setAttribute("in","SourceGraphic");e.setAttribute("in2","offsetBlur");f.appendChild(e);e=a.getElementsByTagName("defs");0==e.length?(c=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG, +"defs"):c.createElement("defs"),null!=a.firstChild?a.insertBefore(c,a.firstChild):a.appendChild(c)):c=e[0];c.appendChild(f);b||(d=null!=d?d:a.getElementsByTagName("g")[0],null!=d&&(d.setAttribute("filter","url(#"+this.shadowId+")"),isNaN(parseInt(a.getAttribute("width")))||(a.setAttribute("width",parseInt(a.getAttribute("width"))+6),a.setAttribute("height",parseInt(a.getAttribute("height"))+6),d=a.getAttribute("viewBox"),null!=d&&0<d.length&&(d=d.split(" "),3<d.length&&(w=parseFloat(d[2])+6,h=parseFloat(d[3])+ +6,a.setAttribute("viewBox",d[0]+" "+d[1]+" "+w+" "+h))))));return f};Graph.prototype.setShadowVisible=function(a,d){mxClient.IS_SVG&&(d=null!=d?d:!0,(this.shadowVisible=a)?this.view.getDrawPane().setAttribute("filter","url(#"+this.shadowId+")"):this.view.getDrawPane().removeAttribute("filter"),d&&this.fireEvent(new mxEventObject("shadowVisibleChanged")))};Graph.prototype.selectUnlockedLayer=function(){if(null==this.defaultParent){var a=this.model.getChildCount(this.model.root),d,b=0;do d=this.model.getChildAt(this.model.root, +b);while(b++<a&&"1"==mxUtils.getValue(this.getCellStyle(d),"locked","0"));null!=d&&this.setDefaultParent(d)}};mxStencilRegistry.libraries.mockup=[SHAPES_PATH+"/mockup/mxMockupButtons.js"];mxStencilRegistry.libraries.arrows2=[SHAPES_PATH+"/mxArrows.js"];mxStencilRegistry.libraries.atlassian=[STENCIL_PATH+"/atlassian.xml",SHAPES_PATH+"/mxAtlassian.js"];mxStencilRegistry.libraries.bpmn=[SHAPES_PATH+"/bpmn/mxBpmnShape2.js",STENCIL_PATH+"/bpmn.xml"];mxStencilRegistry.libraries.dfd=[SHAPES_PATH+"/mxDFD.js"]; +mxStencilRegistry.libraries.er=[SHAPES_PATH+"/er/mxER.js"];mxStencilRegistry.libraries.flowchart=[SHAPES_PATH+"/mxFlowchart.js",STENCIL_PATH+"/flowchart.xml"];mxStencilRegistry.libraries.ios=[SHAPES_PATH+"/mockup/mxMockupiOS.js"];mxStencilRegistry.libraries.rackGeneral=[SHAPES_PATH+"/rack/mxRack.js",STENCIL_PATH+"/rack/general.xml"];mxStencilRegistry.libraries.rackF5=[STENCIL_PATH+"/rack/f5.xml"];mxStencilRegistry.libraries.lean_mapping=[SHAPES_PATH+"/mxLeanMap.js",STENCIL_PATH+"/lean_mapping.xml"]; +mxStencilRegistry.libraries.basic=[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/basic.xml"];mxStencilRegistry.libraries.ios7icons=[STENCIL_PATH+"/ios7/icons.xml"];mxStencilRegistry.libraries.ios7ui=[SHAPES_PATH+"/ios7/mxIOS7Ui.js",STENCIL_PATH+"/ios7/misc.xml"];mxStencilRegistry.libraries.android=[SHAPES_PATH+"/mxAndroid.js",STENCIL_PATH+"/android/android.xml"];mxStencilRegistry.libraries["electrical/transmission"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/transmission.xml"];mxStencilRegistry.libraries["electrical/logic_gates"]= +[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/logic_gates.xml"];mxStencilRegistry.libraries["electrical/abstract"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/abstract.xml"];mxStencilRegistry.libraries.infographic=[SHAPES_PATH+"/mxInfographic.js"];mxStencilRegistry.libraries["mockup/buttons"]=[SHAPES_PATH+"/mockup/mxMockupButtons.js"];mxStencilRegistry.libraries["mockup/containers"]=[SHAPES_PATH+"/mockup/mxMockupContainers.js"];mxStencilRegistry.libraries["mockup/forms"]= +[SHAPES_PATH+"/mockup/mxMockupForms.js"];mxStencilRegistry.libraries["mockup/graphics"]=[SHAPES_PATH+"/mockup/mxMockupGraphics.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/markup"]=[SHAPES_PATH+"/mockup/mxMockupMarkup.js"];mxStencilRegistry.libraries["mockup/misc"]=[SHAPES_PATH+"/mockup/mxMockupMisc.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/navigation"]=[SHAPES_PATH+"/mockup/mxMockupNavigation.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/text"]= +[SHAPES_PATH+"/mockup/mxMockupText.js"];mxStencilRegistry.libraries.floorplan=[SHAPES_PATH+"/mxFloorplan.js",STENCIL_PATH+"/floorplan.xml"];mxStencilRegistry.libraries.bootstrap=[SHAPES_PATH+"/mxBootstrap.js",STENCIL_PATH+"/bootstrap.xml"];mxStencilRegistry.libraries.gmdl=[SHAPES_PATH+"/mxGmdl.js",STENCIL_PATH+"/gmdl.xml"];mxStencilRegistry.libraries.gcp2=[SHAPES_PATH+"/mxGCP2.js",STENCIL_PATH+"/gcp2.xml"];mxStencilRegistry.libraries.cabinets=[SHAPES_PATH+"/mxCabinets.js",STENCIL_PATH+"/cabinets.xml"]; +mxStencilRegistry.libraries.archimate=[SHAPES_PATH+"/mxArchiMate.js"];mxStencilRegistry.libraries.archimate3=[SHAPES_PATH+"/mxArchiMate3.js"];mxStencilRegistry.libraries.sysml=[SHAPES_PATH+"/mxSysML.js"];mxStencilRegistry.libraries.eip=[SHAPES_PATH+"/mxEip.js",STENCIL_PATH+"/eip.xml"];mxStencilRegistry.libraries.networks=[SHAPES_PATH+"/mxNetworks.js",STENCIL_PATH+"/networks.xml"];mxStencilRegistry.libraries.aws3d=[SHAPES_PATH+"/mxAWS3D.js",STENCIL_PATH+"/aws3d.xml"];mxStencilRegistry.libraries.aws4= +[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.veeam=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam.xml"];mxStencilRegistry.libraries.pid2inst=[SHAPES_PATH+"/pid2/mxPidInstruments.js"];mxStencilRegistry.libraries.pid2misc=[SHAPES_PATH+"/pid2/mxPidMisc.js",STENCIL_PATH+"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"]; +mxMarker.getPackageForType=function(a){var d=null;null!=a&&0<a.length&&("ER"==a.substring(0,2)?d="mxgraph.er":"sysML"==a.substring(0,5)&&(d="mxgraph.sysml"));return d};var x=mxMarker.createMarker;mxMarker.createMarker=function(a,d,b,c,f,e,g,l,n,p){if(null!=b&&null==mxMarker.markers[b]){var k=this.getPackageForType(b);null!=k&&mxStencilRegistry.getStencil(k)}return x.apply(this,arguments)};PrintDialog.prototype.create=function(a,d){function b(){B.value=Math.max(1,Math.min(l,Math.max(parseInt(B.value), +parseInt(u.value))));u.value=Math.max(1,Math.min(l,Math.min(parseInt(B.value),parseInt(u.value))))}function c(d){function b(d,b,f){var e=d.getGraphBounds(),g=0,l=0,n=ja.get(),p=1/d.pageScale,k=q.checked;if(k)var p=parseInt(Z.value),t=parseInt(G.value),p=Math.min(n.height*t/(e.height/d.view.scale),n.width*p/(e.width/d.view.scale));else p=parseInt(y.value)/(100*d.pageScale),isNaN(p)&&(c=1/d.pageScale,y.value="100 %");n=mxRectangle.fromRectangle(n);n.width=Math.ceil(n.width*c);n.height=Math.ceil(n.height* +c);p*=c;!k&&d.pageVisible?(e=d.getPageLayout(),g-=e.x*n.width,l-=e.y*n.height):k=!0;if(null==b){b=PrintDialog.createPrintPreview(d,p,n,0,g,l,k);b.pageSelector=!1;b.mathEnabled=!1;d=a.getCurrentFile();null!=d&&(b.title=d.getTitle());var u=b.writeHead;b.writeHead=function(d){u.apply(this,arguments);null!=a.editor.fontCss&&(d.writeln('<style type="text/css">'),d.writeln(a.editor.fontCss),d.writeln("</style>"))};if("undefined"!==typeof MathJax){var B=b.renderPage;b.renderPage=function(a,d,b,c,f,e){var g= +mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;var l=B.apply(this,arguments);mxClient.NO_FO=g;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:l.className="geDisableMathJax";return l}}b.open(null,null,f,!0)}else{n=d.background;if(null==n||""==n||n==mxConstants.NONE)n="#ffffff";b.backgroundColor=n;b.autoOrigin=k;b.appendGraph(d,p,g,l,f,!0)}return b}var c=parseInt(Q.value)/100;isNaN(c)&&(c=1,Q.value="100 %");var c=.75* +c,e=u.value,g=B.value,l=!k.checked,p=null;l&&(l=e==n&&g==n);if(!l&&null!=a.pages&&a.pages.length){var t=0,l=a.pages.length-1;k.checked||(t=parseInt(e)-1,l=parseInt(g)-1);for(var x=t;x<=l;x++){var m=a.pages[x],e=m==a.currentPage?f:null;if(null==e){var e=a.createTemporaryGraph(f.getStylesheet()),g=!0,t=!1,A=null,D=null;null==m.viewState&&null==m.root&&a.updatePageRoot(m);null!=m.viewState&&(g=m.viewState.pageVisible,t=m.viewState.mathEnabled,A=m.viewState.background,D=m.viewState.backgroundImage);e.background= +A;e.backgroundImage=null!=D?new mxImage(D.src,D.width,D.height):null;e.pageVisible=g;e.mathEnabled=t;var C=e.getGlobalVariable;e.getGlobalVariable=function(a){return"page"==a?m.getName():"pagenumber"==a?x+1:C.apply(this,arguments)};document.body.appendChild(e.container);a.updatePageRoot(m);e.model.setRoot(m.root)}p=b(e,p,x!=l);e!=f&&e.container.parentNode.removeChild(e.container)}}else p=b(f);null==p?a.handleError({message:mxResources.get("errorUpdatingPreview")}):(p.mathEnabled&&(l=p.wnd.document, +l.writeln('<script type="text/x-mathjax-config">'),l.writeln("MathJax.Hub.Config({"),l.writeln("showMathMenu: false,"),l.writeln('messageStyle: "none",'),l.writeln('jax: ["input/TeX", "input/MathML", "input/AsciiMath", "output/HTML-CSS"],'),l.writeln('extensions: ["tex2jax.js", "mml2jax.js", "asciimath2jax.js"],'),l.writeln('"HTML-CSS": {'),l.writeln("imageFont: null"),l.writeln("},"),l.writeln("TeX: {"),l.writeln('extensions: ["AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js"]'),l.writeln("},"), +l.writeln("tex2jax: {"),l.writeln('\tignoreClass: "geDisableMathJax"'),l.writeln("},"),l.writeln("asciimath2jax: {"),l.writeln('\tignoreClass: "geDisableMathJax"'),l.writeln("}"),l.writeln("});"),d&&(l.writeln("MathJax.Hub.Queue(function () {"),l.writeln("window.print();"),l.writeln("});")),l.writeln("\x3c/script>"),l.writeln('<script type="text/javascript" src="https://math.draw.io/current/MathJax.js">\x3c/script>')),p.closeDocument(),!p.mathEnabled&&d&&PrintDialog.printPreview(p))}var f=a.editor.graph, +e=document.createElement("div"),g=document.createElement("h3");g.style.width="100%";g.style.textAlign="center";g.style.marginTop="0px";mxUtils.write(g,d||mxResources.get("print"));e.appendChild(g);var l=1,n=1,p=document.createElement("div");p.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var k=document.createElement("input");k.style.cssText="margin-right:8px;margin-bottom:8px;";k.setAttribute("value","all");k.setAttribute("type","radio");k.setAttribute("name", +"pages-printdialog");p.appendChild(k);g=document.createElement("span");mxUtils.write(g,mxResources.get("printAllPages"));p.appendChild(g);mxUtils.br(p);var t=k.cloneNode(!0);k.setAttribute("checked","checked");t.setAttribute("value","range");p.appendChild(t);g=document.createElement("span");mxUtils.write(g,mxResources.get("pages")+":");p.appendChild(g);var u=document.createElement("input");u.style.cssText="margin:0 8px 0 8px;";u.setAttribute("value","1");u.setAttribute("type","number");u.setAttribute("min", +"1");u.style.width="50px";p.appendChild(u);g=document.createElement("span");mxUtils.write(g,mxResources.get("to"));p.appendChild(g);var B=u.cloneNode(!0);p.appendChild(B);mxEvent.addListener(u,"focus",function(){t.checked=!0});mxEvent.addListener(B,"focus",function(){t.checked=!0});mxEvent.addListener(u,"change",b);mxEvent.addListener(B,"change",b);if(null!=a.pages&&(l=a.pages.length,null!=a.currentPage))for(g=0;g<a.pages.length;g++)if(a.currentPage==a.pages[g]){n=g+1;u.value=n;B.value=n;break}u.setAttribute("max", +l);B.setAttribute("max",l);1<l&&e.appendChild(p);var x=document.createElement("div");x.style.marginBottom="10px";var m=document.createElement("input");m.style.marginRight="8px";m.setAttribute("value","adjust");m.setAttribute("type","radio");m.setAttribute("name","printZoom");x.appendChild(m);g=document.createElement("span");mxUtils.write(g,mxResources.get("adjustTo"));x.appendChild(g);var y=document.createElement("input");y.style.cssText="margin:0 8px 0 8px;";y.setAttribute("value","100 %");y.style.width= +"50px";x.appendChild(y);mxEvent.addListener(y,"focus",function(){m.checked=!0});e.appendChild(x);var p=p.cloneNode(!1),q=m.cloneNode(!0);q.setAttribute("value","fit");m.setAttribute("checked","checked");g=document.createElement("div");g.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";g.appendChild(q);p.appendChild(g);x=document.createElement("table");x.style.display="inline-block";var r=document.createElement("tbody"),v=document.createElement("tr"),z=v.cloneNode(!0), +H=document.createElement("td"),I=H.cloneNode(!0),aa=H.cloneNode(!0),L=H.cloneNode(!0),P=H.cloneNode(!0),da=H.cloneNode(!0);H.style.textAlign="right";L.style.textAlign="right";mxUtils.write(H,mxResources.get("fitTo"));var Z=document.createElement("input");Z.style.cssText="margin:0 8px 0 8px;";Z.setAttribute("value","1");Z.setAttribute("min","1");Z.setAttribute("type","number");Z.style.width="40px";I.appendChild(Z);g=document.createElement("span");mxUtils.write(g,mxResources.get("fitToSheetsAcross")); +aa.appendChild(g);mxUtils.write(L,mxResources.get("fitToBy"));var G=Z.cloneNode(!0);P.appendChild(G);mxEvent.addListener(Z,"focus",function(){q.checked=!0});mxEvent.addListener(G,"focus",function(){q.checked=!0});g=document.createElement("span");mxUtils.write(g,mxResources.get("fitToSheetsDown"));da.appendChild(g);v.appendChild(H);v.appendChild(I);v.appendChild(aa);z.appendChild(L);z.appendChild(P);z.appendChild(da);r.appendChild(v);r.appendChild(z);x.appendChild(r);p.appendChild(x);e.appendChild(p); +p=document.createElement("div");g=document.createElement("div");g.style.fontWeight="bold";g.style.marginBottom="12px";mxUtils.write(g,mxResources.get("paperSize"));p.appendChild(g);g=document.createElement("div");g.style.marginBottom="12px";var ja=PageSetupDialog.addPageFormatPanel(g,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);p.appendChild(g);g=document.createElement("span");mxUtils.write(g,mxResources.get("pageScale"));p.appendChild(g);var Q=document.createElement("input"); +Q.style.cssText="margin:0 8px 0 8px;";Q.setAttribute("value","100 %");Q.style.width="60px";p.appendChild(Q);e.appendChild(p);g=document.createElement("div");g.style.cssText="text-align:right;margin:48px 0 0 0;";p=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});p.className="geBtn";a.editor.cancelFirst&&g.appendChild(p);a.isOffline()||(x=mxUtils.button(mxResources.get("help"),function(){f.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),x.className="geBtn", +g.appendChild(x));PrintDialog.previewEnabled&&(x=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();c(!1)}),x.className="geBtn",g.appendChild(x));x=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();c(!0)});x.className="geBtn gePrimaryBtn";g.appendChild(x);a.editor.cancelFirst||g.appendChild(p);e.appendChild(g);this.container=e};var t=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page= +this.ui.currentPage);this.page!=this.ui.currentPage?null!=this.page.viewState&&(this.ignoreColor||(this.page.viewState.background=this.color),this.ignoreImage||(this.page.viewState.backgroundImage=this.image),null!=this.format&&(this.page.viewState.pageFormat=this.format),null!=this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled),null!=this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)):(t.apply(this,arguments),null!=this.mathEnabled&&this.mathEnabled!=this.ui.isMathEnabled()&& +(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled),null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=!this.shadowVisible))}})(); +var ErrorDialog=function(a,b,e,c,k,m,q,r,v,z,d){v=null!=v?v:!0;var f=document.createElement("div");f.style.textAlign="center";if(null!=b){var l=document.createElement("div");l.style.padding="0px";l.style.margin="0px";l.style.fontSize="18px";l.style.paddingBottom="16px";l.style.marginBottom="16px";l.style.borderBottom="1px solid #c0c0c0";l.style.color="gray";l.style.whiteSpace="nowrap";l.style.textOverflow="ellipsis";l.style.overflow="hidden";mxUtils.write(l,b);l.setAttribute("title",b);f.appendChild(l)}b= +document.createElement("div");b.style.padding="6px";b.innerHTML=e;f.appendChild(b);e=document.createElement("div");e.style.marginTop="16px";e.style.textAlign="center";null!=m&&(b=mxUtils.button(mxResources.get("tryAgain"),function(){a.hideDialog();m()}),b.className="geBtn",e.appendChild(b),e.style.textAlign="center");null!=z&&(z=mxUtils.button(z,function(){null!=d&&d()}),z.className="geBtn",e.appendChild(z));var n=mxUtils.button(c,function(){v&&a.hideDialog();null!=k&&k()});n.className="geBtn";e.appendChild(n); +null!=q&&(c=mxUtils.button(q,function(){v&&a.hideDialog();null!=r&&r()}),c.className="geBtn gePrimaryBtn",e.appendChild(c));this.init=function(){n.focus()};f.appendChild(e);this.container=f}; +(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,e,c){c.ui=a.ui;return e};a.afterDecode=function(a,e,c){c.previousColor=c.color;c.previousImage=c.image;c.previousFormat=c.format;null!=c.foldingEnabled&&(c.foldingEnabled=!c.foldingEnabled);null!=c.mathEnabled&&(c.mathEnabled=!c.mathEnabled);null!=c.shadowVisible&&(c.shadowVisible=!c.shadowVisible);return c};mxCodecRegistry.register(a)})();(function(){EditorUi.VERSION="@DRAWIO-VERSION@";EditorUi.compactUi="atlas"!=uiTheme;EditorUi.enableLogging="1"!=urlParams.stealth&&/.*\.draw\.io$/.test(window.location.hostname)&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost="https://www.draw.io";EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.logError=function(a,b,c,e,g){if("1"==urlParams.dev)EditorUi.debug("logError",a,b,c,e,g);else if(EditorUi.enableLogging)try{if(a!= +EditorUi.lastErrorMessage&&(null==a||null==b||-1==a.indexOf("Script error")&&-1==a.indexOf("extension"))&&null!=a&&0>a.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=a;var d=0<=a.indexOf("NetworkError")||0<=a.indexOf("SecurityError")||0<=a.indexOf("NS_ERROR_FAILURE")||0<=a.indexOf("out of memory")?"CONFIG":"SEVERE",f=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=f+"/log?severity="+d+"&v="+encodeURIComponent(EditorUi.VERSION)+"&msg=clientError:"+encodeURIComponent(a)+ +":url:"+encodeURIComponent(window.location.href)+":lnum:"+encodeURIComponent(c)+(null!=e?":colno:"+encodeURIComponent(e):"")+(null!=g&&null!=g.stack?"&stack="+encodeURIComponent(g.stack):"")}}catch(x){}};EditorUi.logEvent=function(a){if("1"==urlParams.dev)EditorUi.debug("logEvent",a);else if(EditorUi.enableLogging)try{var d=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=d+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=a?"&data="+encodeURIComponent(JSON.stringify(a)): +"")}catch(l){}};EditorUi.sendReport=function(a,b){if("1"==urlParams.dev)EditorUi.debug("sendReport",a);else if(EditorUi.enableLogging)try{b=null!=b?b:5E4,a.length>b&&(a=a.substring(0,b)+"\n...[SHORTENED]"),mxUtils.post("/email","version="+encodeURIComponent(EditorUi.VERSION)+"&url="+encodeURIComponent(window.location.href)+"&data="+encodeURIComponent(a))}catch(l){}};EditorUi.debug=function(){if(null!=window.console&&"1"==urlParams.test){for(var a=[(new Date).toISOString()],b=0;b<arguments.length;b++)a.push(arguments[b]); +console.log.apply(console,a)}};EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl="1"==urlParams.dev?"/cache":"https://rt.draw.io/cache";EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.scratchpadHelpLink="https://desk.draw.io/support/solutions/articles/16000042367";EditorUi.prototype.emptyDiagramXml='<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/></root></mxGraphModel>'; +EditorUi.prototype.emptyLibraryXml="<mxlibrary>[]</mxlibrary>";EditorUi.prototype.mode=null;EditorUi.prototype.sidebarFooterHeight=36;EditorUi.prototype.defaultCustomShapeStyle="shape=stencil(tZRtTsQgEEBPw1+DJR7AoN6DbWftpAgE0Ortd/jYRGq72R+YNE2YgTePloEJGWblgA18ZuKFDcMj5/Sm8boZq+BgjCX4pTyqk6ZlKROitwusOMXKQDODx5iy4pXxZ5qTHiFHawxB0JrQZH7lCabQ0Fr+XWC1/E8zcsT/gAi+Subo2/3Mh6d/oJb5nU1b5tW7r2knautaa3T+U32o7f7vZwpJkaNDLORJjcu7t59m2jXxqX9un+tt022acsfmoKaQZ+vhhswZtS6Ne/ThQGt0IV0N3Yyv6P3CeT9/tHO0XFI5cAE=);whiteSpace=wrap;html=1;"; +EditorUi.prototype.svgBrokenImage=Graph.createSvgImage(10,10,'<rect x="0" y="0" width="10" height="10" stroke="#000" fill="transparent"/><path d="m 0 0 L 10 10 L 0 10 L 10 0" stroke="#000" fill="transparent"/>');EditorUi.prototype.crossOriginImages=!mxClient.IS_IE;EditorUi.prototype.maxBackgroundSize=1600;EditorUi.prototype.maxImageSize=520;EditorUi.prototype.resampleThreshold=1E5;EditorUi.prototype.maxImageBytes=1E6;EditorUi.prototype.maxBackgroundBytes=25E5;EditorUi.prototype.currentFile=null;EditorUi.prototype.printPdfExport= +!1;EditorUi.prototype.pdfPageExport=!0;EditorUi.prototype.formatEnabled="0"!=urlParams.format;EditorUi.prototype.insertTemplateEnabled=!0;EditorUi.prototype.closableScratchpad=!0;(function(){EditorUi.prototype.useCanvasForExport=!1;EditorUi.prototype.jpgSupported=!1;try{var a=document.createElement("canvas");EditorUi.prototype.canvasSupported=!(!a.getContext||!a.getContext("2d"))}catch(g){}try{var b=document.createElement("canvas"),c=new Image;c.onload=function(){try{b.getContext("2d").drawImage(c, +0,0);var a=b.toDataURL("image/png");EditorUi.prototype.useCanvasForExport=null!=a&&6<a.length}catch(p){}};c.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(g){}try{b=document.createElement("canvas");b.width=b.height=1;var e= +b.toDataURL("image/jpeg");EditorUi.prototype.jpgSupported=null!==e.match("image/jpeg")}catch(g){}})();EditorUi.prototype.openLink=function(a,b,c){return this.editor.graph.openLink(a,b,c)};EditorUi.prototype.showSplash=function(a){};EditorUi.prototype.getLocalData=function(a,b){b(localStorage.getItem(a))};EditorUi.prototype.setLocalData=function(a,b,c){localStorage.setItem(a,b);null!=c&&c()};EditorUi.prototype.removeLocalData=function(a,b){localStorage.removeItem(a);b()};EditorUi.prototype.setMathEnabled= +function(a){this.editor.graph.mathEnabled=a;this.editor.updateGraphComponents();this.editor.graph.refresh();this.fireEvent(new mxEventObject("mathEnabledChanged"))};EditorUi.prototype.isMathEnabled=function(a){return this.editor.graph.mathEnabled};EditorUi.prototype.isAppCache=function(){return"1"==urlParams.appcache||this.isOfflineApp()};EditorUi.prototype.isOfflineApp=function(){return"1"==urlParams.offline};EditorUi.prototype.isOffline=function(){return this.isOfflineApp()||!navigator.onLine|| +"1"==urlParams.stealth};EditorUi.prototype.createSpinner=function(a,b,c){c=null!=c?c:24;var d=new Spinner({lines:12,length:c,width:Math.round(c/3),radius:Math.round(c/2),rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),f=d.spin;d.spin=function(c,e){var g=!1;this.active||(f.call(this,c),this.active=!0,null!=e&&(g=document.createElement("div"),g.style.position="absolute",g.style.whiteSpace="nowrap",g.style.background="#4B4243",g.style.color="white", +g.style.fontFamily="Helvetica, Arial",g.style.fontSize="9pt",g.style.padding="6px",g.style.paddingLeft="10px",g.style.paddingRight="10px",g.style.zIndex=2E9,g.style.left=Math.max(0,a)+"px",g.style.top=Math.max(0,b+70)+"px",mxUtils.setPrefixedStyle(g.style,"borderRadius","6px"),mxUtils.setPrefixedStyle(g.style,"transform","translate(-50%,-50%)"),"dark"!=uiTheme&&mxUtils.setPrefixedStyle(g.style,"boxShadow","2px 2px 3px 0px #ddd"),"..."!=e.substring(e.length-3,e.length)&&(e+="..."),g.innerHTML=e,c.appendChild(g), +d.status=g,mxClient.IS_VML&&(null==document.documentMode||8>=document.documentMode)&&(g.style.left=Math.round(Math.max(0,a-g.offsetWidth/2))+"px",g.style.top=Math.round(Math.max(0,b+70-g.offsetHeight/2))+"px")),this.pause=mxUtils.bind(this,function(){var a=function(){};this.active&&(a=mxUtils.bind(this,function(){this.spin(c,e)}));this.stop();return a}),g=!0);return g};var e=d.stop;d.stop=function(){e.call(this);this.active=!1;null!=d.status&&(d.status.parentNode.removeChild(d.status),d.status=null)}; +d.pause=function(){return function(){}};return d};EditorUi.parsePng=function(a,b,c){function d(a,d){var b=e;e+=d;return a.substring(b,e)}function f(a){a=d(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}var e=0;if(d(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=c&&c();else if(d(a,4),"IHDR"!=d(a,4))null!=c&&c();else{d(a,17);do{c=f(a);var l=d(a,4);if(null!=b&&b(e-8,l,c))break;value=d(a,c);d(a,4);if("IEND"==l)break}while(c)}}; +EditorUi.prototype.isCompatibleString=function(a){try{var d=mxUtils.parseXml(a),b=this.editor.extractGraphModel(d.documentElement,!0);return null!=b&&0==b.getElementsByTagName("parsererror").length}catch(n){}return!1};var a=EditorUi.prototype.extractGraphModelFromHtml;EditorUi.prototype.extractGraphModelFromHtml=function(d){var b=a.apply(this,arguments);if(null==b)try{var c=d.indexOf("<mxfile ");if(0<=c){var e=d.lastIndexOf("</mxfile>");e>c&&(b=d.substring(c,e+15).replace(/>/g,">").replace(/</g, +"<").replace(/\\"/g,'"').replace(/\n/g,""))}else var g=mxUtils.parseXml(d),p=this.editor.extractGraphModel(g.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility),b=null!=p?mxUtils.getXml(p):""}catch(B){}return b};EditorUi.prototype.validateFileData=function(a){if(null!=a&&0<a.length){var d=a.indexOf('<meta charset="utf-8">');0<=d&&(a=a.slice(0,d)+'<meta charset="utf-8"/>'+a.slice(d+23-1,a.length));a=this.editor.graph.zapGremlins(a)}return a};EditorUi.prototype.replaceFileData= +function(a){a=this.validateFileData(a);a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement:null;var d=null!=a?this.editor.extractGraphModel(a,!0):null;null!=d&&(a=d);if(null!=a){d=this.editor.graph;d.model.beginUpdate();try{var b=null!=this.pages?this.pages.slice():null,c=a.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<c.length||1==c.length&&c[0].hasAttribute("name")){this.fileNode=a;this.pages=null!=this.pages?this.pages:[];for(var e=c.length-1;0<=e;e--){var p=this.updatePageRoot(new DiagramPage(c[e])); +null==p.getName()&&p.setName(mxResources.get("pageWithNumber",[e+1]));d.model.execute(new ChangePage(this,p,0==e?p:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),d.model.execute(new ChangePage(this,this.currentPage,this.currentPage,0))),this.editor.setGraphXml(a),null!=this.currentPage&&(this.currentPage.root= +this.editor.graph.model.root);if(null!=b)for(e=0;e<b.length;e++)d.model.execute(new ChangePage(this,b[e],null))}finally{d.model.endUpdate()}}};EditorUi.prototype.createFileData=function(a,b,c,e,g,p,k,x,t,m){b=null!=b?b:this.editor.graph;g=null!=g?g:!1;t=null!=t?t:!0;var d,f=null;null==c||c.getMode()==App.MODE_DEVICE||c.getMode()==App.MODE_BROWSER?d="_blank":f=d=e;if(null==a)return"";var l=a;if("mxfile"!=l.nodeName.toLowerCase()){var n=b.zapGremlins(mxUtils.getXml(a)),l=b.compress(n);if(b.decompress(l)!= +n)return n;n=a.ownerDocument.createElement("diagram");n.setAttribute("id",Editor.guid());mxUtils.setTextContent(n,l);l=a.ownerDocument.createElement("mxfile");l.appendChild(n)}m?(l=l.cloneNode(!0),l.removeAttribute("userAgent"),l.removeAttribute("version"),l.removeAttribute("editor"),l.removeAttribute("type")):(l.removeAttribute("userAgent"),l.removeAttribute("version"),l.removeAttribute("editor"),l.removeAttribute("type"),l.setAttribute("modified",(new Date).toISOString()),l.setAttribute("host", +window.location.hostname),l.setAttribute("agent",navigator.userAgent),l.setAttribute("version",EditorUi.VERSION),l.setAttribute("etag",Editor.guid()),a=null!=c?c.getMode():this.mode,null!=a&&l.setAttribute("type",a));a=mxUtils.getXml(l);if(!p&&!g&&(k||null!=c&&/(\.html)$/i.test(c.getTitle())))a=this.getHtml2(mxUtils.getXml(l),b,null!=c?c.getTitle():null,d,f);else if(p||!g&&null!=c&&/(\.svg)$/i.test(c.getTitle()))null==c||c.getMode()!=App.MODE_DEVICE&&c.getMode()!=App.MODE_BROWSER||(e=null),a=this.getEmbeddedSvg(a, +b,e,null,x,t,f);return a};EditorUi.prototype.getXmlFileData=function(a,b){a=null!=a?a:!0;b=null!=b?b:!1;var d=this.editor.getGraphXml(a);if(a&&null!=this.fileNode&&null!=this.currentPage)if(d=this.editor.graph.compress(this.editor.graph.zapGremlins(mxUtils.getXml(d))),mxUtils.setTextContent(this.currentPage.node,d),d=this.fileNode.cloneNode(!1),b)d.appendChild(this.currentPage.node);else for(var c=0;c<this.pages.length;c++){if(this.currentPage!=this.pages[c]&&this.pages[c].needsUpdate){var f=(new mxCodec(mxUtils.createXmlDocument())).encode(new mxGraphModel(this.pages[c].root)); +this.editor.graph.saveViewState(this.pages[c].viewState,f);mxUtils.setTextContent(this.pages[c].node,this.editor.graph.compressNode(f));delete this.pages[c].needsUpdate}d.appendChild(this.pages[c].node)}return d};EditorUi.prototype.anonymizeString=function(a,b){for(var d=[],c=0;c<a.length;c++){var f=a.charAt(c);0<=EditorUi.ignoredAnonymizedChars.indexOf(f)?d.push(f):isNaN(parseInt(f))?f.toLowerCase()!=f?d.push(String.fromCharCode(65+Math.round(25*Math.random()))):f.toUpperCase()!=f?d.push(String.fromCharCode(97+ +Math.round(25*Math.random()))):/\s/.test(f)?d.push(" "):d.push("?"):d.push(b?"0":Math.round(9*Math.random()))}return d.join("")};EditorUi.prototype.anonymizePatch=function(a){if(null!=a[EditorUi.DIFF_INSERT])for(var d=0;d<a[EditorUi.DIFF_INSERT].length;d++)try{var b=mxUtils.parseXml(a[EditorUi.DIFF_INSERT][d].data).documentElement.cloneNode(!1);null!=b.getAttribute("name")&&b.setAttribute("name",this.anonymizeString(b.getAttribute("name")));a[EditorUi.DIFF_INSERT][d].data=mxUtils.getXml(b)}catch(p){a[EditorUi.DIFF_INSERT][d].data= +p.message}if(null!=a[EditorUi.DIFF_UPDATE]){for(var c in a[EditorUi.DIFF_UPDATE]){var e=a[EditorUi.DIFF_UPDATE][c];null!=e.name&&(e.name=this.anonymizeString(e.name));null!=e.cells&&(d=mxUtils.bind(this,function(a){var d=e.cells[a];if(null!=d){for(var b in d)null!=d[b].value&&(d[b].value="["+d[b].value.length+"]"),null!=d[b].xmlValue&&(d[b].xmlValue="["+d[b].xmlValue.length+"]"),null!=d[b].style&&(d[b].style="["+d[b].style.length+"]"),0==Object.keys(d[b]).length&&delete d[b];0==Object.keys(d).length&& +delete e.cells[a]}}),d(EditorUi.DIFF_INSERT),d(EditorUi.DIFF_UPDATE),0==Object.keys(e.cells).length&&delete e.cells);0==Object.keys(e).length&&delete a[EditorUi.DIFF_UPDATE][c]}0==Object.keys(a[EditorUi.DIFF_UPDATE]).length&&delete a[EditorUi.DIFF_UPDATE]}return a};EditorUi.prototype.anonymizeAttributes=function(a,b){if(null!=a.attributes)for(var d=0;d<a.attributes.length;d++)"as"!=a.attributes[d].name&&a.setAttribute(a.attributes[d].name,this.anonymizeString(a.attributes[d].value,b));if(null!=a.childNodes)for(d= +0;d<a.childNodes.length;d++)this.anonymizeAttributes(a.childNodes[d],b)};EditorUi.prototype.anonymizeNode=function(a,b){for(var d=a.getElementsByTagName("mxCell"),c=0;c<d.length;c++)null!=d[c].getAttribute("value")&&d[c].setAttribute("value","["+d[c].getAttribute("value").length+"]"),null!=d[c].getAttribute("xmlValue")&&d[c].setAttribute("xmlValue","["+d[c].getAttribute("xmlValue").length+"]"),null!=d[c].getAttribute("style")&&d[c].setAttribute("style","["+d[c].getAttribute("style").length+"]"),null!= +d[c].parentNode&&"root"!=d[c].parentNode.nodeName&&null!=d[c].parentNode.parentNode&&(d[c].setAttribute("id",d[c].parentNode.getAttribute("id")),d[c].parentNode.parentNode.replaceChild(d[c],d[c].parentNode));return a};EditorUi.prototype.synchronizeCurrentFile=function(a){var d=this.getCurrentFile();null!=d&&(d.savingFile?this.handleError({message:mxResources.get("busy")}):!a&&d.invalidChecksum?d.handleFileError(null,!0):this.spinner.spin(document.body,mxResources.get("updatingDocument"))&&(d.clearAutosave(), +this.editor.setStatus(""),a?d.reloadFile(mxUtils.bind(this,function(){d.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){d.handleFileError(a,!0)})):d.synchronizeFile(mxUtils.bind(this,function(){d.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){d.handleFileError(a,!0)}))))};EditorUi.prototype.getFileData=function(a,b,c,e,g,p,k,x,t){g=null!=g?g:!0;k=null!=k?k:this.getXmlFileData(g,null!=p?p:!1);t=null!=t?t:this.getCurrentFile();p=this.editor.graph; +if(null!=this.pages&&this.currentPage!=this.pages[0]&&(b||!a&&null!=t&&/(\.svg)$/i.test(t.getTitle()))){p=this.createTemporaryGraph(p.getStylesheet());var d=p.getGlobalVariable,f=this.pages[0];p.getGlobalVariable=function(a){return"page"==a?f.getName():"pagenumber"==a?1:d.apply(this,arguments)};document.body.appendChild(p.container);p.model.setRoot(f.root)}a=this.createFileData(k,p,t,window.location.href,a,b,c,e,g,x);p!=this.editor.graph&&p.container.parentNode.removeChild(p.container);return a}; +EditorUi.prototype.getHtml=function(a,b,c,e,g,p){p=null!=p?p:!0;var d=null,f=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=b){var d=p?b.getGraphBounds():b.getBoundingBox(b.getSelectionCells()),l=b.view.scale;p=Math.floor(d.x/l-b.view.translate.x);l=Math.floor(d.y/l-b.view.translate.y);d=b.background;null==g&&(b=this.getBasenames().join(";"),0<b.length&&(f=EditorUi.drawHost+"/embed.js?s="+b));a.setAttribute("x0",p);a.setAttribute("y0",l)}null!=a&&(a.setAttribute("pan","1"),a.setAttribute("zoom", +"1"),a.setAttribute("resize","0"),a.setAttribute("fit","0"),a.setAttribute("border","20"),a.setAttribute("links","1"),null!=e&&a.setAttribute("edit",e));null!=g&&(g=g.replace(/&/g,"&"));a=null!=a?this.editor.graph.zapGremlins(mxUtils.getXml(a)):"";e=this.editor.graph.compress(a);this.editor.graph.decompress(e)!=a&&(e=encodeURIComponent(a));return(null==g?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=g?' xmlns="http://www.w3.org/1999/xhtml">': +">")+"\n<head>\n"+(null==g?null!=c?"<title>"+mxUtils.htmlEntities(c)+"</title>\n":"":"<title>Draw.io Diagram</title>\n")+(null!=g?'<meta http-equiv="refresh" content="0;URL=\''+g+"'\"/>\n":"")+"</head>\n<body"+(null==g&&null!=d&&d!=mxConstants.NONE?' style="background-color:'+d+';">':">")+'\n<div class="mxgraph" style="position:relative;overflow:auto;width:100%;">\n<div style="width:1px;height:1px;overflow:hidden;">'+e+"</div>\n</div>\n"+(null==g?'<script type="text/javascript" src="'+f+'">\x3c/script>': +'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+g+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(a,b,c,e,g){b=EditorUi.drawHost+"/js/viewer.min.js";null!=g&&(g=g.replace(/&/g,"&"));a={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,resize:!0,xml:this.editor.graph.zapGremlins(a),toolbar:"pages zoom layers lightbox"};null!=this.pages&&null!= +this.currentPage&&(a.page=mxUtils.indexOf(this.pages,this.currentPage));return(null==g?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=g?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==g?null!=c?"<title>"+mxUtils.htmlEntities(c)+"</title>\n":"":"<title>Draw.io Diagram</title>\n")+(null!=g?'<meta http-equiv="refresh" content="0;URL=\''+g+"'\"/>\n":"")+'<meta charset="utf-8"/>\n</head>\n<body>\n<div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="'+ +mxUtils.htmlEntities(JSON.stringify(a))+'"></div>\n'+(null==g?'<script type="text/javascript" src="'+b+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+g+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.setFileData=function(a){a=this.validateFileData(a);this.pages=this.fileNode=this.currentPage=null;a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement: +null;var d=null!=a?a.getElementsByTagName("parsererror"):null;if(null!=d&&0<d.length)throw a=mxResources.get("invalidOrMissingFile"),d=d[0].getElementsByTagName("div"),0<d.length&&(a=mxUtils.getTextContent(d[0])),Error(a);d=null!=a?this.editor.extractGraphModel(a,!0):null;null!=d&&(a=d);if(null!=a&&"mxfile"==a.nodeName&&(d=a.getElementsByTagName("diagram"),"0"!=urlParams.pages||1<d.length||1==d.length&&d[0].hasAttribute("name"))){this.fileNode=a;this.pages=[];for(a=0;a<d.length;a++){null==d[a].getAttribute("id")&& +d[a].setAttribute("id",a);var b=new DiagramPage(d[a]);null==b.getName()&&b.setName(mxResources.get("pageWithNumber",[a+1]));this.pages.push(b)}this.currentPage=this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];a=this.currentPage.node}"0"!=urlParams.pages&&null==this.fileNode&&null!=a&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])), +this.pages=[this.currentPage]);this.editor.setGraphXml(a);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root)};EditorUi.prototype.getBaseFilename=function(a){var d=this.getCurrentFile(),d=null!=d&&null!=d.getTitle()?d.getTitle():this.defaultFilename;if(/(\.xml)$/i.test(d)||/(\.html)$/i.test(d)||/(\.svg)$/i.test(d)||/(\.png)$/i.test(d)||/(\.drawio)$/i.test(d))d=d.substring(0,d.lastIndexOf("."));!a&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&& +0<this.currentPage.getName().length&&(d=d+"-"+this.currentPage.getName());return d};EditorUi.prototype.downloadFile=function(a,b,c,e,g,p,k){try{e=null!=e?e:this.editor.graph.isSelectionEmpty();var d=this.getBaseFilename(!g),f=d+"."+a;if("xml"==a){var l='<?xml version="1.0" encoding="UTF-8"?>\n'+(b?mxUtils.getXml(this.editor.getGraphXml(e)):this.getFileData(!0,null,null,null,e,g));this.saveData(f,a,l,"text/xml")}else if("html"==a)l=this.getHtml2(this.getFileData(!0),this.editor.graph,d),this.saveData(f, +a,l,"text/html");else if("svg"!=a&&"xmlsvg"!=a||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==a?f=d+".png":"jpeg"==a&&(f=d+".jpg"),this.saveRequest(f,a,mxUtils.bind(this,function(d,b){try{var c=this.editor.graph.pageVisible;null!=p&&(this.editor.graph.pageVisible=p);var f=this.createDownloadRequest(d,a,e,b,k,g);this.editor.graph.pageVisible=c;return f}catch(C){this.handleError(C)}}));else{var n=null,B=mxUtils.bind(this,function(a){a.length<=MAX_REQUEST_SIZE?this.saveData(f, +"svg",a,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(n)}))});if("svg"==a){var m=this.editor.graph.background;if(k||m==mxConstants.NONE)m=null;var q=this.editor.graph.getSvg(m,null,null,null,null,e);c&&this.editor.graph.addSvgShadow(q);this.convertImages(q,mxUtils.bind(this,mxUtils.bind(this,function(a){this.spinner.stop();B('<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+ +mxUtils.getXml(a))})))}else f=d+".svg",n=this.getFileData(!1,!0,null,mxUtils.bind(this,function(a){this.spinner.stop();B(a)}),e)}}catch(S){this.handleError(S)}};EditorUi.prototype.createDownloadRequest=function(a,b,c,e,g,p){var d=this.editor.graph.getGraphBounds();c=this.getFileData(!0,null,null,null,c,0==p?!1:"xmlpng"!=b);var f="",l="";if(d.width*d.height>MAX_AREA||c.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};d="0";"pdf"==b&&0==p&&(l="&allPages=1");if("xmlpng"==b&& +(d="1",b="png",null!=this.pages&&null!=this.currentPage))for(p=0;p<this.pages.length;p++)if(this.pages[p]==this.currentPage){f="&from="+p;break}p=this.editor.graph.background;"png"==b&&g&&(p=mxConstants.NONE);return new mxXmlRequest(EXPORT_URL,"format="+b+f+l+"&bg="+(null!=p?p:mxConstants.NONE)+"&base64="+e+"&embedXml="+d+"&xml="+encodeURIComponent(c)+(null!=a?"&filename="+encodeURIComponent(a):""))};EditorUi.prototype.setMode=function(a,b){this.mode=a};EditorUi.prototype.loadDescriptor=function(a, +b,c){var d=window.location.hash,f=mxUtils.bind(this,function(c){var f=null!=a.data?a.data:"";null!=c&&0<c.length&&(0<f.length&&(f+="\n"),f+=c);c=new LocalFile(this,"csv"!=a.format&&0<f.length?f:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);c.getHash=function(){return d};this.fileLoaded(c);"csv"==a.format&&this.importCsv(f,mxUtils.bind(this,function(a){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")})); +if(null!=a.update){var e=null!=a.interval?parseInt(a.interval):6E4,g=null,l=mxUtils.bind(this,function(){var d=this.currentPage;mxUtils.post(a.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(a){d===this.currentPage&&(200<=a.getStatus()&&300>=a.getStatus()?(this.updateDiagram(a.getText()),p()):this.handleError({message:mxResources.get("error")+" "+a.getStatus()}))}),mxUtils.bind(this,function(a){this.handleError(a)}))}),p=mxUtils.bind(this,function(){window.clearTimeout(g); +g=window.setTimeout(l,e)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){p();l()}));p();l()}null!=b&&b()});if(null!=a.url&&0<a.url.length){var e=a.url;/^https?:\/\//.test(e)&&!this.isCorsEnabledForUrl(e)&&(e=PROXY_URL+"?url="+encodeURIComponent(e));this.loadUrl(e,mxUtils.bind(this,function(a){f(a)}),mxUtils.bind(this,function(a){null!=c&&c(a)}))}else f("")};EditorUi.prototype.updateDiagram=function(a){function d(a){var d=new mxCellOverlay(a.image||e.warningImage,a.tooltip,a.align, +a.valign,a.offset);d.addListener(mxEvent.CLICK,function(d,b){c.alert(a.tooltip)});return d}var b=null,c=this;if(null!=a&&0<a.length&&(b=mxUtils.parseXml(a),a=null!=b?b.documentElement:null,null!=a&&"updates"==a.nodeName)){var e=this.editor.graph,p=e.getModel();p.beginUpdate();var k=null;try{for(a=a.firstChild;null!=a;){if("update"==a.nodeName){var x=p.getCell(a.getAttribute("id"));if(null!=x){try{var t=a.getAttribute("value");if(null!=t){var m=mxUtils.parseXml(t).documentElement;if(null!=m)if("1"== +m.getAttribute("replace-value"))p.setValue(x,m);else for(var u=m.attributes,A=0;A<u.length;A++)e.setAttributeForCell(x,u[A].nodeName,0<u[A].nodeValue.length?u[A].nodeValue:null)}}catch(M){null!=window.console&&console.log("Error in value for "+x.id+": "+M)}try{var q=a.getAttribute("style");null!=q&&e.model.setStyle(x,q)}catch(M){null!=window.console&&console.log("Error in style for "+x.id+": "+M)}try{var r=a.getAttribute("icon");if(null!=r){var v=0<r.length?JSON.parse(r):null;null!=v&&v.append||e.removeCellOverlays(x); +null!=v&&e.addCellOverlay(x,d(v))}}catch(M){null!=window.console&&console.log("Error in icon for "+x.id+": "+M)}try{var z=a.getAttribute("geometry");if(null!=z){var z=JSON.parse(z),K=e.getCellGeometry(x);if(null!=K){K=K.clone();for(key in z){var E=parseFloat(z[key]);"dx"==key?K.x+=E:"dy"==key?K.y+=E:"dw"==key?K.width+=E:"dh"==key?K.height+=E:K[key]=parseFloat(z[key])}e.model.setGeometry(x,K)}}}catch(M){null!=window.console&&console.log("Error in icon for "+x.id+": "+M)}}}else if("model"==a.nodeName){for(var C= +a.firstChild;null!=C&&C.nodeType!=mxConstants.NODETYPE_ELEMENT;)C=C.nextSibling;null!=C&&(new mxCodec(a.firstChild)).decode(C,p)}else if("view"==a.nodeName){if(a.hasAttribute("scale")&&(e.view.scale=parseFloat(a.getAttribute("scale"))),a.hasAttribute("dx")||a.hasAttribute("dy"))e.view.translate=new mxPoint(parseFloat(a.getAttribute("dx")||0),parseFloat(a.getAttribute("dy")||0))}else"fit"==a.nodeName&&(k=a.hasAttribute("max-scale")?parseFloat(a.getAttribute("max-scale")):1);a=a.nextSibling}}finally{p.endUpdate()}null!= +k&&this.chromelessResize&&this.chromelessResize(!0,k)}return b};EditorUi.prototype.getCopyFilename=function(a,b){var d=null!=a&&null!=a.getTitle()?a.getTitle():this.defaultFilename,c="",f=d.lastIndexOf(".");0<=f&&(c=d.substring(f),d=d.substring(0,f));if(b)var e=new Date,f=e.getFullYear(),k=e.getMonth()+1,x=e.getDate(),t=e.getHours(),m=e.getMinutes(),e=e.getSeconds(),d=d+(" "+(f+"-"+k+"-"+x+"-"+t+"-"+m+"-"+e));return d=mxResources.get("copyOf",[d])+c};EditorUi.prototype.fileLoaded=function(a){var d= +this.getCurrentFile();this.fileLoadedError=null;this.setCurrentFile(null);var b=!1;this.hideDialog();null!=d&&(d.removeListener(this.descriptorChangedListener),d.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var c=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=d&&this.updateDocumentTitle();this.editor.graph.model.clear();this.editor.undoManager.clear();this.setBackgroundImage(null);null!=window.location.hash&&0<window.location.hash.length&& +(window.location.hash="");null!=this.fname&&(this.fnameWrapper.style.display="none",this.fname.innerHTML="",this.fname.setAttribute("title",mxResources.get("rename")));this.editor.setStatus("");this.updateUi();this.showSplash()});if(null!=a)try{mxClient.IS_SF&&"min"==uiTheme&&(this.diagramContainer.style.visibility="");this.openingFile=!0;this.setCurrentFile(a);a.addListener("descriptorChanged",this.descriptorChangedListener);a.addListener("contentChanged",this.descriptorChangedListener);a.open(); +delete this.openingFile;this.setGraphEnabled(!0);this.setMode(a.getMode());this.editor.graph.model.prefix=Editor.guid()+"-";this.editor.undoManager.clear();this.descriptorChanged();this.updateUi();a.isEditable()?a.isModified()?(a.addUnsavedStatus(),null!=a.backupPatch&&a.patch([a.backupPatch])):this.editor.setStatus(""):this.editor.setStatus('<span class="geStatusAlert" style="margin-left:8px;">'+mxUtils.htmlEntities(mxResources.get("readOnly"))+"</span>");!this.editor.isChromelessView()||this.editor.editable? +(this.editor.graph.selectUnlockedLayer(),this.showLayersDialog(),this.restoreLibraries(),window.self!==window.top&&window.focus()):this.editor.graph.isLightboxView()&&this.lightboxFit();this.chromelessResize&&this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));b=!0;this.isOffline()||null==a.getMode()||EditorUi.logEvent({category:"File",action:"open",label:a.getMode()+"."+a.getSize()});if(this.editor.editable&&this.mode==a.getMode()&&a.getMode()!=App.MODE_DEVICE&&null!=a.getMode())try{this.addRecent({id:a.getHash(), +title:a.getTitle(),mode:a.getMode()})}catch(g){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+1),mxSettings.save()}catch(g){}}catch(g){this.fileLoadedError=g;null!=window.console&&console.log("error in fileLoaded:",a,g);if(EditorUi.enableLogging&&!this.isOffline())try{(new Image).src=(null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"")+"/log?v="+encodeURIComponent(EditorUi.VERSION)+"&msg=errorInFileLoaded:url:"+encodeURIComponent(window.location.href)+(null!=g&&null!=g.message?":err:"+ +encodeURIComponent(g.message):"")+(null!=g&&null!=g.stack?"&stack="+encodeURIComponent(g.stack):"")}catch(p){}this.handleError(g,mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=d?this.fileLoaded(d):c()}),!0)}else c();return b};EditorUi.prototype.getHashValueForPages=function(a,b){var d=0,c=new mxGraphModel,f=new mxCodec;null!=b&&(b.byteCount=0, +b.attrCount=0,b.eltCount=0,b.nodeCount=0);for(var e=0;e<a.length;e++){this.updatePageRoot(a[e]);var k=a[e].node.cloneNode(!1);k.removeAttribute("name");c.root=a[e].root;var x=f.encode(c);this.editor.graph.saveViewState(a[e].viewState,x,!0);x.removeAttribute("pageWidth");x.removeAttribute("pageHeight");k.appendChild(x);null!=b&&(b.eltCount+=k.getElementsByTagName("*").length,b.nodeCount+=k.getElementsByTagName("mxCell").length);d=(d<<5)-d+this.hashValue(k,function(a,d,b,c){return!c||"mxGeometry"!= +a.nodeName&&"mxPoint"!=a.nodeName||"x"!=d&&"y"!=d&&"width"!=d&&"height"!=d?c&&"mxCell"==a.nodeName&&"previous"==d?null:b:Math.round(b)},b)<<0}return d};EditorUi.prototype.hashValue=function(a,b,c){var d=0;if(null!=a&&"object"===typeof a&&"number"===typeof a.nodeType&&"string"===typeof a.nodeName&&"function"===typeof a.getAttribute){null!=a.nodeName&&(d^=this.hashValue(a.nodeName,b,c));if(null!=a.attributes){null!=c&&(c.attrCount+=a.attributes.length);for(var f=0;f<a.attributes.length;f++){var e=a.attributes[f].name, +l=null!=b?b(a,e,a.attributes[f].value,!0):a.attributes[f].value;null!=l&&(d^=this.hashValue(e,b,c)+this.hashValue(l,b,c))}}if(null!=a.childNodes)for(f=0;f<a.childNodes.length;f++)d=(d<<5)-d+this.hashValue(a.childNodes[f],b,c)<<0}else if(null!=a&&"function"!==typeof a){a=String(a);b=0;null!=c&&(c.byteCount+=a.length);for(f=0;f<a.length;f++)b=(b<<5)-b+a.charCodeAt(f)<<0;d^=b}return d};EditorUi.prototype.descriptorChanged=function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary= +function(a,b,c,e,g,p,k){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||mxClient.IS_CHROMEAPP};EditorUi.prototype.toggleScratchpad=function(){this.isScratchpadEnabled()&&(null==this.scratchpad?this.getLocalData(".scratchpad",mxUtils.bind(this,function(a){null==a&&(a=this.emptyLibraryXml);this.loadLibrary(new StorageLibrary(this,a,".scratchpad"))})):this.closeLibrary(this.scratchpad))};EditorUi.prototype.createLibraryDataFromImages=function(a){var d=mxUtils.createXmlDocument(), +b=d.createElement("mxlibrary");mxUtils.setTextContent(b,JSON.stringify(a));d.appendChild(b);return mxUtils.getXml(d)};EditorUi.prototype.closeLibrary=function(a){null!=a&&(this.removeLibrarySidebar(a.getHash()),a.constructor!=LocalLibrary&&mxSettings.removeCustomLibrary(a.getHash()),".scratchpad"==a.title&&(this.scratchpad=null))};EditorUi.prototype.removeLibrarySidebar=function(a){var d=this.sidebar.palettes[a];if(null!=d){for(var b=0;b<d.length;b++)d[b].parentNode.removeChild(d[b]);delete this.sidebar.palettes[a]}}; +EditorUi.prototype.repositionLibrary=function(a){var d=this.sidebar.container;if(null==a){var b=this.sidebar.palettes["L.scratchpad"];null==b&&(b=this.sidebar.palettes.search);null!=b&&(a=b[b.length-1].nextSibling)}a=null!=a?a:d.firstChild.nextSibling.nextSibling;var b=d.lastChild,c=b.previousSibling;d.insertBefore(b,a);d.insertBefore(c,b)};EditorUi.prototype.loadLibrary=function(a){var d=mxUtils.parseXml(a.getData());if("mxlibrary"==d.documentElement.nodeName){var b=JSON.parse(mxUtils.getTextContent(d.documentElement)); +this.libraryLoaded(a,b,d.documentElement.getAttribute("title"))}else throw{message:mxResources.get("notALibraryFile")};};EditorUi.prototype.getLibraryStorageHint=function(a){return""};EditorUi.prototype.libraryLoaded=function(a,b,c){if(null!=this.sidebar){a.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(a.getHash());".scratchpad"==a.title&&(this.scratchpad=a);var d=this.sidebar.palettes[a.getHash()],d=null!=d?d[d.length-1].nextSibling:null;this.removeLibrarySidebar(a.getHash());var f=null, +e=mxUtils.bind(this,function(d,b){0==d.length&&a.isEditable()?(null==f&&(f=document.createElement("div"),mxUtils.setPrefixedStyle(f.style,"borderRadius","6px"),f.style.border="3px dotted lightGray",f.style.textAlign="center",f.style.padding="8px",f.style.color="#B3B3B3",mxUtils.write(f,mxResources.get("dragElementsHere"))),b.appendChild(f)):this.addLibraryEntries(d,b)});if(null!=this.sidebar&&null!=b)for(var l=0;l<b.length;l++)mxUtils.bind(this,function(a){var d=a.data;null!=d&&null!=a.title?this.sidebar.addEntry(a.title, +mxUtils.bind(this,function(){d=this.convertDataUri(d);var b="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==a.aspect&&(b+="aspect=fixed;");return this.sidebar.createVertexTemplate(b+"image="+d,a.w,a.h,"",a.title||"",!1,!1,!0)})):null!=a.xml&&null!=a.title&&this.sidebar.addEntry(a.title,mxUtils.bind(this,function(){var d=this.stringToCells(this.editor.graph.decompress(a.xml));return this.sidebar.createVertexTemplateFromCells(d,a.w,a.h,a.title||"",!0,!1,!0)}))})(b[l]); +c=null!=c&&0<c.length?c:a.getTitle();var k=this.sidebar.addPalette(a.getHash(),c,!0,mxUtils.bind(this,function(a){e(b,a)}));this.repositionLibrary(d);var t=k.parentNode.previousSibling;c=t.getAttribute("title");null!=c&&0<c.length&&".scratchpad"!=a.title&&t.setAttribute("title",this.getLibraryStorageHint(a)+"\n"+c);var m=document.createElement("div");m.style.position="absolute";m.style.right="0px";m.style.top="0px";m.style.padding="8px";mxClient.IS_QUIRKS||8==document.documentMode||(m.style.backgroundColor= +"inherit");t.style.position="relative";var u=document.createElement("img");u.setAttribute("src",Dialog.prototype.closeImage);u.setAttribute("title",mxResources.get("close"));u.setAttribute("valign","absmiddle");u.setAttribute("border","0");u.style.margin="0 3px";var q=null;if(".scratchpad"!=a.title||this.closableScratchpad)m.appendChild(u),mxEvent.addListener(u,"click",mxUtils.bind(this,function(d){if(!mxEvent.isConsumed(d)){var b=mxUtils.bind(this,function(){this.closeLibrary(a)});null!=q?this.confirm(mxResources.get("allChangesLost"), +null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b();mxEvent.consume(d)}}));if(a.isEditable()){var D=this.editor.graph,r=null,v=mxUtils.bind(this,function(d){this.showLibraryDialog(a.getTitle(),k,b,a,a.getMode());mxEvent.consume(d)}),z=mxUtils.bind(this,function(d){a.setModified(!0);a.isAutosave()?(null!=r&&null!=r.parentNode&&r.parentNode.removeChild(r),r=u.cloneNode(!1),r.setAttribute("src",Editor.spinImage),r.setAttribute("title",mxResources.get("saving")),r.style.cursor="default", +r.style.marginRight="2px",r.style.marginTop="-2px",m.insertBefore(r,m.firstChild),t.style.paddingRight=18*m.childNodes.length+"px",this.saveLibrary(a.getTitle(),b,a,a.getMode(),!0,!0,function(){null!=r&&null!=r.parentNode&&(r.parentNode.removeChild(r),t.style.paddingRight=18*m.childNodes.length+"px")})):null==q&&(q=u.cloneNode(!1),q.setAttribute("src",IMAGE_PATH+"/download.png"),q.setAttribute("title",mxResources.get("save")),m.insertBefore(q,m.firstChild),mxEvent.addListener(q,"click",mxUtils.bind(this, +function(d){this.saveLibrary(a.getTitle(),b,a,a.getMode(),a.constructor==LocalLibrary,!0,function(){null==q||a.isModified()||(t.style.paddingRight=18*m.childNodes.length+"px",q.parentNode.removeChild(q),q=null)});mxEvent.consume(d)})),t.style.paddingRight=18*m.childNodes.length+"px")}),K=mxUtils.bind(this,function(a,d,c,e){a=D.cloneCells(mxUtils.sortCells(D.model.getTopmostCells(a)));for(var g=0;g<a.length;g++){var l=D.getCellGeometry(a[g]);null!=l&&l.translate(-d.x,-d.y)}k.appendChild(this.sidebar.createVertexTemplateFromCells(a, +d.width,d.height,e||"",!0,!1,!1));a={xml:this.editor.graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(a))),w:d.width,h:d.height};null!=e&&(a.title=e);b.push(a);z(c);null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null)}),E=mxUtils.bind(this,function(a){if(D.isSelectionEmpty())D.getRubberband().isActive()?(D.getRubberband().execute(a),D.getRubberband().reset()):this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var d= +D.getSelectionCells(),b=D.view.getBounds(d),c=D.view.scale;b.x/=c;b.y/=c;b.width/=c;b.height/=c;b.x-=D.view.translate.x;b.y-=D.view.translate.y;K(d,b)}mxEvent.consume(a)});k.style.border="3px solid transparent";mxEvent.addGestureListeners(k,function(){},mxUtils.bind(this,function(a){D.isMouseDown&&null!=D.panningManager&&null!=D.graphHandler.shape&&(D.graphHandler.shape.node.style.visibility="hidden",null!=f?f.style.border="3px dotted rgb(254, 137, 12)":k.style.border="3px dotted rgb(254, 137, 12)", +k.style.cursor="copy",D.panningManager.stop(),D.autoScroll=!1,null!=D.graphHandler.guide&&D.graphHandler.guide.setVisible(!1),null!=D.graphHandler.hint&&(D.graphHandler.hint.style.visibility="hidden"),mxEvent.consume(a))}),mxUtils.bind(this,function(a){D.isMouseDown&&null!=D.panningManager&&null!=D.graphHandler&&(k.style.border="3px solid transparent",null!=f&&(f.style.border="3px dotted lightGray"),k.style.cursor="default",this.sidebar.showTooltips=!0,D.panningManager.stop(),D.graphHandler.reset(), +D.isMouseDown=!1,D.autoScroll=!0,E(a),mxEvent.consume(a))}));mxEvent.addListener(k,"mouseleave",mxUtils.bind(this,function(a){D.isMouseDown&&null!=D.graphHandler.shape&&(D.graphHandler.shape.node.style.visibility="visible",k.style.border="3px solid transparent",k.style.cursor="",D.autoScroll=!0,null!=D.graphHandler.guide&&D.graphHandler.guide.setVisible(!0),null!=D.graphHandler.hint&&(D.graphHandler.hint.style.visibility="visible"),null!=f&&(f.style.border="3px dotted lightGray"))}));Graph.fileSupport&& +(mxEvent.addListener(k,"dragover",mxUtils.bind(this,function(a){null!=f?f.style.border="3px dotted rgb(254, 137, 12)":k.style.border="3px dotted rgb(254, 137, 12)";a.dataTransfer.dropEffect="copy";k.style.cursor="copy";this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()})),mxEvent.addListener(k,"drop",mxUtils.bind(this,function(a){k.style.border="3px solid transparent";k.style.cursor="";null!=f&&(f.style.border="3px dotted lightGray");0<a.dataTransfer.files.length&&this.importFiles(a.dataTransfer.files, +0,0,this.maxImageSize,mxUtils.bind(this,function(d,c,g,l,p,n,t,u,m){if(null!=d&&"image/"==c.substring(0,6))d="shape=image;verticalLabelPosition=bottom;verticalAlign=top;aspect=fixed;image="+this.convertDataUri(d),d=[new mxCell("",new mxGeometry(0,0,p,n),d)],d[0].vertex=!0,K(d,new mxRectangle(0,0,p,n),a,mxEvent.isAltDown(a)?null:t.substring(0,t.lastIndexOf(".")).replace(/_/g," ")),null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null);else{var B=!1,x=mxUtils.bind(this,function(d, +c){if(null!=d&&"text/xml"==c){var g=mxUtils.parseXml(d);if("mxlibrary"==g.documentElement.nodeName)try{var l=JSON.parse(mxUtils.getTextContent(g.documentElement));e(l,k);b=b.concat(l);z(a);this.spinner.stop();B=!0}catch(G){}else if("mxfile"==g.documentElement.nodeName)try{for(var p=g.documentElement.getElementsByTagName("diagram"),g=0;g<p.length;g++){var l=mxUtils.getTextContent(p[g]),n=this.stringToCells(this.editor.graph.decompress(l)),t=this.editor.graph.getBoundingBoxFromGeometry(n);K(n,new mxRectangle(0, +0,t.width,t.height),a)}B=!0}catch(G){null!=window.console&&console.log("error in drop handler:",G)}}B||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null)});null!=m&&null!=t&&(/(\.v(dx|sdx?))($|\?)/i.test(t)||/(\.vs(x|sx?))($|\?)/i.test(t))?this.importVisio(m,function(a){x(a,"text/xml")},null,t):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,t)&&null!=m?this.parseFile(m, +mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?x(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):x(d,c)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(k,"dragleave",function(a){null!=f?f.style.border="3px dotted lightGray":(k.style.border="3px solid transparent",k.style.cursor="");a.stopPropagation();a.preventDefault()})); +u=u.cloneNode(!1);u.setAttribute("src",Editor.editImage);u.setAttribute("title",mxResources.get("edit"));m.insertBefore(u,m.firstChild);mxEvent.addListener(u,"click",v);mxEvent.addListener(k,"dblclick",function(a){mxEvent.getSource(a)==k&&v(a)});c=u.cloneNode(!1);c.setAttribute("src",Editor.plusImage);c.setAttribute("title",mxResources.get("add"));m.insertBefore(c,m.firstChild);mxEvent.addListener(c,"click",E);this.isOffline()||".scratchpad"!=a.title||null==EditorUi.scratchpadHelpLink||(c=document.createElement("span"), +c.setAttribute("title",mxResources.get("help")),c.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;",mxUtils.write(c,"?"),mxEvent.addGestureListeners(c,mxUtils.bind(this,function(a){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(a)})),m.insertBefore(c,m.firstChild))}t.appendChild(m);t.style.paddingRight=18*m.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(a,b){for(var d=0;d<a.length;d++){var c=a[d],f=c.data;if(null!=f){var f=this.convertDataUri(f), +e="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==c.aspect&&(e+="aspect=fixed;");b.appendChild(this.sidebar.createVertexTemplate(e+"image="+f,c.w,c.h,"",c.title||"",!1,!1,!0))}else null!=c.xml&&(f=this.stringToCells(this.editor.graph.decompress(c.xml)),0<f.length&&b.appendChild(this.sidebar.createVertexTemplateFromCells(f,c.w,c.h,c.title||"",!0,!1,!0)))}};EditorUi.prototype.getResource=function(a){return null!=a?a[mxLanguage]||a.main:null};EditorUi.prototype.footerHeight= +0;"1"==urlParams.offline||EditorUi.isElectronApp||("1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64),EditorUi.prototype.createFooter=function(){return document.getElementById("geFooter")});EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground=mxClient.IS_QUIRKS?"none":"linear-gradient(rgb(255, 255, 255) 0px, rgb(242, 242, 242) 100%)",Toolbar.prototype.selectedBackground= +"rgb(242, 242, 242)"),Editor.prototype.initialTopSpacing=3,EditorUi.prototype.menubarHeight=41,EditorUi.prototype.toolbarHeight=38,EditorUi.prototype.hsplitPosition=188,Sidebar.prototype.thumbWidth=46,Sidebar.prototype.thumbHeight=46,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2):"dark"==uiTheme&&(mxClient.link("stylesheet",STYLE_PATH+"/dark.css"),Dialog.backdropColor="#2a2a2a",Graph.prototype.defaultThemeName="darkTheme",Graph.prototype.defaultPageBackgroundColor= +"#2a2a2a",Graph.prototype.defaultPageBorderColor="#505759",Graph.prototype.svgShadowColor="#e0e0e0",Graph.prototype.svgShadowOpacity="0.6",Graph.prototype.svgShadowSize="0.8",Graph.prototype.svgShadowBlur="1.4",Format.prototype.inactiveTabBackgroundColor="black",BaseFormatPanel.prototype.buttonBackgroundColor="#2a2a2a",Sidebar.prototype.dragPreviewBorder="1px dashed #cccccc",mxGraphHandler.prototype.previewColor="#cccccc",StyleFormatPanel.prototype.defaultStrokeColor="#cccccc",mxClient.IS_SVG&&(Editor.helpImage= +"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAP1BMVEUAAAD///////////////////////////////////////////////////////////////////////////////9Du/pqAAAAFXRSTlMAT30qCJRBboyDZyCgRzUUdF46MJlgXETgAAAAeklEQVQY022O2w4DIQhEQUURda/9/28tUO2+7CQS5sgQ4F1RapX78YUwRqQjTU8ILqQfKerTKTvACJ4nLX3krt+8aS82oI8aQC4KavRgtvEW/mDvsICgA03PSGRr79MqX1YPNIxzjyqtw8ZnnRo4t5a5undtJYRywau+ds4Cyza3E6YAAAAASUVORK5CYII=",Editor.checkmarkImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAMAAACeyVWkAAAARVBMVEUAAACZmZkICAgEBASNjY2Dg4MYGBiTk5N5eXl1dXVmZmZQUFBCQkI3NzceHh4MDAykpKSJiYl+fn5sbGxaWlo/Pz8SEhK96uPlAAAAAXRSTlMAQObYZgAAAE5JREFUGNPFzTcSgDAQQ1HJGUfy/Y9K7V1qeOUfzQifCQZai1XHaz11LFysbDbzgDSSWMZiETz3+b8yNUc/MMsktxuC8XQBSncdLwz+8gCCggGXzBcozAAAAABJRU5ErkJggg=="))}; +EditorUi.initTheme();EditorUi.prototype.hideFooter=function(){var a=document.getElementById("geFooter");null!=a&&(this.footerHeight=0,a.style.display="none",this.refresh())};EditorUi.prototype.showFooter=function(a){var d=document.getElementById("geFooter");null!=d&&(this.footerHeight=a,d.style.display="inline",this.refresh())};EditorUi.prototype.showImageDialog=function(a,b,c,e,g){a=new ImageDialog(this,a,b,c,e,g);this.showDialog(a.container,Graph.fileSupport?440:360,Graph.fileSupport?200:90,!0, +!0);a.init()};EditorUi.prototype.showBackgroundImageDialog=function(a){a=null!=a?a:mxUtils.bind(this,function(a){a=new ChangePageSetup(this,null,a);a.ignoreColor=!0;this.editor.graph.model.execute(a)});var d=new BackgroundImageDialog(this,mxUtils.bind(this,function(d){a(d)}));this.showDialog(d.container,360,200,!0,!0);d.init()};EditorUi.prototype.showLibraryDialog=function(a,b,c,e,g){a=new LibraryDialog(this,a,b,c,e,g);this.showDialog(a.container,640,440,!0,!1,mxUtils.bind(this,function(a){a&&null== +this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));a.init()};var b=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(a){var d=b.apply(this,arguments);this.editor.graph.addListener("viewStateChanged",mxUtils.bind(this,function(a){this.editor.graph.isSelectionEmpty()&&d.refresh()}));return d};EditorUi.prototype.createSidebarFooterContainer=function(){var a=this.createDiv("geSidebarContainer");a.style.position="absolute";a.style.overflow="hidden";a.style.borderWidth= +"3px";var b=document.createElement("a");b.className="geTitle";b.style.height="100%";b.style.paddingTop="9px";b.innerHTML='<span style="font-size:18px;margin-right:5px;">+</span>';mxUtils.write(b,mxResources.get("moreShapes")+"...");mxEvent.addListener(b,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(b,"click",mxUtils.bind(this,function(a){this.actions.get("shapes").funct();mxEvent.consume(a)}));a.appendChild(b);return a};EditorUi.prototype.handleError= +function(a,b,c,e){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},f=null!=a&&null!=a.error?a.error:a;if(null!=f||null!=b){a=mxUtils.htmlEntities(mxResources.get("unknownError"));var l=mxResources.get("ok"),n=null;b=null!=b?b:mxResources.get("error");if(null!=f)if(null!=f.retry&&(l=mxResources.get("cancel"),n=function(){d();f.retry()}),404==f.code||404==f.status||403==f.code){a=403==f.code?null!=f.message?mxUtils.htmlEntities(f.message):mxUtils.htmlEntities(mxResources.get("accessDenied")): +mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied"));var k=window.location.hash;null!=k&&"#G"==k.substring(0,2)&&(k=k.substring(2),a+='<br><a href="https://drive.google.com/open?id='+k+'" target="_blank">'+mxUtils.htmlEntities(mxResources.get("tryOpeningViaThisPage"))+"</a>")}else null!=f.message?a=mxUtils.htmlEntities(f.message):null!=f.response&&null!=f.response.error?a=mxUtils.htmlEntities(f.response.error):"undefined"!==window.App&&(f.code==App.ERROR_TIMEOUT?a=mxUtils.htmlEntities(mxResources.get("timeout")): +f.code==App.ERROR_BUSY&&(a=mxUtils.htmlEntities(mxResources.get("busy"))));this.showError(b,a,l,c,n,null,null,null,null,null,null,null,e?c:null)}else null!=c&&c()};EditorUi.prototype.showError=function(a,b,c,e,g,p,k,m,t,q,u,A,r){a=new ErrorDialog(this,a,b,c||mxResources.get("ok"),e,g,p,k,A,m,t);this.showDialog(a.container,q||340,u||(null!=b&&120<b.length?180:150),!0,!1,r);a.init()};EditorUi.prototype.alert=function(a,b){var d=new ErrorDialog(this,null,a,mxResources.get("ok"),b);this.showDialog(d.container, +340,100,!0,!1);d.init()};EditorUi.prototype.confirm=function(a,b,c,e,g,p){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){};a=new ConfirmDialog(this,a,function(){d();null!=b&&b()},function(){d();null!=c&&c()},e,g);this.showDialog(a.container,340,90,!0,p);a.init()};EditorUi.prototype.setCurrentFile=function(a){this.currentFile=a};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP|| +!this.editor.graph.mathEnabled&&this.useCanvasForExport};EditorUi.prototype.createSvgDataUri=function(a){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(a)))};EditorUi.prototype.createImageDataUri=function(a,b,c){var d=a.toDataURL("image/"+c);if(6>=d.length||d==a.cloneNode(!1).toDataURL("image/"+c))throw{message:"Invalid image"};null!=b&&(d=this.writeGraphModelToPng(d,"zTXt","mxGraphModel",atob(this.editor.graph.compress(b))));return d};EditorUi.prototype.saveCanvas=function(a, +b,c){var d="jpeg"==c?"jpg":c,f=this.getBaseFilename()+"."+d;a=this.createImageDataUri(a,b,c);this.saveData(f,d,a.substring(a.lastIndexOf(",")+1),"image/"+c,!0)};EditorUi.prototype.isLocalFileSave=function(){return"remote"!=urlParams.save&&(mxClient.IS_IE||"undefined"!==typeof window.Blob&&"undefined"!==typeof window.URL)&&9!=document.documentMode&&8!=document.documentMode&&7!=document.documentMode&&!mxClient.IS_QUIRKS||this.isOfflineApp()||mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(a, +b){var d=new TextareaDialog(this,a,b,null,null,mxResources.get("close"));d.textarea.style.width="600px";d.textarea.style.height="380px";this.showDialog(d.container,620,460,!0,!0);d.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(a,b,c,e,g){if(window.Blob&&navigator.msSaveOrOpenBlob)a=e?this.base64ToBlob(a,c):new Blob([a],{type:c}),navigator.msSaveOrOpenBlob(a,b);else if(mxClient.IS_IE)c=window.open("about:blank","_blank"),null==c?mxUtils.popup(a,!0):(c.document.write(a), +c.document.close(),c.document.execCommand("SaveAs",!0,b),c.close());else{var d=document.createElement("a"),f=!mxClient.IS_SF&&0>navigator.userAgent.indexOf("PaleMoon/")&&"undefined"!==typeof d.download;if(mxClient.IS_GC)var l=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./),f=65==(l?parseInt(l[2],10):!1)?!1:f;if(f||this.isOffline()){d.href=URL.createObjectURL(e?this.base64ToBlob(a,c):new Blob([a],{type:c}));f?d.download=b:d.setAttribute("target","_blank");document.body.appendChild(d);try{window.setTimeout(function(){URL.revokeObjectURL(d.href)}, +0),d.click(),d.parentNode.removeChild(d)}catch(t){}}else this.createEchoRequest(a,b,c,e,g).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(a,b,c,e,g,p){a="xml="+encodeURIComponent(a);return new mxXmlRequest(SAVE_URL,a+(null!=c?"&mime="+c:"")+(null!=g?"&format="+g:"")+(null!=p?"&base64="+p:"")+(null!=b?"&filename="+encodeURIComponent(b):"")+(e?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(a,b){b=b||"";for(var d=atob(a),c=d.length,f=Math.ceil(c/1024),e=Array(f), +k=0;k<f;++k){for(var m=1024*k,t=Math.min(m+1024,c),q=Array(t-m),u=0;m<t;++u,++m)q[u]=d[m].charCodeAt(0);e[k]=new Uint8Array(q)}return new Blob(e,{type:b})};EditorUi.prototype.saveLocalFile=function(a,b,c,e,g,p,k){p=null!=p?p:!1;k=null!=k?k:"vsdx"!=g&&(!mxClient.IS_IOS||!navigator.standalone);g=this.getServiceCount(p);b=new CreateDialog(this,b,mxUtils.bind(this,function(d,b){try{if("_blank"==b)if(null==c||"image/"!=c.substring(0,6)||"image/svg"==c.substring(0,9)&&!mxClient.IS_SVG){var f=window.open("about:blank"); +null==f?mxUtils.popup(a,!0):(f.document.write(mxUtils.htmlEntities(a,!1)),f.document.close())}else this.openInNewWindow(a,c,e);else b==App.MODE_DEVICE||"download"==b?this.doSaveLocalFile(a,d,c,e):null!=d&&0<d.length&&this.pickFolder(b,mxUtils.bind(this,function(f){try{this.exportFile(a,d,c,e,b,f)}catch(A){this.handleError(A)}}))}catch(u){this.handleError(u)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,p,k,null,1<g,4<g&&(!p||6>g)?3:4, +a,c,e);this.showDialog(b.container,420,1==g?160:4<g?390:270,!0,!0);b.init()};EditorUi.prototype.openInNewWindow=function(a,b,c){if(mxClient.IS_GC||mxClient.IS_EDGE||11==document.documentMode||10==document.documentMode){var d=window.open("about:blank");null==d||null==d.document?mxUtils.popup(a,!0):("image/svg+xml"==b?d.document.write("<html>"+a+"</html>"):d.document.write('<html><img src="data:'+b+(c?";base64,"+a:";charset=utf8,"+encodeURIComponent(a))+'"/></html>'),d.document.close())}else d=window.open("data:"+ +b+(c?";base64,"+a:";charset=utf8,"+encodeURIComponent(a))),null!=d&&null!=d.document||mxUtils.popup(a,!0)};var e=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.addChromelessToolbarItems=function(a){if(this.isExportToCanvas()){this.exportDialog=null;var d=a(mxUtils.bind(this,function(a){var b=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",b);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog= +null)});if(null!=this.exportDialog)b.apply(this);else{this.exportDialog=document.createElement("div");var c=d.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";this.exportDialog.style.fontFamily="Helvetica,Arial";this.exportDialog.style.backgroundColor="#000000";this.exportDialog.style.width="50px";this.exportDialog.style.height="50px";this.exportDialog.style.padding="4px 2px 4px 2px"; +this.exportDialog.style.color="#ffffff";mxUtils.setOpacity(this.exportDialog,70);this.exportDialog.style.left=c.left+"px";this.exportDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";c=mxUtils.getCurrentStyle(this.editor.graph.container);this.exportDialog.style.zIndex=c.zIndex;var f=new Spinner({lines:8,length:6,width:5,radius:6,rotate:0,color:"#fff",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"28px",zIndex:2E9});f.spin(this.exportDialog); +this.exportToCanvas(mxUtils.bind(this,function(a){f.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var d=this.createImageDataUri(a,null,"png");a=document.createElement("img");a.style.maxWidth="140px";a.style.maxHeight="140px";a.style.cursor="pointer";a.style.backgroundColor="white";a.setAttribute("title",mxResources.get("openInNewWindow"));a.setAttribute("border","0");a.setAttribute("src",d);this.exportDialog.appendChild(a); +mxEvent.addListener(a,"click",mxUtils.bind(this,function(){this.openInNewWindow(d.substring(d.indexOf(",")+1),"image/png",!0);b.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));mxEvent.addListener(this.editor.graph.container,"click",b);document.body.appendChild(this.exportDialog)}mxEvent.consume(a)}),Editor.cameraLargeImage,mxResources.get("export"))}e.apply(this,arguments)};EditorUi.prototype.saveData=function(a,b, +c,e,g){this.isLocalFileSave()?this.saveLocalFile(c,a,e,g,b):this.saveRequest(a,b,mxUtils.bind(this,function(a,d){return this.createEchoRequest(c,a,e,g,b,d)}),c,g,e)};EditorUi.prototype.saveRequest=function(a,b,c,e,g,p,k){k=null!=k?k:!mxClient.IS_IOS||!navigator.standalone;var d=this.getServiceCount(!1);a=new CreateDialog(this,a,mxUtils.bind(this,function(a,d){if("_blank"==d||null!=a&&0<a.length){var f=c("_blank"==d?null:a,d==App.MODE_DEVICE||"download"==d||null==d||"_blank"==d?"0":"1");null!=f&&(d== +App.MODE_DEVICE||"download"==d||"_blank"==d?f.simulate(document,"_blank"):this.pickFolder(d,mxUtils.bind(this,function(c){p=null!=p?p:"pdf"==b?"application/pdf":"image/"+b;if(null!=e)try{this.exportFile(e,a,p,!0,d,c)}catch(D){this.handleError(D)}else this.spinner.spin(document.body,mxResources.get("saving"))&&f.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=f.getStatus()&&299>=f.getStatus())try{this.exportFile(f.getText(),a,p,!0,d,c)}catch(D){this.handleError(D)}else this.handleError({message:mxResources.get("errorSavingFile")})}), +function(a){this.spinner.stop();this.handleError(a)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,k,null,1<d,4<d?3:4,e,p,g);this.showDialog(a.container,380,1==d?160:4<d?390:270,!0,!0);a.init()};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(a,b,c,e,g,p){};EditorUi.prototype.pickFolder=function(a,b,c){b(null)};EditorUi.prototype.exportSvg=function(a,b,c,e,g,p,k, +m,t,q){if(this.spinner.spin(document.body,mxResources.get("export"))){var d=this.editor.graph.isSelectionEmpty();c=null!=c?c:d;d=b?null:this.editor.graph.background;d==mxConstants.NONE&&(d=null);null==d&&0==b&&(d="#ffffff");var f=this.editor.graph.getSvg(d,a,k,m,null,c,null,null,"blank"==q?"_blank":"self"==q?"_top":null);e&&this.editor.graph.addSvgShadow(f);var l=this.getBaseFilename()+".svg",n=mxUtils.bind(this,function(a){this.spinner.stop();g&&a.setAttribute("content",this.getFileData(!0,null, +null,null,c,t));if(null!=this.editor.fontCss){var d=a.ownerDocument,d=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG,"style"):d.createElement("style");d.setAttribute("type","text/css");mxUtils.setTextContent(d,this.editor.fontCss);a.getElementsByTagName("defs")[0].appendChild(d)}var b='<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a);this.isLocalFileSave()||b.length<=MAX_REQUEST_SIZE?this.saveData(l,"svg",b,"image/svg+xml"): +this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});this.convertMath(this.editor.graph,f,!1,mxUtils.bind(this,function(){p?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.convertImages(f,n,this.thumbImageCache)):n(f)}))}};EditorUi.prototype.addRadiobox=function(a,b,c,e,g,p,k){return this.addCheckbox(a,c,e,g,p,k,!0,b)};EditorUi.prototype.addCheckbox=function(a,b,c,e,g,p,k,m){p=null!=p?p:!0;var d=document.createElement("input"); +d.style.marginRight="8px";d.style.marginTop="16px";d.setAttribute("type",k?"radio":"checkbox");k="geCheckbox-"+Editor.guid();d.id=k;null!=m&&d.setAttribute("name",m);c&&(d.setAttribute("checked","checked"),d.defaultChecked=!0);e&&d.setAttribute("disabled","disabled");p&&(a.appendChild(d),c=document.createElement("label"),mxUtils.write(c,b),c.setAttribute("for",k),a.appendChild(c),g||mxUtils.br(a));return d};EditorUi.prototype.addEditButton=function(a,b){var d=this.addCheckbox(a,mxResources.get("edit")+ +":",!0,null,!0);d.style.marginLeft="24px";var c=this.getCurrentFile(),f="";null!=c&&c.getMode()!=App.MODE_DEVICE&&c.getMode()!=App.MODE_BROWSER&&(f=window.location.href);var e=document.createElement("select");e.style.width="120px";e.style.marginLeft="8px";e.style.marginRight="10px";e.className="geBtn";c=document.createElement("option");c.setAttribute("value","blank");mxUtils.write(c,mxResources.get("makeCopy"));e.appendChild(c);c=document.createElement("option");c.setAttribute("value","custom");mxUtils.write(c, +mxResources.get("custom")+"...");e.appendChild(c);a.appendChild(e);mxEvent.addListener(e,"change",mxUtils.bind(this,function(){if("custom"==e.value){var a=new FilenameDialog(this,f,mxResources.get("ok"),function(a){null!=a?f=a:e.value="blank"},mxResources.get("url"),null,null,null,null,function(){e.value="blank"});this.showDialog(a.container,300,80,!0,!1);a.init()}}));mxEvent.addListener(d,"change",mxUtils.bind(this,function(){d.checked&&(null==b||b.checked)?e.removeAttribute("disabled"):e.setAttribute("disabled", +"disabled")}));mxUtils.br(a);return{getLink:function(){return d.checked?"blank"===e.value?"_blank":f:null},getEditInput:function(){return d},getEditSelect:function(){return e}}};EditorUi.prototype.addLinkSection=function(a,b){function d(){k.innerHTML='<div style="width:100%;height:100%;box-sizing:border-box;'+(null!=e&&e!=mxConstants.NONE?"border:1px solid black;background-color:"+e:"background-position:center center;background-repeat:no-repeat;background-image:url('"+Dialog.prototype.closeImage+ +"')")+';"></div>'}mxUtils.write(a,mxResources.get("links")+":");var c=document.createElement("select");c.style.width="100px";c.style.marginLeft="8px";c.style.marginRight="10px";c.className="geBtn";var f=document.createElement("option");f.setAttribute("value","auto");mxUtils.write(f,mxResources.get("automatic"));c.appendChild(f);f=document.createElement("option");f.setAttribute("value","blank");mxUtils.write(f,mxResources.get("openInNewWindow"));c.appendChild(f);f=document.createElement("option"); +f.setAttribute("value","self");mxUtils.write(f,mxResources.get("openInThisWindow"));c.appendChild(f);b&&(f=document.createElement("option"),f.setAttribute("value","frame"),mxUtils.write(f,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),c.appendChild(f));a.appendChild(c);mxUtils.write(a,mxResources.get("borderColor")+":");var e="#0000ff",k=null,k=mxUtils.button("",mxUtils.bind(this,function(a){this.pickColor(e||"none",function(a){e=a;d()});mxEvent.consume(a)}));d();k.style.padding= +mxClient.IS_FF?"4px 2px 4px 2px":"4px";k.style.marginLeft="4px";k.style.height="22px";k.style.width="22px";k.style.position="relative";k.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";k.className="geColorBtn";a.appendChild(k);mxUtils.br(a);return{getColor:function(){return e},getTarget:function(){return c.value},focus:function(){c.focus()}}};EditorUi.prototype.createLink=function(a,b,c,e,g,k,m,x){var d=this.getCurrentFile(),f=[];e&&(f.push("lightbox=1"),"auto"!=a&&f.push("target="+ +a),null!=b&&b!=mxConstants.NONE&&f.push("highlight="+("#"==b.charAt(0)?b.substring(1):b)),null!=g&&0<g.length&&f.push("edit="+encodeURIComponent(g)),k&&f.push("layers=1"),this.editor.graph.foldingEnabled&&f.push("nav=1"));c&&(a=this.getSelectedPageIndex(),0<a&&f.push("page="+a));a=!0;null!=m?c="#U"+encodeURIComponent(m):(d=this.getCurrentFile(),x||null==d||d.constructor!=window.DriveFile?c="#R"+encodeURIComponent(c?this.getFileData(!0,null,null,null,null,null,null,!0):this.editor.graph.compress(mxUtils.getXml(this.editor.getGraphXml()))): +(c="#"+d.getHash(),a=!1));a&&null!=d&&null!=d.getTitle()&&d.getTitle()!=this.defaultFilename&&f.push("title="+encodeURIComponent(d.getTitle()));return(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host+"/")+(0<f.length?"?"+f.join("&"):"")+c};EditorUi.prototype.createHtml=function(a,b,c,e,g,k,m,x,t,q,u){this.getBasenames();var d={};""!=g&&g!=mxConstants.NONE&&(d.highlight=g);"auto"!==e&&(d.target=e);t||(d.lightbox= +!1);d.nav=this.editor.graph.foldingEnabled;c=parseInt(c);isNaN(c)||100==c||(d.zoom=c/100);c=[];m&&(c.push("pages"),d.resize=!0,null!=this.pages&&null!=this.currentPage&&(d.page=mxUtils.indexOf(this.pages,this.currentPage)));b&&(c.push("zoom"),d.resize=!0);x&&c.push("layers");0<c.length&&(t&&c.push("lightbox"),d.toolbar=c.join(" "));null!=q&&0<q.length&&(d.edit=q);null!=a?d.url=a:d.xml=this.getFileData(!0,null,null,null,null,!m);b='<div class="mxgraph" style="'+(k?"max-width:100%;":"")+(""!=c?"border:1px solid transparent;": +"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(d))+'"></div>';a=null!=a?"&fetch="+encodeURIComponent(a):"";u(b,'<script type="text/javascript" src="'+(0<a.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.drawHost+"/embed2.js?")+a:"1"==urlParams.dev?"https://test.draw.io/js/viewer.min.js":window.VIEWER_URL?window.VIEWER_URL:EditorUi.drawHost+"/js/viewer.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(a,b,c,e){var d=document.createElement("div"); +d.style.whiteSpace="nowrap";var f=document.createElement("h3");mxUtils.write(f,mxResources.get("html"));f.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(f);var l=document.createElement("div");l.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var k=document.createElement("input");k.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";k.setAttribute("value","url");k.setAttribute("type","radio");k.setAttribute("name", +"type-embedhtmldialog");f=k.cloneNode(!0);f.setAttribute("value","copy");l.appendChild(f);var n=document.createElement("span");mxUtils.write(n,mxResources.get("includeCopyOfMyDiagram"));l.appendChild(n);mxUtils.br(l);l.appendChild(k);n=document.createElement("span");mxUtils.write(n,mxResources.get("publicDiagramUrl"));l.appendChild(n);var m=this.getCurrentFile();null==c&&null!=m&&m.constructor==window.DriveFile&&(n=document.createElement("a"),n.style.paddingLeft="12px",n.style.color="gray",n.setAttribute("href", +"javascript:void(0);"),mxUtils.write(n,mxResources.get("share")),l.appendChild(n),mxEvent.addListener(n,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(m.getId())})));f.setAttribute("checked","checked");null==c&&k.setAttribute("disabled","disabled");d.appendChild(l);var u=this.addLinkSection(d),q=this.addCheckbox(d,mxResources.get("zoom"),!0,null,!0);mxUtils.write(d,":");var r=document.createElement("input");r.setAttribute("type","text");r.style.marginRight="16px"; +r.style.width="60px";r.style.marginLeft="4px";r.style.marginRight="12px";r.value="100%";d.appendChild(r);var v=this.addCheckbox(d,mxResources.get("fit"),!0),l=null!=this.pages&&1<this.pages.length,z=z=this.addCheckbox(d,mxResources.get("allPages"),l,!l),N=this.addCheckbox(d,mxResources.get("layers"),!0),K=this.addCheckbox(d,mxResources.get("lightbox"),!0),E=this.addEditButton(d,K),C=E.getEditInput();C.style.marginBottom="16px";mxEvent.addListener(K,"change",function(){K.checked?C.removeAttribute("disabled"): +C.setAttribute("disabled","disabled");C.checked&&K.checked?E.getEditSelect().removeAttribute("disabled"):E.getEditSelect().setAttribute("disabled","disabled")});a=new CustomDialog(this,d,mxUtils.bind(this,function(){e(k.checked?c:null,q.checked,r.value,u.getTarget(),u.getColor(),v.checked,z.checked,N.checked,K.checked,E.getLink())}),null,a,b);this.showDialog(a.container,340,384,!0,!0);f.focus()};EditorUi.prototype.showPublishLinkDialog=function(a,b,c,e,g,k){var d=document.createElement("div");d.style.whiteSpace= +"nowrap";var f=document.createElement("h3");mxUtils.write(f,a||mxResources.get("link"));f.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(f);var l=this.getCurrentFile(),f="https://desk.draw.io/support/solutions/articles/16000051941";a=0;if(null!=l&&l.constructor==window.DriveFile&&!b){a=80;var f="https://desk.draw.io/support/solutions/articles/16000039384",p=document.createElement("div");p.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;"; +var n=document.createElement("div");n.style.whiteSpace="normal";mxUtils.write(n,mxResources.get("linkAccountRequired"));p.appendChild(n);n=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(l.getId())}));n.style.marginTop="12px";n.className="geBtn";p.appendChild(n);d.appendChild(p);n=document.createElement("a");n.style.paddingLeft="12px";n.style.color="gray";n.style.fontSize="11px";n.setAttribute("href","javascript:void(0);");mxUtils.write(n,mxResources.get("check")); +p.appendChild(n);mxEvent.addListener(n,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(a){this.spinner.stop();a=new ErrorDialog(this,null,mxResources.get(null!=a?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(a.container,300,80,!0,!1);a.init()}))}))}var m=null,q=null;if(null!=c||null!=e)a+=30,mxUtils.write(d,mxResources.get("width")+":"),m=document.createElement("input"), +m.setAttribute("type","text"),m.style.marginRight="16px",m.style.width="50px",m.style.marginLeft="6px",m.style.marginRight="16px",m.style.marginBottom="10px",m.value="100%",d.appendChild(m),mxUtils.write(d,mxResources.get("height")+":"),q=document.createElement("input"),q.setAttribute("type","text"),q.style.width="50px",q.style.marginLeft="6px",q.style.marginBottom="10px",q.value=e+"px",d.appendChild(q),mxUtils.br(d);var r=this.addLinkSection(d,k);c=null!=this.pages&&1<this.pages.length;var v=null; +if(null==l||l.constructor!=window.DriveFile||b)v=this.addCheckbox(d,mxResources.get("allPages"),c,!c);var z=this.addCheckbox(d,mxResources.get("lightbox"),!0),K=this.addEditButton(d,z),E=K.getEditInput(),C=this.addCheckbox(d,mxResources.get("layers"),!0);C.style.marginLeft=E.style.marginLeft;C.style.marginBottom="16px";C.style.marginTop="8px";mxEvent.addListener(z,"change",function(){z.checked?(C.removeAttribute("disabled"),E.removeAttribute("disabled")):(C.setAttribute("disabled","disabled"),E.setAttribute("disabled", +"disabled"));E.checked&&z.checked?K.getEditSelect().removeAttribute("disabled"):K.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,mxUtils.bind(this,function(){g(r.getTarget(),r.getColor(),null==v?!0:v.checked,z.checked,K.getLink(),C.checked,null!=m?m.value:null,null!=q?q.value:null)}),null,mxResources.get("create"),f);this.showDialog(b.container,340,254+a,!0,!0);null!=m?(m.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?m.select(): +document.execCommand("selectAll",!1,null)):r.focus()};EditorUi.prototype.showRemoteExportDialog=function(a,b,c,e){var d=document.createElement("div");d.style.whiteSpace="nowrap";var f=document.createElement("h3");mxUtils.write(f,mxResources.get("image"));f.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(f);var l=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),k=e?null:this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"), +!0),f=this.editor.graph,n=e?null:this.addCheckbox(d,mxResources.get("transparentBackground"),f.background==mxConstants.NONE||null==f.background);null!=n&&(n.style.marginBottom="16px");a=new CustomDialog(this,d,mxUtils.bind(this,function(){c(!l.checked,null!=k?k.checked:!1,null!=n?n.checked:!1)}),null,a,b);this.showDialog(a.container,300,e?100:186,!0,!0)};EditorUi.prototype.showExportDialog=function(a,b,c,e,g,k,m,q){m=null!=m?m:!0;var d=document.createElement("div");d.style.whiteSpace="nowrap";var f= +this.editor.graph,l="jpeg"==q?196:300,p=document.createElement("h3");mxUtils.write(p,a);p.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";d.appendChild(p);mxUtils.write(d,mxResources.get("zoom")+":");var n=document.createElement("input");n.setAttribute("type","text");n.style.marginRight="16px";n.style.width="60px";n.style.marginLeft="4px";n.style.marginRight="12px";n.value=this.lastExportZoom||"100%";d.appendChild(n);mxUtils.write(d,mxResources.get("borderWidth")+":"); +var x=document.createElement("input");x.setAttribute("type","text");x.style.marginRight="16px";x.style.width="60px";x.style.marginLeft="4px";x.value=this.lastExportBorder||"0";d.appendChild(x);mxUtils.br(d);var B=this.addCheckbox(d,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=q),r=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,f.isSelectionEmpty()),v=document.createElement("input");v.style.marginTop="16px";v.style.marginRight="8px";v.style.marginLeft="24px";v.setAttribute("disabled", +"disabled");v.setAttribute("type","checkbox");k&&(d.appendChild(v),mxUtils.write(d,mxResources.get("crop")),mxUtils.br(d),l+=26,mxEvent.addListener(r,"change",function(){r.checked?v.removeAttribute("disabled"):v.setAttribute("disabled","disabled")}));f.isSelectionEmpty()||(v.setAttribute("checked","checked"),v.defaultChecked=!0);var E=this.addCheckbox(d,mxResources.get("shadow"),f.shadowVisible),C=document.createElement("input");C.style.marginTop="16px";C.style.marginRight="8px";C.setAttribute("type", +"checkbox");!this.isOffline()&&this.canvasSupported||C.setAttribute("disabled","disabled");b&&(d.appendChild(C),mxUtils.write(d,mxResources.get("embedImages")),mxUtils.br(d),l+=26);var z=this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),m,null,null,"jpeg"!=q),O=null!=this.pages&&1<this.pages.length,V=this.addCheckbox(d,O?mxResources.get("allPages"):"",O,!O,null,"jpeg"!=q);V.style.marginLeft="24px";V.style.marginBottom="16px";O||(V.style.display="none");mxEvent.addListener(z,"change",function(){z.checked&& +O?V.removeAttribute("disabled"):V.setAttribute("disabled","disabled")});m&&O||V.setAttribute("disabled","disabled");var T=document.createElement("select");T.style.maxWidth="260px";T.style.marginLeft="8px";T.style.marginRight="10px";T.className="geBtn";a=document.createElement("option");a.setAttribute("value","auto");mxUtils.write(a,mxResources.get("automatic"));T.appendChild(a);a=document.createElement("option");a.setAttribute("value","blank");mxUtils.write(a,mxResources.get("openInNewWindow"));T.appendChild(a); +a=document.createElement("option");a.setAttribute("value","self");mxUtils.write(a,mxResources.get("openInThisWindow"));T.appendChild(a);"svg"==q&&(mxUtils.write(d,mxResources.get("links")+":"),d.appendChild(T),mxUtils.br(d),mxUtils.br(d),l+=26);c=new CustomDialog(this,d,mxUtils.bind(this,function(){this.lastExportBorder=x.value;this.lastExportZoom=n.value;g(n.value,B.checked,!r.checked,E.checked,z.checked,C.checked,x.value,v.checked,!V.checked,T.value)}),null,c,e);this.showDialog(c.container,340, +l,!0,!0);n.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?n.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(a,b,c,e,g){var d=document.createElement("div");d.style.whiteSpace="nowrap";var f=this.editor.graph;if(null!=b){var l=document.createElement("h3");mxUtils.write(l,b);l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(l)}var k=this.addCheckbox(d,mxResources.get("fit"), +!0),n=this.addCheckbox(d,mxResources.get("shadow"),f.shadowVisible&&e,!e),m=this.addCheckbox(d,c),q=this.addCheckbox(d,mxResources.get("lightbox"),!0),r=this.addEditButton(d,q),v=r.getEditInput(),z=1<f.model.getChildCount(f.model.getRoot()),N=this.addCheckbox(d,mxResources.get("layers"),z,!z);N.style.marginLeft=v.style.marginLeft;N.style.marginBottom="12px";N.style.marginTop="8px";mxEvent.addListener(q,"change",function(){q.checked?(z&&N.removeAttribute("disabled"),v.removeAttribute("disabled")): +(N.setAttribute("disabled","disabled"),v.setAttribute("disabled","disabled"));v.checked&&q.checked?r.getEditSelect().removeAttribute("disabled"):r.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,mxUtils.bind(this,function(){a(k.checked,n.checked,m.checked,q.checked,r.getLink(),N.checked)}),null,mxResources.get("embed"),g);this.showDialog(b.container,280,280,!0,!0)};EditorUi.prototype.createEmbedImage=function(a,b,c,e,g,k,m,q){function d(d){var b=" ",l="";e&&(b=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+ +EditorUi.drawHost+"/?client=1&lightbox=1"+(g?"&edit=_blank":"")+(k?"&layers=1":"")+"');}})(this);\"",l+="cursor:pointer;");a&&(l+="max-width:100%;");var p="";c&&(p=' width="'+Math.round(f.width)+'" height="'+Math.round(f.height)+'"');m('<img src="'+d+'"'+p+(""!=l?' style="'+l+'"':"")+b+"/>")}var f=this.editor.graph.getGraphBounds();if(this.isExportToCanvas())this.exportToCanvas(mxUtils.bind(this,function(a){var b=e?this.getFileData(!0):null;a=this.createImageDataUri(a,b,"png");d(a)}),null,null,null, +mxUtils.bind(this,function(a){q({message:mxResources.get("unknownError")})}),null,!0,c?2:1,null,b);else if(b=this.getFileData(!0),f.width*f.height<=MAX_AREA&&b.length<=MAX_REQUEST_SIZE){var l="";c&&(l="&w="+Math.round(2*f.width)+"&h="+Math.round(2*f.height));var p=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(e?"1":"0")+l+"&xml="+encodeURIComponent(b));p.send(mxUtils.bind(this,function(){200<=p.getStatus()&&299>=p.getStatus()?d("data:image/png;base64,"+p.getText()):q({message:mxResources.get("unknownError")})}))}else q({message:mxResources.get("drawingTooLarge")})}; +EditorUi.prototype.createEmbedSvg=function(a,b,c,e,g,k,m){var d=this.editor.graph.getSvg(),f=d.getElementsByTagName("a");if(null!=f)for(var l=0;l<f.length;l++){var p=f[l].getAttribute("href");null!=p&&"#"==p.charAt(0)&&"_blank"==f[l].getAttribute("target")&&f[l].removeAttribute("target")}e&&d.setAttribute("content",this.getFileData(!0));b&&this.editor.graph.addSvgShadow(d);if(c){var n=" ",q="";e&&(n="onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+ +EditorUi.drawHost+"/?client=1&lightbox=1"+(g?"&edit=_blank":"")+(k?"&layers=1":"")+"');}})(this);\"",q+="cursor:pointer;");a&&(q+="max-width:100%;");this.convertImages(d,mxUtils.bind(this,function(a){m('<img src="'+this.createSvgDataUri(mxUtils.getXml(a))+'"'+(""!=q?' style="'+q+'"':"")+n+"/>")}))}else q="",e&&(d.setAttribute("onclick","(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&&src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&&!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('"+ +EditorUi.drawHost+"/?client=1&lightbox=1"+(g?"&edit=_blank":"")+(k?"&layers=1":"")+"');}}})(this);"),q+="cursor:pointer;"),a&&(a=parseInt(d.getAttribute("width")),b=parseInt(d.getAttribute("height")),d.setAttribute("viewBox","-0.5 -0.5 "+a+" "+b),q+="max-width:100%;max-height:"+b+"px;",d.removeAttribute("height")),""!=q&&d.setAttribute("style",q),m(mxUtils.getXml(d))};EditorUi.prototype.timeSince=function(a){a=Math.floor((new Date-a)/1E3);var d=Math.floor(a/31536E3);if(1<d)return d+" "+mxResources.get("years"); +d=Math.floor(a/2592E3);if(1<d)return d+" "+mxResources.get("months");d=Math.floor(a/86400);if(1<d)return d+" "+mxResources.get("days");d=Math.floor(a/3600);if(1<d)return d+" "+mxResources.get("hours");d=Math.floor(a/60);return 1<d?d+" "+mxResources.get("minutes"):1==d?d+" "+mxResources.get("minute"):null};EditorUi.prototype.convertMath=function(a,b,c,e){a.mathEnabled&&"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?(Editor.MathJaxRender(b),window.setTimeout(mxUtils.bind(this,function(){MathJax.Hub.Queue(mxUtils.bind(this, +function(){e()}))}),0)):e()};EditorUi.prototype.decodeNodeIntoGraph=function(a,b){if(null!=a){var d=null;if("diagram"==a.nodeName)d=a;else if("mxfile"==a.nodeName){var c=a.getElementsByTagName("diagram");if(0<c.length){var d=c[0],e=b.getGlobalVariable;b.getGlobalVariable=function(a){return"page"==a?d.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==a?1:e.apply(this,arguments)}}}null!=d&&(c=b.decompress(mxUtils.getTextContent(d)),null!=c&&0<c.length&&(a=mxUtils.parseXml(c).documentElement))}c= +this.editor.graph;try{this.editor.graph=b,this.editor.setGraphXml(a)}catch(p){}finally{this.editor.graph=c}return a};EditorUi.prototype.getEmbeddedPng=function(a,b,c){var d=this.editor.graph,e=null;if(null!=c&&0<c.length)d=this.createTemporaryGraph(this.editor.graph.getStylesheet()),document.body.appendChild(d.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(c).documentElement,!0),d),e=c;else if(null!=this.pages&&this.currentPage!=this.pages[0]){var d=this.createTemporaryGraph(d.getStylesheet()), +f=d.getGlobalVariable,l=this.pages[0];d.getGlobalVariable=function(a){return"page"==a?l.getName():"pagenumber"==a?1:f.apply(this,arguments)};document.body.appendChild(d.container);d.model.setRoot(l.root)}this.exportToCanvas(mxUtils.bind(this,function(c){try{null==e&&(e=this.getFileData(!0));var f=c.toDataURL("image/png"),f=this.writeGraphModelToPng(f,"zTXt","mxGraphModel",atob(this.editor.graph.compress(e)));a(f.substring(f.lastIndexOf(",")+1));d!=this.editor.graph&&d.container.parentNode.removeChild(d.container)}catch(y){null!= +b&&b(y)}}),null,null,null,mxUtils.bind(this,function(a){null!=b&&b(a)}),null,null,null,null,d.shadowVisible,null,d)};EditorUi.prototype.getEmbeddedSvg=function(a,b,c,e,g,k,m){m=b.background;m==mxConstants.NONE&&(m=null);k=b.getSvg(m,null,null,null,null,k);b.shadowVisible&&b.addSvgShadow(k);null!=a&&k.setAttribute("content",a);null!=c&&k.setAttribute("resource",c);if(null!=g)this.convertImages(k,mxUtils.bind(this,function(a){g((e?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+ +mxUtils.getXml(a))}));else return(e?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(k)};EditorUi.prototype.exportImage=function(a,b,c,e,g,k,m,q,t){t=null!=t?t:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var d=this.editor.graph.isSelectionEmpty();c=null!=c?c:d;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.exportToCanvas(mxUtils.bind(this,function(a){this.spinner.stop(); +try{this.saveCanvas(a,g?this.getFileData(!0,null,null,null,c,q):null,t)}catch(A){"Invalid image"==A.message?this.downloadFile(t):this.handleError(A)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),null,c,a||1,b,e,null,null,k,m)}catch(u){this.spinner.stop(),this.handleError(u)}}};EditorUi.prototype.loadFonts=function(a){if(null!=this.editor.fontCss&&null==this.editor.resolvedFontCss){var d=function(a){return a.replace(RegExp("^[\\s\"']+","g"), +"").replace(RegExp("[\\s\"']+$","g"),"")},b=this.editor.fontCss.split("url("),c=0,e={},k=mxUtils.bind(this,function(){if(0==c){for(var f=[b[0]],g=1;g<b.length;g++){var l=b[g].indexOf(")");f.push('url("');f.push(e[d(b[g].substring(0,l))]);f.push('"'+b[g].substring(l))}this.editor.resolvedFontCss=f.join("");a()}});if(0<b.length)for(var m=1;m<b.length;m++){var q=b[m].indexOf(")"),t=null,r=b[m].indexOf("format(",q);0<r&&(t=d(b[m].substring(r+7,b[m].indexOf(")",r))));mxUtils.bind(this,function(a){if(null== +e[a]){e[a]=a;c++;var d="application/x-font-ttf";if("svg"==t||/(\.svg)($|\?)/i.test(a))d="image/svg+xml";else if("otf"==t||"embedded-opentype"==t||/(\.otf)($|\?)/i.test(a))d="application/x-font-opentype";else if("woff"==t||/(\.woff)($|\?)/i.test(a))d="application/font-woff";else if("woff2"==t||/(\.woff2)($|\?)/i.test(a))d="application/font-woff2";else if("eot"==t||/(\.eot)($|\?)/i.test(a))d="application/vnd.ms-fontobject";else if("sfnt"==t||/(\.sfnt)($|\?)/i.test(a))d="application/font-sfnt";var b= +a;/^https?:\/\//.test(b)&&!this.isCorsEnabledForUrl(b)&&(b=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(b,mxUtils.bind(this,function(d){e[a]=d;c--;k()}),mxUtils.bind(this,function(a){c--;k()}),!0,null,"data:"+d+";charset=utf-8;base64,")}})(d(b[m].substring(0,q)),t)}}else a()};EditorUi.prototype.exportToCanvas=function(a,b,c,e,g,k,m,q,t,r,u,A,D,v){k=null!=k?k:!0;A=null!=A?A:this.editor.graph;D=null!=D?D:0;var d=t?null:A.background;d==mxConstants.NONE&&(d=null);null==d&&(d=e);null==d&&0==t&& +(d=this.editor.graph.defaultPageBackgroundColor);this.convertImages(A.getSvg(d,null,null,v,null,null!=m?m:!0,null,null,null,r),mxUtils.bind(this,function(c){var e=new Image;e.onload=mxUtils.bind(this,function(){try{var f=document.createElement("canvas"),l=parseInt(c.getAttribute("width")),p=parseInt(c.getAttribute("height"));q=null!=q?q:1;null!=b&&(q=k?Math.min(1,Math.min(3*b/(4*p),b/l)):b/l);l=Math.ceil(q*l)+2*D;p=Math.ceil(q*p)+2*D;f.setAttribute("width",l);f.setAttribute("height",p);var n=f.getContext("2d"); +null!=d&&(n.beginPath(),n.rect(0,0,l,p),n.fillStyle=d,n.fill());n.scale(q,q);mxClient.IS_SF?window.setTimeout(function(){n.drawImage(e,D/q,D/q);a(f)},0):(n.drawImage(e,D/q,D/q),a(f))}catch(T){null!=g&&g(T)}});e.onerror=function(a){null!=g&&g(a)};try{r&&this.editor.graph.addSvgShadow(c);var f=mxUtils.bind(this,function(){if(null!=this.editor.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.editor.resolvedFontCss;c.getElementsByTagName("defs")[0].appendChild(a)}this.convertMath(A, +c,!0,mxUtils.bind(this,function(){e.src=this.createSvgDataUri(mxUtils.getXml(c))}))});this.loadFonts(f)}catch(C){null!=g&&g(C)}}),c,u)};EditorUi.prototype.createImageUrlConverter=function(){var a=new mxUrlConverter;a.updateBaseUrl();var b=a.convert,c=this;a.convert=function(d){if(null!=d){var e="http://"==d.substring(0,7)||"https://"==d.substring(0,8);e&&!navigator.onLine?d=c.svgBrokenImage.src:!e||d.substring(0,a.baseUrl.length)==a.baseUrl||c.crossOriginImages&&c.isCorsEnabledForUrl(d)?"chrome-extension://"!= +d.substring(0,19)&&(d=b.apply(this,arguments)):d=PROXY_URL+"?url="+encodeURIComponent(d)}return d};return a};EditorUi.prototype.convertImages=function(a,b,c,e){null==e&&(e=this.createImageUrlConverter());var d=0,f=c||{};c=mxUtils.bind(this,function(c,g){for(var l=a.getElementsByTagName(c),k=0;k<l.length;k++)mxUtils.bind(this,function(c){var l=e.convert(c.getAttribute(g));if(null!=l&&"data:"!=l.substring(0,5)){var k=f[l];null==k?(d++,this.convertImageToDataUri(l,function(e){null!=e&&(f[l]=e,c.setAttribute(g, +e));d--;0==d&&b(a)})):c.setAttribute(g,k)}else null!=l&&c.setAttribute(g,l)})(l[k])});c("image","xlink:href");c("img","src");0==d&&b(a)};EditorUi.prototype.loadUrl=function(a,b,c,e,g,k){try{var d=e||/(\.png)($|\?)/i.test(a)||/(\.jpe?g)($|\?)/i.test(a)||/(\.gif)($|\?)/i.test(a);g=null!=g?g:!0;var f=mxUtils.bind(this,function(){mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=b){var e=a.getText();if(d){if((9==document.documentMode||10==document.documentMode)&& +"undefined"!==typeof window.mxUtilsBinaryToArray){a=mxUtilsBinaryToArray(a.request.responseBody).toArray();for(var e=Array(a.length),f=0;f<a.length;f++)e[f]=String.fromCharCode(a[f]);e=e.join("")}k=null!=k?k:"data:image/png;base64,";e=k+this.base64Encode(e)}b(e)}}else null!=c&&c({code:App.ERROR_UNKNOWN},a)}),function(){null!=c&&c({code:App.ERROR_UNKNOWN})},d,this.timeout,function(){g&&null!=c&&c({code:App.ERROR_TIMEOUT,retry:f})})});f()}catch(t){null!=c&&c(t)}};EditorUi.prototype.isCorsEnabledForUrl= function(a){null!=urlParams.cors&&null==this.corsRegExp&&(this.corsRegExp=new RegExp(decodeURIComponent(urlParams.cors)));return null!=this.corsRegExp&&this.corsRegExp.test(a)||"https://raw.githubusercontent.com/"===a.substring(0,34)||"https://cdn.rawgit.com/"===a.substring(0,23)||"https://rawgit.com/"===a.substring(0,19)||/^https?:\/\/[^\/]*\.iconfinder.com\//.test(a)||/^https?:\/\/[^\/]*\.draw\.io\/proxy/.test(a)||/^https?:\/\/[^\/]*\.github\.io\//.test(a)};EditorUi.prototype.convertImageToDataUri= -function(a,b){if(/(\.svg)$/i.test(a))mxUtils.get(a,mxUtils.bind(this,function(a){b(this.createSvgDataUri(a.getText()))}),function(){b(this.svgBrokenImage.src)});else{var c=new Image,d=this;this.crossOriginImages&&(c.crossOrigin="anonymous");c.onload=function(){var a=document.createElement("canvas"),f=a.getContext("2d");a.height=c.height;a.width=c.width;f.drawImage(c,0,0);try{b(a.toDataURL())}catch(r){b(d.svgBrokenImage.src)}};c.onerror=function(){b(d.svgBrokenImage.src)};c.src=a}};EditorUi.prototype.importXml= -function(a,b,d,f,k){b=null!=b?b:0;d=null!=d?d:0;var c=[];try{var g=this.editor.graph;if(null!=a&&0<a.length){var h=mxUtils.parseXml(a),l=this.editor.extractGraphModel(h.documentElement,null!=this.pages);if(null!=l&&"mxfile"==l.nodeName&&null!=this.pages){var n=l.getElementsByTagName("diagram");if(1==n.length)l=mxUtils.parseXml(g.decompress(mxUtils.getTextContent(n[0]))).documentElement;else if(1<n.length){g.model.beginUpdate();try{for(a=0;a<n.length;a++){n[a].removeAttribute("id");var t=this.updatePageRoot(new DiagramPage(n[a])), -p=this.pages.length;null==t.getName()&&t.setName(mxResources.get("pageWithNumber",[p+1]));g.model.execute(new ChangePage(this,t,t,p))}}finally{g.model.endUpdate()}}}null!=l&&"mxGraphModel"===l.nodeName&&(c=g.importGraphModel(l,b,d,f))}}catch(A){if(k)throw A;this.handleError(A)}return c};EditorUi.prototype.isRemoteVisioFormat=function(a){return/(\.v(sd|dx))($|\?)/i.test(a)||/(\.vs(s|x))($|\?)/i.test(a)};EditorUi.prototype.importVisio=function(a,b,d,f){f=null!=f?f:a.name;d=null!=d?d:mxUtils.bind(this, -function(a){this.handleError(a)});var c=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio)if(this.isRemoteVisioFormat(f)&&null!=VSD_CONVERT_URL){var c=new FormData;c.append("file1",a,f);var g=new XMLHttpRequest;g.open("POST",VSD_CONVERT_URL);g.responseType="blob";g.onreadystatechange=mxUtils.bind(this,function(){if(4==g.readyState)if(200<=g.status&&299>=g.status)try{g.response.name=f,this.doImportVisio(g.response,b,d)}catch(x){d(x)}else d({})});g.send(c)}else try{this.doImportVisio(a, -b,d)}catch(x){d(x)}});this.doImportVisio||this.loadingExtensions||this.isOffline()?c():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",c))};EditorUi.prototype.importGraphML=function(a,b,d){d=null!=d?d:mxUtils.bind(this,function(a){this.handleError(a)});var c=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(a,b,d)}catch(t){d(t)}});this.doImportGraphML||this.loadingExtensions||this.isOffline()?c():(this.loadingExtensions=!0,mxscript("js/extensions.min.js", -c))};EditorUi.prototype.exportVisio=function(){var a=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof VsdxExport)try{(new VsdxExport(this)).exportCurrentDiagrams()||this.handleError({message:mxResources.get("unknownError")})}catch(g){this.handleError(g)}});"undefined"!==typeof VsdxExport||this.loadingExtensions||this.isOffline()?a():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",a))};EditorUi.prototype.convertLucidChart=function(a,b,d){var c=mxUtils.bind(this, -function(){this.loadingExtensions=!1;if("undefined"!==typeof window.LucidImporter)try{b(LucidImporter.importState(JSON.parse(a)))}catch(t){d(t)}else d({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof window.LucidImporter||this.loadingExtensions||this.isOffline()?window.setTimeout(c,0):(this.loadingExtensions=!0,"1"==urlParams.dev?mxscript("js/diagramly/Extensions.js",c):mxscript("js/extensions.min.js",c))};EditorUi.prototype.insertAsPreText=function(a,b,d){var c=this.editor.graph, -f=null;c.getModel().beginUpdate();try{f=c.insertVertex(null,null,"<pre>"+a+"</pre>",b,d,1,1,"text;html=1;align=center;verticalAlign=middle;"),c.updateCellSize(f,!0)}finally{c.getModel().endUpdate()}return f};EditorUi.prototype.insertTextAt=function(a,b,d,f,k,m,r){m=null!=m?m:!0;r=null!=r?r:!0;if(null!=a)if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a))this.parseFile(new Blob([a.replace(/\s+/g," ")],{type:"application/octet-stream"}),mxUtils.bind(this, -function(a){4==a.readyState&&200<=a.status&&299>=a.status&&this.editor.graph.setSelectionCells(this.insertTextAt(a.responseText,b,d,!0))}));else if("data:"==a.substring(0,5)||!this.isOffline()&&(k||/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(a))){var c=this.editor.graph;if("data:image/png;base64,"==a.substring(0,22)){var g=this.extractGraphModelFromPng(a),h=this.importXml(g,b,d,m,!0);if(0<h.length)return h}if("data:image/svg+xml;"==a.substring(0,19))try{if(g=null,"data:image/svg+xml;base64,"==a.substring(0, -26)?(g=a.substring(a.indexOf(",")+1),g=window.atob&&!mxClient.IS_SF?atob(g):Base64.decode(g,!0)):g=decodeURIComponent(a.substring(a.indexOf(",")+1)),h=this.importXml(g,b,d,m,!0),0<h.length)return h}catch(y){}this.loadImage(a,mxUtils.bind(this,function(f){if("data:"==a.substring(0,5))this.resizeImage(f,a,mxUtils.bind(this,function(a,f,g){c.setSelectionCell(c.insertVertex(null,null,"",c.snap(b),c.snap(d),f,g,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+ -this.convertDataUri(a)+";"))}),r,this.maxImageSize);else{var g=Math.min(1,Math.min(this.maxImageSize/f.width,this.maxImageSize/f.height)),h=Math.round(f.width*g);f=Math.round(f.height*g);c.setSelectionCell(c.insertVertex(null,null,"",c.snap(b),c.snap(d),h,f,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+a+";"))}}),mxUtils.bind(this,function(){var g=null;c.getModel().beginUpdate();try{g=c.insertVertex(c.getDefaultParent(), -null,a,c.snap(b),c.snap(d),1,1,"text;"+(f?"html=1;":"")),c.updateCellSize(g),c.fireEvent(new mxEventObject("textInserted","cells",[g]))}finally{c.getModel().endUpdate()}c.setSelectionCell(g)}))}else{a=this.editor.graph.zapGremlins(mxUtils.trim(a));if(this.isCompatibleString(a))return this.importXml(a,b,d,m);if(0<a.length)if(this.isLucidChartData(a))this.convertLucidChart(a,mxUtils.bind(this,function(a){this.editor.graph.setSelectionCells(this.importXml(a,b,d,m))}),mxUtils.bind(this,function(a){this.handleError(a)})); -else{c=this.editor.graph;k=null;c.getModel().beginUpdate();try{k=c.insertVertex(c.getDefaultParent(),null,"",c.snap(b),c.snap(d),1,1,"text;"+(f?"html=1;":"")),c.fireEvent(new mxEventObject("textInserted","cells",[k])),"<"==a.charAt(0)&&a.indexOf(">")==a.length-1&&(a=mxUtils.htmlEntities(a)),k.value=a,c.updateCellSize(k),/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/i.test(k.value)&& -c.setLinkForCell(k,k.value),k.geometry.width+=c.gridSize,k.geometry.height+=c.gridSize}finally{c.getModel().endUpdate()}return[k]}}return[]};EditorUi.prototype.formatFileSize=function(a){var c=-1;do a/=1024,c++;while(1024<a);return Math.max(a,.1).toFixed(1)+" kB; MB; GB; TB;PB;EB;ZB;YB".split(";")[c]};EditorUi.prototype.convertDataUri=function(a){if("data:"==a.substring(0,5)){var c=a.indexOf(";");0<c&&(a=a.substring(0,c)+a.substring(a.indexOf(",",c+1)))}return a};EditorUi.prototype.isRemoteFileFormat= -function(a,b){return/(\"contentType\":\s*\"application\/gliffy\+json\")/.test(a)};EditorUi.prototype.isLucidChartData=function(a){return null!=a&&'{"state":"{\\"Properties\\":'==a.substring(0,26)};EditorUi.prototype.importLocalFile=function(a,b){if(a&&Graph.fileSupport&&(!mxClient.IS_IE&&!mxClient.IS_IE11||0>navigator.appVersion.indexOf("Windows NT 6.1"))){var c=document.createElement("input");c.setAttribute("type","file");mxEvent.addListener(c,"change",mxUtils.bind(this,function(){null!=c.files&& -this.importFiles(c.files,null,null,this.maxImageSize)}));c.click()}else{window.openNew=!1;window.openKey="import";if(!b){var d=Editor.useLocalStorage;Editor.useLocalStorage=!a}window.openFile=new OpenFile(mxUtils.bind(this,function(a){this.hideDialog(a)}));window.openFile.setConsumer(mxUtils.bind(this,function(a,c){if(null!=c&&Graph.fileSupport&&/(\.v(dx|sdx?))($|\?)/i.test(c)){var b=new Blob([a],{type:"application/octet-stream"});this.importVisio(b,mxUtils.bind(this,function(a){this.importXml(a)}), -null,c)}else this.editor.graph.setSelectionCells(this.importXml(a))}));this.showDialog((new OpenDialog(this)).container,360,220,!0,!0,function(){window.openFile=null});if(!b){var f=this.dialog,g=f.close;this.dialog.close=mxUtils.bind(this,function(a){Editor.useLocalStorage=d;g.apply(f,arguments);a&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};EditorUi.prototype.importFile=function(a,b,d,f,k,m,r,n,p,q,w){q=null!=q?q:!0;var c=!1,g=null,h=mxUtils.bind(this,function(a){var c= -null;null!=a&&"<mxlibrary"==a.substring(0,10)?this.loadLibrary(new LocalLibrary(this,a,r)):c=this.importXml(a,d,f,q);null!=n&&n(c)});"image"==b.substring(0,5)?(p=!1,"image/png"==b.substring(0,9)&&(b=w?null:this.extractGraphModelFromPng(a),null!=b&&0<b.length&&(g=this.importXml(b,d,f,q),p=!0)),p||(g=this.editor.graph,b=a.indexOf(";"),0<b&&(a=a.substring(0,b)+a.substring(a.indexOf(",",b+1))),q&&g.isGridEnabled()&&(d=g.snap(d),f=g.snap(f)),g=[g.insertVertex(null,null,"",d,f,k,m,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+ -a+";")])):/(\.*<graphml )/.test(a)?(c=!0,this.importGraphML(a,h)):null!=p&&null!=r&&(/(\.v(dx|sdx?))($|\?)/i.test(r)||/(\.vs(x|sx?))($|\?)/i.test(r))?(c=!0,this.importVisio(p,h)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a,r)?(c=!0,this.parseFile(null!=p?p:new Blob([a],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?h(a.responseText):null!=n&&n(null))}),r)):/(\.v(sd|dx))($|\?)/i.test(r)||/(\.vs(s|x))($|\?)/i.test(r)|| -(g=this.insertTextAt(this.validateFileData(a),d,f,!0,null,q));c||null==n||n(g);return g};EditorUi.prototype.base64Encode=function(a){for(var c="",b=0,d=a.length,f,k,r;b<d;){f=a.charCodeAt(b++)&255;if(b==d){c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>2);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&3)<<4);c+="==";break}k=a.charCodeAt(b++);if(b==d){c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>2); -c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&3)<<4|(k&240)>>4);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k&15)<<2);c+="=";break}r=a.charCodeAt(b++);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>2);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&3)<<4|(k&240)>>4);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k&15)<<2|(r&192)>>6);c+= -"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(r&63)}return c};EditorUi.prototype.importFiles=function(a,b,d,f,k,m,r,n,p,q,w,u){b=null!=b?b:0;d=null!=d?d:0;f=null!=f?f:this.maxImageSize;q=null!=q?q:this.maxImageBytes;var c=null!=b&&null!=d,g=!0,h=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var l=w||this.resampleThreshold,t=0;t<a.length;t++)if("image/"==a[t].type.substring(0,6)&&a[t].size>l){h=!0;break}var v=mxUtils.bind(this,function(){var h=this.editor.graph,l=h.gridSize; -k=null!=k?k:mxUtils.bind(this,function(a,b,d,f,g,h,l,k,m){return null!=a&&"<mxlibrary"==a.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,a,l)),null):this.importFile(a,b,d,f,g,h,l,k,m,c,u)});m=null!=m?m:mxUtils.bind(this,function(a){h.setSelectionCells(a)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var t=a.length,p=t,v=[],x=mxUtils.bind(this,function(a,b){v[a]=b;if(0==--p){this.spinner.stop();if(null!=n)n(v);else{var c=[];h.getModel().beginUpdate(); -try{for(var d=0;d<v.length;d++){var f=v[d]();null!=f&&(c=c.concat(f))}}finally{h.getModel().endUpdate()}}m(c)}}),A=0;A<t;A++)mxUtils.bind(this,function(c){var m=a[c],n=new FileReader;n.onload=mxUtils.bind(this,function(a){if(null==r||r(m))if("image/"==m.type.substring(0,6))if("image/svg"==m.type.substring(0,9)){var n=a.target.result,t=n.indexOf(","),p=decodeURIComponent(escape(atob(n.substring(t+1)))),v=mxUtils.parseXml(p),p=v.getElementsByTagName("svg");if(0<p.length){var p=p[0],z=u?null:p.getAttribute("content"); -null!=z&&"<"!=z.charAt(0)&&"%"!=z.charAt(0)&&(z=unescape(window.atob?atob(z):Base64.decode(z,!0)));null!=z&&"%"==z.charAt(0)&&(z=decodeURIComponent(z));null==z||"<mxfile "!==z.substring(0,8)&&"<mxGraphModel "!==z.substring(0,14)?x(c,mxUtils.bind(this,function(){try{if(n.substring(0,t+1),null!=v){var a=v.getElementsByTagName("svg");if(0<a.length){var g=a[0],r=parseFloat(g.getAttribute("width")),p=parseFloat(g.getAttribute("height")),q=g.getAttribute("viewBox");if(null==q||0==q.length)g.setAttribute("viewBox", -"0 0 "+r+" "+p);else if(isNaN(r)||isNaN(p)){var u=q.split(" ");3<u.length&&(r=parseFloat(u[2]),p=parseFloat(u[3]))}n=this.createSvgDataUri(mxUtils.getXml(g));var z=Math.min(1,Math.min(f/Math.max(1,r)),f/Math.max(1,p)),x=k(n,m.type,b+c*l,d+c*l,Math.max(1,Math.round(r*z)),Math.max(1,Math.round(p*z)),m.name);if(isNaN(r)||isNaN(p)){var A=new Image;A.onload=mxUtils.bind(this,function(){r=Math.max(1,A.width);p=Math.max(1,A.height);x[0].geometry.width=r;x[0].geometry.height=p;g.setAttribute("viewBox","0 0 "+ -r+" "+p);n=this.createSvgDataUri(mxUtils.getXml(g));var a=n.indexOf(";");0<a&&(n=n.substring(0,a)+n.substring(n.indexOf(",",a+1)));h.setCellStyles("image",n,[x[0]])});A.src=this.createSvgDataUri(mxUtils.getXml(g))}return x}}}catch(sa){}return null})):x(c,mxUtils.bind(this,function(){return k(z,"text/xml",b+c*l,d+c*l,0,0,m.name)}))}else x(c,mxUtils.bind(this,function(){return null}))}else{p=!1;if("image/png"==m.type){var A=u?null:this.extractGraphModelFromPng(a.target.result);if(null!=A&&0<A.length){var K= -new Image;K.src=a.target.result;x(c,mxUtils.bind(this,function(){return k(A,"text/xml",b+c*l,d+c*l,K.width,K.height,m.name)}));p=!0}}p||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"),mxResources.get("cancel"),mxUtils.bind(this,function(){}),null,mxResources.get("ok"),mxUtils.bind(this,function(){this.actions.get("import").funct()}))):this.loadImage(a.target.result,mxUtils.bind(this,function(h){this.resizeImage(h,a.target.result, -mxUtils.bind(this,function(h,r,n){x(c,mxUtils.bind(this,function(){if(null!=h&&h.length<q){var p=g&&this.isResampleImage(a.target.result,w)?Math.min(1,Math.min(f/r,f/n)):1;return k(h,m.type,b+c*l,d+c*l,Math.round(r*p),Math.round(n*p),m.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),g,f,w)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else k(a.target.result,m.type,b+c*l,d+c*l,240,160,m.name,function(a){x(c, -function(){return a})})});/(\.v(dx|sdx?))($|\?)/i.test(m.name)||/(\.vs(x|sx?))($|\?)/i.test(m.name)?k(null,m.type,b+c*l,d+c*l,240,160,m.name,function(a){x(c,function(){return a})},m):"image"==m.type.substring(0,5)?n.readAsDataURL(m):n.readAsText(m)})(A)});h?this.confirmImageResize(function(a){g=a;v()},p):v()};EditorUi.prototype.confirmImageResize=function(a,b){b=null!=b?b:!1;var c=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},d=isLocalStorage||mxClient.IS_CHROMEAPP? -mxSettings.getResizeImages():null,f=function(d,f){if(d||b)mxSettings.setResizeImages(d?f:null),mxSettings.save();c();a(f)};null==d||b?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(a){f(a,!0)},function(a){f(a,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage|| -mxClient.IS_CHROMEAPP?220:200,!0,!0):f(!1,d)};EditorUi.prototype.parseFile=function(a,b,d){d=null!=d?d:a.name;var c=new FormData;c.append("format","xml");c.append("upfile",a,d);var f=new XMLHttpRequest;f.open("POST",OPEN_URL);f.onreadystatechange=function(){b(f)};f.send(c)};EditorUi.prototype.isResampleImage=function(a,b){b=null!=b?b:this.resampleThreshold;return a.length>b};EditorUi.prototype.resizeImage=function(a,b,d,f,k,m){k=null!=k?k:this.maxImageSize;var c=Math.max(1,a.width),g=Math.max(1,a.height); -if(f&&this.isResampleImage(b,m))try{var h=Math.max(c/k,g/k);if(1<h){var l=Math.round(c/h),n=Math.round(g/h),p=document.createElement("canvas");p.width=l;p.height=n;p.getContext("2d").drawImage(a,0,0,l,n);var t=p.toDataURL();if(t.length<b.length){var q=document.createElement("canvas");q.width=l;q.height=n;var w=q.toDataURL();t!==w&&(b=t,c=l,g=n)}}}catch(G){}d(b,c,g)};EditorUi.prototype.crcTable=[];for(var f=0;256>f;f++)for(var d=f,k=0;8>k;k++)d=1==(d&1)?3988292384^d>>>1:d>>>1,EditorUi.prototype.crcTable[f]= -d;EditorUi.prototype.updateCRC=function(a,b,d,f){for(var c=0;c<f;c++)a=EditorUi.prototype.crcTable[(a^b[d+c])&255]^a>>>8;return a};EditorUi.prototype.crc32=function(a){this.crcTable=this.crcTable||this.createCrcTable();for(var b=-1,c=0;c<a.length;c++)b=b>>>8^this.crcTable[(b^a.charCodeAt(c))&255];return(b^-1)>>>0};EditorUi.prototype.writeGraphModelToPng=function(a,b,d,f,k){function c(a,b){var c=l;l+=b;return a.substring(c,l)}function g(a){a=c(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<< -16)+(a.charCodeAt(0)<<24)}function h(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,!0);var l=0;if(c(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=k&&k();else if(c(a,4),"IHDR"!=c(a,4))null!=k&&k();else{c(a,17);k=a.substring(0,l);do{var n=g(a);if("IDAT"==c(a,4)){k=a.substring(0,l-8);d=d+String.fromCharCode(0)+("zTXt"==b?String.fromCharCode(0):"")+f;f=4294967295;f=this.updateCRC(f, -b,0,4);f=this.updateCRC(f,d,0,d.length);k+=h(d.length)+b+d+h(f^4294967295);k+=a.substring(l-8,a.length);break}k+=a.substring(l-8,l-4+n);c(a,n);c(a,4)}while(n);return"data:image/png;base64,"+(window.btoa?btoa(k):Base64.encode(k,!0))}};EditorUi.prototype.extractGraphModelFromPng=function(a){var b=null;try{var c=a.substring(a.indexOf(",")+1),d=window.atob&&!mxClient.IS_SF?atob(c):Base64.decode(c,!0);EditorUi.parsePng(d,mxUtils.bind(this,function(a,c,f){a=d.substring(a+8,a+8+f);"zTXt"==c?(f=a.indexOf(String.fromCharCode(0)), -"mxGraphModel"==a.substring(0,f)&&(a=this.editor.graph.bytesToString(pako.inflateRaw(a.substring(f+2))).replace(/\+/g," "),null!=a&&0<a.length&&(b=a))):"tEXt"==c&&(a=a.split(String.fromCharCode(0)),1<a.length&&"mxGraphModel"==a[0]&&(b=a[1]));if(null!=b||"IDAT"==c)return!0}))}catch(t){}null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));return b};EditorUi.prototype.loadImage=function(a,b,d){var c=new Image;c.onload=function(){b(c)};null!=d&&(c.onerror= -d);c.src=a};var n=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=mxStencilRegistry.allowEval&&!this.isOfflineApp();"undefined"!==typeof window.mxSettings&&(this.formatWidth=mxSettings.getFormatWidth());var a=this,b=this.editor.graph;b.getLinkTitle=function(b){return a.getLinkTitle(b)};b.customLinkClicked=function(b){var c=!1;try{a.handleCustomLink(b),c=!0}catch(z){a.handleError(z)}return c};var d=this.clearDefaultStyle;this.clearDefaultStyle=function(){d.apply(this, -arguments)};this.isOffline()||"undefined"===typeof window.EditDataDialog||(EditDataDialog.placeholderHelpLink="https://desk.draw.io/support/solutions/articles/16000051979");var f=a.editor.getEditBlankUrl;this.editor.getEditBlankUrl=function(b){b=null!=b?b:"";if(null!=a.pages&&null!=a.currentPage)for(var c=0;c<a.pages.length;c++)if(a.pages[c]==a.currentPage){0<c&&(b+=(0<b.length?"&":"?")+"page="+c);break}"1"==urlParams.dev&&(b+=(0<b.length?"&":"?")+"dev=1&drawdev=1");return f.apply(this,arguments)}; -var k=b.addClickHandler;b.addClickHandler=function(a,c,d){var f=c;c=function(a,c){if(null==c){var d=mxEvent.getSource(a);"a"==d.nodeName.toLowerCase()&&(c=d.getAttribute("href"))}null!=c&&b.isCustomLink(c)&&(mxEvent.isTouchEvent(a)||!mxEvent.isPopupTrigger(a))&&b.customLinkClicked(c)&&mxEvent.consume(a);null!=f&&f(a,c)};k.call(this,a,c,d)};n.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(b.view.canvas.ownerSVGElement,null,!0);a.actions.get("print").funct=function(){a.showDialog((new PrintDialog(a)).container, -360,null!=a.pages&&1<a.pages.length?420:360,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var m=b.getGlobalVariable;b.getGlobalVariable=function(b){return"page"==b&&null!=a.currentPage?a.currentPage.getName():"pagenumber"==b?null!=a.currentPage&&null!=a.pages?mxUtils.indexOf(a.pages,a.currentPage)+1:1:m.apply(this,arguments)};var r=b.labelLinkClicked;b.labelLinkClicked=function(a,c,d){var f=c.getAttribute("href");if(null==f||!b.isCustomLink(f)||!mxEvent.isTouchEvent(d)&&mxEvent.isPopupTrigger(d))r.apply(this, -arguments);else{if(!b.isEnabled()||null!=a&&b.isCellLocked(a.cell))b.customLinkClicked(f),b.getRubberband().reset();mxEvent.consume(d)}};this.editor.getOrCreateFilename=function(){var b=a.defaultFilename,c=a.getCurrentFile();null!=c&&(b=null!=c.getTitle()?c.getTitle():b);return b};var p=this.actions.get("print");p.setEnabled(!mxClient.IS_IOS||!navigator.standalone);p.visible=p.isEnabled();if(!this.editor.chromeless||this.editor.editable){var q=function(){window.setTimeout(function(){w.innerHTML=" "; -w.focus();document.execCommand("selectAll",!1,null)},0)};this.keyHandler.bindAction(70,!0,"find");this.keyHandler.bindAction(67,!0,"copyStyle",!0);this.keyHandler.bindAction(86,!0,"pasteStyle",!0);this.keyHandler.bindAction(77,!0,"editGeometry",!0);this.keyHandler.bindAction(88,!0,"insertText",!0);this.keyHandler.bindAction(75,!0,"insertRectangle");this.keyHandler.bindAction(75,!0,"insertEllipse",!0);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(this.altShiftActions[83]="synchronize");mxClient.IS_IE|| -b.container.addEventListener("paste",mxUtils.bind(this,function(a){var b=this.editor.graph;if(!mxEvent.isConsumed(a))try{for(var c=a.clipboardData||a.originalEvent.clipboardData,d=!1,f=0;f<c.types.length;f++)if("text/"===c.types[f].substring(0,5)){d=!0;break}if(!d){var g=c.items;for(index in g){var h=g[index];if("file"===h.kind){if(b.isEditing())this.importFiles([h.getAsFile()],0,0,this.maxImageSize,function(a,c,d,f,g,h){b.insertImage(a,g,h)},function(){},function(a){return"image/"==a.type.substring(0, -6)},function(a){for(var b=0;b<a.length;b++)a[b]()});else{var k=this.editor.graph.getInsertPoint();this.importFiles([h.getAsFile()],k.x,k.y,this.maxImageSize);mxEvent.consume(a)}break}}}}catch(V){}}),!1);var w=document.createElement("div");w.style.position="absolute";w.style.whiteSpace="nowrap";w.style.overflow="hidden";w.style.display="block";w.contentEditable=!0;mxUtils.setOpacity(w,0);w.style.width="1px";w.style.height="1px";w.innerHTML=" ";var y=!1;this.keyHandler.bindControlKey(88,null); -this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(a){var c=mxEvent.getSource(a);null==b.container||!b.isEnabled()||b.isMouseDown||b.isEditing()||null!=this.dialog||"INPUT"==c.nodeName||"TEXTAREA"==c.nodeName||!(224==a.keyCode||!mxClient.IS_MAC&&17==a.keyCode||mxClient.IS_MAC&&91==a.keyCode)||y||(w.style.left=b.container.scrollLeft+10+"px",w.style.top=b.container.scrollTop+10+"px",b.container.appendChild(w), -y=!0,mxClient.IS_QUIRKS?window.setTimeout(function(){w.focus();document.execCommand("selectAll",!1,null)},0):(w.focus(),document.execCommand("selectAll",!1,null)))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(a){var c=a.keyCode;window.setTimeout(mxUtils.bind(this,function(){!y||224!=c&&17!=c&&91!=c||(y=!1,b.isEditing()||null!=this.dialog||null==b.container||b.container.focus(),w.parentNode.removeChild(w),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(w, -"copy",mxUtils.bind(this,function(a){b.isEnabled()&&(mxClipboard.copy(b),this.copyCells(w),q())}));mxEvent.addListener(w,"cut",mxUtils.bind(this,function(a){b.isEnabled()&&(mxClipboard.copy(b),this.copyCells(w,!0),q())}));mxEvent.addListener(w,"paste",mxUtils.bind(this,function(a){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&(w.innerHTML=" ",w.focus(),window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(a,w);w.innerHTML=" "}),0))}),!0);var u=this.isSelectionAllowed;this.isSelectionAllowed= -function(a){return mxEvent.getSource(a)==w?!0:u.apply(this,arguments)}}this.spinner=this.createSpinner(document.body.clientWidth/2-2,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,24);Graph.fileSupport&&this.editor.graph.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,function(a){var b=this.editor.graph,c=b.cellEditor.text2,d=null;null!=c&&(mxEvent.addListener(c,"dragleave",function(a){null!=d&&(d.parentNode.removeChild(d),d=null);a.stopPropagation();a.preventDefault()}), -mxEvent.addListener(c,"dragover",mxUtils.bind(this,function(a){null==d&&(!mxClient.IS_IE||10<document.documentMode)&&(d=this.highlightElement(c));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(c,"drop",mxUtils.bind(this,function(a){null!=d&&(d.parentNode.removeChild(d),d=null);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,function(a,c,d,f,g,h){b.insertImage(a,g,h)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b= -0;b<a.length;b++)a[b]()},mxEvent.isControlDown(a));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")){var c=a.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(c)?this.loadImage(decodeURIComponent(c),mxUtils.bind(this,function(a){var d=Math.max(1,a.width);a=Math.max(1,a.height);var f=this.maxImageSize,f=Math.min(1,Math.min(f/Math.max(1,d)),f/Math.max(1,a));b.insertImage(decodeURIComponent(c),d*f,a*f)})):document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/plain"))}else 0<= -mxUtils.indexOf(a.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/plain"));a.stopPropagation();a.preventDefault()})))}));if("1"==urlParams.ruler&&"undefined"!==typeof mxRuler){p=document.createElement("div");p.style.position="absolute";p.style.top="95px";p.style.left="250px";p.style.width="2000px";p.style.height="30px";p.style.background= -"whiteSmoke";document.body.appendChild(p);var A=document.createElement("div");A.style.position="absolute";A.style.top="125px";A.style.left="220px";A.style.width="30px";A.style.height="1000px";A.style.background="whiteSmoke";document.body.appendChild(A);var F=document.createElement("div");F.style.position="absolute";F.style.top="95px";F.style.left="220px";F.style.width="30px";F.style.height="30px";F.style.background="whiteSmoke";document.body.appendChild(F);this.vRuler=new mxRuler(this.editor.graph, -A,!0);this.hRuler=new mxRuler(this.editor.graph,p,!1)}if("1"==urlParams.styledev){p=document.getElementById("geFooter");null!=p&&(this.styleInput=document.createElement("input"),this.styleInput.setAttribute("type","text"),this.styleInput.style.position="absolute",this.styleInput.style.top="14px",this.styleInput.style.left="2px",this.styleInput.style.width="98%",this.styleInput.style.visibility="hidden",this.styleInput.style.opacity="0.9",mxEvent.addListener(this.styleInput,"change",mxUtils.bind(this, -function(){this.editor.graph.getModel().setStyle(this.editor.graph.getSelectionCell(),this.styleInput.value)})),p.appendChild(this.styleInput),this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(a,b){if(0<this.editor.graph.getSelectionCount()){var c=this.editor.graph.getSelectionCell(),c=this.editor.graph.getModel().getStyle(c);this.styleInput.value=c||"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var Q=this.isSelectionAllowed; -this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==this.styleInput?!0:Q.apply(this,arguments)}}p=document.getElementById("geInfo");null!=p&&p.parentNode.removeChild(p);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var G=null;mxEvent.addListener(b.container,"dragleave",function(a){b.isEnabled()&&(null!=G&&(G.parentNode.removeChild(G),G=null),a.stopPropagation(),a.preventDefault())});mxEvent.addListener(b.container,"dragover",mxUtils.bind(this,function(a){null== -G&&(!mxClient.IS_IE||10<document.documentMode)&&(G=this.highlightElement(b.container));null!=this.sidebar&&this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()}));mxEvent.addListener(b.container,"drop",mxUtils.bind(this,function(a){null!=G&&(G.parentNode.removeChild(G),G=null);if(b.isEnabled()){var c=mxUtils.convertPoint(b.container,mxEvent.getClientX(a),mxEvent.getClientY(a)),d=b.view.translate,f=b.view.scale,g=c.x/f-d.x,h=c.y/f-d.y;mxEvent.isAltDown(a)&&(h=g=0);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files, -g,h,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(a),null,null,mxEvent.isShiftDown(a));else{var k=0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):null,c=this.extractGraphModelFromEvent(a,null!=this.pages);if(null!=c)b.setSelectionCells(this.importXml(c,g,h,!0));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/html")){var l=a.dataTransfer.getData("text/html"),c=document.createElement("div");c.innerHTML=l;var m=null,d=c.getElementsByTagName("img"); -null!=d&&1==d.length?(l=d[0].getAttribute("src"),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(l)||(m=!0)):(c=c.getElementsByTagName("a"),null!=c&&1==c.length&&(l=c[0].getAttribute("href")));var r=!0,n=mxUtils.bind(this,function(){b.setSelectionCells(this.insertTextAt(l,g,h,!0,m,null,r))});m&&l.length>this.resampleThreshold?this.confirmImageResize(function(a){r=a;n()},mxEvent.isControlDown(a)):n()}else null!=k&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(k)?this.loadImage(decodeURIComponent(k),mxUtils.bind(this, -function(a){var c=Math.max(1,a.width);a=Math.max(1,a.height);var d=this.maxImageSize,d=Math.min(1,Math.min(d/Math.max(1,c)),d/Math.max(1,a));b.setSelectionCell(b.insertVertex(null,null,"",g,h,c*d,a*d,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+k+";"))}),mxUtils.bind(this,function(a){b.setSelectionCells(this.insertTextAt(k,g,h,!0))})):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&b.setSelectionCells(this.insertTextAt(a.dataTransfer.getData("text/plain"), -g,h,!0))}}a.stopPropagation();a.preventDefault()}),!1)}this.initPages();this.editUpdateListener=mxUtils.bind(this,function(a,b){var c=b.getProperty("edit");null!=c&&this.updateEditReferences(c)});this.editor.undoManager.addListener(mxEvent.BEFORE_UNDO,this.editUpdateListener);this.editor.undoManager.addListener(mxEvent.BEFORE_REDO,this.editUpdateListener);"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.getLinkTitle=function(a){var b=Graph.prototype.getLinkTitle.apply(this, -arguments);if("data:page/id,"==a.substring(0,13)){var c=a.indexOf(",");0<c&&(b=this.getPageById(a.substring(c+1)),b=null!=b?b.getName():mxResources.get("pageNotFound"))}else"data:"==a.substring(0,5)&&(b=mxResources.get("action"));return b};EditorUi.prototype.handleCustomLink=function(a){if("data:page/id,"==a.substring(0,13)){var b=a.indexOf(",");if(a=this.getPageById(a.substring(b+1)))this.selectPage(a);else throw Error(mxResources.get("pageNotFound")||"Page not found");}else this.editor.graph.handleCustomLink(a)}; +function(a,b){if(/(\.svg)$/i.test(a))mxUtils.get(a,mxUtils.bind(this,function(a){b(this.createSvgDataUri(a.getText()))}),function(){b(this.svgBrokenImage.src)});else{var d=new Image,c=this;this.crossOriginImages&&(d.crossOrigin="anonymous");d.onload=function(){var a=document.createElement("canvas"),e=a.getContext("2d");a.height=d.height;a.width=d.width;e.drawImage(d,0,0);try{b(a.toDataURL())}catch(B){b(c.svgBrokenImage.src)}};d.onerror=function(){b(c.svgBrokenImage.src)};d.src=a}};EditorUi.prototype.importXml= +function(a,b,c,e,g){b=null!=b?b:0;c=null!=c?c:0;var d=[];try{var f=this.editor.graph;if(null!=a&&0<a.length){var l=mxUtils.parseXml(a),k=this.editor.extractGraphModel(l.documentElement,null!=this.pages);if(null!=k&&"mxfile"==k.nodeName&&null!=this.pages){var n=k.getElementsByTagName("diagram");if(1==n.length)k=mxUtils.parseXml(f.decompress(mxUtils.getTextContent(n[0]))).documentElement;else if(1<n.length){f.model.beginUpdate();try{for(a=0;a<n.length;a++){n[a].removeAttribute("id");var m=this.updatePageRoot(new DiagramPage(n[a])), +q=this.pages.length;null==m.getName()&&m.setName(mxResources.get("pageWithNumber",[q+1]));f.model.execute(new ChangePage(this,m,m,q))}}finally{f.model.endUpdate()}}}null!=k&&"mxGraphModel"===k.nodeName&&(d=f.importGraphModel(k,b,c,e))}}catch(D){if(g)throw D;this.handleError(D)}return d};EditorUi.prototype.isRemoteVisioFormat=function(a){return/(\.v(sd|dx))($|\?)/i.test(a)||/(\.vs(s|x))($|\?)/i.test(a)};EditorUi.prototype.importVisio=function(a,b,c,e){e=null!=e?e:a.name;c=null!=c?c:mxUtils.bind(this, +function(a){this.handleError(a)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio)if(this.isRemoteVisioFormat(e)&&null!=VSD_CONVERT_URL){var d=new FormData;d.append("file1",a,e);var f=new XMLHttpRequest;f.open("POST",VSD_CONVERT_URL);f.responseType="blob";f.onreadystatechange=mxUtils.bind(this,function(){if(4==f.readyState)if(200<=f.status&&299>=f.status)try{f.response.name=e,this.doImportVisio(f.response,b,c)}catch(x){c(x)}else c({})});f.send(d)}else try{this.doImportVisio(a, +b,c)}catch(x){c(x)}});this.doImportVisio||this.loadingExtensions||this.isOffline()?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",d))};EditorUi.prototype.importGraphML=function(a,b,c){c=null!=c?c:mxUtils.bind(this,function(a){this.handleError(a)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(a,b,c)}catch(g){c(g)}});this.doImportGraphML||this.loadingExtensions||this.isOffline()?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js", +d))};EditorUi.prototype.exportVisio=function(){var a=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof VsdxExport)try{(new VsdxExport(this)).exportCurrentDiagrams()||this.handleError({message:mxResources.get("unknownError")})}catch(f){this.handleError(f)}});"undefined"!==typeof VsdxExport||this.loadingExtensions||this.isOffline()?a():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",a))};EditorUi.prototype.convertLucidChart=function(a,b,c){var d=mxUtils.bind(this, +function(){this.loadingExtensions=!1;if("undefined"!==typeof window.LucidImporter)try{b(LucidImporter.importState(JSON.parse(a)))}catch(g){c(g)}else c({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof window.LucidImporter||this.loadingExtensions||this.isOffline()?window.setTimeout(d,0):(this.loadingExtensions=!0,"1"==urlParams.dev?mxscript("js/diagramly/Extensions.js",d):mxscript("js/extensions.min.js",d))};EditorUi.prototype.insertAsPreText=function(a,b,c){var d=this.editor.graph, +e=null;d.getModel().beginUpdate();try{e=d.insertVertex(null,null,"<pre>"+a+"</pre>",b,c,1,1,"text;html=1;align=center;verticalAlign=middle;"),d.updateCellSize(e,!0)}finally{d.getModel().endUpdate()}return e};EditorUi.prototype.insertTextAt=function(a,b,c,e,g,k,m){k=null!=k?k:!0;m=null!=m?m:!0;if(null!=a)if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a))this.parseFile(new Blob([a.replace(/\s+/g," ")],{type:"application/octet-stream"}),mxUtils.bind(this, +function(a){4==a.readyState&&200<=a.status&&299>=a.status&&this.editor.graph.setSelectionCells(this.insertTextAt(a.responseText,b,c,!0))}));else if("data:"==a.substring(0,5)||!this.isOffline()&&(g||/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(a))){var d=this.editor.graph;if("data:image/png;base64,"==a.substring(0,22)){var f=this.extractGraphModelFromPng(a),l=this.importXml(f,b,c,k,!0);if(0<l.length)return l}if("data:image/svg+xml;"==a.substring(0,19))try{if(f=null,"data:image/svg+xml;base64,"==a.substring(0, +26)?(f=a.substring(a.indexOf(",")+1),f=window.atob&&!mxClient.IS_SF?atob(f):Base64.decode(f,!0)):f=decodeURIComponent(a.substring(a.indexOf(",")+1)),l=this.importXml(f,b,c,k,!0),0<l.length)return l}catch(u){}this.loadImage(a,mxUtils.bind(this,function(e){if("data:"==a.substring(0,5))this.resizeImage(e,a,mxUtils.bind(this,function(a,e,f){d.setSelectionCell(d.insertVertex(null,null,"",d.snap(b),d.snap(c),e,f,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+ +this.convertDataUri(a)+";"))}),m,this.maxImageSize);else{var f=Math.min(1,Math.min(this.maxImageSize/e.width,this.maxImageSize/e.height)),g=Math.round(e.width*f);e=Math.round(e.height*f);d.setSelectionCell(d.insertVertex(null,null,"",d.snap(b),d.snap(c),g,e,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+a+";"))}}),mxUtils.bind(this,function(){var f=null;d.getModel().beginUpdate();try{f=d.insertVertex(d.getDefaultParent(), +null,a,d.snap(b),d.snap(c),1,1,"text;"+(e?"html=1;":"")),d.updateCellSize(f),d.fireEvent(new mxEventObject("textInserted","cells",[f]))}finally{d.getModel().endUpdate()}d.setSelectionCell(f)}))}else{a=this.editor.graph.zapGremlins(mxUtils.trim(a));if(this.isCompatibleString(a))return this.importXml(a,b,c,k);if(0<a.length)if(this.isLucidChartData(a))this.convertLucidChart(a,mxUtils.bind(this,function(a){this.editor.graph.setSelectionCells(this.importXml(a,b,c,k))}),mxUtils.bind(this,function(a){this.handleError(a)})); +else{d=this.editor.graph;g=null;d.getModel().beginUpdate();try{g=d.insertVertex(d.getDefaultParent(),null,"",d.snap(b),d.snap(c),1,1,"text;"+(e?"html=1;":"")),d.fireEvent(new mxEventObject("textInserted","cells",[g])),"<"==a.charAt(0)&&a.indexOf(">")==a.length-1&&(a=mxUtils.htmlEntities(a)),g.value=a,d.updateCellSize(g),/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/i.test(g.value)&& +d.setLinkForCell(g,g.value),g.geometry.width+=d.gridSize,g.geometry.height+=d.gridSize}finally{d.getModel().endUpdate()}return[g]}}return[]};EditorUi.prototype.formatFileSize=function(a){var b=-1;do a/=1024,b++;while(1024<a);return Math.max(a,.1).toFixed(1)+" kB; MB; GB; TB;PB;EB;ZB;YB".split(";")[b]};EditorUi.prototype.convertDataUri=function(a){if("data:"==a.substring(0,5)){var b=a.indexOf(";");0<b&&(a=a.substring(0,b)+a.substring(a.indexOf(",",b+1)))}return a};EditorUi.prototype.isRemoteFileFormat= +function(a,b){return/(\"contentType\":\s*\"application\/gliffy\+json\")/.test(a)};EditorUi.prototype.isLucidChartData=function(a){return null!=a&&'{"state":"{\\"Properties\\":'==a.substring(0,26)};EditorUi.prototype.importLocalFile=function(a,b){if(a&&Graph.fileSupport&&(!mxClient.IS_IE&&!mxClient.IS_IE11||0>navigator.appVersion.indexOf("Windows NT 6.1"))){var d=document.createElement("input");d.setAttribute("type","file");mxEvent.addListener(d,"change",mxUtils.bind(this,function(){null!=d.files&& +this.importFiles(d.files,null,null,this.maxImageSize)}));d.click()}else{window.openNew=!1;window.openKey="import";if(!b){var c=Editor.useLocalStorage;Editor.useLocalStorage=!a}window.openFile=new OpenFile(mxUtils.bind(this,function(a){this.hideDialog(a)}));window.openFile.setConsumer(mxUtils.bind(this,function(a,b){if(null!=b&&Graph.fileSupport&&/(\.v(dx|sdx?))($|\?)/i.test(b)){var d=new Blob([a],{type:"application/octet-stream"});this.importVisio(d,mxUtils.bind(this,function(a){this.importXml(a, +0,0,!0)}),null,b)}else this.editor.graph.setSelectionCells(this.importXml(a,0,0,!0))}));this.showDialog((new OpenDialog(this)).container,360,220,!0,!0,function(){window.openFile=null});if(!b){var e=this.dialog,f=e.close;this.dialog.close=mxUtils.bind(this,function(a){Editor.useLocalStorage=c;f.apply(e,arguments);a&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};EditorUi.prototype.importFile=function(a,b,c,e,g,k,m,q,t,r,u){r=null!=r?r:!0;var d=!1,f=null,l=mxUtils.bind(this, +function(a){var b=null;null!=a&&"<mxlibrary"==a.substring(0,10)?this.loadLibrary(new LocalLibrary(this,a,m)):b=this.importXml(a,c,e,r);null!=q&&q(b)});"image"==b.substring(0,5)?(t=!1,"image/png"==b.substring(0,9)&&(b=u?null:this.extractGraphModelFromPng(a),null!=b&&0<b.length&&(f=this.importXml(b,c,e,r),t=!0)),t||(f=this.editor.graph,b=a.indexOf(";"),0<b&&(a=a.substring(0,b)+a.substring(a.indexOf(",",b+1))),r&&f.isGridEnabled()&&(c=f.snap(c),e=f.snap(e)),f=[f.insertVertex(null,null,"",c,e,g,k,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+ +a+";")])):/(\.*<graphml )/.test(a)?(d=!0,this.importGraphML(a,l)):null!=t&&null!=m&&(/(\.v(dx|sdx?))($|\?)/i.test(m)||/(\.vs(x|sx?))($|\?)/i.test(m))?(d=!0,this.importVisio(t,l)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a,m)?(d=!0,this.parseFile(null!=t?t:new Blob([a],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?l(a.responseText):null!=q&&q(null))}),m)):/(\.v(sd|dx))($|\?)/i.test(m)||/(\.vs(s|x))($|\?)/i.test(m)|| +(f=this.insertTextAt(this.validateFileData(a),c,e,!0,null,r));d||null==q||q(f);return f};EditorUi.prototype.base64Encode=function(a){for(var b="",d=0,c=a.length,e,k,m;d<c;){e=a.charCodeAt(d++)&255;if(d==c){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4);b+="==";break}k=a.charCodeAt(d++);if(d==c){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2); +b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(k&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k&15)<<2);b+="=";break}m=a.charCodeAt(d++);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(k&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k&15)<<2|(m&192)>>6);b+= +"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(m&63)}return b};EditorUi.prototype.importFiles=function(a,b,c,e,g,k,m,q,t,r,u,A){b=null!=b?b:0;c=null!=c?c:0;e=null!=e?e:this.maxImageSize;r=null!=r?r:this.maxImageBytes;var d=null!=b&&null!=c,f=!0,l=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var p=u||this.resampleThreshold,n=0;n<a.length;n++)if("image/"==a[n].type.substring(0,6)&&a[n].size>p){l=!0;break}var x=mxUtils.bind(this,function(){var l=this.editor.graph,p=l.gridSize; +g=null!=g?g:mxUtils.bind(this,function(a,b,c,e,f,g,l,k,p){return null!=a&&"<mxlibrary"==a.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,a,l)),null):this.importFile(a,b,c,e,f,g,l,k,p,d,A)});k=null!=k?k:mxUtils.bind(this,function(a){l.setSelectionCells(a)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var n=a.length,t=n,x=[],B=mxUtils.bind(this,function(a,b){x[a]=b;if(0==--t){this.spinner.stop();if(null!=q)q(x);else{var d=[];l.getModel().beginUpdate(); +try{for(var c=0;c<x.length;c++){var e=x[c]();null!=e&&(d=d.concat(e))}}finally{l.getModel().endUpdate()}}k(d)}}),E=0;E<n;E++)mxUtils.bind(this,function(d){var k=a[d];if(null!=k){var n=new FileReader;n.onload=mxUtils.bind(this,function(a){if(null==m||m(k))if("image/"==k.type.substring(0,6))if("image/svg"==k.type.substring(0,9)){var n=a.target.result,q=n.indexOf(","),t=decodeURIComponent(escape(atob(n.substring(q+1)))),x=mxUtils.parseXml(t),t=x.getElementsByTagName("svg");if(0<t.length){var t=t[0], +E=A?null:t.getAttribute("content");null!=E&&"<"!=E.charAt(0)&&"%"!=E.charAt(0)&&(E=unescape(window.atob?atob(E):Base64.decode(E,!0)));null!=E&&"%"==E.charAt(0)&&(E=decodeURIComponent(E));null==E||"<mxfile "!==E.substring(0,8)&&"<mxGraphModel "!==E.substring(0,14)?B(d,mxUtils.bind(this,function(){try{if(n.substring(0,q+1),null!=x){var a=x.getElementsByTagName("svg");if(0<a.length){var f=a[0],m=parseFloat(f.getAttribute("width")),t=parseFloat(f.getAttribute("height")),u=f.getAttribute("viewBox");if(null== +u||0==u.length)f.setAttribute("viewBox","0 0 "+m+" "+t);else if(isNaN(m)||isNaN(t)){var r=u.split(" ");3<r.length&&(m=parseFloat(r[2]),t=parseFloat(r[3]))}n=this.createSvgDataUri(mxUtils.getXml(f));var E=Math.min(1,Math.min(e/Math.max(1,m)),e/Math.max(1,t)),B=g(n,k.type,b+d*p,c+d*p,Math.max(1,Math.round(m*E)),Math.max(1,Math.round(t*E)),k.name);if(isNaN(m)||isNaN(t)){var A=new Image;A.onload=mxUtils.bind(this,function(){m=Math.max(1,A.width);t=Math.max(1,A.height);B[0].geometry.width=m;B[0].geometry.height= +t;f.setAttribute("viewBox","0 0 "+m+" "+t);n=this.createSvgDataUri(mxUtils.getXml(f));var a=n.indexOf(";");0<a&&(n=n.substring(0,a)+n.substring(n.indexOf(",",a+1)));l.setCellStyles("image",n,[B[0]])});A.src=this.createSvgDataUri(mxUtils.getXml(f))}return B}}}catch(ua){}return null})):B(d,mxUtils.bind(this,function(){return g(E,"text/xml",b+d*p,c+d*p,0,0,k.name)}))}else B(d,mxUtils.bind(this,function(){return null}))}else{t=!1;if("image/png"==k.type){var C=A?null:this.extractGraphModelFromPng(a.target.result); +if(null!=C&&0<C.length){var y=new Image;y.src=a.target.result;B(d,mxUtils.bind(this,function(){return g(C,"text/xml",b+d*p,c+d*p,y.width,y.height,k.name)}));t=!0}}t||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"),mxResources.get("cancel"),mxUtils.bind(this,function(){}),null,mxResources.get("ok"),mxUtils.bind(this,function(){this.actions.get("import").funct()}))):this.loadImage(a.target.result,mxUtils.bind(this,function(l){this.resizeImage(l, +a.target.result,mxUtils.bind(this,function(l,n,m){B(d,mxUtils.bind(this,function(){if(null!=l&&l.length<r){var q=f&&this.isResampleImage(a.target.result,u)?Math.min(1,Math.min(e/n,e/m)):1;return g(l,k.type,b+d*p,c+d*p,Math.round(n*q),Math.round(m*q),k.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),f,e,u)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else g(a.target.result,k.type,b+d*p,c+d*p,240,160,k.name, +function(a){B(d,function(){return a})})});/(\.v(dx|sdx?))($|\?)/i.test(k.name)||/(\.vs(x|sx?))($|\?)/i.test(k.name)?g(null,k.type,b+d*p,c+d*p,240,160,k.name,function(a){B(d,function(){return a})},k):"image"==k.type.substring(0,5)?n.readAsDataURL(k):n.readAsText(k)}})(E)});l?this.confirmImageResize(function(a){f=a;x()},t):x()};EditorUi.prototype.confirmImageResize=function(a,b){b=null!=b?b:!1;var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},c=isLocalStorage||mxClient.IS_CHROMEAPP? +mxSettings.getResizeImages():null,e=function(c,e){if(c||b)mxSettings.setResizeImages(c?e:null),mxSettings.save();d();a(e)};null==c||b?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(a){e(a,!0)},function(a){e(a,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage|| +mxClient.IS_CHROMEAPP?220:200,!0,!0):e(!1,c)};EditorUi.prototype.parseFile=function(a,b,c){c=null!=c?c:a.name;var d=new FormData;d.append("format","xml");d.append("upfile",a,c);var e=new XMLHttpRequest;e.open("POST",OPEN_URL);e.onreadystatechange=function(){b(e)};e.send(d)};EditorUi.prototype.isResampleImage=function(a,b){b=null!=b?b:this.resampleThreshold;return a.length>b};EditorUi.prototype.resizeImage=function(a,b,c,e,g,k){g=null!=g?g:this.maxImageSize;var d=Math.max(1,a.width),f=Math.max(1,a.height); +if(e&&this.isResampleImage(b,k))try{var l=Math.max(d/g,f/g);if(1<l){var p=Math.round(d/l),n=Math.round(f/l),m=document.createElement("canvas");m.width=p;m.height=n;m.getContext("2d").drawImage(a,0,0,p,n);var q=m.toDataURL();if(q.length<b.length){var r=document.createElement("canvas");r.width=p;r.height=n;var v=r.toDataURL();q!==v&&(b=q,d=p,f=n)}}}catch(N){}c(b,d,f)};EditorUi.prototype.crcTable=[];for(var c=0;256>c;c++)for(var k=c,m=0;8>m;m++)k=1==(k&1)?3988292384^k>>>1:k>>>1,EditorUi.prototype.crcTable[c]= +k;EditorUi.prototype.updateCRC=function(a,b,c,e){for(var d=0;d<e;d++)a=EditorUi.prototype.crcTable[(a^b[c+d])&255]^a>>>8;return a};EditorUi.prototype.crc32=function(a){this.crcTable=this.crcTable||this.createCrcTable();for(var b=-1,d=0;d<a.length;d++)b=b>>>8^this.crcTable[(b^a.charCodeAt(d))&255];return(b^-1)>>>0};EditorUi.prototype.writeGraphModelToPng=function(a,b,c,e,g){function d(a,b){var d=k;k+=b;return a.substring(d,k)}function f(a){a=d(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<< +16)+(a.charCodeAt(0)<<24)}function l(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,!0);var k=0;if(d(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=g&&g();else if(d(a,4),"IHDR"!=d(a,4))null!=g&&g();else{d(a,17);g=a.substring(0,k);do{var n=f(a);if("IDAT"==d(a,4)){g=a.substring(0,k-8);c=c+String.fromCharCode(0)+("zTXt"==b?String.fromCharCode(0):"")+e;e=4294967295;e=this.updateCRC(e, +b,0,4);e=this.updateCRC(e,c,0,c.length);g+=l(c.length)+b+c+l(e^4294967295);g+=a.substring(k-8,a.length);break}g+=a.substring(k-8,k-4+n);d(a,n);d(a,4)}while(n);return"data:image/png;base64,"+(window.btoa?btoa(g):Base64.encode(g,!0))}};EditorUi.prototype.extractGraphModelFromPng=function(a){var b=null;try{var d=a.substring(a.indexOf(",")+1),c=window.atob&&!mxClient.IS_SF?atob(d):Base64.decode(d,!0);EditorUi.parsePng(c,mxUtils.bind(this,function(a,d,e){a=c.substring(a+8,a+8+e);"zTXt"==d?(e=a.indexOf(String.fromCharCode(0)), +"mxGraphModel"==a.substring(0,e)&&(a=this.editor.graph.bytesToString(pako.inflateRaw(a.substring(e+2))).replace(/\+/g," "),null!=a&&0<a.length&&(b=a))):"tEXt"==d&&(a=a.split(String.fromCharCode(0)),1<a.length&&"mxGraphModel"==a[0]&&(b=a[1]));if(null!=b||"IDAT"==d)return!0}))}catch(g){}null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));return b};EditorUi.prototype.loadImage=function(a,b,c){var d=new Image;d.onload=function(){b(d)};null!=c&&(d.onerror= +c);d.src=a};var q=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=mxStencilRegistry.allowEval&&!this.isOfflineApp();"undefined"!==typeof window.mxSettings&&(this.formatWidth=mxSettings.getFormatWidth());var a=this,b=this.editor.graph;b.getLinkTitle=function(b){return a.getLinkTitle(b)};b.customLinkClicked=function(b){var d=!1;try{a.handleCustomLink(b),d=!0}catch(C){a.handleError(C)}return d};var c=this.clearDefaultStyle;this.clearDefaultStyle=function(){c.apply(this, +arguments)};this.isOffline()||"undefined"===typeof window.EditDataDialog||(EditDataDialog.placeholderHelpLink="https://desk.draw.io/support/solutions/articles/16000051979");var e=a.editor.getEditBlankUrl;this.editor.getEditBlankUrl=function(b){b=null!=b?b:"";if(null!=a.pages&&null!=a.currentPage)for(var d=0;d<a.pages.length;d++)if(a.pages[d]==a.currentPage){0<d&&(b+=(0<b.length?"&":"?")+"page="+d);break}"1"==urlParams.dev&&(b+=(0<b.length?"&":"?")+"dev=1&drawdev=1");return e.apply(this,arguments)}; +var g=b.addClickHandler;b.addClickHandler=function(a,d,c){var e=d;d=function(a,d){if(null==d){var c=mxEvent.getSource(a);"a"==c.nodeName.toLowerCase()&&(d=c.getAttribute("href"))}null!=d&&b.isCustomLink(d)&&(mxEvent.isTouchEvent(a)||!mxEvent.isPopupTrigger(a))&&b.customLinkClicked(d)&&mxEvent.consume(a);null!=e&&e(a,d)};g.call(this,a,d,c)};q.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(b.view.canvas.ownerSVGElement,null,!0);a.actions.get("print").funct=function(){a.showDialog((new PrintDialog(a)).container, +360,null!=a.pages&&1<a.pages.length?420:360,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var k=b.getGlobalVariable;b.getGlobalVariable=function(b){return"page"==b&&null!=a.currentPage?a.currentPage.getName():"pagenumber"==b?null!=a.currentPage&&null!=a.pages?mxUtils.indexOf(a.pages,a.currentPage)+1:1:k.apply(this,arguments)};var m=b.labelLinkClicked;b.labelLinkClicked=function(a,d,c){var e=d.getAttribute("href");if(null==e||!b.isCustomLink(e)||!mxEvent.isTouchEvent(c)&&mxEvent.isPopupTrigger(c))m.apply(this, +arguments);else{if(!b.isEnabled()||null!=a&&b.isCellLocked(a.cell))b.customLinkClicked(e),b.getRubberband().reset();mxEvent.consume(c)}};this.editor.getOrCreateFilename=function(){var b=a.defaultFilename,d=a.getCurrentFile();null!=d&&(b=null!=d.getTitle()?d.getTitle():b);return b};var r=this.actions.get("print");r.setEnabled(!mxClient.IS_IOS||!navigator.standalone);r.visible=r.isEnabled();if(!this.editor.chromeless||this.editor.editable){var t=function(){window.setTimeout(function(){y.innerHTML=" "; +y.focus();document.execCommand("selectAll",!1,null)},0)};this.keyHandler.bindAction(70,!0,"find");this.keyHandler.bindAction(67,!0,"copyStyle",!0);this.keyHandler.bindAction(86,!0,"pasteStyle",!0);this.keyHandler.bindAction(77,!0,"editGeometry",!0);this.keyHandler.bindAction(88,!0,"insertText",!0);this.keyHandler.bindAction(75,!0,"insertRectangle");this.keyHandler.bindAction(75,!0,"insertEllipse",!0);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(this.altShiftActions[83]="synchronize");mxClient.IS_IE|| +b.container.addEventListener("paste",mxUtils.bind(this,function(a){var b=this.editor.graph;if(!mxEvent.isConsumed(a))try{for(var d=a.clipboardData||a.originalEvent.clipboardData,c=!1,e=0;e<d.types.length;e++)if("text/"===d.types[e].substring(0,5)){c=!0;break}if(!c){var f=d.items;for(index in f){var g=f[index];if("file"===g.kind){if(b.isEditing())this.importFiles([g.getAsFile()],0,0,this.maxImageSize,function(a,d,c,e,f,g){b.insertImage(a,f,g)},function(){},function(a){return"image/"==a.type.substring(0, +6)},function(a){for(var b=0;b<a.length;b++)a[b]()});else{var l=this.editor.graph.getInsertPoint();this.importFiles([g.getAsFile()],l.x,l.y,this.maxImageSize);mxEvent.consume(a)}break}}}}catch(J){}}),!1);var y=document.createElement("div");y.style.position="absolute";y.style.whiteSpace="nowrap";y.style.overflow="hidden";y.style.display="block";y.contentEditable=!0;mxUtils.setOpacity(y,0);y.style.width="1px";y.style.height="1px";y.innerHTML=" ";var u=!1;this.keyHandler.bindControlKey(88,null); +this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(a){var d=mxEvent.getSource(a);null==b.container||!b.isEnabled()||b.isMouseDown||b.isEditing()||null!=this.dialog||"INPUT"==d.nodeName||"TEXTAREA"==d.nodeName||!(224==a.keyCode||!mxClient.IS_MAC&&17==a.keyCode||mxClient.IS_MAC&&91==a.keyCode)||u||(y.style.left=b.container.scrollLeft+10+"px",y.style.top=b.container.scrollTop+10+"px",b.container.appendChild(y), +u=!0,mxClient.IS_QUIRKS?window.setTimeout(function(){y.focus();document.execCommand("selectAll",!1,null)},0):(y.focus(),document.execCommand("selectAll",!1,null)))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(a){var d=a.keyCode;window.setTimeout(mxUtils.bind(this,function(){!u||224!=d&&17!=d&&91!=d||(u=!1,b.isEditing()||null!=this.dialog||null==b.container||b.container.focus(),y.parentNode.removeChild(y),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(y, +"copy",mxUtils.bind(this,function(a){b.isEnabled()&&(mxClipboard.copy(b),this.copyCells(y),t())}));mxEvent.addListener(y,"cut",mxUtils.bind(this,function(a){b.isEnabled()&&(mxClipboard.copy(b),this.copyCells(y,!0),t())}));mxEvent.addListener(y,"paste",mxUtils.bind(this,function(a){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&(y.innerHTML=" ",y.focus(),window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(a,y);y.innerHTML=" "}),0))}),!0);var A=this.isSelectionAllowed;this.isSelectionAllowed= +function(a){return mxEvent.getSource(a)==y?!0:A.apply(this,arguments)}}this.spinner=this.createSpinner(document.body.clientWidth/2-2,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,24);Graph.fileSupport&&this.editor.graph.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,function(a){var b=this.editor.graph,d=b.cellEditor.text2,c=null;null!=d&&(mxEvent.addListener(d,"dragleave",function(a){null!=c&&(c.parentNode.removeChild(c),c=null);a.stopPropagation();a.preventDefault()}), +mxEvent.addListener(d,"dragover",mxUtils.bind(this,function(a){null==c&&(!mxClient.IS_IE||10<document.documentMode)&&(c=this.highlightElement(d));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(d,"drop",mxUtils.bind(this,function(a){null!=c&&(c.parentNode.removeChild(c),c=null);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,function(a,d,c,e,f,g){b.insertImage(a,f,g)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b= +0;b<a.length;b++)a[b]()},mxEvent.isControlDown(a));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")){var d=a.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(d)?this.loadImage(decodeURIComponent(d),mxUtils.bind(this,function(a){var c=Math.max(1,a.width);a=Math.max(1,a.height);var e=this.maxImageSize,e=Math.min(1,Math.min(e/Math.max(1,c)),e/Math.max(1,a));b.insertImage(decodeURIComponent(d),c*e,a*e)})):document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/plain"))}else 0<= +mxUtils.indexOf(a.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/plain"));a.stopPropagation();a.preventDefault()})))}));if("1"==urlParams.ruler&&"undefined"!==typeof mxRuler){r=document.createElement("div");r.style.position="absolute";r.style.top="95px";r.style.left="250px";r.style.width="2000px";r.style.height="30px";r.style.background= +"whiteSmoke";document.body.appendChild(r);var D=document.createElement("div");D.style.position="absolute";D.style.top="125px";D.style.left="220px";D.style.width="30px";D.style.height="1000px";D.style.background="whiteSmoke";document.body.appendChild(D);var v=document.createElement("div");v.style.position="absolute";v.style.top="95px";v.style.left="220px";v.style.width="30px";v.style.height="30px";v.style.background="whiteSmoke";document.body.appendChild(v);this.vRuler=new mxRuler(this.editor.graph, +D,!0);this.hRuler=new mxRuler(this.editor.graph,r,!1)}if("1"==urlParams.styledev){r=document.getElementById("geFooter");null!=r&&(this.styleInput=document.createElement("input"),this.styleInput.setAttribute("type","text"),this.styleInput.style.position="absolute",this.styleInput.style.top="14px",this.styleInput.style.left="2px",this.styleInput.style.width="98%",this.styleInput.style.visibility="hidden",this.styleInput.style.opacity="0.9",mxEvent.addListener(this.styleInput,"change",mxUtils.bind(this, +function(){this.editor.graph.getModel().setStyle(this.editor.graph.getSelectionCell(),this.styleInput.value)})),r.appendChild(this.styleInput),this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(a,b){if(0<this.editor.graph.getSelectionCount()){var d=this.editor.graph.getSelectionCell(),d=this.editor.graph.getModel().getStyle(d);this.styleInput.value=d||"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var z=this.isSelectionAllowed; +this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==this.styleInput?!0:z.apply(this,arguments)}}r=document.getElementById("geInfo");null!=r&&r.parentNode.removeChild(r);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var N=null;mxEvent.addListener(b.container,"dragleave",function(a){b.isEnabled()&&(null!=N&&(N.parentNode.removeChild(N),N=null),a.stopPropagation(),a.preventDefault())});mxEvent.addListener(b.container,"dragover",mxUtils.bind(this,function(a){null== +N&&(!mxClient.IS_IE||10<document.documentMode)&&(N=this.highlightElement(b.container));null!=this.sidebar&&this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()}));mxEvent.addListener(b.container,"drop",mxUtils.bind(this,function(a){null!=N&&(N.parentNode.removeChild(N),N=null);if(b.isEnabled()){var d=mxUtils.convertPoint(b.container,mxEvent.getClientX(a),mxEvent.getClientY(a)),c=b.view.translate,e=b.view.scale,f=d.x/e-c.x,g=d.y/e-c.y;mxEvent.isAltDown(a)&&(g=f=0);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files, +f,g,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(a),null,null,mxEvent.isShiftDown(a));else{var l=0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):null,d=this.extractGraphModelFromEvent(a,null!=this.pages);if(null!=d)b.setSelectionCells(this.importXml(d,f,g,!0));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/html")){var k=a.dataTransfer.getData("text/html"),d=document.createElement("div");d.innerHTML=k;var p=null,c=d.getElementsByTagName("img"); +null!=c&&1==c.length?(k=c[0].getAttribute("src"),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(k)||(p=!0)):(d=d.getElementsByTagName("a"),null!=d&&1==d.length&&(k=d[0].getAttribute("href")));var n=!0,m=mxUtils.bind(this,function(){b.setSelectionCells(this.insertTextAt(k,f,g,!0,p,null,n))});p&&k.length>this.resampleThreshold?this.confirmImageResize(function(a){n=a;m()},mxEvent.isControlDown(a)):m()}else null!=l&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(l)?this.loadImage(decodeURIComponent(l),mxUtils.bind(this, +function(a){var d=Math.max(1,a.width);a=Math.max(1,a.height);var c=this.maxImageSize,c=Math.min(1,Math.min(c/Math.max(1,d)),c/Math.max(1,a));b.setSelectionCell(b.insertVertex(null,null,"",f,g,d*c,a*c,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+l+";"))}),mxUtils.bind(this,function(a){b.setSelectionCells(this.insertTextAt(l,f,g,!0))})):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&b.setSelectionCells(this.insertTextAt(a.dataTransfer.getData("text/plain"), +f,g,!0))}}a.stopPropagation();a.preventDefault()}),!1)}this.initPages();this.editUpdateListener=mxUtils.bind(this,function(a,b){var d=b.getProperty("edit");null!=d&&this.updateEditReferences(d)});this.editor.undoManager.addListener(mxEvent.BEFORE_UNDO,this.editUpdateListener);this.editor.undoManager.addListener(mxEvent.BEFORE_REDO,this.editUpdateListener);"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.getLinkTitle=function(a){var b=Graph.prototype.getLinkTitle.apply(this, +arguments);if("data:page/id,"==a.substring(0,13)){var d=a.indexOf(",");0<d&&(b=this.getPageById(a.substring(d+1)),b=null!=b?b.getName():mxResources.get("pageNotFound"))}else"data:"==a.substring(0,5)&&(b=mxResources.get("action"));return b};EditorUi.prototype.handleCustomLink=function(a){if("data:page/id,"==a.substring(0,13)){var b=a.indexOf(",");if(a=this.getPageById(a.substring(b+1)))this.selectPage(a);else throw Error(mxResources.get("pageNotFound")||"Page not found");}else this.editor.graph.handleCustomLink(a)}; EditorUi.prototype.isSettingsEnabled=function(){return"undefined"!==typeof window.mxSettings&&(isLocalStorage||mxClient.IS_CHROMEAPP)};EditorUi.prototype.installSettings=function(){if(this.isSettingsEnabled()){ColorDialog.recentColors=mxSettings.getRecentColors();this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]));this.editor.graph.connectionHandler.setCreateTarget(mxSettings.isCreateTarget());this.fireEvent(new mxEventObject("copyConnectChanged"));this.addListener("copyConnectChanged", mxUtils.bind(this,function(a,b){mxSettings.setCreateTarget(this.editor.graph.connectionHandler.isCreateTarget());mxSettings.save()}));this.editor.graph.pageFormat=mxSettings.getPageFormat();this.addListener("pageFormatChanged",mxUtils.bind(this,function(a,b){mxSettings.setPageFormat(this.editor.graph.pageFormat);mxSettings.save()}));this.editor.graph.view.gridColor=mxSettings.getGridColor();this.addListener("gridColorChanged",mxUtils.bind(this,function(a,b){mxSettings.setGridColor(this.editor.graph.view.gridColor); mxSettings.save()}));if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)this.editor.addListener("autosaveChanged",mxUtils.bind(this,function(a,b){mxSettings.setAutosave(this.editor.autosave);mxSettings.save()})),this.editor.autosave=mxSettings.getAutosave();null!=this.sidebar&&this.sidebar.showPalette("search",mxSettings.settings.search);this.editor.chromeless&&!this.editor.editable||null==this.sidebar||!(mxSettings.settings.isNew||8>=parseInt(mxSettings.settings.version||0))||(this.toggleScratchpad(), -mxSettings.save());this.addListener("formatWidthChanged",function(){mxSettings.setFormatWidth(this.formatWidth);mxSettings.save()})}};EditorUi.prototype.copyCells=function(a,b){var c=this.editor.graph;if(c.isSelectionEmpty())a.innerHTML="";else{var d=mxUtils.sortCells(c.model.getTopmostCells(c.getSelectionCells())),f=mxUtils.getXml(this.editor.graph.encodeCells(d));mxUtils.setTextContent(a,encodeURIComponent(f));b?(c.removeCells(d,!1),c.lastPasteXml=null):(c.lastPasteXml=f,c.pasteCounter=0);a.focus(); -document.execCommand("selectAll",!1,null)}};EditorUi.prototype.pasteCells=function(a,b){if(!mxEvent.isConsumed(a)){var c=b.getElementsByTagName("span");if(null!=c&&0<c.length&&"application/vnd.lucid.chart.objects"===c[0].getAttribute("data-lucid-type")){var d=c[0].getAttribute("data-lucid-content");null!=d&&0<d.length&&(this.convertLucidChart(d,mxUtils.bind(this,function(a){this.editor.graph.setSelectionCells(this.importXml(a,0,0))}),mxUtils.bind(this,function(a){this.handleError(a)})),mxEvent.consume(a))}else{var d= -this.editor.graph,f=mxUtils.trim(mxClient.IS_QUIRKS||8==document.documentMode?mxUtils.getTextContent(b):b.textContent),g=!1;try{var k=f.lastIndexOf("%3E");0<=k&&k<f.length-3&&(f=f.substring(0,k+3))}catch(v){}try{var c=b.getElementsByTagName("span"),n=null!=c&&0<c.length?mxUtils.trim(decodeURIComponent(c[0].textContent)):decodeURIComponent(f);this.isCompatibleString(n)&&(g=!0,f=n)}catch(v){}d.lastPasteXml==f?d.pasteCounter++:(d.lastPasteXml=f,d.pasteCounter=0);c=d.pasteCounter*d.gridSize;if(null!= -f&&0<f.length&&(g||this.isCompatibleString(f)?d.setSelectionCells(this.importXml(f,c,c)):(g=d.getInsertPoint(),d.isMouseInsertPoint()&&(c=0,d.lastPasteXml==f&&0<d.pasteCounter&&d.pasteCounter--),d.setSelectionCells(this.insertTextAt(f,g.x+c,g.y+c,!0))),!d.isSelectionEmpty())){d.scrollCellToVisible(d.getSelectionCell());null!=this.hoverIcons&&this.hoverIcons.update(d.view.getState(d.getSelectionCell()));try{mxEvent.consume(a)}catch(v){}}}}};EditorUi.prototype.addFileDropHandler=function(a){if(Graph.fileSupport)for(var b= -null,c=0;c<a.length;c++)mxEvent.addListener(a[c],"dragleave",function(a){null!=b&&(b.parentNode.removeChild(b),b=null);a.stopPropagation();a.preventDefault()}),mxEvent.addListener(a[c],"dragover",mxUtils.bind(this,function(a){(this.editor.graph.isEnabled()||"1"!=urlParams.embed)&&null==b&&(!mxClient.IS_IE||10<document.documentMode&&12>document.documentMode)&&(b=this.highlightElement());a.stopPropagation();a.preventDefault()})),mxEvent.addListener(a[c],"drop",mxUtils.bind(this,function(a){null!=b&& -(b.parentNode.removeChild(b),b=null);if(this.editor.graph.isEnabled()||"1"!=urlParams.embed)if(0<a.dataTransfer.files.length)this.hideDialog(),"1"==urlParams.embed?this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,null,null,null,null,!mxEvent.isControlDown(a)&&!mxEvent.isShiftDown(a)):this.openFiles(a.dataTransfer.files,!0);else{var c=this.extractGraphModelFromEvent(a);if(null==c){var d=null!=a.dataTransfer?a.dataTransfer:a.clipboardData;null!=d&&(10==document.documentMode||11==document.documentMode? -c=d.getData("Text"):(c=null,c=0<=mxUtils.indexOf(d.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):0<=mxUtils.indexOf(d.types,"text/html")?d.getData("text/html"):null,null!=c&&0<c.length?(d=document.createElement("div"),d.innerHTML=c,d=d.getElementsByTagName("img"),0<d.length&&(c=d[0].getAttribute("src"))):0<=mxUtils.indexOf(d.types,"text/plain")&&(c=d.getData("text/plain"))),null!=c&&("data:image/png;base64,"==c.substring(0,22)?(c=this.extractGraphModelFromPng(c),null!=c&&0<c.length&& -this.openLocalFile(c,null,!0)):!this.isOffline()&&this.isRemoteFileFormat(c)?(new mxXmlRequest(OPEN_URL,"format=xml&data="+encodeURIComponent(c))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()&&this.openLocalFile(a.getText(),null,!0)})):/^https?:\/\//.test(c)&&(null==this.getCurrentFile()?window.location.hash="#U"+encodeURIComponent(c):window.openWindow((mxClient.IS_CHROMEAPP?"https://www.draw.io/":"https://"+location.host+"/")+window.location.search+"#U"+encodeURIComponent(c)))))}else this.openLocalFile(c, -null,!0)}a.stopPropagation();a.preventDefault()}))};EditorUi.prototype.highlightElement=function(a){var b=0,c=0,d,f;if(null==a){f=document.body;var k=document.documentElement;d=(f.clientWidth||k.clientWidth)-3;f=Math.max(f.clientHeight||0,k.clientHeight)-3}else b=a.offsetTop,c=a.offsetLeft,d=a.clientWidth,f=a.clientHeight;k=document.createElement("div");k.style.zIndex=mxPopupMenu.prototype.zIndex+2;k.style.border="3px dotted rgb(254, 137, 12)";k.style.pointerEvents="none";k.style.position="absolute"; -k.style.top=b+"px";k.style.left=c+"px";k.style.width=Math.max(0,d-3)+"px";k.style.height=Math.max(0,f-3)+"px";null!=a&&a.parentNode==this.editor.graph.container?this.editor.graph.container.appendChild(k):document.body.appendChild(k);return k};EditorUi.prototype.stringToCells=function(a){a=mxUtils.parseXml(a);var b=this.editor.extractGraphModel(a.documentElement);a=[];if(null!=b){var c=new mxCodec(b.ownerDocument),d=new mxGraphModel;c.decode(b,d);b=d.getChildAt(d.getRoot(),0);for(c=0;c<d.getChildCount(b);c++)a.push(d.getChildAt(b, -c))}return a};EditorUi.prototype.openFiles=function(a,b){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var c=0;c<a.length;c++)mxUtils.bind(this,function(a){var c=new FileReader;c.onload=mxUtils.bind(this,function(c){try{var d=c.target.result,f=a.name;if(null!=f&&0<f.length){!this.useCanvasForExport&&/(\.png)$/i.test(f)&&(f=f.substring(0,f.length-4)+".xml");var g=mxUtils.bind(this,function(a){f=0<=f.lastIndexOf(".")?f.substring(0,f.lastIndexOf("."))+".xml":f+".xml";if("<mxlibrary"== -a.substring(0,10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,a,f))}catch(y){this.handleError(y,mxResources.get("errorLoadingFile"))}}else this.openLocalFile(a,f,b)});if(/(\.v(dx|sdx?))($|\?)/i.test(f)||/(\.vs(x|sx?))($|\?)/i.test(f))this.importVisio(a,mxUtils.bind(this,function(a){this.spinner.stop();g(a)}));else if(/(\.*<graphml )/.test(d))this.importGraphML(d,mxUtils.bind(this,function(a){this.spinner.stop(); -g(a)}));else if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,f))this.parseFile(a,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?g(a.responseText):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))}));else if(this.isLucidChartData(d))/(\.json)$/i.test(f)&&(f=f.substring(0,f.length-5)+".xml"),this.convertLucidChart(d, -mxUtils.bind(this,function(a){this.spinner.stop();this.openLocalFile(a,f,b)}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));else if("<mxlibrary"==c.target.result.substring(0,10)){this.spinner.stop();null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,c.target.result,a.name))}catch(D){this.handleError(D,mxResources.get("errorLoadingFile"))}}else"image/png"==a.type.substring(0, -9)&&(d=this.extractGraphModelFromPng(d)),this.spinner.stop(),this.openLocalFile(d,f,b)}}catch(D){this.handleError(D)}});c.onerror=mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a);window.openFile=null});"image"===a.type.substring(0,5)&&"image/svg"!==a.type.substring(0,9)?c.readAsDataURL(a):c.readAsText(a)})(a[c])};EditorUi.prototype.openLocalFile=function(a,b,d){var c=this.getCurrentFile(),f=mxUtils.bind(this,function(){window.openFile=null;if(null==b&&null!=this.getCurrentFile()&& -this.isDiagramEmpty()){var c=mxUtils.parseXml(a);null!=c&&(this.editor.setGraphXml(c.documentElement),this.editor.graph.selectAll())}else this.fileLoaded(new LocalFile(this,a,b||this.defaultFilename,d))});if(null!=a&&0<a.length)null==c||!c.isModified()&&(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)?f():(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&null!=c&&c.isModified()?this.confirm(mxResources.get("allChangesLost"),null,f,mxResources.get("cancel"),mxResources.get("discardChanges")):(window.openFile= -new OpenFile(function(){window.openFile=null}),window.openFile.setData(a,b),window.openWindow(this.getUrl(),null,mxUtils.bind(this,function(){null!=c&&c.isModified()?this.confirm(mxResources.get("allChangesLost"),null,f,mxResources.get("cancel"),mxResources.get("discardChanges")):f()})));else throw Error(mxResources.get("notADiagramFile"));};EditorUi.prototype.getBasenames=function(){var a={};if(null!=this.pages)for(var b=0;b<this.pages.length;b++)this.updatePageRoot(this.pages[b]),this.addBasenamesForCell(this.pages[b].root, -a);else this.addBasenamesForCell(this.editor.graph.model.getRoot(),a);var b=[],d;for(d in a)b.push(d);return b};EditorUi.prototype.addBasenamesForCell=function(a,b){function c(a){if(null!=a){var c=a.lastIndexOf(".");0<c&&(a=a.substring(c+1,a.length));null==b[a]&&(b[a]=!0)}}var d=this.editor.graph,f=d.getCellStyle(a);c(mxStencilRegistry.getBasenameForStencil(f[mxConstants.STYLE_SHAPE]));d.model.isEdge(a)&&(c(mxMarker.getPackageForType(f[mxConstants.STYLE_STARTARROW])),c(mxMarker.getPackageForType(f[mxConstants.STYLE_ENDARROW]))); -for(var f=d.model.getChildCount(a),g=0;g<f;g++)this.addBasenamesForCell(d.model.getChildAt(a,g),b)};EditorUi.prototype.setGraphEnabled=function(a){this.diagramContainer.style.visibility=a?"":"hidden";this.formatContainer.style.visibility=a?"":"hidden";this.sidebarFooterContainer.style.display=a?"":"none";this.sidebarContainer.style.display=a?"":"none";this.hsplit.style.display=a?"":"none";this.editor.graph.setEnabled(a);null!=this.tabContainer&&(this.tabContainer.style.visibility=a?"":"hidden");a|| +mxSettings.save());this.addListener("formatWidthChanged",function(){mxSettings.setFormatWidth(this.formatWidth);mxSettings.save()})}};EditorUi.prototype.copyCells=function(a,b){var d=this.editor.graph;if(d.isSelectionEmpty())a.innerHTML="";else{var c=mxUtils.sortCells(d.model.getTopmostCells(d.getSelectionCells())),e=mxUtils.getXml(this.editor.graph.encodeCells(c));mxUtils.setTextContent(a,encodeURIComponent(e));b?(d.removeCells(c,!1),d.lastPasteXml=null):(d.lastPasteXml=e,d.pasteCounter=0);a.focus(); +document.execCommand("selectAll",!1,null)}};EditorUi.prototype.pasteCells=function(a,b){if(!mxEvent.isConsumed(a)){var d=b.getElementsByTagName("span");if(null!=d&&0<d.length&&"application/vnd.lucid.chart.objects"===d[0].getAttribute("data-lucid-type")){var c=d[0].getAttribute("data-lucid-content");null!=c&&0<c.length&&(this.convertLucidChart(c,mxUtils.bind(this,function(a){this.editor.graph.setSelectionCells(this.importXml(a,0,0))}),mxUtils.bind(this,function(a){this.handleError(a)})),mxEvent.consume(a))}else{var c= +this.editor.graph,e=mxUtils.trim(mxClient.IS_QUIRKS||8==document.documentMode?mxUtils.getTextContent(b):b.textContent),f=!1;try{var k=e.lastIndexOf("%3E");0<=k&&k<e.length-3&&(e=e.substring(0,k+3))}catch(t){}try{var d=b.getElementsByTagName("span"),m=null!=d&&0<d.length?mxUtils.trim(decodeURIComponent(d[0].textContent)):decodeURIComponent(e);this.isCompatibleString(m)&&(f=!0,e=m)}catch(t){}c.lastPasteXml==e?c.pasteCounter++:(c.lastPasteXml=e,c.pasteCounter=0);d=c.pasteCounter*c.gridSize;if(null!= +e&&0<e.length&&(f||this.isCompatibleString(e)?c.setSelectionCells(this.importXml(e,d,d)):(f=c.getInsertPoint(),c.isMouseInsertPoint()&&(d=0,c.lastPasteXml==e&&0<c.pasteCounter&&c.pasteCounter--),c.setSelectionCells(this.insertTextAt(e,f.x+d,f.y+d,!0))),!c.isSelectionEmpty())){c.scrollCellToVisible(c.getSelectionCell());null!=this.hoverIcons&&this.hoverIcons.update(c.view.getState(c.getSelectionCell()));try{mxEvent.consume(a)}catch(t){}}}}};EditorUi.prototype.addFileDropHandler=function(a){if(Graph.fileSupport)for(var b= +null,d=0;d<a.length;d++)mxEvent.addListener(a[d],"dragleave",function(a){null!=b&&(b.parentNode.removeChild(b),b=null);a.stopPropagation();a.preventDefault()}),mxEvent.addListener(a[d],"dragover",mxUtils.bind(this,function(a){(this.editor.graph.isEnabled()||"1"!=urlParams.embed)&&null==b&&(!mxClient.IS_IE||10<document.documentMode&&12>document.documentMode)&&(b=this.highlightElement());a.stopPropagation();a.preventDefault()})),mxEvent.addListener(a[d],"drop",mxUtils.bind(this,function(a){null!=b&& +(b.parentNode.removeChild(b),b=null);if(this.editor.graph.isEnabled()||"1"!=urlParams.embed)if(0<a.dataTransfer.files.length)this.hideDialog(),"1"==urlParams.embed?this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,null,null,null,null,!mxEvent.isControlDown(a)&&!mxEvent.isShiftDown(a)):this.openFiles(a.dataTransfer.files,!0);else{var d=this.extractGraphModelFromEvent(a);if(null==d){var c=null!=a.dataTransfer?a.dataTransfer:a.clipboardData;null!=c&&(10==document.documentMode||11==document.documentMode? +d=c.getData("Text"):(d=null,d=0<=mxUtils.indexOf(c.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):0<=mxUtils.indexOf(c.types,"text/html")?c.getData("text/html"):null,null!=d&&0<d.length?(c=document.createElement("div"),c.innerHTML=d,c=c.getElementsByTagName("img"),0<c.length&&(d=c[0].getAttribute("src"))):0<=mxUtils.indexOf(c.types,"text/plain")&&(d=c.getData("text/plain"))),null!=d&&("data:image/png;base64,"==d.substring(0,22)?(d=this.extractGraphModelFromPng(d),null!=d&&0<d.length&& +this.openLocalFile(d,null,!0)):!this.isOffline()&&this.isRemoteFileFormat(d)?(new mxXmlRequest(OPEN_URL,"format=xml&data="+encodeURIComponent(d))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()&&this.openLocalFile(a.getText(),null,!0)})):/^https?:\/\//.test(d)&&(null==this.getCurrentFile()?window.location.hash="#U"+encodeURIComponent(d):window.openWindow((mxClient.IS_CHROMEAPP?EditorUi.drawHost+"/":"https://"+location.host+"/")+window.location.search+"#U"+encodeURIComponent(d)))))}else this.openLocalFile(d, +null,!0)}a.stopPropagation();a.preventDefault()}))};EditorUi.prototype.highlightElement=function(a){var b=0,d=0,c,e;if(null==a){e=document.body;var k=document.documentElement;c=(e.clientWidth||k.clientWidth)-3;e=Math.max(e.clientHeight||0,k.clientHeight)-3}else b=a.offsetTop,d=a.offsetLeft,c=a.clientWidth,e=a.clientHeight;k=document.createElement("div");k.style.zIndex=mxPopupMenu.prototype.zIndex+2;k.style.border="3px dotted rgb(254, 137, 12)";k.style.pointerEvents="none";k.style.position="absolute"; +k.style.top=b+"px";k.style.left=d+"px";k.style.width=Math.max(0,c-3)+"px";k.style.height=Math.max(0,e-3)+"px";null!=a&&a.parentNode==this.editor.graph.container?this.editor.graph.container.appendChild(k):document.body.appendChild(k);return k};EditorUi.prototype.stringToCells=function(a){a=mxUtils.parseXml(a);var b=this.editor.extractGraphModel(a.documentElement);a=[];if(null!=b){var d=new mxCodec(b.ownerDocument),c=new mxGraphModel;d.decode(b,c);b=c.getChildAt(c.getRoot(),0);for(d=0;d<c.getChildCount(b);d++)a.push(c.getChildAt(b, +d))}return a};EditorUi.prototype.openFiles=function(a,b){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var d=0;d<a.length;d++)mxUtils.bind(this,function(a){var d=new FileReader;d.onload=mxUtils.bind(this,function(d){try{var c=d.target.result,e=a.name;if(null!=e&&0<e.length){!this.useCanvasForExport&&/(\.png)$/i.test(e)&&(e=e.substring(0,e.length-4)+".xml");var f=mxUtils.bind(this,function(a){e=0<=e.lastIndexOf(".")?e.substring(0,e.lastIndexOf("."))+".xml":e+".xml";if("<mxlibrary"== +a.substring(0,10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,a,e))}catch(u){this.handleError(u,mxResources.get("errorLoadingFile"))}}else this.openLocalFile(a,e,b)});if(/(\.v(dx|sdx?))($|\?)/i.test(e)||/(\.vs(x|sx?))($|\?)/i.test(e))this.importVisio(a,mxUtils.bind(this,function(a){this.spinner.stop();f(a)}));else if(/(\.*<graphml )/.test(c))this.importGraphML(c,mxUtils.bind(this,function(a){this.spinner.stop(); +f(a)}));else if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(c,e))this.parseFile(a,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?f(a.responseText):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))}));else if(this.isLucidChartData(c))/(\.json)$/i.test(e)&&(e=e.substring(0,e.length-5)+".xml"),this.convertLucidChart(c, +mxUtils.bind(this,function(a){this.spinner.stop();this.openLocalFile(a,e,b)}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));else if("<mxlibrary"==d.target.result.substring(0,10)){this.spinner.stop();null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,d.target.result,a.name))}catch(y){this.handleError(y,mxResources.get("errorLoadingFile"))}}else"image/png"==a.type.substring(0, +9)&&(c=this.extractGraphModelFromPng(c)),this.spinner.stop(),this.openLocalFile(c,e,b)}}catch(y){this.handleError(y)}});d.onerror=mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a);window.openFile=null});"image"===a.type.substring(0,5)&&"image/svg"!==a.type.substring(0,9)?d.readAsDataURL(a):d.readAsText(a)})(a[d])};EditorUi.prototype.openLocalFile=function(a,b,c){var d=this.getCurrentFile(),e=mxUtils.bind(this,function(){window.openFile=null;if(null==b&&null!=this.getCurrentFile()&& +this.isDiagramEmpty()){var d=mxUtils.parseXml(a);null!=d&&(this.editor.setGraphXml(d.documentElement),this.editor.graph.selectAll())}else this.fileLoaded(new LocalFile(this,a,b||this.defaultFilename,c))});if(null!=a&&0<a.length)null==d||!d.isModified()&&(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)?e():(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&null!=d&&d.isModified()?this.confirm(mxResources.get("allChangesLost"),null,e,mxResources.get("cancel"),mxResources.get("discardChanges")):(window.openFile= +new OpenFile(function(){window.openFile=null}),window.openFile.setData(a,b),window.openWindow(this.getUrl(),null,mxUtils.bind(this,function(){null!=d&&d.isModified()?this.confirm(mxResources.get("allChangesLost"),null,e,mxResources.get("cancel"),mxResources.get("discardChanges")):e()})));else throw Error(mxResources.get("notADiagramFile"));};EditorUi.prototype.getBasenames=function(){var a={};if(null!=this.pages)for(var b=0;b<this.pages.length;b++)this.updatePageRoot(this.pages[b]),this.addBasenamesForCell(this.pages[b].root, +a);else this.addBasenamesForCell(this.editor.graph.model.getRoot(),a);var b=[],c;for(c in a)b.push(c);return b};EditorUi.prototype.addBasenamesForCell=function(a,b){function d(a){if(null!=a){var d=a.lastIndexOf(".");0<d&&(a=a.substring(d+1,a.length));null==b[a]&&(b[a]=!0)}}var c=this.editor.graph,e=c.getCellStyle(a);d(mxStencilRegistry.getBasenameForStencil(e[mxConstants.STYLE_SHAPE]));c.model.isEdge(a)&&(d(mxMarker.getPackageForType(e[mxConstants.STYLE_STARTARROW])),d(mxMarker.getPackageForType(e[mxConstants.STYLE_ENDARROW]))); +for(var e=c.model.getChildCount(a),f=0;f<e;f++)this.addBasenamesForCell(c.model.getChildAt(a,f),b)};EditorUi.prototype.setGraphEnabled=function(a){this.diagramContainer.style.visibility=a?"":"hidden";this.formatContainer.style.visibility=a?"":"hidden";this.sidebarFooterContainer.style.display=a?"":"none";this.sidebarContainer.style.display=a?"":"none";this.hsplit.style.display=a?"":"none";this.editor.graph.setEnabled(a);null!=this.tabContainer&&(this.tabContainer.style.visibility=a?"":"hidden");a|| (null!=this.actions.outlineWindow&&this.actions.outlineWindow.window.setVisible(!1),null!=this.actions.layersWindow&&this.actions.layersWindow.window.setVisible(!1),null!=this.menus.tagsWindow&&this.menus.tagsWindow.window.setVisible(!1),null!=this.menus.findWindow&&this.menus.findWindow.window.setVisible(!1))};EditorUi.prototype.initializeEmbedMode=function(){this.setGraphEnabled(!1);(window.opener||window.parent)!=window&&("1"!=urlParams.spin||this.spinner.spin(document.body,mxResources.get("loading")))&& -this.installMessageHandler(mxUtils.bind(this,function(a,b,d){this.spinner.stop();this.addEmbedButtons();this.setGraphEnabled(!0);null!=a&&0<a.length?(this.setFileData(a),this.editor.isChromelessView()?this.editor.graph.isLightboxView()&&this.lightboxFit():this.showLayersDialog(),this.chromelessResize&&this.chromelessResize()):(this.editor.graph.model.clear(),this.editor.fireEvent(new mxEventObject("resetGraphView")));this.editor.undoManager.clear();this.editor.modified=null!=d?d:!1;this.updateUi(); +this.installMessageHandler(mxUtils.bind(this,function(a,b,c){this.spinner.stop();this.addEmbedButtons();this.setGraphEnabled(!0);null!=a&&0<a.length?(this.setFileData(a),this.editor.isChromelessView()?this.editor.graph.isLightboxView()&&this.lightboxFit():this.showLayersDialog(),this.chromelessResize&&this.chromelessResize()):(this.editor.graph.model.clear(),this.editor.fireEvent(new mxEventObject("resetGraphView")));this.editor.undoManager.clear();this.editor.modified=null!=c?c:!1;this.updateUi(); window.self!==window.top&&window.focus();null!=this.format&&this.format.refresh()}))};EditorUi.prototype.showLayersDialog=function(){1<this.editor.graph.getModel().getChildCount(this.editor.graph.getModel().getRoot())&&(null==this.actions.layersWindow?this.actions.get("layers").funct():this.actions.layersWindow.window.setVisible(!0))};EditorUi.prototype.getPublicUrl=function(a,b){null!=a?a.getPublicUrl(b):b(null)};EditorUi.prototype.createLoadMessage=function(a){var b=this.editor.graph;return{event:a, -pageVisible:b.pageVisible,translate:b.view.translate,bounds:b.getGraphBounds(),currentPage:this.getSelectedPageIndex(),scale:b.view.scale,page:b.view.getBackgroundPageBounds()}};EditorUi.prototype.installMessageHandler=function(a){var b=null,c=!1,d=!1,f=null,k=mxUtils.bind(this,function(a,b){this.editor.modified&&"0"!=urlParams.modified?null!=urlParams.modified&&this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(urlParams.modified))):this.editor.setStatus("")});this.editor.graph.model.addListener(mxEvent.CHANGE, -k);mxEvent.addListener(window,"message",mxUtils.bind(this,function(g){if(g.source==(window.opener||window.parent)){var h=g.data,k=mxUtils.bind(this,function(a){if(null!=a&&"function"===typeof a.charAt&&"<"!=a.charAt(0))try{"data:image/png;base64,"==a.substring(0,22)?a=this.extractGraphModelFromPng(a):"data:image/svg+xml;base64,"==a.substring(0,26)?a=atob(a.substring(26)):"data:image/svg+xml;utf8,"==a.substring(0,24)&&(a=a.substring(24)),null!=a&&("%"==a.charAt(0)?a=decodeURIComponent(a):"<"!=a.charAt(0)&& -(a=this.editor.graph.decompress(a)))}catch(O){}return a});if("json"==urlParams.proto){try{h=JSON.parse(h)}catch(K){h=null}if(null==h)return;if("dialog"==h.action){this.showError(null!=h.titleKey?mxResources.get(h.titleKey):h.title,null!=h.messageKey?mxResources.get(h.messageKey):h.message,null!=h.buttonKey?mxResources.get(h.buttonKey):h.button);null!=h.modified&&(this.editor.modified=h.modified);return}if("prompt"==h.action){this.spinner.stop();k=new FilenameDialog(this,h.defaultValue||"",null!=h.okKey? -mxResources.get(h.okKey):null,function(a){null!=a&&n.postMessage(JSON.stringify({event:"prompt",value:a,message:h}),"*")},null!=h.titleKey?mxResources.get(h.titleKey):h.title);this.showDialog(k.container,300,80,!0,!1);k.init();return}if("draft"==h.action){var l=k(h.xml);this.spinner.stop();k=new DraftDialog(this,mxResources.get("draftFound",[h.name||this.defaultFilename]),l,mxUtils.bind(this,function(){this.hideDialog();n.postMessage(JSON.stringify({event:"draft",result:"edit",message:h}),"*")}), -mxUtils.bind(this,function(){this.hideDialog();n.postMessage(JSON.stringify({event:"draft",result:"discard",message:h}),"*")}),h.editKey?mxResources.get(h.editKey):null,h.discardKey?mxResources.get(h.discardKey):null,h.ignore?mxUtils.bind(this,function(){this.hideDialog();n.postMessage(JSON.stringify({event:"draft",result:"ignore",message:h}),"*")}):null);this.showDialog(k.container,640,480,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));try{k.init()}catch(K){n.postMessage(JSON.stringify({event:"draft", -error:K.toString(),message:h}),"*")}return}if("template"==h.action){this.spinner.stop();k=1==h.enableRecent;l=1==h.enableSearch;k=new NewDialog(this,!1,null!=h.callback,mxUtils.bind(this,function(b,c){b=b||this.emptyDiagramXml;null!=h.callback?n.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:c}),"*"):(a(b,g,b!=this.emptyDiagramXml),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,k?mxUtils.bind(this,function(a){this.recentReadyCallback= -a;n.postMessage(JSON.stringify({event:"recentDocs"}),"*")}):null,l?mxUtils.bind(this,function(a,b){this.searchReadyCallback=b;n.postMessage(JSON.stringify({event:"searchDocs",searchStr:a}),"*")}):null,function(a,b,c){n.postMessage(JSON.stringify({event:"template",docUrl:a,info:b,name:c}),"*")});this.showDialog(k.container,620,440,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));k.init();return}if("searchDocsList"==h.action)this.searchReadyCallback(h.list,h.errorMsg);else if("recentDocsList"== -h.action)this.recentReadyCallback(h.list,h.errorMsg);else{if("textContent"==h.action){this.editor.graph.setEnabled(!1);var m=this.editor.graph,k="";if(null!=this.pages)for(l=0;l<this.pages.length;l++){var r=m;this.currentPage!=this.pages[l]&&(r=this.createTemporaryGraph(m.getStylesheet()),r.model.setRoot(this.pages[l].root));k+=this.pages[l].getName()+" "+r.getIndexableText()+" "}else k=m.getIndexableText();this.editor.graph.setEnabled(!0);n.postMessage(JSON.stringify({event:"textContent",data:k, -message:h}),"*");return}if("status"==h.action){null!=h.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(h.messageKey))):null!=h.message&&this.editor.setStatus(mxUtils.htmlEntities(h.message));null!=h.modified&&(this.editor.modified=h.modified);return}if("spinner"==h.action){var p=null!=h.messageKey?mxResources.get(h.messageKey):h.message;null==h.show||h.show?this.spinner.spin(document.body,p):this.spinner.stop();return}if("export"==h.action){if("png"==h.format||"xmlpng"==h.format){if(null== -h.spin&&null==h.spinKey||this.spinner.spin(document.body,null!=h.spinKey?mxResources.get(h.spinKey):h.spin)){var q=null!=h.xml?h.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var m=this.editor.graph,t=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();var b=this.createLoadMessage("export");b.format=h.format;b.message=h;b.data=a;b.xml=encodeURIComponent(q);n.postMessage(JSON.stringify(b),"*")}),w=mxUtils.bind(this,function(a){null==a&&(a=Editor.blankImage); -"xmlpng"==h.format&&(a=this.writeGraphModelToPng(a,"zTXt","mxGraphModel",atob(this.editor.graph.compress(q))));m!=this.editor.graph&&m.container.parentNode.removeChild(m.container);t(a)});if(this.isExportToCanvas()){if(null!=this.pages&&this.currentPage!=this.pages[0]){var m=this.createTemporaryGraph(m.getStylesheet()),x=m.getGlobalVariable,z=this.pages[0];m.getGlobalVariable=function(a){return"page"==a?z.getName():"pagenumber"==a?1:x.apply(this,arguments)};document.body.appendChild(m.container); -m.model.setRoot(z.root)}this.exportToCanvas(mxUtils.bind(this,function(a){w(a.toDataURL("image/png"))}),null,null,null,mxUtils.bind(this,function(){w(null)}),null,null,null,null,null,null,m)}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==h.format?"1":"0")+"&base64=1&xml="+encodeURIComponent(encodeURIComponent(q)))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()?t("data:image/png;base64,"+a.getText()):w(null)}),mxUtils.bind(this,function(){w(null)}))}}else{null!= -h.xml&&0<h.xml.length&&this.setFileData(h.xml);p=this.createLoadMessage("export");if("html2"==h.format||"html"==h.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length))k=this.getXmlFileData(),p.xml=mxUtils.getXml(k),p.data=this.getFileData(null,null,!0,null,null,null,k),p.format=h.format;else if("html"==h.format)q=this.editor.getGraphXml(),p.data=this.getHtml(q,this.editor.graph),p.xml=mxUtils.getXml(q),p.format=h.format;else{mxSvgCanvas2D.prototype.foAltText=null;k=this.editor.graph.background; -k==mxConstants.NONE&&(k=null);p.xml=this.getFileData(!0);p.format="svg";if(h.embedImages||null==h.embedImages){if(null==h.spin&&null==h.spinKey||this.spinner.spin(document.body,null!=h.spinKey?mxResources.get(h.spinKey):h.spin))this.editor.graph.setEnabled(!1),"xmlsvg"==h.format?this.getEmbeddedSvg(p.xml,this.editor.graph,null,!0,mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();p.data=this.createSvgDataUri(a);n.postMessage(JSON.stringify(p),"*")})):this.convertImages(this.editor.graph.getSvg(k), -mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();p.data=this.createSvgDataUri(mxUtils.getXml(a));n.postMessage(JSON.stringify(p),"*")}));return}k="xmlsvg"==h.format?this.getEmbeddedSvg(this.getFileData(!0),this.editor.graph,null,!0):mxUtils.getXml(this.editor.graph.getSvg(k));p.data=this.createSvgDataUri(k)}n.postMessage(JSON.stringify(p),"*")}return}if("load"==h.action)d=1==h.autosave,this.hideDialog(),null!=h.modified&&null==urlParams.modified&&(urlParams.modified= -h.modified),null!=h.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=h.saveAndExit),null!=h.title&&null!=this.buttonContainer&&(l=document.createElement("span"),mxUtils.write(l,h.title),"atlas"==uiTheme?(this.buttonContainer.style.paddingRight="12px",this.buttonContainer.style.paddingTop="12px"):"min"!=uiTheme&&(this.buttonContainer.style.paddingRight="38px",this.buttonContainer.style.paddingTop="6px"),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan), -this.buttonContainer.appendChild(l),this.embedFilenameSpan=l),h=null!=h.xmlpng?this.extractGraphModelFromPng(h.xmlpng):h.xml;else{n.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(h)}),"*");return}}}var B=mxUtils.bind(this,function(g,h){c=!0;try{a(g,h)}catch(W){this.handleError(W)}c=!1;null!=urlParams.modified&&this.editor.setStatus("");var k=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}); -f=k();d&&null==b&&(b=mxUtils.bind(this,function(a,b){var d=k();if(d!=f&&!c){var g=this.createLoadMessage("autosave");g.xml=d;d=JSON.stringify(g);(window.opener||window.parent).postMessage(d,"*")}f=d}),this.editor.graph.model.addListener(mxEvent.CHANGE,b),this.editor.graph.addListener("gridSizeChanged",b),this.editor.graph.addListener("shadowVisibleChanged",b),this.addListener("pageFormatChanged",b),this.addListener("pageScaleChanged",b),this.addListener("backgroundColorChanged",b),this.addListener("backgroundImageChanged", -b),this.addListener("foldingEnabledChanged",b),this.addListener("mathEnabledChanged",b),this.addListener("gridEnabledChanged",b),this.addListener("guidesEnabledChanged",b),this.addListener("pageViewChanged",b));"1"!=urlParams.returnbounds&&"json"!=urlParams.proto||n.postMessage(JSON.stringify(this.createLoadMessage("load")),"*")});null!=h&&"function"===typeof h.substring&&"data:application/vnd.visio;base64,"==h.substring(0,34)?(k="0M8R4KGxGuE"==h.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(h.substring(h.indexOf(",")+ -1)),function(a){B(a,g)},mxUtils.bind(this,function(a){this.handleError(a)}),k)):null!=h&&"function"===typeof h.substring&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(h,"")?this.parseFile(new Blob([h],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&200<=a.status&&299>=a.status&&"<mxGraphModel"==a.responseText.substring(0,13)&&B(a.responseText,g)}),""):null!=h&&"function"===typeof h.substring&&this.isLucidChartData(h)?this.convertLucidChart(h, -mxUtils.bind(this,function(a){B(a)}),mxUtils.bind(this,function(a){this.handleError(a)})):(h=k(h),B(h,g))}}));var n=window.opener||window.parent,k="json"==urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";n.postMessage(k,"*")};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar){var a=document.createElement("div");a.style.display="inline-block";a.style.position="absolute";a.style.paddingTop="atlas"==uiTheme?"2px":"3px";a.style.paddingLeft="8px";a.style.paddingBottom= +pageVisible:b.pageVisible,translate:b.view.translate,bounds:b.getGraphBounds(),currentPage:this.getSelectedPageIndex(),scale:b.view.scale,page:b.view.getBackgroundPageBounds()}};EditorUi.prototype.installMessageHandler=function(a){var b=null,d=!1,c=!1,e=null,k=mxUtils.bind(this,function(a,b){this.editor.modified&&"0"!=urlParams.modified?null!=urlParams.modified&&this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(urlParams.modified))):this.editor.setStatus("")});this.editor.graph.model.addListener(mxEvent.CHANGE, +k);mxEvent.addListener(window,"message",mxUtils.bind(this,function(f){if(f.source==(window.opener||window.parent)){var g=f.data,k=mxUtils.bind(this,function(a){if(null!=a&&"function"===typeof a.charAt&&"<"!=a.charAt(0))try{"data:image/png;base64,"==a.substring(0,22)?a=this.extractGraphModelFromPng(a):"data:image/svg+xml;base64,"==a.substring(0,26)?a=atob(a.substring(26)):"data:image/svg+xml;utf8,"==a.substring(0,24)&&(a=a.substring(24)),null!=a&&("%"==a.charAt(0)?a=decodeURIComponent(a):"<"!=a.charAt(0)&& +(a=this.editor.graph.decompress(a)))}catch(V){}return a});if("json"==urlParams.proto){try{g=JSON.parse(g)}catch(O){g=null}if(null==g)return;if("dialog"==g.action){this.showError(null!=g.titleKey?mxResources.get(g.titleKey):g.title,null!=g.messageKey?mxResources.get(g.messageKey):g.message,null!=g.buttonKey?mxResources.get(g.buttonKey):g.button);null!=g.modified&&(this.editor.modified=g.modified);return}if("prompt"==g.action){this.spinner.stop();k=new FilenameDialog(this,g.defaultValue||"",null!=g.okKey? +mxResources.get(g.okKey):null,function(a){null!=a&&m.postMessage(JSON.stringify({event:"prompt",value:a,message:g}),"*")},null!=g.titleKey?mxResources.get(g.titleKey):g.title);this.showDialog(k.container,300,80,!0,!1);k.init();return}if("draft"==g.action){var l=k(g.xml);this.spinner.stop();k=new DraftDialog(this,mxResources.get("draftFound",[g.name||this.defaultFilename]),l,mxUtils.bind(this,function(){this.hideDialog();m.postMessage(JSON.stringify({event:"draft",result:"edit",message:g}),"*")}), +mxUtils.bind(this,function(){this.hideDialog();m.postMessage(JSON.stringify({event:"draft",result:"discard",message:g}),"*")}),g.editKey?mxResources.get(g.editKey):null,g.discardKey?mxResources.get(g.discardKey):null,g.ignore?mxUtils.bind(this,function(){this.hideDialog();m.postMessage(JSON.stringify({event:"draft",result:"ignore",message:g}),"*")}):null);this.showDialog(k.container,640,480,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));try{k.init()}catch(O){m.postMessage(JSON.stringify({event:"draft", +error:O.toString(),message:g}),"*")}return}if("template"==g.action){this.spinner.stop();k=1==g.enableRecent;l=1==g.enableSearch;k=new NewDialog(this,!1,null!=g.callback,mxUtils.bind(this,function(b,d){b=b||this.emptyDiagramXml;null!=g.callback?m.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:d}),"*"):(a(b,f,b!=this.emptyDiagramXml),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,k?mxUtils.bind(this,function(a){this.recentReadyCallback= +a;m.postMessage(JSON.stringify({event:"recentDocs"}),"*")}):null,l?mxUtils.bind(this,function(a,b){this.searchReadyCallback=b;m.postMessage(JSON.stringify({event:"searchDocs",searchStr:a}),"*")}):null,function(a,b,d){m.postMessage(JSON.stringify({event:"template",docUrl:a,info:b,name:d}),"*")});this.showDialog(k.container,620,440,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));k.init();return}if("searchDocsList"==g.action)this.searchReadyCallback(g.list,g.errorMsg);else if("recentDocsList"== +g.action)this.recentReadyCallback(g.list,g.errorMsg);else{if("textContent"==g.action){this.editor.graph.setEnabled(!1);var p=this.editor.graph,k="";if(null!=this.pages)for(l=0;l<this.pages.length;l++){var n=p;this.currentPage!=this.pages[l]&&(n=this.createTemporaryGraph(p.getStylesheet()),n.model.setRoot(this.pages[l].root));k+=this.pages[l].getName()+" "+n.getIndexableText()+" "}else k=p.getIndexableText();this.editor.graph.setEnabled(!0);m.postMessage(JSON.stringify({event:"textContent",data:k, +message:g}),"*");return}if("status"==g.action){null!=g.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(g.messageKey))):null!=g.message&&this.editor.setStatus(mxUtils.htmlEntities(g.message));null!=g.modified&&(this.editor.modified=g.modified);return}if("spinner"==g.action){var q=null!=g.messageKey?mxResources.get(g.messageKey):g.message;null==g.show||g.show?this.spinner.spin(document.body,q):this.spinner.stop();return}if("export"==g.action){if("png"==g.format||"xmlpng"==g.format){if(null== +g.spin&&null==g.spinKey||this.spinner.spin(document.body,null!=g.spinKey?mxResources.get(g.spinKey):g.spin)){var r=null!=g.xml?g.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var p=this.editor.graph,x=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();var b=this.createLoadMessage("export");b.format=g.format;b.message=g;b.data=a;b.xml=encodeURIComponent(r);m.postMessage(JSON.stringify(b),"*")}),B=mxUtils.bind(this,function(a){null==a&&(a=Editor.blankImage); +"xmlpng"==g.format&&(a=this.writeGraphModelToPng(a,"zTXt","mxGraphModel",atob(this.editor.graph.compress(r))));p!=this.editor.graph&&p.container.parentNode.removeChild(p.container);x(a)});if(this.isExportToCanvas()){if(null!=this.pages&&this.currentPage!=this.pages[0]){var p=this.createTemporaryGraph(p.getStylesheet()),E=p.getGlobalVariable,C=this.pages[0];p.getGlobalVariable=function(a){return"page"==a?C.getName():"pagenumber"==a?1:E.apply(this,arguments)};document.body.appendChild(p.container); +p.model.setRoot(C.root)}this.exportToCanvas(mxUtils.bind(this,function(a){B(a.toDataURL("image/png"))}),null,null,null,mxUtils.bind(this,function(){B(null)}),null,null,null,null,null,null,p)}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==g.format?"1":"0")+"&base64=1&xml="+encodeURIComponent(encodeURIComponent(r)))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()?x("data:image/png;base64,"+a.getText()):B(null)}),mxUtils.bind(this,function(){B(null)}))}}else{null!= +g.xml&&0<g.xml.length&&this.setFileData(g.xml);q=this.createLoadMessage("export");if("html2"==g.format||"html"==g.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length))k=this.getXmlFileData(),q.xml=mxUtils.getXml(k),q.data=this.getFileData(null,null,!0,null,null,null,k),q.format=g.format;else if("html"==g.format)r=this.editor.getGraphXml(),q.data=this.getHtml(r,this.editor.graph),q.xml=mxUtils.getXml(r),q.format=g.format;else{mxSvgCanvas2D.prototype.foAltText=null;k=this.editor.graph.background; +k==mxConstants.NONE&&(k=null);q.xml=this.getFileData(!0);q.format="svg";if(g.embedImages||null==g.embedImages){if(null==g.spin&&null==g.spinKey||this.spinner.spin(document.body,null!=g.spinKey?mxResources.get(g.spinKey):g.spin))this.editor.graph.setEnabled(!1),"xmlsvg"==g.format?this.getEmbeddedSvg(q.xml,this.editor.graph,null,!0,mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();q.data=this.createSvgDataUri(a);m.postMessage(JSON.stringify(q),"*")})):this.convertImages(this.editor.graph.getSvg(k), +mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();q.data=this.createSvgDataUri(mxUtils.getXml(a));m.postMessage(JSON.stringify(q),"*")}));return}k="xmlsvg"==g.format?this.getEmbeddedSvg(this.getFileData(!0),this.editor.graph,null,!0):mxUtils.getXml(this.editor.graph.getSvg(k));q.data=this.createSvgDataUri(k)}m.postMessage(JSON.stringify(q),"*")}return}if("load"==g.action)c=1==g.autosave,this.hideDialog(),null!=g.modified&&null==urlParams.modified&&(urlParams.modified= +g.modified),null!=g.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=g.saveAndExit),null!=g.title&&null!=this.buttonContainer&&(l=document.createElement("span"),mxUtils.write(l,g.title),"atlas"==uiTheme?(this.buttonContainer.style.paddingRight="12px",this.buttonContainer.style.paddingTop="12px"):"min"!=uiTheme&&(this.buttonContainer.style.paddingRight="38px",this.buttonContainer.style.paddingTop="6px"),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan), +this.buttonContainer.appendChild(l),this.embedFilenameSpan=l),g=null!=g.xmlpng?this.extractGraphModelFromPng(g.xmlpng):g.xml;else{m.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(g)}),"*");return}}}var v=mxUtils.bind(this,function(f,g){d=!0;try{a(f,g)}catch(W){this.handleError(W)}d=!1;null!=urlParams.modified&&this.editor.setStatus("");var k=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}); +e=k();c&&null==b&&(b=mxUtils.bind(this,function(a,b){var c=k();if(c!=e&&!d){var f=this.createLoadMessage("autosave");f.xml=c;c=JSON.stringify(f);(window.opener||window.parent).postMessage(c,"*")}e=c}),this.editor.graph.model.addListener(mxEvent.CHANGE,b),this.editor.graph.addListener("gridSizeChanged",b),this.editor.graph.addListener("shadowVisibleChanged",b),this.addListener("pageFormatChanged",b),this.addListener("pageScaleChanged",b),this.addListener("backgroundColorChanged",b),this.addListener("backgroundImageChanged", +b),this.addListener("foldingEnabledChanged",b),this.addListener("mathEnabledChanged",b),this.addListener("gridEnabledChanged",b),this.addListener("guidesEnabledChanged",b),this.addListener("pageViewChanged",b));"1"!=urlParams.returnbounds&&"json"!=urlParams.proto||m.postMessage(JSON.stringify(this.createLoadMessage("load")),"*")});null!=g&&"function"===typeof g.substring&&"data:application/vnd.visio;base64,"==g.substring(0,34)?(k="0M8R4KGxGuE"==g.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(g.substring(g.indexOf(",")+ +1)),function(a){v(a,f)},mxUtils.bind(this,function(a){this.handleError(a)}),k)):null!=g&&"function"===typeof g.substring&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(g,"")?this.parseFile(new Blob([g],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&200<=a.status&&299>=a.status&&"<mxGraphModel"==a.responseText.substring(0,13)&&v(a.responseText,f)}),""):null!=g&&"function"===typeof g.substring&&this.isLucidChartData(g)?this.convertLucidChart(g, +mxUtils.bind(this,function(a){v(a)}),mxUtils.bind(this,function(a){this.handleError(a)})):(g=k(g),v(g,f))}}));var m=window.opener||window.parent,k="json"==urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";m.postMessage(k,"*")};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar){var a=document.createElement("div");a.style.display="inline-block";a.style.position="absolute";a.style.paddingTop="atlas"==uiTheme?"2px":"3px";a.style.paddingLeft="8px";a.style.paddingBottom= "2px";var b=document.createElement("button");mxUtils.write(b,mxResources.get("save"));b.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)");b.className="geBigButton";b.style.fontSize="12px";b.style.padding="4px 6px 4px 6px";b.style.borderRadius="3px";mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()}));a.appendChild(b);"1"==urlParams.saveAndExit&&(b=document.createElement("a"),mxUtils.write(b,mxResources.get("saveAndExit")),b.setAttribute("title", mxResources.get("saveAndExit")),b.style.fontSize="12px",b.style.marginLeft="6px",b.style.padding="4px",b.style.cursor="pointer",mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b));b=document.createElement("a");mxUtils.write(b,mxResources.get("exit"));b.setAttribute("title",mxResources.get("exit"));b.style.fontSize="12px";b.style.marginLeft="6px";b.style.marginRight="20px";b.style.padding="4px";b.style.cursor="pointer";mxEvent.addListener(b, "click",mxUtils.bind(this,function(){this.actions.get("exit").funct()}));a.appendChild(b);this.toolbar.container.appendChild(a);this.toolbar.staticElements.push(a);a.style.right="atlas"!=uiTheme?"52px":"42px"}};EditorUi.prototype.showImportCsvDialog=function(){null==this.importCsvDialog&&(this.importCsvDialog=new TextareaDialog(this,mxResources.get("csv")+":",Editor.defaultCsvValue,mxUtils.bind(this,function(a){this.importCsv(a)}),null,null,620,430,null,!0,!0,mxResources.get("import")));this.showDialog(this.importCsvDialog.container, -640,520,!0,!0);this.importCsvDialog.init()};EditorUi.prototype.importCsv=function(a,b){try{var c=a.split("\n"),d=[];if(0<c.length){var f={},g=null,k=null,n=null,p=null,q="",w="auto",u="auto",A=null,F=null,Q=40,G=40,I=100,M=0,z=this.editor.graph;z.getGraphBounds();for(var B=function(){null!=b?b(fa):(z.setSelectionCells(fa),z.scrollCellToVisible(z.getSelectionCell()))},K=z.getFreeInsertPoint(),O=K.x,T=K.y,K=T,W=null,V="auto",p=null,J=[],ha=null,na=null,Y=0;Y<c.length&&"#"==c[Y].charAt(0);){a=c[Y];for(Y++;Y< -c.length&&"\\"==a.charAt(a.length-1)&&"#"==c[Y].charAt(0);)a=a.substring(0,a.length-1)+mxUtils.trim(c[Y].substring(1)),Y++;if("#"!=a.charAt(1)){var ba=a.indexOf(":");if(0<ba){var N=mxUtils.trim(a.substring(1,ba)),H=mxUtils.trim(a.substring(ba+1));"label"==N?W=z.sanitizeHtml(H):"style"==N?g=H:"parentstyle"==N?k=H:"identity"==N&&0<H.length&&"-"!=H?n=H:"parent"==N&&0<H.length&&"-"!=H?p=H:"namespace"==N&&0<H.length&&"-"!=H?q=H:"width"==N?w=H:"height"==N?u=H:"left"==N&&0<H.length?A=H:"top"==N&&0<H.length? -F=H:"ignore"==N?na=H.split(","):"connect"==N?J.push(JSON.parse(H)):"link"==N?ha=H:"padding"==N?M=parseFloat(H):"edgespacing"==N?Q=parseFloat(H):"nodespacing"==N?G=parseFloat(H):"levelspacing"==N?I=parseFloat(H):"layout"==N&&(V=H)}}}var U=this.editor.csvToArray(c[Y]),N=ba=null;if(null!=n||null!=p)for(var L=0;L<U.length;L++)n==U[L]&&(ba=L),p==U[L]&&(N=L);null==W&&(W="%"+U[0]+"%");if(null!=J)for(var P=0;P<J.length;P++)null==f[J[P].to]&&(f[J[P].to]={});z.model.beginUpdate();try{for(L=Y+1;L<c.length;L++){var R= -this.editor.csvToArray(c[L]);if(null==R){var ja=40<c[L].length?c[L].substring(0,40)+"...":c[L];throw Error(L+" ("+ja+") "+mxResources.get("containsValidationErrors"));}if(R.length==U.length){var E=null,ea=null!=ba?q+R[ba]:null;null!=ea&&(E=z.model.getCell(ea));null==E&&(E=new mxCell(W,new mxGeometry(O,K,0,0),g||"whiteSpace=wrap;html=1;"),E.vertex=!0,E.id=ea);for(var X=0;X<R.length;X++)z.setAttributeForCell(E,U[X],R[X]);z.setAttributeForCell(E,"placeholders","1");E.style=z.replacePlaceholders(E,E.style); -for(P=0;P<J.length;P++)f[J[P].to][E.getAttribute(J[P].to)]=E;null!=ha&&"link"!=ha&&(z.setLinkForCell(E,E.getAttribute(ha)),z.setAttributeForCell(E,ha,null));z.fireEvent(new mxEventObject("cellsInserted","cells",[E]));var Z=this.editor.graph.getPreferredSizeForCell(E);E.vertex&&(null!=A&&null!=E.getAttribute(A)&&(E.geometry.x=O+parseFloat(E.getAttribute(A))),null!=F&&null!=E.getAttribute(F)&&(E.geometry.y=T+parseFloat(E.getAttribute(F))),"@"==w.charAt(0)&&null!=E.getAttribute(w.substring(1))?E.geometry.width= -parseFloat(E.getAttribute(w.substring(1))):E.geometry.width="auto"==w?Z.width+M:parseFloat(w),"@"==u.charAt(0)&&null!=E.getAttribute(u.substring(1))?E.geometry.height=parseFloat(E.getAttribute(u.substring(1))):E.geometry.height="auto"==u?Z.height+M:parseFloat(u),K+=E.geometry.height+G);p=null!=N?z.model.getCell(q+R[N]):null;null!=p?(p.style=z.replacePlaceholders(p,k),z.addCell(E,p)):d.push(z.addCell(E))}}for(var ca=d.slice(),fa=d.slice(),P=0;P<J.length;P++)for(var aa=J[P],L=0;L<d.length;L++){var E= -d[L],qa=E.getAttribute(aa.from);if(null!=qa){z.setAttributeForCell(E,aa.from,null);for(var sa=qa.split(","),X=0;X<sa.length;X++){var la=f[aa.to][sa[X]];null!=la&&(W=aa.label,null!=aa.fromlabel&&(W=(E.getAttribute(aa.fromlabel)||"")+(W||"")),null!=aa.tolabel&&(W=(W||"")+(la.getAttribute(aa.tolabel)||"")),fa.push(z.insertEdge(null,null,W||"",aa.invert?la:E,aa.invert?E:la,aa.style||z.createCurrentEdgeStyle())),mxUtils.remove(aa.invert?E:la,ca))}}}if(null!=na)for(L=0;L<d.length;L++)for(E=d[L],X=0;X<na.length;X++)z.setAttributeForCell(E, -mxUtils.trim(na[X]),null);var oa=new mxParallelEdgeLayout(z);oa.spacing=Q;var va=function(){oa.execute(z.getDefaultParent());for(var a=0;a<d.length;a++){var b=z.getCellGeometry(d[a]);b.x=Math.round(z.snap(b.x));b.y=Math.round(z.snap(b.y));"auto"==w&&(b.width=Math.round(z.snap(b.width)));"auto"==u&&(b.height=Math.round(z.snap(b.height)))}};if("circle"==V){var ka=new mxCircleLayout(z);ka.resetEdges=!1;var ta=ka.isVertexIgnored;ka.isVertexIgnored=function(a){return ta.apply(this,arguments)||0>mxUtils.indexOf(d, -a)};this.executeLayout(function(){ka.execute(z.getDefaultParent());va()},!0,B);B=null}else if("horizontaltree"==V||"verticaltree"==V||"auto"==V&&fa.length==2*d.length-1&&1==ca.length){z.view.validate();var ia=new mxCompactTreeLayout(z,"horizontaltree"==V);ia.levelDistance=G;ia.edgeRouting=!1;ia.resetEdges=!1;this.executeLayout(function(){ia.execute(z.getDefaultParent(),0<ca.length?ca[0]:null)},!0,B);B=null}else if("horizontalflow"==V||"verticalflow"==V||"auto"==V&&1==ca.length){z.view.validate(); -var ga=new mxHierarchicalLayout(z,"horizontalflow"==V?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);ga.intraCellSpacing=G;ga.parallelEdgeSpacing=Q;ga.interRankCellSpacing=I;ga.disableEdgeStyle=!1;this.executeLayout(function(){ga.execute(z.getDefaultParent(),fa);z.moveCells(fa,O,T)},!0,B);B=null}else if("organic"==V||"auto"==V&&fa.length>d.length){z.view.validate();var da=new mxFastOrganicLayout(z);da.forceConstant=3*G;da.resetEdges=!1;var ya=da.isVertexIgnored;da.isVertexIgnored=function(a){return ya.apply(this, -arguments)||0>mxUtils.indexOf(d,a)};oa=new mxParallelEdgeLayout(z);oa.spacing=Q;this.executeLayout(function(){da.execute(z.getDefaultParent());va()},!0,B);B=null}this.hideDialog()}finally{z.model.endUpdate()}null!=B&&B()}}catch(wa){this.handleError(wa)}};EditorUi.prototype.getSearch=function(a){var b="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=a&&0<window.location.search.length){var c="?",d;for(d in urlParams)0>mxUtils.indexOf(a,d)&&null!=urlParams[d]&&(b+=c+d+"="+urlParams[d],c="&")}else b= -window.location.search;return b};EditorUi.prototype.getUrl=function(a){a=null!=a?a:window.location.pathname;var b=0<a.indexOf("?")?1:0;if("1"==urlParams.offline)a+=window.location.search;else{var c="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),d;for(d in urlParams)0>mxUtils.indexOf(c,d)&&(a=0==b?a+"?":a+"&",null!=urlParams[d]&&(a+=d+"="+urlParams[d],b++))}return a};EditorUi.prototype.showLinkDialog=function(a,b,d){a=new LinkDialog(this,a,b,d, -!0);this.showDialog(a.container,480,130,!0,!0);a.init()};var p=EditorUi.prototype.createOutline;EditorUi.prototype.createOutline=function(a){var b=p.apply(this,arguments),c=this.editor.graph,d=b.getSourceGraphBounds;b.getSourceGraphBounds=function(){if(mxUtils.hasScrollbars(c.container)&&c.pageVisible&&null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width-2*a.x/b),Math.ceil(this.source.minimumGraphSize.height- -2*a.y/b))}return d.apply(this,arguments)};var f=b.getSourceContainerSize;b.getSourceContainerSize=function(){if(mxUtils.hasScrollbars(c.container)&&null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width*b-2*a.x),Math.ceil(this.source.minimumGraphSize.height*b-2*a.y))}return f.apply(this,arguments)};b.getOutlineOffset=function(a){if(mxUtils.hasScrollbars(c.container)&&null!=this.source.minimumGraphSize){var d= -this.source.getPagePadding();return new mxPoint(Math.round(Math.max(0,(b.outline.container.clientWidth/a-(this.source.minimumGraphSize.width-2*d.x))/2)-d.x),Math.round(Math.max(0,(b.outline.container.clientHeight/a-(this.source.minimumGraphSize.height-2*d.y))/2)-d.y-5/a))}return new mxPoint(8/a,8/a)};var k=b.init;b.init=function(){k.apply(this,arguments);b.outline.view.getBackgroundPageBounds=function(){var a=c.getPageLayout(),b=c.getPageSize();return new mxRectangle(this.scale*(this.translate.x+ -a.x*b.width),this.scale*(this.translate.y+a.y*b.height),this.scale*a.width*b.width,this.scale*a.height*b.height)};b.outline.view.validateBackgroundPage()};this.editor.addListener("pageSelected",function(a,c){var d=c.getProperty("change"),f=b.source,g=b.outline;g.pageScale=f.pageScale;g.pageFormat=f.pageFormat;g.background=f.background;g.pageVisible=f.pageVisible;g.background=f.background;var h=mxUtils.getCurrentStyle(f.container);g.container.style.backgroundColor=h.backgroundColor;null!=f.view.backgroundPageShape&& -null!=g.view.backgroundPageShape&&(g.view.backgroundPageShape.fill=f.view.backgroundPageShape.fill);b.outline.view.clear(d.previousPage.root,!0);b.outline.view.validate()});return b};EditorUi.prototype.getServiceCount=function(a,b){var c=0;null==this.drive&&"function"!==typeof window.DriveClient||c++;b||null==this.dropbox&&"function"!==typeof window.DropboxClient||c++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||c++;b||null==this.gitHub||c++;b||null==this.trello&&"function"!==typeof window.TrelloClient|| -c++;c++;return c};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var a=this.getCurrentFile(),b=null!=a||"1"==urlParams.embed&&this.editor.graph.isEnabled();this.menus.get("viewPanels").setEnabled(b);this.menus.get("viewZoom").setEnabled(b);var d=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==a||a.isRestricted());this.actions.get("makeCopy").setEnabled(!d);this.actions.get("print").setEnabled(!d);this.menus.get("exportAs").setEnabled(!d); -this.menus.get("embed").setEnabled(!d);d="1"!=urlParams.embed||this.editor.graph.isEnabled();this.menus.get("extras").setEnabled(d);Editor.enableCustomLibraries&&(this.menus.get("openLibraryFrom").setEnabled(d),this.menus.get("newLibrary").setEnabled(d));a="1"==urlParams.embed&&this.editor.graph.isEnabled()||null!=a&&a.isEditable();this.actions.get("image").setEnabled(b);this.actions.get("zoomIn").setEnabled(b);this.actions.get("zoomOut").setEnabled(b);this.actions.get("resetView").setEnabled(b); -this.actions.get("undo").setEnabled(this.canUndo()&&a);this.actions.get("redo").setEnabled(this.canRedo()&&a);this.menus.get("edit").setEnabled(b);this.menus.get("view").setEnabled(b);this.menus.get("importFrom").setEnabled(a);this.menus.get("arrange").setEnabled(a);null!=this.toolbar&&(null!=this.toolbar.edgeShapeMenu&&this.toolbar.edgeShapeMenu.setEnabled(a),null!=this.toolbar.edgeStyleMenu&&this.toolbar.edgeStyleMenu.setEnabled(a));if(this.isAppCache()){var f=applicationCache;if(null!=f&&null== +640,520,!0,!0);this.importCsvDialog.init()};EditorUi.prototype.importCsv=function(a,b){try{var d=a.split("\n"),c=[];if(0<d.length){var e={},f=null,k=null,m=null,q=null,r="",u="auto",A="auto",v=null,z=null,S=40,N=40,K=100,E=0,C=this.editor.graph;C.getGraphBounds();for(var M=function(){null!=b?b(ga):(C.setSelectionCells(ga),C.scrollCellToVisible(C.getSelectionCell()))},O=C.getFreeInsertPoint(),V=O.x,T=O.y,O=T,W=null,J="auto",q=null,X=[],la=null,fa=null,Y=0;Y<d.length&&"#"==d[Y].charAt(0);){a=d[Y];for(Y++;Y< +d.length&&"\\"==a.charAt(a.length-1)&&"#"==d[Y].charAt(0);)a=a.substring(0,a.length-1)+mxUtils.trim(d[Y].substring(1)),Y++;if("#"!=a.charAt(1)){var ca=a.indexOf(":");if(0<ca){var H=mxUtils.trim(a.substring(1,ca)),I=mxUtils.trim(a.substring(ca+1));"label"==H?W=C.sanitizeHtml(I):"style"==H?f=I:"parentstyle"==H?k=I:"identity"==H&&0<I.length&&"-"!=I?m=I:"parent"==H&&0<I.length&&"-"!=I?q=I:"namespace"==H&&0<I.length&&"-"!=I?r=I:"width"==H?u=I:"height"==H?A=I:"left"==H&&0<I.length?v=I:"top"==H&&0<I.length? +z=I:"ignore"==H?fa=I.split(","):"connect"==H?X.push(JSON.parse(I)):"link"==H?la=I:"padding"==H?E=parseFloat(I):"edgespacing"==H?S=parseFloat(I):"nodespacing"==H?N=parseFloat(I):"levelspacing"==H?K=parseFloat(I):"layout"==H&&(J=I)}}}var aa=this.editor.csvToArray(d[Y]),H=ca=null;if(null!=m||null!=q)for(var L=0;L<aa.length;L++)m==aa[L]&&(ca=L),q==aa[L]&&(H=L);null==W&&(W="%"+aa[0]+"%");if(null!=X)for(var P=0;P<X.length;P++)null==e[X[P].to]&&(e[X[P].to]={});C.model.beginUpdate();try{for(L=Y+1;L<d.length;L++){var da= +this.editor.csvToArray(d[L]);if(null==da){var Z=40<d[L].length?d[L].substring(0,40)+"...":d[L];throw Error(L+" ("+Z+") "+mxResources.get("containsValidationErrors"));}if(da.length==aa.length){var G=null,ja=null!=ca?r+da[ca]:null;null!=ja&&(G=C.model.getCell(ja));null==G&&(G=new mxCell(W,new mxGeometry(V,O,0,0),f||"whiteSpace=wrap;html=1;"),G.vertex=!0,G.id=ja);for(var Q=0;Q<da.length;Q++)C.setAttributeForCell(G,aa[Q],da[Q]);C.setAttributeForCell(G,"placeholders","1");G.style=C.replacePlaceholders(G, +G.style);for(P=0;P<X.length;P++)e[X[P].to][G.getAttribute(X[P].to)]=G;null!=la&&"link"!=la&&(C.setLinkForCell(G,G.getAttribute(la)),C.setAttributeForCell(G,la,null));C.fireEvent(new mxEventObject("cellsInserted","cells",[G]));var ha=this.editor.graph.getPreferredSizeForCell(G);G.vertex&&(null!=v&&null!=G.getAttribute(v)&&(G.geometry.x=V+parseFloat(G.getAttribute(v))),null!=z&&null!=G.getAttribute(z)&&(G.geometry.y=T+parseFloat(G.getAttribute(z))),"@"==u.charAt(0)&&null!=G.getAttribute(u.substring(1))? +G.geometry.width=parseFloat(G.getAttribute(u.substring(1))):G.geometry.width="auto"==u?ha.width+E:parseFloat(u),"@"==A.charAt(0)&&null!=G.getAttribute(A.substring(1))?G.geometry.height=parseFloat(G.getAttribute(A.substring(1))):G.geometry.height="auto"==A?ha.height+E:parseFloat(A),O+=G.geometry.height+N);q=null!=H?C.model.getCell(r+da[H]):null;null!=q?(q.style=C.replacePlaceholders(q,k),C.addCell(G,q)):c.push(C.addCell(G))}}for(var ka=c.slice(),ga=c.slice(),P=0;P<X.length;P++)for(var ba=X[P],L=0;L< +c.length;L++){var G=c[L],wa=G.getAttribute(ba.from);if(null!=wa){C.setAttributeForCell(G,ba.from,null);for(var ua=wa.split(","),Q=0;Q<ua.length;Q++){var pa=e[ba.to][ua[Q]];null!=pa&&(W=ba.label,null!=ba.fromlabel&&(W=(G.getAttribute(ba.fromlabel)||"")+(W||"")),null!=ba.tolabel&&(W=(W||"")+(pa.getAttribute(ba.tolabel)||"")),ga.push(C.insertEdge(null,null,W||"",ba.invert?pa:G,ba.invert?G:pa,ba.style||C.createCurrentEdgeStyle())),mxUtils.remove(ba.invert?G:pa,ka))}}}if(null!=fa)for(L=0;L<c.length;L++)for(G= +c[L],Q=0;Q<fa.length;Q++)C.setAttributeForCell(G,mxUtils.trim(fa[Q]),null);var ta=new mxParallelEdgeLayout(C);ta.spacing=S;var va=function(){ta.execute(C.getDefaultParent());for(var a=0;a<c.length;a++){var b=C.getCellGeometry(c[a]);b.x=Math.round(C.snap(b.x));b.y=Math.round(C.snap(b.y));"auto"==u&&(b.width=Math.round(C.snap(b.width)));"auto"==A&&(b.height=Math.round(C.snap(b.height)))}};if("circle"==J){var ma=new mxCircleLayout(C);ma.resetEdges=!1;var ra=ma.isVertexIgnored;ma.isVertexIgnored=function(a){return ra.apply(this, +arguments)||0>mxUtils.indexOf(c,a)};this.executeLayout(function(){ma.execute(C.getDefaultParent());va()},!0,M);M=null}else if("horizontaltree"==J||"verticaltree"==J||"auto"==J&&ga.length==2*c.length-1&&1==ka.length){C.view.validate();var ia=new mxCompactTreeLayout(C,"horizontaltree"==J);ia.levelDistance=N;ia.edgeRouting=!1;ia.resetEdges=!1;this.executeLayout(function(){ia.execute(C.getDefaultParent(),0<ka.length?ka[0]:null)},!0,M);M=null}else if("horizontalflow"==J||"verticalflow"==J||"auto"==J&& +1==ka.length){C.view.validate();var ea=new mxHierarchicalLayout(C,"horizontalflow"==J?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);ea.intraCellSpacing=N;ea.parallelEdgeSpacing=S;ea.interRankCellSpacing=K;ea.disableEdgeStyle=!1;this.executeLayout(function(){ea.execute(C.getDefaultParent(),ga);C.moveCells(ga,V,T)},!0,M);M=null}else if("organic"==J||"auto"==J&&ga.length>c.length){C.view.validate();var sa=new mxFastOrganicLayout(C);sa.forceConstant=3*N;sa.resetEdges=!1;var xa=sa.isVertexIgnored; +sa.isVertexIgnored=function(a){return xa.apply(this,arguments)||0>mxUtils.indexOf(c,a)};ta=new mxParallelEdgeLayout(C);ta.spacing=S;this.executeLayout(function(){sa.execute(C.getDefaultParent());va()},!0,M);M=null}this.hideDialog()}finally{C.model.endUpdate()}null!=M&&M()}}catch(na){this.handleError(na)}};EditorUi.prototype.getSearch=function(a){var b="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=a&&0<window.location.search.length){var d="?",c;for(c in urlParams)0>mxUtils.indexOf(a,c)&& +null!=urlParams[c]&&(b+=d+c+"="+urlParams[c],d="&")}else b=window.location.search;return b};EditorUi.prototype.getUrl=function(a){a=null!=a?a:window.location.pathname;var b=0<a.indexOf("?")?1:0;if("1"==urlParams.offline)a+=window.location.search;else{var d="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),c;for(c in urlParams)0>mxUtils.indexOf(d,c)&&(a=0==b?a+"?":a+"&",null!=urlParams[c]&&(a+=c+"="+urlParams[c],b++))}return a};EditorUi.prototype.showLinkDialog= +function(a,b,c){a=new LinkDialog(this,a,b,c,!0);this.showDialog(a.container,480,130,!0,!0);a.init()};var r=EditorUi.prototype.createOutline;EditorUi.prototype.createOutline=function(a){var b=r.apply(this,arguments),d=this.editor.graph,c=b.getSourceGraphBounds;b.getSourceGraphBounds=function(){if(mxUtils.hasScrollbars(d.container)&&d.pageVisible&&null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width- +2*a.x/b),Math.ceil(this.source.minimumGraphSize.height-2*a.y/b))}return c.apply(this,arguments)};var e=b.getSourceContainerSize;b.getSourceContainerSize=function(){if(mxUtils.hasScrollbars(d.container)&&null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width*b-2*a.x),Math.ceil(this.source.minimumGraphSize.height*b-2*a.y))}return e.apply(this,arguments)};b.getOutlineOffset=function(a){if(mxUtils.hasScrollbars(d.container)&& +null!=this.source.minimumGraphSize){var c=this.source.getPagePadding();return new mxPoint(Math.round(Math.max(0,(b.outline.container.clientWidth/a-(this.source.minimumGraphSize.width-2*c.x))/2)-c.x),Math.round(Math.max(0,(b.outline.container.clientHeight/a-(this.source.minimumGraphSize.height-2*c.y))/2)-c.y-5/a))}return new mxPoint(8/a,8/a)};var k=b.init;b.init=function(){k.apply(this,arguments);b.outline.view.getBackgroundPageBounds=function(){var a=d.getPageLayout(),b=d.getPageSize();return new mxRectangle(this.scale* +(this.translate.x+a.x*b.width),this.scale*(this.translate.y+a.y*b.height),this.scale*a.width*b.width,this.scale*a.height*b.height)};b.outline.view.validateBackgroundPage()};this.editor.addListener("pageSelected",function(a,d){var c=d.getProperty("change"),e=b.source,f=b.outline;f.pageScale=e.pageScale;f.pageFormat=e.pageFormat;f.background=e.background;f.pageVisible=e.pageVisible;f.background=e.background;var g=mxUtils.getCurrentStyle(e.container);f.container.style.backgroundColor=g.backgroundColor; +null!=e.view.backgroundPageShape&&null!=f.view.backgroundPageShape&&(f.view.backgroundPageShape.fill=e.view.backgroundPageShape.fill);b.outline.view.clear(c.previousPage.root,!0);b.outline.view.validate()});return b};EditorUi.prototype.getServiceCount=function(a,b){var d=0;null==this.drive&&"function"!==typeof window.DriveClient||d++;b||null==this.dropbox&&"function"!==typeof window.DropboxClient||d++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||d++;b||null==this.gitHub||d++;b|| +null==this.trello&&"function"!==typeof window.TrelloClient||d++;d++;return d};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var a=this.getCurrentFile(),b=null!=a||"1"==urlParams.embed&&this.editor.graph.isEnabled();this.menus.get("viewPanels").setEnabled(b);this.menus.get("viewZoom").setEnabled(b);var c=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==a||a.isRestricted());this.actions.get("makeCopy").setEnabled(!c);this.actions.get("print").setEnabled(!c); +this.menus.get("exportAs").setEnabled(!c);this.menus.get("embed").setEnabled(!c);c="1"!=urlParams.embed||this.editor.graph.isEnabled();this.menus.get("extras").setEnabled(c);Editor.enableCustomLibraries&&(this.menus.get("openLibraryFrom").setEnabled(c),this.menus.get("newLibrary").setEnabled(c));a="1"==urlParams.embed&&this.editor.graph.isEnabled()||null!=a&&a.isEditable();this.actions.get("image").setEnabled(b);this.actions.get("zoomIn").setEnabled(b);this.actions.get("zoomOut").setEnabled(b);this.actions.get("resetView").setEnabled(b); +this.actions.get("undo").setEnabled(this.canUndo()&&a);this.actions.get("redo").setEnabled(this.canRedo()&&a);this.menus.get("edit").setEnabled(b);this.menus.get("view").setEnabled(b);this.menus.get("importFrom").setEnabled(a);this.menus.get("arrange").setEnabled(a);null!=this.toolbar&&(null!=this.toolbar.edgeShapeMenu&&this.toolbar.edgeShapeMenu.setEnabled(a),null!=this.toolbar.edgeStyleMenu&&this.toolbar.edgeStyleMenu.setEnabled(a));if(this.isAppCache()){var e=applicationCache;if(null!=e&&null== this.offlineStatus){this.offlineStatus=document.createElement("div");this.offlineStatus.className="geItem";this.offlineStatus.style.position="absolute";this.offlineStatus.style.fontSize="8pt";this.offlineStatus.style.top="2px";this.offlineStatus.style.right="12px";this.offlineStatus.style.color="#666";this.offlineStatus.style.margin="4px";this.offlineStatus.style.padding="2px";this.offlineStatus.style.verticalAlign="middle";this.offlineStatus.innerHTML="";this.menubarContainer.appendChild(this.offlineStatus); -mxEvent.addListener(this.offlineStatus,"click",mxUtils.bind(this,function(){var a=this.offlineStatus.getElementsByTagName("img");null!=a&&0<a.length&&this.alert(a[0].getAttribute("title"))}));var f=window.applicationCache,k=null,b=mxUtils.bind(this,function(){var a=f.status,b;a==f.CHECKING&&(a=f.DOWNLOADING);switch(a){case f.UNCACHED:b="";break;case f.IDLE:b="min"==uiTheme?"":'<img title="draw.io is up to date." border="0" src="'+IMAGE_PATH+'/checkmark.gif"/>';break;case f.DOWNLOADING:b='<img title="Downloading new version..." border="0" src="'+ -IMAGE_PATH+'/spin.gif"/>';break;case f.UPDATEREADY:b='<img title="'+mxUtils.htmlEntities(mxResources.get("restartForChangeRequired"))+'" border="0" src="'+IMAGE_PATH+'/download.png"/>';break;case f.OBSOLETE:b='<img title="Obsolete" border="0" src="'+IMAGE_PATH+'/clear.gif"/>';break;default:b='<img title="Unknown" border="0" src="'+IMAGE_PATH+'/clear.gif"/>'}a!=k&&(this.offlineStatus.innerHTML=b,k=a)});mxEvent.addListener(f,"checking",b);mxEvent.addListener(f,"noupdate",b);mxEvent.addListener(f,"downloading", -b);mxEvent.addListener(f,"progress",b);mxEvent.addListener(f,"cached",b);mxEvent.addListener(f,"updateready",b);mxEvent.addListener(f,"obsolete",b);mxEvent.addListener(f,"error",b);b()}}else this.updateUserElement()};EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=function(){};EditorUi.prototype.isDiagramActive=function(){var a=this.getCurrentFile();return null!=a&&a.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};var q=EditorUi.prototype.updateActionStates; -EditorUi.prototype.updateActionStates=function(){q.apply(this,arguments);var a=this.editor.graph,b=this.isDiagramActive(),d=this.getCurrentFile();this.actions.get("pageSetup").setEnabled(b);this.actions.get("autosave").setEnabled(null!=d&&d.isEditable()&&d.isAutosaveOptional());this.actions.get("guides").setEnabled(b);this.actions.get("editData").setEnabled(b);this.actions.get("shadowVisible").setEnabled(b);this.actions.get("connectionArrows").setEnabled(b);this.actions.get("connectionPoints").setEnabled(b); -this.actions.get("copyStyle").setEnabled(b&&!a.isSelectionEmpty());this.actions.get("pasteStyle").setEnabled(b&&!a.isSelectionEmpty());this.actions.get("editGeometry").setEnabled(a.getModel().isVertex(a.getSelectionCell()));this.actions.get("createShape").setEnabled(b);this.actions.get("createRevision").setEnabled(b);this.actions.get("moveToFolder").setEnabled(null!=d);this.actions.get("makeCopy").setEnabled(null!=d&&!d.isRestricted());this.actions.get("editDiagram").setEnabled(b&&(null==d||!d.isRestricted())); -this.actions.get("publishLink").setEnabled(null!=d&&!d.isRestricted());this.actions.get("tags").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("find").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("layers").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("outline").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("rename").setEnabled(null!=d&&d.isRenamable()||"1"==urlParams.embed); -this.actions.get("close").setEnabled(null!=d);this.menus.get("publish").setEnabled(null!=d&&!d.isRestricted());a=a.view.getState(a.getSelectionCell());this.actions.get("editShape").setEnabled(b&&null!=a&&null!=a.shape&&null!=a.shape.stencil)};var w=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){this.editUpdateListener&&(this.editor.undoManager.removeListener(this.editUpdateListener),this.editUpdateListener=null);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog), -this.exportDialog=null);w.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(a,b,d,f,k,m){var c=a.editor.graph;if("xml"==d)a.hideDialog(),a.saveData(b,"xml",mxUtils.getXml(a.editor.getGraphXml()),"text/xml");else if("svg"==d)a.hideDialog(),a.saveData(b,"svg",mxUtils.getXml(c.getSvg(f,k,m)),"image/svg+xml");else{var g=a.getFileData(!0,null,null,null,null,!0),h=c.getGraphBounds(),l=Math.floor(h.width*k/c.view.scale), -n=Math.floor(h.height*k/c.view.scale);g.length<=MAX_REQUEST_SIZE&&l*n<MAX_AREA?(a.hideDialog(),a.saveRequest(b,d,function(a,b){return new mxXmlRequest(EXPORT_URL,"format="+d+"&base64="+(b||"0")+(null!=a?"&filename="+encodeURIComponent(a):"")+"&bg="+(null!=f?f:"none")+"&w="+l+"&h="+n+"&border="+m+"&xml="+encodeURIComponent(g))})):mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.updateEditReferences=function(a){for(var b=0;b<a.changes.length;b++){var c=a.changes[b];if(null!=c&& -c.constructor==mxChildChange&&null!=c.child){var d=c.child;if(null!=d.source&&null!=d.source.id){var f=this.getFutureCellForEdit(c.model,a,d.source.id);f!=d.source&&(d.source=f)}null!=d.target&&null!=d.target.id&&(c=this.getFutureCellForEdit(c.model,a,d.target.id),c!=d.target&&(d.target=c))}}};EditorUi.prototype.getFutureCellForEdit=function(a,b,d){var c=a.getCell(d);if(null==c)for(var f=b.changes.length-1;0<=f;f--){var g=b.changes[f];if(g.constructor==mxChildChange&&null!=g.child&&g.child.id==d){a.contains(g.previous)&& -(c=g.child);break}}return c}})();function DiagramPage(a){this.node=a;null==this.getId()&&this.node.setAttribute("id",Editor.guid())}DiagramPage.prototype.node=null;DiagramPage.prototype.root=null;DiagramPage.prototype.viewState=null;DiagramPage.prototype.getId=function(){return this.node.getAttribute("id")};DiagramPage.prototype.getName=function(){return this.node.getAttribute("name")};DiagramPage.prototype.setName=function(a){null==a?this.node.removeAttribute("name"):this.node.setAttribute("name",a)}; -function RenamePage(a,b,f){this.ui=a;this.page=b;this.previous=this.name=f}RenamePage.prototype.execute=function(){var a=this.page.getName();this.page.setName(this.previous);this.name=this.previous;this.previous=a;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageRenamed"))};function MovePage(a,b,f){this.ui=a;this.oldIndex=b;this.newIndex=f} -MovePage.prototype.execute=function(){this.ui.pages.splice(this.newIndex,0,this.ui.pages.splice(this.oldIndex,1)[0]);var a=this.oldIndex;this.oldIndex=this.newIndex;this.newIndex=a;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageMoved"))};function SelectPage(a,b,f){this.ui=a;this.previousPage=this.page=b;this.neverShown=!0;null!=b&&(this.neverShown=null==b.viewState,this.ui.updatePageRoot(b),null!=f&&(b.viewState=f,this.neverShown=!1))} -SelectPage.prototype.execute=function(){var a=mxUtils.indexOf(this.ui.pages,this.previousPage);if(null!=this.page&&0<=a){var a=this.ui.currentPage,b=this.ui.editor,f=b.graph,d=b.graph.compress(f.zapGremlins(mxUtils.getXml(b.getGraphXml(!0))));mxUtils.setTextContent(a.node,d);a.viewState=f.getViewState();a.root=f.model.root;null!=a.model&&a.model.rootChanged(a.root);f.view.clear(a.root,!0);f.clearSelection();this.ui.currentPage=this.previousPage;this.previousPage=a;a=this.ui.currentPage;f.model.rootChanged(a.root); -f.setViewState(a.viewState);b.fireEvent(new mxEventObject("setViewState","change",this));f.gridEnabled=f.gridEnabled&&(!this.ui.editor.isChromelessView()||"1"==urlParams.grid);b.updateGraphComponents();f.view.validate();f.sizeDidChange();this.neverShown&&(this.neverShown=!1,f.selectUnlockedLayer());b.graph.fireEvent(new mxEventObject(mxEvent.ROOT));b.fireEvent(new mxEventObject("pageSelected","change",this))}}; -function ChangePage(a,b,f,d){SelectPage.call(this,a,f);this.relatedPage=b;this.index=d;this.previousIndex=null}mxUtils.extend(ChangePage,SelectPage); +mxEvent.addListener(this.offlineStatus,"click",mxUtils.bind(this,function(){var a=this.offlineStatus.getElementsByTagName("img");null!=a&&0<a.length&&this.alert(a[0].getAttribute("title"))}));var e=window.applicationCache,g=null,b=mxUtils.bind(this,function(){var a=e.status,b;a==e.CHECKING&&(a=e.DOWNLOADING);switch(a){case e.UNCACHED:b="";break;case e.IDLE:b="min"==uiTheme?"":'<img title="draw.io is up to date." border="0" src="'+IMAGE_PATH+'/checkmark.gif"/>';break;case e.DOWNLOADING:b='<img title="Downloading new version..." border="0" src="'+ +IMAGE_PATH+'/spin.gif"/>';break;case e.UPDATEREADY:b='<img title="'+mxUtils.htmlEntities(mxResources.get("restartForChangeRequired"))+'" border="0" src="'+IMAGE_PATH+'/download.png"/>';break;case e.OBSOLETE:b='<img title="Obsolete" border="0" src="'+IMAGE_PATH+'/clear.gif"/>';break;default:b='<img title="Unknown" border="0" src="'+IMAGE_PATH+'/clear.gif"/>'}a!=g&&(this.offlineStatus.innerHTML=b,g=a)});mxEvent.addListener(e,"checking",b);mxEvent.addListener(e,"noupdate",b);mxEvent.addListener(e,"downloading", +b);mxEvent.addListener(e,"progress",b);mxEvent.addListener(e,"cached",b);mxEvent.addListener(e,"updateready",b);mxEvent.addListener(e,"obsolete",b);mxEvent.addListener(e,"error",b);b()}}else this.updateUserElement()};EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=function(){};EditorUi.prototype.isDiagramActive=function(){var a=this.getCurrentFile();return null!=a&&a.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};var v=EditorUi.prototype.updateActionStates; +EditorUi.prototype.updateActionStates=function(){v.apply(this,arguments);var a=this.editor.graph,b=this.isDiagramActive(),c=this.getCurrentFile();this.actions.get("pageSetup").setEnabled(b);this.actions.get("autosave").setEnabled(null!=c&&c.isEditable()&&c.isAutosaveOptional());this.actions.get("guides").setEnabled(b);this.actions.get("editData").setEnabled(b);this.actions.get("shadowVisible").setEnabled(b);this.actions.get("connectionArrows").setEnabled(b);this.actions.get("connectionPoints").setEnabled(b); +this.actions.get("copyStyle").setEnabled(b&&!a.isSelectionEmpty());this.actions.get("pasteStyle").setEnabled(b&&!a.isSelectionEmpty());this.actions.get("editGeometry").setEnabled(a.getModel().isVertex(a.getSelectionCell()));this.actions.get("createShape").setEnabled(b);this.actions.get("createRevision").setEnabled(b);this.actions.get("moveToFolder").setEnabled(null!=c);this.actions.get("makeCopy").setEnabled(null!=c&&!c.isRestricted());this.actions.get("editDiagram").setEnabled(b&&(null==c||!c.isRestricted())); +this.actions.get("publishLink").setEnabled(null!=c&&!c.isRestricted());this.actions.get("tags").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("find").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("layers").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("outline").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("rename").setEnabled(null!=c&&c.isRenamable()||"1"==urlParams.embed); +this.actions.get("close").setEnabled(null!=c);this.menus.get("publish").setEnabled(null!=c&&!c.isRestricted());a=a.view.getState(a.getSelectionCell());this.actions.get("editShape").setEnabled(b&&null!=a&&null!=a.shape&&null!=a.shape.stencil)};var z=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){this.editUpdateListener&&(this.editor.undoManager.removeListener(this.editUpdateListener),this.editUpdateListener=null);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog), +this.exportDialog=null);z.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(a,b,c,e,g,k){var d=a.editor.graph;if("xml"==c)a.hideDialog(),a.saveData(b,"xml",mxUtils.getXml(a.editor.getGraphXml()),"text/xml");else if("svg"==c)a.hideDialog(),a.saveData(b,"svg",mxUtils.getXml(d.getSvg(e,g,k)),"image/svg+xml");else{var f=a.getFileData(!0,null,null,null,null,!0),l=d.getGraphBounds(),m=Math.floor(l.width*g/d.view.scale), +p=Math.floor(l.height*g/d.view.scale);f.length<=MAX_REQUEST_SIZE&&m*p<MAX_AREA?(a.hideDialog(),a.saveRequest(b,c,function(a,b){return new mxXmlRequest(EXPORT_URL,"format="+c+"&base64="+(b||"0")+(null!=a?"&filename="+encodeURIComponent(a):"")+"&bg="+(null!=e?e:"none")+"&w="+m+"&h="+p+"&border="+k+"&xml="+encodeURIComponent(f))})):mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.updateEditReferences=function(a){for(var b=0;b<a.changes.length;b++){var d=a.changes[b];if(null!=d&& +d.constructor==mxChildChange&&null!=d.child){var c=d.child;if(null!=c.source&&null!=c.source.id){var e=this.getFutureCellForEdit(d.model,a,c.source.id);e!=c.source&&(c.source=e)}null!=c.target&&null!=c.target.id&&(d=this.getFutureCellForEdit(d.model,a,c.target.id),d!=c.target&&(c.target=d))}}};EditorUi.prototype.getFutureCellForEdit=function(a,b,c){var d=a.getCell(c);if(null==d)for(var e=b.changes.length-1;0<=e;e--){var f=b.changes[e];if(f.constructor==mxChildChange&&null!=f.child&&f.child.id==c){a.contains(f.previous)&& +(d=f.child);break}}return d}})();function DiagramPage(a){this.node=a;null==this.getId()&&this.node.setAttribute("id",Editor.guid())}DiagramPage.prototype.node=null;DiagramPage.prototype.root=null;DiagramPage.prototype.viewState=null;DiagramPage.prototype.getId=function(){return this.node.getAttribute("id")};DiagramPage.prototype.getName=function(){return this.node.getAttribute("name")};DiagramPage.prototype.setName=function(a){null==a?this.node.removeAttribute("name"):this.node.setAttribute("name",a)}; +function RenamePage(a,b,e){this.ui=a;this.page=b;this.previous=this.name=e}RenamePage.prototype.execute=function(){var a=this.page.getName();this.page.setName(this.previous);this.name=this.previous;this.previous=a;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageRenamed"))};function MovePage(a,b,e){this.ui=a;this.oldIndex=b;this.newIndex=e} +MovePage.prototype.execute=function(){this.ui.pages.splice(this.newIndex,0,this.ui.pages.splice(this.oldIndex,1)[0]);var a=this.oldIndex;this.oldIndex=this.newIndex;this.newIndex=a;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageMoved"))};function SelectPage(a,b,e){this.ui=a;this.previousPage=this.page=b;this.neverShown=!0;null!=b&&(this.neverShown=null==b.viewState,this.ui.updatePageRoot(b),null!=e&&(b.viewState=e,this.neverShown=!1))} +SelectPage.prototype.execute=function(){var a=mxUtils.indexOf(this.ui.pages,this.previousPage);if(null!=this.page&&0<=a){var a=this.ui.currentPage,b=this.ui.editor,e=b.graph,c=b.graph.compress(e.zapGremlins(mxUtils.getXml(b.getGraphXml(!0))));mxUtils.setTextContent(a.node,c);a.viewState=e.getViewState();a.root=e.model.root;null!=a.model&&a.model.rootChanged(a.root);e.view.clear(a.root,!0);e.clearSelection();this.ui.currentPage=this.previousPage;this.previousPage=a;a=this.ui.currentPage;e.model.prefix= +Editor.guid()+"-";e.model.rootChanged(a.root);e.setViewState(a.viewState);e.gridEnabled=e.gridEnabled&&(!this.ui.editor.isChromelessView()||"1"==urlParams.grid);b.updateGraphComponents();e.view.validate();e.sizeDidChange();this.neverShown&&(this.neverShown=!1,e.selectUnlockedLayer());b.graph.fireEvent(new mxEventObject(mxEvent.ROOT));b.fireEvent(new mxEventObject("pageSelected","change",this))}}; +function ChangePage(a,b,e,c){SelectPage.call(this,a,e);this.relatedPage=b;this.index=c;this.previousIndex=null}mxUtils.extend(ChangePage,SelectPage); ChangePage.prototype.execute=function(){this.ui.editor.fireEvent(new mxEventObject("beforePageChange","change",this));this.previousIndex=this.index;if(null==this.index){var a=mxUtils.indexOf(this.ui.pages,this.relatedPage);this.ui.pages.splice(a,1);this.index=a}else this.ui.pages.splice(this.index,0,this.relatedPage),this.index=null;SelectPage.prototype.execute.apply(this,arguments)}; EditorUi.prototype.getSelectedPageIndex=function(){var a=null;if(null!=this.pages&&null!=this.currentPage)for(var b=0;b<this.pages.length;b++)if(this.pages[b]==this.currentPage){a=b;break}return a};EditorUi.prototype.getPageById=function(a){if(null!=this.pages)for(var b=0;b<this.pages.length;b++)if(this.pages[b].getId()==a)return this.pages[b];return null}; -EditorUi.prototype.initPages=function(){this.actions.addAction("previousPage",mxUtils.bind(this,function(){this.selectNextPage(!1)}));this.actions.addAction("nextPage",mxUtils.bind(this,function(){this.selectNextPage(!0)}));this.keyHandler.bindAction(33,!0,"previousPage",!0);this.keyHandler.bindAction(34,!0,"nextPage",!0);var a=this.editor.graph,b=a.view.validateBackground;a.view.validateBackground=mxUtils.bind(this,function(){if(null!=this.tabContainer){var d=this.tabContainer.style.height;this.tabContainer.style.height= -null==this.fileNode||null==this.pages||1==this.pages.length&&"0"==urlParams.pages?"0px":"30px";d!=this.tabContainer.style.height&&this.refresh(!1)}b.apply(a.view,arguments)});var f=null,d=mxUtils.bind(this,function(){this.updateTabContainer();var b=this.currentPage;null!=b&&b!=f&&(null==b.viewState||null==b.viewState.scrollLeft?(this.resetScrollbars(),a.isLightboxView()&&this.lightboxFit(),null!=this.chromelessResize&&(a.container.scrollLeft=0,a.container.scrollTop=0,this.chromelessResize())):(a.container.scrollLeft= -a.view.translate.x*a.view.scale+b.viewState.scrollLeft,a.container.scrollTop=a.view.translate.y*a.view.scale+b.viewState.scrollTop),f=b);null!=this.actions.layersWindow&&this.actions.layersWindow.refreshLayers();"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?1!=MathJax.Hub.queue.pending||null==this.editor||this.editor.graph.mathEnabled||MathJax.Hub.Queue(mxUtils.bind(this,function(){null!=this.editor&&this.editor.graph.refresh()})):"undefined"===typeof Editor.MathJaxClear||null!=this.editor&& -this.editor.graph.mathEnabled||Editor.MathJaxClear()});this.editor.graph.model.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(a,b){for(var f=b.getProperty("edit").changes,k=0;k<f.length;k++)if(f[k]instanceof SelectPage||f[k]instanceof RenamePage||f[k]instanceof MovePage||f[k]instanceof mxRootChange){d();break}}));null!=this.toolbar&&this.editor.addListener("pageSelected",this.toolbar.updateZoom)}; -EditorUi.prototype.restoreViewState=function(a,b,f){a=null!=a?this.getPageById(a.getId()):null;var d=this.editor.graph;null!=a&&null!=this.currentPage&&null!=this.pages&&(a!=this.currentPage?this.selectPage(a,!0,b):(d.setViewState(b),this.editor.updateGraphComponents(),d.view.revalidate(),d.sizeDidChange()),d.container.scrollLeft=d.view.translate.x*d.view.scale+b.scrollLeft,d.container.scrollTop=d.view.translate.y*d.view.scale+b.scrollTop,d.restoreSelection(f))}; -Graph.prototype.createViewState=function(a){var b=a.getAttribute("page"),f=parseFloat(a.getAttribute("pageScale")),d=parseFloat(a.getAttribute("pageWidth")),k=parseFloat(a.getAttribute("pageHeight")),n=a.getAttribute("background"),p=a.getAttribute("backgroundImage"),p=null!=p&&0<p.length?JSON.parse(p):null;return{gridEnabled:"0"!=a.getAttribute("grid"),gridSize:parseFloat(a.getAttribute("gridSize"))||mxGraph.prototype.gridSize,guidesEnabled:"0"!=a.getAttribute("guides"),foldingEnabled:"0"!=a.getAttribute("fold"), -shadowVisible:"1"==a.getAttribute("shadow"),pageVisible:this.isLightboxView()?!1:null!=b?"0"!=b:this.defaultPageVisible,background:null!=n&&0<n.length?n:null,backgroundImage:null!=p?new mxImage(p.src,p.width,p.height):null,pageScale:isNaN(f)?mxGraph.prototype.pageScale:f,pageFormat:isNaN(d)||isNaN(k)?mxSettings.getPageFormat():new mxRectangle(0,0,d,k),tooltips:"0"!=a.getAttribute("tooltips"),connect:"0"!=a.getAttribute("connect"),arrows:"0"!=a.getAttribute("arrows"),mathEnabled:"1"==a.getAttribute("math"), +EditorUi.prototype.initPages=function(){this.actions.addAction("previousPage",mxUtils.bind(this,function(){this.selectNextPage(!1)}));this.actions.addAction("nextPage",mxUtils.bind(this,function(){this.selectNextPage(!0)}));this.keyHandler.bindAction(33,!0,"previousPage",!0);this.keyHandler.bindAction(34,!0,"nextPage",!0);var a=this.editor.graph,b=a.view.validateBackground;a.view.validateBackground=mxUtils.bind(this,function(){if(null!=this.tabContainer){var c=this.tabContainer.style.height;this.tabContainer.style.height= +null==this.fileNode||null==this.pages||1==this.pages.length&&"0"==urlParams.pages?"0px":"30px";c!=this.tabContainer.style.height&&this.refresh(!1)}b.apply(a.view,arguments)});var e=null,c=mxUtils.bind(this,function(){this.updateTabContainer();var b=this.currentPage;null!=b&&b!=e&&(null==b.viewState||null==b.viewState.scrollLeft?(this.resetScrollbars(),a.isLightboxView()&&this.lightboxFit(),null!=this.chromelessResize&&(a.container.scrollLeft=0,a.container.scrollTop=0,this.chromelessResize())):(a.container.scrollLeft= +a.view.translate.x*a.view.scale+b.viewState.scrollLeft,a.container.scrollTop=a.view.translate.y*a.view.scale+b.viewState.scrollTop),e=b);null!=this.actions.layersWindow&&this.actions.layersWindow.refreshLayers();"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?1!=MathJax.Hub.queue.pending||null==this.editor||this.editor.graph.mathEnabled||MathJax.Hub.Queue(mxUtils.bind(this,function(){null!=this.editor&&this.editor.graph.refresh()})):"undefined"===typeof Editor.MathJaxClear||null!=this.editor&& +this.editor.graph.mathEnabled||Editor.MathJaxClear()});this.editor.graph.model.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(a,b){for(var e=b.getProperty("edit").changes,k=0;k<e.length;k++)if(e[k]instanceof SelectPage||e[k]instanceof RenamePage||e[k]instanceof MovePage||e[k]instanceof mxRootChange){c();break}}));null!=this.toolbar&&this.editor.addListener("pageSelected",this.toolbar.updateZoom)}; +EditorUi.prototype.restoreViewState=function(a,b,e){a=null!=a?this.getPageById(a.getId()):null;var c=this.editor.graph;null!=a&&null!=this.currentPage&&null!=this.pages&&(a!=this.currentPage?this.selectPage(a,!0,b):(c.setViewState(b),this.editor.updateGraphComponents(),c.view.revalidate(),c.sizeDidChange()),c.container.scrollLeft=c.view.translate.x*c.view.scale+b.scrollLeft,c.container.scrollTop=c.view.translate.y*c.view.scale+b.scrollTop,c.restoreSelection(e))}; +Graph.prototype.createViewState=function(a){var b=a.getAttribute("page"),e=parseFloat(a.getAttribute("pageScale")),c=parseFloat(a.getAttribute("pageWidth")),k=parseFloat(a.getAttribute("pageHeight")),m=a.getAttribute("background"),q=a.getAttribute("backgroundImage"),q=null!=q&&0<q.length?JSON.parse(q):null;return{gridEnabled:"0"!=a.getAttribute("grid"),gridSize:parseFloat(a.getAttribute("gridSize"))||mxGraph.prototype.gridSize,guidesEnabled:"0"!=a.getAttribute("guides"),foldingEnabled:"0"!=a.getAttribute("fold"), +shadowVisible:"1"==a.getAttribute("shadow"),pageVisible:this.isLightboxView()?!1:null!=b?"0"!=b:this.defaultPageVisible,background:null!=m&&0<m.length?m:null,backgroundImage:null!=q?new mxImage(q.src,q.width,q.height):null,pageScale:isNaN(e)?mxGraph.prototype.pageScale:e,pageFormat:isNaN(c)||isNaN(k)?mxSettings.getPageFormat():new mxRectangle(0,0,c,k),tooltips:"0"!=a.getAttribute("tooltips"),connect:"0"!=a.getAttribute("connect"),arrows:"0"!=a.getAttribute("arrows"),mathEnabled:"1"==a.getAttribute("math"), selectionCells:null,defaultParent:null,scrollbars:this.defaultScrollbars,scale:1}}; -Graph.prototype.saveViewState=function(a,b,f){f||(b.setAttribute("grid",null==a||a.gridEnabled?"1":"0"),b.setAttribute("gridSize",null!=a?a.gridSize:mxGraph.prototype.gridSize),b.setAttribute("guides",null==a||a.guidesEnabled?"1":"0"),b.setAttribute("tooltips",null==a||a.tooltips?"1":"0"),b.setAttribute("connect",null==a||a.connect?"1":"0"),b.setAttribute("arrows",null==a||a.arrows?"1":"0"),b.setAttribute("page",null==a&&this.defaultPageVisible||null!=a&&a.pageVisible?"1":"0"),b.setAttribute("fold", -null==a||a.foldingEnabled?"1":"0"));b.setAttribute("pageScale",null!=a&&null!=a.pageScale?a.pageScale:mxGraph.prototype.pageScale);f=null!=a?a.pageFormat:mxSettings.getPageFormat();null!=f&&(b.setAttribute("pageWidth",f.width),b.setAttribute("pageHeight",f.height));null!=a&&null!=a.background&&b.setAttribute("background",a.background);null!=a&&null!=a.backgroundImage&&b.setAttribute("backgroundImage",JSON.stringify(a.backgroundImage));b.setAttribute("math",null!=a&&a.mathEnabled?"1":"0");b.setAttribute("shadow", +Graph.prototype.saveViewState=function(a,b,e){e||(b.setAttribute("grid",null==a||a.gridEnabled?"1":"0"),b.setAttribute("gridSize",null!=a?a.gridSize:mxGraph.prototype.gridSize),b.setAttribute("guides",null==a||a.guidesEnabled?"1":"0"),b.setAttribute("tooltips",null==a||a.tooltips?"1":"0"),b.setAttribute("connect",null==a||a.connect?"1":"0"),b.setAttribute("arrows",null==a||a.arrows?"1":"0"),b.setAttribute("page",null==a&&this.defaultPageVisible||null!=a&&a.pageVisible?"1":"0"),b.setAttribute("fold", +null==a||a.foldingEnabled?"1":"0"));b.setAttribute("pageScale",null!=a&&null!=a.pageScale?a.pageScale:mxGraph.prototype.pageScale);e=null!=a?a.pageFormat:mxSettings.getPageFormat();null!=e&&(b.setAttribute("pageWidth",e.width),b.setAttribute("pageHeight",e.height));null!=a&&null!=a.background&&b.setAttribute("background",a.background);null!=a&&null!=a.backgroundImage&&b.setAttribute("backgroundImage",JSON.stringify(a.backgroundImage));b.setAttribute("math",null!=a&&a.mathEnabled?"1":"0");b.setAttribute("shadow", null!=a&&a.shadowVisible?"1":"0")}; Graph.prototype.getViewState=function(){return{defaultParent:this.defaultParent,currentRoot:this.view.currentRoot,gridEnabled:this.gridEnabled,gridSize:this.gridSize,guidesEnabled:this.graphHandler.guidesEnabled,foldingEnabled:this.foldingEnabled,shadowVisible:this.shadowVisible,scrollbars:this.scrollbars,pageVisible:this.pageVisible,background:this.background,backgroundImage:this.backgroundImage,pageScale:this.pageScale,pageFormat:this.pageFormat,tooltips:this.tooltipHandler.isEnabled(),connect:this.connectionHandler.isEnabled(), arrows:this.connectionArrowsEnabled,scale:this.view.scale,scrollLeft:this.container.scrollLeft-this.view.translate.x*this.view.scale,scrollTop:this.container.scrollTop-this.view.translate.y*this.view.scale,translate:this.view.translate.clone(),lastPasteXml:this.lastPasteXml,pasteCounter:this.pasteCounter,mathEnabled:this.mathEnabled}}; Graph.prototype.setViewState=function(a){null!=a?(this.lastPasteXml=a.lastPasteXml,this.pasteCounter=a.pasteCounter||0,this.mathEnabled=a.mathEnabled,this.gridEnabled=a.gridEnabled,this.gridSize=a.gridSize,this.graphHandler.guidesEnabled=a.guidesEnabled,this.foldingEnabled=a.foldingEnabled,this.setShadowVisible(a.shadowVisible,!1),this.scrollbars=a.scrollbars,this.pageVisible=a.pageVisible,this.background=a.background,this.backgroundImage=a.backgroundImage,this.pageScale=a.pageScale,this.pageFormat= a.pageFormat,this.view.currentRoot=a.currentRoot,this.defaultParent=a.defaultParent,this.connectionArrowsEnabled=a.arrows,this.setTooltips(a.tooltips),this.setConnectable(a.connect),this.view.scale=null!=a.scale?a.scale:1,null==this.view.currentRoot||this.model.contains(this.view.currentRoot)||(this.view.currentRoot=null),null==this.defaultParent||this.model.contains(this.defaultParent)||(this.setDefaultParent(null),this.selectUnlockedLayer()),null!=a.translate&&(this.view.translate=a.translate)): (this.view.currentRoot=null,this.view.scale=1,this.gridEnabled=!0,this.gridSize=mxGraph.prototype.gridSize,this.pageScale=mxGraph.prototype.pageScale,this.pageFormat=mxSettings.getPageFormat(),this.pageVisible=this.defaultPageVisible,this.backgroundImage=this.background=null,this.scrollbars=this.defaultScrollbars,this.foldingEnabled=this.graphHandler.guidesEnabled=!0,this.setShadowVisible(!1,!1),this.defaultParent=null,this.setTooltips(!0),this.setConnectable(!0),this.lastPasteXml=null,this.pasteCounter= -0,this.mathEnabled=!1,this.connectionArrowsEnabled=!0);this.preferPageSize=this.pageBreaksVisible=this.pageVisible}; -EditorUi.prototype.updatePageRoot=function(a){if(null==a.root){var b=this.editor.extractGraphModel(a.node);if(null!=b){a.graphModelNode=b;a.viewState=this.editor.graph.createViewState(b);var f=new mxCodec(b.ownerDocument);a.root=f.decode(b).root}else a.root=this.editor.graph.model.createRoot()}else null==a.viewState&&(null==a.graphModelNode&&(b=this.editor.extractGraphModel(a.node),null!=b&&(a.graphModelNode=b)),null!=a.graphModelNode&&(a.viewState=this.editor.graph.createViewState(a.graphModelNode))); -return a};EditorUi.prototype.selectPage=function(a,b,f){try{this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);b=null!=b?b:!1;this.editor.graph.isMouseDown=!1;this.editor.graph.reset();var d=this.editor.graph.model.createUndoableEdit();d.ignoreEdit=!0;var k=new SelectPage(this,a,f);k.execute();d.add(k);d.notify();this.editor.graph.tooltipHandler.hide();b||this.editor.graph.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",d))}catch(n){this.handleError(n)}}; -EditorUi.prototype.selectNextPage=function(a){var b=this.currentPage;null!=b&&null!=this.pages&&(b=mxUtils.indexOf(this.pages,b),a?this.selectPage(this.pages[mxUtils.mod(b+1,this.pages.length)]):a||this.selectPage(this.pages[mxUtils.mod(b-1,this.pages.length)]))};EditorUi.prototype.insertPage=function(a,b){if(this.editor.graph.isEnabled()){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);a=null!=a?a:this.createPage();b=null!=b?b:this.pages.length;var f=new ChangePage(this,a,a,b);this.editor.graph.model.execute(f)}return a}; -EditorUi.prototype.createPage=function(a){var b=new DiagramPage(this.fileNode.ownerDocument.createElement("diagram"));b.setName(null!=a?a:this.createPageName());return b};EditorUi.prototype.createPageName=function(){for(var a={},b=0;b<this.pages.length;b++){var f=this.pages[b].getName();null!=f&&0<f.length&&(a[f]=f)}b=this.pages.length;do f=mxResources.get("pageWithNumber",[++b]);while(null!=a[f]);return f}; -EditorUi.prototype.removePage=function(a){try{var b=this.editor.graph,f=mxUtils.indexOf(this.pages,a);if(b.isEnabled()&&0<=f){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);b.model.beginUpdate();try{var d=this.currentPage;d==a&&1<this.pages.length?(f==this.pages.length-1?f--:f++,d=this.pages[f]):1>=this.pages.length&&(d=this.insertPage(),b.model.execute(new RenamePage(this,d,mxResources.get("pageWithNumber",[1]))));b.model.execute(new ChangePage(this,a,d))}finally{b.model.endUpdate()}}}catch(k){this.handleError(k)}return a}; -EditorUi.prototype.duplicatePage=function(a,b){var f=this.editor.graph,d=null;f.isEnabled()&&(f.isEditing()&&f.stopEditing(),d=a.node.cloneNode(!1),d.removeAttribute("id"),d=new DiagramPage(d),d.root=f.cloneCell(f.model.root),d.viewState=f.getViewState(),d.viewState.scale=1,d.viewState.scrollLeft=null,d.viewState.scrollTop=null,d.viewState.currentRoot=null,d.viewState.defaultParent=null,d.setName(b),d=this.insertPage(d,mxUtils.indexOf(this.pages,a)+1));return d}; +0,this.mathEnabled=!1,this.connectionArrowsEnabled=!0);this.preferPageSize=this.pageBreaksVisible=this.pageVisible;this.fireEvent(new mxEventObject("viewStateChanged","state",a))}; +EditorUi.prototype.updatePageRoot=function(a){if(null==a.root){var b=this.editor.extractGraphModel(a.node);if(null!=b){a.graphModelNode=b;a.viewState=this.editor.graph.createViewState(b);var e=new mxCodec(b.ownerDocument);a.root=e.decode(b).root}else a.root=this.editor.graph.model.createRoot()}else null==a.viewState&&(null==a.graphModelNode&&(b=this.editor.extractGraphModel(a.node),null!=b&&(a.graphModelNode=b)),null!=a.graphModelNode&&(a.viewState=this.editor.graph.createViewState(a.graphModelNode))); +return a};EditorUi.prototype.selectPage=function(a,b,e){try{this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);b=null!=b?b:!1;this.editor.graph.isMouseDown=!1;this.editor.graph.reset();var c=this.editor.graph.model.createUndoableEdit();c.ignoreEdit=!0;var k=new SelectPage(this,a,e);k.execute();c.add(k);c.notify();this.editor.graph.tooltipHandler.hide();b||this.editor.graph.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",c))}catch(m){this.handleError(m)}}; +EditorUi.prototype.selectNextPage=function(a){var b=this.currentPage;null!=b&&null!=this.pages&&(b=mxUtils.indexOf(this.pages,b),a?this.selectPage(this.pages[mxUtils.mod(b+1,this.pages.length)]):a||this.selectPage(this.pages[mxUtils.mod(b-1,this.pages.length)]))};EditorUi.prototype.insertPage=function(a,b){if(this.editor.graph.isEnabled()){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);a=null!=a?a:this.createPage();b=null!=b?b:this.pages.length;var e=new ChangePage(this,a,a,b);this.editor.graph.model.execute(e)}return a}; +EditorUi.prototype.createPage=function(a){var b=new DiagramPage(this.fileNode.ownerDocument.createElement("diagram"));b.setName(null!=a?a:this.createPageName());return b};EditorUi.prototype.createPageName=function(){for(var a={},b=0;b<this.pages.length;b++){var e=this.pages[b].getName();null!=e&&0<e.length&&(a[e]=e)}b=this.pages.length;do e=mxResources.get("pageWithNumber",[++b]);while(null!=a[e]);return e}; +EditorUi.prototype.removePage=function(a){try{var b=this.editor.graph,e=mxUtils.indexOf(this.pages,a);if(b.isEnabled()&&0<=e){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);b.model.beginUpdate();try{var c=this.currentPage;c==a&&1<this.pages.length?(e==this.pages.length-1?e--:e++,c=this.pages[e]):1>=this.pages.length&&(c=this.insertPage(),b.model.execute(new RenamePage(this,c,mxResources.get("pageWithNumber",[1]))));b.model.execute(new ChangePage(this,a,c))}finally{b.model.endUpdate()}}}catch(k){this.handleError(k)}return a}; +EditorUi.prototype.duplicatePage=function(a,b){var e=null;try{var c=this.editor.graph;if(c.isEnabled()){c.isEditing()&&c.stopEditing();var k=a.node.cloneNode(!1);k.removeAttribute("id");e=new DiagramPage(k);e.root=c.cloneCell(c.model.root);e.viewState=c.getViewState();e.viewState.scale=1;e.viewState.scrollLeft=null;e.viewState.scrollTop=null;e.viewState.currentRoot=null;e.viewState.defaultParent=null;e.setName(b);e=this.insertPage(e,mxUtils.indexOf(this.pages,a)+1)}}catch(m){this.handleError(m)}return e}; EditorUi.prototype.renamePage=function(a){if(this.editor.graph.isEnabled()){var b=new FilenameDialog(this,a.getName(),mxResources.get("rename"),mxUtils.bind(this,function(b){null!=b&&0<b.length&&this.editor.graph.model.execute(new RenamePage(this,a,b))}),mxResources.get("rename"));this.showDialog(b.container,300,80,!0,!0);b.init()}return a};EditorUi.prototype.movePage=function(a,b){this.editor.graph.model.execute(new MovePage(this,a,b))}; EditorUi.prototype.createTabContainer=function(){var a=document.createElement("div");a.style.backgroundColor="dark"==uiTheme?"#2a2a2a":"#dcdcdc";a.style.position="absolute";a.style.whiteSpace="nowrap";a.style.overflow="hidden";a.style.height="0px";return a}; -EditorUi.prototype.updateTabContainer=function(){if(null!=this.tabContainer&&null!=this.pages){var a=this.editor.graph,b=document.createElement("div");b.style.position="relative";b.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";b.style.verticalAlign="top";b.style.height=this.tabContainer.style.height;b.style.whiteSpace="nowrap";b.style.overflow="hidden";b.style.fontSize="12px";b.style.marginLeft="30px";for(var f=this.editor.isChromelessView()?29:59,d=Math.min(140,Math.max(20,(this.tabContainer.clientWidth- -f)/this.pages.length)+1),k=null,n=0;n<this.pages.length;n++)mxUtils.bind(this,function(c,d){this.pages[c]==this.currentPage?(d.className="geActivePage",d.style.backgroundColor="dark"==uiTheme?"#2a2a2a":"#eeeeee",d.style.fontWeight="bold",d.style.borderTopStyle="none"):d.className="geInactivePage";d.setAttribute("draggable","true");mxEvent.addListener(d,"dragstart",mxUtils.bind(this,function(b){a.isEnabled()?(mxClient.IS_FF&&b.dataTransfer.setData("Text","<diagram/>"),k=c):mxEvent.consume(b)}));mxEvent.addListener(d, -"dragend",mxUtils.bind(this,function(a){k=null;a.stopPropagation();a.preventDefault()}));mxEvent.addListener(d,"dragover",mxUtils.bind(this,function(a){null!=k&&(a.dataTransfer.dropEffect="move");a.stopPropagation();a.preventDefault()}));mxEvent.addListener(d,"drop",mxUtils.bind(this,function(a){null!=k&&c!=k&&this.movePage(k,c);a.stopPropagation();a.preventDefault()}));b.appendChild(d)})(n,this.createTabForPage(this.pages[n],d,this.pages[n]!=this.currentPage));this.tabContainer.innerHTML="";this.tabContainer.appendChild(b); -d=this.createPageMenuTab();this.tabContainer.appendChild(d);d=null;this.isPageInsertTabVisible()&&(d=this.createPageInsertTab(),this.tabContainer.appendChild(d));if(b.clientWidth>this.tabContainer.clientWidth-f){null!=d&&(d.style.position="absolute",d.style.right="0px",b.style.marginRight="30px");var p=this.createControlTab(4," ❮ ");p.style.position="absolute";p.style.right=this.editor.chromeless?"29px":"55px";p.style.fontSize="13pt";this.tabContainer.appendChild(p);var q=this.createControlTab(4, -" ❯");q.style.position="absolute";q.style.right=this.editor.chromeless?"0px":"29px";q.style.fontSize="13pt";this.tabContainer.appendChild(q);var w=Math.max(0,this.tabContainer.clientWidth-(this.editor.chromeless?86:116));b.style.width=w+"px";mxEvent.addListener(p,"click",mxUtils.bind(this,function(a){b.scrollLeft-=Math.max(20,w-20);mxUtils.setOpacity(p,0<b.scrollLeft?100:50);mxUtils.setOpacity(q,b.scrollLeft<b.scrollWidth-b.clientWidth?100:50);mxEvent.consume(a)}));mxUtils.setOpacity(p, -0<b.scrollLeft?100:50);mxUtils.setOpacity(q,b.scrollLeft<b.scrollWidth-b.clientWidth?100:50);mxEvent.addListener(q,"click",mxUtils.bind(this,function(a){b.scrollLeft+=Math.max(20,w-20);mxUtils.setOpacity(p,0<b.scrollLeft?100:50);mxUtils.setOpacity(q,b.scrollLeft<b.scrollWidth-b.clientWidth?100:50);mxEvent.consume(a)}))}}};EditorUi.prototype.isPageInsertTabVisible=function(){return 1==urlParams.embed||null!=this.getCurrentFile()&&this.getCurrentFile().isEditable()}; +EditorUi.prototype.updateTabContainer=function(){if(null!=this.tabContainer&&null!=this.pages){var a=this.editor.graph,b=document.createElement("div");b.style.position="relative";b.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";b.style.verticalAlign="top";b.style.height=this.tabContainer.style.height;b.style.whiteSpace="nowrap";b.style.overflow="hidden";b.style.fontSize="12px";b.style.marginLeft="30px";for(var e=this.editor.isChromelessView()?29:59,c=Math.min(140,Math.max(20,(this.tabContainer.clientWidth- +e)/this.pages.length)+1),k=null,m=0;m<this.pages.length;m++)mxUtils.bind(this,function(c,d){this.pages[c]==this.currentPage?(d.className="geActivePage",d.style.backgroundColor="dark"==uiTheme?"#2a2a2a":"#eeeeee",d.style.fontWeight="bold",d.style.borderTopStyle="none"):d.className="geInactivePage";d.setAttribute("draggable","true");mxEvent.addListener(d,"dragstart",mxUtils.bind(this,function(b){a.isEnabled()?(mxClient.IS_FF&&b.dataTransfer.setData("Text","<diagram/>"),k=c):mxEvent.consume(b)}));mxEvent.addListener(d, +"dragend",mxUtils.bind(this,function(a){k=null;a.stopPropagation();a.preventDefault()}));mxEvent.addListener(d,"dragover",mxUtils.bind(this,function(a){null!=k&&(a.dataTransfer.dropEffect="move");a.stopPropagation();a.preventDefault()}));mxEvent.addListener(d,"drop",mxUtils.bind(this,function(a){null!=k&&c!=k&&this.movePage(k,c);a.stopPropagation();a.preventDefault()}));b.appendChild(d)})(m,this.createTabForPage(this.pages[m],c,this.pages[m]!=this.currentPage));this.tabContainer.innerHTML="";this.tabContainer.appendChild(b); +c=this.createPageMenuTab();this.tabContainer.appendChild(c);c=null;this.isPageInsertTabVisible()&&(c=this.createPageInsertTab(),this.tabContainer.appendChild(c));if(b.clientWidth>this.tabContainer.clientWidth-e){null!=c&&(c.style.position="absolute",c.style.right="0px",b.style.marginRight="30px");var q=this.createControlTab(4," ❮ ");q.style.position="absolute";q.style.right=this.editor.chromeless?"29px":"55px";q.style.fontSize="13pt";this.tabContainer.appendChild(q);var r=this.createControlTab(4, +" ❯");r.style.position="absolute";r.style.right=this.editor.chromeless?"0px":"29px";r.style.fontSize="13pt";this.tabContainer.appendChild(r);var v=Math.max(0,this.tabContainer.clientWidth-(this.editor.chromeless?86:116));b.style.width=v+"px";mxEvent.addListener(q,"click",mxUtils.bind(this,function(a){b.scrollLeft-=Math.max(20,v-20);mxUtils.setOpacity(q,0<b.scrollLeft?100:50);mxUtils.setOpacity(r,b.scrollLeft<b.scrollWidth-b.clientWidth?100:50);mxEvent.consume(a)}));mxUtils.setOpacity(q, +0<b.scrollLeft?100:50);mxUtils.setOpacity(r,b.scrollLeft<b.scrollWidth-b.clientWidth?100:50);mxEvent.addListener(r,"click",mxUtils.bind(this,function(a){b.scrollLeft+=Math.max(20,v-20);mxUtils.setOpacity(q,0<b.scrollLeft?100:50);mxUtils.setOpacity(r,b.scrollLeft<b.scrollWidth-b.clientWidth?100:50);mxEvent.consume(a)}))}}};EditorUi.prototype.isPageInsertTabVisible=function(){return 1==urlParams.embed||null!=this.getCurrentFile()&&this.getCurrentFile().isEditable()}; EditorUi.prototype.createTab=function(a){var b=document.createElement("div");b.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";b.style.whiteSpace="nowrap";b.style.boxSizing="border-box";b.style.position="relative";b.style.overflow="hidden";b.style.marginLeft="-1px";b.style.height=this.tabContainer.clientHeight+"px";b.style.padding="8px 4px 8px 4px";b.style.border="dark"==uiTheme?"1px solid #505759":"1px solid #c0c0c0";b.style.borderBottomStyle="solid";b.style.backgroundColor=this.tabContainer.style.backgroundColor; b.style.cursor="move";b.style.color="gray";a&&(mxEvent.addListener(b,"mouseenter",mxUtils.bind(this,function(a){this.editor.graph.isMouseDown||(b.style.backgroundColor="dark"==uiTheme?"black":"#d3d3d3",mxEvent.consume(a))})),mxEvent.addListener(b,"mouseleave",mxUtils.bind(this,function(a){b.style.backgroundColor=this.tabContainer.style.backgroundColor;mxEvent.consume(a)})));return b}; -EditorUi.prototype.createControlTab=function(a,b){var f=this.createTab(!0);f.style.paddingTop=a+"px";f.style.cursor="pointer";f.style.width="30px";f.style.lineHeight="30px";f.innerHTML=b;null!=f.firstChild&&null!=f.firstChild.style&&mxUtils.setOpacity(f.firstChild,40);return f}; -EditorUi.prototype.createPageMenuTab=function(){var a=this.createControlTab(3,'<div class="geSprite geSprite-dots" style="display:inline-block;width:21px;height:21px;"></div>');a.setAttribute("title",mxResources.get("pages"));a.style.position="absolute";a.style.top="0px";a.style.left="1px";mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){this.editor.graph.popupMenuHandler.hideMenu();var b=new mxPopupMenu(mxUtils.bind(this,function(a,b){for(var d=0;d<this.pages.length;d++)mxUtils.bind(this, -function(c){var d=a.addItem(this.pages[c].getName(),null,mxUtils.bind(this,function(){this.selectPage(this.pages[c])}),b);this.pages[c]==this.currentPage&&a.addCheckmark(d,Editor.checkmarkImage)})(d);if(this.editor.graph.isEnabled()){a.addSeparator(b);a.addItem(mxResources.get("insertPage"),null,mxUtils.bind(this,function(){this.insertPage()}),b);var f=this.currentPage;null!=f&&(a.addSeparator(b),a.addItem(mxResources.get("delete"),null,mxUtils.bind(this,function(){this.removePage(f)}),b),a.addItem(mxResources.get("rename"), -null,mxUtils.bind(this,function(){this.renamePage(f,f.getName())}),b),a.addSeparator(b),a.addItem(mxResources.get("duplicate"),null,mxUtils.bind(this,function(){this.duplicatePage(f,mxResources.get("copyOf",[f.getName()]))}),b))}}));b.div.className+=" geMenubarMenu";b.smartSeparators=!0;b.showDisabled=!0;b.autoExpand=!0;b.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(b,arguments);b.destroy()});var d=mxEvent.getClientX(a),k=mxEvent.getClientY(a);b.popup(d,k,null,a);this.setCurrentMenu(b); +EditorUi.prototype.createControlTab=function(a,b){var e=this.createTab(!0);e.style.paddingTop=a+"px";e.style.cursor="pointer";e.style.width="30px";e.style.lineHeight="30px";e.innerHTML=b;null!=e.firstChild&&null!=e.firstChild.style&&mxUtils.setOpacity(e.firstChild,40);return e}; +EditorUi.prototype.createPageMenuTab=function(){var a=this.createControlTab(3,'<div class="geSprite geSprite-dots" style="display:inline-block;width:21px;height:21px;"></div>');a.setAttribute("title",mxResources.get("pages"));a.style.position="absolute";a.style.top="0px";a.style.left="1px";mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){this.editor.graph.popupMenuHandler.hideMenu();var b=new mxPopupMenu(mxUtils.bind(this,function(a,b){for(var c=0;c<this.pages.length;c++)mxUtils.bind(this, +function(c){var d=a.addItem(this.pages[c].getName(),null,mxUtils.bind(this,function(){this.selectPage(this.pages[c])}),b);this.pages[c]==this.currentPage&&a.addCheckmark(d,Editor.checkmarkImage)})(c);if(this.editor.graph.isEnabled()){a.addSeparator(b);a.addItem(mxResources.get("insertPage"),null,mxUtils.bind(this,function(){this.insertPage()}),b);var e=this.currentPage;null!=e&&(a.addSeparator(b),a.addItem(mxResources.get("delete"),null,mxUtils.bind(this,function(){this.removePage(e)}),b),a.addItem(mxResources.get("rename"), +null,mxUtils.bind(this,function(){this.renamePage(e,e.getName())}),b),a.addSeparator(b),a.addItem(mxResources.get("duplicate"),null,mxUtils.bind(this,function(){this.duplicatePage(e,mxResources.get("copyOf",[e.getName()]))}),b))}}));b.div.className+=" geMenubarMenu";b.smartSeparators=!0;b.showDisabled=!0;b.autoExpand=!0;b.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(b,arguments);b.destroy()});var c=mxEvent.getClientX(a),k=mxEvent.getClientY(a);b.popup(c,k,null,a);this.setCurrentMenu(b); mxEvent.consume(a)}));return a};EditorUi.prototype.createPageInsertTab=function(){var a=this.createControlTab(4,'<div class="geSprite geSprite-plus" style="display:inline-block;width:21px;height:21px;"></div>');a.setAttribute("title",mxResources.get("insertPage"));mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){this.insertPage();mxEvent.consume(a)}));return a}; -EditorUi.prototype.createTabForPage=function(a,b,f){f=this.createTab(f);var d=a.getName()||mxResources.get("untitled"),k=a.getId();f.setAttribute("title",d+(null!=k?" ("+k+")":""));mxUtils.write(f,d);f.style.maxWidth=b+"px";f.style.width=b+"px";this.addTabListeners(a,f);42<b&&(f.style.textOverflow="ellipsis");return f}; -EditorUi.prototype.addTabListeners=function(a,b){mxEvent.disableContextMenu(b);var f=this.editor.graph;mxEvent.addListener(b,"dblclick",mxUtils.bind(this,function(b){this.renamePage(a);mxEvent.consume(b)}));var d=!1,k=!1;mxEvent.addGestureListeners(b,mxUtils.bind(this,function(b){d=null!=this.currentMenu;k=a==this.currentPage;f.isMouseDown||k||this.selectPage(a)}),null,mxUtils.bind(this,function(n){if(f.isEnabled()&&!f.isMouseDown&&(mxEvent.isTouchEvent(n)&&k||mxEvent.isPopupTrigger(n))){f.popupMenuHandler.hideMenu(); -this.hideCurrentMenu();if(!mxEvent.isTouchEvent(n)||!d){var p=new mxPopupMenu(this.createPageMenu(a));p.div.className+=" geMenubarMenu";p.smartSeparators=!0;p.showDisabled=!0;p.autoExpand=!0;p.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(p,arguments);this.resetCurrentMenu();p.destroy()});var q=mxEvent.getClientX(n),w=mxEvent.getClientY(n);p.popup(q,w,null,n);this.setCurrentMenu(p,b)}mxEvent.consume(n)}}))}; -EditorUi.prototype.createPageMenu=function(a,b){return mxUtils.bind(this,function(f,d){f.addItem(mxResources.get("insert"),null,mxUtils.bind(this,function(){this.insertPage(null,mxUtils.indexOf(this.pages,a)+1)}),d);f.addItem(mxResources.get("delete"),null,mxUtils.bind(this,function(){this.removePage(a)}),d);f.addItem(mxResources.get("rename"),null,mxUtils.bind(this,function(){this.renamePage(a,b)}),d);f.addSeparator(d);f.addItem(mxResources.get("duplicate"),null,mxUtils.bind(this,function(){this.duplicatePage(a, -mxResources.get("copyOf",[a.getName()]))}),d)})};(function(){var a=EditorUi.prototype.refresh;EditorUi.prototype.refresh=function(b){a.apply(this,arguments);this.updateTabContainer()}})();(function(){mxCodecRegistry.getCodec(ChangePageSetup).exclude.push("page")})();(function(){var a=new mxObjectCodec(new MovePage,["ui"]);a.beforeDecode=function(a,f,d){d.ui=a.ui;return f};a.afterDecode=function(a,f,d){a=d.oldIndex;d.oldIndex=d.newIndex;d.newIndex=a;return d};mxCodecRegistry.register(a)})(); -(function(){var a=new mxObjectCodec(new RenamePage,["ui","page"]);a.beforeDecode=function(a,f,d){d.ui=a.ui;return f};a.afterDecode=function(a,f,d){a=d.previous;d.previous=d.name;d.name=a;return d};mxCodecRegistry.register(a)})(); -(function(){var a=new mxObjectCodec(new ChangePage,"ui relatedPage index neverShown page previousPage".split(" ")),b="defaultParent currentRoot scrollLeft scrollTop scale translate lastPasteXml pasteCounter".split(" ");a.afterEncode=function(a,d,k){k.setAttribute("relatedPage",d.relatedPage.getId());null==d.index&&(k.setAttribute("name",d.relatedPage.getName()),null!=d.relatedPage.viewState&&k.setAttribute("viewState",JSON.stringify(d.relatedPage.viewState,function(a,d){return 0>mxUtils.indexOf(b, -a)?d:void 0})),null!=d.relatedPage.root&&a.encodeCell(d.relatedPage.root,k));return k};a.beforeDecode=function(a,b,k){k.ui=a.ui;k.relatedPage=k.ui.getPageById(b.getAttribute("relatedPage"));if(null==k.relatedPage){var d=b.ownerDocument.createElement("diagram");d.setAttribute("id",b.getAttribute("relatedPage"));d.setAttribute("name",b.getAttribute("name"));k.relatedPage=new DiagramPage(d);d=b.getAttribute("viewState");null!=d&&(k.relatedPage.viewState=JSON.parse(d),b.removeAttribute("viewState")); -b=b.cloneNode(!0);d=b.firstChild;if(null!=d)for(k.relatedPage.root=a.decodeCell(d,!1),k=d.nextSibling,d.parentNode.removeChild(d),d=k;null!=d;){k=d.nextSibling;if(d.nodeType==mxConstants.NODETYPE_ELEMENT){var f=d.getAttribute("id");null==a.lookup(f)&&a.decodeCell(d)}d.parentNode.removeChild(d);d=k}}return b};a.afterDecode=function(a,b,k){k.index=k.previousIndex;return k};mxCodecRegistry.register(a)})();(function(){var a=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAASFBMVEUAAAAAAAB/f3/9/f319fUfHx/7+/s+Pj69vb0AAAAAAAAAAAAAAAAAAAAAAAAAAAB2dnZ1dXUAAAAAAAAVFRX///8ZGRkGBgbOcI1hAAAAE3RSTlMA+vr9/f38+fb1893Bo00u+/tFvPJUBQAAAIRJREFUGNM0jEcSxCAQAxlydGqD///TNWxZBx1aXVIrWysplbapL3sFxgDq/idXBnHgBPK1nIxwc55vCXl6dRFtrV6svs/A/UjsPcpzA5tqyByD92HqQlMFh45BG6ND1DiKSoPDdm96N77bg5F+wyaEqRGb8ZiOwHQqdg9hehszcLAEIQB2lQ4p/sEpnAAAAABJRU5ErkJggg==":IMAGE_PATH+"/move.png";EditorUi.prototype.altShiftActions[68]= -"selectDescendants";var b=Graph.prototype.foldCells;Graph.prototype.foldCells=function(a,d,f,q,w){d=null!=d?d:!1;null==f&&(f=this.getFoldableCells(this.getSelectionCells(),a));this.stopEditing();this.model.beginUpdate();try{for(var c=f.slice(),g=[],h=0;h<f.length;h++){var k=this.view.getState(f[h]),n=null!=k?k.style:this.getCellStyle(f[h]);"1"==mxUtils.getValue(n,"treeFolding","0")&&(this.traverse(f[h],!0,mxUtils.bind(this,function(a,b){null!=b&&g.push(b);a!=f[h]&&g.push(a);return a==f[h]||!this.model.isCollapsed(a)})), -this.model.setCollapsed(f[h],a))}for(h=0;h<g.length;h++)this.model.setVisible(g[h],!a);f=c;f=b.apply(this,arguments)}finally{this.model.endUpdate()}return f};var f=EditorUi.prototype.init;EditorUi.prototype.init=function(){f.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function b(a){return r.isVertex(a)&&d(a)}function d(a){var b=!1;null!=a&&(a=r.getParent(a),b=m.view.getState(a),m.view.getState(a),b="tree"==(null!= -b?b.style:m.getCellStyle(a)).containerType);return b}function f(a){var b=!1;null!=a&&(a=r.getParent(a),b=m.view.getState(a),m.view.getState(a),b=null!=(null!=b?b.style:m.getCellStyle(a)).childLayout);return b}function q(a){a=m.view.getState(a);if(null!=a){var b=m.getIncomingEdges(a.cell);if(0<b.length&&(b=m.view.getState(b[0]),null!=b&&(b=b.absolutePoints,null!=b&&0<b.length&&(b=b[b.length-1],null!=b)))){if(b.y==a.y&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_SOUTH;if(b.y== -a.y+a.height&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_NORTH;if(b.x>a.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function w(a,b){b=null!=b?b:!0;m.model.beginUpdate();try{var c=m.model.getParent(a),d=m.getIncomingEdges(a),f=m.cloneCells([d[0],a]);m.model.setTerminal(f[0],m.model.getTerminal(d[0],!0),!0);var g=q(a),h=c.geometry;g==mxConstants.DIRECTION_SOUTH||g==mxConstants.DIRECTION_NORTH?f[1].geometry.x+=b?a.geometry.width+10:-f[1].geometry.width- -10:f[1].geometry.y+=b?a.geometry.height+10:-f[1].geometry.height-10;m.view.currentRoot!=c&&(f[1].geometry.x-=h.x,f[1].geometry.y-=h.y);var k=m.view.getState(a),l=m.view.scale;if(null!=k){var n=mxRectangle.fromRectangle(k);g==mxConstants.DIRECTION_SOUTH||g==mxConstants.DIRECTION_NORTH?n.x+=(b?a.geometry.width+10:-f[1].geometry.width-10)*l:n.y+=(b?a.geometry.height+10:-f[1].geometry.height-10)*l;var r=m.getOutgoingEdges(m.model.getTerminal(d[0],!0));if(null!=r){for(var p=g==mxConstants.DIRECTION_SOUTH|| -g==mxConstants.DIRECTION_NORTH,u=h=d=0;u<r.length;u++){var t=m.model.getTerminal(r[u],!1);if(g==q(t)){var v=m.view.getState(t);t!=a&&null!=v&&(p&&b!=v.getCenterX()<k.getCenterX()||!p&&b!=v.getCenterY()<k.getCenterY())&&mxUtils.intersects(n,v)&&(d=10+Math.max(d,(Math.min(n.x+n.width,v.x+v.width)-Math.max(n.x,v.x))/l),h=10+Math.max(h,(Math.min(n.y+n.height,v.y+v.height)-Math.max(n.y,v.y))/l))}}p?h=0:d=0;for(u=0;u<r.length;u++)if(t=m.model.getTerminal(r[u],!1),g==q(t)&&(v=m.view.getState(t),t!=a&&null!= -v&&(p&&b!=v.getCenterX()<k.getCenterX()||!p&&b!=v.getCenterY()<k.getCenterY()))){var z=[];m.traverse(v.cell,!0,function(a,b){null!=b&&z.push(b);z.push(a);return!0});m.moveCells(z,(b?1:-1)*d,(b?1:-1)*h)}}}return m.addCells(f,c)}finally{m.model.endUpdate()}}function c(a){m.model.beginUpdate();try{var b=q(a),c=m.getIncomingEdges(a),d=m.cloneCells([c[0],a]);m.model.setTerminal(c[0],d[1],!1);m.model.setTerminal(d[0],d[1],!0);m.model.setTerminal(d[0],a,!1);var f=m.model.getParent(a),g=f.geometry,h=[];m.view.currentRoot!= -f&&(d[1].geometry.x-=g.x,d[1].geometry.y-=g.y);m.traverse(a,!0,function(a,b){null!=b&&h.push(b);h.push(a);return!0});var k=a.geometry.width+40,l=a.geometry.height+40;b==mxConstants.DIRECTION_SOUTH?k=0:b==mxConstants.DIRECTION_NORTH?(k=0,l=-40):b==mxConstants.DIRECTION_WEST?(k=-40,l=0):b==mxConstants.DIRECTION_EAST&&(l=0);m.moveCells(h,k,l);return m.addCells(d,f)}finally{m.model.endUpdate()}}function g(a){m.model.beginUpdate();try{var b=m.model.getParent(a),c=m.getIncomingEdges(a),d=m.cloneCells([c[0], -a]);m.model.setTerminal(d[0],a,!0);var c=m.getOutgoingEdges(a),f=b.geometry,g=[];m.view.currentRoot==b&&(f=new mxRectangle);for(var h=0;h<c.length;h++){var k=m.model.getTerminal(c[h],!1);null!=k&&g.push(k)}var l=m.view.getBounds(g),n=q(a),r=m.view.translate,p=m.view.scale;n==mxConstants.DIRECTION_SOUTH?(d[1].geometry.x=null==l?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(l.x+l.width)/p-r.x-f.x+10,d[1].geometry.y+=a.geometry.height-f.y+40):n==mxConstants.DIRECTION_NORTH?(d[1].geometry.x= -null==l?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(l.x+l.width)/p-r.x+-f.x+10,d[1].geometry.y-=d[1].geometry.height-f.y+40):(d[1].geometry.x=n==mxConstants.DIRECTION_WEST?d[1].geometry.x-(d[1].geometry.width-f.x+40):d[1].geometry.x+(a.geometry.width-f.x+40),d[1].geometry.y=null==l?a.geometry.y+(a.geometry.height-d[1].geometry.height)/2:(l.y+l.height)/p-r.y+-f.y+10);return m.addCells(d,b)}finally{m.model.endUpdate()}}function h(a,b,c){a=m.getOutgoingEdges(a);c=m.view.getState(c);var d= -[];if(null!=c&&null!=a){for(var f=0;f<a.length;f++){var g=m.view.getState(m.model.getTerminal(a[f],!1));null!=g&&(!b&&Math.min(g.x+g.width,c.x+c.width)>=Math.max(g.x,c.x)||b&&Math.min(g.y+g.height,c.y+c.height)>=Math.max(g.y,c.y))&&d.push(g)}d.sort(function(a,c){return b?a.x+a.width-c.x-c.width:a.y+a.height-c.y-c.height})}return d}function l(a,b){var c=q(a),d=b==mxConstants.DIRECTION_EAST||b==mxConstants.DIRECTION_WEST;(c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST)==d&&c!=b?t.actions.get("selectParent").funct(): -c==b?(d=m.getOutgoingEdges(a),null!=d&&0<d.length&&m.setSelectionCell(m.model.getTerminal(d[0],!1))):(c=m.getIncomingEdges(a),null!=c&&0<c.length&&(d=h(m.model.getTerminal(c[0],!0),d,a),c=m.view.getState(a),null!=c&&(c=mxUtils.indexOf(d,c),0<=c&&(c+=b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_WEST?-1:1,0<=c&&c<=d.length-1&&m.setSelectionCell(d[c].cell)))))}var t=this,m=t.editor.graph,r=m.getModel();mxResources.parse("selectChildren=Select Children");mxResources.parse("selectSiblings=Select Siblings"); -mxResources.parse("selectDescendants=Select Descendants");mxResources.parse("selectParent=Select Parent");var x=t.menus.createPopupMenu;t.menus.createPopupMenu=function(a,c,d){x.apply(this,arguments);if(1==m.getSelectionCount()){c=m.getSelectionCell();var f=m.getOutgoingEdges(c);a.addSeparator();null!=f&&0<f.length&&(b(m.getSelectionCell())&&this.addMenuItems(a,["selectChildren"],null,d),this.addMenuItems(a,["selectDescendants"],null,d));b(m.getSelectionCell())&&(a.addSeparator(),0<m.getIncomingEdges(c).length&& -this.addMenuItems(a,["selectSiblings","selectParent"],null,d))}};t.actions.addAction("selectChildren",function(){if(m.isEnabled()&&1==m.getSelectionCount()){var a=m.getSelectionCell(),a=m.getOutgoingEdges(a);if(null!=a){for(var b=[],c=0;c<a.length;c++)b.push(m.model.getTerminal(a[c],!1));m.setSelectionCells(b)}}},null,null,"Alt+Shift+X");t.actions.addAction("selectSiblings",function(){if(m.isEnabled()&&1==m.getSelectionCount()){var a=m.getSelectionCell(),a=m.getIncomingEdges(a);if(null!=a&&0<a.length&& -(a=m.getOutgoingEdges(m.model.getTerminal(a[0],!0)),null!=a)){for(var b=[],c=0;c<a.length;c++)b.push(m.model.getTerminal(a[c],!1));m.setSelectionCells(b)}}},null,null,"Alt+Shift+S");t.actions.addAction("selectParent",function(){if(m.isEnabled()&&1==m.getSelectionCount()){var a=m.getSelectionCell(),a=m.getIncomingEdges(a);null!=a&&0<a.length&&m.setSelectionCell(m.model.getTerminal(a[0],!0))}},null,null,"Alt+Shift+P");t.actions.addAction("selectDescendants",function(){if(m.isEnabled()&&1==m.getSelectionCount()){var a= -m.getSelectionCell(),b=[];m.traverse(a,!0,function(a,c){null!=c&&b.push(c);b.push(a);return!0});m.setSelectionCells(b)}},null,null,"Alt+Shift+D");var v=m.removeCells;m.removeCells=function(a,c){c=null!=c?c:!0;null==a&&(a=this.getDeletableCells(this.getSelectionCells()));c&&(a=this.getDeletableCells(this.addAllEdges(a)));for(var f=[],g=0;g<a.length;g++){var h=a[g];r.isEdge(h)&&d(h)&&(f.push(h),h=r.getTerminal(h,!1));b(h)?(m.traverse(h,!0,function(a,b){null!=b&&f.push(b);f.push(a);return!0}),h=m.getIncomingEdges(a[g]), -a=a.concat(h)):f.push(a[g])}a=f;return v.apply(this,arguments)};t.hoverIcons.getStateAt=function(a,c,d){return b(a.cell)?null:this.graph.view.getState(this.graph.getCellAt(c,d))};var D=m.duplicateCells;m.duplicateCells=function(a,c){a=null!=a?a:this.getSelectionCells();for(var d=a.slice(0),f=0;f<d.length;f++){var g=m.view.getState(d[f]);if(null!=g&&b(g.cell))for(var h=m.getIncomingEdges(g.cell),g=0;g<h.length;g++)mxUtils.remove(h[g],a)}this.model.beginUpdate();try{var k=D.call(this,a,c);if(k.length== -a.length)for(f=0;f<a.length;f++)if(b(a[f])){var l=m.getIncomingEdges(k[f]),h=m.getIncomingEdges(a[f]);if(0==l.length&&0<h.length){var n=this.cloneCell(h[0]);this.addEdge(n,m.getDefaultParent(),this.model.getTerminal(h[0],!0),k[f])}}}finally{this.model.endUpdate()}return k};var y=m.moveCells;m.moveCells=function(a,c,d,f,g,h,k){var l=null;this.model.beginUpdate();try{var n=g,r=this.view.getState(g),p=null!=r?r.style:this.getCellStyle(g);if(null!=a&&b(g)&&"1"==mxUtils.getValue(p,"treeFolding","0")){for(var q= -0;q<a.length;q++)if(b(a[q])||m.model.isEdge(a[q])&&null==m.model.getTerminal(a[q],!0)){g=m.model.getParent(a[q]);break}if(null!=n&&g!=n&&null!=this.view.getState(a[0])){var u=m.getIncomingEdges(a[0]);if(0<u.length){var t=m.view.getState(m.model.getTerminal(u[0],!0));if(null!=t){var v=m.view.getState(n);null!=v&&(c=(v.getCenterX()-t.getCenterX())/m.view.scale,d=(v.getCenterY()-t.getCenterY())/m.view.scale)}}}}l=y.apply(this,arguments);if(null!=l&&null!=a&&l.length==a.length)for(q=0;q<l.length;q++)if(this.model.isEdge(l[q]))b(n)&& -0>mxUtils.indexOf(l,this.model.getTerminal(l[q],!0))&&this.model.setTerminal(l[q],n,!0);else if(b(a[q])&&(u=m.getIncomingEdges(a[q]),0<u.length))if(!f)b(n)&&0>mxUtils.indexOf(a,this.model.getTerminal(u[0],!0))&&this.model.setTerminal(u[0],n,!0);else if(0==m.getIncomingEdges(l[q]).length){r=n;if(null==r||r==m.model.getParent(a[q]))r=m.model.getTerminal(u[0],!0);f=this.cloneCell(u[0]);this.addEdge(f,m.getDefaultParent(),r,l[q])}}finally{this.model.endUpdate()}return l};if(null!=t.sidebar){var u=t.sidebar.dropAndConnect; -t.sidebar.dropAndConnect=function(a,c,d,f){var g=m.model,h=null;g.beginUpdate();try{if(h=u.apply(this,arguments),b(a))for(var k=0;k<h.length;k++)if(g.isEdge(h[k])&&null==g.getTerminal(h[k],!0)){g.setTerminal(h[k],a,!0);var l=m.getCellGeometry(h[k]);l.points=null;null!=l.getTerminalPoint(!0)&&l.setTerminalPoint(null,!0)}}finally{g.endUpdate()}return h}}var A={88:t.actions.get("selectChildren"),84:t.actions.get("selectSubtree"),80:t.actions.get("selectParent"),83:t.actions.get("selectSiblings")},F= -t.onKeyDown;t.onKeyDown=function(a){try{if(m.isEnabled()&&!m.isEditing()&&b(m.getSelectionCell())&&1==m.getSelectionCount()){var d=null;0<m.getIncomingEdges(m.getSelectionCell()).length&&(9==a.which?d=mxEvent.isShiftDown(a)?c(m.getSelectionCell()):g(m.getSelectionCell()):13==a.which&&(d=w(m.getSelectionCell(),!mxEvent.isShiftDown(a))));if(null!=d&&0<d.length)1==d.length&&m.model.isEdge(d[0])?m.setSelectionCell(m.model.getTerminal(d[0],!1)):m.setSelectionCell(d[d.length-1]),null!=t.hoverIcons&&t.hoverIcons.update(m.view.getState(m.getSelectionCell())), -m.startEditingAtCell(m.getSelectionCell()),mxEvent.consume(a);else if(mxEvent.isAltDown(a)&&mxEvent.isShiftDown(a)){var f=A[a.keyCode];null!=f&&(f.funct(a),mxEvent.consume(a))}else 37==a.keyCode?(l(m.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(a)):38==a.keyCode?(l(m.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(a)):39==a.keyCode?(l(m.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(a)):40==a.keyCode&&(l(m.getSelectionCell(),mxConstants.DIRECTION_SOUTH), -mxEvent.consume(a))}}catch(O){console.log("error",O)}mxEvent.isConsumed(a)||F.apply(this,arguments)};var Q=m.connectVertex;m.connectVertex=function(a,d,f,h,k,l){var n=m.getIncomingEdges(a);return b(a)&&0<n.length?(f=q(a),h=f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST,k=d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST,f==d?g(a):h==k?c(a):w(a,d!=mxConstants.DIRECTION_NORTH&&d!=mxConstants.DIRECTION_WEST)):Q.call(this,a,d,f,h,k,l)};m.getSubtree=function(a){var c=[a];b(a)&& -!f(a)&&m.traverse(a,!0,function(a,b){null!=b&&0>mxUtils.indexOf(c,b)&&c.push(b);0>mxUtils.indexOf(c,a)&&c.push(a);return!0});return c};var G=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){G.apply(this,arguments);b(this.state.cell)&&0<this.graph.getOutgoingEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(a),this.moveHandle.setAttribute("title","Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width= +EditorUi.prototype.createTabForPage=function(a,b,e){e=this.createTab(e);var c=a.getName()||mxResources.get("untitled"),k=a.getId();e.setAttribute("title",c+(null!=k?" ("+k+")":""));mxUtils.write(e,c);e.style.maxWidth=b+"px";e.style.width=b+"px";this.addTabListeners(a,e);42<b&&(e.style.textOverflow="ellipsis");return e}; +EditorUi.prototype.addTabListeners=function(a,b){mxEvent.disableContextMenu(b);var e=this.editor.graph;mxEvent.addListener(b,"dblclick",mxUtils.bind(this,function(b){this.renamePage(a);mxEvent.consume(b)}));var c=!1,k=!1;mxEvent.addGestureListeners(b,mxUtils.bind(this,function(b){c=null!=this.currentMenu;k=a==this.currentPage;e.isMouseDown||k||this.selectPage(a)}),null,mxUtils.bind(this,function(m){if(e.isEnabled()&&!e.isMouseDown&&(mxEvent.isTouchEvent(m)&&k||mxEvent.isPopupTrigger(m))){e.popupMenuHandler.hideMenu(); +this.hideCurrentMenu();if(!mxEvent.isTouchEvent(m)||!c){var q=new mxPopupMenu(this.createPageMenu(a));q.div.className+=" geMenubarMenu";q.smartSeparators=!0;q.showDisabled=!0;q.autoExpand=!0;q.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(q,arguments);this.resetCurrentMenu();q.destroy()});var r=mxEvent.getClientX(m),v=mxEvent.getClientY(m);q.popup(r,v,null,m);this.setCurrentMenu(q,b)}mxEvent.consume(m)}}))}; +EditorUi.prototype.createPageMenu=function(a,b){return mxUtils.bind(this,function(e,c){e.addItem(mxResources.get("insert"),null,mxUtils.bind(this,function(){this.insertPage(null,mxUtils.indexOf(this.pages,a)+1)}),c);e.addItem(mxResources.get("delete"),null,mxUtils.bind(this,function(){this.removePage(a)}),c);e.addItem(mxResources.get("rename"),null,mxUtils.bind(this,function(){this.renamePage(a,b)}),c);e.addSeparator(c);e.addItem(mxResources.get("duplicate"),null,mxUtils.bind(this,function(){this.duplicatePage(a, +mxResources.get("copyOf",[a.getName()]))}),c)})};(function(){var a=EditorUi.prototype.refresh;EditorUi.prototype.refresh=function(b){a.apply(this,arguments);this.updateTabContainer()}})();(function(){mxCodecRegistry.getCodec(ChangePageSetup).exclude.push("page")})();(function(){var a=new mxObjectCodec(new MovePage,["ui"]);a.beforeDecode=function(a,e,c){c.ui=a.ui;return e};a.afterDecode=function(a,e,c){a=c.oldIndex;c.oldIndex=c.newIndex;c.newIndex=a;return c};mxCodecRegistry.register(a)})(); +(function(){var a=new mxObjectCodec(new RenamePage,["ui","page"]);a.beforeDecode=function(a,e,c){c.ui=a.ui;return e};a.afterDecode=function(a,e,c){a=c.previous;c.previous=c.name;c.name=a;return c};mxCodecRegistry.register(a)})(); +(function(){var a=new mxObjectCodec(new ChangePage,"ui relatedPage index neverShown page previousPage".split(" ")),b="defaultParent currentRoot scrollLeft scrollTop scale translate lastPasteXml pasteCounter".split(" ");a.afterEncode=function(a,c,k){k.setAttribute("relatedPage",c.relatedPage.getId());null==c.index&&(k.setAttribute("name",c.relatedPage.getName()),null!=c.relatedPage.viewState&&k.setAttribute("viewState",JSON.stringify(c.relatedPage.viewState,function(a,c){return 0>mxUtils.indexOf(b, +a)?c:void 0})),null!=c.relatedPage.root&&a.encodeCell(c.relatedPage.root,k));return k};a.beforeDecode=function(a,b,k){k.ui=a.ui;k.relatedPage=k.ui.getPageById(b.getAttribute("relatedPage"));if(null==k.relatedPage){var c=b.ownerDocument.createElement("diagram");c.setAttribute("id",b.getAttribute("relatedPage"));c.setAttribute("name",b.getAttribute("name"));k.relatedPage=new DiagramPage(c);c=b.getAttribute("viewState");null!=c&&(k.relatedPage.viewState=JSON.parse(c),b.removeAttribute("viewState")); +b=b.cloneNode(!0);c=b.firstChild;if(null!=c)for(k.relatedPage.root=a.decodeCell(c,!1),k=c.nextSibling,c.parentNode.removeChild(c),c=k;null!=c;){k=c.nextSibling;if(c.nodeType==mxConstants.NODETYPE_ELEMENT){var e=c.getAttribute("id");null==a.lookup(e)&&a.decodeCell(c)}c.parentNode.removeChild(c);c=k}}return b};a.afterDecode=function(a,b,k){k.index=k.previousIndex;return k};mxCodecRegistry.register(a)})();(function(){var a=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAASFBMVEUAAAAAAAB/f3/9/f319fUfHx/7+/s+Pj69vb0AAAAAAAAAAAAAAAAAAAAAAAAAAAB2dnZ1dXUAAAAAAAAVFRX///8ZGRkGBgbOcI1hAAAAE3RSTlMA+vr9/f38+fb1893Bo00u+/tFvPJUBQAAAIRJREFUGNM0jEcSxCAQAxlydGqD///TNWxZBx1aXVIrWysplbapL3sFxgDq/idXBnHgBPK1nIxwc55vCXl6dRFtrV6svs/A/UjsPcpzA5tqyByD92HqQlMFh45BG6ND1DiKSoPDdm96N77bg5F+wyaEqRGb8ZiOwHQqdg9hehszcLAEIQB2lQ4p/sEpnAAAAABJRU5ErkJggg==":IMAGE_PATH+"/move.png";EditorUi.prototype.altShiftActions[68]= +"selectDescendants";var b=Graph.prototype.foldCells;Graph.prototype.foldCells=function(a,c,e,r,v){c=null!=c?c:!1;null==e&&(e=this.getFoldableCells(this.getSelectionCells(),a));this.stopEditing();this.model.beginUpdate();try{for(var k=e.slice(),d=[],f=0;f<e.length;f++){var l=this.view.getState(e[f]),m=null!=l?l.style:this.getCellStyle(e[f]);"1"==mxUtils.getValue(m,"treeFolding","0")&&(this.traverse(e[f],!0,mxUtils.bind(this,function(a,b){null!=b&&d.push(b);a!=e[f]&&d.push(a);return a==e[f]||!this.model.isCollapsed(a)})), +this.model.setCollapsed(e[f],a))}for(f=0;f<d.length;f++)this.model.setVisible(d[f],!a);e=k;e=b.apply(this,arguments)}finally{this.model.endUpdate()}return e};var e=EditorUi.prototype.init;EditorUi.prototype.init=function(){e.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function b(a){return p.isVertex(a)&&c(a)}function c(a){var b=!1;null!=a&&(a=p.getParent(a),b=g.view.getState(a),g.view.getState(a),b="tree"==(null!= +b?b.style:g.getCellStyle(a)).containerType);return b}function e(a){var b=!1;null!=a&&(a=p.getParent(a),b=g.view.getState(a),g.view.getState(a),b=null!=(null!=b?b.style:g.getCellStyle(a)).childLayout);return b}function r(a){a=g.view.getState(a);if(null!=a){var b=g.getIncomingEdges(a.cell);if(0<b.length&&(b=g.view.getState(b[0]),null!=b&&(b=b.absolutePoints,null!=b&&0<b.length&&(b=b[b.length-1],null!=b)))){if(b.y==a.y&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_SOUTH;if(b.y== +a.y+a.height&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_NORTH;if(b.x>a.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function v(a,b){b=null!=b?b:!0;g.model.beginUpdate();try{var c=g.model.getParent(a),d=g.getIncomingEdges(a),e=g.cloneCells([d[0],a]);g.model.setTerminal(e[0],g.model.getTerminal(d[0],!0),!0);var f=r(a),k=c.geometry;f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH?e[1].geometry.x+=b?a.geometry.width+10:-e[1].geometry.width- +10:e[1].geometry.y+=b?a.geometry.height+10:-e[1].geometry.height-10;g.view.currentRoot!=c&&(e[1].geometry.x-=k.x,e[1].geometry.y-=k.y);var l=g.view.getState(a),p=g.view.scale;if(null!=l){var m=mxRectangle.fromRectangle(l);f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH?m.x+=(b?a.geometry.width+10:-e[1].geometry.width-10)*p:m.y+=(b?a.geometry.height+10:-e[1].geometry.height-10)*p;var q=g.getOutgoingEdges(g.model.getTerminal(d[0],!0));if(null!=q){for(var n=f==mxConstants.DIRECTION_SOUTH|| +f==mxConstants.DIRECTION_NORTH,u=k=d=0;u<q.length;u++){var t=g.model.getTerminal(q[u],!1);if(f==r(t)){var A=g.view.getState(t);t!=a&&null!=A&&(n&&b!=A.getCenterX()<l.getCenterX()||!n&&b!=A.getCenterY()<l.getCenterY())&&mxUtils.intersects(m,A)&&(d=10+Math.max(d,(Math.min(m.x+m.width,A.x+A.width)-Math.max(m.x,A.x))/p),k=10+Math.max(k,(Math.min(m.y+m.height,A.y+A.height)-Math.max(m.y,A.y))/p))}}n?k=0:d=0;for(u=0;u<q.length;u++)if(t=g.model.getTerminal(q[u],!1),f==r(t)&&(A=g.view.getState(t),t!=a&&null!= +A&&(n&&b!=A.getCenterX()<l.getCenterX()||!n&&b!=A.getCenterY()<l.getCenterY()))){var v=[];g.traverse(A.cell,!0,function(a,b){null!=b&&v.push(b);v.push(a);return!0});g.moveCells(v,(b?1:-1)*d,(b?1:-1)*k)}}}return g.addCells(e,c)}finally{g.model.endUpdate()}}function z(a){g.model.beginUpdate();try{var b=r(a),d=g.getIncomingEdges(a),c=g.cloneCells([d[0],a]);g.model.setTerminal(d[0],c[1],!1);g.model.setTerminal(c[0],c[1],!0);g.model.setTerminal(c[0],a,!1);var e=g.model.getParent(a),f=e.geometry,k=[];g.view.currentRoot!= +e&&(c[1].geometry.x-=f.x,c[1].geometry.y-=f.y);g.traverse(a,!0,function(a,b){null!=b&&k.push(b);k.push(a);return!0});var l=a.geometry.width+40,m=a.geometry.height+40;b==mxConstants.DIRECTION_SOUTH?l=0:b==mxConstants.DIRECTION_NORTH?(l=0,m=-40):b==mxConstants.DIRECTION_WEST?(l=-40,m=0):b==mxConstants.DIRECTION_EAST&&(m=0);g.moveCells(k,l,m);return g.addCells(c,e)}finally{g.model.endUpdate()}}function d(a){g.model.beginUpdate();try{var b=g.model.getParent(a),c=g.getIncomingEdges(a),d=g.cloneCells([c[0], +a]);g.model.setTerminal(d[0],a,!0);var c=g.getOutgoingEdges(a),e=b.geometry,f=[];g.view.currentRoot==b&&(e=new mxRectangle);for(var k=0;k<c.length;k++){var l=g.model.getTerminal(c[k],!1);null!=l&&f.push(l)}var m=g.view.getBounds(f),p=r(a),q=g.view.translate,n=g.view.scale;p==mxConstants.DIRECTION_SOUTH?(d[1].geometry.x=null==m?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(m.x+m.width)/n-q.x-e.x+10,d[1].geometry.y+=a.geometry.height-e.y+40):p==mxConstants.DIRECTION_NORTH?(d[1].geometry.x= +null==m?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(m.x+m.width)/n-q.x+-e.x+10,d[1].geometry.y-=d[1].geometry.height-e.y+40):(d[1].geometry.x=p==mxConstants.DIRECTION_WEST?d[1].geometry.x-(d[1].geometry.width-e.x+40):d[1].geometry.x+(a.geometry.width-e.x+40),d[1].geometry.y=null==m?a.geometry.y+(a.geometry.height-d[1].geometry.height)/2:(m.y+m.height)/n-q.y+-e.y+10);return g.addCells(d,b)}finally{g.model.endUpdate()}}function f(a,b,d){a=g.getOutgoingEdges(a);d=g.view.getState(d);var c= +[];if(null!=d&&null!=a){for(var e=0;e<a.length;e++){var f=g.view.getState(g.model.getTerminal(a[e],!1));null!=f&&(!b&&Math.min(f.x+f.width,d.x+d.width)>=Math.max(f.x,d.x)||b&&Math.min(f.y+f.height,d.y+d.height)>=Math.max(f.y,d.y))&&c.push(f)}c.sort(function(a,d){return b?a.x+a.width-d.x-d.width:a.y+a.height-d.y-d.height})}return c}function l(a,b){var d=r(a),c=b==mxConstants.DIRECTION_EAST||b==mxConstants.DIRECTION_WEST;(d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST)==c&&d!=b?n.actions.get("selectParent").funct(): +d==b?(c=g.getOutgoingEdges(a),null!=c&&0<c.length&&g.setSelectionCell(g.model.getTerminal(c[0],!1))):(d=g.getIncomingEdges(a),null!=d&&0<d.length&&(c=f(g.model.getTerminal(d[0],!0),c,a),d=g.view.getState(a),null!=d&&(d=mxUtils.indexOf(c,d),0<=d&&(d+=b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_WEST?-1:1,0<=d&&d<=c.length-1&&g.setSelectionCell(c[d].cell)))))}var n=this,g=n.editor.graph,p=g.getModel();mxResources.parse("selectChildren=Select Children");mxResources.parse("selectSiblings=Select Siblings"); +mxResources.parse("selectDescendants=Select Descendants");mxResources.parse("selectParent=Select Parent");var B=n.menus.createPopupMenu;n.menus.createPopupMenu=function(a,d,c){B.apply(this,arguments);if(1==g.getSelectionCount()){d=g.getSelectionCell();var e=g.getOutgoingEdges(d);a.addSeparator();null!=e&&0<e.length&&(b(g.getSelectionCell())&&this.addMenuItems(a,["selectChildren"],null,c),this.addMenuItems(a,["selectDescendants"],null,c));b(g.getSelectionCell())&&(a.addSeparator(),0<g.getIncomingEdges(d).length&& +this.addMenuItems(a,["selectSiblings","selectParent"],null,c))}};n.actions.addAction("selectChildren",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a=g.getSelectionCell(),a=g.getOutgoingEdges(a);if(null!=a){for(var b=[],d=0;d<a.length;d++)b.push(g.model.getTerminal(a[d],!1));g.setSelectionCells(b)}}},null,null,"Alt+Shift+X");n.actions.addAction("selectSiblings",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a=g.getSelectionCell(),a=g.getIncomingEdges(a);if(null!=a&&0<a.length&& +(a=g.getOutgoingEdges(g.model.getTerminal(a[0],!0)),null!=a)){for(var b=[],d=0;d<a.length;d++)b.push(g.model.getTerminal(a[d],!1));g.setSelectionCells(b)}}},null,null,"Alt+Shift+S");n.actions.addAction("selectParent",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a=g.getSelectionCell(),a=g.getIncomingEdges(a);null!=a&&0<a.length&&g.setSelectionCell(g.model.getTerminal(a[0],!0))}},null,null,"Alt+Shift+P");n.actions.addAction("selectDescendants",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a= +g.getSelectionCell(),b=[];g.traverse(a,!0,function(a,d){null!=d&&b.push(d);b.push(a);return!0});g.setSelectionCells(b)}},null,null,"Alt+Shift+D");var x=g.removeCells;g.removeCells=function(a,d){d=null!=d?d:!0;null==a&&(a=this.getDeletableCells(this.getSelectionCells()));d&&(a=this.getDeletableCells(this.addAllEdges(a)));for(var e=[],f=0;f<a.length;f++){var k=a[f];p.isEdge(k)&&c(k)&&(e.push(k),k=p.getTerminal(k,!1));b(k)?(g.traverse(k,!0,function(a,b){null!=b&&e.push(b);e.push(a);return!0}),k=g.getIncomingEdges(a[f]), +a=a.concat(k)):e.push(a[f])}a=e;return x.apply(this,arguments)};n.hoverIcons.getStateAt=function(a,d,c){return b(a.cell)?null:this.graph.view.getState(this.graph.getCellAt(d,c))};var t=g.duplicateCells;g.duplicateCells=function(a,d){a=null!=a?a:this.getSelectionCells();for(var c=a.slice(0),e=0;e<c.length;e++){var f=g.view.getState(c[e]);if(null!=f&&b(f.cell))for(var k=g.getIncomingEdges(f.cell),f=0;f<k.length;f++)mxUtils.remove(k[f],a)}this.model.beginUpdate();try{var l=t.call(this,a,d);if(l.length== +a.length)for(e=0;e<a.length;e++)if(b(a[e])){var m=g.getIncomingEdges(l[e]),k=g.getIncomingEdges(a[e]);if(0==m.length&&0<k.length){var p=this.cloneCell(k[0]);this.addEdge(p,g.getDefaultParent(),this.model.getTerminal(k[0],!0),l[e])}}}finally{this.model.endUpdate()}return l};var y=g.moveCells;g.moveCells=function(a,d,c,e,f,k,l){var m=null;this.model.beginUpdate();try{var p=f,q=this.view.getState(f),n=null!=q?q.style:this.getCellStyle(f);if(null!=a&&b(f)&&"1"==mxUtils.getValue(n,"treeFolding","0")){for(var u= +0;u<a.length;u++)if(b(a[u])||g.model.isEdge(a[u])&&null==g.model.getTerminal(a[u],!0)){f=g.model.getParent(a[u]);break}if(null!=p&&f!=p&&null!=this.view.getState(a[0])){var r=g.getIncomingEdges(a[0]);if(0<r.length){var t=g.view.getState(g.model.getTerminal(r[0],!0));if(null!=t){var A=g.view.getState(p);null!=A&&(d=(A.getCenterX()-t.getCenterX())/g.view.scale,c=(A.getCenterY()-t.getCenterY())/g.view.scale)}}}}m=y.apply(this,arguments);if(null!=m&&null!=a&&m.length==a.length)for(u=0;u<m.length;u++)if(this.model.isEdge(m[u]))b(p)&& +0>mxUtils.indexOf(m,this.model.getTerminal(m[u],!0))&&this.model.setTerminal(m[u],p,!0);else if(b(a[u])&&(r=g.getIncomingEdges(a[u]),0<r.length))if(!e)b(p)&&0>mxUtils.indexOf(a,this.model.getTerminal(r[0],!0))&&this.model.setTerminal(r[0],p,!0);else if(0==g.getIncomingEdges(m[u]).length){q=p;if(null==q||q==g.model.getParent(a[u]))q=g.model.getTerminal(r[0],!0);e=this.cloneCell(r[0]);this.addEdge(e,g.getDefaultParent(),q,m[u])}}finally{this.model.endUpdate()}return m};if(null!=n.sidebar){var u=n.sidebar.dropAndConnect; +n.sidebar.dropAndConnect=function(a,d,c,e){var f=g.model,k=null;f.beginUpdate();try{if(k=u.apply(this,arguments),b(a))for(var l=0;l<k.length;l++)if(f.isEdge(k[l])&&null==f.getTerminal(k[l],!0)){f.setTerminal(k[l],a,!0);var m=g.getCellGeometry(k[l]);m.points=null;null!=m.getTerminalPoint(!0)&&m.setTerminalPoint(null,!0)}}finally{f.endUpdate()}return k}}var A={88:n.actions.get("selectChildren"),84:n.actions.get("selectSubtree"),80:n.actions.get("selectParent"),83:n.actions.get("selectSiblings")},D= +n.onKeyDown;n.onKeyDown=function(a){try{if(g.isEnabled()&&!g.isEditing()&&b(g.getSelectionCell())&&1==g.getSelectionCount()){var c=null;0<g.getIncomingEdges(g.getSelectionCell()).length&&(9==a.which?c=mxEvent.isShiftDown(a)?z(g.getSelectionCell()):d(g.getSelectionCell()):13==a.which&&(c=v(g.getSelectionCell(),!mxEvent.isShiftDown(a))));if(null!=c&&0<c.length)1==c.length&&g.model.isEdge(c[0])?g.setSelectionCell(g.model.getTerminal(c[0],!1)):g.setSelectionCell(c[c.length-1]),null!=n.hoverIcons&&n.hoverIcons.update(g.view.getState(g.getSelectionCell())), +g.startEditingAtCell(g.getSelectionCell()),mxEvent.consume(a);else if(mxEvent.isAltDown(a)&&mxEvent.isShiftDown(a)){var e=A[a.keyCode];null!=e&&(e.funct(a),mxEvent.consume(a))}else 37==a.keyCode?(l(g.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(a)):38==a.keyCode?(l(g.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(a)):39==a.keyCode?(l(g.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(a)):40==a.keyCode&&(l(g.getSelectionCell(),mxConstants.DIRECTION_SOUTH), +mxEvent.consume(a))}}catch(O){console.log("error",O)}mxEvent.isConsumed(a)||D.apply(this,arguments)};var U=g.connectVertex;g.connectVertex=function(a,c,e,f,k,l){var m=g.getIncomingEdges(a);return b(a)&&0<m.length?(e=r(a),f=e==mxConstants.DIRECTION_EAST||e==mxConstants.DIRECTION_WEST,k=c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST,e==c?d(a):f==k?z(a):v(a,c!=mxConstants.DIRECTION_NORTH&&c!=mxConstants.DIRECTION_WEST)):U.call(this,a,c,e,f,k,l)};g.getSubtree=function(a){var d=[a];b(a)&& +!e(a)&&g.traverse(a,!0,function(a,b){null!=b&&0>mxUtils.indexOf(d,b)&&d.push(b);0>mxUtils.indexOf(d,a)&&d.push(a);return!0});return d};var S=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){S.apply(this,arguments);b(this.state.cell)&&0<this.graph.getOutgoingEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(a),this.moveHandle.setAttribute("title","Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width= "18px",this.moveHandle.style.height="18px",this.graph.container.appendChild(this.moveHandle),mxEvent.addGestureListeners(this.moveHandle,mxUtils.bind(this,function(a){this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(a),mxEvent.getClientY(a));this.graph.graphHandler.cells=this.graph.getSubtree(this.state.cell);this.graph.graphHandler.bounds=this.state.view.getBounds(this.graph.graphHandler.cells);this.graph.graphHandler.pBounds=this.graph.graphHandler.getPreviewBounds(this.graph.graphHandler.cells); -this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(a);this.graph.isMouseDown=!0;mxEvent.consume(a)})))};var I=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){I.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.left=this.state.x+this.state.width+(40>this.state.width?10:0)+2+"px",this.moveHandle.style.top=this.state.y+this.state.height+(40>this.state.height?10:0)+2+"px")};var M=mxVertexHandler.prototype.destroy; -mxVertexHandler.prototype.destroy=function(a,b){M.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.parentNode.removeChild(this.moveHandle),this.moveHandle=null)}};if("undefined"!==typeof Sidebar){var d=Sidebar.prototype.createAdvancedShapes;Sidebar.prototype.createAdvancedShapes=function(){var a=d.apply(this,arguments),b=this.graph;return a.concat([this.addEntry("tree container",function(){var a=new mxCell("Tree Container",new mxGeometry(0,0,220,160),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;"); -a.vertex=!0;return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap central idea branch topic",function(){var a=new mxCell("Mindmap",new mxGeometry(0,0,420,126),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");a.vertex=!0;var b=new mxCell("Central Idea",new mxGeometry(160,60,100,40),"ellipse;whiteSpace=wrap;html=1;align=center;container=1;recursiveResize=0;treeFolding=1;");b.vertex=!0;var d=new mxCell("Topic",new mxGeometry(320, -40,80,20),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;");d.vertex=!0;var c=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");c.geometry.relative=!0;c.edge=!0;b.insertEdge(c,!0);d.insertEdge(c,!1);var f=new mxCell("Branch",new mxGeometry(320,80,72,26),"whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;"); -f.vertex=!0;var h=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");h.geometry.relative=!0;h.edge=!0;b.insertEdge(h,!0);f.insertEdge(h,!1);var k=new mxCell("Topic",new mxGeometry(20,40,80,20),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;");k.vertex=!0;var n=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;"); -n.geometry.relative=!0;n.edge=!0;b.insertEdge(n,!0);k.insertEdge(n,!1);var m=new mxCell("Branch",new mxGeometry(20,80,72,26),"whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;");m.vertex=!0;var r=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;"); -r.geometry.relative=!0;r.edge=!0;b.insertEdge(r,!0);m.insertEdge(r,!1);a.insert(c);a.insert(h);a.insert(n);a.insert(r);a.insert(b);a.insert(d);a.insert(f);a.insert(k);a.insert(m);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap central idea",function(){var a=new mxCell("Central Idea",new mxGeometry(0,0,100,40),"ellipse;whiteSpace=wrap;html=1;align=center;container=1;recursiveResize=0;treeFolding=1;");a.vertex=!0;return sb.createVertexTemplateFromCells([a], +this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(a);this.graph.isMouseDown=!0;mxEvent.consume(a)})))};var N=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){N.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.left=this.state.x+this.state.width+(40>this.state.width?10:0)+2+"px",this.moveHandle.style.top=this.state.y+this.state.height+(40>this.state.height?10:0)+2+"px")};var K=mxVertexHandler.prototype.destroy; +mxVertexHandler.prototype.destroy=function(a,b){K.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.parentNode.removeChild(this.moveHandle),this.moveHandle=null)}};if("undefined"!==typeof Sidebar){var c=Sidebar.prototype.createAdvancedShapes;Sidebar.prototype.createAdvancedShapes=function(){var a=c.apply(this,arguments),b=this.graph;return a.concat([this.addEntry("tree container",function(){var a=new mxCell("Tree Container",new mxGeometry(0,0,220,160),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;"); +a.vertex=!0;return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap central idea branch topic",function(){var a=new mxCell("Mindmap",new mxGeometry(0,0,420,126),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");a.vertex=!0;var b=new mxCell("Central Idea",new mxGeometry(160,60,100,40),"ellipse;whiteSpace=wrap;html=1;align=center;container=1;recursiveResize=0;treeFolding=1;");b.vertex=!0;var c=new mxCell("Topic",new mxGeometry(320, +40,80,20),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;");c.vertex=!0;var e=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");e.geometry.relative=!0;e.edge=!0;b.insertEdge(e,!0);c.insertEdge(e,!1);var d=new mxCell("Branch",new mxGeometry(320,80,72,26),"whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;"); +d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");f.geometry.relative=!0;f.edge=!0;b.insertEdge(f,!0);d.insertEdge(f,!1);var k=new mxCell("Topic",new mxGeometry(20,40,80,20),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;");k.vertex=!0;var m=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;"); +m.geometry.relative=!0;m.edge=!0;b.insertEdge(m,!0);k.insertEdge(m,!1);var g=new mxCell("Branch",new mxGeometry(20,80,72,26),"whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;");g.vertex=!0;var p=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;"); +p.geometry.relative=!0;p.edge=!0;b.insertEdge(p,!0);g.insertEdge(p,!1);a.insert(e);a.insert(f);a.insert(m);a.insert(p);a.insert(b);a.insert(c);a.insert(d);a.insert(k);a.insert(g);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap central idea",function(){var a=new mxCell("Central Idea",new mxGeometry(0,0,100,40),"ellipse;whiteSpace=wrap;html=1;align=center;container=1;recursiveResize=0;treeFolding=1;");a.vertex=!0;return sb.createVertexTemplateFromCells([a], a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap branch",function(){var a=new mxCell("Branch",new mxGeometry(0,0,80,20),"whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;");a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;"); b.geometry.setTerminalPoint(new mxPoint(-40,40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);return sb.createVertexTemplateFromCells([a,b],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap sub topic",function(){var a=new mxCell("Sub Topic",new mxGeometry(0,0,72,26),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;");a.vertex=!0;var b=new mxCell("",new mxGeometry(0, -0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");b.geometry.setTerminalPoint(new mxPoint(-40,40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);return sb.createVertexTemplateFromCells([a,b],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree orgchart organization division",function(){var a=new mxCell("Orgchart",new mxGeometry(0,0,280,220),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");a.vertex=!0;var d=new mxCell("Organization", -new mxGeometry(80,40,120,60),"whiteSpace=wrap;html=1;align=center;treeFolding=1;container=1;recursiveResize=0;");b.setAttributeForCell(d,"treeRoot","1");d.vertex=!0;var f=new mxCell("Division",new mxGeometry(20,140,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;");f.vertex=!0;var c=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");c.geometry.relative=!0;c.edge=!0; -d.insertEdge(c,!0);f.insertEdge(c,!1);var g=new mxCell("Division",new mxGeometry(160,140,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;");g.vertex=!0;var h=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");h.geometry.relative=!0;h.edge=!0;d.insertEdge(h,!0);g.insertEdge(h,!1);a.insert(c);a.insert(h);a.insert(d);a.insert(f);a.insert(g);return sb.createVertexTemplateFromCells([a], +0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");b.geometry.setTerminalPoint(new mxPoint(-40,40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);return sb.createVertexTemplateFromCells([a,b],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree orgchart organization division",function(){var a=new mxCell("Orgchart",new mxGeometry(0,0,280,220),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");a.vertex=!0;var c=new mxCell("Organization", +new mxGeometry(80,40,120,60),"whiteSpace=wrap;html=1;align=center;treeFolding=1;container=1;recursiveResize=0;");b.setAttributeForCell(c,"treeRoot","1");c.vertex=!0;var e=new mxCell("Division",new mxGeometry(20,140,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;");e.vertex=!0;var k=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");k.geometry.relative=!0;k.edge=!0; +c.insertEdge(k,!0);e.insertEdge(k,!1);var d=new mxCell("Division",new mxGeometry(160,140,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;");d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");f.geometry.relative=!0;f.edge=!0;c.insertEdge(f,!0);d.insertEdge(f,!1);a.insert(k);a.insert(f);a.insert(c);a.insert(e);a.insert(d);return sb.createVertexTemplateFromCells([a], a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree root",function(){var a=new mxCell("Organization",new mxGeometry(0,0,120,60),"whiteSpace=wrap;html=1;align=center;treeFolding=1;container=1;recursiveResize=0;");b.setAttributeForCell(a,"treeRoot","1");a.vertex=!0;return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree division",function(){var a=new mxCell("Division",new mxGeometry(20,40,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;"); a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");b.geometry.setTerminalPoint(new mxPoint(0,0),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);return sb.createVertexTemplateFromCells([a,b],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree sub sections",function(){var a=new mxCell("Sub Section",new mxGeometry(0,0,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;"); -a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");b.geometry.setTerminalPoint(new mxPoint(110,-40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);var d=new mxCell("Sub Section",new mxGeometry(120,0,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;");d.vertex=!0;var c=new mxCell("",new mxGeometry(0, -0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");c.geometry.setTerminalPoint(new mxPoint(110,-40),!0);c.geometry.relative=!0;c.edge=!0;d.insertEdge(c,!1);return sb.createVertexTemplateFromCells([b,c,a,d],220,60,"Sub Sections")})])}}})();EditorUi.initMinimalTheme=function(){function a(a){var b=a.editor.graph;b.popupMenuHandler.hideMenu();null==a.formatWindow?(a.formatWindow=new k(a,mxResources.get("format"),Math.max(20,a.diagramContainer.clientWidth-240-12),56,240,Math.min(566,b.container.clientHeight-10),function(b){b=a.createFormat(b);b.init();return b}),a.formatWindow.window.minimumSize=new mxRectangle(0,0,240,80),a.formatWindow.window.setVisible(!0)):a.formatWindow.window.setVisible(!a.formatWindow.window.isVisible());a.formatWindow.window.isVisible()&& -a.formatWindow.window.fit()}function b(a){var b=a.editor.graph;b.popupMenuHandler.hideMenu();new mxRectangle;if(null==a.sidebarWindow){var c=Math.min(b.container.clientWidth-10,266);a.sidebarWindow=new k(a,mxResources.get("shapes"),10,56,c-6,Math.min(650,b.container.clientHeight-30),function(b){function c(c,d){var g=a.menus.get(c),h=f.addMenu(d,mxUtils.bind(this,function(){g.funct.apply(this,arguments)}));h.style.cssText="position:absolute;border-top:1px solid lightgray;width:50%;height:24px;bottom:0px;text-align:center;cursor:pointer;padding:6px 0 0 0;cusor:pointer;"; -h.className="geTitle";b.appendChild(h);return h}var d=document.createElement("div");d.style.cssText="position:absolute;left:0;right:0;border-top:1px solid lightgray;height:24px;bottom:31px;text-align:center;cursor:pointer;padding:6px 0 0 0;";d.className="geTitle";d.innerHTML='<span style="font-size:18px;margin-right:5px;">+</span>';mxUtils.write(d,mxResources.get("moreShapes"));b.appendChild(d);mxEvent.addListener(d,"click",function(){a.actions.get("shapes").funct()});var f=new Menubar(a,b);if(!Editor.enableCustomLibraries|| -"1"==urlParams.embed&&"1"!=urlParams.libraries)d.style.bottom="0";else if(null!=a.actions.get("newLibrary")){d=document.createElement("div");d.style.cssText="position:absolute;left:0px;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;";d.className="geTitle";var g=document.createElement("span");g.style.cssText="position:relative;top:6px;";mxUtils.write(g,mxResources.get("newLibrary"));d.appendChild(g);b.appendChild(d);mxEvent.addListener(d, -"click",a.actions.get("newLibrary").funct);d=document.createElement("div");d.style.cssText="position:absolute;left:50%;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;border-left: 1px solid lightgray;";d.className="geTitle";g=document.createElement("span");g.style.cssText="position:relative;top:6px;";mxUtils.write(g,mxResources.get("openLibrary"));d.appendChild(g);b.appendChild(d);mxEvent.addListener(d,"click",a.actions.get("openLibrary").funct)}else d= -c("newLibrary",mxResources.get("newLibrary")),d.style.left="0",d=c("openLibraryFrom",mxResources.get("openLibraryFrom")),d.style.borderLeft="1px solid lightgray",d.style.left="50%";b.appendChild(a.sidebar.container);b.style.overflow="hidden";return b});a.sidebarWindow.window.minimumSize=new mxRectangle(0,0,90,90);a.sidebarWindow.window.setVisible(!0);a.getLocalData("sidebar",function(b){a.sidebar.showEntries(b,null,!0)});a.restoreLibraries()}else a.sidebarWindow.window.setVisible(!a.sidebarWindow.window.isVisible()); -a.sidebarWindow.window.isVisible()&&a.sidebarWindow.window.fit()}if("1"==urlParams.lightbox||"0"==urlParams.chrome||"undefined"===typeof window.Format||"undefined"===typeof window.Menus)window.uiTheme=null;else{var f=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;try{var d=document.createElement("style");d.type="text/css";d.innerHTML="* { -webkit-font-smoothing: antialiased; }html body .mxWindow button.geBtn { font-size:12px !important; margin-left: 0; }html body table.mxWindow td.mxWindowPane div.mxWindowPane * { font-size:9pt; }html body div.diagramContainer button, html body button.geBtn { font-size:14px; font-weight:700;border-radius: 5px; }html body button.geBtn:active { opacity: 0.6; }html body a.geMenuItem { opacity: 0.75; }html body a.geMenuItem[disabled] { opacity: 0.2; }html body a.geMenuItem[disabled]:active { opacity: 0.2; }html body div.geActivePage { opacity: 0.7; }html body a.geMenuItem:active { opacity: 0.2; }html body .geToolbarButton { opacity: 0.3; }html body .geToolbarButton:active { opacity: 0.15; }html body .geStatus:active { opacity: 0.5; }html table.mxPopupMenu tr.mxPopupMenuItemHover:active { opacity:0.7; }html body .geDialog input, html body .geToolbarContainer input, html body .mxWindow input {padding:2px;display:inline-block; }div.geDialog { border-radius: 5px; }html body div.geDialog button.geBigButton { color: #fff !important; }.mxWindow button, .geDialog select, .mxWindow select { display:inline-block; }html body .mxWindow .geColorBtn, html body .geDialog .geColorBtn { background: none; }html body div.diagramContainer button, html body .mxWindow button, html body .geDialog button { min-width: 0px; border-radius: 5px; color: #353535 !important; border-style: solid; border-width: 1px; border-color: rgb(216, 216, 216); }html body div.diagramContainer button:hover, html body .mxWindow button:hover, html body .geDialog button:hover { border-color: rgb(177, 177, 177); }html body div.diagramContainer button:active, html body .mxWindow button:active, html body .geDialog button:active { opacity: 0.6; }div.diagramContainer button.geBtn, .mxWindow button.geBtn, .geDialog button.geBtn { min-width:72px; font-weight: 600; background: none; }div.diagramContainer button.gePrimaryBtn, .mxWindow button.gePrimaryBtn, .geDialog button.gePrimaryBtn, html body .gePrimaryBtn { background: #29b6f2; color: #fff !important; border: none; box-shadow: none; }html body .gePrimaryBtn:hover { background: #29b6f2; border: none; box-shadow: inherit; }html body button.gePrimaryBtn:hover { background: #29b6f2; border: none; }.geBtn button { min-width:72px !important; }div.geToolbarContainer a.geButton { margin:2px; padding: 0 2px 4px 2px; } .geDialog, .mxWindow td.mxWindowPane *, div.geSprite, td.mxWindowTitle, .geDiagramContainer { box-sizing:content-box; }.mxWindow div button.geStyleButton { box-sizing: border-box; }table.mxWindow td.mxWindowPane button.geColorBtn { padding:0px; box-sizing: border-box; }td.mxWindowPane .geSidebarContainer button { padding:2px 0 2px 0; box-sizing: border-box; }html body .geMenuItem { font-size:14px; text-decoration: none; font-weight: normal; padding: 6px 10px 6px 10px; border: none; border-radius: 5px; color: #353535; box-shadow: inset 0 0 0 1px rgba(0,0,0,.11), inset 0 -1px 0 0 rgba(0,0,0,.08), 0 1px 2px 0 rgba(0,0,0,.04); }.geToolbarContainer { background:#fff !important; }div.mxWindow .geSidebarContainer .geTitle { background-color:#fdfdfd; }div.mxWindow .geSidebarContainer .geTitle:hover { background-color:#fafafa; }div.geSidebar { background-color: #fff !important;}div.mxWindow td.mxWindowPane button { background-image: none; float: none; }td.mxWindowTitle { height: 22px !important; background: none !important; font-size: 13px !important; text-align:center !important; border-bottom:1px solid lightgray; }div.mxWindow, div.mxWindowTitle { background-image: none !important; background-color:#fff !important; }div.mxWindow { border-radius:5px; box-shadow: 0px 0px 2px #C0C0C0 !important;}div.mxWindow * { font-family: inherit !important; }html div.geVerticalHandle { position:absolute;bottom:0px;left:50%;cursor:row-resize;width:11px;height:11px;background:white;margin-bottom:-6px; margin-left:-6px; border: none; border-radius: 6px; box-shadow: inset 0 0 0 1px rgba(0,0,0,.11), inset 0 -1px 0 0 rgba(0,0,0,.08), 0 1px 2px 0 rgba(0,0,0,.04); }html div.geInactivePage { background: rgb(249, 249, 249) !important; color:lightgray !important; } html div.geActivePage { background: white !important;color: #353535 !important; } html div.mxRubberband { border:1px solid; border-color: #29b6f2 !important; background:rgba(41,182,242,0.5) !important; } html body div.mxPopupMenu { border-radius:5px; border:1px solid #c0c0c0; padding:5px 0 5px 0; box-shadow: 0px 4px 17px -4px rgba(96,96,96,1); } html table.mxPopupMenu td.mxPopupMenuItem { color: #353535; font-size: 14px; padding-top: 4px; padding-bottom: 4px; }html table.mxPopupMenu tr.mxPopupMenuItemHover { background-color: #29b6f2; }html tr.mxPopupMenuItemHover td.mxPopupMenuItem, html tr.mxPopupMenuItemHover td.mxPopupMenuItem span { color: #fff !important; }html tr.mxPopupMenuItem, html td.mxPopupMenuItem { transition-property: none !important; }html table.mxPopupMenu hr { height: 2px; background-color: rgba(0,0,0,.07); margin: 5px 0; }"+ -(mxClient.IS_IOS?"html input[type=checkbox], html input[type=radio] { height:12px; }":"");document.getElementsByTagName("head")[0].appendChild(d)}catch(r){}var k=function(a,b,c,d,f,g,h){a=document.createElement("div");a.className="geSidebarContainer";a.style.position="absolute";a.style.width="100%";a.style.height="100%";a.style.border="1px solid whiteSmoke";a.style.overflowX="hidden";a.style.overflowY="auto";h(a);this.window=new mxWindow(b,a,c,d,f,g,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1); -this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.setLocation=function(a,b){var c=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)}};Editor.checkmarkImage= -Graph.createSvgImage(22,18,'<path transform="translate(4 0)" d="M7.181,15.007a1,1,0,0,1-.793-0.391L3.222,10.5A1,1,0,1,1,4.808,9.274L7.132,12.3l6.044-8.86A1,1,0,1,1,14.83,4.569l-6.823,10a1,1,0,0,1-.8.437H7.181Z" fill="#29b6f2"/>').src;mxWindow.prototype.closeImage=Graph.createSvgImage(18,10,'<path d="M 5 1 L 13 9 M 13 1 L 5 9" stroke="#C0C0C0" stroke-width="2"/>').src;mxWindow.prototype.minimizeImage=Graph.createSvgImage(14,10,'<path d="M 3 7 L 7 3 L 11 7" stroke="#C0C0C0" stroke-width="2" fill="#ffffff"/>').src; -mxWindow.prototype.normalizeImage=Graph.createSvgImage(14,10,'<path d="M 3 3 L 7 7 L 11 3" stroke="#C0C0C0" stroke-width="2" fill="#ffffff"/>').src;mxConstraintHandler.prototype.pointImage=Graph.createSvgImage(5,5,'<path d="m 0 0 L 5 5 M 0 5 L 5 0" stroke="#29b6f2"/>');mxOutline.prototype.sizerImage=null;mxConstants.VERTEX_SELECTION_COLOR="#C0C0C0";mxConstants.EDGE_SELECTION_COLOR="#C0C0C0";mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff";mxConstants.DEFAULT_VALID_COLOR="#29b6f2";mxConstants.GUIDE_COLOR= -"#C0C0C0";mxConstants.HIGHLIGHT_STROKEWIDTH=5;mxConstants.HIGHLIGHT_OPACITY=35;mxConstants.OUTLINE_COLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_FILLCOLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_STROKECOLOR="#fff";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity="0.4";Graph.prototype.svgShadowSize="0.6";Graph.prototype.svgShadowBlur="1.2";Format.prototype.inactiveTabBackgroundColor="#f0f0f0";mxGraphHandler.prototype.previewColor="#C0C0C0";mxRubberband.prototype.defaultOpacity=50; -HoverIcons.prototype.inactiveOpacity=25;Format.prototype.showCloseButton=!1;EditorUi.prototype.closableScratchpad=!1;EditorUi.prototype.toolbarHeight=46;EditorUi.prototype.footerHeight=0;Graph.prototype.editAfterInsert=!0;Editor.prototype.isChromelessView=function(){return!1};Graph.prototype.isLightboxView=function(){return!1};var n=EditorUi.prototype.updateTabContainer;EditorUi.prototype.updateTabContainer=function(){null!=this.tabContainer&&(this.tabContainer.style.right="70px",this.diagramContainer.style.bottom= -"30px");n.apply(this,arguments)};var p=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){p.apply(this,arguments);this.menus.get("save").setEnabled(null!=this.getCurrentFile()||"1"==urlParams.embed)};var q=Menus.prototype.addShortcut;Menus.prototype.addShortcut=function(a,b){null!=b.shortcut&&900>f&&!mxClient.IS_IOS?a.firstChild.nextSibling.setAttribute("title",b.shortcut):q.apply(this,arguments)};var w=App.prototype.updateUserElement;App.prototype.updateUserElement= -function(){w.apply(this,arguments);if(null!=this.userElement){var a=this.userElement;a.style.cssText="display:inline-block;position:relative;margin-right:4px;cursor:pointer;";a.className="geToolbarButton";a.innerHTML="";a.style.backgroundImage="url("+Editor.userImage+")";a.style.backgroundPosition="center center";a.style.backgroundRepeat="no-repeat";a.style.backgroundSize="24px 24px";a.style.height="24px";a.style.width="24px";a.style.cssFloat="right";a.setAttribute("title",mxResources.get("changeUser"))}}; -var c=App.prototype.updateButtonContainer;App.prototype.updateButtonContainer=function(){c.apply(this,arguments);if(null!=this.shareButton){var a=this.shareButton;a.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;cursor:pointer;";a.className="geToolbarButton";a.innerHTML="";a.style.backgroundImage="url("+Editor.shareImage+")";a.style.backgroundPosition="center center";a.style.backgroundRepeat="no-repeat";a.style.backgroundSize="24px 24px";a.style.height= -"24px";a.style.width="24px"}null!=this.syncButton&&(a=this.syncButton,a.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;cursor:pointer;",a.className="geToolbarButton",a.innerHTML="",a.style.backgroundImage="url("+Editor.syncImage+")",a.style.backgroundPosition="center center",a.style.backgroundRepeat="no-repeat",a.style.backgroundSize="24px 24px",a.style.height="24px",a.style.width="24px")};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.buttonContainer){var a= -document.createElement("div");a.style.display="inline-block";a.style.position="relative";a.style.marginTop="2px";var b=document.createElement("button");mxUtils.write(b,mxResources.get("save"));b.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)");b.className="1"==urlParams.saveAndExit?"geMenuItem":"geMenuItem gePrimaryBtn";b.style.fontSize="14px";b.style.padding="6px";b.style.borderRadius="3px";b.style.marginLeft="8px";b.style.cursor="pointer";mxEvent.addListener(b,"click",mxUtils.bind(this, -function(){this.actions.get("save").funct()}));a.appendChild(b);"1"==urlParams.saveAndExit&&(b=document.createElement("a"),mxUtils.write(b,mxResources.get("saveAndExit")),b.setAttribute("title",mxResources.get("saveAndExit")),b.className="geMenuItem gePrimaryBtn",b.style.fontSize="14px",b.style.marginLeft="6px",b.style.padding="6px",b.style.cursor="pointer",mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b));b=document.createElement("a"); -mxUtils.write(b,mxResources.get("exit"));b.setAttribute("title",mxResources.get("exit"));b.className="geMenuItem";b.style.fontSize="14px";b.style.marginLeft="6px";b.style.padding="6px";b.style.cursor="pointer";mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()}));a.appendChild(b);this.buttonContainer.appendChild(a);this.buttonContainer.style.top="6px"}};Sidebar.prototype.getTooltipOffset=function(){var a=mxUtils.getOffset(this.editorUi.sidebarWindow.window.div); -a.y+=40;return a};var g=Menus.prototype.createPopupMenu;Menus.prototype.createPopupMenu=function(a,b,c){var d=this.editorUi.editor.graph;a.smartSeparators=!0;g.apply(this,arguments);mxUtils.bind(this,function(a,b){var c=new FilenameDialog(this.editorUi,a,mxResources.get("apply"),function(a){b(parseFloat(a))},mxResources.get("spacing"));this.editorUi.showDialog(c.container,300,80,!0,!0);c.init()});1==d.getSelectionCount()?(this.addMenuItems(a,["editTooltip","-","editStyle","editGeometry","-"],null, -c),d.isCellFoldable(d.getSelectionCell())&&this.addMenuItems(a,d.isCellCollapsed(b)?["expand"]:["collapse"],null,c),this.addMenuItems(a,["collapsible","-","lockUnlock","enterGroup"],null,c),a.addSeparator(),this.addSubmenu("layout",a)):d.isSelectionEmpty()&&d.isEnabled()?(a.addSeparator(),this.addMenuItems(a,["editData"],null,c),a.addSeparator(),this.addSubmenu("layout",a),this.addSubmenu("view",a,null,mxResources.get("options")),this.addMenuItems(a,["-","exitGroup"],null,c)):d.isEnabled()&&this.addMenuItems(a, -["-","lockUnlock"],null,c)};EditorUi.prototype.toggleFormatPanel=function(b){null!=this.formatWindow?this.formatWindow.window.setVisible(b?!1:!this.formatWindow.window.isVisible()):a(this)};DiagramFormatPanel.prototype.isMathOptionVisible=function(){return!0};var h=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){null!=this.sidebarWindow&&(this.sidebarWindow.window.setVisible(!1),this.sidebarWindow.window.destroy(),this.sidebarWindow=null);null!=this.formatWindow&&(this.formatWindow.window.setVisible(!1), -this.formatWindow.window.destroy(),this.formatWindow=null);null!=this.actions.outlineWindow&&(this.actions.outlineWindow.window.setVisible(!1),this.actions.outlineWindow.window.destroy(),this.actions.outlineWindow=null);null!=this.actions.layersWindow&&(this.actions.layersWindow.window.setVisible(!1),this.actions.layersWindow.window.destroy(),this.actions.layersWindow=null);null!=this.menus.tagsWindow&&(this.menus.tagsWindow.window.setVisible(!1),this.menus.tagsWindow.window.destroy(),this.menus.tagsWindow= -null);null!=this.menus.findWindow&&(this.menus.findWindow.window.setVisible(!1),this.menus.findWindow.window.destroy(),this.menus.findWindow=null);h.apply(this,arguments)};var l=EditorUi.prototype.setGraphEnabled;EditorUi.prototype.setGraphEnabled=function(a){l.apply(this,arguments);a||(null!=this.sidebarWindow&&this.sidebarWindow.window.setVisible(!1),null!=this.formatWindow&&this.formatWindow.window.setVisible(!1))};EditorUi.prototype.chromelessWindowResize=function(){};var t=Menus.prototype.init; -Menus.prototype.init=function(){t.apply(this,arguments);var c=this.editorUi,d=c.editor.graph;c.actions.get("editDiagram").label=mxResources.get("formatXml")+"...";c.actions.get("createShape").label=mxResources.get("shape")+"...";c.actions.get("outline").label=mxResources.get("outline")+"...";c.actions.get("layers").label=mxResources.get("layers")+"...";c.actions.put("importFile",new Action("File...",function(){d.popupMenuHandler.hideMenu();var a=document.createElement("input");a.setAttribute("type", -"file");mxEvent.addListener(a,"change",function(){null!=a.files&&c.importFiles(a.files,null,null,c.maxImageSize)});a.click()}));c.actions.put("importCsv",new Action(mxResources.get("csv")+"...",function(){d.popupMenuHandler.hideMenu();c.showImportCsvDialog()}));c.actions.put("importText",new Action(mxResources.get("text")+"...",function(){var a=new ParseDialog(c,"Insert from Text");c.showDialog(a.container,620,420,!0,!1);a.init()}));c.actions.put("formatSql",new Action(mxResources.get("formatSql")+ -"...",function(){var a=new ParseDialog(c,"Insert from Text","formatSql");c.showDialog(a.container,620,420,!0,!1);a.init()}));c.actions.put("toggleShapes",new Action(mxResources.get("shapes")+"...",function(){b(c)}));c.actions.put("toggleFormat",new Action(mxResources.get("format")+"...",function(){a(c)}));EditorUi.enablePlantUml&&!c.isOffline()&&c.actions.put("plantUml",new Action(mxResources.get("plantUml")+"...",function(){var a=new ParseDialog(c,"Insert from Text","plantUml");c.showDialog(a.container, -620,420,!0,!1);a.init()}));this.put("diagram",new Menu(mxUtils.bind(this,function(a,b){var d=c.getCurrentFile();c.menus.addSubmenu("extras",a,b,mxResources.get("preferences"));a.addSeparator(b);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?(c.menus.addMenuItems(a,["new","open","-"],b),EditorUi.isElectronApp&&c.menus.addMenuItems(a,["synchronize","-"],b),c.menus.addMenuItems(a,["save","saveAs","-"],b)):"1"==urlParams.embed?(c.menus.addMenuItems(a,["-","save"],b),"1"==urlParams.saveAndExit&&c.menus.addMenuItems(a, -["saveAndExit"],b),a.addSeparator(b)):(c.menus.addMenuItems(a,["new"],b),c.menus.addSubmenu("openFrom",a,b),isLocalStorage&&this.addSubmenu("openRecent",a,b),a.addSeparator(b),null!=d&&d.constructor==DriveFile&&c.menus.addMenuItems(a,["share"],b),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null==d||d.constructor==LocalFile||c.menus.addMenuItems(a,["synchronize"],b),a.addSeparator(b),c.menus.addSubmenu("save",a,b));c.menus.addSubmenu("exportAs",a,b);c.menus.addMenuItems(a,"- outline layers - find tags".split(" "), -b);mxClient.IS_IOS&&navigator.standalone||c.menus.addMenuItems(a,["-","print","-"],b);c.menus.addSubmenu("help",a,b);"1"==urlParams.embed?c.menus.addMenuItems(a,["-","exit"],b):c.menus.addMenuItems(a,["-","close"])})));this.put("save",new Menu(mxUtils.bind(this,function(a,b){var d=c.getCurrentFile();null!=d&&d.constructor==DriveFile?c.menus.addMenuItems(a,["save","makeCopy","-","rename","moveToFolder"],b):(c.menus.addMenuItems(a,["save","saveAs","-","rename"],b),c.isOfflineApp()?navigator.onLine&& -"1"!=urlParams.stealth&&this.addMenuItems(a,["upload"],b):c.menus.addMenuItems(a,["makeCopy"],b));c.menus.addMenuItems(a,["-","autosave"],b);null!=d&&d.isRevisionHistorySupported()&&c.menus.addMenuItems(a,["-","revisionHistory"],b)})));var f=this.get("exportAs");this.put("exportAs",new Menu(mxUtils.bind(this,function(a,b){f.funct(a,b);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||c.menus.addMenuItems(a,["publishLink"],b);a.addSeparator(b);c.menus.addSubmenu("embed",a,b)})));var g=this.get("language"); -this.put("extras",new Menu(mxUtils.bind(this,function(a,b){"1"!=urlParams.embed&&c.menus.addSubmenu("theme",a,b);null!=g&&c.menus.addSubmenu("language",a,b);a.addSeparator(b);c.menus.addMenuItems(a,["scrollbars","tooltips"],b);"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&c.menus.addMenuItems(a,["-","search","scratchpad","-","showStartScreen"],b);!c.isOfflineApp()&&isLocalStorage&&(a.addSeparator(b),c.menus.addMenuItem(a,"plugins",b));a.addSeparator(b)})));this.put("insertAdvanced", -new Menu(mxUtils.bind(this,function(a,b){c.menus.addMenuItems(a,"importText plantUml - formatSql importCsv - createShape editDiagram".split(" "),b)})));mxResources.parse("insertLayout="+mxResources.get("layout"));mxResources.parse("insertAdvanced="+mxResources.get("advanced"));this.put("insert",new Menu(mxUtils.bind(this,function(a,b){c.menus.addMenuItems(a,"insertRectangle insertEllipse insertRhombus - insertText insertLink - insertImage".split(" "),b);c.insertTemplateEnabled&&!c.isOffline()&&c.menus.addMenuItems(a, -["insertTemplate"],b);a.addSeparator(b);c.menus.addSubmenu("insertLayout",a,b);c.menus.addSubmenu("insertAdvanced",a,b);a.addSeparator(b);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?c.menus.addMenuItems(a,["import"],b):c.menus.addSubmenu("importFrom",a,b)})));var h="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),k=function(a,b,d,f){a.addItem(d,null,mxUtils.bind(this,function(){var a=new CreateGraphDialog(c,d,f);c.showDialog(a.container,620,420, -!0,!1);a.init()}),b)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(a,b){for(var c=0;c<h.length;c++)"-"==h[c]?a.addSeparator(b):k(a,b,mxResources.get(h[c])+"...",h[c])})));this.put("view",new Menu(mxUtils.bind(this,function(a,b){c.menus.addMenuItems(a,"grid guides - connectionArrows connectionPoints -".split(" "),b);if("undefined"!==typeof MathJax){var d=c.menus.addMenuItem(a,"mathematicalTypesetting",b);c.menus.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000032875")}c.menus.addMenuItems(a, -["copyConnect","collapseExpand","-","pageScale"],b)})))};var m=EditorUi.prototype.init;EditorUi.prototype.init=function(){function a(a,b,c){var d=h.menus.get(a),f=p.addMenu(mxResources.get(a),mxUtils.bind(this,function(){d.funct.apply(this,arguments)}),n);f.className="geMenuItem";f.style.display="inline-block";f.style.boxSizing="border-box";f.style.top="6px";f.style.marginRight="6px";f.style.height="30px";f.style.paddingTop="6px";f.style.paddingBottom="6px";f.style.cursor="pointer";f.setAttribute("title", -mxResources.get(a));h.menus.menuCreated(d,f,"geMenuItem");null!=c?(f.style.backgroundImage="url("+c+")",f.style.backgroundPosition="center center",f.style.backgroundRepeat="no-repeat",f.style.backgroundSize="24px 24px",f.style.width="34px",f.innerHTML=""):b||(f.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",f.style.backgroundPosition="right 6px center",f.style.backgroundRepeat="no-repeat",f.style.paddingRight="22px");return f}function b(a,b,c,d,f,g){var k=document.createElement("a"); -k.className="geMenuItem";k.style.display="inline-block";k.style.boxSizing="border-box";k.style.height="30px";k.style.padding="6px";k.style.position="relative";k.style.verticalAlign="top";k.style.top="0px";null!=h.statusContainer?l.insertBefore(k,h.statusContainer):l.appendChild(k);null!=g?(k.style.backgroundImage="url("+g+")",k.style.backgroundPosition="center center",k.style.backgroundRepeat="no-repeat",k.style.backgroundSize="24px 24px",k.style.width="34px"):mxUtils.write(k,a);mxEvent.addListener(k, -mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(k,"click",function(a){"disabled"!=k.getAttribute("disabled")&&b(a);mxEvent.consume(a)});null==c&&(k.style.marginRight="4px");null!=d&&k.setAttribute("title",d);null!=f&&(a=function(){f.isEnabled()?(k.removeAttribute("disabled"),k.style.cursor="pointer"):(k.setAttribute("disabled","disabled"),k.style.cursor="default")},f.addListener("stateChanged",a),a());return k}function c(a,b){var c= -document.createElement("div");c.className="geMenuItem";c.style.display="inline-block";c.style.verticalAlign="top";c.style.marginRight="6px";c.style.padding="0 4px 0 4px";c.style.height="30px";c.style.position="relative";c.style.top="0px";for(var d=0;d<a.length;d++)null!=a[d]&&(a[d].style.margin="0px",a[d].style.boxShadow="none",c.appendChild(a[d]));null!=b&&mxUtils.setOpacity(c,b);null!=h.statusContainer?l.insertBefore(c,h.statusContainer):l.appendChild(c);return c}function d(){for(var d=l.firstChild;null!= -d;){var g=d.nextSibling;"geMenuItem"!=d.className&&"geItem"!=d.className||d.parentNode.removeChild(d);d=g}n=l.firstChild;f=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;(d=1E3>f)||a("diagram");c([d?a("diagram",null,IMAGE_PATH+"/drawlogo.svg"):null,b(mxResources.get("shapes"),h.actions.get("toggleShapes").funct,null,mxResources.get("shapes"),h.actions.get("image"),d?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTMgMTN2OGg4di04aC04ek0zIDIxaDh2LThIM3Y4ek0zIDN2OGg4VjNIM3ptMTMuNjYtMS4zMUwxMSA3LjM0IDE2LjY2IDEzbDUuNjYtNS42Ni01LjY2LTUuNjV6Ii8+PC9zdmc+": -null),b(mxResources.get("format"),h.actions.get("toggleFormat").funct,null,mxResources.get("format")+" ("+h.actions.get("formatPanel").shortcut+")",h.actions.get("image"),d?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIgM2MtNC45NyAwLTkgNC4wMy05IDlzNC4wMyA5IDkgOWMuODMgMCAxLjUtLjY3IDEuNS0xLjUgMC0uMzktLjE1LS43NC0uMzktMS4wMS0uMjMtLjI2LS4zOC0uNjEtLjM4LS45OSAwLS44My42Ny0xLjUgMS41LTEuNUgxNmMyLjc2IDAgNS0yLjI0IDUtNSAwLTQuNDItNC4wMy04LTktOHptLTUuNSA5Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNS42NyA5IDYuNSA5IDggOS42NyA4IDEwLjUgNy4zMyAxMiA2LjUgMTJ6bTMtNEM4LjY3IDggOCA3LjMzIDggNi41UzguNjcgNSA5LjUgNXMxLjUuNjcgMS41IDEuNVMxMC4zMyA4IDkuNSA4em01IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxMy42NyA1IDE0LjUgNXMxLjUuNjcgMS41IDEuNVMxNS4zMyA4IDE0LjUgOHptMyA0Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTYuNjcgOSAxNy41IDlzMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41eiIvPjwvc3ZnPg==": -null)],d?60:null);g=a("insert",!0,d?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgMTNoLTZ2NmgtMnYtNkg1di0yaDZWNWgydjZoNnYyeiIvPjwvc3ZnPg==":null);c([g,b(mxResources.get("delete"),h.actions.get("delete").funct,null,mxResources.get("delete"),h.actions.get("delete"),d?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek0xOSA0aC0zLjVsLTEtMWgtNWwtMSAxSDV2MmgxNFY0eiIvPjwvc3ZnPg==": -null)],d?60:null);if(411<=f&&(g=h.actions.get("undo"),d=h.actions.get("redo"),g=b("",g.funct,null,mxResources.get("undo")+" ("+g.shortcut+")",g,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIuNSA4Yy0yLjY1IDAtNS4wNS45OS02LjkgMi42TDIgN3Y5aDlsLTMuNjItMy42MmMxLjM5LTEuMTYgMy4xNi0xLjg4IDUuMTItMS44OCAzLjU0IDAgNi41NSAyLjMxIDcuNiA1LjVsMi4zNy0uNzhDMjEuMDggMTEuMDMgMTcuMTUgOCAxMi41IDh6Ii8+PC9zdmc+"),d=b("", -d.funct,null,mxResources.get("redo")+" ("+d.shortcut+")",d,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTguNCAxMC42QzE2LjU1IDguOTkgMTQuMTUgOCAxMS41IDhjLTQuNjUgMC04LjU4IDMuMDMtOS45NiA3LjIyTDMuOSAxNmMxLjA1LTMuMTkgNC4wNS01LjUgNy42LTUuNSAxLjk1IDAgMy43My43MiA1LjEyIDEuODhMMTMgMTZoOVY3bC0zLjYgMy42eiIvPjwvc3ZnPg=="),c([g,d],60),480<=f)){var d=h.actions.get("zoomIn"),g=h.actions.get("zoomOut"),m=h.actions.get("resetView"); -c([b("",function(){k.popupMenuHandler.hideMenu();var a=k.view.scale,b=k.view.translate.x,c=k.view.translate.y;h.actions.get("resetView").funct();1E-5>Math.abs(a-k.view.scale)&&b==k.view.translate.x&&c==k.view.translate.y&&h.actions.get(k.pageVisible?"fitPage":"fitWindow").funct()},!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",m,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMyA1djRoMlY1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnptMiAxMEgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6bTE0IDRoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6bTAtMTZoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yeiIvPjwvc3ZnPg=="), -640<=f?b("",d.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",d,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHptMi41LTRoLTJ2Mkg5di0ySDdWOWgyVjdoMXYyaDJ2MXoiLz48L3N2Zz4="): -null,640<=f?b("",g.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",g,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpNNyA5aDV2MUg3eiIvPjwvc3ZnPg=="): -null],60)}d=h.menus.get("language");null!=d&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=f?(null==O&&(g=p.addMenu("",d.funct),g.setAttribute("title",mxResources.get("language")),g.className="geToolbarButton",g.style.backgroundImage="url("+Editor.globeImage+")",g.style.backgroundPosition="center center",g.style.backgroundRepeat="no-repeat",g.style.backgroundSize="24px 24px",g.style.position="absolute",g.style.height="24px",g.style.width="24px",g.style.zIndex="1",g.style.top="11px",g.style.right= -"8px",g.style.cursor="pointer",l.appendChild(g),O=g),h.buttonContainer.style.paddingRight="34px"):(h.buttonContainer.style.paddingRight="4px",null!=O&&(O.parentNode.removeChild(O),O=null))}m.apply(this,arguments);var g=document.createElement("div");g.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";g.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(g);var h=this,k=h.editor.graph;h.toolbar=this.createToolbar(h.createDiv("geToolbar")); -h.defaultLibraryName=mxResources.get("untitledLibrary");var l=document.createElement("div");l.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;border-bottom:1px solid lightgray;background-color:#ffffff;text-align:left;white-space:nowrap;";var n=null,p=new Menubar(h,l);h.statusContainer=h.createStatusContainer();h.statusContainer.style.position="relative";h.statusContainer.style.maxWidth="";h.statusContainer.style.marginTop="7px";h.statusContainer.style.marginLeft= -"6px";h.statusContainer.style.color="gray";h.statusContainer.style.cursor="default";h.editor.addListener("statusChanged",mxUtils.bind(this,function(){h.setStatusText(h.editor.getStatus())}));var q=h.descriptorChanged;h.descriptorChanged=function(){q.apply(this,arguments);var a=h.getCurrentFile();if(null!=a&&null!=a.getTitle()){var b=a.getMode();"google"==b?b="googleDrive":"github"==b?b="gitHub":"onedrive"==b&&(b="oneDrive");b=mxResources.get(b);l.setAttribute("title",a.getTitle()+(null!=b?" ("+b+ -")":""))}else l.removeAttribute("title")};h.setStatusText(h.editor.getStatus());l.appendChild(h.statusContainer);h.buttonContainer=document.createElement("div");h.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";l.appendChild(h.buttonContainer);h.menubarContainer=h.buttonContainer;h.tabContainer=document.createElement("div");h.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;border-bottom:1px solid lightgray;background-color:#ffffff;border-top:1px solid lightgray;margin-bottom:-2px;visibility:hidden;"; -var g=h.diagramContainer.parentNode,t=document.createElement("div");t.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";h.diagramContainer.style.top="47px";var w=h.menus.get("viewZoom");if(null!=w){this.tabContainer.style.right="70px";var B=p.addMenu("100%",w.funct);B.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");B.style.whiteSpace="nowrap";B.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";B.style.backgroundPosition="right 6px center"; -B.style.backgroundRepeat="no-repeat";B.style.backgroundColor="#ffffff";B.style.paddingRight="10px";B.style.display="block";B.style.position="absolute";B.style.textDecoration="none";B.style.textDecoration="none";B.style.right="0px";B.style.bottom="0px";B.style.overflow="hidden";B.style.visibility="hidden";B.style.textAlign="center";B.style.color="#000";B.style.fontSize="12px";B.style.color="#707070";B.style.width="59px";B.style.borderTop="1px solid lightgray";B.style.borderLeft="1px solid lightgray"; -B.style.height=parseInt(h.tabContainer.style.height)-1+"px";B.style.lineHeight=parseInt(h.tabContainer.style.height)+1+"px";t.appendChild(B);w=mxUtils.bind(this,function(){B.innerHTML=Math.round(100*h.editor.graph.view.scale)+"%"});h.editor.graph.view.addListener(mxEvent.EVENT_SCALE,w);h.editor.addListener("resetGraphView",w);h.editor.addListener("pageSelected",w);var K=h.setGraphEnabled;h.setGraphEnabled=function(){K.apply(this,arguments);null!=this.tabContainer&&(B.style.visibility=this.tabContainer.style.visibility, -this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?"30px":"0px")}}t.appendChild(h.tabContainer);t.appendChild(l);t.appendChild(h.diagramContainer);g.appendChild(t);h.updateTabContainer();var O=null;d();mxEvent.addListener(window,"resize",function(){d();null!=h.sidebarWindow&&h.sidebarWindow.window.fit();null!=h.formatWindow&&h.formatWindow.window.fit();null!=h.actions.outlineWindow&&h.actions.outlineWindow.window.fit();null!=h.actions.layersWindow&&h.actions.layersWindow.window.fit(); -null!=h.menus.tagsWindow&&h.menus.tagsWindow.window.fit();null!=h.menus.findWindow&&h.menus.findWindow.window.fit()})}}};(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var b=EditorUi.initTheme;EditorUi.initTheme=function(){b.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();mxResources.parse("# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*\n# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE\naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\naddedFile=Added {1}\naddImages=Add Images\naddImageUrl=Add Image URL\naddLayer=Add Layer\naddProperty=Add Property\naddress=Address\naddToExistingDrawing=Add to Existing Drawing\naddWaypoint=Add Waypoint\nadjustTo=Adjust to\nadvanced=Advanced\nalign=Align\nalignment=Alignment\nallChangesLost=All changes will be lost!\nallPages=All Pages\nallProjects=All Projects\nallSpaces=All Spaces\nallTags=All Tags\nanchor=Anchor\nandroid=Android\nangle=Angle\narc=Arc\nareYouSure=Are you sure?\nensureDataSaved=Please ensure your data is saved before closing.\nallChangesSaved=All changes saved\nallChangesSavedInDrive=All changes saved in Drive\nallowPopups=Allow pop-ups to avoid this dialog.\nallowRelativeUrl=Allow relative URL\nalreadyConnected=Nodes already connected\napply=Apply\narchiMate21=ArchiMate 2.1\narrange=Arrange\narrow=Arrow\narrows=Arrows\nasNew=As New\natlas=Atlas\nauthor=Author\nauthorizationRequired=Authorization required\nauthorizeThisAppIn=Authorize this app in {1}:\nauthorize=Authorize\nauthorizing=Authorizing\nautomatic=Automatic\nautosave=Autosave\nautosize=Autosize\nattachments=Attachments\naws=AWS\naws3d=AWS 3D\nazure=Azure\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Borderwidth\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\nbrowser=Browser\nbulletedList=Bulleted List\nbusiness=Business\nbusy=Operation in progress\ncabinets=Cabinets\ncancel=Cancel\ncenter=Center\ncannotLoad=Load attempts failed. Please try again later.\ncannotLogin=Log in attempts failed. Please try again later.\ncannotOpenFile=Cannot open file\nchange=Change\nchangeOrientation=Change Orientation\nchangeUser=Change user\nchangesNotSaved=Changes have not been saved\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompressed=Compressed\ncommitMessage=Commit Message\ncsv=CSV\ndark=Dark\ndraftFound=A draft for '{1}' has been found. Load it into the editor or discard it to continue.\ndragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?\ndropboxCharsNotAllowed=The following characters are not allowed: / : ? * \" |\ncheck=Check\nchecksum=Checksum\ncircle=Circle\ncisco=Cisco\nclassic=Classic\nclearDefaultStyle=Clear Default Style\nclearWaypoints=Clear Waypoints\nclipart=Clipart\nclose=Close\ncollaborator=Collaborator\ncollaborators=Collaborators\ncollapse=Collapse\ncollapseExpand=Collapse/Expand\ncollapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size\ncollapsible=Collapsible\ncomic=Comic\ncomment=Comment\ncommentsNotes=Comments/Notes\ncompress=Compress\nconnect=Connect\nconnecting=Connecting\nconnectWithDrive=Connect with Google Drive\nconnection=Connection\nconnectionArrows=Connection Arrows\nconnectionPoints=Connection Points\nconstrainProportions=Constrain Proportions\ncontainsValidationErrors=Contains validation errors\ncopiedToClipboard=Copied to clipboard\ncopy=Copy\ncopyConnect=Copy on connect\ncopyOf=Copy of {1}\ncopyOfDrawing=Copy of Drawing\ncopySize=Copy Size\ncopyStyle=Copy Style\ncreate=Create\ncreateNewDiagram=Create New Diagram\ncreateRevision=Create Revision\ncreateShape=Create Shape\ncrop=Crop\ncurved=Curved\ncustom=Custom\ncurrent=Current\ncut=Cut\ndashed=Dashed\ndecideLater=Decide later\ndefault=Default\ndelete=Delete\ndeleteColumn=Delete Column\ndeleteLibrary401=Insufficient permissions to delete this library\ndeleteLibrary404=Selected library could not be found\ndeleteLibrary500=Error deleting library\ndeleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?\ndeleteRow=Delete Row\ndescription=Description\ndevice=Device\ndiagram=Diagram\ndiagramContent=Diagram Content\ndiagramLocked=Diagram has been locked to prevent further data loss.\ndiagramLockedBySince=The diagram is locked by {1} since {2} ago\ndiagramName=Diagram Name\ndiagramIsPublic=Diagram is public\ndiagramIsNotPublic=Diagram is not public\ndiamond=Diamond\ndiamondThin=Diamond (thin)\ndidYouKnow=Did you know...\ndirection=Direction\ndiscard=Discard\ndiscardChangesAndReconnect=Discard Changes and Reconnect\ngoogleDriveMissingClickHere=Google Drive missing? Click here!\ndiscardChanges=Discard Changes\ndisconnected=Disconnected\ndistribute=Distribute\ndone=Done\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Download draw.io Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\ndraftDiscarded=Draft discarded\ndraftSaved=Draft saved\ndragElementsHere=Drag elements here\ndragImagesHere=Drag images or URLs here\ndragUrlsHere=Drag URLs here\ndraw.io=draw.io\ndrawing=Drawing{1}\ndrawingEmpty=Drawing is empty\ndrawingTooLarge=Drawing is too large\ndrawioForWork=Draw.io for GSuite\ndropbox=Dropbox\nduplicate=Duplicate\nduplicateIt=Duplicate {1}\ndivider=Divider\ndx=Dx\ndy=Dy\neast=East\nedit=Edit\neditData=Edit Data\neditDiagram=Edit Diagram\neditGeometry=Edit Geometry\neditImage=Edit Image\neditImageUrl=Edit Image URL\neditLink=Edit Link\neditShape=Edit Shape\neditStyle=Edit Style\neditText=Edit Text\neditTooltip=Edit Tooltip\nglass=Glass\ngoogleImages=Google Images\nimageSearch=Image Search\neip=EIP\nembed=Embed\nembedImages=Embed Images\nmainEmbedNotice=Paste this into the page\nelectrical=Electrical\nellipse=Ellipse\nembedNotice=Paste this once at the end of the page\nenterGroup=Enter Group\nenterName=Enter Name\nenterPropertyName=Enter Property Name\nenterValue=Enter Value\nentityRelation=Entity Relation\nerror=Error\nerrorDeletingFile=Error deleting file\nerrorLoadingFile=Error loading file\nerrorRenamingFile=Error renaming file\nerrorRenamingFileNotFound=Error renaming file. File was not found.\nerrorRenamingFileForbidden=Error renaming file. Insufficient access rights.\nerrorSavingDraft=Error saving draft\nerrorSavingFile=Error saving file\nerrorSavingFileUnknown=Error authorizing with Google's servers. Please refresh the page to re-attempt.\nerrorSavingFileForbidden=Error saving file. Insufficient access rights.\nerrorSavingFileNameConflict=Could not save diagram. Current page already contains file named '{1}'.\nerrorSavingFileNotFound=Error saving file. File was not found.\nerrorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.\nerrorSavingFileSessionTimeout=Your session has ended. Please <a target='_blank' href='{1}'>{2}</a> and return to this tab to try to save again.\nerrorSendingFeedback=Error sending feedback.\nerrorUpdatingPreview=Error updating preview.\nexit=Exit\nexitGroup=Exit Group\nexpand=Expand\nexport=Export\nexporting=Exporting\nexportAs=Export as\nexportOptionsDisabled=Export options disabled\nexportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.\nexternalChanges=External Changes\nextras=Extras\nfacebook=Facebook\nfailedToSaveTryReconnect=Failed to save, trying to reconnect\nfeatureRequest=Feature Request\nfeedback=Feedback\nfeedbackSent=Feedback successfully sent.\nfloorplans=Floorplans\nfile=File\nfileChangedOverwriteDialog=The file has been modified. Do you want to save the file and overwrite those changes?\nfileChangedSyncDialog=The file has been modified. Do you want to synchronize those changes?\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\nfileNearlyFullSeeFaq=File nearly full, please see FAQ\nfileNotFound=File not found\nrepositoryNotFound=Repository not found\nfileNotFoundOrDenied=The file was not found. It does not exist or you do not have read access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\nfileWillBeSavedInAppFolder={1} will be saved in the app folder.\nfill=Fill\nfillColor=Fill Color\nfilterCards=Filter Cards\nfind=Find\nfit=Fit\nfitContainer=Resize Container\nfitIntoContainer=Fit into Container\nfitPage=Fit Page\nfitPageWidth=Fit Page Width\nfitTo=Fit to\nfitToSheetsAcross=sheet(s) across\nfitToBy=by\nfitToSheetsDown=sheet(s) down\nfitTwoPages=Two Pages\nfitWindow=Fit Window\nflip=Flip\nflipH=Flip Horizontal\nflipV=Flip Vertical\nflowchart=Flowchart\nfolder=Folder\nfont=Font\nfontColor=Font Color\nfontFamily=Font Family\nfontSize=Font Size\nforbidden=You are not authorized to access this file\nformat=Format\nformatPanel=Format Panel\nformatted=Formatted\nformattedText=Formatted Text\nformatPng=PNG\nformatGif=GIF\nformatJpg=JPEG\nformatPdf=PDF\nformatSql=SQL\nformatSvg=SVG\nformatHtmlEmbedded=HTML\nformatSvgEmbedded=SVG (with XML)\nformatVsdx=VSDX\nformatVssx=VSSX\nformatXmlPlain=XML (Plain)\nformatXml=XML\nforum=Discussion/Help Forums\nfromTemplate=From Template\nfromTemplateUrl=From Template URL\nfromText=From Text\nfromUrl=From URL\nfromThisPage=From this page\nfullscreen=Fullscreen\ngap=Gap\ngcp=GCP\ngeneral=General\ngithub=GitHub\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\ngradient=Gradient\ngradientColor=Color\ngrid=Grid\ngridColor=Grid Color\ngridSize=Grid Size\ngroup=Group\nguides=Guides\nhateApp=I hate draw.io\nheading=Heading\nheight=Height\nhelp=Help\nhelpTranslate=Help us translate this application\nhide=Hide\nhideIt=Hide {1}\nhidden=Hidden\nhome=Home\nhorizontal=Horizontal\nhorizontalFlow=Horizontal Flow\nhorizontalTree=Horizontal Tree\nhowTranslate=How good is the translation in your language?\nhtml=HTML\nhtmlText=HTML Text\nid=ID\niframe=IFrame\nignore=Ignore\nimage=Image\nimageUrl=Image URL\nimages=Images\nimagePreviewError=This image couldn't be loaded for preview. Please check the URL.\nimageTooBig=Image too big\nimgur=Imgur\nimport=Import\nimportFrom=Import from\nincludeCopyOfMyDiagram=Include a copy of my diagram\nincreaseIndent=Increase Indent\ndecreaseIndent=Decrease Indent\ninsert=Insert\ninsertColumnBefore=Insert Column Left\ninsertColumnAfter=Insert Column Right\ninsertEllipse=Insert Ellipse\ninsertImage=Insert Image\ninsertHorizontalRule=Insert Horizontal Rule\ninsertLink=Insert Link\ninsertPage=Insert Page\ninsertRectangle=Insert Rectangle\ninsertRhombus=Insert Rhombus\ninsertRowBefore=Insert Row Above\ninsertRowAfter=Insert Row After\ninsertText=Insert Text\ninserting=Inserting\ninvalidFilename=Diagram names must not contain the following characters: / | : ; { } < > & + ? = \"\ninvalidLicenseSeeThisPage=Your license is invalid, please see this <a target=\"_blank\" href=\"https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin\">page</a>.\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\nlayers=Layers\nlandscape=Landscape\nlanguage=Language\nleanMapping=Lean Mapping\nlastChange=Last change {1} ago\nlessThanAMinute=less than a minute\nlicensingError=Licensing Error\nlicenseHasExpired=The license for {1} has expired on {2}. Click here.\nlicenseWillExpire=The license for {1} will expire on {2}. Click here.\nlineJumps=Line jumps\nlinkAccountRequired=If the diagram is not public a Google account is required to view the link.\nlinkText=Link Text\nlist=List\nminute=minute\nminutes=minutes\nhours=hours\ndays=days\nmonths=months\nyears=years\nrestartForChangeRequired=Changes will take effect after page refresh.\nlaneColor=Lanecolor\nlastModified=Last modified\nlayout=Layout\nleft=Left\nleftAlign=Left Align\nleftToRight=Left to right\nlibraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.\nlightbox=Lightbox\nline=Line\nlineend=Line end\nlineheight=Line Height\nlinestart=Line start\nlinewidth=Linewidth\nlink=Link\nlinks=Links\nloading=Loading\nlockUnlock=Lock/Unlock\nloggedOut=Logged Out\nlogIn=log in\nloveIt=I love {1}\nlucidchart=Lucidchart\nmaps=Maps\nmathematicalTypesetting=Mathematical Typesetting\nmakeCopy=Make a Copy\nmanual=Manual\nmiddle=Middle\nminimal=Minimal\nmisc=Misc\nmockups=Mockups\nmodificationDate=Modification date\nmodifiedBy=Modified by\nmore=More\nmoreResults=More Results\nmoreShapes=More Shapes\nmove=Move\nmoveToFolder=Move to Folder\nmoving=Moving\nmoveSelectionTo=Move selection to {1}\nname=Name\nnavigation=Navigation\nnetwork=Network\nnetworking=Networking\nnew=New\nnewLibrary=New Library\nnextPage=Next Page\nno=No\nnoPickFolder=No, pick folder\nnoAttachments=No attachments found\nnoColor=No Color\nnoFiles=No Files\nnoFileSelected=No file selected\nnoLibraries=No libraries found\nnoMoreResults=No more results\nnone=None\nnoOtherViewers=No other viewers\nnoPlugins=No plugins\nnoPreview=No preview\nnoResponse=No response from server\nnoResultsFor=No results for '{1}'\nnoRevisions=No revisions\nnoSearchResults=No search results found\nnoPageContentOrNotSaved=No anchors found on this page or it hasn't been saved yet\nnormal=Normal\nnorth=North\nnotADiagramFile=Not a diagram file\nnotALibraryFile=Not a library file\nnotAvailable=Not available\nnotAUtf8File=Not a UTF-8 file\nnotConnected=Not connected\nnote=Note\nnotUsingService=Not using {1}?\nnumberedList=Numbered list\noffline=Offline\nok=OK\noneDrive=OneDrive\nonline=Online\nopacity=Opacity\nopen=Open\nopenArrow=Open Arrow\nopenExistingDiagram=Open Existing Diagram\nopenFile=Open File\nopenFrom=Open from\nopenLibrary=Open Library\nopenLibraryFrom=Open Library from\nopenLink=Open Link\nopenInNewWindow=Open in New Window\nopenInThisWindow=Open in This Window\nopenIt=Open {1}\nopenRecent=Open Recent\nopenSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy\noptions=Options\norganic=Organic\northogonal=Orthogonal\notherViewer=other viewer\notherViewers=other viewers\noutline=Outline\noval=Oval\npage=Page\npageContent=Page Content\npageNotFound=Page not found\npageWithNumber=Page-{1}\npages=Pages\npageView=Page View\npageSetup=Page Setup\npageScale=Page Scale\npan=Pan\npanTooltip=Space+Drag to pan\npaperSize=Paper Size\npattern=Pattern\npaste=Paste\npasteHere=Paste here\npasteSize=Paste Size\npasteStyle=Paste Style\nperimeter=Perimeter\npermissionAnyone=Anyone can edit\npermissionAuthor=Owner and admins can edit\npickFolder=Pick a folder\npickLibraryDialogTitle=Select Library\npublicDiagramUrl=Public URL of the diagram\nplaceholders=Placeholders\nplantUml=PlantUML\nplugins=Plugins\npluginUrl=Plugin URL\npluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n\nplusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).\nportrait=Portrait\nposition=Position\nposterPrint=Poster Print\npreferences=Preferences\npreview=Preview\npreviousPage=Previous Page\nprint=Print\nprintAllPages=Print All Pages\nprocEng=Proc. Eng.\nproject=Project\npriority=Priority\nproperties=Properties\npublish=Publish\nquickStart=Quick Start Video\nrack=Rack\nradialTree=Radial Tree\nreadOnly=Read-only\nreconnecting=Reconnecting\nrecentlyUpdated=Recently Updated\nrecentlyViewed=Recently Viewed\nrectangle=Rectangle\nredirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.\nrealtimeTimeout=It looks like you've made a few changes while offline. We're sorry, these changes cannot be saved.\nredo=Redo\nrefresh=Refresh\nregularExpression=Regular Expression\nrelative=Relative\nrelativeUrlNotAllowed=Relative URL not allowed\nrememberMe=Remember me\nrememberThisSetting=Remember this setting\nremoveFormat=Clear Formatting\nremoveFromGroup=Remove from Group\nremoveIt=Remove {1}\nremoveWaypoint=Remove Waypoint\nrename=Rename\nrenamed=Renamed\nrenameIt=Rename {1}\nrenaming=Renaming\nreplace=Replace\nreplaceIt={1} already exists. Do you want to replace it?\nreplaceExistingDrawing=Replace existing drawing\nrequired=required\nreset=Reset\nresetView=Reset View\nresize=Resize\nresizeLargeImages=Do you want to resize large images to make the application run faster?\nretina=Retina\nresponsive=Responsive\nrestore=Restore\nrestoring=Restoring\nretryingIn=Retrying in {1} second(s)\nretryingLoad=Load failed. Retrying...\nretryingLogin=Login time out. Retrying...\nreverse=Reverse\nrevision=Revision\nrevisionHistory=Revision History\nrhombus=Rhombus\nright=Right\nrightAlign=Right Align\nrightToLeft=Right to left\nrotate=Rotate\nrotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees\nrotation=Rotation\nrounded=Rounded\nsave=Save\nsaveAndExit=Save & Exit\nsaveAs=Save as\nsaveAsXmlFile=Save as XML file?\nsaved=Saved\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\nsaving=Saving\nscratchpad=Scratchpad\nscrollbars=Scrollbars\nsearch=Search\nsearchShapes=Search Shapes\nselectAll=Select All\nselectionOnly=Selection Only\nselectCard=Select Card\nselectEdges=Select Edges\nselectFile=Select File\nselectFolder=Select Folder\nselectFont=Select Font\nselectNone=Select None\nselectTemplate=Select Template\nselectVertices=Select Vertices\nsendMessage=Send\nsendYourFeedbackToDrawIo=Send your feedback to draw.io\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save. \nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareLink=Link for shared editing\nsharp=Sharp\nshow=Show\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsize=Size\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstarting=Starting\nstraight=Straight\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\nsysml=SysML\ntags=Tags\ntable=Table\ntables=Tables\ntakeOver=Take Over\ntargetSpacing=Target Spacing\ntemplate=Template\ntemplates=Templates\ntext=Text\ntextAlignment=Text Alignment\ntextOpacity=Text Opacity\ntheme=Theme\ntimeout=Timeout\ntitle=Title\nto=to\ntoBack=To Back\ntoFront=To Front\ntooltips=Tooltips\ntop=Top\ntopAlign=Top Align\ntopLeft=Top Left\ntopRight=Top Right\ntransparent=Transparent\ntransparentBackground=Transparent Background\ntrello=Trello\ntryAgain=Try again\ntryOpeningViaThisPage=Try opening via this page.\nturn=Rotate shape only by 90°\ntype=Type\ntwitter=Twitter\numl=UML\nunderline=Underline\nundo=Undo\nungroup=Ungroup\nunsavedChanges=Unsaved changes\nunsavedChangesClickHereToSave=Unsaved changes. Click here to save.\nuntitled=Untitled\nuntitledDiagram=Untitled Diagram\nuntitledLayer=Untitled Layer\nuntitledLibrary=Untitled Library\nunknownError=Unknown error\nupdateFile=Update {1}\nupdatingDocument=Updating Document. Please wait...\nupdatingPreview=Updating Preview. Please wait...\nupdatingSelection=Updating Selection. Please wait...\nupload=Upload\nurl=URL\nuseOffline=Use Offline\nuseRootFolder=Use root folder?\nuserManual=User Manual\nvertical=Vertical\nverticalFlow=Vertical Flow\nverticalTree=Vertical Tree\nview=View\nviewUrl=Link to view: {1}\nvoiceAssistant=Voice Assistant (beta)\nwarning=Warning\nwaypoints=Waypoints\nwest=West\nwidth=Width\nwiki=Wiki\nwordWrap=Word Wrap\nwritingDirection=Writing Direction\nyes=Yes\nyourEmailAddress=Your email address\nzoom=Zoom\nzoomIn=Zoom In\nzoomOut=Zoom Out\nbasic=Basic\nbusinessprocess=Business Processes\ncharts=Charts\nengineering=Engineering\nflowcharts=Flowcharts\ngmdl=Material Design\nmindmaps=Mindmaps\nmockups=Mockups\nnetworkdiagrams=Network Diagrams\nnothingIsSelected=Nothing is selected\nother=Other\nsoftwaredesign=Software Design\nvenndiagrams=Venn Diagrams\nwebEmailOrOther=Web, email or any other internet address\nwebLink=Web Link\nwireframes=Wireframes\nproperty=Property\nvalue=Value\nshowMore=Show More\nshowLess=Show Less\nmyDiagrams=My Diagrams\nallDiagrams=All Diagrams\nrecentlyUsed=Recently used\nlistView=List view\ngridView=Grid view\nresultsFor=Results for '{1}'\n");Graph.prototype.defaultThemes[Graph.prototype.defaultThemeName]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="#ffffff"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#ffffff"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="white"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="#ffffff"/></add></mxStylesheet>').documentElement; -Graph.prototype.defaultThemes.darkTheme=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="#2a2a2a"/><add as="strokeColor" value="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="#2a2a2a"/></add></mxStylesheet>').documentElement;GraphViewer=function(a,b,f){this.init(a,b,f)};mxUtils.extend(GraphViewer,mxEventSource);GraphViewer.prototype.editBlankUrl="https://www.draw.io/";GraphViewer.prototype.imageBaseUrl="https://www.draw.io/";GraphViewer.prototype.toolbarHeight="BackCompat"==document.compatMode?28:30;GraphViewer.prototype.lightboxChrome=!0;GraphViewer.prototype.lightboxZIndex=999;GraphViewer.prototype.toolbarZIndex=999;GraphViewer.prototype.autoFit=!0;GraphViewer.prototype.allowZoomIn=!1; -GraphViewer.prototype.showTitleAsTooltip=!1;GraphViewer.prototype.checkVisibleState=!0; -GraphViewer.prototype.init=function(a,b,f){this.graphConfig=null!=f?f:{};this.autoFit=null!=this.graphConfig["auto-fit"]?this.graphConfig["auto-fit"]:this.autoFit;this.allowZoomIn=null!=this.graphConfig["allow-zoom-in"]?this.graphConfig["allow-zoom-in"]:this.allowZoomIn;this.checkVisibleState=null!=this.graphConfig["check-visible-state"]?this.graphConfig["check-visible-state"]:this.checkVisibleState;this.toolbarItems=null!=this.graphConfig.toolbar?this.graphConfig.toolbar.split(" "):[];this.zoomEnabled= -0<=mxUtils.indexOf(this.toolbarItems,"zoom");this.layersEnabled=0<=mxUtils.indexOf(this.toolbarItems,"layers");this.lightboxEnabled=0<=mxUtils.indexOf(this.toolbarItems,"lightbox");this.lightboxClickEnabled=0!=this.graphConfig.lightbox;this.initialWidth=null!=a?a.style.width:null;this.widthIsEmpty=null!=this.initialWidth?""==this.initialWidth:!0;this.currentPage=parseInt(this.graphConfig.page)||0;this.editor=null;if(null!=b&&(this.xmlDocument=b.ownerDocument,this.xmlNode=b,this.xml=mxUtils.getXml(b), -null!=a)){var d=mxUtils.bind(this,function(){this.graph=new Graph(a);this.graph.transparentBackground=!1;this.graphConfig.move&&(this.graph.isMoveCellsEvent=function(a){return!0});this.lightboxClickEnabled&&(a.style.cursor="pointer");this.editor=new Editor(!0,null,null,this.graph);this.editor.editBlankUrl=this.editBlankUrl;this.graph.lightbox=!0;this.graph.centerZoom=!1;this.graph.autoExtend=!1;this.graph.autoScroll=!1;this.graph.setEnabled(!1);var d=this;this.graph.getImageFromBundles=function(a){return d.getImageUrl(a)}; -mxClient.IS_SVG&&this.editor.graph.addSvgShadow(this.graph.view.canvas.ownerSVGElement,null,!0);if("mxfile"==b.nodeName){var f=b.getElementsByTagName("diagram");if(0<f.length){var k=this.graph.getGlobalVariable,d=this;this.graph.getGlobalVariable=function(a){var b=f[d.currentPage];return"page"==a?b.getAttribute("name")||"Page-"+(d.currentPage+1):"pagenumber"==a?d.currentPage+1:k.apply(this,arguments)}}}this.diagrams=[];var c=null;this.selectPage=function(a){this.currentPage=mxUtils.mod(a,this.diagrams.length); -this.updateGraphXml(mxUtils.parseXml(this.graph.decompress(mxUtils.getTextContent(this.diagrams[this.currentPage]))).documentElement)};this.selectPageById=function(a){for(var b=!1,c=0;c<this.diagrams.length;c++)if(this.diagrams[c].getAttribute("id")==a){this.selectPage(c);b=!0;break}return b};var g=mxUtils.bind(this,function(){if(null==this.xmlNode||"mxfile"!=this.xmlNode.nodeName)this.diagrams=[];this.xmlNode!=c&&(this.diagrams=this.xmlNode.getElementsByTagName("diagram"),c=this.xmlNode)});this.addListener("xmlNodeChanged", -g);g();urlParams.page=d.currentPage;this.graph.getModel().beginUpdate();try{urlParams.nav=0!=this.graphConfig.nav?"1":"0",this.editor.setGraphXml(this.xmlNode),this.graph.border=null!=this.graphConfig.border?this.graphConfig.border:8,this.graph.view.scale=this.graphConfig.zoom||1}finally{this.graph.getModel().endUpdate()}this.graph.panningHandler.useLeftButtonForPanning=!0;this.graph.panningHandler.isForcePanningEvent=function(a){return!mxEvent.isPopupTrigger(a.getEvent())&&"auto"==this.graph.container.style.overflow}; -this.graph.panningHandler.usePopupTrigger=!1;this.graph.panningHandler.pinchEnabled=!1;this.graph.panningHandler.ignoreCell=!0;this.graph.setPanning(!1);this.addSizeHandler();this.showLayers(this.graph);this.addClickHandler(this.graph);this.graph.setTooltips(0!=this.graphConfig.tooltips);this.graph.initialViewState={translate:this.graph.view.translate.clone(),scale:this.graph.view.scale};d=this;this.graph.customLinkClicked=function(a){var b=!0;if("data:page/id,"==a.substring(0,13)){var c=a.indexOf(","); -d.selectPageById(a.substring(c+1))||(b=!1,alert(mxResources.get("pageNotFound")||"Page not found"))}else this.handleCustomLink(a);return b};null!=this.graphConfig.toolbar?this.addToolbar():null!=this.graphConfig.title&&this.showTitleAsTooltip&&a.setAttribute("title",this.graphConfig.title);this.fireEvent(new mxEventObject("render"))});f=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;if(this.checkVisibleState&&0==a.offsetWidth&&"undefined"!==typeof f){var k=this.getObservableParent(a), -n=new f(mxUtils.bind(this,function(b){0<a.offsetWidth&&(n.disconnect(),d())}));n.observe(k,{attributes:!0})}else d()}};GraphViewer.prototype.getObservableParent=function(a){for(a=a.parentNode;a!=document.body&&null!=a.parentNode&&"none"!==mxUtils.getCurrentStyle(a).display;)a=a.parentNode;return a}; -GraphViewer.prototype.getImageUrl=function(a){null!=a&&"http://"!=a.substring(0,7)&&"https://"!=a.substring(0,8)&&"data:image"!=a.substring(0,10)&&("/"==a.charAt(0)&&(a=a.substring(1,a.length)),a=this.imageBaseUrl+a);return a};GraphViewer.prototype.setXmlNode=function(a){this.xmlDocument=a.ownerDocument;this.xml=mxUtils.getXml(a);this.xmlNode=a;this.updateGraphXml(a);this.fireEvent(new mxEventObject("xmlNodeChanged"))}; -GraphViewer.prototype.setFileNode=function(a){null==this.xmlNode&&(this.xmlDocument=a.ownerDocument,this.xml=mxUtils.getXml(a),this.xmlNode=a);this.setGraphXml(a)};GraphViewer.prototype.updateGraphXml=function(a){this.setGraphXml(a);this.fireEvent(new mxEventObject("graphChanged"))}; +a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");b.geometry.setTerminalPoint(new mxPoint(110,-40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);var c=new mxCell("Sub Section",new mxGeometry(120,0,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;");c.vertex=!0;var e=new mxCell("",new mxGeometry(0, +0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");e.geometry.setTerminalPoint(new mxPoint(110,-40),!0);e.geometry.relative=!0;e.edge=!0;c.insertEdge(e,!1);return sb.createVertexTemplateFromCells([b,e,a,c],220,60,"Sub Sections")})])}}})();EditorUi.initMinimalTheme=function(){function a(a){var b=a.editor.graph;b.popupMenuHandler.hideMenu();null==a.formatWindow?(a.formatWindow=new k(a,mxResources.get("format"),Math.max(20,a.diagramContainer.clientWidth-240-12),56,240,Math.min(566,b.container.clientHeight-10),function(b){b=a.createFormat(b);b.init();return b}),a.formatWindow.window.minimumSize=new mxRectangle(0,0,240,80),a.formatWindow.window.setVisible(!0)):a.formatWindow.window.setVisible(!a.formatWindow.window.isVisible());a.formatWindow.window.isVisible()&& +a.formatWindow.window.fit()}function b(a){var b=a.editor.graph;b.popupMenuHandler.hideMenu();new mxRectangle;if(null==a.sidebarWindow){var d=Math.min(b.container.clientWidth-10,266);a.sidebarWindow=new k(a,mxResources.get("shapes"),10,56,d-6,Math.min(650,b.container.clientHeight-30),function(b){function d(c,d){var f=a.menus.get(c),g=e.addMenu(d,mxUtils.bind(this,function(){f.funct.apply(this,arguments)}));g.style.cssText="position:absolute;border-top:1px solid lightgray;width:50%;height:24px;bottom:0px;text-align:center;cursor:pointer;padding:6px 0 0 0;cusor:pointer;"; +g.className="geTitle";b.appendChild(g);return g}var c=document.createElement("div");c.style.cssText="position:absolute;left:0;right:0;border-top:1px solid lightgray;height:24px;bottom:31px;text-align:center;cursor:pointer;padding:6px 0 0 0;";c.className="geTitle";c.innerHTML='<span style="font-size:18px;margin-right:5px;">+</span>';mxUtils.write(c,mxResources.get("moreShapes"));b.appendChild(c);mxEvent.addListener(c,"click",function(){a.actions.get("shapes").funct()});var e=new Menubar(a,b);if(!Editor.enableCustomLibraries|| +"1"==urlParams.embed&&"1"!=urlParams.libraries)c.style.bottom="0";else if(null!=a.actions.get("newLibrary")){c=document.createElement("div");c.style.cssText="position:absolute;left:0px;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;";c.className="geTitle";var f=document.createElement("span");f.style.cssText="position:relative;top:6px;";mxUtils.write(f,mxResources.get("newLibrary"));c.appendChild(f);b.appendChild(c);mxEvent.addListener(c, +"click",a.actions.get("newLibrary").funct);c=document.createElement("div");c.style.cssText="position:absolute;left:50%;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;border-left: 1px solid lightgray;";c.className="geTitle";f=document.createElement("span");f.style.cssText="position:relative;top:6px;";mxUtils.write(f,mxResources.get("openLibrary"));c.appendChild(f);b.appendChild(c);mxEvent.addListener(c,"click",a.actions.get("openLibrary").funct)}else c= +d("newLibrary",mxResources.get("newLibrary")),c.style.left="0",c=d("openLibraryFrom",mxResources.get("openLibraryFrom")),c.style.borderLeft="1px solid lightgray",c.style.left="50%";b.appendChild(a.sidebar.container);b.style.overflow="hidden";return b});a.sidebarWindow.window.minimumSize=new mxRectangle(0,0,90,90);a.sidebarWindow.window.setVisible(!0);a.getLocalData("sidebar",function(b){a.sidebar.showEntries(b,null,!0)});a.restoreLibraries()}else a.sidebarWindow.window.setVisible(!a.sidebarWindow.window.isVisible()); +a.sidebarWindow.window.isVisible()&&a.sidebarWindow.window.fit()}if("1"==urlParams.lightbox||"0"==urlParams.chrome||"undefined"===typeof window.Format||"undefined"===typeof window.Menus)window.uiTheme=null;else{var e=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;try{var c=document.createElement("style");c.type="text/css";c.innerHTML="* { -webkit-font-smoothing: antialiased; }html body .mxWindow button.geBtn { font-size:12px !important; margin-left: 0; }html body table.mxWindow td.mxWindowPane div.mxWindowPane *:not(svg *) { font-size:9pt; }html body div.diagramContainer button, html body button.geBtn { font-size:14px; font-weight:700;border-radius: 5px; }html body button.geBtn:active { opacity: 0.6; }html body a.geMenuItem { opacity: 0.75; }html body a.geMenuItem[disabled] { opacity: 0.2; }html body a.geMenuItem[disabled]:active { opacity: 0.2; }html body div.geActivePage { opacity: 0.7; }html body a.geMenuItem:active { opacity: 0.2; }html body .geToolbarButton { opacity: 0.3; }html body .geToolbarButton:active { opacity: 0.15; }html body .geStatus:active { opacity: 0.5; }html table.mxPopupMenu tr.mxPopupMenuItemHover:active { opacity:0.7; }html body .geDialog input, html body .geToolbarContainer input, html body .mxWindow input {padding:2px;display:inline-block; }div.geDialog { border-radius: 5px; }html body div.geDialog button.geBigButton { color: #fff !important; }.mxWindow button, .geDialog select, .mxWindow select { display:inline-block; }html body .mxWindow .geColorBtn, html body .geDialog .geColorBtn { background: none; }html body div.diagramContainer button, html body .mxWindow button, html body .geDialog button { min-width: 0px; border-radius: 5px; color: #353535 !important; border-style: solid; border-width: 1px; border-color: rgb(216, 216, 216); }html body div.diagramContainer button:hover, html body .mxWindow button:hover, html body .geDialog button:hover { border-color: rgb(177, 177, 177); }html body div.diagramContainer button:active, html body .mxWindow button:active, html body .geDialog button:active { opacity: 0.6; }div.diagramContainer button.geBtn, .mxWindow button.geBtn, .geDialog button.geBtn { min-width:72px; font-weight: 600; background: none; }div.diagramContainer button.gePrimaryBtn, .mxWindow button.gePrimaryBtn, .geDialog button.gePrimaryBtn, html body .gePrimaryBtn { background: #29b6f2; color: #fff !important; border: none; box-shadow: none; }html body .gePrimaryBtn:hover { background: #29b6f2; border: none; box-shadow: inherit; }html body button.gePrimaryBtn:hover { background: #29b6f2; border: none; }.geBtn button { min-width:72px !important; }div.geToolbarContainer a.geButton { margin:2px; padding: 0 2px 4px 2px; } .geDialog, .mxWindow td.mxWindowPane *, div.geSprite, td.mxWindowTitle, .geDiagramContainer { box-sizing:content-box; }.mxWindow div button.geStyleButton { box-sizing: border-box; }table.mxWindow td.mxWindowPane button.geColorBtn { padding:0px; box-sizing: border-box; }td.mxWindowPane .geSidebarContainer button { padding:2px 0 2px 0; box-sizing: border-box; }html body .geMenuItem { font-size:14px; text-decoration: none; font-weight: normal; padding: 6px 10px 6px 10px; border: none; border-radius: 5px; color: #353535; box-shadow: inset 0 0 0 1px rgba(0,0,0,.11), inset 0 -1px 0 0 rgba(0,0,0,.08), 0 1px 2px 0 rgba(0,0,0,.04); }.geToolbarContainer { background:#fff !important; }div.mxWindow .geSidebarContainer .geTitle { background-color:#fdfdfd; }div.mxWindow .geSidebarContainer .geTitle:hover { background-color:#fafafa; }div.geSidebar { background-color: #fff !important;}div.mxWindow td.mxWindowPane button { background-image: none; float: none; }td.mxWindowTitle { height: 22px !important; background: none !important; font-size: 13px !important; text-align:center !important; border-bottom:1px solid lightgray; }div.mxWindow, div.mxWindowTitle { background-image: none !important; background-color:#fff !important; }div.mxWindow { border-radius:5px; box-shadow: 0px 0px 2px #C0C0C0 !important;}div.mxWindow * { font-family: inherit !important; }html div.geVerticalHandle { position:absolute;bottom:0px;left:50%;cursor:row-resize;width:11px;height:11px;background:white;margin-bottom:-6px; margin-left:-6px; border: none; border-radius: 6px; box-shadow: inset 0 0 0 1px rgba(0,0,0,.11), inset 0 -1px 0 0 rgba(0,0,0,.08), 0 1px 2px 0 rgba(0,0,0,.04); }html div.geInactivePage { background: rgb(249, 249, 249) !important; color:lightgray !important; } html div.geActivePage { background: white !important;color: #353535 !important; } html div.mxRubberband { border:1px solid; border-color: #29b6f2 !important; background:rgba(41,182,242,0.5) !important; } html body div.mxPopupMenu { border-radius:5px; border:1px solid #c0c0c0; padding:5px 0 5px 0; box-shadow: 0px 4px 17px -4px rgba(96,96,96,1); } html table.mxPopupMenu td.mxPopupMenuItem { color: #353535; font-size: 14px; padding-top: 4px; padding-bottom: 4px; }html table.mxPopupMenu tr.mxPopupMenuItemHover { background-color: #29b6f2; }html tr.mxPopupMenuItemHover td.mxPopupMenuItem, html tr.mxPopupMenuItemHover td.mxPopupMenuItem span { color: #fff !important; }html tr.mxPopupMenuItem, html td.mxPopupMenuItem { transition-property: none !important; }html table.mxPopupMenu hr { height: 2px; background-color: rgba(0,0,0,.07); margin: 5px 0; }"+ +(mxClient.IS_IOS?"html input[type=checkbox], html input[type=radio] { height:12px; }":"");document.getElementsByTagName("head")[0].appendChild(c)}catch(p){}var k=function(a,b,c,d,e,f,g){var k=document.createElement("div");k.className="geSidebarContainer";k.style.position="absolute";k.style.width="100%";k.style.height="100%";k.style.border="1px solid whiteSmoke";k.style.overflowX="hidden";k.style.overflowY="auto";g(k);this.window=new mxWindow(b,k,c,d,e,f,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1); +this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.setLocation=function(a,b){var c=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};mxClient.IS_SF&& +(this.window.div.onselectstart=mxUtils.bind(this,function(b){null==b&&(b=window.event);return null!=b&&a.isSelectionAllowed(b)}))};Editor.checkmarkImage=Graph.createSvgImage(22,18,'<path transform="translate(4 0)" d="M7.181,15.007a1,1,0,0,1-.793-0.391L3.222,10.5A1,1,0,1,1,4.808,9.274L7.132,12.3l6.044-8.86A1,1,0,1,1,14.83,4.569l-6.823,10a1,1,0,0,1-.8.437H7.181Z" fill="#29b6f2"/>').src;mxWindow.prototype.closeImage=Graph.createSvgImage(18,10,'<path d="M 5 1 L 13 9 M 13 1 L 5 9" stroke="#C0C0C0" stroke-width="2"/>').src; +mxWindow.prototype.minimizeImage=Graph.createSvgImage(14,10,'<path d="M 3 7 L 7 3 L 11 7" stroke="#C0C0C0" stroke-width="2" fill="#ffffff"/>').src;mxWindow.prototype.normalizeImage=Graph.createSvgImage(14,10,'<path d="M 3 3 L 7 7 L 11 3" stroke="#C0C0C0" stroke-width="2" fill="#ffffff"/>').src;mxConstraintHandler.prototype.pointImage=Graph.createSvgImage(5,5,'<path d="m 0 0 L 5 5 M 0 5 L 5 0" stroke="#29b6f2"/>');mxOutline.prototype.sizerImage=null;mxConstants.VERTEX_SELECTION_COLOR="#C0C0C0";mxConstants.EDGE_SELECTION_COLOR= +"#C0C0C0";mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff";mxConstants.DEFAULT_VALID_COLOR="#29b6f2";mxConstants.GUIDE_COLOR="#C0C0C0";mxConstants.HIGHLIGHT_STROKEWIDTH=5;mxConstants.HIGHLIGHT_OPACITY=35;mxConstants.OUTLINE_COLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_FILLCOLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_STROKECOLOR="#fff";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity="0.4";Graph.prototype.svgShadowSize="0.6";Graph.prototype.svgShadowBlur="1.2";Format.prototype.inactiveTabBackgroundColor= +"#f0f0f0";mxGraphHandler.prototype.previewColor="#C0C0C0";mxRubberband.prototype.defaultOpacity=50;HoverIcons.prototype.inactiveOpacity=25;Format.prototype.showCloseButton=!1;EditorUi.prototype.closableScratchpad=!1;EditorUi.prototype.toolbarHeight=46;EditorUi.prototype.footerHeight=0;Graph.prototype.editAfterInsert=!0;Editor.prototype.isChromelessView=function(){return!1};Graph.prototype.isLightboxView=function(){return!1};var m=EditorUi.prototype.updateTabContainer;EditorUi.prototype.updateTabContainer= +function(){null!=this.tabContainer&&(this.tabContainer.style.right="70px",this.diagramContainer.style.bottom="30px");m.apply(this,arguments)};var q=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){q.apply(this,arguments);this.menus.get("save").setEnabled(null!=this.getCurrentFile()||"1"==urlParams.embed)};var r=Menus.prototype.addShortcut;Menus.prototype.addShortcut=function(a,b){null!=b.shortcut&&900>e&&!mxClient.IS_IOS?a.firstChild.nextSibling.setAttribute("title", +b.shortcut):r.apply(this,arguments)};var v=App.prototype.updateUserElement;App.prototype.updateUserElement=function(){v.apply(this,arguments);if(null!=this.userElement){var a=this.userElement;a.style.cssText="display:inline-block;position:relative;margin-right:4px;cursor:pointer;";a.className="geToolbarButton";a.innerHTML="";a.style.backgroundImage="url("+Editor.userImage+")";a.style.backgroundPosition="center center";a.style.backgroundRepeat="no-repeat";a.style.backgroundSize="24px 24px";a.style.height= +"24px";a.style.width="24px";a.style.cssFloat="right";a.setAttribute("title",mxResources.get("changeUser"))}};var z=App.prototype.updateButtonContainer;App.prototype.updateButtonContainer=function(){z.apply(this,arguments);if(null!=this.shareButton){var a=this.shareButton;a.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;cursor:pointer;";a.className="geToolbarButton";a.innerHTML="";a.style.backgroundImage="url("+Editor.shareImage+")";a.style.backgroundPosition= +"center center";a.style.backgroundRepeat="no-repeat";a.style.backgroundSize="24px 24px";a.style.height="24px";a.style.width="24px"}};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.buttonContainer){var a=document.createElement("div");a.style.display="inline-block";a.style.position="relative";a.style.marginTop="2px";var b=document.createElement("button");mxUtils.write(b,mxResources.get("save"));b.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)");b.className="1"==urlParams.saveAndExit? +"geMenuItem":"geMenuItem gePrimaryBtn";b.style.fontSize="14px";b.style.padding="6px";b.style.borderRadius="3px";b.style.marginLeft="8px";b.style.cursor="pointer";mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()}));a.appendChild(b);"1"==urlParams.saveAndExit&&(b=document.createElement("a"),mxUtils.write(b,mxResources.get("saveAndExit")),b.setAttribute("title",mxResources.get("saveAndExit")),b.className="geMenuItem gePrimaryBtn",b.style.fontSize="14px",b.style.marginLeft= +"6px",b.style.padding="6px",b.style.cursor="pointer",mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b));b=document.createElement("a");mxUtils.write(b,mxResources.get("exit"));b.setAttribute("title",mxResources.get("exit"));b.className="geMenuItem";b.style.fontSize="14px";b.style.marginLeft="6px";b.style.padding="6px";b.style.cursor="pointer";mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})); +a.appendChild(b);this.buttonContainer.appendChild(a);this.buttonContainer.style.top="6px"}};Sidebar.prototype.getTooltipOffset=function(){var a=mxUtils.getOffset(this.editorUi.sidebarWindow.window.div);a.y+=40;return a};var d=Menus.prototype.createPopupMenu;Menus.prototype.createPopupMenu=function(a,b,c){var e=this.editorUi.editor.graph;a.smartSeparators=!0;d.apply(this,arguments);mxUtils.bind(this,function(a,b){var c=new FilenameDialog(this.editorUi,a,mxResources.get("apply"),function(a){b(parseFloat(a))}, +mxResources.get("spacing"));this.editorUi.showDialog(c.container,300,80,!0,!0);c.init()});1==e.getSelectionCount()?(this.addMenuItems(a,["editTooltip","-","editStyle","editGeometry","-"],null,c),e.isCellFoldable(e.getSelectionCell())&&this.addMenuItems(a,e.isCellCollapsed(b)?["expand"]:["collapse"],null,c),this.addMenuItems(a,["collapsible","-","lockUnlock","enterGroup"],null,c),a.addSeparator(),this.addSubmenu("layout",a)):e.isSelectionEmpty()&&e.isEnabled()?(a.addSeparator(),this.addMenuItems(a, +["editData"],null,c),a.addSeparator(),this.addSubmenu("layout",a),this.addSubmenu("view",a,null,mxResources.get("options")),this.addMenuItems(a,["-","exitGroup"],null,c)):e.isEnabled()&&this.addMenuItems(a,["-","lockUnlock"],null,c)};EditorUi.prototype.toggleFormatPanel=function(b){null!=this.formatWindow?this.formatWindow.window.setVisible(b?!1:!this.formatWindow.window.isVisible()):a(this)};DiagramFormatPanel.prototype.isMathOptionVisible=function(){return!0};var f=EditorUi.prototype.destroy;EditorUi.prototype.destroy= +function(){null!=this.sidebarWindow&&(this.sidebarWindow.window.setVisible(!1),this.sidebarWindow.window.destroy(),this.sidebarWindow=null);null!=this.formatWindow&&(this.formatWindow.window.setVisible(!1),this.formatWindow.window.destroy(),this.formatWindow=null);null!=this.actions.outlineWindow&&(this.actions.outlineWindow.window.setVisible(!1),this.actions.outlineWindow.window.destroy(),this.actions.outlineWindow=null);null!=this.actions.layersWindow&&(this.actions.layersWindow.window.setVisible(!1), +this.actions.layersWindow.window.destroy(),this.actions.layersWindow=null);null!=this.menus.tagsWindow&&(this.menus.tagsWindow.window.setVisible(!1),this.menus.tagsWindow.window.destroy(),this.menus.tagsWindow=null);null!=this.menus.findWindow&&(this.menus.findWindow.window.setVisible(!1),this.menus.findWindow.window.destroy(),this.menus.findWindow=null);f.apply(this,arguments)};var l=EditorUi.prototype.setGraphEnabled;EditorUi.prototype.setGraphEnabled=function(a){l.apply(this,arguments);a||(null!= +this.sidebarWindow&&this.sidebarWindow.window.setVisible(!1),null!=this.formatWindow&&this.formatWindow.window.setVisible(!1))};EditorUi.prototype.chromelessWindowResize=function(){};var n=Menus.prototype.init;Menus.prototype.init=function(){n.apply(this,arguments);var c=this.editorUi,d=c.editor.graph;c.actions.get("editDiagram").label=mxResources.get("formatXml")+"...";c.actions.get("createShape").label=mxResources.get("shape")+"...";c.actions.get("outline").label=mxResources.get("outline")+"..."; +c.actions.get("layers").label=mxResources.get("layers")+"...";c.actions.put("importFile",new Action("File...",function(){d.popupMenuHandler.hideMenu();var a=document.createElement("input");a.setAttribute("type","file");mxEvent.addListener(a,"change",function(){null!=a.files&&c.importFiles(a.files,null,null,c.maxImageSize)});a.click()}));c.actions.put("importCsv",new Action(mxResources.get("csv")+"...",function(){d.popupMenuHandler.hideMenu();c.showImportCsvDialog()}));c.actions.put("importText",new Action(mxResources.get("text")+ +"...",function(){var a=new ParseDialog(c,"Insert from Text");c.showDialog(a.container,620,420,!0,!1);a.init()}));c.actions.put("formatSql",new Action(mxResources.get("formatSql")+"...",function(){var a=new ParseDialog(c,"Insert from Text","formatSql");c.showDialog(a.container,620,420,!0,!1);a.init()}));c.actions.put("toggleShapes",new Action(mxResources.get("shapes")+"...",function(){b(c)}));c.actions.put("toggleFormat",new Action(mxResources.get("format")+"...",function(){a(c)}));EditorUi.enablePlantUml&& +!c.isOffline()&&c.actions.put("plantUml",new Action(mxResources.get("plantUml")+"...",function(){var a=new ParseDialog(c,"Insert from Text","plantUml");c.showDialog(a.container,620,420,!0,!1);a.init()}));this.put("diagram",new Menu(mxUtils.bind(this,function(a,b){var d=c.getCurrentFile();c.menus.addSubmenu("extras",a,b,mxResources.get("preferences"));a.addSeparator(b);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?(c.menus.addMenuItems(a,["new","open","-"],b),EditorUi.isElectronApp&&c.menus.addMenuItems(a, +["synchronize","-"],b),c.menus.addMenuItems(a,["save","saveAs","-"],b)):"1"==urlParams.embed?(c.menus.addMenuItems(a,["-","save"],b),"1"==urlParams.saveAndExit&&c.menus.addMenuItems(a,["saveAndExit"],b),a.addSeparator(b)):(c.menus.addMenuItems(a,["new"],b),c.menus.addSubmenu("openFrom",a,b),isLocalStorage&&this.addSubmenu("openRecent",a,b),a.addSeparator(b),null!=d&&d.constructor==DriveFile&&c.menus.addMenuItems(a,["share"],b),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null==d||d.constructor== +LocalFile||c.menus.addMenuItems(a,["synchronize"],b),a.addSeparator(b),c.menus.addSubmenu("save",a,b));c.menus.addSubmenu("exportAs",a,b);c.menus.addMenuItems(a,"- outline layers - find tags".split(" "),b);mxClient.IS_IOS&&navigator.standalone||c.menus.addMenuItems(a,["-","print","-"],b);c.menus.addSubmenu("help",a,b);"1"==urlParams.embed?c.menus.addMenuItems(a,["-","exit"],b):c.menus.addMenuItems(a,["-","close"])})));this.put("save",new Menu(mxUtils.bind(this,function(a,b){var d=c.getCurrentFile(); +null!=d&&d.constructor==DriveFile?c.menus.addMenuItems(a,["save","makeCopy","-","rename","moveToFolder"],b):(c.menus.addMenuItems(a,["save","saveAs","-","rename"],b),c.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&this.addMenuItems(a,["upload"],b):c.menus.addMenuItems(a,["makeCopy"],b));c.menus.addMenuItems(a,["-","autosave"],b);null!=d&&d.isRevisionHistorySupported()&&c.menus.addMenuItems(a,["-","revisionHistory"],b)})));var e=this.get("exportAs");this.put("exportAs",new Menu(mxUtils.bind(this, +function(a,b){e.funct(a,b);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||c.menus.addMenuItems(a,["publishLink"],b);a.addSeparator(b);c.menus.addSubmenu("embed",a,b)})));var f=this.get("language");this.put("extras",new Menu(mxUtils.bind(this,function(a,b){"1"!=urlParams.embed&&c.menus.addSubmenu("theme",a,b);null!=f&&c.menus.addSubmenu("language",a,b);a.addSeparator(b);c.menus.addMenuItems(a,["scrollbars","tooltips"],b);"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&c.menus.addMenuItems(a, +["-","search","scratchpad","-","showStartScreen"],b);!c.isOfflineApp()&&isLocalStorage&&(a.addSeparator(b),c.menus.addMenuItem(a,"plugins",b));a.addSeparator(b)})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,function(a,b){c.menus.addMenuItems(a,"importText plantUml - formatSql importCsv - createShape editDiagram".split(" "),b)})));mxResources.parse("insertLayout="+mxResources.get("layout"));mxResources.parse("insertAdvanced="+mxResources.get("advanced"));this.put("insert",new Menu(mxUtils.bind(this, +function(a,b){c.menus.addMenuItems(a,"insertRectangle insertEllipse insertRhombus - insertText insertLink - insertImage".split(" "),b);c.insertTemplateEnabled&&!c.isOffline()&&c.menus.addMenuItems(a,["insertTemplate"],b);a.addSeparator(b);c.menus.addSubmenu("insertLayout",a,b);c.menus.addSubmenu("insertAdvanced",a,b);a.addSeparator(b);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?c.menus.addMenuItems(a,["import"],b):c.menus.addSubmenu("importFrom",a,b)})));var g="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "), +k=function(a,b,d,e){a.addItem(d,null,mxUtils.bind(this,function(){var a=new CreateGraphDialog(c,d,e);c.showDialog(a.container,620,420,!0,!1);a.init()}),b)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(a,b){for(var c=0;c<g.length;c++)"-"==g[c]?a.addSeparator(b):k(a,b,mxResources.get(g[c])+"...",g[c])})));this.put("view",new Menu(mxUtils.bind(this,function(a,b){c.menus.addMenuItems(a,"grid guides - connectionArrows connectionPoints -".split(" "),b);if("undefined"!==typeof MathJax){var d= +c.menus.addMenuItem(a,"mathematicalTypesetting",b);c.menus.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000032875")}c.menus.addMenuItems(a,["copyConnect","collapseExpand","-","pageScale"],b)})))};var g=EditorUi.prototype.init;EditorUi.prototype.init=function(){function a(a,b,c){var d=l.menus.get(a),e=r.addMenu(mxResources.get(a),mxUtils.bind(this,function(){d.funct.apply(this,arguments)}),q);e.className="geMenuItem";e.style.display="inline-block";e.style.boxSizing="border-box"; +e.style.top="6px";e.style.marginRight="6px";e.style.height="30px";e.style.paddingTop="6px";e.style.paddingBottom="6px";e.style.cursor="pointer";e.setAttribute("title",mxResources.get(a));l.menus.menuCreated(d,e,"geMenuItem");null!=c?(e.style.backgroundImage="url("+c+")",e.style.backgroundPosition="center center",e.style.backgroundRepeat="no-repeat",e.style.backgroundSize="24px 24px",e.style.width="34px",e.innerHTML=""):b||(e.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",e.style.backgroundPosition= +"right 6px center",e.style.backgroundRepeat="no-repeat",e.style.paddingRight="22px");return e}function c(a,b,c,d,e,f){var g=document.createElement("a");g.className="geMenuItem";g.style.display="inline-block";g.style.boxSizing="border-box";g.style.height="30px";g.style.padding="6px";g.style.position="relative";g.style.verticalAlign="top";g.style.top="0px";null!=l.statusContainer?n.insertBefore(g,l.statusContainer):n.appendChild(g);null!=f?(g.style.backgroundImage="url("+f+")",g.style.backgroundPosition= +"center center",g.style.backgroundRepeat="no-repeat",g.style.backgroundSize="24px 24px",g.style.width="34px"):mxUtils.write(g,a);mxEvent.addListener(g,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(g,"click",function(a){"disabled"!=g.getAttribute("disabled")&&b(a);mxEvent.consume(a)});null==c&&(g.style.marginRight="4px");null!=d&&g.setAttribute("title",d);null!=e&&(a=function(){e.isEnabled()?(g.removeAttribute("disabled"),g.style.cursor= +"pointer"):(g.setAttribute("disabled","disabled"),g.style.cursor="default")},e.addListener("stateChanged",a),a());return g}function d(a,b){var c=document.createElement("div");c.className="geMenuItem";c.style.display="inline-block";c.style.verticalAlign="top";c.style.marginRight="6px";c.style.padding="0 4px 0 4px";c.style.height="30px";c.style.position="relative";c.style.top="0px";for(var d=0;d<a.length;d++)null!=a[d]&&(a[d].style.margin="0px",a[d].style.boxShadow="none",c.appendChild(a[d]));null!= +b&&mxUtils.setOpacity(c,b);null!=l.statusContainer?n.insertBefore(c,l.statusContainer):n.appendChild(c);return c}function f(){for(var b=n.firstChild;null!=b;){var f=b.nextSibling;"geMenuItem"!=b.className&&"geItem"!=b.className||b.parentNode.removeChild(b);b=f}q=n.firstChild;e=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;(b=1E3>e)||a("diagram");d([b?a("diagram",null,IMAGE_PATH+"/drawlogo.svg"):null,c(mxResources.get("shapes"),l.actions.get("toggleShapes").funct, +null,mxResources.get("shapes"),l.actions.get("image"),b?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTMgMTN2OGg4di04aC04ek0zIDIxaDh2LThIM3Y4ek0zIDN2OGg4VjNIM3ptMTMuNjYtMS4zMUwxMSA3LjM0IDE2LjY2IDEzbDUuNjYtNS42Ni01LjY2LTUuNjV6Ii8+PC9zdmc+":null),c(mxResources.get("format"),l.actions.get("toggleFormat").funct,null,mxResources.get("format")+" ("+l.actions.get("formatPanel").shortcut+")",l.actions.get("image"), +b?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIgM2MtNC45NyAwLTkgNC4wMy05IDlzNC4wMyA5IDkgOWMuODMgMCAxLjUtLjY3IDEuNS0xLjUgMC0uMzktLjE1LS43NC0uMzktMS4wMS0uMjMtLjI2LS4zOC0uNjEtLjM4LS45OSAwLS44My42Ny0xLjUgMS41LTEuNUgxNmMyLjc2IDAgNS0yLjI0IDUtNSAwLTQuNDItNC4wMy04LTktOHptLTUuNSA5Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNS42NyA5IDYuNSA5IDggOS42NyA4IDEwLjUgNy4zMyAxMiA2LjUgMTJ6bTMtNEM4LjY3IDggOCA3LjMzIDggNi41UzguNjcgNSA5LjUgNXMxLjUuNjcgMS41IDEuNVMxMC4zMyA4IDkuNSA4em01IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxMy42NyA1IDE0LjUgNXMxLjUuNjcgMS41IDEuNVMxNS4zMyA4IDE0LjUgOHptMyA0Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTYuNjcgOSAxNy41IDlzMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41eiIvPjwvc3ZnPg==": +null)],b?60:null);f=a("insert",!0,b?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgMTNoLTZ2NmgtMnYtNkg1di0yaDZWNWgydjZoNnYyeiIvPjwvc3ZnPg==":null);d([f,c(mxResources.get("delete"),l.actions.get("delete").funct,null,mxResources.get("delete"),l.actions.get("delete"),b?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek0xOSA0aC0zLjVsLTEtMWgtNWwtMSAxSDV2MmgxNFY0eiIvPjwvc3ZnPg==": +null)],b?60:null);if(411<=e&&(f=l.actions.get("undo"),b=l.actions.get("redo"),f=c("",f.funct,null,mxResources.get("undo")+" ("+f.shortcut+")",f,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIuNSA4Yy0yLjY1IDAtNS4wNS45OS02LjkgMi42TDIgN3Y5aDlsLTMuNjItMy42MmMxLjM5LTEuMTYgMy4xNi0xLjg4IDUuMTItMS44OCAzLjU0IDAgNi41NSAyLjMxIDcuNiA1LjVsMi4zNy0uNzhDMjEuMDggMTEuMDMgMTcuMTUgOCAxMi41IDh6Ii8+PC9zdmc+"),b=c("", +b.funct,null,mxResources.get("redo")+" ("+b.shortcut+")",b,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTguNCAxMC42QzE2LjU1IDguOTkgMTQuMTUgOCAxMS41IDhjLTQuNjUgMC04LjU4IDMuMDMtOS45NiA3LjIyTDMuOSAxNmMxLjA1LTMuMTkgNC4wNS01LjUgNy42LTUuNSAxLjk1IDAgMy43My43MiA1LjEyIDEuODhMMTMgMTZoOVY3bC0zLjYgMy42eiIvPjwvc3ZnPg=="),d([f,b],60),480<=e)){var b=l.actions.get("zoomIn"),f=l.actions.get("zoomOut"),g=l.actions.get("resetView"); +d([c("",function(){m.popupMenuHandler.hideMenu();var a=m.view.scale,b=m.view.translate.x,c=m.view.translate.y;l.actions.get("resetView").funct();1E-5>Math.abs(a-m.view.scale)&&b==m.view.translate.x&&c==m.view.translate.y&&l.actions.get(m.pageVisible?"fitPage":"fitWindow").funct()},!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",g,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMyA1djRoMlY1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnptMiAxMEgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6bTE0IDRoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6bTAtMTZoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yeiIvPjwvc3ZnPg=="), +640<=e?c("",b.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",b,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHptMi41LTRoLTJ2Mkg5di0ySDdWOWgyVjdoMXYyaDJ2MXoiLz48L3N2Zz4="): +null,640<=e?c("",f.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",f,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpNNyA5aDV2MUg3eiIvPjwvc3ZnPg=="): +null],60)}b=l.menus.get("language");null!=b&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=e?(null==O&&(f=r.addMenu("",b.funct),f.setAttribute("title",mxResources.get("language")),f.className="geToolbarButton",f.style.backgroundImage="url("+Editor.globeImage+")",f.style.backgroundPosition="center center",f.style.backgroundRepeat="no-repeat",f.style.backgroundSize="24px 24px",f.style.position="absolute",f.style.height="24px",f.style.width="24px",f.style.zIndex="1",f.style.top="11px",f.style.right= +"8px",f.style.cursor="pointer",n.appendChild(f),O=f),l.buttonContainer.style.paddingRight="34px"):(l.buttonContainer.style.paddingRight="4px",null!=O&&(O.parentNode.removeChild(O),O=null))}g.apply(this,arguments);var k=document.createElement("div");k.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";k.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(k);urlParams.clibs&&b(this);var l=this,m=l.editor.graph; +l.toolbar=this.createToolbar(l.createDiv("geToolbar"));l.defaultLibraryName=mxResources.get("untitledLibrary");var n=document.createElement("div");n.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;border-bottom:1px solid lightgray;background-color:#ffffff;text-align:left;white-space:nowrap;";var q=null,r=new Menubar(l,n);l.statusContainer=l.createStatusContainer();l.statusContainer.style.position="relative";l.statusContainer.style.maxWidth="";l.statusContainer.style.marginTop= +"7px";l.statusContainer.style.marginLeft="6px";l.statusContainer.style.color="gray";l.statusContainer.style.cursor="default";l.editor.addListener("statusChanged",mxUtils.bind(this,function(){l.setStatusText(l.editor.getStatus())}));var v=l.descriptorChanged;l.descriptorChanged=function(){v.apply(this,arguments);var a=l.getCurrentFile();if(null!=a&&null!=a.getTitle()){var b=a.getMode();"google"==b?b="googleDrive":"github"==b?b="gitHub":"onedrive"==b&&(b="oneDrive");b=mxResources.get(b);n.setAttribute("title", +a.getTitle()+(null!=b?" ("+b+")":""))}else n.removeAttribute("title")};l.setStatusText(l.editor.getStatus());n.appendChild(l.statusContainer);l.buttonContainer=document.createElement("div");l.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";n.appendChild(l.buttonContainer);l.menubarContainer=l.buttonContainer;l.tabContainer=document.createElement("div");l.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;border-bottom:1px solid lightgray;background-color:#ffffff;border-top:1px solid lightgray;margin-bottom:-2px;visibility:hidden;"; +var k=l.diagramContainer.parentNode,z=document.createElement("div");z.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";l.diagramContainer.style.top="47px";var E=l.menus.get("viewZoom");if(null!=E){this.tabContainer.style.right="70px";var C=r.addMenu("100%",E.funct);C.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");C.style.whiteSpace="nowrap";C.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";C.style.backgroundPosition="right 6px center"; +C.style.backgroundRepeat="no-repeat";C.style.backgroundColor="#ffffff";C.style.paddingRight="10px";C.style.display="block";C.style.position="absolute";C.style.textDecoration="none";C.style.textDecoration="none";C.style.right="0px";C.style.bottom="0px";C.style.overflow="hidden";C.style.visibility="hidden";C.style.textAlign="center";C.style.color="#000";C.style.fontSize="12px";C.style.color="#707070";C.style.width="59px";C.style.borderTop="1px solid lightgray";C.style.borderLeft="1px solid lightgray"; +C.style.height=parseInt(l.tabContainer.style.height)-1+"px";C.style.lineHeight=parseInt(l.tabContainer.style.height)+1+"px";z.appendChild(C);E=mxUtils.bind(this,function(){C.innerHTML=Math.round(100*l.editor.graph.view.scale)+"%"});l.editor.graph.view.addListener(mxEvent.EVENT_SCALE,E);l.editor.addListener("resetGraphView",E);l.editor.addListener("pageSelected",E);var M=l.setGraphEnabled;l.setGraphEnabled=function(){M.apply(this,arguments);null!=this.tabContainer&&(C.style.visibility=this.tabContainer.style.visibility, +this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?"30px":"0px")}}z.appendChild(l.tabContainer);z.appendChild(n);z.appendChild(l.diagramContainer);k.appendChild(z);l.updateTabContainer();var O=null;f();mxEvent.addListener(window,"resize",function(){f();null!=l.sidebarWindow&&l.sidebarWindow.window.fit();null!=l.formatWindow&&l.formatWindow.window.fit();null!=l.actions.outlineWindow&&l.actions.outlineWindow.window.fit();null!=l.actions.layersWindow&&l.actions.layersWindow.window.fit(); +null!=l.menus.tagsWindow&&l.menus.tagsWindow.window.fit();null!=l.menus.findWindow&&l.menus.findWindow.window.fit()})}}};(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var b=EditorUi.initTheme;EditorUi.initTheme=function(){b.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();mxResources.parse("# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*\n# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE\naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\naddedFile=Added {1}\naddImages=Add Images\naddImageUrl=Add Image URL\naddLayer=Add Layer\naddProperty=Add Property\naddress=Address\naddToExistingDrawing=Add to Existing Drawing\naddWaypoint=Add Waypoint\nadjustTo=Adjust to\nadvanced=Advanced\nalign=Align\nalignment=Alignment\nallChangesLost=All changes will be lost!\nallPages=All Pages\nallProjects=All Projects\nallSpaces=All Spaces\nallTags=All Tags\nanchor=Anchor\nandroid=Android\nangle=Angle\narc=Arc\nareYouSure=Are you sure?\nensureDataSaved=Please ensure your data is saved before closing.\nallChangesSaved=All changes saved\nallChangesSavedInDrive=All changes saved in Drive\nallowPopups=Allow pop-ups to avoid this dialog.\nallowRelativeUrl=Allow relative URL\nalreadyConnected=Nodes already connected\napply=Apply\narchiMate21=ArchiMate 2.1\narrange=Arrange\narrow=Arrow\narrows=Arrows\nasNew=As New\natlas=Atlas\nauthor=Author\nauthorizationRequired=Authorization required\nauthorizeThisAppIn=Authorize this app in {1}:\nauthorize=Authorize\nauthorizing=Authorizing\nautomatic=Automatic\nautosave=Autosave\nautosize=Autosize\nattachments=Attachments\naws=AWS\naws3d=AWS 3D\nazure=Azure\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Borderwidth\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\nbrowser=Browser\nbulletedList=Bulleted List\nbusiness=Business\nbusy=Operation in progress\ncabinets=Cabinets\ncancel=Cancel\ncenter=Center\ncannotLoad=Load attempts failed. Please try again later.\ncannotLogin=Log in attempts failed. Please try again later.\ncannotOpenFile=Cannot open file\nchange=Change\nchangeOrientation=Change Orientation\nchangeUser=Change user\nchangeStorage=Change storage\nchangesNotSaved=Changes have not been saved\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompressed=Compressed\ncommitMessage=Commit Message\ncsv=CSV\ndark=Dark\ndraftFound=A draft for '{1}' has been found. Load it into the editor or discard it to continue.\ndragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?\ndropboxCharsNotAllowed=The following characters are not allowed: / : ? * \" |\ncheck=Check\nchecksum=Checksum\ncircle=Circle\ncisco=Cisco\nclassic=Classic\nclearDefaultStyle=Clear Default Style\nclearWaypoints=Clear Waypoints\nclipart=Clipart\nclose=Close\ncollaborator=Collaborator\ncollaborators=Collaborators\ncollapse=Collapse\ncollapseExpand=Collapse/Expand\ncollapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size\ncollapsible=Collapsible\ncomic=Comic\ncomment=Comment\ncommentsNotes=Comments/Notes\ncompress=Compress\nconnect=Connect\nconnecting=Connecting\nconnectWithDrive=Connect with Google Drive\nconnection=Connection\nconnectionArrows=Connection Arrows\nconnectionPoints=Connection Points\nconstrainProportions=Constrain Proportions\ncontainsValidationErrors=Contains validation errors\ncopiedToClipboard=Copied to clipboard\ncopy=Copy\ncopyConnect=Copy on connect\ncopyOf=Copy of {1}\ncopyOfDrawing=Copy of Drawing\ncopySize=Copy Size\ncopyStyle=Copy Style\ncreate=Create\ncreateNewDiagram=Create New Diagram\ncreateRevision=Create Revision\ncreateShape=Create Shape\ncrop=Crop\ncurved=Curved\ncustom=Custom\ncurrent=Current\ncut=Cut\ndashed=Dashed\ndecideLater=Decide later\ndefault=Default\ndelete=Delete\ndeleteColumn=Delete Column\ndeleteLibrary401=Insufficient permissions to delete this library\ndeleteLibrary404=Selected library could not be found\ndeleteLibrary500=Error deleting library\ndeleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?\ndeleteRow=Delete Row\ndescription=Description\ndevice=Device\ndiagram=Diagram\ndiagramContent=Diagram Content\ndiagramLocked=Diagram has been locked to prevent further data loss.\ndiagramLockedBySince=The diagram is locked by {1} since {2} ago\ndiagramName=Diagram Name\ndiagramIsPublic=Diagram is public\ndiagramIsNotPublic=Diagram is not public\ndiamond=Diamond\ndiamondThin=Diamond (thin)\ndidYouKnow=Did you know...\ndirection=Direction\ndiscard=Discard\ndiscardChangesAndReconnect=Discard Changes and Reconnect\ngoogleDriveMissingClickHere=Google Drive missing? Click here!\ndiscardChanges=Discard Changes\ndisconnected=Disconnected\ndistribute=Distribute\ndone=Done\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Download draw.io Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\ndraftDiscarded=Draft discarded\ndraftSaved=Draft saved\ndragElementsHere=Drag elements here\ndragImagesHere=Drag images or URLs here\ndragUrlsHere=Drag URLs here\ndraw.io=draw.io\ndrawing=Drawing{1}\ndrawingEmpty=Drawing is empty\ndrawingTooLarge=Drawing is too large\ndrawioForWork=Draw.io for GSuite\ndropbox=Dropbox\nduplicate=Duplicate\nduplicateIt=Duplicate {1}\ndivider=Divider\ndx=Dx\ndy=Dy\neast=East\nedit=Edit\neditData=Edit Data\neditDiagram=Edit Diagram\neditGeometry=Edit Geometry\neditImage=Edit Image\neditImageUrl=Edit Image URL\neditLink=Edit Link\neditShape=Edit Shape\neditStyle=Edit Style\neditText=Edit Text\neditTooltip=Edit Tooltip\nglass=Glass\ngoogleImages=Google Images\nimageSearch=Image Search\neip=EIP\nembed=Embed\nembedImages=Embed Images\nmainEmbedNotice=Paste this into the page\nelectrical=Electrical\nellipse=Ellipse\nembedNotice=Paste this once at the end of the page\nenterGroup=Enter Group\nenterName=Enter Name\nenterPropertyName=Enter Property Name\nenterValue=Enter Value\nentityRelation=Entity Relation\nerror=Error\nerrorDeletingFile=Error deleting file\nerrorLoadingFile=Error loading file\nerrorRenamingFile=Error renaming file\nerrorRenamingFileNotFound=Error renaming file. File was not found.\nerrorRenamingFileForbidden=Error renaming file. Insufficient access rights.\nerrorSavingDraft=Error saving draft\nerrorSavingFile=Error saving file\nerrorSavingFileUnknown=Error authorizing with Google's servers. Please refresh the page to re-attempt.\nerrorSavingFileForbidden=Error saving file. Insufficient access rights.\nerrorSavingFileNameConflict=Could not save diagram. Current page already contains file named '{1}'.\nerrorSavingFileNotFound=Error saving file. File was not found.\nerrorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.\nerrorSavingFileSessionTimeout=Your session has ended. Please <a target='_blank' href='{1}'>{2}</a> and return to this tab to try to save again.\nerrorSendingFeedback=Error sending feedback.\nerrorUpdatingPreview=Error updating preview.\nexit=Exit\nexitGroup=Exit Group\nexpand=Expand\nexport=Export\nexporting=Exporting\nexportAs=Export as\nexportOptionsDisabled=Export options disabled\nexportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.\nexternalChanges=External Changes\nextras=Extras\nfacebook=Facebook\nfailedToSaveTryReconnect=Failed to save, trying to reconnect\nfeatureRequest=Feature Request\nfeedback=Feedback\nfeedbackSent=Feedback successfully sent.\nfloorplans=Floorplans\nfile=File\nfileChangedOverwriteDialog=The file has been modified. Do you want to save the file and overwrite those changes?\nfileChangedSyncDialog=The file has been modified. Do you want to synchronize those changes?\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\nfileNearlyFullSeeFaq=File nearly full, please see FAQ\nfileNotFound=File not found\nrepositoryNotFound=Repository not found\nfileNotFoundOrDenied=The file was not found. It does not exist or you do not have read access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\nfileWillBeSavedInAppFolder={1} will be saved in the app folder.\nfill=Fill\nfillColor=Fill Color\nfilterCards=Filter Cards\nfind=Find\nfit=Fit\nfitContainer=Resize Container\nfitIntoContainer=Fit into Container\nfitPage=Fit Page\nfitPageWidth=Fit Page Width\nfitTo=Fit to\nfitToSheetsAcross=sheet(s) across\nfitToBy=by\nfitToSheetsDown=sheet(s) down\nfitTwoPages=Two Pages\nfitWindow=Fit Window\nflip=Flip\nflipH=Flip Horizontal\nflipV=Flip Vertical\nflowchart=Flowchart\nfolder=Folder\nfont=Font\nfontColor=Font Color\nfontFamily=Font Family\nfontSize=Font Size\nforbidden=You are not authorized to access this file\nformat=Format\nformatPanel=Format Panel\nformatted=Formatted\nformattedText=Formatted Text\nformatPng=PNG\nformatGif=GIF\nformatJpg=JPEG\nformatPdf=PDF\nformatSql=SQL\nformatSvg=SVG\nformatHtmlEmbedded=HTML\nformatSvgEmbedded=SVG (with XML)\nformatVsdx=VSDX\nformatVssx=VSSX\nformatXmlPlain=XML (Plain)\nformatXml=XML\nforum=Discussion/Help Forums\nfromTemplate=From Template\nfromTemplateUrl=From Template URL\nfromText=From Text\nfromUrl=From URL\nfromThisPage=From this page\nfullscreen=Fullscreen\ngap=Gap\ngcp=GCP\ngeneral=General\ngithub=GitHub\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\ngradient=Gradient\ngradientColor=Color\ngrid=Grid\ngridColor=Grid Color\ngridSize=Grid Size\ngroup=Group\nguides=Guides\nhateApp=I hate draw.io\nheading=Heading\nheight=Height\nhelp=Help\nhelpTranslate=Help us translate this application\nhide=Hide\nhideIt=Hide {1}\nhidden=Hidden\nhome=Home\nhorizontal=Horizontal\nhorizontalFlow=Horizontal Flow\nhorizontalTree=Horizontal Tree\nhowTranslate=How good is the translation in your language?\nhtml=HTML\nhtmlText=HTML Text\nid=ID\niframe=IFrame\nignore=Ignore\nimage=Image\nimageUrl=Image URL\nimages=Images\nimagePreviewError=This image couldn't be loaded for preview. Please check the URL.\nimageTooBig=Image too big\nimgur=Imgur\nimport=Import\nimportFrom=Import from\nincludeCopyOfMyDiagram=Include a copy of my diagram\nincreaseIndent=Increase Indent\ndecreaseIndent=Decrease Indent\ninsert=Insert\ninsertColumnBefore=Insert Column Left\ninsertColumnAfter=Insert Column Right\ninsertEllipse=Insert Ellipse\ninsertImage=Insert Image\ninsertHorizontalRule=Insert Horizontal Rule\ninsertLink=Insert Link\ninsertPage=Insert Page\ninsertRectangle=Insert Rectangle\ninsertRhombus=Insert Rhombus\ninsertRowBefore=Insert Row Above\ninsertRowAfter=Insert Row After\ninsertText=Insert Text\ninserting=Inserting\ninvalidFilename=Diagram names must not contain the following characters: / | : ; { } < > & + ? = \"\ninvalidLicenseSeeThisPage=Your license is invalid, please see this <a target=\"_blank\" href=\"https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin\">page</a>.\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\nlayers=Layers\nlandscape=Landscape\nlanguage=Language\nleanMapping=Lean Mapping\nlastChange=Last change {1} ago\nlessThanAMinute=less than a minute\nlicensingError=Licensing Error\nlicenseHasExpired=The license for {1} has expired on {2}. Click here.\nlicenseWillExpire=The license for {1} will expire on {2}. Click here.\nlineJumps=Line jumps\nlinkAccountRequired=If the diagram is not public a Google account is required to view the link.\nlinkText=Link Text\nlist=List\nminute=minute\nminutes=minutes\nhours=hours\ndays=days\nmonths=months\nyears=years\nrestartForChangeRequired=Changes will take effect after page refresh.\nlaneColor=Lanecolor\nlastModified=Last modified\nlayout=Layout\nleft=Left\nleftAlign=Left Align\nleftToRight=Left to right\nlibraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.\nlightbox=Lightbox\nline=Line\nlineend=Line end\nlineheight=Line Height\nlinestart=Line start\nlinewidth=Linewidth\nlink=Link\nlinks=Links\nloading=Loading\nlockUnlock=Lock/Unlock\nloggedOut=Logged Out\nlogIn=log in\nloveIt=I love {1}\nlucidchart=Lucidchart\nmaps=Maps\nmathematicalTypesetting=Mathematical Typesetting\nmakeCopy=Make a Copy\nmanual=Manual\nmicrosoftExcel=Microsoft Excel\nmicrosoftPowerPoint=Microsoft PowerPoint\nmicrosoftWord=Microsoft Word\nmiddle=Middle\nminimal=Minimal\nmisc=Misc\nmockups=Mockups\nmodificationDate=Modification date\nmodifiedBy=Modified by\nmore=More\nmoreResults=More Results\nmoreShapes=More Shapes\nmove=Move\nmoveToFolder=Move to Folder\nmoving=Moving\nmoveSelectionTo=Move selection to {1}\nname=Name\nnavigation=Navigation\nnetwork=Network\nnetworking=Networking\nnew=New\nnewLibrary=New Library\nnextPage=Next Page\nno=No\nnoPickFolder=No, pick folder\nnoAttachments=No attachments found\nnoColor=No Color\nnoFiles=No Files\nnoFileSelected=No file selected\nnoLibraries=No libraries found\nnoMoreResults=No more results\nnone=None\nnoOtherViewers=No other viewers\nnoPlugins=No plugins\nnoPreview=No preview\nnoResponse=No response from server\nnoResultsFor=No results for '{1}'\nnoRevisions=No revisions\nnoSearchResults=No search results found\nnoPageContentOrNotSaved=No anchors found on this page or it hasn't been saved yet\nnormal=Normal\nnorth=North\nnotADiagramFile=Not a diagram file\nnotALibraryFile=Not a library file\nnotAvailable=Not available\nnotAUtf8File=Not a UTF-8 file\nnotConnected=Not connected\nnote=Note\nnotUsingService=Not using {1}?\nnumberedList=Numbered list\noffline=Offline\nok=OK\noneDrive=OneDrive\nonline=Online\nopacity=Opacity\nopen=Open\nopenArrow=Open Arrow\nopenExistingDiagram=Open Existing Diagram\nopenFile=Open File\nopenFrom=Open from\nopenLibrary=Open Library\nopenLibraryFrom=Open Library from\nopenLink=Open Link\nopenInNewWindow=Open in New Window\nopenInThisWindow=Open in This Window\nopenIt=Open {1}\nopenRecent=Open Recent\nopenSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy\noptions=Options\norganic=Organic\northogonal=Orthogonal\notherViewer=other viewer\notherViewers=other viewers\noutline=Outline\noval=Oval\npage=Page\npageContent=Page Content\npageNotFound=Page not found\npageWithNumber=Page-{1}\npages=Pages\npageView=Page View\npageSetup=Page Setup\npageScale=Page Scale\npan=Pan\npanTooltip=Space+Drag to pan\npaperSize=Paper Size\npattern=Pattern\npaste=Paste\npasteHere=Paste here\npasteSize=Paste Size\npasteStyle=Paste Style\nperimeter=Perimeter\npermissionAnyone=Anyone can edit\npermissionAuthor=Owner and admins can edit\npickFolder=Pick a folder\npickLibraryDialogTitle=Select Library\npublicDiagramUrl=Public URL of the diagram\nplaceholders=Placeholders\nplantUml=PlantUML\nplugins=Plugins\npluginUrl=Plugin URL\npluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n\nplusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).\nportrait=Portrait\nposition=Position\nposterPrint=Poster Print\npreferences=Preferences\npreview=Preview\npreviousPage=Previous Page\nprint=Print\nprintAllPages=Print All Pages\nprocEng=Proc. Eng.\nproject=Project\npriority=Priority\nproperties=Properties\npublish=Publish\nquickStart=Quick Start Video\nrack=Rack\nradialTree=Radial Tree\nreadOnly=Read-only\nreconnecting=Reconnecting\nrecentlyUpdated=Recently Updated\nrecentlyViewed=Recently Viewed\nrectangle=Rectangle\nredirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.\nrealtimeTimeout=It looks like you've made a few changes while offline. We're sorry, these changes cannot be saved.\nredo=Redo\nrefresh=Refresh\nregularExpression=Regular Expression\nrelative=Relative\nrelativeUrlNotAllowed=Relative URL not allowed\nrememberMe=Remember me\nrememberThisSetting=Remember this setting\nremoveFormat=Clear Formatting\nremoveFromGroup=Remove from Group\nremoveIt=Remove {1}\nremoveWaypoint=Remove Waypoint\nrename=Rename\nrenamed=Renamed\nrenameIt=Rename {1}\nrenaming=Renaming\nreplace=Replace\nreplaceIt={1} already exists. Do you want to replace it?\nreplaceExistingDrawing=Replace existing drawing\nrequired=required\nreset=Reset\nresetView=Reset View\nresize=Resize\nresizeLargeImages=Do you want to resize large images to make the application run faster?\nretina=Retina\nresponsive=Responsive\nrestore=Restore\nrestoring=Restoring\nretryingIn=Retrying in {1} second(s)\nretryingLoad=Load failed. Retrying...\nretryingLogin=Login time out. Retrying...\nreverse=Reverse\nrevision=Revision\nrevisionHistory=Revision History\nrhombus=Rhombus\nright=Right\nrightAlign=Right Align\nrightToLeft=Right to left\nrotate=Rotate\nrotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees\nrotation=Rotation\nrounded=Rounded\nsave=Save\nsaveAndExit=Save & Exit\nsaveAs=Save as\nsaveAsXmlFile=Save as XML file?\nsaved=Saved\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\nsaving=Saving\nscratchpad=Scratchpad\nscrollbars=Scrollbars\nsearch=Search\nsearchShapes=Search Shapes\nselectAll=Select All\nselectionOnly=Selection Only\nselectCard=Select Card\nselectEdges=Select Edges\nselectFile=Select File\nselectFolder=Select Folder\nselectFont=Select Font\nselectNone=Select None\nselectTemplate=Select Template\nselectVertices=Select Vertices\nsendMessage=Send\nsendYourFeedbackToDrawIo=Send your feedback to draw.io\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save. \nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareLink=Link for shared editing\nsharp=Sharp\nshow=Show\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsize=Size\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\nsysml=SysML\ntags=Tags\ntable=Table\ntables=Tables\ntakeOver=Take Over\ntargetSpacing=Target Spacing\ntemplate=Template\ntemplates=Templates\ntext=Text\ntextAlignment=Text Alignment\ntextOpacity=Text Opacity\ntheme=Theme\ntimeout=Timeout\ntitle=Title\nto=to\ntoBack=To Back\ntoFront=To Front\ntooltips=Tooltips\ntop=Top\ntopAlign=Top Align\ntopLeft=Top Left\ntopRight=Top Right\ntransparent=Transparent\ntransparentBackground=Transparent Background\ntrello=Trello\ntryAgain=Try again\ntryOpeningViaThisPage=Try opening via this page.\nturn=Rotate shape only by 90°\ntype=Type\ntwitter=Twitter\numl=UML\nunderline=Underline\nundo=Undo\nungroup=Ungroup\nunsavedChanges=Unsaved changes\nunsavedChangesClickHereToSave=Unsaved changes. Click here to save.\nuntitled=Untitled\nuntitledDiagram=Untitled Diagram\nuntitledLayer=Untitled Layer\nuntitledLibrary=Untitled Library\nunknownError=Unknown error\nupdateFile=Update {1}\nupdatingDocument=Updating Document. Please wait...\nupdatingPreview=Updating Preview. Please wait...\nupdatingSelection=Updating Selection. Please wait...\nupload=Upload\nurl=URL\nuseOffline=Use Offline\nuseRootFolder=Use root folder?\nuserManual=User Manual\nvertical=Vertical\nverticalFlow=Vertical Flow\nverticalTree=Vertical Tree\nview=View\nviewUrl=Link to view: {1}\nvoiceAssistant=Voice Assistant (beta)\nwarning=Warning\nwaypoints=Waypoints\nwest=West\nwidth=Width\nwiki=Wiki\nwordWrap=Word Wrap\nwritingDirection=Writing Direction\nyes=Yes\nyourEmailAddress=Your email address\nzoom=Zoom\nzoomIn=Zoom In\nzoomOut=Zoom Out\nbasic=Basic\nbusinessprocess=Business Processes\ncharts=Charts\nengineering=Engineering\nflowcharts=Flowcharts\ngmdl=Material Design\nmindmaps=Mindmaps\nmockups=Mockups\nnetworkdiagrams=Network Diagrams\nnothingIsSelected=Nothing is selected\nother=Other\nsoftwaredesign=Software Design\nvenndiagrams=Venn Diagrams\nwebEmailOrOther=Web, email or any other internet address\nwebLink=Web Link\nwireframes=Wireframes\nproperty=Property\nvalue=Value\nshowMore=Show More\nshowLess=Show Less\nmyDiagrams=My Diagrams\nallDiagrams=All Diagrams\nrecentlyUsed=Recently used\nlistView=List view\ngridView=Grid view\nresultsFor=Results for '{1}'\n");Graph.prototype.defaultThemes[Graph.prototype.defaultThemeName]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="#ffffff"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#ffffff"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="white"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="#ffffff"/></add></mxStylesheet>').documentElement; +Graph.prototype.defaultThemes.darkTheme=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="#2a2a2a"/><add as="strokeColor" value="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="#2a2a2a"/></add></mxStylesheet>').documentElement;GraphViewer=function(a,b,e){this.init(a,b,e)};mxUtils.extend(GraphViewer,mxEventSource);GraphViewer.prototype.editBlankUrl="https://www.draw.io/";GraphViewer.prototype.imageBaseUrl="https://www.draw.io/";GraphViewer.prototype.toolbarHeight="BackCompat"==document.compatMode?28:30;GraphViewer.prototype.lightboxChrome=!0;GraphViewer.prototype.lightboxZIndex=999;GraphViewer.prototype.toolbarZIndex=999;GraphViewer.prototype.autoFit=!0;GraphViewer.prototype.allowZoomIn=!1; +GraphViewer.prototype.showTitleAsTooltip=!1;GraphViewer.prototype.checkVisibleState=!0;GraphViewer.prototype.minHeight=28;GraphViewer.prototype.minWidth=100; +GraphViewer.prototype.init=function(a,b,e){this.graphConfig=null!=e?e:{};this.autoFit=null!=this.graphConfig["auto-fit"]?this.graphConfig["auto-fit"]:this.autoFit;this.allowZoomIn=null!=this.graphConfig["allow-zoom-in"]?this.graphConfig["allow-zoom-in"]:this.allowZoomIn;this.checkVisibleState=null!=this.graphConfig["check-visible-state"]?this.graphConfig["check-visible-state"]:this.checkVisibleState;this.toolbarItems=null!=this.graphConfig.toolbar?this.graphConfig.toolbar.split(" "):[];this.zoomEnabled= +0<=mxUtils.indexOf(this.toolbarItems,"zoom");this.layersEnabled=0<=mxUtils.indexOf(this.toolbarItems,"layers");this.lightboxEnabled=0<=mxUtils.indexOf(this.toolbarItems,"lightbox");this.lightboxClickEnabled=0!=this.graphConfig.lightbox;this.initialWidth=null!=a?a.style.width:null;this.widthIsEmpty=null!=this.initialWidth?""==this.initialWidth:!0;this.currentPage=parseInt(this.graphConfig.page)||0;this.editor=null;"inline"==this.graphConfig["toolbar-position"]&&(this.minHeight+=this.toolbarHeight); +if(null!=b&&(this.xmlDocument=b.ownerDocument,this.xmlNode=b,this.xml=mxUtils.getXml(b),null!=a)){var c=mxUtils.bind(this,function(){this.graph=new Graph(a);this.graph.transparentBackground=!1;this.graphConfig.move&&(this.graph.isMoveCellsEvent=function(a){return!0});this.lightboxClickEnabled&&(a.style.cursor="pointer");this.editor=new Editor(!0,null,null,this.graph);this.editor.editBlankUrl=this.editBlankUrl;this.graph.lightbox=!0;this.graph.centerZoom=!1;this.graph.autoExtend=!1;this.graph.autoScroll= +!1;this.graph.setEnabled(!1);1==this.graphConfig["toolbar-nohide"]&&(this.editor.defaultGraphOverflow="visible");this.xmlNode=this.editor.extractGraphModel(this.xmlNode,!0);var c=this;this.graph.getImageFromBundles=function(a){return c.getImageUrl(a)};mxClient.IS_SVG&&this.editor.graph.addSvgShadow(this.graph.view.canvas.ownerSVGElement,null,!0);if("mxfile"==b.nodeName){var e=b.getElementsByTagName("diagram");if(0<e.length){var k=this.graph.getGlobalVariable,c=this;this.graph.getGlobalVariable=function(a){var b= +e[c.currentPage];return"page"==a?b.getAttribute("name")||"Page-"+(c.currentPage+1):"pagenumber"==a?c.currentPage+1:k.apply(this,arguments)}}}this.diagrams=[];var m=null;this.selectPage=function(a){this.currentPage=mxUtils.mod(a,this.diagrams.length);this.updateGraphXml(mxUtils.parseXml(this.graph.decompress(mxUtils.getTextContent(this.diagrams[this.currentPage]))).documentElement)};this.selectPageById=function(a){for(var b=!1,c=0;c<this.diagrams.length;c++)if(this.diagrams[c].getAttribute("id")== +a){this.selectPage(c);b=!0;break}return b};var d=mxUtils.bind(this,function(){if(null==this.xmlNode||"mxfile"!=this.xmlNode.nodeName)this.diagrams=[];this.xmlNode!=m&&(this.diagrams=this.xmlNode.getElementsByTagName("diagram"),m=this.xmlNode)});this.addListener("xmlNodeChanged",d);d();urlParams.page=c.currentPage;this.graph.getModel().beginUpdate();try{urlParams.nav=0!=this.graphConfig.nav?"1":"0",this.editor.setGraphXml(this.xmlNode),this.graph.border=null!=this.graphConfig.border?this.graphConfig.border: +8,this.graph.view.scale=this.graphConfig.zoom||1}finally{this.graph.getModel().endUpdate()}this.graph.panningHandler.useLeftButtonForPanning=!0;this.graph.panningHandler.isForcePanningEvent=function(a){return!mxEvent.isPopupTrigger(a.getEvent())&&"auto"==this.graph.container.style.overflow};this.graph.panningHandler.usePopupTrigger=!1;this.graph.panningHandler.pinchEnabled=!1;this.graph.panningHandler.ignoreCell=!0;this.graph.setPanning(!1);this.addSizeHandler();this.showLayers(this.graph);this.addClickHandler(this.graph); +this.graph.setTooltips(0!=this.graphConfig.tooltips);this.graph.initialViewState={translate:this.graph.view.translate.clone(),scale:this.graph.view.scale};c=this;this.graph.customLinkClicked=function(a){var b=!0;if("data:page/id,"==a.substring(0,13)){var d=a.indexOf(",");c.selectPageById(a.substring(d+1))||(b=!1,alert(mxResources.get("pageNotFound")||"Page not found"))}else this.handleCustomLink(a);return b};null!=this.graphConfig.toolbar?this.addToolbar():null!=this.graphConfig.title&&this.showTitleAsTooltip&& +a.setAttribute("title",this.graphConfig.title);this.fireEvent(new mxEventObject("render"))});e=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;if(this.checkVisibleState&&0==a.offsetWidth&&"undefined"!==typeof e){var k=this.getObservableParent(a),m=new e(mxUtils.bind(this,function(b){0<a.offsetWidth&&(m.disconnect(),c())}));m.observe(k,{attributes:!0})}else c()}}; +GraphViewer.prototype.getObservableParent=function(a){for(a=a.parentNode;a!=document.body&&null!=a.parentNode&&"none"!==mxUtils.getCurrentStyle(a).display;)a=a.parentNode;return a};GraphViewer.prototype.getImageUrl=function(a){null!=a&&"http://"!=a.substring(0,7)&&"https://"!=a.substring(0,8)&&"data:image"!=a.substring(0,10)&&("/"==a.charAt(0)&&(a=a.substring(1,a.length)),a=this.imageBaseUrl+a);return a}; +GraphViewer.prototype.setXmlNode=function(a){this.xmlDocument=a.ownerDocument;this.xml=mxUtils.getXml(a);this.xmlNode=a;this.updateGraphXml(a);this.fireEvent(new mxEventObject("xmlNodeChanged"))};GraphViewer.prototype.setFileNode=function(a){null==this.xmlNode&&(this.xmlDocument=a.ownerDocument,this.xml=mxUtils.getXml(a),this.xmlNode=a);this.setGraphXml(a)};GraphViewer.prototype.updateGraphXml=function(a){this.setGraphXml(a);this.fireEvent(new mxEventObject("graphChanged"))}; GraphViewer.prototype.setGraphXml=function(a){null!=this.graph&&(this.graph.view.translate=new mxPoint,this.graph.view.scale=1,this.graph.getModel().clear(),this.editor.setGraphXml(a),this.widthIsEmpty?(this.graph.container.style.width="",this.graph.container.style.height=""):this.graph.container.style.width=this.initialWidth,this.positionGraph(),this.graph.initialViewState={translate:this.graph.view.translate.clone(),scale:this.graph.view.scale})}; -GraphViewer.prototype.addSizeHandler=function(){var a=this.graph.container,b=this.graph.getGraphBounds(),f=!1;a.style.overflow="hidden";var d=mxUtils.bind(this,function(){if(!f){f=!0;var b=this.graph.getGraphBounds();a.style.overflow=a.offsetWidth<=b.width+2*this.graph.border*this.graph.view.scale?"auto":"hidden";if(null!=this.toolbar){var b=a.getBoundingClientRect(),c=mxUtils.getScrollOrigin(document.body),c="relative"===document.body.style.position?document.body.getBoundingClientRect():{left:-c.x, -top:-c.y},b={left:b.left-c.left,top:b.top-c.top,bottom:b.bottom-c.top,right:b.right-c.left};this.toolbar.style.left=b.left+"px";"bottom"==this.graphConfig["toolbar-position"]?this.toolbar.style.top=b.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(this.toolbar.style.width=Math.max(this.minToolbarWidth,a.offsetWidth)+"px",this.toolbar.style.top=b.top+1+"px"):this.toolbar.style.top=b.top+"px"}f=!1}}),k=null,n=!1;this.fitGraph=function(b){var c=a.offsetWidth;c==k||n||(n=!0,this.graph.maxFitScale= -null!=b?b:this.graphConfig.zoom||(this.allowZoomIn?null:1),this.graph.fit(null,null,null,null,!1,!0),this.graph.maxFitScale=null,b=this.graph.getGraphBounds(),this.updateContainerHeight(a,b.height+2*this.graph.border+1),this.graph.initialViewState={translate:this.graph.view.translate.clone(),scale:this.graph.view.scale},k=c,window.setTimeout(function(){n=!1},0))};GraphViewer.useResizeSensor&&(mxClient.IS_QUIRKS||9>=document.documentMode?(mxEvent.addListener(window,"resize",d),this.graph.addListener("size", -d)):new ResizeSensor(this.graph.container,d));if(this.graphConfig.resize||(this.zoomEnabled||!this.autoFit)&&0!=this.graphConfig.resize)this.graph.minimumContainerSize=new mxRectangle(0,0,100,1),this.graph.resizeContainer=!0;else if(this.widthIsEmpty&&this.updateContainerWidth(a,b.width+2*this.graph.border),this.updateContainerHeight(a,b.height+2*this.graph.border+1),!this.zoomEnabled&&this.autoFit){var p=k=null,d=mxUtils.bind(this,function(){window.clearTimeout(p);n||(p=window.setTimeout(mxUtils.bind(this, -this.fitGraph),100))});GraphViewer.useResizeSensor&&(mxClient.IS_QUIRKS||9>=document.documentMode?mxEvent.addListener(window,"resize",d):new ResizeSensor(this.graph.container,d))}else mxClient.IS_QUIRKS||9>=document.documentMode||this.graph.addListener("size",d);var q=mxUtils.bind(this,function(){var d=a.style.minWidth;this.widthIsEmpty&&(a.style.minWidth="100%");if(0<a.offsetWidth&&(this.allowZoomIn||b.width+2*this.graph.border>a.offsetWidth||b.height+2*this.graph.border>this.graphConfig["max-height"])){var c= -null;null!=this.graphConfig["max-height"]&&(c=this.graphConfig["max-height"]/(b.height+2*this.graph.border));this.fitGraph(c)}else this.graph.view.setTranslate(Math.floor((this.graph.border-b.x)/this.graph.view.scale),Math.floor((this.graph.border-b.y)/this.graph.view.scale)),k=a.offsetWidth;a.style.minWidth=d});mxClient.IS_QUIRKS||8==document.documentMode?window.setTimeout(q,0):q();this.positionGraph=function(){b=this.graph.getGraphBounds();k=null;q()}}; -GraphViewer.prototype.updateContainerWidth=function(a,b){a.style.width=b+"px"};GraphViewer.prototype.updateContainerHeight=function(a,b){if(this.zoomEnabled||!this.autoFit||"BackCompat"==document.compatMode||mxClient.IS_QUIRKS||8==document.documentMode)a.style.height=b+"px"}; -GraphViewer.prototype.showLayers=function(a,b){var f=this.graphConfig.layers;if(null!=f||null!=b)if(f=null!=f?f.split(" "):null,null!=b||0<f.length){var d=null!=b?b.getModel():null,k=a.getModel();k.beginUpdate();try{for(var n=k.getChildCount(k.root),p=0;p<n;p++)k.setVisible(k.getChildAt(k.root,p),null!=b?d.isVisible(d.getChildAt(d.root,p)):!1);if(null==d)for(p=0;p<f.length;p++)k.setVisible(k.getChildAt(k.root,parseInt(f[p])),!0)}finally{k.endUpdate()}}}; -GraphViewer.prototype.addToolbar=function(){function a(a,b,c,d){var h=document.createElement("div");h.style.borderRight="1px solid #d0d0d0";h.style.padding="3px 6px 3px 6px";mxEvent.addListener(h,"click",a);null!=c&&h.setAttribute("title",c);h.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("src",b);null==d||d?(mxEvent.addListener(h,"mouseenter",function(){h.style.backgroundColor="#ddd"}),mxEvent.addListener(h,"mouseleave", -function(){h.style.backgroundColor="#eee"}),mxUtils.setOpacity(a,60),h.style.cursor="pointer"):mxUtils.setOpacity(h,30);h.appendChild(a);f.appendChild(h);g++;return h}var b=this.graph.container;"bottom"==this.graphConfig["toolbar-position"]?b.style.marginBottom=this.toolbarHeight+"px":"inline"!=this.graphConfig["toolbar-position"]&&(b.style.marginTop=this.toolbarHeight+"px");var f=b.ownerDocument.createElement("div");f.style.position="absolute";f.style.overflow="hidden";f.style.boxSizing="border-box"; -f.style.whiteSpace="nowrap";f.style.zIndex=this.toolbarZIndex;f.style.backgroundColor="#eee";f.style.height=this.toolbarHeight+"px";this.toolbar=f;if("inline"==this.graphConfig["toolbar-position"]){mxUtils.setPrefixedStyle(f.style,"transition","opacity 100ms ease-in-out");mxUtils.setOpacity(f,30);var d=null,k=null,n=mxUtils.bind(this,function(a){null!=d&&(window.clearTimeout(d),fadeThead=null);null!=k&&(window.clearTimeout(k),fadeThead2=null);d=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(f, -0);d=null;k=window.setTimeout(mxUtils.bind(this,function(){f.style.display="none";k=null}),100)}),a||200)}),p=mxUtils.bind(this,function(a){null!=d&&(window.clearTimeout(d),fadeThead=null);null!=k&&(window.clearTimeout(k),fadeThead2=null);f.style.display="";mxUtils.setOpacity(f,a||30)});mxEvent.addListener(this.graph.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||(p(30),n())}));mxEvent.addListener(f,mxClient.IS_POINTER?"pointermove": -"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(f,"mouseenter",mxUtils.bind(this,function(a){p(100)}));mxEvent.addListener(f,"mousemove",mxUtils.bind(this,function(a){p(100);mxEvent.consume(a)}));mxEvent.addListener(f,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||p(30)}));var q=this.graph,w=q.getTolerance();q.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(a,b){this.startX=b.getGraphX();this.startY=b.getGraphY();this.scrollLeft= -q.container.scrollLeft;this.scrollTop=q.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(a,b){mxEvent.isTouchEvent(b.getEvent())&&Math.abs(this.scrollLeft-q.container.scrollLeft)<w&&Math.abs(this.scrollTop-q.container.scrollTop)<w&&Math.abs(this.startX-b.getGraphX())<w&&Math.abs(this.startY-b.getGraphY())<w&&(0<parseFloat(f.style.opacity||0)?n():p(30))}})}for(var c=this.toolbarItems,g=0,h=null,l=null,t=0;t<c.length;t++){var m=c[t];if("pages"==m){l=b.ownerDocument.createElement("div"); -l.style.cssText="display:inline-block;position:relative;padding:3px 4px 0 4px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;";mxUtils.setOpacity(l,70);var r=a(mxUtils.bind(this,function(){this.selectPage(this.currentPage-1)}),Editor.previousImage,mxResources.get("previousPage")||"Previous Page");r.style.borderRightStyle="none";r.style.paddingLeft="0px";r.style.paddingRight="0px";f.appendChild(l);var x=a(mxUtils.bind(this,function(){this.selectPage(this.currentPage+ -1)}),Editor.nextImage,mxResources.get("nextPage")||"Next Page");x.style.paddingLeft="0px";x.style.paddingRight="0px";m=mxUtils.bind(this,function(){l.innerHTML="";mxUtils.write(l,this.currentPage+1+" / "+this.diagrams.length);l.style.display=1<this.diagrams.length?"inline-block":"none";r.style.display=l.style.display;x.style.display=l.style.display});this.addListener("graphChanged",m);m()}else if("zoom"==m)this.zoomEnabled&&(a(mxUtils.bind(this,function(){this.graph.zoomOut()}),Editor.zoomOutImage, -mxResources.get("zoomOut")||"Zoom Out"),a(mxUtils.bind(this,function(){this.graph.zoomIn()}),Editor.zoomInImage,mxResources.get("zoomIn")||"Zoom In"),a(mxUtils.bind(this,function(){this.graph.view.scaleAndTranslate(this.graph.initialViewState.scale,this.graph.initialViewState.translate.x,this.graph.initialViewState.translate.y)}),Editor.zoomFitImage,mxResources.get("fit")||"Fit"));else if("layers"==m){if(this.layersEnabled){var v=this.graph.getModel(),D=a(mxUtils.bind(this,function(a){if(null!=h)h.parentNode.removeChild(h), -h=null;else{h=this.graph.createLayersDialog();mxEvent.addListener(h,"mouseleave",function(){h.parentNode.removeChild(h);h=null});a=D.getBoundingClientRect();h.style.width="140px";h.style.padding="2px 0px 2px 0px";h.style.border="1px solid #d0d0d0";h.style.backgroundColor="#eee";h.style.fontFamily="Helvetica Neue,Helvetica,Arial Unicode MS,Arial";h.style.fontSize="11px";h.style.zIndex=this.toolbarZIndex+1;mxUtils.setOpacity(h,80);var b=mxUtils.getDocumentScrollOrigin(document);h.style.left=b.x+a.left+ -"px";h.style.top=b.y+a.bottom+"px";document.body.appendChild(h)}}),Editor.layersImage,mxResources.get("layers")||"Layers");v.addListener(mxEvent.CHANGE,function(){D.style.display=1<v.getChildCount(v.root)?"inline-block":"none"});D.style.display=1<v.getChildCount(v.root)?"inline-block":"none"}}else"lightbox"==m?this.lightboxEnabled&&a(mxUtils.bind(this,function(){this.showLightbox()}),Editor.maximizeImage,mxResources.get("show")||"Show"):null!=this.graphConfig["toolbar-buttons"]&&(m=this.graphConfig["toolbar-buttons"][m], -null!=m&&a(null==m.enabled||m.enabled?m.handler:function(){},m.image,m.title,m.enabled))}null!=this.graph.minimumContainerSize&&(this.graph.minimumContainerSize.width=34*g);null!=this.graphConfig.title&&(c=b.ownerDocument.createElement("div"),c.style.cssText="display:inline-block;position:relative;padding:3px 6px 0 6px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;",c.setAttribute("title",this.graphConfig.title),mxUtils.write(c,this.graphConfig.title),mxUtils.setOpacity(c, -70),f.appendChild(c));this.minToolbarWidth=34*g;var y=b.style.border,c=mxUtils.bind(this,function(){var a=b.getBoundingClientRect(),c=mxUtils.getScrollOrigin(document.body),c="relative"===document.body.style.position?document.body.getBoundingClientRect():{left:-c.x,top:-c.y},a={left:a.left-c.left,top:a.top-c.top,bottom:a.bottom-c.top,right:a.right-c.left};f.style.left=a.left+"px";f.style.width="inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,b.offsetWidth)+"px"; -f.style.border="1px solid #d0d0d0";"bottom"==this.graphConfig["toolbar-position"]?f.style.top=a.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(f.style.marginTop=-this.toolbarHeight+"px",f.style.top=a.top+1+"px"):f.style.top=a.top+"px";"1px solid transparent"==y&&(b.style.border="1px solid #d0d0d0");document.body.appendChild(f);var d=mxUtils.bind(this,function(){1!=this.graphConfig["toolbar-nohide"]&&(null!=f.parentNode&&f.parentNode.removeChild(f),null!=h&&(h.parentNode.removeChild(h), -h=null),b.style.border=y)});mxEvent.addListener(document,"mousemove",function(a){for(a=mxEvent.getSource(a);null!=a;){if(a==b||a==f||a==h)return;a=a.parentNode}d()});mxEvent.addListener(document,"mouseleave",function(a){d()})});mxEvent.addListener(b,"mouseenter",c)}; -GraphViewer.prototype.addClickHandler=function(a,b){a.linkPolicy=this.graphConfig.target||a.linkPolicy;a.addClickHandler(this.graphConfig.highlight,mxUtils.bind(this,function(f,d){if(null==d){var k=mxEvent.getSource(f);"a"==k.nodeName.toLowerCase()&&(d=k.getAttribute("href"))}null!=b?null==d||a.isExternalProtocol(d)||a.isBlankLink(d)||window.setTimeout(function(){b.destroy()},0):null!=d&&null==b&&a.isCustomLink(d)&&(mxEvent.isTouchEvent(f)||!mxEvent.isPopupTrigger(f))&&a.customLinkClicked(d)&&mxEvent.consume(f)}), +GraphViewer.prototype.addSizeHandler=function(){var a=this.graph.container,b=this.graph.getGraphBounds(),e=!1;a.style.overflow=1!=this.graphConfig["toolbar-nohide"]?"hidden":"visible";var c=mxUtils.bind(this,function(){if(!e){e=!0;var b=this.graph.getGraphBounds();a.style.overflow=1!=this.graphConfig["toolbar-nohide"]?a.offsetWidth<=b.width+2*this.graph.border*this.graph.view.scale?"auto":"hidden":"visible";if(null!=this.toolbar&&1!=this.graphConfig["toolbar-nohide"]){var b=a.getBoundingClientRect(), +c=mxUtils.getScrollOrigin(document.body),c="relative"===document.body.style.position?document.body.getBoundingClientRect():{left:-c.x,top:-c.y},b={left:b.left-c.left,top:b.top-c.top,bottom:b.bottom-c.top,right:b.right-c.left};this.toolbar.style.left=b.left+"px";"bottom"==this.graphConfig["toolbar-position"]?this.toolbar.style.top=b.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(this.toolbar.style.width=Math.max(this.minToolbarWidth,a.offsetWidth)+"px",this.toolbar.style.top=b.top+1+ +"px"):this.toolbar.style.top=b.top+"px"}e=!1}}),k=null,m=!1;this.fitGraph=function(b){var c=a.offsetWidth;c==k||m||(m=!0,this.graph.maxFitScale=null!=b?b:this.graphConfig.zoom||(this.allowZoomIn?null:1),this.graph.fit(null,null,null,null,!1,!0),this.graph.maxFitScale=null,b=this.graph.getGraphBounds(),this.updateContainerHeight(a,Math.max(this.minHeight,b.height+2*this.graph.border+1)),this.graph.initialViewState={translate:this.graph.view.translate.clone(),scale:this.graph.view.scale},k=c,window.setTimeout(function(){m= +!1},0))};GraphViewer.useResizeSensor&&(mxClient.IS_QUIRKS||9>=document.documentMode?(mxEvent.addListener(window,"resize",c),this.graph.addListener("size",c)):new ResizeSensor(this.graph.container,c));if(this.graphConfig.resize||(this.zoomEnabled||!this.autoFit)&&0!=this.graphConfig.resize)this.graph.minimumContainerSize=new mxRectangle(0,0,this.minWidth,this.minHeight),this.graph.resizeContainer=!0;else if(this.widthIsEmpty&&this.updateContainerWidth(a,b.width+2*this.graph.border),this.updateContainerHeight(a, +Math.max(this.minHeight,b.height+2*this.graph.border+1)),!this.zoomEnabled&&this.autoFit){var q=k=null,c=mxUtils.bind(this,function(){window.clearTimeout(q);m||(q=window.setTimeout(mxUtils.bind(this,this.fitGraph),100))});GraphViewer.useResizeSensor&&(mxClient.IS_QUIRKS||9>=document.documentMode?mxEvent.addListener(window,"resize",c):new ResizeSensor(this.graph.container,c))}else mxClient.IS_QUIRKS||9>=document.documentMode||this.graph.addListener("size",c);var r=mxUtils.bind(this,function(){var c= +a.style.minWidth;this.widthIsEmpty&&(a.style.minWidth="100%");if(0<a.offsetWidth&&(this.allowZoomIn||b.width+2*this.graph.border>a.offsetWidth||b.height+2*this.graph.border>this.graphConfig["max-height"])){var e=null;null!=this.graphConfig["max-height"]&&(e=this.graphConfig["max-height"]/(b.height+2*this.graph.border));this.fitGraph(e)}else this.graph.view.setTranslate(Math.floor((this.graph.border-b.x)/this.graph.view.scale),Math.floor((this.graph.border-b.y)/this.graph.view.scale)),k=a.offsetWidth; +a.style.minWidth=c});mxClient.IS_QUIRKS||8==document.documentMode?window.setTimeout(r,0):r();this.positionGraph=function(){b=this.graph.getGraphBounds();k=null;r()}};GraphViewer.prototype.updateContainerWidth=function(a,b){a.style.width=b+"px"};GraphViewer.prototype.updateContainerHeight=function(a,b){if(this.zoomEnabled||!this.autoFit||"BackCompat"==document.compatMode||mxClient.IS_QUIRKS||8==document.documentMode)a.style.height=b+"px"}; +GraphViewer.prototype.showLayers=function(a,b){var e=this.graphConfig.layers;if(null!=e||null!=b)if(e=null!=e?e.split(" "):null,null!=b||0<e.length){var c=null!=b?b.getModel():null,k=a.getModel();k.beginUpdate();try{for(var m=k.getChildCount(k.root),q=0;q<m;q++)k.setVisible(k.getChildAt(k.root,q),null!=b?c.isVisible(c.getChildAt(c.root,q)):!1);if(null==c)for(q=0;q<e.length;q++)k.setVisible(k.getChildAt(k.root,parseInt(e[q])),!0)}finally{k.endUpdate()}}}; +GraphViewer.prototype.addToolbar=function(){function a(a,b,c,f){var g=document.createElement("div");g.style.borderRight="1px solid #d0d0d0";g.style.padding="3px 6px 3px 6px";mxEvent.addListener(g,"click",a);null!=c&&g.setAttribute("title",c);g.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("src",b);null==f||f?(mxEvent.addListener(g,"mouseenter",function(){g.style.backgroundColor="#ddd"}),mxEvent.addListener(g,"mouseleave", +function(){g.style.backgroundColor="#eee"}),mxUtils.setOpacity(a,60),g.style.cursor="pointer"):mxUtils.setOpacity(g,30);g.appendChild(a);e.appendChild(g);d++;return g}var b=this.graph.container;"bottom"==this.graphConfig["toolbar-position"]?b.style.marginBottom=this.toolbarHeight+"px":"inline"!=this.graphConfig["toolbar-position"]&&(b.style.marginTop=this.toolbarHeight+"px");var e=b.ownerDocument.createElement("div");e.style.position="absolute";e.style.overflow="hidden";e.style.boxSizing="border-box"; +e.style.whiteSpace="nowrap";e.style.textAlign="left";e.style.zIndex=this.toolbarZIndex;e.style.backgroundColor="#eee";e.style.height=this.toolbarHeight+"px";this.toolbar=e;if("inline"==this.graphConfig["toolbar-position"]){mxUtils.setPrefixedStyle(e.style,"transition","opacity 100ms ease-in-out");mxUtils.setOpacity(e,30);var c=null,k=null,m=mxUtils.bind(this,function(a){null!=c&&(window.clearTimeout(c),fadeThead=null);null!=k&&(window.clearTimeout(k),fadeThead2=null);c=window.setTimeout(mxUtils.bind(this, +function(){mxUtils.setOpacity(e,0);c=null;k=window.setTimeout(mxUtils.bind(this,function(){e.style.display="none";k=null}),100)}),a||200)}),q=mxUtils.bind(this,function(a){null!=c&&(window.clearTimeout(c),fadeThead=null);null!=k&&(window.clearTimeout(k),fadeThead2=null);e.style.display="";mxUtils.setOpacity(e,a||30)});mxEvent.addListener(this.graph.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||(q(30),m())}));mxEvent.addListener(e,mxClient.IS_POINTER? +"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(e,"mouseenter",mxUtils.bind(this,function(a){q(100)}));mxEvent.addListener(e,"mousemove",mxUtils.bind(this,function(a){q(100);mxEvent.consume(a)}));mxEvent.addListener(e,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||q(30)}));var r=this.graph,v=r.getTolerance();r.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(a,b){this.startX=b.getGraphX();this.startY=b.getGraphY(); +this.scrollLeft=r.container.scrollLeft;this.scrollTop=r.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(a,b){mxEvent.isTouchEvent(b.getEvent())&&Math.abs(this.scrollLeft-r.container.scrollLeft)<v&&Math.abs(this.scrollTop-r.container.scrollTop)<v&&Math.abs(this.startX-b.getGraphX())<v&&Math.abs(this.startY-b.getGraphY())<v&&(0<parseFloat(e.style.opacity||0)?m():q(30))}})}for(var z=this.toolbarItems,d=0,f=null,l=null,n=0;n<z.length;n++){var g=z[n];if("pages"==g){l=b.ownerDocument.createElement("div"); +l.style.cssText="display:inline-block;position:relative;padding:3px 4px 0 4px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;";mxUtils.setOpacity(l,70);var p=a(mxUtils.bind(this,function(){this.selectPage(this.currentPage-1)}),Editor.previousImage,mxResources.get("previousPage")||"Previous Page");p.style.borderRightStyle="none";p.style.paddingLeft="0px";p.style.paddingRight="0px";e.appendChild(l);var B=a(mxUtils.bind(this,function(){this.selectPage(this.currentPage+ +1)}),Editor.nextImage,mxResources.get("nextPage")||"Next Page");B.style.paddingLeft="0px";B.style.paddingRight="0px";g=mxUtils.bind(this,function(){l.innerHTML="";mxUtils.write(l,this.currentPage+1+" / "+this.diagrams.length);l.style.display=1<this.diagrams.length?"inline-block":"none";p.style.display=l.style.display;B.style.display=l.style.display});this.addListener("graphChanged",g);g()}else if("zoom"==g)this.zoomEnabled&&(a(mxUtils.bind(this,function(){this.graph.zoomOut()}),Editor.zoomOutImage, +mxResources.get("zoomOut")||"Zoom Out"),a(mxUtils.bind(this,function(){this.graph.zoomIn()}),Editor.zoomInImage,mxResources.get("zoomIn")||"Zoom In"),a(mxUtils.bind(this,function(){this.graph.view.scaleAndTranslate(this.graph.initialViewState.scale,this.graph.initialViewState.translate.x,this.graph.initialViewState.translate.y)}),Editor.zoomFitImage,mxResources.get("fit")||"Fit"));else if("layers"==g){if(this.layersEnabled){var x=this.graph.getModel(),t=a(mxUtils.bind(this,function(a){if(null!=f)f.parentNode.removeChild(f), +f=null;else{f=this.graph.createLayersDialog();mxEvent.addListener(f,"mouseleave",function(){f.parentNode.removeChild(f);f=null});a=t.getBoundingClientRect();f.style.width="140px";f.style.padding="2px 0px 2px 0px";f.style.border="1px solid #d0d0d0";f.style.backgroundColor="#eee";f.style.fontFamily="Helvetica Neue,Helvetica,Arial Unicode MS,Arial";f.style.fontSize="11px";f.style.zIndex=this.toolbarZIndex+1;mxUtils.setOpacity(f,80);var b=mxUtils.getDocumentScrollOrigin(document);f.style.left=b.x+a.left+ +"px";f.style.top=b.y+a.bottom+"px";document.body.appendChild(f)}}),Editor.layersImage,mxResources.get("layers")||"Layers");x.addListener(mxEvent.CHANGE,function(){t.style.display=1<x.getChildCount(x.root)?"inline-block":"none"});t.style.display=1<x.getChildCount(x.root)?"inline-block":"none"}}else"lightbox"==g?this.lightboxEnabled&&a(mxUtils.bind(this,function(){this.showLightbox()}),Editor.maximizeImage,mxResources.get("show")||"Show"):null!=this.graphConfig["toolbar-buttons"]&&(g=this.graphConfig["toolbar-buttons"][g], +null!=g&&a(null==g.enabled||g.enabled?g.handler:function(){},g.image,g.title,g.enabled))}null!=this.graph.minimumContainerSize&&(this.graph.minimumContainerSize.width=34*d);null!=this.graphConfig.title&&(z=b.ownerDocument.createElement("div"),z.style.cssText="display:inline-block;position:relative;padding:3px 6px 0 6px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;",z.setAttribute("title",this.graphConfig.title),mxUtils.write(z,this.graphConfig.title),mxUtils.setOpacity(z, +70),e.appendChild(z));this.minToolbarWidth=34*d;var y=b.style.border,z=mxUtils.bind(this,function(){e.style.width="inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,b.offsetWidth)+"px";e.style.border="1px solid #d0d0d0";if(1!=this.graphConfig["toolbar-nohide"]){var a=b.getBoundingClientRect(),c=mxUtils.getScrollOrigin(document.body),c="relative"===document.body.style.position?document.body.getBoundingClientRect():{left:-c.x,top:-c.y},a={left:a.left-c.left,top:a.top- +c.top,bottom:a.bottom-c.top,right:a.right-c.left};e.style.left=a.left+"px";"bottom"==this.graphConfig["toolbar-position"]?e.style.top=a.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(e.style.marginTop=-this.toolbarHeight+"px",e.style.top=a.top+1+"px"):e.style.top=a.top+"px";"1px solid transparent"==y&&(b.style.border="1px solid #d0d0d0");document.body.appendChild(e);var d=mxUtils.bind(this,function(){null!=e.parentNode&&e.parentNode.removeChild(e);null!=f&&(f.parentNode.removeChild(f), +f=null);b.style.border=y});mxEvent.addListener(document,"mousemove",function(a){for(a=mxEvent.getSource(a);null!=a;){if(a==b||a==e||a==f)return;a=a.parentNode}d()});mxEvent.addListener(document,"mouseleave",function(a){d()})}else e.style.top=-this.toolbarHeight+"px",b.appendChild(e)});1!=this.graphConfig["toolbar-nohide"]?mxEvent.addListener(b,"mouseenter",z):z()}; +GraphViewer.prototype.addClickHandler=function(a,b){a.linkPolicy=this.graphConfig.target||a.linkPolicy;a.addClickHandler(this.graphConfig.highlight,mxUtils.bind(this,function(e,c){if(null==c){var k=mxEvent.getSource(e);"a"==k.nodeName.toLowerCase()&&(c=k.getAttribute("href"))}null!=b?null==c||a.isExternalProtocol(c)||a.isBlankLink(c)||window.setTimeout(function(){b.destroy()},0):null!=c&&null==b&&a.isCustomLink(c)&&(mxEvent.isTouchEvent(e)||!mxEvent.isPopupTrigger(e))&&a.customLinkClicked(c)&&mxEvent.consume(e)}), mxUtils.bind(this,function(a){null!=b||!this.lightboxClickEnabled||mxEvent.isTouchEvent(a)&&0!=this.toolbarItems.length||this.showLightbox()}))}; -GraphViewer.prototype.showLightbox=function(a,b,f){if("open"==this.graphConfig.lightbox||window.self!==window.top)if(null==this.lightboxWindow||this.lightboxWindow.closed){a=null!=a?a:null!=this.graphConfig.editable?this.graphConfig.editable:!0;f={client:1,lightbox:1,target:null!=f?f:"blank"};a&&(f.edit=this.graphConfig.edit||"_blank");if(null!=b?b:1)f.close=1;this.layersEnabled&&(f.layers=1);null!=this.graphConfig&&0!=this.graphConfig.nav&&(f.nav=1);null!=this.graphConfig&&null!=this.graphConfig.highlight&& -(f.highlight=this.graphConfig.highlight.substring(1));null!=this.currentPage&&0<this.currentPage&&(f.page=this.currentPage);"undefined"!==typeof window.postMessage&&(null==document.documentMode||10<=document.documentMode)?null==this.lightboxWindow&&mxEvent.addListener(window,"message",mxUtils.bind(this,function(a){"ready"==a.data&&a.source==this.lightboxWindow&&this.lightboxWindow.postMessage(this.xml,"*")})):f.data=encodeURIComponent(this.xml);a="www.draw.io";"1"==urlParams.dev&&(f.dev="1",f.drawdev= -"1",a="test.draw.io");this.lightboxWindow=window.open("https://"+a+"/#P"+encodeURIComponent(JSON.stringify(f)))}else this.lightboxWindow.focus();else this.showLocalLightbox()}; +GraphViewer.prototype.showLightbox=function(a,b,e){if("open"==this.graphConfig.lightbox||window.self!==window.top)if(null==this.lightboxWindow||this.lightboxWindow.closed){a=null!=a?a:null!=this.graphConfig.editable?this.graphConfig.editable:!0;e={client:1,lightbox:1,target:null!=e?e:"blank"};a&&(e.edit=this.graphConfig.edit||"_blank");if(null!=b?b:1)e.close=1;this.layersEnabled&&(e.layers=1);null!=this.graphConfig&&0!=this.graphConfig.nav&&(e.nav=1);null!=this.graphConfig&&null!=this.graphConfig.highlight&& +(e.highlight=this.graphConfig.highlight.substring(1));null!=this.currentPage&&0<this.currentPage&&(e.page=this.currentPage);"undefined"!==typeof window.postMessage&&(null==document.documentMode||10<=document.documentMode)?null==this.lightboxWindow&&mxEvent.addListener(window,"message",mxUtils.bind(this,function(a){"ready"==a.data&&a.source==this.lightboxWindow&&this.lightboxWindow.postMessage(this.xml,"*")})):e.data=encodeURIComponent(this.xml);a="www.draw.io";"1"==urlParams.dev&&(e.dev="1",e.drawdev= +"1",a="test.draw.io");this.lightboxWindow=window.open("https://"+a+"/#P"+encodeURIComponent(JSON.stringify(e)))}else this.lightboxWindow.focus();else this.showLocalLightbox()}; GraphViewer.prototype.showLocalLightbox=function(){var a=mxUtils.getDocumentScrollOrigin(document),b=document.createElement("div");mxClient.IS_QUIRKS?(b.style.position="absolute",b.style.left=a.x+"px",b.style.top=a.y+"px",b.style.width=document.body.offsetWidth+"px",b.style.height=document.body.offsetHeight+"px"):b.style.cssText="position:fixed;top:0;left:0;bottom:0;right:0;";b.style.zIndex=this.lightboxZIndex;b.style.backgroundColor="#000000";mxUtils.setOpacity(b,70);document.body.appendChild(b); -var f=document.createElement("img");f.setAttribute("border","0");f.setAttribute("src",Editor.closeImage);mxClient.IS_QUIRKS?(f.style.position="absolute",f.style.right="32px",f.style.top=a.y+32+"px"):f.style.cssText="position:fixed;top:32px;right:32px;";f.style.cursor="pointer";mxEvent.addListener(f,"click",function(){d.destroy()});urlParams.pages="1";urlParams.page=this.currentPage;urlParams.nav=0!=this.graphConfig.nav?"1":"0";urlParams.layers=this.layersEnabled?"1":"0";if(null==document.documentMode|| -10<=document.documentMode)Editor.prototype.editButtonLink=this.graphConfig.edit,Editor.prototype.editButtonFunc=this.graphConfig.editFunc;EditorUi.prototype.updateActionStates=function(){};EditorUi.prototype.addBeforeUnloadListener=function(){};EditorUi.prototype.addChromelessClickHandler=function(){};Graph.prototype.shadowId="lightboxDropShadow";var d=new EditorUi(new Editor(!0),document.createElement("div"),!0);d.editor.editBlankUrl=this.editBlankUrl;Graph.prototype.shadowId="dropShadow";d.refresh= -function(){};var k=mxUtils.bind(this,function(a){27==a.keyCode&&d.destroy()}),n=d.destroy;d.destroy=function(){mxEvent.removeListener(document.documentElement,"keydown",k);document.body.removeChild(b);document.body.removeChild(f);document.body.style.overflow="auto";GraphViewer.resizeSensorEnabled=!0;n.apply(this,arguments)};var p=d.editor.graph,q=p.container;q.style.overflow="hidden";this.lightboxChrome?(q.style.border="1px solid #c0c0c0",q.style.margin="40px",mxEvent.addListener(document.documentElement, -"keydown",k)):(b.style.display="none",f.style.display="none");var w=this;p.getImageFromBundles=function(a){return w.getImageUrl(a)};var c=d.createTemporaryGraph;d.createTemporaryGraph=function(){var a=c.apply(this,arguments);a.getImageFromBundles=function(a){return w.getImageUrl(a)};return a};this.graphConfig.move&&(p.isMoveCellsEvent=function(a){return!0});mxClient.IS_QUIRKS||(mxUtils.setPrefixedStyle(q.style,"border-radius","4px"),q.style.position="fixed");GraphViewer.resizeSensorEnabled=!1;document.body.style.overflow= -"hidden";mxClient.IS_SF||mxClient.IS_EDGE||(mxUtils.setPrefixedStyle(q.style,"transform","rotateY(90deg)"),mxUtils.setPrefixedStyle(q.style,"transition","all .25s ease-in-out"));this.addClickHandler(p,d);window.setTimeout(mxUtils.bind(this,function(){q.style.outline="none";q.style.zIndex=this.lightboxZIndex;f.style.zIndex=this.lightboxZIndex;document.body.appendChild(q);document.body.appendChild(f);d.setFileData(this.xml);mxUtils.setPrefixedStyle(q.style,"transform","rotateY(0deg)");d.chromelessToolbar.style.bottom= -"60px";d.chromelessToolbar.style.zIndex=this.lightboxZIndex;document.body.appendChild(d.chromelessToolbar);d.getEditBlankXml=mxUtils.bind(this,function(){return this.xml});mxClient.IS_QUIRKS&&(q.style.position="absolute",q.style.display="block",q.style.left=a.x+"px",q.style.top=a.y+"px",q.style.width=document.body.clientWidth-80+"px",q.style.height=document.body.clientHeight-80+"px",q.style.backgroundColor="white",d.chromelessToolbar.style.display="block",d.chromelessToolbar.style.position="absolute", -d.chromelessToolbar.style.bottom="",d.chromelessToolbar.style.top=a.y+document.body.clientHeight-100+"px");d.lightboxFit();d.chromelessResize();this.showLayers(p,this.graph);mxEvent.addListener(b,"click",function(){d.destroy()})}),0);return d};GraphViewer.processElements=function(a){mxUtils.forEach(GraphViewer.getElementsByClassName(a||"mxgraph"),function(a){try{a.innerHTML="",GraphViewer.createViewerForElement(a)}catch(f){throw a.innerHTML=f.message,f;}})}; -GraphViewer.getElementsByClassName=function(a){if(document.getElementsByClassName){var b=document.getElementsByClassName(a);a=[];for(var f=0;f<b.length;f++)a.push(b[f]);return a}for(var d=document.getElementsByTagName("*"),b=[],f=0;f<d.length;f++){var k=d[f].className;null!=k&&0<k.length&&(k=k.split(" "),0<=mxUtils.indexOf(k,a)&&b.push(d[f]))}return b}; -GraphViewer.createViewerForElement=function(a,b){var f=a.getAttribute("data-mxgraph");if(null!=f){var d=JSON.parse(f),k=function(f){f=mxUtils.parseXml(f);f=new GraphViewer(a,f.documentElement,d);null!=b&&b(f)};null!=d.url?GraphViewer.getUrl(d.url,function(a){k(a)}):k(d.xml)}}; +var e=document.createElement("img");e.setAttribute("border","0");e.setAttribute("src",Editor.closeImage);mxClient.IS_QUIRKS?(e.style.position="absolute",e.style.right="32px",e.style.top=a.y+32+"px"):e.style.cssText="position:fixed;top:32px;right:32px;";e.style.cursor="pointer";mxEvent.addListener(e,"click",function(){c.destroy()});urlParams.pages="1";urlParams.page=this.currentPage;urlParams.nav=0!=this.graphConfig.nav?"1":"0";urlParams.layers=this.layersEnabled?"1":"0";if(null==document.documentMode|| +10<=document.documentMode)Editor.prototype.editButtonLink=this.graphConfig.edit,Editor.prototype.editButtonFunc=this.graphConfig.editFunc;EditorUi.prototype.updateActionStates=function(){};EditorUi.prototype.addBeforeUnloadListener=function(){};EditorUi.prototype.addChromelessClickHandler=function(){};Graph.prototype.shadowId="lightboxDropShadow";var c=new EditorUi(new Editor(!0),document.createElement("div"),!0);c.editor.editBlankUrl=this.editBlankUrl;Graph.prototype.shadowId="dropShadow";c.refresh= +function(){};var k=mxUtils.bind(this,function(a){27==a.keyCode&&c.destroy()}),m=c.destroy;c.destroy=function(){mxEvent.removeListener(document.documentElement,"keydown",k);document.body.removeChild(b);document.body.removeChild(e);document.body.style.overflow="auto";GraphViewer.resizeSensorEnabled=!0;m.apply(this,arguments)};var q=c.editor.graph,r=q.container;r.style.overflow="hidden";this.lightboxChrome?(r.style.border="1px solid #c0c0c0",r.style.margin="40px",mxEvent.addListener(document.documentElement, +"keydown",k)):(b.style.display="none",e.style.display="none");var v=this;q.getImageFromBundles=function(a){return v.getImageUrl(a)};var z=c.createTemporaryGraph;c.createTemporaryGraph=function(){var a=z.apply(this,arguments);a.getImageFromBundles=function(a){return v.getImageUrl(a)};return a};this.graphConfig.move&&(q.isMoveCellsEvent=function(a){return!0});mxClient.IS_QUIRKS||(mxUtils.setPrefixedStyle(r.style,"border-radius","4px"),r.style.position="fixed");GraphViewer.resizeSensorEnabled=!1;document.body.style.overflow= +"hidden";mxClient.IS_SF||mxClient.IS_EDGE||(mxUtils.setPrefixedStyle(r.style,"transform","rotateY(90deg)"),mxUtils.setPrefixedStyle(r.style,"transition","all .25s ease-in-out"));this.addClickHandler(q,c);window.setTimeout(mxUtils.bind(this,function(){r.style.outline="none";r.style.zIndex=this.lightboxZIndex;e.style.zIndex=this.lightboxZIndex;document.body.appendChild(r);document.body.appendChild(e);c.setFileData(this.xml);mxUtils.setPrefixedStyle(r.style,"transform","rotateY(0deg)");c.chromelessToolbar.style.bottom= +"60px";c.chromelessToolbar.style.zIndex=this.lightboxZIndex;document.body.appendChild(c.chromelessToolbar);c.getEditBlankXml=mxUtils.bind(this,function(){return this.xml});mxClient.IS_QUIRKS&&(r.style.position="absolute",r.style.display="block",r.style.left=a.x+"px",r.style.top=a.y+"px",r.style.width=document.body.clientWidth-80+"px",r.style.height=document.body.clientHeight-80+"px",r.style.backgroundColor="white",c.chromelessToolbar.style.display="block",c.chromelessToolbar.style.position="absolute", +c.chromelessToolbar.style.bottom="",c.chromelessToolbar.style.top=a.y+document.body.clientHeight-100+"px");c.lightboxFit();c.chromelessResize();this.showLayers(q,this.graph);mxEvent.addListener(b,"click",function(){c.destroy()})}),0);return c};GraphViewer.processElements=function(a){mxUtils.forEach(GraphViewer.getElementsByClassName(a||"mxgraph"),function(a){try{a.innerHTML="",GraphViewer.createViewerForElement(a)}catch(e){throw a.innerHTML=e.message,e;}})}; +GraphViewer.getElementsByClassName=function(a){if(document.getElementsByClassName){var b=document.getElementsByClassName(a);a=[];for(var e=0;e<b.length;e++)a.push(b[e]);return a}for(var c=document.getElementsByTagName("*"),b=[],e=0;e<c.length;e++){var k=c[e].className;null!=k&&0<k.length&&(k=k.split(" "),0<=mxUtils.indexOf(k,a)&&b.push(c[e]))}return b}; +GraphViewer.createViewerForElement=function(a,b){var e=a.getAttribute("data-mxgraph");if(null!=e){var c=JSON.parse(e),k=function(e){e=mxUtils.parseXml(e);e=new GraphViewer(a,e.documentElement,c);null!=b&&b(e)};null!=c.url?GraphViewer.getUrl(c.url,function(a){k(a)}):k(c.xml)}}; GraphViewer.initCss=function(){try{var a=document.createElement("style");a.type="text/css";a.innerHTML="div.mxTooltip {\n-webkit-box-shadow: 3px 3px 12px #C0C0C0;\n-moz-box-shadow: 3px 3px 12px #C0C0C0;\nbox-shadow: 3px 3px 12px #C0C0C0;\nbackground: #FFFFCC;\nborder-style: solid;\nborder-width: 1px;\nborder-color: black;\nfont-family: Arial;\nfont-size: 8pt;\nposition: absolute;\ncursor: default;\npadding: 4px;\ncolor: black;}\ntd.mxPopupMenuIcon div {\nwidth:16px;\nheight:16px;}\nhtml div.mxPopupMenu {\n-webkit-box-shadow:2px 2px 3px #d5d5d5;\n-moz-box-shadow:2px 2px 3px #d5d5d5;\nbox-shadow:2px 2px 3px #d5d5d5;\n_filter:progid:DXImageTransform.Microsoft.DropShadow(OffX=2, OffY=2, Color='#d0d0d0',Positive='true');\nbackground:white;\nposition:absolute;\nborder:3px solid #e7e7e7;\npadding:3px;}\nhtml table.mxPopupMenu {\nborder-collapse:collapse;\nmargin:0px;}\nhtml td.mxPopupMenuItem {\npadding:7px 30px 7px 30px;\nfont-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;\nfont-size:10pt;}\nhtml td.mxPopupMenuIcon {\nbackground-color:white;\npadding:0px;}\ntd.mxPopupMenuIcon .geIcon {\npadding:2px;\npadding-bottom:4px;\nmargin:2px;\nborder:1px solid transparent;\nopacity:0.5;\n_width:26px;\n_height:26px;}\ntd.mxPopupMenuIcon .geIcon:hover {\nborder:1px solid gray;\nborder-radius:2px;\nopacity:1;}\nhtml tr.mxPopupMenuItemHover {\nbackground-color: #eeeeee;\ncolor: black;}\ntable.mxPopupMenu hr {\ncolor:#cccccc;\nbackground-color:#cccccc;\nborder:none;\nheight:1px;}\ntable.mxPopupMenu tr {\tfont-size:4pt;}\n.geDialog { font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;\nfont-size:10pt;\nborder:none;\nmargin:0px;}\n.geDialog {\tposition:absolute;\tbackground:white;\toverflow:hidden;\tpadding:30px;\tborder:1px solid #acacac;\t-webkit-box-shadow:0px 0px 2px 2px #d5d5d5;\t-moz-box-shadow:0px 0px 2px 2px #d5d5d5;\tbox-shadow:0px 0px 2px 2px #d5d5d5;\t_filter:progid:DXImageTransform.Microsoft.DropShadow(OffX=2, OffY=2, Color='#d5d5d5', Positive='true');\tz-index: 2;}.geDialogClose {\tposition:absolute;\twidth:9px;\theight:9px;\topacity:0.5;\tcursor:pointer;\t_filter:alpha(opacity=50);}.geDialogClose:hover {\topacity:1;}.geDialogTitle {\tbox-sizing:border-box;\twhite-space:nowrap;\tbackground:rgb(229, 229, 229);\tborder-bottom:1px solid rgb(192, 192, 192);\tfont-size:15px;\tfont-weight:bold;\ttext-align:center;\tcolor:rgb(35, 86, 149);}.geDialogFooter {\tbackground:whiteSmoke;\twhite-space:nowrap;\ttext-align:right;\tbox-sizing:border-box;\tborder-top:1px solid #e5e5e5;\tcolor:darkGray;}\n.geBtn {\tbackground-color: #f5f5f5;\tborder-radius: 2px;\tborder: 1px solid #d8d8d8;\tcolor: #333;\tcursor: default;\tfont-size: 11px;\tfont-weight: bold;\theight: 29px;\tline-height: 27px;\tmargin: 0 0 0 8px;\tmin-width: 72px;\toutline: 0;\tpadding: 0 8px;\tcursor: pointer;}.geBtn:hover, .geBtn:focus {\t-webkit-box-shadow: 0px 1px 1px rgba(0,0,0,0.1);\t-moz-box-shadow: 0px 1px 1px rgba(0,0,0,0.1);\tbox-shadow: 0px 1px 1px rgba(0,0,0,0.1);\tborder: 1px solid #c6c6c6;\tbackground-color: #f8f8f8;\tbackground-image: linear-gradient(#f8f8f8 0px,#f1f1f1 100%);\tcolor: #111;}.geBtn:disabled {\topacity: .5;}.gePrimaryBtn {\tbackground-color: #4d90fe;\tbackground-image: linear-gradient(#4d90fe 0px,#4787ed 100%);\tborder: 1px solid #3079ed;\tcolor: #fff;}.gePrimaryBtn:hover, .gePrimaryBtn:focus {\tbackground-color: #357ae8;\tbackground-image: linear-gradient(#4d90fe 0px,#357ae8 100%);\tborder: 1px solid #2f5bb7;\tcolor: #fff;}.gePrimaryBtn:disabled {\topacity: .5;}";document.getElementsByTagName("head")[0].appendChild(a)}catch(b){}}; -GraphViewer.cachedUrls={};GraphViewer.getUrl=function(a,b,f){if(null!=GraphViewer.cachedUrls[a])b(GraphViewer.cachedUrls[a]);else{var d=0<navigator.userAgent.indexOf("MSIE 9")?new XDomainRequest:new XMLHttpRequest;d.open("GET",a);d.onload=function(){b(null!=d.getText?d.getText():d.responseText)};d.onerror=f;d.send()}};GraphViewer.resizeSensorEnabled=!0;GraphViewer.useResizeSensor=!0; -(function(){var a=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(a){return window.setTimeout(a,20)},b=function(f,d){function k(){this.q=[];this.add=function(a){this.q.push(a)};var a,b;this.call=function(){a=0;for(b=this.q.length;a<b;a++)this.q[a].call()}}function n(a,b){return a.currentStyle?a.currentStyle[b]:window.getComputedStyle?window.getComputedStyle(a,null).getPropertyValue(b):a.style[b]}function p(b,c){if(!b.resizedAttached)b.resizedAttached= +GraphViewer.cachedUrls={};GraphViewer.getUrl=function(a,b,e){if(null!=GraphViewer.cachedUrls[a])b(GraphViewer.cachedUrls[a]);else{var c=0<navigator.userAgent.indexOf("MSIE 9")?new XDomainRequest:new XMLHttpRequest;c.open("GET",a);c.onload=function(){b(null!=c.getText?c.getText():c.responseText)};c.onerror=e;c.send()}};GraphViewer.resizeSensorEnabled=!0;GraphViewer.useResizeSensor=!0; +(function(){var a=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(a){return window.setTimeout(a,20)},b=function(e,c){function k(){this.q=[];this.add=function(a){this.q.push(a)};var a,b;this.call=function(){a=0;for(b=this.q.length;a<b;a++)this.q[a].call()}}function m(a,b){return a.currentStyle?a.currentStyle[b]:window.getComputedStyle?window.getComputedStyle(a,null).getPropertyValue(b):a.style[b]}function q(b,c){if(!b.resizedAttached)b.resizedAttached= new k,b.resizedAttached.add(c);else if(b.resizedAttached){b.resizedAttached.add(c);return}b.resizeSensor=document.createElement("div");b.resizeSensor.className="resize-sensor";b.resizeSensor.style.cssText="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;";b.resizeSensor.innerHTML='<div class="resize-sensor-expand" style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;"><div style="position: absolute; left: 0; top: 0; transition: 0s;"></div></div><div class="resize-sensor-shrink" style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;"><div style="position: absolute; left: 0; top: 0; transition: 0s; width: 200%; height: 200%"></div></div>'; -b.appendChild(b.resizeSensor);"static"==n(b,"position")&&(b.style.position="relative");var d=b.resizeSensor.childNodes[0],f=d.childNodes[0],g=b.resizeSensor.childNodes[1],h=function(){f.style.width="100000px";f.style.height="100000px";d.scrollLeft=1E5;d.scrollTop=1E5;g.scrollLeft=1E5;g.scrollTop=1E5};h();var l=!1,p=function(){b.resizedAttached&&(l&&(b.resizedAttached.call(),l=!1),a(p))};a(p);var q,u,w,F,Q=function(){if((w=b.offsetWidth)!=q||(F=b.offsetHeight)!=u)l=!0,q=w,u=F;h()},G=function(a,b,c){a.attachEvent? -a.attachEvent("on"+b,c):a.addEventListener(b,c)};G(d,"scroll",Q);G(g,"scroll",Q)}var q=function(){GraphViewer.resizeSensorEnabled&&d()},w=Object.prototype.toString.call(f),c="[object Array]"===w||"[object NodeList]"===w||"[object HTMLCollection]"===w||"undefined"!==typeof jQuery&&f instanceof jQuery||"undefined"!==typeof Elements&&f instanceof Elements;if(c)for(var w=0,g=f.length;w<g;w++)p(f[w],q);else p(f,q);this.detach=function(){if(c)for(var a=0,d=f.length;a<d;a++)b.detach(f[a]);else b.detach(f)}}; +b.appendChild(b.resizeSensor);"static"==m(b,"position")&&(b.style.position="relative");var d=b.resizeSensor.childNodes[0],e=d.childNodes[0],f=b.resizeSensor.childNodes[1],l=function(){e.style.width="100000px";e.style.height="100000px";d.scrollLeft=1E5;d.scrollTop=1E5;f.scrollLeft=1E5;f.scrollTop=1E5};l();var q=!1,r=function(){b.resizedAttached&&(q&&(b.resizedAttached.call(),q=!1),a(r))};a(r);var v,u,A,z,U=function(){if((A=b.offsetWidth)!=v||(z=b.offsetHeight)!=u)q=!0,v=A,u=z;l()},S=function(a,b,c){a.attachEvent? +a.attachEvent("on"+b,c):a.addEventListener(b,c)};S(d,"scroll",U);S(f,"scroll",U)}var r=function(){GraphViewer.resizeSensorEnabled&&c()},v=Object.prototype.toString.call(e),z="[object Array]"===v||"[object NodeList]"===v||"[object HTMLCollection]"===v||"undefined"!==typeof jQuery&&e instanceof jQuery||"undefined"!==typeof Elements&&e instanceof Elements;if(z)for(var v=0,d=e.length;v<d;v++)q(e[v],r);else q(e,r);this.detach=function(){if(z)for(var a=0,c=e.length;a<c;a++)b.detach(e[a]);else b.detach(e)}}; b.detach=function(a){a.resizeSensor&&(a.removeChild(a.resizeSensor),delete a.resizeSensor,delete a.resizedAttached)};window.ResizeSensor=b})(); diff --git a/src/main/webapp/js/atlas.min.js b/src/main/webapp/js/atlas.min.js index c42e3e7d..25528d31 100644 --- a/src/main/webapp/js/atlas.min.js +++ b/src/main/webapp/js/atlas.min.js @@ -133,7 +133,7 @@ l--,_+=n[s++]<<u,u+=8}if(a.nlen=(31&_)+257,_>>>=5,u-=5,a.ndist=(31&_)+1,_>>>=5,u var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(a,b){var c="",d,e,f,g,k,l,m=0;for(null!=b&&b||(a=Base64._utf8_encode(a));m<a.length;)d=a.charCodeAt(m++),e=a.charCodeAt(m++),f=a.charCodeAt(m++),g=d>>2,d=(d&3)<<4|e>>4,k=(e&15)<<2|f>>6,l=f&63,isNaN(e)?k=l=64:isNaN(f)&&(l=64),c=c+this._keyStr.charAt(g)+this._keyStr.charAt(d)+this._keyStr.charAt(k)+this._keyStr.charAt(l);return c},decode:function(a,b){b=null!=b?b:!1;var c="",d,e,f,g,k,l=0;for(a=a.replace(/[^A-Za-z0-9\+\/\=]/g, "");l<a.length;)d=this._keyStr.indexOf(a.charAt(l++)),e=this._keyStr.indexOf(a.charAt(l++)),g=this._keyStr.indexOf(a.charAt(l++)),k=this._keyStr.indexOf(a.charAt(l++)),d=d<<2|e>>4,e=(e&15)<<4|g>>2,f=(g&3)<<6|k,c+=String.fromCharCode(d),64!=g&&(c+=String.fromCharCode(e)),64!=k&&(c+=String.fromCharCode(f));b||(c=Base64._utf8_decode(c));return c},_utf8_encode:function(a){a=a.replace(/\r\n/g,"\n");for(var b="",c=0;c<a.length;c++){var d=a.charCodeAt(c);128>d?b+=String.fromCharCode(d):(127<d&&2048>d?b+= String.fromCharCode(d>>6|192):(b+=String.fromCharCode(d>>12|224),b+=String.fromCharCode(d>>6&63|128)),b+=String.fromCharCode(d&63|128))}return b},_utf8_decode:function(a){var b="",c=0,d;for(c1=c2=0;c<a.length;)d=a.charCodeAt(c),128>d?(b+=String.fromCharCode(d),c++):191<d&&224>d?(c2=a.charCodeAt(c+1),b+=String.fromCharCode((d&31)<<6|c2&63),c+=2):(c2=a.charCodeAt(c+1),c3=a.charCodeAt(c+2),b+=String.fromCharCode((d&15)<<12|(c2&63)<<6|c3&63),c+=3);return b}};window.urlParams=window.urlParams||{};window.isLocalStorage=window.isLocalStorage||!1;window.mxLoadSettings=window.mxLoadSettings||"1"!=urlParams.configure;window.isSvgBrowser=window.isSvgBrowser||0>navigator.userAgent.indexOf("MSIE")||9<=document.documentMode;window.EXPORT_URL=window.EXPORT_URL||"https://exp.draw.io/ImageExport4/export";window.PLANT_URL=window.PLANT_URL||"https://exp-plant.draw.io/plantuml4";window.VSD_CONVERT_URL=window.VSD_CONVERT_URL||"https://convert.draw.io/VsdConverter/api/converter"; -window.EMF_CONVERT_URL=window.EMF_CONVERT_URL||"https://convert.draw.io/emf2png/convertEMF";window.SAVE_URL=window.SAVE_URL||"save";window.OPEN_URL=window.OPEN_URL||"open";window.PROXY_URL=window.PROXY_URL||"proxy";window.SHAPES_PATH=window.SHAPES_PATH||"shapes";window.GRAPH_IMAGE_PATH=window.GRAPH_IMAGE_PATH||"img";window.ICONSEARCH_PATH=window.ICONSEARCH_PATH||((0<=navigator.userAgent.indexOf("MSIE")||urlParams.dev)&&"file:"!=window.location.protocol?"iconSearch":"https://www.draw.io/iconSearch"); +window.EMF_CONVERT_URL=window.EMF_CONVERT_URL||"https://convert.draw.io/emf2png/convertEMF";window.SAVE_URL=window.SAVE_URL||"save";window.OPEN_URL=window.OPEN_URL||"open";window.PROXY_URL=window.PROXY_URL||"proxy";window.VIEWER_URL=null;window.SHAPES_PATH=window.SHAPES_PATH||"shapes";window.GRAPH_IMAGE_PATH=window.GRAPH_IMAGE_PATH||"img";window.ICONSEARCH_PATH=window.ICONSEARCH_PATH||((0<=navigator.userAgent.indexOf("MSIE")||urlParams.dev)&&"file:"!=window.location.protocol?"iconSearch":"https://www.draw.io/iconSearch"); window.TEMPLATE_PATH=window.TEMPLATE_PATH||"templates";window.NEW_DIAGRAM_CATS_PATH=window.NEW_DIAGRAM_CATS_PATH||"newDiagramCats";window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";window.RESOURCE_BASE=window.RESOURCE_BASE||RESOURCES_PATH+"/dia";window.mxLoadResources=window.mxLoadResources||!1; window.mxLanguage=window.mxLanguage||function(){var a="1"==urlParams.offline?"en":urlParams.lang;if(null==a&&"undefined"!=typeof JSON&&isLocalStorage)try{var b=localStorage.getItem(".drawio-config");null!=b&&(a=JSON.parse(b).language||null)}catch(c){isLocalStorage=!1}return a}(); window.mxLanguageMap=window.mxLanguageMap||{i18n:"",id:"Bahasa Indonesia",ms:"Bahasa Melayu",bs:"Bosanski",bg:"Bulgarian",ca:"Català",cs:"Čeština",da:"Dansk",de:"Deutsch",et:"Eesti",en:"English",es:"Español",fil:"Filipino",fr:"Français",it:"Italiano",hu:"Magyar",nl:"Nederlands",no:"Norsk",pl:"Polski","pt-br":"Português (Brasil)",pt:"Português (Portugal)",ro:"Română",fi:"Suomi",sv:"Svenska",vi:"Tiếng Việt",tr:"Türkçe",el:"Ελληνικά",ru:"Русский",sr:"Српски",uk:"Українська",he:"עברית",ar:"العربية",th:"ไทย", @@ -190,50 +190,50 @@ b(g.childNodes),e<a.length-1&&0<=mxUtils.indexOf(c,a[e+1].nodeName)&&d.push("\n" a.innerText=b:a[void 0===a.textContent?"text":"textContent"]=b},getInnerHtml:function(){return mxClient.IS_IE?function(a){return null!=a?a.innerHTML:""}:function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),getOuterHtml:function(){return mxClient.IS_IE?function(a){if(null!=a){if(null!=a.outerHTML)return a.outerHTML;var b=[];b.push("<"+a.nodeName);var c=a.attributes;if(null!=c)for(var d=0;d<c.length;d++){var e=c[d].value;null!=e&&0<e.length&&(b.push(" "),b.push(c[d].nodeName), b.push('="'),b.push(e),b.push('"'))}0==a.innerHTML.length?b.push("/>"):(b.push(">"),b.push(a.innerHTML),b.push("</"+a.nodeName+">"));return b.join("")}return""}:function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),write:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&a.appendChild(c);return c},writeln:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&(a.appendChild(c),a.appendChild(document.createElement("br")));return c},br:function(a,b){b=b||1;for(var c= null,d=0;d<b;d++)null!=a&&(c=a.ownerDocument.createElement("br"),a.appendChild(c));return c},button:function(a,b,c){c=null!=c?c:document;c=c.createElement("button");mxUtils.write(c,a);mxEvent.addListener(c,"click",function(a){b(a)});return c},para:function(a,b){var c=document.createElement("p");mxUtils.write(c,b);null!=a&&a.appendChild(c);return c},addTransparentBackgroundFilter:function(a){a.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"}, -linkAction:function(a,b,c,d,e){return mxUtils.link(a,b,function(){c.execute(d)},e)},linkInvoke:function(a,b,c,d,e,f){return mxUtils.link(a,b,function(){c[d](e)},f)},link:function(a,b,c,d){var e=document.createElement("span");e.style.color="blue";e.style.textDecoration="underline";e.style.cursor="pointer";null!=d&&(e.style.paddingLeft=d+"px");mxEvent.addListener(e,"click",c);mxUtils.write(e,b);null!=a&&a.appendChild(e);return e},fit:function(a){var b=parseInt(a.offsetLeft),c=parseInt(a.offsetWidth), -d=mxUtils.getDocumentScrollOrigin(a.ownerDocument),e=d.x,d=d.y,f=document.body,g=document.documentElement,k=e+(f.clientWidth||g.clientWidth);b+c>k&&(a.style.left=Math.max(e,k-c)+"px");b=parseInt(a.offsetTop);c=parseInt(a.offsetHeight);f=d+Math.max(f.clientHeight||0,g.clientHeight);b+c>f&&(a.style.top=Math.max(d,f-c)+"px")},load:function(a){a=new mxXmlRequest(a,null,"GET",!1);a.send();return a},get:function(a,b,c,d,e,f){a=new mxXmlRequest(a,null,"GET");null!=d&&a.setBinary(d);a.send(b,c,e,f);return a}, -getAll:function(a,b,c){for(var d=a.length,e=[],f=0,g=function(){0==f&&null!=c&&c();f++},k=0;k<a.length;k++)(function(a,c){mxUtils.get(a,function(a){var f=a.getStatus();200>f||299<f?g():(e[c]=a,d--,0==d&&b(e))},g)})(a[k],k);0==d&&b(e)},post:function(a,b,c,d){return(new mxXmlRequest(a,b)).send(c,d)},submit:function(a,b,c,d){return(new mxXmlRequest(a,b)).simulate(c,d)},loadInto:function(a,b,c){mxClient.IS_IE?b.onreadystatechange=function(){4==b.readyState&&c()}:b.addEventListener("load",c,!1);b.load(a)}, -getValue:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c);return a},getNumber:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c||0);return Number(a)},getColor:function(a,b,c){a=null!=a?a[b]:null;null==a?a=c:a==mxConstants.NONE&&(a=null);return a},clone:function(a,b,c){c=null!=c?c:!1;var d=null;if(null!=a&&"function"==typeof a.constructor){var d=new a.constructor,e;for(e in a)e!=mxObjectIdentity.FIELD_NAME&&(null==b||0>mxUtils.indexOf(b,e))&&(d[e]=c||"object"!=typeof a[e]?a[e]:mxUtils.clone(a[e]))}return d}, -equalPoints:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b)for(var c=0;c<a.length;c++)if(a[c]==b[c]||null!=a[c]&&!a[c].equals(b[c]))return!1;return!0},equalEntries:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b){var c=0,d;for(d in b)c++;for(d in a)if(c--,!(mxUtils.isNaN(a[d])&&mxUtils.isNaN(b[d])||a[d]==b[d]))return!1}return 0==c},removeDuplicates:function(a){for(var b= -new mxDictionary,c=[],d=0;d<a.length;d++)b.get(a[d])||(c.push(a[d]),b.put(a[d],!0));return c},isNaN:function(a){return"number"==typeof a&&isNaN(a)},extend:function(a,b){var c=function(){};c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a},toString:function(a){var b="",c;for(c in a)try{if(null==a[c])b+=c+" = [null]\n";else if("function"==typeof a[c])b+=c+" => [Function]\n";else if("object"==typeof a[c])var d=mxUtils.getFunctionName(a[c].constructor),b=b+(c+" => ["+d+"]\n");else b+= -c+" = "+a[c]+"\n"}catch(e){b+=c+"="+e.message}return b},toRadians:function(a){return Math.PI*a/180},toDegree:function(a){return 180*a/Math.PI},arcToCurves:function(a,b,c,d,e,f,g,k,l){k-=a;l-=b;if(0===c||0===d)return q;c=Math.abs(c);d=Math.abs(d);var m=-k/2,n=-l/2,p=Math.cos(e*Math.PI/180),q=Math.sin(e*Math.PI/180);e=p*m+q*n;var m=-1*q*m+p*n,n=e*e,r=m*m,t=c*c,u=d*d,x=n/t+r/u;1<x?(c*=Math.sqrt(x),d*=Math.sqrt(x),f=0):(x=1,f===g&&(x=-1),f=x*Math.sqrt((t*u-t*r-u*n)/(t*r+u*n)));n=f*c*m/d;r=-1*f*d*e/c; -k=p*n-q*r+k/2;l=q*n+p*r+l/2;t=Math.atan2((m-r)/d,(e-n)/c)-Math.atan2(0,1);f=0<=t?t:2*Math.PI+t;t=Math.atan2((-m-r)/d,(-e-n)/c)-Math.atan2((m-r)/d,(e-n)/c);e=0<=t?t:2*Math.PI+t;0==g&&0<e?e-=2*Math.PI:0!=g&&0>e&&(e+=2*Math.PI);g=2*e/Math.PI;g=Math.ceil(0>g?-1*g:g);e/=g;m=8/3*Math.sin(e/4)*Math.sin(e/4)/Math.sin(e/2);n=p*c;p*=d;c*=q;d*=q;for(var y=Math.cos(f),A=Math.sin(f),r=-m*(n*A+d*y),t=-m*(c*A-p*y),q=[],z=0;z<g;++z){f+=e;var y=Math.cos(f),A=Math.sin(f),u=n*y-d*A+k,x=c*y+p*A+l,v=-m*(n*A+d*y),y=-m* -(c*A-p*y),A=6*z;q[A]=Number(r+a);q[A+1]=Number(t+b);q[A+2]=Number(u-v+a);q[A+3]=Number(x-y+b);q[A+4]=Number(u+a);q[A+5]=Number(x+b);r=u+v;t=x+y}return q},getBoundingBox:function(a,b,c){var d=null;if(null!=a&&null!=b&&0!=b){b=mxUtils.toRadians(b);var d=Math.cos(b),e=Math.sin(b);c=null!=c?c:new mxPoint(a.x+a.width/2,a.y+a.height/2);var f=new mxPoint(a.x,a.y);b=new mxPoint(a.x+a.width,a.y);var g=new mxPoint(b.x,a.y+a.height);a=new mxPoint(a.x,g.y);f=mxUtils.getRotatedPoint(f,d,e,c);b=mxUtils.getRotatedPoint(b, -d,e,c);g=mxUtils.getRotatedPoint(g,d,e,c);a=mxUtils.getRotatedPoint(a,d,e,c);d=new mxRectangle(f.x,f.y,0,0);d.add(new mxRectangle(b.x,b.y,0,0));d.add(new mxRectangle(g.x,g.y,0,0));d.add(new mxRectangle(a.x,a.y,0,0))}return d},getRotatedPoint:function(a,b,c,d){d=null!=d?d:new mxPoint;var e=a.x-d.x;a=a.y-d.y;return new mxPoint(e*b-a*c+d.x,a*b+e*c+d.y)},getPortConstraints:function(a,b,c,d){b=mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT,mxUtils.getValue(b.style,c?mxConstants.STYLE_SOURCE_PORT_CONSTRAINT: -mxConstants.STYLE_TARGET_PORT_CONSTRAINT,null));if(null==b)return d;d=b.toString();b=mxConstants.DIRECTION_MASK_NONE;c=0;1==mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT_ROTATION,0)&&(c=mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION,0));a=0;45<c?(a=1,135<=c&&(a=2)):-45>c&&(a=3,-135>=c&&(a=2));if(0<=d.indexOf(mxConstants.DIRECTION_NORTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 1:b|=mxConstants.DIRECTION_MASK_EAST;break;case 2:b|=mxConstants.DIRECTION_MASK_SOUTH; -break;case 3:b|=mxConstants.DIRECTION_MASK_WEST}if(0<=d.indexOf(mxConstants.DIRECTION_WEST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_WEST;break;case 1:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 2:b|=mxConstants.DIRECTION_MASK_EAST;break;case 3:b|=mxConstants.DIRECTION_MASK_SOUTH}if(0<=d.indexOf(mxConstants.DIRECTION_SOUTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 1:b|=mxConstants.DIRECTION_MASK_WEST;break;case 2:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 3:b|= -mxConstants.DIRECTION_MASK_EAST}if(0<=d.indexOf(mxConstants.DIRECTION_EAST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_EAST;break;case 1:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 2:b|=mxConstants.DIRECTION_MASK_WEST;break;case 3:b|=mxConstants.DIRECTION_MASK_NORTH}return b},reversePortConstraints:function(a){var b;b=(a&mxConstants.DIRECTION_MASK_WEST)<<3;b|=(a&mxConstants.DIRECTION_MASK_NORTH)<<1;b|=(a&mxConstants.DIRECTION_MASK_SOUTH)>>1;return b|(a&mxConstants.DIRECTION_MASK_EAST)>>3}, -findNearestSegment:function(a,b,c){var d=-1;if(0<a.absolutePoints.length)for(var e=a.absolutePoints[0],f=null,g=1;g<a.absolutePoints.length;g++){var k=a.absolutePoints[g],e=mxUtils.ptSegDistSq(e.x,e.y,k.x,k.y,b,c);if(null==f||e<f)f=e,d=g-1;e=k}return d},getDirectedBounds:function(a,b,c,d,e){var f=mxUtils.getValue(c,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);d=null!=d?d:mxUtils.getValue(c,mxConstants.STYLE_FLIPH,!1);e=null!=e?e:mxUtils.getValue(c,mxConstants.STYLE_FLIPV,!1);b.x=Math.round(Math.max(0, -Math.min(a.width,b.x)));b.y=Math.round(Math.max(0,Math.min(a.height,b.y)));b.width=Math.round(Math.max(0,Math.min(a.width,b.width)));b.height=Math.round(Math.max(0,Math.min(a.height,b.height)));if(e&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||d&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.x,b.x=b.width,b.width=c;if(d&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||e&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.y, -b.y=b.height,b.height=c;d=mxRectangle.fromRectangle(b);f==mxConstants.DIRECTION_SOUTH?(d.y=b.x,d.x=b.height,d.width=b.y,d.height=b.width):f==mxConstants.DIRECTION_WEST?(d.y=b.height,d.x=b.width,d.width=b.x,d.height=b.y):f==mxConstants.DIRECTION_NORTH&&(d.y=b.width,d.x=b.y,d.width=b.height,d.height=b.x);return new mxRectangle(a.x+d.x,a.y+d.y,a.width-d.width-d.x,a.height-d.height-d.y)},getPerimeterPoint:function(a,b,c){for(var d=null,e=0;e<a.length-1;e++){var f=mxUtils.intersection(a[e].x,a[e].y,a[e+ -1].x,a[e+1].y,b.x,b.y,c.x,c.y);if(null!=f){var g=c.x-f.x,k=c.y-f.y,f={p:f,distSq:k*k+g*g};null!=f&&(null==d||d.distSq>f.distSq)&&(d=f)}}return null!=d?d.p:null},rectangleIntersectsSegment:function(a,b,c){var d=a.y,e=a.x,f=d+a.height,g=e+a.width;a=b.x;var k=c.x;b.x>c.x&&(a=c.x,k=b.x);k>g&&(k=g);a<e&&(a=e);if(a>k)return!1;var e=b.y,g=c.y,l=c.x-b.x;1E-7<Math.abs(l)&&(c=(c.y-b.y)/l,b=b.y-c*b.x,e=c*a+b,g=c*k+b);e>g&&(b=g,g=e,e=b);g>f&&(g=f);e<d&&(e=d);return e>g?!1:!0},contains:function(a,b,c){return a.x<= -b&&a.x+a.width>=b&&a.y<=c&&a.y+a.height>=c},intersects:function(a,b){var c=a.width,d=a.height,e=b.width,f=b.height;if(0>=e||0>=f||0>=c||0>=d)return!1;var g=a.x,k=a.y,l=b.x,m=b.y,e=e+l,f=f+m,c=c+g,d=d+k;return(e<l||e>g)&&(f<m||f>k)&&(c<g||c>l)&&(d<k||d>m)},intersectsHotspot:function(a,b,c,d,e,f){d=null!=d?d:1;e=null!=e?e:0;f=null!=f?f:0;if(0<d){var g=a.getCenterX(),k=a.getCenterY(),l=a.width,m=a.height,n=mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE)*a.view.scale;0<n&&(mxUtils.getValue(a.style, -mxConstants.STYLE_HORIZONTAL,!0)?(k=a.y+n/2,m=n):(g=a.x+n/2,l=n));l=Math.max(e,l*d);m=Math.max(e,m*d);0<f&&(l=Math.min(l,f),m=Math.min(m,f));d=new mxRectangle(g-l/2,k-m/2,l,m);g=mxUtils.toRadians(mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION)||0);0!=g&&(e=Math.cos(-g),f=Math.sin(-g),g=new mxPoint(a.getCenterX(),a.getCenterY()),a=mxUtils.getRotatedPoint(new mxPoint(b,c),e,f,g),b=a.x,c=a.y);return mxUtils.contains(d,b,c)}return!0},getOffset:function(a,b){for(var c=0,d=0,e=!1,f=a,g=document.body, -k=document.documentElement;null!=f&&f!=g&&f!=k&&!e;){var l=mxUtils.getCurrentStyle(f);null!=l&&(e=e||"fixed"==l.position);f=f.parentNode}b||e||(e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),c+=e.x,d+=e.y);e=a.getBoundingClientRect();null!=e&&(c+=e.left,d+=e.top);return new mxPoint(c,d)},getDocumentScrollOrigin:function(a){if(mxClient.IS_QUIRKS)return new mxPoint(a.body.scrollLeft,a.body.scrollTop);a=a.defaultView||a.parentWindow;return new mxPoint(null!=a&&void 0!==window.pageXOffset?window.pageXOffset: -(document.documentElement||document.body.parentNode||document.body).scrollLeft,null!=a&&void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop)},getScrollOrigin:function(a,b,c){b=null!=b?b:!1;c=null!=c?c:!0;for(var d=null!=a?a.ownerDocument:document,e=d.body,f=d.documentElement,g=new mxPoint,k=!1;null!=a&&a!=e&&a!=f;){isNaN(a.scrollLeft)||isNaN(a.scrollTop)||(g.x+=a.scrollLeft,g.y+=a.scrollTop);var l=mxUtils.getCurrentStyle(a); -null!=l&&(k=k||"fixed"==l.position);a=b?a.parentNode:null}!k&&c&&(a=mxUtils.getDocumentScrollOrigin(d),g.x+=a.x,g.y+=a.y);return g},convertPoint:function(a,b,c){var d=mxUtils.getScrollOrigin(a,!1);a=mxUtils.getOffset(a);a.x-=d.x;a.y-=d.y;return new mxPoint(b-a.x,c-a.y)},ltrim:function(a,b){return null!=a?a.replace(new RegExp("^["+(b||"\\s")+"]+","g"),""):null},rtrim:function(a,b){return null!=a?a.replace(new RegExp("["+(b||"\\s")+"]+$","g"),""):null},trim:function(a,b){return mxUtils.ltrim(mxUtils.rtrim(a, -b),b)},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)&&("string"!=typeof a||0>a.toLowerCase().indexOf("0x"))},isInteger:function(a){return String(parseInt(a))===String(a)},mod:function(a,b){return(a%b+b)%b},intersection:function(a,b,c,d,e,f,g,k){var l=(k-f)*(c-a)-(g-e)*(d-b);g=((g-e)*(b-f)-(k-f)*(a-e))/l;e=((c-a)*(b-f)-(d-b)*(a-e))/l;return 0<=g&&1>=g&&0<=e&&1>=e?new mxPoint(a+g*(c-a),b+g*(d-b)):null},ptSegDistSq:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;0>=e*c+f*d?c=0:(e=c-e,f=d- -f,a=e*c+f*d,c=0>=a?0:a*a/(c*c+d*d));e=e*e+f*f-c;0>e&&(e=0);return e},ptLineDist:function(a,b,c,d,e,f){return Math.abs((d-b)*e-(c-a)*f+c*b-d*a)/Math.sqrt((d-b)*(d-b)+(c-a)*(c-a))},relativeCcw:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;a=e*d-f*c;0==a&&(a=e*c+f*d,0<a&&(a=(e-c)*c+(f-d)*d,0>a&&(a=0)));return 0>a?-1:0<a?1:0},animateChanges:function(a,b){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(a,b,c){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(a,b,c,d, -e,f){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(a,b){mxUtils.isVml(a)?a.style.filter=100<=b?"":"alpha(opacity="+b/5+")":mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?a.style.filter=100<=b?"":"alpha(opacity="+b+")":a.style.opacity=b/100},createImage:function(a){var b;mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?(b=document.createElement(mxClient.VML_PREFIX+":image"),b.setAttribute("src",a),b.style.borderStyle="none"):(b=document.createElement("img"), -b.setAttribute("src",a),b.setAttribute("border","0"));return b},sortCells:function(a,b){b=null!=b?b:!0;var c=new mxDictionary;a.sort(function(a,e){var d=c.get(a);null==d&&(d=mxCellPath.create(a).split(mxCellPath.PATH_SEPARATOR),c.put(a,d));var g=c.get(e);null==g&&(g=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),c.put(e,g));d=mxCellPath.compare(d,g);return 0==d?0:0<d==b?1:-1});return a},getStylename:function(a){return null!=a&&(a=a.split(";")[0],0>a.indexOf("="))?a:""},getStylenames:function(a){var b= -[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0>a[c].indexOf("=")&&b.push(a[c])}return b},indexOfStylename:function(a,b){if(null!=a&&null!=b)for(var c=a.split(";"),d=0,e=0;e<c.length;e++){if(c[e]==b)return d;d+=c[e].length+1}return-1},addStylename:function(a,b){0>mxUtils.indexOfStylename(a,b)&&(null==a?a="":0<a.length&&";"!=a.charAt(a.length-1)&&(a+=";"),a+=b);return a},removeStylename:function(a,b){var c=[];if(null!=a)for(var d=a.split(";"),e=0;e<d.length;e++)d[e]!=b&&c.push(d[e]);return c.join(";")}, -removeAllStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0<=a[c].indexOf("=")&&b.push(a[c])}return b.join(";")},setCellStyles:function(a,b,c,d){if(null!=b&&0<b.length){a.beginUpdate();try{for(var e=0;e<b.length;e++)if(null!=b[e]){var f=mxUtils.setStyle(a.getStyle(b[e]),c,d);a.setStyle(b[e],f)}}finally{a.endUpdate()}}},setStyle:function(a,b,c){var d=null!=c&&("undefined"==typeof c.length||0<c.length);if(null==a||0==a.length)d&&(a=b+"="+c+";");else if(a.substring(0, -b.length+1)==b+"="){var e=a.indexOf(";");a=d?b+"="+c+(0>e?";":a.substring(e)):0>e||e==a.length-1?"":a.substring(e+1)}else{var f=a.indexOf(";"+b+"=");0>f?d&&(d=";"==a.charAt(a.length-1)?"":";",a=a+d+b+"="+c+";"):(e=a.indexOf(";",f+1),a=d?a.substring(0,f+1)+b+"="+c+(0>e?";":a.substring(e)):a.substring(0,f)+(0>e?";":a.substring(e)))}return a},setCellStyleFlags:function(a,b,c,d,e){if(null!=b&&0<b.length){a.beginUpdate();try{for(var f=0;f<b.length;f++)if(null!=b[f]){var g=mxUtils.setStyleFlag(a.getStyle(b[f]), -c,d,e);a.setStyle(b[f],g)}}finally{a.endUpdate()}}},setStyleFlag:function(a,b,c,d){if(null==a||0==a.length)a=d||null==d?b+"="+c:b+"=0";else{var e=a.indexOf(b+"=");if(0>e)e=";"==a.charAt(a.length-1)?"":";",a=d||null==d?a+e+b+"="+c:a+e+b+"=0";else{var f=a.indexOf(";",e),g;g=0>f?a.substring(e+b.length+1):a.substring(e+b.length+1,f);g=null==d?parseInt(g)^c:d?parseInt(g)|c:parseInt(g)&~c;a=a.substring(0,e)+b+"="+g+(0<=f?a.substring(f):"")}}return a},getAlignmentAsPoint:function(a,b){var c=0,d=0;a==mxConstants.ALIGN_CENTER? -c=-.5:a==mxConstants.ALIGN_RIGHT&&(c=-1);b==mxConstants.ALIGN_MIDDLE?d=-.5:b==mxConstants.ALIGN_BOTTOM&&(d=-1);return new mxPoint(c,d)},getSizeForString:function(a,b,c,d){b=null!=b?b:mxConstants.DEFAULT_FONTSIZE;c=null!=c?c:mxConstants.DEFAULT_FONTFAMILY;var e=document.createElement("div");e.style.fontFamily=c;e.style.fontSize=Math.round(b)+"px";e.style.lineHeight=Math.round(b*mxConstants.LINE_HEIGHT)+"px";e.style.position="absolute";e.style.visibility="hidden";e.style.display=mxClient.IS_QUIRKS? -"inline":"inline-block";e.style.zoom="1";null!=d?(e.style.width=d+"px",e.style.whiteSpace="normal"):e.style.whiteSpace="nowrap";e.innerHTML=a;document.body.appendChild(e);a=new mxRectangle(0,0,e.offsetWidth,e.offsetHeight);document.body.removeChild(e);return a},getViewXml:function(a,b,c,d,e){d=null!=d?d:0;e=null!=e?e:0;b=null!=b?b:1;null==c&&(c=[a.getModel().getRoot()]);var f=a.getView(),g=null,k=f.isEventsEnabled();f.setEventsEnabled(!1);var l=f.drawPane,m=f.overlayPane;a.dialect==mxConstants.DIALECT_SVG? -(f.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),f.canvas.appendChild(f.drawPane),f.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(f.drawPane=f.drawPane.cloneNode(!1),f.canvas.appendChild(f.drawPane),f.overlayPane=f.overlayPane.cloneNode(!1));f.canvas.appendChild(f.overlayPane);var n=f.getTranslate();f.translate=new mxPoint(d,e);b=new mxTemporaryCellStates(a.getView(),b,c);try{g=(new mxCodec).encode(a.getView())}finally{b.destroy(),f.translate=n,f.canvas.removeChild(f.drawPane), -f.canvas.removeChild(f.overlayPane),f.drawPane=l,f.overlayPane=m,f.setEventsEnabled(k)}return g},getScaleForPageCount:function(a,b,c,d){if(1>a)return 1;c=null!=c?c:mxConstants.PAGE_FORMAT_A4_PORTRAIT;d=null!=d?d:0;var e=c.width-2*d;c=c.height-2*d;d=b.getGraphBounds().clone();b=b.getView().getScale();d.width/=b;d.height/=b;b=d.width;var f=Math.sqrt(a);d=Math.sqrt(b/d.height/(e/c));c=f*d;d=f/d;if(1>c&&d>a){var g=d/a;d=a;c/=g}1>d&&c>a&&(g=c/a,c=a,d/=g);g=Math.ceil(c)*Math.ceil(d);for(f=0;g>a;){var g= -Math.floor(c)/c,k=Math.floor(d)/d;1==g&&(g=Math.floor(c-1)/c);1==k&&(k=Math.floor(d-1)/d);g=g>k?g:k;c*=g;d*=g;g=Math.ceil(c)*Math.ceil(d);f++;if(10<f)break}return e*c/b*.99999},show:function(a,b,c,d,e,f){c=null!=c?c:0;d=null!=d?d:0;null==b?b=window.open().document:b.open();9==document.documentMode&&b.writeln('\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=9"><![endif]--\x3e');var g=a.getGraphBounds(),k=Math.ceil(c-g.x),l=Math.ceil(d-g.y);null==e&&(e=Math.ceil(g.width+c)+Math.ceil(Math.ceil(g.x)- -g.x));null==f&&(f=Math.ceil(g.height+d)+Math.ceil(Math.ceil(g.y)-g.y));if(mxClient.IS_IE||11==document.documentMode){d="<html><head>";g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)d+=g[c].outerHTML;d+="<style>";for(c=0;c<document.styleSheets.length;c++)try{d+=document.styleSheets[c].cssText}catch(m){}d=d+'</style></head><body style="margin:0px;">'+('<div style="position:absolute;overflow:hidden;width:'+e+"px;height:"+f+'px;"><div style="position:relative;left:'+k+"px;top:"+l+'px;">')+ -a.container.innerHTML;b.writeln(d+"</div></div></body><html>");b.close()}else{b.writeln("<html><head>");g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)b.writeln(mxUtils.getOuterHtml(g[c]));d=document.getElementsByTagName("link");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));d=document.getElementsByTagName("style");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));b.writeln('</head><body style="margin:0px;"></body></html>');b.close();c=b.createElement("div"); -c.position="absolute";c.overflow="hidden";c.style.width=e+"px";c.style.height=f+"px";e=b.createElement("div");e.style.position="absolute";e.style.left=k+"px";e.style.top=l+"px";f=a.container.firstChild;for(d=null;null!=f;)g=f.cloneNode(!0),f==a.view.drawPane.ownerSVGElement?(c.appendChild(g),d=g):e.appendChild(g),f=f.nextSibling;b.body.appendChild(c);null!=e.firstChild&&b.body.appendChild(e);null!=d&&(d.style.minWidth="",d.style.minHeight="",d.firstChild.setAttribute("transform","translate("+k+","+ -l+")"))}mxUtils.removeCursors(b.body);return b},printScreen:function(a){var b=window.open();a.getGraphBounds();mxUtils.show(a,b.document);a=function(){b.focus();b.print();b.close()};mxClient.IS_GC?b.setTimeout(a,500):a()},popup:function(a,b){if(b){var c=document.createElement("div");c.style.overflow="scroll";c.style.width="636px";c.style.height="460px";var d=document.createElement("pre");d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g," ");c.appendChild(d);c=new mxWindow("Popup Window", -c,document.body.clientWidth/2-320,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight)/2-240,640,480,!1,!0);c.setClosable(!0);c.setVisible(!0)}else mxClient.IS_NS?(c=window.open(),c.document.writeln("<pre>"+mxUtils.htmlEntities(a)+"</pre"),c.document.close()):(c=window.open(),d=c.document.createElement("pre"),d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g," "),c.document.body.appendChild(d))},alert:function(a){alert(a)},prompt:function(a,b){return prompt(a, -null!=b?b:"")},confirm:function(a){return confirm(a)},error:function(a,b,c,d){var e=document.createElement("div");e.style.padding="20px";var f=document.createElement("img");f.setAttribute("src",d||mxUtils.errorImage);f.setAttribute("valign","bottom");f.style.verticalAlign="middle";e.appendChild(f);e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));mxUtils.write(e,a);a=document.body.clientWidth;d=document.body.clientHeight|| -document.documentElement.clientHeight;var g=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,e,(a-b)/2,d/4,b,null,!1,!0);c&&(mxUtils.br(e),b=document.createElement("p"),c=document.createElement("button"),mxClient.IS_IE?c.style.cssText="float:right":c.setAttribute("style","float:right"),mxEvent.addListener(c,"click",function(a){g.destroy()}),mxUtils.write(c,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),b.appendChild(c),e.appendChild(b),mxUtils.br(e),g.setClosable(!0)); -g.setVisible(!0);return g},makeDraggable:function(a,b,c,d,e,f,g,k,l,m){a=new mxDragSource(a,c);a.dragOffset=new mxPoint(null!=e?e:0,null!=f?f:mxConstants.TOOLTIP_VERTICAL_OFFSET);a.autoscroll=g;a.setGuidesEnabled(!1);null!=l&&(a.highlightDropTargets=l);null!=m&&(a.getDropTarget=m);a.getGraphForEvent=function(a){return"function"==typeof b?b(a):b};null!=d&&(a.createDragElement=function(){return d.cloneNode(!0)},k&&(a.createPreviewElement=function(a){var b=d.cloneNode(!0),c=parseInt(b.style.width),e= -parseInt(b.style.height);b.style.width=Math.round(c*a.view.scale)+"px";b.style.height=Math.round(e*a.view.scale)+"px";return b}));return a}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml", +linkAction:function(a,b,c,d,e){return mxUtils.link(a,b,function(){c.execute(d)},e)},linkInvoke:function(a,b,c,d,e,f){return mxUtils.link(a,b,function(){c[d](e)},f)},link:function(a,b,c,d){var e=document.createElement("span");e.style.color="blue";e.style.textDecoration="underline";e.style.cursor="pointer";null!=d&&(e.style.paddingLeft=d+"px");mxEvent.addListener(e,"click",c);mxUtils.write(e,b);null!=a&&a.appendChild(e);return e},getDocumentSize:function(){var a=document.body,b=document.documentElement; +try{return new mxRectangle(0,0,a.clientWidth||b.clientWidth,Math.max(a.clientHeight||0,b.clientHeight))}catch(c){return new mxRectangle}},fit:function(a){var b=mxUtils.getDocumentSize(),c=parseInt(a.offsetLeft),d=parseInt(a.offsetWidth),e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),f=e.x,e=e.y,g=f+b.width;c+d>g&&(a.style.left=Math.max(f,g-d)+"px");c=parseInt(a.offsetTop);d=parseInt(a.offsetHeight);b=e+b.height;c+d>b&&(a.style.top=Math.max(e,b-d)+"px")},load:function(a){a=new mxXmlRequest(a,null, +"GET",!1);a.send();return a},get:function(a,b,c,d,e,f){a=new mxXmlRequest(a,null,"GET");null!=d&&a.setBinary(d);a.send(b,c,e,f);return a},getAll:function(a,b,c){for(var d=a.length,e=[],f=0,g=function(){0==f&&null!=c&&c();f++},k=0;k<a.length;k++)(function(a,c){mxUtils.get(a,function(a){var f=a.getStatus();200>f||299<f?g():(e[c]=a,d--,0==d&&b(e))},g)})(a[k],k);0==d&&b(e)},post:function(a,b,c,d){return(new mxXmlRequest(a,b)).send(c,d)},submit:function(a,b,c,d){return(new mxXmlRequest(a,b)).simulate(c, +d)},loadInto:function(a,b,c){mxClient.IS_IE?b.onreadystatechange=function(){4==b.readyState&&c()}:b.addEventListener("load",c,!1);b.load(a)},getValue:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c);return a},getNumber:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c||0);return Number(a)},getColor:function(a,b,c){a=null!=a?a[b]:null;null==a?a=c:a==mxConstants.NONE&&(a=null);return a},clone:function(a,b,c){c=null!=c?c:!1;var d=null;if(null!=a&&"function"==typeof a.constructor){var d=new a.constructor, +e;for(e in a)e!=mxObjectIdentity.FIELD_NAME&&(null==b||0>mxUtils.indexOf(b,e))&&(d[e]=c||"object"!=typeof a[e]?a[e]:mxUtils.clone(a[e]))}return d},equalPoints:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b)for(var c=0;c<a.length;c++)if(a[c]==b[c]||null!=a[c]&&!a[c].equals(b[c]))return!1;return!0},equalEntries:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b){var c= +0,d;for(d in b)c++;for(d in a)if(c--,!(mxUtils.isNaN(a[d])&&mxUtils.isNaN(b[d])||a[d]==b[d]))return!1}return 0==c},removeDuplicates:function(a){for(var b=new mxDictionary,c=[],d=0;d<a.length;d++)b.get(a[d])||(c.push(a[d]),b.put(a[d],!0));return c},isNaN:function(a){return"number"==typeof a&&isNaN(a)},extend:function(a,b){var c=function(){};c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a},toString:function(a){var b="",c;for(c in a)try{if(null==a[c])b+=c+" = [null]\n";else if("function"== +typeof a[c])b+=c+" => [Function]\n";else if("object"==typeof a[c])var d=mxUtils.getFunctionName(a[c].constructor),b=b+(c+" => ["+d+"]\n");else b+=c+" = "+a[c]+"\n"}catch(e){b+=c+"="+e.message}return b},toRadians:function(a){return Math.PI*a/180},toDegree:function(a){return 180*a/Math.PI},arcToCurves:function(a,b,c,d,e,f,g,k,l){k-=a;l-=b;if(0===c||0===d)return q;c=Math.abs(c);d=Math.abs(d);var m=-k/2,n=-l/2,p=Math.cos(e*Math.PI/180),q=Math.sin(e*Math.PI/180);e=p*m+q*n;var m=-1*q*m+p*n,n=e*e,r=m*m, +t=c*c,u=d*d,x=n/t+r/u;1<x?(c*=Math.sqrt(x),d*=Math.sqrt(x),f=0):(x=1,f===g&&(x=-1),f=x*Math.sqrt((t*u-t*r-u*n)/(t*r+u*n)));n=f*c*m/d;r=-1*f*d*e/c;k=p*n-q*r+k/2;l=q*n+p*r+l/2;t=Math.atan2((m-r)/d,(e-n)/c)-Math.atan2(0,1);f=0<=t?t:2*Math.PI+t;t=Math.atan2((-m-r)/d,(-e-n)/c)-Math.atan2((m-r)/d,(e-n)/c);e=0<=t?t:2*Math.PI+t;0==g&&0<e?e-=2*Math.PI:0!=g&&0>e&&(e+=2*Math.PI);g=2*e/Math.PI;g=Math.ceil(0>g?-1*g:g);e/=g;m=8/3*Math.sin(e/4)*Math.sin(e/4)/Math.sin(e/2);n=p*c;p*=d;c*=q;d*=q;for(var y=Math.cos(f), +A=Math.sin(f),r=-m*(n*A+d*y),t=-m*(c*A-p*y),q=[],z=0;z<g;++z){f+=e;var y=Math.cos(f),A=Math.sin(f),u=n*y-d*A+k,x=c*y+p*A+l,v=-m*(n*A+d*y),y=-m*(c*A-p*y),A=6*z;q[A]=Number(r+a);q[A+1]=Number(t+b);q[A+2]=Number(u-v+a);q[A+3]=Number(x-y+b);q[A+4]=Number(u+a);q[A+5]=Number(x+b);r=u+v;t=x+y}return q},getBoundingBox:function(a,b,c){var d=null;if(null!=a&&null!=b&&0!=b){b=mxUtils.toRadians(b);var d=Math.cos(b),e=Math.sin(b);c=null!=c?c:new mxPoint(a.x+a.width/2,a.y+a.height/2);var f=new mxPoint(a.x,a.y); +b=new mxPoint(a.x+a.width,a.y);var g=new mxPoint(b.x,a.y+a.height);a=new mxPoint(a.x,g.y);f=mxUtils.getRotatedPoint(f,d,e,c);b=mxUtils.getRotatedPoint(b,d,e,c);g=mxUtils.getRotatedPoint(g,d,e,c);a=mxUtils.getRotatedPoint(a,d,e,c);d=new mxRectangle(f.x,f.y,0,0);d.add(new mxRectangle(b.x,b.y,0,0));d.add(new mxRectangle(g.x,g.y,0,0));d.add(new mxRectangle(a.x,a.y,0,0))}return d},getRotatedPoint:function(a,b,c,d){d=null!=d?d:new mxPoint;var e=a.x-d.x;a=a.y-d.y;return new mxPoint(e*b-a*c+d.x,a*b+e*c+d.y)}, +getPortConstraints:function(a,b,c,d){b=mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT,mxUtils.getValue(b.style,c?mxConstants.STYLE_SOURCE_PORT_CONSTRAINT:mxConstants.STYLE_TARGET_PORT_CONSTRAINT,null));if(null==b)return d;d=b.toString();b=mxConstants.DIRECTION_MASK_NONE;c=0;1==mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT_ROTATION,0)&&(c=mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION,0));a=0;45<c?(a=1,135<=c&&(a=2)):-45>c&&(a=3,-135>=c&&(a=2));if(0<=d.indexOf(mxConstants.DIRECTION_NORTH))switch(a){case 0:b|= +mxConstants.DIRECTION_MASK_NORTH;break;case 1:b|=mxConstants.DIRECTION_MASK_EAST;break;case 2:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 3:b|=mxConstants.DIRECTION_MASK_WEST}if(0<=d.indexOf(mxConstants.DIRECTION_WEST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_WEST;break;case 1:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 2:b|=mxConstants.DIRECTION_MASK_EAST;break;case 3:b|=mxConstants.DIRECTION_MASK_SOUTH}if(0<=d.indexOf(mxConstants.DIRECTION_SOUTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_SOUTH; +break;case 1:b|=mxConstants.DIRECTION_MASK_WEST;break;case 2:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 3:b|=mxConstants.DIRECTION_MASK_EAST}if(0<=d.indexOf(mxConstants.DIRECTION_EAST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_EAST;break;case 1:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 2:b|=mxConstants.DIRECTION_MASK_WEST;break;case 3:b|=mxConstants.DIRECTION_MASK_NORTH}return b},reversePortConstraints:function(a){var b;b=(a&mxConstants.DIRECTION_MASK_WEST)<<3;b|=(a&mxConstants.DIRECTION_MASK_NORTH)<< +1;b|=(a&mxConstants.DIRECTION_MASK_SOUTH)>>1;return b|(a&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(a,b,c){var d=-1;if(0<a.absolutePoints.length)for(var e=a.absolutePoints[0],f=null,g=1;g<a.absolutePoints.length;g++){var k=a.absolutePoints[g],e=mxUtils.ptSegDistSq(e.x,e.y,k.x,k.y,b,c);if(null==f||e<f)f=e,d=g-1;e=k}return d},getDirectedBounds:function(a,b,c,d,e){var f=mxUtils.getValue(c,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);d=null!=d?d:mxUtils.getValue(c,mxConstants.STYLE_FLIPH, +!1);e=null!=e?e:mxUtils.getValue(c,mxConstants.STYLE_FLIPV,!1);b.x=Math.round(Math.max(0,Math.min(a.width,b.x)));b.y=Math.round(Math.max(0,Math.min(a.height,b.y)));b.width=Math.round(Math.max(0,Math.min(a.width,b.width)));b.height=Math.round(Math.max(0,Math.min(a.height,b.height)));if(e&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||d&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.x,b.x=b.width,b.width=c;if(d&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)|| +e&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.y,b.y=b.height,b.height=c;d=mxRectangle.fromRectangle(b);f==mxConstants.DIRECTION_SOUTH?(d.y=b.x,d.x=b.height,d.width=b.y,d.height=b.width):f==mxConstants.DIRECTION_WEST?(d.y=b.height,d.x=b.width,d.width=b.x,d.height=b.y):f==mxConstants.DIRECTION_NORTH&&(d.y=b.width,d.x=b.y,d.width=b.height,d.height=b.x);return new mxRectangle(a.x+d.x,a.y+d.y,a.width-d.width-d.x,a.height-d.height-d.y)},getPerimeterPoint:function(a,b,c){for(var d= +null,e=0;e<a.length-1;e++){var f=mxUtils.intersection(a[e].x,a[e].y,a[e+1].x,a[e+1].y,b.x,b.y,c.x,c.y);if(null!=f){var g=c.x-f.x,k=c.y-f.y,f={p:f,distSq:k*k+g*g};null!=f&&(null==d||d.distSq>f.distSq)&&(d=f)}}return null!=d?d.p:null},rectangleIntersectsSegment:function(a,b,c){var d=a.y,e=a.x,f=d+a.height,g=e+a.width;a=b.x;var k=c.x;b.x>c.x&&(a=c.x,k=b.x);k>g&&(k=g);a<e&&(a=e);if(a>k)return!1;var e=b.y,g=c.y,l=c.x-b.x;1E-7<Math.abs(l)&&(c=(c.y-b.y)/l,b=b.y-c*b.x,e=c*a+b,g=c*k+b);e>g&&(b=g,g=e,e=b); +g>f&&(g=f);e<d&&(e=d);return e>g?!1:!0},contains:function(a,b,c){return a.x<=b&&a.x+a.width>=b&&a.y<=c&&a.y+a.height>=c},intersects:function(a,b){var c=a.width,d=a.height,e=b.width,f=b.height;if(0>=e||0>=f||0>=c||0>=d)return!1;var g=a.x,k=a.y,l=b.x,m=b.y,e=e+l,f=f+m,c=c+g,d=d+k;return(e<l||e>g)&&(f<m||f>k)&&(c<g||c>l)&&(d<k||d>m)},intersectsHotspot:function(a,b,c,d,e,f){d=null!=d?d:1;e=null!=e?e:0;f=null!=f?f:0;if(0<d){var g=a.getCenterX(),k=a.getCenterY(),l=a.width,m=a.height,n=mxUtils.getValue(a.style, +mxConstants.STYLE_STARTSIZE)*a.view.scale;0<n&&(mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,!0)?(k=a.y+n/2,m=n):(g=a.x+n/2,l=n));l=Math.max(e,l*d);m=Math.max(e,m*d);0<f&&(l=Math.min(l,f),m=Math.min(m,f));d=new mxRectangle(g-l/2,k-m/2,l,m);g=mxUtils.toRadians(mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION)||0);0!=g&&(e=Math.cos(-g),f=Math.sin(-g),g=new mxPoint(a.getCenterX(),a.getCenterY()),a=mxUtils.getRotatedPoint(new mxPoint(b,c),e,f,g),b=a.x,c=a.y);return mxUtils.contains(d,b,c)}return!0}, +getOffset:function(a,b){for(var c=0,d=0,e=!1,f=a,g=document.body,k=document.documentElement;null!=f&&f!=g&&f!=k&&!e;){var l=mxUtils.getCurrentStyle(f);null!=l&&(e=e||"fixed"==l.position);f=f.parentNode}b||e||(e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),c+=e.x,d+=e.y);e=a.getBoundingClientRect();null!=e&&(c+=e.left,d+=e.top);return new mxPoint(c,d)},getDocumentScrollOrigin:function(a){if(mxClient.IS_QUIRKS)return new mxPoint(a.body.scrollLeft,a.body.scrollTop);a=a.defaultView||a.parentWindow; +return new mxPoint(null!=a&&void 0!==window.pageXOffset?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft,null!=a&&void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop)},getScrollOrigin:function(a,b,c){b=null!=b?b:!1;c=null!=c?c:!0;for(var d=null!=a?a.ownerDocument:document,e=d.body,f=d.documentElement,g=new mxPoint,k=!1;null!=a&&a!=e&&a!=f;){isNaN(a.scrollLeft)||isNaN(a.scrollTop)|| +(g.x+=a.scrollLeft,g.y+=a.scrollTop);var l=mxUtils.getCurrentStyle(a);null!=l&&(k=k||"fixed"==l.position);a=b?a.parentNode:null}!k&&c&&(a=mxUtils.getDocumentScrollOrigin(d),g.x+=a.x,g.y+=a.y);return g},convertPoint:function(a,b,c){var d=mxUtils.getScrollOrigin(a,!1);a=mxUtils.getOffset(a);a.x-=d.x;a.y-=d.y;return new mxPoint(b-a.x,c-a.y)},ltrim:function(a,b){return null!=a?a.replace(new RegExp("^["+(b||"\\s")+"]+","g"),""):null},rtrim:function(a,b){return null!=a?a.replace(new RegExp("["+(b||"\\s")+ +"]+$","g"),""):null},trim:function(a,b){return mxUtils.ltrim(mxUtils.rtrim(a,b),b)},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)&&("string"!=typeof a||0>a.toLowerCase().indexOf("0x"))},isInteger:function(a){return String(parseInt(a))===String(a)},mod:function(a,b){return(a%b+b)%b},intersection:function(a,b,c,d,e,f,g,k){var l=(k-f)*(c-a)-(g-e)*(d-b);g=((g-e)*(b-f)-(k-f)*(a-e))/l;e=((c-a)*(b-f)-(d-b)*(a-e))/l;return 0<=g&&1>=g&&0<=e&&1>=e?new mxPoint(a+g*(c-a),b+g*(d-b)):null},ptSegDistSq:function(a, +b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;0>=e*c+f*d?c=0:(e=c-e,f=d-f,a=e*c+f*d,c=0>=a?0:a*a/(c*c+d*d));e=e*e+f*f-c;0>e&&(e=0);return e},ptLineDist:function(a,b,c,d,e,f){return Math.abs((d-b)*e-(c-a)*f+c*b-d*a)/Math.sqrt((d-b)*(d-b)+(c-a)*(c-a))},relativeCcw:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;a=e*d-f*c;0==a&&(a=e*c+f*d,0<a&&(a=(e-c)*c+(f-d)*d,0>a&&(a=0)));return 0>a?-1:0<a?1:0},animateChanges:function(a,b){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(a,b,c){mxEffects.cascadeOpacity.apply(this, +arguments)},fadeOut:function(a,b,c,d,e,f){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(a,b){mxUtils.isVml(a)?a.style.filter=100<=b?"":"alpha(opacity="+b/5+")":mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?a.style.filter=100<=b?"":"alpha(opacity="+b+")":a.style.opacity=b/100},createImage:function(a){var b;mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?(b=document.createElement(mxClient.VML_PREFIX+":image"),b.setAttribute("src",a),b.style.borderStyle= +"none"):(b=document.createElement("img"),b.setAttribute("src",a),b.setAttribute("border","0"));return b},sortCells:function(a,b){b=null!=b?b:!0;var c=new mxDictionary;a.sort(function(a,e){var d=c.get(a);null==d&&(d=mxCellPath.create(a).split(mxCellPath.PATH_SEPARATOR),c.put(a,d));var g=c.get(e);null==g&&(g=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),c.put(e,g));d=mxCellPath.compare(d,g);return 0==d?0:0<d==b?1:-1});return a},getStylename:function(a){return null!=a&&(a=a.split(";")[0],0>a.indexOf("="))? +a:""},getStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0>a[c].indexOf("=")&&b.push(a[c])}return b},indexOfStylename:function(a,b){if(null!=a&&null!=b)for(var c=a.split(";"),d=0,e=0;e<c.length;e++){if(c[e]==b)return d;d+=c[e].length+1}return-1},addStylename:function(a,b){0>mxUtils.indexOfStylename(a,b)&&(null==a?a="":0<a.length&&";"!=a.charAt(a.length-1)&&(a+=";"),a+=b);return a},removeStylename:function(a,b){var c=[];if(null!=a)for(var d=a.split(";"),e=0;e< +d.length;e++)d[e]!=b&&c.push(d[e]);return c.join(";")},removeAllStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0<=a[c].indexOf("=")&&b.push(a[c])}return b.join(";")},setCellStyles:function(a,b,c,d){if(null!=b&&0<b.length){a.beginUpdate();try{for(var e=0;e<b.length;e++)if(null!=b[e]){var f=mxUtils.setStyle(a.getStyle(b[e]),c,d);a.setStyle(b[e],f)}}finally{a.endUpdate()}}},setStyle:function(a,b,c){var d=null!=c&&("undefined"==typeof c.length||0<c.length);if(null== +a||0==a.length)d&&(a=b+"="+c+";");else if(a.substring(0,b.length+1)==b+"="){var e=a.indexOf(";");a=d?b+"="+c+(0>e?";":a.substring(e)):0>e||e==a.length-1?"":a.substring(e+1)}else{var f=a.indexOf(";"+b+"=");0>f?d&&(d=";"==a.charAt(a.length-1)?"":";",a=a+d+b+"="+c+";"):(e=a.indexOf(";",f+1),a=d?a.substring(0,f+1)+b+"="+c+(0>e?";":a.substring(e)):a.substring(0,f)+(0>e?";":a.substring(e)))}return a},setCellStyleFlags:function(a,b,c,d,e){if(null!=b&&0<b.length){a.beginUpdate();try{for(var f=0;f<b.length;f++)if(null!= +b[f]){var g=mxUtils.setStyleFlag(a.getStyle(b[f]),c,d,e);a.setStyle(b[f],g)}}finally{a.endUpdate()}}},setStyleFlag:function(a,b,c,d){if(null==a||0==a.length)a=d||null==d?b+"="+c:b+"=0";else{var e=a.indexOf(b+"=");if(0>e)e=";"==a.charAt(a.length-1)?"":";",a=d||null==d?a+e+b+"="+c:a+e+b+"=0";else{var f=a.indexOf(";",e),g;g=0>f?a.substring(e+b.length+1):a.substring(e+b.length+1,f);g=null==d?parseInt(g)^c:d?parseInt(g)|c:parseInt(g)&~c;a=a.substring(0,e)+b+"="+g+(0<=f?a.substring(f):"")}}return a},getAlignmentAsPoint:function(a, +b){var c=0,d=0;a==mxConstants.ALIGN_CENTER?c=-.5:a==mxConstants.ALIGN_RIGHT&&(c=-1);b==mxConstants.ALIGN_MIDDLE?d=-.5:b==mxConstants.ALIGN_BOTTOM&&(d=-1);return new mxPoint(c,d)},getSizeForString:function(a,b,c,d){b=null!=b?b:mxConstants.DEFAULT_FONTSIZE;c=null!=c?c:mxConstants.DEFAULT_FONTFAMILY;var e=document.createElement("div");e.style.fontFamily=c;e.style.fontSize=Math.round(b)+"px";e.style.lineHeight=Math.round(b*mxConstants.LINE_HEIGHT)+"px";e.style.position="absolute";e.style.visibility="hidden"; +e.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";e.style.zoom="1";null!=d?(e.style.width=d+"px",e.style.whiteSpace="normal"):e.style.whiteSpace="nowrap";e.innerHTML=a;document.body.appendChild(e);a=new mxRectangle(0,0,e.offsetWidth,e.offsetHeight);document.body.removeChild(e);return a},getViewXml:function(a,b,c,d,e){d=null!=d?d:0;e=null!=e?e:0;b=null!=b?b:1;null==c&&(c=[a.getModel().getRoot()]);var f=a.getView(),g=null,k=f.isEventsEnabled();f.setEventsEnabled(!1);var l=f.drawPane,m=f.overlayPane; +a.dialect==mxConstants.DIALECT_SVG?(f.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),f.canvas.appendChild(f.drawPane),f.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(f.drawPane=f.drawPane.cloneNode(!1),f.canvas.appendChild(f.drawPane),f.overlayPane=f.overlayPane.cloneNode(!1));f.canvas.appendChild(f.overlayPane);var n=f.getTranslate();f.translate=new mxPoint(d,e);b=new mxTemporaryCellStates(a.getView(),b,c);try{g=(new mxCodec).encode(a.getView())}finally{b.destroy(),f.translate= +n,f.canvas.removeChild(f.drawPane),f.canvas.removeChild(f.overlayPane),f.drawPane=l,f.overlayPane=m,f.setEventsEnabled(k)}return g},getScaleForPageCount:function(a,b,c,d){if(1>a)return 1;c=null!=c?c:mxConstants.PAGE_FORMAT_A4_PORTRAIT;d=null!=d?d:0;var e=c.width-2*d;c=c.height-2*d;d=b.getGraphBounds().clone();b=b.getView().getScale();d.width/=b;d.height/=b;b=d.width;var f=Math.sqrt(a);d=Math.sqrt(b/d.height/(e/c));c=f*d;d=f/d;if(1>c&&d>a){var g=d/a;d=a;c/=g}1>d&&c>a&&(g=c/a,c=a,d/=g);g=Math.ceil(c)* +Math.ceil(d);for(f=0;g>a;){var g=Math.floor(c)/c,k=Math.floor(d)/d;1==g&&(g=Math.floor(c-1)/c);1==k&&(k=Math.floor(d-1)/d);g=g>k?g:k;c*=g;d*=g;g=Math.ceil(c)*Math.ceil(d);f++;if(10<f)break}return e*c/b*.99999},show:function(a,b,c,d,e,f){c=null!=c?c:0;d=null!=d?d:0;null==b?b=window.open().document:b.open();9==document.documentMode&&b.writeln('\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=9"><![endif]--\x3e');var g=a.getGraphBounds(),k=Math.ceil(c-g.x),l=Math.ceil(d-g.y);null==e&&(e= +Math.ceil(g.width+c)+Math.ceil(Math.ceil(g.x)-g.x));null==f&&(f=Math.ceil(g.height+d)+Math.ceil(Math.ceil(g.y)-g.y));if(mxClient.IS_IE||11==document.documentMode){d="<html><head>";g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)d+=g[c].outerHTML;d+="<style>";for(c=0;c<document.styleSheets.length;c++)try{d+=document.styleSheets[c].cssText}catch(m){}d=d+'</style></head><body style="margin:0px;">'+('<div style="position:absolute;overflow:hidden;width:'+e+"px;height:"+f+'px;"><div style="position:relative;left:'+ +k+"px;top:"+l+'px;">')+a.container.innerHTML;b.writeln(d+"</div></div></body><html>");b.close()}else{b.writeln("<html><head>");g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)b.writeln(mxUtils.getOuterHtml(g[c]));d=document.getElementsByTagName("link");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));d=document.getElementsByTagName("style");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));b.writeln('</head><body style="margin:0px;"></body></html>');b.close(); +c=b.createElement("div");c.position="absolute";c.overflow="hidden";c.style.width=e+"px";c.style.height=f+"px";e=b.createElement("div");e.style.position="absolute";e.style.left=k+"px";e.style.top=l+"px";f=a.container.firstChild;for(d=null;null!=f;)g=f.cloneNode(!0),f==a.view.drawPane.ownerSVGElement?(c.appendChild(g),d=g):e.appendChild(g),f=f.nextSibling;b.body.appendChild(c);null!=e.firstChild&&b.body.appendChild(e);null!=d&&(d.style.minWidth="",d.style.minHeight="",d.firstChild.setAttribute("transform", +"translate("+k+","+l+")"))}mxUtils.removeCursors(b.body);return b},printScreen:function(a){var b=window.open();a.getGraphBounds();mxUtils.show(a,b.document);a=function(){b.focus();b.print();b.close()};mxClient.IS_GC?b.setTimeout(a,500):a()},popup:function(a,b){if(b){var c=document.createElement("div");c.style.overflow="scroll";c.style.width="636px";c.style.height="460px";var d=document.createElement("pre");d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g," ");c.appendChild(d); +c=new mxWindow("Popup Window",c,document.body.clientWidth/2-320,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight)/2-240,640,480,!1,!0);c.setClosable(!0);c.setVisible(!0)}else mxClient.IS_NS?(c=window.open(),c.document.writeln("<pre>"+mxUtils.htmlEntities(a)+"</pre"),c.document.close()):(c=window.open(),d=c.document.createElement("pre"),d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g," "),c.document.body.appendChild(d))},alert:function(a){alert(a)}, +prompt:function(a,b){return prompt(a,null!=b?b:"")},confirm:function(a){return confirm(a)},error:function(a,b,c,d){var e=document.createElement("div");e.style.padding="20px";var f=document.createElement("img");f.setAttribute("src",d||mxUtils.errorImage);f.setAttribute("valign","bottom");f.style.verticalAlign="middle";e.appendChild(f);e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));mxUtils.write(e,a);a=document.body.clientWidth; +d=document.body.clientHeight||document.documentElement.clientHeight;var g=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,e,(a-b)/2,d/4,b,null,!1,!0);c&&(mxUtils.br(e),b=document.createElement("p"),c=document.createElement("button"),mxClient.IS_IE?c.style.cssText="float:right":c.setAttribute("style","float:right"),mxEvent.addListener(c,"click",function(a){g.destroy()}),mxUtils.write(c,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),b.appendChild(c),e.appendChild(b), +mxUtils.br(e),g.setClosable(!0));g.setVisible(!0);return g},makeDraggable:function(a,b,c,d,e,f,g,k,l,m){a=new mxDragSource(a,c);a.dragOffset=new mxPoint(null!=e?e:0,null!=f?f:mxConstants.TOOLTIP_VERTICAL_OFFSET);a.autoscroll=g;a.setGuidesEnabled(!1);null!=l&&(a.highlightDropTargets=l);null!=m&&(a.getDropTarget=m);a.getGraphForEvent=function(a){return"function"==typeof b?b(a):b};null!=d&&(a.createDragElement=function(){return d.cloneNode(!0)},k&&(a.createPreviewElement=function(a){var b=d.cloneNode(!0), +c=parseInt(b.style.width),e=parseInt(b.style.height);b.style.width=Math.round(c*a.view.scale)+"px";b.style.height=Math.round(e*a.view.scale)+"px";return b}));return a}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml", NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",VML_SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",OUTLINE_HIGHLIGHT_COLOR:"#00FF00", OUTLINE_HIGHLIGHT_STROKEWIDTH:5,HIGHLIGHT_STROKEWIDTH:3,HIGHLIGHT_SIZE:2,HIGHLIGHT_OPACITY:100,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_TERMINAL_HANDLE:"pointer",CURSOR_BEND_HANDLE:"crosshair",CURSOR_VIRTUAL_BEND_HANDLE:"crosshair",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00", VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:6,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF", @@ -1228,7 +1228,8 @@ mxGraph.prototype.createTooltipHandler=function(){return new mxTooltipHandler(th mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)};mxGraph.prototype.createStylesheet=function(){return new mxStylesheet};mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)};mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer};mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)};mxGraph.prototype.getModel=function(){return this.model};mxGraph.prototype.getView=function(){return this.view}; mxGraph.prototype.getStylesheet=function(){return this.stylesheet};mxGraph.prototype.setStylesheet=function(a){this.stylesheet=a};mxGraph.prototype.getSelectionModel=function(){return this.selectionModel};mxGraph.prototype.setSelectionModel=function(a){this.selectionModel=a}; mxGraph.prototype.getSelectionCellsForChanges=function(a){for(var b=new mxDictionary,c=[],d=mxUtils.bind(this,function(a){if(!b.get(a)&&this.model.contains(a))if(this.model.isEdge(a)||this.model.isVertex(a))b.put(a,!0),c.push(a);else for(var e=this.model.getChildCount(a),f=0;f<e;f++)d(this.model.getChildAt(a,f))}),e=0;e<a.length;e++){var f=a[e];if(f.constructor!=mxRootChange){var g=null;f instanceof mxChildChange?g=f.child:null!=f.cell&&f.cell instanceof mxCell&&(g=f.cell);null!=g&&d(g)}}return c}; -mxGraph.prototype.graphModelChanged=function(a){for(var b=0;b<a.length;b++)this.processChange(a[b]);this.updateSelection();this.view.validate();this.sizeDidChange()};mxGraph.prototype.updateSelection=function(){for(var a=this.getSelectionCells(),b=[],c=0;c<a.length;c++)if(this.model.contains(a[c]))for(var d=this.model.getParent(a[c]);null!=d&&d!=this.view.currentRoot;){if(this.isCellCollapsed(d)||!this.isCellVisible(d)){b.push(a[c]);break}d=this.model.getParent(d)}else b.push(a[c]);this.removeSelectionCells(b)}; +mxGraph.prototype.graphModelChanged=function(a){for(var b=0;b<a.length;b++)this.processChange(a[b]);this.updateSelection();this.view.validate();this.sizeDidChange()}; +mxGraph.prototype.updateSelection=function(){for(var a=this.getSelectionCells(),b=[],c=0;c<a.length;c++)if(this.model.contains(a[c])&&this.isCellVisible(a[c]))for(var d=this.model.getParent(a[c]);null!=d&&d!=this.view.currentRoot;){if(this.isCellCollapsed(d)||!this.isCellVisible(d)){b.push(a[c]);break}d=this.model.getParent(d)}else b.push(a[c]);this.removeSelectionCells(b)}; mxGraph.prototype.processChange=function(a){if(a instanceof mxRootChange)this.clearSelection(),this.setDefaultParent(null),this.removeStateForCell(a.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(a instanceof mxChildChange){var b=this.model.getParent(a.child);this.view.invalidate(a.child,!0,!0);if(!this.model.contains(b)||this.isCellCollapsed(b))this.view.invalidate(a.child,!0,!0),this.removeStateForCell(a.child), this.view.currentRoot==a.child&&this.home();b!=a.previous&&(null!=b&&this.view.invalidate(b,!1,!1),null!=a.previous&&this.view.invalidate(a.previous,!1,!1))}else a instanceof mxTerminalChange||a instanceof mxGeometryChange?(a instanceof mxTerminalChange||null==a.previous&&null!=a.geometry||null!=a.previous&&!a.previous.equals(a.geometry))&&this.view.invalidate(a.cell):a instanceof mxValueChange?this.view.invalidate(a.cell,!1,!1):a instanceof mxStyleChange?(this.view.invalidate(a.cell,!0,!0),a=this.view.getState(a.cell), null!=a&&(a.style=null)):null!=a.cell&&a.cell instanceof mxCell&&this.removeStateForCell(a.cell)};mxGraph.prototype.removeStateForCell=function(a){for(var b=this.model.getChildCount(a),c=0;c<b;c++)this.removeStateForCell(this.model.getChildAt(a,c));this.view.invalidate(a,!1,!0);this.view.removeState(a)}; @@ -1278,17 +1279,17 @@ mxGraph.prototype.updateGroupBounds=function(a,b,c,d,e,f,g){null==a&&(a=this.get r.height;l=l.clone();c&&(l.x=Math.round(l.x+n.x-b-p-g),l.y=Math.round(l.y+n.y-b-q-d));l.width=Math.round(n.width+2*b+p+g+e);l.height=Math.round(n.height+2*b+q+d+f);this.model.setGeometry(a[k],l);this.moveCells(m,b+p-n.x+g,b+q-n.y+d)}}}}}finally{this.model.endUpdate()}return a}; mxGraph.prototype.getBoundingBox=function(a){var b=null;if(null!=a&&0<a.length)for(var c=0;c<a.length;c++)if(this.model.isVertex(a[c])||this.model.isEdge(a[c])){var d=this.view.getBoundingBox(this.view.getState(a[c]),!0);null!=d&&(null==b?b=mxRectangle.fromRectangle(d):b.add(d))}return b};mxGraph.prototype.cloneCell=function(a,b,c,d){return this.cloneCells([a],b,c,d)[0]}; mxGraph.prototype.cloneCells=function(a,b,c,d){b=null!=b?b:!0;var e=null;if(null!=a){for(var f=new mxDictionary,e=[],g=0;g<a.length;g++)f.put(a[g],!0),e.push(a[g]);if(0<e.length)for(var k=this.view.scale,l=this.view.translate,e=this.model.cloneCells(a,!0,c),g=0;g<a.length;g++)if(!b&&this.model.isEdge(e[g])&&null!=this.getEdgeValidationError(e[g],this.model.getTerminal(e[g],!0),this.model.getTerminal(e[g],!1)))e[g]=null;else{var m=this.model.getGeometry(e[g]);if(null!=m){var n=this.view.getState(a[g]), -p=this.view.getState(this.model.getParent(a[g]));if(null!=n&&null!=p)if(c=d?0:p.origin.x,p=d?0:p.origin.y,this.model.isEdge(e[g])){for(var n=n.absolutePoints,q=this.model.getTerminal(a[g],!0);null!=q&&!f.get(q);)q=this.model.getParent(q);null==q&&m.setTerminalPoint(new mxPoint(n[0].x/k-l.x,n[0].y/k-l.y),!0);for(q=this.model.getTerminal(a[g],!1);null!=q&&!f.get(q);)q=this.model.getParent(q);null==q&&(q=n.length-1,m.setTerminalPoint(new mxPoint(n[q].x/k-l.x,n[q].y/k-l.y),!1));m=m.points;if(null!=m)for(n= -0;n<m.length;n++)m[n].x+=c,m[n].y+=p}else m.translate(c,p)}}else e=[]}return e};mxGraph.prototype.insertVertex=function(a,b,c,d,e,f,g,k,l){b=this.createVertex(a,b,c,d,e,f,g,k,l);return this.addCell(b,a)};mxGraph.prototype.createVertex=function(a,b,c,d,e,f,g,k,l){a=new mxGeometry(d,e,f,g);a.relative=null!=l?l:!1;c=new mxCell(c,a,k);c.setId(b);c.setVertex(!0);c.setConnectable(!0);return c};mxGraph.prototype.insertEdge=function(a,b,c,d,e,f){b=this.createEdge(a,b,c,d,e,f);return this.addEdge(b,a,d,e)}; -mxGraph.prototype.createEdge=function(a,b,c,d,e,f){a=new mxCell(c,new mxGeometry,f);a.setId(b);a.setEdge(!0);a.geometry.relative=!0;return a};mxGraph.prototype.addEdge=function(a,b,c,d,e){return this.addCell(a,b,e,c,d)};mxGraph.prototype.addCell=function(a,b,c,d,e){return this.addCells([a],b,c,d,e)[0]}; +p=this.view.getState(this.model.getParent(a[g]));if(null!=n&&null!=p)if(c=d?0:p.origin.x,p=d?0:p.origin.y,this.model.isEdge(e[g])){if(n=n.absolutePoints,null!=n){for(var q=this.model.getTerminal(a[g],!0);null!=q&&!f.get(q);)q=this.model.getParent(q);null==q&&m.setTerminalPoint(new mxPoint(n[0].x/k-l.x,n[0].y/k-l.y),!0);for(q=this.model.getTerminal(a[g],!1);null!=q&&!f.get(q);)q=this.model.getParent(q);null==q&&(q=n.length-1,m.setTerminalPoint(new mxPoint(n[q].x/k-l.x,n[q].y/k-l.y),!1));m=m.points; +if(null!=m)for(n=0;n<m.length;n++)m[n].x+=c,m[n].y+=p}}else m.translate(c,p)}}else e=[]}return e};mxGraph.prototype.insertVertex=function(a,b,c,d,e,f,g,k,l){b=this.createVertex(a,b,c,d,e,f,g,k,l);return this.addCell(b,a)};mxGraph.prototype.createVertex=function(a,b,c,d,e,f,g,k,l){a=new mxGeometry(d,e,f,g);a.relative=null!=l?l:!1;c=new mxCell(c,a,k);c.setId(b);c.setVertex(!0);c.setConnectable(!0);return c}; +mxGraph.prototype.insertEdge=function(a,b,c,d,e,f){b=this.createEdge(a,b,c,d,e,f);return this.addEdge(b,a,d,e)};mxGraph.prototype.createEdge=function(a,b,c,d,e,f){a=new mxCell(c,new mxGeometry,f);a.setId(b);a.setEdge(!0);a.geometry.relative=!0;return a};mxGraph.prototype.addEdge=function(a,b,c,d,e){return this.addCell(a,b,e,c,d)};mxGraph.prototype.addCell=function(a,b,c,d,e){return this.addCells([a],b,c,d,e)[0]}; mxGraph.prototype.addCells=function(a,b,c,d,e){null==b&&(b=this.getDefaultParent());null==c&&(c=this.model.getChildCount(b));this.model.beginUpdate();try{this.cellsAdded(a,b,c,d,e,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",a,"parent",b,"index",c,"source",d,"target",e))}finally{this.model.endUpdate()}return a}; mxGraph.prototype.cellsAdded=function(a,b,c,d,e,f,g,k){if(null!=a&&null!=b&&null!=c){this.model.beginUpdate();try{for(var l=f?this.view.getState(b):null,m=null!=l?l.origin:null,n=new mxPoint(0,0),l=0;l<a.length;l++)if(null==a[l])c--;else{var p=this.model.getParent(a[l]);if(null!=m&&a[l]!=b&&b!=p){var q=this.view.getState(p),r=null!=q?q.origin:n,t=this.model.getGeometry(a[l]);if(null!=t){var u=r.x-m.x,x=r.y-m.y,t=t.clone();t.translate(u,x);t.relative||!this.model.isVertex(a[l])||this.isAllowNegativeCoordinates()|| (t.x=Math.max(0,t.x),t.y=Math.max(0,t.y));this.model.setGeometry(a[l],t)}}b==p&&c+l>this.model.getChildCount(b)&&c--;this.model.add(b,a[l],c+l);this.autoSizeCellsOnAdd&&this.autoSizeCell(a[l],!0);(null==k||k)&&this.isExtendParentsOnAdd(a[l])&&this.isExtendParent(a[l])&&this.extendParent(a[l]);(null==g||g)&&this.constrainChild(a[l]);null!=d&&this.cellConnected(a[l],d,!0);null!=e&&this.cellConnected(a[l],e,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",a,"parent",b,"index",c,"source", d,"target",e,"absolute",f))}finally{this.model.endUpdate()}}};mxGraph.prototype.autoSizeCell=function(a,b){if(null!=b?b:1)for(var c=this.model.getChildCount(a),d=0;d<c;d++)this.autoSizeCell(this.model.getChildAt(a,d));this.getModel().isVertex(a)&&this.isAutoSizeCell(a)&&this.updateCellSize(a)}; mxGraph.prototype.removeCells=function(a,b){b=null!=b?b:!0;null==a&&(a=this.getDeletableCells(this.getSelectionCells()));if(b)a=this.getDeletableCells(this.addAllEdges(a));else{a=a.slice();for(var c=this.getDeletableCells(this.getAllEdges(a)),d=new mxDictionary,e=0;e<a.length;e++)d.put(a[e],!0);for(e=0;e<c.length;e++)null!=this.view.getState(c[e])||d.get(c[e])||(d.put(c[e],!0),a.push(c[e]))}this.model.beginUpdate();try{this.cellsRemoved(a),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells", a,"includeEdges",b))}finally{this.model.endUpdate()}return a}; -mxGraph.prototype.cellsRemoved=function(a){if(null!=a&&0<a.length){var b=this.view.scale,c=this.view.translate;this.model.beginUpdate();try{for(var d=new mxDictionary,e=0;e<a.length;e++)d.put(a[e],!0);for(e=0;e<a.length;e++){for(var f=this.getAllEdges([a[e]]),g=mxUtils.bind(this,function(d,f){var g=this.model.getGeometry(d);if(null!=g){for(var k=this.model.getTerminal(d,f),l=!1,m=k;null!=m;){if(a[e]==m){l=!0;break}m=this.model.getParent(m)}l&&(g=g.clone(),l=this.view.getState(d),null!=l?(k=l.absolutePoints, -m=f?0:k.length-1,g.setTerminalPoint(new mxPoint(k[m].x/b-c.x-l.origin.x,k[m].y/b-c.y-l.origin.y),f)):(k=this.view.getState(k),null!=k&&g.setTerminalPoint(new mxPoint(k.getCenterX()/b-c.x,k.getCenterY()/b-c.y),f)),this.model.setGeometry(d,g),this.model.setTerminal(d,null,f))}}),k=0;k<f.length;k++)d.get(f[k])||(d.put(f[k],!0),g(f[k],!0),g(f[k],!1));this.model.remove(a[e])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",a))}finally{this.model.endUpdate()}}}; +mxGraph.prototype.cellsRemoved=function(a){if(null!=a&&0<a.length){var b=this.view.scale,c=this.view.translate;this.model.beginUpdate();try{for(var d=new mxDictionary,e=0;e<a.length;e++)d.put(a[e],!0);for(e=0;e<a.length;e++){for(var f=this.getAllEdges([a[e]]),g=mxUtils.bind(this,function(d,f){var g=this.model.getGeometry(d);if(null!=g){for(var k=this.model.getTerminal(d,f),l=!1,m=k;null!=m;){if(a[e]==m){l=!0;break}m=this.model.getParent(m)}l&&(g=g.clone(),l=this.view.getState(d),null!=l&&null!=l.absolutePoints? +(k=l.absolutePoints,m=f?0:k.length-1,g.setTerminalPoint(new mxPoint(k[m].x/b-c.x-l.origin.x,k[m].y/b-c.y-l.origin.y),f)):(k=this.view.getState(k),null!=k&&g.setTerminalPoint(new mxPoint(k.getCenterX()/b-c.x,k.getCenterY()/b-c.y),f)),this.model.setGeometry(d,g),this.model.setTerminal(d,null,f))}}),k=0;k<f.length;k++)d.get(f[k])||(d.put(f[k],!0),g(f[k],!0),g(f[k],!1));this.model.remove(a[e])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",a))}finally{this.model.endUpdate()}}}; mxGraph.prototype.splitEdge=function(a,b,c,d,e){d=d||0;e=e||0;var f=this.model.getParent(a),g=this.model.getTerminal(a,!0);this.model.beginUpdate();try{if(null==c){c=this.cloneCell(a);var k=this.view.getState(a),l=this.getCellGeometry(c);if(null!=l&&null!=l.points&&null!=k){var m=this.view.translate,n=this.view.scale,p=mxUtils.findNearestSegment(k,(d+m.x)*n,(e+m.y)*n);l.points=l.points.slice(0,p);l=this.getCellGeometry(a);null!=l&&null!=l.points&&(l=l.clone(),l.points=l.points.slice(p),this.model.setGeometry(a, l))}}this.cellsMoved(b,d,e,!1,!1);this.cellsAdded(b,f,this.model.getChildCount(f),null,null,!0);this.cellsAdded([c],f,this.model.getChildCount(f),g,b[0],!1);this.cellConnected(a,b[0],!0);this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",a,"cells",b,"newEdge",c,"dx",d,"dy",e))}finally{this.model.endUpdate()}return c}; mxGraph.prototype.toggleCells=function(a,b,c){null==b&&(b=this.getSelectionCells());c&&(b=this.addAllEdges(b));this.model.beginUpdate();try{this.cellsToggled(b,a),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",a,"cells",b,"includeEdges",c))}finally{this.model.endUpdate()}return b};mxGraph.prototype.cellsToggled=function(a,b){if(null!=a&&0<a.length){this.model.beginUpdate();try{for(var c=0;c<a.length;c++)this.model.setVisible(a[c],b)}finally{this.model.endUpdate()}}}; @@ -1929,8 +1930,9 @@ mxObjectCodec.prototype.afterEncode=function(a,b,c){return c};mxObjectCodec.prot mxObjectCodec.prototype.decodeAttributes=function(a,b,c){b=b.attributes;if(null!=b)for(var d=0;d<b.length;d++)this.decodeAttribute(a,b[d],c)};mxObjectCodec.prototype.isIgnoredAttribute=function(a,b,c){return"as"==b.nodeName||"id"==b.nodeName}; mxObjectCodec.prototype.decodeAttribute=function(a,b,c){if(!this.isIgnoredAttribute(a,b,c)){var d=b.nodeName;b=this.convertAttributeFromXml(a,b,c);var e=this.getFieldName(d);if(this.isReference(c,e,b,!1)){a=a.getObject(b);if(null==a){mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+d+"="+b);return}b=a}this.isExcluded(c,d,b,!1)||(c[d]=b)}}; mxObjectCodec.prototype.decodeChildren=function(a,b,c){for(b=b.firstChild;null!=b;){var d=b.nextSibling;b.nodeType!=mxConstants.NODETYPE_ELEMENT||this.processInclude(a,b,c)||this.decodeChild(a,b,c);b=d}}; -mxObjectCodec.prototype.decodeChild=function(a,b,c){var d=this.getFieldName(b.getAttribute("as"));if(null==d||!this.isExcluded(c,d,b,!1)){var e=this.getFieldTemplate(c,d,b);"add"==b.nodeName?(a=b.getAttribute("value"),null==a&&mxObjectCodec.allowEval&&(a=mxUtils.eval(mxUtils.getTextContent(b)))):a=a.decode(b,e);this.addObjectValue(c,d,a,e)}};mxObjectCodec.prototype.getFieldTemplate=function(a,b,c){a=a[b];a instanceof Array&&0<a.length&&(a=null);return a}; -mxObjectCodec.prototype.addObjectValue=function(a,b,c,d){null!=c&&c!=d&&(null!=b&&0<b.length?a[b]=c:a.push(c))};mxObjectCodec.prototype.processInclude=function(a,b,c){if("include"==b.nodeName){b=b.getAttribute("name");if(null!=b)try{var d=mxUtils.load(b).getDocumentElement();null!=d&&a.decode(d,c)}catch(e){}return!0}return!1};mxObjectCodec.prototype.beforeDecode=function(a,b,c){return b};mxObjectCodec.prototype.afterDecode=function(a,b,c){return c}; +mxObjectCodec.prototype.decodeChild=function(a,b,c){var d=this.getFieldName(b.getAttribute("as"));if(null==d||!this.isExcluded(c,d,b,!1)){var e=this.getFieldTemplate(c,d,b);"add"==b.nodeName?(a=b.getAttribute("value"),null==a&&mxObjectCodec.allowEval&&(a=mxUtils.eval(mxUtils.getTextContent(b)))):a=a.decode(b,e);try{this.addObjectValue(c,d,a,e)}catch(f){throw Error(f.message+" for "+b.nodeName);}}}; +mxObjectCodec.prototype.getFieldTemplate=function(a,b,c){a=a[b];a instanceof Array&&0<a.length&&(a=null);return a};mxObjectCodec.prototype.addObjectValue=function(a,b,c,d){null!=c&&c!=d&&(null!=b&&0<b.length?a[b]=c:a.push(c))};mxObjectCodec.prototype.processInclude=function(a,b,c){if("include"==b.nodeName){b=b.getAttribute("name");if(null!=b)try{var d=mxUtils.load(b).getDocumentElement();null!=d&&a.decode(d,c)}catch(e){}return!0}return!1};mxObjectCodec.prototype.beforeDecode=function(a,b,c){return b}; +mxObjectCodec.prototype.afterDecode=function(a,b,c){return c}; mxCodecRegistry.register(function(){var a=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);a.isCellCodec=function(){return!0};a.isNumericAttribute=function(a,c,d){return"value"!==c.nodeName&&mxObjectCodec.prototype.isNumericAttribute.apply(this,arguments)};a.isExcluded=function(a,c,d,e){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||e&&"value"==c&&d.nodeType==mxConstants.NODETYPE_ELEMENT};a.afterEncode=function(a,c,d){if(null!= c.value&&c.value.nodeType==mxConstants.NODETYPE_ELEMENT){var b=d;d=mxUtils.importNode(a.document,c.value,!0);d.appendChild(b);a=b.getAttribute("id");d.setAttribute("id",a);b.removeAttribute("id")}return d};a.beforeDecode=function(a,c,d){var b=c.cloneNode(!0),f=this.getName();c.nodeName!=f?(b=c.getElementsByTagName(f)[0],null!=b&&b.parentNode==c?(mxUtils.removeWhitespace(b,!0),mxUtils.removeWhitespace(b,!1),b.parentNode.removeChild(b)):b=null,d.value=c.cloneNode(!0),c=d.value.getAttribute("id"),null!= c&&(d.setId(c),d.value.removeAttribute("id"))):d.setId(c.getAttribute("id"));if(null!=b)for(c=0;c<this.idrefs.length;c++){var f=this.idrefs[c],g=b.getAttribute(f);if(null!=g){b.removeAttribute(f);var k=a.objects[g]||a.lookup(g);null==k&&(g=a.getElementById(g),null!=g&&(k=(mxCodecRegistry.codecs[g.nodeName]||this).decode(a,g)));d[f]=k}}return b};return a}()); @@ -2014,7 +2016,7 @@ Editor.closeLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCA Editor.editLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAgVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9d3yJTAAAAKnRSTlMA+hzi3nRQWyXzkm0h2j3u54gzEgSXjlYoTBgJxL2loGpAOS3Jt7Wxm35Ga7gRAAAA6UlEQVQ4y63Q2XaCMBSF4Q0JBasoQ5DJqbXjfv8HbCK2BZNwo/8FXHx7rcMC7lQu0iX8qU/qtvAWCpoqH8dYzS0SwaV5eK/UAf8X9pd2CWKzuF5Jrftp1owXwnIGLUaL3PYndOHf4kNNXWrXK/m7CHunk7K8LE6YtBpcknwG9GKxnroY+ylBXcx4xKyx/u/EuXi509cP9V7OO1oyHnzrdFTcqLG/4ibBA5pIMr/4xvKzuQDkVy9wW8SgBFD6HDvuzMvrZcC9QlkfMzI7w64m+b4PqBMNHB05lH21PVxJo2/fBXxV4hB38PcD+5AkI4FuETsAAAAASUVORK5CYII="; Editor.previousLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAPFBMVEUAAAD////////////////////////////////////////////////////////////////////////////YSWgTAAAAE3RSTlMA7fci493c0MW8uJ6CZks4MxQHEZL6ewAAAFZJREFUOMvdkskRgDAMA4lDwg2B7b9XOlge/KKvdsa25KFb5XlRvxXC/DNBEv8IFNjBgGdDgXtFgTyhwDXiQAUHCvwa4Uv6mR6UR+1led2mVonvl+tML45qCQNQLIx7AAAAAElFTkSuQmCC";Editor.nextLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAPFBMVEUAAAD////////////////////////////////////////////////////////////////////////////YSWgTAAAAE3RSTlMA7fci493c0MW8uJ6CZks4MxQHEZL6ewAAAFRJREFUOMvd0skRgCAQBVEFwQ0V7fxzNQP6wI05v6pZ/kyj1b7FNgik2gQzzLcAwiUAigHOTwDHK4A1CmB5BJANJG1hQ9qafYcqFlZP3IFc9eVGrR+iIgkDQRUXIAAAAABJRU5ErkJggg=="; Editor.ctrlKey=mxClient.IS_MAC?"Cmd":"Ctrl";Editor.popupsAllowed=!0;mxUtils.extend(Editor,mxEventSource);Editor.prototype.originalNoForeignObject=mxClient.NO_FO;Editor.prototype.transparentImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhMAAwAIAAAP///wAAACH5BAEAAAAALAAAAAAwADAAAAIxhI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8egpAAA7":IMAGE_PATH+"/transparent.gif";Editor.prototype.extendCanvas=!0;Editor.prototype.chromeless=!1;Editor.prototype.cancelFirst=!0; -Editor.prototype.enabled=!0;Editor.prototype.filename=null;Editor.prototype.modified=!1;Editor.prototype.autosave=!0;Editor.prototype.initialTopSpacing=0;Editor.prototype.appName=document.title;Editor.prototype.editBlankUrl=window.location.protocol+"//"+window.location.host+"/";Editor.prototype.init=function(){};Editor.prototype.isChromelessView=function(){return this.chromeless};Editor.prototype.setAutosave=function(a){this.autosave=a;this.fireEvent(new mxEventObject("autosaveChanged"))}; +Editor.prototype.enabled=!0;Editor.prototype.filename=null;Editor.prototype.modified=!1;Editor.prototype.autosave=!0;Editor.prototype.initialTopSpacing=0;Editor.prototype.appName=document.title;Editor.prototype.editBlankUrl=window.location.protocol+"//"+window.location.host+"/";Editor.prototype.defaultGraphOverflow="hidden";Editor.prototype.init=function(){};Editor.prototype.isChromelessView=function(){return this.chromeless};Editor.prototype.setAutosave=function(a){this.autosave=a;this.fireEvent(new mxEventObject("autosaveChanged"))}; Editor.prototype.getEditBlankUrl=function(a){return this.editBlankUrl+a}; Editor.prototype.editAsNew=function(a,c){var d=null!=c?"?title="+encodeURIComponent(c):"";null!=urlParams.ui&&(d+=(0<d.length?"&":"?")+"ui="+urlParams.ui);null==this.editorWindow||this.editorWindow.closed?"undefined"!==typeof window.postMessage&&(null==document.documentMode||10<=document.documentMode)?(null==this.editorWindow&&mxEvent.addListener(window,"message",mxUtils.bind(this,function(b){"ready"==b.data&&b.source==this.editorWindow&&this.editorWindow.postMessage(a,"*")})),this.editorWindow=this.graph.openLink(this.getEditBlankUrl(d+ (0<d.length?"&":"?")+"client=1"),null,!0)):this.editorWindow=this.graph.openLink(this.getEditBlankUrl(d)+"#R"+encodeURIComponent(a)):this.editorWindow.focus()};Editor.prototype.createGraph=function(a,c){var d=new Graph(null,c,null,null,a);d.transparentBackground=!1;this.chromeless||(d.isBlankLink=function(a){return!this.isExternalProtocol(a)});return d}; @@ -2027,18 +2029,18 @@ Editor.prototype.setGraphXml=function(a){if(null!=a){var c=new mxCodec(a.ownerDo this.updateGraphComponents();this.fireEvent(new mxEventObject("resetGraphView"))}else throw{message:mxResources.get("cannotOpenFile"),node:a,toString:function(){return this.message}};}else this.resetGraph(),this.graph.model.clear(),this.fireEvent(new mxEventObject("resetGraphView"))}; Editor.prototype.getGraphXml=function(a){a=(null!=a?a:1)?(new mxCodec(mxUtils.createXmlDocument())).encode(this.graph.getModel()):this.graph.encodeCells(mxUtils.sortCells(this.graph.model.getTopmostCells(this.graph.getSelectionCells())));if(0!=this.graph.view.translate.x||0!=this.graph.view.translate.y)a.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),a.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100);a.setAttribute("grid",this.graph.isGridEnabled()?"1":"0");a.setAttribute("gridSize", this.graph.gridSize);a.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0");a.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0");a.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0");a.setAttribute("arrows",this.graph.connectionArrowsEnabled?"1":"0");a.setAttribute("fold",this.graph.foldingEnabled?"1":"0");a.setAttribute("page",this.graph.pageVisible?"1":"0");a.setAttribute("pageScale",this.graph.pageScale);a.setAttribute("pageWidth",this.graph.pageFormat.width); -a.setAttribute("pageHeight",this.graph.pageFormat.height);null!=this.graph.background&&a.setAttribute("background",this.graph.background);return a};Editor.prototype.updateGraphComponents=function(){var a=this.graph;null!=a.container&&(a.view.validateBackground(),a.container.style.overflow=a.scrollbars?"auto":"hidden",this.fireEvent(new mxEventObject("updateGraphComponents")))};Editor.prototype.setModified=function(a){this.modified=a};Editor.prototype.setFilename=function(a){this.filename=a}; +a.setAttribute("pageHeight",this.graph.pageFormat.height);null!=this.graph.background&&a.setAttribute("background",this.graph.background);return a};Editor.prototype.updateGraphComponents=function(){var a=this.graph;null!=a.container&&(a.view.validateBackground(),a.container.style.overflow=a.scrollbars?"auto":this.defaultGraphOverflow,this.fireEvent(new mxEventObject("updateGraphComponents")))};Editor.prototype.setModified=function(a){this.modified=a}; +Editor.prototype.setFilename=function(a){this.filename=a}; Editor.prototype.createUndoManager=function(){var a=this.graph,c=new mxUndoManager;this.undoListener=function(a,d){c.undoableEditHappened(d.getProperty("edit"))};var d=mxUtils.bind(this,function(a,c){this.undoListener.apply(this,arguments)});a.getModel().addListener(mxEvent.UNDO,d);a.getView().addListener(mxEvent.UNDO,d);d=function(b,c){var d=a.getSelectionCellsForChanges(c.getProperty("edit").changes);a.getModel();for(var f=[],g=0;g<d.length;g++)null!=a.view.getState(d[g])&&f.push(d[g]);a.setSelectionCells(f)}; c.addListener(mxEvent.UNDO,d);c.addListener(mxEvent.REDO,d);return c};Editor.prototype.initStencilRegistry=function(){};Editor.prototype.destroy=function(){null!=this.graph&&(this.graph.destroy(),this.graph=null)};OpenFile=function(a){this.consumer=this.producer=null;this.done=a;this.args=null};OpenFile.prototype.setConsumer=function(a){this.consumer=a;this.execute()};OpenFile.prototype.setData=function(){this.args=arguments;this.execute()};OpenFile.prototype.error=function(a){this.cancel(!0);mxUtils.alert(a)}; OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.args&&(this.cancel(!1),this.consumer.apply(this,this.args))};OpenFile.prototype.cancel=function(a){null!=this.done&&this.done(null!=a?a:!0)}; -function Dialog(a,c,d,b,f,e,h,g,k,l){var m=0;mxClient.IS_VML&&(null==document.documentMode||8>document.documentMode)&&(m=80);d+=m;b+=m;var p=d,n=b,u=0<document.documentElement.clientHeight?document.documentElement.clientHeight:Math.max(document.body.clientHeight||0,document.documentElement.clientHeight),q=Math.max(1,Math.round((document.body.clientWidth-d-64)/2)),r=Math.max(1,Math.round((u-b-a.footerHeight)/3));mxClient.IS_QUIRKS||(c.style.maxHeight="100%");d=Math.min(d,document.body.scrollWidth- -64);b=Math.min(b,u-64);0<a.dialogs.length&&(this.zIndex+=2*a.dialogs.length);null==this.bg&&(this.bg=a.createDiv("background"),this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=u+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity),mxClient.IS_QUIRKS&&new mxDivResizer(this.bg));var t=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=t.x+"px";this.bg.style.top=t.y+"px";q+=t.x;r+=t.y; -f&&document.body.appendChild(this.bg);var w=a.createDiv(k?"geTransDialog":"geDialog");f=this.getPosition(q,r,d,b);q=f.x;r=f.y;w.style.width=d+"px";w.style.height=b+"px";w.style.left=q+"px";w.style.top=r+"px";w.style.zIndex=this.zIndex;w.appendChild(c);document.body.appendChild(w);!g&&c.clientHeight>w.clientHeight-64&&(c.style.overflowY="auto");e&&(e=document.createElement("img"),e.setAttribute("src",Dialog.prototype.closeImage),e.setAttribute("title",mxResources.get("close")),e.className="geDialogClose", -e.style.top=r+14+"px",e.style.left=q+d+38-m+"px",e.style.zIndex=this.zIndex,mxEvent.addListener(e,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})),document.body.appendChild(e),this.dialogImg=e,mxEvent.addGestureListeners(this.bg,null,null,mxUtils.bind(this,function(b){a.hideDialog(!0)})));this.resizeListener=mxUtils.bind(this,function(){if(null!=l){var e=l();null!=e&&(p=d=e.w,n=b=e.h)}u=Math.max(document.body.clientHeight,document.documentElement.clientHeight);this.bg.style.height=u+"px"; -q=Math.max(1,Math.round((document.body.clientWidth-d-64)/2));r=Math.max(1,Math.round((u-b-a.footerHeight)/3));d=Math.min(p,document.body.scrollWidth-64);b=Math.min(n,u-64);e=this.getPosition(q,r,d,b);q=e.x;r=e.y;w.style.left=q+"px";w.style.top=r+"px";w.style.width=d+"px";w.style.height=b+"px";!g&&c.clientHeight>w.clientHeight-64&&(c.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=r+14+"px",this.dialogImg.style.left=q+d+38-m+"px")});mxEvent.addListener(window,"resize",this.resizeListener); -this.onDialogClose=h;this.container=w;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-1; -Dialog.prototype.noColorImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkEzRDlBMUUwODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkEzRDlBMUUxODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTNEOUExREU4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTNEOUExREY4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5xh3fmAAAABlBMVEX////MzMw46qqDAAAAGElEQVR42mJggAJGKGAYIIGBth8KAAIMAEUQAIElnLuQAAAAAElFTkSuQmCC":IMAGE_PATH+ -"/nocolor.png";Dialog.prototype.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAQMAAADaX5RTAAAABlBMVEV7mr3///+wksspAAAAAnRSTlP/AOW3MEoAAAAdSURBVAgdY9jXwCDDwNDRwHCwgeExmASygSL7GgB12QiqNHZZIwAAAABJRU5ErkJggg==":IMAGE_PATH+"/close.png"; +function Dialog(a,c,d,b,f,e,h,g,k,l){var m=0;mxClient.IS_VML&&(null==document.documentMode||8>document.documentMode)&&(m=80);d+=m;b+=m;var p=d,n=b,u=mxUtils.getDocumentSize(),q=u.height,r=Math.max(1,Math.round((u.width-d-64)/2)),t=Math.max(1,Math.round((q-b-a.footerHeight)/3));mxClient.IS_QUIRKS||(c.style.maxHeight="100%");d=null!=document.body?Math.min(d,document.body.scrollWidth-64):d;b=Math.min(b,q-64);0<a.dialogs.length&&(this.zIndex+=2*a.dialogs.length);null==this.bg&&(this.bg=a.createDiv("background"), +this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=q+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity),mxClient.IS_QUIRKS&&new mxDivResizer(this.bg));u=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=u.x+"px";this.bg.style.top=u.y+"px";r+=u.x;t+=u.y;f&&document.body.appendChild(this.bg);var w=a.createDiv(k?"geTransDialog":"geDialog");f=this.getPosition(r,t,d,b);r=f.x;t=f.y;w.style.width= +d+"px";w.style.height=b+"px";w.style.left=r+"px";w.style.top=t+"px";w.style.zIndex=this.zIndex;w.appendChild(c);document.body.appendChild(w);!g&&c.clientHeight>w.clientHeight-64&&(c.style.overflowY="auto");e&&(e=document.createElement("img"),e.setAttribute("src",Dialog.prototype.closeImage),e.setAttribute("title",mxResources.get("close")),e.className="geDialogClose",e.style.top=t+14+"px",e.style.left=r+d+38-m+"px",e.style.zIndex=this.zIndex,mxEvent.addListener(e,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})), +document.body.appendChild(e),this.dialogImg=e,mxEvent.addGestureListeners(this.bg,null,null,mxUtils.bind(this,function(b){a.hideDialog(!0)})));this.resizeListener=mxUtils.bind(this,function(){if(null!=l){var e=l();null!=e&&(p=d=e.w,n=b=e.h)}e=mxUtils.getDocumentSize();q=e.height;this.bg.style.height=q+"px";r=Math.max(1,Math.round((e.width-d-64)/2));t=Math.max(1,Math.round((q-b-a.footerHeight)/3));d=null!=document.body?Math.min(p,document.body.scrollWidth-64):p;b=Math.min(n,q-64);e=this.getPosition(r, +t,d,b);r=e.x;t=e.y;w.style.left=r+"px";w.style.top=t+"px";w.style.width=d+"px";w.style.height=b+"px";!g&&c.clientHeight>w.clientHeight-64&&(c.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=t+14+"px",this.dialogImg.style.left=r+d+38-m+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=h;this.container=w;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-1; +Dialog.prototype.noColorImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkEzRDlBMUUwODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkEzRDlBMUUxODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTNEOUExREU4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTNEOUExREY4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5xh3fmAAAABlBMVEX////MzMw46qqDAAAAGElEQVR42mJggAJGKGAYIIGBth8KAAIMAEUQAIElnLuQAAAAAElFTkSuQmCC": +IMAGE_PATH+"/nocolor.png";Dialog.prototype.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAQMAAADaX5RTAAAABlBMVEV7mr3///+wksspAAAAAnRSTlP/AOW3MEoAAAAdSURBVAgdY9jXwCDDwNDRwHCwgeExmASygSL7GgB12QiqNHZZIwAAAABJRU5ErkJggg==":IMAGE_PATH+"/close.png"; Dialog.prototype.clearImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQAKAIABAMDAwP///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUIzOEM1NzI4NjEyMTFFMUEzMkNDMUE3NjZERDE2QjIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUIzOEM1NzM4NjEyMTFFMUEzMkNDMUE3NjZERDE2QjIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5QjM4QzU3MDg2MTIxMUUxQTMyQ0MxQTc2NkREMTZCMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5QjM4QzU3MTg2MTIxMUUxQTMyQ0MxQTc2NkREMTZCMiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEAAAEALAAAAAANAAoAAAIXTGCJebD9jEOTqRlttXdrB32PJ2ncyRQAOw==":IMAGE_PATH+ "/clear.gif"; Dialog.prototype.lockedImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAMAAABhq6zVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzdDMDZCODExNzIxMTFFNUI0RTk5NTg4OTcyMUUyODEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzdDMDZCODIxNzIxMTFFNUI0RTk5NTg4OTcyMUUyODEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozN0MwNkI3RjE3MjExMUU1QjRFOTk1ODg5NzIxRTI4MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozN0MwNkI4MDE3MjExMUU1QjRFOTk1ODg5NzIxRTI4MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvqMCFYAAAAVUExURZmZmb+/v7KysqysrMzMzLGxsf///4g8N1cAAAAHdFJOU////////wAaSwNGAAAAPElEQVR42lTMQQ4AIQgEwUa0//9kTQirOweYOgDqAMbZUr10AGlAwx4/BJ2QJ4U0L5brYjovvpv32xZgAHZaATFtMbu4AAAAAElFTkSuQmCC":IMAGE_PATH+ @@ -2089,32 +2091,32 @@ a+"px",this.view.backgroundPageShape.node.style.marginTop=c+"px")};var f=mxPopup if(null==c||c!=d&&c!=g)for(;!this.graph.isCellSelected(d)&&!this.graph.isCellSelected(g)&&b.isVertex(g)&&!this.graph.isContainer(g);)d=g,g=this.graph.getModel().getParent(d);return d};var h=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(a,b){var c=h.apply(this,arguments);if(!c)for(var d=this.graph.getModel(),e=d.getParent(a);null!=e;){if(this.graph.isCellSelected(e)&&d.isVertex(e)){c=!0;break}e=d.getParent(e)}return c};mxGraphHandler.prototype.selectDelayed= function(a){if(!this.graph.popupMenuHandler.isPopupTrigger(a)){var b=a.getCell();null==b&&(b=this.cell);var c=this.graph.view.getState(b);if(null==c||!a.isSource(c.control))for(var c=this.graph.getModel(),d=c.getParent(b);!this.graph.isCellSelected(d)&&c.isVertex(d);)b=d,d=c.getParent(b);this.graph.selectCellForEvent(b,a.getEvent())}};mxPopupMenuHandler.prototype.getCellForPopupEvent=function(a){a=a.getCell();for(var b=this.graph.getModel(),c=b.getParent(a);b.isVertex(c)&&!this.graph.isContainer(c);)this.graph.isCellSelected(c)&& (a=c),c=b.getParent(c);return a}})();EditorUi=function(a,c,d){mxEventSource.call(this);this.destroyFunctions=[];this.editor=a||new Editor;this.container=c||document.body;var b=this.editor.graph;b.lightbox=d;b.useCssTransforms&&(this.lazyZoomDelay=0);mxClient.IS_SVG?mxPopupMenu.prototype.submenuImage="data:image/gif;base64,R0lGODlhCQAJAIAAAP///zMzMyH5BAEAAAAALAAAAAAJAAkAAAIPhI8WebHsHopSOVgb26AAADs=":(new Image).src=mxPopupMenu.prototype.submenuImage;mxClient.IS_SVG||null==mxConnectionHandler.prototype.connectImage||((new Image).src=mxConnectionHandler.prototype.connectImage.src); -this.editor.chromeless&&!this.editor.editable&&(this.footerHeight=0,b.isEnabled=function(){return!1},b.panningHandler.isForcePanningEvent=function(a){return!mxEvent.isPopupTrigger(a.getEvent())});this.actions=new Actions(this);this.menus=this.createMenus();this.createDivs();this.createUi();this.refresh();var f=mxUtils.bind(this,function(a){null==a&&(a=window.event);return this.isSelectionAllowed(a)||b.isEditing()});this.container==document.body&&(this.menubarContainer.onselectstart=f,this.menubarContainer.onmousedown= -f,this.toolbarContainer.onselectstart=f,this.toolbarContainer.onmousedown=f,this.diagramContainer.onselectstart=f,this.diagramContainer.onmousedown=f,this.sidebarContainer.onselectstart=f,this.sidebarContainer.onmousedown=f,this.formatContainer.onselectstart=f,this.formatContainer.onmousedown=f,this.footerContainer.onselectstart=f,this.footerContainer.onmousedown=f,null!=this.tabContainer&&(this.tabContainer.onselectstart=f));!this.editor.chromeless||this.editor.editable?(c=function(a){var b=mxEvent.getSource(a); -if("A"==b.nodeName)for(;null!=b;){if("geHint"==b.className)return!0;b=b.parentNode}return f(a)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,"contextmenu",c):this.diagramContainer.oncontextmenu=c):b.panningHandler.usePopupTrigger=!1;b.init(this.diagramContainer);mxClient.IS_SVG&&null!=b.view.getDrawPane()&&(c=b.view.getDrawPane().ownerSVGElement,null!=c&&(c.style.position="absolute"));this.hoverIcons=this.createHoverIcons(); -mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(a){var b=mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(a)-b.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(a)-b.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var e=!1,h=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(a,b){return e||h.apply(this,arguments)};this.keydownHandler= -mxUtils.bind(this,function(a){32==a.which?(e=!0,this.hoverIcons.reset(),b.container.style.cursor="move",b.isEditing()||mxEvent.getSource(a)!=b.container||mxEvent.consume(a)):mxEvent.isConsumed(a)||27!=a.keyCode||this.hideDialog(null,!0)});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(a){b.container.style.cursor="";e=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var g=b.panningHandler.isForcePanningEvent;b.panningHandler.isForcePanningEvent= -function(a){return g.apply(this,arguments)||e||mxEvent.isMouseEvent(a.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(a.getEvent()))&&(!mxEvent.isControlDown(a.getEvent())&&mxEvent.isRightMouseButton(a.getEvent())||mxEvent.isMiddleMouseButton(a.getEvent()))};var k=b.cellEditor.isStopEditingEvent;b.cellEditor.isStopEditingEvent=function(a){return k.apply(this,arguments)||13==a.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxClient.IS_SF&&mxEvent.isShiftDown(a))}; -var l=!1,m=null,p=null,n=null,u=mxUtils.bind(this,function(){if(null!=this.toolbar&&l!=b.cellEditor.isContentEditing()){for(var a=this.toolbar.container.firstChild,c=[];null!=a;){var d=a.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,a)&&(a.parentNode.removeChild(a),c.push(a));a=d}a=this.toolbar.fontMenu;d=this.toolbar.sizeMenu;if(null==n)this.toolbar.createTextToolbar();else{for(var e=0;e<n.length;e++)this.toolbar.container.appendChild(n[e]);this.toolbar.fontMenu=m;this.toolbar.sizeMenu= -p}l=b.cellEditor.isContentEditing();m=a;p=d;n=c}}),q=this,r=b.cellEditor.startEditing;b.cellEditor.startEditing=function(){r.apply(this,arguments);u();if(b.cellEditor.isContentEditing()){var a=!1,c=function(){a||(a=!0,window.setTimeout(function(){for(var c=b.getSelectedElement();null!=c&&c.nodeType!=mxConstants.NODETYPE_ELEMENT;)c=c.parentNode;if(null!=c&&(c=mxUtils.getCurrentStyle(c),null!=c&&null!=q.toolbar)){var d=c.fontFamily;"'"==d.charAt(0)&&(d=d.substring(1));"'"==d.charAt(d.length-1)&&(d= -d.substring(0,d.length-1));q.toolbar.setFontName(d);q.toolbar.setFontSize(parseInt(c.fontSize))}a=!1},0))};mxEvent.addListener(b.cellEditor.textarea,"input",c);mxEvent.addListener(b.cellEditor.textarea,"touchend",c);mxEvent.addListener(b.cellEditor.textarea,"mouseup",c);mxEvent.addListener(b.cellEditor.textarea,"keyup",c);c()}};var t=b.cellEditor.stopEditing;b.cellEditor.stopEditing=function(a,b){t.apply(this,arguments);u()};b.container.setAttribute("tabindex","0");b.container.style.cursor="default"; -if(window.self===window.top&&null!=b.container.parentNode)try{b.container.focus()}catch(C){}var w=b.fireMouseEvent;b.fireMouseEvent=function(a,b,c){a==mxEvent.MOUSE_DOWN&&this.container.focus();w.apply(this,arguments)};b.popupMenuHandler.autoExpand=!0;null!=this.menus&&(b.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a,b,c){this.menus.createPopupMenu(a,b,c)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(a){b.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(a); -this.getKeyHandler=function(){return keyHandler};var v="rounded shadow glass dashed dashPattern comic labelBackgroundColor".split(" "),z="shape edgeStyle curved rounded elbow comic jumpStyle jumpSize".split(" ");this.setDefaultStyle=function(a){var c=b.view.getState(a);if(null!=c){a=a.clone();a.style="";a=b.getCellStyle(a);var d=[],e=[],f;for(f in c.style)a[f]!=c.style[f]&&(d.push(c.style[f]),e.push(f));f=b.getModel().getStyle(c.cell);for(var g=null!=f?f.split(";"):[],h=0;h<g.length;h++){var k=g[h], -l=k.indexOf("=");0<=l&&(f=k.substring(0,l),k=k.substring(l+1),null!=a[f]&&"none"==k&&(d.push(k),e.push(f)))}b.getModel().isEdge(c.cell)?b.currentEdgeStyle={}:b.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",e,"values",d,"cells",[c.cell]))}};this.clearDefaultStyle=function(){b.currentEdgeStyle=mxUtils.clone(b.defaultEdgeStyle);b.currentVertexStyle=mxUtils.clone(b.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var x= -["fontFamily","fontSize","fontColor"],F="edgeStyle startArrow startFill startSize endArrow endFill endSize jettySize orthogonalLoop".split(" "),D=["startArrow startFill startSize sourcePerimeterSpacing endArrow endFill endSize targetPerimeterSpacing jettySize orthogonalLoop".split(" "),["strokeColor","strokeWidth"],["fillColor","gradientColor"],x,["opacity"],["align"],["html"]];for(a=0;a<D.length;a++)for(c=0;c<D[a].length;c++)v.push(D[a][c]);for(a=0;a<z.length;a++)0>mxUtils.indexOf(v,z[a])&&v.push(z[a]); -var E=function(a,c){var d=b.getModel();d.beginUpdate();try{if(c)for(var e=d.isEdge(k),f=e?b.currentEdgeStyle:b.currentVertexStyle,e=["fontSize","fontFamily","fontColor"],g=0;g<e.length;g++){var h=f[e[g]];null!=h&&b.setCellStyles(e[g],h,a)}else for(h=0;h<a.length;h++){for(var k=a[h],l=d.getStyle(k),m=null!=l?l.split(";"):[],B=v.slice(),g=0;g<m.length;g++){var p=m[g],A=p.indexOf("=");if(0<=A){var n=p.substring(0,A),U=mxUtils.indexOf(B,n);0<=U&&B.splice(U,1);for(var q=0;q<D.length;q++){var u=D[q];if(0<= -mxUtils.indexOf(u,n))for(var t=0;t<u.length;t++){var r=mxUtils.indexOf(B,u[t]);0<=r&&B.splice(r,1)}}}}for(var f=(e=d.isEdge(k))?b.currentEdgeStyle:b.currentVertexStyle,C=d.getStyle(k),g=0;g<B.length;g++){var n=B[g],w=f[n];null==w||"shape"==n&&!e||e&&!(0>mxUtils.indexOf(z,n))||(C=mxUtils.setStyle(C,n,w))}d.setStyle(k,C)}}finally{d.endUpdate()}};b.addListener("cellsInserted",function(a,b){E(b.getProperty("cells"))});b.addListener("textInserted",function(a,b){E(b.getProperty("cells"),!0)});b.connectionHandler.addListener(mxEvent.CONNECT, -function(a,b){var c=[b.getProperty("cell")];b.getProperty("terminalInserted")&&c.push(b.getProperty("terminal"));E(c)});this.addListener("styleChanged",mxUtils.bind(this,function(a,c){var d=c.getProperty("cells"),e=!1,f=!1;if(0<d.length)for(var g=0;g<d.length&&(e=b.getModel().isVertex(d[g])||e,!(f=b.getModel().isEdge(d[g])||f)||!e);g++);else f=e=!0;for(var d=c.getProperty("keys"),h=c.getProperty("values"),g=0;g<d.length;g++){var k=0<=mxUtils.indexOf(x,d[g]);if("strokeColor"!=d[g]||null!=h[g]&&"none"!= -h[g])if(0<=mxUtils.indexOf(z,d[g]))f||0<=mxUtils.indexOf(F,d[g])?null==h[g]?delete b.currentEdgeStyle[d[g]]:b.currentEdgeStyle[d[g]]=h[g]:e&&0<=mxUtils.indexOf(v,d[g])&&(null==h[g]?delete b.currentVertexStyle[d[g]]:b.currentVertexStyle[d[g]]=h[g]);else if(0<=mxUtils.indexOf(v,d[g])){if(e||k)null==h[g]?delete b.currentVertexStyle[d[g]]:b.currentVertexStyle[d[g]]=h[g];if(f||k||0<=mxUtils.indexOf(F,d[g]))null==h[g]?delete b.currentEdgeStyle[d[g]]:b.currentEdgeStyle[d[g]]=h[g]}}null!=this.toolbar&&(this.toolbar.setFontName(b.currentVertexStyle.fontFamily|| -Menus.prototype.defaultFont),this.toolbar.setFontSize(b.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==b.currentEdgeStyle.edgeStyle&&"1"==b.currentEdgeStyle.curved?"geSprite geSprite-curved":"straight"==b.currentEdgeStyle.edgeStyle||"none"==b.currentEdgeStyle.edgeStyle||null==b.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"== -b.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==b.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==b.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==b.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==b.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):"geSprite geSprite-orthogonal"),null!=this.toolbar.edgeShapeMenu&&(this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==b.currentEdgeStyle.shape? -"geSprite geSprite-linkedge":"flexArrow"==b.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==b.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"),null!=this.toolbar.lineStartMenu&&(this.toolbar.lineStartMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("start",b.currentEdgeStyle.shape,b.currentEdgeStyle[mxConstants.STYLE_STARTARROW],mxUtils.getValue(b.currentEdgeStyle,"startFill","1"))),null!=this.toolbar.lineEndMenu&&(this.toolbar.lineEndMenu.getElementsByTagName("div")[0].className= -this.getCssClassForMarker("end",b.currentEdgeStyle.shape,b.currentEdgeStyle[mxConstants.STYLE_ENDARROW],mxUtils.getValue(b.currentEdgeStyle,"endFill","1"))))}));null!=this.toolbar&&(a=mxUtils.bind(this,function(){var a=b.currentVertexStyle.fontFamily||"Helvetica",c=String(b.currentVertexStyle.fontSize||"12"),d=b.getView().getState(b.getSelectionCell());null!=d&&(a=d.style[mxConstants.STYLE_FONTFAMILY]||a,c=d.style[mxConstants.STYLE_FONTSIZE]||c,10<a.length&&(a=a.substring(0,8)+"..."));this.toolbar.setFontName(a); -this.toolbar.setFontSize(c)}),b.getSelectionModel().addListener(mxEvent.CHANGE,a),b.getModel().addListener(mxEvent.CHANGE,a));b.addListener(mxEvent.CELLS_ADDED,function(a,c){var d=c.getProperty("cells"),e=c.getProperty("parent");b.getModel().isLayer(e)&&!b.isCellVisible(e)&&null!=d&&0<d.length&&b.getModel().setVisible(e,!0)});this.gestureHandler=mxUtils.bind(this,function(a){null!=this.currentMenu&&mxEvent.getSource(a)!=this.currentMenu.div&&this.hideCurrentMenu()});mxEvent.addGestureListeners(document, -this.gestureHandler);this.resizeHandler=mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){null!=this.editor.graph&&this.refresh()}),0)});mxEvent.addListener(window,"resize",this.resizeHandler);this.orientationChangeHandler=mxUtils.bind(this,function(){this.refresh()});mxEvent.addListener(window,"orientationchange",this.orientationChangeHandler);mxClient.IS_IOS&&!window.navigator.standalone&&(this.scrollHandler=mxUtils.bind(this,function(){window.scrollTo(0,0)}),mxEvent.addListener(window, -"scroll",this.scrollHandler));this.editor.addListener("resetGraphView",mxUtils.bind(this,function(){this.resetScrollbars()}));this.addListener("gridEnabledChanged",mxUtils.bind(this,function(){b.view.validateBackground()}));this.addListener("backgroundColorChanged",mxUtils.bind(this,function(){b.view.validateBackground()}));b.addListener("gridSizeChanged",mxUtils.bind(this,function(){b.isGridEnabled()&&b.view.validateBackground()}));this.editor.resetGraph();this.init();this.open()}; -mxUtils.extend(EditorUi,mxEventSource);EditorUi.compactUi=!0;EditorUi.prototype.splitSize=mxClient.IS_TOUCH||mxClient.IS_POINTER?12:8;EditorUi.prototype.menubarHeight=30;EditorUi.prototype.formatEnabled=!0;EditorUi.prototype.formatWidth=240;EditorUi.prototype.toolbarHeight=34;EditorUi.prototype.footerHeight=28;EditorUi.prototype.sidebarFooterHeight=34;EditorUi.prototype.hsplitPosition=640>=screen.width?118:208;EditorUi.prototype.allowAnimation=!0;EditorUi.prototype.lightboxMaxFitScale=2; -EditorUi.prototype.lightboxVerticalDivider=4;EditorUi.prototype.hsplitClickEnabled=!1; +this.editor.chromeless&&!this.editor.editable&&(this.footerHeight=0,b.isEnabled=function(){return!1},b.panningHandler.isForcePanningEvent=function(a){return!mxEvent.isPopupTrigger(a.getEvent())});this.actions=new Actions(this);this.menus=this.createMenus();this.createDivs();this.createUi();this.refresh();var f=mxUtils.bind(this,function(a){null==a&&(a=window.event);return b.isEditing()||null!=a&&this.isSelectionAllowed(a)});this.container==document.body&&(this.menubarContainer.onselectstart=f,this.menubarContainer.onmousedown= +f,this.toolbarContainer.onselectstart=f,this.toolbarContainer.onmousedown=f,this.diagramContainer.onselectstart=f,this.diagramContainer.onmousedown=f,this.sidebarContainer.onselectstart=f,this.sidebarContainer.onmousedown=f,this.formatContainer.onselectstart=f,this.formatContainer.onmousedown=f,this.footerContainer.onselectstart=f,this.footerContainer.onmousedown=f,null!=this.tabContainer&&(this.tabContainer.onselectstart=f));!this.editor.chromeless||this.editor.editable?(c=function(a){if(null!=a){var b= +mxEvent.getSource(a);if("A"==b.nodeName)for(;null!=b;){if("geHint"==b.className)return!0;b=b.parentNode}}return f(a)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,"contextmenu",c):this.diagramContainer.oncontextmenu=c):b.panningHandler.usePopupTrigger=!1;b.init(this.diagramContainer);mxClient.IS_SVG&&null!=b.view.getDrawPane()&&(c=b.view.getDrawPane().ownerSVGElement,null!=c&&(c.style.position="absolute"));this.hoverIcons= +this.createHoverIcons();mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(a){var b=mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(a)-b.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(a)-b.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var e=!1,h=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(a,b){return e||h.apply(this, +arguments)};this.keydownHandler=mxUtils.bind(this,function(a){32==a.which?(e=!0,this.hoverIcons.reset(),b.container.style.cursor="move",b.isEditing()||mxEvent.getSource(a)!=b.container||mxEvent.consume(a)):mxEvent.isConsumed(a)||27!=a.keyCode||this.hideDialog(null,!0)});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(a){b.container.style.cursor="";e=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var g=b.panningHandler.isForcePanningEvent; +b.panningHandler.isForcePanningEvent=function(a){return g.apply(this,arguments)||e||mxEvent.isMouseEvent(a.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(a.getEvent()))&&(!mxEvent.isControlDown(a.getEvent())&&mxEvent.isRightMouseButton(a.getEvent())||mxEvent.isMiddleMouseButton(a.getEvent()))};var k=b.cellEditor.isStopEditingEvent;b.cellEditor.isStopEditingEvent=function(a){return k.apply(this,arguments)||13==a.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a)|| +mxClient.IS_SF&&mxEvent.isShiftDown(a))};var l=!1,m=null,p=null,n=null,u=mxUtils.bind(this,function(){if(null!=this.toolbar&&l!=b.cellEditor.isContentEditing()){for(var a=this.toolbar.container.firstChild,c=[];null!=a;){var d=a.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,a)&&(a.parentNode.removeChild(a),c.push(a));a=d}a=this.toolbar.fontMenu;d=this.toolbar.sizeMenu;if(null==n)this.toolbar.createTextToolbar();else{for(var e=0;e<n.length;e++)this.toolbar.container.appendChild(n[e]);this.toolbar.fontMenu= +m;this.toolbar.sizeMenu=p}l=b.cellEditor.isContentEditing();m=a;p=d;n=c}}),q=this,r=b.cellEditor.startEditing;b.cellEditor.startEditing=function(){r.apply(this,arguments);u();if(b.cellEditor.isContentEditing()){var a=!1,c=function(){a||(a=!0,window.setTimeout(function(){for(var c=b.getSelectedElement();null!=c&&c.nodeType!=mxConstants.NODETYPE_ELEMENT;)c=c.parentNode;if(null!=c&&(c=mxUtils.getCurrentStyle(c),null!=c&&null!=q.toolbar)){var d=c.fontFamily;"'"==d.charAt(0)&&(d=d.substring(1));"'"==d.charAt(d.length- +1)&&(d=d.substring(0,d.length-1));q.toolbar.setFontName(d);q.toolbar.setFontSize(parseInt(c.fontSize))}a=!1},0))};mxEvent.addListener(b.cellEditor.textarea,"input",c);mxEvent.addListener(b.cellEditor.textarea,"touchend",c);mxEvent.addListener(b.cellEditor.textarea,"mouseup",c);mxEvent.addListener(b.cellEditor.textarea,"keyup",c);c()}};var t=b.cellEditor.stopEditing;b.cellEditor.stopEditing=function(a,b){t.apply(this,arguments);u()};b.container.setAttribute("tabindex","0");b.container.style.cursor= +"default";if(window.self===window.top&&null!=b.container.parentNode)try{b.container.focus()}catch(C){}var w=b.fireMouseEvent;b.fireMouseEvent=function(a,b,c){a==mxEvent.MOUSE_DOWN&&this.container.focus();w.apply(this,arguments)};b.popupMenuHandler.autoExpand=!0;null!=this.menus&&(b.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a,b,c){this.menus.createPopupMenu(a,b,c)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(a){b.popupMenuHandler.hideMenu()}));this.keyHandler= +this.createKeyHandler(a);this.getKeyHandler=function(){return keyHandler};var v="rounded shadow glass dashed dashPattern comic labelBackgroundColor".split(" "),z="shape edgeStyle curved rounded elbow comic jumpStyle jumpSize".split(" ");this.setDefaultStyle=function(a){var c=b.view.getState(a);if(null!=c){a=a.clone();a.style="";a=b.getCellStyle(a);var d=[],e=[],f;for(f in c.style)a[f]!=c.style[f]&&(d.push(c.style[f]),e.push(f));f=b.getModel().getStyle(c.cell);for(var g=null!=f?f.split(";"):[],h=0;h< +g.length;h++){var k=g[h],l=k.indexOf("=");0<=l&&(f=k.substring(0,l),k=k.substring(l+1),null!=a[f]&&"none"==k&&(d.push(k),e.push(f)))}b.getModel().isEdge(c.cell)?b.currentEdgeStyle={}:b.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",e,"values",d,"cells",[c.cell]))}};this.clearDefaultStyle=function(){b.currentEdgeStyle=mxUtils.clone(b.defaultEdgeStyle);b.currentVertexStyle=mxUtils.clone(b.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values", +[],"cells",[]))};var x=["fontFamily","fontSize","fontColor"],E="edgeStyle startArrow startFill startSize endArrow endFill endSize jettySize orthogonalLoop".split(" "),D=["startArrow startFill startSize sourcePerimeterSpacing endArrow endFill endSize targetPerimeterSpacing jettySize orthogonalLoop".split(" "),["strokeColor","strokeWidth"],["fillColor","gradientColor"],x,["opacity"],["align"],["html"]];for(a=0;a<D.length;a++)for(c=0;c<D[a].length;c++)v.push(D[a][c]);for(a=0;a<z.length;a++)0>mxUtils.indexOf(v, +z[a])&&v.push(z[a]);var F=function(a,c){var d=b.getModel();d.beginUpdate();try{if(c)for(var e=d.isEdge(k),f=e?b.currentEdgeStyle:b.currentVertexStyle,e=["fontSize","fontFamily","fontColor"],g=0;g<e.length;g++){var h=f[e[g]];null!=h&&b.setCellStyles(e[g],h,a)}else for(h=0;h<a.length;h++){for(var k=a[h],l=d.getStyle(k),m=null!=l?l.split(";"):[],B=v.slice(),g=0;g<m.length;g++){var p=m[g],A=p.indexOf("=");if(0<=A){var n=p.substring(0,A),U=mxUtils.indexOf(B,n);0<=U&&B.splice(U,1);for(var q=0;q<D.length;q++){var u= +D[q];if(0<=mxUtils.indexOf(u,n))for(var t=0;t<u.length;t++){var r=mxUtils.indexOf(B,u[t]);0<=r&&B.splice(r,1)}}}}for(var f=(e=d.isEdge(k))?b.currentEdgeStyle:b.currentVertexStyle,C=d.getStyle(k),g=0;g<B.length;g++){var n=B[g],w=f[n];null==w||"shape"==n&&!e||e&&!(0>mxUtils.indexOf(z,n))||(C=mxUtils.setStyle(C,n,w))}d.setStyle(k,C)}}finally{d.endUpdate()}};b.addListener("cellsInserted",function(a,b){F(b.getProperty("cells"))});b.addListener("textInserted",function(a,b){F(b.getProperty("cells"),!0)}); +b.connectionHandler.addListener(mxEvent.CONNECT,function(a,b){var c=[b.getProperty("cell")];b.getProperty("terminalInserted")&&c.push(b.getProperty("terminal"));F(c)});this.addListener("styleChanged",mxUtils.bind(this,function(a,c){var d=c.getProperty("cells"),e=!1,f=!1;if(0<d.length)for(var g=0;g<d.length&&(e=b.getModel().isVertex(d[g])||e,!(f=b.getModel().isEdge(d[g])||f)||!e);g++);else f=e=!0;for(var d=c.getProperty("keys"),h=c.getProperty("values"),g=0;g<d.length;g++){var k=0<=mxUtils.indexOf(x, +d[g]);if("strokeColor"!=d[g]||null!=h[g]&&"none"!=h[g])if(0<=mxUtils.indexOf(z,d[g]))f||0<=mxUtils.indexOf(E,d[g])?null==h[g]?delete b.currentEdgeStyle[d[g]]:b.currentEdgeStyle[d[g]]=h[g]:e&&0<=mxUtils.indexOf(v,d[g])&&(null==h[g]?delete b.currentVertexStyle[d[g]]:b.currentVertexStyle[d[g]]=h[g]);else if(0<=mxUtils.indexOf(v,d[g])){if(e||k)null==h[g]?delete b.currentVertexStyle[d[g]]:b.currentVertexStyle[d[g]]=h[g];if(f||k||0<=mxUtils.indexOf(E,d[g]))null==h[g]?delete b.currentEdgeStyle[d[g]]:b.currentEdgeStyle[d[g]]= +h[g]}}null!=this.toolbar&&(this.toolbar.setFontName(b.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(b.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==b.currentEdgeStyle.edgeStyle&&"1"==b.currentEdgeStyle.curved?"geSprite geSprite-curved":"straight"==b.currentEdgeStyle.edgeStyle||"none"==b.currentEdgeStyle.edgeStyle||null== +b.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"==b.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==b.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==b.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==b.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==b.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):"geSprite geSprite-orthogonal"),null!=this.toolbar.edgeShapeMenu&& +(this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==b.currentEdgeStyle.shape?"geSprite geSprite-linkedge":"flexArrow"==b.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==b.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"),null!=this.toolbar.lineStartMenu&&(this.toolbar.lineStartMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("start",b.currentEdgeStyle.shape,b.currentEdgeStyle[mxConstants.STYLE_STARTARROW], +mxUtils.getValue(b.currentEdgeStyle,"startFill","1"))),null!=this.toolbar.lineEndMenu&&(this.toolbar.lineEndMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("end",b.currentEdgeStyle.shape,b.currentEdgeStyle[mxConstants.STYLE_ENDARROW],mxUtils.getValue(b.currentEdgeStyle,"endFill","1"))))}));null!=this.toolbar&&(a=mxUtils.bind(this,function(){var a=b.currentVertexStyle.fontFamily||"Helvetica",c=String(b.currentVertexStyle.fontSize||"12"),d=b.getView().getState(b.getSelectionCell()); +null!=d&&(a=d.style[mxConstants.STYLE_FONTFAMILY]||a,c=d.style[mxConstants.STYLE_FONTSIZE]||c,10<a.length&&(a=a.substring(0,8)+"..."));this.toolbar.setFontName(a);this.toolbar.setFontSize(c)}),b.getSelectionModel().addListener(mxEvent.CHANGE,a),b.getModel().addListener(mxEvent.CHANGE,a));b.addListener(mxEvent.CELLS_ADDED,function(a,c){var d=c.getProperty("cells"),e=c.getProperty("parent");b.getModel().isLayer(e)&&!b.isCellVisible(e)&&null!=d&&0<d.length&&b.getModel().setVisible(e,!0)});this.gestureHandler= +mxUtils.bind(this,function(a){null!=this.currentMenu&&mxEvent.getSource(a)!=this.currentMenu.div&&this.hideCurrentMenu()});mxEvent.addGestureListeners(document,this.gestureHandler);this.resizeHandler=mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){null!=this.editor.graph&&this.refresh()}),0)});mxEvent.addListener(window,"resize",this.resizeHandler);this.orientationChangeHandler=mxUtils.bind(this,function(){this.refresh()});mxEvent.addListener(window,"orientationchange", +this.orientationChangeHandler);mxClient.IS_IOS&&!window.navigator.standalone&&(this.scrollHandler=mxUtils.bind(this,function(){window.scrollTo(0,0)}),mxEvent.addListener(window,"scroll",this.scrollHandler));this.editor.addListener("resetGraphView",mxUtils.bind(this,function(){this.resetScrollbars()}));this.addListener("gridEnabledChanged",mxUtils.bind(this,function(){b.view.validateBackground()}));this.addListener("backgroundColorChanged",mxUtils.bind(this,function(){b.view.validateBackground()})); +b.addListener("gridSizeChanged",mxUtils.bind(this,function(){b.isGridEnabled()&&b.view.validateBackground()}));this.editor.resetGraph();this.init();this.open()};mxUtils.extend(EditorUi,mxEventSource);EditorUi.compactUi=!0;EditorUi.prototype.splitSize=mxClient.IS_TOUCH||mxClient.IS_POINTER?12:8;EditorUi.prototype.menubarHeight=30;EditorUi.prototype.formatEnabled=!0;EditorUi.prototype.formatWidth=240;EditorUi.prototype.toolbarHeight=34;EditorUi.prototype.footerHeight=28; +EditorUi.prototype.sidebarFooterHeight=34;EditorUi.prototype.hsplitPosition=640>=screen.width?118:208;EditorUi.prototype.allowAnimation=!0;EditorUi.prototype.lightboxMaxFitScale=2;EditorUi.prototype.lightboxVerticalDivider=4;EditorUi.prototype.hsplitClickEnabled=!1; EditorUi.prototype.init=function(){var a=this.editor.graph;mxEvent.addListener(a.container,"keydown",mxUtils.bind(this,function(a){this.onKeyDown(a)}));mxEvent.addListener(a.container,"keypress",mxUtils.bind(this,function(a){this.onKeyPress(a)}));this.addUndoListener();this.addBeforeUnloadListener();a.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.updateActionStates()}));a.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.updateActionStates()})); var c=a.setDefaultParent,d=this;this.editor.graph.setDefaultParent=function(){c.apply(this,arguments);d.updateActionStates()};a.editLink=d.actions.get("editLink").funct;this.updateActionStates();this.initClipboard();this.initCanvas();null!=this.format&&this.format.init()};EditorUi.prototype.onKeyDown=function(a){var c=this.editor.graph;9==a.which&&c.isEnabled()&&!mxEvent.isAltDown(a)&&(c.isEditing()?c.stopEditing(!1):c.selectCell(!mxEvent.isShiftDown(a)),mxEvent.consume(a))}; EditorUi.prototype.onKeyPress=function(a){var c=this.editor.graph;!this.isImmediateEditingEvent(a)||c.isEditing()||c.isSelectionEmpty()||0===a.which||mxEvent.isAltDown(a)||mxEvent.isControlDown(a)||mxEvent.isMetaDown(a)||(c.escape(),c.startEditing(),mxClient.IS_FF&&(c=c.cellEditor,c.textarea.innerHTML=String.fromCharCode(a.which),a=document.createRange(),a.selectNodeContents(c.textarea),a.collapse(!1),c=window.getSelection(),c.removeAllRanges(),c.addRange(a)))}; @@ -2146,13 +2148,13 @@ this.lightboxToolbarActions[m];f(w.fn,w.icon,w.tooltip)}!a.lightbox||"1"!=urlPar mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||q(30)}));var v=a.getTolerance();a.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(b,c){this.startX=c.getGraphX();this.startY=c.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(b,c){mxEvent.isTouchEvent(c.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<v&&Math.abs(this.scrollTop- a.container.scrollTop)<v&&Math.abs(this.startX-c.getGraphX())<v&&Math.abs(this.startY-c.getGraphY())<v&&(0<parseFloat(d.chromelessToolbar.style.opacity||0)?u():q(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var z=a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var a=this.graph.getPagePadding(),b=this.graph.getPageSize();this.translate.x=a.x-(this.x0||0)*b.width;this.translate.y= a.y-(this.y0||0)*b.height}z.apply(this,arguments)};var x=a.sizeDidChange;a.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var b=this.getPageLayout(),c=this.getPagePadding(),d=this.getPageSize(),e=Math.ceil(2*c.x+b.width*d.width),g=Math.ceil(2*c.y+b.height*d.height),f=a.minimumGraphSize;if(null==f||f.width!=e||f.height!=g)a.minimumGraphSize=new mxRectangle(0,0,e,g);e=c.x-b.x*d.width;c=c.y-b.y*d.height;this.autoTranslate||this.view.translate.x==e&&this.view.translate.y== -c?x.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=b.x,this.view.y0=b.y,b=a.view.translate.x,d=a.view.translate.y,a.view.setTranslate(e,c),a.container.scrollLeft+=Math.round((e-b)*a.view.scale),a.container.scrollTop+=Math.round((c-d)*a.view.scale),this.autoTranslate=!1)}}}a.updateZoomTimeout=null;a.cumulativeZoomFactor=1;var F=null;a.lazyZoom=function(b){null!=this.updateZoomTimeout&&window.clearTimeout(this.updateZoomTimeout);b?.15>this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor= +c?x.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=b.x,this.view.y0=b.y,b=a.view.translate.x,d=a.view.translate.y,a.view.setTranslate(e,c),a.container.scrollLeft+=Math.round((e-b)*a.view.scale),a.container.scrollTop+=Math.round((c-d)*a.view.scale),this.autoTranslate=!1)}}}a.updateZoomTimeout=null;a.cumulativeZoomFactor=1;var E=null;a.lazyZoom=function(b){null!=this.updateZoomTimeout&&window.clearTimeout(this.updateZoomTimeout);b?.15>this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor= (this.view.scale+.01)/this.view.scale:(this.cumulativeZoomFactor*=this.zoomFactor,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor=(this.view.scale-.01)/this.view.scale:(this.cumulativeZoomFactor/=this.zoomFactor,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale);this.cumulativeZoomFactor=Math.max(.01,Math.min(this.view.scale* -this.cumulativeZoomFactor,160)/this.view.scale);this.updateZoomTimeout=window.setTimeout(mxUtils.bind(this,function(){var b=mxUtils.getOffset(a.container),e=0,g=0;null!=F&&(e=a.container.offsetWidth/2-F.x+b.x,g=a.container.offsetHeight/2-F.y+b.y);b=this.view.scale;this.zoom(this.cumulativeZoomFactor);this.view.scale!=b&&(null!=c&&d.chromelessResize(!1,null,e*(this.cumulativeZoomFactor-1),g*(this.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==e&&0==g||(a.container.scrollLeft-=e*(this.cumulativeZoomFactor- -1),a.container.scrollTop-=g*(this.cumulativeZoomFactor-1)));this.cumulativeZoomFactor=1;this.updateZoomTimeout=null}),this.lazyZoomDelay)};mxEvent.addMouseWheelListener(mxUtils.bind(this,function(b,c){if((null==this.dialogs||0==this.dialogs.length)&&a.isZoomWheelEvent(b))for(var d=mxEvent.getSource(b);null!=d;){if(d==a.container){F=new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b));a.lazyZoom(c);mxEvent.consume(b);break}d=d.parentNode}}))}; +this.cumulativeZoomFactor,160)/this.view.scale);this.updateZoomTimeout=window.setTimeout(mxUtils.bind(this,function(){var b=mxUtils.getOffset(a.container),e=0,g=0;null!=E&&(e=a.container.offsetWidth/2-E.x+b.x,g=a.container.offsetHeight/2-E.y+b.y);b=this.view.scale;this.zoom(this.cumulativeZoomFactor);this.view.scale!=b&&(null!=c&&d.chromelessResize(!1,null,e*(this.cumulativeZoomFactor-1),g*(this.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==e&&0==g||(a.container.scrollLeft-=e*(this.cumulativeZoomFactor- +1),a.container.scrollTop-=g*(this.cumulativeZoomFactor-1)));this.cumulativeZoomFactor=1;this.updateZoomTimeout=null}),this.lazyZoomDelay)};mxEvent.addMouseWheelListener(mxUtils.bind(this,function(b,c){if((null==this.dialogs||0==this.dialogs.length)&&a.isZoomWheelEvent(b))for(var d=mxEvent.getSource(b);null!=d;){if(d==a.container){E=new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b));a.lazyZoom(c);mxEvent.consume(b);break}d=d.parentNode}}))}; EditorUi.prototype.addChromelessToolbarItems=function(a){a(mxUtils.bind(this,function(a){this.actions.get("print").funct();mxEvent.consume(a)}),Editor.printLargeImage,mxResources.get("print"))}; EditorUi.prototype.createTemporaryGraph=function(a){a=new Graph(document.createElement("div"),null,null,a);a.resetViewOnRootChange=!1;a.setConnectable(!1);a.gridEnabled=!1;a.autoScroll=!1;a.setTooltips(!1);a.setEnabled(!1);a.container.style.visibility="hidden";a.container.style.position="absolute";a.container.style.overflow="hidden";a.container.style.height="1px";a.container.style.width="1px";return a}; -EditorUi.prototype.addChromelessClickHandler=function(){var a=urlParams.highlight;null!=a&&0<a.length&&(a="#"+a);this.editor.graph.addClickHandler(a)};EditorUi.prototype.toggleFormatPanel=function(a){this.formatWidth=a||0<this.formatWidth?0:240;this.formatContainer.style.display=a||0<this.formatWidth?"":"none";this.refresh();this.format.refresh();this.fireEvent(new mxEventObject("formatWidthChanged"))}; +EditorUi.prototype.addChromelessClickHandler=function(){var a=urlParams.highlight;null!=a&&0<a.length&&(a="#"+a);this.editor.graph.addClickHandler(a)};EditorUi.prototype.toggleFormatPanel=function(a){null!=this.format&&(this.formatWidth=a||0<this.formatWidth?0:240,this.formatContainer.style.display=a||0<this.formatWidth?"":"none",this.refresh(),this.format.refresh(),this.fireEvent(new mxEventObject("formatWidthChanged")))}; EditorUi.prototype.lightboxFit=function(a){if(this.isDiagramEmpty())this.editor.graph.view.setScale(1);else{var c=urlParams.border,d=60;null!=c&&(d=parseInt(c));this.editor.graph.maxFitScale=this.lightboxMaxFitScale;this.editor.graph.fit(d,null,null,null,null,null,a);this.editor.graph.maxFitScale=null}};EditorUi.prototype.isDiagramEmpty=function(){var a=this.editor.graph.getModel();return 1==a.getChildCount(a.root)&&0==a.getChildCount(a.getChildAt(a.root,0))}; EditorUi.prototype.isSelectionAllowed=function(a){return"SELECT"==mxEvent.getSource(a).nodeName||"INPUT"==mxEvent.getSource(a).nodeName&&mxUtils.isAncestorNode(this.formatContainer,mxEvent.getSource(a))};EditorUi.prototype.addBeforeUnloadListener=function(){window.onbeforeunload=mxUtils.bind(this,function(){if(!this.editor.isChromelessView())return this.onBeforeUnload()})};EditorUi.prototype.onBeforeUnload=function(){if(this.editor.modified)return mxResources.get("allChangesLost")}; EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(a,c){try{var d=mxUtils.parseXml(a);this.editor.setGraphXml(d.documentElement);this.editor.setModified(!1);this.editor.undoManager.clear();null!=c&&(this.editor.setFilename(c),this.updateDocumentTitle())}catch(b){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+b.message)}}))}catch(a){}this.editor.graph.view.validate();this.editor.graph.sizeDidChange(); @@ -2246,15 +2248,15 @@ this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",t null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=g+"px";var l=-Math.round(h.x-this.tooltipBorder),h=-Math.round(h.y-this.tooltipBorder),m=document.body,p=document.documentElement,n=this.getTooltipOffset(),u=this.container.clientWidth+this.editorUi.splitSize+3+this.editorUi.container.offsetLeft+n.x,m=Math.min(Math.max(m.clientHeight||0,p.clientHeight)-g-20,Math.max(0,this.editorUi.container.offsetTop+this.container.offsetTop+a.offsetTop-this.container.scrollTop- g/2+16))+n.y;mxClient.IS_SVG?0!=l||0!=h?this.graph2.view.canvas.setAttribute("transform","translate("+l+","+h+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=l+"px",this.graph2.view.drawPane.style.top=h+"px");this.tooltip.style.position="absolute";this.tooltip.style.left=u+"px";this.tooltip.style.top=m+"px";this.tooltipImage.style.left=u-13+"px";this.tooltipImage.style.top=m+g/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?h():this.thread= window.setTimeout(h,this.tooltipDelay);this.currentElt=a}};Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)};Sidebar.prototype.addDataEntry=function(a,c,d,b,f){return this.addEntry(a,mxUtils.bind(this,function(){return this.createVertexTemplateFromData(f,c,d,b)}))}; -Sidebar.prototype.addEntry=function(a,c){if(null!=this.taglist&&null!=a&&0<a.length)for(var d=a.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),b=mxUtils.bind(this,function(a){if(1<a.length){var b=this.taglist[a];"object"!==typeof b&&(b={entries:[],dict:new mxDictionary},this.taglist[a]=b);null==b.dict.get(c)&&(b.dict.put(c,c),b.entries.push(c))}}),f=0;f<d.length;f++){b(d[f]);var e=d[f].replace(/\.*\d*$/,"");e!=d[f]&&b(e)}return c}; +Sidebar.prototype.addEntry=function(a,c){if(null!=this.taglist&&null!=a&&0<a.length)for(var d=a.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),b=mxUtils.bind(this,function(a){if(null!=a&&1<a.length){var b=this.taglist[a];"object"!==typeof b&&(b={entries:[],dict:new mxDictionary},this.taglist[a]=b);null==b.dict.get(c)&&(b.dict.put(c,c),b.entries.push(c))}}),f=0;f<d.length;f++){b(d[f]);var e=d[f].replace(/\.*\d*$/,"");e!=d[f]&&b(e)}return c}; Sidebar.prototype.searchEntries=function(a,c,d,b,f){if(null!=this.taglist&&null!=a){var e=a.toLowerCase().split(" ");f=new mxDictionary;var h=(d+1)*c;a=[];for(var g=0,k=0;k<e.length;k++)if(0<e[k].length){var l=this.taglist[e[k]],m=new mxDictionary;if(null!=l){var p=l.entries;a=[];for(var n=0;n<p.length;n++)if(l=p[n],0==g==(null==f.get(l))&&(m.put(l,l),a.push(l),k==e.length-1&&a.length==h)){b(a.slice(d*c,h),h,!0,e);return}}else a=[];f=m;g++}f=a.length;b(a.slice(d*c,(d+1)*c),f,!1,e)}else b([],null, null,e)};Sidebar.prototype.filterTags=function(a){if(null!=a){a=a.split(" ");for(var c=[],d={},b=0;b<a.length;b++)null==d[a[b]]&&(d[a[b]]="1",c.push(a[b]));return c.join(" ")}return null};Sidebar.prototype.cloneCell=function(a,c){var d=a.clone();null!=c&&(d.value=c);return d}; Sidebar.prototype.addSearchPalette=function(a){var c=document.createElement("div");c.style.visibility="hidden";this.container.appendChild(c);var d=document.createElement("div");d.className="geSidebar";d.style.boxSizing="border-box";d.style.overflow="hidden";d.style.width="100%";d.style.padding="8px";d.style.paddingTop="14px";d.style.paddingBottom="0px";a||(d.style.display="none");var b=document.createElement("div");b.style.whiteSpace="nowrap";b.style.textOverflow="clip";b.style.paddingBottom="8px"; b.style.cursor="default";var f=document.createElement("input");f.setAttribute("placeholder",mxResources.get("searchShapes"));f.setAttribute("type","text");f.style.fontSize="12px";f.style.overflow="hidden";f.style.boxSizing="border-box";f.style.border="solid 1px #d5d5d5";f.style.borderRadius="4px";f.style.width="100%";f.style.outline="none";f.style.padding="6px";b.appendChild(f);var e=document.createElement("img");e.setAttribute("src",Sidebar.prototype.searchImage);e.setAttribute("title",mxResources.get("search")); e.style.position="relative";e.style.left="-18px";mxClient.IS_QUIRKS?(f.style.height="28px",e.style.top="-4px"):e.style.top="1px";e.style.background="url('"+this.editorUi.editor.transparentImage+"')";var h;b.appendChild(e);d.appendChild(b);var g=document.createElement("center"),k=mxUtils.button(mxResources.get("moreResults"),function(){h()});k.style.display="none";k.style.lineHeight="normal";k.style.marginTop="4px";k.style.marginBottom="8px";g.style.paddingTop="4px";g.style.paddingBottom="8px";g.appendChild(k); d.appendChild(g);var l="",m=!1,p=!1,n=0,u={},q=12,r=mxUtils.bind(this,function(){m=!1;this.currentSearch=null;for(var a=d.firstChild;null!=a;){var c=a.nextSibling;a!=b&&a!=g&&a.parentNode.removeChild(a);a=c}});mxEvent.addListener(e,"click",function(){e.getAttribute("src")==Dialog.prototype.closeImage&&(e.setAttribute("src",Sidebar.prototype.searchImage),e.setAttribute("title",mxResources.get("search")),k.style.display="none",l=f.value="",r());f.focus()});h=mxUtils.bind(this,function(){q=4*Math.max(1, -Math.floor(this.container.clientWidth/(this.thumbWidth+10)));this.hideTooltip();if(""!=f.value){if(null!=g.parentNode&&(l!=f.value&&(r(),l=f.value,u={},p=!1,n=0),!m&&!p)){k.setAttribute("disabled","true");k.style.display="";k.style.cursor="wait";k.innerHTML=mxResources.get("loading")+"...";m=!0;var a={};this.currentSearch=a;this.searchEntries(l,q,n,mxUtils.bind(this,function(b,c,e,f){if(this.currentSearch==a){b=null!=b?b:[];m=!1;n++;g.parentNode.removeChild(g);this.insertSearchHint(d,l,q,n,b,c,e, -f);for(c=0;c<b.length;c++)f=b[c](),null==u[f.innerHTML]&&(u[f.innerHTML]="1",d.appendChild(b[c]()));e?(k.removeAttribute("disabled"),k.innerHTML=mxResources.get("moreResults")):(k.innerHTML=mxResources.get("reset"),k.style.display="none",p=!0);k.style.cursor="";d.appendChild(g)}}),mxUtils.bind(this,function(){k.style.cursor=""}))}}else r(),l=f.value="",u={},k.style.display="none",p=!1,f.focus()});mxEvent.addListener(f,"keydown",mxUtils.bind(this,function(a){13==a.keyCode&&(h(),mxEvent.consume(a))})); +Math.floor(this.container.clientWidth/(this.thumbWidth+10)));this.hideTooltip();if(""!=f.value){if(null!=g.parentNode&&(l!=f.value&&(r(),l=f.value,u={},p=!1,n=0),!m&&!p)){k.setAttribute("disabled","true");k.style.display="";k.style.cursor="wait";k.innerHTML=mxResources.get("loading")+"...";m=!0;var a={};this.currentSearch=a;this.searchEntries(l,q,n,mxUtils.bind(this,function(b,c,e,f){if(this.currentSearch==a){b=null!=b?b:[];m=!1;n++;this.insertSearchHint(d,l,q,n,b,c,e,f);null!=g.parentNode&&g.parentNode.removeChild(g); +for(c=0;c<b.length;c++)f=b[c](),null==u[f.innerHTML]&&(u[f.innerHTML]="1",d.appendChild(b[c]()));e?(k.removeAttribute("disabled"),k.innerHTML=mxResources.get("moreResults")):(k.innerHTML=mxResources.get("reset"),k.style.display="none",p=!0);k.style.cursor="";d.appendChild(g)}}),mxUtils.bind(this,function(){k.style.cursor=""}))}}else r(),l=f.value="",u={},k.style.display="none",p=!1,f.focus()});mxEvent.addListener(f,"keydown",mxUtils.bind(this,function(a){13==a.keyCode&&(h(),mxEvent.consume(a))})); mxEvent.addListener(f,"focus",function(){f.style.paddingRight=""});mxEvent.addListener(f,"blur",function(){f.style.paddingRight="20px"});f.style.paddingRight="20px";mxEvent.addListener(f,"keyup",mxUtils.bind(this,function(a){""==f.value?(e.setAttribute("src",Sidebar.prototype.searchImage),e.setAttribute("title",mxResources.get("search"))):(e.setAttribute("src",Dialog.prototype.closeImage),e.setAttribute("title",mxResources.get("reset")));""==f.value?(p=!0,k.style.display="none"):f.value!=l?(k.style.display= "none",p=!1):m||(k.style.display=p?"none":"")}));mxEvent.addListener(f,"mousedown",function(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=!0});mxEvent.addListener(f,"selectstart",function(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=!0});a=document.createElement("div");a.appendChild(d);this.container.appendChild(a);this.palettes.search=[c,a]}; Sidebar.prototype.insertSearchHint=function(a,c,d,b,f,e,h,g){0==f.length&&1==b&&(d=document.createElement("div"),d.className="geTitle",d.style.cssText="background-color:transparent;border-color:transparent;color:gray;padding:6px 0px 0px 0px !important;margin:4px 8px 4px 8px;text-align:center;cursor:default !important",mxUtils.write(d,mxResources.get("noResultsFor",[c])),a.appendChild(d))}; @@ -2369,41 +2371,41 @@ Sidebar.prototype.updateShapes=function(a,c){var d=this.editorUi.editor.graph,b= d.getModel().isEdge(k)==d.getModel().isEdge(a)){var l=d.view.getState(k),m=null!=l?l.style:d.getCellStyle(c[g]);d.getModel().setStyle(k,e);if(null!=l&&"1"==mxUtils.getValue(l.style,"composite","0"))for(var p=d.model.getChildCount(k);0<=p;p--)d.model.remove(d.model.getChildAt(k,p));if(null!=m)for("umlLifeline"==m[mxConstants.STYLE_SHAPE]&&"umlLifeline"!=b[mxConstants.STYLE_SHAPE]&&(d.setCellStyles(mxConstants.STYLE_SHAPE,"umlLifeline",[k]),d.setCellStyles("participant",b[mxConstants.STYLE_SHAPE],[k])), p=0;p<h.length;p++){var n=m[h[p]];null!=n&&d.setCellStyles(h[p],n,[k])}f.push(k)}}}finally{d.model.endUpdate()}return f}; Sidebar.prototype.createDropHandler=function(a,c,d,b){d=null!=d?d:!0;return mxUtils.bind(this,function(f,e,h,g,k,l){for(l=l?null:mxEvent.isTouchEvent(e)||mxEvent.isPenEvent(e)?document.elementFromPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)):mxEvent.getSource(e);null!=l&&l!=this.container;)l=l.parentNode;if(null==l&&f.isEnabled()){a=f.getImportableCells(a);if(0<a.length){f.stopEditing();l=null==h||mxEvent.isAltDown(e)?!1:f.isValidDropTarget(h,a,e);var m=null;null==h||l||(h=null);if(!f.isCellLocked(h|| -f.getDefaultParent())){f.model.beginUpdate();try{g=Math.round(g);k=Math.round(k);if(c&&f.isSplitTarget(h,a,e)){var p=f.cloneCells(a);f.splitEdge(h,p,null,g-b.width/2,k-b.height/2);m=p}else 0<a.length&&(m=f.importCells(a,g,k,h));if(null!=f.layoutManager){var n=f.layoutManager.getLayout(h);if(null!=n){var u=f.view.scale,q=f.view.translate,r=(g+q.x)*u,t=(k+q.y)*u;for(h=0;h<m.length;h++)n.moveCell(m[h],r,t)}}d&&f.fireEvent(new mxEventObject("cellsInserted","cells",m))}catch(w){this.editorUi.handleError(w)}finally{f.model.endUpdate()}null!= +f.getDefaultParent())){f.model.beginUpdate();try{g=Math.round(g);k=Math.round(k);if(c&&f.isSplitTarget(h,a,e)){var p=f.cloneCells(a);f.splitEdge(h,p,null,g-b.width/2,k-b.height/2);m=p}else 0<a.length&&(m=f.importCells(a,g,k,h));if(null!=f.layoutManager){var n=f.layoutManager.getLayout(h);if(null!=n){var u=f.view.scale,q=f.view.translate,r=(g+q.x)*u,t=(k+q.y)*u;for(h=0;h<m.length;h++)n.moveCell(m[h],r,t)}}!d||null!=e&&mxEvent.isShiftDown(e)||f.fireEvent(new mxEventObject("cellsInserted","cells",m))}catch(w){this.editorUi.handleError(w)}finally{f.model.endUpdate()}null!= m&&0<m.length&&(f.scrollCellToVisible(m[0]),f.setSelectionCells(m));f.editAfterInsert&&null!=e&&mxEvent.isMouseEvent(e)&&null!=m&&1==m.length&&window.setTimeout(function(){f.startEditing(m[0])},0)}}mxEvent.consume(e)}})};Sidebar.prototype.createDragPreview=function(a,c){var d=document.createElement("div");d.style.border=this.dragPreviewBorder;d.style.width=a+"px";d.style.height=c+"px";return d}; Sidebar.prototype.dropAndConnect=function(a,c,d,b,f){var e=this.getDropAndConnectGeometry(a,c[b],d,c),h=[];if(null!=e){var g=this.editorUi.editor.graph,k=null;g.model.beginUpdate();try{var l=g.getCellGeometry(a),m=g.getCellGeometry(c[b]),p=g.model.getParent(a),n=!0;if(null!=g.layoutManager){var u=g.layoutManager.getLayout(p);if(null!=u&&u.constructor==mxStackLayout&&(n=!1,h=g.view.getState(p),null!=h)){var q=new mxPoint(h.x/g.view.scale-g.view.translate.x,h.y/g.view.scale-g.view.translate.y);e.x+= q.x;e.y+=q.y;var r=e.getTerminalPoint(!1);null!=r&&(r.x+=q.x,r.y+=q.y)}}var t=m.x,w=m.y;g.model.isEdge(c[b])&&(w=t=0);var v=g.model.isEdge(a)||null!=l&&!l.relative&&n,h=c=g.importCells(c,e.x-(v?t:0),e.y-(v?w:0),v?p:null);if(g.model.isEdge(a))g.model.setTerminal(a,c[b],d==mxConstants.DIRECTION_NORTH);else if(g.model.isEdge(c[b])){g.model.setTerminal(c[b],a,!0);var z=g.getCellGeometry(c[b]);z.points=null;if(null!=z.getTerminalPoint(!1))z.setTerminalPoint(e.getTerminalPoint(!1),!1);else if(v&&g.model.isVertex(p)){var x= -g.view.getState(p),q=x.cell!=g.view.currentRoot?new mxPoint(x.x/g.view.scale-g.view.translate.x,x.y/g.view.scale-g.view.translate.y):new mxPoint(0,0);g.cellsMoved(c,q.x,q.y,null,null,!0)}}else m=g.getCellGeometry(c[b]),t=e.x-Math.round(m.x),w=e.y-Math.round(m.y),e.x=Math.round(m.x),e.y=Math.round(m.y),g.model.setGeometry(c[b],e),g.cellsMoved(c,t,w,null,null,!0),h=c.slice(),k=1==h.length?h[0]:null,c.push(g.insertEdge(null,null,"",a,c[b],g.createCurrentEdgeStyle()));g.fireEvent(new mxEventObject("cellsInserted", -"cells",c))}catch(F){this.editorUi.handleError(F)}finally{g.model.endUpdate()}g.editAfterInsert&&null!=f&&mxEvent.isMouseEvent(f)&&null!=k&&window.setTimeout(function(){g.startEditing(k)},0)}return h}; +g.view.getState(p),q=x.cell!=g.view.currentRoot?new mxPoint(x.x/g.view.scale-g.view.translate.x,x.y/g.view.scale-g.view.translate.y):new mxPoint(0,0);g.cellsMoved(c,q.x,q.y,null,null,!0)}}else m=g.getCellGeometry(c[b]),t=e.x-Math.round(m.x),w=e.y-Math.round(m.y),e.x=Math.round(m.x),e.y=Math.round(m.y),g.model.setGeometry(c[b],e),g.cellsMoved(c,t,w,null,null,!0),h=c.slice(),k=1==h.length?h[0]:null,c.push(g.insertEdge(null,null,"",a,c[b],g.createCurrentEdgeStyle()));null!=f&&mxEvent.isShiftDown(f)|| +g.fireEvent(new mxEventObject("cellsInserted","cells",c))}catch(E){this.editorUi.handleError(E)}finally{g.model.endUpdate()}g.editAfterInsert&&null!=f&&mxEvent.isMouseEvent(f)&&null!=k&&window.setTimeout(function(){g.startEditing(k)},0)}return h}; Sidebar.prototype.getDropAndConnectGeometry=function(a,c,d,b){var f=this.editorUi.editor.graph,e=f.view,h=1<b.length,g=f.getCellGeometry(a);b=f.getCellGeometry(c);null!=g&&null!=b&&(b=b.clone(),f.model.isEdge(a)?(a=f.view.getState(a),g=a.absolutePoints,c=g[0],f=g[g.length-1],d==mxConstants.DIRECTION_NORTH?(b.x=c.x/e.scale-e.translate.x-b.width/2,b.y=c.y/e.scale-e.translate.y-b.height/2):(b.x=f.x/e.scale-e.translate.x-b.width/2,b.y=f.y/e.scale-e.translate.y-b.height/2)):(g.relative&&(a=f.view.getState(a), g=g.clone(),g.x=(a.x-e.translate.x)/e.scale,g.y=(a.y-e.translate.y)/e.scale),e=f.defaultEdgeLength,f.model.isEdge(c)&&null!=b.getTerminalPoint(!0)&&null!=b.getTerminalPoint(!1)?(c=b.getTerminalPoint(!0),f=b.getTerminalPoint(!1),e=f.x-c.x,c=f.y-c.y,e=Math.sqrt(e*e+c*c),b.x=g.getCenterX(),b.y=g.getCenterY(),b.width=1,b.height=1,d==mxConstants.DIRECTION_NORTH?(b.height=e,b.y=g.y-e,b.setTerminalPoint(new mxPoint(b.x,b.y),!1)):d==mxConstants.DIRECTION_EAST?(b.width=e,b.x=g.x+g.width,b.setTerminalPoint(new mxPoint(b.x+ b.width,b.y),!1)):d==mxConstants.DIRECTION_SOUTH?(b.height=e,b.y=g.y+g.height,b.setTerminalPoint(new mxPoint(b.x,b.y+b.height),!1)):d==mxConstants.DIRECTION_WEST&&(b.width=e,b.x=g.x-e,b.setTerminalPoint(new mxPoint(b.x,b.y),!1))):(!h&&45<b.width&&45<b.height&&45<g.width&&45<g.height&&(b.width*=g.height/b.height,b.height=g.height),b.x=g.x+g.width/2-b.width/2,b.y=g.y+g.height/2-b.height/2,d==mxConstants.DIRECTION_NORTH?b.y=b.y-g.height/2-b.height/2-e:d==mxConstants.DIRECTION_EAST?b.x=b.x+g.width/2+ b.width/2+e:d==mxConstants.DIRECTION_SOUTH?b.y=b.y+g.height/2+b.height/2+e:d==mxConstants.DIRECTION_WEST&&(b.x=b.x-g.width/2-b.width/2-e),f.model.isEdge(c)&&null!=b.getTerminalPoint(!0)&&null!=c.getTerminal(!1)&&(g=f.getCellGeometry(c.getTerminal(!1)),null!=g&&(d==mxConstants.DIRECTION_NORTH?(b.x-=g.getCenterX(),b.y-=g.getCenterY()+g.height/2):d==mxConstants.DIRECTION_EAST?(b.x-=g.getCenterX()-g.width/2,b.y-=g.getCenterY()):d==mxConstants.DIRECTION_SOUTH?(b.x-=g.getCenterX(),b.y-=g.getCenterY()-g.height/ 2):d==mxConstants.DIRECTION_WEST&&(b.x-=g.getCenterX()+g.width/2,b.y-=g.getCenterY()))))));return b}; Sidebar.prototype.createDragSource=function(a,c,d,b,f){function e(a,b){var c;mxClient.IS_IE&&!mxClient.IS_SVG?(mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?(c=document.createElement(mxClient.VML_PREFIX+":image"),c.setAttribute("src",a.src),c.style.borderStyle="none"):(c=document.createElement("div"),c.style.backgroundImage="url("+a.src+")",c.style.backgroundPosition="center",c.style.backgroundRepeat="no-repeat"),c.style.width=a.width+4+"px",c.style.height=a.height+4+"px",c.style.display=mxClient.IS_QUIRKS? -"inline":"inline-block"):(c=mxUtils.createImage(a.src),c.style.width=a.width+"px",c.style.height=a.height+"px");null!=b&&c.setAttribute("title",b);mxUtils.setOpacity(c,a==this.refreshTarget?30:20);c.style.position="absolute";c.style.cursor="crosshair";return c}function h(a,b,c,d){null!=d.parentNode&&(mxUtils.contains(c,a,b)?(mxUtils.setOpacity(d,100),G=d):mxUtils.setOpacity(d,d==E?30:20));return c}for(var g=this.editorUi,k=g.editor.graph,l=null,m=null,p=this,n=0;n<b.length&&(null==m&&this.editorUi.editor.graph.model.isVertex(b[n])? -m=n:null==l&&this.editorUi.editor.graph.model.isEdge(b[n])&&null==this.editorUi.editor.graph.model.getTerminal(b[n],!0)&&(l=n),null==m||null==l);n++);var u=mxUtils.makeDraggable(a,this.editorUi.editor.graph,mxUtils.bind(this,function(a,d,e,g,f){null!=this.updateThread&&window.clearTimeout(this.updateThread);if(null!=b&&null!=w&&G==E){var h=a.isCellSelected(w.cell)?a.getSelectionCells():[w.cell],h=this.updateShapes(a.model.isEdge(w.cell)?b[0]:b[m],h);a.setSelectionCells(h)}else null!=b&&null!=G&&null!= -r&&G!=E?(h=a.model.isEdge(r.cell)||null==l?m:l,a.setSelectionCells(this.dropAndConnect(r.cell,b,J,h,d))):c.apply(this,arguments);null!=this.editorUi.hoverIcons&&this.editorUi.hoverIcons.update(a.view.getState(a.getSelectionCell()))}),d,0,0,k.autoscroll,!0,!0);k.addListener(mxEvent.ESCAPE,function(a,b){u.isActive()&&u.reset()});var q=u.mouseDown;u.mouseDown=function(a){mxEvent.isPopupTrigger(a)||mxEvent.isMultiTouchEvent(a)||(k.stopEditing(),q.apply(this,arguments))};var r=null,t=null,w=null,v=!1, -z=e(this.triangleUp,mxResources.get("connect")),x=e(this.triangleRight,mxResources.get("connect")),F=e(this.triangleDown,mxResources.get("connect")),D=e(this.triangleLeft,mxResources.get("connect")),E=e(this.refreshTarget,mxResources.get("replace")),C=null,M=e(this.roundDrop),L=e(this.roundDrop),J=mxConstants.DIRECTION_NORTH,G=null,K=u.createPreviewElement;u.createPreviewElement=function(a){var b=K.apply(this,arguments);mxClient.IS_SVG&&(b.style.pointerEvents="none");this.previewElementWidth=b.style.width; -this.previewElementHeight=b.style.height;return b};var O=u.dragEnter;u.dragEnter=function(a,b){null!=g.hoverIcons&&g.hoverIcons.setDisplay("none");O.apply(this,arguments)};var Q=u.dragExit;u.dragExit=function(a,b){null!=g.hoverIcons&&g.hoverIcons.setDisplay("");Q.apply(this,arguments)};u.dragOver=function(a,c){mxDragSource.prototype.dragOver.apply(this,arguments);null!=this.currentGuide&&null!=G&&this.currentGuide.hide();if(null!=this.previewElement){var d=a.view;if(null!=w&&G==E)this.previewElement.style.display= -a.model.isEdge(w.cell)?"none":"",this.previewElement.style.left=w.x+"px",this.previewElement.style.top=w.y+"px",this.previewElement.style.width=w.width+"px",this.previewElement.style.height=w.height+"px";else if(null!=r&&null!=G){var e=a.model.isEdge(r.cell)||null==l?m:l,g=p.getDropAndConnectGeometry(r.cell,b[e],J,b),h=a.model.isEdge(r.cell)?null:a.getCellGeometry(r.cell),k=a.getCellGeometry(b[e]),B=a.model.getParent(r.cell),A=d.translate.x*d.scale,H=d.translate.y*d.scale;null!=h&&!h.relative&&a.model.isVertex(B)&& -B!=d.currentRoot&&(H=d.getState(B),A=H.x,H=H.y);h=k.x;k=k.y;a.model.isEdge(b[e])&&(k=h=0);this.previewElement.style.left=(g.x-h)*d.scale+A+"px";this.previewElement.style.top=(g.y-k)*d.scale+H+"px";1==b.length&&(this.previewElement.style.width=g.width*d.scale+"px",this.previewElement.style.height=g.height*d.scale+"px");this.previewElement.style.display=""}else null!=u.currentHighlight.state&&a.model.isEdge(u.currentHighlight.state.cell)?(this.previewElement.style.left=Math.round(parseInt(this.previewElement.style.left)- -f.width*d.scale/2)+"px",this.previewElement.style.top=Math.round(parseInt(this.previewElement.style.top)-f.height*d.scale/2)+"px"):(this.previewElement.style.width=this.previewElementWidth,this.previewElement.style.height=this.previewElementHeight,this.previewElement.style.display="")}};var P=(new Date).getTime(),I=0,B=null,H=this.editorUi.editor.graph.getCellStyle(b[0]);u.getDropTarget=mxUtils.bind(this,function(a,c,d,e){var g=mxEvent.isAltDown(e)||null==b?null:a.getCellAt(c,d);if(null!=g&&!this.graph.isCellConnectable(g)){var f= -this.graph.getModel().getParent(g);this.graph.getModel().isVertex(f)&&this.graph.isCellConnectable(f)&&(g=f)}a.isCellLocked(g)&&(g=null);var k=a.view.getState(g),f=G=null;B!=k?(B=k,P=(new Date).getTime(),I=0,null!=this.updateThread&&window.clearTimeout(this.updateThread),null!=k&&(this.updateThread=window.setTimeout(function(){null==G&&(B=k,u.getDropTarget(a,c,d,e))},this.dropTargetDelay+10))):I=(new Date).getTime()-P;if(2500>I&&null!=k&&!mxEvent.isShiftDown(e)&&(mxUtils.getValue(k.style,mxConstants.STYLE_SHAPE)!= -mxUtils.getValue(H,mxConstants.STYLE_SHAPE)&&(mxUtils.getValue(k.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(k.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(k.style,mxConstants.STYLE_GRADIENTCOLOR,mxConstants.NONE)!=mxConstants.NONE)||"image"==mxUtils.getValue(H,mxConstants.STYLE_SHAPE)||1500<I||a.model.isEdge(k.cell))&&I>this.dropTargetDelay&&(a.model.isVertex(k.cell)&&null!=m||a.model.isEdge(k.cell)&&a.model.isEdge(b[0]))){w= -k;var l=a.model.isEdge(k.cell)?a.view.getPoint(k):new mxPoint(k.getCenterX(),k.getCenterY()),l=new mxRectangle(l.x-this.refreshTarget.width/2,l.y-this.refreshTarget.height/2,this.refreshTarget.width,this.refreshTarget.height);E.style.left=Math.floor(l.x)+"px";E.style.top=Math.floor(l.y)+"px";null==C&&(a.container.appendChild(E),C=E.parentNode);h(c,d,l,E)}else null==w||!mxUtils.contains(w,c,d)||1500<I&&!mxEvent.isShiftDown(e)?(w=null,null!=C&&(E.parentNode.removeChild(E),C=null)):null!=w&&null!=C&& -(l=a.model.isEdge(w.cell)?a.view.getPoint(w):new mxPoint(w.getCenterX(),w.getCenterY()),l=new mxRectangle(l.x-this.refreshTarget.width/2,l.y-this.refreshTarget.height/2,this.refreshTarget.width,this.refreshTarget.height),h(c,d,l,E));if(v&&null!=r&&!mxEvent.isAltDown(e)&&null==G){f=mxRectangle.fromRectangle(r);if(a.model.isEdge(r.cell)){var A=r.absolutePoints;null!=M.parentNode&&(l=A[0],f.add(h(c,d,new mxRectangle(l.x-this.roundDrop.width/2,l.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height), +"inline":"inline-block"):(c=mxUtils.createImage(a.src),c.style.width=a.width+"px",c.style.height=a.height+"px");null!=b&&c.setAttribute("title",b);mxUtils.setOpacity(c,a==this.refreshTarget?30:20);c.style.position="absolute";c.style.cursor="crosshair";return c}function h(a,b,c,d){null!=d.parentNode&&(mxUtils.contains(c,a,b)?(mxUtils.setOpacity(d,100),G=d):mxUtils.setOpacity(d,d==F?30:20));return c}for(var g=this.editorUi,k=g.editor.graph,l=null,m=null,p=this,n=0;n<b.length&&(null==m&&this.editorUi.editor.graph.model.isVertex(b[n])? +m=n:null==l&&this.editorUi.editor.graph.model.isEdge(b[n])&&null==this.editorUi.editor.graph.model.getTerminal(b[n],!0)&&(l=n),null==m||null==l);n++);var u=mxUtils.makeDraggable(a,this.editorUi.editor.graph,mxUtils.bind(this,function(a,d,e,g,f){null!=this.updateThread&&window.clearTimeout(this.updateThread);if(null!=b&&null!=w&&G==F){var h=a.isCellSelected(w.cell)?a.getSelectionCells():[w.cell],h=this.updateShapes(a.model.isEdge(w.cell)?b[0]:b[m],h);a.setSelectionCells(h)}else null!=b&&null!=G&&null!= +r&&G!=F?(h=a.model.isEdge(r.cell)||null==l?m:l,a.setSelectionCells(this.dropAndConnect(r.cell,b,J,h,d))):c.apply(this,arguments);null!=this.editorUi.hoverIcons&&this.editorUi.hoverIcons.update(a.view.getState(a.getSelectionCell()))}),d,0,0,k.autoscroll,!0,!0);k.addListener(mxEvent.ESCAPE,function(a,b){u.isActive()&&u.reset()});var q=u.mouseDown;u.mouseDown=function(a){mxEvent.isPopupTrigger(a)||mxEvent.isMultiTouchEvent(a)||(k.stopEditing(),q.apply(this,arguments))};var r=null,t=null,w=null,v=!1, +z=e(this.triangleUp,mxResources.get("connect")),x=e(this.triangleRight,mxResources.get("connect")),E=e(this.triangleDown,mxResources.get("connect")),D=e(this.triangleLeft,mxResources.get("connect")),F=e(this.refreshTarget,mxResources.get("replace")),C=null,M=e(this.roundDrop),L=e(this.roundDrop),J=mxConstants.DIRECTION_NORTH,G=null,K=u.createPreviewElement;u.createPreviewElement=function(a){var b=K.apply(this,arguments);mxClient.IS_SVG&&(b.style.pointerEvents="none");this.previewElementWidth=b.style.width; +this.previewElementHeight=b.style.height;return b};var O=u.dragEnter;u.dragEnter=function(a,b){null!=g.hoverIcons&&g.hoverIcons.setDisplay("none");O.apply(this,arguments)};var Q=u.dragExit;u.dragExit=function(a,b){null!=g.hoverIcons&&g.hoverIcons.setDisplay("");Q.apply(this,arguments)};u.dragOver=function(a,c){mxDragSource.prototype.dragOver.apply(this,arguments);null!=this.currentGuide&&null!=G&&this.currentGuide.hide();if(null!=this.previewElement){var d=a.view;if(null!=w&&G==F)this.previewElement.style.display= +a.model.isEdge(w.cell)?"none":"",this.previewElement.style.left=w.x+"px",this.previewElement.style.top=w.y+"px",this.previewElement.style.width=w.width+"px",this.previewElement.style.height=w.height+"px";else if(null!=r&&null!=G){var e=a.model.isEdge(r.cell)||null==l?m:l,g=p.getDropAndConnectGeometry(r.cell,b[e],J,b),h=a.model.isEdge(r.cell)?null:a.getCellGeometry(r.cell),k=a.getCellGeometry(b[e]),B=a.model.getParent(r.cell),A=d.translate.x*d.scale,I=d.translate.y*d.scale;null!=h&&!h.relative&&a.model.isVertex(B)&& +B!=d.currentRoot&&(I=d.getState(B),A=I.x,I=I.y);h=k.x;k=k.y;a.model.isEdge(b[e])&&(k=h=0);this.previewElement.style.left=(g.x-h)*d.scale+A+"px";this.previewElement.style.top=(g.y-k)*d.scale+I+"px";1==b.length&&(this.previewElement.style.width=g.width*d.scale+"px",this.previewElement.style.height=g.height*d.scale+"px");this.previewElement.style.display=""}else null!=u.currentHighlight.state&&a.model.isEdge(u.currentHighlight.state.cell)?(this.previewElement.style.left=Math.round(parseInt(this.previewElement.style.left)- +f.width*d.scale/2)+"px",this.previewElement.style.top=Math.round(parseInt(this.previewElement.style.top)-f.height*d.scale/2)+"px"):(this.previewElement.style.width=this.previewElementWidth,this.previewElement.style.height=this.previewElementHeight,this.previewElement.style.display="")}};var P=(new Date).getTime(),H=0,B=null,I=this.editorUi.editor.graph.getCellStyle(b[0]);u.getDropTarget=mxUtils.bind(this,function(a,c,d,e){var g=mxEvent.isAltDown(e)||null==b?null:a.getCellAt(c,d);if(null!=g&&!this.graph.isCellConnectable(g)){var f= +this.graph.getModel().getParent(g);this.graph.getModel().isVertex(f)&&this.graph.isCellConnectable(f)&&(g=f)}a.isCellLocked(g)&&(g=null);var k=a.view.getState(g),f=G=null;B!=k?(B=k,P=(new Date).getTime(),H=0,null!=this.updateThread&&window.clearTimeout(this.updateThread),null!=k&&(this.updateThread=window.setTimeout(function(){null==G&&(B=k,u.getDropTarget(a,c,d,e))},this.dropTargetDelay+10))):H=(new Date).getTime()-P;if(2500>H&&null!=k&&!mxEvent.isShiftDown(e)&&(mxUtils.getValue(k.style,mxConstants.STYLE_SHAPE)!= +mxUtils.getValue(I,mxConstants.STYLE_SHAPE)&&(mxUtils.getValue(k.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(k.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(k.style,mxConstants.STYLE_GRADIENTCOLOR,mxConstants.NONE)!=mxConstants.NONE)||"image"==mxUtils.getValue(I,mxConstants.STYLE_SHAPE)||1500<H||a.model.isEdge(k.cell))&&H>this.dropTargetDelay&&(a.model.isVertex(k.cell)&&null!=m||a.model.isEdge(k.cell)&&a.model.isEdge(b[0]))){w= +k;var l=a.model.isEdge(k.cell)?a.view.getPoint(k):new mxPoint(k.getCenterX(),k.getCenterY()),l=new mxRectangle(l.x-this.refreshTarget.width/2,l.y-this.refreshTarget.height/2,this.refreshTarget.width,this.refreshTarget.height);F.style.left=Math.floor(l.x)+"px";F.style.top=Math.floor(l.y)+"px";null==C&&(a.container.appendChild(F),C=F.parentNode);h(c,d,l,F)}else null==w||!mxUtils.contains(w,c,d)||1500<H&&!mxEvent.isShiftDown(e)?(w=null,null!=C&&(F.parentNode.removeChild(F),C=null)):null!=w&&null!=C&& +(l=a.model.isEdge(w.cell)?a.view.getPoint(w):new mxPoint(w.getCenterX(),w.getCenterY()),l=new mxRectangle(l.x-this.refreshTarget.width/2,l.y-this.refreshTarget.height/2,this.refreshTarget.width,this.refreshTarget.height),h(c,d,l,F));if(v&&null!=r&&!mxEvent.isAltDown(e)&&null==G){f=mxRectangle.fromRectangle(r);if(a.model.isEdge(r.cell)){var A=r.absolutePoints;null!=M.parentNode&&(l=A[0],f.add(h(c,d,new mxRectangle(l.x-this.roundDrop.width/2,l.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height), M)));null!=L.parentNode&&(A=A[A.length-1],f.add(h(c,d,new mxRectangle(A.x-this.roundDrop.width/2,A.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height),L)))}else l=mxRectangle.fromRectangle(r),null!=r.shape&&null!=r.shape.boundingBox&&(l=mxRectangle.fromRectangle(r.shape.boundingBox)),l.grow(this.graph.tolerance),l.grow(HoverIcons.prototype.arrowSpacing),A=this.graph.selectionCellsHandler.getHandler(r.cell),null!=A&&(l.x-=A.horizontalOffset/2,l.y-=A.verticalOffset/2,l.width+=A.horizontalOffset, l.height+=A.verticalOffset,null!=A.rotationShape&&null!=A.rotationShape.node&&"hidden"!=A.rotationShape.node.style.visibility&&"none"!=A.rotationShape.node.style.display&&null!=A.rotationShape.boundingBox&&l.add(A.rotationShape.boundingBox)),f.add(h(c,d,new mxRectangle(r.getCenterX()-this.triangleUp.width/2,l.y-this.triangleUp.height,this.triangleUp.width,this.triangleUp.height),z)),f.add(h(c,d,new mxRectangle(l.x+l.width,r.getCenterY()-this.triangleRight.height/2,this.triangleRight.width,this.triangleRight.height), -x)),f.add(h(c,d,new mxRectangle(r.getCenterX()-this.triangleDown.width/2,l.y+l.height,this.triangleDown.width,this.triangleDown.height),F)),f.add(h(c,d,new mxRectangle(l.x-this.triangleLeft.width,r.getCenterY()-this.triangleLeft.height/2,this.triangleLeft.width,this.triangleLeft.height),D));null!=f&&f.grow(10)}J=mxConstants.DIRECTION_NORTH;G==x?J=mxConstants.DIRECTION_EAST:G==F||G==L?J=mxConstants.DIRECTION_SOUTH:G==D&&(J=mxConstants.DIRECTION_WEST);null!=w&&G==E&&(k=w);l=(null==m||a.isCellConnectable(b[m]))&& -(a.model.isEdge(g)&&null!=m||a.model.isVertex(g)&&a.isCellConnectable(g));if(null!=r&&5E3<=I||r!=k&&(null==f||!mxUtils.contains(f,c,d)||500<I&&null==G&&l))if(v=!1,r=5E3>I&&I>this.dropTargetDelay||a.model.isEdge(g)?k:null,null!=r&&l){f=[M,L,z,x,F,D];for(l=0;l<f.length;l++)null!=f[l].parentNode&&f[l].parentNode.removeChild(f[l]);a.model.isEdge(g)?(A=k.absolutePoints,null!=A&&(l=A[0],A=A[A.length-1],f=a.tolerance,new mxRectangle(c-f,d-f,2*f,2*f),M.style.left=Math.floor(l.x-this.roundDrop.width/2)+"px", +x)),f.add(h(c,d,new mxRectangle(r.getCenterX()-this.triangleDown.width/2,l.y+l.height,this.triangleDown.width,this.triangleDown.height),E)),f.add(h(c,d,new mxRectangle(l.x-this.triangleLeft.width,r.getCenterY()-this.triangleLeft.height/2,this.triangleLeft.width,this.triangleLeft.height),D));null!=f&&f.grow(10)}J=mxConstants.DIRECTION_NORTH;G==x?J=mxConstants.DIRECTION_EAST:G==E||G==L?J=mxConstants.DIRECTION_SOUTH:G==D&&(J=mxConstants.DIRECTION_WEST);null!=w&&G==F&&(k=w);l=(null==m||a.isCellConnectable(b[m]))&& +(a.model.isEdge(g)&&null!=m||a.model.isVertex(g)&&a.isCellConnectable(g));if(null!=r&&5E3<=H||r!=k&&(null==f||!mxUtils.contains(f,c,d)||500<H&&null==G&&l))if(v=!1,r=5E3>H&&H>this.dropTargetDelay||a.model.isEdge(g)?k:null,null!=r&&l){f=[M,L,z,x,E,D];for(l=0;l<f.length;l++)null!=f[l].parentNode&&f[l].parentNode.removeChild(f[l]);a.model.isEdge(g)?(A=k.absolutePoints,null!=A&&(l=A[0],A=A[A.length-1],f=a.tolerance,new mxRectangle(c-f,d-f,2*f,2*f),M.style.left=Math.floor(l.x-this.roundDrop.width/2)+"px", M.style.top=Math.floor(l.y-this.roundDrop.height/2)+"px",L.style.left=Math.floor(A.x-this.roundDrop.width/2)+"px",L.style.top=Math.floor(A.y-this.roundDrop.height/2)+"px",null==a.model.getTerminal(g,!0)&&a.container.appendChild(M),null==a.model.getTerminal(g,!1)&&a.container.appendChild(L))):(l=mxRectangle.fromRectangle(k),null!=k.shape&&null!=k.shape.boundingBox&&(l=mxRectangle.fromRectangle(k.shape.boundingBox)),l.grow(this.graph.tolerance),l.grow(HoverIcons.prototype.arrowSpacing),A=this.graph.selectionCellsHandler.getHandler(k.cell), null!=A&&(l.x-=A.horizontalOffset/2,l.y-=A.verticalOffset/2,l.width+=A.horizontalOffset,l.height+=A.verticalOffset,null!=A.rotationShape&&null!=A.rotationShape.node&&"hidden"!=A.rotationShape.node.style.visibility&&"none"!=A.rotationShape.node.style.display&&null!=A.rotationShape.boundingBox&&l.add(A.rotationShape.boundingBox)),z.style.left=Math.floor(k.getCenterX()-this.triangleUp.width/2)+"px",z.style.top=Math.floor(l.y-this.triangleUp.height)+"px",x.style.left=Math.floor(l.x+l.width)+"px",x.style.top= -Math.floor(k.getCenterY()-this.triangleRight.height/2)+"px",F.style.left=z.style.left,F.style.top=Math.floor(l.y+l.height)+"px",D.style.left=Math.floor(l.x-this.triangleLeft.width)+"px",D.style.top=x.style.top,"eastwest"!=k.style.portConstraint&&(a.container.appendChild(z),a.container.appendChild(F)),a.container.appendChild(x),a.container.appendChild(D));null!=k&&(t=a.selectionCellsHandler.getHandler(k.cell),null!=t&&null!=t.setHandlesVisible&&t.setHandlesVisible(!1));v=!0}else for(f=[M,L,z,x,F,D], -l=0;l<f.length;l++)null!=f[l].parentNode&&f[l].parentNode.removeChild(f[l]);v||null==t||t.setHandlesVisible(!0);g=mxEvent.isAltDown(e)&&!mxEvent.isShiftDown(e)||null!=w&&G==E?null:mxDragSource.prototype.getDropTarget.apply(this,arguments);f=a.getModel();if(null!=g&&(null!=G||!a.isSplitTarget(g,b,e))){for(;null!=g&&!a.isValidDropTarget(g,b,e)&&f.isVertex(f.getParent(g));)g=f.getParent(g);if(a.view.currentRoot==g||!a.isValidRoot(g)&&0==a.getModel().getChildCount(g)||a.isCellLocked(g)||f.isEdge(g))g= -null}return g});u.stopDrag=function(){mxDragSource.prototype.stopDrag.apply(this,arguments);for(var a=[M,L,E,z,x,F,D],b=0;b<a.length;b++)null!=a[b].parentNode&&a[b].parentNode.removeChild(a[b]);null!=r&&null!=t&&t.reset();G=C=w=r=t=null};return u}; -Sidebar.prototype.itemClicked=function(a,c,d,b){b=this.editorUi.editor.graph;b.container.focus();if(mxEvent.isAltDown(d)){if(1==b.getSelectionCount()&&b.model.isVertex(b.getSelectionCell())){c=null;for(var f=0;f<a.length&&null==c;f++)b.model.isVertex(a[f])&&(c=f);null!=c&&(b.setSelectionCells(this.dropAndConnect(b.getSelectionCell(),a,mxEvent.isMetaDown(d)||mxEvent.isControlDown(d)?mxEvent.isShiftDown(d)?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH:mxEvent.isShiftDown(d)?mxConstants.DIRECTION_EAST: -mxConstants.DIRECTION_SOUTH,c,d)),b.scrollCellToVisible(b.getSelectionCell()))}}else if(mxEvent.isShiftDown(d)&&!b.isSelectionEmpty())this.updateShapes(a[0],b.getSelectionCells()),b.scrollCellToVisible(b.getSelectionCell());else{a=b.getFreeInsertPoint();if(mxEvent.isShiftDown(d)){var f=b.getGraphBounds(),e=b.view.translate,h=b.view.scale;a.x=f.x/h-e.x+f.width/h+b.gridSize;a.y=f.y/h-e.y}c.drop(b,d,null,a.x,a.y,!0);null!=this.editorUi.hoverIcons&&(mxEvent.isTouchEvent(d)||mxEvent.isPenEvent(d))&&this.editorUi.hoverIcons.update(b.view.getState(b.getSelectionCell()))}}; +Math.floor(k.getCenterY()-this.triangleRight.height/2)+"px",E.style.left=z.style.left,E.style.top=Math.floor(l.y+l.height)+"px",D.style.left=Math.floor(l.x-this.triangleLeft.width)+"px",D.style.top=x.style.top,"eastwest"!=k.style.portConstraint&&(a.container.appendChild(z),a.container.appendChild(E)),a.container.appendChild(x),a.container.appendChild(D));null!=k&&(t=a.selectionCellsHandler.getHandler(k.cell),null!=t&&null!=t.setHandlesVisible&&t.setHandlesVisible(!1));v=!0}else for(f=[M,L,z,x,E,D], +l=0;l<f.length;l++)null!=f[l].parentNode&&f[l].parentNode.removeChild(f[l]);v||null==t||t.setHandlesVisible(!0);g=mxEvent.isAltDown(e)&&!mxEvent.isShiftDown(e)||null!=w&&G==F?null:mxDragSource.prototype.getDropTarget.apply(this,arguments);f=a.getModel();if(null!=g&&(null!=G||!a.isSplitTarget(g,b,e))){for(;null!=g&&!a.isValidDropTarget(g,b,e)&&f.isVertex(f.getParent(g));)g=f.getParent(g);if(a.view.currentRoot==g||!a.isValidRoot(g)&&0==a.getModel().getChildCount(g)||a.isCellLocked(g)||f.isEdge(g))g= +null}return g});u.stopDrag=function(){mxDragSource.prototype.stopDrag.apply(this,arguments);for(var a=[M,L,F,z,x,E,D],b=0;b<a.length;b++)null!=a[b].parentNode&&a[b].parentNode.removeChild(a[b]);null!=r&&null!=t&&t.reset();G=C=w=r=t=null};return u}; +Sidebar.prototype.itemClicked=function(a,c,d,b){b=this.editorUi.editor.graph;b.container.focus();if(mxEvent.isAltDown(d)&&1==b.getSelectionCount()&&b.model.isVertex(b.getSelectionCell())){c=null;for(var f=0;f<a.length&&null==c;f++)b.model.isVertex(a[f])&&(c=f);null!=c&&(b.setSelectionCells(this.dropAndConnect(b.getSelectionCell(),a,mxEvent.isMetaDown(d)||mxEvent.isControlDown(d)?mxEvent.isShiftDown(d)?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH:mxEvent.isShiftDown(d)?mxConstants.DIRECTION_EAST: +mxConstants.DIRECTION_SOUTH,c,d)),b.scrollCellToVisible(b.getSelectionCell()))}else if(mxEvent.isShiftDown(d)&&!b.isSelectionEmpty())this.updateShapes(a[0],b.getSelectionCells()),b.scrollCellToVisible(b.getSelectionCell());else{a=b.getFreeInsertPoint();if(mxEvent.isAltDown(d)){var f=b.getGraphBounds(),e=b.view.translate,h=b.view.scale;a.x=f.x/h-e.x+f.width/h+b.gridSize;a.y=f.y/h-e.y}c.drop(b,d,null,a.x,a.y,!0);null!=this.editorUi.hoverIcons&&(mxEvent.isTouchEvent(d)||mxEvent.isPenEvent(d))&&this.editorUi.hoverIcons.update(b.view.getState(b.getSelectionCell()))}}; Sidebar.prototype.addClickHandler=function(a,c,d){var b=c.mouseDown,f=c.mouseMove,e=c.mouseUp,h=this.editorUi.editor.graph.tolerance,g=null,k=this;c.mouseDown=function(c){b.apply(this,arguments);g=new mxPoint(mxEvent.getClientX(c),mxEvent.getClientY(c));null!=this.dragElement&&(this.dragElement.style.display="none",mxUtils.setOpacity(a,50))};c.mouseMove=function(b){null!=this.dragElement&&"none"==this.dragElement.style.display&&null!=g&&(Math.abs(g.x-mxEvent.getClientX(b))>h||Math.abs(g.y-mxEvent.getClientY(b))> h)&&(this.dragElement.style.display="",mxUtils.setOpacity(a,100));f.apply(this,arguments)};c.mouseUp=function(b){mxEvent.isPopupTrigger(b)||null!=this.currentGraph||null==this.dragElement||"none"!=this.dragElement.style.display||k.itemClicked(d,c,b,a);e.apply(c,arguments);mxUtils.setOpacity(a,100);g=null;k.currentElt=a}}; Sidebar.prototype.createVertexTemplateEntry=function(a,c,d,b,f,e,h,g){g=null!=g&&0<g.length?g:f.toLowerCase();return this.addEntry(g,mxUtils.bind(this,function(){return this.createVertexTemplate(a,c,d,b,f,e,h)}))};Sidebar.prototype.createVertexTemplate=function(a,c,d,b,f,e,h,g){a=[new mxCell(null!=b?b:"",new mxGeometry(0,0,c,d),a)];a[0].vertex=!0;return this.createVertexTemplateFromCells(a,c,d,f,e,h,g)}; @@ -2424,8 +2426,8 @@ this.pointerDownHandler=null);null!=this.pointerMoveHandler&&(mxEvent.removeList (function(){try{if(null!=navigator&&null!=navigator.language){var a=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===a||"en-ca"===a||"es-mx"===a?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(c){}})();mxText.prototype.baseSpacingTop=5;mxText.prototype.baseSpacingBottom=1;mxGraphModel.prototype.ignoreRelativeEdgeParent=!1; mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif";mxGraphView.prototype.gridSteps=4;mxGraphView.prototype.minGridSize=4;mxGraphView.prototype.gridColor="#e0e0e0";mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(a,c,d){return null}; Graph=function(a,c,d,b,f){mxGraph.call(this,a,c,d,b);this.themes=f||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);a=this.baseUrl;c=a.indexOf("//");this.domainPathUrl=this.domainUrl="";0<c&&(c=a.indexOf("/",c+2),0<c&&(this.domainUrl=a.substring(0,c)),c=a.lastIndexOf("/"),0<c&&(this.domainPathUrl=a.substring(0,c+1)));this.isHtmlLabel=function(a){var b=this.view.getState(a);a=null!=b?b.style:this.getCellStyle(a); -return"1"==a.html||"wrap"==a[mxConstants.STYLE_WHITE_SPACE]};if(this.edgeMode){var e=null,h=null,g=null,k=null,l=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,b){if("mouseDown"==b.getProperty("eventName")&&this.isEnabled()){var c=b.getProperty("event");if(!mxEvent.isControlDown(c.getEvent())&&!mxEvent.isShiftDown(c.getEvent())){var d=c.getState();null!=d&&this.model.isEdge(d.cell)&&(e=new mxPoint(c.getGraphX(),c.getGraphY()),l=this.isCellSelected(d.cell),g=d,h=c,null!= -d.text&&null!=d.text.boundingBox&&mxUtils.contains(d.text.boundingBox,c.getGraphX(),c.getGraphY())?k=mxEvent.LABEL_HANDLE:(d=this.selectionCellsHandler.getHandler(d.cell),null!=d&&null!=d.bends&&0<d.bends.length&&(k=d.getHandleForEvent(c))))}}}));this.addMouseListener({mouseDown:function(a,b){},mouseMove:mxUtils.bind(this,function(a,b){var c=this.selectionCellsHandler.handlers.map,d;for(d in c)if(null!=c[d].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isControlDown(b.getEvent())&& +return null!=a?"1"==a.html||"wrap"==a[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var e=null,h=null,g=null,k=null,l=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,b){if("mouseDown"==b.getProperty("eventName")&&this.isEnabled()){var c=b.getProperty("event");if(!mxEvent.isControlDown(c.getEvent())&&!mxEvent.isShiftDown(c.getEvent())){var d=c.getState();null!=d&&this.model.isEdge(d.cell)&&(e=new mxPoint(c.getGraphX(),c.getGraphY()),l=this.isCellSelected(d.cell),g= +d,h=c,null!=d.text&&null!=d.text.boundingBox&&mxUtils.contains(d.text.boundingBox,c.getGraphX(),c.getGraphY())?k=mxEvent.LABEL_HANDLE:(d=this.selectionCellsHandler.getHandler(d.cell),null!=d&&null!=d.bends&&0<d.bends.length&&(k=d.getHandleForEvent(c))))}}}));this.addMouseListener({mouseDown:function(a,b){},mouseMove:mxUtils.bind(this,function(a,b){var c=this.selectionCellsHandler.handlers.map,d;for(d in c)if(null!=c[d].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isControlDown(b.getEvent())&& !mxEvent.isShiftDown(b.getEvent())&&!mxEvent.isAltDown(b.getEvent()))if(d=this.tolerance,null!=e&&null!=g&&null!=h){if(c=g,Math.abs(e.x-b.getGraphX())>d||Math.abs(e.y-b.getGraphY())>d){this.isCellSelected(c.cell)||this.setSelectionCell(c.cell);var f=this.selectionCellsHandler.getHandler(c.cell);if(null!=f&&null!=f.bends&&0<f.bends.length){var m=f.getHandleForEvent(h),p=this.view.getEdgeStyle(c);d=p==mxEdgeStyle.EntityRelation;l||k!=mxEvent.LABEL_HANDLE||(m=k);if(d&&0!=m&&m!=f.bends.length-1&&m!=mxEvent.LABEL_HANDLE)!d|| null==c.visibleSourceState&&null==c.visibleTargetState||(this.graphHandler.reset(),b.consume());else if(m==mxEvent.LABEL_HANDLE||0==m||null!=c.visibleSourceState||m==f.bends.length-1||null!=c.visibleTargetState)d||m==mxEvent.LABEL_HANDLE||(d=c.absolutePoints,null!=d&&(null==p&&null==m||p==mxEdgeStyle.OrthConnector)&&(m=k,null==m&&(m=new mxRectangle(e.x,e.y),m.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(m,d[0].x,d[0].y)?m=0:mxUtils.contains(m,d[d.length-1].x,d[d.length-1].y)? m=f.bends.length-1:null!=p&&(2==d.length||3==d.length&&(0==Math.round(d[0].x-d[1].x)&&0==Math.round(d[1].x-d[2].x)||0==Math.round(d[0].y-d[1].y)&&0==Math.round(d[1].y-d[2].y)))?m=2:(m=mxUtils.findNearestSegment(c,e.x,e.y),m=null==p?mxEvent.VIRTUAL_HANDLE-m:m+1))),null==m&&(m=mxEvent.VIRTUAL_HANDLE)),f.start(b.getGraphX(),b.getGraphX(),m),k=e=h=g=null,l=!1,b.consume(),this.graphHandler.reset()}}}else if(c=b.getState(),null!=c&&this.model.isEdge(c.cell)){f=null;d=c.absolutePoints;if(null!=d)if(m=new mxRectangle(b.getGraphX(), @@ -2440,10 +2442,10 @@ this.getRubberband=function(){return p};var n=(new Date).getTime(),u=0,q=this.co (v=this.container.style.cursor,this.container.style.cursor="move")}));this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.isEnabled()&&(this.container.style.cursor=v)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(a){return mxEvent.isMouseEvent(a.getEvent())};var z=this.click;this.click=function(a){var b=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);if(this.isEnabled()&&!b||a.isConsumed())return z.apply(this, arguments);b=b?a.sourceState.cell:a.getCell();null!=b&&(b=this.getLinkForCell(b),null!=b&&(this.isCustomLink(b)?this.customLinkClicked(b):this.openLink(b)))};this.tooltipHandler.getStateForEvent=function(a){return a.sourceState};this.getCursorForMouseEvent=function(a){var b=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);return this.getCursorForCell(b?a.sourceState.cell:a.getCell())};var x=this.getCursorForCell;this.getCursorForCell=function(a){if(!this.isEnabled()||this.isCellLocked(a)){if(null!= this.getLinkForCell(a))return"pointer";if(this.isCellLocked(a))return"default"}return x.apply(this,arguments)};this.selectRegion=function(a,b){var c=this.getAllCells(a.x,a.y,a.width,a.height);this.selectCellsForEvent(c,b);return c};this.getAllCells=function(a,b,c,d,e,g){g=null!=g?g:[];if(0<c||0<d){var f=this.getModel(),h=a+c,k=b+d;null==e&&(e=this.getCurrentRoot(),null==e&&(e=f.getRoot()));if(null!=e)for(var l=f.getChildCount(e),B=0;B<l;B++){var m=f.getChildAt(e,B),A=this.view.getState(m);if(null!= -A&&this.isCellVisible(m)&&"1"!=mxUtils.getValue(A.style,"locked","0")){var p=mxUtils.getValue(A.style,mxConstants.STYLE_ROTATION)||0;0!=p&&(A=mxUtils.getBoundingBox(A,p));(f.isEdge(m)||f.isVertex(m))&&A.x>=a&&A.y+A.height<=k&&A.y>=b&&A.x+A.width<=h&&g.push(m);this.getAllCells(a,b,c,d,m,g)}}}return g};var F=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,b,c){return this.graph.isCellSelected(a)?!1:F.apply(this,arguments)};this.isCellLocked=function(a){for(a= +A&&this.isCellVisible(m)&&"1"!=mxUtils.getValue(A.style,"locked","0")){var p=mxUtils.getValue(A.style,mxConstants.STYLE_ROTATION)||0;0!=p&&(A=mxUtils.getBoundingBox(A,p));(f.isEdge(m)||f.isVertex(m))&&A.x>=a&&A.y+A.height<=k&&A.y>=b&&A.x+A.width<=h&&g.push(m);this.getAllCells(a,b,c,d,m,g)}}}return g};var E=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,b,c){return this.graph.isCellSelected(a)?!1:E.apply(this,arguments)};this.isCellLocked=function(a){for(a= this.view.getState(a);null!=a;){if("1"==mxUtils.getValue(a.style,"locked","0"))return!0;a=this.view.getState(this.model.getParent(a.cell))}return!1};var D=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,b){if("mouseDown"==b.getProperty("eventName")){var c=b.getProperty("event").getState();D=null==c||this.isSelectionEmpty()||this.isCellSelected(c.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(a,b){if(!mxEvent.isMultiTouchEvent(b)){var c= b.getProperty("event"),d=b.getProperty("cell");null==d?(c=mxUtils.convertPoint(this.container,mxEvent.getClientX(c),mxEvent.getClientY(c)),p.start(c.x,c.y)):null!=D?this.addSelectionCells(D):1<this.getSelectionCount()&&this.isCellSelected(d)&&this.removeSelectionCell(d);D=null;b.consume()}}));this.connectionHandler.selectCells=function(a,b){this.graph.setSelectionCell(b||a)};this.connectionHandler.constraintHandler.isStateIgnored=function(a,b){return b&&a.view.graph.isCellSelected(a.cell)};this.selectionModel.addListener(mxEvent.CHANGE, -mxUtils.bind(this,function(){var a=this.connectionHandler.constraintHandler;null!=a.currentFocus&&a.isStateIgnored(a.currentFocus,!0)&&(a.currentFocus=null,a.constraints=null,a.destroyIcons());a.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var E=this.updateMouseEvent;this.updateMouseEvent=function(a){a=E.apply(this,arguments);null!=a.state&&this.isCellLocked(a.getCell())&&(a.state=null);return a}}this.currentTranslate=new mxPoint(0,0)}; +mxUtils.bind(this,function(){var a=this.connectionHandler.constraintHandler;null!=a.currentFocus&&a.isStateIgnored(a.currentFocus,!0)&&(a.currentFocus=null,a.constraints=null,a.destroyIcons());a.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var F=this.updateMouseEvent;this.updateMouseEvent=function(a){a=F.apply(this,arguments);null!=a.state&&this.isCellLocked(a.getCell())&&(a.state=null);return a}}this.currentTranslate=new mxPoint(0,0)}; Graph.touchStyle=mxClient.IS_TOUCH||mxClient.IS_FF&&mxClient.IS_WIN||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||null==window.urlParams||"1"==urlParams.touch;Graph.fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList&&(null==window.urlParams||"0"!=urlParams.filesupport);Graph.lineJumpsEnabled=!0;Graph.defaultJumpSize=6; Graph.createSvgImage=function(a,c,d){d=unescape(encodeURIComponent('<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'+a+'px" height="'+c+'px" version="1.1">'+d+"</svg>"));return new mxImage("data:image/svg+xml;base64,"+(window.btoa?btoa(d):Base64.encode(d,!0)),a,c)};mxUtils.extend(Graph,mxGraph);Graph.prototype.minFitScale=null;Graph.prototype.maxFitScale=null; Graph.prototype.linkPolicy="frame"==urlParams.target?"blank":urlParams.target||"auto";Graph.prototype.linkTarget="frame"==urlParams.target?"_self":"_blank";Graph.prototype.linkRelation="nofollow noopener noreferrer";Graph.prototype.defaultScrollbars=!mxClient.IS_IOS;Graph.prototype.defaultPageVisible=!0;Graph.prototype.lightbox=!1;Graph.prototype.defaultPageBackgroundColor="#ffffff";Graph.prototype.defaultPageBorderColor="#ffffff";Graph.prototype.scrollTileSize=new mxRectangle(0,0,400,400); @@ -2458,7 +2460,7 @@ function(b){this.graph.useCssTransforms&&(this.graph.currentScale=this.scale,thi if(null!=a)if(a=a.parentNode,this.useCssTransforms){var c=a.getAttribute("transform");a.setAttribute("transformOrigin","0 0");a.setAttribute("transform","scale("+this.currentScale+","+this.currentScale+")translate("+this.currentTranslate.x+","+this.currentTranslate.y+")");if(c!=a.getAttribute("transform"))try{if(mxClient.IS_EDGE){var d=a.style.display;a.style.display="none";a.getBBox();a.style.display=d}}catch(h){}}else a.removeAttribute("transformOrigin"),a.removeAttribute("transform")};var c=mxGraphView.prototype.validateBackgroundPage; mxGraphView.prototype.validateBackgroundPage=function(){var a=this.graph.useCssTransforms,d=this.scale,e=this.translate;a&&(this.scale=this.graph.currentScale,this.translate=this.graph.currentTranslate);c.apply(this,arguments);a&&(this.scale=d,this.translate=e)};var d=mxGraph.prototype.updatePageBreaks;mxGraph.prototype.updatePageBreaks=function(a,c,e){var b=this.useCssTransforms,g=this.view.scale,f=this.view.translate;b&&(this.view.scale=1,this.view.translate=new mxPoint(0,0),this.useCssTransforms= !1);d.apply(this,arguments);b&&(this.view.scale=g,this.view.translate=f,this.useCssTransforms=!0)}})();Graph.prototype.isLightboxView=function(){return this.lightbox};Graph.prototype.labelLinkClicked=function(a,c,d){c=c.getAttribute("href");if(null!=c&&!this.isCustomLink(c)&&mxEvent.isLeftMouseButton(d)&&!mxEvent.isPopupTrigger(d)||mxEvent.isTouchEvent(d)){if(!this.isEnabled()||this.isCellLocked(a.cell))a=this.isBlankLink(c)?this.linkTarget:"_top",this.openLink(this.getAbsoluteUrl(c),a);mxEvent.consume(d)}}; -Graph.prototype.openLink=function(a,c,d){var b=window;"_self"==c&&window!=window.top?window.location.href=a:a.substring(0,this.baseUrl.length)==this.baseUrl&&"#"==a.charAt(this.baseUrl.length)&&"_top"==c&&window==window.top?(a=a.split("#")[1],window.location.hash=="#"+a&&(window.location.hash=""),window.location.hash=a):(b=window.open(a,c),null==b||d||(b.opener=null));return b};Graph.prototype.getLinkTitle=function(a){return a.substring(a.lastIndexOf("/")+1)}; +Graph.prototype.openLink=function(a,c,d){var b=window;if("_self"==c&&window!=window.top)window.location.href=a;else if(a.substring(0,this.baseUrl.length)==this.baseUrl&&"#"==a.charAt(this.baseUrl.length)&&"_top"==c&&window==window.top)a=a.split("#")[1],window.location.hash=="#"+a&&(window.location.hash=""),window.location.hash=a;else{b=window.open(a,c);try{null==b||d||(b.opener=null)}catch(f){}}return b};Graph.prototype.getLinkTitle=function(a){return a.substring(a.lastIndexOf("/")+1)}; Graph.prototype.isCustomLink=function(a){return"data:"==a.substring(0,5)};Graph.prototype.customLinkClicked=function(a){return!1};Graph.prototype.isExternalProtocol=function(a){return"mailto:"===a.substring(0,7)};Graph.prototype.isBlankLink=function(a){return!this.isExternalProtocol(a)&&("blank"===this.linkPolicy||"self"!==this.linkPolicy&&!this.isRelativeUrl(a)&&a.substring(0,this.domainUrl.length)!==this.domainUrl)}; Graph.prototype.isRelativeUrl=function(a){return null!=a&&!this.absoluteUrlPattern.test(a)&&"data:"!==a.substring(0,5)&&!this.isExternalProtocol(a)}; Graph.prototype.initLayoutManager=function(){this.layoutManager=new mxLayoutManager(this);this.layoutManager.getLayout=function(a){var c=this.graph.view.getState(a);a=null!=c?c.style:this.graph.getCellStyle(a);if(null!=a){if("stackLayout"==a.childLayout)return c=new mxStackLayout(this.graph,!0),c.resizeParentMax="1"==mxUtils.getValue(a,"resizeParentMax","1"),c.horizontal="1"==mxUtils.getValue(a,"horizontalStack","1"),c.resizeParent="1"==mxUtils.getValue(a,"resizeParent","1"),c.resizeLast="1"==mxUtils.getValue(a, @@ -2482,11 +2484,11 @@ Graph.prototype.replacePlaceholders=function(a,c){var d=[];if(null!=c){for(var b match.index)+(null!=e?e:f));b=match.index+f.length}}d.push(c.substring(b))}return d.join("")};Graph.prototype.restoreSelection=function(a){if(null!=a&&0<a.length){for(var c=[],d=0;d<a.length;d++){var b=this.model.getCell(a[d].id);null!=b&&c.push(b)}this.setSelectionCells(c)}else this.clearSelection()}; Graph.prototype.selectCellsForConnectVertex=function(a,c,d){2==a.length&&this.model.isVertex(a[1])?(this.setSelectionCell(a[1]),null!=d&&(mxEvent.isTouchEvent(c)?d.update(d.getState(this.view.getState(a[1]))):d.reset()),this.scrollCellToVisible(a[1])):this.setSelectionCells(a)}; Graph.prototype.connectVertex=function(a,c,d,b,f,e){e=e?e:!1;var h=a.geometry.relative&&null!=a.parent.geometry?new mxPoint(a.parent.geometry.width*a.geometry.x,a.parent.geometry.height*a.geometry.y):new mxPoint(a.geometry.x,a.geometry.y);c==mxConstants.DIRECTION_NORTH?(h.x+=a.geometry.width/2,h.y-=d):c==mxConstants.DIRECTION_SOUTH?(h.x+=a.geometry.width/2,h.y+=a.geometry.height+d):(h.x=c==mxConstants.DIRECTION_WEST?h.x-d:h.x+(a.geometry.width+d),h.y+=a.geometry.height/2);d=this.view.getState(this.model.getParent(a)); -var g=this.view.scale,k=this.view.translate,l=k.x*g,k=k.y*g;this.model.isVertex(d.cell)&&(l=d.x,k=d.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(h.x+=a.parent.geometry.x,h.y+=a.parent.geometry.y);e=e||mxEvent.isControlDown(b)&&!f?null:this.getCellAt(l+h.x*g,k+h.y*g);this.model.isAncestor(e,a)&&(e=null);for(d=e;null!=d;){if(this.isCellLocked(d)){e=null;break}d=this.model.getParent(d)}null!=e&&(d=this.view.getState(a),g=this.view.getState(e),null!=d&&null!=g&&mxUtils.intersects(d,g)&&(e= -null));if(f=!mxEvent.isShiftDown(b)||f)c==mxConstants.DIRECTION_NORTH?h.y-=a.geometry.height/2:c==mxConstants.DIRECTION_SOUTH?h.y+=a.geometry.height/2:h.x=c==mxConstants.DIRECTION_WEST?h.x-a.geometry.width/2:h.x+a.geometry.width/2;null==e||this.isCellConnectable(e)||(d=this.getModel().getParent(e),this.getModel().isVertex(d)&&this.isCellConnectable(d)&&(e=d));if(e==a||this.model.isEdge(e)||!this.isCellConnectable(e))e=null;d=[];this.model.beginUpdate();try{g=e;if(null==g&&f){for(var l=a,m=this.getCellGeometry(a);null!= -m&&m.relative;)l=this.getModel().getParent(l),m=this.getCellGeometry(l);var p=this.view.getState(l),n=null!=p?p.style:this.getCellStyle(l);if(mxUtils.getValue(n,"part",!1)){var u=this.model.getParent(l);this.model.isVertex(u)&&(l=u)}g=this.duplicateCells([l],!1)[0];m=this.getCellGeometry(g);null!=m&&(m.x=h.x-m.width/2,m.y=h.y-m.height/2)}m=null;null!=this.layoutManager&&(m=this.layoutManager.getLayout(this.model.getParent(a)));var q=mxEvent.isControlDown(b)&&f||null==e&&null!=m&&m.constructor==mxStackLayout? -null:this.insertEdge(this.model.getParent(a),null,"",a,g,this.createCurrentEdgeStyle());if(null!=q&&this.connectionHandler.insertBeforeSource){var r=null;for(b=a;null!=b.parent&&null!=b.geometry&&b.geometry.relative&&b.parent!=q.parent;)b=this.model.getParent(b);null!=b&&null!=b.parent&&b.parent==q.parent&&(r=b.parent.getIndex(b),this.model.add(b.parent,q,r))}null==e&&null!=g&&null!=m&&null!=a.parent&&m.constructor==mxStackLayout&&c==mxConstants.DIRECTION_WEST&&(r=a.parent.getIndex(a),this.model.add(a.parent, -g,r));null!=q&&d.push(q);null==e&&null!=g&&d.push(g);null==g&&null!=q&&q.geometry.setTerminalPoint(h,!1);null!=q&&this.fireEvent(new mxEventObject("cellsInserted","cells",[q]))}finally{this.model.endUpdate()}return d}; +var g=this.view.scale,k=this.view.translate,l=k.x*g,k=k.y*g;null!=d&&this.model.isVertex(d.cell)&&(l=d.x,k=d.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(h.x+=a.parent.geometry.x,h.y+=a.parent.geometry.y);e=e||mxEvent.isControlDown(b)&&!f?null:this.getCellAt(l+h.x*g,k+h.y*g);this.model.isAncestor(e,a)&&(e=null);for(d=e;null!=d;){if(this.isCellLocked(d)){e=null;break}d=this.model.getParent(d)}null!=e&&(d=this.view.getState(a),g=this.view.getState(e),null!=d&&null!=g&&mxUtils.intersects(d, +g)&&(e=null));if(f=!mxEvent.isShiftDown(b)||f)c==mxConstants.DIRECTION_NORTH?h.y-=a.geometry.height/2:c==mxConstants.DIRECTION_SOUTH?h.y+=a.geometry.height/2:h.x=c==mxConstants.DIRECTION_WEST?h.x-a.geometry.width/2:h.x+a.geometry.width/2;null==e||this.isCellConnectable(e)||(d=this.getModel().getParent(e),this.getModel().isVertex(d)&&this.isCellConnectable(d)&&(e=d));if(e==a||this.model.isEdge(e)||!this.isCellConnectable(e))e=null;d=[];this.model.beginUpdate();try{g=e;if(null==g&&f){for(var l=a,m= +this.getCellGeometry(a);null!=m&&m.relative;)l=this.getModel().getParent(l),m=this.getCellGeometry(l);var p=this.view.getState(l),n=null!=p?p.style:this.getCellStyle(l);if(mxUtils.getValue(n,"part",!1)){var u=this.model.getParent(l);this.model.isVertex(u)&&(l=u)}g=this.duplicateCells([l],!1)[0];m=this.getCellGeometry(g);null!=m&&(m.x=h.x-m.width/2,m.y=h.y-m.height/2)}m=null;null!=this.layoutManager&&(m=this.layoutManager.getLayout(this.model.getParent(a)));var q=mxEvent.isControlDown(b)&&f||null== +e&&null!=m&&m.constructor==mxStackLayout?null:this.insertEdge(this.model.getParent(a),null,"",a,g,this.createCurrentEdgeStyle());if(null!=q&&this.connectionHandler.insertBeforeSource){var r=null;for(b=a;null!=b.parent&&null!=b.geometry&&b.geometry.relative&&b.parent!=q.parent;)b=this.model.getParent(b);null!=b&&null!=b.parent&&b.parent==q.parent&&(r=b.parent.getIndex(b),this.model.add(b.parent,q,r))}null==e&&null!=g&&null!=m&&null!=a.parent&&m.constructor==mxStackLayout&&c==mxConstants.DIRECTION_WEST&& +(r=a.parent.getIndex(a),this.model.add(a.parent,g,r));null!=q&&d.push(q);null==e&&null!=g&&d.push(g);null==g&&null!=q&&q.geometry.setTerminalPoint(h,!1);null!=q&&this.fireEvent(new mxEventObject("cellsInserted","cells",[q]))}finally{this.model.endUpdate()}return d}; Graph.prototype.getIndexableText=function(){var a=document.createElement("div"),c=[],d,b;for(b in this.model.cells)if(d=this.model.cells[b],this.model.isVertex(d)||this.model.isEdge(d))this.isHtmlLabel(d)?(a.innerHTML=this.getLabel(d),d=mxUtils.extractTextWithWhitespace([a])):d=this.getLabel(d),d=mxUtils.trim(d.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<d.length&&c.push(d);return c.join(" ")}; Graph.prototype.convertValueToString=function(a){if(null!=a.value&&"object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder")){for(var c=a.getAttribute("placeholder"),d=a,b=null;null==b&&null!=d;)null!=d.value&&"object"==typeof d.value&&(b=d.hasAttribute(c)?null!=d.getAttribute(c)?d.getAttribute(c):"":null),d=this.model.getParent(d);return b||""}return a.value.getAttribute("label")||""}return mxGraph.prototype.convertValueToString.apply(this,arguments)}; Graph.prototype.getLinksForState=function(a){return null!=a&&null!=a.text&&null!=a.text.node?a.text.node.getElementsByTagName("a"):null};Graph.prototype.getLinkForCell=function(a){return null!=a.value&&"object"==typeof a.value?(a=a.value.getAttribute("link"),null!=a&&"javascript:"===a.toLowerCase().substring(0,11)&&(a=a.substring(11)),a):null}; @@ -2496,7 +2498,7 @@ Graph.prototype.foldCells=function(a,c,d,b,f){c=null!=c?c:!1;null==d&&(d=this.ge null==p?null!=f&&this.isMoveCellsEvent(f)&&this.moveSiblings(h,m,k,l):null!=f&&mxEvent.isAltDown(f)||p.constructor!=mxStackLayout||p.resizeLast||this.resizeParentStacks(m,p,k,l)}}}}finally{this.model.endUpdate()}this.isEnabled()&&this.setSelectionCells(d)}}; Graph.prototype.moveSiblings=function(a,c,d,b){this.model.beginUpdate();try{var f=this.getCellsBeyond(a.x,a.y,c,!0,!0);for(c=0;c<f.length;c++)if(f[c]!=a.cell){var e=this.view.getState(f[c]),h=this.getCellGeometry(f[c]);null!=e&&null!=h&&(h=h.clone(),h.translate(Math.round(d*Math.max(0,Math.min(1,(e.x-a.x)/a.width))),Math.round(b*Math.max(0,Math.min(1,(e.y-a.y)/a.height)))),this.model.setGeometry(f[c],h))}}finally{this.model.endUpdate()}}; Graph.prototype.resizeParentStacks=function(a,c,d,b){if(null!=this.layoutManager&&null!=c&&c.constructor==mxStackLayout&&!c.resizeLast){this.model.beginUpdate();try{for(var f=c.horizontal;null!=a&&null!=c&&c.constructor==mxStackLayout&&c.horizontal==f&&!c.resizeLast;){var e=this.getCellGeometry(a),h=this.view.getState(a);null!=h&&null!=e&&(e=e.clone(),c.horizontal?e.width+=d+Math.min(0,h.width/this.view.scale-e.width):e.height+=b+Math.min(0,h.height/this.view.scale-e.height),this.model.setGeometry(a, -e));a=this.model.getParent(a);c=this.layoutManager.getLayout(a)}}finally{this.model.endUpdate()}}};Graph.prototype.isContainer=function(a){var c=this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);return this.isSwimlane(a)?"0"!=c.container:"1"==c.container};Graph.prototype.isCellConnectable=function(a){var c=this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);return null!=c.connectable?"0"!=c.connectable:mxGraph.prototype.isCellConnectable.apply(this,arguments)}; +e));a=this.model.getParent(a);c=this.layoutManager.getLayout(a)}}finally{this.model.endUpdate()}}};Graph.prototype.isContainer=function(a){var c=this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);return this.isSwimlane(a)?"0"!=c.container:"1"==c.container};Graph.prototype.isCellConnectable=function(a){var c=this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);return null!=c&&null!=c.connectable?"0"!=c.connectable:mxGraph.prototype.isCellConnectable.apply(this,arguments)}; Graph.prototype.selectAll=function(a){a=a||this.getDefaultParent();this.isCellLocked(a)||mxGraph.prototype.selectAll.apply(this,arguments)};Graph.prototype.selectCells=function(a,c,d){d=d||this.getDefaultParent();this.isCellLocked(d)||mxGraph.prototype.selectCells.apply(this,arguments)};Graph.prototype.getSwimlaneAt=function(a,c,d){d=d||this.getDefaultParent();return this.isCellLocked(d)?null:mxGraph.prototype.getSwimlaneAt.apply(this,arguments)}; Graph.prototype.isCellFoldable=function(a){var c=this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);return this.foldingEnabled&&!this.isCellLocked(a)&&(this.isContainer(a)&&"0"!=c.collapsible||!this.isContainer(a)&&"1"==c.collapsible)};Graph.prototype.reset=function(){this.isEditing()&&this.stopEditing(!0);this.escape();this.isSelectionEmpty()||this.clearSelection()}; Graph.prototype.zoom=function(a,c){a=Math.max(.01,Math.min(this.view.scale*a,160))/this.view.scale;mxGraph.prototype.zoom.apply(this,arguments)};Graph.prototype.zoomIn=function(){.15>this.view.scale?this.zoom((this.view.scale+.01)/this.view.scale):this.zoom(Math.round(this.view.scale*this.zoomFactor*20)/20/this.view.scale)};Graph.prototype.zoomOut=function(){.15>=this.view.scale?this.zoom((this.view.scale-.01)/this.view.scale):this.zoom(Math.round(1/this.zoomFactor*this.view.scale*20)/20/this.view.scale)}; @@ -2533,22 +2535,22 @@ a.y-this.triangleUp.height/2),a=this.graph.getCellAt(this.currentState.getCenter e(c,this.arrowRight);e(d,this.arrowLeft);e(b,this.arrowUp);e(a,this.arrowDown)}else this.arrowLeft.style.visibility="visible",this.arrowRight.style.visibility="visible",this.arrowUp.style.visibility="visible",this.arrowDown.style.visibility="visible";this.graph.tooltipHandler.isEnabled()?(this.arrowLeft.setAttribute("title",mxResources.get("plusTooltip")),this.arrowRight.setAttribute("title",mxResources.get("plusTooltip")),this.arrowUp.setAttribute("title",mxResources.get("plusTooltip")),this.arrowDown.setAttribute("title", mxResources.get("plusTooltip"))):(this.arrowLeft.removeAttribute("title"),this.arrowRight.removeAttribute("title"),this.arrowUp.removeAttribute("title"),this.arrowDown.removeAttribute("title"))}else this.reset();null!=this.currentState&&(this.bbox=this.computeBoundingBox(),null!=this.bbox&&this.bbox.grow(10))}}; HoverIcons.prototype.computeBoundingBox=function(){var a=this.graph.model.isEdge(this.currentState.cell)?null:mxRectangle.fromRectangle(this.currentState);this.visitNodes(function(c){null!=c.parentNode&&(c=new mxRectangle(c.offsetLeft,c.offsetTop,c.offsetWidth,c.offsetHeight),null==a?a=c:a.add(c))});return a}; -HoverIcons.prototype.getState=function(a){if(null!=a){a=a.cell;if(this.graph.getModel().isVertex(a)&&!this.graph.isCellConnectable(a)){var c=this.graph.getModel().getParent(a);this.graph.getModel().isVertex(c)&&this.graph.isCellConnectable(c)&&(a=c)}if(this.graph.isCellLocked(a)||this.graph.model.isEdge(a))a=null;a=this.graph.view.getState(a)}return a}; +HoverIcons.prototype.getState=function(a){if(null!=a)if(a=a.cell,this.graph.getModel().contains(a)){if(this.graph.getModel().isVertex(a)&&!this.graph.isCellConnectable(a)){var c=this.graph.getModel().getParent(a);this.graph.getModel().isVertex(c)&&this.graph.isCellConnectable(c)&&(a=c)}if(this.graph.isCellLocked(a)||this.graph.model.isEdge(a))a=null;a=this.graph.view.getState(a);null!=a&&null==a.style&&(a=null)}else a=null;return a}; HoverIcons.prototype.update=function(a,c,d){if(this.graph.connectionArrowsEnabled){var b=null;this.prev!=a||this.isActive()?(this.startTime=(new Date).getTime(),this.prev=a,b=0,null!=this.updateThread&&window.clearTimeout(this.updateThread),null!=a&&(this.updateThread=window.setTimeout(mxUtils.bind(this,function(){this.isActive()||this.graph.isMouseDown||this.graph.panningHandler.isActive()||(this.prev=a,this.update(a,c,d))}),this.updateDelay+10))):null!=this.startTime&&(b=(new Date).getTime()-this.startTime); this.setDisplay("");null!=this.currentState&&this.currentState!=a&&b<this.activationDelay&&null!=this.bbox&&!mxUtils.contains(this.bbox,c,d)?this.reset(!1):(null!=this.currentState||b>this.activationDelay)&&this.currentState!=a&&(b>this.updateDelay&&null!=a||null==this.bbox||null==c||null==d||!mxUtils.contains(this.bbox,c,d))&&(null!=a&&this.graph.isEnabled()?(this.removeNodes(),this.setCurrentState(a),this.repaint(),this.graph.connectionHandler.constraintHandler.currentFocus!=a&&this.graph.connectionHandler.constraintHandler.reset()): this.reset())}else this.reset()};HoverIcons.prototype.setCurrentState=function(a){"eastwest"!=a.style.portConstraint&&(this.graph.container.appendChild(this.arrowUp),this.graph.container.appendChild(this.arrowDown));this.graph.container.appendChild(this.arrowRight);this.graph.container.appendChild(this.arrowLeft);this.currentState=a}; (function(){var a=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){a.apply(this,arguments);this.validEdges=[]};var c=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(a,b){var d=this.getState(a);null!=d&&this.graph.model.isEdge(d.cell)&&null!=d.style&&1!=d.style[mxConstants.STYLE_CURVED]&&!d.invalid&&this.updateLineJumps(d)&&this.graph.cellRenderer.redraw(d,!1,this.isRendering());d=c.apply(this,arguments);null!= -d&&this.graph.model.isEdge(d.cell)&&1!=d.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(d);return d};var d=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(a,b){return d.apply(this,arguments)||null!=a.routedPoints&&null!=b.routedPoints&&!mxUtils.equalPoints(b.routedPoints,a.routedPoints)};var b=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=function(a){b.apply(this,arguments);this.graph.model.isEdge(a.cell)&&1!=a.style[mxConstants.STYLE_CURVED]&& -this.updateLineJumps(a)};mxGraphView.prototype.updateLineJumps=function(a){var b=a.absolutePoints;if(Graph.lineJumpsEnabled){var c=null!=a.routedPoints,d=null;if(null!=b&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var e=function(b,c,e){var g=new mxPoint(c,e);g.type=b;d.push(g);g=null!=a.routedPoints?a.routedPoints[d.length-1]:null;return null==g||g.type!=b||g.x!=c||g.y!=e},g=.5*this.scale,c=!1,d=[],f=0;f<b.length-1;f++){for(var h=b[f+1],k=b[f],w=[],v=b[f+2];f< -b.length-2&&mxUtils.ptSegDistSq(k.x,k.y,v.x,v.y,h.x,h.y)<1*this.scale*this.scale;)h=v,f++,v=b[f+2];for(var c=e(0,k.x,k.y)||c,z=0;z<this.validEdges.length;z++){var x=this.validEdges[z],F=x.absolutePoints;if(null!=F&&mxUtils.intersects(a,x)&&"1"!=x.style.noJump)for(x=0;x<F.length-1;x++){for(var D=F[x+1],E=F[x],v=F[x+2];x<F.length-2&&mxUtils.ptSegDistSq(E.x,E.y,v.x,v.y,D.x,D.y)<1*this.scale*this.scale;)D=v,x++,v=F[x+2];v=mxUtils.intersection(k.x,k.y,h.x,h.y,E.x,E.y,D.x,D.y);if(null!=v&&(Math.abs(v.x- -E.x)>g||Math.abs(v.y-E.y)>g)&&(Math.abs(v.x-D.x)>g||Math.abs(v.y-D.y)>g)){D=v.x-k.x;E=v.y-k.y;v={distSq:D*D+E*E,x:v.x,y:v.y};for(D=0;D<w.length;D++)if(w[D].distSq>v.distSq){w.splice(D,0,v);v=null;break}null==v||0!=w.length&&w[w.length-1].x===v.x&&w[w.length-1].y===v.y||w.push(v)}}}for(x=0;x<w.length;x++)c=e(1,w[x].x,w[x].y)||c}v=b[b.length-1];c=e(0,v.x,v.y)||c}a.routedPoints=d;return c}return!1};var f=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(a,b,c){this.routedPoints= -null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)f.apply(this,arguments);else{var d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,e=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,g=mxUtils.getValue(this.style,"jumpStyle","none"),h,k=!0,l=null,m=null;h=[];var v=null;a.begin();for(var z=0;z<this.state.routedPoints.length;z++){var x= -this.state.routedPoints[z],F=new mxPoint(x.x/this.scale,x.y/this.scale);0==z?F=b[0]:z==this.state.routedPoints.length-1&&(F=b[b.length-1]);var D=!1;if(null!=l&&1==x.type){var E=this.state.routedPoints[z+1],x=E.x/this.scale-F.x,E=E.y/this.scale-F.y,x=x*x+E*E;null==v&&(v=new mxPoint(F.x-l.x,F.y-l.y),m=Math.sqrt(v.x*v.x+v.y*v.y),v.x=v.x*e/m,v.y=v.y*e/m);x>e*e&&0<m&&(x=l.x-F.x,E=l.y-F.y,x=x*x+E*E,x>e*e&&(D=new mxPoint(F.x-v.x,F.y-v.y),x=new mxPoint(F.x+v.x,F.y+v.y),h.push(D),this.addPoints(a,h,c,d,!1, -null,k),h=0>Math.round(v.x)||0==Math.round(v.x)&&0>=Math.round(v.y)?1:-1,k=!1,"sharp"==g?(a.lineTo(D.x-v.y*h,D.y+v.x*h),a.lineTo(x.x-v.y*h,x.y+v.x*h),a.lineTo(x.x,x.y)):"arc"==g?(h*=1.3,a.curveTo(D.x-v.y*h,D.y+v.x*h,x.x-v.y*h,x.y+v.x*h,x.x,x.y)):(a.moveTo(x.x,x.y),k=!0),h=[x],D=!0))}else v=null;D||(h.push(F),l=F)}this.addPoints(a,h,c,d,!1,null,k);a.stroke()}};var e=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint=function(a,b,c,d){if(null==b||null== -a||"1"!=b.style.snapToPoint&&"1"!=a.style.snapToPoint)e.apply(this,arguments);else{b=this.getTerminalPort(a,b,d);var g=this.getNextPoint(a,c,d),f=this.graph.isOrthogonal(a),h=mxUtils.toRadians(Number(b.style[mxConstants.STYLE_ROTATION]||"0")),k=new mxPoint(b.getCenterX(),b.getCenterY());if(0!=h)var l=Math.cos(-h),m=Math.sin(-h),g=mxUtils.getRotatedPoint(g,l,m,k);l=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||0);l+=parseFloat(a.style[d?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]|| -0);g=this.getPerimeterPoint(b,g,0==h&&f,l);0!=h&&(l=Math.cos(h),m=Math.sin(h),g=mxUtils.getRotatedPoint(g,l,m,k));a.setAbsoluteTerminalPoint(this.snapToAnchorPoint(a,b,c,d,g),d)}};mxGraphView.prototype.snapToAnchorPoint=function(a,b,c,d,e){if(null!=b&&null!=a){a=this.graph.getAllConnectionConstraints(b);d=c=null;if(null!=a)for(var g=0;g<a.length;g++){var f=this.graph.getConnectionPoint(b,a[g]);if(null!=f){var h=(f.x-e.x)*(f.x-e.x)+(f.y-e.y)*(f.y-e.y);if(null==d||h<d)c=f,d=h}}null!=c&&(e=c)}return e}; -var h=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(a,b,c){var d=h.apply(this,arguments);"1"==a.getAttribute("placeholders")&&null!=c.state&&(d=c.state.view.graph.replacePlaceholders(c.state.cell,d));return d};var g=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(a){if(null!=a.style&&"undefined"!==typeof pako){var b=mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null);if(null!=b&&"stencil("==b.substring(0,8))try{var c= -b.substring(8,b.length-1),d=mxUtils.parseXml(a.view.graph.decompress(c));return new mxShape(new mxStencil(d.documentElement))}catch(n){null!=window.console&&console.log("Error in shape: "+n)}}return g.apply(this,arguments)}})();mxStencilRegistry.libraries={};mxStencilRegistry.dynamicLoading=!0;mxStencilRegistry.allowEval=!0;mxStencilRegistry.packages=[]; +d&&this.graph.model.isEdge(d.cell)&&null!=d.style&&1!=d.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(d);return d};var d=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(a,b){return d.apply(this,arguments)||null!=a.routedPoints&&null!=b.routedPoints&&!mxUtils.equalPoints(b.routedPoints,a.routedPoints)};var b=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=function(a){b.apply(this,arguments);this.graph.model.isEdge(a.cell)&& +1!=a.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(a)};mxGraphView.prototype.updateLineJumps=function(a){var b=a.absolutePoints;if(Graph.lineJumpsEnabled){var c=null!=a.routedPoints,d=null;if(null!=b&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var e=function(b,c,e){var g=new mxPoint(c,e);g.type=b;d.push(g);g=null!=a.routedPoints?a.routedPoints[d.length-1]:null;return null==g||g.type!=b||g.x!=c||g.y!=e},g=.5*this.scale,c=!1,d=[],f=0;f<b.length-1;f++){for(var h= +b[f+1],k=b[f],w=[],v=b[f+2];f<b.length-2&&mxUtils.ptSegDistSq(k.x,k.y,v.x,v.y,h.x,h.y)<1*this.scale*this.scale;)h=v,f++,v=b[f+2];for(var c=e(0,k.x,k.y)||c,z=0;z<this.validEdges.length;z++){var x=this.validEdges[z],E=x.absolutePoints;if(null!=E&&mxUtils.intersects(a,x)&&"1"!=x.style.noJump)for(x=0;x<E.length-1;x++){for(var D=E[x+1],F=E[x],v=E[x+2];x<E.length-2&&mxUtils.ptSegDistSq(F.x,F.y,v.x,v.y,D.x,D.y)<1*this.scale*this.scale;)D=v,x++,v=E[x+2];v=mxUtils.intersection(k.x,k.y,h.x,h.y,F.x,F.y,D.x, +D.y);if(null!=v&&(Math.abs(v.x-F.x)>g||Math.abs(v.y-F.y)>g)&&(Math.abs(v.x-D.x)>g||Math.abs(v.y-D.y)>g)){D=v.x-k.x;F=v.y-k.y;v={distSq:D*D+F*F,x:v.x,y:v.y};for(D=0;D<w.length;D++)if(w[D].distSq>v.distSq){w.splice(D,0,v);v=null;break}null==v||0!=w.length&&w[w.length-1].x===v.x&&w[w.length-1].y===v.y||w.push(v)}}}for(x=0;x<w.length;x++)c=e(1,w[x].x,w[x].y)||c}v=b[b.length-1];c=e(0,v.x,v.y)||c}a.routedPoints=d;return c}return!1};var f=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(a, +b,c){this.routedPoints=null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)f.apply(this,arguments);else{var d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,e=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,g=mxUtils.getValue(this.style,"jumpStyle","none"),h,k=!0,l=null,m=null;h=[];var v=null;a.begin();for(var z= +0;z<this.state.routedPoints.length;z++){var x=this.state.routedPoints[z],E=new mxPoint(x.x/this.scale,x.y/this.scale);0==z?E=b[0]:z==this.state.routedPoints.length-1&&(E=b[b.length-1]);var D=!1;if(null!=l&&1==x.type){var F=this.state.routedPoints[z+1],x=F.x/this.scale-E.x,F=F.y/this.scale-E.y,x=x*x+F*F;null==v&&(v=new mxPoint(E.x-l.x,E.y-l.y),m=Math.sqrt(v.x*v.x+v.y*v.y),v.x=v.x*e/m,v.y=v.y*e/m);x>e*e&&0<m&&(x=l.x-E.x,F=l.y-E.y,x=x*x+F*F,x>e*e&&(D=new mxPoint(E.x-v.x,E.y-v.y),x=new mxPoint(E.x+v.x, +E.y+v.y),h.push(D),this.addPoints(a,h,c,d,!1,null,k),h=0>Math.round(v.x)||0==Math.round(v.x)&&0>=Math.round(v.y)?1:-1,k=!1,"sharp"==g?(a.lineTo(D.x-v.y*h,D.y+v.x*h),a.lineTo(x.x-v.y*h,x.y+v.x*h),a.lineTo(x.x,x.y)):"arc"==g?(h*=1.3,a.curveTo(D.x-v.y*h,D.y+v.x*h,x.x-v.y*h,x.y+v.x*h,x.x,x.y)):(a.moveTo(x.x,x.y),k=!0),h=[x],D=!0))}else v=null;D||(h.push(E),l=E)}this.addPoints(a,h,c,d,!1,null,k);a.stroke()}};var e=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint= +function(a,b,c,d){if(null==b||null==a||"1"!=b.style.snapToPoint&&"1"!=a.style.snapToPoint)e.apply(this,arguments);else{b=this.getTerminalPort(a,b,d);var g=this.getNextPoint(a,c,d),f=this.graph.isOrthogonal(a),h=mxUtils.toRadians(Number(b.style[mxConstants.STYLE_ROTATION]||"0")),k=new mxPoint(b.getCenterX(),b.getCenterY());if(0!=h)var l=Math.cos(-h),m=Math.sin(-h),g=mxUtils.getRotatedPoint(g,l,m,k);l=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||0);l+=parseFloat(a.style[d?mxConstants.STYLE_SOURCE_PERIMETER_SPACING: +mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);g=this.getPerimeterPoint(b,g,0==h&&f,l);0!=h&&(l=Math.cos(h),m=Math.sin(h),g=mxUtils.getRotatedPoint(g,l,m,k));a.setAbsoluteTerminalPoint(this.snapToAnchorPoint(a,b,c,d,g),d)}};mxGraphView.prototype.snapToAnchorPoint=function(a,b,c,d,e){if(null!=b&&null!=a){a=this.graph.getAllConnectionConstraints(b);d=c=null;if(null!=a)for(var g=0;g<a.length;g++){var f=this.graph.getConnectionPoint(b,a[g]);if(null!=f){var h=(f.x-e.x)*(f.x-e.x)+(f.y-e.y)*(f.y-e.y);if(null== +d||h<d)c=f,d=h}}null!=c&&(e=c)}return e};var h=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(a,b,c){var d=h.apply(this,arguments);"1"==a.getAttribute("placeholders")&&null!=c.state&&(d=c.state.view.graph.replacePlaceholders(c.state.cell,d));return d};var g=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(a){if(null!=a.style&&"undefined"!==typeof pako){var b=mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null);if(null!= +b&&"stencil("==b.substring(0,8))try{var c=b.substring(8,b.length-1),d=mxUtils.parseXml(a.view.graph.decompress(c));return new mxShape(new mxStencil(d.documentElement))}catch(n){null!=window.console&&console.log("Error in shape: "+n)}}return g.apply(this,arguments)}})();mxStencilRegistry.libraries={};mxStencilRegistry.dynamicLoading=!0;mxStencilRegistry.allowEval=!0;mxStencilRegistry.packages=[]; mxStencilRegistry.getStencil=function(a){var c=mxStencilRegistry.stencils[a];if(null==c&&null==mxCellRenderer.defaultShapes[a]&&mxStencilRegistry.dynamicLoading){var d=mxStencilRegistry.getBasenameForStencil(a);if(null!=d){c=mxStencilRegistry.libraries[d];if(null!=c){if(null==mxStencilRegistry.packages[d]){for(var b=0;b<c.length;b++){var f=c[b];if(".xml"==f.toLowerCase().substring(f.length-4,f.length))mxStencilRegistry.loadStencilSet(f,null);else if(".js"==f.toLowerCase().substring(f.length-3,f.length))try{if(mxStencilRegistry.allowEval){var e= mxUtils.load(f);null!=e&&200<=e.getStatus()&&299>=e.getStatus()&&eval.call(window,e.getText())}}catch(h){null!=window.console&&console.log("error in getStencil:",f,h)}}mxStencilRegistry.packages[d]=1}}else d=d.replace("_-_","_"),mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+d+".xml",null);c=mxStencilRegistry.stencils[a]}}return c}; mxStencilRegistry.getBasenameForStencil=function(a){var c=null;if(null!=a&&(a=a.split("."),0<a.length&&"mxgraph"==a[0]))for(var c=a[1],d=2;d<a.length-1;d++)c+="/"+a[d];return c}; @@ -2564,13 +2566,13 @@ a.getCell=mxUtils.bind(this,function(a){var b=c.apply(this,arguments);this.error (a+="shape="+this.currentEdgeStyle.shape+";");null!=this.currentEdgeStyle.curved&&(a+="curved="+this.currentEdgeStyle.curved+";");null!=this.currentEdgeStyle.rounded&&(a+="rounded="+this.currentEdgeStyle.rounded+";");null!=this.currentEdgeStyle.comic&&(a+="comic="+this.currentEdgeStyle.comic+";");null!=this.currentEdgeStyle.jumpStyle&&(a+="jumpStyle="+this.currentEdgeStyle.jumpStyle+";");null!=this.currentEdgeStyle.jumpSize&&(a+="jumpSize="+this.currentEdgeStyle.jumpSize+";");"elbowEdgeStyle"==this.currentEdgeStyle.edgeStyle&& null!=this.currentEdgeStyle.elbow&&(a+="elbow="+this.currentEdgeStyle.elbow+";");return a=null!=this.currentEdgeStyle.html?a+("html="+this.currentEdgeStyle.html+";"):a+"html=1;"};Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var a=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement():null;null!=a&&(new mxCodec(a.ownerDocument)).decode(a,this.getStylesheet())}; Graph.prototype.importGraphModel=function(a,b,c,d){b=null!=b?b:0;c=null!=c?c:0;var e=new mxCodec(a.ownerDocument),g=new mxGraphModel;e.decode(a,g);a=[];e=g.getChildren(this.cloneCell(g.root,this.isCloneInvalidEdges()));if(null!=e){e=e.slice();this.model.beginUpdate();try{if(1!=e.length||this.isCellLocked(this.getDefaultParent()))for(g=0;g<e.length;g++)a=a.concat(this.model.getChildren(this.moveCells([e[g]],b,c,!1,this.model.getRoot())[0]));else a=this.moveCells(g.getChildren(e[0]),b,c,!1,this.getDefaultParent()); -if(d){this.isGridEnabled()&&(b=this.snap(b),c=this.snap(c));var f=this.getBoundingBoxFromGeometry(a,!0);null!=f&&this.moveCells(a,b-f.x,c-f.y)}}finally{this.model.endUpdate()}}return a};Graph.prototype.getAllConnectionConstraints=function(a,b){if(null!=a){var c=null;if(null!=a.shape){var d=a.shape.direction,e=a.shape.bounds,g=a.shape.scale,c=e.width/g,e=e.height/g;if(d==mxConstants.DIRECTION_NORTH||d==mxConstants.DIRECTION_SOUTH)var f=c,c=e,e=f;c=a.shape.getConstraints(a.style,c,e)}if(null!=c)return c; -c=mxUtils.getValue(a.style,"points",null);if(null!=c){d=[];try{for(var h=JSON.parse(c),c=0;c<h.length;c++)f=h[c],d.push(new mxConnectionConstraint(new mxPoint(f[0],f[1]),2<f.length?"0"!=f[2]:!0,null,3<f.length?f[3]:0,4<f.length?f[4]:0))}catch(ha){}return d}if(null!=a.shape)if(null!=a.shape.stencil){if(null!=a.shape.stencil)return a.shape.stencil.constraints}else if(null!=a.shape.constraints)return a.shape.constraints}return null};Graph.prototype.flipEdge=function(a){if(null!=a){var b=this.view.getState(a), -b=null!=b?b.style:this.getCellStyle(a);null!=b&&(b=mxUtils.getValue(b,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL,this.setCellStyles(mxConstants.STYLE_ELBOW,b,[a]))}};Graph.prototype.isValidRoot=function(a){for(var b=this.model.getChildCount(a),c=0,d=0;d<b;d++){var e=this.model.getChildAt(a,d);this.model.isVertex(e)&&(e=this.getCellGeometry(e),null==e||e.relative||c++)}return 0<c||this.isContainer(a)}; -Graph.prototype.isValidDropTarget=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return"1"!=mxUtils.getValue(b,"part","0")&&(this.isContainer(a)||mxGraph.prototype.isValidDropTarget.apply(this,arguments)&&"0"!=mxUtils.getValue(b,"dropTarget","1"))};Graph.prototype.createGroupCell=function(){var a=mxGraph.prototype.createGroupCell.apply(this,arguments);a.setStyle("group");return a};Graph.prototype.isExtendParentsOnAdd=function(a){var b=mxGraph.prototype.isExtendParentsOnAdd.apply(this, -arguments);if(b&&null!=a&&null!=this.layoutManager){var c=this.model.getParent(a);null!=c&&(c=this.layoutManager.getLayout(c),null!=c&&c.constructor==mxStackLayout&&(b=!1))}return b};Graph.prototype.getPreferredSizeForCell=function(a){var b=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=b&&(b.width+=10,b.height+=4,this.gridEnabled&&(b.width=this.snap(b.width),b.height=this.snap(b.height)));return b};Graph.prototype.turnShapes=function(a){var b=this.getModel(),c=[];b.beginUpdate(); -try{for(var d=0;d<a.length;d++){var e=a[d];if(b.isEdge(e)){var g=b.getTerminal(e,!0),f=b.getTerminal(e,!1);b.setTerminal(e,f,!0);b.setTerminal(e,g,!1);var h=b.getGeometry(e);if(null!=h){h=h.clone();null!=h.points&&h.points.reverse();var k=h.getTerminalPoint(!0),l=h.getTerminalPoint(!1);h.setTerminalPoint(k,!1);h.setTerminalPoint(l,!0);b.setGeometry(e,h);var m=this.view.getState(e),B=this.view.getState(g),p=this.view.getState(f);if(null!=m){var n=null!=B?this.getConnectionConstraint(m,B,!0):null,q= -null!=p?this.getConnectionConstraint(m,p,!1):null;this.setConnectionConstraint(e,g,!0,q);this.setConnectionConstraint(e,f,!1,n)}c.push(e)}}else if(b.isVertex(e)&&(h=this.getCellGeometry(e),null!=h)){h=h.clone();h.x+=h.width/2-h.height/2;h.y+=h.height/2-h.width/2;var u=h.width;h.width=h.height;h.height=u;b.setGeometry(e,h);var r=this.view.getState(e);if(null!=r){var t=r.style[mxConstants.STYLE_DIRECTION]||"east";"east"==t?t="south":"south"==t?t="west":"west"==t?t="north":"north"==t&&(t="east");this.setCellStyles(mxConstants.STYLE_DIRECTION, +if(d){this.isGridEnabled()&&(b=this.snap(b),c=this.snap(c));var f=this.getBoundingBoxFromGeometry(a,!0);null!=f&&this.moveCells(a,b-f.x,c-f.y)}}finally{this.model.endUpdate()}}return a};Graph.prototype.getAllConnectionConstraints=function(a,b){if(null!=a){var c=mxUtils.getValue(a.style,"points",null);if(null!=c){var d=[];try{for(var e=JSON.parse(c),c=0;c<e.length;c++){var g=e[c];d.push(new mxConnectionConstraint(new mxPoint(g[0],g[1]),2<g.length?"0"!=g[2]:!0,null,3<g.length?g[3]:0,4<g.length?g[4]: +0))}}catch(V){}return d}if(null!=a.shape){g=a.shape.direction;e=a.shape.bounds;c=a.shape.scale;d=e.width/c;e=e.height/c;if(g==mxConstants.DIRECTION_NORTH||g==mxConstants.DIRECTION_SOUTH)g=d,d=e,e=g;c=a.shape.getConstraints(a.style,d,e);if(null!=c)return c;if(null!=a.shape.stencil&&null!=a.shape.stencil.constraints)return a.shape.stencil.constraints;if(null!=a.shape.constraints)return a.shape.constraints}}return null};Graph.prototype.flipEdge=function(a){if(null!=a){var b=this.view.getState(a),b=null!= +b?b.style:this.getCellStyle(a);null!=b&&(b=mxUtils.getValue(b,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL,this.setCellStyles(mxConstants.STYLE_ELBOW,b,[a]))}};Graph.prototype.isValidRoot=function(a){for(var b=this.model.getChildCount(a),c=0,d=0;d<b;d++){var e=this.model.getChildAt(a,d);this.model.isVertex(e)&&(e=this.getCellGeometry(e),null==e||e.relative||c++)}return 0<c||this.isContainer(a)};Graph.prototype.isValidDropTarget= +function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return"1"!=mxUtils.getValue(b,"part","0")&&(this.isContainer(a)||mxGraph.prototype.isValidDropTarget.apply(this,arguments)&&"0"!=mxUtils.getValue(b,"dropTarget","1"))};Graph.prototype.createGroupCell=function(){var a=mxGraph.prototype.createGroupCell.apply(this,arguments);a.setStyle("group");return a};Graph.prototype.isExtendParentsOnAdd=function(a){var b=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(b&& +null!=a&&null!=this.layoutManager){var c=this.model.getParent(a);null!=c&&(c=this.layoutManager.getLayout(c),null!=c&&c.constructor==mxStackLayout&&(b=!1))}return b};Graph.prototype.getPreferredSizeForCell=function(a){var b=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=b&&(b.width+=10,b.height+=4,this.gridEnabled&&(b.width=this.snap(b.width),b.height=this.snap(b.height)));return b};Graph.prototype.turnShapes=function(a){var b=this.getModel(),c=[];b.beginUpdate();try{for(var d= +0;d<a.length;d++){var e=a[d];if(b.isEdge(e)){var g=b.getTerminal(e,!0),f=b.getTerminal(e,!1);b.setTerminal(e,f,!0);b.setTerminal(e,g,!1);var h=b.getGeometry(e);if(null!=h){h=h.clone();null!=h.points&&h.points.reverse();var k=h.getTerminalPoint(!0),l=h.getTerminalPoint(!1);h.setTerminalPoint(k,!1);h.setTerminalPoint(l,!0);b.setGeometry(e,h);var m=this.view.getState(e),B=this.view.getState(g),p=this.view.getState(f);if(null!=m){var n=null!=B?this.getConnectionConstraint(m,B,!0):null,q=null!=p?this.getConnectionConstraint(m, +p,!1):null;this.setConnectionConstraint(e,g,!0,q);this.setConnectionConstraint(e,f,!1,n)}c.push(e)}}else if(b.isVertex(e)&&(h=this.getCellGeometry(e),null!=h)){h=h.clone();h.x+=h.width/2-h.height/2;h.y+=h.height/2-h.width/2;var u=h.width;h.width=h.height;h.height=u;b.setGeometry(e,h);var r=this.view.getState(e);if(null!=r){var t=r.style[mxConstants.STYLE_DIRECTION]||"east";"east"==t?t="south":"south"==t?t="west":"west"==t?t="north":"north"==t&&(t="east");this.setCellStyles(mxConstants.STYLE_DIRECTION, t,[e])}c.push(e)}}}finally{b.endUpdate()}return c};Graph.prototype.stencilHasPlaceholders=function(a){if(null!=a&&null!=a.fgNode)for(a=a.fgNode.firstChild;null!=a;){if("text"==a.nodeName&&"1"==a.getAttribute("placeholders"))return!0;a=a.nextSibling}return!1};Graph.prototype.processChange=function(a){mxGraph.prototype.processChange.apply(this,arguments);if(a instanceof mxValueChange&&null!=a.cell&&null!=a.cell.value&&"object"==typeof a.cell.value){var b=this.model.getDescendants(a.cell);if(0<b.length)for(var c= 0;c<b.length;c++){var d=this.view.getState(b[c]);null!=d&&null!=d.shape&&null!=d.shape.stencil&&this.stencilHasPlaceholders(d.shape.stencil)?this.removeStateForCell(b[c]):this.isReplacePlaceholders(b[c])&&this.view.invalidate(b[c],!1,!1)}}};Graph.prototype.replaceElement=function(a,b){for(var c=a.ownerDocument.createElement(null!=b?b:"span"),d=Array.prototype.slice.call(a.attributes);attr=d.pop();)c.setAttribute(attr.nodeName,attr.nodeValue);c.innerHTML=a.innerHTML;a.parentNode.replaceChild(c,a)}; Graph.prototype.updateLabelElements=function(a,b,c){a=null!=a?a:this.getSelectionCells();for(var d=document.createElement("div"),e=0;e<a.length;e++)if(this.isHtmlLabel(a[e])){var g=this.convertValueToString(a[e]);if(null!=g&&0<g.length){d.innerHTML=g;for(var f=d.getElementsByTagName(null!=c?c:"*"),h=0;h<f.length;h++)b(f[h]);d.innerHTML!=g&&this.cellLabelChanged(a[e],d.innerHTML)}}};Graph.prototype.cellLabelChanged=function(a,b,c){b=this.zapGremlins(b);this.model.beginUpdate();try{if(null!=a.value&& @@ -2591,55 +2593,55 @@ b.getSource();null!=c&&"a"!=c.nodeName.toLowerCase();)c=c.parentNode;null!=c?thi e&&Math.abs(this.scrollLeft-f.container.scrollLeft)<g&&Math.abs(this.scrollTop-f.container.scrollTop)<g&&(null==d.sourceState||!d.isSource(d.sourceState.control))&&((mxEvent.isLeftMouseButton(h)||mxEvent.isMiddleMouseButton(h))&&!mxEvent.isPopupTrigger(h)||mxEvent.isTouchEvent(h))&&(null!=this.currentLink?(e=f.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&e||null==b||b(h,this.currentLink),mxEvent.isConsumed(h)||(h=mxEvent.isMiddleMouseButton(h)?"_blank":e?f.linkTarget:"_top", f.openLink(this.currentLink,h),d.consume())):null!=c&&!d.isConsumed()&&Math.abs(this.scrollLeft-f.container.scrollLeft)<g&&Math.abs(this.scrollTop-f.container.scrollTop)<g&&Math.abs(this.startX-d.getGraphX())<g&&Math.abs(this.startY-d.getGraphY())<g&&c(d.getEvent()));this.clear()},activate:function(a){this.currentLink=f.getAbsoluteUrl(f.getLinkForCell(a.cell));null!=this.currentLink&&(f.container.style.cursor="pointer",null!=this.highlight&&this.highlight.highlight(a))},clear:function(){null!=f.container&& (f.container.style.cursor=e);this.currentLink=this.currentState=null;null!=this.highlight&&this.highlight.hide();null!=f.tooltipHandler&&f.tooltipHandler.hide()}};f.click=function(a){};f.addMouseListener(h);mxEvent.addListener(document,"mouseleave",function(a){h.clear()})};Graph.prototype.duplicateCells=function(a,b){a=null!=a?a:this.getSelectionCells();b=null!=b?b:!0;a=this.model.getTopmostCells(a);var c=this.getModel(),d=this.gridSize,e=[];c.beginUpdate();try{for(var g=this.cloneCells(a,!1,null, -!0),f=0;f<a.length;f++){var h=c.getParent(a[f]),k=this.moveCells([g[f]],d,d,!1)[0];e.push(k);if(b)c.add(h,g[f]);else{var l=h.getIndex(a[f]);c.add(h,g[f],l+1)}}}finally{c.endUpdate()}return e};Graph.prototype.insertImage=function(a,b,c){if(null!=a){for(var d=this.cellEditor.textarea.getElementsByTagName("img"),e=[],g=0;g<d.length;g++)e.push(d[g]);document.execCommand("insertimage",!1,a);a=this.cellEditor.textarea.getElementsByTagName("img");if(a.length==e.length+1)for(g=a.length-1;0<=g;g--)if(0==g|| -a[g]!=e[g-1]){a[g].setAttribute("width",b);a[g].setAttribute("height",c);break}}};Graph.prototype.insertLink=function(a){if(0==a.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var b=this.cellEditor.textarea.getElementsByTagName("a"),c=[],d=0;d<b.length;d++)c.push(b[d]);document.execCommand("createlink",!1,mxUtils.trim(a));b=this.cellEditor.textarea.getElementsByTagName("a");if(b.length==c.length+1)for(d=b.length-1;0<=d;d--)if(b[d]!=c[d-1]){for(b=b[d].getElementsByTagName("a");0< -b.length;){for(c=b[0].parentNode;null!=b[0].firstChild;)c.insertBefore(b[0].firstChild,b[0]);c.removeChild(b[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(a))};Graph.prototype.isCellResizable=function(a){var b=mxGraph.prototype.isCellResizable.apply(this,arguments),c=this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);return b||"0"!=mxUtils.getValue(c,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==c[mxConstants.STYLE_WHITE_SPACE]};Graph.prototype.distributeCells=function(a, -b){null==b&&(b=this.getSelectionCells());if(null!=b&&1<b.length){for(var c=[],d=null,e=null,g=0;g<b.length;g++)if(this.getModel().isVertex(b[g])){var f=this.view.getState(b[g]);if(null!=f){var h=a?f.getCenterX():f.getCenterY(),d=null!=d?Math.max(d,h):h,e=null!=e?Math.min(e,h):h;c.push(f)}}if(2<c.length){c.sort(function(b,c){return a?b.x-c.x:b.y-c.y});f=this.view.translate;h=this.view.scale;e=e/h-(a?f.x:f.y);d=d/h-(a?f.x:f.y);this.getModel().beginUpdate();try{for(var k=(d-e)/(c.length-1),d=e,g=1;g< -c.length-1;g++){var l=this.view.getState(this.model.getParent(c[g].cell)),m=this.getCellGeometry(c[g].cell),d=d+k;null!=m&&null!=l&&(m=m.clone(),a?m.x=Math.round(d-m.width/2)-l.origin.x:m.y=Math.round(d-m.height/2)-l.origin.y,this.getModel().setGeometry(c[g].cell,m))}}finally{this.getModel().endUpdate()}}}return b};Graph.prototype.isCloneEvent=function(a){return mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxEvent.isControlDown(a)};Graph.prototype.encodeCells=function(a){for(var b=this.cloneCells(a),c= -new mxDictionary,d=0;d<a.length;d++)c.put(a[d],!0);for(d=0;d<b.length;d++){var e=this.view.getState(a[d]);if(null!=e){var g=this.getCellGeometry(b[d]);null==g||!g.relative||this.model.isEdge(a[d])||c.get(this.model.getParent(a[d]))||(g.relative=!1,g.x=e.x/e.view.scale-e.view.translate.x,g.y=e.y/e.view.scale-e.view.translate.y)}}c=new mxCodec;e=new mxGraphModel;g=e.getChildAt(e.getRoot(),0);for(d=0;d<a.length;d++)e.add(g,b[d]);return c.encode(e)};Graph.prototype.createSvgImageExport=function(){var a= -new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,b){return this.getLinkForCell(a.cell)});return a};Graph.prototype.getSvg=function(a,b,c,d,e,g,f,h,k,l){var m=this.useCssTransforms;m&&(this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange());try{b=null!=b?b:1;c=null!=c?c:0;e=null!=e?e:!0;g=null!=g?g:!0;f=null!=f?f:!0;var A=g||d?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells());if(null==A)throw Error(mxResources.get("drawingEmpty"));var p=this.view.scale, -n=mxUtils.createXmlDocument(),B=null!=n.createElementNS?n.createElementNS(mxConstants.NS_SVG,"svg"):n.createElement("svg");null!=a&&(null!=B.style?B.style.backgroundColor=a:B.setAttribute("style","background-color:"+a));null==n.createElementNS?(B.setAttribute("xmlns",mxConstants.NS_SVG),B.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):B.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=b/p;var q=Math.max(1,Math.ceil(A.width*a)+2*c)+(l?5:0),u=Math.max(1,Math.ceil(A.height* -a)+2*c)+(l?5:0);B.setAttribute("version","1.1");B.setAttribute("width",q+"px");B.setAttribute("height",u+"px");B.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+q+" "+u);n.appendChild(B);var H=this.createSvgCanvas(B);H.foOffset=e?-.5:0;H.textOffset=e?-.5:0;H.imageOffset=e?-.5:0;H.translate(Math.floor((c/b-A.x)/p),Math.floor((c/b-A.y)/p));var r=document.createElement("textarea"),t=H.createAlternateContent;H.createAlternateContent=function(a,b,c,d,e,g,f,h,k,l,m,A,p){var B=this.state;if(null!=this.foAltText&& -(0==d||0!=B.fontSize&&g.length<5*d/B.fontSize)){var n=this.createElement("text");n.setAttribute("x",Math.round(d/2));n.setAttribute("y",Math.round((e+B.fontSize)/2));n.setAttribute("fill",B.fontColor||"black");n.setAttribute("text-anchor","middle");n.setAttribute("font-size",Math.round(B.fontSize)+"px");n.setAttribute("font-family",B.fontFamily);(B.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&n.setAttribute("font-weight","bold");(B.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&& -n.setAttribute("font-style","italic");(B.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&n.setAttribute("text-decoration","underline");try{return r.innerHTML=g,n.textContent=r.value,n}catch(qa){return t.apply(this,arguments)}}else return t.apply(this,arguments)};var w=this.backgroundImage;if(null!=w){b=p/b;var v=this.view.translate,x=new mxRectangle(v.x*b,v.y*b,w.width*b,w.height*b);mxUtils.intersects(A,x)&&H.image(v.x,v.y,w.width,w.height,w.src,!0)}H.scale(a);H.textEnabled=f;h= -null!=h?h:this.createSvgImageExport();var T=h.drawCellState;h.drawCellState=function(a,b){for(var c=a.view.graph,d=c.isCellSelected(a.cell),e=c.model.getParent(a.cell);!g&&!d&&null!=e;)d=c.isCellSelected(e),e=c.model.getParent(e);(g||d)&&T.apply(this,arguments)};h.drawState(this.getView().getState(this.model.root),H);this.updateSvgLinks(B,k,!0);return B}finally{m&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.updateSvgLinks=function(a,b,c){a=a.getElementsByTagName("a"); -for(var d=0;d<a.length;d++){var e=a[d].getAttribute("href");null==e&&(e=a[d].getAttribute("xlink:href"));null!=e&&(null!=b&&/^https?:\/\//.test(e)?a[d].setAttribute("target",b):c&&this.isCustomLink(e)&&a[d].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(a){return new mxSvgCanvas2D(a)};Graph.prototype.getSelectedElement=function(){var a=null;if(window.getSelection){var b=window.getSelection();b.getRangeAt&&b.rangeCount&&(a=b.getRangeAt(0).commonAncestorContainer)}else document.selection&& -(a=document.selection.createRange().parentElement());return a};Graph.prototype.getParentByName=function(a,b,c){for(;null!=a&&a.nodeName!=b;){if(a==c)return null;a=a.parentNode}return a};Graph.prototype.selectNode=function(a){var b=null;if(window.getSelection){if(b=window.getSelection(),b.getRangeAt&&b.rangeCount){var c=document.createRange();c.selectNode(a);b.removeAllRanges();b.addRange(c)}}else(b=document.selection)&&"Control"!=b.type&&(a=b.createRange(),a.collapse(!0),c=b.createRange(),c.setEndPoint("StartToStart", -a),c.select())};Graph.prototype.insertRow=function(a,b){for(var c=a.tBodies[0],d=c.rows[0].cells,e=0,g=0;g<d.length;g++)var f=d[g].getAttribute("colspan"),e=e+(null!=f?parseInt(f):1);c=c.insertRow(b);for(g=0;g<e;g++)mxUtils.br(c.insertCell(-1));return c.cells[0]};Graph.prototype.deleteRow=function(a,b){a.tBodies[0].deleteRow(b)};Graph.prototype.insertColumn=function(a,b){var c=a.tHead;if(null!=c)for(var d=0;d<c.rows.length;d++){var e=document.createElement("th");c.rows[d].appendChild(e);mxUtils.br(e)}c= -a.tBodies[0];for(d=0;d<c.rows.length;d++)e=c.rows[d].insertCell(b),mxUtils.br(e);return c.rows[0].cells[0<=b?b:c.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(a,b){if(0<=b)for(var c=a.tBodies[0].rows,d=0;d<c.length;d++)c[d].cells.length>b&&c[d].deleteCell(b)};Graph.prototype.pasteHtmlAtCaret=function(a){var b;if(window.getSelection){if(b=window.getSelection(),b.getRangeAt&&b.rangeCount){b=b.getRangeAt(0);b.deleteContents();var c=document.createElement("div");c.innerHTML=a;a=document.createDocumentFragment(); -for(var d;d=c.firstChild;)lastNode=a.appendChild(d);b.insertNode(a)}}else(b=document.selection)&&"Control"!=b.type&&b.createRange().pasteHTML(a)};Graph.prototype.createLinkForHint=function(a,b){function c(a,b){a.length>b&&(a=a.substring(0,Math.round(b/2))+"..."+a.substring(a.length-Math.round(b/4)));return a}a=null!=a?a:"javascript:void(0);";if(null==b||0==b.length)b=this.isCustomLink(a)?this.getLinkTitle(a):a;var d=document.createElement("a");d.setAttribute("rel",this.linkRelation);d.setAttribute("href", -this.getAbsoluteUrl(a));d.setAttribute("title",c(this.isCustomLink(a)?this.getLinkTitle(a):a,80));null!=this.linkTarget&&d.setAttribute("target",this.linkTarget);mxUtils.write(d,c(b,40));this.isCustomLink(a)&&mxEvent.addListener(d,"click",mxUtils.bind(this,function(b){this.customLinkClicked(a);mxEvent.consume(b)}));return d};Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING, -function(a,b){this.popupMenuHandler.hideMenu()});var a=this.updateMouseEvent;this.updateMouseEvent=function(b){b=a.apply(this,arguments);if(mxEvent.isTouchEvent(b.getEvent())&&null==b.getState()){var c=this.getCellAt(b.graphX,b.graphY);null!=c&&this.isSwimlane(c)&&this.hitsSwimlaneContent(c,b.graphX,b.graphY)||(b.state=this.view.getState(c),null!=b.state&&null!=b.state.shape&&(this.container.style.cursor=b.state.shape.node.style.cursor))}null==b.getState()&&this.isEnabled()&&(this.container.style.cursor= -"default");return b};var b=!1,c=!1,d=!1,e=this.fireMouseEvent;this.fireMouseEvent=function(a,g,f){a==mxEvent.MOUSE_DOWN&&(g=this.updateMouseEvent(g),b=this.isCellSelected(g.getCell()),c=this.isSelectionEmpty(),d=this.popupMenuHandler.isMenuShowing());e.apply(this,arguments)};this.popupMenuHandler.mouseUp=mxUtils.bind(this,function(a,e){this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==e.getState()||!e.isSource(e.getState().control))&&(this.popupMenuHandler.popupTrigger|| -!d&&!mxEvent.isMouseEvent(e.getEvent())&&(c&&null==e.getCell()&&this.isSelectionEmpty()||b&&this.isCellSelected(e.getCell())));mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,arguments)})};mxCellEditor.prototype.isContentEditing=function(){var a=this.graph.view.getState(this.editingCell);return null!=a&&1==a.style.html};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var a=window.getSelection();if(a.getRangeAt&&a.rangeCount){for(var b=[],c=0,d=a.rangeCount;c< -d;++c)b.push(a.getRangeAt(c));return b}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(a){try{if(a)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var b=0,c=a.length;b<c;++b)sel.addRange(a[b])}else document.selection&&a.select&&a.select()}catch(T){}};var f=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=function(a){null!=a.text&& -(a.text.replaceLinefeeds="0"!=mxUtils.getValue(a.style,"nl2Br","1"));f.apply(this,arguments)};var e=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(a,b){this.isKeepFocusEvent(a)||!mxEvent.isAltDown(a.getEvent())?e.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(a){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=!1;var h=mxCellEditor.prototype.startEditing; -mxCellEditor.prototype.startEditing=function(a,b){h.apply(this,arguments);var c=this.graph.view.getState(a);this.textarea.className=null!=c&&1==c.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(a);var c=this.graph.getModel().getParent(a),d=this.graph.getCellGeometry(a);this.graph.getModel().isEdge(c)&&null!=d&&d.relative||this.graph.getModel().isEdge(a)?mxClient.IS_QUIRKS?this.textarea.style.border= -"gray dotted 1px":this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":"":mxClient.IS_QUIRKS&&(this.textarea.style.outline="none",this.textarea.style.border="")};var g=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(a){function b(a,c){c.originalNode=a;a=a.firstChild;for(var d=c.firstChild;null!=a&&null!=d;)b(a,d),a=a.nextSibling,d=d.nextSibling;return c}function c(a,b){if(null!=a)if(b.originalNode!= -a)d(a);else for(a=a.firstChild,b=b.firstChild;null!=a;){var e=a.nextSibling;null==b?d(a):(c(a,b),b=b.nextSibling);a=e}}function d(a){for(var b=a.firstChild;null!=b;){var c=b.nextSibling;d(b);b=c}1==a.nodeType&&("BR"===a.nodeName||null!=a.firstChild)||3==a.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(a)).length?(3==a.nodeType&&mxUtils.setTextContent(a,mxUtils.getTextContent(a).replace(/\n|\r/g,"")),1==a.nodeType&&(a.removeAttribute("style"),a.removeAttribute("class"),a.removeAttribute("width"), -a.removeAttribute("cellpadding"),a.removeAttribute("cellspacing"),a.removeAttribute("border"))):a.parentNode.removeChild(a)}g.apply(this,arguments);mxClient.IS_QUIRKS||7===document.documentMode||8===document.documentMode||mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(a){var d=b(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){c(this.textarea,d)}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var a=this.graph.view.getState(this.editingCell), -b=null!=a&&"0"!=mxUtils.getValue(a.style,"nl2Br","1"),c=this.saveSelection();if(this.codeViewMode){h=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<h.length&&"\n"==h.charAt(h.length-1)&&(h=h.substring(0,h.length-1));h=this.graph.sanitizeHtml(b?h.replace(/\n/g,"<br/>"):h,!0);this.textarea.className="mxCellEditor geContentEditable";var d=mxUtils.getValue(a.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),b=mxUtils.getValue(a.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY), -e=mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),g=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,f=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,a=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(d*mxConstants.LINE_HEIGHT)+ -"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(d)+"px";this.textarea.style.textDecoration=a?"underline":"";this.textarea.style.fontWeight=g?"bold":"normal";this.textarea.style.fontStyle=f?"italic":"";this.textarea.style.fontFamily=b;this.textarea.style.textAlign=e;this.textarea.style.padding="0px";this.textarea.innerHTML!=h&&(this.textarea.innerHTML=h,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length)); -this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerHTML="");var h=mxUtils.htmlEntities(this.textarea.innerHTML);mxClient.IS_QUIRKS||8==document.documentMode||(h=mxUtils.replaceTrailingNewlines(h,"<div><br></div>"));h=this.graph.sanitizeHtml(b?h.replace(/\n/g,"").replace(/<br\s*.?>/g,"<br>"):h,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var d=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight= -mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(d*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(d)+"px";this.textarea.style.textDecoration="";this.textarea.style.fontWeight="normal";this.textarea.style.fontStyle="";this.textarea.style.fontFamily=mxConstants.DEFAULT_FONTFAMILY;this.textarea.style.textAlign="left";this.textarea.style.padding="2px";this.textarea.innerHTML!=h&&(this.textarea.innerHTML=h);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&& -this.restoreSelection(this.switchSelectionState);this.switchSelectionState=c;this.resize()};var k=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(a,b){if(null!=this.textarea)if(a=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=a){var c=a.view.scale;this.bounds=mxRectangle.fromRectangle(a);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=160*c;this.bounds.height=60*c;var d=null!=a.text?a.text.margin:null;null==d&&(d=mxUtils.getAlignmentAsPoint(mxUtils.getValue(a.style, -mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(a.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=d.x*this.bounds.width;this.bounds.y+=d.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-4)/c)+"px";this.textarea.style.height=Math.round((this.bounds.height-4)/c)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/c)+(this.textarea.offsetHeight- -this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*c);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/c)+(this.textarea.offsetWidth-this.textarea.clientWidth)+"px",this.bounds.width=parseInt(this.textarea.style.width)*c);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxClient.IS_VML?this.textarea.style.zoom=c:mxUtils.setPrefixedStyle(this.textarea.style, -"transform","scale("+c+","+c+")")}else this.textarea.style.height="",this.textarea.style.overflow="",k.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(a,b){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetInitialValue.apply(this,arguments);var c=this.graph.getEditingValue(a.cell,b);"1"==mxUtils.getValue(a.style,"nl2Br","1")&&(c=c.replace(/\n/g,"<br/>"));return c=this.graph.sanitizeHtml(c,!0)}; -mxCellEditorGetCurrentValue=mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(a){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var b=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return b="1"==mxUtils.getValue(a.style,"nl2Br","1")?b.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):b.replace(/\r\n/g,"").replace(/\n/g,"")};var l=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(a){this.codeViewMode&& -this.toggleViewMode();l.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(B){}};var m=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(a,b){this.graph.getModel().beginUpdate();try{if(m.apply(this,arguments),this.graph.isCellDeletable(a.cell)&&0==this.graph.model.getChildCount(a.cell)){var c=mxUtils.getValue(a.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),d=mxUtils.getValue(a.style, -mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);""==b&&c==mxConstants.NONE&&d==mxConstants.NONE&&this.graph.removeCells([a.cell],!1)}}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=function(a){var b=null;if(this.graph.getModel().isEdge(a.cell)||this.graph.getModel().isEdge(this.graph.getModel().getParent(a.cell)))b=mxUtils.getValue(a.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null),b==mxConstants.NONE&&(b=null);return b};mxCellEditor.prototype.getMinimumSize= -function(a){var b=this.graph.getView().scale;return new mxRectangle(0,0,null==a.text?30:a.text.size*b+20,30)};var p=mxGraphHandler.prototype.moveCells;mxGraphHandler.prototype.moveCells=function(a,b,c,d,e,g){mxEvent.isAltDown(g)&&(e=null);p.apply(this,arguments)};mxGraphHandler.prototype.updateHint=function(b){if(null!=this.shape){null==this.hint&&(this.hint=a(),this.graph.container.appendChild(this.hint));var c=this.graph.view.translate,d=this.graph.view.scale;b=this.roundLength((this.bounds.x+this.currentDx)/ -d-c.x);c=this.roundLength((this.bounds.y+this.currentDy)/d-c.y);this.hint.innerHTML=b+", "+c;this.hint.style.left=this.shape.bounds.x+Math.round((this.shape.bounds.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=this.shape.bounds.y+this.shape.bounds.height+12+"px"}};mxGraphHandler.prototype.removeHint=function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint),this.hint=null)};mxVertexHandler.prototype.isRecursiveResize=function(a,b){return!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&& -!mxEvent.isControlDown(b.getEvent())&&!this.graph.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null)};mxVertexHandler.prototype.isCenteredEvent=function(a,b){return!(!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&&!this.graph.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null))&&mxEvent.isControlDown(b.getEvent())||mxEvent.isMetaDown(b.getEvent())}; -var n=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var a=new mxPoint(0,0),b=this.tolerance;this.graph.cellEditor.getEditingCell()==this.state.cell&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(b/=2,a.x=this.sizers[0].bounds.width+b,a.y=this.sizers[0].bounds.height+b):a=n.apply(this,arguments);return a};mxVertexHandler.prototype.updateHint=function(b){this.index!=mxEvent.LABEL_HANDLE&&(null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint)), -this.index==mxEvent.ROTATION_HANDLE?this.hint.innerHTML=this.currentAlpha+"°":(b=this.state.view.scale,this.hint.innerHTML=this.roundLength(this.bounds.width/b)+" x "+this.roundLength(this.bounds.height/b)),b=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||"0"),null==b&&(b=this.bounds),this.hint.style.left=b.x+Math.round((b.width-this.hint.clientWidth)/2)+"px",this.hint.style.top=b.y+b.height+12+"px",null!=this.linkHint&& -(this.linkHint.style.display="none"))};mxVertexHandler.prototype.removeHint=function(){mxGraphHandler.prototype.removeHint.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(b,c){null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));var d=this.graph.view.translate,e=this.graph.view.scale,g=this.roundLength(c.x/e-d.x),d=this.roundLength(c.y/e-d.y);this.hint.innerHTML=g+", "+d;this.hint.style.visibility= -"visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(g=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*g.x)+"%, "+Math.round(100*g.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility="hidden");this.hint.style.left=Math.round(b.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(b.getGraphY(),c.y)+this.state.view.graph.gridSize+"px";null!=this.linkHint&& -(this.linkHint.style.display="none")};mxEdgeHandler.prototype.removeHint=mxVertexHandler.prototype.removeHint;HoverIcons.prototype.mainHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/>'):new mxImage(IMAGE_PATH+"/handle-main.png",17,17);HoverIcons.prototype.secondaryHandle=mxClient.IS_SVG?Graph.createSvgImage(16,16,'<path d="m 8 3 L 13 8 L 8 13 L 3 8 z" stroke="#fff" fill="#fca000"/>'):new mxImage(IMAGE_PATH+ -"/handle-secondary.png",17,17);HoverIcons.prototype.fixedHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/><path d="m 7 7 L 11 11 M 7 11 L 11 7" stroke="#fff"/>'):new mxImage(IMAGE_PATH+"/handle-fixed.png",17,17);HoverIcons.prototype.terminalHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/><circle cx="9" cy="9" r="2" stroke="#fff" fill="transparent"/>'): -new mxImage(IMAGE_PATH+"/handle-terminal.png",17,17);HoverIcons.prototype.rotationHandle=new mxImage(mxClient.IS_SVG?"data:image/png;base64,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": +!0),f=0;f<a.length;f++){var h=c.getParent(a[f]),k=this.moveCells([g[f]],d,d,!1)[0];e.push(k);if(b)c.add(h,g[f]);else{var l=h.getIndex(a[f]);c.add(h,g[f],l+1)}}}finally{c.endUpdate()}return e};Graph.prototype.insertImage=function(a,b,c){if(null!=a&&null!=this.cellEditor.textarea){for(var d=this.cellEditor.textarea.getElementsByTagName("img"),e=[],g=0;g<d.length;g++)e.push(d[g]);document.execCommand("insertimage",!1,a);a=this.cellEditor.textarea.getElementsByTagName("img");if(a.length==e.length+1)for(g= +a.length-1;0<=g;g--)if(0==g||a[g]!=e[g-1]){a[g].setAttribute("width",b);a[g].setAttribute("height",c);break}}};Graph.prototype.insertLink=function(a){if(null!=this.cellEditor.textarea)if(0==a.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var b=this.cellEditor.textarea.getElementsByTagName("a"),c=[],d=0;d<b.length;d++)c.push(b[d]);document.execCommand("createlink",!1,mxUtils.trim(a));b=this.cellEditor.textarea.getElementsByTagName("a");if(b.length==c.length+1)for(d=b.length- +1;0<=d;d--)if(b[d]!=c[d-1]){for(b=b[d].getElementsByTagName("a");0<b.length;){for(c=b[0].parentNode;null!=b[0].firstChild;)c.insertBefore(b[0].firstChild,b[0]);c.removeChild(b[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(a))};Graph.prototype.isCellResizable=function(a){var b=mxGraph.prototype.isCellResizable.apply(this,arguments),c=this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);return b||"0"!=mxUtils.getValue(c,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==c[mxConstants.STYLE_WHITE_SPACE]}; +Graph.prototype.distributeCells=function(a,b){null==b&&(b=this.getSelectionCells());if(null!=b&&1<b.length){for(var c=[],d=null,e=null,g=0;g<b.length;g++)if(this.getModel().isVertex(b[g])){var f=this.view.getState(b[g]);if(null!=f){var h=a?f.getCenterX():f.getCenterY(),d=null!=d?Math.max(d,h):h,e=null!=e?Math.min(e,h):h;c.push(f)}}if(2<c.length){c.sort(function(b,c){return a?b.x-c.x:b.y-c.y});f=this.view.translate;h=this.view.scale;e=e/h-(a?f.x:f.y);d=d/h-(a?f.x:f.y);this.getModel().beginUpdate(); +try{for(var k=(d-e)/(c.length-1),d=e,g=1;g<c.length-1;g++){var l=this.view.getState(this.model.getParent(c[g].cell)),m=this.getCellGeometry(c[g].cell),d=d+k;null!=m&&null!=l&&(m=m.clone(),a?m.x=Math.round(d-m.width/2)-l.origin.x:m.y=Math.round(d-m.height/2)-l.origin.y,this.getModel().setGeometry(c[g].cell,m))}}finally{this.getModel().endUpdate()}}}return b};Graph.prototype.isCloneEvent=function(a){return mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxEvent.isControlDown(a)};Graph.prototype.encodeCells= +function(a){for(var b=this.cloneCells(a),c=new mxDictionary,d=0;d<a.length;d++)c.put(a[d],!0);for(d=0;d<b.length;d++){var e=this.view.getState(a[d]);if(null!=e){var g=this.getCellGeometry(b[d]);null==g||!g.relative||this.model.isEdge(a[d])||c.get(this.model.getParent(a[d]))||(g.relative=!1,g.x=e.x/e.view.scale-e.view.translate.x,g.y=e.y/e.view.scale-e.view.translate.y)}}c=new mxCodec;e=new mxGraphModel;g=e.getChildAt(e.getRoot(),0);for(d=0;d<a.length;d++)e.add(g,b[d]);return c.encode(e)};Graph.prototype.createSvgImageExport= +function(){var a=new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,b){return this.getLinkForCell(a.cell)});return a};Graph.prototype.getSvg=function(a,b,c,d,e,g,f,h,k,l){var m=this.useCssTransforms;m&&(this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange());try{b=null!=b?b:1;c=null!=c?c:0;e=null!=e?e:!0;g=null!=g?g:!0;f=null!=f?f:!0;var A=g||d?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells());if(null==A)throw Error(mxResources.get("drawingEmpty")); +var p=this.view.scale,n=mxUtils.createXmlDocument(),B=null!=n.createElementNS?n.createElementNS(mxConstants.NS_SVG,"svg"):n.createElement("svg");null!=a&&(null!=B.style?B.style.backgroundColor=a:B.setAttribute("style","background-color:"+a));null==n.createElementNS?(B.setAttribute("xmlns",mxConstants.NS_SVG),B.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):B.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=b/p;var q=Math.max(1,Math.ceil(A.width*a)+2*c)+(l?5: +0),u=Math.max(1,Math.ceil(A.height*a)+2*c)+(l?5:0);B.setAttribute("version","1.1");B.setAttribute("width",q+"px");B.setAttribute("height",u+"px");B.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+q+" "+u);n.appendChild(B);var I=null!=n.createElementNS?n.createElementNS(mxConstants.NS_SVG,"g"):n.createElement("g");B.appendChild(I);var r=this.createSvgCanvas(I);r.foOffset=e?-.5:0;r.textOffset=e?-.5:0;r.imageOffset=e?-.5:0;r.translate(Math.floor((c/b-A.x)/p),Math.floor((c/b-A.y)/p));var t=document.createElement("textarea"), +w=r.createAlternateContent;r.createAlternateContent=function(a,b,c,d,e,g,f,h,k,l,m,A,p){var B=this.state;if(null!=this.foAltText&&(0==d||0!=B.fontSize&&g.length<5*d/B.fontSize)){var n=this.createElement("text");n.setAttribute("x",Math.round(d/2));n.setAttribute("y",Math.round((e+B.fontSize)/2));n.setAttribute("fill",B.fontColor||"black");n.setAttribute("text-anchor","middle");n.setAttribute("font-size",Math.round(B.fontSize)+"px");n.setAttribute("font-family",B.fontFamily);(B.fontStyle&mxConstants.FONT_BOLD)== +mxConstants.FONT_BOLD&&n.setAttribute("font-weight","bold");(B.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&n.setAttribute("font-style","italic");(B.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&n.setAttribute("text-decoration","underline");try{return t.innerHTML=g,n.textContent=t.value,n}catch(ha){return w.apply(this,arguments)}}else return w.apply(this,arguments)};var v=this.backgroundImage;if(null!=v){b=p/b;var x=this.view.translate,T=new mxRectangle(x.x*b, +x.y*b,v.width*b,v.height*b);mxUtils.intersects(A,T)&&r.image(x.x,x.y,v.width,v.height,v.src,!0)}r.scale(a);r.textEnabled=f;h=null!=h?h:this.createSvgImageExport();var E=h.drawCellState;h.drawCellState=function(a,b){for(var c=a.view.graph,d=c.isCellSelected(a.cell),e=c.model.getParent(a.cell);!g&&!d&&null!=e;)d=c.isCellSelected(e),e=c.model.getParent(e);(g||d)&&E.apply(this,arguments)};h.drawState(this.getView().getState(this.model.root),r);this.updateSvgLinks(B,k,!0);return B}finally{m&&(this.useCssTransforms= +!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.updateSvgLinks=function(a,b,c){a=a.getElementsByTagName("a");for(var d=0;d<a.length;d++){var e=a[d].getAttribute("href");null==e&&(e=a[d].getAttribute("xlink:href"));null!=e&&(null!=b&&/^https?:\/\//.test(e)?a[d].setAttribute("target",b):c&&this.isCustomLink(e)&&a[d].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(a){return new mxSvgCanvas2D(a)};Graph.prototype.getSelectedElement=function(){var a= +null;if(window.getSelection){var b=window.getSelection();b.getRangeAt&&b.rangeCount&&(a=b.getRangeAt(0).commonAncestorContainer)}else document.selection&&(a=document.selection.createRange().parentElement());return a};Graph.prototype.getParentByName=function(a,b,c){for(;null!=a&&a.nodeName!=b;){if(a==c)return null;a=a.parentNode}return a};Graph.prototype.selectNode=function(a){var b=null;if(window.getSelection){if(b=window.getSelection(),b.getRangeAt&&b.rangeCount){var c=document.createRange();c.selectNode(a); +b.removeAllRanges();b.addRange(c)}}else(b=document.selection)&&"Control"!=b.type&&(a=b.createRange(),a.collapse(!0),c=b.createRange(),c.setEndPoint("StartToStart",a),c.select())};Graph.prototype.insertRow=function(a,b){for(var c=a.tBodies[0],d=c.rows[0].cells,e=0,g=0;g<d.length;g++)var f=d[g].getAttribute("colspan"),e=e+(null!=f?parseInt(f):1);c=c.insertRow(b);for(g=0;g<e;g++)mxUtils.br(c.insertCell(-1));return c.cells[0]};Graph.prototype.deleteRow=function(a,b){a.tBodies[0].deleteRow(b)};Graph.prototype.insertColumn= +function(a,b){var c=a.tHead;if(null!=c)for(var d=0;d<c.rows.length;d++){var e=document.createElement("th");c.rows[d].appendChild(e);mxUtils.br(e)}c=a.tBodies[0];for(d=0;d<c.rows.length;d++)e=c.rows[d].insertCell(b),mxUtils.br(e);return c.rows[0].cells[0<=b?b:c.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(a,b){if(0<=b)for(var c=a.tBodies[0].rows,d=0;d<c.length;d++)c[d].cells.length>b&&c[d].deleteCell(b)};Graph.prototype.pasteHtmlAtCaret=function(a){var b;if(window.getSelection){if(b= +window.getSelection(),b.getRangeAt&&b.rangeCount){b=b.getRangeAt(0);b.deleteContents();var c=document.createElement("div");c.innerHTML=a;a=document.createDocumentFragment();for(var d;d=c.firstChild;)lastNode=a.appendChild(d);b.insertNode(a)}}else(b=document.selection)&&"Control"!=b.type&&b.createRange().pasteHTML(a)};Graph.prototype.createLinkForHint=function(a,b){function c(a,b){a.length>b&&(a=a.substring(0,Math.round(b/2))+"..."+a.substring(a.length-Math.round(b/4)));return a}a=null!=a?a:"javascript:void(0);"; +if(null==b||0==b.length)b=this.isCustomLink(a)?this.getLinkTitle(a):a;var d=document.createElement("a");d.setAttribute("rel",this.linkRelation);d.setAttribute("href",this.getAbsoluteUrl(a));d.setAttribute("title",c(this.isCustomLink(a)?this.getLinkTitle(a):a,80));null!=this.linkTarget&&d.setAttribute("target",this.linkTarget);mxUtils.write(d,c(b,40));this.isCustomLink(a)&&mxEvent.addListener(d,"click",mxUtils.bind(this,function(b){this.customLinkClicked(a);mxEvent.consume(b)}));return d};Graph.prototype.initTouch= +function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(a,b){this.popupMenuHandler.hideMenu()});var a=this.updateMouseEvent;this.updateMouseEvent=function(b){b=a.apply(this,arguments);if(mxEvent.isTouchEvent(b.getEvent())&&null==b.getState()){var c=this.getCellAt(b.graphX,b.graphY);null!=c&&this.isSwimlane(c)&&this.hitsSwimlaneContent(c,b.graphX,b.graphY)||(b.state=this.view.getState(c),null!=b.state&& +null!=b.state.shape&&(this.container.style.cursor=b.state.shape.node.style.cursor))}null==b.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return b};var b=!1,c=!1,d=!1,e=this.fireMouseEvent;this.fireMouseEvent=function(a,g,f){a==mxEvent.MOUSE_DOWN&&(g=this.updateMouseEvent(g),b=this.isCellSelected(g.getCell()),c=this.isSelectionEmpty(),d=this.popupMenuHandler.isMenuShowing());e.apply(this,arguments)};this.popupMenuHandler.mouseUp=mxUtils.bind(this,function(a,e){this.popupMenuHandler.popupTrigger= +!this.isEditing()&&this.isEnabled()&&(null==e.getState()||!e.isSource(e.getState().control))&&(this.popupMenuHandler.popupTrigger||!d&&!mxEvent.isMouseEvent(e.getEvent())&&(c&&null==e.getCell()&&this.isSelectionEmpty()||b&&this.isCellSelected(e.getCell())));mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,arguments)})};mxCellEditor.prototype.isContentEditing=function(){var a=this.graph.view.getState(this.editingCell);return null!=a&&1==a.style.html};mxCellEditor.prototype.saveSelection= +function(){if(window.getSelection){var a=window.getSelection();if(a.getRangeAt&&a.rangeCount){for(var b=[],c=0,d=a.rangeCount;c<d;++c)b.push(a.getRangeAt(c));return b}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(a){try{if(a)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var b=0,c=a.length;b<c;++b)sel.addRange(a[b])}else document.selection&&a.select&&a.select()}catch(T){}}; +var f=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=function(a){null!=a.text&&(a.text.replaceLinefeeds="0"!=mxUtils.getValue(a.style,"nl2Br","1"));f.apply(this,arguments)};var e=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(a,b){this.isKeepFocusEvent(a)||!mxEvent.isAltDown(a.getEvent())?e.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(a){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)}; +mxCellEditor.prototype.escapeCancelsEditing=!1;var h=mxCellEditor.prototype.startEditing;mxCellEditor.prototype.startEditing=function(a,b){h.apply(this,arguments);var c=this.graph.view.getState(a);this.textarea.className=null!=c&&1==c.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(a);var c=this.graph.getModel().getParent(a),d=this.graph.getCellGeometry(a);this.graph.getModel().isEdge(c)&& +null!=d&&d.relative||this.graph.getModel().isEdge(a)?mxClient.IS_QUIRKS?this.textarea.style.border="gray dotted 1px":this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":"":mxClient.IS_QUIRKS&&(this.textarea.style.outline="none",this.textarea.style.border="")};var g=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(a){function b(a,c){c.originalNode=a;a=a.firstChild;for(var d=c.firstChild;null!=a&&null!= +d;)b(a,d),a=a.nextSibling,d=d.nextSibling;return c}function c(a,b){if(null!=a)if(b.originalNode!=a)d(a);else for(a=a.firstChild,b=b.firstChild;null!=a;){var e=a.nextSibling;null==b?d(a):(c(a,b),b=b.nextSibling);a=e}}function d(a){for(var b=a.firstChild;null!=b;){var c=b.nextSibling;d(b);b=c}1==a.nodeType&&("BR"===a.nodeName||null!=a.firstChild)||3==a.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(a)).length?(3==a.nodeType&&mxUtils.setTextContent(a,mxUtils.getTextContent(a).replace(/\n|\r/g,"")), +1==a.nodeType&&(a.removeAttribute("style"),a.removeAttribute("class"),a.removeAttribute("width"),a.removeAttribute("cellpadding"),a.removeAttribute("cellspacing"),a.removeAttribute("border"))):a.parentNode.removeChild(a)}g.apply(this,arguments);mxClient.IS_QUIRKS||7===document.documentMode||8===document.documentMode||mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(a){var d=b(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){c(this.textarea, +d)}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var a=this.graph.view.getState(this.editingCell);if(null!=a){var b=null!=a&&"0"!=mxUtils.getValue(a.style,"nl2Br","1"),c=this.saveSelection();if(this.codeViewMode){h=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<h.length&&"\n"==h.charAt(h.length-1)&&(h=h.substring(0,h.length-1));h=this.graph.sanitizeHtml(b?h.replace(/\n/g,"<br/>"):h,!0);this.textarea.className="mxCellEditor geContentEditable";var d=mxUtils.getValue(a.style, +mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),b=mxUtils.getValue(a.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY),e=mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),g=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,f=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,a=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)== +mxConstants.FONT_UNDERLINE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(d*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(d)+"px";this.textarea.style.textDecoration=a?"underline":"";this.textarea.style.fontWeight=g?"bold":"normal";this.textarea.style.fontStyle=f?"italic":"";this.textarea.style.fontFamily=b;this.textarea.style.textAlign=e;this.textarea.style.padding="0px";this.textarea.innerHTML!=h&&(this.textarea.innerHTML= +h,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length));this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerHTML="");var h=mxUtils.htmlEntities(this.textarea.innerHTML);mxClient.IS_QUIRKS||8==document.documentMode||(h=mxUtils.replaceTrailingNewlines(h,"<div><br></div>"));h=this.graph.sanitizeHtml(b?h.replace(/\n/g,"").replace(/<br\s*.?>/g, +"<br>"):h,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var d=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(d*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(d)+"px";this.textarea.style.textDecoration="";this.textarea.style.fontWeight="normal";this.textarea.style.fontStyle="";this.textarea.style.fontFamily=mxConstants.DEFAULT_FONTFAMILY;this.textarea.style.textAlign="left";this.textarea.style.padding= +"2px";this.textarea.innerHTML!=h&&(this.textarea.innerHTML=h);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);this.switchSelectionState=c;this.resize()}};var k=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(a,b){if(null!=this.textarea)if(a=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=a){var c=a.view.scale;this.bounds=mxRectangle.fromRectangle(a);if(0==this.bounds.width&&0== +this.bounds.height){this.bounds.width=160*c;this.bounds.height=60*c;var d=null!=a.text?a.text.margin:null;null==d&&(d=mxUtils.getAlignmentAsPoint(mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(a.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=d.x*this.bounds.width;this.bounds.y+=d.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-4)/c)+"px";this.textarea.style.height=Math.round((this.bounds.height- +4)/c)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/c)+(this.textarea.offsetHeight-this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*c);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/c)+(this.textarea.offsetWidth-this.textarea.clientWidth)+"px",this.bounds.width=parseInt(this.textarea.style.width)* +c);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxClient.IS_VML?this.textarea.style.zoom=c:mxUtils.setPrefixedStyle(this.textarea.style,"transform","scale("+c+","+c+")")}else this.textarea.style.height="",this.textarea.style.overflow="",k.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(a,b){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetInitialValue.apply(this, +arguments);var c=this.graph.getEditingValue(a.cell,b);"1"==mxUtils.getValue(a.style,"nl2Br","1")&&(c=c.replace(/\n/g,"<br/>"));return c=this.graph.sanitizeHtml(c,!0)};mxCellEditorGetCurrentValue=mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(a){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var b=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return b="1"==mxUtils.getValue(a.style,"nl2Br","1")?b.replace(/\r\n/g, +"<br/>").replace(/\n/g,"<br/>"):b.replace(/\r\n/g,"").replace(/\n/g,"")};var l=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(a){this.codeViewMode&&this.toggleViewMode();l.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(B){}};var m=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(a,b){this.graph.getModel().beginUpdate();try{if(m.apply(this,arguments),this.graph.isCellDeletable(a.cell)&& +0==this.graph.model.getChildCount(a.cell)){var c=mxUtils.getValue(a.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),d=mxUtils.getValue(a.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);""==b&&c==mxConstants.NONE&&d==mxConstants.NONE&&this.graph.removeCells([a.cell],!1)}}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=function(a){var b=null;if(this.graph.getModel().isEdge(a.cell)||this.graph.getModel().isEdge(this.graph.getModel().getParent(a.cell)))b= +mxUtils.getValue(a.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null),b==mxConstants.NONE&&(b=null);return b};mxCellEditor.prototype.getMinimumSize=function(a){var b=this.graph.getView().scale;return new mxRectangle(0,0,null==a.text?30:a.text.size*b+20,30)};var p=mxGraphHandler.prototype.moveCells;mxGraphHandler.prototype.moveCells=function(a,b,c,d,e,g){mxEvent.isAltDown(g)&&(e=null);p.apply(this,arguments)};mxGraphHandler.prototype.updateHint=function(b){if(null!=this.shape){null==this.hint&&(this.hint= +a(),this.graph.container.appendChild(this.hint));var c=this.graph.view.translate,d=this.graph.view.scale;b=this.roundLength((this.bounds.x+this.currentDx)/d-c.x);c=this.roundLength((this.bounds.y+this.currentDy)/d-c.y);this.hint.innerHTML=b+", "+c;this.hint.style.left=this.shape.bounds.x+Math.round((this.shape.bounds.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=this.shape.bounds.y+this.shape.bounds.height+12+"px"}};mxGraphHandler.prototype.removeHint=function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint), +this.hint=null)};mxVertexHandler.prototype.isRecursiveResize=function(a,b){return!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&&!mxEvent.isControlDown(b.getEvent())&&!this.graph.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null)};mxVertexHandler.prototype.isCenteredEvent=function(a,b){return!(!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&&!this.graph.isCellCollapsed(a.cell)&& +"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null))&&mxEvent.isControlDown(b.getEvent())||mxEvent.isMetaDown(b.getEvent())};var n=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var a=new mxPoint(0,0),b=this.tolerance;this.graph.cellEditor.getEditingCell()==this.state.cell&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(b/=2,a.x=this.sizers[0].bounds.width+b,a.y=this.sizers[0].bounds.height+ +b):a=n.apply(this,arguments);return a};mxVertexHandler.prototype.updateHint=function(b){this.index!=mxEvent.LABEL_HANDLE&&(null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint)),this.index==mxEvent.ROTATION_HANDLE?this.hint.innerHTML=this.currentAlpha+"°":(b=this.state.view.scale,this.hint.innerHTML=this.roundLength(this.bounds.width/b)+" x "+this.roundLength(this.bounds.height/b)),b=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha: +this.state.style[mxConstants.STYLE_ROTATION]||"0"),null==b&&(b=this.bounds),this.hint.style.left=b.x+Math.round((b.width-this.hint.clientWidth)/2)+"px",this.hint.style.top=b.y+b.height+12+"px",null!=this.linkHint&&(this.linkHint.style.display="none"))};mxVertexHandler.prototype.removeHint=function(){mxGraphHandler.prototype.removeHint.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(b,c){null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint)); +var d=this.graph.view.translate,e=this.graph.view.scale,g=this.roundLength(c.x/e-d.x),d=this.roundLength(c.y/e-d.y);this.hint.innerHTML=g+", "+d;this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(g=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*g.x)+"%, "+Math.round(100*g.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility="hidden");this.hint.style.left= +Math.round(b.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(b.getGraphY(),c.y)+this.state.view.graph.gridSize+"px";null!=this.linkHint&&(this.linkHint.style.display="none")};mxEdgeHandler.prototype.removeHint=mxVertexHandler.prototype.removeHint;HoverIcons.prototype.mainHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/>'):new mxImage(IMAGE_PATH+"/handle-main.png",17,17);HoverIcons.prototype.secondaryHandle= +mxClient.IS_SVG?Graph.createSvgImage(16,16,'<path d="m 8 3 L 13 8 L 8 13 L 3 8 z" stroke="#fff" fill="#fca000"/>'):new mxImage(IMAGE_PATH+"/handle-secondary.png",17,17);HoverIcons.prototype.fixedHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/><path d="m 7 7 L 11 11 M 7 11 L 11 7" stroke="#fff"/>'):new mxImage(IMAGE_PATH+"/handle-fixed.png",17,17);HoverIcons.prototype.terminalHandle=mxClient.IS_SVG? +Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/><circle cx="9" cy="9" r="2" stroke="#fff" fill="transparent"/>'):new mxImage(IMAGE_PATH+"/handle-terminal.png",17,17);HoverIcons.prototype.rotationHandle=new mxImage(mxClient.IS_SVG?"data:image/png;base64,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": IMAGE_PATH+"/handle-rotate.png",19,21);mxClient.IS_SVG&&(mxConstraintHandler.prototype.pointImage=Graph.createSvgImage(5,5,'<path d="m 0 0 L 5 5 M 0 5 L 5 0" stroke="'+HoverIcons.prototype.arrowFill+'"/>'));mxVertexHandler.prototype.handleImage=HoverIcons.prototype.mainHandle;mxVertexHandler.prototype.secondaryHandleImage=HoverIcons.prototype.secondaryHandle;mxEdgeHandler.prototype.handleImage=HoverIcons.prototype.mainHandle;mxEdgeHandler.prototype.terminalHandleImage=HoverIcons.prototype.terminalHandle; mxEdgeHandler.prototype.fixedHandleImage=HoverIcons.prototype.fixedHandle;mxEdgeHandler.prototype.labelHandleImage=HoverIcons.prototype.secondaryHandle;mxOutline.prototype.sizerImage=HoverIcons.prototype.mainHandle;null!=window.Sidebar&&(Sidebar.prototype.triangleUp=HoverIcons.prototype.triangleUp,Sidebar.prototype.triangleRight=HoverIcons.prototype.triangleRight,Sidebar.prototype.triangleDown=HoverIcons.prototype.triangleDown,Sidebar.prototype.triangleLeft=HoverIcons.prototype.triangleLeft,Sidebar.prototype.refreshTarget= HoverIcons.prototype.refreshTarget,Sidebar.prototype.roundDrop=HoverIcons.prototype.roundDrop);mxClient.IS_SVG||((new Image).src=HoverIcons.prototype.mainHandle.src,(new Image).src=HoverIcons.prototype.fixedHandle.src,(new Image).src=HoverIcons.prototype.terminalHandle.src,(new Image).src=HoverIcons.prototype.secondaryHandle.src,(new Image).src=HoverIcons.prototype.rotationHandle.src,(new Image).src=HoverIcons.prototype.triangleUp.src,(new Image).src=HoverIcons.prototype.triangleRight.src,(new Image).src= @@ -2658,9 +2660,9 @@ this.secondDiv=null);q.apply(this,arguments)};var r=(new Date).getTime(),t=0,w=m 2E3<t||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&v.apply(this,arguments)};mxVertexHandler.prototype.isCustomHandleEvent=function(a){return!mxEvent.isShiftDown(a.getEvent())};mxEdgeHandler.prototype.createHandleShape=function(a,b){var c=null!=a&&0==a,d=this.state.getVisibleTerminalState(c),e=null!=a&&(0==a||a>=this.state.absolutePoints.length-1||this.constructor==mxElbowEdgeHandler&&2==a)?this.graph.getConnectionConstraint(this.state, d,c):null,c=null!=(null!=e?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(c),e):null)?this.fixedHandleImage:null!=e&&null!=d?this.terminalHandleImage:this.handleImage;if(null!=c)return c=new mxImageShape(new mxRectangle(0,0,c.width,c.height),c.src),c.preserveImageAspect=!1,c;c=mxConstants.HANDLE_SIZE;this.preferHtml&&--c;return new mxRectangleShape(new mxRectangle(0,0,c,c),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var z=mxVertexHandler.prototype.createSizerShape; mxVertexHandler.prototype.createSizerShape=function(a,b,c){this.handleImage=b==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:b==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;return z.apply(this,arguments)};var x=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(a){if(null!=a&&1==a.length){var b=this.graph.getModel(),c=b.getParent(a[0]),d=this.graph.getCellGeometry(a[0]);if(b.isEdge(c)&&null!=d&&d.relative&&(b=this.graph.view.getState(a[0]), -null!=b&&2>b.width&&2>b.height&&null!=b.text&&null!=b.text.boundingBox))return mxRectangle.fromRectangle(b.text.boundingBox)}return x.apply(this,arguments)};var F=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(a){var b=this.graph.getModel(),c=b.getParent(a.cell),d=this.graph.getCellGeometry(a.cell);return b.isEdge(c)&&null!=d&&d.relative&&2>a.width&&2>a.height&&null!=a.text&&null!=a.text.boundingBox?(b=a.text.unrotatedBoundingBox||a.text.boundingBox, -new mxRectangle(Math.round(b.x),Math.round(b.y),Math.round(b.width),Math.round(b.height))):F.apply(this,arguments)};var D=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(a,b){var c=this.graph.getModel(),d=c.getParent(this.state.cell),e=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(b)==mxEvent.ROTATION_HANDLE||!c.isEdge(d)||null==e||!e.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&D.apply(this,arguments)};mxVertexHandler.prototype.isRotationHandleVisible= -function(){return this.graph.isEnabled()&&this.rotationEnabled&&this.graph.isCellRotatable(this.state.cell)&&(0>=mxGraphHandler.prototype.maxCells||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)};mxVertexHandler.prototype.rotateClick=function(){this.state.view.graph.turnShapes([this.state.cell])};var E=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(a,b){E.apply(this,arguments);null!=this.graph.graphHandler.first&&null!=this.rotationShape&&null!= +null!=b&&2>b.width&&2>b.height&&null!=b.text&&null!=b.text.boundingBox))return mxRectangle.fromRectangle(b.text.boundingBox)}return x.apply(this,arguments)};var E=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(a){var b=this.graph.getModel(),c=b.getParent(a.cell),d=this.graph.getCellGeometry(a.cell);return b.isEdge(c)&&null!=d&&d.relative&&2>a.width&&2>a.height&&null!=a.text&&null!=a.text.boundingBox?(b=a.text.unrotatedBoundingBox||a.text.boundingBox, +new mxRectangle(Math.round(b.x),Math.round(b.y),Math.round(b.width),Math.round(b.height))):E.apply(this,arguments)};var D=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(a,b){var c=this.graph.getModel(),d=c.getParent(this.state.cell),e=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(b)==mxEvent.ROTATION_HANDLE||!c.isEdge(d)||null==e||!e.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&D.apply(this,arguments)};mxVertexHandler.prototype.isRotationHandleVisible= +function(){return this.graph.isEnabled()&&this.rotationEnabled&&this.graph.isCellRotatable(this.state.cell)&&(0>=mxGraphHandler.prototype.maxCells||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)};mxVertexHandler.prototype.rotateClick=function(){this.state.view.graph.turnShapes([this.state.cell])};var F=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(a,b){F.apply(this,arguments);null!=this.graph.graphHandler.first&&null!=this.rotationShape&&null!= this.rotationShape.node&&(this.rotationShape.node.style.display="none")};var C=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(a,b){C.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none")};var M=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){M.apply(this,arguments);var a=!1;null!=this.rotationShape&&this.rotationShape.node.setAttribute("title", mxResources.get("rotateTooltip"));var b=mxUtils.bind(this,function(){null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none");null!=this.specialHandle&&(this.specialHandle.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none");this.redrawHandles()});this.selectionHandler=mxUtils.bind(this,function(a,c){b()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE, this.selectionHandler);this.changeHandler=mxUtils.bind(this,function(a,c){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));b()});this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(a,b){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,this.editingHandler);var c=this.graph.getLinkForCell(this.state.cell),d=this.graph.getLinksForState(this.state);this.updateLinkHint(c, @@ -2674,7 +2676,7 @@ arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return "0",a),a=null!=c?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,b=null!=this.state.text?this.state.text.boundingBox:null;null==c&&(c=this.state);c=c.y+c.height;null!=b&&(c=Math.max(c,b.y+b.height));this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(c+this.verticalOffset/2+6+this.state.view.graph.tolerance)+"px"}};var K=mxVertexHandler.prototype.reset;mxVertexHandler.prototype.reset= function(){K.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none")};var O=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){O.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.selectionHandler&&(this.graph.getSelectionModel().removeListener(this.selectionHandler),this.selectionHandler= null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null);null!=this.editingHandler&&(this.graph.removeListener(this.editingHandler),this.editingHandler=null)};var Q=mxEdgeHandler.prototype.redrawHandles;mxEdgeHandler.prototype.redrawHandles=function(){if(null!=this.marker&&(Q.apply(this),null!=this.state&&null!=this.linkHint)){var a=this.state;null!=this.state.text&&null!=this.state.text.bounds&&(a=new mxRectangle(a.x,a.y,a.width,a.height), -a.add(this.state.text.bounds));this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(a.y+a.height+6+this.state.view.graph.tolerance)+"px"}};var P=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){P.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var I=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){I.apply(this,arguments);null!=this.linkHint&& +a.add(this.state.text.bounds));this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(a.y+a.height+6+this.state.view.graph.tolerance)+"px"}};var P=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){P.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var H=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){H.apply(this,arguments);null!=this.linkHint&& (this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.selectionHandler&&(this.graph.getSelectionModel().removeListener(this.selectionHandler),this.selectionHandler=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null)}}();Format=function(a,c){this.editorUi=a;this.container=c};Format.prototype.labelIndex=0;Format.prototype.currentIndex=0;Format.prototype.showCloseButton=!0;Format.prototype.inactiveTabBackgroundColor="#d7d7d7";Format.prototype.roundableShapes="label rectangle internalStorage corner parallelogram swimlane triangle trapezoid ext step tee process link rhombus offPageConnector loopLimit hexagon manualInput curlyBracket singleArrow callout doubleArrow flexArrow card umlLifeline".split(" "); Format.prototype.init=function(){var a=this.editorUi.editor,c=a.graph;this.update=mxUtils.bind(this,function(a,b){this.clearSelectionState();this.refresh()});c.getSelectionModel().addListener(mxEvent.CHANGE,this.update);c.addListener(mxEvent.EDITING_STARTED,this.update);c.addListener(mxEvent.EDITING_STOPPED,this.update);c.getModel().addListener(mxEvent.CHANGE,this.update);c.addListener(mxEvent.ROOT,mxUtils.bind(this,function(){this.refresh()}));a.addListener("autosaveChanged",mxUtils.bind(this,function(){this.refresh()})); this.refresh()};Format.prototype.clearSelectionState=function(){this.selectionState=null};Format.prototype.getSelectionState=function(){null==this.selectionState&&(this.selectionState=this.createSelectionState());return this.selectionState};Format.prototype.createSelectionState=function(){for(var a=this.editorUi.editor.graph.getSelectionCells(),c=this.initSelectionState(),d=0;d<a.length;d++)this.updateSelectionStateForCell(c,a[d],a);return c}; @@ -2765,10 +2767,10 @@ TextFormatPanel.prototype.addFont=function(a){function c(a,b){mxClient.IS_IE&&(m !0);l.style.color="rgb(112, 112, 112)";l.style.whiteSpace="nowrap";l.style.overflow="hidden";l.style.margin="0px";this.addArrow(l);l.style.width="192px";l.style.height="15px";mxClient.IS_FF&&(l.getElementsByTagName("div")[0].style.marginTop="-18px");k=e.cloneNode(!1);k.style.marginLeft="-3px";var m=this.editorUi.toolbar.addItems(["bold","italic","underline"],k,!0);m[0].setAttribute("title",mxResources.get("bold")+" ("+this.editorUi.actions.get("bold").shortcut+")");m[1].setAttribute("title",mxResources.get("italic")+ " ("+this.editorUi.actions.get("italic").shortcut+")");m[2].setAttribute("title",mxResources.get("underline")+" ("+this.editorUi.actions.get("underline").shortcut+")");var p=this.editorUi.toolbar.addItems(["vertical"],k,!0)[0];mxClient.IS_QUIRKS&&mxUtils.br(a);a.appendChild(k);this.styleButtons(m);this.styleButtons([p]);g=e.cloneNode(!1);g.style.marginLeft="-3px";g.style.paddingBottom="0px";var n=function(a){return function(){return a()}},u=this.editorUi.toolbar.addButton("geSprite-left",mxResources.get("left"), b.cellEditor.isContentEditing()?function(){document.execCommand("justifyleft",!1,null)}:n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT])),g),q=this.editorUi.toolbar.addButton("geSprite-center",mxResources.get("center"),b.cellEditor.isContentEditing()?function(){document.execCommand("justifycenter",!1,null)}:n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER])),g),r=this.editorUi.toolbar.addButton("geSprite-right", -mxResources.get("right"),b.cellEditor.isContentEditing()?function(){document.execCommand("justifyright",!1,null)}:n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT])),g);this.styleButtons([u,q,r]);if(b.cellEditor.isContentEditing()){var t=this.editorUi.toolbar.addButton("geSprite-removeformat",null,function(){document.execCommand("strikeThrough",!1,null)},k);this.styleButtons([t]);t.firstChild.style.background="url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjR2MjRIMFYweiIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBjbGlwLXBhdGg9InVybCgjYikiIGZpbGw9IiMwMTAxMDEiIGQ9Ik03LjI0IDguNzVjLS4yNi0uNDgtLjM5LTEuMDMtLjM5LTEuNjcgMC0uNjEuMTMtMS4xNi40LTEuNjcuMjYtLjUuNjMtLjkzIDEuMTEtMS4yOS40OC0uMzUgMS4wNS0uNjMgMS43LS44My42Ni0uMTkgMS4zOS0uMjkgMi4xOC0uMjkuODEgMCAxLjU0LjExIDIuMjEuMzQuNjYuMjIgMS4yMy41NCAxLjY5Ljk0LjQ3LjQuODMuODggMS4wOCAxLjQzLjI1LjU1LjM4IDEuMTUuMzggMS44MWgtMy4wMWMwLS4zMS0uMDUtLjU5LS4xNS0uODUtLjA5LS4yNy0uMjQtLjQ5LS40NC0uNjgtLjItLjE5LS40NS0uMzMtLjc1LS40NC0uMy0uMS0uNjYtLjE2LTEuMDYtLjE2LS4zOSAwLS43NC4wNC0xLjAzLjEzLS4yOS4wOS0uNTMuMjEtLjcyLjM2LS4xOS4xNi0uMzQuMzQtLjQ0LjU1LS4xLjIxLS4xNS40My0uMTUuNjYgMCAuNDguMjUuODguNzQgMS4yMS4zOC4yNS43Ny40OCAxLjQxLjdINy4zOWMtLjA1LS4wOC0uMTEtLjE3LS4xNS0uMjV6TTIxIDEydi0ySDN2Mmg5LjYyYy4xOC4wNy40LjE0LjU1LjIuMzcuMTcuNjYuMzQuODcuNTEuMjEuMTcuMzUuMzYuNDMuNTcuMDcuMi4xMS40My4xMS42OSAwIC4yMy0uMDUuNDUtLjE0LjY2LS4wOS4yLS4yMy4zOC0uNDIuNTMtLjE5LjE1LS40Mi4yNi0uNzEuMzUtLjI5LjA4LS42My4xMy0xLjAxLjEzLS40MyAwLS44My0uMDQtMS4xOC0uMTNzLS42Ni0uMjMtLjkxLS40MmMtLjI1LS4xOS0uNDUtLjQ0LS41OS0uNzUtLjE0LS4zMS0uMjUtLjc2LS4yNS0xLjIxSDYuNGMwIC41NS4wOCAxLjEzLjI0IDEuNTguMTYuNDUuMzcuODUuNjUgMS4yMS4yOC4zNS42LjY2Ljk4LjkyLjM3LjI2Ljc4LjQ4IDEuMjIuNjUuNDQuMTcuOS4zIDEuMzguMzkuNDguMDguOTYuMTMgMS40NC4xMy44IDAgMS41My0uMDkgMi4xOC0uMjhzMS4yMS0uNDUgMS42Ny0uNzljLjQ2LS4zNC44Mi0uNzcgMS4wNy0xLjI3cy4zOC0xLjA3LjM4LTEuNzFjMC0uNi0uMS0xLjE0LS4zMS0xLjYxLS4wNS0uMTEtLjExLS4yMy0uMTctLjMzSDIxeiIvPjwvc3ZnPg==)"; +mxResources.get("right"),b.cellEditor.isContentEditing()?function(){document.execCommand("justifyright",!1,null)}:n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT])),g);this.styleButtons([u,q,r]);if(b.cellEditor.isContentEditing()){var t=this.editorUi.toolbar.addButton("geSprite-removeformat",mxResources.get("strikethrough"),function(){document.execCommand("strikeThrough",!1,null)},k);this.styleButtons([t]);t.firstChild.style.background="url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjR2MjRIMFYweiIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBjbGlwLXBhdGg9InVybCgjYikiIGZpbGw9IiMwMTAxMDEiIGQ9Ik03LjI0IDguNzVjLS4yNi0uNDgtLjM5LTEuMDMtLjM5LTEuNjcgMC0uNjEuMTMtMS4xNi40LTEuNjcuMjYtLjUuNjMtLjkzIDEuMTEtMS4yOS40OC0uMzUgMS4wNS0uNjMgMS43LS44My42Ni0uMTkgMS4zOS0uMjkgMi4xOC0uMjkuODEgMCAxLjU0LjExIDIuMjEuMzQuNjYuMjIgMS4yMy41NCAxLjY5Ljk0LjQ3LjQuODMuODggMS4wOCAxLjQzLjI1LjU1LjM4IDEuMTUuMzggMS44MWgtMy4wMWMwLS4zMS0uMDUtLjU5LS4xNS0uODUtLjA5LS4yNy0uMjQtLjQ5LS40NC0uNjgtLjItLjE5LS40NS0uMzMtLjc1LS40NC0uMy0uMS0uNjYtLjE2LTEuMDYtLjE2LS4zOSAwLS43NC4wNC0xLjAzLjEzLS4yOS4wOS0uNTMuMjEtLjcyLjM2LS4xOS4xNi0uMzQuMzQtLjQ0LjU1LS4xLjIxLS4xNS40My0uMTUuNjYgMCAuNDguMjUuODguNzQgMS4yMS4zOC4yNS43Ny40OCAxLjQxLjdINy4zOWMtLjA1LS4wOC0uMTEtLjE3LS4xNS0uMjV6TTIxIDEydi0ySDN2Mmg5LjYyYy4xOC4wNy40LjE0LjU1LjIuMzcuMTcuNjYuMzQuODcuNTEuMjEuMTcuMzUuMzYuNDMuNTcuMDcuMi4xMS40My4xMS42OSAwIC4yMy0uMDUuNDUtLjE0LjY2LS4wOS4yLS4yMy4zOC0uNDIuNTMtLjE5LjE1LS40Mi4yNi0uNzEuMzUtLjI5LjA4LS42My4xMy0xLjAxLjEzLS40MyAwLS44My0uMDQtMS4xOC0uMTNzLS42Ni0uMjMtLjkxLS40MmMtLjI1LS4xOS0uNDUtLjQ0LS41OS0uNzUtLjE0LS4zMS0uMjUtLjc2LS4yNS0xLjIxSDYuNGMwIC41NS4wOCAxLjEzLjI0IDEuNTguMTYuNDUuMzcuODUuNjUgMS4yMS4yOC4zNS42LjY2Ljk4LjkyLjM3LjI2Ljc4LjQ4IDEuMjIuNjUuNDQuMTcuOS4zIDEuMzguMzkuNDguMDguOTYuMTMgMS40NC4xMy44IDAgMS41My0uMDkgMi4xOC0uMjhzMS4yMS0uNDUgMS42Ny0uNzljLjQ2LS4zNC44Mi0uNzcgMS4wNy0xLjI3cy4zOC0xLjA3LjM4LTEuNzFjMC0uNi0uMS0xLjE0LS4zMS0xLjYxLS4wNS0uMTEtLjExLS4yMy0uMTctLjMzSDIxeiIvPjwvc3ZnPg==)"; t.firstChild.style.backgroundPosition="2px 2px";t.firstChild.style.backgroundSize="18px 18px";this.styleButtons([t])}var w=this.editorUi.toolbar.addButton("geSprite-top",mxResources.get("top"),n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP])),g),v=this.editorUi.toolbar.addButton("geSprite-middle",mxResources.get("middle"),n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE])),g),z=this.editorUi.toolbar.addButton("geSprite-bottom", -mxResources.get("bottom"),n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM])),g);this.styleButtons([w,v,z]);mxClient.IS_QUIRKS&&mxUtils.br(a);a.appendChild(g);var x,F,D,E,C,M,L;b.cellEditor.isContentEditing()?(w.style.display="none",v.style.display="none",z.style.display="none",p.style.display="none",D=this.editorUi.toolbar.addButton("geSprite-justifyfull",null,function(){document.execCommand("justifyfull",!1,null)},g),this.styleButtons([D, -x=this.editorUi.toolbar.addButton("geSprite-subscript",mxResources.get("subscript")+" ("+Editor.ctrlKey+"+,)",function(){document.execCommand("subscript",!1,null)},g),F=this.editorUi.toolbar.addButton("geSprite-superscript",mxResources.get("superscript")+" ("+Editor.ctrlKey+"+.)",function(){document.execCommand("superscript",!1,null)},g)]),D.style.marginRight="9px",n=g.cloneNode(!1),n.style.paddingTop="4px",g=[this.editorUi.toolbar.addButton("geSprite-orderedlist",mxResources.get("numberedList"), +mxResources.get("bottom"),n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM])),g);this.styleButtons([w,v,z]);mxClient.IS_QUIRKS&&mxUtils.br(a);a.appendChild(g);var x,E,D,F,C,M,L;b.cellEditor.isContentEditing()?(w.style.display="none",v.style.display="none",z.style.display="none",p.style.display="none",D=this.editorUi.toolbar.addButton("geSprite-justifyfull",mxResources.get("block"),function(){document.execCommand("justifyfull",!1,null)},g), +this.styleButtons([D,x=this.editorUi.toolbar.addButton("geSprite-subscript",mxResources.get("subscript")+" ("+Editor.ctrlKey+"+,)",function(){document.execCommand("subscript",!1,null)},g),E=this.editorUi.toolbar.addButton("geSprite-superscript",mxResources.get("superscript")+" ("+Editor.ctrlKey+"+.)",function(){document.execCommand("superscript",!1,null)},g)]),D.style.marginRight="9px",n=g.cloneNode(!1),n.style.paddingTop="4px",g=[this.editorUi.toolbar.addButton("geSprite-orderedlist",mxResources.get("numberedList"), function(){document.execCommand("insertorderedlist",!1,null)},n),this.editorUi.toolbar.addButton("geSprite-unorderedlist",mxResources.get("bulletedList"),function(){document.execCommand("insertunorderedlist",!1,null)},n),this.editorUi.toolbar.addButton("geSprite-outdent",mxResources.get("decreaseIndent"),function(){document.execCommand("outdent",!1,null)},n),this.editorUi.toolbar.addButton("geSprite-indent",mxResources.get("increaseIndent"),function(){document.execCommand("indent",!1,null)},n),this.editorUi.toolbar.addButton("geSprite-removeformat", mxResources.get("removeFormat"),function(){document.execCommand("removeformat",!1,null)},n),this.editorUi.toolbar.addButton("geSprite-code",mxResources.get("html"),function(){b.cellEditor.toggleViewMode()},n)],this.styleButtons(g),g[g.length-2].style.marginLeft="9px",mxClient.IS_QUIRKS&&(mxUtils.br(a),n.style.height="40"),a.appendChild(n)):(m[2].style.marginRight="9px",r.style.marginRight="9px");g=e.cloneNode(!1);g.style.marginLeft="0px";g.style.paddingTop="8px";g.style.paddingBottom="4px";g.style.fontWeight= "normal";mxUtils.write(g,mxResources.get("position"));var J=document.createElement("select");J.style.position="absolute";J.style.right="20px";J.style.width="97px";J.style.marginTop="-2px";for(var t="topLeft top topRight left center right bottomLeft bottom bottomRight".split(" "),G={topLeft:[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_TOP,mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_BOTTOM],top:[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_TOP,mxConstants.ALIGN_CENTER,mxConstants.ALIGN_BOTTOM],topRight:[mxConstants.ALIGN_RIGHT, @@ -2776,18 +2778,18 @@ mxConstants.ALIGN_TOP,mxConstants.ALIGN_LEFT,mxConstants.ALIGN_BOTTOM],left:[mxC mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_CENTER,mxConstants.ALIGN_TOP],bottomRight:[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_LEFT,mxConstants.ALIGN_TOP]},n=0;n<t.length;n++){var K=document.createElement("option");K.setAttribute("value",t[n]);mxUtils.write(K,mxResources.get(t[n]));J.appendChild(K)}g.appendChild(J);t=e.cloneNode(!1);t.style.marginLeft="0px";t.style.paddingTop="4px";t.style.paddingBottom="4px";t.style.fontWeight="normal";mxUtils.write(t,mxResources.get("writingDirection")); var O=document.createElement("select");O.style.position="absolute";O.style.right="20px";O.style.width="97px";O.style.marginTop="-2px";for(var K=["automatic","leftToRight","rightToLeft"],Q={automatic:null,leftToRight:mxConstants.TEXT_DIRECTION_LTR,rightToLeft:mxConstants.TEXT_DIRECTION_RTL},n=0;n<K.length;n++){var P=document.createElement("option");P.setAttribute("value",K[n]);mxUtils.write(P,mxResources.get(K[n]));O.appendChild(P)}t.appendChild(O);b.isEditing()||(a.appendChild(g),mxEvent.addListener(J, "change",function(a){b.getModel().beginUpdate();try{var c=G[J.value];null!=c&&(b.setCellStyles(mxConstants.STYLE_LABEL_POSITION,c[0],b.getSelectionCells()),b.setCellStyles(mxConstants.STYLE_VERTICAL_LABEL_POSITION,c[1],b.getSelectionCells()),b.setCellStyles(mxConstants.STYLE_ALIGN,c[2],b.getSelectionCells()),b.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,c[3],b.getSelectionCells()))}finally{b.getModel().endUpdate()}mxEvent.consume(a)}),a.appendChild(t),mxEvent.addListener(O,"change",function(a){b.setCellStyles(mxConstants.STYLE_TEXT_DIRECTION, -Q[O.value],b.getSelectionCells());mxEvent.consume(a)}));var I=document.createElement("input");I.style.textAlign="right";I.style.marginTop="4px";mxClient.IS_QUIRKS||(I.style.position="absolute",I.style.right="32px");I.style.width="46px";I.style.height=mxClient.IS_QUIRKS?"21px":"17px";k.appendChild(I);var B=null,g=this.installInputHandler(I,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize,1,999," pt",function(a){if(window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11){var c=function(c, +Q[O.value],b.getSelectionCells());mxEvent.consume(a)}));var H=document.createElement("input");H.style.textAlign="right";H.style.marginTop="4px";mxClient.IS_QUIRKS||(H.style.position="absolute",H.style.right="32px");H.style.width="46px";H.style.height=mxClient.IS_QUIRKS?"21px":"17px";k.appendChild(H);var B=null,g=this.installInputHandler(H,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize,1,999," pt",function(a){if(window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11){var c=function(c, e){c!=b.cellEditor.textarea&&b.cellEditor.textarea.contains(c)&&(e||d.containsNode(c,!0))&&("FONT"==c.nodeName?(c.removeAttribute("size"),c.style.fontSize=a+"px"):mxUtils.getCurrentStyle(c).fontSize!=a+"px"&&(mxUtils.getCurrentStyle(c.parentNode).fontSize!=a+"px"?c.style.fontSize=a+"px":c.style.fontSize=""))},d=window.getSelection(),e=0<d.rangeCount?d.getRangeAt(0).commonAncestorContainer:b.cellEditor.textarea;e!=b.cellEditor.textarea&&e.nodeType==mxConstants.NODETYPE_ELEMENT||document.execCommand("fontSize", -!1,"1");e!=b.cellEditor.textarea&&(e=e.parentNode);if(e.nodeType==mxConstants.NODETYPE_ELEMENT){var g=e.getElementsByTagName("*");c(e);for(e=0;e<g.length;e++)c(g[e])}I.value=a+" pt"}else if(window.getSelection||document.selection)if(c=function(a,b){for(;null!=b;){if(b===a)return!0;b=b.parentNode}return!1},g=null,document.selection?g=document.selection.createRange().parentElement():(d=window.getSelection(),0<d.rangeCount&&(g=d.getRangeAt(0).commonAncestorContainer)),null!=g&&c(b.cellEditor.textarea, -g))for(B=a,document.execCommand("fontSize",!1,"4"),g=b.cellEditor.textarea.getElementsByTagName("font"),e=0;e<g.length;e++)if("4"==g[e].getAttribute("size")){g[e].removeAttribute("size");g[e].style.fontSize=B+"px";window.setTimeout(function(){I.value=B+" pt";B=null},0);break}},!0),g=this.createStepper(I,g,1,10,!0,Menus.prototype.defaultFontSize);g.style.display=I.style.display;g.style.marginTop="4px";mxClient.IS_QUIRKS||(g.style.right="20px");k.appendChild(g);k=l.getElementsByTagName("div")[0];k.style.cssFloat= -"right";var H=null,A="#ffffff",T=null,U="#000000",X=b.cellEditor.isContentEditing()?this.createColorOption(mxResources.get("backgroundColor"),function(){return A},function(a){document.execCommand("backcolor",!1,a!=mxConstants.NONE?a:"transparent")},"#ffffff",{install:function(a){H=a},destroy:function(){H=null}},null,!0):this.createCellColorOption(mxResources.get("backgroundColor"),mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,"#ffffff",null,function(a){b.updateLabelElements(b.getSelectionCells(),function(a){a.style.backgroundColor= -null})});X.style.fontWeight="bold";var W=this.createCellColorOption(mxResources.get("borderColor"),mxConstants.STYLE_LABEL_BORDERCOLOR,"#000000");W.style.fontWeight="bold";k=b.cellEditor.isContentEditing()?this.createColorOption(mxResources.get("fontColor"),function(){return U},function(a){document.execCommand("forecolor",!1,a!=mxConstants.NONE?a:"transparent")},"#000000",{install:function(a){T=a},destroy:function(){T=null}},null,!0):this.createCellColorOption(mxResources.get("fontColor"),mxConstants.STYLE_FONTCOLOR, -"#000000",function(a){X.style.display=null==a||a==mxConstants.NONE?"none":"";W.style.display=X.style.display},function(a){null==a||a==mxConstants.NONE?b.setCellStyles(mxConstants.STYLE_NOLABEL,"1",b.getSelectionCells()):b.setCellStyles(mxConstants.STYLE_NOLABEL,null,b.getSelectionCells());b.updateLabelElements(b.getSelectionCells(),function(a){a.removeAttribute("color");a.style.color=null})});k.style.fontWeight="bold";h.appendChild(k);h.appendChild(X);b.cellEditor.isContentEditing()||h.appendChild(W); +!1,"1");e!=b.cellEditor.textarea&&(e=e.parentNode);if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var g=e.getElementsByTagName("*");c(e);for(e=0;e<g.length;e++)c(g[e])}H.value=a+" pt"}else if(window.getSelection||document.selection)if(c=function(a,b){for(;null!=b;){if(b===a)return!0;b=b.parentNode}return!1},g=null,document.selection?g=document.selection.createRange().parentElement():(d=window.getSelection(),0<d.rangeCount&&(g=d.getRangeAt(0).commonAncestorContainer)),null!=g&&c(b.cellEditor.textarea, +g))for(B=a,document.execCommand("fontSize",!1,"4"),g=b.cellEditor.textarea.getElementsByTagName("font"),e=0;e<g.length;e++)if("4"==g[e].getAttribute("size")){g[e].removeAttribute("size");g[e].style.fontSize=B+"px";window.setTimeout(function(){H.value=B+" pt";B=null},0);break}},!0),g=this.createStepper(H,g,1,10,!0,Menus.prototype.defaultFontSize);g.style.display=H.style.display;g.style.marginTop="4px";mxClient.IS_QUIRKS||(g.style.right="20px");k.appendChild(g);k=l.getElementsByTagName("div")[0];k.style.cssFloat= +"right";var I=null,A="#ffffff",T=null,U="#000000",X=b.cellEditor.isContentEditing()?this.createColorOption(mxResources.get("backgroundColor"),function(){return A},function(a){document.execCommand("backcolor",!1,a!=mxConstants.NONE?a:"transparent")},"#ffffff",{install:function(a){I=a},destroy:function(){I=null}},null,!0):this.createCellColorOption(mxResources.get("backgroundColor"),mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,"#ffffff",null,function(a){b.updateLabelElements(b.getSelectionCells(),function(a){a.style.backgroundColor= +null})});X.style.fontWeight="bold";var V=this.createCellColorOption(mxResources.get("borderColor"),mxConstants.STYLE_LABEL_BORDERCOLOR,"#000000");V.style.fontWeight="bold";k=b.cellEditor.isContentEditing()?this.createColorOption(mxResources.get("fontColor"),function(){return U},function(a){document.execCommand("forecolor",!1,a!=mxConstants.NONE?a:"transparent")},"#000000",{install:function(a){T=a},destroy:function(){T=null}},null,!0):this.createCellColorOption(mxResources.get("fontColor"),mxConstants.STYLE_FONTCOLOR, +"#000000",function(a){X.style.display=null==a||a==mxConstants.NONE?"none":"";V.style.display=X.style.display},function(a){null==a||a==mxConstants.NONE?b.setCellStyles(mxConstants.STYLE_NOLABEL,"1",b.getSelectionCells()):b.setCellStyles(mxConstants.STYLE_NOLABEL,null,b.getSelectionCells());b.updateLabelElements(b.getSelectionCells(),function(a){a.removeAttribute("color");a.style.color=null})});k.style.fontWeight="bold";h.appendChild(k);h.appendChild(X);b.cellEditor.isContentEditing()||h.appendChild(V); a.appendChild(h);h=this.createPanel();h.style.paddingTop="2px";h.style.paddingBottom="4px";k=this.createCellOption(mxResources.get("wordWrap"),mxConstants.STYLE_WHITE_SPACE,null,"wrap","null",null,null,!0);k.style.fontWeight="bold";f.containsLabel||f.autoSize||0!=f.edges.length||h.appendChild(k);k=this.createCellOption(mxResources.get("formattedText"),"html","0",null,null,null,d.actions.get("formattedText"));k.style.fontWeight="bold";h.appendChild(k);k=this.createPanel();k.style.paddingTop="10px"; -k.style.paddingBottom="28px";k.style.fontWeight="normal";g=document.createElement("div");g.style.position="absolute";g.style.width="70px";g.style.marginTop="0px";g.style.fontWeight="bold";mxUtils.write(g,mxResources.get("spacing"));k.appendChild(g);var aa,ha,ba,R,ka,ca=this.addUnitInput(k,"pt",91,44,function(){aa.apply(this,arguments)}),ea=this.addUnitInput(k,"pt",20,44,function(){ha.apply(this,arguments)});mxUtils.br(k);this.addLabel(k,mxResources.get("top"),91);this.addLabel(k,mxResources.get("global"), -20);mxUtils.br(k);mxUtils.br(k);var fa=this.addUnitInput(k,"pt",162,44,function(){ba.apply(this,arguments)}),Y=this.addUnitInput(k,"pt",91,44,function(){R.apply(this,arguments)}),Z=this.addUnitInput(k,"pt",20,44,function(){ka.apply(this,arguments)});mxUtils.br(k);this.addLabel(k,mxResources.get("left"),162);this.addLabel(k,mxResources.get("bottom"),91);this.addLabel(k,mxResources.get("right"),20);if(b.cellEditor.isContentEditing()){var da=null,ia=null;a.appendChild(this.createRelativeOption(mxResources.get("lineheight"), -null,null,function(a){var c=""==a.value?120:parseInt(a.value),c=Math.max(0,isNaN(c)?120:c);null!=da&&(b.cellEditor.restoreSelection(da),da=null);for(var d=b.getSelectedElement();null!=d&&d.nodeType!=mxConstants.NODETYPE_ELEMENT;)d=d.parentNode;null!=d&&d==b.cellEditor.textarea&&null!=b.cellEditor.textarea.firstChild&&("P"!=b.cellEditor.textarea.firstChild.nodeName&&(b.cellEditor.textarea.innerHTML="<p>"+b.cellEditor.textarea.innerHTML+"</p>"),d=b.cellEditor.textarea.firstChild);null!=d&&d!=b.cellEditor.textarea&& -b.cellEditor.textarea.contains(d)&&(d.style.lineHeight=c+"%");a.value=c+" %"},function(a){ia=a;mxEvent.addListener(a,"mousedown",function(){document.activeElement==b.cellEditor.textarea&&(da=b.cellEditor.saveSelection())});mxEvent.addListener(a,"touchstart",function(){document.activeElement==b.cellEditor.textarea&&(da=b.cellEditor.saveSelection())});a.value="120 %"}));h=e.cloneNode(!1);h.style.paddingLeft="0px";k=this.editorUi.toolbar.addItems(["link","image"],h,!0);g=[this.editorUi.toolbar.addButton("geSprite-horizontalrule", +k.style.paddingBottom="28px";k.style.fontWeight="normal";g=document.createElement("div");g.style.position="absolute";g.style.width="70px";g.style.marginTop="0px";g.style.fontWeight="bold";mxUtils.write(g,mxResources.get("spacing"));k.appendChild(g);var aa,ka,ba,R,la,ca=this.addUnitInput(k,"pt",91,44,function(){aa.apply(this,arguments)}),fa=this.addUnitInput(k,"pt",20,44,function(){ka.apply(this,arguments)});mxUtils.br(k);this.addLabel(k,mxResources.get("top"),91);this.addLabel(k,mxResources.get("global"), +20);mxUtils.br(k);mxUtils.br(k);var ga=this.addUnitInput(k,"pt",162,44,function(){ba.apply(this,arguments)}),Y=this.addUnitInput(k,"pt",91,44,function(){R.apply(this,arguments)}),Z=this.addUnitInput(k,"pt",20,44,function(){la.apply(this,arguments)});mxUtils.br(k);this.addLabel(k,mxResources.get("left"),162);this.addLabel(k,mxResources.get("bottom"),91);this.addLabel(k,mxResources.get("right"),20);if(b.cellEditor.isContentEditing()){var ea=null,ja=null;a.appendChild(this.createRelativeOption(mxResources.get("lineheight"), +null,null,function(a){var c=""==a.value?120:parseInt(a.value),c=Math.max(0,isNaN(c)?120:c);null!=ea&&(b.cellEditor.restoreSelection(ea),ea=null);for(var d=b.getSelectedElement();null!=d&&d.nodeType!=mxConstants.NODETYPE_ELEMENT;)d=d.parentNode;null!=d&&d==b.cellEditor.textarea&&null!=b.cellEditor.textarea.firstChild&&("P"!=b.cellEditor.textarea.firstChild.nodeName&&(b.cellEditor.textarea.innerHTML="<p>"+b.cellEditor.textarea.innerHTML+"</p>"),d=b.cellEditor.textarea.firstChild);null!=d&&d!=b.cellEditor.textarea&& +b.cellEditor.textarea.contains(d)&&(d.style.lineHeight=c+"%");a.value=c+" %"},function(a){ja=a;mxEvent.addListener(a,"mousedown",function(){document.activeElement==b.cellEditor.textarea&&(ea=b.cellEditor.saveSelection())});mxEvent.addListener(a,"touchstart",function(){document.activeElement==b.cellEditor.textarea&&(ea=b.cellEditor.saveSelection())});a.value="120 %"}));h=e.cloneNode(!1);h.style.paddingLeft="0px";k=this.editorUi.toolbar.addItems(["link","image"],h,!0);g=[this.editorUi.toolbar.addButton("geSprite-horizontalrule", mxResources.get("insertHorizontalRule"),function(){document.execCommand("inserthorizontalrule",!1)},h),this.editorUi.toolbar.addMenuFunctionInContainer(h,"geSprite-table",mxResources.get("table"),!1,mxUtils.bind(this,function(a){this.editorUi.menus.addInsertTableItem(a)}))];this.styleButtons(k);this.styleButtons(g);k=this.createPanel();k.style.paddingTop="10px";k.style.paddingBottom="10px";k.appendChild(this.createTitle(mxResources.get("insert")));k.appendChild(h);a.appendChild(k);mxClient.IS_QUIRKS&& (k.style.height="70");k=e.cloneNode(!1);k.style.paddingLeft="0px";g=[this.editorUi.toolbar.addButton("geSprite-insertcolumnbefore",mxResources.get("insertColumnBefore"),mxUtils.bind(this,function(){try{null!=C&&b.selectNode(b.insertColumn(C,null!=M?M.cellIndex:0))}catch(S){this.editorUi.handleError(S)}}),k),this.editorUi.toolbar.addButton("geSprite-insertcolumnafter",mxResources.get("insertColumnAfter"),mxUtils.bind(this,function(){try{null!=C&&b.selectNode(b.insertColumn(C,null!=M?M.cellIndex+1: -1))}catch(S){this.editorUi.handleError(S)}}),k),this.editorUi.toolbar.addButton("geSprite-deletecolumn",mxResources.get("deleteColumn"),mxUtils.bind(this,function(){try{null!=C&&null!=M&&b.deleteColumn(C,M.cellIndex)}catch(S){this.editorUi.handleError(S)}}),k),this.editorUi.toolbar.addButton("geSprite-insertrowbefore",mxResources.get("insertRowBefore"),mxUtils.bind(this,function(){try{null!=C&&null!=L&&b.selectNode(b.insertRow(C,L.sectionRowIndex))}catch(S){this.editorUi.handleError(S)}}),k),this.editorUi.toolbar.addButton("geSprite-insertrowafter", @@ -2796,19 +2798,19 @@ mxResources.get("insertRowAfter"),mxUtils.bind(this,function(){try{null!=C&&null ("0"+Number(d).toString(16)).substr(-2)});this.editorUi.pickColor(a,function(a){null==a||a==mxConstants.NONE?(C.removeAttribute("border"),C.style.border="",C.style.borderCollapse=""):(C.setAttribute("border","1"),C.style.border="1px solid "+a,C.style.borderCollapse="collapse")})}}),e),this.editorUi.toolbar.addButton("geSprite-fillcolor",mxResources.get("backgroundColor"),mxUtils.bind(this,function(){if(null!=C){var a=C.style.backgroundColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g, function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)});this.editorUi.pickColor(a,function(a){C.style.backgroundColor=null==a||a==mxConstants.NONE?"":a})}}),e),this.editorUi.toolbar.addButton("geSprite-fit",mxResources.get("spacing"),function(){if(null!=C){var a=C.getAttribute("cellPadding")||0,a=new FilenameDialog(d,a,mxResources.get("apply"),mxUtils.bind(this,function(a){null!=a&&0<a.length?C.setAttribute("cellPadding", a):C.removeAttribute("cellPadding")}),mxResources.get("spacing"));d.showDialog(a.container,300,80,!0,!0);a.init()}},e),this.editorUi.toolbar.addButton("geSprite-left",mxResources.get("left"),function(){null!=C&&C.setAttribute("align","left")},e),this.editorUi.toolbar.addButton("geSprite-center",mxResources.get("center"),function(){null!=C&&C.setAttribute("align","center")},e),this.editorUi.toolbar.addButton("geSprite-right",mxResources.get("right"),function(){null!=C&&C.setAttribute("align","right")}, -e)];this.styleButtons(g);g[2].style.marginRight="9px";mxClient.IS_QUIRKS&&(mxUtils.br(h),mxUtils.br(h));h.appendChild(e);a.appendChild(h);E=h}else a.appendChild(h),a.appendChild(this.createRelativeOption(mxResources.get("opacity"),mxConstants.STYLE_TEXT_OPACITY)),a.appendChild(k);var V=mxUtils.bind(this,function(a,b,d){f=this.format.getSelectionState();a=mxUtils.getValue(f.style,mxConstants.STYLE_FONTSTYLE,0);c(m[0],(a&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD);c(m[1],(a&mxConstants.FONT_ITALIC)== -mxConstants.FONT_ITALIC);c(m[2],(a&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE);l.firstChild.nodeValue=mxUtils.htmlEntities(mxUtils.getValue(f.style,mxConstants.STYLE_FONTFAMILY,Menus.prototype.defaultFont));c(p,"0"==mxUtils.getValue(f.style,mxConstants.STYLE_HORIZONTAL,"1"));if(d||document.activeElement!=I)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize)),I.value=isNaN(a)?"":a+" pt";a=mxUtils.getValue(f.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER); +e)];this.styleButtons(g);g[2].style.marginRight="9px";mxClient.IS_QUIRKS&&(mxUtils.br(h),mxUtils.br(h));h.appendChild(e);a.appendChild(h);F=h}else a.appendChild(h),a.appendChild(this.createRelativeOption(mxResources.get("opacity"),mxConstants.STYLE_TEXT_OPACITY)),a.appendChild(k);var W=mxUtils.bind(this,function(a,b,d){f=this.format.getSelectionState();a=mxUtils.getValue(f.style,mxConstants.STYLE_FONTSTYLE,0);c(m[0],(a&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD);c(m[1],(a&mxConstants.FONT_ITALIC)== +mxConstants.FONT_ITALIC);c(m[2],(a&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE);l.firstChild.nodeValue=mxUtils.htmlEntities(mxUtils.getValue(f.style,mxConstants.STYLE_FONTFAMILY,Menus.prototype.defaultFont));c(p,"0"==mxUtils.getValue(f.style,mxConstants.STYLE_HORIZONTAL,"1"));if(d||document.activeElement!=H)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize)),H.value=isNaN(a)?"":a+" pt";a=mxUtils.getValue(f.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER); c(u,a==mxConstants.ALIGN_LEFT);c(q,a==mxConstants.ALIGN_CENTER);c(r,a==mxConstants.ALIGN_RIGHT);a=mxUtils.getValue(f.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE);c(w,a==mxConstants.ALIGN_TOP);c(v,a==mxConstants.ALIGN_MIDDLE);c(z,a==mxConstants.ALIGN_BOTTOM);a=mxUtils.getValue(f.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);b=mxUtils.getValue(f.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE);J.value=a==mxConstants.ALIGN_LEFT&&b==mxConstants.ALIGN_TOP? "topLeft":a==mxConstants.ALIGN_CENTER&&b==mxConstants.ALIGN_TOP?"top":a==mxConstants.ALIGN_RIGHT&&b==mxConstants.ALIGN_TOP?"topRight":a==mxConstants.ALIGN_LEFT&&b==mxConstants.ALIGN_BOTTOM?"bottomLeft":a==mxConstants.ALIGN_CENTER&&b==mxConstants.ALIGN_BOTTOM?"bottom":a==mxConstants.ALIGN_RIGHT&&b==mxConstants.ALIGN_BOTTOM?"bottomRight":a==mxConstants.ALIGN_LEFT?"left":a==mxConstants.ALIGN_RIGHT?"right":"center";a=mxUtils.getValue(f.style,mxConstants.STYLE_TEXT_DIRECTION,mxConstants.DEFAULT_TEXT_DIRECTION); -a==mxConstants.TEXT_DIRECTION_RTL?O.value="rightToLeft":a==mxConstants.TEXT_DIRECTION_LTR?O.value="leftToRight":a==mxConstants.TEXT_DIRECTION_AUTO&&(O.value="automatic");if(d||document.activeElement!=ea)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING,2)),ea.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=ca)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_TOP,0)),ca.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=Z)a=parseFloat(mxUtils.getValue(f.style, -mxConstants.STYLE_SPACING_RIGHT,0)),Z.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=Y)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_BOTTOM,0)),Y.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=fa)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_LEFT,0)),fa.value=isNaN(a)?"":a+" pt"});ha=this.installInputHandler(ea,mxConstants.STYLE_SPACING,2,-999,999," pt");aa=this.installInputHandler(ca,mxConstants.STYLE_SPACING_TOP,0,-999,999," pt");ka=this.installInputHandler(Z, -mxConstants.STYLE_SPACING_RIGHT,0,-999,999," pt");R=this.installInputHandler(Y,mxConstants.STYLE_SPACING_BOTTOM,0,-999,999," pt");ba=this.installInputHandler(fa,mxConstants.STYLE_SPACING_LEFT,0,-999,999," pt");this.addKeyHandler(I,V);this.addKeyHandler(ea,V);this.addKeyHandler(ca,V);this.addKeyHandler(Z,V);this.addKeyHandler(Y,V);this.addKeyHandler(fa,V);b.getModel().addListener(mxEvent.CHANGE,V);this.listeners.push({destroy:function(){b.getModel().removeListener(V)}});V();if(b.cellEditor.isContentEditing()){var na= -!1,e=function(){na||(na=!0,window.setTimeout(function(){for(var a=b.getSelectedElement();null!=a&&a.nodeType!=mxConstants.NODETYPE_ELEMENT;)a=a.parentNode;if(null!=a){var d=function(a,b){if(null!=a&&null!=b){if(a==b)return!0;if(a.length>b.length+1)return a.substring(a.length-b.length-1,a.length)=="-"+b}return!1},e=function(c){if(null!=b.getParentByName(a,c,b.cellEditor.textarea))return!0;for(var d=a;null!=d&&1==d.childNodes.length;)if(d=d.childNodes[0],d.nodeName==c)return!0;return!1},g=function(a){a= +a==mxConstants.TEXT_DIRECTION_RTL?O.value="rightToLeft":a==mxConstants.TEXT_DIRECTION_LTR?O.value="leftToRight":a==mxConstants.TEXT_DIRECTION_AUTO&&(O.value="automatic");if(d||document.activeElement!=fa)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING,2)),fa.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=ca)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_TOP,0)),ca.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=Z)a=parseFloat(mxUtils.getValue(f.style, +mxConstants.STYLE_SPACING_RIGHT,0)),Z.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=Y)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_BOTTOM,0)),Y.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=ga)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_LEFT,0)),ga.value=isNaN(a)?"":a+" pt"});ka=this.installInputHandler(fa,mxConstants.STYLE_SPACING,2,-999,999," pt");aa=this.installInputHandler(ca,mxConstants.STYLE_SPACING_TOP,0,-999,999," pt");la=this.installInputHandler(Z, +mxConstants.STYLE_SPACING_RIGHT,0,-999,999," pt");R=this.installInputHandler(Y,mxConstants.STYLE_SPACING_BOTTOM,0,-999,999," pt");ba=this.installInputHandler(ga,mxConstants.STYLE_SPACING_LEFT,0,-999,999," pt");this.addKeyHandler(H,W);this.addKeyHandler(fa,W);this.addKeyHandler(ca,W);this.addKeyHandler(Z,W);this.addKeyHandler(Y,W);this.addKeyHandler(ga,W);b.getModel().addListener(mxEvent.CHANGE,W);this.listeners.push({destroy:function(){b.getModel().removeListener(W)}});W();if(b.cellEditor.isContentEditing()){var ma= +!1,e=function(){ma||(ma=!0,window.setTimeout(function(){for(var a=b.getSelectedElement();null!=a&&a.nodeType!=mxConstants.NODETYPE_ELEMENT;)a=a.parentNode;if(null!=a){var d=function(a,b){if(null!=a&&null!=b){if(a==b)return!0;if(a.length>b.length+1)return a.substring(a.length-b.length-1,a.length)=="-"+b}return!1},e=function(c){if(null!=b.getParentByName(a,c,b.cellEditor.textarea))return!0;for(var d=a;null!=d&&1==d.childNodes.length;)if(d=d.childNodes[0],d.nodeName==c)return!0;return!1},g=function(a){a= null!=a?a.fontSize:null;return null!=a&&"px"==a.substring(a.length-2)?parseFloat(a):mxConstants.DEFAULT_FONTSIZE},f=function(a,b,c){return null!=c.style&&null!=b?(b=b.lineHeight,"%"==c.style.lineHeight.substring(c.style.lineHeight.length-1)?parseInt(c.style.lineHeight)/100:"px"==b.substring(b.length-2)?parseFloat(b)/a:parseInt(b)):""};a==b.cellEditor.textarea&&1==b.cellEditor.textarea.children.length&&b.cellEditor.textarea.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&(a=b.cellEditor.textarea.firstChild); -var h=mxUtils.getCurrentStyle(a),k=g(h),p=f(k,h,a),n=a.getElementsByTagName("*");if(0<n.length&&window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11)for(var t=window.getSelection(),w=0;w<n.length;w++)if(t.containsNode(n[w],!0)){temp=mxUtils.getCurrentStyle(n[w]);var k=Math.max(g(temp),k),v=f(k,temp,n[w]);if(v!=p||isNaN(v))p=""}null!=h&&(c(m[0],"bold"==h.fontWeight||400<h.fontWeight||e("B")||e("STRONG")),c(m[1],"italic"==h.fontStyle||e("I")||e("EM")),c(m[2],e("U")),c(u,d(h.textAlign,"left")),c(q, -d(h.textAlign,"center")),c(r,d(h.textAlign,"right")),c(D,d(h.textAlign,"justify")),c(F,e("SUP")),c(x,e("SUB")),C=b.getParentByName(a,"TABLE",b.cellEditor.textarea),L=null==C?null:b.getParentByName(a,"TR",C),M=null==C?null:b.getParentByName(a,"TD",C),E.style.display=null!=C?"":"none",document.activeElement!=I&&("FONT"==a.nodeName&&"4"==a.getAttribute("size")&&null!=B?(a.removeAttribute("size"),a.style.fontSize=B+" pt",B=null):I.value=isNaN(k)?"":k+" pt",v=parseFloat(p),isNaN(v)?ia.value="100 %":ia.value= -Math.round(100*v)+" %"),d=h.color.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)}),e=h.backgroundColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)}),null!=T&&(U="#"==d.charAt(0)? -d:"#000000",T(U,!0)),null!=H&&(A="#"==e.charAt(0)?e:null,H(A,!0)),null!=l.firstChild&&(h=h.fontFamily,"'"==h.charAt(0)&&(h=h.substring(1)),"'"==h.charAt(h.length-1)&&(h=h.substring(0,h.length-1)),'"'==h.charAt(0)&&(h=h.substring(1)),'"'==h.charAt(h.length-1)&&(h=h.substring(0,h.length-1)),l.firstChild.nodeValue=h))}na=!1},0))};(mxClient.IS_FF||mxClient.IS_EDGE||mxClient.IS_IE||mxClient.IS_IE11)&&mxEvent.addListener(b.cellEditor.textarea,"DOMSubtreeModified",e);mxEvent.addListener(b.cellEditor.textarea, +var h=mxUtils.getCurrentStyle(a),k=g(h),p=f(k,h,a),n=a.getElementsByTagName("*");if(0<n.length&&window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11)for(var t=window.getSelection(),v=0;v<n.length;v++)if(t.containsNode(n[v],!0)){temp=mxUtils.getCurrentStyle(n[v]);var k=Math.max(g(temp),k),w=f(k,temp,n[v]);if(w!=p||isNaN(w))p=""}null!=h&&(c(m[0],"bold"==h.fontWeight||400<h.fontWeight||e("B")||e("STRONG")),c(m[1],"italic"==h.fontStyle||e("I")||e("EM")),c(m[2],e("U")),c(u,d(h.textAlign,"left")),c(q, +d(h.textAlign,"center")),c(r,d(h.textAlign,"right")),c(D,d(h.textAlign,"justify")),c(E,e("SUP")),c(x,e("SUB")),C=b.getParentByName(a,"TABLE",b.cellEditor.textarea),L=null==C?null:b.getParentByName(a,"TR",C),M=null==C?null:b.getParentByName(a,"TD",C),F.style.display=null!=C?"":"none",document.activeElement!=H&&("FONT"==a.nodeName&&"4"==a.getAttribute("size")&&null!=B?(a.removeAttribute("size"),a.style.fontSize=B+" pt",B=null):H.value=isNaN(k)?"":k+" pt",w=parseFloat(p),isNaN(w)?ja.value="100 %":ja.value= +Math.round(100*w)+" %"),d=h.color.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)}),e=h.backgroundColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)}),null!=T&&(U="#"==d.charAt(0)? +d:"#000000",T(U,!0)),null!=I&&(A="#"==e.charAt(0)?e:null,I(A,!0)),null!=l.firstChild&&(h=h.fontFamily,"'"==h.charAt(0)&&(h=h.substring(1)),"'"==h.charAt(h.length-1)&&(h=h.substring(0,h.length-1)),'"'==h.charAt(0)&&(h=h.substring(1)),'"'==h.charAt(h.length-1)&&(h=h.substring(0,h.length-1)),l.firstChild.nodeValue=h))}ma=!1},0))};(mxClient.IS_FF||mxClient.IS_EDGE||mxClient.IS_IE||mxClient.IS_IE11)&&mxEvent.addListener(b.cellEditor.textarea,"DOMSubtreeModified",e);mxEvent.addListener(b.cellEditor.textarea, "input",e);mxEvent.addListener(b.cellEditor.textarea,"touchend",e);mxEvent.addListener(b.cellEditor.textarea,"mouseup",e);mxEvent.addListener(b.cellEditor.textarea,"keyup",e);this.listeners.push({destroy:function(){}});e()}return a};StyleFormatPanel=function(a,c,d){BaseFormatPanel.call(this,a,c,d);this.init()};mxUtils.extend(StyleFormatPanel,BaseFormatPanel);StyleFormatPanel.prototype.defaultStrokeColor="black"; StyleFormatPanel.prototype.init=function(){var a=this.format.getSelectionState();a.containsImage&&1==a.vertices.length&&"image"==a.style.shape&&null!=a.style.image&&"data:image/svg+xml;"==a.style.image.substring(0,19)&&this.container.appendChild(this.addSvgStyles(this.createPanel()));a.containsImage&&"image"!=a.style.shape||this.container.appendChild(this.addFill(this.createPanel()));this.container.appendChild(this.addStroke(this.createPanel()));this.container.appendChild(this.addLineJumps(this.createPanel())); a=this.createRelativeOption(mxResources.get("opacity"),mxConstants.STYLE_OPACITY,41);a.style.paddingTop="8px";a.style.paddingBottom="8px";this.container.appendChild(a);this.container.appendChild(this.addEffects(this.createPanel()));a=this.addEditOps(this.createPanel());null!=a.firstChild&&mxUtils.br(a);this.container.appendChild(this.addStyleOps(a))}; @@ -2841,7 +2843,7 @@ v.style.right="20px",w.style.position="absolute",w.style.right="32px",w.style.he mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["elbowEdgeStyle",null,null,null],"geIcon geSprite geSprite-horizontalelbow",null,!0).setAttribute("title",mxResources.get("simple")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["elbowEdgeStyle","vertical",null,null],"geIcon geSprite geSprite-verticalelbow",null,!0).setAttribute("title",mxResources.get("simple")),this.editorUi.menus.edgeStyleChange(a, "",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["isometricEdgeStyle",null,null,null],"geIcon geSprite geSprite-horizontalisometric",null,!0).setAttribute("title",mxResources.get("isometric")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["isometricEdgeStyle","vertical",null,null],"geIcon geSprite geSprite-verticalisometric",null,!0).setAttribute("title", mxResources.get("isometric")),"connector"==e.style.shape&&this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["orthogonalEdgeStyle","1",null],"geIcon geSprite geSprite-curved",null,!0).setAttribute("title",mxResources.get("curved")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["entityRelationEdgeStyle",null,null],"geIcon geSprite geSprite-entity",null, -!0).setAttribute("title",mxResources.get("entityRelation")))})),F=this.editorUi.toolbar.addMenuFunctionInContainer(k,"geSprite-startclassic",mxResources.get("linestart"),!1,mxUtils.bind(this,function(a){if("connector"==e.style.shape||"flexArrow"==e.style.shape||"filledEdge"==e.style.shape){var b=this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.NONE,0],"geIcon",null,!1);b.setAttribute("title",mxResources.get("none"));b.firstChild.firstChild.innerHTML= +!0).setAttribute("title",mxResources.get("entityRelation")))})),E=this.editorUi.toolbar.addMenuFunctionInContainer(k,"geSprite-startclassic",mxResources.get("linestart"),!1,mxUtils.bind(this,function(a){if("connector"==e.style.shape||"flexArrow"==e.style.shape||"filledEdge"==e.style.shape){var b=this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.NONE,0],"geIcon",null,!1);b.setAttribute("title",mxResources.get("none"));b.firstChild.firstChild.innerHTML= '<font style="font-size:10px;">'+mxUtils.htmlEntities(mxResources.get("none"))+"</font>";"connector"==e.style.shape||"filledEdge"==e.style.shape?(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.ARROW_CLASSIC,1],"geIcon geSprite geSprite-startclassic",null,!1).setAttribute("title",mxResources.get("classic")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.ARROW_CLASSIC_THIN,1],"geIcon geSprite geSprite-startclassicthin", null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.ARROW_OPEN,0],"geIcon geSprite geSprite-startopen",null,!1).setAttribute("title",mxResources.get("openArrow")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.ARROW_OPEN_THIN,0],"geIcon geSprite geSprite-startopenthin",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["openAsync",0],"geIcon geSprite geSprite-startopenasync", null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.ARROW_BLOCK,1],"geIcon geSprite geSprite-startblock",null,!1).setAttribute("title",mxResources.get("block")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.ARROW_BLOCK_THIN,1],"geIcon geSprite geSprite-startblockthin",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["async",1],"geIcon geSprite geSprite-startasync", @@ -2863,21 +2865,21 @@ mxResources.get("classic")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstant 0],"geIcon geSprite geSprite-enddiamondtrans",null,!1).setAttribute("title",mxResources.get("diamond")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_DIAMOND_THIN,0],"geIcon geSprite geSprite-endthindiamondtrans",null,!1).setAttribute("title",mxResources.get("diamondThin")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["dash",0],"geIcon geSprite geSprite-enddash",null,!1),this.editorUi.menus.edgeStyleChange(a, "",[mxConstants.STYLE_ENDARROW,"endFill"],["cross",0],"geIcon geSprite geSprite-endcross",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["circlePlus",0],"geIcon geSprite geSprite-endcircleplus",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["circle",1],"geIcon geSprite geSprite-endcircle",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERone",0],"geIcon geSprite geSprite-enderone", null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERmandOne",0],"geIcon geSprite geSprite-enderonetoone",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERmany",0],"geIcon geSprite geSprite-endermany",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERoneToMany",0],"geIcon geSprite geSprite-enderonetomany",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW, -"endFill"],["ERzeroToOne",1],"geIcon geSprite geSprite-enderoneopt",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERzeroToMany",1],"geIcon geSprite geSprite-endermanyopt",null,!1)):this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],"geIcon geSprite geSprite-endblocktrans",null,!1).setAttribute("title",mxResources.get("block"))}}));this.addArrow(r,8);this.addArrow(x);this.addArrow(F);this.addArrow(D);v=this.addArrow(l, -9);v.className="geIcon";v.style.width="84px";z=this.addArrow(m,9);z.className="geIcon";z.style.width="22px";var E=document.createElement("div");E.style.width="85px";E.style.height="1px";E.style.borderBottom="1px solid "+this.defaultStrokeColor;E.style.marginBottom="9px";v.appendChild(E);var C=document.createElement("div");C.style.width="23px";C.style.height="1px";C.style.borderBottom="1px solid "+this.defaultStrokeColor;C.style.marginBottom="9px";z.appendChild(C);l.style.height="15px";m.style.height= -"15px";r.style.height="15px";x.style.height="17px";F.style.marginLeft="3px";F.style.height="17px";D.style.marginLeft="3px";D.style.height="17px";a.appendChild(h);a.appendChild(q);a.appendChild(n);l=n.cloneNode(!1);l.style.paddingBottom="6px";l.style.paddingTop="4px";l.style.fontWeight="normal";m=document.createElement("div");m.style.position="absolute";m.style.marginLeft="3px";m.style.marginBottom="12px";m.style.marginTop="2px";m.style.fontWeight="normal";m.style.width="76px";mxUtils.write(m,mxResources.get("lineend")); +"endFill"],["ERzeroToOne",1],"geIcon geSprite geSprite-enderoneopt",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERzeroToMany",1],"geIcon geSprite geSprite-endermanyopt",null,!1)):this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],"geIcon geSprite geSprite-endblocktrans",null,!1).setAttribute("title",mxResources.get("block"))}}));this.addArrow(r,8);this.addArrow(x);this.addArrow(E);this.addArrow(D);v=this.addArrow(l, +9);v.className="geIcon";v.style.width="84px";z=this.addArrow(m,9);z.className="geIcon";z.style.width="22px";var F=document.createElement("div");F.style.width="85px";F.style.height="1px";F.style.borderBottom="1px solid "+this.defaultStrokeColor;F.style.marginBottom="9px";v.appendChild(F);var C=document.createElement("div");C.style.width="23px";C.style.height="1px";C.style.borderBottom="1px solid "+this.defaultStrokeColor;C.style.marginBottom="9px";z.appendChild(C);l.style.height="15px";m.style.height= +"15px";r.style.height="15px";x.style.height="17px";E.style.marginLeft="3px";E.style.height="17px";D.style.marginLeft="3px";D.style.height="17px";a.appendChild(h);a.appendChild(q);a.appendChild(n);l=n.cloneNode(!1);l.style.paddingBottom="6px";l.style.paddingTop="4px";l.style.fontWeight="normal";m=document.createElement("div");m.style.position="absolute";m.style.marginLeft="3px";m.style.marginBottom="12px";m.style.marginTop="2px";m.style.fontWeight="normal";m.style.width="76px";mxUtils.write(m,mxResources.get("lineend")); l.appendChild(m);var M,L,J=this.addUnitInput(l,"pt",74,33,function(){M.apply(this,arguments)}),G=this.addUnitInput(l,"pt",20,33,function(){L.apply(this,arguments)});mxUtils.br(l);v=document.createElement("div");v.style.height="8px";l.appendChild(v);m=m.cloneNode(!1);mxUtils.write(m,mxResources.get("linestart"));l.appendChild(m);var K,O,Q=this.addUnitInput(l,"pt",74,33,function(){K.apply(this,arguments)}),P=this.addUnitInput(l,"pt",20,33,function(){O.apply(this,arguments)});mxUtils.br(l);this.addLabel(l, mxResources.get("spacing"),74,50);this.addLabel(l,mxResources.get("size"),20,50);mxUtils.br(l);h=h.cloneNode(!1);h.style.fontWeight="normal";h.style.position="relative";h.style.paddingLeft="16px";h.style.marginBottom="2px";h.style.marginTop="6px";h.style.borderWidth="0px";h.style.paddingBottom="18px";m=document.createElement("div");m.style.position="absolute";m.style.marginLeft="3px";m.style.marginBottom="12px";m.style.marginTop="1px";m.style.fontWeight="normal";m.style.width="120px";mxUtils.write(m, -mxResources.get("perimeter"));h.appendChild(m);var I,B=this.addUnitInput(h,"pt",20,41,function(){I.apply(this,arguments)});e.edges.length==f.getSelectionCount()?(a.appendChild(k),mxClient.IS_QUIRKS&&(mxUtils.br(a),mxUtils.br(a)),a.appendChild(l)):e.vertices.length==f.getSelectionCount()&&(mxClient.IS_QUIRKS&&mxUtils.br(a),a.appendChild(h));var H=mxUtils.bind(this,function(a,c,d){function h(a,c,d,g){d=d.getElementsByTagName("div")[0];d.className=b.getCssClassForMarker(g,e.style.shape,a,c);"geSprite geSprite-noarrow"== +mxResources.get("perimeter"));h.appendChild(m);var H,B=this.addUnitInput(h,"pt",20,41,function(){H.apply(this,arguments)});e.edges.length==f.getSelectionCount()?(a.appendChild(k),mxClient.IS_QUIRKS&&(mxUtils.br(a),mxUtils.br(a)),a.appendChild(l)):e.vertices.length==f.getSelectionCount()&&(mxClient.IS_QUIRKS&&mxUtils.br(a),a.appendChild(h));var I=mxUtils.bind(this,function(a,c,d){function h(a,c,d,g){d=d.getElementsByTagName("div")[0];d.className=b.getCssClassForMarker(g,e.style.shape,a,c);"geSprite geSprite-noarrow"== d.className&&(d.innerHTML=mxUtils.htmlEntities(mxResources.get("none")),d.style.backgroundImage="none",d.style.verticalAlign="top",d.style.marginTop="5px",d.style.fontSize="10px",d.style.filter="none",d.style.color=this.defaultStrokeColor,d.nextSibling.style.marginTop="0px");return d}e=this.format.getSelectionState();mxUtils.getValue(e.style,p,null);if(d||document.activeElement!=t)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)),t.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!= -w)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)),w.value=isNaN(a)?"":a+" pt";g.style.visibility="connector"==e.style.shape||"filledEdge"==e.style.shape?"":"hidden";"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?g.value="curved":"1"==mxUtils.getValue(e.style,mxConstants.STYLE_ROUNDED,null)&&(g.value="rounded");"1"==mxUtils.getValue(e.style,mxConstants.STYLE_DASHED,null)?null==mxUtils.getValue(e.style,mxConstants.STYLE_DASH_PATTERN,null)?E.style.borderBottom="1px dashed "+ -this.defaultStrokeColor:E.style.borderBottom="1px dotted "+this.defaultStrokeColor:E.style.borderBottom="1px solid "+this.defaultStrokeColor;C.style.borderBottom=E.style.borderBottom;a=x.getElementsByTagName("div")[0];c=mxUtils.getValue(e.style,mxConstants.STYLE_EDGE,null);"1"==mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,null)&&(c=null);"orthogonalEdgeStyle"==c&&"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?a.className="geSprite geSprite-curved":a.className="straight"==c|| +w)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)),w.value=isNaN(a)?"":a+" pt";g.style.visibility="connector"==e.style.shape||"filledEdge"==e.style.shape?"":"hidden";"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?g.value="curved":"1"==mxUtils.getValue(e.style,mxConstants.STYLE_ROUNDED,null)&&(g.value="rounded");"1"==mxUtils.getValue(e.style,mxConstants.STYLE_DASHED,null)?null==mxUtils.getValue(e.style,mxConstants.STYLE_DASH_PATTERN,null)?F.style.borderBottom="1px dashed "+ +this.defaultStrokeColor:F.style.borderBottom="1px dotted "+this.defaultStrokeColor:F.style.borderBottom="1px solid "+this.defaultStrokeColor;C.style.borderBottom=F.style.borderBottom;a=x.getElementsByTagName("div")[0];c=mxUtils.getValue(e.style,mxConstants.STYLE_EDGE,null);"1"==mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,null)&&(c=null);"orthogonalEdgeStyle"==c&&"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?a.className="geSprite geSprite-curved":a.className="straight"==c|| "none"==c||null==c?"geSprite geSprite-straight":"entityRelationEdgeStyle"==c?"geSprite geSprite-entity":"elbowEdgeStyle"==c?"geSprite "+("vertical"==mxUtils.getValue(e.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalelbow":"geSprite-horizontalelbow"):"isometricEdgeStyle"==c?"geSprite "+("vertical"==mxUtils.getValue(e.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalisometric":"geSprite-horizontalisometric"):"geSprite geSprite-orthogonal";r.getElementsByTagName("div")[0].className="link"== -e.style.shape?"geSprite geSprite-linkedge":"flexArrow"==e.style.shape?"geSprite geSprite-arrow":"arrow"==e.style.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection";e.edges.length==f.getSelectionCount()?(q.style.display="",n.style.display="none"):(q.style.display="none",n.style.display="");a=h(mxUtils.getValue(e.style,mxConstants.STYLE_STARTARROW,null),mxUtils.getValue(e.style,"startFill","1"),F,"start");c=h(mxUtils.getValue(e.style,mxConstants.STYLE_ENDARROW,null),mxUtils.getValue(e.style, -"endFill","1"),D,"end");"arrow"==e.style.shape?(a.className="geSprite geSprite-noarrow",c.className="geSprite geSprite-endblocktrans"):"link"==e.style.shape&&(a.className="geSprite geSprite-noarrow",c.className="geSprite geSprite-noarrow");mxUtils.setOpacity(x,"arrow"==e.style.shape?30:100);"connector"!=e.style.shape&&"flexArrow"!=e.style.shape&&"filledEdge"!=e.style.shape?(mxUtils.setOpacity(F,30),mxUtils.setOpacity(D,30)):(mxUtils.setOpacity(F,100),mxUtils.setOpacity(D,100));if(d||document.activeElement!= +e.style.shape?"geSprite geSprite-linkedge":"flexArrow"==e.style.shape?"geSprite geSprite-arrow":"arrow"==e.style.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection";e.edges.length==f.getSelectionCount()?(q.style.display="",n.style.display="none"):(q.style.display="none",n.style.display="");a=h(mxUtils.getValue(e.style,mxConstants.STYLE_STARTARROW,null),mxUtils.getValue(e.style,"startFill","1"),E,"start");c=h(mxUtils.getValue(e.style,mxConstants.STYLE_ENDARROW,null),mxUtils.getValue(e.style, +"endFill","1"),D,"end");"arrow"==e.style.shape?(a.className="geSprite geSprite-noarrow",c.className="geSprite geSprite-endblocktrans"):"link"==e.style.shape&&(a.className="geSprite geSprite-noarrow",c.className="geSprite geSprite-noarrow");mxUtils.setOpacity(x,"arrow"==e.style.shape?30:100);"connector"!=e.style.shape&&"flexArrow"!=e.style.shape&&"filledEdge"!=e.style.shape?(mxUtils.setOpacity(E,30),mxUtils.setOpacity(D,30)):(mxUtils.setOpacity(E,100),mxUtils.setOpacity(D,100));if(d||document.activeElement!= P)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)),P.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=Q)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING,0)),Q.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=G)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE)),G.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=Q)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING, 0)),J.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=B)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_PERIMETER_SPACING,0)),B.value=isNaN(a)?"":a+" pt"});O=this.installInputHandler(P,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE,0,999," pt");K=this.installInputHandler(Q,mxConstants.STYLE_SOURCE_PERIMETER_SPACING,0,-999,999," pt");L=this.installInputHandler(G,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE,0,999," pt");M=this.installInputHandler(J,mxConstants.STYLE_TARGET_PERIMETER_SPACING, -0,-999,999," pt");I=this.installInputHandler(B,mxConstants.STYLE_PERIMETER_SPACING,0,0,999," pt");this.addKeyHandler(t,H);this.addKeyHandler(P,H);this.addKeyHandler(Q,H);this.addKeyHandler(G,H);this.addKeyHandler(J,H);this.addKeyHandler(B,H);f.getModel().addListener(mxEvent.CHANGE,H);this.listeners.push({destroy:function(){f.getModel().removeListener(H)}});H();return a}; +0,-999,999," pt");H=this.installInputHandler(B,mxConstants.STYLE_PERIMETER_SPACING,0,0,999," pt");this.addKeyHandler(t,I);this.addKeyHandler(P,I);this.addKeyHandler(Q,I);this.addKeyHandler(G,I);this.addKeyHandler(J,I);this.addKeyHandler(B,I);f.getModel().addListener(mxEvent.CHANGE,I);this.listeners.push({destroy:function(){f.getModel().removeListener(I)}});I();return a}; StyleFormatPanel.prototype.addLineJumps=function(a){var c=this.format.getSelectionState();if(Graph.lineJumpsEnabled&&0<c.edges.length&&0==c.vertices.length&&c.lineJumps){a.style.padding="8px 0px 24px 18px";var d=this.editorUi,b=d.editor.graph,f=document.createElement("div");f.style.position="absolute";f.style.fontWeight="bold";f.style.width="80px";mxUtils.write(f,mxResources.get("lineJumps"));a.appendChild(f);var e=document.createElement("select");e.style.position="absolute";e.style.marginTop="-2px"; e.style.right="76px";e.style.width="62px";for(var f=["none","arc","gap","sharp"],h=0;h<f.length;h++){var g=document.createElement("option");g.setAttribute("value",f[h]);mxUtils.write(g,mxResources.get(f[h]));e.appendChild(g)}mxEvent.addListener(e,"change",function(a){b.getModel().beginUpdate();try{b.setCellStyles("jumpStyle",e.value,b.getSelectionCells()),d.fireEvent(new mxEventObject("styleChanged","keys",["jumpStyle"],"values",[e.value],"cells",b.getSelectionCells()))}finally{b.getModel().endUpdate()}mxEvent.consume(a)}); mxEvent.addListener(e,"click",function(a){mxEvent.consume(a)});a.appendChild(e);var k,l=this.addUnitInput(a,"pt",22,33,function(){k.apply(this,arguments)});k=this.installInputHandler(l,"jumpSize",Graph.defaultJumpSize,0,999," pt");var m=mxUtils.bind(this,function(a,b,d){c=this.format.getSelectionState();e.value=mxUtils.getValue(c.style,"jumpStyle","none");if(d||document.activeElement!=l)a=parseInt(mxUtils.getValue(c.style,"jumpSize",Graph.defaultJumpSize)),l.value=isNaN(a)?"":a+" pt"});this.addKeyHandler(l, @@ -2903,14 +2905,14 @@ function(){b.set(d.pageFormat)});var f=function(){b.set(d.pageFormat)};c.addList DiagramFormatPanel.prototype.addStyleOps=function(a){var c=mxUtils.button(mxResources.get("editData"),mxUtils.bind(this,function(a){this.editorUi.actions.get("editData").funct()}));c.setAttribute("title",mxResources.get("editData")+" ("+this.editorUi.actions.get("editData").shortcut+")");c.style.width="202px";c.style.marginBottom="2px";a.appendChild(c);mxUtils.br(a);c=mxUtils.button(mxResources.get("clearDefaultStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("clearDefaultStyle").funct()})); c.setAttribute("title",mxResources.get("clearDefaultStyle")+" ("+this.editorUi.actions.get("clearDefaultStyle").shortcut+")");c.style.width="202px";a.appendChild(c);return a};DiagramFormatPanel.prototype.destroy=function(){BaseFormatPanel.prototype.destroy.apply(this,arguments);this.gridEnabledListener&&(this.editorUi.removeListener(this.gridEnabledListener),this.gridEnabledListener=null)};(function(){function a(){mxCylinder.call(this)}function c(){mxActor.call(this)}function d(){mxCylinder.call(this)}function b(){mxCylinder.call(this)}function f(){mxCylinder.call(this)}function e(){mxActor.call(this)}function h(){mxCylinder.call(this)}function g(){mxActor.call(this)}function k(){mxActor.call(this)}function l(){mxActor.call(this)}function m(){mxActor.call(this)}function p(){mxActor.call(this)}function n(){mxActor.call(this)}function u(){mxActor.call(this)}function q(a,b){this.canvas= a;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.defaultVariation=b;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,q.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,q.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,q.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,q.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo; -this.canvas.curveTo=mxUtils.bind(this,q.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,q.prototype.arcTo)}function r(){mxRectangleShape.call(this)}function t(){mxRectangleShape.call(this)}function w(){mxActor.call(this)}function v(){mxActor.call(this)}function z(){mxActor.call(this)}function x(){mxRectangleShape.call(this)}function F(){mxRectangleShape.call(this)}function D(){mxCylinder.call(this)}function E(){mxShape.call(this)}function C(){mxShape.call(this)} -function M(){mxEllipse.call(this)}function L(){mxShape.call(this)}function J(){mxShape.call(this)}function G(){mxRectangleShape.call(this)}function K(){mxShape.call(this)}function O(){mxShape.call(this)}function Q(){mxShape.call(this)}function P(){mxShape.call(this)}function I(){mxShape.call(this)}function B(){mxCylinder.call(this)}function H(){mxDoubleEllipse.call(this)}function A(){mxDoubleEllipse.call(this)}function T(){mxArrowConnector.call(this);this.spacing=0}function U(){mxArrowConnector.call(this); -this.spacing=0}function X(){mxActor.call(this)}function W(){mxRectangleShape.call(this)}function aa(){mxActor.call(this)}function ha(){mxActor.call(this)}function ba(){mxActor.call(this)}function R(){mxActor.call(this)}function ka(){mxActor.call(this)}function ca(){mxActor.call(this)}function ea(){mxActor.call(this)}function fa(){mxActor.call(this)}function Y(){mxActor.call(this)}function Z(){mxActor.call(this)}function da(){mxEllipse.call(this)}function ia(){mxEllipse.call(this)}function V(){mxEllipse.call(this)} -function na(){mxRhombus.call(this)}function S(){mxEllipse.call(this)}function Ba(){mxEllipse.call(this)}function Ca(){mxEllipse.call(this)}function ta(){mxEllipse.call(this)}function ua(){mxActor.call(this)}function oa(){mxActor.call(this)}function pa(){mxActor.call(this)}function la(){mxConnector.call(this)}function Fa(a,b,c,d,e,g,f,h,k,l){f+=k;var y=d.clone();d.x-=e*(2*f+k);d.y-=g*(2*f+k);e*=f+k;g*=f+k;return function(){a.ellipse(y.x-e-f,y.y-g-f,2*f,2*f);l?a.fillAndStroke():a.stroke()}}mxUtils.extend(a, +this.canvas.curveTo=mxUtils.bind(this,q.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,q.prototype.arcTo)}function r(){mxRectangleShape.call(this)}function t(){mxRectangleShape.call(this)}function w(){mxActor.call(this)}function v(){mxActor.call(this)}function z(){mxActor.call(this)}function x(){mxRectangleShape.call(this)}function E(){mxRectangleShape.call(this)}function D(){mxCylinder.call(this)}function F(){mxShape.call(this)}function C(){mxShape.call(this)} +function M(){mxEllipse.call(this)}function L(){mxShape.call(this)}function J(){mxShape.call(this)}function G(){mxRectangleShape.call(this)}function K(){mxShape.call(this)}function O(){mxShape.call(this)}function Q(){mxShape.call(this)}function P(){mxShape.call(this)}function H(){mxShape.call(this)}function B(){mxCylinder.call(this)}function I(){mxDoubleEllipse.call(this)}function A(){mxDoubleEllipse.call(this)}function T(){mxArrowConnector.call(this);this.spacing=0}function U(){mxArrowConnector.call(this); +this.spacing=0}function X(){mxActor.call(this)}function V(){mxRectangleShape.call(this)}function aa(){mxActor.call(this)}function ka(){mxActor.call(this)}function ba(){mxActor.call(this)}function R(){mxActor.call(this)}function la(){mxActor.call(this)}function ca(){mxActor.call(this)}function fa(){mxActor.call(this)}function ga(){mxActor.call(this)}function Y(){mxActor.call(this)}function Z(){mxActor.call(this)}function ea(){mxEllipse.call(this)}function ja(){mxEllipse.call(this)}function W(){mxEllipse.call(this)} +function ma(){mxRhombus.call(this)}function S(){mxEllipse.call(this)}function Ba(){mxEllipse.call(this)}function Ca(){mxEllipse.call(this)}function ua(){mxEllipse.call(this)}function ta(){mxActor.call(this)}function pa(){mxActor.call(this)}function qa(){mxActor.call(this)}function na(){mxConnector.call(this)}function Fa(a,b,c,d,e,g,f,h,k,l){f+=k;var y=d.clone();d.x-=e*(2*f+k);d.y-=g*(2*f+k);e*=f+k;g*=f+k;return function(){a.ellipse(y.x-e-f,y.y-g-f,2*f,2*f);l?a.fillAndStroke():a.stroke()}}mxUtils.extend(a, mxCylinder);a.prototype.size=20;a.prototype.darkOpacity=0;a.prototype.darkOpacity2=0;a.prototype.paintVertexShape=function(a,b,c,d,e){var g=Math.max(0,Math.min(d,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),f=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),y=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));a.translate(b,c);a.begin();a.moveTo(0,0);a.lineTo(d-g,0);a.lineTo(d, g);a.lineTo(d,e);a.lineTo(g,e);a.lineTo(0,e-g);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=f&&(a.setFillAlpha(Math.abs(f)),a.setFillColor(0>f?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(d-g,0),a.lineTo(d,g),a.lineTo(g,g),a.close(),a.fill()),0!=y&&(a.setFillAlpha(Math.abs(y)),a.setFillColor(0>y?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(g,g),a.lineTo(g,e),a.lineTo(0,e-g),a.close(),a.fill()),a.begin(),a.moveTo(g,e),a.lineTo(g,g),a.lineTo(0, -0),a.moveTo(g,g),a.lineTo(d,g),a.end(),a.stroke())};a.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?(a=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(a,a,0,0)):null};mxCellRenderer.registerShape("cube",a);var Aa=Math.tan(mxUtils.toRadians(30)),ma=(.5-Aa)/2;mxUtils.extend(c,mxActor);c.prototype.size=20;c.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/Aa);a.translate((d-b)/2,(e-b)/2+b/4);a.moveTo(0,.25*b);a.lineTo(.5* -b,b*ma);a.lineTo(b,.25*b);a.lineTo(.5*b,(.5-ma)*b);a.lineTo(0,.25*b);a.close();a.end()};mxCellRenderer.registerShape("isoRectangle",c);mxUtils.extend(d,mxCylinder);d.prototype.size=20;d.prototype.redrawPath=function(a,b,c,d,e,g){b=Math.min(d,e/(.5+Aa));g?(a.moveTo(0,.25*b),a.lineTo(.5*b,(.5-ma)*b),a.lineTo(b,.25*b),a.moveTo(.5*b,(.5-ma)*b),a.lineTo(.5*b,(1-ma)*b)):(a.translate((d-b)/2,(e-b)/2),a.moveTo(0,.25*b),a.lineTo(.5*b,b*ma),a.lineTo(b,.25*b),a.lineTo(b,.75*b),a.lineTo(.5*b,(1-ma)*b),a.lineTo(0, +0),a.moveTo(g,g),a.lineTo(d,g),a.end(),a.stroke())};a.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?(a=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(a,a,0,0)):null};mxCellRenderer.registerShape("cube",a);var Aa=Math.tan(mxUtils.toRadians(30)),oa=(.5-Aa)/2;mxUtils.extend(c,mxActor);c.prototype.size=20;c.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/Aa);a.translate((d-b)/2,(e-b)/2+b/4);a.moveTo(0,.25*b);a.lineTo(.5* +b,b*oa);a.lineTo(b,.25*b);a.lineTo(.5*b,(.5-oa)*b);a.lineTo(0,.25*b);a.close();a.end()};mxCellRenderer.registerShape("isoRectangle",c);mxUtils.extend(d,mxCylinder);d.prototype.size=20;d.prototype.redrawPath=function(a,b,c,d,e,g){b=Math.min(d,e/(.5+Aa));g?(a.moveTo(0,.25*b),a.lineTo(.5*b,(.5-oa)*b),a.lineTo(b,.25*b),a.moveTo(.5*b,(.5-oa)*b),a.lineTo(.5*b,(1-oa)*b)):(a.translate((d-b)/2,(e-b)/2),a.moveTo(0,.25*b),a.lineTo(.5*b,b*oa),a.lineTo(b,.25*b),a.lineTo(b,.75*b),a.lineTo(.5*b,(1-oa)*b),a.lineTo(0, .75*b),a.close());a.end()};mxCellRenderer.registerShape("isoCube",d);mxUtils.extend(b,mxCylinder);b.prototype.redrawPath=function(a,b,c,d,e,g){b=Math.min(e/2,Math.round(e/8)+this.strokewidth-1);if(g&&null!=this.fill||!g&&null==this.fill)a.moveTo(0,b),a.curveTo(0,2*b,d,2*b,d,b),g||(a.stroke(),a.begin()),a.translate(0,b/2),a.moveTo(0,b),a.curveTo(0,2*b,d,2*b,d,b),g||(a.stroke(),a.begin()),a.translate(0,b/2),a.moveTo(0,b),a.curveTo(0,2*b,d,2*b,d,b),g||(a.stroke(),a.begin()),a.translate(0,-b);g||(a.moveTo(0, b),a.curveTo(0,-b/3,d,-b/3,d,b),a.lineTo(d,e-b),a.curveTo(d,e+b/3,0,e+b/3,0,e-b),a.close())};b.prototype.getLabelMargins=function(a){return new mxRectangle(0,2.5*Math.min(a.height/2,Math.round(a.height/8)+this.strokewidth-1)*this.scale,0,0)};mxCellRenderer.registerShape("datastore",b);mxUtils.extend(f,mxCylinder);f.prototype.size=30;f.prototype.darkOpacity=0;f.prototype.paintVertexShape=function(a,b,c,d,e){var g=Math.max(0,Math.min(d,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))))), f=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));a.translate(b,c);a.begin();a.moveTo(0,0);a.lineTo(d-g,0);a.lineTo(d,g);a.lineTo(d,e);a.lineTo(0,e);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=f&&(a.setFillAlpha(Math.abs(f)),a.setFillColor(0>f?"#FFFFFF":"#000000"),a.begin(),a.moveTo(d-g,0),a.lineTo(d-g,g),a.lineTo(d,g),a.close(),a.fill()),a.begin(),a.moveTo(d-g,0),a.lineTo(d-g,g),a.lineTo(d,g),a.end(),a.stroke())}; @@ -2939,17 +2941,17 @@ this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,e-c),new mxPoi "size",this.fixedSize)))):d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(0,e),new mxPoint(b,e/2)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("step",v);mxUtils.extend(z,mxHexagon);z.prototype.size=.25;z.prototype.isRoundable=function(){return!0};z.prototype.redrawPath= function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,.5*e),new mxPoint(d-b,e),new mxPoint(b,e),new mxPoint(0,.5*e)],this.isRounded,c,!0)};mxCellRenderer.registerShape("hexagon",z);mxUtils.extend(x,mxRectangleShape);x.prototype.isHtmlAllowed=function(){return!1};x.prototype.paintForeground=function(a, b,c,d,e){var g=Math.min(d/5,e/5)+1;a.begin();a.moveTo(b+d/2,c+g);a.lineTo(b+d/2,c+e-g);a.moveTo(b+g,c+e/2);a.lineTo(b+d-g,c+e/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",x);var Ga=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+ -b,a.y+b,a.width-2*b,a.height-2*b)}return a};mxRhombus.prototype.paintVertexShape=function(a,b,c,d,e){Ga.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var g=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=g;c+=g;d-=2*g;e-=2*g;0<d&&0<e&&(a.setShadow(!1),Ga.apply(this,[a,b,c,d,e]))}};mxUtils.extend(F,mxRectangleShape);F.prototype.isHtmlAllowed=function(){return!1};F.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(Math.max(2, -this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};F.prototype.paintForeground=function(a,b,c,d,e){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var g=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=g;c+=g;d-=2*g;e-=2*g;0<d&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var g=0,f;do{f=mxCellRenderer.defaultShapes[this.style["symbol"+ -g]];if(null!=f){var h=this.style["symbol"+g+"Align"],y=this.style["symbol"+g+"VerticalAlign"],k=this.style["symbol"+g+"Width"],l=this.style["symbol"+g+"Height"],va=this.style["symbol"+g+"Spacing"]||0,Da=this.style["symbol"+g+"VSpacing"]||va,m=this.style["symbol"+g+"ArcSpacing"];null!=m&&(m*=this.getArcSize(d+this.strokewidth,e+this.strokewidth),va+=m,Da+=m);var m=b,ra=c,m=h==mxConstants.ALIGN_CENTER?m+(d-k)/2:h==mxConstants.ALIGN_RIGHT?m+(d-k-va):m+va,ra=y==mxConstants.ALIGN_MIDDLE?ra+(e-l)/2:y== -mxConstants.ALIGN_BOTTOM?ra+(e-l-Da):ra+Da;a.save();h=new f;h.style=this.style;f.prototype.paintVertexShape.call(h,a,m,ra,k,l);a.restore()}g++}while(null!=f)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",F);mxUtils.extend(D,mxCylinder);D.prototype.redrawPath=function(a,b,c,d,e,g){g?(a.moveTo(0,0),a.lineTo(d/2,e/2),a.lineTo(d,0),a.end()):(a.moveTo(0,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(0,e),a.close())};mxCellRenderer.registerShape("message", -D);mxUtils.extend(E,mxShape);E.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.ellipse(d/4,0,d/2,e/4);a.fillAndStroke();a.begin();a.moveTo(d/2,e/4);a.lineTo(d/2,2*e/3);a.moveTo(d/2,e/3);a.lineTo(0,e/3);a.moveTo(d/2,e/3);a.lineTo(d,e/3);a.moveTo(d/2,2*e/3);a.lineTo(0,e);a.moveTo(d/2,2*e/3);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlActor",E);mxUtils.extend(C,mxShape);C.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};C.prototype.paintBackground= +b,a.y+b,a.width-2*b,a.height-2*b)}return a};mxRhombus.prototype.paintVertexShape=function(a,b,c,d,e){Ga.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var g=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=g;c+=g;d-=2*g;e-=2*g;0<d&&0<e&&(a.setShadow(!1),Ga.apply(this,[a,b,c,d,e]))}};mxUtils.extend(E,mxRectangleShape);E.prototype.isHtmlAllowed=function(){return!1};E.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(Math.max(2, +this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};E.prototype.paintForeground=function(a,b,c,d,e){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var g=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=g;c+=g;d-=2*g;e-=2*g;0<d&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var g=0,f;do{f=mxCellRenderer.defaultShapes[this.style["symbol"+ +g]];if(null!=f){var h=this.style["symbol"+g+"Align"],y=this.style["symbol"+g+"VerticalAlign"],k=this.style["symbol"+g+"Width"],l=this.style["symbol"+g+"Height"],va=this.style["symbol"+g+"Spacing"]||0,Da=this.style["symbol"+g+"VSpacing"]||va,da=this.style["symbol"+g+"ArcSpacing"];null!=da&&(da*=this.getArcSize(d+this.strokewidth,e+this.strokewidth),va+=da,Da+=da);var da=b,m=c,da=h==mxConstants.ALIGN_CENTER?da+(d-k)/2:h==mxConstants.ALIGN_RIGHT?da+(d-k-va):da+va,m=y==mxConstants.ALIGN_MIDDLE?m+(e-l)/ +2:y==mxConstants.ALIGN_BOTTOM?m+(e-l-Da):m+Da;a.save();h=new f;h.style=this.style;f.prototype.paintVertexShape.call(h,a,da,m,k,l);a.restore()}g++}while(null!=f)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",E);mxUtils.extend(D,mxCylinder);D.prototype.redrawPath=function(a,b,c,d,e,g){g?(a.moveTo(0,0),a.lineTo(d/2,e/2),a.lineTo(d,0),a.end()):(a.moveTo(0,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(0,e),a.close())};mxCellRenderer.registerShape("message", +D);mxUtils.extend(F,mxShape);F.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.ellipse(d/4,0,d/2,e/4);a.fillAndStroke();a.begin();a.moveTo(d/2,e/4);a.lineTo(d/2,2*e/3);a.moveTo(d/2,e/3);a.lineTo(0,e/3);a.moveTo(d/2,e/3);a.lineTo(d,e/3);a.moveTo(d/2,2*e/3);a.lineTo(0,e);a.moveTo(d/2,2*e/3);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlActor",F);mxUtils.extend(C,mxShape);C.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};C.prototype.paintBackground= function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(0,e/4);a.lineTo(0,3*e/4);a.end();a.stroke();a.begin();a.moveTo(0,e/2);a.lineTo(d/6,e/2);a.end();a.stroke();a.ellipse(d/6,0,5*d/6,e);a.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",C);mxUtils.extend(M,mxEllipse);M.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/8,c+e);a.lineTo(b+7*d/8,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("umlEntity", M);mxUtils.extend(L,mxShape);L.prototype.paintVertexShape=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(d,0);a.lineTo(0,e);a.moveTo(0,0);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlDestroy",L);mxUtils.extend(J,mxShape);J.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+a.height/8,a.width,7*a.height/8)};J.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(3*d/8,e/8*1.1);a.lineTo(5*d/8,0);a.end();a.stroke();a.ellipse(0, e/8,d,7*e/8);a.fillAndStroke()};J.prototype.paintForeground=function(a,b,c,d,e){a.begin();a.moveTo(3*d/8,e/8*1.1);a.lineTo(5*d/8,e/4);a.end();a.stroke()};mxCellRenderer.registerShape("umlControl",J);mxUtils.extend(G,mxRectangleShape);G.prototype.size=40;G.prototype.isHtmlAllowed=function(){return!1};G.prototype.getLabelBounds=function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(a.x,a.y,a.width,b)};G.prototype.paintBackground= function(a,b,c,d,e){var g=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),f=mxUtils.getValue(this.style,"participant");null==f||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,a,b,c,d,g):(f=this.state.view.graph.cellRenderer.getShape(f),null!=f&&f!=G&&(f=new f,f.apply(this.state),a.save(),f.paintVertexShape(a,b,c,d,g),a.restore()));g<e&&(a.setDashed(!0),a.begin(),a.moveTo(b+d/2,c+g),a.lineTo(b+d/2,c+e),a.end(),a.stroke())};G.prototype.paintForeground= function(a,b,c,d,e){var g=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,a,b,c,d,Math.min(e,g))};mxCellRenderer.registerShape("umlLifeline",G);mxUtils.extend(K,mxShape);K.prototype.width=60;K.prototype.height=30;K.prototype.corner=10;K.prototype.getLabelMargins=function(a){return new mxRectangle(0,0,a.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),a.height-parseFloat(mxUtils.getValue(this.style, -"height",this.height)*this.scale))};K.prototype.paintBackground=function(a,b,c,d,e){var g=this.corner,f=Math.min(d,Math.max(g,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),h=Math.min(e,Math.max(1.5*g,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),k=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);k!=mxConstants.NONE&&(a.setFillColor(k),a.rect(b,c,d,e),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!= +"height",this.height)*this.scale))};K.prototype.paintBackground=function(a,b,c,d,e){var g=this.corner,f=Math.min(d,Math.max(g,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),h=Math.min(e,Math.max(1.5*g,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),y=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);y!=mxConstants.NONE&&(a.setFillColor(y),a.rect(b,c,d,e),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!= mxConstants.NONE?(this.getGradientBounds(a,b,c,d,e),a.setGradient(this.fill,this.gradient,b,c,d,e,this.gradientDirection)):a.setFillColor(this.fill);a.begin();a.moveTo(b,c);a.lineTo(b+f,c);a.lineTo(b+f,c+Math.max(0,h-1.5*g));a.lineTo(b+Math.max(0,f-g),c+h);a.lineTo(b,c+h);a.close();a.fillAndStroke();a.begin();a.moveTo(b+f,c);a.lineTo(b+d,c);a.lineTo(b+d,c+e);a.lineTo(b,c+e);a.lineTo(b,c+h);a.stroke()};mxCellRenderer.registerShape("umlFrame",K);mxPerimeter.LifelinePerimeter=function(a,b,c,d){d=G.prototype.size; null!=b&&(d=mxUtils.getValue(b.style,"size",d)*b.view.scale);b=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;c.x<a.getCenterX()&&(b=-1*(b+1));return new mxPoint(a.getCenterX()+b,Math.min(a.y+a.height,Math.max(a.y+d,c.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(a,b,c,d){d=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",mxPerimeter.OrthogonalPerimeter); mxPerimeter.BackbonePerimeter=function(a,b,c,d){d=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;null!=b.style.backboneSize&&(d+=parseFloat(b.style.backboneSize)*b.view.scale/2-1);if("south"==b.style[mxConstants.STYLE_DIRECTION]||"north"==b.style[mxConstants.STYLE_DIRECTION])return c.x<a.getCenterX()&&(d=-1*(d+1)),new mxPoint(a.getCenterX()+d,Math.min(a.y+a.height,Math.max(a.y,c.y)));c.y<a.getCenterY()&&(d=-1*(d+1));return new mxPoint(Math.min(a.x+a.width,Math.max(a.x,c.x)), @@ -2964,70 +2966,70 @@ k,h),new mxPoint(f+k,h+y-e),new mxPoint(l,h+y),new mxPoint(f,h+y-e),new mxPoint( mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(e=k*Math.max(0,Math.min(1,e)),f=[new mxPoint(y,f),new mxPoint(g+h,f+e),new mxPoint(g+h,f+k-e),new mxPoint(y,f+k),new mxPoint(g,f+k-e),new mxPoint(g,f+e),new mxPoint(y,f)]):(e=h*Math.max(0,Math.min(1,e)),f=[new mxPoint(g+e,f),new mxPoint(g+h-e,f),new mxPoint(g+h,a),new mxPoint(g+h-e,f+k),new mxPoint(g+e,f+k),new mxPoint(g,a),new mxPoint(g+e,f)]);y=new mxPoint(y,a);d&&(c.x<g||c.x>g+ h?y.y=c.y:y.x=c.x);return mxUtils.getPerimeterPoint(f,y,c)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(O,mxShape);O.prototype.size=10;O.prototype.paintBackground=function(a,b,c,d,e){var g=parseFloat(mxUtils.getValue(this.style,"size",this.size));a.translate(b,c);a.ellipse((d-g)/2,0,g,g);a.fillAndStroke();a.begin();a.moveTo(d/2,g);a.lineTo(d/2,e);a.end();a.stroke()};mxCellRenderer.registerShape("lollipop",O);mxUtils.extend(Q,mxShape);Q.prototype.size= 10;Q.prototype.inset=2;Q.prototype.paintBackground=function(a,b,c,d,e){var g=parseFloat(mxUtils.getValue(this.style,"size",this.size)),f=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(b,c);a.begin();a.moveTo(d/2,g+f);a.lineTo(d/2,e);a.end();a.stroke();a.begin();a.moveTo((d-g)/2-f,g/2);a.quadTo((d-g)/2-f,g+f,d/2,g+f);a.quadTo((d+g)/2+f,g+f,(d+g)/2+f,g/2);a.end();a.stroke()};mxCellRenderer.registerShape("requires",Q);mxUtils.extend(P,mxShape);P.prototype.paintBackground= -function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.end();a.stroke()};mxCellRenderer.registerShape("requiredInterface",P);mxUtils.extend(I,mxShape);I.prototype.inset=2;I.prototype.paintBackground=function(a,b,c,d,e){var g=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(b,c);a.ellipse(0,g,d-2*g,e-2*g);a.fillAndStroke();a.begin();a.moveTo(d/2,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d/2,e);a.end();a.stroke()};mxCellRenderer.registerShape("providedRequiredInterface", -I);mxUtils.extend(B,mxCylinder);B.prototype.jettyWidth=32;B.prototype.jettyHeight=12;B.prototype.redrawPath=function(a,b,c,d,e,g){var f=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));b=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));c=f/2;var f=c+f/2,h=.3*e-b/2,k=.7*e-b/2;g?(a.moveTo(c,h),a.lineTo(f,h),a.lineTo(f,h+b),a.lineTo(c,h+b),a.moveTo(c,k),a.lineTo(f,k),a.lineTo(f,k+b),a.lineTo(c,k+b)):(a.moveTo(c,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(c,e), -a.lineTo(c,k+b),a.lineTo(0,k+b),a.lineTo(0,k),a.lineTo(c,k),a.lineTo(c,h+b),a.lineTo(0,h+b),a.lineTo(0,h),a.lineTo(c,h),a.close());a.end()};mxCellRenderer.registerShape("component",B);mxUtils.extend(H,mxDoubleEllipse);H.prototype.outerStroke=!0;H.prototype.paintVertexShape=function(a,b,c,d,e){var g=Math.min(4,Math.min(d/5,e/5));0<d&&0<e&&(a.ellipse(b+g,c+g,d-2*g,e-2*g),a.fillAndStroke());a.setShadow(!1);this.outerStroke&&(a.ellipse(b,c,d,e),a.stroke())};mxCellRenderer.registerShape("endState",H); -mxUtils.extend(A,H);A.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",A);mxUtils.extend(T,mxArrowConnector);T.prototype.defaultWidth=4;T.prototype.isOpenEnded=function(){return!0};T.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};T.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",T);mxUtils.extend(U,mxArrowConnector);U.prototype.defaultWidth=10;U.prototype.defaultArrowWidth= +function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.end();a.stroke()};mxCellRenderer.registerShape("requiredInterface",P);mxUtils.extend(H,mxShape);H.prototype.inset=2;H.prototype.paintBackground=function(a,b,c,d,e){var g=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(b,c);a.ellipse(0,g,d-2*g,e-2*g);a.fillAndStroke();a.begin();a.moveTo(d/2,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d/2,e);a.end();a.stroke()};mxCellRenderer.registerShape("providedRequiredInterface", +H);mxUtils.extend(B,mxCylinder);B.prototype.jettyWidth=32;B.prototype.jettyHeight=12;B.prototype.redrawPath=function(a,b,c,d,e,g){var f=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));b=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));c=f/2;var f=c+f/2,h=.3*e-b/2,k=.7*e-b/2;g?(a.moveTo(c,h),a.lineTo(f,h),a.lineTo(f,h+b),a.lineTo(c,h+b),a.moveTo(c,k),a.lineTo(f,k),a.lineTo(f,k+b),a.lineTo(c,k+b)):(a.moveTo(c,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(c,e), +a.lineTo(c,k+b),a.lineTo(0,k+b),a.lineTo(0,k),a.lineTo(c,k),a.lineTo(c,h+b),a.lineTo(0,h+b),a.lineTo(0,h),a.lineTo(c,h),a.close());a.end()};mxCellRenderer.registerShape("component",B);mxUtils.extend(I,mxDoubleEllipse);I.prototype.outerStroke=!0;I.prototype.paintVertexShape=function(a,b,c,d,e){var g=Math.min(4,Math.min(d/5,e/5));0<d&&0<e&&(a.ellipse(b+g,c+g,d-2*g,e-2*g),a.fillAndStroke());a.setShadow(!1);this.outerStroke&&(a.ellipse(b,c,d,e),a.stroke())};mxCellRenderer.registerShape("endState",I); +mxUtils.extend(A,I);A.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",A);mxUtils.extend(T,mxArrowConnector);T.prototype.defaultWidth=4;T.prototype.isOpenEnded=function(){return!0};T.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};T.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",T);mxUtils.extend(U,mxArrowConnector);U.prototype.defaultWidth=10;U.prototype.defaultArrowWidth= 20;U.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};U.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};U.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",U);mxUtils.extend(X,mxActor);X.prototype.size=30;X.prototype.isRoundable= -function(){return!0};X.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(0,b),new mxPoint(d,0),new mxPoint(d,e)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("manualInput",X);mxUtils.extend(W,mxRectangleShape);W.prototype.dx=20;W.prototype.dy=20;W.prototype.isHtmlAllowed=function(){return!1}; -W.prototype.paintForeground=function(a,b,c,d,e){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var g=0;if(this.isRounded)var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,g=Math.max(g,Math.min(d*f,e*f));f=Math.max(g,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));g=Math.max(g,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(b,c+g);a.lineTo(b+d,c+g);a.end();a.stroke(); -a.begin();a.moveTo(b+f,c);a.lineTo(b+f,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("internalStorage",W);mxUtils.extend(aa,mxActor);aa.prototype.dx=20;aa.prototype.dy=20;aa.prototype.redrawPath=function(a,b,c,d,e){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE, -mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,c),new mxPoint(b,c),new mxPoint(b,e),new mxPoint(0,e)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("corner",aa);mxUtils.extend(ha,mxActor);ha.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.lineTo(0,e);a.end();a.moveTo(d,0);a.lineTo(d,e);a.end();a.moveTo(0,e/2);a.lineTo(d,e/2);a.end()};mxCellRenderer.registerShape("crossbar",ha);mxUtils.extend(ba,mxActor);ba.prototype.dx=20;ba.prototype.dy= +function(){return!0};X.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(0,b),new mxPoint(d,0),new mxPoint(d,e)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("manualInput",X);mxUtils.extend(V,mxRectangleShape);V.prototype.dx=20;V.prototype.dy=20;V.prototype.isHtmlAllowed=function(){return!1}; +V.prototype.paintForeground=function(a,b,c,d,e){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var g=0;if(this.isRounded)var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,g=Math.max(g,Math.min(d*f,e*f));f=Math.max(g,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));g=Math.max(g,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(b,c+g);a.lineTo(b+d,c+g);a.end();a.stroke(); +a.begin();a.moveTo(b+f,c);a.lineTo(b+f,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("internalStorage",V);mxUtils.extend(aa,mxActor);aa.prototype.dx=20;aa.prototype.dy=20;aa.prototype.redrawPath=function(a,b,c,d,e){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE, +mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,c),new mxPoint(b,c),new mxPoint(b,e),new mxPoint(0,e)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("corner",aa);mxUtils.extend(ka,mxActor);ka.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.lineTo(0,e);a.end();a.moveTo(d,0);a.lineTo(d,e);a.end();a.moveTo(0,e/2);a.lineTo(d,e/2);a.end()};mxCellRenderer.registerShape("crossbar",ka);mxUtils.extend(ba,mxActor);ba.prototype.dx=20;ba.prototype.dy= 20;ba.prototype.redrawPath=function(a,b,c,d,e){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,c),new mxPoint((d+b)/2,c),new mxPoint((d+b)/2,e),new mxPoint((d-b)/2,e),new mxPoint((d- b)/2,c),new mxPoint(0,c)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("tee",ba);mxUtils.extend(R,mxActor);R.prototype.arrowWidth=.3;R.prototype.arrowSize=.2;R.prototype.redrawPath=function(a,b,c,d,e){var g=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth))));b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));c=(e-g)/2;var g=c+g,f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/ -2;this.addPoints(a,[new mxPoint(0,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,g),new mxPoint(0,g)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("singleArrow",R);mxUtils.extend(ka,mxActor);ka.prototype.redrawPath=function(a,b,c,d,e){var g=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",R.prototype.arrowWidth))));b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",R.prototype.arrowSize)))); -c=(e-g)/2;var g=c+g,f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e/2),new mxPoint(b,0),new mxPoint(b,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,g),new mxPoint(b,g),new mxPoint(b,e)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("doubleArrow",ka);mxUtils.extend(ca,mxActor);ca.prototype.size=.1;ca.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style, -"size",this.size))));a.moveTo(b,0);a.lineTo(d,0);a.quadTo(d-2*b,e/2,d,e);a.lineTo(b,e);a.quadTo(b-2*b,e/2,b,0);a.close();a.end()};mxCellRenderer.registerShape("dataStorage",ca);mxUtils.extend(ea,mxActor);ea.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.close();a.end()};mxCellRenderer.registerShape("or",ea);mxUtils.extend(fa,mxActor);fa.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.quadTo(d/2,e/2,0,0); -a.close();a.end()};mxCellRenderer.registerShape("xor",fa);mxUtils.extend(Y,mxActor);Y.prototype.size=20;Y.prototype.isRoundable=function(){return!0};Y.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d/2,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,.8*b),new mxPoint(d,e),new mxPoint(0,e),new mxPoint(0,.8*b)],this.isRounded, +2;this.addPoints(a,[new mxPoint(0,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,g),new mxPoint(0,g)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("singleArrow",R);mxUtils.extend(la,mxActor);la.prototype.redrawPath=function(a,b,c,d,e){var g=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",R.prototype.arrowWidth))));b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",R.prototype.arrowSize)))); +c=(e-g)/2;var g=c+g,f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e/2),new mxPoint(b,0),new mxPoint(b,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,g),new mxPoint(b,g),new mxPoint(b,e)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("doubleArrow",la);mxUtils.extend(ca,mxActor);ca.prototype.size=.1;ca.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style, +"size",this.size))));a.moveTo(b,0);a.lineTo(d,0);a.quadTo(d-2*b,e/2,d,e);a.lineTo(b,e);a.quadTo(b-2*b,e/2,b,0);a.close();a.end()};mxCellRenderer.registerShape("dataStorage",ca);mxUtils.extend(fa,mxActor);fa.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.close();a.end()};mxCellRenderer.registerShape("or",fa);mxUtils.extend(ga,mxActor);ga.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.quadTo(d/2,e/2,0,0); +a.close();a.end()};mxCellRenderer.registerShape("xor",ga);mxUtils.extend(Y,mxActor);Y.prototype.size=20;Y.prototype.isRoundable=function(){return!0};Y.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d/2,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,.8*b),new mxPoint(d,e),new mxPoint(0,e),new mxPoint(0,.8*b)],this.isRounded, c,!0);a.end()};mxCellRenderer.registerShape("loopLimit",Y);mxUtils.extend(Z,mxActor);Z.prototype.size=.375;Z.prototype.isRoundable=function(){return!0};Z.prototype.redrawPath=function(a,b,c,d,e){b=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,e-b),new mxPoint(d/2,e),new mxPoint(0,e-b)],this.isRounded,c,!0);a.end()}; -mxCellRenderer.registerShape("offPageConnector",Z);mxUtils.extend(da,mxEllipse);da.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/2,c+e);a.lineTo(b+d,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("tapeData",da);mxUtils.extend(ia,mxEllipse);ia.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+d,c+e/2); -a.end();a.stroke();a.begin();a.moveTo(b+d/2,c);a.lineTo(b+d/2,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("orEllipse",ia);mxUtils.extend(V,mxEllipse);V.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b+.145*d,c+.145*e);a.lineTo(b+.855*d,c+.855*e);a.end();a.stroke();a.begin();a.moveTo(b+.855*d,c+.145*e);a.lineTo(b+.145*d,c+.855*e);a.end();a.stroke()};mxCellRenderer.registerShape("sumEllipse",V);mxUtils.extend(na, -mxRhombus);na.prototype.paintVertexShape=function(a,b,c,d,e){mxRhombus.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+d,c+e/2);a.end();a.stroke()};mxCellRenderer.registerShape("sortShape",na);mxUtils.extend(S,mxEllipse);S.prototype.paintVertexShape=function(a,b,c,d,e){a.begin();a.moveTo(b,c);a.lineTo(b+d,c);a.lineTo(b+d/2,c+e/2);a.close();a.fillAndStroke();a.begin();a.moveTo(b,c+e);a.lineTo(b+d,c+e);a.lineTo(b+d/2,c+e/2);a.close();a.fillAndStroke()}; +mxCellRenderer.registerShape("offPageConnector",Z);mxUtils.extend(ea,mxEllipse);ea.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/2,c+e);a.lineTo(b+d,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("tapeData",ea);mxUtils.extend(ja,mxEllipse);ja.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+d,c+e/2); +a.end();a.stroke();a.begin();a.moveTo(b+d/2,c);a.lineTo(b+d/2,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("orEllipse",ja);mxUtils.extend(W,mxEllipse);W.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b+.145*d,c+.145*e);a.lineTo(b+.855*d,c+.855*e);a.end();a.stroke();a.begin();a.moveTo(b+.855*d,c+.145*e);a.lineTo(b+.145*d,c+.855*e);a.end();a.stroke()};mxCellRenderer.registerShape("sumEllipse",W);mxUtils.extend(ma, +mxRhombus);ma.prototype.paintVertexShape=function(a,b,c,d,e){mxRhombus.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+d,c+e/2);a.end();a.stroke()};mxCellRenderer.registerShape("sortShape",ma);mxUtils.extend(S,mxEllipse);S.prototype.paintVertexShape=function(a,b,c,d,e){a.begin();a.moveTo(b,c);a.lineTo(b+d,c);a.lineTo(b+d/2,c+e/2);a.close();a.fillAndStroke();a.begin();a.moveTo(b,c+e);a.lineTo(b+d,c+e);a.lineTo(b+d/2,c+e/2);a.close();a.fillAndStroke()}; mxCellRenderer.registerShape("collate",S);mxUtils.extend(Ba,mxEllipse);Ba.prototype.paintVertexShape=function(a,b,c,d,e){var g=c+e-5;a.begin();a.moveTo(b,c);a.lineTo(b,c+e);a.moveTo(b,g);a.lineTo(b+10,g-5);a.moveTo(b,g);a.lineTo(b+10,g+5);a.moveTo(b,g);a.lineTo(b+d,g);a.moveTo(b+d,c);a.lineTo(b+d,c+e);a.moveTo(b+d,g);a.lineTo(b+d-10,g-5);a.moveTo(b+d,g);a.lineTo(b+d-10,g+5);a.end();a.stroke()};mxCellRenderer.registerShape("dimension",Ba);mxUtils.extend(Ca,mxEllipse);Ca.prototype.paintVertexShape= function(a,b,c,d,e){this.outline||a.setStrokeColor(null);mxRectangleShape.prototype.paintBackground.apply(this,arguments);null!=this.style&&(a.setStrokeColor(this.stroke),a.rect(b,c,d,e),a.fill(),a.begin(),a.moveTo(b,c),"1"==mxUtils.getValue(this.style,"top","1")?a.lineTo(b+d,c):a.moveTo(b+d,c),"1"==mxUtils.getValue(this.style,"right","1")?a.lineTo(b+d,c+e):a.moveTo(b+d,c+e),"1"==mxUtils.getValue(this.style,"bottom","1")?a.lineTo(b,c+e):a.moveTo(b,c+e),"1"==mxUtils.getValue(this.style,"left","1")&& -a.lineTo(b,c-this.strokewidth/2),a.end(),a.stroke())};mxCellRenderer.registerShape("partialRectangle",Ca);mxUtils.extend(ta,mxEllipse);ta.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();"vertical"==mxUtils.getValue(this.style,"line")?(a.moveTo(b+d/2,c),a.lineTo(b+d/2,c+e)):(a.moveTo(b,c+e/2),a.lineTo(b+d,c+e/2));a.end();a.stroke()};mxCellRenderer.registerShape("lineEllipse",ta);mxUtils.extend(ua,mxActor);ua.prototype.redrawPath= -function(a,b,c,d,e){b=Math.min(d,e/2);a.moveTo(0,0);a.lineTo(d-b,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(0,e);a.close();a.end()};mxCellRenderer.registerShape("delay",ua);mxUtils.extend(oa,mxActor);oa.prototype.size=.2;oa.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,d);var g=Math.max(0,Math.min(b,b*parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=(e-g)/2;c=b+g;var f=(d-g)/2,g=f+g;a.moveTo(0,b);a.lineTo(f,b);a.lineTo(f,0);a.lineTo(g,0);a.lineTo(g,b);a.lineTo(d,b);a.lineTo(d, -c);a.lineTo(g,c);a.lineTo(g,e);a.lineTo(f,e);a.lineTo(f,c);a.lineTo(0,c);a.close();a.end()};mxCellRenderer.registerShape("cross",oa);mxUtils.extend(pa,mxActor);pa.prototype.size=.25;pa.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/2);c=Math.min(d-b,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*d);a.moveTo(0,e/2);a.lineTo(c,0);a.lineTo(d-b,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(c,e);a.close();a.end()};mxCellRenderer.registerShape("display",pa);mxUtils.extend(la, -mxConnector);la.prototype.origPaintEdgeShape=la.prototype.paintEdgeShape;la.prototype.paintEdgeShape=function(a,b,c){for(var d=[],e=0;e<b.length;e++)d.push(mxUtils.clone(b[e]));var e=a.state.dashed,g=a.state.fixDash;la.prototype.origPaintEdgeShape.apply(this,[a,d,c]);3<=a.state.strokeWidth&&(d=mxUtils.getValue(this.style,"fillColor",null),null!=d&&(a.setStrokeColor(d),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(e,g),la.prototype.origPaintEdgeShape.apply(this,[a,b,c])))};mxCellRenderer.registerShape("filledEdge", -la);"undefined"!==typeof StyleFormatPanel&&function(){var a=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var b=this.format.getSelectionState(),c=a.apply(this,arguments);"umlFrame"==b.style.shape&&c.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});return c}}();mxMarker.addMarker("dash",function(a,b,c,d,e,g,f,h,k,l){var m=e*(f+k+1),y=g*(f+k+1);return function(){a.begin();a.moveTo(d.x-m/2-y/2,d.y-y/2+m/2);a.lineTo(d.x+ -y/2-3*m/2,d.y-3*y/2-m/2);a.stroke()}});mxMarker.addMarker("cross",function(a,b,c,d,e,g,f,h,k,l){var m=e*(f+k+1),y=g*(f+k+1);return function(){a.begin();a.moveTo(d.x-m/2-y/2,d.y-y/2+m/2);a.lineTo(d.x+y/2-3*m/2,d.y-3*y/2-m/2);a.moveTo(d.x-m/2+y/2,d.y-y/2-m/2);a.lineTo(d.x-y/2-3*m/2,d.y-3*y/2+m/2);a.stroke()}});mxMarker.addMarker("circle",Fa);mxMarker.addMarker("circlePlus",function(a,b,c,d,e,g,f,h,k,l){var m=d.clone(),y=Fa.apply(this,arguments),p=e*(f+2*k),n=g*(f+2*k);return function(){y.apply(this, -arguments);a.begin();a.moveTo(m.x-e*k,m.y-g*k);a.lineTo(m.x-2*p+e*k,m.y-2*n+g*k);a.moveTo(m.x-p-n+g*k,m.y-n+p-e*k);a.lineTo(m.x+n-p-g*k,m.y-n-p+e*k);a.stroke()}});mxMarker.addMarker("async",function(a,b,c,d,e,g,f,h,k,l){b=e*k*1.118;c=g*k*1.118;e*=f+k;g*=f+k;var m=d.clone();m.x-=b;m.y-=c;d.x+=1*-e-b;d.y+=1*-g-c;return function(){a.begin();a.moveTo(m.x,m.y);h?a.lineTo(m.x-e-g/2,m.y-g+e/2):a.lineTo(m.x+g/2-e,m.y-g-e/2);a.lineTo(m.x-e,m.y-g);a.close();l?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync", -function(a){a=null!=a?a:2;return function(b,c,d,e,g,f,h,k,l,m){g*=h+l;f*=h+l;var y=e.clone();return function(){b.begin();b.moveTo(y.x,y.y);k?b.lineTo(y.x-g-f/a,y.y-f+g/a):b.lineTo(y.x+f/a-g,y.y-f-g/a);b.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Ha=function(a,b,c){return qa(a,["width"],b,function(b,d,e,g,f){f=a.shape.getEdgeWidth()*a.view.scale+c;return new mxPoint(g.x+d*b/4+e*f/2,g.y+e*b/4-d*f/2)},function(b,d,e,g,f,h){b=Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,f.x,f.y,h.x,h.y));a.style.width= -Math.round(2*b)/a.view.scale-c})},qa=function(a,b,c,d,e){return N(a,b,function(b){var e=a.absolutePoints,g=e.length-1;b=a.view.translate;var f=a.view.scale,h=c?e[0]:e[g],e=c?e[1]:e[g-1],g=e.x-h.x,k=e.y-h.y,l=Math.sqrt(g*g+k*k),h=d.call(this,l,g/l,k/l,h,e);return new mxPoint(h.x/f-b.x,h.y/f-b.y)},function(b,d,g){var f=a.absolutePoints,h=f.length-1;b=a.view.translate;var k=a.view.scale,l=c?f[0]:f[h],f=c?f[1]:f[h-1],h=f.x-l.x,m=f.y-l.y,y=Math.sqrt(h*h+m*m);d.x=(d.x+b.x)*k;d.y=(d.y+b.y)*k;e.call(this, -y,h/y,m/y,l,f,d,g)})},ja=function(a){return function(b){return[N(b,["arrowWidth","arrowSize"],function(b){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",R.prototype.arrowWidth))),d=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",R.prototype.arrowSize)));return new mxPoint(b.x+(1-d)*b.width,b.y+(1-c)*b.height/2)},function(b,c){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(b.y+b.height/2-c.y)/b.height*2));this.state.style.arrowSize=Math.max(0, -Math.min(a,(b.x+b.width-c.x)/b.width))})]}},Ea=function(a,b,c){return function(d){var e=[N(d,["size"],function(c){var d=Math.max(0,Math.min(c.width,Math.min(c.height,parseFloat(mxUtils.getValue(this.state.style,"size",b)))))*a;return new mxPoint(c.x+d,c.y+d)},function(b,c){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,c.x-b.x),Math.min(b.height,c.y-b.y)))/a)})];c&&mxUtils.getValue(d.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(ga(d));return e}},wa=function(a,b,c,d,e){c=null!= +a.lineTo(b,c-this.strokewidth/2),a.end(),a.stroke())};mxCellRenderer.registerShape("partialRectangle",Ca);mxUtils.extend(ua,mxEllipse);ua.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();"vertical"==mxUtils.getValue(this.style,"line")?(a.moveTo(b+d/2,c),a.lineTo(b+d/2,c+e)):(a.moveTo(b,c+e/2),a.lineTo(b+d,c+e/2));a.end();a.stroke()};mxCellRenderer.registerShape("lineEllipse",ua);mxUtils.extend(ta,mxActor);ta.prototype.redrawPath= +function(a,b,c,d,e){b=Math.min(d,e/2);a.moveTo(0,0);a.lineTo(d-b,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(0,e);a.close();a.end()};mxCellRenderer.registerShape("delay",ta);mxUtils.extend(pa,mxActor);pa.prototype.size=.2;pa.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,d);var g=Math.max(0,Math.min(b,b*parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=(e-g)/2;c=b+g;var f=(d-g)/2,g=f+g;a.moveTo(0,b);a.lineTo(f,b);a.lineTo(f,0);a.lineTo(g,0);a.lineTo(g,b);a.lineTo(d,b);a.lineTo(d, +c);a.lineTo(g,c);a.lineTo(g,e);a.lineTo(f,e);a.lineTo(f,c);a.lineTo(0,c);a.close();a.end()};mxCellRenderer.registerShape("cross",pa);mxUtils.extend(qa,mxActor);qa.prototype.size=.25;qa.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/2);c=Math.min(d-b,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*d);a.moveTo(0,e/2);a.lineTo(c,0);a.lineTo(d-b,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(c,e);a.close();a.end()};mxCellRenderer.registerShape("display",qa);mxUtils.extend(na, +mxConnector);na.prototype.origPaintEdgeShape=na.prototype.paintEdgeShape;na.prototype.paintEdgeShape=function(a,b,c){for(var d=[],e=0;e<b.length;e++)d.push(mxUtils.clone(b[e]));var e=a.state.dashed,g=a.state.fixDash;na.prototype.origPaintEdgeShape.apply(this,[a,d,c]);3<=a.state.strokeWidth&&(d=mxUtils.getValue(this.style,"fillColor",null),null!=d&&(a.setStrokeColor(d),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(e,g),na.prototype.origPaintEdgeShape.apply(this,[a,b,c])))};mxCellRenderer.registerShape("filledEdge", +na);"undefined"!==typeof StyleFormatPanel&&function(){var a=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var b=this.format.getSelectionState(),c=a.apply(this,arguments);"umlFrame"==b.style.shape&&c.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});return c}}();mxMarker.addMarker("dash",function(a,b,c,d,e,g,f,h,k,l){var y=e*(f+k+1),m=g*(f+k+1);return function(){a.begin();a.moveTo(d.x-y/2-m/2,d.y-m/2+y/2);a.lineTo(d.x+ +m/2-3*y/2,d.y-3*m/2-y/2);a.stroke()}});mxMarker.addMarker("cross",function(a,b,c,d,e,g,f,h,k,l){var y=e*(f+k+1),m=g*(f+k+1);return function(){a.begin();a.moveTo(d.x-y/2-m/2,d.y-m/2+y/2);a.lineTo(d.x+m/2-3*y/2,d.y-3*m/2-y/2);a.moveTo(d.x-y/2+m/2,d.y-m/2-y/2);a.lineTo(d.x-m/2-3*y/2,d.y-3*m/2+y/2);a.stroke()}});mxMarker.addMarker("circle",Fa);mxMarker.addMarker("circlePlus",function(a,b,c,d,e,g,f,h,k,l){var y=d.clone(),m=Fa.apply(this,arguments),p=e*(f+2*k),n=g*(f+2*k);return function(){m.apply(this, +arguments);a.begin();a.moveTo(y.x-e*k,y.y-g*k);a.lineTo(y.x-2*p+e*k,y.y-2*n+g*k);a.moveTo(y.x-p-n+g*k,y.y-n+p-e*k);a.lineTo(y.x+n-p-g*k,y.y-n-p+e*k);a.stroke()}});mxMarker.addMarker("async",function(a,b,c,d,e,g,f,h,k,l){b=e*k*1.118;c=g*k*1.118;e*=f+k;g*=f+k;var y=d.clone();y.x-=b;y.y-=c;d.x+=1*-e-b;d.y+=1*-g-c;return function(){a.begin();a.moveTo(y.x,y.y);h?a.lineTo(y.x-e-g/2,y.y-g+e/2):a.lineTo(y.x+g/2-e,y.y-g-e/2);a.lineTo(y.x-e,y.y-g);a.close();l?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync", +function(a){a=null!=a?a:2;return function(b,c,d,e,g,f,h,k,l,y){g*=h+l;f*=h+l;var m=e.clone();return function(){b.begin();b.moveTo(m.x,m.y);k?b.lineTo(m.x-g-f/a,m.y-f+g/a):b.lineTo(m.x+f/a-g,m.y-f-g/a);b.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Ha=function(a,b,c){return ra(a,["width"],b,function(b,d,e,g,f){f=a.shape.getEdgeWidth()*a.view.scale+c;return new mxPoint(g.x+d*b/4+e*f/2,g.y+e*b/4-d*f/2)},function(b,d,e,g,f,h){b=Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,f.x,f.y,h.x,h.y));a.style.width= +Math.round(2*b)/a.view.scale-c})},ra=function(a,b,c,d,e){return N(a,b,function(b){var e=a.absolutePoints,g=e.length-1;b=a.view.translate;var f=a.view.scale,h=c?e[0]:e[g],e=c?e[1]:e[g-1],g=e.x-h.x,k=e.y-h.y,l=Math.sqrt(g*g+k*k),h=d.call(this,l,g/l,k/l,h,e);return new mxPoint(h.x/f-b.x,h.y/f-b.y)},function(b,d,g){var f=a.absolutePoints,h=f.length-1;b=a.view.translate;var k=a.view.scale,l=c?f[0]:f[h],f=c?f[1]:f[h-1],h=f.x-l.x,m=f.y-l.y,y=Math.sqrt(h*h+m*m);d.x=(d.x+b.x)*k;d.y=(d.y+b.y)*k;e.call(this, +y,h/y,m/y,l,f,d,g)})},ha=function(a){return function(b){return[N(b,["arrowWidth","arrowSize"],function(b){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",R.prototype.arrowWidth))),d=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",R.prototype.arrowSize)));return new mxPoint(b.x+(1-d)*b.width,b.y+(1-c)*b.height/2)},function(b,c){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(b.y+b.height/2-c.y)/b.height*2));this.state.style.arrowSize=Math.max(0, +Math.min(a,(b.x+b.width-c.x)/b.width))})]}},Ea=function(a,b,c){return function(d){var e=[N(d,["size"],function(c){var d=Math.max(0,Math.min(c.width,Math.min(c.height,parseFloat(mxUtils.getValue(this.state.style,"size",b)))))*a;return new mxPoint(c.x+d,c.y+d)},function(b,c){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,c.x-b.x),Math.min(b.height,c.y-b.y)))/a)})];c&&mxUtils.getValue(d.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(ia(d));return e}},wa=function(a,b,c,d,e){c=null!= c?c:1;return function(g){var f=[N(g,["size"],function(b){var c=null!=e?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,d=parseFloat(mxUtils.getValue(this.state.style,"size",c?e:a));return new mxPoint(b.x+Math.max(0,Math.min(b.width,d*(c?1:b.width))),b.getCenterY())},function(a,b,d){var f=null!=e?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null;a=f?b.x-a.x:Math.max(0,Math.min(c,(b.x-a.x)/a.width));f&&!mxEvent.isAltDown(d.getEvent())&&(a=g.view.graph.snap(a));this.state.style.size= -a},null,d)];b&&mxUtils.getValue(g.style,mxConstants.STYLE_ROUNDED,!1)&&f.push(ga(g));return f}},Ia=function(a){return function(b){var c=[N(b,["size"],function(b){var c=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.state.style,"size",p.prototype.size))));return new mxPoint(b.x+c*b.width*.75,b.y+b.height/4)},function(b,c){this.state.style.size=Math.max(0,Math.min(a,(c.x-b.x)/(.75*b.width)))},null,!0)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&c.push(ga(b));return c}},sa=function(){return function(a){var b= -[];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b}},ga=function(a,b){return N(a,[mxConstants.STYLE_ARCSIZE],function(c){var d=null!=b?b:c.height/8;if("1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var e=mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(c.x+c.width-Math.min(c.width/2,e),c.y+d)}e=Math.max(0,parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/ +a},null,d)];b&&mxUtils.getValue(g.style,mxConstants.STYLE_ROUNDED,!1)&&f.push(ia(g));return f}},Ia=function(a){return function(b){var c=[N(b,["size"],function(b){var c=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.state.style,"size",p.prototype.size))));return new mxPoint(b.x+c*b.width*.75,b.y+b.height/4)},function(b,c){this.state.style.size=Math.max(0,Math.min(a,(c.x-b.x)/(.75*b.width)))},null,!0)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&c.push(ia(b));return c}},sa=function(){return function(a){var b= +[];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ia(a));return b}},ia=function(a,b){return N(a,[mxConstants.STYLE_ARCSIZE],function(c){var d=null!=b?b:c.height/8;if("1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var e=mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(c.x+c.width-Math.min(c.width/2,e),c.y+d)}e=Math.max(0,parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/ 100;return new mxPoint(c.x+c.width-Math.min(Math.max(c.width/2,c.height/2),Math.min(c.width,c.height)*e),c.y+d)},function(b,c,d){"1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(b.width,2*(b.x+b.width-c.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(b.width-c.x+b.x)/Math.min(b.width,b.height))))})},N=function(a,b,c,d,e,g){var f=new mxHandle(a,null,mxVertexHandler.prototype.secondaryHandleImage); -f.execute=function(){for(var a=0;a<b.length;a++)this.copyStyle(b[a])};f.getPosition=c;f.setPosition=d;f.ignoreGrid=null!=e?e:!0;if(g){var h=f.positionChanged;f.positionChanged=function(){h.apply(this,arguments);a.view.invalidate(this.state.cell);a.view.validate()}}return f},xa={link:function(a){return[Ha(a,!0,10),Ha(a,!1,10)]},flexArrow:function(a){var b=a.view.graph.gridSize/a.view.scale,c=[];mxUtils.getValue(a.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(qa(a, +f.execute=function(){for(var a=0;a<b.length;a++)this.copyStyle(b[a])};f.getPosition=c;f.setPosition=d;f.ignoreGrid=null!=e?e:!0;if(g){var h=f.positionChanged;f.positionChanged=function(){h.apply(this,arguments);a.view.invalidate(this.state.cell);a.view.validate()}}return f},xa={link:function(a){return[Ha(a,!0,10),Ha(a,!1,10)]},flexArrow:function(a){var b=a.view.graph.gridSize/a.view.scale,c=[];mxUtils.getValue(a.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(ra(a, ["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(b,c,d,e,g){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;g=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(g+a.shape.strokewidth*a.view.scale)+d*b/2,e.y+d*(g+a.shape.strokewidth*a.view.scale)-c*b/2)},function(c,d,e,g,f,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,f.x,f.y,h.x,h.y));d=mxUtils.ptLineDist(g.x,g.y,g.x+e,g.y-d,h.x,h.y);a.style[mxConstants.STYLE_STARTSIZE]= -Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*c)/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE])})),c.push(qa(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE], +Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*c)/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE])})),c.push(ra(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE], !0,function(b,c,d,e,g){b=(a.shape.getStartArrowWidth()-a.shape.strokewidth)*a.view.scale;g=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(g+a.shape.strokewidth*a.view.scale)+d*b/2,e.y+d*(g+a.shape.strokewidth*a.view.scale)-c*b/2)},function(c,d,e,g,f,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,f.x,f.y,h.x,h.y));d=mxUtils.ptLineDist(g.x,g.y,g.x+e,g.y-d,h.x,h.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(d-a.shape.strokewidth)/ 3)/100/a.view.scale;a.style.startWidth=Math.max(0,Math.round(2*c)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE],a.style.endWidth=a.style.startWidth);mxEvent.isAltDown(k.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(a.style.startWidth)- -parseFloat(a.style.endWidth))<b&&(a.style.startWidth=a.style.endWidth))})));mxUtils.getValue(a.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(qa(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,g){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;g=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(g+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(g+a.shape.strokewidth* +parseFloat(a.style.endWidth))<b&&(a.style.startWidth=a.style.endWidth))})));mxUtils.getValue(a.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(ra(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,g){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;g=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(g+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(g+a.shape.strokewidth* a.view.scale)+c*b/2)},function(c,d,e,g,f,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,f.x,f.y,h.x,h.y));d=mxUtils.ptLineDist(g.x,g.y,g.x+e,g.y-d,h.x,h.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*c)/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))< -b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE])})),c.push(qa(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,g){b=(a.shape.getEndArrowWidth()-a.shape.strokewidth)*a.view.scale;g=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(g+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(g+a.shape.strokewidth*a.view.scale)+c*b/2)},function(c,d,e,g,f,h,k){c= +b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE])})),c.push(ra(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,g){b=(a.shape.getEndArrowWidth()-a.shape.strokewidth)*a.view.scale;g=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(g+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(g+a.shape.strokewidth*a.view.scale)+c*b/2)},function(c,d,e,g,f,h,k){c= Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,f.x,f.y,h.x,h.y));d=mxUtils.ptLineDist(g.x,g.y,g.x+e,g.y-d,h.x,h.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.endWidth=Math.max(0,Math.round(2*c)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE],a.style.startWidth=a.style.endWidth);mxEvent.isAltDown(k.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])- parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(a.style.endWidth)-parseFloat(a.style.startWidth))<b&&(a.style.endWidth=a.style.startWidth))})));return c},swimlane:function(a){var b=[N(a,[mxConstants.STYLE_STARTSIZE],function(b){var c=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(b.getCenterX(), -b.y+Math.max(0,Math.min(b.height,c))):new mxPoint(b.x+Math.max(0,Math.min(b.width,c)),b.getCenterY())},function(b,c){a.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(b.height,c.y-b.y))):Math.round(Math.max(0,Math.min(b.width,c.x-b.x)))})];if(mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED)){var c=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));b.push(ga(a,c/2))}return b}, +b.y+Math.max(0,Math.min(b.height,c))):new mxPoint(b.x+Math.max(0,Math.min(b.width,c)),b.getCenterY())},function(b,c){a.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(b.height,c.y-b.y))):Math.round(Math.max(0,Math.min(b.width,c.x-b.x)))})];if(mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED)){var c=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));b.push(ia(a,c/2))}return b}, label:sa(),ext:sa(),rectangle:sa(),triangle:sa(),rhombus:sa(),umlLifeline:function(a){return[N(a,["size"],function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",G.prototype.size))));return new mxPoint(a.getCenterX(),a.y+b)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},umlFrame:function(a){return[N(a,["width","height"],function(a){var b=Math.max(K.prototype.corner,Math.min(a.width,mxUtils.getValue(this.state.style, "width",K.prototype.width))),c=Math.max(1.5*K.prototype.corner,Math.min(a.height,mxUtils.getValue(this.state.style,"height",K.prototype.height)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.width=Math.round(Math.max(K.prototype.corner,Math.min(a.width,b.x-a.x)));this.state.style.height=Math.round(Math.max(1.5*K.prototype.corner,Math.min(a.height,b.y-a.y)))},!1)]},process:function(a){var b=[N(a,["size"],function(a){var b=Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.state.style, -"size",r.prototype.size))));return new mxPoint(a.x+a.width*b,a.y+a.height/4)},function(a,b){this.state.style.size=Math.max(0,Math.min(.5,(b.x-a.x)/a.width))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b},cross:function(a){return[N(a,["size"],function(a){var b=Math.min(a.width,a.height),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",oa.prototype.size)))*b/2;return new mxPoint(a.getCenterX()-b,a.getCenterY()-b)},function(a,b){var c=Math.min(a.width, +"size",r.prototype.size))));return new mxPoint(a.x+a.width*b,a.y+a.height/4)},function(a,b){this.state.style.size=Math.max(0,Math.min(.5,(b.x-a.x)/a.width))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ia(a));return b},cross:function(a){return[N(a,["size"],function(a){var b=Math.min(a.width,a.height),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",pa.prototype.size)))*b/2;return new mxPoint(a.getCenterX()-b,a.getCenterY()-b)},function(a,b){var c=Math.min(a.width, a.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,a.getCenterY()-b.y)/c*2,Math.max(0,a.getCenterX()-b.x)/c*2)))})]},note:function(a){return[N(a,["size"],function(a){var b=Math.max(0,Math.min(a.width,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",f.prototype.size)))));return new mxPoint(a.x+a.width-b,a.y+b)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(a.width,a.x+a.width-b.x),Math.min(a.height,b.y-a.y))))})]},manualInput:function(a){var b= -[N(a,["size"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",X.prototype.size)));return new mxPoint(a.x+a.width/4,a.y+3*b/4)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,4*(b.y-a.y)/3)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b},dataStorage:function(a){return[N(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ca.prototype.size)))); +[N(a,["size"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",X.prototype.size)));return new mxPoint(a.x+a.width/4,a.y+3*b/4)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,4*(b.y-a.y)/3)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ia(a));return b},dataStorage:function(a){return[N(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ca.prototype.size)))); return new mxPoint(a.x+(1-b)*a.width,a.getCenterY())},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.x+a.width-b.x)/a.width))})]},callout:function(a){var b=[N(a,["size","position"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",w.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",w.prototype.position)));mxUtils.getValue(this.state.style,"base",w.prototype.base);return new mxPoint(a.x+c*a.width,a.y+a.height- b)},function(a,b){mxUtils.getValue(this.state.style,"base",w.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(a.height,a.y+a.height-b.y)));this.state.style.position=Math.round(100*Math.max(0,Math.min(1,(b.x-a.x)/a.width)))/100}),N(a,["position2"],function(a){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",w.prototype.position2)));return new mxPoint(a.x+b*a.width,a.y+a.height)},function(a,b){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1, (b.x-a.x)/a.width)))/100}),N(a,["base"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",w.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",w.prototype.position))),d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"base",w.prototype.base)));return new mxPoint(a.x+Math.min(a.width,c*a.width+d),a.y+a.height-b)},function(a,b){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",w.prototype.position))); -this.state.style.base=Math.round(Math.max(0,Math.min(a.width,b.x-a.x-c*a.width)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b},internalStorage:function(a){var b=[N(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",W.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",W.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width, -b.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ga(a));return b},corner:function(a){return[N(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",aa.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",aa.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width, +this.state.style.base=Math.round(Math.max(0,Math.min(a.width,b.x-a.x-c*a.width)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ia(a));return b},internalStorage:function(a){var b=[N(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",V.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",V.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width, +b.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ia(a));return b},corner:function(a){return[N(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",aa.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",aa.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width, b.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})]},tee:function(a){return[N(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",ba.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",ba.prototype.dy)));return new mxPoint(a.x+(a.width+b)/2,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,2*Math.min(a.width/2,b.x-a.x-a.width/2)));this.state.style.dy=Math.round(Math.max(0, -Math.min(a.height,b.y-a.y)))})]},singleArrow:ja(1),doubleArrow:ja(.5),folder:function(a){return[N(a,["tabWidth","tabHeight"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"tabWidth",h.prototype.tabWidth))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"tabHeight",h.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",h.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(b=a.width-b);return new mxPoint(a.x+b,a.y+c)},function(a,b){var c= +Math.min(a.height,b.y-a.y)))})]},singleArrow:ha(1),doubleArrow:ha(.5),folder:function(a){return[N(a,["tabWidth","tabHeight"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"tabWidth",h.prototype.tabWidth))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"tabHeight",h.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",h.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(b=a.width-b);return new mxPoint(a.x+b,a.y+c)},function(a,b){var c= Math.max(0,Math.min(a.width,b.x-a.x));mxUtils.getValue(this.state.style,"tabPosition",h.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(c=a.width-c);this.state.style.tabWidth=Math.round(c);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})]},document:function(a){return[N(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",l.prototype.size))));return new mxPoint(a.x+3*a.width/4,a.y+(1-b)*a.height)},function(a,b){this.state.style.size= Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))})]},tape:function(a){return[N(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",k.prototype.size))));return new mxPoint(a.getCenterX(),a.y+b*a.height/2)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(b.y-a.y)/a.height*2))})]},offPageConnector:function(a){return[N(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",Z.prototype.size)))); -return new mxPoint(a.getCenterX(),a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))})]},step:wa(v.prototype.size,!0,null,!0,v.prototype.fixedSize),hexagon:wa(z.prototype.size,!0,.5,!0),curlyBracket:wa(n.prototype.size,!1),display:wa(pa.prototype.size,!1),cube:Ea(1,a.prototype.size,!1),card:Ea(.5,g.prototype.size,!0),loopLimit:Ea(.5,Y.prototype.size,!0),trapezoid:Ia(.5),parallelogram:Ia(1)};Graph.createHandle=N;Graph.handleFactory=xa;mxVertexHandler.prototype.createCustomHandles= +return new mxPoint(a.getCenterX(),a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))})]},step:wa(v.prototype.size,!0,null,!0,v.prototype.fixedSize),hexagon:wa(z.prototype.size,!0,.5,!0),curlyBracket:wa(n.prototype.size,!1),display:wa(qa.prototype.size,!1),cube:Ea(1,a.prototype.size,!1),card:Ea(.5,g.prototype.size,!0),loopLimit:Ea(.5,Y.prototype.size,!0),trapezoid:Ia(.5),parallelogram:Ia(1)};Graph.createHandle=N;Graph.handleFactory=xa;mxVertexHandler.prototype.createCustomHandles= function(){if(1==this.state.view.graph.getSelectionCount()&&this.graph.isCellRotatable(this.state.cell)){var a=this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_RECTANGLE);a=xa[a];null==a&&null!=this.state.shape&&this.state.shape.isRoundable()&&(a=xa[mxConstants.SHAPE_RECTANGLE]);if(null!=a)return a(this.state)}return null};mxEdgeHandler.prototype.createCustomHandles=function(){if(1==this.state.view.graph.getSelectionCount()){var a= -this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_CONNECTOR);a=xa[a];if(null!=a)return a(this.state)}return null}}else Graph.createHandle=function(){},Graph.handleFactory={};var ya=new mxPoint(1,0),za=new mxPoint(1,0),ja=mxUtils.toRadians(-30),ya=mxUtils.getRotatedPoint(ya,Math.cos(ja),Math.sin(ja)),ja=mxUtils.toRadians(-150),za=mxUtils.getRotatedPoint(za,Math.cos(ja),Math.sin(ja));mxEdgeStyle.IsometricConnector=function(a,b, +this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_CONNECTOR);a=xa[a];if(null!=a)return a(this.state)}return null}}else Graph.createHandle=function(){},Graph.handleFactory={};var ya=new mxPoint(1,0),za=new mxPoint(1,0),ha=mxUtils.toRadians(-30),ya=mxUtils.getRotatedPoint(ya,Math.cos(ha),Math.sin(ha)),ha=mxUtils.toRadians(-150),za=mxUtils.getRotatedPoint(za,Math.cos(ha),Math.sin(ha));mxEdgeStyle.IsometricConnector=function(a,b, c,d,e){var g=a.view;d=null!=d&&0<d.length?d[0]:null;var f=a.absolutePoints,h=f[0],f=f[f.length-1];null!=d&&(d=g.transformControlPoint(a,d));null==h&&null!=b&&(h=new mxPoint(b.getCenterX(),b.getCenterY()));null==f&&null!=c&&(f=new mxPoint(c.getCenterX(),c.getCenterY()));var k=ya.x,l=ya.y,m=za.x,p=za.y,n="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!=f&&null!=h){a=function(a,b,c){a-=y.x;var d=b-y.y;b=(p*a-m*d)/(k*p-l*m);a=(l*a-k*d)/(l*m-k*p);n?(c&&(y=new mxPoint(y.x+k*b,y.y+l* b),e.push(y)),y=new mxPoint(y.x+m*a,y.y+p*a)):(c&&(y=new mxPoint(y.x+m*a,y.y+p*a),e.push(y)),y=new mxPoint(y.x+k*b,y.y+l*b));e.push(y)};var y=h;null==d&&(d=new mxPoint(h.x+(f.x-h.x)/2,h.y+(f.y-h.y)/2));a(d.x,d.y,!0);a(f.x,f.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var Oa=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(a,b){if(b==mxEdgeStyle.IsometricConnector){var c=new mxElbowEdgeHandler(a);c.snapToTerminals=!1;return c}return Oa.apply(this, arguments)};c.prototype.constraints=[];d.prototype.getConstraints=function(a,b,c){a=[];var d=Math.tan(mxUtils.toRadians(30)),e=(.5-d)/2,d=Math.min(b,c/(.5+d));b=(b-d)/2;c=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,c+.25*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+.5*d,c+d*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+d,c+.25*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+d,c+.75*d));a.push(new mxConnectionConstraint(new mxPoint(0, @@ -3041,35 +3043,38 @@ f.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,Math 0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(c+d)));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(1, 1),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b>=2*d&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};a.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0));a.push(new mxConnectionConstraint(new mxPoint(0, 0),!1,null,b-.5*d,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*(c+d)));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,c-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-d));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,0,.5*(c-d)));return a};h.prototype.constraints=mxRectangleShape.prototype.constraints;W.prototype.constraints=mxRectangleShape.prototype.constraints;ca.prototype.constraints=mxRectangleShape.prototype.constraints;da.prototype.constraints=mxEllipse.prototype.constraints;ia.prototype.constraints=mxEllipse.prototype.constraints;V.prototype.constraints=mxEllipse.prototype.constraints;ta.prototype.constraints=mxEllipse.prototype.constraints;X.prototype.constraints=mxRectangleShape.prototype.constraints; -ua.prototype.constraints=mxRectangleShape.prototype.constraints;pa.prototype.getConstraints=function(a,b,c){a=[];var d=Math.min(b,c/2),e=Math.min(b-d,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*b);a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+b-d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0));a.push(new mxConnectionConstraint(new mxPoint(1, -.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+b-d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));return a};Y.prototype.constraints=mxRectangleShape.prototype.constraints;Z.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85, -.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];E.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25, -.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,.1),!1),new mxConnectionConstraint(new mxPoint(0,1/3),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(1,1/3),!1),new mxConnectionConstraint(new mxPoint(1,1),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1)];B.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75, -0),!0),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxActor.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.25, -.2),!1),new mxConnectionConstraint(new mxPoint(.1,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.75,.25),!1),new mxConnectionConstraint(new mxPoint(.9,.5),!1),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];e.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(.5, -.25),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5,.75),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];k.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.35),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.65),!1),new mxConnectionConstraint(new mxPoint(1, -.35),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,.65),!1),new mxConnectionConstraint(new mxPoint(.25,1),!1),new mxConnectionConstraint(new mxPoint(.75,0),!1)];v.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75, -1),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxLine.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1, -.5),!1)];O.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1)];mxDoubleEllipse.prototype.constraints=mxEllipse.prototype.constraints;mxRhombus.prototype.constraints=mxEllipse.prototype.constraints;mxTriangle.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5, -1),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0)];mxHexagon.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.375,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.625,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1, -.75),!0),new mxConnectionConstraint(new mxPoint(.375,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.625,1),!0)];mxCloud.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.25),!1),new mxConnectionConstraint(new mxPoint(.4,.1),!1),new mxConnectionConstraint(new mxPoint(.16,.55),!1),new mxConnectionConstraint(new mxPoint(.07,.4),!1),new mxConnectionConstraint(new mxPoint(.31,.8),!1),new mxConnectionConstraint(new mxPoint(.13,.77),!1),new mxConnectionConstraint(new mxPoint(.8, -.8),!1),new mxConnectionConstraint(new mxPoint(.55,.95),!1),new mxConnectionConstraint(new mxPoint(.875,.5),!1),new mxConnectionConstraint(new mxPoint(.96,.7),!1),new mxConnectionConstraint(new mxPoint(.625,.2),!1),new mxConnectionConstraint(new mxPoint(.88,.25),!1)];m.prototype.constraints=mxRectangleShape.prototype.constraints;p.prototype.constraints=mxRectangleShape.prototype.constraints;l.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5, -0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;ba.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style, -"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*b+.25*d,e));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,.5*(b+d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),c));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),e));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,.25*b-.25*d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*e));return a};aa.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1, -0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,c));a.push(new mxConnectionConstraint(new mxPoint(0, -.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));return a};ha.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1, -1),!1)];R.prototype.getConstraints=function(a,b,c){a=[];var d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize)))),d=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-e),d));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,b-e,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-e),c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-d));return a};ka.prototype.getConstraints=function(a,b,c){a=[];var d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",R.prototype.arrowWidth)))),e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style, -"arrowSize",R.prototype.arrowSize)))),d=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*b,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*b,c-d));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,e,c));return a};oa.prototype.getConstraints=function(a,b,c){a=[];var d=Math.min(c,b),e=Math.max(0,Math.min(d,d*parseFloat(mxUtils.getValue(this.style,"size",this.size)))),d=(c-e)/2,g=d+e,f=(b-e)/2,e=f+e;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,0));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,e,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,c-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,c));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,g));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,.5*(b+e),d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,d));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+e),g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*f,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0, -.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*f,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,d));return a};G.prototype.constraints=null;ea.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7, -.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];fa.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.175,.25),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.175,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];P.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1, -.5),!1)];I.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)]})();function Actions(a){this.editorUi=a;this.actions={};this.init()} +0),!1,null,0,.5*(c-d)));return a};h.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(a.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,0)),a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,d,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),e))):(a.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-.5*d,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,e)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),e)));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.25*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.75*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null, +0,.5*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.75*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return a};V.prototype.constraints=mxRectangleShape.prototype.constraints;ca.prototype.constraints=mxRectangleShape.prototype.constraints;ea.prototype.constraints=mxEllipse.prototype.constraints; +ja.prototype.constraints=mxEllipse.prototype.constraints;W.prototype.constraints=mxEllipse.prototype.constraints;ua.prototype.constraints=mxEllipse.prototype.constraints;X.prototype.constraints=mxRectangleShape.prototype.constraints;ta.prototype.constraints=mxRectangleShape.prototype.constraints;qa.prototype.getConstraints=function(a,b,c){a=[];var d=Math.min(b,c/2),e=Math.min(b-d,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*b);a.push(new mxConnectionConstraint(new mxPoint(0, +.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+b-d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+b-d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));return a};Y.prototype.constraints= +mxRectangleShape.prototype.constraints;Z.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1, +.5),!0),new mxConnectionConstraint(new mxPoint(1,.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];F.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,.1),!1),new mxConnectionConstraint(new mxPoint(0,1/3),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(1, +1/3),!1),new mxConnectionConstraint(new mxPoint(1,1),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1)];B.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1, +.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxActor.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.25,.2),!1),new mxConnectionConstraint(new mxPoint(.1,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.75,.25),!1),new mxConnectionConstraint(new mxPoint(.9,.5),!1),new mxConnectionConstraint(new mxPoint(1, +.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];e.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(.5,.25),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5, +.75),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];k.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.35),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.65),!1),new mxConnectionConstraint(new mxPoint(1,.35),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,.65),!1),new mxConnectionConstraint(new mxPoint(.25,1),!1),new mxConnectionConstraint(new mxPoint(.75,0),!1)];v.prototype.constraints= +[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1, +.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxLine.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];O.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1)];mxDoubleEllipse.prototype.constraints=mxEllipse.prototype.constraints;mxRhombus.prototype.constraints= +mxEllipse.prototype.constraints;mxTriangle.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0)];mxHexagon.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.375,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.625, +0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.375,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.625,1),!0)];mxCloud.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25, +.25),!1),new mxConnectionConstraint(new mxPoint(.4,.1),!1),new mxConnectionConstraint(new mxPoint(.16,.55),!1),new mxConnectionConstraint(new mxPoint(.07,.4),!1),new mxConnectionConstraint(new mxPoint(.31,.8),!1),new mxConnectionConstraint(new mxPoint(.13,.77),!1),new mxConnectionConstraint(new mxPoint(.8,.8),!1),new mxConnectionConstraint(new mxPoint(.55,.95),!1),new mxConnectionConstraint(new mxPoint(.875,.5),!1),new mxConnectionConstraint(new mxPoint(.96,.7),!1),new mxConnectionConstraint(new mxPoint(.625, +.2),!1),new mxConnectionConstraint(new mxPoint(.88,.25),!1)];m.prototype.constraints=mxRectangleShape.prototype.constraints;p.prototype.constraints=mxRectangleShape.prototype.constraints;l.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0, +.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;ba.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5, +0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*b+.25*d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),c));a.push(new mxConnectionConstraint(new mxPoint(.5, +1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*b-.25*d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*e));return a};aa.prototype.getConstraints=function(a,b,c){a=[];var d= +Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,.5*(b+d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,c));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));return a};ka.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0, +.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];R.prototype.getConstraints=function(a,b,c){a=[];var d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))), +e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize)))),d=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-e),d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,c));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,.5*(b-e),c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-d));return a};la.prototype.getConstraints=function(a,b,c){a=[];var d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",R.prototype.arrowWidth)))),e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",R.prototype.arrowSize)))),d=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,.5*b,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*b,c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));return a};pa.prototype.getConstraints=function(a,b,c){a=[];var d=Math.min(c,b),e=Math.max(0,Math.min(d,d*parseFloat(mxUtils.getValue(this.style,"size",this.size)))), +d=(c-e)/2,g=d+e,f=(b-e)/2,e=f+e;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,0));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,c-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,f,c));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+e),d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,d));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,b,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+e),g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*f,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*f,g));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,f,d));return a};G.prototype.constraints=null;fa.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];ga.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.175,.25),!1),new mxConnectionConstraint(new mxPoint(.25, +.5),!1),new mxConnectionConstraint(new mxPoint(.175,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];P.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];H.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)]})();function Actions(a){this.editorUi=a;this.actions={};this.init()} Actions.prototype.init=function(){function a(a){b.escape();var c=b.getDeletableCells(b.getSelectionCells());if(null!=c&&0<c.length){var d=b.model.getParents(c);b.removeCells(c,a);if(null!=d){a=[];for(c=0;c<d.length;c++)b.model.contains(d[c])&&(b.model.isVertex(d[c])||b.model.isEdge(d[c]))&&a.push(d[c]);b.setSelectionCells(a)}}}var c=this.editorUi,d=c.editor,b=d.graph,f=function(){return Action.prototype.isEnabled.apply(this,arguments)&&b.isEnabled()};this.addAction("new...",function(){b.openLink(c.getUrl())}); this.addAction("open...",function(){window.openNew=!0;window.openKey="open";c.openFile()});this.addAction("import...",function(){window.openNew=!1;window.openKey="import";window.openFile=new OpenFile(mxUtils.bind(this,function(){c.hideDialog()}));window.openFile.setConsumer(mxUtils.bind(this,function(a,b){try{var c=mxUtils.parseXml(a);d.graph.setSelectionCells(d.graph.importGraphModel(c.documentElement))}catch(m){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+m.message)}}));c.showDialog((new OpenDialog(this)).container, 320,220,!0,!0,function(){window.openFile=null})}).isEnabled=f;this.addAction("save",function(){c.saveFile(!1)},null,null,Editor.ctrlKey+"+S").isEnabled=f;this.addAction("saveAs...",function(){c.saveFile(!0)},null,null,Editor.ctrlKey+"+Shift+S").isEnabled=f;this.addAction("export...",function(){c.showDialog((new ExportDialog(c)).container,300,230,!0,!0)});this.addAction("editDiagram...",function(){var a=new EditDiagramDialog(c);c.showDialog(a.container,620,420,!0,!1);a.init()});this.addAction("pageSetup...", @@ -3086,7 +3091,7 @@ c.showDataDialog(a)},null,null,Editor.ctrlKey+"+M");this.addAction("editTooltip. null!=a&&b.openLink(a)});this.addAction("editLink...",function(){var a=c.editor.graph;if(a.isEnabled()&&!a.isSelectionEmpty()){var b=a.getSelectionCell(),d=a.getLinkForCell(b)||"";c.showLinkDialog(d,mxResources.get("apply"),function(c){c=mxUtils.trim(c);a.setLinkForCell(b,0<c.length?c:null)})}},null,null,"Alt+Shift+L");this.put("insertImage",new Action(mxResources.get("image")+"...",function(){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&(b.clearSelection(),c.actions.get("image").funct())})).isEnabled= f;this.put("insertLink",new Action(mxResources.get("link")+"...",function(){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&c.showLinkDialog("",mxResources.get("insert"),function(a,c){a=mxUtils.trim(a);if(0<a.length){var d=null,e=b.getLinkTitle(a);null!=c&&0<c.length&&(d=c[0].iconUrl,e=c[0].name||c[0].type,e=e.charAt(0).toUpperCase()+e.substring(1),30<e.length&&(e=e.substring(0,30)+"..."));var g=b.getFreeInsertPoint(),d=new mxCell(e,new mxGeometry(g.x,g.y,100,40),"fontColor=#0000EE;fontStyle=4;rounded=1;overflow=hidden;"+ (null!=d?"shape=label;imageWidth=16;imageHeight=16;spacingLeft=26;align=left;image="+d:"spacing=10;"));d.vertex=!0;b.setLinkForCell(d,a);b.cellSizeUpdated(d,!0);b.getModel().beginUpdate();try{d=b.addCell(d),b.fireEvent(new mxEventObject("cellsInserted","cells",[d]))}finally{b.getModel().endUpdate()}b.setSelectionCell(d);b.scrollCellToVisible(b.getSelectionCell())}})})).isEnabled=f;this.addAction("link...",mxUtils.bind(this,function(){var a=c.editor.graph;if(a.isEnabled())if(a.cellEditor.isContentEditing()){var b= -a.getSelectedElement(),d=a.getParentByName(b,"A",a.cellEditor.textarea),e="";if(null==d&&null!=b&&null!=b.getElementsByTagName)for(var f=b.getElementsByTagName("a"),h=0;h<f.length&&null==d;h++)f[h].textContent==b.textContent&&(a.selectNode(f[h]),d=f[h]);null!=d&&"A"==d.nodeName&&(e=d.getAttribute("href")||"");var u=a.cellEditor.saveSelection();c.showLinkDialog(e,mxResources.get("apply"),mxUtils.bind(this,function(b){a.cellEditor.restoreSelection(u);null!=b&&a.insertLink(b)}))}else a.isSelectionEmpty()? +a.getSelectedElement(),d=a.getParentByName(b,"A",a.cellEditor.textarea),e="";if(null==d&&null!=b&&null!=b.getElementsByTagName)for(var f=b.getElementsByTagName("a"),h=0;h<f.length&&null==d;h++)f[h].textContent==b.textContent&&(d=f[h]);null!=d&&"A"==d.nodeName&&(e=d.getAttribute("href")||"",a.selectNode(d));var u=a.cellEditor.saveSelection();c.showLinkDialog(e,mxResources.get("apply"),mxUtils.bind(this,function(b){a.cellEditor.restoreSelection(u);null!=b&&a.insertLink(b)}))}else a.isSelectionEmpty()? this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=f;this.addAction("autosize",function(){var a=b.getSelectionCells();if(null!=a){b.getModel().beginUpdate();try{for(var c=0;c<a.length;c++){var d=a[c];if(b.getModel().getChildCount(d))b.updateGroupBounds([d],20);else{var e=b.view.getState(d),f=b.getCellGeometry(d);b.getModel().isVertex(d)&&null!=e&&null!=e.text&&null!=f&&b.isWrapping(d)?(f=f.clone(),f.height=e.text.boundingBox.height/b.view.scale,b.getModel().setGeometry(d,f)): b.updateCellSize(d)}}}finally{b.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+Y");this.addAction("formattedText",function(){var a=b.getView().getState(b.getSelectionCell());if(null!=a){var d="1";b.stopEditing();b.getModel().beginUpdate();try{if("1"==a.style.html){var d=null,e=b.convertValueToString(a.cell);"0"!=mxUtils.getValue(a.style,"nl2Br","1")&&(e=e.replace(/\n/g,"").replace(/<br\s*.?>/g,"\n"));var f=document.createElement("div");f.innerHTML=e;e=mxUtils.extractTextWithWhitespace(f.childNodes); b.cellLabelChanged(a.cell,e)}else e=mxUtils.htmlEntities(b.convertValueToString(a.cell),!1),"0"!=mxUtils.getValue(a.style,"nl2Br","1")&&(e=e.replace(/\n/g,"<br/>")),b.cellLabelChanged(a.cell,b.sanitizeHtml(e));b.setCellStyles("html",d);c.fireEvent(new mxEventObject("styleChanged","keys",["html"],"values",[null!=d?d:"0"],"cells",b.getSelectionCells()))}finally{b.getModel().endUpdate()}}});this.addAction("wordWrap",function(){var a=b.getView().getState(b.getSelectionCell()),c="wrap";b.stopEditing(); @@ -3127,14 +3132,14 @@ Menus.prototype.init=function(){var a=this.editorUi.editor.graph,c=mxUtils.bind( "div")})}).firstChild.nextSibling.style.fontFamily=d}),e=0;e<this.defaultFonts.length;e++)d(this.defaultFonts[e]);c.addSeparator(b);if(0<this.customFonts.length){for(e=0;e<this.customFonts.length;e++)d(this.customFonts[e]);c.addSeparator(b);c.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){this.customFonts=[]}),b);c.addSeparator(b)}this.promptChange(c,mxResources.get("custom")+"...","",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,b,!0,mxUtils.bind(this,function(a){this.customFonts.push(a)}))}))); this.put("formatBlock",new Menu(mxUtils.bind(this,function(c,b){function d(d,f){return c.addItem(d,null,mxUtils.bind(this,function(){null!=a.cellEditor.textarea&&(a.cellEditor.textarea.focus(),document.execCommand("formatBlock",!1,"<"+f+">"))}),b)}d(mxResources.get("normal"),"p");d("","h1").firstChild.nextSibling.innerHTML='<h1 style="margin:0px;">'+mxResources.get("heading")+" 1</h1>";d("","h2").firstChild.nextSibling.innerHTML='<h2 style="margin:0px;">'+mxResources.get("heading")+" 2</h2>";d("", "h3").firstChild.nextSibling.innerHTML='<h3 style="margin:0px;">'+mxResources.get("heading")+" 3</h3>";d("","h4").firstChild.nextSibling.innerHTML='<h4 style="margin:0px;">'+mxResources.get("heading")+" 4</h4>";d("","h5").firstChild.nextSibling.innerHTML='<h5 style="margin:0px;">'+mxResources.get("heading")+" 5</h5>";d("","h6").firstChild.nextSibling.innerHTML='<h6 style="margin:0px;">'+mxResources.get("heading")+" 6</h6>";d("","pre").firstChild.nextSibling.innerHTML='<pre style="margin:0px;">'+mxResources.get("formatted")+ -"</pre>";d("","blockquote").firstChild.nextSibling.innerHTML='<blockquote style="margin-top:0px;margin-bottom:0px;">'+mxResources.get("blockquote")+"</blockquote>"})));this.put("fontSize",new Menu(mxUtils.bind(this,function(c,b){for(var d=[6,8,9,10,11,12,14,18,24,36,48,72],e=mxUtils.bind(this,function(d){this.styleChange(c,d,[mxConstants.STYLE_FONTSIZE],[d],null,b,function(){document.execCommand("fontSize",!1,"3");for(var b=a.cellEditor.textarea.getElementsByTagName("font"),c=0;c<b.length;c++)if("3"== -b[c].getAttribute("size")){b[c].removeAttribute("size");b[c].style.fontSize=d+"px";break}})}),h=0;h<d.length;h++)e(d[h]);c.addSeparator(b);if(0<this.customFontSizes.length){for(h=0;h<this.customFontSizes.length;h++)e(this.customFontSizes[h]);c.addSeparator(b);c.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){this.customFontSizes=[]}),b);c.addSeparator(b)}this.promptChange(c,mxResources.get("custom")+"...","(pt)","12",mxConstants.STYLE_FONTSIZE,b,!0,mxUtils.bind(this,function(a){this.customFontSizes.push(a)}))}))); -this.put("direction",new Menu(mxUtils.bind(this,function(c,b){c.addItem(mxResources.get("flipH"),null,function(){a.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},b);c.addItem(mxResources.get("flipV"),null,function(){a.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},b);this.addMenuItems(c,["-","rotation"],b)})));this.put("align",new Menu(mxUtils.bind(this,function(c,b){c.addItem(mxResources.get("leftAlign"),null,function(){a.alignCells(mxConstants.ALIGN_LEFT)},b);c.addItem(mxResources.get("center"),null, -function(){a.alignCells(mxConstants.ALIGN_CENTER)},b);c.addItem(mxResources.get("rightAlign"),null,function(){a.alignCells(mxConstants.ALIGN_RIGHT)},b);c.addSeparator(b);c.addItem(mxResources.get("topAlign"),null,function(){a.alignCells(mxConstants.ALIGN_TOP)},b);c.addItem(mxResources.get("middle"),null,function(){a.alignCells(mxConstants.ALIGN_MIDDLE)},b);c.addItem(mxResources.get("bottomAlign"),null,function(){a.alignCells(mxConstants.ALIGN_BOTTOM)},b)})));this.put("distribute",new Menu(mxUtils.bind(this, -function(c,b){c.addItem(mxResources.get("horizontal"),null,function(){a.distributeCells(!0)},b);c.addItem(mxResources.get("vertical"),null,function(){a.distributeCells(!1)},b)})));this.put("layout",new Menu(mxUtils.bind(this,function(c,b){var d=mxUtils.bind(this,function(a,b){var c=new FilenameDialog(this.editorUi,a,mxResources.get("apply"),function(a){b(parseFloat(a))},mxResources.get("spacing"));this.editorUi.showDialog(c.container,300,80,!0,!0);c.init()});c.addItem(mxResources.get("horizontalFlow"), -null,mxUtils.bind(this,function(){var b=new mxHierarchicalLayout(a,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(function(){var c=a.getSelectionCells();b.execute(a.getDefaultParent(),0==c.length?null:c)},!0)}),b);c.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var b=new mxHierarchicalLayout(a,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(function(){var c=a.getSelectionCells();b.execute(a.getDefaultParent(),0==c.length?null:c)},!0)}),b);c.addSeparator(b); -c.addItem(mxResources.get("horizontalTree"),null,mxUtils.bind(this,function(){var b=a.getSelectionCell(),c=null;null==b||0==a.getModel().getChildCount(b)?0==a.getModel().getEdgeCount(b)&&(c=a.findTreeRoots(a.getDefaultParent())):c=a.findTreeRoots(b);null!=c&&0<c.length&&(b=c[0]);if(null!=b){var g=new mxCompactTreeLayout(a,!0);g.edgeRouting=!1;g.levelDistance=30;d(g.levelDistance,mxUtils.bind(this,function(c){g.levelDistance=c;this.editorUi.executeLayout(function(){g.execute(a.getDefaultParent(),b)}, -!0)}))}}),b);c.addItem(mxResources.get("verticalTree"),null,mxUtils.bind(this,function(){var b=a.getSelectionCell(),c=null;null==b||0==a.getModel().getChildCount(b)?0==a.getModel().getEdgeCount(b)&&(c=a.findTreeRoots(a.getDefaultParent())):c=a.findTreeRoots(b);null!=c&&0<c.length&&(b=c[0]);if(null!=b){var g=new mxCompactTreeLayout(a,!1);g.edgeRouting=!1;g.levelDistance=30;d(g.levelDistance,mxUtils.bind(this,function(c){g.levelDistance=c;this.editorUi.executeLayout(function(){g.execute(a.getDefaultParent(), +"</pre>";d("","blockquote").firstChild.nextSibling.innerHTML='<blockquote style="margin-top:0px;margin-bottom:0px;">'+mxResources.get("blockquote")+"</blockquote>"})));this.put("fontSize",new Menu(mxUtils.bind(this,function(c,b){for(var d=[6,8,9,10,11,12,14,18,24,36,48,72],e=mxUtils.bind(this,function(d){this.styleChange(c,d,[mxConstants.STYLE_FONTSIZE],[d],null,b,function(){if(null!=a.cellEditor.textarea){document.execCommand("fontSize",!1,"3");for(var b=a.cellEditor.textarea.getElementsByTagName("font"), +c=0;c<b.length;c++)if("3"==b[c].getAttribute("size")){b[c].removeAttribute("size");b[c].style.fontSize=d+"px";break}}})}),h=0;h<d.length;h++)e(d[h]);c.addSeparator(b);if(0<this.customFontSizes.length){for(h=0;h<this.customFontSizes.length;h++)e(this.customFontSizes[h]);c.addSeparator(b);c.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){this.customFontSizes=[]}),b);c.addSeparator(b)}this.promptChange(c,mxResources.get("custom")+"...","(pt)","12",mxConstants.STYLE_FONTSIZE,b,!0,mxUtils.bind(this, +function(a){this.customFontSizes.push(a)}))})));this.put("direction",new Menu(mxUtils.bind(this,function(c,b){c.addItem(mxResources.get("flipH"),null,function(){a.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},b);c.addItem(mxResources.get("flipV"),null,function(){a.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},b);this.addMenuItems(c,["-","rotation"],b)})));this.put("align",new Menu(mxUtils.bind(this,function(c,b){c.addItem(mxResources.get("leftAlign"),null,function(){a.alignCells(mxConstants.ALIGN_LEFT)}, +b);c.addItem(mxResources.get("center"),null,function(){a.alignCells(mxConstants.ALIGN_CENTER)},b);c.addItem(mxResources.get("rightAlign"),null,function(){a.alignCells(mxConstants.ALIGN_RIGHT)},b);c.addSeparator(b);c.addItem(mxResources.get("topAlign"),null,function(){a.alignCells(mxConstants.ALIGN_TOP)},b);c.addItem(mxResources.get("middle"),null,function(){a.alignCells(mxConstants.ALIGN_MIDDLE)},b);c.addItem(mxResources.get("bottomAlign"),null,function(){a.alignCells(mxConstants.ALIGN_BOTTOM)},b)}))); +this.put("distribute",new Menu(mxUtils.bind(this,function(c,b){c.addItem(mxResources.get("horizontal"),null,function(){a.distributeCells(!0)},b);c.addItem(mxResources.get("vertical"),null,function(){a.distributeCells(!1)},b)})));this.put("layout",new Menu(mxUtils.bind(this,function(c,b){var d=mxUtils.bind(this,function(a,b){var c=new FilenameDialog(this.editorUi,a,mxResources.get("apply"),function(a){b(parseFloat(a))},mxResources.get("spacing"));this.editorUi.showDialog(c.container,300,80,!0,!0); +c.init()});c.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var b=new mxHierarchicalLayout(a,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(function(){var c=a.getSelectionCells();b.execute(a.getDefaultParent(),0==c.length?null:c)},!0)}),b);c.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var b=new mxHierarchicalLayout(a,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(function(){var c=a.getSelectionCells();b.execute(a.getDefaultParent(), +0==c.length?null:c)},!0)}),b);c.addSeparator(b);c.addItem(mxResources.get("horizontalTree"),null,mxUtils.bind(this,function(){var b=a.getSelectionCell(),c=null;null==b||0==a.getModel().getChildCount(b)?0==a.getModel().getEdgeCount(b)&&(c=a.findTreeRoots(a.getDefaultParent())):c=a.findTreeRoots(b);null!=c&&0<c.length&&(b=c[0]);if(null!=b){var g=new mxCompactTreeLayout(a,!0);g.edgeRouting=!1;g.levelDistance=30;d(g.levelDistance,mxUtils.bind(this,function(c){g.levelDistance=c;this.editorUi.executeLayout(function(){g.execute(a.getDefaultParent(), +b)},!0)}))}}),b);c.addItem(mxResources.get("verticalTree"),null,mxUtils.bind(this,function(){var b=a.getSelectionCell(),c=null;null==b||0==a.getModel().getChildCount(b)?0==a.getModel().getEdgeCount(b)&&(c=a.findTreeRoots(a.getDefaultParent())):c=a.findTreeRoots(b);null!=c&&0<c.length&&(b=c[0]);if(null!=b){var g=new mxCompactTreeLayout(a,!1);g.edgeRouting=!1;g.levelDistance=30;d(g.levelDistance,mxUtils.bind(this,function(c){g.levelDistance=c;this.editorUi.executeLayout(function(){g.execute(a.getDefaultParent(), b)},!0)}))}}),b);c.addItem(mxResources.get("radialTree"),null,mxUtils.bind(this,function(){var b=a.getSelectionCell(),c=null;null==b||0==a.getModel().getChildCount(b)?0==a.getModel().getEdgeCount(b)&&(c=a.findTreeRoots(a.getDefaultParent())):c=a.findTreeRoots(b);null!=c&&0<c.length&&(b=c[0]);if(null!=b){var g=new mxRadialTreeLayout(a,!1);g.levelDistance=80;g.autoRadius=!0;d(g.levelDistance,mxUtils.bind(this,function(c){g.levelDistance=c;this.editorUi.executeLayout(function(){g.execute(a.getDefaultParent(), b);a.isSelectionEmpty()||(b=a.getModel().getParent(b),a.getModel().isVertex(b)&&a.updateGroupBounds([b],2*a.gridSize,!0))},!0)}))}}),b);c.addSeparator(b);c.addItem(mxResources.get("organic"),null,mxUtils.bind(this,function(){var b=new mxFastOrganicLayout(a);d(b.forceConstant,mxUtils.bind(this,function(c){b.forceConstant=c;this.editorUi.executeLayout(function(){var c=a.getSelectionCell();if(null==c||0==a.getModel().getChildCount(c))c=a.getDefaultParent();b.execute(c);a.getModel().isVertex(c)&&a.updateGroupBounds([c], 2*a.gridSize,!0)},!0)}))}),b);c.addItem(mxResources.get("circle"),null,mxUtils.bind(this,function(){var b=new mxCircleLayout(a);this.editorUi.executeLayout(function(){var c=a.getSelectionCell();if(null==c||0==a.getModel().getChildCount(c))c=a.getDefaultParent();b.execute(c);a.getModel().isVertex(c)&&a.updateGroupBounds([c],2*a.gridSize,!0)},!0)}),b)})));this.put("navigation",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,"home - exitGroup enterGroup - expand collapse - collapsible".split(" "), @@ -3143,11 +3148,11 @@ function(a,b){this.addMenuItems(a,["insertLink","insertImage"],b)})));this.put(" ["outline","layers"],b)})));this.put("viewZoom",new Menu(mxUtils.bind(this,function(c,b){this.addMenuItems(c,["resetView","-"],b);for(var d=[.25,.5,.75,1,1.25,1.5,2,3,4],e=0;e<d.length;e++)(function(d){c.addItem(100*d+"%",null,function(){a.zoomTo(d)},b)})(d[e]);this.addMenuItems(c,"- fitWindow fitPageWidth fitPage fitTwoPages - customZoom".split(" "),b)})));this.put("file",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,"new open - save saveAs - import export - pageSetup print".split(" "), b)})));this.put("edit",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,"undo redo - cut copy paste delete - duplicate - editData editTooltip editStyle - edit - editLink openLink - selectVertices selectEdges selectAll selectNone - lockUnlock".split(" "))})));this.put("extras",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,["copyConnect","collapseExpand","-","editDiagram"])})));this.put("help",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,["help","-","about"])})))}; Menus.prototype.put=function(a,c){return this.menus[a]=c};Menus.prototype.get=function(a){return this.menus[a]};Menus.prototype.addSubmenu=function(a,c,d,b){var f=this.get(a);null!=f&&(f=f.isEnabled(),c.showDisabled||f)&&(d=c.addItem(b||mxResources.get(a),null,null,d,null,f),this.addMenu(a,c,d))};Menus.prototype.addMenu=function(a,c,d){var b=this.get(a);null!=b&&(c.showDisabled||b.isEnabled())&&this.get(a).execute(c,d)}; -Menus.prototype.addInsertTableItem=function(a){function c(a,b){for(var c=["<table>"],d=0;d<a;d++){c.push("<tr>");for(var e=0;e<b;e++)c.push("<td><br></td>");c.push("</tr>")}c.push("</table>");return c.join("")}var d=this.editorUi.editor.graph;a=a.addItem("",null,mxUtils.bind(this,function(a){var b=d.getParentByName(mxEvent.getSource(a),"TD");if(null!=b){var e=d.getParentByName(b,"TR"),f=d.cellEditor.textarea.getElementsByTagName("table");a=[];for(var h=0;h<f.length;h++)a.push(f[h]);d.container.focus(); -d.pasteHtmlAtCaret(c(e.sectionRowIndex+1,b.cellIndex+1));b=d.cellEditor.textarea.getElementsByTagName("table");if(b.length==a.length+1)for(h=b.length-1;0<=h;h--)if(0==h||b[h]!=a[h-1]){d.selectNode(b[h].rows[0].cells[0]);break}}}));var b='<img src="'+mxClient.imageBasePath+'/transparent.gif" width="16" height="16"/>';a.firstChild.innerHTML="";var f=function(a,c){var d=document.createElement("table");d.setAttribute("border","1");d.style.borderCollapse="collapse";mxClient.IS_QUIRKS||d.setAttribute("cellPadding", -"8");for(var e=0;e<a;e++)for(var f=d.insertRow(e),g=0;g<c;g++){var h=f.insertCell(-1);mxClient.IS_QUIRKS&&(h.innerHTML=b)}return d}(5,5);a.firstChild.appendChild(f);var e=document.createElement("div");e.style.padding="4px";e.style.fontSize=Menus.prototype.defaultFontSize+"px";e.innerHTML="1x1";a.firstChild.appendChild(e);mxEvent.addListener(f,"mouseover",function(a){var c=d.getParentByName(mxEvent.getSource(a),"TD");if(null!=c){for(var h=d.getParentByName(c,"TR"),l=Math.min(20,h.sectionRowIndex+2), -m=Math.min(20,c.cellIndex+2),p=f.rows.length;p<l;p++)for(var n=f.insertRow(p),u=0;u<f.rows[0].cells.length;u++){var q=n.insertCell(-1);mxClient.IS_QUIRKS&&(q.innerHTML=b)}for(p=0;p<f.rows.length;p++)for(n=f.rows[p],u=n.cells.length;u<m;u++)q=n.insertCell(-1),mxClient.IS_QUIRKS&&(q.innerHTML=b);e.innerHTML=c.cellIndex+1+"x"+(h.sectionRowIndex+1);for(l=0;l<f.rows.length;l++)for(m=f.rows[l],p=0;p<m.cells.length;p++)m.cells[p].style.backgroundColor=l<=h.sectionRowIndex&&p<=c.cellIndex?"blue":"white"; -mxEvent.consume(a)}})}; +Menus.prototype.addInsertTableItem=function(a){function c(a,b){for(var c=["<table>"],d=0;d<a;d++){c.push("<tr>");for(var e=0;e<b;e++)c.push("<td><br></td>");c.push("</tr>")}c.push("</table>");return c.join("")}var d=this.editorUi.editor.graph;a=a.addItem("",null,mxUtils.bind(this,function(a){var b=d.getParentByName(mxEvent.getSource(a),"TD");if(null!=b&&null!=d.cellEditor.textarea){var e=d.getParentByName(b,"TR"),f=d.cellEditor.textarea.getElementsByTagName("table");a=[];for(var h=0;h<f.length;h++)a.push(f[h]); +d.container.focus();d.pasteHtmlAtCaret(c(e.sectionRowIndex+1,b.cellIndex+1));b=d.cellEditor.textarea.getElementsByTagName("table");if(b.length==a.length+1)for(h=b.length-1;0<=h;h--)if(0==h||b[h]!=a[h-1]){d.selectNode(b[h].rows[0].cells[0]);break}}}));var b='<img src="'+mxClient.imageBasePath+'/transparent.gif" width="16" height="16"/>';a.firstChild.innerHTML="";var f=function(a,c){var d=document.createElement("table");d.setAttribute("border","1");d.style.borderCollapse="collapse";mxClient.IS_QUIRKS|| +d.setAttribute("cellPadding","8");for(var e=0;e<a;e++)for(var g=d.insertRow(e),f=0;f<c;f++){var h=g.insertCell(-1);mxClient.IS_QUIRKS&&(h.innerHTML=b)}return d}(5,5);a.firstChild.appendChild(f);var e=document.createElement("div");e.style.padding="4px";e.style.fontSize=Menus.prototype.defaultFontSize+"px";e.innerHTML="1x1";a.firstChild.appendChild(e);mxEvent.addListener(f,"mouseover",function(a){var c=d.getParentByName(mxEvent.getSource(a),"TD");if(null!=c){for(var h=d.getParentByName(c,"TR"),l=Math.min(20, +h.sectionRowIndex+2),m=Math.min(20,c.cellIndex+2),p=f.rows.length;p<l;p++)for(var n=f.insertRow(p),u=0;u<f.rows[0].cells.length;u++){var q=n.insertCell(-1);mxClient.IS_QUIRKS&&(q.innerHTML=b)}for(p=0;p<f.rows.length;p++)for(n=f.rows[p],u=n.cells.length;u<m;u++)q=n.insertCell(-1),mxClient.IS_QUIRKS&&(q.innerHTML=b);e.innerHTML=c.cellIndex+1+"x"+(h.sectionRowIndex+1);for(l=0;l<f.rows.length;l++)for(m=f.rows[l],p=0;p<m.cells.length;p++)m.cells[p].style.backgroundColor=l<=h.sectionRowIndex&&p<=c.cellIndex? +"blue":"white";mxEvent.consume(a)}})}; Menus.prototype.edgeStyleChange=function(a,c,d,b,f,e,h){return a.addItem(c,null,mxUtils.bind(this,function(){var a=this.editorUi.editor.graph;a.stopEditing(!1);a.getModel().beginUpdate();try{for(var c=a.getSelectionCells(),e=[],f=0;f<c.length;f++){var p=c[f];if(a.getModel().isEdge(p)){if(h){var n=a.getCellGeometry(p);null!=n&&(n=n.clone(),n.points=null,a.getModel().setGeometry(p,n))}for(var u=0;u<d.length;u++)a.setCellStyles(d[u],b[u],[p]);e.push(p)}}this.editorUi.fireEvent(new mxEventObject("styleChanged","keys", d,"values",b,"cells",e))}finally{a.getModel().endUpdate()}}),e,f)};Menus.prototype.styleChange=function(a,c,d,b,f,e,h,g){var k=this.createStyleChangeFunction(d,b);return a.addItem(c,null,mxUtils.bind(this,function(){var a=this.editorUi.editor.graph;null!=h&&a.cellEditor.isContentEditing()?h():k(g)}),e,f)}; Menus.prototype.createStyleChangeFunction=function(a,c){return mxUtils.bind(this,function(d){var b=this.editorUi.editor.graph;b.stopEditing(!1);b.getModel().beginUpdate();try{for(var f=0;f<a.length;f++)b.setCellStyles(a[f],c[f]);null!=d&&d();this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",a,"values",c,"cells",b.getSelectionCells()))}finally{b.getModel().endUpdate()}})}; @@ -3225,9 +3230,9 @@ ColorDialog.addRecentColor=function(a,c){null!=a&&(mxUtils.remove(a,ColorDialog. var AboutDialog=function(a){var c=document.createElement("div");c.setAttribute("align","center");var d=document.createElement("h3");mxUtils.write(d,mxResources.get("about")+" GraphEditor");c.appendChild(d);d=document.createElement("img");d.style.border="0px";d.setAttribute("width","176");d.setAttribute("width","151");d.setAttribute("src",IMAGE_PATH+"/logo.png");c.appendChild(d);mxUtils.br(c);mxUtils.write(c,"Powered by mxGraph "+mxClient.VERSION);mxUtils.br(c);d=document.createElement("a");d.setAttribute("href", "http://www.jgraph.com/");d.setAttribute("target","_blank");mxUtils.write(d,"www.jgraph.com");c.appendChild(d);mxUtils.br(c);mxUtils.br(c);d=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});d.className="geBtn gePrimaryBtn";c.appendChild(d);this.container=c},FilenameDialog=function(a,c,d,b,f,e,h,g,k,l){k=null!=k?k:!0;var m,p,n=document.createElement("table"),u=document.createElement("tbody");n.style.marginTop="8px";m=document.createElement("tr");p=document.createElement("td");p.style.whiteSpace= "nowrap";p.style.fontSize="10pt";p.style.width="120px";mxUtils.write(p,(f||mxResources.get("filename"))+":");m.appendChild(p);var q=document.createElement("input");q.setAttribute("value",c||"");q.style.marginLeft="4px";q.style.width="180px";var r=mxUtils.button(d,function(){if(null==e||e(q.value))k&&a.hideDialog(),b(q.value)});r.className="geBtn gePrimaryBtn";this.init=function(){if(null!=f||null==h)if(q.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?q.select(): -document.execCommand("selectAll",!1,null),Graph.fileSupport){var a=n.parentNode,b=null;mxEvent.addListener(a,"dragleave",function(a){null!=b&&(b.style.backgroundColor="",b=null);a.stopPropagation();a.preventDefault()});mxEvent.addListener(a,"dragover",mxUtils.bind(this,function(a){null==b&&(!mxClient.IS_IE||10<document.documentMode)&&(b=q,b.style.backgroundColor="#ebf2f9");a.stopPropagation();a.preventDefault()}));mxEvent.addListener(a,"drop",mxUtils.bind(this,function(a){null!=b&&(b.style.backgroundColor= -"",b=null);0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")&&(q.value=decodeURIComponent(a.dataTransfer.getData("text/uri-list")),r.click());a.stopPropagation();a.preventDefault()}))}};p=document.createElement("td");p.appendChild(q);m.appendChild(p);null==f&&null!=h||u.appendChild(m);null!=h&&(m=document.createElement("tr"),p=document.createElement("td"),p.colSpan=2,p.appendChild(h),m.appendChild(p),u.appendChild(m));m=document.createElement("tr");p=document.createElement("td");p.colSpan= -2;p.style.paddingTop="20px";p.style.whiteSpace="nowrap";p.setAttribute("align","right");c=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=l&&l()});c.className="geBtn";a.editor.cancelFirst&&p.appendChild(c);null!=g&&(d=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(g)}),d.className="geBtn",p.appendChild(d));mxEvent.addListener(q,"keypress",function(a){13==a.keyCode&&r.click()});p.appendChild(r);a.editor.cancelFirst||p.appendChild(c);m.appendChild(p); +document.execCommand("selectAll",!1,null),Graph.fileSupport){var a=n.parentNode;if(null!=a){var b=null;mxEvent.addListener(a,"dragleave",function(a){null!=b&&(b.style.backgroundColor="",b=null);a.stopPropagation();a.preventDefault()});mxEvent.addListener(a,"dragover",mxUtils.bind(this,function(a){null==b&&(!mxClient.IS_IE||10<document.documentMode)&&(b=q,b.style.backgroundColor="#ebf2f9");a.stopPropagation();a.preventDefault()}));mxEvent.addListener(a,"drop",mxUtils.bind(this,function(a){null!=b&& +(b.style.backgroundColor="",b=null);0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")&&(q.value=decodeURIComponent(a.dataTransfer.getData("text/uri-list")),r.click());a.stopPropagation();a.preventDefault()}))}}};p=document.createElement("td");p.appendChild(q);m.appendChild(p);null==f&&null!=h||u.appendChild(m);null!=h&&(m=document.createElement("tr"),p=document.createElement("td"),p.colSpan=2,p.appendChild(h),m.appendChild(p),u.appendChild(m));m=document.createElement("tr");p=document.createElement("td"); +p.colSpan=2;p.style.paddingTop="20px";p.style.whiteSpace="nowrap";p.setAttribute("align","right");c=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=l&&l()});c.className="geBtn";a.editor.cancelFirst&&p.appendChild(c);null!=g&&(d=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(g)}),d.className="geBtn",p.appendChild(d));mxEvent.addListener(q,"keypress",function(a){13==a.keyCode&&r.click()});p.appendChild(r);a.editor.cancelFirst||p.appendChild(c);m.appendChild(p); u.appendChild(m);n.appendChild(u);this.container=n},TextareaDialog=function(a,c,d,b,f,e,h,g,k,l,m,p){h=null!=h?h:300;g=null!=g?g:120;l=null!=l?l:!1;var n,u,q=document.createElement("table"),r=document.createElement("tbody");n=document.createElement("tr");u=document.createElement("td");u.style.fontSize="10pt";u.style.width="100px";mxUtils.write(u,c);n.appendChild(u);r.appendChild(n);n=document.createElement("tr");u=document.createElement("td");var t=document.createElement("textarea");m&&t.setAttribute("wrap", "off");t.setAttribute("spellcheck","false");t.setAttribute("autocorrect","off");t.setAttribute("autocomplete","off");t.setAttribute("autocapitalize","off");mxUtils.write(t,d||"");t.style.resize="none";t.style.width=h+"px";t.style.height=g+"px";this.textarea=t;this.init=function(){t.focus();t.scrollTop=0};u.appendChild(t);n.appendChild(u);r.appendChild(n);n=document.createElement("tr");u=document.createElement("td");u.style.paddingTop="14px";u.style.whiteSpace="nowrap";u.setAttribute("align","right"); c=mxUtils.button(e||mxResources.get("cancel"),function(){a.hideDialog();null!=f&&f()});c.className="geBtn";a.editor.cancelFirst&&u.appendChild(c);null!=k&&k(u,t);null!=b&&(k=mxUtils.button(p||mxResources.get("apply"),function(){l||a.hideDialog();b(t.value)}),k.className="geBtn gePrimaryBtn",u.appendChild(k));a.editor.cancelFirst||u.appendChild(c);n.appendChild(u);r.appendChild(n);q.appendChild(r);this.container=q},EditDiagramDialog=function(a){var c=document.createElement("div");c.style.textAlign= @@ -3246,17 +3251,17 @@ k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResourc "checkbox");r.checked=null==b.background||b.background==mxConstants.NONE;k=document.createElement("td");k.appendChild(r);mxUtils.write(k,mxResources.get("transparent"));f.appendChild(k);l.appendChild(f);f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("borderWidth")+":");f.appendChild(k);var t=document.createElement("input");t.setAttribute("type","number");t.setAttribute("value",ExportDialog.lastBorderValue);t.style.width="180px"; k=document.createElement("td");k.appendChild(t);f.appendChild(k);l.appendChild(f);e.appendChild(l);mxEvent.addListener(p,"change",c);c();mxEvent.addListener(n,"change",function(){var a=Math.max(0,parseFloat(n.value)||100)/100;n.value=parseFloat((100*a).toFixed(2));0<h?(u.value=Math.floor(h*a),q.value=Math.floor(g*a)):(n.value="100",u.value=h,q.value=g);d()});mxEvent.addListener(u,"change",function(){var a=parseInt(u.value)/h;0<a?(n.value=parseFloat((100*a).toFixed(2)),q.value=Math.floor(g*a)):(n.value= "100",u.value=h,q.value=g);d()});mxEvent.addListener(q,"change",function(){var a=parseInt(q.value)/g;0<a?(n.value=parseFloat((100*a).toFixed(2)),u.value=Math.floor(h*a)):(n.value="100",u.value=h,q.value=g);d()});f=document.createElement("tr");k=document.createElement("td");k.setAttribute("align","right");k.style.paddingTop="22px";k.colSpan=2;var w=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(){if(0>=parseInt(n.value))mxUtils.alert(mxResources.get("drawingEmpty"));else{var c= -m.value,d=p.value,e=Math.max(0,parseFloat(n.value)||100)/100,f=Math.max(0,parseInt(t.value)),g=b.background;if(("svg"==d||"png"==d)&&r.checked)g=null;else if(null==g||g==mxConstants.NONE)g="#ffffff";ExportDialog.lastBorderValue=f;ExportDialog.exportFile(a,c,d,g,e,f)}}));w.className="geBtn gePrimaryBtn";var v=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});v.className="geBtn";a.editor.cancelFirst?(k.appendChild(v),k.appendChild(w)):(k.appendChild(w),k.appendChild(v));f.appendChild(k); +m.value,d=p.value,e=Math.max(0,parseFloat(n.value)||100)/100,g=Math.max(0,parseInt(t.value)),f=b.background;if(("svg"==d||"png"==d)&&r.checked)f=null;else if(null==f||f==mxConstants.NONE)f="#ffffff";ExportDialog.lastBorderValue=g;ExportDialog.exportFile(a,c,d,f,e,g)}}));w.className="geBtn gePrimaryBtn";var v=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});v.className="geBtn";a.editor.cancelFirst?(k.appendChild(v),k.appendChild(w)):(k.appendChild(w),k.appendChild(v));f.appendChild(k); l.appendChild(f);e.appendChild(l);this.container=e};ExportDialog.lastBorderValue=0;ExportDialog.showGifOption=!0;ExportDialog.showXmlOption=!0; ExportDialog.exportFile=function(a,c,d,b,f,e){var h=a.editor.graph;if("xml"==d)ExportDialog.saveLocalFile(a,mxUtils.getXml(a.editor.getGraphXml()),c,d);else if("svg"==d)ExportDialog.saveLocalFile(a,mxUtils.getXml(h.getSvg(b,f,e)),c,d);else{var g=h.getGraphBounds(),k=mxUtils.createXmlDocument(),l=k.createElement("output");k.appendChild(l);k=new mxXmlCanvas2D(l);k.translate(Math.floor((e/f-g.x)/h.view.scale),Math.floor((e/f-g.y)/h.view.scale));k.scale(f/h.view.scale);(new mxImageExport).drawState(h.getView().getState(h.model.root), k);l="xml="+encodeURIComponent(mxUtils.getXml(l));k=Math.ceil(g.width*f/h.view.scale+2*e);f=Math.ceil(g.height*f/h.view.scale+2*e);l.length<=MAX_REQUEST_SIZE&&k*f<MAX_AREA?(a.hideDialog(),(new mxXmlRequest(EXPORT_URL,"format="+d+"&filename="+encodeURIComponent(c)+"&bg="+(null!=b?b:"none")+"&w="+k+"&h="+f+"&"+l)).simulate(document,"_blank")):mxUtils.alert(mxResources.get("drawingTooLarge"))}}; ExportDialog.saveLocalFile=function(a,c,d,b){c.length<MAX_REQUEST_SIZE?(a.hideDialog(),(new mxXmlRequest(SAVE_URL,"xml="+encodeURIComponent(c)+"&filename="+encodeURIComponent(d)+"&format="+b)).simulate(document,"_blank")):(mxUtils.alert(mxResources.get("drawingTooLarge")),mxUtils.popup(xml))}; -var EditDataDialog=function(a,c){function d(){0<w.value.length?v.removeAttribute("disabled"):v.setAttribute("disabled","disabled")}var b=document.createElement("div"),f=a.editor.graph,e=f.getModel().getValue(c);if(!mxUtils.isNode(e)){var h=mxUtils.createXmlDocument().createElement("object");h.setAttribute("label",e||"");e=h}var g=new mxForm("properties");g.table.style.width="100%";for(var k=e.attributes,l=[],m=[],p=0,n=EditDataDialog.getDisplayIdForCell(a,c),u=function(a,b){var c=document.createElement("div"); -c.style.position="relative";c.style.paddingRight="20px";c.style.boxSizing="border-box";c.style.width="100%";var d=document.createElement("a"),e=mxUtils.createImage(Dialog.prototype.closeImage);e.style.height="9px";e.style.fontSize="9px";e.style.marginBottom=mxClient.IS_IE11?"-1px":"5px";d.className="geButton";d.setAttribute("title",mxResources.get("delete"));d.style.position="absolute";d.style.top="4px";d.style.right="0px";d.style.margin="0px";d.style.width="9px";d.style.height="9px";d.style.cursor= -"pointer";d.appendChild(e);e=function(a){return function(){for(var b=0,c=0;c<l.length;c++){if(l[c]==a){m[c]=null;g.table.deleteRow(b+(null!=n?1:0));break}null!=m[c]&&b++}}}(b);mxEvent.addListener(d,"click",e);e=a.parentNode;c.appendChild(a);c.appendChild(d);e.appendChild(c)},h=function(a,b,c){l[a]=b;m[a]=g.addTextarea(l[p]+":",c,2);m[a].style.width="100%";u(m[a],b)},q=[],r=f.getModel().getParent(c)==f.getModel().getRoot(),t=0;t<k.length;t++)!r&&"label"==k[t].nodeName||"placeholders"==k[t].nodeName|| -q.push({name:k[t].nodeName,value:k[t].nodeValue});q.sort(function(a,b){return a.name<b.name?-1:a.name>b.name?1:0});null!=n&&(k=document.createElement("input"),k.style.width="280px",k.style.textAlign="center",k.setAttribute("type","text"),k.setAttribute("readOnly","true"),k.setAttribute("value",n),g.addField(mxResources.get("id")+":",k));for(t=0;t<q.length;t++)h(p,q[t].name,q[t].value),p++;h=document.createElement("div");h.style.cssText="position:absolute;left:30px;right:30px;overflow-y:auto;top:30px;bottom:80px;"; +var EditDataDialog=function(a,c){function d(){0<w.value.length?v.removeAttribute("disabled"):v.setAttribute("disabled","disabled")}var b=document.createElement("div"),f=a.editor.graph,e=f.getModel().getValue(c);if(!mxUtils.isNode(e)){var h=mxUtils.createXmlDocument().createElement("object");h.setAttribute("label",e||"");e=h}var g=new mxForm("properties");g.table.style.width="100%";for(var k=e.attributes,l=[],m=[],p=0,n=null!=EditDataDialog.getDisplayIdForCell?EditDataDialog.getDisplayIdForCell(a, +c):null,u=function(a,b){var c=document.createElement("div");c.style.position="relative";c.style.paddingRight="20px";c.style.boxSizing="border-box";c.style.width="100%";var d=document.createElement("a"),e=mxUtils.createImage(Dialog.prototype.closeImage);e.style.height="9px";e.style.fontSize="9px";e.style.marginBottom=mxClient.IS_IE11?"-1px":"5px";d.className="geButton";d.setAttribute("title",mxResources.get("delete"));d.style.position="absolute";d.style.top="4px";d.style.right="0px";d.style.margin= +"0px";d.style.width="9px";d.style.height="9px";d.style.cursor="pointer";d.appendChild(e);e=function(a){return function(){for(var b=0,c=0;c<l.length;c++){if(l[c]==a){m[c]=null;g.table.deleteRow(b+(null!=n?1:0));break}null!=m[c]&&b++}}}(b);mxEvent.addListener(d,"click",e);e=a.parentNode;c.appendChild(a);c.appendChild(d);e.appendChild(c)},h=function(a,b,c){l[a]=b;m[a]=g.addTextarea(l[p]+":",c,2);m[a].style.width="100%";u(m[a],b)},q=[],r=f.getModel().getParent(c)==f.getModel().getRoot(),t=0;t<k.length;t++)!r&& +"label"==k[t].nodeName||"placeholders"==k[t].nodeName||q.push({name:k[t].nodeName,value:k[t].nodeValue});q.sort(function(a,b){return a.name<b.name?-1:a.name>b.name?1:0});null!=n&&(k=document.createElement("input"),k.style.width="280px",k.style.textAlign="center",k.setAttribute("type","text"),k.setAttribute("readOnly","true"),k.setAttribute("value",n),g.addField(mxResources.get("id")+":",k));for(t=0;t<q.length;t++)h(p,q[t].name,q[t].value),p++;h=document.createElement("div");h.style.cssText="position:absolute;left:30px;right:30px;overflow-y:auto;top:30px;bottom:80px;"; h.appendChild(g.table);q=document.createElement("div");q.style.whiteSpace="nowrap";q.style.marginTop="6px";var w=document.createElement("input");w.setAttribute("placeholder",mxResources.get("enterPropertyName"));w.setAttribute("type","text");w.setAttribute("size",mxClient.IS_IE||mxClient.IS_IE11?"18":"22");w.style.marginLeft="2px";q.appendChild(w);h.appendChild(q);b.appendChild(h);var v=mxUtils.button(mxResources.get("addProperty"),function(){var a=w.value;if(0<a.length&&"label"!=a&&"placeholders"!= -a&&0>a.indexOf(":"))try{var b=mxUtils.indexOf(l,a);if(0<=b&&null!=m[b])m[b].focus();else{e.cloneNode(!1).setAttribute(a,"");0<=b&&(l.splice(b,1),m.splice(b,1));l.push(a);var c=g.addTextarea(a+":","",2);c.style.width="100%";m.push(c);u(c,a);c.focus()}w.value=""}catch(E){mxUtils.alert(E)}else mxUtils.alert(mxResources.get("invalidName"))});this.init=function(){0<m.length?m[0].focus():w.focus()};v.setAttribute("disabled","disabled");v.style.marginLeft="10px";v.style.width="144px";q.appendChild(v);h= +a&&0>a.indexOf(":"))try{var b=mxUtils.indexOf(l,a);if(0<=b&&null!=m[b])m[b].focus();else{e.cloneNode(!1).setAttribute(a,"");0<=b&&(l.splice(b,1),m.splice(b,1));l.push(a);var c=g.addTextarea(a+":","",2);c.style.width="100%";m.push(c);u(c,a);c.focus()}w.value=""}catch(F){mxUtils.alert(F)}else mxUtils.alert(mxResources.get("invalidName"))});this.init=function(){0<m.length?m[0].focus():w.focus()};v.setAttribute("disabled","disabled");v.style.marginLeft="10px";v.style.width="144px";q.appendChild(v);h= mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog.apply(a,arguments)});h.className="geBtn";q=mxUtils.button(mxResources.get("apply"),function(){try{a.hideDialog.apply(a,arguments);e=e.cloneNode(!0);for(var b=!1,d=0;d<l.length;d++)null==m[d]?e.removeAttribute(l[d]):(e.setAttribute(l[d],m[d].value),b=b||"placeholder"==l[d]&&"1"==e.getAttribute("placeholders"));b&&e.removeAttribute("label");f.getModel().setValue(c,e)}catch(D){mxUtils.alert(D)}});q.className="geBtn gePrimaryBtn";mxEvent.addListener(w, "keyup",d);mxEvent.addListener(w,"change",d);k=document.createElement("div");k.style.cssText="position:absolute;left:30px;right:30px;text-align:right;bottom:30px;height:40px;";if(a.editor.graph.getModel().isVertex(c)||a.editor.graph.getModel().isEdge(c)){r=document.createElement("span");r.style.marginRight="10px";t=document.createElement("input");t.setAttribute("type","checkbox");t.style.marginRight="6px";"1"==e.getAttribute("placeholders")&&(t.setAttribute("checked","checked"),t.defaultChecked=!0); mxEvent.addListener(t,"click",function(){"1"==e.getAttribute("placeholders")?e.removeAttribute("placeholders"):e.setAttribute("placeholders","1")});r.appendChild(t);mxUtils.write(r,mxResources.get("placeholders"));if(null!=EditDataDialog.placeholderHelpLink){t=document.createElement("a");t.setAttribute("href",EditDataDialog.placeholderHelpLink);t.setAttribute("title",mxResources.get("help"));t.setAttribute("target","_blank");t.style.marginLeft="8px";t.style.cursor="help";var z=document.createElement("img"); @@ -3267,10 +3272,10 @@ var LinkDialog=function(a,c,d,b){var f=document.createElement("div");mxUtils.wri 0:3)+"px";c.style.background="url("+IMAGE_PATH+"/transparent.gif)";mxEvent.addListener(c,"click",function(){h.value="";h.focus()});e.appendChild(h);e.appendChild(c);f.appendChild(e);this.init=function(){h.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?h.select():document.execCommand("selectAll",!1,null)};e=document.createElement("div");e.style.marginTop="18px";e.style.textAlign="right";mxEvent.addListener(h,"keypress",function(c){13==c.keyCode&&(a.hideDialog(), b(h.value))});c=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});c.className="geBtn";a.editor.cancelFirst&&e.appendChild(c);d=mxUtils.button(d,function(){a.hideDialog();b(h.value)});d.className="geBtn gePrimaryBtn";e.appendChild(d);a.editor.cancelFirst||e.appendChild(c);f.appendChild(e);this.container=f},OutlineWindow=function(a,c,d,b,f){function e(){l.outline.pageScale=h.pageScale;l.outline.pageFormat=h.pageFormat;l.outline.pageVisible=h.pageVisible;l.outline.background=null== h.background||h.background==mxConstants.NONE?h.defaultPageBackgroundColor:h.background;var a=mxUtils.getCurrentStyle(h.container);g.style.backgroundColor=a.backgroundColor;null!=h.view.backgroundPageShape&&null!=l.outline.view.backgroundPageShape&&(l.outline.view.backgroundPageShape.fill=h.view.backgroundPageShape.fill);l.outline.refresh()}var h=a.editor.graph,g=document.createElement("div");g.style.position="absolute";g.style.width="100%";g.style.height="100%";g.style.border="1px solid whiteSmoke"; -g.style.overflow="hidden";this.window=new mxWindow(mxResources.get("outline"),g,c,d,b,f,!0,!0);this.window.minimumSize=new mxRectangle(0,0,80,80);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.setLocation=function(a,b){var c=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.documentElement.clientWidth|| -document.body.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var k=mxUtils.bind(this,function(){var a=this.window.getX(),b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",k);var l=a.createOutline(this.window);this.destroy=function(){mxEvent.removeListener(window,"resize",k);this.window.destroy();l.destroy()};this.window.addListener(mxEvent.RESIZE, -mxUtils.bind(this,function(){l.update(!1);l.outline.sizeDidChange()}));this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){l.suspended=!1;l.outline.refresh();l.update()}));this.window.addListener(mxEvent.HIDE,mxUtils.bind(this,function(){l.suspended=!0}));this.window.addListener(mxEvent.NORMALIZE,mxUtils.bind(this,function(){l.suspended=!1;l.update()}));this.window.addListener(mxEvent.MINIMIZE,mxUtils.bind(this,function(){l.suspended=!0}));var m=l.createGraph;l.createGraph=function(a){var b= -m.apply(this,arguments);b.gridEnabled=!1;b.pageScale=h.pageScale;b.pageFormat=h.pageFormat;b.background=null==h.background||h.background==mxConstants.NONE?h.defaultPageBackgroundColor:h.background;b.pageVisible=h.pageVisible;var c=mxUtils.getCurrentStyle(h.container);g.style.backgroundColor=c.backgroundColor;return b};l.init(g);a.editor.addListener("resetGraphView",e);a.addListener("pageFormatChanged",e);a.addListener("backgroundColorChanged",e);a.addListener("backgroundImageChanged",e);a.addListener("pageViewChanged", +g.style.overflow="hidden";this.window=new mxWindow(mxResources.get("outline"),g,c,d,b,f,!0,!0);this.window.minimumSize=new mxRectangle(0,0,80,80);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.setLocation=function(a,b){var c=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)- +this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var k=mxUtils.bind(this,function(){var a=this.window.getX(),b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",k);var l=a.createOutline(this.window);this.destroy=function(){mxEvent.removeListener(window,"resize",k);this.window.destroy();l.destroy()};this.window.addListener(mxEvent.RESIZE,mxUtils.bind(this, +function(){l.update(!1);l.outline.sizeDidChange()}));this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){l.suspended=!1;l.outline.refresh();l.update()}));this.window.addListener(mxEvent.HIDE,mxUtils.bind(this,function(){l.suspended=!0}));this.window.addListener(mxEvent.NORMALIZE,mxUtils.bind(this,function(){l.suspended=!1;l.update()}));this.window.addListener(mxEvent.MINIMIZE,mxUtils.bind(this,function(){l.suspended=!0}));var m=l.createGraph;l.createGraph=function(a){var b=m.apply(this, +arguments);b.gridEnabled=!1;b.pageScale=h.pageScale;b.pageFormat=h.pageFormat;b.background=null==h.background||h.background==mxConstants.NONE?h.defaultPageBackgroundColor:h.background;b.pageVisible=h.pageVisible;var c=mxUtils.getCurrentStyle(h.container);g.style.backgroundColor=c.backgroundColor;return b};l.init(g);a.editor.addListener("resetGraphView",e);a.addListener("pageFormatChanged",e);a.addListener("backgroundColorChanged",e);a.addListener("backgroundImageChanged",e);a.addListener("pageViewChanged", function(){e();l.update(!0)});if(l.outline.dialect==mxConstants.DIALECT_SVG){var p=a.actions.get("zoomIn"),n=a.actions.get("zoomOut");mxEvent.addMouseWheelListener(function(a,b){for(var c=!1,d=mxEvent.getSource(a);null!=d;){if(d==l.outline.view.canvas.ownerSVGElement){c=!0;break}d=d.parentNode}c&&(b?p.funct():n.funct(),mxEvent.consume(a))})}},LayersWindow=function(a,c,d,b,f){function e(b){if(g.isEnabled()&&null!=b){var c=g.convertValueToString(b),c=new FilenameDialog(a,c||mxResources.get("background"), mxResources.get("rename"),mxUtils.bind(this,function(a){null!=a&&g.cellLabelChanged(b,a)}),mxResources.get("enterName"));a.showDialog(c.container,300,100,!0,!0);c.init()}}function h(){function a(a,b,c,d){var f=document.createElement("div");f.className="geToolbarContainer";f.style.overflow="hidden";f.style.position="relative";f.style.padding="4px";f.style.height="22px";f.style.display="block";f.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;f.style.borderWidth= "0px 0px 1px 0px";f.style.borderColor="#c3c3c3";f.style.borderStyle="solid";f.style.whiteSpace="nowrap";f.setAttribute("title",b);var k=document.createElement("div");k.style.display="inline-block";k.style.width="100%";k.style.textOverflow="ellipsis";k.style.overflow="hidden";mxEvent.addListener(f,"dragover",function(b){b.dataTransfer.dropEffect="move";n=a;b.stopPropagation();b.preventDefault()});mxEvent.addListener(f,"dragstart",function(a){p=f;mxClient.IS_FF&&a.dataTransfer.setData("Text","<layer/>")}); @@ -3281,16 +3286,16 @@ b.style.display="block",b.style.textAlign="right",b.style.whiteSpace="nowrap",b. a-1);mxEvent.consume(b)})),0<=a&&a<u-1&&(k=document.createElement("a"),k.setAttribute("title",mxResources.get("toFront")),k.className="geButton",k.style.cssFloat="none",k.innerHTML="▲",k.style.width="14px",k.style.height="14px",k.style.fontSize="14px",k.style.margin="0px",k.style.marginTop="-1px",b.appendChild(k),mxEvent.addListener(k,"click",function(b){g.isEnabled()&&g.addCell(c,g.model.root,a+1);mxEvent.consume(b)})),f.appendChild(b);mxClient.IS_SVG&&(!mxClient.IS_IE||10<=document.documentMode)&& (f.setAttribute("draggable","true"),f.style.cursor="move")}mxEvent.addListener(f,"dblclick",function(a){var b=mxEvent.getSource(a).nodeName;"INPUT"!=b&&"IMG"!=b&&(e(c),mxEvent.consume(a))});g.getDefaultParent()==c?(f.style.background="white"==Dialog.backdropColor?"#e6eff8":"#505759",f.style.fontWeight=g.isEnabled()?"bold":"",q=c):mxEvent.addListener(f,"click",function(a){g.isEnabled()&&(g.setDefaultParent(d),g.view.setCurrentRoot(null),h())});m.appendChild(f)}u=g.model.getChildCount(g.model.root); m.innerHTML="";for(var b=u-1;0<=b;b--)mxUtils.bind(this,function(c){a(b,g.convertValueToString(c)||mxResources.get("background"),c,c)})(g.model.getChildAt(g.model.root,b));var c=g.convertValueToString(q)||mxResources.get("background");t.setAttribute("title",mxResources.get("removeIt",[c]));w.setAttribute("title",mxResources.get("moveSelectionTo",[c]));z.setAttribute("title",mxResources.get("duplicateIt",[c]));v.setAttribute("title",mxResources.get("editData"));g.isSelectionEmpty()&&(w.className="geButton mxDisabled")} -console.log("dialog.bg",Dialog.backdropColor);var g=a.editor.graph,k=document.createElement("div");k.style.userSelect="none";k.style.background="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;k.style.border="1px solid whiteSmoke";k.style.height="100%";k.style.marginBottom="10px";k.style.overflow="auto";var l=EditorUi.compactUi?"26px":"30px",m=document.createElement("div");m.style.backgroundColor="white"==Dialog.backdropColor?"#dcdcdc":Dialog.backdropColor;m.style.position="absolute"; -m.style.overflow="auto";m.style.left="0px";m.style.right="0px";m.style.top="0px";m.style.bottom=parseInt(l)+7+"px";k.appendChild(m);var p=null,n=null;mxEvent.addListener(k,"dragover",function(a){a.dataTransfer.dropEffect="move";n=0;a.stopPropagation();a.preventDefault()});mxEvent.addListener(k,"drop",function(a){a.stopPropagation();a.preventDefault()});var u=null,q=null,r=document.createElement("div");r.className="geToolbarContainer";r.style.position="absolute";r.style.bottom="0px";r.style.left="0px"; -r.style.right="0px";r.style.height=l;r.style.overflow="hidden";r.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";r.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;r.style.borderWidth="1px 0px 0px 0px";r.style.borderColor="#c3c3c3";r.style.borderStyle="solid";r.style.display="block";r.style.whiteSpace="nowrap";mxClient.IS_QUIRKS&&(r.style.filter="none");l=document.createElement("a");l.className="geButton";mxClient.IS_QUIRKS&&(l.style.filter="none");var t= -l.cloneNode();t.innerHTML='<div class="geSprite geSprite-delete" style="display:inline-block;"></div>';mxEvent.addListener(t,"click",function(a){if(g.isEnabled()){g.model.beginUpdate();try{var b=g.model.root.getIndex(q);g.removeCells([q],!1);0==g.model.getChildCount(g.model.root)?(g.model.add(g.model.root,new mxCell),g.setDefaultParent(null)):0<b&&b<=g.model.getChildCount(g.model.root)?g.setDefaultParent(g.model.getChildAt(g.model.root,b-1)):g.setDefaultParent(null)}finally{g.model.endUpdate()}}mxEvent.consume(a)}); -g.isEnabled()||(t.className="geButton mxDisabled");r.appendChild(t);var w=l.cloneNode();w.innerHTML='<div class="geSprite geSprite-insert" style="display:inline-block;"></div>';mxEvent.addListener(w,"click",function(a){g.isEnabled()&&!g.isSelectionEmpty()&&g.moveCells(g.getSelectionCells(),0,0,!1,q)});r.appendChild(w);var v=l.cloneNode();v.innerHTML='<div class="geSprite geSprite-dots" style="display:inline-block;"></div>';v.setAttribute("title",mxResources.get("rename"));mxEvent.addListener(v,"click", -function(b){g.isEnabled()&&a.showDataDialog(q);mxEvent.consume(b)});g.isEnabled()||(v.className="geButton mxDisabled");r.appendChild(v);var z=l.cloneNode();z.innerHTML='<div class="geSprite geSprite-duplicate" style="display:inline-block;"></div>';mxEvent.addListener(z,"click",function(a){if(g.isEnabled()){a=null;g.model.beginUpdate();try{a=g.cloneCell(q),g.cellLabelChanged(a,mxResources.get("untitledLayer")),a.setVisible(!0),a=g.addCell(a,g.model.root),g.setDefaultParent(a)}finally{g.model.endUpdate()}null== -a||g.isCellLocked(a)||g.selectAll(a)}});g.isEnabled()||(z.className="geButton mxDisabled");r.appendChild(z);l=l.cloneNode();l.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';l.setAttribute("title",mxResources.get("addLayer"));mxEvent.addListener(l,"click",function(a){if(g.isEnabled()){g.model.beginUpdate();try{var b=g.addCell(new mxCell(mxResources.get("untitledLayer")),g.model.root);g.setDefaultParent(b)}finally{g.model.endUpdate()}}mxEvent.consume(a)});g.isEnabled()|| -(l.className="geButton mxDisabled");r.appendChild(l);k.appendChild(r);h();g.model.addListener(mxEvent.CHANGE,function(){h()});g.selectionModel.addListener(mxEvent.CHANGE,function(){g.isSelectionEmpty()?w.className="geButton mxDisabled":w.className="geButton"});this.window=new mxWindow(mxResources.get("layers"),k,c,d,b,f,!0,!0);this.window.minimumSize=new mxRectangle(0,0,120,120);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0); -this.refreshLayers=h;this.window.setLocation=function(a,b){var c=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var x=mxUtils.bind(this,function(){var a=this.window.getX(),b=this.window.getY(); -this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",x);this.destroy=function(){mxEvent.removeListener(window,"resize",x);this.window.destroy()}}; +var g=a.editor.graph,k=document.createElement("div");k.style.userSelect="none";k.style.background="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;k.style.border="1px solid whiteSmoke";k.style.height="100%";k.style.marginBottom="10px";k.style.overflow="auto";var l=EditorUi.compactUi?"26px":"30px",m=document.createElement("div");m.style.backgroundColor="white"==Dialog.backdropColor?"#dcdcdc":Dialog.backdropColor;m.style.position="absolute";m.style.overflow="auto";m.style.left="0px"; +m.style.right="0px";m.style.top="0px";m.style.bottom=parseInt(l)+7+"px";k.appendChild(m);var p=null,n=null;mxEvent.addListener(k,"dragover",function(a){a.dataTransfer.dropEffect="move";n=0;a.stopPropagation();a.preventDefault()});mxEvent.addListener(k,"drop",function(a){a.stopPropagation();a.preventDefault()});var u=null,q=null,r=document.createElement("div");r.className="geToolbarContainer";r.style.position="absolute";r.style.bottom="0px";r.style.left="0px";r.style.right="0px";r.style.height=l;r.style.overflow= +"hidden";r.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";r.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;r.style.borderWidth="1px 0px 0px 0px";r.style.borderColor="#c3c3c3";r.style.borderStyle="solid";r.style.display="block";r.style.whiteSpace="nowrap";mxClient.IS_QUIRKS&&(r.style.filter="none");l=document.createElement("a");l.className="geButton";mxClient.IS_QUIRKS&&(l.style.filter="none");var t=l.cloneNode();t.innerHTML='<div class="geSprite geSprite-delete" style="display:inline-block;"></div>'; +mxEvent.addListener(t,"click",function(a){if(g.isEnabled()){g.model.beginUpdate();try{var b=g.model.root.getIndex(q);g.removeCells([q],!1);0==g.model.getChildCount(g.model.root)?(g.model.add(g.model.root,new mxCell),g.setDefaultParent(null)):0<b&&b<=g.model.getChildCount(g.model.root)?g.setDefaultParent(g.model.getChildAt(g.model.root,b-1)):g.setDefaultParent(null)}finally{g.model.endUpdate()}}mxEvent.consume(a)});g.isEnabled()||(t.className="geButton mxDisabled");r.appendChild(t);var w=l.cloneNode(); +w.innerHTML='<div class="geSprite geSprite-insert" style="display:inline-block;"></div>';mxEvent.addListener(w,"click",function(a){g.isEnabled()&&!g.isSelectionEmpty()&&g.moveCells(g.getSelectionCells(),0,0,!1,q)});r.appendChild(w);var v=l.cloneNode();v.innerHTML='<div class="geSprite geSprite-dots" style="display:inline-block;"></div>';v.setAttribute("title",mxResources.get("rename"));mxEvent.addListener(v,"click",function(b){g.isEnabled()&&a.showDataDialog(q);mxEvent.consume(b)});g.isEnabled()|| +(v.className="geButton mxDisabled");r.appendChild(v);var z=l.cloneNode();z.innerHTML='<div class="geSprite geSprite-duplicate" style="display:inline-block;"></div>';mxEvent.addListener(z,"click",function(a){if(g.isEnabled()){a=null;g.model.beginUpdate();try{a=g.cloneCell(q),g.cellLabelChanged(a,mxResources.get("untitledLayer")),a.setVisible(!0),a=g.addCell(a,g.model.root),g.setDefaultParent(a)}finally{g.model.endUpdate()}null==a||g.isCellLocked(a)||g.selectAll(a)}});g.isEnabled()||(z.className="geButton mxDisabled"); +r.appendChild(z);l=l.cloneNode();l.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';l.setAttribute("title",mxResources.get("addLayer"));mxEvent.addListener(l,"click",function(a){if(g.isEnabled()){g.model.beginUpdate();try{var b=g.addCell(new mxCell(mxResources.get("untitledLayer")),g.model.root);g.setDefaultParent(b)}finally{g.model.endUpdate()}}mxEvent.consume(a)});g.isEnabled()||(l.className="geButton mxDisabled");r.appendChild(l);k.appendChild(r);h();g.model.addListener(mxEvent.CHANGE, +function(){h()});g.selectionModel.addListener(mxEvent.CHANGE,function(){g.isSelectionEmpty()?w.className="geButton mxDisabled":w.className="geButton"});this.window=new mxWindow(mxResources.get("layers"),k,c,d,b,f,!0,!0);this.window.minimumSize=new mxRectangle(0,0,120,120);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.refreshLayers=h;this.window.setLocation=function(a,b){var c=window.innerHeight|| +document.body.clientHeight||document.documentElement.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var x=mxUtils.bind(this,function(){var a=this.window.getX(),b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",x);this.destroy= +function(){mxEvent.removeListener(window,"resize",x);this.window.destroy()}}; (function(){Sidebar.prototype.tagIndex="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"; Sidebar.prototype.searchFileData="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"; Sidebar.prototype.gearImage=GRAPH_IMAGE_PATH+"/clipart/Gear_128x128.png";Sidebar.prototype.libAliases={aws2:"aws3",gcp:"gcp2"};Sidebar.prototype.defaultEntries="general;uml;er;bpmn;flowchart;basic;arrows2";Sidebar.prototype.signs="Animals Food Healthcare Nature People Safety Science Sports Tech Transportation Travel".split(" ");Sidebar.prototype.ibm="Analytics Applications Blockchain Data DevOps Infrastructure Management Miscellaneous Security Social Users VPC".split(" ");Sidebar.prototype.allied_telesis= @@ -3357,33 +3362,32 @@ this.addDataEntry("container swimlane pool horizontal",480,360,"Horizontal Pool this.addDataEntry("vertical tree layout",280,190,"Vertical Tree Layout","5ZXNUoMwEICfhjuQWvVaqL3oxXa8p7ADmQmECUspfXo3JNgirdMZ7UE9MGT/s182E49FxX6leZW/qBSkx5Yei7RSaFfFPgIpvdAXqcdiLwx9+rzw6YI16K1+xTWUeE1AaAN2XDZgNW+gUSTcOG00AP2eeacatI41dtI51q0oJC9JWuRY0M7jgJY1co1rcTBOVJtsSouDKpEPHkkuZOpyshipxiCc+PalWWwSaKjFgW/lICfGQZSgN10FLgOpXSO0e9hfhNGrHIkVqAJQd+TSihRzB+TBAvNzEFk+hD06Ja+tIvuIPbKlhcN7HjWboH41x/wZa5sLhHXFEyO3NBhjvle1GZ5v0wW4kfC7sXgCIfDPQJj9AIPZhEFkpoFUwf8CcTcBMekf0gzWTgS5Ve3yqFj0CjLshts6YqNVU6aQugtjM5t0X3Oi6qrRCYzGla5zBnhyelOaGiRHsRtn/w6c+cUpmVL601Ny/xunZH6bKSHx+Cz2ttGr+Q4="), this.addDataEntry("horizontal tree layout",310,160,"Horizontal Tree Layout","5ZXNUoMwEMefJncgtd4LVQ96sX2BtOxAZgJhwlJKn94NSQWkdTqjHtQDQ/a/X+THZsJ4XBwfjajyF52CYnzNeGy0RrcqjjEoxaJApownLIoCelj0cMUb9t6gEgZKvCUhcgkHoRpwypM28qRLFDZsawDo9Sw63aALrbFTPrRuZaFESdYqx4K+PQlpWaMwuJEnG0TdyTdU5IkV9rlUqa/JE6QeZ2MU27d2FQ3U8iR2fds+3wbIEsy2q8BXINlvBQzC8SqOXvIsHkEXgKajkFammLsIHjpkQQ4yy89pSy+K2gnZe+5AlxYe8GXYfAb71f7oj1jbXCJsKrG3dkujMeV70zajy9v0CX4ogm5qjiCEwQUIi29gsJgxiO00kBT+LxB3MxCz/UOawcaboHa6XQ/CqhfIMT5dYzpGN2UKqT8yrrYt+Dkp6q8bs4fJwNKBzgBH/2/O04ASKA/T6l/Bs7w6J3NOf3pO7n/nnCx/Zk7IHC7H3je5O98A"), this.addEntry("vertical flow layout",function(){return d.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Vertical Flow Layout",!0)}),this.addEntry("horizontal flow layout",function(){var a=d.graph.cloneCell(b);a.geometry=new mxGeometry(0,0,460,150);a.style="swimlane;html=1;startSize=20;horizontal=0;childLayout=flowLayout;flowOrientation=west;resizable=0;interRankCellSpacing=50;containerType=tree;";a.value="Horizontal Flow Layout";return d.createVertexTemplateFromCells([a],a.geometry.width, -a.geometry.height,"Horizontal Flow Layout",!0)})])}})();(function(){Sidebar.prototype.addAlliedTelesisPalette=function(){this.addAlliedTelesisBuildingsPalette(60,"allied telesis",this,"aspect=fixed;perimeter=ellipsePerimeter;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/");this.addAlliedTelesisComputerTerminalsPalette(60,"allied telesis",this,"aspect=fixed;perimeter=ellipsePerimeter;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/");this.addAlliedTelesisMediaConvertersPalette(60,"allied telesis",this, -"aspect=fixed;perimeter=ellipsePerimeter;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/");this.addAlliedTelesisSecurityPalette(60,"allied telesis",this,"aspect=fixed;perimeter=ellipsePerimeter;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/");this.addAlliedTelesisStoragePalette(60,"allied telesis",this,"aspect=fixed;perimeter=ellipsePerimeter;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/");this.addAlliedTelesisSwitchPalette(60, -"allied telesis",this,"aspect=fixed;perimeter=ellipsePerimeter;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/");this.addAlliedTelesisWirelessPalette(60,"allied telesis",this,"aspect=fixed;perimeter=ellipsePerimeter;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/")};Sidebar.prototype.addAlliedTelesisBuildingsPalette=function(a,e,d,b){b+="buildings/";var c=[this.createVertexTemplateEntry(b+"Apartments.svg;",.9*a,1.75*a,"","Apartments",!1,null,this.getTagsForStencil("buildings", -"apartments",e).join(" ")),this.createVertexTemplateEntry(b+"Building_Cluster.svg;",2.02*a,1.85*a,"","Building Cluster",!1,null,this.getTagsForStencil("buildings","building cluster",e).join(" ")),this.createVertexTemplateEntry(b+"Large_Building.svg;",1.25*a,1.25*a,"","Large Building",!1,null,this.getTagsForStencil("buildings","large building",e).join(" ")),this.createVertexTemplateEntry(b+"Long_Building.svg;",2.09*a,2.16*a,"","Long Building",!1,null,this.getTagsForStencil("buildings","long building", -e).join(" ")),this.createVertexTemplateEntry(b+"Medium_Business_Building.svg;",.91*a,1.17*a,"","Medium Business Building",!1,null,this.getTagsForStencil("buildings","medium business building",e).join(" ")),this.createVertexTemplateEntry(b+"School_Building.svg;",2.75*a,2.78*a,"","School Building",!1,null,this.getTagsForStencil("buildings","school building",e).join(" ")),this.createVertexTemplateEntry(b+"Secure_Building.svg;",2.72*a,1.86*a,"","Secure Building",!1,null,this.getTagsForStencil("buildings", -"secure building",e).join(" "))];this.addPalette("allied_telesisBuildings","Allied Telesis / Buildings",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))};Sidebar.prototype.addAlliedTelesisComputerTerminalsPalette=function(a,e,d,b){b+="computer_and_terminals/";var c=[this.createVertexTemplateEntry(b+"IP_TV.svg;",.82*a,.84*a,"","IP TV",!1,null,this.getTagsForStencil("computer terminals","ip tv internet protocol television",e).join(" ")),this.createVertexTemplateEntry(b+ -"Keypad.svg;",.44*a,.8*a,"","Keypad",!1,null,this.getTagsForStencil("computer terminals","keypad",e).join(" ")),this.createVertexTemplateEntry(b+"Laptop.svg;",.7*a,.71*a,"","Laptop",!1,null,this.getTagsForStencil("computer terminals","laptop",e).join(" ")),this.createVertexTemplateEntry(b+"Personal_Computer.svg;",.76*a,1.03*a,"","Personal Computer",!1,null,this.getTagsForStencil("computer terminals","personal computer",e).join(" ")),this.createVertexTemplateEntry(b+"Personal_Computer_Wireless.svg;", -1.05*a,1.07*a,"","Personal Computer Wireless",!1,null,this.getTagsForStencil("computer terminals","personal computer wireless",e).join(" ")),this.createVertexTemplateEntry(b+"Personal_Computer_with_Server.svg;",1.04*a,1.04*a,"","Personal Computer with Server",!1,null,this.getTagsForStencil("computer terminals","Personal Computer Server",e).join(" ")),this.createVertexTemplateEntry(b+"POS_keypad.svg;",.62*a,.46*a,"","POS Keypad",!1,null,this.getTagsForStencil("computer terminals","pos keypad",e).join(" ")), -this.createVertexTemplateEntry(b+"POS_Printer.svg;",.62*a,.54*a,"","POS Printer",!1,null,this.getTagsForStencil("computer terminals","pos printer",e).join(" ")),this.createVertexTemplateEntry(b+"Server_Desktop.svg;",.71*a,.9*a,"","Server Desktop",!1,null,this.getTagsForStencil("computer terminals","server desktop",e).join(" ")),this.createVertexTemplateEntry(b+"Smartphone.svg;",.33*a,.72*a,"","Smartphone",!1,null,this.getTagsForStencil("computer terminals","smartphone",e).join(" ")),this.createVertexTemplateEntry(b+ -"Tablet.svg;",.45*a,.95*a,"","Tablet",!1,null,this.getTagsForStencil("computer terminals","tablet",e).join(" ")),this.createVertexTemplateEntry(b+"Tablet_Alternative.svg;",.58*a,.8*a,"","Tablet Alternative",!1,null,this.getTagsForStencil("computer terminals","tablet alternative",e).join(" ")),this.createVertexTemplateEntry(b+"Vdeo_Conference_Terminal.svg;",.53*a,.75*a,"","Vdeo Conference Terminal",!1,null,this.getTagsForStencil("computer terminals","vdeo conference terminal",e).join(" ")),this.createVertexTemplateEntry(b+ -"VOIP_IP_phone.svg;",.5*a,.76*a,"","VOIP IP Phone",!1,null,this.getTagsForStencil("computer terminals","voip ip phone voice over internet protocol",e).join(" "))];this.addPalette("allied_telesisComputer and Terminals","Allied Telesis / Computer and Terminals",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))};Sidebar.prototype.addAlliedTelesisMediaConvertersPalette=function(a,e,d,b){b+="media_converters/";var c=[this.createVertexTemplateEntry(b+"Industrial_Media_Converter.svg;", -.5*a,.95*a,"","Industrial Media Converter",!1,null,this.getTagsForStencil("media converters","industrial media converter",e).join(" ")),this.createVertexTemplateEntry(b+"Industrial_Media_Converter_POE.svg;",.5*a,.95*a,"","Industrial Media Converter POE",!1,null,this.getTagsForStencil("media converters","industrial media converter poe",e).join(" ")),this.createVertexTemplateEntry(b+"Media_Converter_Modular.svg;",1.18*a,.91*a,"","Media Converter Modular",!1,null,this.getTagsForStencil("media converters", -"media converter modular",e).join(" ")),this.createVertexTemplateEntry(b+"Media_Converter_Standalone.svg;",.76*a,.62*a,"","Media Converter Standalone",!1,null,this.getTagsForStencil("media converters","media converter standalone",e).join(" ")),this.createVertexTemplateEntry(b+"Media_Converter_Standalone_POE.svg;",.76*a,.62*a,"","Media Converter Standalone POE",!1,null,this.getTagsForStencil("media converters","media converter standalone poe",e).join(" "))];this.addPalette("allied_telesisMedia Converters", -"Allied Telesis / Media Converters",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))};Sidebar.prototype.addAlliedTelesisSecurityPalette=function(a,e,d,b){b+="security/";var c=[this.createVertexTemplateEntry(b+"DVS_Surveillance_Monitor.svg;",.7*a,1*a,"","DVS Surveillance Monitor",!1,null,this.getTagsForStencil("security","dvs surveillance monitor",e).join(" ")),this.createVertexTemplateEntry(b+"EtherGRID.svg;",1.49*a,1.08*a,"","EtherGRID",!1,null,this.getTagsForStencil("security", -"ethergrid",e).join(" ")),this.createVertexTemplateEntry(b+"POE_DVS_Camera.svg;",.85*a,.67*a,"","POE DVS Camera",!1,null,this.getTagsForStencil("security","poe dvs camera",e).join(" ")),this.createVertexTemplateEntry(b+"POS.svg;",1.13*a,1.2*a,"","POS",!1,null,this.getTagsForStencil("security","pos",e).join(" ")),this.createVertexTemplateEntry(b+"Router_UTM.svg;",.93*a,.66*a,"","Router UTM",!1,null,this.getTagsForStencil("security","router utm",e).join(" ")),this.createVertexTemplateEntry(b+"Router_VPN.svg;", -.93*a,.66*a,"","Router VPN",!1,null,this.getTagsForStencil("security","router vpn",e).join(" ")),this.createVertexTemplateEntry(b+"Surveillance_Camera_Ceiling.svg;",.62*a,.59*a,"","Surveillance Camera Ceiling",!1,null,this.getTagsForStencil("security","surveillance camera ceiling",e).join(" "))];this.addPalette("allied_telesisSecurity","Allied Telesis / Security",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))};Sidebar.prototype.addAlliedTelesisStoragePalette= -function(a,e,d,b){b+="storage/";var c=[this.createVertexTemplateEntry(b+"Datacenter_Server_Half_Rack_ToR.svg;",1.47*a,1.91*a,"","Datacenter Server Half Rack ToR",!1,null,this.getTagsForStencil("storage","datacenter server half rack tor",e).join(" ")),this.createVertexTemplateEntry(b+"Datacenter_Server_Rack.svg;",1.47*a,2.98*a,"","Datacenter Server Rack",!1,null,this.getTagsForStencil("storage","datacenter server rack",e).join(" ")),this.createVertexTemplateEntry(b+"Datacenter_Server_Rack_EoR.svg;", -1.43*a,2.89*a,"","Datacenter Server Rack EoR",!1,null,this.getTagsForStencil("storage","datacenter server rack eor",e).join(" ")),this.createVertexTemplateEntry(b+"Datacenter_Server_Rack_Storage_Unit_Small.svg;",1.29*a,1.12*a,"","Datacenter Server Rack Storage Unit Small",!1,null,this.getTagsForStencil("storage","datacenter server rack storage unit small",e).join(" ")),this.createVertexTemplateEntry(b+"Datacenter_Server_Rack_ToR.svg;",1.47*a,2.98*a,"","Datacenter Server Rack ToR",!1,null,this.getTagsForStencil("storage", -"datacenter server rack tor",e).join(" ")),this.createVertexTemplateEntry(b+"Datacenter_Server_Storage_Unit_Large.svg;",1.28*a,1.32*a,"","Datacenter Server Storage Unit Large",!1,null,this.getTagsForStencil("storage","datacenter server storage unit large",e).join(" "))];this.addPalette("allied_telesisStorage","Allied Telesis / Storage",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))};Sidebar.prototype.addAlliedTelesisSwitchPalette=function(a,e,d,b){b+="switch/"; -var c=[this.createVertexTemplateEntry(b+"Industrial_Ethernet_IE200.svg;",.67*a,.94*a,"","Industrial Ethernet IE200",!1,null,this.getTagsForStencil("switch","industrial ethernet ie200",e).join(" ")),this.createVertexTemplateEntry(b+"Industrial_Ethernet_IE200_POE.svg;",.67*a,.94*a,"","Industrial Ethernet IE200 POE",!1,null,this.getTagsForStencil("switch","industrial ethernet ie200 poe",e).join(" ")),this.createVertexTemplateEntry(b+"Industrial_Ethernet_IE300.svg;",1.16*a,1.29*a,"","Industrial_Ethernet_IE300", -!1,null,this.getTagsForStencil("switch","industrial ethernet ie300",e).join(" ")),this.createVertexTemplateEntry(b+"Modular_Switch_SBx8106.svg;",1.43*a,1.23*a,"","Modular Switch SBx8106",!1,null,this.getTagsForStencil("switch","modular switch sbx8106",e).join(" ")),this.createVertexTemplateEntry(b+"Modular_Switch_SBx8112.svg;",1.49*a,1.53*a,"","Modular Switch SBx8112",!1,null,this.getTagsForStencil("switch","modular switch sbx8112",e).join(" ")),this.createVertexTemplateEntry(b+"Modular_Switch_SXx908GEN2.svg;", -1.3*a,1.11*a,"","Modular Switch SXx908GEN2",!1,null,this.getTagsForStencil("switch","modular switch sxx908gen2",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_24_port_L2.svg;",1.24*a,.85*a,"","Switch 24 port L2",!1,null,this.getTagsForStencil("switch","switch 24 port l2",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_24_port_L2_POE.svg;",1.24*a,.85*a,"","Switch 24 port L2 POE",!1,null,this.getTagsForStencil("switch","switch 24 port l2 poe",e).join(" ")),this.createVertexTemplateEntry(b+ -"Switch_24_port_L3.svg;",1.24*a,.85*a,"","Switch 24 port L3",!1,null,this.getTagsForStencil("switch","switch 24 port l3",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_24_port_L3_Alternative.svg;",1.3*a,.88*a,"","Switch 24 port L3 Alternative",!1,null,this.getTagsForStencil("switch","switch 24 port l3 alternative",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_24_port_L3_POE.svg;",1.24*a,.85*a,"","Switch 24 port L3 POE",!1,null,this.getTagsForStencil("switch","switch 24 port l3 poe", -e).join(" ")),this.createVertexTemplateEntry(b+"Switch_48_port_L2.svg;",1.3*a,.88*a,"","Switch 48 port L2",!1,null,this.getTagsForStencil("switch","switch 48 port l2",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_48_port_L2_POE.svg;",1.3*a,.88*a,"","Switch 48 port L2 POE",!1,null,this.getTagsForStencil("switch","switch 48 port l2 poe",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_48_port_L3.svg;",1.3*a,.88*a,"","Switch 48 port L3",!1,null,this.getTagsForStencil("switch","switch 48 port l3", -e).join(" ")),this.createVertexTemplateEntry(b+"Switch_48_port_L3_POE.svg;",1.3*a,.88*a,"","Switch 48 port L3 POE",!1,null,this.getTagsForStencil("switch","switch 48 port l3 poe",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_52_port_L3.svg;",1.3*a,.88*a,"","Switch 52 port L3",!1,null,this.getTagsForStencil("switch","switch 52 port l3",e).join(" "))];this.addPalette("allied_telesisSwitch","Allied Telesis / Switch",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))}; -Sidebar.prototype.addAlliedTelesisWirelessPalette=function(a,e,d,b){b+="wireless/";var c=[this.createVertexTemplateEntry(b+"Access_Point_Indoor.svg;",.61*a,.91*a,"","Access Point Indoor",!1,null,this.getTagsForStencil("wireless","access point indoor",e).join(" ")),this.createVertexTemplateEntry(b+"Access_Point_Outdoor.svg;",.43*a,1.66*a,"","Access Point Outdoor",!1,null,this.getTagsForStencil("wireless","access point outdoor",e).join(" ")),this.createVertexTemplateEntry(b+"Laptop_Wireless.svg;",.96* -a,.79*a,"","Laptop Wireless",!1,null,this.getTagsForStencil("wireless","laptop wireless",e).join(" "))];this.addPalette("allied_telesisWireless","Allied Telesis / Wireless",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))}})();(function(){Sidebar.prototype.addAndroidPalette=function(){var a=this,e=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;shadow=0;dashed=0;strokeWidth=1;shape=mxgraph.android.",d=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;shadow=0;dashed=0;strokeWidth=1;strokeColor=none;shape=",b=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;shadow=0;dashed=0;strokeWidth=2;shape=mxgraph.android.", +a.geometry.height,"Horizontal Flow Layout",!0)})])}})();(function(){Sidebar.prototype.addAlliedTelesisPalette=function(){this.addAlliedTelesisBuildingsPalette(60,"allied telesis",this,"points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/");this.addAlliedTelesisComputerTerminalsPalette(60,"allied telesis",this,"points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/");this.addAlliedTelesisMediaConvertersPalette(60,"allied telesis",this,"points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/"); +this.addAlliedTelesisSecurityPalette(60,"allied telesis",this,"points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/");this.addAlliedTelesisStoragePalette(60,"allied telesis",this,"points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/");this.addAlliedTelesisSwitchPalette(60,"allied telesis",this,"points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/");this.addAlliedTelesisWirelessPalette(60, +"allied telesis",this,"points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/")};Sidebar.prototype.addAlliedTelesisBuildingsPalette=function(a,e,d,b){b+="buildings/";var c=[this.createVertexTemplateEntry(b+"Apartments.svg;",.9*a,1.75*a,"","Apartments",!1,null,this.getTagsForStencil("buildings","apartments",e).join(" ")),this.createVertexTemplateEntry(b+"Building_Cluster.svg;",2.02*a,1.85*a,"","Building Cluster",!1,null,this.getTagsForStencil("buildings","building cluster", +e).join(" ")),this.createVertexTemplateEntry(b+"Large_Building.svg;",1.25*a,1.25*a,"","Large Building",!1,null,this.getTagsForStencil("buildings","large building",e).join(" ")),this.createVertexTemplateEntry(b+"Long_Building.svg;",2.09*a,2.16*a,"","Long Building",!1,null,this.getTagsForStencil("buildings","long building",e).join(" ")),this.createVertexTemplateEntry(b+"Medium_Business_Building.svg;",.91*a,1.17*a,"","Medium Business Building",!1,null,this.getTagsForStencil("buildings","medium business building", +e).join(" ")),this.createVertexTemplateEntry(b+"School_Building.svg;",2.75*a,2.78*a,"","School Building",!1,null,this.getTagsForStencil("buildings","school building",e).join(" ")),this.createVertexTemplateEntry(b+"Secure_Building.svg;",2.72*a,1.86*a,"","Secure Building",!1,null,this.getTagsForStencil("buildings","secure building",e).join(" "))];this.addPalette("allied_telesisBuildings","Allied Telesis / Buildings",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))}; +Sidebar.prototype.addAlliedTelesisComputerTerminalsPalette=function(a,e,d,b){b+="computer_and_terminals/";var c=[this.createVertexTemplateEntry(b+"IP_TV.svg;",.82*a,.84*a,"","IP TV",!1,null,this.getTagsForStencil("computer terminals","ip tv internet protocol television",e).join(" ")),this.createVertexTemplateEntry(b+"Keypad.svg;",.44*a,.8*a,"","Keypad",!1,null,this.getTagsForStencil("computer terminals","keypad",e).join(" ")),this.createVertexTemplateEntry(b+"Laptop.svg;",.7*a,.71*a,"","Laptop",!1, +null,this.getTagsForStencil("computer terminals","laptop",e).join(" ")),this.createVertexTemplateEntry(b+"Personal_Computer.svg;",.76*a,1.03*a,"","Personal Computer",!1,null,this.getTagsForStencil("computer terminals","personal computer",e).join(" ")),this.createVertexTemplateEntry(b+"Personal_Computer_Wireless.svg;",1.05*a,1.07*a,"","Personal Computer Wireless",!1,null,this.getTagsForStencil("computer terminals","personal computer wireless",e).join(" ")),this.createVertexTemplateEntry(b+"Personal_Computer_with_Server.svg;", +1.04*a,1.04*a,"","Personal Computer with Server",!1,null,this.getTagsForStencil("computer terminals","Personal Computer Server",e).join(" ")),this.createVertexTemplateEntry(b+"POS_keypad.svg;",.62*a,.46*a,"","POS Keypad",!1,null,this.getTagsForStencil("computer terminals","pos keypad",e).join(" ")),this.createVertexTemplateEntry(b+"POS_Printer.svg;",.62*a,.54*a,"","POS Printer",!1,null,this.getTagsForStencil("computer terminals","pos printer",e).join(" ")),this.createVertexTemplateEntry(b+"Server_Desktop.svg;", +.71*a,.9*a,"","Server Desktop",!1,null,this.getTagsForStencil("computer terminals","server desktop",e).join(" ")),this.createVertexTemplateEntry(b+"Smartphone.svg;",.33*a,.72*a,"","Smartphone",!1,null,this.getTagsForStencil("computer terminals","smartphone",e).join(" ")),this.createVertexTemplateEntry(b+"Tablet.svg;",.45*a,.95*a,"","Tablet",!1,null,this.getTagsForStencil("computer terminals","tablet",e).join(" ")),this.createVertexTemplateEntry(b+"Tablet_Alternative.svg;",.58*a,.8*a,"","Tablet Alternative", +!1,null,this.getTagsForStencil("computer terminals","tablet alternative",e).join(" ")),this.createVertexTemplateEntry(b+"Vdeo_Conference_Terminal.svg;",.53*a,.75*a,"","Vdeo Conference Terminal",!1,null,this.getTagsForStencil("computer terminals","vdeo conference terminal",e).join(" ")),this.createVertexTemplateEntry(b+"VOIP_IP_phone.svg;",.5*a,.76*a,"","VOIP IP Phone",!1,null,this.getTagsForStencil("computer terminals","voip ip phone voice over internet protocol",e).join(" "))];this.addPalette("allied_telesisComputer and Terminals", +"Allied Telesis / Computer and Terminals",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))};Sidebar.prototype.addAlliedTelesisMediaConvertersPalette=function(a,e,d,b){b+="media_converters/";var c=[this.createVertexTemplateEntry(b+"Industrial_Media_Converter.svg;",.5*a,.95*a,"","Industrial Media Converter",!1,null,this.getTagsForStencil("media converters","industrial media converter",e).join(" ")),this.createVertexTemplateEntry(b+"Industrial_Media_Converter_POE.svg;", +.5*a,.95*a,"","Industrial Media Converter POE",!1,null,this.getTagsForStencil("media converters","industrial media converter poe",e).join(" ")),this.createVertexTemplateEntry(b+"Media_Converter_Modular.svg;",1.18*a,.91*a,"","Media Converter Modular",!1,null,this.getTagsForStencil("media converters","media converter modular",e).join(" ")),this.createVertexTemplateEntry(b+"Media_Converter_Standalone.svg;",.76*a,.62*a,"","Media Converter Standalone",!1,null,this.getTagsForStencil("media converters", +"media converter standalone",e).join(" ")),this.createVertexTemplateEntry(b+"Media_Converter_Standalone_POE.svg;",.76*a,.62*a,"","Media Converter Standalone POE",!1,null,this.getTagsForStencil("media converters","media converter standalone poe",e).join(" "))];this.addPalette("allied_telesisMedia Converters","Allied Telesis / Media Converters",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))};Sidebar.prototype.addAlliedTelesisSecurityPalette=function(a,e,d,b){b+= +"security/";var c=[this.createVertexTemplateEntry(b+"DVS_Surveillance_Monitor.svg;",.7*a,1*a,"","DVS Surveillance Monitor",!1,null,this.getTagsForStencil("security","dvs surveillance monitor",e).join(" ")),this.createVertexTemplateEntry(b+"EtherGRID.svg;",1.49*a,1.08*a,"","EtherGRID",!1,null,this.getTagsForStencil("security","ethergrid",e).join(" ")),this.createVertexTemplateEntry(b+"POE_DVS_Camera.svg;",.85*a,.67*a,"","POE DVS Camera",!1,null,this.getTagsForStencil("security","poe dvs camera",e).join(" ")), +this.createVertexTemplateEntry(b+"POS.svg;",1.13*a,1.2*a,"","POS",!1,null,this.getTagsForStencil("security","pos",e).join(" ")),this.createVertexTemplateEntry(b+"Router_UTM.svg;",.93*a,.66*a,"","Router UTM",!1,null,this.getTagsForStencil("security","router utm",e).join(" ")),this.createVertexTemplateEntry(b+"Router_VPN.svg;",.93*a,.66*a,"","Router VPN",!1,null,this.getTagsForStencil("security","router vpn",e).join(" ")),this.createVertexTemplateEntry(b+"Surveillance_Camera_Ceiling.svg;",.62*a,.59* +a,"","Surveillance Camera Ceiling",!1,null,this.getTagsForStencil("security","surveillance camera ceiling",e).join(" "))];this.addPalette("allied_telesisSecurity","Allied Telesis / Security",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))};Sidebar.prototype.addAlliedTelesisStoragePalette=function(a,e,d,b){b+="storage/";var c=[this.createVertexTemplateEntry(b+"Datacenter_Server_Half_Rack_ToR.svg;",1.47*a,1.91*a,"","Datacenter Server Half Rack ToR",!1,null,this.getTagsForStencil("storage", +"datacenter server half rack tor",e).join(" ")),this.createVertexTemplateEntry(b+"Datacenter_Server_Rack.svg;",1.47*a,2.98*a,"","Datacenter Server Rack",!1,null,this.getTagsForStencil("storage","datacenter server rack",e).join(" ")),this.createVertexTemplateEntry(b+"Datacenter_Server_Rack_EoR.svg;",1.43*a,2.89*a,"","Datacenter Server Rack EoR",!1,null,this.getTagsForStencil("storage","datacenter server rack eor",e).join(" ")),this.createVertexTemplateEntry(b+"Datacenter_Server_Rack_Storage_Unit_Small.svg;", +1.29*a,1.12*a,"","Datacenter Server Rack Storage Unit Small",!1,null,this.getTagsForStencil("storage","datacenter server rack storage unit small",e).join(" ")),this.createVertexTemplateEntry(b+"Datacenter_Server_Rack_ToR.svg;",1.47*a,2.98*a,"","Datacenter Server Rack ToR",!1,null,this.getTagsForStencil("storage","datacenter server rack tor",e).join(" ")),this.createVertexTemplateEntry(b+"Datacenter_Server_Storage_Unit_Large.svg;",1.28*a,1.32*a,"","Datacenter Server Storage Unit Large",!1,null,this.getTagsForStencil("storage", +"datacenter server storage unit large",e).join(" "))];this.addPalette("allied_telesisStorage","Allied Telesis / Storage",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))};Sidebar.prototype.addAlliedTelesisSwitchPalette=function(a,e,d,b){b+="switch/";var c=[this.createVertexTemplateEntry(b+"Industrial_Ethernet_IE200.svg;",.67*a,.94*a,"","Industrial Ethernet IE200",!1,null,this.getTagsForStencil("switch","industrial ethernet ie200",e).join(" ")),this.createVertexTemplateEntry(b+ +"Industrial_Ethernet_IE200_POE.svg;",.67*a,.94*a,"","Industrial Ethernet IE200 POE",!1,null,this.getTagsForStencil("switch","industrial ethernet ie200 poe",e).join(" ")),this.createVertexTemplateEntry(b+"Industrial_Ethernet_IE300.svg;",1.16*a,1.29*a,"","Industrial_Ethernet_IE300",!1,null,this.getTagsForStencil("switch","industrial ethernet ie300",e).join(" ")),this.createVertexTemplateEntry(b+"Modular_Switch_SBx8106.svg;",1.43*a,1.23*a,"","Modular Switch SBx8106",!1,null,this.getTagsForStencil("switch", +"modular switch sbx8106",e).join(" ")),this.createVertexTemplateEntry(b+"Modular_Switch_SBx8112.svg;",1.49*a,1.53*a,"","Modular Switch SBx8112",!1,null,this.getTagsForStencil("switch","modular switch sbx8112",e).join(" ")),this.createVertexTemplateEntry(b+"Modular_Switch_SXx908GEN2.svg;",1.3*a,1.11*a,"","Modular Switch SXx908GEN2",!1,null,this.getTagsForStencil("switch","modular switch sxx908gen2",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_24_port_L2.svg;",1.24*a,.85*a,"","Switch 24 port L2", +!1,null,this.getTagsForStencil("switch","switch 24 port l2",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_24_port_L2_POE.svg;",1.24*a,.85*a,"","Switch 24 port L2 POE",!1,null,this.getTagsForStencil("switch","switch 24 port l2 poe",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_24_port_L3.svg;",1.24*a,.85*a,"","Switch 24 port L3",!1,null,this.getTagsForStencil("switch","switch 24 port l3",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_24_port_L3_Alternative.svg;",1.3*a,.88* +a,"","Switch 24 port L3 Alternative",!1,null,this.getTagsForStencil("switch","switch 24 port l3 alternative",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_24_port_L3_POE.svg;",1.24*a,.85*a,"","Switch 24 port L3 POE",!1,null,this.getTagsForStencil("switch","switch 24 port l3 poe",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_48_port_L2.svg;",1.3*a,.88*a,"","Switch 48 port L2",!1,null,this.getTagsForStencil("switch","switch 48 port l2",e).join(" ")),this.createVertexTemplateEntry(b+ +"Switch_48_port_L2_POE.svg;",1.3*a,.88*a,"","Switch 48 port L2 POE",!1,null,this.getTagsForStencil("switch","switch 48 port l2 poe",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_48_port_L3.svg;",1.3*a,.88*a,"","Switch 48 port L3",!1,null,this.getTagsForStencil("switch","switch 48 port l3",e).join(" ")),this.createVertexTemplateEntry(b+"Switch_48_port_L3_POE.svg;",1.3*a,.88*a,"","Switch 48 port L3 POE",!1,null,this.getTagsForStencil("switch","switch 48 port l3 poe",e).join(" ")),this.createVertexTemplateEntry(b+ +"Switch_52_port_L3.svg;",1.3*a,.88*a,"","Switch 52 port L3",!1,null,this.getTagsForStencil("switch","switch 52 port l3",e).join(" "))];this.addPalette("allied_telesisSwitch","Allied Telesis / Switch",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))};Sidebar.prototype.addAlliedTelesisWirelessPalette=function(a,e,d,b){b+="wireless/";var c=[this.createVertexTemplateEntry(b+"Access_Point_Indoor.svg;",.61*a,.91*a,"","Access Point Indoor",!1,null,this.getTagsForStencil("wireless", +"access point indoor",e).join(" ")),this.createVertexTemplateEntry(b+"Access_Point_Outdoor.svg;",.43*a,1.66*a,"","Access Point Outdoor",!1,null,this.getTagsForStencil("wireless","access point outdoor",e).join(" ")),this.createVertexTemplateEntry(b+"Laptop_Wireless.svg;",.96*a,.79*a,"","Laptop Wireless",!1,null,this.getTagsForStencil("wireless","laptop wireless",e).join(" "))];this.addPalette("allied_telesisWireless","Allied Telesis / Wireless",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))}})();(function(){Sidebar.prototype.addAndroidPalette=function(){var a=this,e=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;shadow=0;dashed=0;strokeWidth=1;shape=mxgraph.android.",d=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;shadow=0;dashed=0;strokeWidth=1;strokeColor=none;shape=",b=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;shadow=0;dashed=0;strokeWidth=2;shape=mxgraph.android.", c=[this.createVertexTemplateEntry(e+"phone2;fillColor=#ffffff;strokeColor=#c0c0c0;",200,390,"","Phone",null,null,"android phone mobile portrait"),this.createVertexTemplateEntry(e+"phone2;fillColor=#ffffff;strokeColor=#c0c0c0;direction=south;",390,200,"","Phone (landscape)",null,null,"android phone mobile landscape"),this.createVertexTemplateEntry(e+"tab2;fillColor=#ffffff;strokeColor=#c0c0c0;",472,686,"","Tab",null,null,"android tab tablet portrait"),this.createVertexTemplateEntry(e+"tab2;fillColor=#ffffff;strokeColor=#c0c0c0;direction=north;", 686,472,"","Tab (landscape)",null,null,"android tab tablet landscape"),this.createVertexTemplateEntry("strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.action_bar;fillColor=#1A1A1A;strokeColor=#c0c0c0;strokeWidth=2;fontColor=#FFFFFF;",185,30,"","Action Bar",null,null,"android action bar dark portrait"),this.createVertexTemplateEntry("strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.action_bar;fillColor=#E6E6E6;strokeColor=#c0c0c0;strokeWidth=2;",185,30,"","Action Bar (Bright)", null,null,"android action bar bright portrait"),this.createVertexTemplateEntry("strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.action_bar_landscape;fillColor=#1A1A1A;strokeColor=#c0c0c0;strokeWidth=2;fontColor=#FFFFFF;",320,30,"","Action Bar Landscape",null,null,"android action bar landscape dark"),this.createVertexTemplateEntry("strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.action_bar_landscape;fillColor=#E6E6E6;strokeColor=#c0c0c0;strokeWidth=2;",320,30,"","Action Bar Landscape (Bright)", @@ -3510,7 +3514,7 @@ this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColo "","archimate implementation migration element deliverable").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#E0FFE0;strokeColor=#000000;shape=mxgraph.archimate3.tech;techType=plateau;",150,75,"","Plateau",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation migration element plateau").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#E0FFE0;strokeColor=#000000;shape=mxgraph.archimate3.gap;", 150,60,"","Gap",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation migration element gap").join(" "))];this.addPalette("archimate3Implementation and Migration","Archimate 3.0 / Implementation and Migration",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addArchimate3MotivationPalette=function(){var a=[this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=role;archiType=oct;", 150,75,"","Stakeholder",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element stakeholder").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=driver;archiType=oct;",150,75,"","Driver",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element driver").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=assess;archiType=oct;", -150,75,"","Assesment",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element assessment").join(" ")),this.createVertexTemplateEntry("shape=ellipse;html=1;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;",150,75,"","Value",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element value").join(" ")),this.createVertexTemplateEntry("shape=cloud;html=1;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;", +150,75,"","Assesment",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element assessment").join(" ")),this.createVertexTemplateEntry("shape=ellipse;html=1;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;perimeter=ellipsePerimeter;",150,75,"","Value",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element value").join(" ")),this.createVertexTemplateEntry("shape=cloud;html=1;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;", 150,75,"","Meaning",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element meaning").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=goal;archiType=oct;",150,75,"","Goal",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element goal").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=outcome;archiType=oct;", 150,75,"","Outcome",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element outcome").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=principle;archiType=oct;",150,75,"","Principle",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element principle").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=requirement;archiType=oct;", 150,75,"","Requirement",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element requirement").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.requirement;",100,50,"","Requirement",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element requirement").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=constraint;archiType=oct;", @@ -3526,8 +3530,8 @@ null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship real 160,0,"","Triggering",null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship triggering").join(" ")),this.createEdgeTemplateEntry("edgeStyle=elbowEdgeStyle;html=1;endArrow=block;dashed=1;elbow=vertical;endFill=1;dashPattern=6 4;",160,0,"","Flow",null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship flow").join(" ")),this.createEdgeTemplateEntry("endArrow=block;html=1;endFill=0;edgeStyle=elbowEdgeStyle;elbow=vertical;",160,0,"","Specialization",null,this.getTagsForStencil("mxgraph.archimate3", "","archimate relationship specialization").join(" ")),this.createEdgeTemplateEntry("edgeStyle=elbowEdgeStyle;html=1;endArrow=none;elbow=vertical;",160,0,"","Association",null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship association").join(" ")),this.createVertexTemplateEntry("ellipse;html=1;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;fillColor=#000000;strokeColor=#000000;",10,10,"","And Junction",null,this.getTagsForStencil("mxgraph.archimate3", "","archimate relationship junction").join(" ")),this.createVertexTemplateEntry("ellipse;html=1;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;fillColor=#ffffff;strokeColor=#000000;",10,10,"","Or Junction",null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship junction").join(" "))];this.addPalette("archimate3Relationships","Archimate 3.0 / Relationships",!1,mxUtils.bind(this,function(a){for(var b=0;b<e.length;b++)a.appendChild(e[b](a))}))};Sidebar.prototype.addArchimate3StrategyPalette= -function(){var a=[this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#F5DEAA;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=resource;archiType=square;",150,75,"","Resource",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate strategy resource").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#F5DEAA;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=capability;archiType=square;", -150,75,"","Capability",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate strategy capability").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#F5DEAA;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=course;archiType=square;",150,75,"","Course of Action",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate strategy course action").join(" "))];this.addPalette("archimate3Strategy","Archimate 3.0 / Strategy", +function(){var a=[this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#F5DEAA;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=resource;archiType=square;",150,75,"","Resource",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate strategy resource").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#F5DEAA;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=capability;archiType=rounded;", +150,75,"","Capability",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate strategy capability").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#F5DEAA;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=course;archiType=rounded;",150,75,"","Course of Action",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate strategy course action").join(" "))];this.addPalette("archimate3Strategy","Archimate 3.0 / Strategy", !1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addArchimate3TechnologyPalette=function(){var a=[this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=node;archiType=square;",150,75,"","Node",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology node").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.node;", 100,60,"","Node",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology node").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.tech;techType=device;",150,75,"","Device",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology device").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.device;", 80,65,"","Device",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology device").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=sysSw;archiType=square;",150,75,"","System Software",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology system software").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.tech;techType=sysSw;", @@ -3990,14 +3994,14 @@ this.createVertexTemplateEntry(a+"arrowNW;fillColor=#000000;aspect=fixed;",45.5, null,null,this.getTagsForStencil("mxgraph.aws3d","arrow ne north east northeast","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"flatEdge;fillColor=#000000;aspect=fixed;",63.2,36,"","Flat Edge",null,null,this.getTagsForStencil("mxgraph.aws3d","arrow ne north east northeast","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"flatDoubleEdge;fillColor=#000000;aspect=fixed;",252.8,144,"","Flat Double Edge",null,null,this.getTagsForStencil("mxgraph.aws3d", "arrow ne north east northeast","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"arrowhead;aspect=fixed;",19,11,"","Arrowhead",null,null,this.getTagsForStencil("mxgraph.aws3d","arrowhead","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"edge;aspect=fixed;",97,107.4,"","Edge",null,null,this.getTagsForStencil("mxgraph.aws3d","edge","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"reference;aspect=fixed;",29.5,19.5,"","Reference", null,null,this.getTagsForStencil("mxgraph.aws3d","reference","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"spot;aspect=fixed;",62,36,"","Spot",null,null,this.getTagsForStencil("mxgraph.aws3d","spot","aws 3d amazon web service").join(" ")),this.createEdgeTemplateEntry("edgeStyle=isometricEdgeStyle;endArrow=none;html=1;",50,100,"isometric edge","Isometric Edge 1"),this.createEdgeTemplateEntry("edgeStyle=isometricEdgeStyle;endArrow=none;html=1;elbow=vertical;",50,100,"isometric edge", -"Isometric Edge 2")])}})();(function(){Sidebar.prototype.addAWS4Palette=function(){var a="outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=#ffffff;fillColor=#232F3E;dashed=0;verticalLabelPosition=middle;verticalAlign=bottom;align=center;html=1;whiteSpace=wrap;fontSize=10;fontStyle=1;spacing=3;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws4.",e="outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=#232F3E;fillColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;"+ -mxConstants.STYLE_SHAPE+"=mxgraph.aws4.",d="outlineConnect=0;gradientColor=none;fontColor=#545B64;strokeColor=none;fillColor=#879196;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws4.",b="outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws4.";this.addAWS4ArrowsPalette("mxgraph.aws4",this);this.addAWS4GeneralResourcesPalette(80, -100,60,a,e,"mxgraph.aws4",this);this.addAWS4IllustrationsPalette(d,"mxgraph.aws4",this);this.addAWS4GroupsLightPalette(b,"mxgraph.aws4",this);this.addAWS4GroupsDarkPalette(b,"mxgraph.aws4",this);this.addAWS4AnalyticsPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4ApplicationIntegrationPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4ARVRPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4CostManagementPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4BusinessProductivityPalette(80, -100,60,a,e,"mxgraph.aws4",this);this.addAWS4ComputePalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4CustomerEngagementPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4DatabasePalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4DesktopAppStreamingPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4DeveloperToolsPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4GameDevelopmentPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4InternetOfThingsPalette(80,100,60,a,e,"mxgraph.aws4", -this);this.addAWS4IOTThingsPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4IOTResourcesPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4MachineLearningPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4ManagementToolsPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4MediaServicesPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4MigrationPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4MobileServicesPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4NetworkContentDeliveryPalette(80, -100,60,a,e,"mxgraph.aws4",this);this.addAWS4SecurityIdentityCompliancePalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4StoragePalette(80,100,60,a,e,"mxgraph.aws4",this)};Sidebar.prototype.addAWS4ArrowsPalette=function(a,e){this.addPaletteFunctions("aws4Arrows","AWS / Arrows",!1,[this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;html=1;endArrow=none;elbow=vertical;startArrow=block;startFill=1;strokeColor=#545B64;rounded=0;",100,0,"","Default (left)",null,this.getTagsForStencil(a,"", -"aws amazon web service arrowsdefault left").join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;html=1;endArrow=block;elbow=vertical;startArrow=none;endFill=1;strokeColor=#545B64;rounded=0;",100,0,"","Default (left)",null,this.getTagsForStencil(a,"","aws amazon web service arrowsdefault left").join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;html=1;endArrow=block;elbow=vertical;startArrow=block;startFill=1;endFill=1;strokeColor=#545B64;rounded=0;",100,0,"", -"Default (double)",null,this.getTagsForStencil(a,"","aws amazon web service arrowsdefault double").join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;html=1;endArrow=none;elbow=vertical;startArrow=openThin;startFill=0;strokeColor=#545B64;rounded=0;",100,0,"","Open (thin, left)",null,this.getTagsForStencil(a,"","aws amazon web service arrowsopen thin left").join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;html=1;endArrow=openThin;elbow=vertical;startArrow=none;endFill=0;strokeColor=#545B64;rounded=0;", +"Isometric Edge 2")])}})();(function(){Sidebar.prototype.addAWS4Palette=function(){var a="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=#ffffff;fillColor=#232F3E;dashed=0;verticalLabelPosition=middle;verticalAlign=bottom;align=center;html=1;whiteSpace=wrap;fontSize=10;fontStyle=1;spacing=3;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws4.",e="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=#232F3E;fillColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;"+ +mxConstants.STYLE_SHAPE+"=mxgraph.aws4.",d="outlineConnect=0;gradientColor=none;fontColor=#545B64;strokeColor=none;fillColor=#879196;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws4.",b="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;"+ +mxConstants.STYLE_SHAPE+"=mxgraph.aws4.";this.addAWS4ArrowsPalette("mxgraph.aws4",this);this.addAWS4GeneralResourcesPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4IllustrationsPalette(d,"mxgraph.aws4",this);this.addAWS4GroupsLightPalette(b,"mxgraph.aws4",this);this.addAWS4GroupsDarkPalette(b,"mxgraph.aws4",this);this.addAWS4AnalyticsPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4ApplicationIntegrationPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4ARVRPalette(80,100,60,a,e, +"mxgraph.aws4",this);this.addAWS4CostManagementPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4BusinessProductivityPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4ComputePalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4CustomerEngagementPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4DatabasePalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4DesktopAppStreamingPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4DeveloperToolsPalette(80,100,60,a,e,"mxgraph.aws4",this); +this.addAWS4GameDevelopmentPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4InternetOfThingsPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4IOTThingsPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4IOTResourcesPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4MachineLearningPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4ManagementToolsPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4MediaServicesPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4MigrationPalette(80, +100,60,a,e,"mxgraph.aws4",this);this.addAWS4MobileServicesPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4NetworkContentDeliveryPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4SecurityIdentityCompliancePalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4StoragePalette(80,100,60,a,e,"mxgraph.aws4",this)};Sidebar.prototype.addAWS4ArrowsPalette=function(a,e){this.addPaletteFunctions("aws4Arrows","AWS / Arrows",!1,[this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;html=1;endArrow=none;elbow=vertical;startArrow=block;startFill=1;strokeColor=#545B64;rounded=0;", +100,0,"","Default (left)",null,this.getTagsForStencil(a,"","aws amazon web service arrowsdefault left").join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;html=1;endArrow=block;elbow=vertical;startArrow=none;endFill=1;strokeColor=#545B64;rounded=0;",100,0,"","Default (left)",null,this.getTagsForStencil(a,"","aws amazon web service arrowsdefault left").join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;html=1;endArrow=block;elbow=vertical;startArrow=block;startFill=1;endFill=1;strokeColor=#545B64;rounded=0;", +100,0,"","Default (double)",null,this.getTagsForStencil(a,"","aws amazon web service arrowsdefault double").join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;html=1;endArrow=none;elbow=vertical;startArrow=openThin;startFill=0;strokeColor=#545B64;rounded=0;",100,0,"","Open (thin, left)",null,this.getTagsForStencil(a,"","aws amazon web service arrowsopen thin left").join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;html=1;endArrow=openThin;elbow=vertical;startArrow=none;endFill=0;strokeColor=#545B64;rounded=0;", 100,0,"","Open (thin, left)",null,this.getTagsForStencil(a,"","aws amazon web service arrowsopen thin left").join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;html=1;endArrow=openThin;elbow=vertical;startArrow=openThin;startFill=0;endFill=0;strokeColor=#545B64;rounded=0;",100,0,"","Open (thin, double)",null,this.getTagsForStencil(a,"","aws amazon web service arrowsopen thin double").join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;html=1;endArrow=none;elbow=vertical;startArrow=open;startFill=0;strokeColor=#545B64;rounded=0;", 100,0,"","Open (left)",null,this.getTagsForStencil(a,"","aws amazon web service arrowsopen left").join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;html=1;endArrow=open;elbow=vertical;startArrow=none;endFill=0;strokeColor=#545B64;rounded=0;",100,0,"","Open (left)",null,this.getTagsForStencil(a,"","aws amazon web service arrowsopen left").join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;html=1;endArrow=open;elbow=vertical;startArrow=open;startFill=0;endFill=0;strokeColor=#545B64;rounded=0;", 100,0,"","Open (double)",null,this.getTagsForStencil(a,"","aws amazon web service arrowsopen double").join(" "))])};Sidebar.prototype.addAWS4GeneralResourcesPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4General Resources","AWS / General Resources",!1,[this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".aws_cloud;",d,d,"AWS Cloud",null,null,null,this.getTagsForStencil(f,"cloud","aws amazon web service general resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+ @@ -4534,46 +4538,47 @@ null,null,this.getTagsForStencil("mxgraph.cabinets","surge_protection_3p","cabin 25,25,"","Terminal 4mm2 x10",null,null,this.getTagsForStencil("mxgraph.cabinets","terminal_4mm2_x10","cabinet ").join(" ")),this.createVertexTemplateEntry(a+"terminal_4_6mm2;",2.5,30,"","Terminal 4-6mm2",null,null,this.getTagsForStencil("mxgraph.cabinets","terminal_4_6mm2","cabinet ").join(" ")),this.createVertexTemplateEntry(a+"terminal_4_6mm2_x10;",25,30,"","Terminal 4-6mm2 x10",null,null,this.getTagsForStencil("mxgraph.cabinets","terminal_4_6mm2_x10","cabinet ").join(" ")),this.createVertexTemplateEntry(a+ "terminal_6_25mm2;",5,37.5,"","Terminal 6-25mm2",null,null,this.getTagsForStencil("mxgraph.cabinets","terminal_6_25mm2","cabinet ").join(" ")),this.createVertexTemplateEntry(a+"terminal_6_25mm2_x10;",50,37.5,"","Terminal 6-25mm2 x10",null,null,this.getTagsForStencil("mxgraph.cabinets","terminal_6_25mm2_x10","cabinet ").join(" ")),this.createVertexTemplateEntry(a+"terminal_40mm2;",11,50,"","Terminal 40mm2",null,null,this.getTagsForStencil("mxgraph.cabinets","terminal_40mm2","cabinet ").join(" ")), this.createVertexTemplateEntry(a+"terminal_40mm2_x10;",50*2.2,50,"","Terminal 40mm2 x10",null,null,this.getTagsForStencil("mxgraph.cabinets","terminal_40mm2_x10","cabinet ").join(" ")),this.createVertexTemplateEntry(a+"terminal_50mm2;",12.5,50*1.1,"","Terminal 50mm2",null,null,this.getTagsForStencil("mxgraph.cabinets","terminal_50mm2","cabinet ").join(" ")),this.createVertexTemplateEntry(a+"terminal_50mm2_x10;",125,50*1.1,"","Terminal 50mm2 x10",null,null,this.getTagsForStencil("mxgraph.cabinets", -"terminal_50mm2_x10","cabinet ").join(" ")),this.createVertexTemplateEntry(a+"terminal_75mm2;",15,70,"","Terminal 75mm2",null,null,this.getTagsForStencil("mxgraph.cabinets","terminal_75mm2","cabinet ").join(" ")),this.createVertexTemplateEntry(a+"terminal_75mm2_x10;",150,70,"","Terminal 75mm2 x10",null,null,this.getTagsForStencil("mxgraph.cabinets","terminal_75mm2_x10","cabinet ").join(" "))];this.addPalette("cabinets",mxResources.get("cabinets"),!1,mxUtils.bind(this,function(a){for(var c=0;c<b.length;c++)a.appendChild(b[c](a))}))}})();(function(){Sidebar.prototype.addCiscoSafePalette=function(){this.addCiscoSafeArchitecturePalette();this.addCiscoSafeCapabilityPalette();this.addCiscoSafeDesignPalette();this.addCiscoSafeThreatPalette()};Sidebar.prototype.addCiscoSafeArchitecturePalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;html=1;fillColor=#6ABD46;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;align=center;shape=mxgraph.cisco_safe.architecture.";this.addPaletteFunctions("cisco_safeArchitecture","Cisco Safe / Architecture", -!1,[this.createVertexTemplateEntry(a+"aci_controller;",50,50,"","ACI Controller",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","aci controller","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"aci_leaf_switch;",50,50,"","ACI Leaf Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","aci leaf switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"aci_spine_switch;",50,50,"","ACI Spine Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture", -"aci spine switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"adaptive_security_appliance;",50,50,"","Adaptive Security Appliance",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","adaptive security appliance","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"automated_system;",50,50,"","Automated System",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","automated system","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+ -"blade_server;",50,50,"","Blade Server",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","blade server","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"catalyst_switch;",50,50,"","Catalyst Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","catalyst switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"corporate_device;",50,50,"","Corporate Device",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture", -"corporate device","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"email_security;",50,50,"","Email Security",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","email security","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"fabric_switch;",50,50,"","Fabric Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","fabric switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"firepower_appliance;", -50,50,"","Firepower Appliance",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","firepower appliance","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"firewall;",50,50,"","Firewall",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","firewall","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"generic_appliance;",50,50,"","Generic Appliance",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","generic appliance", -"cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"intrusion_detection;",50,50,"","Intrusion Detection",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","intrusion detection","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"l3_switch;",50,50,"","L3 Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","l3 switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"load_balancer;",50,50,"","Load Balancer", -null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","load balancer","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"nexus_1kv;",50,50,"","Nexus 1kv",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","nexus 1kv","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"nexus_data_center_switch;",50,50,"","Nexus Data Center Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","nexus data center switch","cisco safe architecture").join(" ")), -this.createVertexTemplateEntry(a+"nexus_fabric_switch;",50,50,"","Nexus Fabric Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","nexus fabric switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"nexus_switch;",50,50,"","Nexus Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","nexus switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"phone;",50,50,"","Phone",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture", -"phone","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"router;",50,50,"","Router",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","router","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"secure_server;",50,50,"","Secure Server",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","secure server","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"server;",50,50,"","Server",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture", -"server","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"stacked_switch;",50,50,"","Stacked Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","stacked switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"storage;",50,50,"","Storage",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","storage","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"switch;",50,50,"","Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture", -"switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"tls_appliance;",50,50,"","TLS Appliance",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","tls appliance","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"unified_access_switch;",50,50,"","Unified Access Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","unified access switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"web_application_firewall;", -50,50,"","Web Application Firewall",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","web application firewall","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"web_security;",50,50,"","Web Security",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","web security","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"wide_area_application_engine;",50,50,"","Wide Area Application Engine",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture", -"wide area application engine","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"wireless_access_point;",50,50,"","Wireless Access Point",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","wireless access point","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"wireless_lan_controller;",50,50,"","Wireless LAN Controller",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","wireless lan controller","cisco safe architecture").join(" "))])}; -Sidebar.prototype.addCiscoSafeCapabilityPalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;html=1;fillColor=#28A8E0;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;align=center;shape=mxgraph.cisco_safe.capability.";this.addPaletteFunctions("cisco_safeCapability","Cisco Safe / Capability",!1,[this.createVertexTemplateEntry(a+"access_control_using_trustsec;",50,50,"","Access Control Using TrustSec",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","access control using trustsec", -"cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"analysis_correlation",50,50,"","Analysis Correlation",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","analysis correlation","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"anomaly_detection;",50,50,"","Anomaly Detection",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","anomaly detection","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"anti_malware;", -50,50,"","Anti-Malware",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","anti malware","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"anti_spam;",50,50,"","Anti-Spam",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","anti spam","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"anti_virus;",50,50,"","Anti-Virus",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","anti virus","cisco safe capability").join(" ")), -this.createVertexTemplateEntry(a+"application;",50,50,"","Application",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","application","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"application_visibility_control;",50,50,"","Application Visibility Control",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","application visibility control","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"client_based_security;",50,50,"","Client Based Security", -null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","client based security","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"cloud_web_security;",50,50,"","Cloud Web Security",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","cloud web security","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"conference_bridge;",50,50,"","Conference Bridge",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","conference bridge","cisco safe capability").join(" ")), -this.createVertexTemplateEntry(a+"database;",50,50,"","Database",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","database","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"data_loss_prevention;",50,50,"","Data Loss Prevention",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","data loss prevention","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"distributed_denial_of_service_protection;",50,50,"","Distributed Denial of Service Protection", -null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","distributed denial of service protection","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"dns;",50,50,"","DNS",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","dns","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"email_encryption;",50,50,"","Email Encryption",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","email encryption","cisco safe capability").join(" ")), -this.createVertexTemplateEntry(a+"email_security;",50,50,"","Email Security",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","email security","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"fabric_switching;",50,50,"","Fabric Switching",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","fabric switching","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"firewall;",50,50,"","Firewall",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability", -"firewall","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"flow_analytics;",50,50,"","Flow Analytics",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","flow analytics","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"identity_authorization;",50,50,"","Identity Authorization",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","identity authorization","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"identity_authorization_alt;", -50,50,"","Identity Authorization (alternative)",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","identity authorization alt alternative","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"intrusion_detection;",50,50,"","Intrusion Detection",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","intrusion detection","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"intrusion_prevention;",50,50,"","Intrusion Prevention",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability", -"intrusion prevention","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"l2_l3_network;",50,50,"","L2 L3 Network",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","l2 l3 network","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"l2_l3_network_virtual;",50,50,"","L2 L3 Network (virtual)",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","l2 l3 network virtual","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+ -"l2_switching;",50,50,"","L2 Switching",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","l2 switching","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"l3_switching;",50,50,"","L3 Switching",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","l3 switching","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"load_balancer;",50,50,"","Load Balancer",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","load balancer", -"cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"logging_reporting;",50,50,"","Logging Reporting",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","logging reporting","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"malware_sandbox;",50,50,"","Malware Sandbox",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","malware sandbox","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"mobile_device_manager;",50,50, -"","Mobile Device Manager",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","mobile device manager","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"monitoring;",50,50,"","Monitoring",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","monitoring","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"policy_configuration;",50,50,"","Policy Configuration",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","policy configuration", -"cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"posture_assesment;",50,50,"","Posture Assesment",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","posture assesment","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"routing;",50,50,"","Routing",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","routing","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"server_based_security;",50,50,"","Server Based Security", -null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","server based security","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"ssl_tls_offload;",50,50,"","SSL TLS Offload",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","ssl tls offload","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"storage;",50,50,"","Storage",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","storage","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+ -"threat_intelligence;",50,50,"","Threat Intelligence",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","threat intelligence","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"time_synchronization;",50,50,"","Time Synchronization",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","time synchronization","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"user;",50,50,"","User",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability", -"user","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"video;",50,50,"","Video",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","video","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"virtualized_capability;",50,50,"","Virtualized Capability",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","virtualized capability","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"virtual_firewall;",50,50,"","Virtual Firewall", -null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","virtual firewall","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"virtual_l2_switching;",50,50,"","Virtual L2 Switching",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","virtual l2 switching","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"virtual_private_network;",50,50,"","Virtual Private Network",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","virtual private network vpn", -"cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"voice;",50,50,"","Voice",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","voice","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"vpn_concentrator;",50,50,"","VPN Concentrator",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","vpn concentrator virtual private network","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"vulnerability_management;",50,50,"","Vulnerability Management", -null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","vulnerability management","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"web_application_firewall;",50,50,"","Web Application Firewall",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","web application firewall","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"web_reputation_filtering_dcs;",50,50,"","Web Reputation Filtering DCS",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability", -"web reputation filtering dcs","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"web_security;",50,50,"","Web Security",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","web security","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"wireless_connection;",50,50,"","Wireless Connection",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","wireless connection","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"wireless_intrusion_detection_system;", -50,50,"","Wireless Intrusion Detection System",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","wireless intrusion detection system","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"wireless_intrusion_prevention_system;",50,50,"","Wireless Intrusion Prevention System",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","wireless intrusion prevention system","cisco safe capability").join(" "))])};Sidebar.prototype.addCiscoSafeDesignPalette=function(){var a= -mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;html=1;fillColor=#A153A0;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;align=center;shape=mxgraph.cisco_safe.design.";this.addPaletteFunctions("cisco_safeDesign","Cisco Safe / Design",!1,[this.createVertexTemplateEntry(a+"access_point;",50,45,"","Access Point",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","access point","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"aci_controller;",50,45,"","ACI Controller",null,null, -this.getTagsForStencil("mxgraph.cisco_safe.design","aci controller","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"aci_leaf_switch;",50,45,"","ACI Leaf Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","aci leaf switch","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"aci_spine_switch;",50,45,"","ACI Spine Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","aci spine switch","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+ -"actor_1;",23.5,50,"","Actor (female)",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","actor female","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"actor_2;",19,50,"","Actor (male)",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","actor male","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"adaptive_security_appliance;",50,45,"","Adaptive Security Appliance",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","adaptive security appliance", +"terminal_50mm2_x10","cabinet ").join(" ")),this.createVertexTemplateEntry(a+"terminal_75mm2;",15,70,"","Terminal 75mm2",null,null,this.getTagsForStencil("mxgraph.cabinets","terminal_75mm2","cabinet ").join(" ")),this.createVertexTemplateEntry(a+"terminal_75mm2_x10;",150,70,"","Terminal 75mm2 x10",null,null,this.getTagsForStencil("mxgraph.cabinets","terminal_75mm2_x10","cabinet ").join(" "))];this.addPalette("cabinets",mxResources.get("cabinets"),!1,mxUtils.bind(this,function(a){for(var c=0;c<b.length;c++)a.appendChild(b[c](a))}))}})();(function(){Sidebar.prototype.addCiscoSafePalette=function(){this.addCiscoSafeArchitecturePalette();this.addCiscoSafeCapabilityPalette();this.addCiscoSafeDesignPalette();this.addCiscoSafeThreatPalette()};Sidebar.prototype.addCiscoSafeArchitecturePalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;html=1;fillColor=#6ABD46;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;align=center;points=[[0.06,0.06,0],[0.94,0.06,0],[0.94,0.94,0],[0.06,0.94,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0.25,0],[1,0.5,0],[1,0.75,0],[0.75,1,0],[0.5,1,0],[0.25,1,0],[0,0.75,0],[0,0.5,0],[0,0.25,0]];shape=mxgraph.cisco_safe.architecture."; +this.addPaletteFunctions("cisco_safeArchitecture","Cisco Safe / Architecture",!1,[this.createVertexTemplateEntry(a+"aci_controller;",50,50,"","ACI Controller",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","aci controller","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"aci_leaf_switch;",50,50,"","ACI Leaf Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","aci leaf switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+ +"aci_spine_switch;",50,50,"","ACI Spine Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","aci spine switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"adaptive_security_appliance;",50,50,"","Adaptive Security Appliance",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","adaptive security appliance","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"automated_system;",50,50,"","Automated System",null,null, +this.getTagsForStencil("mxgraph.cisco_safe.architecture","automated system","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"blade_server;",50,50,"","Blade Server",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","blade server","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"catalyst_switch;",50,50,"","Catalyst Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","catalyst switch","cisco safe architecture").join(" ")), +this.createVertexTemplateEntry(a+"corporate_device;",50,50,"","Corporate Device",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","corporate device","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"email_security;",50,50,"","Email Security",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","email security","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"fabric_switch;",50,50,"","Fabric Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture", +"fabric switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"firepower_appliance;",50,50,"","Firepower Appliance",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","firepower appliance","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"firewall;",50,50,"","Firewall",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","firewall","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"generic_appliance;", +50,50,"","Generic Appliance",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","generic appliance","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"intrusion_detection;",50,50,"","Intrusion Detection",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","intrusion detection","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"l3_switch;",50,50,"","L3 Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture", +"l3 switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"load_balancer;",50,50,"","Load Balancer",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","load balancer","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"nexus_1kv;",50,50,"","Nexus 1kv",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","nexus 1kv","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"nexus_data_center_switch;",50,50,"","Nexus Data Center Switch", +null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","nexus data center switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"nexus_fabric_switch;",50,50,"","Nexus Fabric Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","nexus fabric switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"nexus_switch;",50,50,"","Nexus Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","nexus switch", +"cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"phone;",50,50,"","Phone",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","phone","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"router;",50,50,"","Router",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","router","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"secure_server;",50,50,"","Secure Server",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture", +"secure server","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"server;",50,50,"","Server",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","server","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"stacked_switch;",50,50,"","Stacked Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","stacked switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"storage;",50,50,"","Storage",null,null, +this.getTagsForStencil("mxgraph.cisco_safe.architecture","storage","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"switch;",50,50,"","Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"tls_appliance;",50,50,"","TLS Appliance",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","tls appliance","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+ +"unified_access_switch;",50,50,"","Unified Access Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","unified access switch","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"web_application_firewall;",50,50,"","Web Application Firewall",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","web application firewall","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"web_security;",50,50,"","Web Security",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture", +"web security","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"wide_area_application_engine;",50,50,"","Wide Area Application Engine",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","wide area application engine","cisco safe architecture").join(" ")),this.createVertexTemplateEntry(a+"wireless_access_point;",50,50,"","Wireless Access Point",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","wireless access point","cisco safe architecture").join(" ")), +this.createVertexTemplateEntry(a+"wireless_lan_controller;",50,50,"","Wireless LAN Controller",null,null,this.getTagsForStencil("mxgraph.cisco_safe.architecture","wireless lan controller","cisco safe architecture").join(" "))])};Sidebar.prototype.addCiscoSafeCapabilityPalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;html=1;fillColor=#28A8E0;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;points=[[0.145,0.145,0],[0.8555,0.145,0],[0.855,0.855,0],[0.145,0.855,0],[0.5,0,0], [1,0.5,0], [0.5,1,0],[0,0.5,0]];align=center;shape=mxgraph.cisco_safe.capability."; +this.addPaletteFunctions("cisco_safeCapability","Cisco Safe / Capability",!1,[this.createVertexTemplateEntry(a+"access_control_using_trustsec;",50,50,"","Access Control Using TrustSec",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","access control using trustsec","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"analysis_correlation",50,50,"","Analysis Correlation",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","analysis correlation","cisco safe capability").join(" ")), +this.createVertexTemplateEntry(a+"anomaly_detection;",50,50,"","Anomaly Detection",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","anomaly detection","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"anti_malware;",50,50,"","Anti-Malware",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","anti malware","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"anti_spam;",50,50,"","Anti-Spam",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability", +"anti spam","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"anti_virus;",50,50,"","Anti-Virus",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","anti virus","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"application;",50,50,"","Application",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","application","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"application_visibility_control;",50,50,"","Application Visibility Control", +null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","application visibility control","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"client_based_security;",50,50,"","Client Based Security",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","client based security","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"cloud_web_security;",50,50,"","Cloud Web Security",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","cloud web security", +"cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"conference_bridge;",50,50,"","Conference Bridge",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","conference bridge","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"database;",50,50,"","Database",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","database","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"data_loss_prevention;",50,50,"","Data Loss Prevention", +null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","data loss prevention","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"distributed_denial_of_service_protection;",50,50,"","Distributed Denial of Service Protection",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","distributed denial of service protection","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"dns;",50,50,"","DNS",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability", +"dns","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"email_encryption;",50,50,"","Email Encryption",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","email encryption","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"email_security;",50,50,"","Email Security",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","email security","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"fabric_switching;",50,50,"","Fabric Switching", +null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","fabric switching","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"firewall;",50,50,"","Firewall",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","firewall","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"flow_analytics;",50,50,"","Flow Analytics",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","flow analytics","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+ +"identity_authorization;",50,50,"","Identity Authorization",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","identity authorization","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"identity_authorization_alt;",50,50,"","Identity Authorization (alternative)",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","identity authorization alt alternative","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"intrusion_detection;",50,50, +"","Intrusion Detection",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","intrusion detection","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"intrusion_prevention;",50,50,"","Intrusion Prevention",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","intrusion prevention","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"l2_l3_network;",50,50,"","L2 L3 Network",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability", +"l2 l3 network","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"l2_l3_network_virtual;",50,50,"","L2 L3 Network (virtual)",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","l2 l3 network virtual","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"l2_switching;",50,50,"","L2 Switching",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","l2 switching","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"l3_switching;", +50,50,"","L3 Switching",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","l3 switching","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"load_balancer;",50,50,"","Load Balancer",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","load balancer","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"logging_reporting;",50,50,"","Logging Reporting",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","logging reporting","cisco safe capability").join(" ")), +this.createVertexTemplateEntry(a+"malware_sandbox;",50,50,"","Malware Sandbox",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","malware sandbox","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"mobile_device_manager;",50,50,"","Mobile Device Manager",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","mobile device manager","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"monitoring;",50,50,"","Monitoring",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability", +"monitoring","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"policy_configuration;",50,50,"","Policy Configuration",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","policy configuration","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"posture_assesment;",50,50,"","Posture Assesment",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","posture assesment","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"routing;", +50,50,"","Routing",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","routing","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"server_based_security;",50,50,"","Server Based Security",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","server based security","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"ssl_tls_offload;",50,50,"","SSL TLS Offload",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","ssl tls offload", +"cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"storage;",50,50,"","Storage",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","storage","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"threat_intelligence;",50,50,"","Threat Intelligence",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","threat intelligence","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"time_synchronization;",50,50,"","Time Synchronization", +null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","time synchronization","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"user;",50,50,"","User",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","user","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"video;",50,50,"","Video",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","video","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"virtualized_capability;", +50,50,"","Virtualized Capability",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","virtualized capability","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"virtual_firewall;",50,50,"","Virtual Firewall",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","virtual firewall","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"virtual_l2_switching;",50,50,"","Virtual L2 Switching",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability", +"virtual l2 switching","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"virtual_private_network;",50,50,"","Virtual Private Network",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","virtual private network vpn","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"voice;",50,50,"","Voice",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","voice","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"vpn_concentrator;", +50,50,"","VPN Concentrator",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","vpn concentrator virtual private network","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"vulnerability_management;",50,50,"","Vulnerability Management",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","vulnerability management","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"web_application_firewall;",50,50,"","Web Application Firewall",null,null, +this.getTagsForStencil("mxgraph.cisco_safe.capability","web application firewall","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"web_reputation_filtering_dcs;",50,50,"","Web Reputation Filtering DCS",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","web reputation filtering dcs","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"web_security;",50,50,"","Web Security",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","web security", +"cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"wireless_connection;",50,50,"","Wireless Connection",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","wireless connection","cisco safe capability").join(" ")),this.createVertexTemplateEntry(a+"wireless_intrusion_detection_system;",50,50,"","Wireless Intrusion Detection System",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","wireless intrusion detection system","cisco safe capability").join(" ")), +this.createVertexTemplateEntry(a+"wireless_intrusion_prevention_system;",50,50,"","Wireless Intrusion Prevention System",null,null,this.getTagsForStencil("mxgraph.cisco_safe.capability","wireless intrusion prevention system","cisco safe capability").join(" "))])};Sidebar.prototype.addCiscoSafeDesignPalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;html=1;fillColor=#A153A0;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;align=center;points=[[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0.5,0],[0.75,1,0],[0.5,1,0],[0.25,1,0],[0,0.5,0],[0.125,0.25,0],[0.125,0.75,0],[0.875,0.25,0],[0.875,0.75,0]];shape=mxgraph.cisco_safe.design.", +e=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;html=1;fillColor=#A153A0;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;align=center;shape=mxgraph.cisco_safe.design.";this.addPaletteFunctions("cisco_safeDesign","Cisco Safe / Design",!1,[this.createVertexTemplateEntry(a+"access_point;",50,45,"","Access Point",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","access point","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"aci_controller;",50,45,"","ACI Controller",null,null, +this.getTagsForStencil("mxgraph.cisco_safe.design","aci controller","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"aci_leaf_switch;",50,45,"","ACI Leaf Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","aci leaf switch","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"aci_spine_switch;",50,45,"","ACI Spine Switch",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","aci spine switch","cisco safe design").join(" ")),this.createVertexTemplateEntry(e+ +"actor_1;",23.5,50,"","Actor (female)",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","actor female","cisco safe design").join(" ")),this.createVertexTemplateEntry(e+"actor_2;",19,50,"","Actor (male)",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","actor male","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"adaptive_security_appliance;",50,45,"","Adaptive Security Appliance",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","adaptive security appliance", "cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"automated_system;",50,45,"","Automated System",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","automated system","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"blade_server;",50,45,"","Blade Server",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","blade server","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"blank_device;",50,45,"","Blank Device",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design", "blank device","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"blank_service;",50,45,"","Blank Service",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","blank service","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"call_manager;",50,45,"","Call Manager",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","call manager","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"catalyst_data_center_switch;",50,45,"","Catalyst Data Center Switch", null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","catalyst data center switch","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"catalyst_switch_stack;",50,45,"","Catalyst Switch Stack",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","catalyst switch stack","cisco safe design").join(" ")),this.createVertexTemplateEntry(a+"cisco_amp;",50,45,"","Cisco Amp",null,null,this.getTagsForStencil("mxgraph.cisco_safe.design","cisco amp amplifier","cisco safe design").join(" ")), @@ -4636,17 +4641,18 @@ null,null,this.getTagsForStencil("mxgraph.citrix","Role Synchronizer","").join(" "XenApp Web","").join(" ")),this.createVertexTemplateEntry(a+"xencenter;",76,89,"","XenCenter",null,null,this.getTagsForStencil("mxgraph.citrix","XenCenter","").join(" ")),this.createVertexTemplateEntry(a+"xenclient;",91,77,"","XenClient",null,null,this.getTagsForStencil("mxgraph.citrix","XenClient","").join(" ")),this.createVertexTemplateEntry(a+"xenclient_synchronizer;fillColor=#CCCCCC;gradientColor=#000000;gradientDirection=south;",76,91,"","XenClient Synchronizer",null,null,this.getTagsForStencil("mxgraph.citrix", "Synchronizer","").join(" ")),this.createVertexTemplateEntry(a+"xendesktop_server;",75,91,"","XenDesktop Server",null,null,this.getTagsForStencil("mxgraph.citrix","XenDesktop Server","").join(" ")),this.createVertexTemplateEntry(a+"xenmobile;fillColor=#CCCCCC;gradientColor=#000000;gradientDirection=south;",70,89,"","XenMobile",null,null,this.getTagsForStencil("mxgraph.citrix","XenMobile","").join(" ")),this.createVertexTemplateEntry(a+"xenserver;",76.5,90,"","XenServer",null,null,this.getTagsForStencil("mxgraph.citrix", "XenServer","").join(" "))])}})();(function(){Sidebar.prototype.addDFDPalette=function(){this.addPaletteFunctions("dfd","Data Flow Diagram",!1,[this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;shape=mxgraph.dfd.start",80,30,"","Start / End",null,null,this.getTagsForStencil("mxgraph.flowchart","start end","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;",100,50,"","Activity / Process / Entity / External Interactor",null,null,this.getTagsForStencil("mxgraph.flowchart", -"activity process entity external interactor","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=rhombus;html=1;dashed=0;whitespace=wrap;",60,50,"","Decision / Entity Relationship",null,null,this.getTagsForStencil("mxgraph.flowchart","decision entity relationship","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=ellipse;html=1;dashed=0;whitespace=wrap;aspect=fixed;",30,30,"","Reference",null,null,this.getTagsForStencil("mxgraph.flowchart","reference", -"dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;dashed=0;",100,50,"","Product / Result",null,null,this.getTagsForStencil("mxgraph.flowchart","product result","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=manualInput;whiteSpace=wrap;html=1;dashed=0;size=15;",100,50,"","Order / Command",null,null,this.getTagsForStencil("mxgraph.flowchart","order command","dfd data flow diagram ").join(" ")), -this.createVertexTemplateEntry("shape=document;whiteSpace=wrap;html=1;boundedLbl=1;dashed=0;flipH=1;",100,70,"","Information / Data Carrier / SOP",null,null,this.getTagsForStencil("mxgraph.flowchart","information data carrier sop","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("triangle;whiteSpace=wrap;html=1;dashed=0;direction=south;",60,60,"","Information/Data Carrier/SOP / Stop State",null,null,this.getTagsForStencil("mxgraph.flowchart","information data carrier sop","dfd data flow diagram ").join(" ")), -this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;shape=mxgraph.dfd.archive",60,60,"","Final Report / Archive",null,null,this.getTagsForStencil("mxgraph.flowchart","final report archive","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;size=0.25",100,50,"","Check",null,null,this.getTagsForStencil("mxgraph.flowchart","check","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;shape=mxgraph.dfd.check2", -100,50,"","Check 2",null,null,this.getTagsForStencil("mxgraph.flowchart","check","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=ellipse;html=1;dashed=0;whitespace=wrap;",30,30,"","Data Process",null,null,this.getTagsForStencil("mxgraph.flowchart","data process","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=ellipse;html=1;dashed=0;whitespace=wrap;aspect=fixed;",60,60,"","Data Process / State",null,null,this.getTagsForStencil("mxgraph.flowchart", -"data process","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("ellipse;shape=doubleEllipse;html=1;dashed=0;whitespace=wrap;aspect=fixed;",60,60,"","Multiple Process / Start State / Multi State",null,null,this.getTagsForStencil("mxgraph.flowchart","multiple process start state multi","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=ellipse;html=1;dashed=0;whitespace=wrap;aspect=fixed;strokeWidth=5;",60,60,"","Stop State",null,null,this.getTagsForStencil("mxgraph.flowchart", -"stop state","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;shape=partialRectangle;right=0;left=0;fillColor=none;",100,30,"","Data Store",null,null,this.getTagsForStencil("mxgraph.flowchart","data store","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;shape=partialRectangle;right=0;fillColor=none;",100,30,"","Data Store",null,null,this.getTagsForStencil("mxgraph.flowchart","data store","dfd data flow diagram ").join(" ")), -this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;shape=mxgraph.dfd.dataStoreID;align=left;spacingLeft=3;",100,30,"","Data Store with ID",null,null,this.getTagsForStencil("mxgraph.flowchart","data store with id identification","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=20;fillColor=#ffffff;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;swimlaneFillColor=#ffffff;", -100,50,"","Entity",null,null,this.getTagsForStencil("mxgraph.flowchart","entity","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=cloud;whiteSpace=wrap;html=1;",120,120,"","Object",null,null,this.getTagsForStencil("mxgraph.flowchart","object","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=ellipse;html=1;dashed=0;whitespace=wrap;",100,50,"","Oval Process",null,null,this.getTagsForStencil("mxgraph.flowchart","oval process","dfd data flow diagram ").join(" ")), -this.createVertexTemplateEntry("shape=cylinder;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;",60,80,"","Data Store",null,null,this.getTagsForStencil("mxgraph.flowchart","data store","dfd data flow diagram ").join(" ")),this.addEntry("dfd data flow diagram external entity",function(){var a=new mxCell("",new mxGeometry(0,0,100,100),"html=1;dashed=0;whitespace=wrap;shape=mxgraph.dfd.externalEntity");a.vertex=!0;var e=new mxCell("Id",new mxGeometry(0,0,20,20),"autosize=1;part=1;resizable=0;strokeColor=inherit;fillColor=inherit;gradientColor=inherit;"); -e.geometry.relative=!0;e.geometry.offset=new mxPoint(15,15);e.vertex=!0;a.insert(e);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,"External Entity")}),this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;shape=mxgraph.dfd.loop",80,30,"","Loop",null,null,this.getTagsForStencil("mxgraph.flowchart","loop","dfd data flow diagram ").join(" ")),this.createEdgeTemplateEntry("endArrow=classic;html=1;",50,50,"","Directional Connector",null,"dfd data flow diagram directional directed")])}})();(function(){Sidebar.prototype.addEipMessageConstructionPalette=function(a){var e=this,d=[this.createEdgeTemplateEntry("edgeStyle=none;html=1;strokeColor=#808080;endArrow=block;endSize=10;dashed=0;verticalAlign=bottom;strokeWidth=2;",160,0,"","Pipe",null,this.getTagsForStencil("mxgraph.eip","","eip enterprise integration pattern message construction pipe").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;dashed=0;align=center;fontSize=8;shape=rect;fillColor=#c0f5a9;strokeColor=#000000;verticalLabelPosition=bottom;verticalAlign=top;", +"activity process entity external interactor","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=rhombus;html=1;dashed=0;whitespace=wrap;perimeter=rhombusPerimeter;",60,50,"","Decision / Entity Relationship",null,null,this.getTagsForStencil("mxgraph.flowchart","decision entity relationship","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=ellipse;html=1;dashed=0;whitespace=wrap;aspect=fixed;perimeter=ellipsePerimeter;",30,30,"","Reference",null,null, +this.getTagsForStencil("mxgraph.flowchart","reference","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;dashed=0;",100,50,"","Product / Result",null,null,this.getTagsForStencil("mxgraph.flowchart","product result","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=manualInput;whiteSpace=wrap;html=1;dashed=0;size=15;",100,50,"","Order / Command",null,null,this.getTagsForStencil("mxgraph.flowchart", +"order command","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=document;whiteSpace=wrap;html=1;boundedLbl=1;dashed=0;flipH=1;",100,70,"","Information / Data Carrier / SOP",null,null,this.getTagsForStencil("mxgraph.flowchart","information data carrier sop","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("triangle;whiteSpace=wrap;html=1;dashed=0;direction=south;",60,60,"","Information/Data Carrier/SOP / Stop State",null,null,this.getTagsForStencil("mxgraph.flowchart", +"information data carrier sop","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;shape=mxgraph.dfd.archive",60,60,"","Final Report / Archive",null,null,this.getTagsForStencil("mxgraph.flowchart","final report archive","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;size=0.25",100,50,"","Check",null,null,this.getTagsForStencil("mxgraph.flowchart","check","dfd data flow diagram ").join(" ")), +this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;shape=mxgraph.dfd.check2",100,50,"","Check 2",null,null,this.getTagsForStencil("mxgraph.flowchart","check","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=ellipse;html=1;dashed=0;whitespace=wrap;perimeter=ellipsePerimeter;",30,30,"","Data Process",null,null,this.getTagsForStencil("mxgraph.flowchart","data process","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=ellipse;html=1;dashed=0;whitespace=wrap;aspect=fixed;perimeter=ellipsePerimeter;", +60,60,"","Data Process / State",null,null,this.getTagsForStencil("mxgraph.flowchart","data process","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("ellipse;shape=doubleEllipse;html=1;dashed=0;whitespace=wrap;aspect=fixed;",60,60,"","Multiple Process / Start State / Multi State",null,null,this.getTagsForStencil("mxgraph.flowchart","multiple process start state multi","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=ellipse;html=1;dashed=0;whitespace=wrap;aspect=fixed;strokeWidth=5;perimeter=ellipsePerimeter;", +60,60,"","Stop State",null,null,this.getTagsForStencil("mxgraph.flowchart","stop state","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;shape=partialRectangle;right=0;left=0;fillColor=none;",100,30,"","Data Store",null,null,this.getTagsForStencil("mxgraph.flowchart","data store","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;shape=partialRectangle;right=0;fillColor=none;",100,30,"","Data Store", +null,null,this.getTagsForStencil("mxgraph.flowchart","data store","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;shape=mxgraph.dfd.dataStoreID;align=left;spacingLeft=3;points=[[0,0],[0.5,0],[1,0],[0,0.5],[1,0.5],[0,1],[0.5,1],[1,1]];",100,30,"","Data Store with ID",null,null,this.getTagsForStencil("mxgraph.flowchart","data store with id identification","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=20;fillColor=#ffffff;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;swimlaneFillColor=#ffffff;", +100,50,"","Entity",null,null,this.getTagsForStencil("mxgraph.flowchart","entity","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=cloud;whiteSpace=wrap;html=1;",120,120,"","Object",null,null,this.getTagsForStencil("mxgraph.flowchart","object","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=ellipse;html=1;dashed=0;whitespace=wrap;perimeter=ellipsePerimeter;",100,50,"","Oval Process",null,null,this.getTagsForStencil("mxgraph.flowchart","oval process", +"dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=cylinder;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;",60,80,"","Data Store",null,null,this.getTagsForStencil("mxgraph.flowchart","data store","dfd data flow diagram ").join(" ")),this.addEntry("dfd data flow diagram external entity",function(){var a=new mxCell("",new mxGeometry(0,0,100,100),"html=1;dashed=0;whitespace=wrap;shape=mxgraph.dfd.externalEntity");a.vertex=!0;var e=new mxCell("Id",new mxGeometry(0,0, +20,20),"autosize=1;part=1;resizable=0;strokeColor=inherit;fillColor=inherit;gradientColor=inherit;");e.geometry.relative=!0;e.geometry.offset=new mxPoint(15,15);e.vertex=!0;a.insert(e);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,"External Entity")}),this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;shape=mxgraph.dfd.loop",80,30,"","Loop",null,null,this.getTagsForStencil("mxgraph.flowchart","loop","dfd data flow diagram ").join(" ")),this.createEdgeTemplateEntry("endArrow=classic;html=1;", +50,50,"","Directional Connector",null,"dfd data flow diagram directional directed")])}})();(function(){Sidebar.prototype.addEipMessageConstructionPalette=function(a){var e=this,d=[this.createEdgeTemplateEntry("edgeStyle=none;html=1;strokeColor=#808080;endArrow=block;endSize=10;dashed=0;verticalAlign=bottom;strokeWidth=2;",160,0,"","Pipe",null,this.getTagsForStencil("mxgraph.eip","","eip enterprise integration pattern message construction pipe").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;dashed=0;align=center;fontSize=8;shape=rect;fillColor=#c0f5a9;strokeColor=#000000;verticalLabelPosition=bottom;verticalAlign=top;", 150,90,"","Filter",null,null,this.getTagsForStencil("mxgraph.eip","","eip enterprise integration pattern message construction filter").join(" ")),this.addEntry("eip enterprise integration pattern message construction command message",function(){var a=new mxCell("",new mxGeometry(0,0,12,12),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=ellipse;fillColor=#808080;strokeColor=none;");a.vertex=!0;var c=new mxCell("C",new mxGeometry(16,18,12,12),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=rect;fillColor=#FF8080;strokeColor=#000000;fontStyle=1;"); c.vertex=!0;var d=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;strokeColor=#808080;strokeWidth=2;");d.geometry.relative=!0;d.edge=!0;a.insertEdge(d,!1);c.insertEdge(d,!0);return e.createVertexTemplateFromCells([d,a,c],28,30,"Command Message")}),this.addDataEntry("eip enterprise integration pattern message construction correlation identifier",78,30,"Correlation Identifier","5ZZLT8JAEIB/Ta+mDwv1KAicTEw8qMeVDu2GpUO2ixZ/vbPdAVorilExkTZN5rEznf1mtqkXDRfVRItlfo0pKC8aedFQIxonLaohKOWFvky96MoLQ58eLxzv8Qa1118KDYU5JCB0AU9CrcBZnKE0a8UGSDO4ZRW1yTHDQqjRzjrQuCpSsBl90qCS5r4hP1j5LLZakV5qjc9kKLCwkako821gbha0/6uAxNJonMMQFeq6iCjx7b313MnU5OQJyeIKtlW2GJS40lM29ZzJCJ0BY4m7pOpAxjQBXIDRa1qiQQkjn9rZRenUbLtuB5kE5vw+8+gkmCdd5v2/Y35+APMdqUeF03mbDnnHUrVZNYl06I3HF4RwD6ifRMChNygpY+hXvGEe8HXrBGziXaM4pPl5eJMl6H+UxfW2k6XuxXYnB7Un/rw9XeStQRZKZgXJU+IK1ILBDAtzK19sdGL7k4ullem9clnaczCjdu6f9o2HDw3XB9pA9dVOPnPNdgXvKweZ5aZt+8549zr8Ln8LoIap6dLjaX/nHPj1tcnH5QSsN9bN6uubqDcBvdbYBnwMj9CI/n8eZA6I/aPhTDo4B6c8171jzTWpu39Q9z1v/qK+Ag=="), this.addEntry("eip enterprise integration pattern message construction document message",function(){var a=new mxCell("",new mxGeometry(0,0,12,12),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=ellipse;fillColor=#808080;strokeColor=none;");a.vertex=!0;var c=new mxCell("D",new mxGeometry(16,18,12,12),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=rect;fillColor=#C7A0FF;strokeColor=#000000;fontStyle=1;");c.vertex=!0;var d=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;strokeColor=#808080;strokeWidth=2;"); @@ -4935,95 +4941,95 @@ this.addPalette("gcpCards","GCP / Cards",!1,mxUtils.bind(this,function(e){for(va this.addGCP2DeveloperToolsPalette();this.addGCP2ExpandedProductCardsPalette();this.addGCP2ProductCardsPalette()};Sidebar.prototype.addGCP2PathsPalette=function(){var a=[],a=[this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=blockThin;endFill=1;rounded=0;strokeWidth=2;endSize=4;startSize=4;dashed=0;strokeColor=#4284F3;",100,0,"","Primary Path",null,"gcp google cloud platform path primary"),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=blockThin;endFill=1;rounded=0;strokeWidth=2;endSize=4;startSize=4;dashed=1;dashPattern=1 3;strokeColor=#4284F3;", 100,0,"","Optional Primary Path",null,"gcp google cloud platform path optional primary"),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=blockThin;endFill=1;rounded=0;strokeWidth=2;endSize=4;startSize=4;dashed=0;strokeColor=#9E9E9E;",100,0,"","Secondary Path",null,"gcp google cloud platform path secondary"),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=blockThin;endFill=1;rounded=0;strokeWidth=2;endSize=4;startSize=4;dashed=1;dashPattern=1 3;strokeColor=#9E9E9E;", 100,0,"","Optional Secondary Path",null,"gcp google cloud platform path optional secondary"),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=blockThin;endFill=1;rounded=0;strokeWidth=2;endSize=4;startSize=4;strokeColor=#34A853;dashed=0;",100,0,"","Success Status",null,"gcp google cloud platform path success status"),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=blockThin;endFill=1;rounded=0;strokeWidth=2;endSize=4;startSize=4;strokeColor=#EA4335;dashed=0;", -100,0,"","Failure Status",null,"gcp google cloud platform path failure status")];this.addPalette("gcp2Paths","GCP / Paths",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2ZonesPalette=function(){var a=this,e="rounded=1;absoluteArcSize=1;arcSize=2;html=1;strokeColor=none;gradientColor=none;shadow=0;dashed=0;fontSize=12;fontColor=#9E9E9E;align=left;verticalAlign=top;spacing=10;spacingTop=-4;",d=[],d=[this.createVertexTemplateEntry(e+"fillColor=#ffffff;", -120,70,"User 1","User 1 (Default)",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone user").join(" ")),this.createVertexTemplateEntry(e+"fillColor=#F3E5F5;",120,150,"Infrastructure\nSystem","Infrastructure System",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone infrastructure system").join(" ")),this.createVertexTemplateEntry(e+"fillColor=#EFEBE9;",120,200,"colo / dc /\non-premises","colo / dc / on-premises",null,null, -this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone colo dc on premises").join(" ")),this.createVertexTemplateEntry(e+"fillColor=#F1F8E9;",120,70,"System 1","System 1",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone system").join(" ")),this.createVertexTemplateEntry(e+"fillColor=#FFEBEE;",120,70,"External SaaS\nProviders","External SaaS Providers",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone external saas providers").join(" ")), -this.createVertexTemplateEntry(e+"fillColor=#FFF8E1;",120,70,"External Data\nSources","External Data Sources",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone external data sources").join(" ")),this.createVertexTemplateEntry(e+"fillColor=#E0F2F1;",120,75,"External\nInfrastructure\n3<sup>rd</sup> Party","External Infrastructure 3rd party",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone external infrastructure 3rd party").join(" ")), -this.createVertexTemplateEntry(e+"fillColor=#E1F5FE;",120,75,"External\nInfrastructure\n1<sup>st</sup> Party","External Infrastructure 1st party",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone external infrastructure 1st party").join(" ")),this.addEntry("gcp google cloud platform zone project cloud service provider",function(){var b=new mxCell("Project Zone / Cloud Service Provider",new mxGeometry(0,0,530,490),e+"fillColor=#F6F6F6;");b.vertex=!0;var c=new mxCell("Logical Grouping of Services / Instances", -new mxGeometry(0,0,250,180),e+"fillColor=#E3F2FD;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(10,50);c.vertex=!0;b.insert(c);var d=new mxCell("Zone",new mxGeometry(0,0,230,120),e+"fillColor=#FFF3E0;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(10,50);d.vertex=!0;c.insert(d);c=new mxCell("SubNetwork",new mxGeometry(0,0,210,60),e+"fillColor=#EDE7F6;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(10,50);c.vertex=!0;d.insert(c);d=new mxCell("Kubernetes cluster",new mxGeometry(0, -0,250,120),e+"fillColor=#FCE4EC;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(10,240);d.vertex=!0;b.insert(d);c=new mxCell("pod",new mxGeometry(0,0,210,60),e+"fillColor=#E8F5E9;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(10,50);c.vertex=!0;d.insert(c);d=new mxCell("Account",new mxGeometry(0,0,250,60),e+"fillColor=#E8EAF6;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(10,370);d.vertex=!0;b.insert(d);d=new mxCell("Region",new mxGeometry(0,0,250,310),e+"fillColor=#ECEFF1;"); -d.geometry.relative=!0;d.geometry.offset=new mxPoint(270,50);d.vertex=!0;b.insert(d);c=new mxCell("Zone",new mxGeometry(0,0,230,250),e+"fillColor=#FFF3E0;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(10,50);c.vertex=!0;d.insert(c);d=new mxCell("Firewall",new mxGeometry(0,0,210,190),e+"fillColor=#FBE9E7;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(10,50);d.vertex=!0;c.insert(d);c=new mxCell("Instance Group",new mxGeometry(0,0,190,60),e+"fillColor=#F9FBE7;");c.geometry.relative= -!0;c.geometry.offset=new mxPoint(10,50);c.vertex=!0;d.insert(c);c=new mxCell("Replica Pool",new mxGeometry(0,0,190,60),e+"fillColor=#E0F7FA;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(10,120);c.vertex=!0;d.insert(c);d=new mxCell("Optional Component",new mxGeometry(0,0,250,60),"rounded=1;absoluteArcSize=1;arcSize=2;html=1;strokeColor=none;gradientColor=none;shadow=0;dashed=1;strokeColor=#4284F3;fontSize=12;fontColor=#9E9E9E;align=left;verticalAlign=top;spacing=10;spacingTop=-4;fillColor=none;dashPattern=1 2;strokeWidth=2;"); +100,0,"","Failure Status",null,"gcp google cloud platform path failure status")];this.addPalette("gcp2Paths","GCP / Paths",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2ZonesPalette=function(){var a=this,e="points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[1,0.25,0],[1,0.5,0],[1,0.75,0],[1,1,0],[0.75,1,0],[0.5,1,0],[0.25,1,0],[0,1,0],[0,0.75,0],[0,0.5,0],[0,0.25,0]];rounded=1;absoluteArcSize=1;arcSize=2;html=1;strokeColor=none;gradientColor=none;shadow=0;dashed=0;fontSize=12;fontColor=#9E9E9E;align=left;verticalAlign=top;spacing=10;spacingTop=-4;", +d=[],d=[this.createVertexTemplateEntry(e+"fillColor=#ffffff;",120,70,"User 1","User 1 (Default)",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone user").join(" ")),this.createVertexTemplateEntry(e+"fillColor=#F3E5F5;",120,150,"Infrastructure\nSystem","Infrastructure System",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone infrastructure system").join(" ")),this.createVertexTemplateEntry(e+"fillColor=#EFEBE9;",120,200, +"colo / dc /\non-premises","colo / dc / on-premises",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone colo dc on premises").join(" ")),this.createVertexTemplateEntry(e+"fillColor=#F1F8E9;",120,70,"System 1","System 1",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone system").join(" ")),this.createVertexTemplateEntry(e+"fillColor=#FFEBEE;",120,70,"External SaaS\nProviders","External SaaS Providers",null,null,this.getTagsForStencil("mxgraph.gcp2.zones", +"","gcp google cloud platform zone external saas providers").join(" ")),this.createVertexTemplateEntry(e+"fillColor=#FFF8E1;",120,70,"External Data\nSources","External Data Sources",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone external data sources").join(" ")),this.createVertexTemplateEntry(e+"fillColor=#E0F2F1;",120,75,"External\nInfrastructure\n3<sup>rd</sup> Party","External Infrastructure 3rd party",null,null,this.getTagsForStencil("mxgraph.gcp2.zones", +"","gcp google cloud platform zone external infrastructure 3rd party").join(" ")),this.createVertexTemplateEntry(e+"fillColor=#E1F5FE;",120,75,"External\nInfrastructure\n1<sup>st</sup> Party","External Infrastructure 1st party",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone external infrastructure 1st party").join(" ")),this.addEntry("gcp google cloud platform zone project cloud service provider",function(){var b=new mxCell("Project Zone / Cloud Service Provider", +new mxGeometry(0,0,530,490),e+"fillColor=#F6F6F6;");b.vertex=!0;var c=new mxCell("Logical Grouping of Services / Instances",new mxGeometry(0,0,250,180),e+"fillColor=#E3F2FD;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(10,50);c.vertex=!0;b.insert(c);var d=new mxCell("Zone",new mxGeometry(0,0,230,120),e+"fillColor=#FFF3E0;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(10,50);d.vertex=!0;c.insert(d);c=new mxCell("SubNetwork",new mxGeometry(0,0,210,60),e+"fillColor=#EDE7F6;");c.geometry.relative= +!0;c.geometry.offset=new mxPoint(10,50);c.vertex=!0;d.insert(c);d=new mxCell("Kubernetes cluster",new mxGeometry(0,0,250,120),e+"fillColor=#FCE4EC;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(10,240);d.vertex=!0;b.insert(d);c=new mxCell("pod",new mxGeometry(0,0,210,60),e+"fillColor=#E8F5E9;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(10,50);c.vertex=!0;d.insert(c);d=new mxCell("Account",new mxGeometry(0,0,250,60),e+"fillColor=#E8EAF6;");d.geometry.relative=!0;d.geometry.offset= +new mxPoint(10,370);d.vertex=!0;b.insert(d);d=new mxCell("Region",new mxGeometry(0,0,250,310),e+"fillColor=#ECEFF1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(270,50);d.vertex=!0;b.insert(d);c=new mxCell("Zone",new mxGeometry(0,0,230,250),e+"fillColor=#FFF3E0;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(10,50);c.vertex=!0;d.insert(c);d=new mxCell("Firewall",new mxGeometry(0,0,210,190),e+"fillColor=#FBE9E7;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(10,50);d.vertex= +!0;c.insert(d);c=new mxCell("Instance Group",new mxGeometry(0,0,190,60),e+"fillColor=#F9FBE7;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(10,50);c.vertex=!0;d.insert(c);c=new mxCell("Replica Pool",new mxGeometry(0,0,190,60),e+"fillColor=#E0F7FA;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(10,120);c.vertex=!0;d.insert(c);d=new mxCell("Optional Component",new mxGeometry(0,0,250,60),"rounded=1;absoluteArcSize=1;arcSize=2;html=1;strokeColor=none;gradientColor=none;shadow=0;dashed=1;strokeColor=#4284F3;fontSize=12;fontColor=#9E9E9E;align=left;verticalAlign=top;spacing=10;spacingTop=-4;fillColor=none;dashPattern=1 2;strokeWidth=2;"); d.geometry.relative=!0;d.geometry.offset=new mxPoint(270,370);d.vertex=!0;b.insert(d);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Project Zone / Cloud Service Provider")}),this.createVertexTemplateEntry("fillColor=#4DA1F5;strokeColor=none;shadow=1;gradientColor=none;fontSize=14;align=left;spacingLeft=50;fontColor=#ffffff;",1E3,40,"Architecture: App Engine and Cloud Endpoints","Title bar",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone title bar").join(" ")), this.createVertexTemplateEntry("fillColor=#ffffff;strokeColor=none;shadow=0;gradientColor=none;fontSize=11;align=left;spacing=10;fontColor=#;9E9E9E;verticalAlign=top;spacingTop=100;",300,350,"Use this note to call out\nor clarify parts of a diagram","Note",null,null,this.getTagsForStencil("mxgraph.gcp2.zones","","gcp google cloud platform zone note").join(" ")),this.addEntry("gcp google cloud platform zone project",function(){var b=new mxCell("<b>Google </b>Cloud Platform",new mxGeometry(0,0,650, 350),"fillColor=#F6F6F6;strokeColor=none;shadow=0;gradientColor=none;fontSize=14;align=left;spacing=10;fontColor=#717171;9E9E9E;verticalAlign=top;spacingTop=-4;fontStyle=0;spacingLeft=40;html=1;");b.vertex=!0;var c=new mxCell("",new mxGeometry(0,0,23,20),"shape=mxgraph.gcp2.google_cloud_platform;fillColor=#F6F6F6;strokeColor=none;shadow=0;gradientColor=none;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(20,10);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width, -b.geometry.height,"Project Zone")}),this.addEntry("gcp google cloud platform zone markers",function(){e="shape=ellipse;fillColor=#ffffff;strokeColor=#BDBDBD;strokeWidth=2;shadow=0;gradientColor=none;fontColor=#757575;align=center;html=1;fontStyle=1;spacingTop=-1;";var b=new mxCell("1",new mxGeometry(0,0,20,20),e);b.vertex=!0;var c=new mxCell("2",new mxGeometry(40,0,20,20),e);c.vertex=!0;var d=new mxCell("3",new mxGeometry(80,0,20,20),e);d.vertex=!0;var g=new mxCell("4",new mxGeometry(120,0,20,20), -e);g.vertex=!0;var h=new mxCell("5",new mxGeometry(160,0,20,20),e);h.vertex=!0;var k=new mxCell("6",new mxGeometry(200,0,20,20),e);k.vertex=!0;var l=new mxCell("7",new mxGeometry(240,0,20,20),e);l.vertex=!0;var m=new mxCell("Markers to be used with the legend",new mxGeometry(0,20,260,30),"strokeColor=none;fillColor=none;fontColor=#757575;align=left;html=1;fontStyle=0;fontSize=11;");m.vertex=!0;return a.createVertexTemplateFromCells([b,c,d,g,h,k,l,m],260,50,"Markers")}),this.addEntry("gcp google cloud platform zone markers", -function(){var b=new mxCell("",new mxGeometry(0,0,600,70),"fillColor=#ffffff;strokeColor=#BDBDBD;strokeWidth=1;shadow=0;gradientColor=none;");b.vertex=!0;var c=new mxCell("1 Commit code",new mxGeometry(0,0,200,30),"strokeColor=none;fillColor=none;fontColor=#757575;align=left;html=1;fontStyle=0;spacingLeft=5;fontSize=11;verticalAlign=top;whiteSpace=wrap;spacingRight=5;");c.geometry.relative=!0;c.vertex=!0;b.insert(c);c=new mxCell("2 Detect code change",new mxGeometry(0,0,200,30),"strokeColor=none;fillColor=none;fontColor=#757575;align=left;html=1;fontStyle=0;spacingLeft=5;fontSize=11;verticalAlign=top;whiteSpace=wrap;spacingRight=5;"); -c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,30);c.vertex=!0;b.insert(c);c=new mxCell("3 Build immutable image",new mxGeometry(0,0,200,30),"strokeColor=none;fillColor=none;fontColor=#757575;align=left;html=1;fontStyle=0;spacingLeft=5;fontSize=11;verticalAlign=top;whiteSpace=wrap;spacingRight=5;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(200,0);c.vertex=!0;b.insert(c);c=new mxCell("4 Launch test instance from image",new mxGeometry(0,0,200,30),"strokeColor=none;fillColor=none;fontColor=#757575;align=left;html=1;fontStyle=0;spacingLeft=5;fontSize=11;verticalAlign=top;whiteSpace=wrap;spacingRight=5;"); -c.geometry.relative=!0;c.geometry.offset=new mxPoint(200,30);c.vertex=!0;b.insert(c);c=new mxCell("5 Run tests",new mxGeometry(0,0,200,30),"strokeColor=none;fillColor=none;fontColor=#757575;align=left;html=1;fontStyle=0;spacingLeft=5;fontSize=11;verticalAlign=top;whiteSpace=wrap;spacingRight=5;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(400,0);c.vertex=!0;b.insert(c);c=new mxCell("6 Perform rolling update of image to autoscaler",new mxGeometry(0,0,200,30),"strokeColor=none;fillColor=none;fontColor=#757575;align=left;html=1;fontStyle=0;spacingLeft=5;fontSize=11;verticalAlign=top;whiteSpace=wrap;spacingRight=5;"); -c.geometry.relative=!0;c.geometry.offset=new mxPoint(400,30);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Markers")})];this.addPalette("gcp2Zones","GCP / Zones",!1,mxUtils.bind(this,function(a){for(var b=0;b<d.length;b++)a.appendChild(d[b](a))}))};Sidebar.prototype.addGCP2ServiceCardsPalette=function(){var a=[];this.addGCP2ServiceCard("Gateway","gateway",100,44,"gcp google cloud platform service cards gateway",a);this.addGCP2ServiceCard("Memcache", -"memcache",110,44,"gcp google cloud platform service cards memcache",a);this.addGCP2ServiceCard("Logs API","logs_api",100,44,"gcp google cloud platform service cards logs api application programming interface",a);this.addGCP2ServiceCard("Cluster","cluster",90,44,"gcp google cloud platform service cards cluster",a);this.addGCP2ServiceCard("NAT","nat",80,44,"gcp google cloud platform service cards nat network address translation",a);this.addGCP2ServiceCard("Squid Proxy","squid_proxy",120,44,"gcp google cloud platform service cards squid proxy", -a);this.addGCP2ServiceCard("Bucket","bucket",100,44,"gcp google cloud platform service cards bucket",a);this.addGCP2ServiceCard("Service Discovery","service_discovery",150,44,"gcp google cloud platform service cards service discovery",a);this.addGCP2ServiceCard("Task\nQueues","task_queues",90,44,"gcp google cloud platform service cards task queues",a);this.addGCP2ServiceCard("Image\nServices","image_services",100,44,"gcp google cloud platform service cards image services",a);this.addGCP2ServiceCard("Dedicated\nGame Server", -"dedicated_game_server",120,44,"gcp google cloud platform service cards dedicated game server",a);this.addGCP2ServiceCard("Frontend\nPlatform Services","frontend_platform_services",150,44,"gcp google cloud platform service cards frontend platform services",a);this.addGCP2ServiceCard("Google\nEdge POP","google_network_edge_cache",110,56,"gcp google cloud platform service cards google edge pop point of presence",a);this.addGCP2ServiceCard("External\nPayment Form","external_payment_form",130,44,"gcp google cloud platform service cards external payment form", -a);this.addGCP2ServiceCard("Internal Payment\nAuthorization","internal_payment_authorization",150,44,"gcp google cloud platform service cards internal payment authorization",a);this.addGCP2ServiceCard("VPN Gateway","gateway",130,44,"gcp google cloud platform service cards vpn gateway virtual private network",a);this.addGCP2ServiceCard("Application\nSystem(s)","application_system",110,44,"gcp google cloud platform service cards application system systems",a);this.addGCP2ServiceCard("Virtual\nFile System", -"virtual_file_system",110,44,"gcp google cloud platform service cards virtual file system",a);this.addGCP2ServiceCard("CDN\nInterconnect","google_network_edge_cache",120,44,"gcp google cloud platform service cards cdn content delivery network interconnect",a);this.addGCP2ServiceCard("Scheduled\nTasks","scheduled_tasks",110,44,"gcp google cloud platform service cards scheduled tasks",a);this.addGCP2ServiceCard("HTTPS\nLoad Balancer","network_load_balancer",130,44,"gcp google cloud platform service cards https secure load balancer", -a);this.addGCP2ServiceCard("Persistent\nDisk Snapshot","persistent_disk_snapshot",130,44,"gcp google cloud platform service cards persistent disk snapshot",a);this.addGCP2ServiceCard("Persistent\nDisk","persistent_disk_snapshot",110,44,"gcp google cloud platform service cards persistent disk",a);this.addGCP2ServiceCard("Network\nLoad\nBalancer","network_load_balancer",100,56,"gcp google cloud platform service cards network load balancer",a);this.addGCP2ServiceCard("Google\n Network W/\nEdge Cache", -"google_network_edge_cache",120,56,"gcp google cloud platform service cards google network witch edge cache",a);this.addGCP2ServiceCard("Push\nNotification\nService","push_notification_service",110,56,"gcp google cloud platform service cards push notification service",a);this.addGCP2ServiceCard("Blank One Line","blank",140,44,"gcp google cloud platform service cards blank one line",a);a.push(this.addEntry("gcp google cloud platform service cards blank one line",function(){var a=new mxCell("Blank One Line", -new mxGeometry(0,0,100,44),"dashed=0;strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;labelPosition=center;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#000000;fontSize=12;");a.vertex=!0;return sb.createVertexTemplateFromCells([a],100,44,"Blank One Line")}));this.addGCP2ServiceCard("Blank Two\n& Three Line","blank",120,44,"gcp google cloud platform service cards blank two and three line",a);a.push(this.addEntry("gcp google cloud platform service cards blank two and three line", -function(){var a=new mxCell("Blank Two\n& Three Line",new mxGeometry(0,0,90,44),"dashed=0;strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;labelPosition=center;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#000000;fontSize=12;");a.vertex=!0;return sb.createVertexTemplateFromCells([a],100,44,"Blank One Line")}));this.addPalette("gcp2Service Cards","GCP / Service Cards",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))}; -Sidebar.prototype.addGCP2ComputePalette=function(){var a=[];this.addGCP2CardSet("Compute\nEngine","compute_engine",110,160,"gcp google cloud platform compute compute engine",a);this.addGCP2CardSet("GPU","gpu",90,100,"gcp google cloud platform compute gpu graphics processing unit",a);this.addGCP2CardSet("App\nEngine","app_engine",100,130,"gcp google cloud platform compute app engine application",a);this.addGCP2CardSet("Cloud\nFunctions","cloud_functions",120,150,"gcp google cloud platform compute functions", -a);this.addGCP2CardSet("Kubernetes\nEngine","container_engine",130,170,"gcp google cloud platform compute kubernetes engine",a);this.addGCP2CardSet("Container-\nOptimized OS","container_optimized_os",140,200,"gcp google cloud platform compute container optimized os operating system",a);this.addPalette("gcp2Compute","GCP / Compute",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2APIPlatformEcosystemsPalette=function(){var a=[];this.addGCP2CardSet("API\nAnalytics", -"api_analytics",110,140,"gcp google cloud platform api ecosystems api analytics application programming interface",a);this.addGCP2CardSet("Apigee\nSense","apigee_sense",100,140,"gcp google cloud platform api ecosystems apigee sense",a);this.addGCP2CardSet("API\nMonetization","api_monetization",130,160,"gcp google cloud platform api ecosystems api monetization application programming interface",a);this.addGCP2CardSet("Cloud\nEndpoints","cloud_endpoints",120,150,"gcp google cloud platform api ecosystems cloud endpoints", -a);this.addGCP2CardSet("Apigee API\nPlatform","apigee_api_platform",130,170,"gcp google cloud platform api ecosystems apigee api platform application programming interface",a);this.addGCP2CardSet("Developer\nPortal","developer_portal",120,160,"gcp google cloud platform api ecosystems developer portal",a);this.addPalette("gcp2API Platform and Ecosystems","GCP / API Platform and Ecosystems",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2IdentitySecurityPalette= -function(){var a=[];this.addGCP2CardSet("Cloud\nIAM","cloud_iam",100,120,"gcp google cloud platform identity security cloud iam",a);this.addGCP2CardSet("BeyondCorp","beyondcorp",130,130,"gcp google cloud platform identity security beyondcorp",a);this.addGCP2CardSet("Cloud Resource\nManager","cloud_iam",150,200,"gcp google cloud platform identity security cloud resource manager",a);this.addGCP2CardSet("Data Loss\nPrevention API","data_loss_prevention_api",140,200,"gcp google cloud platform identity security data loss prevention api application programming interface", -a);this.addGCP2CardSet("Cloud Security\nScanner","cloud_security_scanner",140,190,"gcp google cloud platform identity security cloud security scanner",a);this.addGCP2CardSet("Key Management\nService","key_management_service",160,200,"gcp google cloud platform identity security key management service",a);this.addGCP2CardSet("Identity-Aware\nProxy","identity_aware_proxy",140,180,"gcp google cloud platform identity security identity aware proxy",a);this.addGCP2CardSet("Security Key\nEnforcement","security_key_enforcement", -130,200,"gcp google cloud platform identity security security key enforcement",a);this.addPalette("gcp2Identity and Security","GCP / Identity and Security",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2BigDataPalette=function(){var a=[];this.addGCP2CardSet("BigQuery","bigquery",120,120,"gcp google cloud platform big data bigquery",a);this.addGCP2CardSet("Cloud\nDatalab","cloud_datalab",110,140,"gcp google cloud platform big data datalab", -a);this.addGCP2CardSet("Cloud\nDataflow","cloud_dataflow",110,150,"gcp google cloud platform big data dataflow",a);this.addGCP2CardSet("Cloud\nPub/Sub","cloud_pubsub",110,150,"gcp google cloud platform big data pub sub",a);this.addGCP2CardSet("Cloud\nDataproc","cloud_dataproc",110,150,"gcp google cloud platform big data dataproc",a);this.addGCP2CardSet("Genomics","genomics",120,120,"gcp google cloud platform big data genomics",a);this.addGCP2CardSet("Cloud\nDataprep","cloud_dataprep",110,150,"gcp google cloud platform big data dataprep", -a);this.addGCP2CardSet("Data\nStudio","data_studio",100,130,"gcp google cloud platform big data data studio",a);this.addPalette("gcp2Big Data","GCP / Big Data",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2DataTransferPalette=function(){var a=[];this.addGCP2CardSet("Transfer\nAppliance","transfer_appliance",120,170,"gcp google cloud platform data transfer appliance",a);this.addPalette("gcp2Data Transfer","GCP / Data Transfer",!1,mxUtils.bind(this, -function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2CloudAIPalette=function(){var a=[];this.addGCP2CardSet("Cloud Machine\nLearning","cloud_machine_learning",150,200,"gcp google cloud platform ai artificial intelligence cloud machine learning",a);this.addGCP2CardSet("Natural\nLanguage API","cloud_natural_language_api",140,180,"gcp google cloud platform ai artificial intelligence natural language api application programming interface",a);this.addGCP2CardSet("Vision\nAPI", -"cloud_vision_api",100,120,"gcp google cloud platform ai artificial intelligence vision api application programming interface",a);this.addGCP2CardSet("Translation\nAPI","cloud_translation_api",120,150,"gcp google cloud platform ai artificial intelligence translation api application programming interface",a);this.addGCP2CardSet("Speech\nAPI","cloud_speech_api",110,130,"gcp google cloud platform ai artificial intelligence speech api application programming interface",a);this.addGCP2CardSet("Jobs\nAPI", -"cloud_jobs_api",90,110,"gcp google cloud platform ai artificial intelligence jobs api application programming interface",a);this.addGCP2CardSet("Cloud Video\nIntelligence API","cloud_video_intelligence_api",150,220,"gcp google cloud platform ai artificial intelligence cloud video intelligence api application programming interface",a);this.addGCP2CardSet("Advanced\nSolutions Lab","advanced_solutions_lab",140,200,"gcp google cloud platform ai artificial intelligence advanced solutions lab",a);this.addPalette("gcp2Cloud AI", -"GCP / Cloud AI",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2InternetOfThingsPalette=function(){var a=[];this.addGCP2CardSet("Cloud\nIoT Core","cloud_iot_core",110,150,"gcp google cloud platform iot internet of things core",a);this.addPalette("gcp2Internet of Things","GCP / Internet of Things",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2StorageDatabasesPalette=function(){var a= -[];this.addGCP2CardSet("Cloud\nStorage","cloud_storage",110,140,"gcp google cloud platform storage databases ",a);this.addGCP2CardSet("Cloud\nSQL","cloud_sql",100,120,"gcp google cloud platform storage databases sql",a);this.addGCP2CardSet("Cloud\nBigtable","cloud_bigtable",110,140,"gcp google cloud platform storage databases bigtable",a);this.addGCP2CardSet("Cloud\nSpanner","cloud_spanner",110,150,"gcp google cloud platform storage databases spanner",a);this.addGCP2CardSet("Cloud\nDatastore","cloud_datastore", -120,150,"gcp google cloud platform storage databases datastore",a);this.addGCP2CardSet("Persistent\nDisk","persistent_disk",120,150,"gcp google cloud platform storage databases persistent disk",a);this.addGCP2CardSet("Cloud\nMemorystore","cloud_memorystore",140,170,"gcp google cloud platform storage databases memorystore",a);this.addGCP2CardSet("Cloud\nFilestore","cloud_filestore",110,150,"gcp google cloud platform storage databases filestore",a);this.addPalette("gcp2Storage and Databases","GCP / Storage and Databases", -!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2ManagementToolsPalette=function(){var a=[];this.addGCP2CardSet("Stackdriver","stackdriver",130,130,"gcp google cloud platform management tools stackdriver",a);this.addGCP2CardSet("Debugger","debugger",120,120,"gcp google cloud platform management tools debugger",a);this.addGCP2CardSet("Monitoring","cloud_deployment_manager",120,120,"gcp google cloud platform management tools monitoring", -a);this.addGCP2CardSet("Deployment\nManager","cloud_deployment_manager",130,180,"gcp google cloud platform management tools deployment manager",a);this.addGCP2CardSet("Logging","logging",110,110,"gcp google cloud platform management tools logging",a);this.addGCP2CardSet("Cloud\nConsole","placeholder",110,140,"gcp google cloud platform management tools console",a);this.addGCP2CardSet("Error\nReporting","error_reporting",120,150,"gcp google cloud platform management tools error reporting",a);this.addGCP2CardSet("Cloud\nShell", -"placeholder",100,130,"gcp google cloud platform management tools shell",a);this.addGCP2CardSet("Trace","trace",100,100,"gcp google cloud platform management tools trace",a);this.addGCP2CardSet("Cloud\nMobile App","placeholder",130,160,"gcp google cloud platform management tools mobile app",a);this.addGCP2CardSet("Profiler","profiler",110,110,"gcp google cloud platform management tools profiler",a);this.addGCP2CardSet("Billing\nAPI","placeholder",100,120,"gcp google cloud platform management tools billing api application programming interface", -a);this.addGCP2CardSet("Cloud\nAPIs","cloud_apis",100,130,"gcp google cloud platform management tools api application programming interface",a);this.addPalette("gcp2Management Tools","GCP / Management Tools",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2NetworkingPalette=function(){var a=[];this.addGCP2CardSet("Virtual\nPrivate Cloud","virtual_private_cloud",140,180,"gcp google cloud platform networking virtual private",a);this.addGCP2CardSet("Dedicated\nInterconnect", -"dedicated_interconnect",130,190,"gcp google cloud platform networking dedicated interconnect",a);this.addGCP2CardSet("Cloud Load\nBalancing","cloud_load_balancing",130,180,"gcp google cloud platform networking load balancing",a);this.addGCP2CardSet("Cloud \nDNS","cloud_dns",100,130,"gcp google cloud platform networking dns domain name server",a);this.addGCP2CardSet("Cloud \nCDN","cloud_cdn",100,130,"gcp google cloud platform networking cdn content delivery network",a);this.addGCP2CardSet("Cloud\nNetwork", -"cloud_network",110,140,"gcp google cloud platform networking network",a);this.addGCP2CardSet("Cloud External\nIP Addresses","cloud_external_ip_addresses",150,220,"gcp google cloud platform networking external ip addresses internet protocol",a);this.addGCP2CardSet("Cloud\nRoutes","cloud_routes",100,140,"gcp google cloud platform networking routes",a);this.addGCP2CardSet("Cloud\nFirewall Rules","cloud_firewall_rules",140,170,"gcp google cloud platform networking firewall rules",a);this.addGCP2CardSet("Cloud\nVPN", -"cloud_vpn",100,120,"gcp google cloud platform networking vpn virtual private network",a);this.addGCP2CardSet("Cloud\nRouter","cloud_router",100,140,"gcp google cloud platform networking router",a);this.addGCP2CardSet("Cloud\nArmor","cloud_armor",100,130,"gcp google cloud platform networking armor",a);this.addGCP2CardSet("Standard\nNetwork Tier","standard_network_tier",130,180,"gcp google cloud platform networking standard network tier",a);this.addGCP2CardSet("Premium\nNetwork Tier","premium_network_tier", -130,180,"gcp google cloud platform networking premium network tier",a);this.addGCP2CardSet("Partner\nInterconnect","partner_interconnect",130,180,"gcp google cloud platform networking partner interconnect",a);this.addPalette("gcp2Networking","GCP / Networking",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2DeveloperToolsPalette=function(){var a=[];this.addGCP2CardSet("Cloud\nSDK","placeholder",100,120,"gcp google cloud platform dev developer tools sdk software development kit", -a);this.addGCP2CardSet("Cloud\nBuild","container_builder",100,130,"gcp google cloud platform dev developer tools build",a);this.addGCP2CardSet("Deployment\nManager","cloud_deployment_manager",130,180,"gcp google cloud platform dev developer tools deployment manager",a);this.addGCP2CardSet("Cloud Tools for\nVisual Studio","cloud_tools_for_powershell",150,220,"gcp google cloud platform dev developer tools tools for visual studio",a);this.addGCP2CardSet("Cloud Source\nRepositories","placeholder",140, -210,"gcp google cloud platform dev developer tools cloud source repositories",a);this.addGCP2CardSet("Maven App\nEngine Plugin","placeholder",140,200,"gcp google cloud platform dev developer tools maven app engine plugin",a);this.addGCP2CardSet("Cloud Tools\nfor Eclipse","placeholder",130,190,"gcp google cloud platform dev developer tools tools for eclipse",a);this.addGCP2CardSet("Cloud Tools\nfor IntelliJ","placeholder",130,180,"gcp google cloud platform dev developer tools tools for intellij",a); -this.addGCP2CardSet("Cloud\nTest Lab","placeholder",110,150,"gcp google cloud platform dev developer tools test lab",a);this.addGCP2CardSet("Cloud Tools for\nPowerShell","cloud_tools_for_powershell",150,210,"gcp google cloud platform dev developer tools tools for powershell",a);this.addGCP2CardSet("IDE Plugins","cloud_tools_for_powershell",130,130,"gcp google cloud platform dev developer tools ide plugins integrated development environment",a);this.addGCP2CardSet("Container\nRegistry","container_registry", -120,160,"gcp google cloud platform dev developer tools container registry",a);this.addGCP2CardSet("Gradle App\nEnginge Plugin","placeholder",150,210,"gcp google cloud platform dev developer tools gradle app engine plugin application",a);this.addPalette("gcp2Developer Tools","GCP / Developer Tools",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2ExpandedProductCardsPalette=function(){var a=[];this.addGCP2ExpandedProductCardSet("Compute Engine", -"compute_engine",150,"gcp google cloud platform expanded product cards compute engine",a);this.addGCP2ExpandedProductCardSet("BigQuery","bigquery",140,"gcp google cloud platform expanded product cards bigquery",a);this.addGCP2ExpandedProductCardSet("App Engine","app_engine",140,"gcp google cloud platform expanded product cards app application engine",a);this.addGCP2ExpandedProductCardSet("Cloud Dataflow","cloud_dataflow",150,"gcp google cloud platform expanded product cards cloud dataflow",a);this.addGCP2ExpandedProductCardSet("Kubernetes Engine", -"container_engine",170,"gcp google cloud platform expanded product cards kubernetes engine",a);this.addGCP2ExpandedProductCardSet("Cloud Storage","cloud_storage",140,"gcp google cloud platform expanded product cards cloud storage",a);this.addGCP2ExpandedProductCardSet("Cloud Bigtable","cloud_bigtable",140,"gcp google cloud platform expanded product cards cloud bigtable",a);this.addGCP2ExpandedProductCardSet("Cloud Pub/Sub","cloud_pubsub",150,"gcp google cloud platform expanded product cards cloud pub sub", -a);this.addGCP2ExpandedProductCardSet("Cloud SQL","cloud_sql",140,"gcp google cloud platform expanded product cards cloud sql",a);this.addGCP2ExpandedMachineCard("App Engine","app_engine_icon",1,.84,"10GB PD","1","modifiers_standard_machine","1","modifiers_storage","1","modifiers_autoscaling",150,"gcp google cloud platform expanded product cards app engine machine",a);this.addGCP2ExpandedMachineCard("Cloud Dataflow","cloud_dataflow_icon",.72,1,"10GB PD","1","modifiers_standard_machine","1","modifiers_storage", -"1","modifiers_autoscaling",150,"gcp google cloud platform expanded product cards app engine machine",a);this.addGCP2ExpandedMachineCard("Kubernetes Engine","container_engine_icon",.88,1,"10GB PD","1","modifiers_standard_machine","1","modifiers_storage","1","modifiers_autoscaling",150,"gcp google cloud platform expanded product cards app engine machine",a);this.addGCP2ExpandedMachineCard("Cloud Dataproc","cloud_dataproc_icon",1,.92,"10GB PD","1","modifiers_standard_machine","1","modifiers_storage", -"1","modifiers_autoscaling",150,"gcp google cloud platform expanded product cards app engine machine",a);this.addGCP2ExpandedMachineCard("Compute Engine","compute_engine_icon",1,1,"10GB PD","1","modifiers_standard_machine","1","modifiers_storage","1","modifiers_autoscaling",150,"gcp google cloud platform expanded product cards app engine machine",a);this.addPalette("gcp2Expanded Product Cards","GCP / Expanded Product Cards",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))}; -Sidebar.prototype.addGCP2UserDeviceCardsPalette=function(){var a=[];this.addGCP2UserDeviceCard("Application","application",1,.8,0,"gcp google cloud platform user and device cards application",a);this.addGCP2UserDeviceCard("Beacon","beacon",.73,1,0,"gcp google cloud platform user and device cards beacon",a);this.addGCP2UserDeviceCard("Circuit-Board","circuit_board",1,.9,15,"gcp google cloud platform user and device cards circuit board",a);this.addGCP2UserDeviceCard("Database","database",1,.9,0,"gcp google cloud platform user and device cards database db", -a);this.addGCP2UserDeviceCard("Desktop","desktop",1,.9,0,"gcp google cloud platform user and device cards desktop",a);this.addGCP2UserDeviceCard("Desktop and Mobile","desktop_and_mobile",1,.66,15,"gcp google cloud platform user and device cards desktop and mobile",a);this.addGCP2UserDeviceCard("Game","game",1,.54,0,"gcp google cloud platform user and device cards game",a);this.addGCP2UserDeviceCard("Gateway","gateway_icon",1,.44,0,"gcp google cloud platform user and device cards gateway icon",a); -this.addGCP2UserDeviceCard("Laptop","laptop",1,.66,0,"gcp google cloud platform user and device cards laptop",a);this.addGCP2UserDeviceCard("Lightbulb","lightbulb",.7,1,0,"gcp google cloud platform user and device cards lighbulb",a);this.addGCP2UserDeviceCard("List","list",.89,1,0,"gcp google cloud platform user and device cards list",a);this.addGCP2UserDeviceCard("Live","live",.74,1,0,"gcp google cloud platform user and device cards live",a);this.addGCP2UserDeviceCard("Local-Compute","compute_engine_icon", -1,.89,15,"gcp google cloud platform user and device cards local compute",a);this.addGCP2UserDeviceCard("Mobile Devices","mobile_devices",1,.73,15,"gcp google cloud platform user and device cards mobile devices",a);this.addGCP2UserDeviceCard("Payment","payment",1,.8,0,"gcp google cloud platform user and device cards payment",a);this.addGCP2UserDeviceCard("Phone","phone",.64,1,0,"gcp google cloud platform user and device cards phone",a);this.addGCP2UserDeviceCard("Record","record",1,.66,0,"gcp google cloud platform user and device cards record", -a);this.addGCP2UserDeviceCard("Report","report",1,1,0,"gcp google cloud platform user and device cards report",a);this.addGCP2UserDeviceCard("Retail","retail",1,.89,0,"gcp google cloud platform user and device cards retail",a);this.addGCP2UserDeviceCard("Speaker","speaker",.7,1,0,"gcp google cloud platform user and device cards speaker",a);this.addGCP2UserDeviceCard("Storage","storage",1,.8,0,"gcp google cloud platform user and device cards storage",a);this.addGCP2UserDeviceCard("Stream","stream", -1,.82,0,"gcp google cloud platform user and device cards stream",a);this.addGCP2UserDeviceCard("Users","users",1,.63,0,"gcp google cloud platform user and device cards users",a);this.addGCP2UserDeviceCard("Webcam","webcam",.5,1,0,"gcp google cloud platform user and device cards webcam",a);this.addPalette("gcp2User Device Cards","GCP / User and Device Cards",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2ProductCardsPalette=function(){var a= -[];this.addGCP2ProductCardSet("Kubernetes","kubernetes_logo",1,.97,130,130,"gcp google cloud platform product kubernetes",a);this.addGCP2ProductCardSet("TensorFlow","tensorflow_logo",.94,1,130,130,"gcp google cloud platform product tensorflow",a);this.addGCP2ProductCardSet("Forseti\nSecurity","forseti_logo",.98,1,110,150,"gcp google cloud platform product forseti",a);this.addGCP2ProductCardSet("Istio","istio_logo",.67,1,80,90,"gcp google cloud platform product forseti",a);this.addGCP2ProductCardSet("Firebase", -"firebase",.72,1,100,100,"gcp google cloud platform product firebase",a);this.addGCP2ProductCardSet("Fastly","fastly",1,.39,100,100,"gcp google cloud platform product fastly",a);this.addGCP2ProductCardSet("AdMob","admob",1,1,110,110,"gcp google cloud platform product admob",a);this.addGCP2ProductCardSet("Google Play\nGame Services","google_play_game_service",1,.69,150,220,"gcp google cloud platform product google play game services",a);this.addGCP2ProductCardSet("Campaign\nManager","campaign_manager", -1,1,120,170,"gcp google cloud platform product campaign manager",a);this.addGCP2ProductCardSet("Google\nAnalytics","google_analytics",1,1,120,160,"gcp google cloud platform product google analytics",a);this.addGCP2ProductCardSet("Google\nAds","google_ads",1,1,100,130,"gcp google cloud platform product google ads",a);this.addGCP2ProductCardSet("Avere Physical\nAppliance","avere",1,.33,150,200,"gcp google cloud platform product avere physical appliance",a);this.addGCP2ProductCardSet("Google\nAnalytics 360", -"google_analytics_360",1,.98,140,180,"gcp google cloud platform product google analytics 360",a);this.addGCP2ProductCardSet("Google Ad\nManager","google_ad_manager",1,1,120,170,"gcp google cloud platform product google ad manager",a);this.addPalette("gcp2Product Cards","GCP / Product Cards",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2CardSet=function(a,e,d,b,c,f){var g=this,h="dashed=0;connectable=0;html=1;fillColor=#5184F3;strokeColor=none;"+ -mxConstants.STYLE_SHAPE+"=mxgraph.gcp2.",k=a.replace("\n"," "),k=k.replace("- ","-");f.push(this.addEntry(c,function(){var b=new mxCell("",new mxGeometry(0,0,d,60),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;");b.vertex=!0;var c=new mxCell(a,new mxGeometry(0,.5,44,39),h+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#999999;fontSize=12;");c.geometry.relative=!0;c.geometry.offset= -new mxPoint(5,-19.5);c.vertex=!0;b.insert(c);return g.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,k)}));f.push(this.addEntry(c,function(){var a=new mxCell("",new mxGeometry(0,0,b,60),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;");a.vertex=!0;var c=new mxCell('<font color="#000000">Name</font><br>'+k,new mxGeometry(0,.5,44,39),h+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#999999;fontSize=12;"); -c.geometry.relative=!0;c.geometry.offset=new mxPoint(5,-19.5);c.vertex=!0;a.insert(c);return g.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,k)}));f.push(this.addEntry(c,function(){var a=new mxCell("",new mxGeometry(0,0,b+8,68),"shape=mxgraph.gcp2.doubleRect;strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;");a.vertex=!0;var c=new mxCell('<font color="#000000">Name</font><br>'+k,new mxGeometry(0,.5,44,39),h+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#999999;fontSize=12;"); -c.geometry.relative=!0;c.geometry.offset=new mxPoint(5,-19.5);c.vertex=!0;a.insert(c);return g.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,k)}))};Sidebar.prototype.addGCP2ProductCardSet=function(a,e,d,b,c,f,g,h){var k=this,l="dashed=0;connectable=0;html=1;fillColor=#5184F3;strokeColor=none;"+mxConstants.STYLE_SHAPE+"=mxgraph.gcp2.",m=a.replace("\n"," "),m=m.replace("- ","-");h.push(this.addEntry(g,function(){var f=new mxCell("",new mxGeometry(0,0,c,60),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;"); -f.vertex=!0;var g=new mxCell(a,new mxGeometry(0,0,45*d,45*b),l+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#999999;fontSize=12;");g.geometry.relative=!0;g.geometry.offset=new mxPoint(5,7+22.5*(1-b));g.vertex=!0;f.insert(g);return k.createVertexTemplateFromCells([f],f.geometry.width,f.geometry.height,m)}));h.push(this.addEntry(g,function(){var a=new mxCell("",new mxGeometry(0,0,f,60),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;"); -a.vertex=!0;var c=new mxCell('<font color="#000000">Name</font><br>'+m,new mxGeometry(0,0,45*d,45*b),l+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#999999;fontSize=12;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(5,7+22.5*(1-b));c.vertex=!0;a.insert(c);return k.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,m)}));h.push(this.addEntry(g,function(){var a=new mxCell("",new mxGeometry(0,0,f+8,68),"shape=mxgraph.gcp2.doubleRect;strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;"); -a.vertex=!0;var c=new mxCell('<font color="#000000">Name</font><br>'+m,new mxGeometry(0,0,45*d,45*b),l+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#999999;fontSize=12;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(5,7+22.5*(1-b));c.vertex=!0;a.insert(c);return k.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,m)}))};Sidebar.prototype.addGCP2ServiceCard=function(a,e,d,b,c,f){var g=this,h="dashed=0;connectable=0;html=1;fillColor=#757575;strokeColor=none;"+ -mxConstants.STYLE_SHAPE+"=mxgraph.gcp2.",k=a.replace("\n"," "),k=k.replace("- ","-");f.push(this.addEntry(c,function(){var c=new mxCell("",new mxGeometry(0,0,d,b),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;");c.vertex=!0;var f=new mxCell(a,new mxGeometry(0,.5,32,32),h+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#000000;fontSize=12;");f.geometry.relative=!0;f.geometry.offset= -new mxPoint(5,-16);f.vertex=!0;c.insert(f);return g.createVertexTemplateFromCells([c],d,b,k)}))};Sidebar.prototype.addGCP2ExpandedProductCardSet=function(a,e,d,b,c){var f=this,g="dashed=0;connectable=0;html=1;fillColor=#5184F3;strokeColor=none;"+mxConstants.STYLE_SHAPE+"=mxgraph.gcp2.",h=a.replace("\n"," "),h=h.replace("- ","-");c.push(this.addEntry(b,function(){var a=new mxCell("",new mxGeometry(0,0,d,70),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;"); -a.vertex=!0;var b=new mxCell('<font color="#000000">Name</font><br>'+h+'<hr><font style="font-size: 11px">Attribute Name</font>',new mxGeometry(0,0,44,39),g+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=top;spacingLeft=5;fontColor=#999999;fontSize=12;spacingTop=-8;");b.geometry.relative=!0;b.geometry.offset=new mxPoint(5,7);b.vertex=!0;a.insert(b);return f.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,h)}));c.push(this.addEntry(b,function(){var a= -new mxCell("",new mxGeometry(0,0,d+8,78),"shape=mxgraph.gcp2.doubleRect;strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;");a.vertex=!0;var b=new mxCell('<font color="#000000">Name</font><br>'+h+'<hr><font style="font-size: 11px">Attribute Name</font>',new mxGeometry(0,0,44,39),g+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=top;spacingLeft=5;fontColor=#999999;fontSize=12;spacingTop=-8;");b.geometry.relative=!0;b.geometry.offset=new mxPoint(5,7); -b.vertex=!0;a.insert(b);return f.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,h)}))};Sidebar.prototype.addGCP2ExpandedMachineCard=function(a,e,d,b,c,f,g,h,k,l,m,q,r,n){var p=this,u="dashed=0;connectable=0;html=1;fillColor=#757575;strokeColor=none;"+mxConstants.STYLE_SHAPE+"=mxgraph.gcp2.",t=a.replace("\n"," "),t=t.replace("- ","-");n.push(this.addEntry(r,function(){var a=new mxCell("",new mxGeometry(0,0,q,95),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;"); -a.vertex=!0;var n=new mxCell('<font color="#000000">'+t+"</font><hr>"+c,new mxGeometry(0,0,q,50),"text;part=1;html=1;align=left;verticalAlign=top;spacingLeft=35;fontColor=#999999;fontSize=11;resizeWidth=1;");n.geometry.relative=!0;n.vertex=!0;a.insert(n);n=new mxCell("",new mxGeometry(0,0,25*d,25*b),u+e+";part=1;");n.geometry.relative=!0;n.geometry.offset=new mxPoint(4+12.5*(1-d),6+12.5*(1-b));n.vertex=!0;a.insert(n);n=new mxCell("",new mxGeometry(0,0,20,20),u+g+";part=1;");n.geometry.relative=!0; -n.geometry.offset=new mxPoint(35,55);n.vertex=!0;a.insert(n);n=new mxCell(f,new mxGeometry(0,0,18,18),"rounded=1;arcSize=50;part=1;fillColor=#3B8CF0;strokeColor=none;html=1;fontColor=#ffffff;spacingTop=-2;");n.geometry.relative=!0;n.geometry.offset=new mxPoint(24,69);n.vertex=!0;a.insert(n);n=new mxCell(h,new mxGeometry(0,0,18,18),"rounded=1;arcSize=50;part=1;fillColor=#3B8CF0;strokeColor=none;html=1;fontColor=#ffffff;spacingTop=-2;");n.geometry.relative=!0;n.geometry.offset=new mxPoint(50,69);n.vertex= -!0;a.insert(n);n=new mxCell("",new mxGeometry(0,0,20,18),u+k+";part=1;");n.geometry.relative=!0;n.geometry.offset=new mxPoint(75,56);n.vertex=!0;a.insert(n);n=new mxCell(l,new mxGeometry(0,0,18,18),"rounded=1;arcSize=50;part=1;fillColor=#3B8CF0;strokeColor=none;html=1;fontColor=#ffffff;spacingTop=-2;");n.geometry.relative=!0;n.geometry.offset=new mxPoint(88,69);n.vertex=!0;a.insert(n);n=new mxCell("",new mxGeometry(0,0,20,20),u+m+";part=1;");n.geometry.relative=!0;n.geometry.offset=new mxPoint(115, -55);n.vertex=!0;a.insert(n);return p.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,t)}));n.push(this.addEntry(r,function(){var a=new mxCell("",new mxGeometry(0,0,q,95),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;");a.vertex=!0;var l=new mxCell('<font color="#000000">'+t+"</font><hr>"+c,new mxGeometry(0,0,q,50),"text;connectable=0;part=1;html=1;align=left;verticalAlign=top;spacingLeft=35;fontColor=#999999;fontSize=11;resizeWidth=1;"); -l.geometry.relative=!0;l.vertex=!0;a.insert(l);l=new mxCell("",new mxGeometry(0,0,25*d,25*b),u+e+";part=1;");l.geometry.relative=!0;l.geometry.offset=new mxPoint(4+12.5*(1-d),6+12.5*(1-b));l.vertex=!0;a.insert(l);l=new mxCell("",new mxGeometry(0,0,20,20),u+g+";part=1;");l.geometry.relative=!0;l.geometry.offset=new mxPoint(35,55);l.vertex=!0;a.insert(l);l=new mxCell(f,new mxGeometry(0,0,18,18),"connectable=0;rounded=1;arcSize=50;part=1;fillColor=#3B8CF0;strokeColor=none;html=1;fontColor=#ffffff;spacingTop=-2;"); -l.geometry.relative=!0;l.geometry.offset=new mxPoint(24,69);l.vertex=!0;a.insert(l);l=new mxCell(h,new mxGeometry(0,0,18,18),"connectable=0;rounded=1;arcSize=50;part=1;fillColor=#3B8CF0;strokeColor=none;html=1;fontColor=#ffffff;spacingTop=-2;");l.geometry.relative=!0;l.geometry.offset=new mxPoint(50,69);l.vertex=!0;a.insert(l);l=new mxCell("",new mxGeometry(0,0,20,18),u+k+";part=1;");l.geometry.relative=!0;l.geometry.offset=new mxPoint(75,56);l.vertex=!0;a.insert(l);l=new mxCell("123",new mxGeometry(0, -0,25,18),"connectable=0;rounded=1;arcSize=50;part=1;fillColor=#3B8CF0;strokeColor=none;html=1;fontColor=#ffffff;spacingTop=-2;");l.geometry.relative=!0;l.geometry.offset=new mxPoint(81,69);l.vertex=!0;a.insert(l);l=new mxCell("",new mxGeometry(0,0,20,20),u+m+";part=1;");l.geometry.relative=!0;l.geometry.offset=new mxPoint(115,55);l.vertex=!0;a.insert(l);return p.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,t)}))};Sidebar.prototype.addGCP2UserDeviceCard=function(a,e,d,b,c,f, -g){var h=this,k="dashed=0;connectable=0;html=1;fillColor=#757575;strokeColor=none;"+mxConstants.STYLE_SHAPE+"=mxgraph.gcp2.",l=a.replace("\n"," "),l=l.replace("- ","-");g.push(this.addEntry(f,function(){var f=new mxCell(a,new mxGeometry(0,0,70,85+c),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;labelPosition=center;verticalLabelPosition=middle;align=center;verticalAlign=bottom;spacingLeft=0;fontColor=#999999;fontSize=12;whiteSpace=wrap;spacingBottom=2;"); +b.geometry.height,"Project Zone")}),this.addEntry("gcp google cloud platform zone markers",function(){e="shape=ellipse;perimeter=ellipsePerimeter;fillColor=#ffffff;strokeColor=#BDBDBD;strokeWidth=2;shadow=0;gradientColor=none;fontColor=#757575;align=center;html=1;fontStyle=1;spacingTop=-1;";var b=new mxCell("1",new mxGeometry(0,0,20,20),e);b.vertex=!0;var c=new mxCell("2",new mxGeometry(40,0,20,20),e);c.vertex=!0;var d=new mxCell("3",new mxGeometry(80,0,20,20),e);d.vertex=!0;var g=new mxCell("4", +new mxGeometry(120,0,20,20),e);g.vertex=!0;var h=new mxCell("5",new mxGeometry(160,0,20,20),e);h.vertex=!0;var k=new mxCell("6",new mxGeometry(200,0,20,20),e);k.vertex=!0;var l=new mxCell("7",new mxGeometry(240,0,20,20),e);l.vertex=!0;var m=new mxCell("Markers to be used with the legend",new mxGeometry(0,20,260,30),"strokeColor=none;fillColor=none;fontColor=#757575;align=left;html=1;fontStyle=0;fontSize=11;");m.vertex=!0;return a.createVertexTemplateFromCells([b,c,d,g,h,k,l,m],260,50,"Markers")}), +this.addEntry("gcp google cloud platform zone markers",function(){var b=new mxCell("",new mxGeometry(0,0,600,70),"fillColor=#ffffff;strokeColor=#BDBDBD;strokeWidth=1;shadow=0;gradientColor=none;");b.vertex=!0;var c=new mxCell("1 Commit code",new mxGeometry(0,0,200,30),"strokeColor=none;fillColor=none;fontColor=#757575;align=left;html=1;fontStyle=0;spacingLeft=5;fontSize=11;verticalAlign=top;whiteSpace=wrap;spacingRight=5;");c.geometry.relative=!0;c.vertex=!0;b.insert(c);c=new mxCell("2 Detect code change", +new mxGeometry(0,0,200,30),"strokeColor=none;fillColor=none;fontColor=#757575;align=left;html=1;fontStyle=0;spacingLeft=5;fontSize=11;verticalAlign=top;whiteSpace=wrap;spacingRight=5;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,30);c.vertex=!0;b.insert(c);c=new mxCell("3 Build immutable image",new mxGeometry(0,0,200,30),"strokeColor=none;fillColor=none;fontColor=#757575;align=left;html=1;fontStyle=0;spacingLeft=5;fontSize=11;verticalAlign=top;whiteSpace=wrap;spacingRight=5;");c.geometry.relative= +!0;c.geometry.offset=new mxPoint(200,0);c.vertex=!0;b.insert(c);c=new mxCell("4 Launch test instance from image",new mxGeometry(0,0,200,30),"strokeColor=none;fillColor=none;fontColor=#757575;align=left;html=1;fontStyle=0;spacingLeft=5;fontSize=11;verticalAlign=top;whiteSpace=wrap;spacingRight=5;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(200,30);c.vertex=!0;b.insert(c);c=new mxCell("5 Run tests",new mxGeometry(0,0,200,30),"strokeColor=none;fillColor=none;fontColor=#757575;align=left;html=1;fontStyle=0;spacingLeft=5;fontSize=11;verticalAlign=top;whiteSpace=wrap;spacingRight=5;"); +c.geometry.relative=!0;c.geometry.offset=new mxPoint(400,0);c.vertex=!0;b.insert(c);c=new mxCell("6 Perform rolling update of image to autoscaler",new mxGeometry(0,0,200,30),"strokeColor=none;fillColor=none;fontColor=#757575;align=left;html=1;fontStyle=0;spacingLeft=5;fontSize=11;verticalAlign=top;whiteSpace=wrap;spacingRight=5;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(400,30);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Markers")})]; +this.addPalette("gcp2Zones","GCP / Zones",!1,mxUtils.bind(this,function(a){for(var b=0;b<d.length;b++)a.appendChild(d[b](a))}))};Sidebar.prototype.addGCP2ServiceCardsPalette=function(){var a=[];this.addGCP2ServiceCard("Gateway","gateway",100,44,"gcp google cloud platform service cards gateway",a);this.addGCP2ServiceCard("Memcache","memcache",110,44,"gcp google cloud platform service cards memcache",a);this.addGCP2ServiceCard("Logs API","logs_api",100,44,"gcp google cloud platform service cards logs api application programming interface", +a);this.addGCP2ServiceCard("Cluster","cluster",90,44,"gcp google cloud platform service cards cluster",a);this.addGCP2ServiceCard("NAT","nat",80,44,"gcp google cloud platform service cards nat network address translation",a);this.addGCP2ServiceCard("Squid Proxy","squid_proxy",120,44,"gcp google cloud platform service cards squid proxy",a);this.addGCP2ServiceCard("Bucket","bucket",100,44,"gcp google cloud platform service cards bucket",a);this.addGCP2ServiceCard("Service Discovery","service_discovery", +150,44,"gcp google cloud platform service cards service discovery",a);this.addGCP2ServiceCard("Task\nQueues","task_queues",90,44,"gcp google cloud platform service cards task queues",a);this.addGCP2ServiceCard("Image\nServices","image_services",100,44,"gcp google cloud platform service cards image services",a);this.addGCP2ServiceCard("Dedicated\nGame Server","dedicated_game_server",120,44,"gcp google cloud platform service cards dedicated game server",a);this.addGCP2ServiceCard("Frontend\nPlatform Services", +"frontend_platform_services",150,44,"gcp google cloud platform service cards frontend platform services",a);this.addGCP2ServiceCard("Google\nEdge POP","google_network_edge_cache",110,56,"gcp google cloud platform service cards google edge pop point of presence",a);this.addGCP2ServiceCard("External\nPayment Form","external_payment_form",130,44,"gcp google cloud platform service cards external payment form",a);this.addGCP2ServiceCard("Internal Payment\nAuthorization","internal_payment_authorization", +150,44,"gcp google cloud platform service cards internal payment authorization",a);this.addGCP2ServiceCard("VPN Gateway","gateway",130,44,"gcp google cloud platform service cards vpn gateway virtual private network",a);this.addGCP2ServiceCard("Application\nSystem(s)","application_system",110,44,"gcp google cloud platform service cards application system systems",a);this.addGCP2ServiceCard("Virtual\nFile System","virtual_file_system",110,44,"gcp google cloud platform service cards virtual file system", +a);this.addGCP2ServiceCard("CDN\nInterconnect","google_network_edge_cache",120,44,"gcp google cloud platform service cards cdn content delivery network interconnect",a);this.addGCP2ServiceCard("Scheduled\nTasks","scheduled_tasks",110,44,"gcp google cloud platform service cards scheduled tasks",a);this.addGCP2ServiceCard("HTTPS\nLoad Balancer","network_load_balancer",130,44,"gcp google cloud platform service cards https secure load balancer",a);this.addGCP2ServiceCard("Persistent\nDisk Snapshot","persistent_disk_snapshot", +130,44,"gcp google cloud platform service cards persistent disk snapshot",a);this.addGCP2ServiceCard("Persistent\nDisk","persistent_disk_snapshot",110,44,"gcp google cloud platform service cards persistent disk",a);this.addGCP2ServiceCard("Network\nLoad\nBalancer","network_load_balancer",100,56,"gcp google cloud platform service cards network load balancer",a);this.addGCP2ServiceCard("Google\n Network W/\nEdge Cache","google_network_edge_cache",120,56,"gcp google cloud platform service cards google network witch edge cache", +a);this.addGCP2ServiceCard("Push\nNotification\nService","push_notification_service",110,56,"gcp google cloud platform service cards push notification service",a);this.addGCP2ServiceCard("Blank One Line","blank",140,44,"gcp google cloud platform service cards blank one line",a);a.push(this.addEntry("gcp google cloud platform service cards blank one line",function(){var a=new mxCell("Blank One Line",new mxGeometry(0,0,100,44),"dashed=0;strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;labelPosition=center;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#000000;fontSize=12;"); +a.vertex=!0;return sb.createVertexTemplateFromCells([a],100,44,"Blank One Line")}));this.addGCP2ServiceCard("Blank Two\n& Three Line","blank",120,44,"gcp google cloud platform service cards blank two and three line",a);a.push(this.addEntry("gcp google cloud platform service cards blank two and three line",function(){var a=new mxCell("Blank Two\n& Three Line",new mxGeometry(0,0,90,44),"dashed=0;strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;labelPosition=center;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#000000;fontSize=12;"); +a.vertex=!0;return sb.createVertexTemplateFromCells([a],100,44,"Blank One Line")}));this.addPalette("gcp2Service Cards","GCP / Service Cards",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2ComputePalette=function(){var a=[];this.addGCP2CardSet("Compute\nEngine","compute_engine",110,160,"gcp google cloud platform compute compute engine",a);this.addGCP2CardSet("GPU","gpu",90,100,"gcp google cloud platform compute gpu graphics processing unit", +a);this.addGCP2CardSet("App\nEngine","app_engine",100,130,"gcp google cloud platform compute app engine application",a);this.addGCP2CardSet("Cloud\nFunctions","cloud_functions",120,150,"gcp google cloud platform compute functions",a);this.addGCP2CardSet("Kubernetes\nEngine","container_engine",130,170,"gcp google cloud platform compute kubernetes engine",a);this.addGCP2CardSet("Container-\nOptimized OS","container_optimized_os",140,200,"gcp google cloud platform compute container optimized os operating system", +a);this.addPalette("gcp2Compute","GCP / Compute",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2APIPlatformEcosystemsPalette=function(){var a=[];this.addGCP2CardSet("API\nAnalytics","api_analytics",110,140,"gcp google cloud platform api ecosystems api analytics application programming interface",a);this.addGCP2CardSet("Apigee\nSense","apigee_sense",100,140,"gcp google cloud platform api ecosystems apigee sense",a);this.addGCP2CardSet("API\nMonetization", +"api_monetization",130,160,"gcp google cloud platform api ecosystems api monetization application programming interface",a);this.addGCP2CardSet("Cloud\nEndpoints","cloud_endpoints",120,150,"gcp google cloud platform api ecosystems cloud endpoints",a);this.addGCP2CardSet("Apigee API\nPlatform","apigee_api_platform",130,170,"gcp google cloud platform api ecosystems apigee api platform application programming interface",a);this.addGCP2CardSet("Developer\nPortal","developer_portal",120,160,"gcp google cloud platform api ecosystems developer portal", +a);this.addPalette("gcp2API Platform and Ecosystems","GCP / API Platform and Ecosystems",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2IdentitySecurityPalette=function(){var a=[];this.addGCP2CardSet("Cloud\nIAM","cloud_iam",100,120,"gcp google cloud platform identity security cloud iam",a);this.addGCP2CardSet("BeyondCorp","beyondcorp",130,130,"gcp google cloud platform identity security beyondcorp",a);this.addGCP2CardSet("Cloud Resource\nManager", +"cloud_iam",150,200,"gcp google cloud platform identity security cloud resource manager",a);this.addGCP2CardSet("Data Loss\nPrevention API","data_loss_prevention_api",140,200,"gcp google cloud platform identity security data loss prevention api application programming interface",a);this.addGCP2CardSet("Cloud Security\nScanner","cloud_security_scanner",140,190,"gcp google cloud platform identity security cloud security scanner",a);this.addGCP2CardSet("Key Management\nService","key_management_service", +160,200,"gcp google cloud platform identity security key management service",a);this.addGCP2CardSet("Identity-Aware\nProxy","identity_aware_proxy",140,180,"gcp google cloud platform identity security identity aware proxy",a);this.addGCP2CardSet("Security Key\nEnforcement","security_key_enforcement",130,200,"gcp google cloud platform identity security security key enforcement",a);this.addPalette("gcp2Identity and Security","GCP / Identity and Security",!1,mxUtils.bind(this,function(e){for(var d=0;d< +a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2BigDataPalette=function(){var a=[];this.addGCP2CardSet("BigQuery","bigquery",120,120,"gcp google cloud platform big data bigquery",a);this.addGCP2CardSet("Cloud\nDatalab","cloud_datalab",110,140,"gcp google cloud platform big data datalab",a);this.addGCP2CardSet("Cloud\nDataflow","cloud_dataflow",110,150,"gcp google cloud platform big data dataflow",a);this.addGCP2CardSet("Cloud\nPub/Sub","cloud_pubsub",110,150,"gcp google cloud platform big data pub sub", +a);this.addGCP2CardSet("Cloud\nDataproc","cloud_dataproc",110,150,"gcp google cloud platform big data dataproc",a);this.addGCP2CardSet("Genomics","genomics",120,120,"gcp google cloud platform big data genomics",a);this.addGCP2CardSet("Cloud\nDataprep","cloud_dataprep",110,150,"gcp google cloud platform big data dataprep",a);this.addGCP2CardSet("Data\nStudio","data_studio",100,130,"gcp google cloud platform big data data studio",a);this.addPalette("gcp2Big Data","GCP / Big Data",!1,mxUtils.bind(this, +function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2DataTransferPalette=function(){var a=[];this.addGCP2CardSet("Transfer\nAppliance","transfer_appliance",120,170,"gcp google cloud platform data transfer appliance",a);this.addPalette("gcp2Data Transfer","GCP / Data Transfer",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2CloudAIPalette=function(){var a=[];this.addGCP2CardSet("Cloud Machine\nLearning", +"cloud_machine_learning",150,200,"gcp google cloud platform ai artificial intelligence cloud machine learning",a);this.addGCP2CardSet("Natural\nLanguage API","cloud_natural_language_api",140,180,"gcp google cloud platform ai artificial intelligence natural language api application programming interface",a);this.addGCP2CardSet("Vision\nAPI","cloud_vision_api",100,120,"gcp google cloud platform ai artificial intelligence vision api application programming interface",a);this.addGCP2CardSet("Translation\nAPI", +"cloud_translation_api",120,150,"gcp google cloud platform ai artificial intelligence translation api application programming interface",a);this.addGCP2CardSet("Speech\nAPI","cloud_speech_api",110,130,"gcp google cloud platform ai artificial intelligence speech api application programming interface",a);this.addGCP2CardSet("Jobs\nAPI","cloud_jobs_api",90,110,"gcp google cloud platform ai artificial intelligence jobs api application programming interface",a);this.addGCP2CardSet("Cloud Video\nIntelligence API", +"cloud_video_intelligence_api",150,220,"gcp google cloud platform ai artificial intelligence cloud video intelligence api application programming interface",a);this.addGCP2CardSet("Advanced\nSolutions Lab","advanced_solutions_lab",140,200,"gcp google cloud platform ai artificial intelligence advanced solutions lab",a);this.addPalette("gcp2Cloud AI","GCP / Cloud AI",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2InternetOfThingsPalette= +function(){var a=[];this.addGCP2CardSet("Cloud\nIoT Core","cloud_iot_core",110,150,"gcp google cloud platform iot internet of things core",a);this.addPalette("gcp2Internet of Things","GCP / Internet of Things",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2StorageDatabasesPalette=function(){var a=[];this.addGCP2CardSet("Cloud\nStorage","cloud_storage",110,140,"gcp google cloud platform storage databases ",a);this.addGCP2CardSet("Cloud\nSQL", +"cloud_sql",100,120,"gcp google cloud platform storage databases sql",a);this.addGCP2CardSet("Cloud\nBigtable","cloud_bigtable",110,140,"gcp google cloud platform storage databases bigtable",a);this.addGCP2CardSet("Cloud\nSpanner","cloud_spanner",110,150,"gcp google cloud platform storage databases spanner",a);this.addGCP2CardSet("Cloud\nDatastore","cloud_datastore",120,150,"gcp google cloud platform storage databases datastore",a);this.addGCP2CardSet("Persistent\nDisk","persistent_disk",120,150, +"gcp google cloud platform storage databases persistent disk",a);this.addGCP2CardSet("Cloud\nMemorystore","cloud_memorystore",140,170,"gcp google cloud platform storage databases memorystore",a);this.addGCP2CardSet("Cloud\nFilestore","cloud_filestore",110,150,"gcp google cloud platform storage databases filestore",a);this.addPalette("gcp2Storage and Databases","GCP / Storage and Databases",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2ManagementToolsPalette= +function(){var a=[];this.addGCP2CardSet("Stackdriver","stackdriver",130,130,"gcp google cloud platform management tools stackdriver",a);this.addGCP2CardSet("Debugger","debugger",120,120,"gcp google cloud platform management tools debugger",a);this.addGCP2CardSet("Monitoring","cloud_deployment_manager",120,120,"gcp google cloud platform management tools monitoring",a);this.addGCP2CardSet("Deployment\nManager","cloud_deployment_manager",130,180,"gcp google cloud platform management tools deployment manager", +a);this.addGCP2CardSet("Logging","logging",110,110,"gcp google cloud platform management tools logging",a);this.addGCP2CardSet("Cloud\nConsole","placeholder",110,140,"gcp google cloud platform management tools console",a);this.addGCP2CardSet("Error\nReporting","error_reporting",120,150,"gcp google cloud platform management tools error reporting",a);this.addGCP2CardSet("Cloud\nShell","placeholder",100,130,"gcp google cloud platform management tools shell",a);this.addGCP2CardSet("Trace","trace",100, +100,"gcp google cloud platform management tools trace",a);this.addGCP2CardSet("Cloud\nMobile App","placeholder",130,160,"gcp google cloud platform management tools mobile app",a);this.addGCP2CardSet("Profiler","profiler",110,110,"gcp google cloud platform management tools profiler",a);this.addGCP2CardSet("Billing\nAPI","placeholder",100,120,"gcp google cloud platform management tools billing api application programming interface",a);this.addGCP2CardSet("Cloud\nAPIs","cloud_apis",100,130,"gcp google cloud platform management tools api application programming interface", +a);this.addPalette("gcp2Management Tools","GCP / Management Tools",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2NetworkingPalette=function(){var a=[];this.addGCP2CardSet("Virtual\nPrivate Cloud","virtual_private_cloud",140,180,"gcp google cloud platform networking virtual private",a);this.addGCP2CardSet("Dedicated\nInterconnect","dedicated_interconnect",130,190,"gcp google cloud platform networking dedicated interconnect",a);this.addGCP2CardSet("Cloud Load\nBalancing", +"cloud_load_balancing",130,180,"gcp google cloud platform networking load balancing",a);this.addGCP2CardSet("Cloud \nDNS","cloud_dns",100,130,"gcp google cloud platform networking dns domain name server",a);this.addGCP2CardSet("Cloud \nCDN","cloud_cdn",100,130,"gcp google cloud platform networking cdn content delivery network",a);this.addGCP2CardSet("Cloud\nNetwork","cloud_network",110,140,"gcp google cloud platform networking network",a);this.addGCP2CardSet("Cloud External\nIP Addresses","cloud_external_ip_addresses", +150,220,"gcp google cloud platform networking external ip addresses internet protocol",a);this.addGCP2CardSet("Cloud\nRoutes","cloud_routes",100,140,"gcp google cloud platform networking routes",a);this.addGCP2CardSet("Cloud\nFirewall Rules","cloud_firewall_rules",140,170,"gcp google cloud platform networking firewall rules",a);this.addGCP2CardSet("Cloud\nVPN","cloud_vpn",100,120,"gcp google cloud platform networking vpn virtual private network",a);this.addGCP2CardSet("Cloud\nRouter","cloud_router", +100,140,"gcp google cloud platform networking router",a);this.addGCP2CardSet("Cloud\nArmor","cloud_armor",100,130,"gcp google cloud platform networking armor",a);this.addGCP2CardSet("Standard\nNetwork Tier","standard_network_tier",130,180,"gcp google cloud platform networking standard network tier",a);this.addGCP2CardSet("Premium\nNetwork Tier","premium_network_tier",130,180,"gcp google cloud platform networking premium network tier",a);this.addGCP2CardSet("Partner\nInterconnect","partner_interconnect", +130,180,"gcp google cloud platform networking partner interconnect",a);this.addPalette("gcp2Networking","GCP / Networking",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2DeveloperToolsPalette=function(){var a=[];this.addGCP2CardSet("Cloud\nSDK","placeholder",100,120,"gcp google cloud platform dev developer tools sdk software development kit",a);this.addGCP2CardSet("Cloud\nBuild","container_builder",100,130,"gcp google cloud platform dev developer tools build", +a);this.addGCP2CardSet("Deployment\nManager","cloud_deployment_manager",130,180,"gcp google cloud platform dev developer tools deployment manager",a);this.addGCP2CardSet("Cloud Tools for\nVisual Studio","cloud_tools_for_powershell",150,220,"gcp google cloud platform dev developer tools tools for visual studio",a);this.addGCP2CardSet("Cloud Source\nRepositories","placeholder",140,210,"gcp google cloud platform dev developer tools cloud source repositories",a);this.addGCP2CardSet("Maven App\nEngine Plugin", +"placeholder",140,200,"gcp google cloud platform dev developer tools maven app engine plugin",a);this.addGCP2CardSet("Cloud Tools\nfor Eclipse","placeholder",130,190,"gcp google cloud platform dev developer tools tools for eclipse",a);this.addGCP2CardSet("Cloud Tools\nfor IntelliJ","placeholder",130,180,"gcp google cloud platform dev developer tools tools for intellij",a);this.addGCP2CardSet("Cloud\nTest Lab","placeholder",110,150,"gcp google cloud platform dev developer tools test lab",a);this.addGCP2CardSet("Cloud Tools for\nPowerShell", +"cloud_tools_for_powershell",150,210,"gcp google cloud platform dev developer tools tools for powershell",a);this.addGCP2CardSet("IDE Plugins","cloud_tools_for_powershell",130,130,"gcp google cloud platform dev developer tools ide plugins integrated development environment",a);this.addGCP2CardSet("Container\nRegistry","container_registry",120,160,"gcp google cloud platform dev developer tools container registry",a);this.addGCP2CardSet("Gradle App\nEnginge Plugin","placeholder",150,210,"gcp google cloud platform dev developer tools gradle app engine plugin application", +a);this.addPalette("gcp2Developer Tools","GCP / Developer Tools",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2ExpandedProductCardsPalette=function(){var a=[];this.addGCP2ExpandedProductCardSet("Compute Engine","compute_engine",150,"gcp google cloud platform expanded product cards compute engine",a);this.addGCP2ExpandedProductCardSet("BigQuery","bigquery",140,"gcp google cloud platform expanded product cards bigquery",a);this.addGCP2ExpandedProductCardSet("App Engine", +"app_engine",140,"gcp google cloud platform expanded product cards app application engine",a);this.addGCP2ExpandedProductCardSet("Cloud Dataflow","cloud_dataflow",150,"gcp google cloud platform expanded product cards cloud dataflow",a);this.addGCP2ExpandedProductCardSet("Kubernetes Engine","container_engine",170,"gcp google cloud platform expanded product cards kubernetes engine",a);this.addGCP2ExpandedProductCardSet("Cloud Storage","cloud_storage",140,"gcp google cloud platform expanded product cards cloud storage", +a);this.addGCP2ExpandedProductCardSet("Cloud Bigtable","cloud_bigtable",140,"gcp google cloud platform expanded product cards cloud bigtable",a);this.addGCP2ExpandedProductCardSet("Cloud Pub/Sub","cloud_pubsub",150,"gcp google cloud platform expanded product cards cloud pub sub",a);this.addGCP2ExpandedProductCardSet("Cloud SQL","cloud_sql",140,"gcp google cloud platform expanded product cards cloud sql",a);this.addGCP2ExpandedMachineCard("App Engine","app_engine_icon",1,.84,"10GB PD","1","modifiers_standard_machine", +"1","modifiers_storage","1","modifiers_autoscaling",150,"gcp google cloud platform expanded product cards app engine machine",a);this.addGCP2ExpandedMachineCard("Cloud Dataflow","cloud_dataflow_icon",.72,1,"10GB PD","1","modifiers_standard_machine","1","modifiers_storage","1","modifiers_autoscaling",150,"gcp google cloud platform expanded product cards app engine machine",a);this.addGCP2ExpandedMachineCard("Kubernetes Engine","container_engine_icon",.88,1,"10GB PD","1","modifiers_standard_machine", +"1","modifiers_storage","1","modifiers_autoscaling",150,"gcp google cloud platform expanded product cards app engine machine",a);this.addGCP2ExpandedMachineCard("Cloud Dataproc","cloud_dataproc_icon",1,.92,"10GB PD","1","modifiers_standard_machine","1","modifiers_storage","1","modifiers_autoscaling",150,"gcp google cloud platform expanded product cards app engine machine",a);this.addGCP2ExpandedMachineCard("Compute Engine","compute_engine_icon",1,1,"10GB PD","1","modifiers_standard_machine","1","modifiers_storage", +"1","modifiers_autoscaling",150,"gcp google cloud platform expanded product cards app engine machine",a);this.addPalette("gcp2Expanded Product Cards","GCP / Expanded Product Cards",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2UserDeviceCardsPalette=function(){var a=[];this.addGCP2UserDeviceCard("Application","application",1,.8,0,"gcp google cloud platform user and device cards application",a);this.addGCP2UserDeviceCard("Beacon","beacon", +.73,1,0,"gcp google cloud platform user and device cards beacon",a);this.addGCP2UserDeviceCard("Circuit-Board","circuit_board",1,.9,15,"gcp google cloud platform user and device cards circuit board",a);this.addGCP2UserDeviceCard("Database","database",1,.9,0,"gcp google cloud platform user and device cards database db",a);this.addGCP2UserDeviceCard("Desktop","desktop",1,.9,0,"gcp google cloud platform user and device cards desktop",a);this.addGCP2UserDeviceCard("Desktop and Mobile","desktop_and_mobile", +1,.66,15,"gcp google cloud platform user and device cards desktop and mobile",a);this.addGCP2UserDeviceCard("Game","game",1,.54,0,"gcp google cloud platform user and device cards game",a);this.addGCP2UserDeviceCard("Gateway","gateway_icon",1,.44,0,"gcp google cloud platform user and device cards gateway icon",a);this.addGCP2UserDeviceCard("Laptop","laptop",1,.66,0,"gcp google cloud platform user and device cards laptop",a);this.addGCP2UserDeviceCard("Lightbulb","lightbulb",.7,1,0,"gcp google cloud platform user and device cards lighbulb", +a);this.addGCP2UserDeviceCard("List","list",.89,1,0,"gcp google cloud platform user and device cards list",a);this.addGCP2UserDeviceCard("Live","live",.74,1,0,"gcp google cloud platform user and device cards live",a);this.addGCP2UserDeviceCard("Local-Compute","compute_engine_icon",1,.89,15,"gcp google cloud platform user and device cards local compute",a);this.addGCP2UserDeviceCard("Mobile Devices","mobile_devices",1,.73,15,"gcp google cloud platform user and device cards mobile devices",a);this.addGCP2UserDeviceCard("Payment", +"payment",1,.8,0,"gcp google cloud platform user and device cards payment",a);this.addGCP2UserDeviceCard("Phone","phone",.64,1,0,"gcp google cloud platform user and device cards phone",a);this.addGCP2UserDeviceCard("Record","record",1,.66,0,"gcp google cloud platform user and device cards record",a);this.addGCP2UserDeviceCard("Report","report",1,1,0,"gcp google cloud platform user and device cards report",a);this.addGCP2UserDeviceCard("Retail","retail",1,.89,0,"gcp google cloud platform user and device cards retail", +a);this.addGCP2UserDeviceCard("Speaker","speaker",.7,1,0,"gcp google cloud platform user and device cards speaker",a);this.addGCP2UserDeviceCard("Storage","storage",1,.8,0,"gcp google cloud platform user and device cards storage",a);this.addGCP2UserDeviceCard("Stream","stream",1,.82,0,"gcp google cloud platform user and device cards stream",a);this.addGCP2UserDeviceCard("Users","users",1,.63,0,"gcp google cloud platform user and device cards users",a);this.addGCP2UserDeviceCard("Webcam","webcam", +.5,1,0,"gcp google cloud platform user and device cards webcam",a);this.addPalette("gcp2User Device Cards","GCP / User and Device Cards",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2ProductCardsPalette=function(){var a=[];this.addGCP2ProductCardSet("Kubernetes","kubernetes_logo",1,.97,130,130,"gcp google cloud platform product kubernetes",a);this.addGCP2ProductCardSet("TensorFlow","tensorflow_logo",.94,1,130,130,"gcp google cloud platform product tensorflow", +a);this.addGCP2ProductCardSet("Forseti\nSecurity","forseti_logo",.98,1,110,150,"gcp google cloud platform product forseti",a);this.addGCP2ProductCardSet("Istio","istio_logo",.67,1,80,90,"gcp google cloud platform product forseti",a);this.addGCP2ProductCardSet("Firebase","firebase",.72,1,100,100,"gcp google cloud platform product firebase",a);this.addGCP2ProductCardSet("Fastly","fastly",1,.39,100,100,"gcp google cloud platform product fastly",a);this.addGCP2ProductCardSet("AdMob","admob",1,1,110,110, +"gcp google cloud platform product admob",a);this.addGCP2ProductCardSet("Google Play\nGame Services","google_play_game_service",1,.69,150,220,"gcp google cloud platform product google play game services",a);this.addGCP2ProductCardSet("Campaign\nManager","campaign_manager",1,1,120,170,"gcp google cloud platform product campaign manager",a);this.addGCP2ProductCardSet("Google\nAnalytics","google_analytics",1,1,120,160,"gcp google cloud platform product google analytics",a);this.addGCP2ProductCardSet("Google\nAds", +"google_ads",1,1,100,130,"gcp google cloud platform product google ads",a);this.addGCP2ProductCardSet("Avere Physical\nAppliance","avere",1,.33,150,200,"gcp google cloud platform product avere physical appliance",a);this.addGCP2ProductCardSet("Google\nAnalytics 360","google_analytics_360",1,.98,140,180,"gcp google cloud platform product google analytics 360",a);this.addGCP2ProductCardSet("Google Ad\nManager","google_ad_manager",1,1,120,170,"gcp google cloud platform product google ad manager",a); +this.addPalette("gcp2Product Cards","GCP / Product Cards",!1,mxUtils.bind(this,function(e){for(var d=0;d<a.length;d++)e.appendChild(a[d](e))}))};Sidebar.prototype.addGCP2CardSet=function(a,e,d,b,c,f){var g=this,h="dashed=0;connectable=0;html=1;fillColor=#5184F3;strokeColor=none;"+mxConstants.STYLE_SHAPE+"=mxgraph.gcp2.",k=a.replace("\n"," "),k=k.replace("- ","-");f.push(this.addEntry(c,function(){var b=new mxCell("",new mxGeometry(0,0,d,60),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;"); +b.vertex=!0;var c=new mxCell(a,new mxGeometry(0,.5,44,39),h+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#999999;fontSize=12;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(5,-19.5);c.vertex=!0;b.insert(c);return g.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,k)}));f.push(this.addEntry(c,function(){var a=new mxCell("",new mxGeometry(0,0,b,60),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;"); +a.vertex=!0;var c=new mxCell('<font color="#000000">Name</font><br>'+k,new mxGeometry(0,.5,44,39),h+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#999999;fontSize=12;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(5,-19.5);c.vertex=!0;a.insert(c);return g.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,k)}));f.push(this.addEntry(c,function(){var a=new mxCell("",new mxGeometry(0,0,b+8,68),"shape=mxgraph.gcp2.doubleRect;strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;"); +a.vertex=!0;var c=new mxCell('<font color="#000000">Name</font><br>'+k,new mxGeometry(0,.5,44,39),h+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#999999;fontSize=12;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(5,-19.5);c.vertex=!0;a.insert(c);return g.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,k)}))};Sidebar.prototype.addGCP2ProductCardSet=function(a,e,d,b,c,f,g,h){var k=this,l="dashed=0;connectable=0;html=1;fillColor=#5184F3;strokeColor=none;"+ +mxConstants.STYLE_SHAPE+"=mxgraph.gcp2.",m=a.replace("\n"," "),m=m.replace("- ","-");h.push(this.addEntry(g,function(){var f=new mxCell("",new mxGeometry(0,0,c,60),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;");f.vertex=!0;var g=new mxCell(a,new mxGeometry(0,0,45*d,45*b),l+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#999999;fontSize=12;");g.geometry.relative=!0;g.geometry.offset= +new mxPoint(5,7+22.5*(1-b));g.vertex=!0;f.insert(g);return k.createVertexTemplateFromCells([f],f.geometry.width,f.geometry.height,m)}));h.push(this.addEntry(g,function(){var a=new mxCell("",new mxGeometry(0,0,f,60),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;");a.vertex=!0;var c=new mxCell('<font color="#000000">Name</font><br>'+m,new mxGeometry(0,0,45*d,45*b),l+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#999999;fontSize=12;"); +c.geometry.relative=!0;c.geometry.offset=new mxPoint(5,7+22.5*(1-b));c.vertex=!0;a.insert(c);return k.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,m)}));h.push(this.addEntry(g,function(){var a=new mxCell("",new mxGeometry(0,0,f+8,68),"shape=mxgraph.gcp2.doubleRect;strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;");a.vertex=!0;var c=new mxCell('<font color="#000000">Name</font><br>'+m,new mxGeometry(0,0,45*d,45*b),l+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#999999;fontSize=12;"); +c.geometry.relative=!0;c.geometry.offset=new mxPoint(5,7+22.5*(1-b));c.vertex=!0;a.insert(c);return k.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,m)}))};Sidebar.prototype.addGCP2ServiceCard=function(a,e,d,b,c,f){var g=this,h="dashed=0;connectable=0;html=1;fillColor=#757575;strokeColor=none;"+mxConstants.STYLE_SHAPE+"=mxgraph.gcp2.",k=a.replace("\n"," "),k=k.replace("- ","-");f.push(this.addEntry(c,function(){var c=new mxCell("",new mxGeometry(0,0,d,b),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;"); +c.vertex=!0;var f=new mxCell(a,new mxGeometry(0,.5,32,32),h+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;fontColor=#000000;fontSize=12;");f.geometry.relative=!0;f.geometry.offset=new mxPoint(5,-16);f.vertex=!0;c.insert(f);return g.createVertexTemplateFromCells([c],d,b,k)}))};Sidebar.prototype.addGCP2ExpandedProductCardSet=function(a,e,d,b,c){var f=this,g="dashed=0;connectable=0;html=1;fillColor=#5184F3;strokeColor=none;"+mxConstants.STYLE_SHAPE+ +"=mxgraph.gcp2.",h=a.replace("\n"," "),h=h.replace("- ","-");c.push(this.addEntry(b,function(){var a=new mxCell("",new mxGeometry(0,0,d,70),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;");a.vertex=!0;var b=new mxCell('<font color="#000000">Name</font><br>'+h+'<hr><font style="font-size: 11px">Attribute Name</font>',new mxGeometry(0,0,44,39),g+e+";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=top;spacingLeft=5;fontColor=#999999;fontSize=12;spacingTop=-8;"); +b.geometry.relative=!0;b.geometry.offset=new mxPoint(5,7);b.vertex=!0;a.insert(b);return f.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,h)}));c.push(this.addEntry(b,function(){var a=new mxCell("",new mxGeometry(0,0,d+8,78),"shape=mxgraph.gcp2.doubleRect;strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;");a.vertex=!0;var b=new mxCell('<font color="#000000">Name</font><br>'+h+'<hr><font style="font-size: 11px">Attribute Name</font>',new mxGeometry(0,0,44,39),g+e+ +";part=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=top;spacingLeft=5;fontColor=#999999;fontSize=12;spacingTop=-8;");b.geometry.relative=!0;b.geometry.offset=new mxPoint(5,7);b.vertex=!0;a.insert(b);return f.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,h)}))};Sidebar.prototype.addGCP2ExpandedMachineCard=function(a,e,d,b,c,f,g,h,k,l,m,q,r,n){var p=this,u="dashed=0;connectable=0;html=1;fillColor=#757575;strokeColor=none;"+mxConstants.STYLE_SHAPE+ +"=mxgraph.gcp2.",t=a.replace("\n"," "),t=t.replace("- ","-");n.push(this.addEntry(r,function(){var a=new mxCell("",new mxGeometry(0,0,q,95),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;");a.vertex=!0;var n=new mxCell('<font color="#000000">'+t+"</font><hr>"+c,new mxGeometry(0,0,q,50),"text;part=1;html=1;align=left;verticalAlign=top;spacingLeft=35;fontColor=#999999;fontSize=11;resizeWidth=1;");n.geometry.relative=!0;n.vertex=!0;a.insert(n);n=new mxCell("", +new mxGeometry(0,0,25*d,25*b),u+e+";part=1;");n.geometry.relative=!0;n.geometry.offset=new mxPoint(4+12.5*(1-d),6+12.5*(1-b));n.vertex=!0;a.insert(n);n=new mxCell("",new mxGeometry(0,0,20,20),u+g+";part=1;");n.geometry.relative=!0;n.geometry.offset=new mxPoint(35,55);n.vertex=!0;a.insert(n);n=new mxCell(f,new mxGeometry(0,0,18,18),"rounded=1;arcSize=50;part=1;fillColor=#3B8CF0;strokeColor=none;html=1;fontColor=#ffffff;spacingTop=-2;");n.geometry.relative=!0;n.geometry.offset=new mxPoint(24,69);n.vertex= +!0;a.insert(n);n=new mxCell(h,new mxGeometry(0,0,18,18),"rounded=1;arcSize=50;part=1;fillColor=#3B8CF0;strokeColor=none;html=1;fontColor=#ffffff;spacingTop=-2;");n.geometry.relative=!0;n.geometry.offset=new mxPoint(50,69);n.vertex=!0;a.insert(n);n=new mxCell("",new mxGeometry(0,0,20,18),u+k+";part=1;");n.geometry.relative=!0;n.geometry.offset=new mxPoint(75,56);n.vertex=!0;a.insert(n);n=new mxCell(l,new mxGeometry(0,0,18,18),"rounded=1;arcSize=50;part=1;fillColor=#3B8CF0;strokeColor=none;html=1;fontColor=#ffffff;spacingTop=-2;"); +n.geometry.relative=!0;n.geometry.offset=new mxPoint(88,69);n.vertex=!0;a.insert(n);n=new mxCell("",new mxGeometry(0,0,20,20),u+m+";part=1;");n.geometry.relative=!0;n.geometry.offset=new mxPoint(115,55);n.vertex=!0;a.insert(n);return p.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,t)}));n.push(this.addEntry(r,function(){var a=new mxCell("",new mxGeometry(0,0,q,95),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;");a.vertex= +!0;var l=new mxCell('<font color="#000000">'+t+"</font><hr>"+c,new mxGeometry(0,0,q,50),"text;connectable=0;part=1;html=1;align=left;verticalAlign=top;spacingLeft=35;fontColor=#999999;fontSize=11;resizeWidth=1;");l.geometry.relative=!0;l.vertex=!0;a.insert(l);l=new mxCell("",new mxGeometry(0,0,25*d,25*b),u+e+";part=1;");l.geometry.relative=!0;l.geometry.offset=new mxPoint(4+12.5*(1-d),6+12.5*(1-b));l.vertex=!0;a.insert(l);l=new mxCell("",new mxGeometry(0,0,20,20),u+g+";part=1;");l.geometry.relative= +!0;l.geometry.offset=new mxPoint(35,55);l.vertex=!0;a.insert(l);l=new mxCell(f,new mxGeometry(0,0,18,18),"connectable=0;rounded=1;arcSize=50;part=1;fillColor=#3B8CF0;strokeColor=none;html=1;fontColor=#ffffff;spacingTop=-2;");l.geometry.relative=!0;l.geometry.offset=new mxPoint(24,69);l.vertex=!0;a.insert(l);l=new mxCell(h,new mxGeometry(0,0,18,18),"connectable=0;rounded=1;arcSize=50;part=1;fillColor=#3B8CF0;strokeColor=none;html=1;fontColor=#ffffff;spacingTop=-2;");l.geometry.relative=!0;l.geometry.offset= +new mxPoint(50,69);l.vertex=!0;a.insert(l);l=new mxCell("",new mxGeometry(0,0,20,18),u+k+";part=1;");l.geometry.relative=!0;l.geometry.offset=new mxPoint(75,56);l.vertex=!0;a.insert(l);l=new mxCell("123",new mxGeometry(0,0,25,18),"connectable=0;rounded=1;arcSize=50;part=1;fillColor=#3B8CF0;strokeColor=none;html=1;fontColor=#ffffff;spacingTop=-2;");l.geometry.relative=!0;l.geometry.offset=new mxPoint(81,69);l.vertex=!0;a.insert(l);l=new mxCell("",new mxGeometry(0,0,20,20),u+m+";part=1;");l.geometry.relative= +!0;l.geometry.offset=new mxPoint(115,55);l.vertex=!0;a.insert(l);return p.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,t)}))};Sidebar.prototype.addGCP2UserDeviceCard=function(a,e,d,b,c,f,g){var h=this,k="dashed=0;connectable=0;html=1;fillColor=#757575;strokeColor=none;"+mxConstants.STYLE_SHAPE+"=mxgraph.gcp2.",l=a.replace("\n"," "),l=l.replace("- ","-");g.push(this.addEntry(f,function(){var f=new mxCell(a,new mxGeometry(0,0,70,85+c),"strokeColor=#dddddd;fillColor=#ffffff;shadow=1;strokeWidth=1;rounded=1;absoluteArcSize=1;arcSize=2;labelPosition=center;verticalLabelPosition=middle;align=center;verticalAlign=bottom;spacingLeft=0;fontColor=#999999;fontSize=12;whiteSpace=wrap;spacingBottom=2;"); f.vertex=!0;var g=new mxCell("",new mxGeometry(.5,0,50*d,50*b),k+e+";part=1;");g.geometry.relative=!0;g.geometry.offset=new mxPoint(25*-d,10+25*(1-b));g.vertex=!0;f.insert(g);return h.createVertexTemplateFromCells([f],f.geometry.width,f.geometry.height,l)}))}})();(function(){Sidebar.prototype.addGMDLBottomNavigationPalette=function(a){var e=[this.addDataEntry("gmdl google media design library bottom navigation bottom navigation",358,48,"Bottom Navigation","7VbbToNAEP0aHtss0Gp9tPXyosaoP7AtA2xcGLKMtfXr3WWH2go1jZcHjRCSndkzlz1zIATxrFhdGlnl15iADuLzIJ4ZRPKrYjUDrYNIqCSIz4IoEvYJoos9u2GzKyppoKRDAiIfsJT6CbzHO2paa3Ykss7BwUUQT6VWWWnXC5sfjHWkWNK9enHYMLJ2ncvKGQYW5LaV1jPUaJpccdpcDkYGH6HdKbEEH5vgM1fixsAQrPYernHxyS4BCyCztpBnlVDuEfF44sNyUFnOYSP2ydrb2Sb0jSq7YLb6mYs7zN2BY6X+mMCcCu242qKqWGVu/sOsSPTQcJIOdRPh7n3UuTH0gR1/aiH1Kc+NsHIpKrlQZXYFKXFb22N0tpZz0LdYK1K4M+824dU7wByJsOhTCBebMqApx74H183Z4OjQcUf94+YAMQzHPmbdOtje0gO/DztyaH0GtCS1hJ36fRrhFm5R2c429Qeh2Ck/aNtpU2Ca1kAdkW1OcpDuRh3dXcglGkXwReXlIE3PKyvE8cnR9EDdbcC/Qnfj79Ld52QXTn5IdqMfkN24I7sbq5f5+muaK32O/4/dJ0Q3+XsfO2u+/fp4+Paf0Ss="), this.addDataEntry("gmdl google media design library bottom navigation bottom navigation",358,48,"Bottom Navigation","7Zbfb5swEMf/Gh4TGRxY9rikW19aqdL2PjlwgFXDIXPNj/31s7FJ84Oo6UqeOiQk39d3PvvuE4eAL6vtvRZN+YgZqIB/D/hSI5IbVdslKBVETGYBvwuiiJk3iH5cmA27WdYIDTVdExC5gLVQL+AUJ7S0U17IRFuCdWcBXwgli9qMU7M+aCPkWNNP+cf6hpGx21I01tCQkp2WSi1Roe7W4ox9+ZosrBtpfIZ+psYaXGyGG5/Jbww0wfbi4TrJn+wesALSO+OykRmVzoPHcxdWgixKHzbzmmidXexDX0tlBr5aw5Xj76xcSZWyRTqoUbUtbOOnRZWp6VpmgL+j85rl3XOpZrb+Q862cDIV6ptvGGFjl2hEKuviAXLy2zrsn7WVWIF6wlaSxKNG9ws+nDiskAirITR8soV36NJ57Zfdzd0kMQpahXbGTK5uezTcdh/ApmHsYna94O0DLvzv4giLMHGaBiVIruEo/xArfgtPKM3O9vknITtKPzmhDfO8BTpjbX+Qq/CbneH3+NLK9GMMVt0Sn4nAeCzk+PxN5MLZOXI9hmMj1+calbl45Ctvhfj8qWi71X2XRG/Dl9wOvvkJe+wG7CUjs7eBVSMK+I/fCPjN/+3v9mZ3X/xx/oz5+hHu3A+/0f8C")]; this.addPalette("gmdlBottom Navigation","GMDL / Bottom Navigation",a||!1,mxUtils.bind(this,function(a){for(var b=0;b<e.length;b++)a.appendChild(e[b](a))}))};Sidebar.prototype.addGMDLBottomSheetsPalette=function(a){var e=[this.addDataEntry("gmdl google media design library bottom sheets bottom sheet",358,320,"Bottom Sheet","7ZbRbtsgFIafxrcVgbjJLud0Sau12rQ9wETjE4yKwQLSOnv6gSFpFhwJaUsvqiaKxDnnPyfm+4VMQRZtv9K0ax5UDaIgXwqy0ErZsGr7BQhRYMTrgtwUGCP3K/DyTHUyVFFHNUib04BDwzMVWwiZkDB2J2KipqYBL0cFqajgTLr12s0H7RIbJe1P/ttrJ9jFpqGdDzSsrS9zIRZKKD3MIpvh42VWqyfYV6SSEHpr9RL/yQ3YasOf4QeYMN9n4+OCttCf3fKQivtdgWrB6p2TvPDaNkFBynloa4CzJraRyApRExLs0PtK0C0ixHGgJAH6rQPpBTIhe8JqlMkxwJjaeyBgY6MDR4jnyH9PnJnmosPj6PYNEdAuhmUIj8BihFKw/4PrNOH6FaA7i7TtmT9TV6ytxdWTV2bwdfSW02qGqhSyoI8gvivDLVc+rcPuKo+Tr6m4P6m3vK79Mx0En+O8Q8F0dM0lux/m3+C3cewajTh2GcPKxLA7+aj6PMf4IP2wzIeTEc/wZTy7Tjy7pZKprTV5tjVBnWkcWn6aleX7NS73sOF/N26WGPcAxoBk7h2d5Vx7kH8cOi9+w0M3T7xbKcXc3nGV5x0b5L86sTWZ7jls7gr0ft273GvOha+X86H21939Dw=="), @@ -5352,16 +5358,17 @@ this.createVertexTemplateEntry(b+"BlockStorage.svg;",a,a,"","Block Storage",!1,n a,a,"","Gateway Appliance",!1,null,this.getTagsForStencil("vpc virtual private cloud ","gateway appliance",e).join(" ")),this.createVertexTemplateEntry(b+"Image.svg;",a,a,"","Image",!1,null,this.getTagsForStencil("vpc virtual private cloud ","image",e).join(" ")),this.createVertexTemplateEntry(b+"Instance.svg;",a,a,"","Instance",!1,null,this.getTagsForStencil("vpc virtual private cloud ","instance",e).join(" ")),this.createVertexTemplateEntry(b+"Internet.svg;",a,a,"","Internet",!1,null,this.getTagsForStencil("vpc virtual private cloud ", "internet",e).join(" ")),this.createVertexTemplateEntry(b+"InternetServices.svg;",a,a,"","Internet Services",!1,null,this.getTagsForStencil("vpc virtual private cloud ","internet services",e).join(" ")),this.createVertexTemplateEntry(b+"Key.svg;",a,a,"","Key",!1,null,this.getTagsForStencil("vpc virtual private cloud ","key",e).join(" ")),this.createVertexTemplateEntry(b+"LoadBalancer.svg;",a,a,"","Load Balancer",!1,null,this.getTagsForStencil("vpc virtual private cloud ","load balancer",e).join(" ")), this.createVertexTemplateEntry(b+"Marketplace.svg;",a,a,"","Marketplace",!1,null,this.getTagsForStencil("vpc virtual private cloud ","marketplace",e).join(" ")),this.createVertexTemplateEntry(b+"PublicGateway.svg;",a,a,"","Public Gateway",!1,null,this.getTagsForStencil("vpc virtual private cloud ","public gateway",e).join(" ")),this.createVertexTemplateEntry(b+"Router.svg;",a,a,"","Router",!1,null,this.getTagsForStencil("vpc virtual private cloud ","router",e).join(" ")),this.createVertexTemplateEntry(b+ -"SecurityGroupRules.svg;",a,a,"","Security Group Rules",!1,null,this.getTagsForStencil("vpc virtual private cloud ","security group rules",e).join(" ")),this.createVertexTemplateEntry(b+"VPN.svg;",a,a,"","VPN",!1,null,this.getTagsForStencil("vpc virtual private cloud ","vpn virtual private network",e).join(" ")),this.createVertexTemplateEntry("rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#417CB9;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=0;strokeWidth=2;", +"SecurityGroupRules.svg;",a,a,"","Security Group Rules",!1,null,this.getTagsForStencil("vpc virtual private cloud ","security group rules",e).join(" ")),this.createVertexTemplateEntry(b+"VPN.svg;",a,a,"","VPN",!1,null,this.getTagsForStencil("vpc virtual private cloud ","vpn virtual private network",e).join(" ")),this.createVertexTemplateEntry("swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=12;strokeColor=#417CB9;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=0;strokeWidth=2;", 200,200,"CLOUD UNIVERSE","Cloud Universe",!0,null,this.getTagsForStencil("vpc virtual private cloud ","",e).join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=none;endFill=0;rounded=0;strokeColor=#EEBC25;strokeWidth=2;",a,a,"","Data Connector",null,e+"data connector"),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=classicThin;endFill=1;rounded=0;strokeColor=#0076BE;strokeWidth=2;",a,a,"","Directional Private Connector", -null,e+"directional private connector"),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=classicThin;endFill=1;rounded=0;strokeColor=#FD0000;strokeWidth=2;",a,a,"","Directional Public Connector",null,e+"directional public connector"),this.addEntry(e+"ibm cloud",function(){var a=new mxCell("IBM CLOUD",new mxGeometry(0,11,200,200),"rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#417CB9;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;spacingTop=5;dashed=0;strokeWidth=2;"); -a.vertex=!0;var c=new mxCell("",new mxGeometry(20,0,30,22),b+"IBMCloud.svg;");c.vertex=!0;return d.createVertexTemplateFromCells([a,c],200,211,"IBM Cloud")}),this.createVertexTemplateEntry("rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#417CB9;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=0;strokeWidth=2;",200,200,"OTHER NETWORK","Cloud Universe",!0,null,this.getTagsForStencil("vpc virtual private cloud ","",e).join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=classicThin;endFill=1;rounded=0;strokeColor=#0076BE;strokeWidth=2;startArrow=classicThin;startFill=1;", -a,a,"","Private Connector",null,e+"directional private connector"),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=classicThin;endFill=1;rounded=0;strokeColor=#FD0000;strokeWidth=2;startArrow=classicThin;startFill=1;",a,a,"","Public Connector",null,e+"directional private connector"),this.createVertexTemplateEntry("rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#417CB9;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=1;strokeWidth=2;", -200,200,"REGION","Region",!0,null,this.getTagsForStencil("vpc virtual private cloud ","",e).join(" ")),this.createVertexTemplateEntry("rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#FD0000;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=center;spacingLeft=5;dashed=1;dashPattern=5 2;labelPosition=center;verticalLabelPosition=bottom;strokeWidth=2;",200,200,"SECURITY GROUP","Security Group",!0,null,this.getTagsForStencil("vpc virtual private cloud ","",e).join(" ")), -this.createVertexTemplateEntry("rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#417CB9;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=0;strokeWidth=2;",200,200,"SERVICES","Services",!0,null,this.getTagsForStencil("vpc virtual private cloud ","",e).join(" ")),this.addEntry(e+"subnet",function(){var a=new mxCell("SUBNET",new mxGeometry(0,11,200,200),"rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#FD0000;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;spacingTop=8;dashed=0;strokeWidth=2;"); -a.vertex=!0;var c=new mxCell("",new mxGeometry(20,0,19,26),b+"Subnet.svg;");c.vertex=!0;return d.createVertexTemplateFromCells([a,c],200,211,"Subnet")}),this.addEntry(e+"virtual private cloud",function(){var a=new mxCell("VIRTUAL PRIVATE CLOUD",new mxGeometry(0,11,200,200),"rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#417CB9;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;spacingTop=5;dashed=0;strokeWidth=2;");a.vertex=!0;var c=new mxCell("", -new mxGeometry(20,0,30,22),b+"VirtualPrivateCloud.svg;");c.vertex=!0;return d.createVertexTemplateFromCells([a,c],200,211,"Virtual Private Cloud")}),this.createVertexTemplateEntry("rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#417CB9;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=1;strokeWidth=2;",200,200,"ZONE","Zone",!0,null,this.getTagsForStencil("vpc virtual private cloud ","",e).join(" "))];this.addPalette("ibmVPC","IBM / VPC", -!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))}})();(function(){Sidebar.prototype.addInfographicPalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;shape=mxgraph.infographic.",e=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;shape=mxgraph.basic.";this.addPaletteFunctions("infographic","Infographic",!1,[this.createVertexTemplateEntry(e+"pie;fillColor=#10739E;strokeColor=none;startAngle=0.2;endAngle=0.9;",100,100,"","Pie",null, +null,e+"directional private connector"),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=classicThin;endFill=1;rounded=0;strokeColor=#FD0000;strokeWidth=2;",a,a,"","Directional Public Connector",null,e+"directional public connector"),this.addEntry(e+"ibm cloud",function(){var a=new mxCell("IBM CLOUD",new mxGeometry(0,11,200,200),"swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=12;strokeColor=#417CB9;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;spacingTop=5;dashed=0;strokeWidth=2;"); +a.vertex=!0;var c=new mxCell("",new mxGeometry(20,-11,30,22),b+"IBMCloud.svg;part=1;");c.vertex=!0;a.insert(c);return d.createVertexTemplateFromCells([a],200,211,"IBM Cloud")}),this.createVertexTemplateEntry("swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=12;strokeColor=#417CB9;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=0;strokeWidth=2;",200,200,"OTHER NETWORK", +"Cloud Universe",!0,null,this.getTagsForStencil("vpc virtual private cloud ","",e).join(" ")),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=classicThin;endFill=1;rounded=0;strokeColor=#0076BE;strokeWidth=2;startArrow=classicThin;startFill=1;",a,a,"","Private Connector",null,e+"directional private connector"),this.createEdgeTemplateEntry("edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=classicThin;endFill=1;rounded=0;strokeColor=#FD0000;strokeWidth=2;startArrow=classicThin;startFill=1;", +a,a,"","Public Connector",null,e+"directional private connector"),this.createVertexTemplateEntry("swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=12;strokeColor=#417CB9;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=1;strokeWidth=2;",200,200,"REGION","Region",!0,null,this.getTagsForStencil("vpc virtual private cloud ","",e).join(" ")),this.createVertexTemplateEntry("rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#FD0000;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=center;spacingLeft=5;dashed=1;dashPattern=5 2;labelPosition=center;verticalLabelPosition=bottom;strokeWidth=2;", +200,200,"SECURITY GROUP","Security Group",!0,null,this.getTagsForStencil("vpc virtual private cloud ","",e).join(" ")),this.createVertexTemplateEntry("swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=12;strokeColor=#417CB9;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=0;strokeWidth=2;",200,200,"SERVICES","Services",!0,null,this.getTagsForStencil("vpc virtual private cloud ", +"",e).join(" ")),this.addEntry(e+"subnet",function(){var a=new mxCell("SUBNET",new mxGeometry(0,11,200,200),"swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=12;strokeColor=#FD0000;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;spacingTop=8;dashed=0;strokeWidth=2;");a.vertex=!0;var c=new mxCell("",new mxGeometry(20,-11,19,26),b+"Subnet.svg;part=1;");c.vertex=!0; +a.insert(c);return d.createVertexTemplateFromCells([a],200,211,"Subnet")}),this.addEntry(e+"virtual private cloud",function(){var a=new mxCell("VIRTUAL PRIVATE CLOUD",new mxGeometry(0,11,200,200),"swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=12;strokeColor=#417CB9;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;spacingTop=5;dashed=0;strokeWidth=2;");a.vertex= +!0;var c=new mxCell("",new mxGeometry(20,-11,30,22),b+"VirtualPrivateCloud.svg;part=1;");c.vertex=!0;a.insert(c);return d.createVertexTemplateFromCells([a],200,211,"Virtual Private Cloud")}),this.createVertexTemplateEntry("swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=12;strokeColor=#417CB9;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=1;strokeWidth=2;", +200,200,"ZONE","Zone",!0,null,this.getTagsForStencil("vpc virtual private cloud ","",e).join(" "))];this.addPalette("ibmVPC","IBM / VPC",!1,mxUtils.bind(this,function(a){for(var b=0;b<c.length;b++)a.appendChild(c[b](a))}))}})();(function(){Sidebar.prototype.addInfographicPalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;shape=mxgraph.infographic.",e=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;shape=mxgraph.basic.";this.addPaletteFunctions("infographic","Infographic",!1,[this.createVertexTemplateEntry(e+"pie;fillColor=#10739E;strokeColor=none;startAngle=0.2;endAngle=0.9;",100,100,"","Pie",null, null,this.getTagsForStencil("mxgraph.infographic","pie","").join(" ")),this.createVertexTemplateEntry(e+"arc;strokeColor=#10739E;strokeWidth=6;startAngle=0.3;endAngle=0.1;",100,100,"","Arc",null,null,this.getTagsForStencil("mxgraph.infographic","arc","").join(" ")),this.createVertexTemplateEntry(e+"partConcEllipse;fillColor=#10739E;strokeColor=none;startAngle=0.25;endAngle=0.1;arcWidth=0.5;",100,100,"","Partial Concentric Ellipse",null,null,this.getTagsForStencil("mxgraph.infographic","partConcEllipse", "").join(" ")),this.createVertexTemplateEntry(a+"parallelogram;dx=15;fillColor=#10739E;strokeColor=none;",100,70,"","Trapezoid",null,null,this.getTagsForStencil("mxgraph.infographic","partConcEllipse","").join(" ")),this.createVertexTemplateEntry("html=1;shape=mxgraph.infographic.ribbonSimple;notch1=20;notch2=20;fillColor=#10739E;strokeColor=none;align=center;verticalAlign=middle;fontColor=#ffffff;fontSize=14;fontStyle=1;",200,40,"Label","Ribbon",null,null,this.getTagsForStencil("mxgraph.infographic", "ribbonRolled","").join(" ")),this.createVertexTemplateEntry("html=1;shape=mxgraph.infographic.ribbonRolled;dx=185;dy=15;fillColor=#10739E;strokeColor=none;align=center;verticalAlign=middle;fontColor=#ffffff;fontSize=14;fontStyle=1;",200,70,"Label","Ribbon (rolled)",null,null,this.getTagsForStencil("mxgraph.infographic","ribbonRolled","").join(" ")),this.createVertexTemplateEntry("html=1;shape=mxgraph.infographic.ribbonDoubleFolded;dx=25;dy=15;fillColor=#10739E;strokeColor=none;align=center;verticalAlign=middle;fontColor=#ffffff;fontSize=14;fontStyle=1;", @@ -6927,15 +6934,15 @@ this.createEdgeTemplateEntry("edgeStyle=none;html=1;endArrow=open;endSize=12;das this.addDataEntry("sysml block binding connector",160,0,"Binding Connector","zVSxboMwEP0aj5XAVNlDknaqVClDZwcuxorxpceRknx9DbgQmqTKkKEDku/53jN+72SRLMrmldS+eMMcrEhWIlkQIverslmAtUJGJhfJUkgZ+U/Ilxu7cbcb7RWB43sIsicclK2hR4ScqXIvktR6gXRawWet7ADpSUOoWrWKjzaoHYDYZMrOrdHOQxtkxtJ3Flz6yy7jVtXlcyL88qVDBy2Sa1gHESQuUKNTdjWiacWEO/gwORe+Rw5Ht8ybVnRQ8OEVsASmo28hsIrNYcpTVV/qoW+gvqPximNLhTVlENBzr38am6A8i6barEgDXxD94uz/RqiL7nqMyUWM8UUUBJU5qU1XRtMEVEjHwrZN8XdojN0EqA3YVGU7TVi7fIEWaYxsi47X5tSKx+GaGToHGYcjh1GMWnlobqYkr6cUCE+BcXdoE1f/sPD5MRaS0cV/9/BBFvpyfKj6oT1/x74B"), this.addDataEntry("sysml block bidirectional connector",160,0,"Bidirectional Connector","3VXBboMwDP2aXCatCrD1XmjX06RJ/YIUXIgWYhRMR/v1C5BBGe1UTZ1U7QCKH89O/J5FWBDl9dqIInvFBBQLViyIDCJ1q7yOQCnmc5mwYMl8n9uH+S8XvnrtV14IA5quSfC7hL1QFXRIbGtwFizsW5QlxlKQRN3RSjooR9uDIRkLtVAy1RbaIhHmLAgzym0XS88uQScLY/DDhho1NEiSwsYVQUMZpqiFWg1o2G3U8C521EKunTVgDmQOlmJA2aPux3mi7MK05/WpbyhtxYFSYmVicOipZF/E2lWe83FtEiYFmiTaxcn5Bqh14LwbwcQNPpt5E+0NlPIotm3Ix5ILZ4eCnVUr/O4SYWFRJbagQhG/pwYrnUSo0Awe7VDTRh6b4p7rNEatISa3ZT9UvCkP9UWj/PNGuYRHl3G1byNhf1DxaaJicUsN+0n/5zI+nxvGh98IaWSa3fs0/pWK8+kw+rfU8M6m8UYy2nC4A7sf6ekV+Qk="), this.addDataEntry("sysml block unidirectional connector",160,0,"Unidirectional Connector","3VXBboMwDP2aXCatCrD1XmjX06RJ/YIUXIgWYhRMR/v1C5BBGe1UTZ1U7QCKH89O/J5FWBDl9dqIInvFBBQLViyIDCJ1q7yOQCnmc5mwYMl8n9uH+S8XvnrtV14IA5quSfC7hL1QFXRIbGtwFizsW5QlxlKQRN3RSjooR9uDIRkLtVAy1RbaIhHmLAgzym0XS88uQScLY/DDhho1NEiSwsYVQUMZpqiFWg1o2G3U8C521EKunTVgDmQOlmJA2aPux3mi7MK05/WpbyhtxYFSYmVicOipZF/E2lWe83FtEiYFmiTaxcn5Bqh14LwbwcQNPpt5E+0NlPIotm3Ix5ILZ4eCnVUr/O4SYWFRJbagQhG/pwYrnUSo0Awe7VDTRh6b4p7rNEatISa3ZT9UvCkP9UWj/PNGuYRHl3G1byNhf1DxaaJicUsN+0n/5zI+nxvGh98IaWSa3fs0/pWK8+kw+rfU8M6m8UYy2nC4A7sf6ekV+Qk=")]; -this.addPalette("sysmlBlocks","SysML / Blocks",a||!1,mxUtils.bind(this,function(a){for(var b=0;b<d.length;b++)a.appendChild(d[b](a))}))};Sidebar.prototype.addSysMLPortsAndFlowsPalette=function(a){var e=this,d=[this.addEntry("sysml port flow port",function(){var a=new mxCell("Transmission",new mxGeometry(0,0,160,60),"html=1;shape=mxgraph.sysml.port1;fontStyle=1;whiteSpace=wrap;align=center;");a.vertex=!0;var c=new mxCell("p1",new mxGeometry(0,20,20,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=rect;html=1;resizable=1;align=right;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10;"); -c.geometry.relative=!1;c.setConnectable(!1);c.vertex=!0;a.insert(c);c=new mxCell("p2",new mxGeometry(140,20,20,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=rect;html=1;resizable=1;labelBackgroundColor=none;fontSize=10;");c.geometry.relative=!1;c.setConnectable(!1);c.vertex=!0;a.insert(c);return e.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,"Port")}),this.addEntry("sysml port flow port conjugated",function(){var a=new mxCell("Transmission",new mxGeometry(0, -0,200,60),"html=1;shape=mxgraph.sysml.port2;fontStyle=1;spacingRight=20;whiteSpace=wrap;align=center;");a.vertex=!0;var c=new mxCell("p1 : ~T1",new mxGeometry(0,20,20,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=rect;html=1;resizable=1;align=right;verticalAlign=bottom;labelPositin=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10");c.geometry.relative=!1;c.setConnectable(!1);c.vertex=!0;a.insert(c);c=new mxCell("p2 : ~T2",new mxGeometry(140,20,60,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=rect;html=1;resizable=1;labelBackgroundColor=none;fontSize=10"); -c.geometry.relative=!1;c.setConnectable(!1);c.vertex=!0;a.insert(c);return e.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,"Port (Conjugated Ports)")}),this.addDataEntry("sysml port flow port flow property",160,80,"Ports with Flow Properties","7ZTLboMwEEW/xtuI4KbqtoE2m1aqlP6AAxOwanuQPWkgX18DJi9S9aFI3XSBZN87V5o5g8x4ouuFFVX5jDkoxh8YTywi9SddJ6AUiyOZM56yOI78x+LHT9xp50aVsGDoO4G4D7wLtYFeebXCOC2dk2h601GjglmS9i2mU8bnrhRVq+q6aLufuMZpNanQEvfuGg0tQ66t3paSYFmJrBW2PuA1oWRh/DXzvYL1QugFLEH96TydFIZZAGog2/iSrcypDBW3/cxRCbIoQ+wuaML192IfPdDxhwDoMiw+glVNR4gsOLkTq+4a+aGOkA0D276teTupzIS6D/oKiVB7Q4kVqBd0ktol8FTB+rj+6cwmrIbQXGRvhcWNyRNU6KGmBg0MC5G7bh8BRYbGQEah1/2v8tUC4ssLaELgCpxvxpzjf86nnGdX4Dwbc+a/4XyG7TLmvyM2BIZnIRDkPyfor4enufNOXu4P"), +this.addPalette("sysmlBlocks","SysML / Blocks",a||!1,mxUtils.bind(this,function(a){for(var b=0;b<d.length;b++)a.appendChild(d[b](a))}))};Sidebar.prototype.addSysMLPortsAndFlowsPalette=function(a){var e=this,d=[this.addEntry("sysml port flow port",function(){var a=new mxCell("Transmission",new mxGeometry(0,0,160,60),"html=1;shape=mxgraph.sysml.port1;fontStyle=1;whiteSpace=wrap;align=center;points=[[0,0.5,0],[1,0.5,0]];");a.vertex=!0;var c=new mxCell("p1",new mxGeometry(0,20,20,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=rect;points=[[0,0.5,0]];html=1;resizable=1;align=right;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10;part=1;"); +c.geometry.relative=!1;c.vertex=!0;a.insert(c);c=new mxCell("p2",new mxGeometry(140,20,20,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=rect;points=[[1,0.5,0]];html=1;resizable=1;labelBackgroundColor=none;fontSize=10;part=1;");c.geometry.relative=!1;c.vertex=!0;a.insert(c);return e.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,"Port")}),this.addEntry("sysml port flow port conjugated",function(){var a=new mxCell("Transmission",new mxGeometry(0,0,200, +60),"html=1;shape=mxgraph.sysml.port2;fontStyle=1;spacingRight=20;whiteSpace=wrap;align=center;");a.vertex=!0;var c=new mxCell("p1 : ~T1",new mxGeometry(0,20,20,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=rect;points=[[0,0.5,0]];html=1;resizable=1;align=right;verticalAlign=bottom;labelPositin=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10;part=1;");c.geometry.relative=!1;c.vertex=!0;a.insert(c);c=new mxCell("p2 : ~T2",new mxGeometry(140,20,60,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=rect;points=[[1,0.5,0]];html=1;resizable=1;labelBackgroundColor=none;fontSize=10;part=1;"); +c.geometry.relative=!1;c.vertex=!0;a.insert(c);return e.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,"Port (Conjugated Ports)")}),this.addDataEntry("sysml port flow port flow property",160,80,"Ports with Flow Properties","7ZTLboMwEEW/xtuI4KbqtoE2m1aqlP6AAxOwanuQPWkgX18DJi9S9aFI3XSBZN87V5o5g8x4ouuFFVX5jDkoxh8YTywi9SddJ6AUiyOZM56yOI78x+LHT9xp50aVsGDoO4G4D7wLtYFeebXCOC2dk2h601GjglmS9i2mU8bnrhRVq+q6aLufuMZpNanQEvfuGg0tQ66t3paSYFmJrBW2PuA1oWRh/DXzvYL1QugFLEH96TydFIZZAGog2/iSrcypDBW3/cxRCbIoQ+wuaML192IfPdDxhwDoMiw+glVNR4gsOLkTq+4a+aGOkA0D276teTupzIS6D/oKiVB7Q4kVqBd0ktol8FTB+rj+6cwmrIbQXGRvhcWNyRNU6KGmBg0MC5G7bh8BRYbGQEah1/2v8tUC4ssLaELgCpxvxpzjf86nnGdX4Dwbc+a/4XyG7TLmvyM2BIZnIRDkPyfor4enufNOXu4P"), this.createVertexTemplateEntry("shape=rect;html=1;overflow=fill;whiteSpace=wrap;",160,70,'<p style="margin:0px;margin-top:4px;text-align:center;"><b>Transmission</b></p><hr/><p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;"><i>ports</i></p><p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">p1 : ITransCmd</p>',"Port (Compartment Notation)",null,null,this.getTagsForStencil("","","sysml port flow port compartment notation").join(" ")),this.addDataEntry("sysml port flow nested port", 160,60,"Nested Port","7ZXLboMwEEW/xtsIcJp9gTabVoqU/oADE7DqB7KdBvL1tbHJk6iPdFVlgeS54yvPnLEwwhlv54o09assgSH8hHCmpDR+xdsMGENJREuEc5Qkkf1Q8nwlG/fZqCEKhPmOIfGGD8I24JU3RYTmVGsqhU9q07GQrA23JeYxwqmuSeNU3lau+onuNGcTAdpAuZDKnp6upTDLYHaWbU0NLBtSOGFrXVYjjFbChoUtGJQVQkGgDLRXm+ql0NEcJAejOrtlS0tThx0z33hUA63qYBs0on1c7a0HRHYRKI0TwxfEmngSX5BSoOmOrPowsm0dkRtaVr6w1PVKC8Ieg85pWTpfysgK2EJqatwscM5gfbz/5SxtZDOYUlK8V0puRJlJJi3WXEgBw0jorp9IgFFIIaAwodb9jflqBMn4CLpgmN5OejpGOrmTPiWN/+BOP4yRxnfSp6Sns9tJz0ZI/4bzGbZ/gTkYhjdp+JP8/H7b8PCC9rmTB/YT"), -this.addEntry("sysml port flow proxy port",function(){var a=new mxCell("Transmission",new mxGeometry(0,0,160,60),"html=1;shape=mxgraph.sysml.port1;fontStyle=1;whiteSpace=wrap;align=center;");a.vertex=!0;var c=new mxCell("<<proxy>>\np1",new mxGeometry(0,20,20,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=rect;html=1;resizable=1;align=right;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10");c.geometry.relative= -!1;c.setConnectable(!1);c.vertex=!0;a.insert(c);return e.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,"Proxy Port")}),this.addEntry("sysml port flow full port",function(){var a=new mxCell("Transmission",new mxGeometry(0,0,160,60),"html=1;shape=mxgraph.sysml.port1;fontStyle=1;whiteSpace=wrap;align=center;");a.vertex=!0;var c=new mxCell("<<full>>\np1",new mxGeometry(0,20,20,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=rect;html=1;resizable=1;align=right;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10"); -c.geometry.relative=!1;c.setConnectable(!1);c.vertex=!0;a.insert(c);return e.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,"Full Port")}),this.createVertexTemplateEntry("shape=rect;html=1;overflow=fill;whiteSpace=wrap;",200,100,'<p style="margin:0px;margin-top:4px;text-align:center;"><b>Transmission</b></p><hr/><p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;"><i>flow properties</i></p><p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">in gearSelect: Gear<br/>in engineTorque: Torque<br/>out wheelsTorque: Torque</p>', +this.addEntry("sysml port flow proxy port",function(){var a=new mxCell("Transmission",new mxGeometry(0,0,160,60),"html=1;shape=mxgraph.sysml.port1;fontStyle=1;whiteSpace=wrap;align=center;");a.vertex=!0;var c=new mxCell("<<proxy>>\np1",new mxGeometry(0,20,20,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=rect;points=[[0,0.5,0]];html=1;resizable=1;align=right;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10;part=1;"); +c.geometry.relative=!1;c.vertex=!0;a.insert(c);return e.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,"Proxy Port")}),this.addEntry("sysml port flow full port",function(){var a=new mxCell("Transmission",new mxGeometry(0,0,160,60),"html=1;shape=mxgraph.sysml.port1;fontStyle=1;whiteSpace=wrap;align=center;");a.vertex=!0;var c=new mxCell("<<full>>\np1",new mxGeometry(0,20,20,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=rect;points=[[0,0.5,0]];html=1;resizable=1;align=right;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10;paart=1;"); +c.geometry.relative=!1;c.vertex=!0;a.insert(c);return e.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,"Full Port")}),this.createVertexTemplateEntry("shape=rect;html=1;overflow=fill;whiteSpace=wrap;",200,100,'<p style="margin:0px;margin-top:4px;text-align:center;"><b>Transmission</b></p><hr/><p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;"><i>flow properties</i></p><p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">in gearSelect: Gear<br/>in engineTorque: Torque<br/>out wheelsTorque: Torque</p>', "Flow Property",null,null,this.getTagsForStencil("","","sysml port flow flow property").join(" ")),this.createVertexTemplateEntry("shape=rect;html=1;overflow=fill;whiteSpace=wrap;",250,150,'<p style="margin:0px;margin-top:4px;text-align:center;"><b>Transmission</b></p><hr/><p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;"><i>operations</i></p><p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">prov Boolean selectGear(g : Gear)<br/>reqd Torque getTorque()</p><hr/><p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;"><i>properties</i></p><p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">prov temperature : Integer<br/>reqd geometry : Spline</p>', "Required and Provided Features",null,null,this.getTagsForStencil("","","sysml port flow required provided feature").join(" ")),this.createVertexTemplateEntry("shape=rect;html=1;overflow=fill;whiteSpace=wrap;",200,80,'<p style="margin:0px;margin-top:4px;text-align:center;"><<interfaceBlock>>\n<b>ISpeedObserver</b></p><hr/><p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">notifySpeedChange(): void</p>',"Interface Block",null,null,this.getTagsForStencil("","","sysml port flow interface block").join(" ")), this.addDataEntry("sysml port flow item flow",120,180,"Item Flow","1ZXBbtswDIafRscFjt0Gu8bJ2ks3DEgO21GxGVuYLHkUk9h9+lG2nMRNuhVYVmAHA+JPUhY/UrZIFlXziLIuP9sctEg+iWSB1lK/qpoFaC3iSOUiWYo4jvgR8cMr3mnnjWqJYOgtCXGfsJd6B70CphDJnDVeKAMinok4mUYiSftQR60OoSVVfODllH2ulLVXq6bwtUxc6yo9UQTVg7YHDthaQ6uQ6hO2LC8VsrUK1rrtdrA7Pnh6KDl3VcvMSwfekjWpVWHYzLg2wOOB9oAEzav1d1Io/hFsBYQth4SEgCc6qJzKXvoYpBJUUYZNZkGTrreL40YntrwIeK+jTi5Qn7ElNK7HvkZpXKWcU9b8I+JfxsSVeQ/gbfBeIX7Ubo387gL52uJPXr/kCnkBAytjeeqT9Az1wAH706Vg8jmihzwEQ6PoG5vR5D5Y30MuY8H2zOVN7ztdKP/uEUxnd5jB6H6SxAJoNEdvQI6gJan9ePe/4Xl/wbO+QIng1LPcdGZ0naOGrcfoeNqUKZ46a9ldAz9aKpN6HiLJ+jnUcgP6q3WK/J045g/BTy/cG0tkqyEvldmPAu3O5AurLZ561t0P9Qz9u7syMmsMZBROf/x4/mni7377ifkQMm7ejdl7d2MM9r9tyI36webpP935Rr/xXw=="), @@ -6971,7 +6978,7 @@ this.addPalette("sysmlConstraint Blocks","SysML / Constraint Blocks",a||!1,mxUti "Control Operator",null,null,this.getTagsForStencil("","","sysml activity control operator").join(" ")),this.createVertexTemplateEntry("html=1;shape=mxgraph.sysml.package;align=left;spacingLeft=5;verticalAlign=top;spacingTop=-3;labelX=135;html=1;overflow=fill;",250,120,'<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;"><b>act</b> [ControlOperator]</p>',"Control Operator",null,null,this.getTagsForStencil("","package","sysml activity control operator").join(" ")),this.addDataEntry("sysml activity decision node", 200,80,"Decision Node","7ZXJboMwEIafxneWpOo1kDSXVoqUJzBhBFaNB5kh29PXYIclTVS6ST30gDTzz+JhPpBZGBfHteZl/oIpSBauWBhrRLJWcYxBShZ4ImXhkgWBZx4WPN2J+m3UK7kGRVMKAluw57IGq1ihopN0QpXzsjF1jkVSVyyMcirMoEvfmHvQJHZcPvME5AYrQQKViSVIhMUgYSFFpgo7FWFpIu5kE4fj3elbyY2+BiyA9MmkuIJH+3Leyboz5x5ESvlYykFkOY01Xlk/6/r2izKG29XtvYUf7w3SDLbOBZngYdULwxW2MWPnqMUZFXETiHizrmbpduzxGof7BZUutG4bKFRNa421SqGZ0zOebMBEfPeatXqMEnWfWxHXdKnHEtRF24pzM7cfdKCa1xlhqrDWOxh9RhPIaZCcxH7c6hYJV7pBYTp2xH3vCp4ZNgNyWVf8umMnIZ29RzqPsprrlM2X36Z7ATiRpWPxGZam+q9SC7zxj/rwaxDntyCCrOCf4VcZ/jQz4/b3m00fXn9v"), this.createVertexTemplateEntry("html=1;shape=mxgraph.sysml.flowFinal;strokeWidth=2;verticalLabelPosition=bottom;verticalAlignment=top;",40,40,"","Flow Final",null,null,this.getTagsForStencil("","flowFinal","sysml activity flow final").join(" ")),this.addDataEntry("sysml activity fork node",200,80,"Fork Node","7ZZNb4JAEIZ/DXdYrPZq0XppExMPPa8yhU2XHbKMn7++Czt+QDQ1RpMeJCHZfeeD2feBhCBOis3EyjL/xBR0EI+DOLGI5FfFJgGtAxGqNIhHgRChuwPxfiEaNdGwlBYMXVMgfMFK6iV4xQsVbTULVS7Lemlh4Vq+5VS4KUeRW34rrRPUaJvEOGwup6/AklpI/SHnoKdYKVJoXM4cibA4SRhqlZnCj0pYugiP4+KwuXikRuLzTAALILt1KVzQ9ycO1yql3Es9r+Sgspx7vHKWrPw+O/Q5uuUWbNh58+K/zYM0gxlvQc9xPT4Kp1Y2MbfO0aodGpK6Fk06tLbRDZq6wuLSpFA/vva5Imlpn4ElmEaz+ANffPZ4nzVTu3qESBw8ridrOVzh0i6g9VpcYboFLUmt2q3OmcqlU1Suowi3TKaDwc2aAXFSh8ThqVfB6d0fzv61baNh47touhhcxb+DwF+MCJkCQ4keBuXlCeVWKPHDoPSfUG6F8vIwKIMnlFuhDO4FxW2Pf2I+/fRH7Rc="), -this.createVertexTemplateEntry("shape=ellipse;html=1;illColor=#000000;strokeWidth=2;verticalLabelPosition=bottom;verticalAlignment=top;",40,40,"","Initial Node",null,null,this.getTagsForStencil("","","sysml activity initial node").join(" ")),this.addDataEntry("sysml activity join node",200,80,"Join Node","7ZZNb8IwDIZ/Ta6oNBvsugLjskmTdtg5tKbNltZVahjs189NMigfk5AAaQcqVXLs1076PjlUyFG5mlpVFy+YgRFyIuTIIpKPytUIjBFxpDMhxyKOI35F/PRHte+qUa0sVHRKQ+wblsoswGfEMPlAXTU1pJzo9XpiOPaihtYmiJpC1W1oIeVtkoJKPvm4z+FcGzNCg9YJZeQezi/Bkk6VeVYzMK/YaNJYsWaGRFiywLSFRKWfucVFlXVmzN3TmfFodN72EtacDV/ANVj96YJLBQumgCWQXbPkt0EOfMuXzqjwuTufKUDnRRjy4L2MVOPX+WbQ1mEOgsnHDZeHhu+bC1kOb2EJZoZfk22ia7WrcVyg1d9YkeJC4syDdrPWdaiyR2udCmtgz5KGLH7Ce/hO6TVv+rvdrB9v7GzPsGNmgwubws6lOcFfC0aRXu6OOmZfaH3lm0dbLnEUHF8HJnsASNkcKDTtMdic4iQsd5fH8ntbnenK0h6IDpoKKzhAdwjKTfl3qAKa/tXQ3N/QnIdGXg3N4IbmPDT3V0MzvKE5D83wUmh4uf2f8/Lu794P"), +this.createVertexTemplateEntry("shape=ellipse;html=1;illColor=#000000;strokeWidth=2;verticalLabelPosition=bottom;verticalAlignment=top;perimeter=ellipsePerimeter;",40,40,"","Initial Node",null,null,this.getTagsForStencil("","","sysml activity initial node").join(" ")),this.addDataEntry("sysml activity join node",200,80,"Join Node","7ZZNb8IwDIZ/Ta6oNBvsugLjskmTdtg5tKbNltZVahjs189NMigfk5AAaQcqVXLs1076PjlUyFG5mlpVFy+YgRFyIuTIIpKPytUIjBFxpDMhxyKOI35F/PRHte+qUa0sVHRKQ+wblsoswGfEMPlAXTU1pJzo9XpiOPaihtYmiJpC1W1oIeVtkoJKPvm4z+FcGzNCg9YJZeQezi/Bkk6VeVYzMK/YaNJYsWaGRFiywLSFRKWfucVFlXVmzN3TmfFodN72EtacDV/ANVj96YJLBQumgCWQXbPkt0EOfMuXzqjwuTufKUDnRRjy4L2MVOPX+WbQ1mEOgsnHDZeHhu+bC1kOb2EJZoZfk22ia7WrcVyg1d9YkeJC4syDdrPWdaiyR2udCmtgz5KGLH7Ce/hO6TVv+rvdrB9v7GzPsGNmgwubws6lOcFfC0aRXu6OOmZfaH3lm0dbLnEUHF8HJnsASNkcKDTtMdic4iQsd5fH8ntbnenK0h6IDpoKKzhAdwjKTfl3qAKa/tXQ3N/QnIdGXg3N4IbmPDT3V0MzvKE5D83wUmh4uf2f8/Lu794P"), this.addDataEntry("sysml activity is control",300,60,"Is Control","zVTLboMwEPwaXyMCbaMeA0lzqlQpl/bowApbMjYymwD5+q7BQEgTKYdW6gFpd/bh8Qwyi5Ki2VleineTgWLRlkWJNQb7qGgSUIqFgcxYtGFhGNDHwrc71WVXDUpuQeMjA2E/cOLqCD2yTlEa3cMVtsrDAgsit1myKK4ELx1aNLnjvajaqlALWSVGozXUFddCIuxLnrq2mpoI40rmmtKUmIElwJ8MFqG5y76DPPUdmALQttTiB177ywW1zFD4AX/hQIDMhd/y4jFe9Xk+bpqkocCrc1up6IdSbBWn/sqrzQ/BIMth71NQB1NvJyC+ULOrUSyMlWdax52AFXKLa2u7iimBhIutOeoMHJvAjelsqGuj3U6npEy5WnuhDwbRFK61kfg5jFH85eLF83DMXp4dx2U4euKozxypzNGmMPtjHjDJguIoT/NVtyzwox9G0sYwaL3gV6YR1xzQN135Np76kJVPf2zl4MTcpps23jeN2LSjay6ZbKOl/860ZjDNu/bbJlI6vYp9++Wj+Q0="), this.addDataEntry("sysml activity is stream",300,60,"Is Stream","zVTLboMwEPwaXyMCbaMeA0lzqlQpl/bowAos2RjZmwD5+q7BQEgTKYdW6gFpd/bhYQbMokQ1O8Or4l1nIFm0ZVFitMY+Uk0CUrIwEBmLNiwMA3pY+HanuuyqQcUNlPjIQNgPnLg8Qo+sUxS67GGLrfRwgYrIbZYsim3BK4eqJne8F7a1Si6ETXSJRlNXXBcCYV/x1LXV1EQYlyIvKU2JGRgC/MlgEJq77DvIU9+BVoCmpRY/8Nq/XFCLDAs/4F84KEDkhd/y4jFu+zwfN03SUODVua1U9EMptootGuCKrTY/9IIsh71PQR50vZ2A+ELMrkZxoY04k4Dc6WeRG1wb01V0BaRbbPSxzMCRCdxYmQ31UpdupxNSpFyuvc4HjaiVa20Efg5jFH+5ePE8HLMXZ8dxGY6WOOozQ6w+mhRmH8wDHhmQHMVpvuqWA370QwvaGAat1/vKM+KaA/qmK9vGUx9y8ulvnRyMmLt008X7ntGf1I6muWRyjZb+O8+awTNv2m97SOl0J/btl1fmNw=="), this.addDataEntry("sysml activity is stream",300,60,"Is Stream","zVTJboMwEP0aXyMCbaUes58qVeKSHl0YYUtekJkEyNd3DCaQTcohhx6QZt4sfn7PgiUr3ewcL8WXzUGxZMOSlbMW+0g3K1CKxZHMWbJmcRzRx+Ltg+q8q0Yld2DwmYG4HzhydYAeWWQorenhClsVYIGayK3nLFlWgpce1U3hec+qttJqJqsUHXBNDbWQCGnJM99VUw9hXMnCUJoRMXAEhIPBITQPyXdQYL4DqwFdSy1h4LO/W1TLHEUYCPeNBMhChC0fAeNVnxfnTaMyFARx7guV3Ah1IxHkBaQhBfVr680ILCf6dTWKhXXyZA1y5UVF7nDhXFexJZBWS2cPJgdPIPJjJh/qxhq/ExqJ+6FK8Y+PZ+/DtlSePJV5fFbbM7zQurIHl8HFU3hCfgeKozxerronbhj9tpI2xlEbpLyyg7gWgKHpypHzqU+Z9PZ6k/wDlVln0cSABwYR0f00GQ2h2X9nRzPYEfx4tT2Ujj+yvn36n/sD"), @@ -7038,7 +7045,7 @@ this.createVertexTemplateEntry("shape=mxgraph.sysml.region;align=left;verticalAl this.addEntry("sysml state machine state machine",function(){var a=new mxCell("ReadAmountSM",new mxGeometry(0,0,160,120),"shape=mxgraph.sysml.stateMachine;verticalAlign=top;whiteSpace=wrap;align=center;");a.vertex=!0;var c=new mxCell("aborted",new mxGeometry(160,60,0,0),"resizable=0;html=1;verticalAlign=top;align=left;labelBackgroundColor=none;spacingLeft=5;spacingTop=-2;");c.geometry.relative=!1;c.setConnectable(!1);c.vertex=!0;a.insert(c);return e.createVertexTemplateFromCells([a],a.geometry.width, a.geometry.height,"State Machine")}),this.createVertexTemplateEntry("shape=mxgraph.sysml.x;",40,40,"","Terminate Node",null,null,this.getTagsForStencil("","x","sysml state machine terminate node").join(" ")),this.addEntry("sysml state machine submachine state",function(){var a=new mxCell("ReadAmount :\nReadAmountSM",new mxGeometry(0,0,160,120),"shape=mxgraph.sysml.submState;whiteSpace=wrap;align=center;");a.vertex=!0;var c=new mxCell("aborted",new mxGeometry(160,60,0,0),"resizable=0;html=1;verticalAlign=bottom;align=left;labelBackgroundColor=none;spacingLeft=5;spacingBottom=2;"); c.geometry.relative=!1;c.setConnectable(!1);c.vertex=!0;a.insert(c);return e.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,"Submachine State")}),this.createEdgeTemplateEntry("edgeStyle=none;html=1;endArrow=open;endSize=12;strokeWidth=3;verticalAlign=bottom;",160,0,"trigger[guard]/activity","Transition",null,this.getTagsForStencil("","","sysml state machine transition").join(" "))];this.addPalette("sysmlState Machines","SysML / State Machines",a||!1,mxUtils.bind(this,function(a){for(var b= -0;b<d.length;b++)a.appendChild(d[b](a))}))};Sidebar.prototype.addSysMLUseCasesPalette=function(a){var e=this,d=[this.createVertexTemplateEntry("shape=ellipse;html=1;strokeWidth=3;fontStyle=1;whiteSpace=wrap;align=center;",120,60,"UseCaseName","Use Case",null,null,this.getTagsForStencil("","","sysml use case use case").join(" ")),this.addEntry("sysml use case ",function(){var a=new mxCell("\nextension points\np1, p2",new mxGeometry(0,0,160,80),"html=1;shape=mxgraph.sysml.useCaseExtPt;whiteSpace=wrap;align=center;"); +0;b<d.length;b++)a.appendChild(d[b](a))}))};Sidebar.prototype.addSysMLUseCasesPalette=function(a){var e=this,d=[this.createVertexTemplateEntry("shape=ellipse;html=1;strokeWidth=3;fontStyle=1;whiteSpace=wrap;align=center;perimeter=ellipsePerimeter;",120,60,"UseCaseName","Use Case",null,null,this.getTagsForStencil("","","sysml use case use case").join(" ")),this.addEntry("sysml use case ",function(){var a=new mxCell("\nextension points\np1, p2",new mxGeometry(0,0,160,80),"html=1;shape=mxgraph.sysml.useCaseExtPt;whiteSpace=wrap;align=center;"); a.vertex=!0;var c=new mxCell("UseCaseName",new mxGeometry(80,17,0,0),"resizable=0;html=1;verticalAlign=middle;align=center;labelBackgroundColor=none;fontStyle=1;");c.geometry.relative=!1;c.setConnectable(!1);c.vertex=!0;a.insert(c);return e.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,"Use Case")}),this.createVertexTemplateEntry("shape=umlActor;html=1;verticalLabelPosition=bottom;verticalAlign=top;align=center;",30,60,"ActorName","Actor",null,null,this.getTagsForStencil("", "umlActor","sysml use case ").join(" ")),this.createVertexTemplateEntry("shape=rect;html=1;overflow=fill;html=1;whiteSpace=wrap;align=center;",80,40,'<p style="margin:0px;margin-top:4px;text-align:center;"><<actor>><br/><b>ActorName</b></p>',"Actor",null,null,this.getTagsForStencil("","","sysml use case ").join(" ")),this.createVertexTemplateEntry("shape=rect;html=1;verticalAlign=top;fontStyle=1;whiteSpace=wrap;align=center;",120,60,"SubjectName","Subject",null,null,this.getTagsForStencil("", "","sysml use case subject").join(" ")),this.createEdgeTemplateEntry("edgeStyle=none;html=1;endArrow=none;verticalAlign=bottom;",160,0,"","Communication Path",null,this.getTagsForStencil("","","sysml use case communication path").join(" ")),this.createEdgeTemplateEntry("edgeStyle=none;html=1;endArrow=open;verticalAlign=bottom;dashed=1;labelBackgroundColor=none;",160,0,"<<include>>","Include",null,this.getTagsForStencil("","","sysml use case include").join(" ")),this.createEdgeTemplateEntry("edgeStyle=none;html=1;startArrow=open;endArrow=none;startSize=12;verticalAlign=bottom;dashed=1;labelBackgroundColor=none;", @@ -7418,353 +7425,354 @@ this.getTagsForStencil("mxgraph.weblogos","xanga","web logos logo").join(" ")),t 74.4,43.6,"","Yahoo",null,null,this.getTagsForStencil("mxgraph.weblogos","yahoo","web logos logo").join(" ")),this.createVertexTemplateEntry(a+"yahoo_2;fillColor=#65106E;strokeColor=none",80,46.6,"","Yahoo",null,null,this.getTagsForStencil("mxgraph.weblogos","yahoo","web logos logo").join(" ")),this.createVertexTemplateEntry(a+"yammer;fillColor=#0093BE;strokeColor=none",.2*348,59.6,"","Yammer",null,null,this.getTagsForStencil("mxgraph.weblogos","yammer","web logos logo").join(" ")),this.createVertexTemplateEntry(a+ "yandex",31.8,66.4,"","Yandex",null,null,this.getTagsForStencil("mxgraph.weblogos","yandex","web logos logo").join(" ")),this.createVertexTemplateEntry(a+"yelp;fillColor=#C41200;strokeColor=none",.2*317,83,"","Yelp",null,null,this.getTagsForStencil("mxgraph.weblogos","yelp","web logos logo").join(" ")),this.createVertexTemplateEntry(a+"yoolink",79.2,79.2,"","Yoolink",null,null,this.getTagsForStencil("mxgraph.weblogos","yoolink","web logos logo").join(" ")),this.createVertexTemplateEntry(a+"youmob", 76,76.2,"","Youmob",null,null,this.getTagsForStencil("mxgraph.weblogos","youmob","web logos logo").join(" ")),this.createVertexTemplateEntry(a+"youtube;fillColor=#FF2626;gradientColor=#B5171F",.2*786,65.8,"","Youtube",null,null,this.getTagsForStencil("mxgraph.weblogos","youtube","web logos logo").join(" ")),this.createVertexTemplateEntry(a+"youtube_2;fillColor=#FF2626;gradientColor=#B5171F",.2*232,32.6,"","Youtube",null,null,this.getTagsForStencil("mxgraph.weblogos","youtube","web logos logo").join(" "))])}})(); -DrawioFile=function(a,c){mxEventSource.call(this);this.ui=a;this.shadowData=this.data=c||"";this.stats={joined:0,merged:0,lastMerge:0,lastMergeTime:0,lastOpenTime:0,emptyPrefix:!1,shadowState:0,opened:0,closed:0,destroyed:0,fileMerged:0,fileSaved:0,reload:0,checksumErrors:0,bytesSent:0,bytesReceived:0,msgSent:0,msgReceived:0,cacheHits:0,cacheMiss:0,cacheFail:0,conflicts:0,timeouts:0}};DrawioFile.SYNC=urlParams.sync||"auto";DrawioFile.LAST_WRITE_WINS=!0;mxUtils.extend(DrawioFile,mxEventSource); -DrawioFile.prototype.allChangesSavedKey="allChangesSaved";DrawioFile.prototype.autosaveDelay=1500;DrawioFile.prototype.maxAutosaveDelay=3E4;DrawioFile.prototype.autosaveThread=null;DrawioFile.prototype.lastAutosave=null;DrawioFile.prototype.modified=!1;DrawioFile.prototype.data=null;DrawioFile.prototype.shadowData=null;DrawioFile.prototype.shadowPages=null;DrawioFile.prototype.changeListenerEnabled=!0;DrawioFile.prototype.lastAutosaveRevision=null;DrawioFile.prototype.maxAutosaveRevisionDelay=18E5; -DrawioFile.prototype.inConflictState=!1;DrawioFile.prototype.invalidChecksum=!1;DrawioFile.prototype.reportEnabled=!0;DrawioFile.prototype.getSize=function(){return null!=this.data?this.data.length:0};DrawioFile.prototype.synchronizeFile=function(a,c){this.savingFile?null!=c&&c({message:mxResources.get("busy")}):null!=this.sync?this.sync.fileChanged(a,c):this.updateFile(a,c)}; -DrawioFile.prototype.updateFile=function(a,c,b,f){null!=b&&b()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=c&&c(e):this.getLatestVersion(mxUtils.bind(this,function(k){try{null!=b&&b()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=c&&c(e):null!=k?this.mergeFile(k,a,c,f):this.reloadFile(a,c))}catch(h){null!=c&&c(h)}}),c))}; -DrawioFile.prototype.mergeFile=function(a,c,b,f){try{this.stats.fileMerged++;var k=null!=this.shadowPages?this.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.shadowData).documentElement),h=this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement);if(null!=h&&0<h.length){this.shadowPages=h;this.backupPatch=this.isModified()?this.ui.diffPages(k,this.ui.pages):null;var l=[this.ui.diffPages(null!=f?f:k,this.shadowPages)];if(this.ignorePatches(l))this.stats.shadowState=this.ui.hashValue(a.getCurrentEtag()); -else{var t=this.ui.patchPages(k,l[0]);this.stats.shadowState=this.ui.hashValue(a.getCurrentEtag());f={};var p=this.ui.getHashValueForPages(t,f),k={},d=this.ui.getHashValueForPages(this.shadowPages,k);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",l,"checksum",d==p,p);if(null!=p&&p!=d){var g=this.compressReportData(this.getAnonymizedXmlForPages(t));this.checksumError(b,l,(null!=f?"Details: "+JSON.stringify(f):"")+"\nChecksum: "+p+"\nCurrent: "+d+(null!= -k?"\nCurrent Details: "+JSON.stringify(k):"")+"\nPatched:\n"+g);return}this.patch(l,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(a.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=c&&c()}catch(n){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=b&&b(n);try{this.sendErrorReport("Error in mergeFile",null,n)}catch(q){}}}; -DrawioFile.prototype.getAnonymizedXmlForPages=function(a){var c=new mxCodec(mxUtils.createXmlDocument()),b=c.document.createElement("mxfile");if(null!=a)for(var f=0;f<a.length;f++){var k=c.encode(new mxGraphModel(a[f].root));"1"!=urlParams.dev&&(k=this.ui.anonymizeNode(k,!0));k.setAttribute("id",a[f].getId());a[f].viewState&&this.ui.editor.graph.saveViewState(a[f].viewState,k,!0);b.appendChild(k)}return mxUtils.getPrettyXml(b)}; -DrawioFile.prototype.compressReportData=function(a,c,b){null!=a&&a.length>(null!=c?c:1E4)&&(a=this.ui.editor.graph.compress(a)+"\n");null!=b&&null!=a&&a.length>b&&(a=a.substring(0,b)+"[...]");return a}; -DrawioFile.prototype.checksumError=function(a,c,b,f){this.stats.checksumErrors++;this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=this.sync&&this.sync.updateOnlineState();null!=a&&a();try{if(null!=c)for(a=0;a<c.length;a++)this.ui.anonymizePatch(c[a]);var k=Error(),h=mxUtils.bind(this,function(a){var f=this.compressReportData(JSON.stringify(c,null,2));a=null!=a?this.compressReportData(this.getAnonymizedXmlForPages(this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement)), -25E3):"n/a";this.sendErrorReport("Checksum Error",(null!=b?b:"")+"\n\nPatches:\n"+f+(null!=a?"\n\nMaster:\n"+a:""),k,7E4)});null==f?h(null):this.getLatestVersion(mxUtils.bind(this,function(a){null!=a&&a.getCurrentEtag()==f?h(a):h(null)}),function(){})}catch(l){}}; -DrawioFile.prototype.sendErrorReport=function(a,c,b,f){try{var k=this.compressReportData(this.getAnonymizedXmlForPages(this.shadowPages),25E3),h=this.getCurrentUser(),l=null!=h?this.ui.hashValue(h.id):"unknown",t=null!=this.sync?this.sync.clientId:"no sync";null!=this.stats.start&&(this.stats.uptime=Math.round(((new Date).getTime()-(new Date(this.stats.start)).getTime())/1E3));var p=this.getTitle(),d=p.lastIndexOf("."),h="xml";0<d&&(h=p.substring(d));var g=null!=b?b.stack:Error().stack;EditorUi.sendReport(a+ -" "+(new Date).toISOString()+":\n\nBrowser="+navigator.userAgent+"\nFile="+this.ui.hashValue(this.getId())+" ("+this.getMode()+")"+(this.isModified()?" modified":"")+"\nSize/Type="+this.getSize()+" ("+h+")\nUser="+l+" ("+t+")\nPlugins="+(null!=mxSettings.settings?mxSettings.getPlugins():"null")+"\nSync="+DrawioFile.SYNC+(null!=b?"\nError="+b:"")+"\n\nStats:\n"+JSON.stringify(this.stats,null,2)+(null!=c?"\n\n"+c:"")+"\n\nShadow:\n"+k+"\n\nStack:\n"+g,f)}catch(n){}}; -DrawioFile.prototype.reloadFile=function(a,c){try{this.ui.spinner.stop();var b=mxUtils.bind(this,function(){this.stats.reload++;this.reportEnabled=!1;var b=this.ui.editor.graph.getViewState(),c=this.ui.editor.graph.getSelectionCells(),h=this.ui.currentPage;this.ui.loadFile(this.getHash(),!0,null,mxUtils.bind(this,function(){if(null==this.ui.fileLoadedError){this.ui.restoreViewState(h,b,c);null!=this.backupPatch&&this.patch([this.backupPatch]);var f=this.ui.getCurrentFile();null!=f&&(f.stats=this.stats); -null!=a&&a()}}),!0)});this.isModified()&&null==this.backupPatch?this.ui.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){this.handleFileSuccess("manual"==DrawioFile.SYNC)}),b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()}catch(f){null!=c&&c(f)}};DrawioFile.prototype.copyFile=function(a,c){this.ui.editor.editAsNew(this.ui.getFileData(!0),this.ui.getCopyFilename(this))}; -DrawioFile.prototype.ignorePatches=function(a){for(var c=!0,b=0;b<a.length&&c;b++)c=c&&0==Object.keys(a[b]).length;return c}; -DrawioFile.prototype.patch=function(a,c){var b=this.ui.editor.undoManager,f=b.history.slice(),k=b.indexOfNextAdd,h=this.ui.editor.graph;h.container.style.visibility="hidden";var l=this.changeListenerEnabled;this.changeListenerEnabled=!1;var t=h.foldingEnabled,p=h.mathEnabled,d=h.cellRenderer.redraw;h.cellRenderer.redraw=function(a){a.view.graph.isEditing(a.cell)&&(a.view.graph.scrollCellToVisible(a.cell),a.view.graph.cellEditor.resize());d.apply(this,arguments)};h.model.beginUpdate();try{for(var g= -0;g<a.length;g++)this.ui.pages=this.ui.patchPages(this.ui.pages,a[g],!0,c,this.isModified());0==this.ui.pages.length&&this.ui.pages.push(this.ui.createPage());0>mxUtils.indexOf(this.ui.pages,this.ui.currentPage)&&this.ui.selectPage(this.ui.pages[0],!0)}finally{h.model.endUpdate();h.container.style.visibility="";h.cellRenderer.redraw=d;this.changeListenerEnabled=l;b.history=f;b.indexOfNextAdd=k;b.fireEvent(new mxEventObject(mxEvent.CLEAR));if(null==this.ui.currentPage||this.ui.currentPage.needsUpdate)p!= -h.mathEnabled?(this.ui.editor.updateGraphComponents(),h.refresh()):(t!=h.foldingEnabled?h.view.revalidate():h.view.validate(),h.sizeDidChange()),null!=this.ui.format&&h.isSelectionEmpty()&&this.ui.format.refresh();this.ui.updateTabContainer()}}; -DrawioFile.prototype.save=function(a,c,b,f,k,h){if(this.isEditable())if(!k&&this.invalidChecksum)if(null!=b)b({message:mxResources.get("checksum")});else throw Error(mxResources.get("checksum"));else this.updateFileData(),this.clearAutosave();else if(null!=b)b({message:mxResources.get("readOnly")});else throw Error(mxResources.get("readOnly"));};DrawioFile.prototype.updateFileData=function(){this.setData(this.ui.getFileData(null,null,null,null,null,null,null,null,this))}; -DrawioFile.prototype.saveAs=function(a,c,b){};DrawioFile.prototype.saveFile=function(a,c,b,f){};DrawioFile.prototype.getPublicUrl=function(a){a(null)};DrawioFile.prototype.isRestricted=function(){return!1};DrawioFile.prototype.isModified=function(){return this.modified};DrawioFile.prototype.setModified=function(a){this.modified=a};DrawioFile.prototype.isAutosaveOptional=function(){return!1};DrawioFile.prototype.isAutosave=function(){return!this.inConflictState&&this.ui.editor.autosave}; -DrawioFile.prototype.isRenamable=function(){return!1};DrawioFile.prototype.rename=function(a,c,b){};DrawioFile.prototype.isMovable=function(){return!1};DrawioFile.prototype.move=function(a,c,b){};DrawioFile.prototype.getHash=function(){return""};DrawioFile.prototype.getId=function(){return""};DrawioFile.prototype.isEditable=function(){return!this.ui.editor.isChromelessView()||this.ui.editor.editable};DrawioFile.prototype.getUi=function(){return this.ui};DrawioFile.prototype.getTitle=function(){return""}; -DrawioFile.prototype.setData=function(a){this.data=a};DrawioFile.prototype.getData=function(){return this.data};DrawioFile.prototype.open=function(){this.stats.opened++;this.stats.lastOpenTime=(new Date).toISOString();var a=this.getData();null!=a?(this.ui.setFileData(a),this.isModified()||(this.shadowData=mxUtils.getXml(this.ui.getXmlFileData()),this.shadowPages=null)):this.sendErrorReport("Error in open","Data was null");this.installListeners();this.isSyncSupported()&&this.startSync()}; -DrawioFile.prototype.isSyncSupported=function(){return!1};DrawioFile.prototype.isRevisionHistorySupported=function(){return!1};DrawioFile.prototype.getRevisions=function(a,c){a(null)};DrawioFile.prototype.loadDescriptor=function(a,c){a(null)};DrawioFile.prototype.loadPatchDescriptor=function(a,c){this.loadDescriptor(mxUtils.bind(this,function(b){a(b)}),c)}; -DrawioFile.prototype.startSync=function(){"auto"!=DrawioFile.SYNC||"1"==urlParams.stealth||"1"!=urlParams.rt&&this.ui.editor.chromeless&&!this.ui.editor.editable||(null==this.sync&&(this.sync=new DrawioFileSync(this)),this.sync.start())};DrawioFile.prototype.isConflict=function(){return!1};DrawioFile.prototype.getChannelId=function(){return this.ui.editor.graph.compress(this.getHash()).replace(/[\/ +]/g,"_")};DrawioFile.prototype.getChannelKey=function(a){return null}; -DrawioFile.prototype.getCurrentUser=function(){return null};DrawioFile.prototype.getLatestVersion=function(a,c){a(null)};DrawioFile.prototype.getLastModifiedDate=function(){return new Date};DrawioFile.prototype.setCurrentEtag=function(a){this.setDescriptorEtag(this.getDescriptor(),a)};DrawioFile.prototype.getCurrentEtag=function(){return this.getDescriptorEtag(this.getDescriptor())};DrawioFile.prototype.getDescriptor=function(){return null};DrawioFile.prototype.setDescriptor=function(){}; -DrawioFile.prototype.setDescriptorEtag=function(a,c){};DrawioFile.prototype.getDescriptorEtag=function(a){return null};DrawioFile.prototype.getDescriptorSecret=function(a){return null}; -DrawioFile.prototype.installListeners=function(){null==this.changeListener&&(this.changeListener=mxUtils.bind(this,function(a,c){var b=null!=c?c.getProperty("edit"):null;!this.changeListenerEnabled||!this.isEditable()||null!=b&&b.ignoreEdit||this.fileChanged()}),this.ui.editor.graph.model.addListener(mxEvent.CHANGE,this.changeListener),this.ui.editor.graph.addListener("gridSizeChanged",this.changeListener),this.ui.editor.graph.addListener("shadowVisibleChanged",this.changeListener),this.ui.addListener("pageFormatChanged", +DrawioFile=function(b,c){mxEventSource.call(this);this.ui=b;this.shadowData=this.data=c||"";this.shadowPages=null;this.stats={opened:0,merged:0,fileMerged:0,fileReloaded:0,conflicts:0,timeouts:0,saved:0,closed:0,destroyed:0,joined:0,checksumErrors:0,bytesSent:0,bytesReceived:0,msgSent:0,msgReceived:0,cacheHits:0,cacheMiss:0,cacheFail:0}};DrawioFile.SYNC=urlParams.sync||"auto";DrawioFile.LAST_WRITE_WINS=!0;mxUtils.extend(DrawioFile,mxEventSource);DrawioFile.prototype.allChangesSavedKey="allChangesSaved"; +DrawioFile.prototype.autosaveDelay=1500;DrawioFile.prototype.maxAutosaveDelay=3E4;DrawioFile.prototype.autosaveThread=null;DrawioFile.prototype.lastAutosave=null;DrawioFile.prototype.modified=!1;DrawioFile.prototype.data=null;DrawioFile.prototype.shadowData=null;DrawioFile.prototype.shadowPages=null;DrawioFile.prototype.changeListenerEnabled=!0;DrawioFile.prototype.lastAutosaveRevision=null;DrawioFile.prototype.maxAutosaveRevisionDelay=18E5;DrawioFile.prototype.inConflictState=!1; +DrawioFile.prototype.invalidChecksum=!1;DrawioFile.prototype.errorReportsEnabled=!1;DrawioFile.prototype.reportEnabled=!0;DrawioFile.prototype.getSize=function(){return null!=this.data?this.data.length:0};DrawioFile.prototype.synchronizeFile=function(b,c){this.savingFile?null!=c&&c({message:mxResources.get("busy")}):null!=this.sync?this.sync.fileChanged(b,c):this.updateFile(b,c)}; +DrawioFile.prototype.updateFile=function(b,c,a,e){null!=a&&a()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=c&&c():this.getLatestVersion(mxUtils.bind(this,function(k){try{null!=a&&a()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=c&&c():null!=k?this.mergeFile(k,b,c,e):this.reloadFile(b,c))}catch(f){null!=c&&c(f)}}),c))}; +DrawioFile.prototype.mergeFile=function(b,c,a,e){var k=!0;try{this.stats.fileMerged++;var f=null!=this.shadowPages?this.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.shadowData).documentElement),l=this.ui.getPagesForNode(mxUtils.parseXml(b.data).documentElement);if(null!=l&&0<l.length){this.shadowPages=l;this.backupPatch=this.isModified()?this.ui.diffPages(f,this.ui.pages):null;var q=[this.ui.diffPages(null!=e?e:f,this.shadowPages)];if(!this.ignorePatches(q)){var p=this.ui.patchPages(f, +q[0]);e={};var u=this.ui.getHashValueForPages(p,e),f={},d=this.ui.getHashValueForPages(this.shadowPages,f);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",q,"checksum",d==u,u);if(null!=u&&u!=d){var g=this.compressReportData(this.getAnonymizedXmlForPages(l)),m=this.compressReportData(this.getAnonymizedXmlForPages(p)),v=this.ui.hashValue(b.getCurrentEtag()),t=this.ui.hashValue(this.getCurrentEtag());this.checksumError(a,q,"Shadow Details: "+JSON.stringify(e)+ +"\nChecksum: "+u+"\nCurrent: "+d+"\nCurrent Details: "+JSON.stringify(f)+"\nFrom: "+v+"\nTo: "+t+"\n\nFile Data:\n"+g+"\nPatched Shadow:\n"+m,null,"mergeFile");return}this.patch(q,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw k=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(b.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=c&&c()}catch(y){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged(); +null!=a&&a(y);try{this.errorReportsEnabled&&k&&this.sendErrorReport("Error in mergeFile",null,y)}catch(B){}}};DrawioFile.prototype.getAnonymizedXmlForPages=function(b){var c=new mxCodec(mxUtils.createXmlDocument()),a=c.document.createElement("mxfile");if(null!=b)for(var e=0;e<b.length;e++){var k=c.encode(new mxGraphModel(b[e].root));"1"!=urlParams.dev&&(k=this.ui.anonymizeNode(k,!0));k.setAttribute("id",b[e].getId());b[e].viewState&&this.ui.editor.graph.saveViewState(b[e].viewState,k,!0);a.appendChild(k)}return mxUtils.getPrettyXml(a)}; +DrawioFile.prototype.compressReportData=function(b,c,a){c=null!=c?c:1E4;null!=a&&null!=b&&b.length>a?b=b.substring(0,a)+"[...]":null!=b&&b.length>c&&(b=this.ui.editor.graph.compress(b)+"\n");return b}; +DrawioFile.prototype.checksumError=function(b,c,a,e,k){this.stats.checksumErrors++;this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=this.sync&&this.sync.updateOnlineState();null!=b&&b();try{if(this.errorReportsEnabled){if(null!=c)for(b=0;b<c.length;b++)this.ui.anonymizePatch(c[b]);var f=mxUtils.bind(this,function(b){var e=this.compressReportData(JSON.stringify(c,null,2));b=null!=b?this.compressReportData(this.getAnonymizedXmlForPages(this.ui.getPagesForNode(mxUtils.parseXml(b.data).documentElement)), +25E3):"n/a";this.sendErrorReport("Checksum Error in "+k,(null!=a?a:"")+"\n\nPatches:\n"+e+(null!=b?"\n\nRemote:\n"+b:""),null,7E4)});null==e?f(null):this.getLatestVersion(mxUtils.bind(this,function(b){null!=b&&b.getCurrentEtag()==e?f(b):f(null)}),function(){})}}catch(l){}}; +DrawioFile.prototype.sendErrorReport=function(b,c,a,e){try{var k=this.compressReportData(this.getAnonymizedXmlForPages(this.shadowPages),25E3),f=this.compressReportData(this.getAnonymizedXmlForPages(this.ui.pages),25E3),l=this.getCurrentUser(),q=null!=l?this.ui.hashValue(l.id):"unknown",p=null!=this.sync?this.sync.clientId:"no sync",u=this.getTitle(),d=u.lastIndexOf("."),l="xml";0<d&&(l=u.substring(d));var g=null!=a?a.stack:Error().stack;EditorUi.sendReport(b+" "+(new Date).toISOString()+":\n\nBrowser="+ +navigator.userAgent+"\nFile="+this.ui.hashValue(this.getId())+" ("+this.getMode()+")"+(this.isModified()?" modified":"")+"\nSize/Type="+this.getSize()+" ("+l+")\nUser="+q+" ("+p+")\nPrefix="+this.ui.editor.graph.model.prefix+"\nSync="+DrawioFile.SYNC+(null!=this.sync?(this.sync.enabled?" enabled":"")+(this.sync.isConnected()?" connected":""):"")+"\nPlugins="+(null!=mxSettings.settings?mxSettings.getPlugins():"null")+"\n\nStats:\n"+JSON.stringify(this.stats,null,2)+(null!=c?"\n\n"+c:"")+(null!=a?"\n\nError: "+ +a.message:"")+"\n\nStack:\n"+g+"\n\nShadow:\n"+k+"\n\nData:\n"+f,e)}catch(m){}}; +DrawioFile.prototype.reloadFile=function(b,c){try{this.ui.spinner.stop();var a=mxUtils.bind(this,function(){this.stats.fileReloaded++;this.reportEnabled=!1;var a=this.ui.editor.graph.getViewState(),c=this.ui.editor.graph.getSelectionCells(),f=this.ui.currentPage;this.ui.loadFile(this.getHash(),!0,null,mxUtils.bind(this,function(){if(null==this.ui.fileLoadedError){this.ui.restoreViewState(f,a,c);null!=this.backupPatch&&this.patch([this.backupPatch]);var e=this.ui.getCurrentFile();null!=e&&(e.stats= +this.stats);null!=b&&b()}}),!0)});this.isModified()&&null==this.backupPatch?this.ui.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){this.handleFileSuccess("manual"==DrawioFile.SYNC)}),a,mxResources.get("cancel"),mxResources.get("discardChanges")):a()}catch(e){null!=c&&c(e)}};DrawioFile.prototype.copyFile=function(b,c){this.ui.editor.editAsNew(this.ui.getFileData(!0),this.ui.getCopyFilename(this))}; +DrawioFile.prototype.ignorePatches=function(b){for(var c=!0,a=0;a<b.length&&c;a++)c=c&&0==Object.keys(b[a]).length;return c}; +DrawioFile.prototype.patch=function(b,c){var a=this.ui.editor.undoManager,e=a.history.slice(),k=a.indexOfNextAdd,f=this.ui.editor.graph;f.container.style.visibility="hidden";var l=this.changeListenerEnabled;this.changeListenerEnabled=!1;var q=f.foldingEnabled,p=f.mathEnabled,u=f.cellRenderer.redraw;f.cellRenderer.redraw=function(b){b.view.graph.isEditing(b.cell)&&(b.view.graph.scrollCellToVisible(b.cell),b.view.graph.cellEditor.resize());u.apply(this,arguments)};f.model.beginUpdate();try{for(var d= +0;d<b.length;d++)this.ui.pages=this.ui.patchPages(this.ui.pages,b[d],!0,c,this.isModified());0==this.ui.pages.length&&this.ui.pages.push(this.ui.createPage());0>mxUtils.indexOf(this.ui.pages,this.ui.currentPage)&&this.ui.selectPage(this.ui.pages[0],!0)}finally{f.container.style.visibility="";f.model.endUpdate();f.cellRenderer.redraw=u;this.changeListenerEnabled=l;a.history=e;a.indexOfNextAdd=k;a.fireEvent(new mxEventObject(mxEvent.CLEAR));if(null==this.ui.currentPage||this.ui.currentPage.needsUpdate)p!= +f.mathEnabled?(this.ui.editor.updateGraphComponents(),f.refresh()):(q!=f.foldingEnabled?f.view.revalidate():f.view.validate(),f.sizeDidChange());this.ui.updateTabContainer()}}; +DrawioFile.prototype.save=function(b,c,a,e,k,f){if(this.isEditable())if(!k&&this.invalidChecksum)if(null!=a)a({message:mxResources.get("checksum")});else throw Error(mxResources.get("checksum"));else this.updateFileData(),this.clearAutosave();else if(null!=a)a({message:mxResources.get("readOnly")});else throw Error(mxResources.get("readOnly"));};DrawioFile.prototype.updateFileData=function(){this.setData(this.ui.getFileData(null,null,null,null,null,null,null,null,this))}; +DrawioFile.prototype.saveAs=function(b,c,a){};DrawioFile.prototype.saveFile=function(b,c,a,e){};DrawioFile.prototype.getPublicUrl=function(b){b(null)};DrawioFile.prototype.isRestricted=function(){return!1};DrawioFile.prototype.isModified=function(){return this.modified};DrawioFile.prototype.setModified=function(b){this.modified=b};DrawioFile.prototype.isAutosaveOptional=function(){return!1};DrawioFile.prototype.isAutosave=function(){return!this.inConflictState&&this.ui.editor.autosave}; +DrawioFile.prototype.isRenamable=function(){return!1};DrawioFile.prototype.rename=function(b,c,a){};DrawioFile.prototype.isMovable=function(){return!1};DrawioFile.prototype.move=function(b,c,a){};DrawioFile.prototype.getHash=function(){return""};DrawioFile.prototype.getId=function(){return""};DrawioFile.prototype.isEditable=function(){return!this.ui.editor.isChromelessView()||this.ui.editor.editable};DrawioFile.prototype.getUi=function(){return this.ui};DrawioFile.prototype.getTitle=function(){return""}; +DrawioFile.prototype.setData=function(b){this.data=b};DrawioFile.prototype.getData=function(){return this.data};DrawioFile.prototype.open=function(){this.stats.opened++;var b=this.getData();null!=b&&(this.ui.setFileData(b),this.isModified()||(this.shadowData=mxUtils.getXml(this.ui.getXmlFileData()),this.shadowPages=null));this.installListeners();this.isSyncSupported()&&this.startSync()};DrawioFile.prototype.isSyncSupported=function(){return!1};DrawioFile.prototype.isRevisionHistorySupported=function(){return!1}; +DrawioFile.prototype.getRevisions=function(b,c){b(null)};DrawioFile.prototype.loadDescriptor=function(b,c){b(null)};DrawioFile.prototype.loadPatchDescriptor=function(b,c){this.loadDescriptor(mxUtils.bind(this,function(a){b(a)}),c)};DrawioFile.prototype.startSync=function(){"auto"!=DrawioFile.SYNC||"1"==urlParams.stealth||"1"!=urlParams.rt&&this.ui.editor.chromeless&&!this.ui.editor.editable||(null==this.sync&&(this.sync=new DrawioFileSync(this)),this.sync.start())}; +DrawioFile.prototype.isConflict=function(){return!1};DrawioFile.prototype.getChannelId=function(){return this.ui.editor.graph.compress(this.getHash()).replace(/[\/ +]/g,"_")};DrawioFile.prototype.getChannelKey=function(b){return null};DrawioFile.prototype.getCurrentUser=function(){return null};DrawioFile.prototype.getLatestVersion=function(b,c){b(null)};DrawioFile.prototype.getLastModifiedDate=function(){return new Date}; +DrawioFile.prototype.setCurrentEtag=function(b){this.setDescriptorEtag(this.getDescriptor(),b)};DrawioFile.prototype.getCurrentEtag=function(){return this.getDescriptorEtag(this.getDescriptor())};DrawioFile.prototype.getDescriptor=function(){return null};DrawioFile.prototype.setDescriptor=function(){};DrawioFile.prototype.setDescriptorEtag=function(b,c){};DrawioFile.prototype.getDescriptorEtag=function(b){return null};DrawioFile.prototype.getDescriptorSecret=function(b){return null}; +DrawioFile.prototype.installListeners=function(){null==this.changeListener&&(this.changeListener=mxUtils.bind(this,function(b,c){var a=null!=c?c.getProperty("edit"):null;!this.changeListenerEnabled||!this.isEditable()||null!=a&&a.ignoreEdit||this.fileChanged()}),this.ui.editor.graph.model.addListener(mxEvent.CHANGE,this.changeListener),this.ui.editor.graph.addListener("gridSizeChanged",this.changeListener),this.ui.editor.graph.addListener("shadowVisibleChanged",this.changeListener),this.ui.addListener("pageFormatChanged", this.changeListener),this.ui.addListener("pageScaleChanged",this.changeListener),this.ui.addListener("backgroundColorChanged",this.changeListener),this.ui.addListener("backgroundImageChanged",this.changeListener),this.ui.addListener("foldingEnabledChanged",this.changeListener),this.ui.addListener("mathEnabledChanged",this.changeListener),this.ui.addListener("gridEnabledChanged",this.changeListener),this.ui.addListener("guidesEnabledChanged",this.changeListener),this.ui.addListener("pageViewChanged", -this.changeListener))};DrawioFile.prototype.addAllSavedStatus=function(a){null!=this.ui.statusContainer&&this.ui.getCurrentFile()==this&&(a=null!=a?a:mxUtils.htmlEntities(mxResources.get(this.allChangesSavedKey)),this.ui.editor.setStatus('<div title="'+a+'">'+a+"</div>"),a=this.ui.statusContainer.getElementsByTagName("div"),0<a.length&&this.isRevisionHistorySupported()&&(a[0].style.cursor="pointer",a[0].style.textDecoration="underline",mxEvent.addListener(a[0],"click",mxUtils.bind(this,function(){this.ui.actions.get("revisionHistory").funct()}))))}; -DrawioFile.prototype.addUnsavedStatus=function(a){if(!this.inConflictState&&null!=this.ui.statusContainer&&this.ui.getCurrentFile()==this)if(a instanceof Error&&null!=a.message&&""!=a.message){var c=mxUtils.htmlEntities(mxResources.get("unsavedChanges"));this.ui.editor.setStatus('<div title="'+c+'" class="geStatusAlert" style="overflow:hidden;">'+c+" ("+mxUtils.htmlEntities(a.message)+")</div>")}else c=this.getErrorMessage(a),null!=c&&60<c.length&&(c=c.substring(0,60)+"..."),c=mxUtils.htmlEntities(mxResources.get("unsavedChangesClickHereToSave"))+ +this.changeListener))};DrawioFile.prototype.addAllSavedStatus=function(b){null!=this.ui.statusContainer&&this.ui.getCurrentFile()==this&&(b=null!=b?b:mxUtils.htmlEntities(mxResources.get(this.allChangesSavedKey)),this.ui.editor.setStatus('<div title="'+b+'">'+b+"</div>"),b=this.ui.statusContainer.getElementsByTagName("div"),0<b.length&&this.isRevisionHistorySupported()&&(b[0].style.cursor="pointer",b[0].style.textDecoration="underline",mxEvent.addListener(b[0],"click",mxUtils.bind(this,function(){this.ui.actions.get("revisionHistory").funct()}))))}; +DrawioFile.prototype.addUnsavedStatus=function(b){if(!this.inConflictState&&null!=this.ui.statusContainer&&this.ui.getCurrentFile()==this)if(b instanceof Error&&null!=b.message&&""!=b.message){var c=mxUtils.htmlEntities(mxResources.get("unsavedChanges"));this.ui.editor.setStatus('<div title="'+c+'" class="geStatusAlert" style="overflow:hidden;">'+c+" ("+mxUtils.htmlEntities(b.message)+")</div>")}else c=this.getErrorMessage(b),null!=c&&60<c.length&&(c=c.substring(0,60)+"..."),c=mxUtils.htmlEntities(mxResources.get("unsavedChangesClickHereToSave"))+ (null!=c&&""!=c?" ("+mxUtils.htmlEntities(c)+")":""),this.ui.editor.setStatus('<div title="'+c+'" class="geStatusAlert" style="cursor:pointer;overflow:hidden;">'+c+"</div>"),c=this.ui.statusContainer.getElementsByTagName("div"),null!=c&&0<c.length?mxEvent.addListener(c[0],"click",mxUtils.bind(this,function(){this.ui.actions.get(null!=this.ui.mode&&this.isEditable()?"save":"saveAs").funct()})):(c=mxUtils.htmlEntities(mxResources.get("unsavedChanges")),this.ui.editor.setStatus('<div title="'+c+'" class="geStatusAlert" style="overflow:hidden;">'+ -c+" ("+mxUtils.htmlEntities(a.message)+")</div>"))}; -DrawioFile.prototype.addConflictStatus=function(a,c){this.invalidChecksum&&null==c&&(c=mxResources.get("checksum"));this.setConflictStatus(mxUtils.htmlEntities(mxResources.get("fileChangedSync"))+(null!=c&&""!=c?" ("+mxUtils.htmlEntities(c)+")":""));this.ui.spinner.stop();this.clearAutosave();var b=null!=this.ui.statusContainer?this.ui.statusContainer.getElementsByTagName("div"):null;null!=b&&0<b.length?mxEvent.addListener(b[0],"click",mxUtils.bind(this,function(b){"IMG"!=mxEvent.getSource(b).nodeName&& -a()})):this.ui.alert(mxUtils.htmlEntities(mxResources.get("fileChangedSync")),a)};DrawioFile.prototype.setConflictStatus=function(a){this.ui.editor.setStatus('<div title="'+a+'" class="geStatusAlert geBlink" style="cursor:pointer;overflow:hidden;">'+a+' <a href="https://desk.draw.io/support/solutions/articles/16000087947" target="_blank"><img border="0" style="margin-left:2px;cursor:help;opacity:0.5;width:16px;height:16px;" valign="bottom" src="'+Editor.helpImage+'" style=""/></a></div>')}; -DrawioFile.prototype.showRefreshDialog=function(a,c,b){null==b&&(b=mxResources.get("checksum"));this.ui.editor.isChromelessView()&&!this.ui.editor.editable?this.ui.alert(mxResources.get("fileChangedSync"),mxUtils.bind(this,function(){this.reloadFile(a,c)})):(this.addConflictStatus(mxUtils.bind(this,function(){this.showRefreshDialog(a,c)}),b),this.ui.showError(mxResources.get("error")+" ("+b+")",mxResources.get("fileChangedSyncDialog"),mxResources.get("makeCopy"),mxUtils.bind(this,function(){this.copyFile(a, -c)}),null,mxResources.get("synchronize"),mxUtils.bind(this,function(){this.reloadFile(a,c)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.ui.hideDialog()}),360,150))}; -DrawioFile.prototype.showCopyDialog=function(a,c,b){this.invalidChecksum=this.inConflictState=!1;this.addUnsavedStatus();this.ui.showError(mxResources.get("externalChanges"),mxResources.get("fileChangedOverwriteDialog"),mxResources.get("makeCopy"),mxUtils.bind(this,function(){this.copyFile(a,c)}),null,mxResources.get("overwrite"),b,mxResources.get("cancel"),mxUtils.bind(this,function(){this.ui.hideDialog()}),360,150)}; -DrawioFile.prototype.showConflictDialog=function(a,c){this.ui.showError(mxResources.get("externalChanges"),mxResources.get("fileChangedSyncDialog"),mxResources.get("overwrite"),a,null,mxResources.get("synchronize"),c,mxResources.get("cancel"),mxUtils.bind(this,function(){this.ui.hideDialog();this.handleFileError(null,!1)}),340,150)}; -DrawioFile.prototype.redirectToNewApp=function(a){this.ui.spinner.stop();if(!this.redirectDialogShowing){this.redirectDialogShowing=!0;var c=window.location.protocol+"//"+window.location.host+"/"+this.ui.getSearch("create title mode url drive splash state".split(" "))+"#"+this.getHash(),b=mxUtils.bind(this,function(){var b=mxUtils.bind(this,function(){this.redirectDialogShowing=!1;window.location.href==c?window.location.reload():window.location.href=c});null==a&&this.isModified()?this.ui.confirm(mxResources.get("allChangesLost"), -mxUtils.bind(this,function(){this.redirectDialogShowing=!1}),b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()});null!=a?this.isModified()?this.ui.confirm(mxResources.get("redirectToNewApp"),mxUtils.bind(this,function(){this.redirectDialogShowing=!1;a()}),b,mxResources.get("cancel"),mxResources.get("discardChanges")):this.ui.confirm(mxResources.get("redirectToNewApp"),b,mxUtils.bind(this,function(){this.redirectDialogShowing=!1;a()})):this.ui.alert(mxResources.get("redirectToNewApp"), -b)}};DrawioFile.prototype.handleFileSuccess=function(a){this.ui.spinner.stop();this.ui.getCurrentFile()==this&&(this.isModified()?this.fileChanged():a?(this.addAllSavedStatus(),null!=this.sync&&(this.sync.resetUpdateStatusThread(),this.sync.remoteFileChanged&&(this.sync.remoteFileChanged=!1,this.sync.fileChangedNotify()))):this.ui.editor.setStatus(""))}; -DrawioFile.prototype.handleFileError=function(a,c){this.ui.spinner.stop();if(this.ui.getCurrentFile()==this)if(this.inConflictState)this.handleConflictError(a,c);else if(this.isModified()&&this.addUnsavedStatus(a),c)this.ui.handleError(a,null!=a?mxResources.get("errorSavingFile"):null);else if(!this.isModified()){var b=null!=a?null!=a.error?a.error.message:a.message:null;null!=b&&60<b.length&&(b=b.substring(0,60)+"...");this.ui.editor.setStatus('<div class="geStatusAlert" style="cursor:pointer;overflow:hidden;">'+ -mxUtils.htmlEntities(mxResources.get("error"))+(null!=b?" ("+mxUtils.htmlEntities(b)+")":"")+"</div>")}}; -DrawioFile.prototype.handleConflictError=function(a,c){var b=mxUtils.bind(this,function(){this.handleFileSuccess(!0)}),f=mxUtils.bind(this,function(a){this.handleFileError(a,!0)}),k=mxUtils.bind(this,function(){this.ui.spinner.spin(document.body,mxResources.get("saving"))&&(this.ui.editor.setStatus(""),this.save(!0,b,f,null,!0,this.constructor==GitHubFile&&null!=a?a.commitMessage:null))}),h=mxUtils.bind(this,function(){this.ui.spinner.spin(document.body,mxResources.get("updatingDocument"))&&this.synchronizeFile(mxUtils.bind(this, -function(){this.ui.spinner.stop();this.ui.spinner.spin(document.body,mxResources.get("saving"))&&this.save(!0,b,f,null,null,this.constructor==GitHubFile&&null!=a?a.commitMessage:null)}),f)});"none"==DrawioFile.SYNC?this.showCopyDialog(b,f,k):this.invalidChecksum?this.showRefreshDialog(b,f,this.getErrorMessage(a)):c?this.showConflictDialog(k,h):this.addConflictStatus(mxUtils.bind(this,function(){this.ui.editor.setStatus(mxUtils.htmlEntities(mxResources.get("updatingDocument")));this.synchronizeFile(b, -f)}),this.getErrorMessage(a))};DrawioFile.prototype.getErrorMessage=function(a){return null!=a?null!=a.error?a.error.message:a.message:null}; -DrawioFile.prototype.fileChanged=function(){this.setModified(!0);this.isAutosave()?(this.addAllSavedStatus(mxUtils.htmlEntities(mxResources.get("saving"))+"..."),this.autosave(this.autosaveDelay,this.maxAutosaveDelay,mxUtils.bind(this,function(a){null==this.autosaveThread&&this.handleFileSuccess(!0)}),mxUtils.bind(this,function(a){this.handleFileError(a)}))):this.isAutosaveOptional()&&this.ui.editor.autosave||this.inConflictState||this.addUnsavedStatus()}; -DrawioFile.prototype.fileSaved=function(a,c,b,f){try{this.stats.fileSaved++,this.invalidChecksum=this.inConflictState=!1,null==this.sync?(this.shadowData=a,this.shadowPages=null,null!=b&&b()):this.sync.fileSaved(this.ui.getPagesForNode(mxUtils.parseXml(a).documentElement),c,b,f)}catch(k){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=f&&f(k);try{this.sendErrorReport("Error in fileSaved","Saved Data:\n"+this.compressReportData(this.ui.anonymizeString(a),null,1E3),k)}catch(h){}}}; -DrawioFile.prototype.autosave=function(a,c,b,f){null==this.lastAutosave&&(this.lastAutosave=(new Date).getTime());a=(new Date).getTime()-this.lastAutosave<c?a:0;this.clearAutosave();var k=window.setTimeout(mxUtils.bind(this,function(){this.lastAutosave=null;this.autosaveThread==k&&(this.autosaveThread=null);if(this.isModified()&&this.isAutosaveNow()){var a=this.isAutosaveRevision();a&&(this.lastAutosaveRevision=(new Date).getTime());this.save(a,mxUtils.bind(this,function(a){this.autosaveCompleted(); -null!=b&&b(a)}),mxUtils.bind(this,function(a){null!=f&&f(a)}))}else this.isModified()||this.ui.editor.setStatus(""),null!=b&&b(null)}),a);this.autosaveThread=k};DrawioFile.prototype.isAutosaveNow=function(){return!0};DrawioFile.prototype.autosaveCompleted=function(){};DrawioFile.prototype.clearAutosave=function(){null!=this.autosaveThread&&(window.clearTimeout(this.autosaveThread),this.autosaveThread=null)}; -DrawioFile.prototype.isAutosaveRevision=function(){var a=(new Date).getTime();return null==this.lastAutosaveRevision||a-this.lastAutosaveRevision>this.maxAutosaveRevisionDelay};DrawioFile.prototype.descriptorChanged=function(){this.fireEvent(new mxEventObject("descriptorChanged"))};DrawioFile.prototype.contentChanged=function(){this.fireEvent(new mxEventObject("contentChanged"))}; -DrawioFile.prototype.close=function(a){this.updateFileData();this.stats.closed++;this.isAutosave()&&this.isModified()&&this.save(this.isAutosaveRevision(),null,null,a);this.destroy()};DrawioFile.prototype.hasSameExtension=function(a,c){if(null!=a&&null!=c){var b=a.lastIndexOf("."),f=0<b?a.substring(b):"",b=c.lastIndexOf(".");return f===(0<b?c.substring(b):"")}return a==c}; +c+" ("+mxUtils.htmlEntities(b.message)+")</div>"))}; +DrawioFile.prototype.addConflictStatus=function(b,c){this.invalidChecksum&&null==c&&(c=mxResources.get("checksum"));this.setConflictStatus(mxUtils.htmlEntities(mxResources.get("fileChangedSync"))+(null!=c&&""!=c?" ("+mxUtils.htmlEntities(c)+")":""));this.ui.spinner.stop();this.clearAutosave();var a=null!=this.ui.statusContainer?this.ui.statusContainer.getElementsByTagName("div"):null;null!=a&&0<a.length?mxEvent.addListener(a[0],"click",mxUtils.bind(this,function(a){"IMG"!=mxEvent.getSource(a).nodeName&& +b()})):this.ui.alert(mxUtils.htmlEntities(mxResources.get("fileChangedSync")),b)};DrawioFile.prototype.setConflictStatus=function(b){this.ui.editor.setStatus('<div title="'+b+'" class="geStatusAlert geBlink" style="cursor:pointer;overflow:hidden;">'+b+' <a href="https://desk.draw.io/support/solutions/articles/16000087947" target="_blank"><img border="0" style="margin-left:2px;cursor:help;opacity:0.5;width:16px;height:16px;" valign="bottom" src="'+Editor.helpImage+'" style=""/></a></div>')}; +DrawioFile.prototype.showRefreshDialog=function(b,c,a){null==a&&(a=mxResources.get("checksum"));this.ui.editor.isChromelessView()&&!this.ui.editor.editable?this.ui.alert(mxResources.get("fileChangedSync"),mxUtils.bind(this,function(){this.reloadFile(b,c)})):(this.addConflictStatus(mxUtils.bind(this,function(){this.showRefreshDialog(b,c)}),a),this.ui.showError(mxResources.get("error")+" ("+a+")",mxResources.get("fileChangedSyncDialog"),mxResources.get("makeCopy"),mxUtils.bind(this,function(){this.copyFile(b, +c)}),null,mxResources.get("synchronize"),mxUtils.bind(this,function(){this.reloadFile(b,c)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.ui.hideDialog()}),360,150))}; +DrawioFile.prototype.showCopyDialog=function(b,c,a){this.invalidChecksum=this.inConflictState=!1;this.addUnsavedStatus();this.ui.showError(mxResources.get("externalChanges"),mxResources.get("fileChangedOverwriteDialog"),mxResources.get("makeCopy"),mxUtils.bind(this,function(){this.copyFile(b,c)}),null,mxResources.get("overwrite"),a,mxResources.get("cancel"),mxUtils.bind(this,function(){this.ui.hideDialog()}),360,150)}; +DrawioFile.prototype.showConflictDialog=function(b,c){this.ui.showError(mxResources.get("externalChanges"),mxResources.get("fileChangedSyncDialog"),mxResources.get("overwrite"),b,null,mxResources.get("synchronize"),c,mxResources.get("cancel"),mxUtils.bind(this,function(){this.ui.hideDialog();this.handleFileError(null,!1)}),340,150)}; +DrawioFile.prototype.redirectToNewApp=function(b){this.ui.spinner.stop();if(!this.redirectDialogShowing){this.redirectDialogShowing=!0;var c=window.location.protocol+"//"+window.location.host+"/"+this.ui.getSearch("create title mode url drive splash state".split(" "))+"#"+this.getHash(),a=mxUtils.bind(this,function(){var a=mxUtils.bind(this,function(){this.redirectDialogShowing=!1;window.location.href==c?window.location.reload():window.location.href=c});null==b&&this.isModified()?this.ui.confirm(mxResources.get("allChangesLost"), +mxUtils.bind(this,function(){this.redirectDialogShowing=!1}),a,mxResources.get("cancel"),mxResources.get("discardChanges")):a()});null!=b?this.isModified()?this.ui.confirm(mxResources.get("redirectToNewApp"),mxUtils.bind(this,function(){this.redirectDialogShowing=!1;b()}),a,mxResources.get("cancel"),mxResources.get("discardChanges")):this.ui.confirm(mxResources.get("redirectToNewApp"),a,mxUtils.bind(this,function(){this.redirectDialogShowing=!1;b()})):this.ui.alert(mxResources.get("redirectToNewApp"), +a)}};DrawioFile.prototype.handleFileSuccess=function(b){this.ui.spinner.stop();this.ui.getCurrentFile()==this&&(this.isModified()?this.fileChanged():b?(this.addAllSavedStatus(),null!=this.sync&&(this.sync.resetUpdateStatusThread(),this.sync.remoteFileChanged&&(this.sync.remoteFileChanged=!1,this.sync.fileChangedNotify()))):this.ui.editor.setStatus(""))}; +DrawioFile.prototype.handleFileError=function(b,c){this.ui.spinner.stop();if(this.ui.getCurrentFile()==this)if(this.inConflictState)this.handleConflictError(b,c);else if(this.isModified()&&this.addUnsavedStatus(b),c)this.ui.handleError(b,null!=b?mxResources.get("errorSavingFile"):null);else if(!this.isModified()){var a=null!=b?null!=b.error?b.error.message:b.message:null;null!=a&&60<a.length&&(a=a.substring(0,60)+"...");this.ui.editor.setStatus('<div class="geStatusAlert" style="cursor:pointer;overflow:hidden;">'+ +mxUtils.htmlEntities(mxResources.get("error"))+(null!=a?" ("+mxUtils.htmlEntities(a)+")":"")+"</div>")}}; +DrawioFile.prototype.handleConflictError=function(b,c){var a=mxUtils.bind(this,function(){this.handleFileSuccess(!0)}),e=mxUtils.bind(this,function(b){this.handleFileError(b,!0)}),k=mxUtils.bind(this,function(){this.ui.spinner.spin(document.body,mxResources.get("saving"))&&(this.ui.editor.setStatus(""),this.save(!0,a,e,null,!0,this.constructor==GitHubFile&&null!=b?b.commitMessage:null))}),f=mxUtils.bind(this,function(){this.ui.spinner.spin(document.body,mxResources.get("updatingDocument"))&&this.synchronizeFile(mxUtils.bind(this, +function(){this.ui.spinner.stop();this.ui.spinner.spin(document.body,mxResources.get("saving"))&&this.save(!0,a,e,null,null,this.constructor==GitHubFile&&null!=b?b.commitMessage:null)}),e)});"none"==DrawioFile.SYNC?this.showCopyDialog(a,e,k):this.invalidChecksum?this.showRefreshDialog(a,e,this.getErrorMessage(b)):c?this.showConflictDialog(k,f):this.addConflictStatus(mxUtils.bind(this,function(){this.ui.editor.setStatus(mxUtils.htmlEntities(mxResources.get("updatingDocument")));this.synchronizeFile(a, +e)}),this.getErrorMessage(b))};DrawioFile.prototype.getErrorMessage=function(b){return null!=b?null!=b.error?b.error.message:b.message:null}; +DrawioFile.prototype.fileChanged=function(){this.setModified(!0);this.isAutosave()?(this.addAllSavedStatus(mxUtils.htmlEntities(mxResources.get("saving"))+"..."),this.autosave(this.autosaveDelay,this.maxAutosaveDelay,mxUtils.bind(this,function(b){null==this.autosaveThread&&this.handleFileSuccess(!0)}),mxUtils.bind(this,function(b){this.handleFileError(b)}))):this.isAutosaveOptional()&&this.ui.editor.autosave||this.inConflictState||this.addUnsavedStatus()}; +DrawioFile.prototype.fileSaved=function(b,c,a,e){try{this.stats.saved++,this.invalidChecksum=this.inConflictState=!1,null==this.sync?(this.shadowData=b,this.shadowPages=null,null!=a&&a()):this.sync.fileSaved(this.ui.getPagesForNode(mxUtils.parseXml(b).documentElement),c,a,e,b)}catch(k){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=e&&e(k);try{this.errorReportsEnabled&&this.sendErrorReport("Error in fileSaved",null,k)}catch(f){}}}; +DrawioFile.prototype.autosave=function(b,c,a,e){null==this.lastAutosave&&(this.lastAutosave=(new Date).getTime());b=(new Date).getTime()-this.lastAutosave<c?b:0;this.clearAutosave();var k=window.setTimeout(mxUtils.bind(this,function(){this.lastAutosave=null;this.autosaveThread==k&&(this.autosaveThread=null);if(this.isModified()&&this.isAutosaveNow()){var b=this.isAutosaveRevision();b&&(this.lastAutosaveRevision=(new Date).getTime());this.save(b,mxUtils.bind(this,function(b){this.autosaveCompleted(); +null!=a&&a(b)}),mxUtils.bind(this,function(b){null!=e&&e(b)}))}else this.isModified()||this.ui.editor.setStatus(""),null!=a&&a(null)}),b);this.autosaveThread=k};DrawioFile.prototype.isAutosaveNow=function(){return!0};DrawioFile.prototype.autosaveCompleted=function(){};DrawioFile.prototype.clearAutosave=function(){null!=this.autosaveThread&&(window.clearTimeout(this.autosaveThread),this.autosaveThread=null)}; +DrawioFile.prototype.isAutosaveRevision=function(){var b=(new Date).getTime();return null==this.lastAutosaveRevision||b-this.lastAutosaveRevision>this.maxAutosaveRevisionDelay};DrawioFile.prototype.descriptorChanged=function(){this.fireEvent(new mxEventObject("descriptorChanged"))};DrawioFile.prototype.contentChanged=function(){this.fireEvent(new mxEventObject("contentChanged"))}; +DrawioFile.prototype.close=function(b){this.updateFileData();this.stats.closed++;this.isAutosave()&&this.isModified()&&this.save(this.isAutosaveRevision(),null,null,b);this.destroy()};DrawioFile.prototype.hasSameExtension=function(b,c){if(null!=b&&null!=c){var a=b.lastIndexOf("."),e=0<a?b.substring(a):"",a=c.lastIndexOf(".");return e===(0<a?c.substring(a):"")}return b==c}; DrawioFile.prototype.removeListeners=function(){null!=this.changeListener&&(this.ui.editor.graph.model.removeListener(this.changeListener),this.ui.editor.graph.removeListener(this.changeListener),this.ui.removeListener(this.changeListener),this.changeListener=null)}; -DrawioFile.prototype.destroy=function(){this.stats.destroyed++;try{if(!this.ui.isOffline()&&this.reportEnabled&&("auto"==DrawioFile.SYNC||"manual"==DrawioFile.SYNC)){var a=this.getCurrentUser(),c=null!=a?this.ui.hashValue(a.id):"unknown";this.stats.end=(new Date).toISOString();null!=this.stats.start&&(this.stats.uptime=Math.round(((new Date).getTime()-(new Date(this.stats.start)).getTime())/1E3));EditorUi.logEvent({category:"RT-END-"+DrawioFile.SYNC,action:"file-"+this.getId()+"-mode-"+this.getMode()+ -"-size-"+this.getSize()+"-user-"+c+(null!=this.sync?"-client-"+this.sync.clientId:""),label:this.stats})}}catch(b){}this.clearAutosave();this.removeListeners();null!=this.sync&&(this.sync.destroy(),this.sync=null)};LocalFile=function(a,c,b,f){DrawioFile.call(this,a,c);this.title=b;this.mode=f?null:App.MODE_DEVICE};mxUtils.extend(LocalFile,DrawioFile);LocalFile.prototype.isAutosave=function(){return!1};LocalFile.prototype.getMode=function(){return this.mode};LocalFile.prototype.getTitle=function(){return this.title};LocalFile.prototype.isRenamable=function(){return!0};LocalFile.prototype.save=function(a,c,b){this.saveAs(this.title,c,b)};LocalFile.prototype.saveAs=function(a,c,b){this.saveFile(a,!1,c,b)}; -LocalFile.prototype.saveFile=function(a,c,b,f){this.title=a;this.updateFileData();c=this.getData();var k=this.ui.useCanvasForExport&&/(\.png)$/i.test(this.getTitle()),h=mxUtils.bind(this,function(c){if(this.ui.isOfflineApp()||this.ui.isLocalFileSave())this.ui.doSaveLocalFile(c,a,k?"image/png":"text/xml",k);else if(c.length<MAX_REQUEST_SIZE){var f=a.lastIndexOf("."),f=0<f?a.substring(f+1):"xml";(new mxXmlRequest(SAVE_URL,"format="+f+"&xml="+encodeURIComponent(c)+"&filename="+encodeURIComponent(a)+ -(k?"&binary=1":""))).simulate(document,"_blank")}else this.ui.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(c)}));this.setModified(!1);this.contentChanged();null!=b&&b()});k?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){h(a)}),f,this.ui.getCurrentFile()!=this?this.getData():null):h(c)};LocalFile.prototype.rename=function(a,c,b){this.title=a;this.descriptorChanged();null!=c&&c()}; -LocalFile.prototype.open=function(){this.ui.setFileData(this.getData());this.installListeners()};LocalLibrary=function(a,c,b){LocalFile.call(this,a,c,b)};mxUtils.extend(LocalLibrary,LocalFile);LocalLibrary.prototype.getHash=function(){return"F"+this.getTitle()};LocalLibrary.prototype.isAutosave=function(){return!1};LocalLibrary.prototype.saveAs=function(a,c,b){this.saveFile(a,!1,c,b)};LocalLibrary.prototype.updateFileData=function(){};LocalLibrary.prototype.open=function(){};StorageFile=function(a,c,b){DrawioFile.call(this,a,c);this.title=b};mxUtils.extend(StorageFile,DrawioFile);StorageFile.prototype.autosaveDelay=2E3;StorageFile.prototype.maxAutosaveDelay=2E4;StorageFile.prototype.getMode=function(){return App.MODE_BROWSER};StorageFile.prototype.isAutosaveOptional=function(){return!0};StorageFile.prototype.getHash=function(){return"L"+encodeURIComponent(this.getTitle())};StorageFile.prototype.getTitle=function(){return this.title}; -StorageFile.prototype.isRenamable=function(){return!0};StorageFile.prototype.save=function(a,c,b){this.saveAs(this.getTitle(),c,b)};StorageFile.prototype.saveAs=function(a,c,b){DrawioFile.prototype.save.apply(this,arguments);this.saveFile(a,!1,c,b)}; -StorageFile.prototype.saveFile=function(a,c,b,f){if(this.isEditable()){var k=mxUtils.bind(this,function(){this.isRenamable()&&(this.title=a);try{this.ui.setLocalData(this.title,this.getData(),mxUtils.bind(this,function(){this.setModified(!1);this.contentChanged();null!=b&&b()}))}catch(h){null!=f&&f(h)}});this.isRenamable()&&"."==a.charAt(0)&&null!=f?f({message:mxResources.get("invalidName")}):this.ui.getLocalData(a,mxUtils.bind(this,function(b){this.isRenamable()&&this.getTitle()!=a&&null!=b?this.ui.confirm(mxResources.get("replaceIt", -[a]),k,f):k()}))}else null!=b&&b()};StorageFile.prototype.rename=function(a,c,b){var f=this.getTitle();f!=a?this.ui.getLocalData(a,mxUtils.bind(this,function(k){var h=mxUtils.bind(this,function(){this.title=a;this.hasSameExtension(f,a)||this.setData(this.ui.getFileData());this.saveFile(a,!1,mxUtils.bind(this,function(){this.ui.removeLocalData(f,c)}),b)});null!=k?this.ui.confirm(mxResources.get("replaceIt",[a]),h,b):h()})):c()}; -StorageFile.prototype.open=function(){DrawioFile.prototype.open.apply(this,arguments);this.saveFile(this.getTitle())};StorageFile.prototype.getLatestVersion=function(a,c){this.ui.getLocalData(this.title,mxUtils.bind(this,function(b){a(new StorageFile(this.ui,b,this.title))}))};StorageFile.prototype.destroy=function(){DrawioFile.prototype.destroy.apply(this,arguments);null!=this.storageListener&&(mxEvent.removeListener(window,"storage",this.storageListener),this.storageListener=null)};StorageLibrary=function(a,c,b){StorageFile.call(this,a,c,b)};mxUtils.extend(StorageLibrary,StorageFile);StorageLibrary.prototype.isAutosave=function(){return!0};StorageLibrary.prototype.saveAs=function(a,c,b){this.saveFile(a,!1,c,b)};StorageLibrary.prototype.getHash=function(){return"L"+encodeURIComponent(this.title)};StorageLibrary.prototype.getTitle=function(){return".scratchpad"==this.title?mxResources.get("scratchpad"):this.title}; -StorageLibrary.prototype.isRenamable=function(a,c,b){return".scratchpad"!=this.title};StorageLibrary.prototype.open=function(){};UrlLibrary=function(a,c,b){StorageFile.call(this,a,c,b);a=b;c=a.lastIndexOf("/");0<=c&&(a=a.substring(c+1));this.fname=a};mxUtils.extend(UrlLibrary,StorageFile);UrlLibrary.prototype.getHash=function(){return"U"+encodeURIComponent(this.title)};UrlLibrary.prototype.getTitle=function(){return this.fname};UrlLibrary.prototype.isAutosave=function(){return!1};UrlLibrary.prototype.isEditable=function(a,c,b){return!1};UrlLibrary.prototype.saveAs=function(a,c,b){};UrlLibrary.prototype.open=function(){};/* +DrawioFile.prototype.destroy=function(){this.stats.destroyed++;try{if(!this.ui.isOffline()&&this.reportEnabled&&("auto"==DrawioFile.SYNC||"manual"==DrawioFile.SYNC)){var b=this.getCurrentUser(),c=null!=b?b.id:"unknown";EditorUi.logEvent({category:"RT-END-"+DrawioFile.SYNC,action:"file-"+this.getId()+"-mode-"+this.getMode()+"-size-"+this.getSize()+"-user-"+c+(null!=this.sync?"-client-"+this.sync.clientId:""),label:this.stats})}}catch(a){}this.clearAutosave();this.removeListeners();null!=this.sync&& +(this.sync.destroy(),this.sync=null)};LocalFile=function(b,c,a,e){DrawioFile.call(this,b,c);this.title=a;this.mode=e?null:App.MODE_DEVICE};mxUtils.extend(LocalFile,DrawioFile);LocalFile.prototype.isAutosave=function(){return!1};LocalFile.prototype.getMode=function(){return this.mode};LocalFile.prototype.getTitle=function(){return this.title};LocalFile.prototype.isRenamable=function(){return!0};LocalFile.prototype.save=function(b,c,a){this.saveAs(this.title,c,a)};LocalFile.prototype.saveAs=function(b,c,a){this.saveFile(b,!1,c,a)}; +LocalFile.prototype.saveFile=function(b,c,a,e){this.title=b;this.updateFileData();c=this.getData();var k=this.ui.useCanvasForExport&&/(\.png)$/i.test(this.getTitle()),f=mxUtils.bind(this,function(c){if(this.ui.isOfflineApp()||this.ui.isLocalFileSave())this.ui.doSaveLocalFile(c,b,k?"image/png":"text/xml",k);else if(c.length<MAX_REQUEST_SIZE){var e=b.lastIndexOf("."),e=0<e?b.substring(e+1):"xml";(new mxXmlRequest(SAVE_URL,"format="+e+"&xml="+encodeURIComponent(c)+"&filename="+encodeURIComponent(b)+ +(k?"&binary=1":""))).simulate(document,"_blank")}else this.ui.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(c)}));this.setModified(!1);this.contentChanged();null!=a&&a()});k?this.ui.getEmbeddedPng(mxUtils.bind(this,function(b){f(b)}),e,this.ui.getCurrentFile()!=this?this.getData():null):f(c)};LocalFile.prototype.rename=function(b,c,a){this.title=b;this.descriptorChanged();null!=c&&c()}; +LocalFile.prototype.open=function(){this.ui.setFileData(this.getData());this.installListeners()};LocalLibrary=function(b,c,a){LocalFile.call(this,b,c,a)};mxUtils.extend(LocalLibrary,LocalFile);LocalLibrary.prototype.getHash=function(){return"F"+this.getTitle()};LocalLibrary.prototype.isAutosave=function(){return!1};LocalLibrary.prototype.saveAs=function(b,c,a){this.saveFile(b,!1,c,a)};LocalLibrary.prototype.updateFileData=function(){};LocalLibrary.prototype.open=function(){};StorageFile=function(b,c,a){DrawioFile.call(this,b,c);this.title=a};mxUtils.extend(StorageFile,DrawioFile);StorageFile.prototype.autosaveDelay=2E3;StorageFile.prototype.maxAutosaveDelay=2E4;StorageFile.prototype.getMode=function(){return App.MODE_BROWSER};StorageFile.prototype.isAutosaveOptional=function(){return!0};StorageFile.prototype.getHash=function(){return"L"+encodeURIComponent(this.getTitle())};StorageFile.prototype.getTitle=function(){return this.title}; +StorageFile.prototype.isRenamable=function(){return!0};StorageFile.prototype.save=function(b,c,a){this.saveAs(this.getTitle(),c,a)};StorageFile.prototype.saveAs=function(b,c,a){DrawioFile.prototype.save.apply(this,arguments);this.saveFile(b,!1,c,a)}; +StorageFile.prototype.saveFile=function(b,c,a,e){if(this.isEditable()){var k=mxUtils.bind(this,function(){this.isRenamable()&&(this.title=b);try{this.ui.setLocalData(this.title,this.getData(),mxUtils.bind(this,function(){this.setModified(!1);this.contentChanged();null!=a&&a()}))}catch(f){null!=e&&e(f)}});this.isRenamable()&&"."==b.charAt(0)&&null!=e?e({message:mxResources.get("invalidName")}):this.ui.getLocalData(b,mxUtils.bind(this,function(a){this.isRenamable()&&this.getTitle()!=b&&null!=a?this.ui.confirm(mxResources.get("replaceIt", +[b]),k,e):k()}))}else null!=a&&a()};StorageFile.prototype.rename=function(b,c,a){var e=this.getTitle();e!=b?this.ui.getLocalData(b,mxUtils.bind(this,function(k){var f=mxUtils.bind(this,function(){this.title=b;this.hasSameExtension(e,b)||this.setData(this.ui.getFileData());this.saveFile(b,!1,mxUtils.bind(this,function(){this.ui.removeLocalData(e,c)}),a)});null!=k?this.ui.confirm(mxResources.get("replaceIt",[b]),f,a):f()})):c()}; +StorageFile.prototype.open=function(){DrawioFile.prototype.open.apply(this,arguments);this.saveFile(this.getTitle())};StorageFile.prototype.getLatestVersion=function(b,c){this.ui.getLocalData(this.title,mxUtils.bind(this,function(a){b(new StorageFile(this.ui,a,this.title))}))};StorageFile.prototype.destroy=function(){DrawioFile.prototype.destroy.apply(this,arguments);null!=this.storageListener&&(mxEvent.removeListener(window,"storage",this.storageListener),this.storageListener=null)};StorageLibrary=function(b,c,a){StorageFile.call(this,b,c,a)};mxUtils.extend(StorageLibrary,StorageFile);StorageLibrary.prototype.isAutosave=function(){return!0};StorageLibrary.prototype.saveAs=function(b,c,a){this.saveFile(b,!1,c,a)};StorageLibrary.prototype.getHash=function(){return"L"+encodeURIComponent(this.title)};StorageLibrary.prototype.getTitle=function(){return".scratchpad"==this.title?mxResources.get("scratchpad"):this.title}; +StorageLibrary.prototype.isRenamable=function(b,c,a){return".scratchpad"!=this.title};StorageLibrary.prototype.open=function(){};UrlLibrary=function(b,c,a){StorageFile.call(this,b,c,a);b=a;c=b.lastIndexOf("/");0<=c&&(b=b.substring(c+1));this.fname=b};mxUtils.extend(UrlLibrary,StorageFile);UrlLibrary.prototype.getHash=function(){return"U"+encodeURIComponent(this.title)};UrlLibrary.prototype.getTitle=function(){return this.fname};UrlLibrary.prototype.isAutosave=function(){return!1};UrlLibrary.prototype.isEditable=function(b,c,a){return!1};UrlLibrary.prototype.saveAs=function(b,c,a){};UrlLibrary.prototype.open=function(){};/* mxClient.IS_IOS || */ -var StorageDialog=function(a,c,b){function f(q,u,m,f,z,v){function x(){mxEvent.addListener(w,"click",null!=v?v:function(){m!=App.MODE_GOOGLE||a.isDriveDomain()?m==App.MODE_GOOGLE&&a.spinner.spin(document.body,mxResources.get("authorizing"))?a.drive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();a.setMode(m,d.checked);c()})):m==App.MODE_ONEDRIVE&&a.spinner.spin(document.body,mxResources.get("authorizing"))?a.oneDrive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();a.setMode(m,d.checked); -c()})):(a.setMode(m,d.checked),c()):window.location.hostname=DriveClient.prototype.newAppHostname})}var w=document.createElement("a");w.style.overflow="hidden";w.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";w.className="geBaseButton";w.style.boxSizing="border-box";w.style.fontSize="11px";w.style.position="relative";w.style.margin="4px";w.style.padding="8px 10px 12px 10px";w.style.width="88px";w.style.height="100px";w.style.whiteSpace="nowrap";w.setAttribute("title",u);mxClient.IS_QUIRKS&& -(w.style.cssFloat="left",w.style.zoom="1");var F=document.createElement("div");F.style.textOverflow="ellipsis";F.style.overflow="hidden";if(null!=q){var h=document.createElement("img");h.setAttribute("src",q);h.setAttribute("border","0");h.setAttribute("align","absmiddle");h.style.width="60px";h.style.height="60px";h.style.paddingBottom="6px";w.appendChild(h)}else F.style.paddingTop="5px",F.style.whiteSpace="normal",mxClient.IS_IOS?(w.style.padding="0px 10px 20px 10px",w.style.top="6px"):mxClient.IS_FF&& -(F.style.paddingTop="0px",F.style.marginTop="-2px");w.appendChild(F);mxUtils.write(F,u);if(null!=z)for(q=0;q<z.length;q++)mxUtils.br(F),mxUtils.write(F,z[q]);if(null!=f&&null==a[f]){h.style.visibility="hidden";mxUtils.setOpacity(F,10);var k=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});k.spin(w);var y=window.setTimeout(function(){null==a[f]&&(k.stop(),w.style.display="none")},3E4);a.addListener("clientLoaded", -mxUtils.bind(this,function(b,d){null!=a[f]&&d.getProperty("client")==a[f]&&(window.clearTimeout(y),mxUtils.setOpacity(F,100),h.style.visibility="",k.stop(),x(),"drive"==f&&null!=n.parentNode&&n.parentNode.removeChild(n))}))}else x();p.appendChild(w);++g>=b&&(mxUtils.br(p),g=0)}b=null!=b?b:2;var k=document.createElement("div");k.style.textAlign="center";k.style.whiteSpace="nowrap";k.style.paddingTop="0px";k.style.paddingBottom="20px";var h=a.addLanguageMenu(k,!0);null!=h&&(h.style.bottom=parseInt("28px")- -2+"px");if(!a.isOffline()&&1<a.getServiceCount()){h=document.createElement("a");h.setAttribute("href","https://about.draw.io/support/");h.setAttribute("title",mxResources.get("help"));h.setAttribute("target","_blank");h.style.position="absolute";h.style.textDecoration="none";h.style.cursor="pointer";h.style.fontSize="12px";h.style.bottom="28px";h.style.left="26px";h.style.color="gray";var l=document.createElement("img");mxUtils.setOpacity(l,50);l.style.height="16px";l.style.width="16px";l.setAttribute("border", -"0");l.setAttribute("valign","bottom");l.setAttribute("src",Editor.helpImage);l.style.marginRight="2px";h.appendChild(l);mxUtils.write(h,mxResources.get("help"));k.appendChild(h)}var t=document.createElement("div");t.style.position="absolute";t.style.cursor="pointer";t.style.fontSize="12px";t.style.bottom="28px";t.style.color="gray";mxUtils.write(t,mxResources.get("decideLater"));a.isOfflineApp()?t.style.right="20px":(mxUtils.setPrefixedStyle(t.style,"transform","translate(-50%,0)"),t.style.left= -"50%");this.init=function(){if(mxClient.IS_QUIRKS||8==document.documentMode)t.style.marginLeft=-Math.round(t.clientWidth/2)+"px"};k.appendChild(t);mxEvent.addListener(t,"click",function(){a.hideDialog();var b=Editor.useLocalStorage;a.createFile(a.defaultFilename,null,null,null,null,null,null,!0);Editor.useLocalStorage=b});var p=document.createElement("div");mxClient.IS_QUIRKS&&(p.style.whiteSpace="nowrap",p.style.cssFloat="left");p.style.border="1px solid #d3d3d3";p.style.borderWidth="1px 0px 1px 0px"; -p.style.padding="12px 0px 12px 0px";var d=document.createElement("input");d.setAttribute("type","checkbox");d.setAttribute("checked","checked");d.defaultChecked=!0;var g=0,n=document.createElement("p"),h=document.createElement("p");h.style.fontSize="16pt";h.style.padding="0px";h.style.paddingTop="4px";h.style.paddingBottom="16px";h.style.margin="0px";h.style.color="gray";mxUtils.write(h,mxResources.get("saveDiagramsTo")+":");k.appendChild(h);"function"===typeof window.DriveClient&&f(IMAGE_PATH+"/google-drive-logo.svg", -mxResources.get("googleDrive"),App.MODE_GOOGLE,"drive");"function"===typeof window.OneDriveClient&&f(IMAGE_PATH+"/onedrive-logo.svg",mxResources.get("oneDrive"),App.MODE_ONEDRIVE,"oneDrive");f(IMAGE_PATH+"/osa_drive-harddisk.png",mxResources.get("device"),App.MODE_DEVICE);!isLocalStorage||"1"!=urlParams.browser&&"1"!=urlParams.offline||f(IMAGE_PATH+"/osa_database.png",mxResources.get("browser"),App.MODE_BROWSER);k.appendChild(p);h=document.createElement("p");h.style.marginTop="12px";h.style.marginBottom= -"6px";h.appendChild(d);l=document.createElement("span");l.style.color="gray";l.style.fontSize="12px";mxUtils.write(l," "+mxResources.get("rememberThisSetting"));h.appendChild(l);mxUtils.br(h);var q=a.getRecent();if(null!=q&&0<q.length){var u=document.createElement("select");u.style.marginTop="8px";u.style.width="140px";var v=document.createElement("option");v.setAttribute("value","");v.setAttribute("selected","selected");v.style.textAlign="center";mxUtils.write(v,mxResources.get("openRecent")+"..."); -u.appendChild(v);for(v=0;v<q.length;v++)(function(a){var b=a.mode;b==App.MODE_GOOGLE?b="googleDrive":b==App.MODE_ONEDRIVE&&(b="oneDrive");var d=document.createElement("option");d.setAttribute("value",a.id);mxUtils.write(d,a.title+" ("+mxResources.get(b)+")");u.appendChild(d)})(q[v]);h.appendChild(u);mxEvent.addListener(u,"change",function(b){""!=u.value&&a.loadFile(u.value)})}else h.style.marginTop="20px",p.style.padding="30px 0px 26px 0px";!Graph.fileSupport||mxClient.IS_IE||mxClient.IS_IE11||(q= -document.createElement("div"),q.style.cursor="pointer",q.style.padding="18px 0px 6px 0px",q.style.fontSize="12px",q.style.color="gray",mxUtils.write(q,mxResources.get("import")+": "+mxResources.get("gliffy")+", "+mxResources.get("formatVssx")+", "+mxResources.get("formatVsdx")+", "+mxResources.get("lucidchart")+"..."),mxEvent.addListener(q,"click",function(){var b=document.createElement("input");b.setAttribute("type","file");mxEvent.addListener(b,"change",function(){null!=b.files&&(a.hideDialog(), -a.openFiles(b.files,!0))});b.click()}),h.appendChild(q),p.style.paddingBottom="4px");p.appendChild(h);mxEvent.addListener(l,"click",function(a){d.checked=!d.checked;mxEvent.consume(a)});mxClient.IS_SVG&&isLocalStorage&&"0"!=urlParams.gapi&&(null==document.documentMode||10<=document.documentMode)&&window.setTimeout(function(){null==a.drive&&(n.style.padding="8px",n.style.fontSize="9pt",n.style.marginTop="-14px",n.innerHTML='<a style="background-color:#dcdcdc;padding:5px;color:black;text-decoration:none;" href="https://plus.google.com/u/0/+DrawIo1/posts/1HTrfsb5wDN" target="_blank"><img border="0" src="'+ -mxGraph.prototype.warningImage.src+'" align="top"> '+mxResources.get("googleDriveMissingClickHere")+"</a>",k.appendChild(n))},5E3);this.container=k},SplashDialog=function(a){var c=document.createElement("div");c.style.textAlign="center";a.addLanguageMenu(c,!0);var b=null,b=a.getServiceCount();if(!a.isOffline()&&1<b){b=document.createElement("a");b.setAttribute("href","https://about.draw.io/support/");b.setAttribute("title",mxResources.get("help"));b.setAttribute("target","_blank");b.style.position= -"absolute";b.style.fontSize="12px";b.style.textDecoration="none";b.style.cursor="pointer";b.style.bottom="22px";b.style.left="26px";b.style.color="gray";var f=document.createElement("img");mxUtils.setOpacity(f,50);f.style.height="16px";f.style.width="16px";f.setAttribute("border","0");f.setAttribute("valign","bottom");f.setAttribute("src",Editor.helpImage);f.style.marginRight="2px";b.appendChild(f);mxUtils.write(b,mxResources.get("help"));c.appendChild(b)}b=document.createElement("p");b.style.fontSize= -"16pt";b.style.padding="0px";b.style.paddingTop="2px";b.style.margin="0px";b.style.color="gray";f=document.createElement("img");f.setAttribute("border","0");f.setAttribute("align","absmiddle");f.style.width="40px";f.style.height="40px";f.style.marginRight="12px";f.style.paddingBottom="4px";var k="";a.mode==App.MODE_GOOGLE?(f.src=IMAGE_PATH+"/google-drive-logo.svg",k=mxResources.get("googleDrive")):a.mode==App.MODE_DROPBOX?(f.src=IMAGE_PATH+"/dropbox-logo.svg",k=mxResources.get("dropbox")):a.mode== -App.MODE_ONEDRIVE?(f.src=IMAGE_PATH+"/onedrive-logo.svg",k=mxResources.get("oneDrive")):a.mode==App.MODE_GITHUB?(f.src=IMAGE_PATH+"/github-logo.svg",k=mxResources.get("github")):a.mode==App.MODE_TRELLO?(f.src=IMAGE_PATH+"/trello-logo.svg",k=mxResources.get("trello")):a.mode==App.MODE_BROWSER?(f.src=IMAGE_PATH+"/osa_database.png",k=mxResources.get("browser")):(f.src=IMAGE_PATH+"/osa_drive-harddisk.png",k=mxResources.get("device"));var h=document.createElement("div");h.style.margin="4px 0px 0px 0px"; -var l=document.createElement("button");l.className="geBigButton";l.style.overflow="hidden";l.style.width="340px";mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?(h.style.padding="42px 0px 56px 0px",l.style.marginBottom="12px"):(b.appendChild(f),mxUtils.write(b,k),c.appendChild(b),h.style.border="1px solid #d3d3d3",h.style.borderWidth="1px 0px 1px 0px",h.style.padding="18px 0px 24px 0px",l.style.marginBottom="8px");mxClient.IS_QUIRKS&&(h.style.whiteSpace="nowrap",h.style.cssFloat="left");mxClient.IS_QUIRKS&& -(l.style.width="340px");mxUtils.write(l,mxResources.get("createNewDiagram"));mxEvent.addListener(l,"click",function(){a.hideDialog();a.actions.get("new").funct()});h.appendChild(l);mxUtils.br(h);l=document.createElement("button");l.className="geBigButton";l.style.marginBottom="22px";l.style.overflow="hidden";l.style.width="340px";mxClient.IS_QUIRKS&&(l.style.width="340px");mxUtils.write(l,mxResources.get("openExistingDiagram"));mxEvent.addListener(l,"click",function(){a.actions.get("open").funct()}); -h.appendChild(l);b="undefined";a.mode==App.MODE_GOOGLE?b=mxResources.get("googleDrive"):a.mode==App.MODE_DROPBOX?b=mxResources.get("dropbox"):a.mode==App.MODE_ONEDRIVE?b=mxResources.get("oneDrive"):a.mode==App.MODE_GITHUB?b=mxResources.get("github"):a.mode==App.MODE_TRELLO?b=mxResources.get("trello"):a.mode==App.MODE_DEVICE?b=mxResources.get("device"):a.mode==App.MODE_BROWSER&&(b=mxResources.get("browser"));mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(k=function(b){l.style.marginBottom="24px"; -var c=document.createElement("a");c.setAttribute("href","javascript:void(0)");c.style.display="inline-block";c.style.marginTop="6px";mxUtils.write(c,mxResources.get("signOut"));l.style.marginBottom="16px";h.style.paddingBottom="18px";mxEvent.addListener(c,"click",function(){a.confirm(mxResources.get("areYouSure"),function(){b()})});h.appendChild(c)},f=null!=a.drive?a.drive.getUser():null,a.mode==App.MODE_GOOGLE&&null!=f?(l.style.marginBottom="24px",k=document.createElement("a"),k.setAttribute("href", -"javascript:void(0)"),k.style.display="inline-block",k.style.marginTop="6px",mxUtils.write(k,mxResources.get("changeUser")+" ("+f.displayName+")"),l.style.marginBottom="16px",h.style.paddingBottom="18px",mxEvent.addListener(k,"click",function(){a.hideDialog();a.drive.clearUserId();a.drive.setUser(null);gapi.auth.signOut();a.setMode(App.MODE_GOOGLE);a.hideDialog();a.showSplash();a.drive.authorize(!1,mxUtils.bind(this,mxUtils.bind(this,function(){a.hideDialog();a.showSplash()})),mxUtils.bind(this,function(b){a.handleError(b, -null,function(){a.hideDialog();a.showSplash()})}))}),h.appendChild(k)):a.mode==App.MODE_ONEDRIVE&&null!=a.oneDrive?k(function(){a.oneDrive.logout()}):a.mode==App.MODE_GITHUB&&null!=a.gitHub?k(function(){a.gitHub.logout();a.openLink("https://www.github.com/logout")}):a.mode==App.MODE_TRELLO&&null!=a.trello?a.trello.isAuthorized()&&k(function(){a.trello.logout()}):a.mode==App.MODE_DROPBOX&&null!=a.dropbox&&k(function(){a.dropbox.logout();a.openLink("https://www.dropbox.com/logout")}),mxUtils.br(h), -k=document.createElement("a"),k.setAttribute("href","javascript:void(0)"),k.style.display="inline-block",k.style.marginTop="8px",mxUtils.write(k,mxResources.get("notUsingService",[b])),mxEvent.addListener(k,"click",function(){a.hideDialog(!1);a.setMode(null);a.clearMode();a.showSplash(!0)}),h.appendChild(k));c.appendChild(h);this.container=c},ConfirmDialog=function(a,c,b,f,k,h,l,t,p){var d=document.createElement("div");d.style.textAlign="center";var g=document.createElement("div");g.style.padding= -"6px";g.style.overflow="auto";g.style.maxHeight="44px";mxClient.IS_QUIRKS&&(g.style.height="60px");mxUtils.write(g,c);d.appendChild(g);g=document.createElement("div");g.style.textAlign="center";g.style.whiteSpace="nowrap";var n=document.createElement("input");n.setAttribute("type","checkbox");h=mxUtils.button(h||mxResources.get("cancel"),function(){a.hideDialog();null!=f&&f(n.checked)});h.className="geBtn";null!=t&&(h.innerHTML=t+"<br>"+h.innerHTML,h.style.paddingBottom="8px",h.style.paddingTop="8px", -h.style.height="auto",h.style.width="40%");a.editor.cancelFirst&&g.appendChild(h);var q=mxUtils.button(k||mxResources.get("ok"),function(){a.hideDialog();null!=b&&b(n.checked)});g.appendChild(q);null!=l?(q.innerHTML=l+"<br>"+q.innerHTML+"<br>",q.style.paddingBottom="8px",q.style.paddingTop="8px",q.style.height="auto",q.className="geBtn",q.style.width="40%"):q.className="geBtn gePrimaryBtn";a.editor.cancelFirst||g.appendChild(h);d.appendChild(g);p?(g.style.marginTop="10px",g=document.createElement("p"), -g.style.marginTop="20px",g.appendChild(n),k=document.createElement("span"),mxUtils.write(k," "+mxResources.get("rememberThisSetting")),g.appendChild(k),d.appendChild(g),mxEvent.addListener(k,"click",function(a){n.checked=!n.checked;mxEvent.consume(a)})):g.style.marginTop="16px";this.init=function(){q.focus()};this.container=d},EmbedDialog=function(a,c,b,f,k,h){f=document.createElement("div");var l=/^https?:\/\//.test(c)||/^mailto:\/\//.test(c);null!=h?mxUtils.write(f,h):mxUtils.write(f,mxResources.get(5E5> -c.length?l?"link":"mainEmbedNotice":"preview")+":");mxUtils.br(f);h=document.createElement("div");h.style.position="absolute";h.style.top="30px";h.style.right="30px";h.style.color="gray";mxUtils.write(h,a.formatFileSize(c.length));f.appendChild(h);var t=document.createElement("textarea");t.setAttribute("autocomplete","off");t.setAttribute("autocorrect","off");t.setAttribute("autocapitalize","off");t.setAttribute("spellcheck","false");t.style.marginTop="10px";t.style.resize="none";t.style.height="150px"; -t.style.width="440px";t.style.border="1px solid gray";t.value=mxResources.get("updatingDocument");f.appendChild(t);mxUtils.br(f);this.init=function(){window.setTimeout(function(){5E5>c.length?(t.value=c,t.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?t.select():document.execCommand("selectAll",!1,null)):(t.setAttribute("readonly","true"),t.value=c.substring(0,340)+"... ("+mxResources.get("drawingTooLarge")+")")},0)};h=document.createElement("div");h.style.position= -"absolute";h.style.bottom="36px";h.style.right="32px";var p=null;!EmbedDialog.showPreviewOption||mxClient.IS_CHROMEAPP&&!l||navigator.standalone||!(l||mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode))||(p=mxUtils.button(mxResources.get(5E5>c.length?"preview":"openInNewWindow"),function(){var d=5E5>c.length?t.value:c;if(null!=k)k(d);else if(l)try{var g=a.openLink(d);null!=g&&(null==b||0<b)&&window.setTimeout(mxUtils.bind(this,function(){null!=g&&null!=g.location.href&&g.location.href.substring(0, -8)!=d.substring(0,8)&&(g.close(),a.handleError({message:mxResources.get("drawingTooLarge")}))}),b||500)}catch(v){a.handleError({message:v.message||mxResources.get("drawingTooLarge")})}else{var f=window.open().document;f.writeln("<html><head><title>"+encodeURIComponent(mxResources.get("preview"))+'</title><meta charset="utf-8"></head><body>'+c+"</body></html>");f.close()}}),p.className="geBtn",h.appendChild(p));if(!l||7500<c.length){var d=mxUtils.button(mxResources.get("download"),function(){a.hideDialog(); -a.saveData("embed.txt","txt",c,"text/plain")});d.className="geBtn";h.appendChild(d)}if(l&&(!a.isOffline()||mxClient.IS_CHROMEAPP)){if(51200>c.length){var g=mxUtils.button("",function(){try{var b="https://www.facebook.com/sharer.php?p[url]="+encodeURIComponent(t.value);a.openLink(b)}catch(q){a.handleError({message:q.message||mxResources.get("drawingTooLarge")})}}),d=document.createElement("img");d.setAttribute("src",Editor.facebookImage);d.setAttribute("width","18");d.setAttribute("height","18");d.setAttribute("border", -"0");g.appendChild(d);g.setAttribute("title",mxResources.get("facebook")+" ("+a.formatFileSize(51200)+" max)");g.style.verticalAlign="bottom";g.style.paddingTop="4px";g.style.minWidth="46px";g.className="geBtn";h.appendChild(g)}7168>c.length&&(g=mxUtils.button("",function(){try{var b="https://twitter.com/intent/tweet?text="+encodeURIComponent("Check out the diagram I made using @drawio")+"&url="+encodeURIComponent(t.value);a.openLink(b)}catch(q){a.handleError({message:q.message||mxResources.get("drawingTooLarge")})}}), -d=document.createElement("img"),d.setAttribute("src",Editor.tweetImage),d.setAttribute("width","18"),d.setAttribute("height","18"),d.setAttribute("border","0"),d.style.marginBottom="5px",g.appendChild(d),g.setAttribute("title",mxResources.get("twitter")+" ("+a.formatFileSize(7168)+" max)"),g.style.verticalAlign="bottom",g.style.paddingTop="4px",g.style.minWidth="46px",g.className="geBtn",h.appendChild(g))}d=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});h.appendChild(d);g=mxUtils.button(mxResources.get("copy"), -function(){t.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?t.select():document.execCommand("selectAll",!1,null);document.execCommand("copy");a.alert(mxResources.get("copiedToClipboard"))});5E5>c.length?mxClient.IS_SF||null!=document.documentMode?d.className="geBtn gePrimaryBtn":(h.appendChild(g),g.className="geBtn gePrimaryBtn",d.className="geBtn"):(h.appendChild(p),d.className="geBtn",p.className="geBtn gePrimaryBtn");f.appendChild(h);this.container=f}; +var StorageDialog=function(b,c,a){function e(m,t,n,x,z,v){function e(){mxEvent.addListener(y,"click",null!=v?v:function(){n!=App.MODE_GOOGLE||b.isDriveDomain()?n==App.MODE_GOOGLE&&b.spinner.spin(document.body,mxResources.get("authorizing"))?b.drive.checkToken(mxUtils.bind(this,function(){b.spinner.stop();b.setMode(n,u.checked);c()})):n==App.MODE_ONEDRIVE&&b.spinner.spin(document.body,mxResources.get("authorizing"))?b.oneDrive.checkToken(mxUtils.bind(this,function(){b.spinner.stop();b.setMode(n,u.checked); +c()})):(b.setMode(n,u.checked),c()):window.location.hostname=DriveClient.prototype.newAppHostname})}var y=document.createElement("a");y.style.overflow="hidden";y.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";y.className="geBaseButton";y.style.boxSizing="border-box";y.style.fontSize="11px";y.style.position="relative";y.style.margin="4px";y.style.padding="8px 10px 12px 10px";y.style.width="88px";y.style.height="100px";y.style.whiteSpace="nowrap";y.setAttribute("title",t);mxClient.IS_QUIRKS&& +(y.style.cssFloat="left",y.style.zoom="1");var A=document.createElement("div");A.style.textOverflow="ellipsis";A.style.overflow="hidden";if(null!=m){var f=document.createElement("img");f.setAttribute("src",m);f.setAttribute("border","0");f.setAttribute("align","absmiddle");f.style.width="60px";f.style.height="60px";f.style.paddingBottom="6px";y.appendChild(f)}else A.style.paddingTop="5px",A.style.whiteSpace="normal",mxClient.IS_IOS?(y.style.padding="0px 10px 20px 10px",y.style.top="6px"):mxClient.IS_FF&& +(A.style.paddingTop="0px",A.style.marginTop="-2px");y.appendChild(A);mxUtils.write(A,t);if(null!=z)for(m=0;m<z.length;m++)mxUtils.br(A),mxUtils.write(A,z[m]);if(null!=x&&null==b[x]){f.style.visibility="hidden";mxUtils.setOpacity(A,10);var k=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});k.spin(y);var B=window.setTimeout(function(){null==b[x]&&(k.stop(),y.style.display="none")},3E4);b.addListener("clientLoaded", +mxUtils.bind(this,function(a,d){null!=b[x]&&d.getProperty("client")==b[x]&&(window.clearTimeout(B),mxUtils.setOpacity(A,100),f.style.visibility="",k.stop(),e(),"drive"==x&&null!=g.parentNode&&g.parentNode.removeChild(g))}))}else e();p.appendChild(y);++d>=a&&(mxUtils.br(p),d=0)}a=null!=a?a:2;var k=document.createElement("div");k.style.textAlign="center";k.style.whiteSpace="nowrap";k.style.paddingTop="0px";k.style.paddingBottom="20px";var f=b.addLanguageMenu(k,!0);null!=f&&(f.style.bottom=parseInt("28px")- +3+"px");if(!b.isOffline()&&1<b.getServiceCount()){f=document.createElement("a");f.setAttribute("href","https://about.draw.io/support/");f.setAttribute("title",mxResources.get("help"));f.setAttribute("target","_blank");f.style.position="absolute";f.style.textDecoration="none";f.style.cursor="pointer";f.style.fontSize="12px";f.style.bottom="28px";f.style.left="26px";f.style.color="gray";var l=document.createElement("img");mxUtils.setOpacity(l,50);l.style.height="16px";l.style.width="16px";l.setAttribute("border", +"0");l.setAttribute("valign","bottom");l.setAttribute("src",Editor.helpImage);l.style.marginRight="2px";f.appendChild(l);mxUtils.write(f,mxResources.get("help"));k.appendChild(f)}var q=document.createElement("div");q.style.position="absolute";q.style.cursor="pointer";q.style.fontSize="12px";q.style.bottom="28px";q.style.color="gray";mxUtils.write(q,mxResources.get("decideLater"));b.isOfflineApp()?q.style.right="20px":(mxUtils.setPrefixedStyle(q.style,"transform","translate(-50%,0)"),q.style.left= +"50%");this.init=function(){if(mxClient.IS_QUIRKS||8==document.documentMode)q.style.marginLeft=-Math.round(q.clientWidth/2)+"px"};k.appendChild(q);mxEvent.addListener(q,"click",function(){b.hideDialog();var a=Editor.useLocalStorage;b.createFile(b.defaultFilename,null,null,null,null,null,null,!0);Editor.useLocalStorage=a});var p=document.createElement("div");mxClient.IS_QUIRKS&&(p.style.whiteSpace="nowrap",p.style.cssFloat="left");p.style.border="1px solid #d3d3d3";p.style.borderWidth="1px 0px 1px 0px"; +p.style.padding="12px 0px 12px 0px";var u=document.createElement("input");u.setAttribute("type","checkbox");u.setAttribute("checked","checked");u.defaultChecked=!0;var d=0,g=document.createElement("p"),f=document.createElement("p");f.style.fontSize="16pt";f.style.padding="0px";f.style.paddingTop="4px";f.style.paddingBottom="16px";f.style.margin="0px";f.style.color="gray";mxUtils.write(f,mxResources.get("saveDiagramsTo")+":");k.appendChild(f);"function"===typeof window.DriveClient&&e(IMAGE_PATH+"/google-drive-logo.svg", +mxResources.get("googleDrive"),App.MODE_GOOGLE,"drive");"function"===typeof window.OneDriveClient&&e(IMAGE_PATH+"/onedrive-logo.svg",mxResources.get("oneDrive"),App.MODE_ONEDRIVE,"oneDrive");e(IMAGE_PATH+"/osa_drive-harddisk.png",mxResources.get("device"),App.MODE_DEVICE);!isLocalStorage||"1"!=urlParams.browser&&"1"!=urlParams.offline||e(IMAGE_PATH+"/osa_database.png",mxResources.get("browser"),App.MODE_BROWSER);k.appendChild(p);f=document.createElement("p");f.style.marginTop="12px";f.style.marginBottom= +"6px";f.appendChild(u);l=document.createElement("span");l.style.color="gray";l.style.fontSize="12px";mxUtils.write(l," "+mxResources.get("rememberThisSetting"));f.appendChild(l);mxUtils.br(f);var m=b.getRecent();if(null!=m&&0<m.length){var v=document.createElement("select");v.style.marginTop="8px";v.style.width="140px";var t=document.createElement("option");t.setAttribute("value","");t.setAttribute("selected","selected");t.style.textAlign="center";mxUtils.write(t,mxResources.get("openRecent")+"..."); +v.appendChild(t);for(t=0;t<m.length;t++)(function(b){var a=b.mode;a==App.MODE_GOOGLE?a="googleDrive":a==App.MODE_ONEDRIVE&&(a="oneDrive");var d=document.createElement("option");d.setAttribute("value",b.id);mxUtils.write(d,b.title+" ("+mxResources.get(a)+")");v.appendChild(d)})(m[t]);f.appendChild(v);mxEvent.addListener(v,"change",function(a){""!=v.value&&b.loadFile(v.value)})}else f.style.marginTop="20px",p.style.padding="30px 0px 26px 0px";!Graph.fileSupport||mxClient.IS_IE||mxClient.IS_IE11||(m= +document.createElement("div"),m.style.cursor="pointer",m.style.padding="18px 0px 6px 0px",m.style.fontSize="12px",m.style.color="gray",mxUtils.write(m,mxResources.get("import")+": "+mxResources.get("gliffy")+", "+mxResources.get("formatVssx")+", "+mxResources.get("formatVsdx")+", "+mxResources.get("lucidchart")+"..."),mxEvent.addListener(m,"click",function(){var a=document.createElement("input");a.setAttribute("type","file");mxEvent.addListener(a,"change",function(){null!=a.files&&(b.hideDialog(), +b.openFiles(a.files,!0))});a.click()}),f.appendChild(m),p.style.paddingBottom="4px");p.appendChild(f);mxEvent.addListener(l,"click",function(b){u.checked=!u.checked;mxEvent.consume(b)});mxClient.IS_SVG&&isLocalStorage&&"0"!=urlParams.gapi&&(null==document.documentMode||10<=document.documentMode)&&window.setTimeout(function(){null==b.drive&&(g.style.padding="8px",g.style.fontSize="9pt",g.style.marginTop="-14px",g.innerHTML='<a style="background-color:#dcdcdc;padding:5px;color:black;text-decoration:none;" href="https://plus.google.com/u/0/+DrawIo1/posts/1HTrfsb5wDN" target="_blank"><img border="0" src="'+ +mxGraph.prototype.warningImage.src+'" align="top"> '+mxResources.get("googleDriveMissingClickHere")+"</a>",k.appendChild(g))},5E3);this.container=k},SplashDialog=function(b){var c=document.createElement("div");c.style.textAlign="center";var a=b.addLanguageMenu(c,!0);null!=a&&(a.style.bottom="19px");a=null;a=b.getServiceCount();if(!b.isOffline()&&1<a){a=document.createElement("a");a.setAttribute("href","https://about.draw.io/support/");a.setAttribute("title",mxResources.get("help"));a.setAttribute("target", +"_blank");a.style.position="absolute";a.style.fontSize="12px";a.style.textDecoration="none";a.style.cursor="pointer";a.style.bottom="22px";a.style.left="26px";a.style.color="gray";var e=document.createElement("img");mxUtils.setOpacity(e,50);e.style.height="16px";e.style.width="16px";e.setAttribute("border","0");e.setAttribute("valign","bottom");e.setAttribute("src",Editor.helpImage);e.style.marginRight="2px";a.appendChild(e);mxUtils.write(a,mxResources.get("help"));c.appendChild(a)}a=document.createElement("p"); +a.style.fontSize="16pt";a.style.padding="0px";a.style.paddingTop="2px";a.style.margin="0px";a.style.color="gray";e=document.createElement("img");e.setAttribute("border","0");e.setAttribute("align","absmiddle");e.style.width="40px";e.style.height="40px";e.style.marginRight="12px";e.style.paddingBottom="4px";var k="";b.mode==App.MODE_GOOGLE?(e.src=IMAGE_PATH+"/google-drive-logo.svg",k=mxResources.get("googleDrive")):b.mode==App.MODE_DROPBOX?(e.src=IMAGE_PATH+"/dropbox-logo.svg",k=mxResources.get("dropbox")): +b.mode==App.MODE_ONEDRIVE?(e.src=IMAGE_PATH+"/onedrive-logo.svg",k=mxResources.get("oneDrive")):b.mode==App.MODE_GITHUB?(e.src=IMAGE_PATH+"/github-logo.svg",k=mxResources.get("github")):b.mode==App.MODE_TRELLO?(e.src=IMAGE_PATH+"/trello-logo.svg",k=mxResources.get("trello")):b.mode==App.MODE_BROWSER?(e.src=IMAGE_PATH+"/osa_database.png",k=mxResources.get("browser")):(e.src=IMAGE_PATH+"/osa_drive-harddisk.png",k=mxResources.get("device"));var f=document.createElement("div");f.style.margin="4px 0px 0px 0px"; +var l=document.createElement("button");l.className="geBigButton";l.style.overflow="hidden";l.style.width="340px";mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?(f.style.padding="42px 0px 56px 0px",l.style.marginBottom="12px"):(a.appendChild(e),mxUtils.write(a,k),c.appendChild(a),f.style.border="1px solid #d3d3d3",f.style.borderWidth="1px 0px 1px 0px",f.style.padding="18px 0px 24px 0px",l.style.marginBottom="8px");mxClient.IS_QUIRKS&&(f.style.whiteSpace="nowrap",f.style.cssFloat="left");mxClient.IS_QUIRKS&& +(l.style.width="340px");mxUtils.write(l,mxResources.get("createNewDiagram"));mxEvent.addListener(l,"click",function(){b.hideDialog();b.actions.get("new").funct()});f.appendChild(l);mxUtils.br(f);l=document.createElement("button");l.className="geBigButton";l.style.marginBottom="22px";l.style.overflow="hidden";l.style.width="340px";mxClient.IS_QUIRKS&&(l.style.width="340px");mxUtils.write(l,mxResources.get("openExistingDiagram"));mxEvent.addListener(l,"click",function(){b.actions.get("open").funct()}); +f.appendChild(l);b.mode==App.MODE_GOOGLE?mxResources.get("googleDrive"):b.mode==App.MODE_DROPBOX?mxResources.get("dropbox"):b.mode==App.MODE_ONEDRIVE?mxResources.get("oneDrive"):b.mode==App.MODE_GITHUB?mxResources.get("github"):b.mode==App.MODE_TRELLO?mxResources.get("trello"):b.mode==App.MODE_DEVICE?mxResources.get("device"):b.mode==App.MODE_BROWSER&&mxResources.get("browser");mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(e=function(a){l.style.marginBottom="24px";var c=document.createElement("a"); +c.setAttribute("href","javascript:void(0)");c.style.display="inline-block";c.style.marginTop="6px";mxUtils.write(c,mxResources.get("signOut"));l.style.marginBottom="16px";f.style.paddingBottom="18px";mxEvent.addListener(c,"click",function(){b.confirm(mxResources.get("areYouSure"),function(){a()})});f.appendChild(c)},a=null!=b.drive?b.drive.getUser():null,b.mode==App.MODE_GOOGLE&&null!=a?(l.style.marginBottom="24px",e=document.createElement("a"),e.setAttribute("href","javascript:void(0)"),e.style.display= +"inline-block",e.style.marginTop="6px",mxUtils.write(e,mxResources.get("changeUser")+" ("+a.displayName+")"),l.style.marginBottom="16px",f.style.paddingBottom="18px",mxEvent.addListener(e,"click",function(){b.hideDialog();b.drive.clearUserId();b.drive.setUser(null);gapi.auth.signOut();b.setMode(App.MODE_GOOGLE);b.hideDialog();b.showSplash();b.drive.authorize(!1,mxUtils.bind(this,mxUtils.bind(this,function(){b.hideDialog();b.showSplash()})),mxUtils.bind(this,function(a){b.handleError(a,null,function(){b.hideDialog(); +b.showSplash()})}))}),f.appendChild(e)):b.mode==App.MODE_ONEDRIVE&&null!=b.oneDrive?e(function(){b.oneDrive.logout()}):b.mode==App.MODE_GITHUB&&null!=b.gitHub?e(function(){b.gitHub.logout();b.openLink("https://www.github.com/logout")}):b.mode==App.MODE_TRELLO&&null!=b.trello?b.trello.isAuthorized()&&e(function(){b.trello.logout()}):b.mode==App.MODE_DROPBOX&&null!=b.dropbox&&e(function(){b.dropbox.logout();b.openLink("https://www.dropbox.com/logout")}),mxUtils.br(f),e=document.createElement("a"),e.setAttribute("href", +"javascript:void(0)"),e.style.display="inline-block",e.style.marginTop="8px",mxUtils.write(e,mxResources.get("changeStorage")),mxEvent.addListener(e,"click",function(){b.hideDialog(!1);b.setMode(null);b.clearMode();b.showSplash(!0)}),f.appendChild(e));c.appendChild(f);this.container=c},ConfirmDialog=function(b,c,a,e,k,f,l,q,p){var u=document.createElement("div");u.style.textAlign="center";var d=document.createElement("div");d.style.padding="6px";d.style.overflow="auto";d.style.maxHeight="44px";mxClient.IS_QUIRKS&& +(d.style.height="60px");mxUtils.write(d,c);u.appendChild(d);d=document.createElement("div");d.style.textAlign="center";d.style.whiteSpace="nowrap";var g=document.createElement("input");g.setAttribute("type","checkbox");f=mxUtils.button(f||mxResources.get("cancel"),function(){b.hideDialog();null!=e&&e(g.checked)});f.className="geBtn";null!=q&&(f.innerHTML=q+"<br>"+f.innerHTML,f.style.paddingBottom="8px",f.style.paddingTop="8px",f.style.height="auto",f.style.width="40%");b.editor.cancelFirst&&d.appendChild(f); +var m=mxUtils.button(k||mxResources.get("ok"),function(){b.hideDialog();null!=a&&a(g.checked)});d.appendChild(m);null!=l?(m.innerHTML=l+"<br>"+m.innerHTML+"<br>",m.style.paddingBottom="8px",m.style.paddingTop="8px",m.style.height="auto",m.className="geBtn",m.style.width="40%"):m.className="geBtn gePrimaryBtn";b.editor.cancelFirst||d.appendChild(f);u.appendChild(d);p?(d.style.marginTop="10px",d=document.createElement("p"),d.style.marginTop="20px",d.appendChild(g),k=document.createElement("span"),mxUtils.write(k, +" "+mxResources.get("rememberThisSetting")),d.appendChild(k),u.appendChild(d),mxEvent.addListener(k,"click",function(b){g.checked=!g.checked;mxEvent.consume(b)})):d.style.marginTop="16px";this.init=function(){m.focus()};this.container=u},EmbedDialog=function(b,c,a,e,k,f){e=document.createElement("div");var l=/^https?:\/\//.test(c)||/^mailto:\/\//.test(c);null!=f?mxUtils.write(e,f):mxUtils.write(e,mxResources.get(5E5>c.length?l?"link":"mainEmbedNotice":"preview")+":");mxUtils.br(e);f=document.createElement("div"); +f.style.position="absolute";f.style.top="30px";f.style.right="30px";f.style.color="gray";mxUtils.write(f,b.formatFileSize(c.length));e.appendChild(f);var q=document.createElement("textarea");q.setAttribute("autocomplete","off");q.setAttribute("autocorrect","off");q.setAttribute("autocapitalize","off");q.setAttribute("spellcheck","false");q.style.marginTop="10px";q.style.resize="none";q.style.height="150px";q.style.width="440px";q.style.border="1px solid gray";q.value=mxResources.get("updatingDocument"); +e.appendChild(q);mxUtils.br(e);this.init=function(){window.setTimeout(function(){5E5>c.length?(q.value=c,q.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?q.select():document.execCommand("selectAll",!1,null)):(q.setAttribute("readonly","true"),q.value=c.substring(0,340)+"... ("+mxResources.get("drawingTooLarge")+")")},0)};f=document.createElement("div");f.style.position="absolute";f.style.bottom="36px";f.style.right="32px";var p=null;!EmbedDialog.showPreviewOption|| +mxClient.IS_CHROMEAPP&&!l||navigator.standalone||!(l||mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode))||(p=mxUtils.button(mxResources.get(5E5>c.length?"preview":"openInNewWindow"),function(){var d=5E5>c.length?q.value:c;if(null!=k)k(d);else if(l)try{var m=b.openLink(d);null!=m&&(null==a||0<a)&&window.setTimeout(mxUtils.bind(this,function(){null!=m&&null!=m.location.href&&m.location.href.substring(0,8)!=d.substring(0,8)&&(m.close(),b.handleError({message:mxResources.get("drawingTooLarge")}))}), +a||500)}catch(t){b.handleError({message:t.message||mxResources.get("drawingTooLarge")})}else{var v=window.open(),v=null!=v?v.document:null;null!=v?(v.writeln("<html><head><title>"+encodeURIComponent(mxResources.get("preview"))+'</title><meta charset="utf-8"></head><body>'+c+"</body></html>"),v.close()):b.handleError({message:mxResources.get("errorUpdatingPreview")})}}),p.className="geBtn",f.appendChild(p));if(!l||7500<c.length){var u=mxUtils.button(mxResources.get("download"),function(){b.hideDialog(); +b.saveData("embed.txt","txt",c,"text/plain")});u.className="geBtn";f.appendChild(u)}if(l&&(!b.isOffline()||mxClient.IS_CHROMEAPP)){if(51200>c.length){var d=mxUtils.button("",function(){try{var a="https://www.facebook.com/sharer.php?p[url]="+encodeURIComponent(q.value);b.openLink(a)}catch(m){b.handleError({message:m.message||mxResources.get("drawingTooLarge")})}}),u=document.createElement("img");u.setAttribute("src",Editor.facebookImage);u.setAttribute("width","18");u.setAttribute("height","18");u.setAttribute("border", +"0");d.appendChild(u);d.setAttribute("title",mxResources.get("facebook")+" ("+b.formatFileSize(51200)+" max)");d.style.verticalAlign="bottom";d.style.paddingTop="4px";d.style.minWidth="46px";d.className="geBtn";f.appendChild(d)}7168>c.length&&(d=mxUtils.button("",function(){try{var a="https://twitter.com/intent/tweet?text="+encodeURIComponent("Check out the diagram I made using @drawio")+"&url="+encodeURIComponent(q.value);b.openLink(a)}catch(m){b.handleError({message:m.message||mxResources.get("drawingTooLarge")})}}), +u=document.createElement("img"),u.setAttribute("src",Editor.tweetImage),u.setAttribute("width","18"),u.setAttribute("height","18"),u.setAttribute("border","0"),u.style.marginBottom="5px",d.appendChild(u),d.setAttribute("title",mxResources.get("twitter")+" ("+b.formatFileSize(7168)+" max)"),d.style.verticalAlign="bottom",d.style.paddingTop="4px",d.style.minWidth="46px",d.className="geBtn",f.appendChild(d))}u=mxUtils.button(mxResources.get("close"),function(){b.hideDialog()});f.appendChild(u);d=mxUtils.button(mxResources.get("copy"), +function(){q.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?q.select():document.execCommand("selectAll",!1,null);document.execCommand("copy");b.alert(mxResources.get("copiedToClipboard"))});5E5>c.length?mxClient.IS_SF||null!=document.documentMode?u.className="geBtn gePrimaryBtn":(f.appendChild(d),d.className="geBtn gePrimaryBtn",u.className="geBtn"):(f.appendChild(p),u.className="geBtn",p.className="geBtn gePrimaryBtn");e.appendChild(f);this.container=e}; EmbedDialog.showPreviewOption=!0; -var GoogleSitesDialog=function(a,c){function b(){var a=null!=B&&null!=B.getTitle()?B.getTitle():this.defaultFilename;if(F.checked&&""!=q.value){var b="https://www.draw.io/gadget.xml?type=4&diagram="+encodeURIComponent(mxUtils.htmlEntities(q.value));null!=a&&(b+="&title="+encodeURIComponent(a));0<C.length&&(b+="&s="+C);""!=u.value&&"0"!=u.value&&(b+="&border="+u.value);""!=n.value&&(b+="&height="+n.value);b+="&pan="+(v.checked?"1":"0");b+="&zoom="+(w.checked?"1":"0");b+="&fit="+(z.checked?"1":"0"); -b+="&resize="+(x.checked?"1":"0");b+="&x0="+Number(g.value);b+="&y0="+p;k.mathEnabled&&(b+="&math=1");m.checked?b+="&edit=_blank":y.checked&&(b+="&edit="+encodeURIComponent(mxUtils.htmlEntities(window.location.href)));d.value=b}else B.constructor==DriveFile||B.constructor==DropboxFile?(b="https://www.draw.io/gadget.xml?embed=0&diagram=",""!=q.value?b+=encodeURIComponent(mxUtils.htmlEntities(q.value))+"&type=3":(b+=B.getHash().substring(1),b=B.constructor==DropboxFile?b+"&type=2":b+"&type=1"),null!= -a&&(b+="&title="+encodeURIComponent(a)),""!=n.value&&(a=parseInt(n.value)+parseInt(g.value),b+="&height="+a),d.value=b):d.value=""}var f=document.createElement("div"),k=a.editor.graph,h=k.getGraphBounds(),l=k.view.scale,t=Math.floor(h.x/l-k.view.translate.x),p=Math.floor(h.y/l-k.view.translate.y);mxUtils.write(f,mxResources.get("googleGadget")+":");mxUtils.br(f);var d=document.createElement("input");d.setAttribute("type","text");d.style.marginBottom="8px";d.style.marginTop="2px";d.style.width="410px"; -f.appendChild(d);mxUtils.br(f);this.init=function(){d.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?d.select():document.execCommand("selectAll",!1,null)};mxUtils.write(f,mxResources.get("top")+":");var g=document.createElement("input");g.setAttribute("type","text");g.setAttribute("size","4");g.style.marginRight="16px";g.style.marginLeft="4px";g.value=t;f.appendChild(g);mxUtils.write(f,mxResources.get("height")+":");var n=document.createElement("input");n.setAttribute("type", -"text");n.setAttribute("size","4");n.style.marginLeft="4px";n.value=Math.ceil(h.height/l);f.appendChild(n);mxUtils.br(f);h=document.createElement("hr");h.setAttribute("size","1");h.style.marginBottom="16px";h.style.marginTop="16px";f.appendChild(h);mxUtils.write(f,mxResources.get("publicDiagramUrl")+":");mxUtils.br(f);var q=document.createElement("input");q.setAttribute("type","text");q.setAttribute("size","28");q.style.marginBottom="8px";q.style.marginTop="2px";q.style.width="410px";q.value=c||""; -f.appendChild(q);mxUtils.br(f);mxUtils.write(f,mxResources.get("borderWidth")+":");var u=document.createElement("input");u.setAttribute("type","text");u.setAttribute("size","3");u.style.marginBottom="8px";u.style.marginLeft="4px";u.value="0";f.appendChild(u);mxUtils.br(f);var v=document.createElement("input");v.setAttribute("type","checkbox");v.setAttribute("checked","checked");v.defaultChecked=!0;v.style.marginLeft="16px";f.appendChild(v);mxUtils.write(f,mxResources.get("pan")+" ");var w=document.createElement("input"); -w.setAttribute("type","checkbox");w.setAttribute("checked","checked");w.defaultChecked=!0;w.style.marginLeft="8px";f.appendChild(w);mxUtils.write(f,mxResources.get("zoom")+" ");var y=document.createElement("input");y.setAttribute("type","checkbox");y.style.marginLeft="8px";y.setAttribute("title",window.location.href);f.appendChild(y);mxUtils.write(f,mxResources.get("edit")+" ");var m=document.createElement("input");m.setAttribute("type","checkbox");m.style.marginLeft="8px";f.appendChild(m);mxUtils.write(f, -mxResources.get("asNew")+" ");mxUtils.br(f);var x=document.createElement("input");x.setAttribute("type","checkbox");x.setAttribute("checked","checked");x.defaultChecked=!0;x.style.marginLeft="16px";f.appendChild(x);mxUtils.write(f,mxResources.get("resize")+" ");var z=document.createElement("input");z.setAttribute("type","checkbox");z.style.marginLeft="8px";f.appendChild(z);mxUtils.write(f,mxResources.get("fit")+" ");var F=document.createElement("input");F.setAttribute("type","checkbox");F.style.marginLeft= -"8px";f.appendChild(F);mxUtils.write(f,mxResources.get("embed")+" ");var C=a.getBasenames().join(";"),B=a.getCurrentFile();mxEvent.addListener(v,"change",b);mxEvent.addListener(w,"change",b);mxEvent.addListener(x,"change",b);mxEvent.addListener(z,"change",b);mxEvent.addListener(y,"change",b);mxEvent.addListener(m,"change",b);mxEvent.addListener(F,"change",b);mxEvent.addListener(n,"change",b);mxEvent.addListener(g,"change",b);mxEvent.addListener(u,"change",b);mxEvent.addListener(q,"change",b);b(); -mxEvent.addListener(d,"click",function(){d.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?d.select():document.execCommand("selectAll",!1,null)});h=document.createElement("div");h.style.paddingTop="12px";h.style.textAlign="right";l=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});l.className="geBtn gePrimaryBtn";h.appendChild(l);f.appendChild(h);this.container=f},CreateGraphDialog=function(a,c,b){var f=document.createElement("div");f.style.textAlign= -"right";this.init=function(){var c=document.createElement("div");c.style.position="relative";c.style.border="1px solid gray";c.style.width="100%";c.style.height="360px";c.style.overflow="hidden";c.style.marginBottom="16px";mxEvent.disableContextMenu(c);f.appendChild(c);var h=new Graph(c);h.setCellsCloneable(!0);h.setPanning(!0);h.setAllowDanglingEdges(!1);h.connectionHandler.select=!1;h.view.setTranslate(20,20);h.border=20;h.panningHandler.useLeftButtonForPanning=!0;var l="curved=1;";h.cellRenderer.installCellOverlayListeners= -function(a,b,d){mxCellRenderer.prototype.installCellOverlayListeners.apply(this,arguments);mxEvent.addListener(d.node,mxClient.IS_POINTER?"pointerdown":"mousedown",function(d){b.fireEvent(new mxEventObject("pointerdown","event",d,"state",a))});!mxClient.IS_POINTER&&mxClient.IS_TOUCH&&mxEvent.addListener(d.node,"touchstart",function(d){b.fireEvent(new mxEventObject("pointerdown","event",d,"state",a))})};h.getAllConnectionConstraints=function(){return null};h.connectionHandler.marker.highlight.keepOnTop= -!1;h.connectionHandler.createEdgeState=function(a){a=h.createEdge(null,null,null,null,null,l);return new mxCellState(this.graph.view,a,this.graph.getCellStyle(a))};var t=h.getDefaultParent(),p=mxUtils.bind(this,function(a){var b=new mxCellOverlay(this.connectImage,"Add outgoing");b.cursor="hand";b.addListener(mxEvent.CLICK,function(b,d){h.connectionHandler.reset();h.clearSelection();var g=h.getCellGeometry(a),m;n(function(){m=h.insertVertex(t,null,"Entry",g.x,g.y,80,30,"rounded=1;");p(m);h.view.refresh(m); -h.insertEdge(t,null,"",a,m,l)},function(){h.scrollCellToVisible(m)})});b.addListener("pointerdown",function(a,b){var d=b.getProperty("event"),g=b.getProperty("state");h.popupMenuHandler.hideMenu();h.stopEditing(!1);var m=mxUtils.convertPoint(h.container,mxEvent.getClientX(d),mxEvent.getClientY(d));h.connectionHandler.start(g,m.x,m.y);h.isMouseDown=!0;h.isMouseTrigger=mxEvent.isMouseEvent(d);mxEvent.consume(d)});h.addCellOverlay(a,b)});h.getModel().beginUpdate();var d;try{d=h.insertVertex(t,null,"Start", -0,0,80,30,"ellipse"),p(d)}finally{h.getModel().endUpdate()}var g;"horizontalTree"==b?(g=new mxCompactTreeLayout(h),g.edgeRouting=!1,g.levelDistance=30,l="edgeStyle=elbowEdgeStyle;elbow=horizontal;"):"verticalTree"==b?(g=new mxCompactTreeLayout(h,!1),g.edgeRouting=!1,g.levelDistance=30,l="edgeStyle=elbowEdgeStyle;elbow=vertical;"):"radialTree"==b?(g=new mxRadialTreeLayout(h,!1),g.edgeRouting=!1,g.levelDistance=80):"verticalFlow"==b?g=new mxHierarchicalLayout(h,mxConstants.DIRECTION_NORTH):"horizontalFlow"== -b?g=new mxHierarchicalLayout(h,mxConstants.DIRECTION_WEST):"organic"==b?(g=new mxFastOrganicLayout(h,!1),g.forceConstant=80):"circle"==b&&(g=new mxCircleLayout(h));if(null!=g){var n=function(a,b){h.getModel().beginUpdate();try{null!=a&&a(),g.execute(h.getDefaultParent(),d)}catch(x){throw x;}finally{var m=new mxMorphing(h);m.addListener(mxEvent.DONE,mxUtils.bind(this,function(){h.getModel().endUpdate();null!=b&&b()}));m.startAnimation()}},q=mxEdgeHandler.prototype.connect;mxEdgeHandler.prototype.connect= -function(a,b,d,g,c){q.apply(this,arguments);n()};h.resizeCell=function(){mxGraph.prototype.resizeCell.apply(this,arguments);n()};h.connectionHandler.addListener(mxEvent.CONNECT,function(){n()})}var u=mxUtils.button(mxResources.get("close"),function(){a.confirm(mxResources.get("areYouSure"),function(){null!=c.parentNode&&(h.destroy(),c.parentNode.removeChild(c));a.hideDialog()})});u.className="geBtn";a.editor.cancelFirst&&f.appendChild(u);var v=mxUtils.button(mxResources.get("insert"),function(){h.clearCellOverlays(); -var b=a.editor.graph.getFreeInsertPoint(),b=a.editor.graph.importCells(h.getModel().getChildren(h.getDefaultParent()),b.x,b.y),d=a.editor.graph.view,g=d.getBounds(b);g.x-=d.translate.x;g.y-=d.translate.y;a.editor.graph.scrollRectToVisible(g);a.editor.graph.setSelectionCells(b);null!=c.parentNode&&(h.destroy(),c.parentNode.removeChild(c));a.hideDialog()});f.appendChild(v);v.className="geBtn gePrimaryBtn";a.editor.cancelFirst||f.appendChild(u)};this.container=f}; +var GoogleSitesDialog=function(b,c){function a(){var b=null!=E&&null!=E.getTitle()?E.getTitle():this.defaultFilename;if(A.checked&&""!=m.value){var a="https://www.draw.io/gadget.xml?type=4&diagram="+encodeURIComponent(mxUtils.htmlEntities(m.value));null!=b&&(a+="&title="+encodeURIComponent(b));0<F.length&&(a+="&s="+F);""!=v.value&&"0"!=v.value&&(a+="&border="+v.value);""!=g.value&&(a+="&height="+g.value);a+="&pan="+(t.checked?"1":"0");a+="&zoom="+(y.checked?"1":"0");a+="&fit="+(z.checked?"1":"0"); +a+="&resize="+(x.checked?"1":"0");a+="&x0="+Number(d.value);a+="&y0="+p;k.mathEnabled&&(a+="&math=1");n.checked?a+="&edit=_blank":B.checked&&(a+="&edit="+encodeURIComponent(mxUtils.htmlEntities(window.location.href)));u.value=a}else E.constructor==DriveFile||E.constructor==DropboxFile?(a="https://www.draw.io/gadget.xml?embed=0&diagram=",""!=m.value?a+=encodeURIComponent(mxUtils.htmlEntities(m.value))+"&type=3":(a+=E.getHash().substring(1),a=E.constructor==DropboxFile?a+"&type=2":a+"&type=1"),null!= +b&&(a+="&title="+encodeURIComponent(b)),""!=g.value&&(b=parseInt(g.value)+parseInt(d.value),a+="&height="+b),u.value=a):u.value=""}var e=document.createElement("div"),k=b.editor.graph,f=k.getGraphBounds(),l=k.view.scale,q=Math.floor(f.x/l-k.view.translate.x),p=Math.floor(f.y/l-k.view.translate.y);mxUtils.write(e,mxResources.get("googleGadget")+":");mxUtils.br(e);var u=document.createElement("input");u.setAttribute("type","text");u.style.marginBottom="8px";u.style.marginTop="2px";u.style.width="410px"; +e.appendChild(u);mxUtils.br(e);this.init=function(){u.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?u.select():document.execCommand("selectAll",!1,null)};mxUtils.write(e,mxResources.get("top")+":");var d=document.createElement("input");d.setAttribute("type","text");d.setAttribute("size","4");d.style.marginRight="16px";d.style.marginLeft="4px";d.value=q;e.appendChild(d);mxUtils.write(e,mxResources.get("height")+":");var g=document.createElement("input");g.setAttribute("type", +"text");g.setAttribute("size","4");g.style.marginLeft="4px";g.value=Math.ceil(f.height/l);e.appendChild(g);mxUtils.br(e);f=document.createElement("hr");f.setAttribute("size","1");f.style.marginBottom="16px";f.style.marginTop="16px";e.appendChild(f);mxUtils.write(e,mxResources.get("publicDiagramUrl")+":");mxUtils.br(e);var m=document.createElement("input");m.setAttribute("type","text");m.setAttribute("size","28");m.style.marginBottom="8px";m.style.marginTop="2px";m.style.width="410px";m.value=c||""; +e.appendChild(m);mxUtils.br(e);mxUtils.write(e,mxResources.get("borderWidth")+":");var v=document.createElement("input");v.setAttribute("type","text");v.setAttribute("size","3");v.style.marginBottom="8px";v.style.marginLeft="4px";v.value="0";e.appendChild(v);mxUtils.br(e);var t=document.createElement("input");t.setAttribute("type","checkbox");t.setAttribute("checked","checked");t.defaultChecked=!0;t.style.marginLeft="16px";e.appendChild(t);mxUtils.write(e,mxResources.get("pan")+" ");var y=document.createElement("input"); +y.setAttribute("type","checkbox");y.setAttribute("checked","checked");y.defaultChecked=!0;y.style.marginLeft="8px";e.appendChild(y);mxUtils.write(e,mxResources.get("zoom")+" ");var B=document.createElement("input");B.setAttribute("type","checkbox");B.style.marginLeft="8px";B.setAttribute("title",window.location.href);e.appendChild(B);mxUtils.write(e,mxResources.get("edit")+" ");var n=document.createElement("input");n.setAttribute("type","checkbox");n.style.marginLeft="8px";e.appendChild(n);mxUtils.write(e, +mxResources.get("asNew")+" ");mxUtils.br(e);var x=document.createElement("input");x.setAttribute("type","checkbox");x.setAttribute("checked","checked");x.defaultChecked=!0;x.style.marginLeft="16px";e.appendChild(x);mxUtils.write(e,mxResources.get("resize")+" ");var z=document.createElement("input");z.setAttribute("type","checkbox");z.style.marginLeft="8px";e.appendChild(z);mxUtils.write(e,mxResources.get("fit")+" ");var A=document.createElement("input");A.setAttribute("type","checkbox");A.style.marginLeft= +"8px";e.appendChild(A);mxUtils.write(e,mxResources.get("embed")+" ");var F=b.getBasenames().join(";"),E=b.getCurrentFile();mxEvent.addListener(t,"change",a);mxEvent.addListener(y,"change",a);mxEvent.addListener(x,"change",a);mxEvent.addListener(z,"change",a);mxEvent.addListener(B,"change",a);mxEvent.addListener(n,"change",a);mxEvent.addListener(A,"change",a);mxEvent.addListener(g,"change",a);mxEvent.addListener(d,"change",a);mxEvent.addListener(v,"change",a);mxEvent.addListener(m,"change",a);a(); +mxEvent.addListener(u,"click",function(){u.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?u.select():document.execCommand("selectAll",!1,null)});f=document.createElement("div");f.style.paddingTop="12px";f.style.textAlign="right";l=mxUtils.button(mxResources.get("close"),function(){b.hideDialog()});l.className="geBtn gePrimaryBtn";f.appendChild(l);e.appendChild(f);this.container=e},CreateGraphDialog=function(b,c,a){var e=document.createElement("div");e.style.textAlign= +"right";this.init=function(){var c=document.createElement("div");c.style.position="relative";c.style.border="1px solid gray";c.style.width="100%";c.style.height="360px";c.style.overflow="hidden";c.style.marginBottom="16px";mxEvent.disableContextMenu(c);e.appendChild(c);var f=new Graph(c);f.setCellsCloneable(!0);f.setPanning(!0);f.setAllowDanglingEdges(!1);f.connectionHandler.select=!1;f.view.setTranslate(20,20);f.border=20;f.panningHandler.useLeftButtonForPanning=!0;var l="curved=1;";f.cellRenderer.installCellOverlayListeners= +function(b,a,d){mxCellRenderer.prototype.installCellOverlayListeners.apply(this,arguments);mxEvent.addListener(d.node,mxClient.IS_POINTER?"pointerdown":"mousedown",function(d){a.fireEvent(new mxEventObject("pointerdown","event",d,"state",b))});!mxClient.IS_POINTER&&mxClient.IS_TOUCH&&mxEvent.addListener(d.node,"touchstart",function(d){a.fireEvent(new mxEventObject("pointerdown","event",d,"state",b))})};f.getAllConnectionConstraints=function(){return null};f.connectionHandler.marker.highlight.keepOnTop= +!1;f.connectionHandler.createEdgeState=function(b){b=f.createEdge(null,null,null,null,null,l);return new mxCellState(this.graph.view,b,this.graph.getCellStyle(b))};var q=f.getDefaultParent(),p=mxUtils.bind(this,function(b){var a=new mxCellOverlay(this.connectImage,"Add outgoing");a.cursor="hand";a.addListener(mxEvent.CLICK,function(a,d){f.connectionHandler.reset();f.clearSelection();var c=f.getCellGeometry(b),m;g(function(){m=f.insertVertex(q,null,"Entry",c.x,c.y,80,30,"rounded=1;");p(m);f.view.refresh(m); +f.insertEdge(q,null,"",b,m,l)},function(){f.scrollCellToVisible(m)})});a.addListener("pointerdown",function(b,a){var d=a.getProperty("event"),g=a.getProperty("state");f.popupMenuHandler.hideMenu();f.stopEditing(!1);var c=mxUtils.convertPoint(f.container,mxEvent.getClientX(d),mxEvent.getClientY(d));f.connectionHandler.start(g,c.x,c.y);f.isMouseDown=!0;f.isMouseTrigger=mxEvent.isMouseEvent(d);mxEvent.consume(d)});f.addCellOverlay(b,a)});f.getModel().beginUpdate();var u;try{u=f.insertVertex(q,null,"Start", +0,0,80,30,"ellipse"),p(u)}finally{f.getModel().endUpdate()}var d;"horizontalTree"==a?(d=new mxCompactTreeLayout(f),d.edgeRouting=!1,d.levelDistance=30,l="edgeStyle=elbowEdgeStyle;elbow=horizontal;"):"verticalTree"==a?(d=new mxCompactTreeLayout(f,!1),d.edgeRouting=!1,d.levelDistance=30,l="edgeStyle=elbowEdgeStyle;elbow=vertical;"):"radialTree"==a?(d=new mxRadialTreeLayout(f,!1),d.edgeRouting=!1,d.levelDistance=80):"verticalFlow"==a?d=new mxHierarchicalLayout(f,mxConstants.DIRECTION_NORTH):"horizontalFlow"== +a?d=new mxHierarchicalLayout(f,mxConstants.DIRECTION_WEST):"organic"==a?(d=new mxFastOrganicLayout(f,!1),d.forceConstant=80):"circle"==a&&(d=new mxCircleLayout(f));if(null!=d){var g=function(b,a){f.getModel().beginUpdate();try{null!=b&&b(),d.execute(f.getDefaultParent(),u)}catch(x){throw x;}finally{var g=new mxMorphing(f);g.addListener(mxEvent.DONE,mxUtils.bind(this,function(){f.getModel().endUpdate();null!=a&&a()}));g.startAnimation()}},m=mxEdgeHandler.prototype.connect;mxEdgeHandler.prototype.connect= +function(b,a,d,c,t){m.apply(this,arguments);g()};f.resizeCell=function(){mxGraph.prototype.resizeCell.apply(this,arguments);g()};f.connectionHandler.addListener(mxEvent.CONNECT,function(){g()})}var v=mxUtils.button(mxResources.get("close"),function(){b.confirm(mxResources.get("areYouSure"),function(){null!=c.parentNode&&(f.destroy(),c.parentNode.removeChild(c));b.hideDialog()})});v.className="geBtn";b.editor.cancelFirst&&e.appendChild(v);var t=mxUtils.button(mxResources.get("insert"),function(){f.clearCellOverlays(); +var a=b.editor.graph.getFreeInsertPoint(),a=b.editor.graph.importCells(f.getModel().getChildren(f.getDefaultParent()),a.x,a.y),d=b.editor.graph.view,g=d.getBounds(a);g.x-=d.translate.x;g.y-=d.translate.y;b.editor.graph.scrollRectToVisible(g);b.editor.graph.setSelectionCells(a);null!=c.parentNode&&(f.destroy(),c.parentNode.removeChild(c));b.hideDialog()});e.appendChild(t);t.className="geBtn gePrimaryBtn";b.editor.cancelFirst||e.appendChild(v)};this.container=e}; CreateGraphDialog.prototype.connectImage=new mxImage(mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjQ3OTk0QjMyRDcyMTFFNThGQThGNDVBMjNBMjFDMzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjQ3OTk0QjQyRDcyMTFFNThGQThGNDVBMjNBMjFDMzkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyRjA0N0I2MjJENzExMUU1OEZBOEY0NUEyM0EyMUMzOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGNDc5OTRCMjJENzIxMUU1OEZBOEY0NUEyM0EyMUMzOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PjIf+MgAAATlSURBVHjanFZraFxFFD735u4ru3ls0yZG26ShgmJoKK1J2vhIYzBgRdtIURHyw1hQUH9IxIgI2h8iCEUF/1RRlNQYCsYfCTHVhiTtNolpZCEStqSC22xIsrs1bDfu7t37Gs/cO3Ozxs1DBw73zpk555vzmHNGgJ0NYatFgmNLYUHYUoHASMz5ijmgVLmxgfKCUiBxC4ACJAeSG8nb1dVVOTc3dyoSibwWDofPBIPBJzo7O8vpGtvjpDICGztxkciECpF2LS0tvZtOpwNkk5FKpcYXFxffwL1+JuPgllPj8nk1F6RoaGjoKCqZ5ApljZDZO4SMRA0SuG2QUJIQRV8HxMOM9vf3H0ZZH9Nhg20MMl2QkFwjIyNHWlpahtADnuUMwLcRHX5aNSBjCJYEsSSLUeLEbhGe3ytCmQtA1/XY+Pj46dbW1iDuyCJp9BC5ycBj4hoeHq5ra2sbw0Xn1ZgBZ+dVkA1Lc+6p0Ck2p0QS4Ox9EhwpEylYcmBg4LH29vYQLilIOt0u5FhDfevNZDI/u93uw6PLOrwTUtjxrbPYbhD42WgMrF8JmR894ICmCgnQjVe8Xu8pXEkzMJKbuo5oNPomBbm1ZsD7s2kwFA1JZ6QBUXWT1nmGNc/qoMgavDcrQzxjQGFh4aOYIJ0sFAXcEtui4uLiVjr5KpSBVFYDDZVrWUaKRRWSAYeK0fmKykgDXbVoNaPChRuyqdDv97czL5nXxQbq6empQmsaklkDBiNpSwFVrmr2P6UyicD5piI4f8wHh0oEm8/p4h8pyGiEWvVQd3e3nxtjAzU1NR2jP7NRBWQ8GbdEzzJAmc0V3RR4cI8Dvmwuhc8fKUFA0d6/ltHg5p+Kuaejo6OeY0jcNJ/PV00ZS0nFUoZRvvFS1bZFsKHCCQ2Pl8H0chY+C96B6ZUsrCQ1qKtwQVFRURW/QhIXMAzDPAZ6BgOr8tTa8dDxCmiYGApaJbJMxSzV+brE8pdgWkcpY5dbMF1AR9XH8/xu2ilef48bvn92n82ZwHh+8ssqTEXS9p7dHisiiURikd8PbpExNTU1UVNTA3V3Y7lC16n0gpB/NwpNcZjfa7dScC4Qh0kOQCwnlEgi3F/hMVl9fX0zvKrzSk2lfXjRhj0eT/2rvWG4+Pta3oJY7XfC3hInXAv/ldeFLx8shQ+eqQL0UAAz7ylkpej5eNZRVBWL6BU6ef14OYiY1oqyTtmsavr/5koaRucT1pzx+ZpL1+GV5nLutksUgIcmtwTRiuuVZXnU5XId7A2swJkfFsymRWC91hHg1Viw6x23+7vn9sPJ+j20BE1hCXqSWaNSQ8ScbknRZWxub1PGCw/fBV+c3AeijlUbY5bBjEqr9GuYZP4jP41WudGSC6erTRCqdGZm5i1WvXWeDHnbBCZGc2Nj4wBl/hZOwrmBBfgmlID1HmGJutHaF+tKoevp/XCgstDkjo2NtWKLuc6AVN4mNjY+s1XQxoenOoFuDPHGtnRbJj9ej5GvL0dI7+giuRyMk1giazc+DP6vgUDgOJVlOv7R+PJ12QIeL6SyeDz+Kfp8ZrNWjgDTsVjsQ7qXyTjztXJhm9ePxFLfMTg4eG9tbe1RTP9KFFYQfHliYmIS69kCC7jKYmKwxxD5P88tkVkqbPPcIps9t4T/+HjcuJ/s5BFJgf4WYABCtxGuxIZ90gAAAABJRU5ErkJggg==": IMAGE_PATH+"/handle-connect.png",26,26); -var BackgroundImageDialog=function(a,c){var b=document.createElement("div");b.style.whiteSpace="nowrap";var f=document.createElement("h2");mxUtils.write(f,mxResources.get("backgroundImage"));f.style.marginTop="0px";b.appendChild(f);mxUtils.write(b,mxResources.get("image")+" "+mxResources.get("url")+":");mxUtils.br(b);var f=a.editor.graph.backgroundImage,k=document.createElement("input");k.setAttribute("type","text");k.style.marginTop="4px";k.style.marginBottom="4px";k.style.width="350px";k.value= -null!=f?f.src:"";var h=!1,l=function(){h||""==k.value||a.isOffline()?(t.value="",p.value=""):a.loadImage(mxUtils.trim(k.value),function(a){t.value=a.width;p.value=a.height},function(){a.showError(mxResources.get("error"),mxResources.get("fileNotFound"),mxResources.get("ok"));k.value="";t.value="";p.value=""})};this.init=function(){k.focus();if(Graph.fileSupport){k.setAttribute("placeholder",mxResources.get("dragImagesHere"));var d=b.parentNode,g=null;mxEvent.addListener(d,"dragleave",function(a){null!= -g&&(g.parentNode.removeChild(g),g=null);a.stopPropagation();a.preventDefault()});mxEvent.addListener(d,"dragover",mxUtils.bind(this,function(b){null==g&&(!mxClient.IS_IE||10<document.documentMode)&&(g=a.highlightElement(d));b.stopPropagation();b.preventDefault()}));mxEvent.addListener(d,"drop",mxUtils.bind(this,function(b){null!=g&&(g.parentNode.removeChild(g),g=null);if(0<b.dataTransfer.files.length)a.importFiles(b.dataTransfer.files,0,0,a.maxBackgroundSize,function(a,b,d,g,c,n){k.value=a;l()},function(){}, -function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b=0;b<a.length;b++)a[b]()},!0,a.maxBackgroundBytes,a.maxBackgroundBytes);else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")){var d=b.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(d)&&(k.value=decodeURIComponent(d),l())}b.stopPropagation();b.preventDefault()}),!1)}};b.appendChild(k);mxUtils.br(b);mxUtils.br(b);mxUtils.write(b,mxResources.get("width")+":");var t=document.createElement("input"); -t.setAttribute("type","text");t.style.width="60px";t.style.marginLeft="4px";t.style.marginRight="16px";t.value=null!=f?f.width:"";b.appendChild(t);mxUtils.write(b,mxResources.get("height")+":");var p=document.createElement("input");p.setAttribute("type","text");p.style.width="60px";p.style.marginLeft="4px";p.style.marginRight="16px";p.value=null!=f?f.height:"";b.appendChild(p);f=mxUtils.button(mxResources.get("reset"),function(){k.value="";t.value="";p.value="";h=!1});mxEvent.addListener(f,"mousedown", -function(){h=!0});mxEvent.addListener(f,"touchstart",function(){h=!0});f.className="geBtn";f.width="100";b.appendChild(f);mxUtils.br(b);mxEvent.addListener(k,"change",l);ImageDialog.filePicked=function(a){a.action==google.picker.Action.PICKED&&null!=a.docs[0].thumbnails&&(a=a.docs[0].thumbnails[a.docs[0].thumbnails.length-1],null!=a&&(k.value=a.url,l()));k.focus()};f=document.createElement("div");f.style.marginTop="40px";f.style.textAlign="right";var d=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()}); -d.className="geBtn";a.editor.cancelFirst&&f.appendChild(d);if(!a.isOffline()&&"undefined"!=typeof google&&"undefined"!=typeof google.picker&&window.self===window.top){var g=mxUtils.button(mxResources.get("search"),function(){if(null==a.imageSearchPicker){var b=(new google.picker.PickerBuilder).setLocale(mxLanguage).addView(google.picker.ViewId.IMAGE_SEARCH).enableFeature(google.picker.Feature.NAV_HIDDEN);a.imageSearchPicker=b.setCallback(function(a){ImageDialog.filePicked(a)}).build()}a.imageSearchPicker.setVisible(!0)}); -g.className="geBtn";f.appendChild(g);null!=a.drive&&"1"==urlParams.photos&&(g=mxUtils.button(mxResources.get("googlePlus"),function(){a.spinner.spin(document.body,mxResources.get("authorizing"))&&a.drive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();if(null==a.photoPicker){var b=gapi.auth.getToken().access_token,b=(new google.picker.PickerBuilder).setAppId(a.drive.appId).setLocale(mxLanguage).setOAuthToken(b).addView(google.picker.ViewId.PHOTOS).addView(google.picker.ViewId.PHOTO_ALBUMS).addView(google.picker.ViewId.PHOTO_UPLOAD); -a.photoPicker=b.setCallback(function(a){ImageDialog.filePicked(a)}).build()}a.photoPicker.setVisible(!0)}))}),g.className="geBtn",f.appendChild(g))}g=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();c(""!=k.value?new mxImage(mxUtils.trim(k.value),t.value,p.value):null)});g.className="geBtn gePrimaryBtn";f.appendChild(g);a.editor.cancelFirst||f.appendChild(d);b.appendChild(f);this.container=b},ParseDialog=function(a,c,b){function f(b,d){var g=b.split("\n");if("plantUmlPng"==d||"plantUmlSvg"== -d||"plantUmlTxt"==d){var g="plantUmlTxt"==d?PLANT_URL+"/txt/":"plantUmlPng"==d?PLANT_URL+"/png/":PLANT_URL+"/svg/",c=a.editor.graph;if(a.spinner.spin(document.body,mxResources.get("inserting"))){var n=function(a){if(10>a)return String.fromCharCode(48+a);a-=10;if(26>a)return String.fromCharCode(65+a);a-=26;if(26>a)return String.fromCharCode(97+a);a-=26;return 0==a?"-":1==a?"_":"?"},m=function(a,b,d){c1=a>>2;c2=(a&3)<<4|b>>4;c3=(b&15)<<2|d>>6;c4=d&63;r="";r+=n(c1&63);r+=n(c2&63);r+=n(c3&63);return r+= -n(c4&63)},q=new XMLHttpRequest;q.open("GET",g+function(a){r="";for(l=0;l<a.length;l+=3)r=l+2==a.length?r+m(a.charCodeAt(l),a.charCodeAt(l+1),0):l+1==a.length?r+m(a.charCodeAt(l),0,0):r+m(a.charCodeAt(l),a.charCodeAt(l+1),a.charCodeAt(l+2));return r}(c.bytesToString(pako.deflateRaw(unescape(encodeURIComponent(b))))),!0);"plantUmlTxt"!=d&&(q.responseType="blob");q.onload=function(g){if(200<=this.status&&300>this.status)if("plantUmlTxt"==d)a.spinner.stop(),c.setSelectionCell(a.insertAsPreText(this.response, -h.x,h.y)),c.scrollCellToVisible(c.getSelectionCell());else{var m=new FileReader;m.readAsDataURL(this.response);m.onloadend=function(d){var g=new Image;g.onload=function(){a.spinner.stop();var d=g.width,n=g.height;if(0==d&&0==n){var q=m.result,f=q.indexOf(","),q=decodeURIComponent(escape(atob(q.substring(f+1)))),q=mxUtils.parseXml(q).getElementsByTagName("svg");0<q.length&&(d=parseFloat(q[0].getAttribute("width")),n=parseFloat(q[0].getAttribute("height")))}c.getModel().beginUpdate();try{cell=c.insertVertex(null, -null,b,h.x,h.y,d,n,"shape=image;noLabel=1;verticalAlign=top;aspect=fixed;imageAspect=0;image="+a.convertDataUri(m.result)+";")}finally{c.getModel().endUpdate()}c.setSelectionCell(cell);c.scrollCellToVisible(c.getSelectionCell())};g.src=m.result};m.onerror=function(b){a.handleError(b)}}else a.spinner.stop(),a.handleError(g)};q.onerror=function(b){a.handleError(b)};q.send()}}else if("table"==d){for(var f=null,u=[],k=0,l=0;l<g.length;l++)if(q=mxUtils.trim(g[l]),"create table"==q.substring(0,12).toLowerCase())q= -mxUtils.trim(q.substring(12)),"("==q.charAt(q.length-1)&&(q=q.substring(0,q.lastIndexOf(" "))),f=new mxCell(q,new mxGeometry(k,0,160,26),"swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;"),f.vertex=!0,u.push(f),q=a.editor.graph.getPreferredSizeForCell(p),null!=q&&(f.geometry.width=q.width+10);else if(null!=f&&")"==q.charAt(0))k+=f.geometry.width+ -40,f=null;else if("("!=q&&null!=f&&(q=q.substring(0,","==q.charAt(q.length-1)?q.length-1:q.length),"primary key"!=q.substring(0,11).toLowerCase())){var t=q.toLowerCase().indexOf("primary key"),q=q.replace(/primary key/i,""),p=new mxCell(q,new mxGeometry(0,0,90,26),"shape=partialRectangle;top=0;left=0;right=0;bottom=0;align=left;verticalAlign=top;spacingTop=-2;fillColor=none;spacingLeft=34;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;");p.vertex= -!0;q=sb.cloneCell(p,0<t?"PK":"");q.connectable=!1;q.style="shape=partialRectangle;top=0;left=0;bottom=0;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;";q.geometry.width=30;q.geometry.height=26;p.insert(q);q=a.editor.graph.getPreferredSizeForCell(p);null!=q&&f.geometry.width<q.width+10&&(f.geometry.width=Math.min(220,q.width+10));f.insert(p);f.geometry.height+=26}0<u.length&&(c=a.editor.graph,g=c.view, -q=c.getGraphBounds(),c.setSelectionCells(c.importCells(u,Math.ceil(Math.max(0,q.x/g.scale-g.translate.x)+4*c.gridSize),Math.ceil(Math.max(0,(q.y+q.height)/g.scale-g.translate.y)+4*c.gridSize))),c.scrollCellToVisible(c.getSelectionCell()))}else if("list"==d){if(0<g.length){c=a.editor.graph;f=new mxCell(g[0],new mxGeometry(0,0,160,30),"swimlane;fontStyle=1;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;"); -f.vertex=!0;q=c.getPreferredSizeForCell(f);null!=q&&f.geometry.width<q.width+10&&(f.geometry.width=q.width+10);p=[f];if(1<g.length)for(l=1;l<g.length;l++)"--"==g[l]?(q=new mxCell("",new mxGeometry(0,0,40,8),"line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;"),q.vertex=!0,f.geometry.height+=q.geometry.height,f.insert(q),p.push(q)):0<g[l].length&&";"!=g[l].charAt(0)&&(k=new mxCell(g[l], -new mxGeometry(0,0,60,26),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;"),k.vertex=!0,q=c.getPreferredSizeForCell(k),null!=q&&k.geometry.width<q.width&&(k.geometry.width=q.width),f.geometry.width=Math.max(f.geometry.width,k.geometry.width),f.geometry.height+=k.geometry.height,f.insert(k),p.push(k));c.getModel().beginUpdate();try{f=c.importCells([f],h.x,h.y)[0],c.fireEvent(new mxEventObject("cellsInserted", -"cells",[f].concat(f.children)))}finally{c.getModel().endUpdate()}c.setSelectionCell(f);c.scrollCellToVisible(c.getSelectionCell())}}else{for(var p=function(a){var b=E[a];null==b&&(b=new mxCell(a,new mxGeometry(0,0,80,30),"whiteSpace=wrap;html=1;"),b.vertex=!0,E[a]=b,u.push(b));return b},E={},u=[],l=0;l<g.length;l++)if(";"!=g[l].charAt(0)){var I=g[l].split("->");if(2<=I.length){var t=p(I[0]),A=p(I[I.length-1]),I=new mxCell(2<I.length?I[1]:"",new mxGeometry);I.edge=!0;t.insertEdge(I,!0);A.insertEdge(I, -!1);u.push(I)}}if(0<u.length){g=document.createElement("div");g.style.visibility="hidden";document.body.appendChild(g);c=new Graph(g);c.getModel().beginUpdate();try{u=c.importCells(u);for(l=0;l<u.length;l++)c.getModel().isVertex(u[l])&&(q=c.getPreferredSizeForCell(u[l]),u[l].geometry.width=Math.max(u[l].geometry.width,q.width),u[l].geometry.height=Math.max(u[l].geometry.height,q.height));f=new mxFastOrganicLayout(c);f.disableEdgeStyle=!1;f.forceConstant=120;f.execute(c.getDefaultParent());k=new mxParallelEdgeLayout(c); -k.spacing=20;k.execute(c.getDefaultParent())}finally{c.getModel().endUpdate()}c.clearCellOverlays();p=[];a.editor.graph.getModel().beginUpdate();try{p=a.editor.graph.importCells(c.getModel().getChildren(c.getDefaultParent()),h.x,h.y),a.editor.graph.fireEvent(new mxEventObject("cellsInserted","cells",p))}finally{a.editor.graph.getModel().endUpdate()}a.editor.graph.setSelectionCells(p);a.editor.graph.scrollCellToVisible(a.editor.graph.getSelectionCell());c.destroy();g.parentNode.removeChild(g)}}}function k(){return"list"== -t.value?"Person\n-name: String\n-birthDate: Date\n--\n+getName(): String\n+setName(String): void\n+isBirthday(): boolean":"table"==t.value?"CREATE TABLE Suppliers\n(\nsupplier_id int NOT NULL PRIMARY KEY,\nsupplier_name char(50) NOT NULL,\ncontact_name char(50),\n);\nCREATE TABLE Customers\n(\ncustomer_id int NOT NULL PRIMARY KEY,\ncustomer_name char(50) NOT NULL,\naddress char(50),\ncity char(50),\nstate char(25),\nzip_code char(10)\n);\n":"plantUmlPng"==t.value?"@startuml\nskinparam backgroundcolor transparent\nskinparam shadowing false\nAlice -> Bob: Authentication Request\nBob --\x3e Alice: Authentication Response\n\nAlice -> Bob: Another authentication Request\nAlice <-- Bob: another authentication Response\n@enduml": -"plantUmlSvg"==t.value||"plantUmlTxt"==t.value?"@startuml\nskinparam shadowing false\nAlice -> Bob: Authentication Request\nBob --\x3e Alice: Authentication Response\n\nAlice -> Bob: Another authentication Request\nAlice <-- Bob: another authentication Response\n@enduml":";Example:\na->b\nb->edge label->c\nc->a\n"}var h=a.editor.graph.getFreeInsertPoint();c=document.createElement("div");c.style.textAlign="right";var l=document.createElement("textarea");l.style.resize="none";l.style.width="100%";l.style.height= -"354px";l.style.marginBottom="16px";var t=document.createElement("select");"formatSql"==b&&(t.style.display="none");var p=document.createElement("option");p.setAttribute("value","list");mxUtils.write(p,mxResources.get("list"));"plantUml"!=b&&t.appendChild(p);null!=b&&"fromText"!=b||p.setAttribute("selected","selected");p=document.createElement("option");p.setAttribute("value","table");mxUtils.write(p,mxResources.get("formatSql"));"formatSql"==b&&(t.appendChild(p),p.setAttribute("selected","selected")); -p=document.createElement("option");p.setAttribute("value","diagram");mxUtils.write(p,mxResources.get("diagram"));"plantUml"!=b&&t.appendChild(p);p=document.createElement("option");p.setAttribute("value","plantUmlSvg");mxUtils.write(p,mxResources.get("plantUml")+" ("+mxResources.get("formatSvg")+")");"plantUml"==b&&p.setAttribute("selected","selected");var d=document.createElement("option");d.setAttribute("value","plantUmlPng");mxUtils.write(d,mxResources.get("plantUml")+" ("+mxResources.get("formatPng")+ -")");var g=document.createElement("option");g.setAttribute("value","plantUmlTxt");mxUtils.write(g,mxResources.get("plantUml")+" ("+mxResources.get("text")+")");EditorUi.enablePlantUml&&Graph.fileSupport&&!a.isOffline()&&"plantUml"==b&&(t.appendChild(p),t.appendChild(d),t.appendChild(g));var n=k();l.value=n;c.appendChild(l);this.init=function(){l.focus()};Graph.fileSupport&&(l.addEventListener("dragover",function(a){a.stopPropagation();a.preventDefault()},!1),l.addEventListener("drop",function(a){a.stopPropagation(); -a.preventDefault();if(0<a.dataTransfer.files.length){a=a.dataTransfer.files[0];var b=new FileReader;b.onload=function(a){l.value=a.target.result};b.readAsText(a)}},!1));c.appendChild(t);mxEvent.addListener(t,"change",function(){var a=k();if(0==l.value.length||l.value==n)n=a,l.value=n});b=mxUtils.button(mxResources.get("close"),function(){l.value==n?a.hideDialog():a.confirm(mxResources.get("areYouSure"),function(){a.hideDialog()})});b.className="geBtn";a.editor.cancelFirst&&c.appendChild(b);p=mxUtils.button(mxResources.get("insert"), -function(){a.hideDialog();f(l.value,t.value)});c.appendChild(p);p.className="geBtn gePrimaryBtn";a.editor.cancelFirst||c.appendChild(b);this.container=c},NewDialog=function(a,c,b,f,k,h,l,t,p,d,g,n,q,u,v,w){function y(){var a=!0;if(null!=S)for(;E<S.length&&(a||0!=mxUtils.mod(E,30));)a=S[E++],z(a.url,a.libs,a.title,a.tooltip?a.tooltip:a.title,a.select,a.imgUrl,a.info,a.onClick,a.preview),a=!1}function m(){if(Z)b||a.hideDialog(),u(Z,aa,D.value);else if(f)b||a.hideDialog(),f(V,D.value);else{var d=D.value; -null!=d&&0<d.length&&a.pickFolder(a.mode,function(b){a.createFile(d,V,null!=R&&0<R.length?R:null,null,function(){a.hideDialog()},null,b)},a.mode!=App.MODE_GOOGLE||null==a.stateArg||null==a.stateArg.folderId)}}function x(a,b,d,g,m){null!=Y&&(Y.style.backgroundColor="transparent",Y.style.border="1px solid transparent");A.removeAttribute("disabled");V=b;R=d;Y=a;Z=g;aa=m;Y.style.backgroundColor=t;Y.style.border=p}function z(b,d,g,c,n,q,f,u,z){var w=document.createElement("div");w.className="geTemplate"; -w.style.height=N+"px";w.style.width=X+"px";null!=c&&0<c.length&&w.setAttribute("title",c);if(null!=q)w.style.backgroundImage="url("+q+")",w.style.backgroundSize="contain",w.style.backgroundPosition="center center",w.style.backgroundRepeat="no-repeat",mxEvent.addListener(w,"click",function(a){x(w,null,null,b,f)}),mxEvent.addListener(w,"dblclick",function(a){m()});else if(null!=b&&0<b.length){g=z||TEMPLATE_PATH+"/"+b.substring(0,b.length-4)+".png";w.style.backgroundImage="url("+g+")";w.style.backgroundPosition= -"center center";w.style.backgroundRepeat="no-repeat";var v=!1;mxEvent.addListener(w,"click",function(g){A.setAttribute("disabled","disabled");w.style.backgroundColor="transparent";w.style.border="1px solid transparent";g=b;g=/^https?:\/\//.test(g)&&!a.isCorsEnabledForUrl(g)?PROXY_URL+"?url="+encodeURIComponent(g):TEMPLATE_PATH+"/"+g;I.spin(O);mxUtils.get(g,mxUtils.bind(this,function(a){I.stop();200<=a.getStatus()&&299>=a.getStatus()&&(x(w,a.getText(),d),v&&m())}))});mxEvent.addListener(w,"dblclick", -function(a){v=!0})}else w.innerHTML='<table width="100%" height="100%" style="line-height:1em;"><tr><td align="center" valign="middle">'+mxResources.get(g)+"</td></tr></table>",n&&x(w),null!=u?mxEvent.addListener(w,"click",u):(mxEvent.addListener(w,"click",function(a){x(w)}),mxEvent.addListener(w,"dblclick",function(a){m()}));O.appendChild(w)}function F(){mxEvent.addListener(O,"scroll",function(a){O.scrollTop+O.clientHeight>=O.scrollHeight&&(y(),mxEvent.consume(a))});var a=null,b;for(b in P){var g= -document.createElement("div"),c=mxResources.get(b),m=P[b];null==c&&(c=b.substring(0,1).toUpperCase()+b.substring(1));18<c.length&&(c=c.substring(0,18)+"…");g.style.cssText="display:block;cursor:pointer;padding:6px;white-space:nowrap;margin-bottom:-1px;overflow:hidden;text-overflow:ellipsis;";g.setAttribute("title",c+" ("+m.length+")");mxUtils.write(g,g.getAttribute("title"));null!=d&&(g.style.padding=d);Q.appendChild(g);null==a&&(a=g,a.style.backgroundColor=l);(function(b,d){mxEvent.addListener(g, -"click",function(){a!=d&&(a.style.backgroundColor="",a=d,a.style.backgroundColor=l,O.scrollTop=0,O.innerHTML="",E=0,S=P[b],J=null,y())})})(b,g)}y()}b=null!=b?b:!0;k=null!=k?k:!1;l=null!=l?l:"#ebf2f9";t=null!=t?t:"#e6eff8";p=null!=p?p:"1px solid #ccd9ea";g=null!=g?g:EditorUi.templateFile;var C=document.createElement("div");C.style.height="100%";var B=document.createElement("div");B.style.whiteSpace="nowrap";B.style.height="46px";b&&C.appendChild(B);var H=document.createElement("img");H.setAttribute("border", -"0");H.setAttribute("align","absmiddle");H.style.width="40px";H.style.height="40px";H.style.marginRight="10px";H.style.paddingBottom="4px";H.src=a.mode==App.MODE_GOOGLE?IMAGE_PATH+"/google-drive-logo.svg":a.mode==App.MODE_DROPBOX?IMAGE_PATH+"/dropbox-logo.svg":a.mode==App.MODE_ONEDRIVE?IMAGE_PATH+"/onedrive-logo.svg":a.mode==App.MODE_GITHUB?IMAGE_PATH+"/github-logo.svg":a.mode==App.MODE_TRELLO?IMAGE_PATH+"/trello-logo.svg":a.mode==App.MODE_BROWSER?IMAGE_PATH+"/osa_database.png":IMAGE_PATH+"/osa_drive-harddisk.png"; -!c&&b&&B.appendChild(H);b&&mxUtils.write(B,(null==a.mode||a.mode==App.MODE_GOOGLE||a.mode==App.MODE_BROWSER?mxResources.get("diagramName"):mxResources.get("filename"))+":");H=".xml";a.mode==App.MODE_GOOGLE&&null!=a.drive?H=a.drive.extension:a.mode==App.MODE_DROPBOX&&null!=a.dropbox?H=a.dropbox.extension:a.mode==App.MODE_ONEDRIVE&&null!=a.oneDrive?H=a.oneDrive.extension:a.mode==App.MODE_GITHUB&&null!=a.gitHub?H=a.gitHub.extension:a.mode==App.MODE_TRELLO&&null!=a.trello&&(H=a.trello.extension);var D= -document.createElement("input");D.setAttribute("value",a.defaultFilename+H);D.style.marginRight="20px";D.style.marginLeft="10px";D.style.width=c?"220px":"430px";this.init=function(){b&&(D.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?D.select():document.execCommand("selectAll",!1,null))};b&&B.appendChild(D);var B=!1,E=0,I=new Spinner({lines:12,length:10,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9}),A=mxUtils.button(w|| -mxResources.get("create"),function(){A.setAttribute("disabled","disabled");m();A.removeAttribute("disabled")});A.className="geBtn gePrimaryBtn";if(n||q){var G=[],J=null,M=function(a){A.setAttribute("disabled","disabled");for(var b=0;b<G.length;b++)G[b].className=b==a?"geBtn gePrimaryBtn":"geBtn"},B=!0;w=document.createElement("div");w.style.whiteSpace="nowrap";w.style.height="30px";C.appendChild(w);H=mxUtils.button(mxResources.get("Templates",null,"Templates"),function(){Q.style.display="";O.style.left= -"160px";M(0);O.scrollTop=0;O.innerHTML="";E=0;J!=S&&(S=J,y(),J=null)});G.push(H);w.appendChild(H);var L=function(a){Q.style.display="none";O.style.left="30px";M(a?-1:1);null==J&&(J=S);O.scrollTop=0;O.innerHTML="";I.spin(O);E=0;var b=function(a,b){I.stop();S=a;b?O.innerHTML=b:0==a.length?O.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams",null,"No Diagrams Found")):(O.innerHTML="",y())};a?q(T.value,b):n(b)};n&&(H=mxUtils.button(mxResources.get("Recent",null,"Recent"),function(){L()}),w.appendChild(H), -G.push(H));if(q){H=document.createElement("span");H.style.marginLeft="10px";H.innerHTML=mxUtils.htmlEntities(mxResources.get("search")+":");w.appendChild(H);var T=document.createElement("input");T.style.marginRight="10px";T.style.marginLeft="10px";T.style.width="220px";mxEvent.addListener(T,"keypress",function(a){13==a.keyCode&&L(!0)});w.appendChild(T);H=mxUtils.button(mxResources.get("search"),function(){L(!0)});H.className="geBtn";w.appendChild(H)}M(0)}var R=null,V=null,Y=null,Z=null,aa=null,O= -document.createElement("div");O.style.border="1px solid #d3d3d3";O.style.position="absolute";O.style.left="160px";O.style.right="34px";B=(b?72:40)+(B?30:0);O.style.top=B+"px";O.style.bottom="68px";O.style.margin="6px 0 0 -1px";O.style.padding="6px";O.style.overflow="auto";var Q=document.createElement("div");Q.style.cssText="position:absolute;left:30px;width:128px;top:"+B+"px;bottom:68px;margin-top:6px;overflow:auto;border:1px solid #d3d3d3;";var N=140,X=140,P={},U=1;P.basic=[{title:"blankDiagram", -select:!0}];var S=P.basic;if(!c){C.appendChild(Q);C.appendChild(O);var ba=!1;/^https?:\/\//.test(g)&&!a.isCorsEnabledForUrl(g)&&(g=PROXY_URL+"?url="+encodeURIComponent(g));mxUtils.get(g,function(a){if(!ba){ba=!0;for(a=a.getXml().documentElement.firstChild;null!=a;){if("undefined"!==typeof a.getAttribute){var b=a.getAttribute("url");if(null!=b){var d=a.getAttribute("section");null==d&&(d=b.indexOf("/"),d=b.substring(0,d));b=P[d];null==b&&(U++,b=[],P[d]=b);b.push({url:a.getAttribute("url"),libs:a.getAttribute("libs"), -title:a.getAttribute("title"),tooltip:a.getAttribute("url"),preview:a.getAttribute("preview")})}}a=a.nextSibling}F()}})}mxEvent.addListener(D,"keypress",function(b){a.dialog.container.firstChild==C&&13==b.keyCode&&m()});g=document.createElement("div");g.style.marginTop=c?"4px":"16px";g.style.textAlign="right";g.style.position="absolute";g.style.left="40px";g.style.bottom="24px";g.style.right="40px";B=mxUtils.button(mxResources.get("cancel"),function(){null!=h&&h();a.hideDialog(!0)});B.className="geBtn"; -!a.editor.cancelFirst||k&&null==h||g.appendChild(B);c||a.isOffline()||!b||null!=f||k||(w=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://support.draw.io/display/DO/Creating+and+Opening+Files")}),w.className="geBtn",g.appendChild(w));c||"1"==urlParams.embed||k||(c=mxUtils.button(mxResources.get("fromTemplateUrl"),function(){var b=new FilenameDialog(a,"",mxResources.get("create"),function(b){null!=b&&0<b.length&&(b=a.getUrl(window.location.pathname+"?mode="+a.mode+"&title="+encodeURIComponent(D.value)+ -"&create="+encodeURIComponent(b)),null==a.getCurrentFile()?window.location.href=b:window.openWindow(b))},mxResources.get("url"));a.showDialog(b.container,300,80,!0,!0);b.init()}),c.className="geBtn",g.appendChild(c));Graph.fileSupport&&v&&(v=mxUtils.button(mxResources.get("import"),function(){var b=document.createElement("input");b.setAttribute("multiple","multiple");b.setAttribute("type","file");mxEvent.addListener(b,"change",function(d){a.openFiles(b.files,!0)});b.click()}),v.className="geBtn", -g.appendChild(v));g.appendChild(A);a.editor.cancelFirst||null!=f||k&&null==h||g.appendChild(B);C.appendChild(g);this.container=C},CreateDialog=function(a,c,b,f,k,h,l,t,p,d,g,n,q,u,v){function w(b,d,g,m){function q(){mxEvent.addListener(f,"click",function(){var b=g;if(l){var d=x.value,m=d.lastIndexOf(".");if(0>c.lastIndexOf(".")&&0>m){var b=null!=b?b:C.value,n="";b==App.MODE_GOOGLE?n=a.drive.extension:b==App.MODE_GITHUB?n=a.gitHub.extension:b==App.MODE_TRELLO?n=a.trello.extension:b==App.MODE_DROPBOX? -n=a.dropbox.extension:b==App.MODE_ONEDRIVE?n=a.oneDrive.extension:b==App.MODE_DEVICE&&(n=".xml");0<=m&&(d=d.substring(0,m));x.value=d+n}}y(g)})}var f=document.createElement("a");f.style.overflow="hidden";var u=document.createElement("img");u.src=b;u.setAttribute("border","0");u.setAttribute("align","absmiddle");u.style.width="60px";u.style.height="60px";u.style.paddingBottom="6px";f.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";f.className="geBaseButton";f.style.position="relative";f.style.margin= -"4px";f.style.padding="8px 8px 10px 8px";f.style.whiteSpace="nowrap";f.appendChild(u);mxClient.IS_QUIRKS&&(f.style.cssFloat="left",f.style.zoom="1");f.style.color="gray";f.style.fontSize="11px";var w=document.createElement("div");f.appendChild(w);mxUtils.write(w,d);if(null!=m&&null==a[m]){u.style.visibility="hidden";mxUtils.setOpacity(w,10);var v=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});v.spin(f);var h=window.setTimeout(function(){null== -a[m]&&(v.stop(),f.style.display="none")},3E4);a.addListener("clientLoaded",mxUtils.bind(this,function(){null!=a[m]&&(window.clearTimeout(h),mxUtils.setOpacity(w,100),u.style.visibility="",v.stop(),q())}))}else q();z.appendChild(f);++F==n&&(mxUtils.br(z),F=0)}function y(d){var g=x.value;if(null==d||null!=g&&0<g.length)a.hideDialog(),b(g,d)}l=null!=l?l:!0;t=null!=t?t:!0;n=null!=n?n:4;h=document.createElement("div");null==f&&a.addLanguageMenu(h);var m=document.createElement("h2");mxUtils.write(m,k|| -mxResources.get("create"));m.style.marginTop="0px";m.style.marginBottom="24px";h.appendChild(m);mxUtils.write(h,mxResources.get("filename")+":");var x=document.createElement("input");x.setAttribute("value",c);x.style.width="280px";x.style.marginLeft="10px";x.style.marginBottom="20px";this.init=function(){x.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?x.select():document.execCommand("selectAll",!1,null)};h.appendChild(x);null!=q&&null!=u&&"image/"==u.substring(0, -6)&&(x.style.width="160px",k=null,"image/svg+xml"==u&&mxClient.IS_SVG?(k=document.createElement("div"),k.innerHTML=mxUtils.trim(q),q=k.getElementsByTagName("svg")[0],u=parseInt(q.getAttribute("width")),v=parseInt(q.getAttribute("height")),q.setAttribute("viewBox","0 0 "+u+" "+v),q.setAttribute("width","120px"),q.setAttribute("height","80px")):(k=document.createElement("img"),k.setAttribute("src","data:"+u+(v?";base64,":";utf8,")+q)),k.style.position="absolute",k.style.top="70px",k.style.right="100px", -k.style.maxWidth="120px",k.style.maxHeight="80px",mxUtils.setPrefixedStyle(k.style,"transform","translate(50%,-50%)"),h.appendChild(k),p&&Editor.popupsAllowed&&(k.style.cursor="pointer",mxEvent.addListener(k,"click",function(){y("_blank")})));mxUtils.br(h);var z=document.createElement("div");z.style.textAlign="center";var F=0;z.style.marginTop="6px";h.appendChild(z);var C=document.createElement("select");C.style.marginLeft="10px";a.isOfflineApp()||a.isOffline()||("function"===typeof window.DriveClient&& -(q=document.createElement("option"),q.setAttribute("value",App.MODE_GOOGLE),mxUtils.write(q,mxResources.get("googleDrive")),C.appendChild(q),w(IMAGE_PATH+"/google-drive-logo.svg",mxResources.get("googleDrive"),App.MODE_GOOGLE,"drive")),"function"===typeof window.OneDriveClient&&(q=document.createElement("option"),q.setAttribute("value",App.MODE_ONEDRIVE),mxUtils.write(q,mxResources.get("oneDrive")),C.appendChild(q),a.mode==App.MODE_ONEDRIVE&&q.setAttribute("selected","selected"),w(IMAGE_PATH+"/onedrive-logo.svg", -mxResources.get("oneDrive"),App.MODE_ONEDRIVE,"oneDrive")),"function"===typeof window.DropboxClient&&(q=document.createElement("option"),q.setAttribute("value",App.MODE_DROPBOX),mxUtils.write(q,mxResources.get("dropbox")),C.appendChild(q),a.mode==App.MODE_DROPBOX&&q.setAttribute("selected","selected"),w(IMAGE_PATH+"/dropbox-logo.svg",mxResources.get("dropbox"),App.MODE_DROPBOX,"dropbox")),null!=a.gitHub&&(q=document.createElement("option"),q.setAttribute("value",App.MODE_GITHUB),mxUtils.write(q,mxResources.get("github")), -C.appendChild(q),w(IMAGE_PATH+"/github-logo.svg",mxResources.get("github"),App.MODE_GITHUB,"gitHub")),null!=a.trello&&(q=document.createElement("option"),q.setAttribute("value",App.MODE_TRELLO),mxUtils.write(q,mxResources.get("trello")),C.appendChild(q),w(IMAGE_PATH+"/trello-logo.svg",mxResources.get("trello"),App.MODE_TRELLO,"trello")));Editor.useLocalStorage&&"device"!=urlParams.storage&&null==a.getCurrentFile()||(q=document.createElement("option"),q.setAttribute("value",App.MODE_DEVICE),mxUtils.write(q, -mxResources.get("device")),C.appendChild(q),a.mode!=App.MODE_DEVICE&&t||q.setAttribute("selected","selected"),g&&w(IMAGE_PATH+"/osa_drive-harddisk.png",mxResources.get("device"),App.MODE_DEVICE));t&&isLocalStorage&&"0"!=urlParams.browser&&(t=document.createElement("option"),t.setAttribute("value",App.MODE_BROWSER),mxUtils.write(t,mxResources.get("browser")),C.appendChild(t),a.mode==App.MODE_BROWSER&&t.setAttribute("selected","selected"),w(IMAGE_PATH+"/osa_database.png",mxResources.get("browser"), -App.MODE_BROWSER));t=document.createElement("div");t.style.marginTop="26px";t.style.textAlign="center";null!=d&&(g=mxUtils.button(mxResources.get("help"),function(){a.openLink(d)}),g.className="geBtn",t.appendChild(g));g=mxUtils.button(mxResources.get("cancel"),function(){null!=f?f():(a.fileLoaded(null),a.hideDialog(),window.close(),window.location.href=a.getUrl())});g.className="geBtn";a.editor.cancelFirst&&t.appendChild(g);null==f&&(q=mxUtils.button(mxResources.get("decideLater"),function(){y(null)}), -q.className="geBtn",t.appendChild(q));p&&Editor.popupsAllowed&&(p=mxUtils.button(mxResources.get("openInNewWindow"),function(){y("_blank")}),p.className="geBtn",t.appendChild(p));a.editor.cancelFirst||t.appendChild(g);mxEvent.addListener(x,"keypress",function(b){13==b.keyCode?y(App.MODE_DEVICE):27==b.keyCode&&(a.fileLoaded(null),a.hideDialog(),window.close())});h.appendChild(t);this.container=h},PopupDialog=function(a,c,b,f,k){k=null!=k?k:!0;var h=document.createElement("div");h.style.textAlign="left"; -mxUtils.write(h,mxResources.get("fileOpenLocation"));mxUtils.br(h);mxUtils.br(h);var l=mxUtils.button(mxResources.get("openInThisWindow"),function(){k&&a.hideDialog();null!=f&&f()});l.className="geBtn";l.style.marginBottom="8px";l.style.width="280px";h.appendChild(l);mxUtils.br(h);var t=mxUtils.button(mxResources.get("openInNewWindow"),function(){k&&a.hideDialog();null!=b&&b();a.openLink(c,null,!0)});t.className="geBtn gePrimaryBtn";t.style.width=l.style.width;h.appendChild(t);mxUtils.br(h);mxUtils.br(h); -mxUtils.write(h,mxResources.get("allowPopups"));this.container=h},ImageDialog=function(a,c,b,f,k,h){h=null!=h?h:!0;var l=a.editor.graph,t=document.createElement("div");mxUtils.write(t,c);c=document.createElement("div");c.className="geTitle";c.style.backgroundColor="transparent";c.style.borderColor="transparent";c.style.whiteSpace="nowrap";c.style.textOverflow="clip";c.style.cursor="default";mxClient.IS_VML||(c.style.paddingRight="20px");var p=document.createElement("input");p.setAttribute("value", -b);p.setAttribute("type","text");p.setAttribute("spellcheck","false");p.setAttribute("autocorrect","off");p.setAttribute("autocomplete","off");p.setAttribute("autocapitalize","off");p.style.marginTop="6px";p.style.width=(Graph.fileSupport?420:340)+(mxClient.IS_QUIRKS?20:-20)+"px";p.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";p.style.backgroundRepeat="no-repeat";p.style.backgroundPosition="100% 50%";p.style.paddingRight="14px";b=document.createElement("div");b.setAttribute("title", -mxResources.get("reset"));b.style.position="relative";b.style.left="-16px";b.style.width="12px";b.style.height="14px";b.style.cursor="pointer";b.style.display=mxClient.IS_VML?"inline":"inline-block";b.style.top=(mxClient.IS_VML?0:3)+"px";b.style.background="url('"+a.editor.transparentImage+"')";mxEvent.addListener(b,"click",function(){p.value="";p.focus()});c.appendChild(p);c.appendChild(b);t.appendChild(c);var d=function(b,d,g,c){var m="data:"==b.substring(0,5);!a.isOffline()||m&&"undefined"===typeof chrome? -0<b.length&&a.spinner.spin(document.body,mxResources.get("inserting"))?a.loadImage(b,function(m){a.spinner.stop();a.hideDialog();var n=!1===c?1:null!=d&&null!=g?Math.max(d/m.width,g/m.height):Math.min(1,Math.min(520/m.width,520/m.height));h&&(b=a.convertDataUri(b));f(b,Math.round(Number(m.width)*n),Math.round(Number(m.height)*n))},function(){a.spinner.stop();f(null);a.showError(mxResources.get("error"),mxResources.get("fileNotFound"),mxResources.get("ok"))}):(a.hideDialog(),f(b)):(b=a.convertDataUri(b), -d=null==d?120:d,g=null==g?100:g,a.hideDialog(),f(b,d,g))},g=function(b,g){if(null!=b){var c=k?null:l.getModel().getGeometry(l.getSelectionCell());null!=c?d(b,c.width,c.height,g):d(b,null,null,g)}else a.hideDialog(),f(null)};this.init=function(){p.focus();if(Graph.fileSupport){p.setAttribute("placeholder",mxResources.get("dragImagesHere"));var b=t.parentNode,d=null;mxEvent.addListener(b,"dragleave",function(a){null!=d&&(d.parentNode.removeChild(d),d=null);a.stopPropagation();a.preventDefault()});mxEvent.addListener(b, -"dragover",mxUtils.bind(this,function(g){null==d&&(!mxClient.IS_IE||10<document.documentMode)&&(d=a.highlightElement(b));g.stopPropagation();g.preventDefault()}));mxEvent.addListener(b,"drop",mxUtils.bind(this,function(b){null!=d&&(d.parentNode.removeChild(d),d=null);if(0<b.dataTransfer.files.length)a.importFiles(b.dataTransfer.files,0,0,a.maxImageSize,function(a,b,d,c,n,q,f,u){g(a,u)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b=0;b<a.length;b++)a[b]()},!mxEvent.isControlDown(b)); -else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")){var c=b.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)($|\?)/i.test(c)&&g(decodeURIComponent(c))}b.stopPropagation();b.preventDefault()}),!1)}};b=document.createElement("div");b.style.marginTop=mxClient.IS_QUIRKS?"22px":"14px";b.style.textAlign="right";c=mxUtils.button(mxResources.get("cancel"),function(){a.spinner.stop();a.hideDialog()});c.className="geBtn";a.editor.cancelFirst&&b.appendChild(c);ImageDialog.filePicked= -function(a){a.action==google.picker.Action.PICKED&&null!=a.docs[0].thumbnails&&(a=a.docs[0].thumbnails[a.docs[0].thumbnails.length-1],null!=a&&(p.value=a.url));p.focus()};if(Graph.fileSupport){var n=document.createElement("input");n.setAttribute("multiple","multiple");n.setAttribute("type","file");if(null==document.documentMode){mxEvent.addListener(n,"change",function(b){a.importFiles(n.files,0,0,a.maxImageSize,function(a,b,d,c,n,q){g(a)},function(){},function(a){return"image/"==a.type.substring(0, -6)},function(a){for(var b=0;b<a.length;b++)a[b]()},!0)});var q=mxUtils.button(mxResources.get("open"),function(){n.click()});q.className="geBtn";b.appendChild(q)}}document.createElement("canvas").getContext&&"data:image/"==p.value.substring(0,11)&&"data:image/svg"!=p.value.substring(0,14)&&(q=mxUtils.button(mxResources.get("crop"),function(){var b=new CropImageDialog(a,p.value,function(a){p.value=a});a.showDialog(b.container,200,185,!0,!0);b.init()}),q.className="geBtn",b.appendChild(q));"undefined"!= -typeof google&&"undefined"!=typeof google.picker&&window.self===window.top&&(q=mxUtils.button(mxResources.get("search"),function(){if(null==a.imageSearchPicker){var b=(new google.picker.PickerBuilder).setLocale(mxLanguage).addView(google.picker.ViewId.IMAGE_SEARCH).enableFeature(google.picker.Feature.NAV_HIDDEN);a.imageSearchPicker=b.setCallback(function(a){ImageDialog.filePicked(a)}).build()}a.imageSearchPicker.setVisible(!0)}),q.className="geBtn",b.appendChild(q),null!=a.drive&&"1"==urlParams.photos&& -(q=mxUtils.button(mxResources.get("googlePlus"),function(){a.spinner.spin(document.body,mxResources.get("authorizing"))&&a.drive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();if(null==a.photoPicker){var b=gapi.auth.getToken().access_token,b=(new google.picker.PickerBuilder).setAppId(a.drive.appId).setLocale(mxLanguage).setOAuthToken(b).addView(google.picker.ViewId.PHOTOS).addView(google.picker.ViewId.PHOTO_ALBUMS).addView(google.picker.ViewId.PHOTO_UPLOAD);a.photoPicker=b.setCallback(function(a){ImageDialog.filePicked(a)}).build()}a.photoPicker.setVisible(!0)}))}), -q.className="geBtn",b.appendChild(q)));mxEvent.addListener(p,"keypress",function(a){13==a.keyCode&&g(p.value)});q=mxUtils.button(mxResources.get("apply"),function(){g(p.value)});q.className="geBtn gePrimaryBtn";b.appendChild(q);a.editor.cancelFirst||b.appendChild(c);Graph.fileSupport&&(b.style.marginTop="120px",t.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')",t.style.backgroundPosition="center 65%",t.style.backgroundRepeat="no-repeat",c=document.createElement("div"),c.style.position= -"absolute",c.style.width="420px",c.style.top="58%",c.style.textAlign="center",c.style.fontSize="18px",c.style.color="#a0c3ff",mxUtils.write(c,mxResources.get("dragImagesHere")),t.appendChild(c));t.appendChild(b);this.container=t},LinkDialog=function(a,c,b,f,k){function h(a,b,d){d=mxUtils.button("",d);d.className="geBtn";d.setAttribute("title",b);b=document.createElement("img");b.style.height="26px";b.style.width="26px";b.setAttribute("src",a);d.style.minWidth="42px";d.style.verticalAlign="middle"; -d.appendChild(b);y.appendChild(d)}var l=document.createElement("div");mxUtils.write(l,mxResources.get("editLink")+":");var t=document.createElement("div");t.className="geTitle";t.style.backgroundColor="transparent";t.style.borderColor="transparent";t.style.whiteSpace="nowrap";t.style.textOverflow="clip";t.style.cursor="default";mxClient.IS_VML||(t.style.paddingRight="20px");var p=document.createElement("input");p.setAttribute("placeholder",mxResources.get("dragUrlsHere"));p.setAttribute("type","text"); -p.style.marginTop="6px";p.style.width="440px";p.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";p.style.backgroundRepeat="no-repeat";p.style.backgroundPosition="100% 50%";p.style.paddingRight="14px";var d=document.createElement("div");d.setAttribute("title",mxResources.get("reset"));d.style.position="relative";d.style.left="-16px";d.style.width="12px";d.style.height="14px";d.style.cursor="pointer";d.style.display=mxClient.IS_VML?"inline":"inline-block";d.style.top=(mxClient.IS_VML? -0:3)+"px";d.style.background="url('"+a.editor.transparentImage+"')";mxEvent.addListener(d,"click",function(){p.value="";p.focus()});var g=document.createElement("input");g.style.cssText="margin-right:8px;margin-bottom:8px;";g.setAttribute("value","url");g.setAttribute("type","radio");g.setAttribute("name","current-linkdialog");var n=document.createElement("input");n.style.cssText="margin-right:8px;margin-bottom:8px;";n.setAttribute("value","url");n.setAttribute("type","radio");n.setAttribute("name", -"current-linkdialog");var q=document.createElement("select");q.style.width="420px";if(k&&null!=a.pages){null!=c&&"data:page/id,"==c.substring(0,13)?(n.setAttribute("checked","checked"),n.defaultChecked=!0):(p.setAttribute("value",c),g.setAttribute("checked","checked"),g.defaultChecked=!0);p.style.width="420px";t.appendChild(g);t.appendChild(p);t.appendChild(d);mxUtils.br(t);t.appendChild(n);k=!1;for(d=0;d<a.pages.length;d++){var u=document.createElement("option");mxUtils.write(u,a.pages[d].getName()|| -mxResources.get("pageWithNumber",[d+1]));u.setAttribute("value","data:page/id,"+a.pages[d].getId());c==u.getAttribute("value")&&(u.setAttribute("selected","selected"),k=!0);q.appendChild(u)}if(!k&&n.checked){var v=document.createElement("option");mxUtils.write(v,mxResources.get("pageNotFound"));v.setAttribute("disabled","disabled");v.setAttribute("selected","selected");v.setAttribute("value","pageNotFound");q.appendChild(v);mxEvent.addListener(q,"change",function(){null==v.parentNode||v.selected|| -v.parentNode.removeChild(v)})}t.appendChild(q)}else p.setAttribute("value",c),t.appendChild(p),t.appendChild(d);l.appendChild(t);var w=mxUtils.button(b,function(){a.hideDialog();f(n.checked?"pageNotFound"!==q.value?q.value:c:p.value,LinkDialog.selectedDocs)});w.style.verticalAlign="middle";w.className="geBtn gePrimaryBtn";this.init=function(){n.checked?q.focus():(p.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?p.select():document.execCommand("selectAll",!1,null)); -mxEvent.addListener(q,"focus",function(){g.removeAttribute("checked");n.setAttribute("checked","checked");n.checked=!0});mxEvent.addListener(p,"focus",function(){n.removeAttribute("checked");g.setAttribute("checked","checked");g.checked=!0});if(Graph.fileSupport){var b=l.parentNode,d=null;mxEvent.addListener(b,"dragleave",function(a){null!=d&&(d.parentNode.removeChild(d),d=null);a.stopPropagation();a.preventDefault()});mxEvent.addListener(b,"dragover",mxUtils.bind(this,function(g){null==d&&(!mxClient.IS_IE|| -10<document.documentMode)&&(d=a.highlightElement(b));g.stopPropagation();g.preventDefault()}));mxEvent.addListener(b,"drop",mxUtils.bind(this,function(a){null!=d&&(d.parentNode.removeChild(d),d=null);0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")&&(p.value=decodeURIComponent(a.dataTransfer.getData("text/uri-list")),g.setAttribute("checked","checked"),g.checked=!0,w.click());a.stopPropagation();a.preventDefault()}),!1)}};var y=document.createElement("div");y.style.marginTop="20px";y.style.textAlign= -"right";b=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});b.style.verticalAlign="middle";b.className="geBtn";a.editor.cancelFirst&&y.appendChild(b);t=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://desk.draw.io/solution/articles/16000080137")});t.style.verticalAlign="middle";t.className="geBtn";y.appendChild(t);a.isOffline()&&!mxClient.IS_CHROMEAPP&&(t.style.display="none");LinkDialog.selectedDocs=null;LinkDialog.filePicked=function(a){if(a.action==google.picker.Action.PICKED){LinkDialog.selectedDocs= -a.docs;var b=a.docs[0].url;"application/mxe"==a.docs[0].mimeType||null!=a.docs[0].mimeType&&"application/vnd.jgraph."==a.docs[0].mimeType.substring(0,23)?b="https://www.draw.io/#G"+a.docs[0].id:"application/vnd.google-apps.folder"==a.docs[0].mimeType&&(b="https://drive.google.com/#folders/"+a.docs[0].id);p.value=b;p.focus()}else LinkDialog.selectedDocs=null;p.focus()};"undefined"!=typeof google&&"undefined"!=typeof google.picker&&null!=a.drive&&h(IMAGE_PATH+"/google-drive-logo.svg",mxResources.get("googlePlus"), -function(){a.spinner.spin(document.body,mxResources.get("authorizing"))&&a.drive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();if(null==a.linkPicker){var b=gapi.auth.getToken().access_token,d=(new google.picker.DocsView(google.picker.ViewId.FOLDERS)).setParent("root").setIncludeFolders(!0).setSelectFolderEnabled(!0),g=(new google.picker.DocsView).setIncludeFolders(!0).setSelectFolderEnabled(!0),c=(new google.picker.DocsView).setIncludeFolders(!0).setEnableTeamDrives(!0).setSelectFolderEnabled(!0), -b=(new google.picker.PickerBuilder).setAppId(a.drive.appId).setLocale(mxLanguage).setOAuthToken(b).enableFeature(google.picker.Feature.SUPPORT_TEAM_DRIVES).addView(d).addView(g).addView(c).addView(google.picker.ViewId.RECENTLY_PICKED).addView(google.picker.ViewId.IMAGE_SEARCH).addView(google.picker.ViewId.VIDEO_SEARCH).addView(google.picker.ViewId.MAPS);"1"==urlParams.photos&&b.addView(google.picker.ViewId.PHOTOS).addView(google.picker.ViewId.PHOTO_ALBUMS).addView(google.picker.ViewId.PHOTO_UPLOAD); -a.linkPicker=b.setCallback(function(a){LinkDialog.filePicked(a)}).build()}a.linkPicker.setVisible(!0)}))});"undefined"!=typeof Dropbox&&"undefined"!=typeof Dropbox.choose&&h(IMAGE_PATH+"/dropbox-logo.svg",mxResources.get("dropbox"),function(){Dropbox.choose({linkType:"direct",cancel:function(){},success:function(a){p.value=a[0].link;p.focus()}})});null!=a.oneDrive&&h(IMAGE_PATH+"/onedrive-logo.svg",mxResources.get("oneDrive"),function(){a.oneDrive.pickFile(function(a,b){p.value=b.value[0].webUrl; -p.focus()})});null!=a.gitHub&&h(IMAGE_PATH+"/github-logo.svg",mxResources.get("github"),function(){a.gitHub.pickFile(function(a){if(null!=a){a=a.split("/");var b=a[0],d=a[1],g=a[2];a=a.slice(3,a.length).join("/");p.value="https://github.com/"+b+"/"+d+"/blob/"+g+"/"+a;p.focus()}})});mxEvent.addListener(p,"keypress",function(b){13==b.keyCode&&(a.hideDialog(),f(n.checked?q.value:p.value,LinkDialog.selectedDocs))});y.appendChild(w);a.editor.cancelFirst||y.appendChild(b);l.appendChild(y);this.container= -l},AboutDialog=function(a){var c=document.createElement("div");c.style.marginTop="6px";c.setAttribute("align","center");var b=document.createElement("img");b.style.border="0px";mxClient.IS_SVG?(b.setAttribute("width","164"),b.setAttribute("height","221"),b.style.width="164px",b.style.height="221px",b.setAttribute("src",IMAGE_PATH+"/drawlogo-text-bottom.svg")):(b.setAttribute("width","176"),b.setAttribute("height","219"),b.style.width="170px",b.style.height="219px",b.setAttribute("src",IMAGE_PATH+ -"/logo-flat.png"));"dark"==uiTheme&&(b.style.filter="grayscale(100%) invert(100%)");c.appendChild(b);mxUtils.br(c);var b="dark"==uiTheme?"#cccccc":"#505050",f=document.createElement("small");f.innerHTML="v "+EditorUi.VERSION;f.style.color=b;c.appendChild(f);mxUtils.br(c);mxUtils.br(c);f=document.createElement("small");f.style.color=b;f.innerHTML='© 2005-2019 <a href="https://about.draw.io/" style="color:inherit;" target="_blank">JGraph Ltd</a>.<br>All Rights Reserved.';c.appendChild(f);mxEvent.addListener(c, -"click",function(b){"A"!=mxEvent.getSource(b).nodeName&&a.hideDialog()});this.container=c},FeedbackDialog=function(a){var c=document.createElement("div"),b=document.createElement("div");mxUtils.write(b,mxResources.get("sendYourFeedbackToDrawIo"));b.style.fontSize="18px";b.style.marginBottom="18px";c.appendChild(b);b=document.createElement("div");mxUtils.write(b,mxResources.get("yourEmailAddress")+" ("+mxResources.get("required")+")");c.appendChild(b);var f=document.createElement("input");f.setAttribute("type", -"text");f.style.marginTop="6px";f.style.width="600px";var k=mxUtils.button(mxResources.get("sendMessage"),function(){var b=p.value+(l.checked?"\nDiagram:\n"+mxUtils.getXml(a.getXmlFileData()):"")+"\nBrowser:\n"+navigator.userAgent;b.length>FeedbackDialog.maxAttachmentSize?a.alert(mxResources.get("drawingTooLarge")):(a.hideDialog(),a.spinner.spin(document.body)&&mxUtils.post(null!=FeedbackDialog.feedbackUrl?FeedbackDialog.feedbackUrl:"/email","email="+encodeURIComponent(f.value)+"&version="+encodeURIComponent(EditorUi.VERSION)+ -"&url="+encodeURIComponent(window.location.href)+"&body="+encodeURIComponent("Feedback:\n"+b),function(b){a.spinner.stop();200<=b.getStatus()&&299>=b.getStatus()?a.alert(mxResources.get("feedbackSent")):a.alert(mxResources.get("errorSendingFeedback"))},function(){a.spinner.stop();a.alert(mxResources.get("errorSendingFeedback"))}))});k.className="geBtn gePrimaryBtn";k.setAttribute("disabled","disabled");var h=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; -mxEvent.addListener(f,"change",function(){0<f.value.length&&0<h.test(f.value)?k.removeAttribute("disabled"):k.setAttribute("disabled","disabled")});mxEvent.addListener(f,"keyup",function(){0<f.value.length&&h.test(f.value)?k.removeAttribute("disabled"):k.setAttribute("disabled","disabled")});c.appendChild(f);this.init=function(){f.focus()};var l=document.createElement("input");l.setAttribute("type","checkbox");l.setAttribute("checked","checked");l.defaultChecked=!0;b=document.createElement("p");b.style.marginTop= -"14px";b.appendChild(l);var t=document.createElement("span");mxUtils.write(t," "+mxResources.get("includeCopyOfMyDiagram"));b.appendChild(t);mxEvent.addListener(t,"click",function(a){l.checked=!l.checked;mxEvent.consume(a)});c.appendChild(b);b=document.createElement("div");mxUtils.write(b,mxResources.get("feedback"));c.appendChild(b);var p=document.createElement("textarea");p.style.resize="none";p.style.width="600px";p.style.height="140px";p.style.marginTop="6px";p.setAttribute("placeholder",mxResources.get("commentsNotes")); -c.appendChild(p);b=document.createElement("div");b.style.marginTop="26px";b.style.textAlign="right";t=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});t.className="geBtn";a.editor.cancelFirst?(b.appendChild(t),b.appendChild(k)):(b.appendChild(k),b.appendChild(t));c.appendChild(b);this.container=c};FeedbackDialog.maxAttachmentSize=1E6; -var RevisionDialog=function(a,c,b){var f=document.createElement("div"),k=document.createElement("h3");k.style.marginTop="0px";mxUtils.write(k,mxResources.get("revisionHistory"));f.appendChild(k);var h=document.createElement("div");h.style.position="absolute";h.style.overflow="auto";h.style.width="170px";h.style.height="378px";f.appendChild(h);var l=document.createElement("div");l.style.position="absolute";l.style.border="1px solid lightGray";l.style.left="199px";l.style.width="470px";l.style.height= -"376px";l.style.overflow="hidden";mxEvent.disableContextMenu(l);f.appendChild(l);var t=new Graph(l);t.setTooltips(!1);t.setEnabled(!1);t.setPanning(!0);t.panningHandler.ignoreCell=!0;t.panningHandler.useLeftButtonForPanning=!0;t.minFitScale=null;t.maxFitScale=null;t.centerZoom=!0;var p=0,d=null,g=0,n=t.getGlobalVariable;t.getGlobalVariable=function(a){return"page"==a&&null!=d&&null!=d[g]?d[g].getAttribute("name"):"pagenumber"==a?g+1:n.apply(this,arguments)};t.getLinkForCell=function(){return null}; -Editor.MathJaxRender&&t.addListener(mxEvent.SIZE,mxUtils.bind(this,function(b,d){a.editor.graph.mathEnabled&&Editor.MathJaxRender(t.container)}));var q=new Spinner({lines:11,length:15,width:6,radius:10,corners:1,rotate:0,direction:1,color:"#000",speed:1.4,trail:60,shadow:!1,hwaccel:!1,className:"spinner",zIndex:2E9,top:"50%",left:"50%"}),u=a.getCurrentFile(),v=null,w=null,y=null,m=null,x=mxUtils.button("",function(){null!=y&&t.zoomIn()});x.className="geSprite geSprite-zoomin";x.setAttribute("title", -mxResources.get("zoomIn"));x.style.outline="none";x.style.border="none";x.style.margin="2px";x.setAttribute("disabled","disabled");mxUtils.setOpacity(x,20);var z=mxUtils.button("",function(){null!=y&&t.zoomOut()});z.className="geSprite geSprite-zoomout";z.setAttribute("title",mxResources.get("zoomOut"));z.style.outline="none";z.style.border="none";z.style.margin="2px";z.setAttribute("disabled","disabled");mxUtils.setOpacity(z,20);var F=mxUtils.button("",function(){null!=y&&(t.maxFitScale=8,t.fit(8), -t.center())});F.className="geSprite geSprite-fit";F.setAttribute("title",mxResources.get("fit"));F.style.outline="none";F.style.border="none";F.style.margin="2px";F.setAttribute("disabled","disabled");mxUtils.setOpacity(F,20);var C=mxUtils.button("",function(){null!=y&&(t.zoomActual(),t.center())});C.className="geSprite geSprite-actualsize";C.setAttribute("title",mxResources.get("actualSize"));C.style.outline="none";C.style.border="none";C.style.margin="2px";C.setAttribute("disabled","disabled"); -mxUtils.setOpacity(C,20);var B=document.createElement("div");B.style.position="absolute";B.style.textAlign="right";B.style.color="gray";B.style.marginTop="10px";B.style.backgroundColor="transparent";B.style.top="440px";B.style.right="32px";B.style.maxWidth="380px";B.style.cursor="default";var H=mxUtils.button(mxResources.get("download"),function(){if(null!=y){var b=a.getCurrentFile(),b=null!=b&&null!=b.getTitle()?b.getTitle():a.defaultFilename,d=mxUtils.getXml(y.documentElement);a.isLocalFileSave()? -a.saveLocalFile(d,b,"text/xml"):(d="undefined"===typeof pako?"&xml="+encodeURIComponent(d):"&data="+encodeURIComponent(a.editor.graph.compress(d)),(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(b)+"&format=xml"+d)).simulate(document,"_blank"))}});H.className="geBtn";H.setAttribute("disabled","disabled");var D=mxUtils.button(mxResources.get("restore"),function(){null!=y&&null!=m&&a.confirm(mxResources.get("areYouSure"),function(){null!=b?b(m):a.spinner.spin(document.body,mxResources.get("restoring"))&& -u.save(!0,function(b){a.spinner.stop();a.replaceFileData(m);a.hideDialog()},function(b){a.spinner.stop();a.editor.setStatus("");a.handleError(b,null!=b?mxResources.get("errorSavingFile"):null)})})});D.className="geBtn";D.setAttribute("disabled","disabled");var E=document.createElement("select");E.setAttribute("disabled","disabled");E.style.maxWidth="80px";E.style.position="relative";E.style.top="-2px";E.style.verticalAlign="bottom";E.style.marginRight="6px";E.style.display="none";var I=null;mxEvent.addListener(E, -"change",function(a){null!=I&&(I(a),mxEvent.consume(a))});var A=mxUtils.button(mxResources.get("open"),function(){null!=y&&(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(mxUtils.getXml(y.documentElement)),a.openLink(a.getUrl(),null,!0))});A.className="geBtn";A.setAttribute("disabled","disabled");null!=b&&(A.style.display="none");var G=mxUtils.button(mxResources.get("show"),function(){null!=w&&a.openLink(w.getUrl(E.selectedIndex))});G.className="geBtn gePrimaryBtn"; -G.setAttribute("disabled","disabled");null!=b&&(G.style.display="none",D.className="geBtn gePrimaryBtn");k=document.createElement("div");k.style.position="absolute";k.style.top="482px";k.style.width="640px";k.style.textAlign="right";var J=document.createElement("div");J.className="geToolbarContainer";J.style.backgroundColor="transparent";J.style.padding="2px";J.style.border="none";J.style.left="199px";J.style.top="442px";var M=null;if(null!=c&&0<c.length){l.style.cursor="move";var L=document.createElement("table"); -L.style.border="1px solid lightGray";L.style.borderCollapse="collapse";L.style.borderSpacing="0px";L.style.width="100%";var T=document.createElement("tbody"),R=(new Date).toDateString();null!=a.currentPage&&null!=a.pages&&(p=mxUtils.indexOf(a.pages,a.currentPage));for(var V=c.length-1;0<=V;V--){var Y=function(b){var n=new Date(b.modifiedDate),f=null;if(0<=n.getTime()){var h=function(c){q.stop();var w=mxUtils.parseXml(c),h=a.editor.extractGraphModel(w.documentElement,!0);if(null!=h){var v=function(b){null!= -b&&(b=k(mxUtils.parseXml(a.editor.graph.decompress(mxUtils.getTextContent(b))).documentElement));return b},k=function(a){var b=a.getAttribute("background");if(null==b||""==b||b==mxConstants.NONE)b="#ffffff";l.style.backgroundColor=b;(new mxCodec(a.ownerDocument)).decode(a,t.getModel());t.maxFitScale=1;t.fit(8);t.center();return a};E.style.display="none";E.innerHTML="";y=w;m=c;d=parseSelectFunction=null;g=0;if("mxfile"==h.nodeName){w=h.getElementsByTagName("diagram");d=[];for(c=0;c<w.length;c++)d.push(w[c]); -g=Math.min(p,d.length-1);0<d.length&&v(d[g]);if(1<d.length)for(E.removeAttribute("disabled"),E.style.display="",c=0;c<d.length;c++)w=document.createElement("option"),mxUtils.write(w,d[c].getAttribute("name")||mxResources.get("pageWithNumber",[c+1])),w.setAttribute("value",c),c==g&&w.setAttribute("selected","selected"),E.appendChild(w);I=function(){try{var b=parseInt(E.value);v(d[b]);g=p=b}catch(ca){E.value=p,a.handleError(ca)}}}else k(h);c=b.lastModifyingUserName;null!=c&&20<c.length&&(c=c.substring(0, -20)+"...");B.innerHTML="";mxUtils.write(B,(null!=c?c+" ":"")+n.toLocaleDateString()+" "+n.toLocaleTimeString());B.setAttribute("title",f.getAttribute("title"));x.removeAttribute("disabled");z.removeAttribute("disabled");F.removeAttribute("disabled");C.removeAttribute("disabled");null!=u&&u.isRestricted()||(a.editor.graph.isEnabled()&&D.removeAttribute("disabled"),H.removeAttribute("disabled"),G.removeAttribute("disabled"),A.removeAttribute("disabled"));mxUtils.setOpacity(x,60);mxUtils.setOpacity(z, -60);mxUtils.setOpacity(F,60);mxUtils.setOpacity(C,60)}else E.style.display="none",E.innerHTML="",B.innerHTML="",mxUtils.write(B,mxResources.get("errorLoadingFile"))},f=document.createElement("tr");f.style.borderBottom="1px solid lightGray";f.style.fontSize="12px";f.style.cursor="pointer";var k=document.createElement("td");k.style.padding="6px";k.style.whiteSpace="nowrap";b==c[c.length-1]?mxUtils.write(k,mxResources.get("current")):n.toDateString()===R?mxUtils.write(k,n.toLocaleTimeString()):mxUtils.write(k, -n.toLocaleDateString()+" "+n.toLocaleTimeString());f.appendChild(k);f.setAttribute("title",n.toLocaleDateString()+" "+n.toLocaleTimeString()+" "+a.formatFileSize(parseInt(b.fileSize))+(null!=b.lastModifyingUserName?" "+b.lastModifyingUserName:""));mxEvent.addListener(f,"click",function(a){w!=b&&(q.stop(),null!=v&&(v.style.backgroundColor=""),w=b,v=f,v.style.backgroundColor="#ebf2f9",m=y=null,B.removeAttribute("title"),B.innerHTML=mxUtils.htmlEntities(mxResources.get("loading")+"..."),l.style.backgroundColor= -"#ffffff",t.getModel().clear(),D.setAttribute("disabled","disabled"),H.setAttribute("disabled","disabled"),x.setAttribute("disabled","disabled"),z.setAttribute("disabled","disabled"),C.setAttribute("disabled","disabled"),F.setAttribute("disabled","disabled"),A.setAttribute("disabled","disabled"),G.setAttribute("disabled","disabled"),E.setAttribute("disabled","disabled"),mxUtils.setOpacity(x,20),mxUtils.setOpacity(z,20),mxUtils.setOpacity(F,20),mxUtils.setOpacity(C,20),q.spin(l),b.getXml(function(a){if(w== -b)try{h(a)}catch(U){B.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+": "+U.message)}},function(a){q.stop();E.style.display="none";E.innerHTML="";B.innerHTML="";mxUtils.write(B,mxResources.get("errorLoadingFile"))}),mxEvent.consume(a))});mxEvent.addListener(f,"dblclick",function(a){G.click();window.getSelection?window.getSelection().removeAllRanges():document.selection&&document.selection.empty();mxEvent.consume(a)},!1);T.appendChild(f)}return f}(c[V]);null!=Y&&V==c.length-1&&(M=Y)}L.appendChild(T); -h.appendChild(L)}else null==u||null==a.drive&&u.constructor==window.DriveFile||null==a.dropbox&&u.constructor==window.DropboxFile?(l.style.display="none",J.style.display="none",mxUtils.write(h,mxResources.get("notAvailable"))):(l.style.display="none",J.style.display="none",mxUtils.write(h,mxResources.get("noRevisions")));this.init=function(){null!=M&&M.click()};h=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});h.className="geBtn";J.appendChild(E);J.appendChild(x);J.appendChild(z); -J.appendChild(C);J.appendChild(F);a.editor.cancelFirst?(k.appendChild(h),k.appendChild(H),k.appendChild(A),k.appendChild(D),k.appendChild(G)):(k.appendChild(H),k.appendChild(A),k.appendChild(D),k.appendChild(G),k.appendChild(h));f.appendChild(k);f.appendChild(J);f.appendChild(B);this.container=f},DraftDialog=function(a,c,b,f,k,h,l,t){var p=document.createElement("div"),d=document.createElement("div");d.style.marginTop="0px";d.style.whiteSpace="nowrap";d.style.overflow="auto";mxUtils.write(d,c);p.appendChild(d); -var g=document.createElement("div");g.style.position="absolute";g.style.border="1px solid lightGray";g.style.marginTop="10px";g.style.width="640px";g.style.top="46px";g.style.bottom="74px";g.style.overflow="hidden";mxEvent.disableContextMenu(g);p.appendChild(g);var n=new Graph(g);n.setEnabled(!1);n.setPanning(!0);n.panningHandler.ignoreCell=!0;n.panningHandler.useLeftButtonForPanning=!0;n.minFitScale=null;n.maxFitScale=null;n.centerZoom=!0;c=mxUtils.parseXml(b);var q=a.editor.extractGraphModel(c.documentElement, -!0),u=0,v=null,w=n.getGlobalVariable;n.getGlobalVariable=function(a){return"page"==a&&null!=v&&null!=v[u]?v[u].getAttribute("name"):"pagenumber"==a?u+1:w.apply(this,arguments)};n.getLinkForCell=function(){return null};c=mxUtils.button("",function(){n.zoomIn()});c.className="geSprite geSprite-zoomin";c.setAttribute("title",mxResources.get("zoomIn"));c.style.outline="none";c.style.border="none";c.style.margin="2px";mxUtils.setOpacity(c,60);b=mxUtils.button("",function(){n.zoomOut()});b.className="geSprite geSprite-zoomout"; -b.setAttribute("title",mxResources.get("zoomOut"));b.style.outline="none";b.style.border="none";b.style.margin="2px";mxUtils.setOpacity(b,60);d=mxUtils.button("",function(){n.maxFitScale=8;n.fit(8);n.center()});d.className="geSprite geSprite-fit";d.setAttribute("title",mxResources.get("fit"));d.style.outline="none";d.style.border="none";d.style.margin="2px";mxUtils.setOpacity(d,60);var y=mxUtils.button("",function(){n.zoomActual();n.center()});y.className="geSprite geSprite-actualsize";y.setAttribute("title", -mxResources.get("actualSize"));y.style.outline="none";y.style.border="none";y.style.margin="2px";mxUtils.setOpacity(y,60);k=mxUtils.button(l||mxResources.get("discard"),k);k.className="geBtn";var m=document.createElement("select");m.style.maxWidth="80px";m.style.position="relative";m.style.top="-2px";m.style.verticalAlign="bottom";m.style.marginRight="6px";m.style.display="none";f=mxUtils.button(h||mxResources.get("edit"),f);f.className="geBtn gePrimaryBtn";h=document.createElement("div");h.style.position= -"absolute";h.style.bottom="30px";h.style.width="640px";h.style.textAlign="right";l=document.createElement("div");l.className="geToolbarContainer";l.style.cssText="box-shadow:none !important;background-color:transparent;padding:2px;border-style:none !important;bottom:30px;";this.init=function(){function b(a){if(null!=a){var b=a.getAttribute("background");if(null==b||""==b||b==mxConstants.NONE)b="#ffffff";g.style.backgroundColor=b;(new mxCodec(a.ownerDocument)).decode(a,n.getModel());n.maxFitScale= -1;n.fit(8);n.center()}}function d(d){null!=d&&(d=b(mxUtils.parseXml(a.editor.graph.decompress(mxUtils.getTextContent(d))).documentElement));return d}mxEvent.addListener(m,"change",function(a){u=parseInt(m.value);d(v[u]);mxEvent.consume(a)});if("mxfile"==q.nodeName){var c=q.getElementsByTagName("diagram");v=[];for(var f=0;f<c.length;f++)v.push(c[f]);0<v.length&&d(v[u]);if(1<v.length)for(m.style.display="",f=0;f<v.length;f++)c=document.createElement("option"),mxUtils.write(c,v[f].getAttribute("name")|| -mxResources.get("pageWithNumber",[f+1])),c.setAttribute("value",f),f==u&&c.setAttribute("selected","selected"),m.appendChild(c)}else b(q)};l.appendChild(m);l.appendChild(c);l.appendChild(b);l.appendChild(y);l.appendChild(d);c=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog(!0)});c.className="geBtn";t=null!=t?mxUtils.button(mxResources.get("ignore"),t):null;null!=t&&(t.className="geBtn");a.editor.cancelFirst?(h.appendChild(c),null!=t&&h.appendChild(t),h.appendChild(k),h.appendChild(f)): -(h.appendChild(f),h.appendChild(k),null!=t&&h.appendChild(t),h.appendChild(c));p.appendChild(h);p.appendChild(l);this.container=p},FindWindow=function(a,c,b,f,k){function h(a,b,d){if("object"===typeof b.value&&null!=b.value.attributes){b=b.value.attributes;for(var g=0;g<b.length;g++)if("label"!=b[g].nodeName){var c=mxUtils.trim(b[g].nodeValue.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")).toLowerCase();if(null==a&&c.substring(0,d.length)===d||null!=a&&a.test(c))return!0}}return!1}function l(){var a=p.model.getDescendants(p.model.getRoot()), -b=q.value.toLowerCase(),c=u.checked?new RegExp(b):null,n=null;d!=b&&(d=b,g=null);var f=null==g;if(0<b.length)for(var v=0;v<a.length;v++){var k=p.view.getState(a[v]);if(null!=k&&null!=k.cell.value&&(f||null==n)&&(p.model.isVertex(k.cell)||p.model.isEdge(k.cell))&&(p.isHtmlLabel(k.cell)?(w.innerHTML=p.getLabel(k.cell),label=mxUtils.extractTextWithWhitespace([w])):label=p.getLabel(k.cell),label=mxUtils.trim(label.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")).toLowerCase(),null==c&&(label.substring(0,b.length)=== -b||h(c,k.cell,b))||null!=c&&(c.test(label)||h(c,k.cell,b))))if(f){n=k;break}else null==n&&(n=k);f=f||k==g}null!=n?(g=n,p.scrollCellToVisible(g.cell),p.isEnabled()?p.setSelectionCell(g.cell):p.highlightCell(g.cell)):p.isEnabled()&&p.clearSelection();return 0==b.length||null!=n}var t=a.actions.get("find"),p=a.editor.graph,d=null,g=null,n=document.createElement("div");n.style.userSelect="none";n.style.overflow="hidden";n.style.padding="10px";n.style.height="100%";var q=document.createElement("input"); -q.setAttribute("placeholder",mxResources.get("find"));q.setAttribute("type","text");q.style.marginTop="4px";q.style.marginBottom="6px";q.style.width="200px";q.style.fontSize="12px";q.style.borderRadius="4px";q.style.padding="6px";n.appendChild(q);mxUtils.br(n);var u=document.createElement("input");u.setAttribute("type","checkbox");u.style.marginRight="4px";n.appendChild(u);mxUtils.write(n,mxResources.get("regularExpression"));var v=a.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000088250"); -v.style.position="relative";v.style.marginLeft="6px";v.style.top="-1px";n.appendChild(v);var w=document.createElement("div");mxUtils.br(n);v=mxUtils.button(mxResources.get("reset"),function(){q.value="";q.style.backgroundColor="";d=g=null;q.focus()});v.setAttribute("title",mxResources.get("reset"));v.style.marginTop="6px";v.style.marginRight="4px";v.className="geBtn";n.appendChild(v);v=mxUtils.button(mxResources.get("find"),function(){try{q.style.backgroundColor=l()?"":"#ffcfcf"}catch(y){a.handleError(y)}}); -v.setAttribute("title",mxResources.get("find")+" (Enter)");v.style.marginTop="6px";v.className="geBtn gePrimaryBtn";n.appendChild(v);mxEvent.addListener(q,"keyup",function(a){if(91==a.keyCode||17==a.keyCode)mxEvent.consume(a);else if(27==a.keyCode)t.funct();else if(d!=q.value.toLowerCase()||13==a.keyCode)try{q.style.backgroundColor=l()?"":"#ffcfcf"}catch(m){q.style.backgroundColor="#ffcfcf"}});mxEvent.addListener(n,"keydown",function(b){70==b.keyCode&&a.keyHandler.isControlDown(b)&&!mxEvent.isShiftDown(b)&& -(t.funct(),mxEvent.consume(b))});this.window=new mxWindow(mxResources.get("find"),n,c,b,f,k,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!1);this.window.setClosable(!0);this.window.addListener("show",mxUtils.bind(this,function(){this.window.isVisible()?(q.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?q.select():document.execCommand("selectAll",!1,null)):p.container.focus()}))},TagsWindow=function(a,c,b,f,k){var h= -a.editor.graph,l="tags",t=document.createElement("div");t.style.userSelect="none";t.style.overflow="hidden";t.style.padding="10px";t.style.height="100%";var p=document.createElement("input");p.setAttribute("placeholder",mxResources.get("allTags"));p.setAttribute("type","text");p.style.marginTop="4px";p.style.width="260px";p.style.fontSize="12px";p.style.borderRadius="4px";p.style.padding="6px";t.appendChild(p);if(!a.isOffline()||mxClient.IS_CHROMEAPP){p.style.width="240px";var d=a.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000046966"); -d.firstChild.style.marginBottom="6px";d.style.marginLeft="6px";t.appendChild(d)}mxEvent.addListener(p,"dblclick",function(){var b=new FilenameDialog(a,l,mxResources.get("ok"),mxUtils.bind(this,function(a){null!=a&&0<a.length&&(l=a)}),mxResources.get("enterPropertyName"));a.showDialog(b.container,300,80,!0,!0);b.init()});p.setAttribute("title",mxResources.get("doubleClickChangeProperty"));mxUtils.br(t);d=mxUtils.button(mxResources.get("hide"),function(){var a=h.getCellsForTags(p.value.split(" "),void 0, -l);h.setCellsVisible(a,!1)});d.setAttribute("title",mxResources.get("hide"));d.style.marginTop="8px";d.style.marginRight="4px";d.className="geBtn";t.appendChild(d);d=mxUtils.button(mxResources.get("show"),function(){var a=h.getCellsForTags(p.value.split(" "),void 0,l);h.setCellsVisible(a,!0);if(h.isEnabled())h.setSelectionCells(a);else for(var b=0;b<a.length;b++)h.highlightCell(a[b])});d.setAttribute("title",mxResources.get("show"));d.style.marginTop="8px";d.style.marginRight="4px";d.className="geBtn"; -t.appendChild(d);var g=a.actions.get("tags"),d=mxUtils.button(mxResources.get("close"),function(){g.funct()});d.setAttribute("title",mxResources.get("close")+" (Enter/Esc)");d.style.marginTop="8px";d.className="geBtn gePrimaryBtn";t.appendChild(d);mxEvent.addListener(p,"keyup",function(a){13!=a.keyCode&&27!=a.keyCode||g.funct()});this.window=new mxWindow(mxResources.get("tags"),t,c,b,f,k,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!1);this.window.setClosable(!0); -this.window.addListener("show",mxUtils.bind(this,function(){this.window.isVisible()?(p.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?p.select():document.execCommand("selectAll",!1,null)):h.container.focus()}))},AuthDialog=function(a,c,b,f){var k=document.createElement("div");k.style.textAlign="center";var h=document.createElement("p");h.style.fontSize="16pt";h.style.padding="0px";h.style.margin="0px";h.style.color="gray";mxUtils.write(h,mxResources.get("authorizationRequired")); -var l="Unknown",t=document.createElement("img");t.setAttribute("border","0");t.setAttribute("align","absmiddle");t.style.marginRight="10px";c==a.drive?(l=mxResources.get("googleDrive"),t.src=IMAGE_PATH+"/google-drive-logo-white.svg"):c==a.dropbox?(l=mxResources.get("dropbox"),t.src=IMAGE_PATH+"/dropbox-logo-white.svg"):c==a.oneDrive?(l=mxResources.get("oneDrive"),t.src=IMAGE_PATH+"/onedrive-logo-white.svg"):c==a.gitHub?(l=mxResources.get("github"),t.src=IMAGE_PATH+"/github-logo-white.svg"):c==a.trello&& -(l=mxResources.get("trello"),t.src=IMAGE_PATH+"/trello-logo-white.svg");a=document.createElement("p");mxUtils.write(a,mxResources.get("authorizeThisAppIn",[l]));var p=document.createElement("input");p.setAttribute("type","checkbox");l=mxUtils.button(mxResources.get("authorize"),function(){f(p.checked)});l.insertBefore(t,l.firstChild);l.style.marginTop="6px";l.className="geBigButton";k.appendChild(h);k.appendChild(a);k.appendChild(l);b&&(b=document.createElement("p"),b.style.marginTop="20px",b.appendChild(p), -h=document.createElement("span"),mxUtils.write(h," "+mxResources.get("rememberMe")),b.appendChild(h),k.appendChild(b),p.checked=!0,p.defaultChecked=!0,mxEvent.addListener(h,"click",function(a){p.checked=!p.checked;mxEvent.consume(a)}));this.container=k},MoreShapesDialog=function(a,c,b){b=null!=b?b:a.sidebar.entries;var f=document.createElement("div"),k=[];if(null!=a.sidebar.customEntries)for(var h=0;h<a.sidebar.customEntries.length;h++){for(var l=a.sidebar.customEntries[h],t={title:a.getResource(l.title), -entries:[]},p=0;p<l.entries.length;p++){var d=l.entries[p];t.entries.push({id:d.id,title:a.getResource(d.title),desc:a.getResource(d.desc),image:d.preview})}k.push(t)}for(h=0;h<b.length;h++)if(null==a.sidebar.enabledLibraries)k.push(b[h]);else{t={title:b[h].title,entries:[]};for(p=0;p<b[h].entries.length;p++)0<=mxUtils.indexOf(a.sidebar.enabledLibraries,b[h].entries[p].id)&&t.entries.push(b[h].entries[p]);0<t.entries.length&&k.push(t)}b=k;if(c){p=document.createElement("div");p.className="geDialogTitle"; -mxUtils.write(p,mxResources.get("shapes"));p.style.position="absolute";p.style.top="0px";p.style.left="0px";p.style.lineHeight="40px";p.style.height="40px";p.style.right="0px";mxClient.IS_QUIRKS&&(p.style.width="718px");var g=document.createElement("div"),n=document.createElement("div");g.style.position="absolute";g.style.top="40px";g.style.left="0px";g.style.width="202px";g.style.bottom="60px";g.style.overflow="auto";mxClient.IS_QUIRKS&&(g.style.height="437px",g.style.marginTop="1px");n.style.position= -"absolute";n.style.left="202px";n.style.right="0px";n.style.top="40px";n.style.bottom="60px";n.style.overflow="auto";n.style.borderLeft="1px solid rgb(211, 211, 211)";n.style.textAlign="center";mxClient.IS_QUIRKS&&(n.style.width=parseInt(p.style.width)-202+"px",n.style.height=g.style.height,n.style.marginTop=g.style.marginTop);var q=null,u=[],v=document.createElement("div");v.style.position="relative";v.style.left="0px";v.style.right="0px";for(h=0;h<b.length;h++)(function(b){var d=v.cloneNode(!1); -d.style.fontWeight="bold";d.style.backgroundColor="dark"==uiTheme?"#505759":"#e5e5e5";d.style.padding="6px 0px 6px 20px";mxUtils.write(d,b.title);g.appendChild(d);for(var c=0;c<b.entries.length;c++)(function(b){var d=v.cloneNode(!1);d.style.cursor="pointer";d.style.padding="4px 0px 4px 20px";var m=document.createElement("input");m.setAttribute("type","checkbox");m.checked=a.sidebar.isEntryVisible(b.id);m.defaultChecked=m.checked;d.appendChild(m);mxUtils.write(d," "+b.title);g.appendChild(d);var f= -function(a){if(null==a||"INPUT"!=mxEvent.getSource(a).nodeName){n.style.textAlign="center";n.style.padding="0px";n.style.color="";n.innerHTML="";if(null!=b.desc){var g=document.createElement("pre");g.style.boxSizing="border-box";g.style.fontFamily="inherit";g.style.margin="20px";g.style.right="0px";g.style.textAlign="left";mxUtils.write(g,b.desc);n.appendChild(g)}null!=b.imageCallback?b.imageCallback(n):null!=b.image?n.innerHTML+='<img border="0" src="'+b.image+'"/>':null==b.desc&&(n.style.padding= -"20px",n.style.color="rgb(179, 179, 179)",mxUtils.write(n,mxResources.get("noPreview")));null!=q&&(q.style.backgroundColor="");q=d;q.style.backgroundColor="dark"==uiTheme?"#505759":"#ebf2f9";null!=a&&mxEvent.consume(a)}};mxEvent.addListener(d,"click",f);mxEvent.addListener(d,"dblclick",function(a){m.checked=!m.checked;mxEvent.consume(a)});u.push(function(){return m.checked?b.id:null});0==h&&0==c&&f()})(b.entries[c])})(b[h]);f.style.padding="30px";f.appendChild(p);f.appendChild(g);f.appendChild(n); -b=document.createElement("div");b.className="geDialogFooter";b.style.position="absolute";b.style.paddingRight="16px";b.style.color="gray";b.style.left="0px";b.style.right="0px";b.style.bottom="0px";b.style.height="60px";b.style.lineHeight="52px";mxClient.IS_QUIRKS&&(b.style.width=p.style.width,b.style.paddingTop="12px");var w=document.createElement("input");w.setAttribute("type","checkbox");if(isLocalStorage||mxClient.IS_CHROMEAPP)p=document.createElement("span"),p.style.paddingRight="20px",p.appendChild(w), -mxUtils.write(p," "+mxResources.get("rememberThisSetting")),w.checked=!0,w.defaultChecked=!0,mxEvent.addListener(p,"click",function(a){mxEvent.getSource(a)!=w&&(w.checked=!w.checked,mxEvent.consume(a))}),mxClient.IS_QUIRKS&&(p.style.position="relative",p.style.top="-6px"),b.appendChild(p);p=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});p.className="geBtn";c=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();for(var b=[],d=0;d<u.length;d++){var g=u[d].apply(this, -arguments);null!=g&&b.push(g)}a.sidebar.showEntries(b.join(";"),w.checked,!0)});c.className="geBtn gePrimaryBtn"}else{var y=document.createElement("table"),p=document.createElement("tbody");f.style.height="100%";f.style.overflow="auto";t=document.createElement("tr");y.style.width="100%";c=document.createElement("td");var k=document.createElement("td"),l=document.createElement("td"),m=mxUtils.bind(this,function(b,d,g){var c=document.createElement("input");c.type="checkbox";y.appendChild(c);c.checked= -a.sidebar.isEntryVisible(g);var n=document.createElement("span");mxUtils.write(n,d);d=document.createElement("div");d.style.display="block";d.appendChild(c);d.appendChild(n);mxEvent.addListener(n,"click",function(a){c.checked=!c.checked;mxEvent.consume(a)});b.appendChild(d);return function(){return c.checked?g:null}});t.appendChild(c);t.appendChild(k);t.appendChild(l);p.appendChild(t);y.appendChild(p);for(var u=[],x=0,h=0;h<b.length;h++)for(p=0;p<b[h].entries.length;p++)x++;for(var z=[c,k,l],F=0, -h=0;h<b.length;h++)(function(a){for(var b=0;b<a.entries.length;b++){var d=a.entries[b];u.push(m(z[Math.floor(F/(x/3))],d.title,d.id));F++}})(b[h]);f.appendChild(y);b=document.createElement("div");b.style.marginTop="18px";b.style.textAlign="center";w=document.createElement("input");isLocalStorage&&(w.setAttribute("type","checkbox"),w.checked=!0,w.defaultChecked=!0,b.appendChild(w),p=document.createElement("span"),mxUtils.write(p," "+mxResources.get("rememberThisSetting")),b.appendChild(p),mxEvent.addListener(p, -"click",function(a){w.checked=!w.checked;mxEvent.consume(a)}));f.appendChild(b);p=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});p.className="geBtn";c=mxUtils.button(mxResources.get("apply"),function(){for(var b=["search"],d=0;d<u.length;d++){var g=u[d].apply(this,arguments);null!=g&&b.push(g)}a.sidebar.showEntries(0<b.length?b.join(";"):"",w.checked);a.hideDialog()});c.className="geBtn gePrimaryBtn";b=document.createElement("div");b.style.marginTop="26px";b.style.textAlign= -"right"}a.editor.cancelFirst?(b.appendChild(p),b.appendChild(c)):(b.appendChild(c),b.appendChild(p));f.appendChild(b);this.container=f},PluginsDialog=function(a){function c(){if(0==k.length)f.innerHTML=mxUtils.htmlEntities(mxResources.get("noPlugins"));else{f.innerHTML="";for(var b=0;b<k.length;b++){var d=document.createElement("span");d.style.whiteSpace="nowrap";var q=document.createElement("span");q.className="geSprite geSprite-delete";q.style.position="relative";q.style.cursor="pointer";q.style.top= -"5px";q.style.marginRight="4px";q.style.display="inline-block";d.appendChild(q);mxUtils.write(d,k[b]);f.appendChild(d);mxUtils.br(f);mxEvent.addListener(q,"click",function(b){return function(){a.confirm(window.parent.mxResources.get("delete")+' "'+k[b]+'"?',function(){k.splice(b,1);c()})}}(b))}}}var b=document.createElement("div"),f=document.createElement("div");f.style.height="120px";f.style.overflow="auto";var k=mxSettings.getPlugins().slice();b.appendChild(f);c();var h=mxUtils.button(mxResources.get("add"), -function(){var b="",d=urlParams.p;if(null!=d&&0<d.length){for(var f=d.split(";"),d=0;d<f.length;d++){var u=App.pluginRegistry[f[d]];null!=u&&(b+=u+";")}";"==b.charAt(b.length-1)&&(b=b.substring(0,b.length-1))}b=new FilenameDialog(a,b,mxResources.get("add"),function(a){if(null!=a&&0<a.length){f=a.split(";");for(a=0;a<f.length;a++){var b=f[a],d=App.pluginRegistry[b];null!=d&&(b=d);0<b.length&&0>mxUtils.indexOf(k,b)&&k.push(b)}c()}},mxResources.get("enterValue")+" ("+mxResources.get("url")+")");a.showDialog(b.container, -300,80,!0,!0);b.init()});h.className="geBtn";var l=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});l.className="geBtn";var t=mxUtils.button(mxResources.get("apply"),function(){mxSettings.setPlugins(k);mxSettings.save();a.hideDialog();a.alert(mxResources.get("restartForChangeRequired"))});t.className="geBtn gePrimaryBtn";var p=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://desk.draw.io/support/solutions/articles/16000056430")});p.className="geBtn";a.isOffline()&& -!mxClient.IS_CHROMEAPP&&(p.style.display="none");var d=document.createElement("div");d.style.marginTop="14px";d.style.textAlign="right";a.editor.cancelFirst?(d.appendChild(l),d.appendChild(p),d.appendChild(h),d.appendChild(t)):(d.appendChild(p),d.appendChild(h),d.appendChild(t),d.appendChild(l));b.appendChild(d);this.container=b},CropImageDialog=function(a,c,b){var f=document.createElement("div"),k=document.createElement("table"),h=document.createElement("tbody"),l=document.createElement("tr"),t= -document.createElement("td");t.style.whiteSpace="nowrap";t.setAttribute("colspan","2");mxUtils.write(t,mxResources.get("loading")+"...");l.appendChild(t);h.appendChild(l);var l=document.createElement("tr"),p=document.createElement("td"),d=document.createElement("td");k.style.paddingLeft="6px";mxUtils.write(p,mxResources.get("left")+":");var g=document.createElement("input");g.setAttribute("type","text");g.style.width="100px";g.value="0";this.init=function(){g.focus();g.select()};d.appendChild(g); -l.appendChild(p);l.appendChild(d);h.appendChild(l);l=document.createElement("tr");p=document.createElement("td");d=document.createElement("td");mxUtils.write(p,mxResources.get("top")+":");var n=document.createElement("input");n.setAttribute("type","text");n.style.width="100px";n.value="0";d.appendChild(n);l.appendChild(p);l.appendChild(d);h.appendChild(l);l=document.createElement("tr");p=document.createElement("td");d=document.createElement("td");mxUtils.write(p,mxResources.get("right")+":");var q= -document.createElement("input");q.setAttribute("type","text");q.style.width="100px";q.value="0";d.appendChild(q);l.appendChild(p);l.appendChild(d);h.appendChild(l);l=document.createElement("tr");p=document.createElement("td");d=document.createElement("td");mxUtils.write(p,mxResources.get("bottom")+":");var u=document.createElement("input");u.setAttribute("type","text");u.style.width="100px";u.value="0";d.appendChild(u);l.appendChild(p);l.appendChild(d);h.appendChild(l);l=document.createElement("tr"); -p=document.createElement("td");d=document.createElement("td");mxUtils.write(p,mxResources.get("circle")+":");l.appendChild(p);var v=document.createElement("input");v.setAttribute("type","checkbox");d.appendChild(v);l.appendChild(d);h.appendChild(l);k.appendChild(h);f.appendChild(k);var k=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()}),w=new Image,y=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();var d=document.createElement("canvas"),c=d.getContext("2d"),f=w.width, -h=w.height,k=parseInt(g.value),l=parseInt(n.value),f=Math.max(1,f-k-parseInt(q.value)),h=Math.max(1,h-l-parseInt(u.value));d.width=f;d.height=h;v.checked&&(c.fillStyle="#000000",c.arc(f/2,h/2,Math.min(f/2,h/2),0,2*Math.PI),c.fill(),c.globalCompositeOperation="source-in");c.drawImage(w,k,l,f,h,0,0,f,h);b(d.toDataURL())});y.setAttribute("disabled","disabled");w.onload=function(){y.removeAttribute("disabled");t.innerHTML="";mxUtils.write(t,mxResources.get("width")+": "+w.width+" "+mxResources.get("height")+ -": "+w.height)};w.src=c;mxEvent.addListener(f,"keypress",function(a){13==a.keyCode&&y.click()});c=document.createElement("div");c.style.marginTop="20px";c.style.textAlign="right";a.editor.cancelFirst?(c.appendChild(k),c.appendChild(y)):(c.appendChild(y),c.appendChild(k));f.appendChild(c);this.container=f},EditGeometryDialog=function(a,c){var b=a.editor.graph,f=1==c.length?b.getCellGeometry(c[0]):null,k=document.createElement("div"),h=document.createElement("table"),l=document.createElement("tbody"), -t=document.createElement("tr"),p=document.createElement("td"),d=document.createElement("td");h.style.paddingLeft="6px";mxUtils.write(p,mxResources.get("relative")+":");var g=document.createElement("input");g.setAttribute("type","checkbox");null!=f&&f.relative&&(g.setAttribute("checked","checked"),g.defaultChecked=!0);this.init=function(){g.focus()};d.appendChild(g);t.appendChild(p);t.appendChild(d);l.appendChild(t);t=document.createElement("tr");p=document.createElement("td");d=document.createElement("td"); -mxUtils.write(p,mxResources.get("left")+":");var n=document.createElement("input");n.setAttribute("type","text");n.style.width="100px";n.value=null!=f?f.x:"";d.appendChild(n);t.appendChild(p);t.appendChild(d);l.appendChild(t);t=document.createElement("tr");p=document.createElement("td");d=document.createElement("td");mxUtils.write(p,mxResources.get("top")+":");var q=document.createElement("input");q.setAttribute("type","text");q.style.width="100px";q.value=null!=f?f.y:"";d.appendChild(q);t.appendChild(p); -t.appendChild(d);l.appendChild(t);t=document.createElement("tr");p=document.createElement("td");d=document.createElement("td");mxUtils.write(p,mxResources.get("dx")+":");var u=document.createElement("input");u.setAttribute("type","text");u.style.width="100px";u.value=null!=f&&null!=f.offset?f.offset.x:"";d.appendChild(u);t.appendChild(p);t.appendChild(d);l.appendChild(t);t=document.createElement("tr");p=document.createElement("td");d=document.createElement("td");mxUtils.write(p,mxResources.get("dy")+ -":");var v=document.createElement("input");v.setAttribute("type","text");v.style.width="100px";v.value=null!=f&&null!=f.offset?f.offset.y:"";d.appendChild(v);t.appendChild(p);t.appendChild(d);l.appendChild(t);t=document.createElement("tr");p=document.createElement("td");d=document.createElement("td");mxUtils.write(p,mxResources.get("width")+":");var w=document.createElement("input");w.setAttribute("type","text");w.style.width="100px";w.value=null!=f?f.width:"";d.appendChild(w);t.appendChild(p);t.appendChild(d); -l.appendChild(t);t=document.createElement("tr");p=document.createElement("td");d=document.createElement("td");mxUtils.write(p,mxResources.get("height")+":");var y=document.createElement("input");y.setAttribute("type","text");y.style.width="100px";y.value=null!=f?f.height:"";d.appendChild(y);t.appendChild(p);t.appendChild(d);l.appendChild(t);t=document.createElement("tr");p=document.createElement("td");d=document.createElement("td");mxUtils.write(p,mxResources.get("rotation")+":");var m=document.createElement("input"); -m.setAttribute("type","text");m.style.width="100px";m.value=1==c.length?mxUtils.getValue(b.getCellStyle(c[0]),mxConstants.STYLE_ROTATION,0):"";d.appendChild(m);t.appendChild(p);t.appendChild(d);l.appendChild(t);h.appendChild(l);k.appendChild(h);f=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});f.className="geBtn";var x=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();b.getModel().beginUpdate();try{for(var d=0;d<c.length;d++){var f=b.getCellGeometry(c[d]);null!= -f&&(f=f.clone(),b.isCellMovable(c[d])&&(f.relative=g.checked,0<mxUtils.trim(n.value).length&&(f.x=Number(n.value)),0<mxUtils.trim(q.value).length&&(f.y=Number(q.value)),0<mxUtils.trim(u.value).length&&(null==f.offset&&(f.offset=new mxPoint),f.offset.x=Number(u.value)),0<mxUtils.trim(v.value).length&&(null==f.offset&&(f.offset=new mxPoint),f.offset.y=Number(v.value))),b.isCellResizable(c[d])&&(0<mxUtils.trim(w.value).length&&(f.width=Number(w.value)),0<mxUtils.trim(y.value).length&&(f.height=Number(y.value))), -b.getModel().setGeometry(c[d],f));0<mxUtils.trim(m.value).length&&b.setCellStyles(mxConstants.STYLE_ROTATION,Number(m.value),[c[d]])}}finally{b.getModel().endUpdate()}});x.className="geBtn gePrimaryBtn";mxEvent.addListener(k,"keypress",function(a){13==a.keyCode&&x.click()});h=document.createElement("div");h.style.marginTop="20px";h.style.textAlign="right";a.editor.cancelFirst?(h.appendChild(f),h.appendChild(x)):(h.appendChild(x),h.appendChild(f));k.appendChild(h);this.container=k},LibraryDialog=function(a, -c,b,f,k,h){function l(a){for(a=document.elementFromPoint(a.clientX,a.clientY);null!=a&&a.parentNode!=u;)a=a.parentNode;var b=null;if(null!=a)for(var d=u.firstChild,b=0;null!=d&&d!=a;)d=d.nextSibling,b++;return b}function t(b,d,c,m,n,f,q,h,k){try{if(null==d||"image/"==d.substring(0,6))if(null==b&&null!=q||null==w[b]){var C=function(){D.innerHTML="";D.style.cursor="pointer";D.style.whiteSpace="nowrap";D.style.textOverflow="ellipsis";mxUtils.write(D,null!=L.title&&0<L.title.length?L.title:mxResources.get("untitled")); -D.style.color=null==L.title||0==L.title.length?"#d0d0d0":""};u.style.backgroundImage="";v.style.display="none";var p=n,B=f;if(n>a.maxImageSize||f>a.maxImageSize){var A=Math.min(1,Math.min(a.maxImageSize/Math.max(1,n)),a.maxImageSize/Math.max(1,f));n*=A;f*=A}p>B?(B=Math.round(100*B/p),p=100):(p=Math.round(100*p/B),B=100);var H=document.createElement("div");H.setAttribute("draggable","true");H.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";H.style.position="relative";H.style.cursor="move"; -mxUtils.setPrefixedStyle(H.style,"transition","transform .1s ease-in-out");if(null!=b){var E=document.createElement("img");E.setAttribute("src",z.convert(b));E.style.width=p+"px";E.style.height=B+"px";E.style.margin="10px";E.style.paddingBottom=Math.floor((100-B)/2)+"px";E.style.paddingLeft=Math.floor((100-p)/2)+"px";H.appendChild(E)}else if(null!=q){var G=a.stringToCells(a.editor.graph.decompress(q.xml));0<G.length&&(a.sidebar.createThumb(G,100,100,H,null,!0,!1),H.firstChild.style.display=mxClient.IS_QUIRKS? -"inline":"inline-block",H.firstChild.style.cursor="")}var J=document.createElement("img");J.setAttribute("src",Editor.closeImage);J.setAttribute("border","0");J.setAttribute("title",mxResources.get("delete"));J.setAttribute("align","top");J.style.paddingTop="4px";J.style.position="absolute";J.style.marginLeft="-12px";J.style.zIndex="1";J.style.cursor="pointer";mxEvent.addListener(J,"dragstart",function(a){mxEvent.consume(a)});(function(a,b,d){mxEvent.addListener(J,"click",function(c){w[b]=null;for(var n= -0;n<g.length;n++)if(null!=g[n].data&&g[n].data==b||null!=g[n].xml&&null!=d&&g[n].xml==d.xml){g.splice(n,1);break}H.parentNode.removeChild(a);0==g.length&&(u.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')",v.style.display="");mxEvent.consume(c)});mxEvent.addListener(J,"dblclick",function(a){mxEvent.consume(a)})})(H,b,q);H.appendChild(J);H.style.marginBottom="30px";var D=document.createElement("div");D.style.position="absolute";D.style.boxSizing="border-box";D.style.bottom="-18px";D.style.left= -"10px";D.style.right="10px";D.style.backgroundColor="#ffffff";D.style.overflow="hidden";D.style.textAlign="center";var L=null;null!=b?(L={data:b,w:n,h:f,title:k},null!=h&&(L.aspect=h),w[b]=E,g.push(L)):null!=q&&(q.aspect="fixed",g.push(q),L=q);mxEvent.addListener(D,"keydown",function(a){13==a.keyCode&&null!=x&&(x(),x=null,mxEvent.consume(a))});C();H.appendChild(D);mxEvent.addListener(D,"mousedown",function(a){"true"!=D.getAttribute("contentEditable")&&mxEvent.consume(a)});G=function(b){if(mxClient.IS_IOS|| -mxClient.IS_QUIRKS||mxClient.IS_FF||!(null==document.documentMode||9<document.documentMode)){var d=new FilenameDialog(a,L.title||"",mxResources.get("ok"),function(a){null!=a&&(L.title=a,C())},mxResources.get("enterValue"));a.showDialog(d.container,300,80,!0,!0);d.init();mxEvent.consume(b)}else if("true"!=D.getAttribute("contentEditable")){null!=x&&(x(),x=null);if(null==L.title||0==L.title.length)D.innerHTML="";D.style.textOverflow="";D.style.whiteSpace="";D.style.cursor="text";D.style.color="";D.setAttribute("contentEditable", -"true");D.focus();document.execCommand("selectAll",!1,null);x=function(){D.removeAttribute("contentEditable");D.style.cursor="pointer";L.title=D.innerHTML;C()};mxEvent.consume(b)}};mxEvent.addListener(D,"click",G);mxEvent.addListener(H,"dblclick",G);u.appendChild(H);mxEvent.addListener(H,"dragstart",function(a){null==b&&null!=q&&(J.style.visibility="hidden",D.style.visibility="hidden");mxClient.IS_FF&&null!=q.xml&&a.dataTransfer.setData("Text",q.xml);y=l(a);mxClient.IS_GC&&(H.style.opacity="0.9"); -window.setTimeout(function(){mxUtils.setPrefixedStyle(H.style,"transform","scale(0.5,0.5)");mxUtils.setOpacity(H,30);J.style.visibility="";D.style.visibility=""},0)});mxEvent.addListener(H,"dragend",function(a){"hidden"==J.style.visibility&&(J.style.visibility="",D.style.visibility="");y=null;mxUtils.setOpacity(H,100);mxUtils.setPrefixedStyle(H.style,"transform",null)})}else F||(F=!0,a.handleError({message:mxResources.get("fileExists")}));else{n=!1;try{if(a.spinner.stop(),p=mxUtils.parseXml(b),"mxlibrary"== -p.documentElement.nodeName){B=JSON.parse(mxUtils.getTextContent(p.documentElement));if(null!=B&&0<B.length)for(var M=0;M<B.length;M++)null!=B[M].xml?t(null,null,0,0,0,0,B[M]):t(B[M].data,null,0,0,B[M].w,B[M].h,null,"fixed",B[M].title);n=!0}else if("mxfile"==p.documentElement.nodeName){for(var I=p.documentElement.getElementsByTagName("diagram"),M=0;M<I.length;M++){var B=mxUtils.getTextContent(I[M]),G=a.stringToCells(a.editor.graph.decompress(B)),S=a.editor.graph.getBoundingBoxFromGeometry(G);t(null, -null,0,0,0,0,{xml:B,w:S.width,h:S.height})}n=!0}}catch(ba){}n||(a.spinner.stop(),a.handleError({message:mxResources.get("errorLoadingFile")}))}}catch(ba){}return null}function p(a){a.dataTransfer.dropEffect=null!=y?"move":"copy";a.stopPropagation();a.preventDefault()}function d(b){b.stopPropagation();b.preventDefault();F=!1;m=l(b);if(null!=y)null!=m&&m<u.children.length?(g.splice(m>y?m-1:m,0,g.splice(y,1)[0]),u.insertBefore(u.children[y],u.children[m])):(g.push(g.splice(y,1)[0]),u.appendChild(u.children[y])); -else if(0<b.dataTransfer.files.length)a.importFiles(b.dataTransfer.files,0,0,a.maxImageSize,C(b));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")){var d=decodeURIComponent(b.dataTransfer.getData("text/uri-list"));(/(\.jpg)($|\?)/i.test(d)||/(\.png)($|\?)/i.test(d)||/(\.gif)($|\?)/i.test(d)||/(\.svg)($|\?)/i.test(d))&&a.loadImage(d,function(a){t(d,null,0,0,a.width,a.height);u.scrollTop=u.scrollHeight})}b.stopPropagation();b.preventDefault()}var g=[];b=document.createElement("div"); -b.style.height="100%";var n=document.createElement("div");n.style.whiteSpace="nowrap";n.style.height="40px";b.appendChild(n);mxUtils.write(n,mxResources.get("filename")+":");null==c&&(c=a.defaultLibraryName+".xml");var q=document.createElement("input");q.setAttribute("value",c);q.style.marginRight="20px";q.style.marginLeft="10px";q.style.width="500px";null==k||k.isRenamable()||q.setAttribute("disabled","true");this.init=function(){if(null==k||k.isRenamable())q.focus(),mxClient.IS_GC||mxClient.IS_FF|| -5<=document.documentMode||mxClient.IS_QUIRKS?q.select():document.execCommand("selectAll",!1,null)};n.appendChild(q);var u=document.createElement("div");u.style.borderWidth="1px 0px 1px 0px";u.style.borderColor="#d3d3d3";u.style.borderStyle="solid";u.style.marginTop="6px";u.style.overflow="auto";u.style.height="340px";u.style.backgroundPosition="center center";u.style.backgroundRepeat="no-repeat";0==g.length&&Graph.fileSupport&&(u.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')");var v= -document.createElement("div");v.style.position="absolute";v.style.width="640px";v.style.top="260px";v.style.textAlign="center";v.style.fontSize="22px";v.style.color="#a0c3ff";mxUtils.write(v,mxResources.get("dragImagesHere"));b.appendChild(v);var w={},y=null,m=null,x=null;c=function(a){"true"!=mxEvent.getSource(a).getAttribute("contentEditable")&&null!=x&&(x(),x=null,mxEvent.consume(a))};mxEvent.addListener(u,"mousedown",c);mxEvent.addListener(u,"pointerdown",c);mxEvent.addListener(u,"touchstart", -c);var z=new mxUrlConverter,F=!1;if(null!=f)for(c=0;c<f.length;c++)n=f[c],t(n.data,null,0,0,n.w,n.h,n,n.aspect,n.title);mxEvent.addListener(u,"dragleave",function(a){v.style.cursor="";for(var b=mxEvent.getSource(a);null!=b;){if(b==u||b==v){a.stopPropagation();a.preventDefault();break}b=b.parentNode}});var C=function(b){return function(d,g,c,n,m,f,q,w,z){null!=z&&(/(\.vsdx)($|\?)/i.test(z.name)||/(\.vssx)($|\?)/i.test(z.name))?a.importVisio(z,mxUtils.bind(this,function(d){a.spinner.stop();t(d,g,c, -n,m,f,q,"fixed",mxEvent.isAltDown(b)?null:q.substring(0,q.lastIndexOf(".")).replace(/_/g," "))})):null!=z&&!a.isOffline()&&(new XMLHttpRequest).upload&&a.isRemoteFileFormat(d,z.name)?a.parseFile(z,mxUtils.bind(this,function(d){4==d.readyState&&(a.spinner.stop(),200<=d.status&&299>=d.status&&(t(d.responseText,g,c,n,m,f,q,"fixed",mxEvent.isAltDown(b)?null:q.substring(0,q.lastIndexOf(".")).replace(/_/g," ")),u.scrollTop=u.scrollHeight))})):(t(d,g,c,n,m,f,q,"fixed",mxEvent.isAltDown(b)?null:q.substring(0, -q.lastIndexOf(".")).replace(/_/g," ")),u.scrollTop=u.scrollHeight)}};mxEvent.addListener(u,"dragover",p);mxEvent.addListener(u,"drop",d);mxEvent.addListener(v,"dragover",p);mxEvent.addListener(v,"drop",d);b.appendChild(u);f=document.createElement("div");f.style.textAlign="right";f.style.marginTop="20px";c=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog(!0)});c.setAttribute("id","btnCancel");c.className="geBtn";a.editor.cancelFirst&&f.appendChild(c);n=mxUtils.button(mxResources.get("export"), -function(){var b=a.createLibraryDataFromImages(g),d=q.value;/(\.xml)$/i.test(d)||(d+=".xml");a.isLocalFileSave()?a.saveLocalFile(b,d,"text/xml",null,null,!0):(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(d)+"&format=xml&xml="+encodeURIComponent(b))).simulate(document,"_blank")});n.setAttribute("id","btnDownload");n.className="geBtn";f.appendChild(n);var B=document.createElement("input");B.setAttribute("multiple","multiple");B.setAttribute("type","file");null==document.documentMode&&(mxEvent.addListener(B, -"change",function(b){F=!1;a.importFiles(B.files,0,0,a.maxImageSize,function(a,d,g,c,n,m,f,q,u){C(b)(a,d,g,c,n,m,f,q,u);B.value=""});u.scrollTop=u.scrollHeight}),n=mxUtils.button(mxResources.get("import"),function(){null!=x&&(x(),x=null);B.click()}),n.setAttribute("id","btnAddImage"),n.className="geBtn",f.appendChild(n));n=mxUtils.button(mxResources.get("addImageUrl"),function(){null!=x&&(x(),x=null);a.showImageDialog(mxResources.get("addImageUrl"),"",function(a,b,d){F=!1;if(null!=a){if("data:image/"== -a.substring(0,11)){var g=a.indexOf(",");0<g&&(a=a.substring(0,g)+";base64,"+a.substring(g+1))}t(a,null,0,0,b,d);u.scrollTop=u.scrollHeight}})});n.setAttribute("id","btnAddImageUrl");n.className="geBtn";f.appendChild(n);this.saveBtnClickHandler=function(b,d,g,c){a.saveLibrary(b,d,g,c)};n=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(){null!=x&&(x(),x=null);this.saveBtnClickHandler(q.value,g,k,h)}));n.setAttribute("id","btnSave");n.className="geBtn gePrimaryBtn";f.appendChild(n); -a.editor.cancelFirst||f.appendChild(c);b.appendChild(f);this.container=b},EditShapeDialog=function(a,c,b,f,k){f=null!=f?f:300;k=null!=k?k:120;var h,l,t=document.createElement("table"),p=document.createElement("tbody");t.style.cellPadding="4px";h=document.createElement("tr");l=document.createElement("td");l.setAttribute("colspan","2");l.style.fontSize="10pt";mxUtils.write(l,b);h.appendChild(l);p.appendChild(h);h=document.createElement("tr");l=document.createElement("td");var d=document.createElement("textarea"); -d.style.outline="none";d.style.resize="none";d.style.width=f-200+"px";d.style.height=k+"px";this.textarea=d;this.init=function(){d.focus();d.scrollTop=0};l.appendChild(d);h.appendChild(l);l=document.createElement("td");b=document.createElement("div");b.style.position="relative";b.style.border="1px solid gray";b.style.top="6px";b.style.width="200px";b.style.height=k+4+"px";b.style.overflow="hidden";b.style.marginBottom="16px";mxEvent.disableContextMenu(b);l.appendChild(b);var g=new Graph(b);g.setEnabled(!1); -var n=a.editor.graph.cloneCell(c);g.addCells([n]);b=g.view.getState(n);var q="";null!=b.shape&&null!=b.shape.stencil&&(q=mxUtils.getPrettyXml(b.shape.stencil.desc));mxUtils.write(d,q||"");b=g.getGraphBounds();k=Math.min(160/b.width,(k-40)/b.height);g.view.scaleAndTranslate(k,20/k-b.x,20/k-b.y);h.appendChild(l);p.appendChild(h);h=document.createElement("tr");l=document.createElement("td");l.setAttribute("colspan","2");l.style.paddingTop="2px";l.style.whiteSpace="nowrap";l.setAttribute("align","right"); -k=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});k.className="geBtn";a.editor.cancelFirst&&l.appendChild(k);a.isOffline()||(b=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://desk.draw.io/support/solutions/articles/16000052874")}),b.className="geBtn",l.appendChild(b));var u=function(b,g,c){var n=d.value,f=mxUtils.parseXml(n),n=mxUtils.getPrettyXml(f.documentElement),f=f.documentElement.getElementsByTagName("parsererror");if(null!=f&&0<f.length)a.showError(mxResources.get("error"), -mxResources.get("containsValidationErrors"),mxResources.get("ok"));else if(c&&a.hideDialog(),f=!b.model.contains(g),!c||f||n!=q){n=a.editor.graph.compress(n);b.getModel().beginUpdate();try{if(f){var u=a.editor.graph.getInsertPoint();g.geometry.x=u.x;g.geometry.y=u.y;b.addCell(g)}b.setCellStyles(mxConstants.STYLE_SHAPE,"stencil("+n+")",[g])}catch(F){throw F;}finally{b.getModel().endUpdate()}f&&b.setSelectionCell(g)}};b=mxUtils.button(mxResources.get("preview"),function(){u(g,n,!1)});b.className="geBtn"; -l.appendChild(b);b=mxUtils.button(mxResources.get("apply"),function(){u(a.editor.graph,c,!0)});b.className="geBtn gePrimaryBtn";l.appendChild(b);a.editor.cancelFirst||l.appendChild(k);h.appendChild(l);p.appendChild(h);t.appendChild(p);this.container=t},CustomDialog=function(a,c,b,f,k,h,l,t){var p=document.createElement("div");p.appendChild(c);c=document.createElement("div");c.style.marginTop="16px";c.style.textAlign="center";null!=l&&c.appendChild(l);l=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog(); -null!=f&&f()});l.className="geBtn";t&&(l.style.display="none");a.editor.cancelFirst&&c.appendChild(l);a.isOffline()||null==h||(t=mxUtils.button(mxResources.get("help"),function(){a.openLink(h)}),t.className="geBtn",c.appendChild(t));k=mxUtils.button(k||mxResources.get("ok"),function(){a.hideDialog();null!=b&&b()});c.appendChild(k);k.className="geBtn gePrimaryBtn";a.editor.cancelFirst||c.appendChild(l);p.appendChild(c);this.cancelBtn=l;this.okButton=k;this.container=p},TemplatesDialog=function(){var a= +var BackgroundImageDialog=function(b,c){var a=document.createElement("div");a.style.whiteSpace="nowrap";var e=document.createElement("h2");mxUtils.write(e,mxResources.get("backgroundImage"));e.style.marginTop="0px";a.appendChild(e);mxUtils.write(a,mxResources.get("image")+" "+mxResources.get("url")+":");mxUtils.br(a);var e=b.editor.graph.backgroundImage,k=document.createElement("input");k.setAttribute("type","text");k.style.marginTop="4px";k.style.marginBottom="4px";k.style.width="350px";k.value= +null!=e?e.src:"";var f=!1,l=function(){f||""==k.value||b.isOffline()?(q.value="",p.value=""):b.loadImage(mxUtils.trim(k.value),function(b){q.value=b.width;p.value=b.height},function(){b.showError(mxResources.get("error"),mxResources.get("fileNotFound"),mxResources.get("ok"));k.value="";q.value="";p.value=""})};this.init=function(){k.focus();if(Graph.fileSupport){k.setAttribute("placeholder",mxResources.get("dragImagesHere"));var d=a.parentNode,c=null;mxEvent.addListener(d,"dragleave",function(b){null!= +c&&(c.parentNode.removeChild(c),c=null);b.stopPropagation();b.preventDefault()});mxEvent.addListener(d,"dragover",mxUtils.bind(this,function(a){null==c&&(!mxClient.IS_IE||10<document.documentMode)&&(c=b.highlightElement(d));a.stopPropagation();a.preventDefault()}));mxEvent.addListener(d,"drop",mxUtils.bind(this,function(a){null!=c&&(c.parentNode.removeChild(c),c=null);if(0<a.dataTransfer.files.length)b.importFiles(a.dataTransfer.files,0,0,b.maxBackgroundSize,function(b,a,d,g,c,m){k.value=b;l()},function(){}, +function(b){return"image/"==b.type.substring(0,6)},function(b){for(var a=0;a<b.length;a++)b[a]()},!0,b.maxBackgroundBytes,b.maxBackgroundBytes);else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")){var d=a.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(d)&&(k.value=decodeURIComponent(d),l())}a.stopPropagation();a.preventDefault()}),!1)}};a.appendChild(k);mxUtils.br(a);mxUtils.br(a);mxUtils.write(a,mxResources.get("width")+":");var q=document.createElement("input"); +q.setAttribute("type","text");q.style.width="60px";q.style.marginLeft="4px";q.style.marginRight="16px";q.value=null!=e?e.width:"";a.appendChild(q);mxUtils.write(a,mxResources.get("height")+":");var p=document.createElement("input");p.setAttribute("type","text");p.style.width="60px";p.style.marginLeft="4px";p.style.marginRight="16px";p.value=null!=e?e.height:"";a.appendChild(p);e=mxUtils.button(mxResources.get("reset"),function(){k.value="";q.value="";p.value="";f=!1});mxEvent.addListener(e,"mousedown", +function(){f=!0});mxEvent.addListener(e,"touchstart",function(){f=!0});e.className="geBtn";e.width="100";a.appendChild(e);mxUtils.br(a);mxEvent.addListener(k,"change",l);ImageDialog.filePicked=function(b){b.action==google.picker.Action.PICKED&&null!=b.docs[0].thumbnails&&(b=b.docs[0].thumbnails[b.docs[0].thumbnails.length-1],null!=b&&(k.value=b.url,l()));k.focus()};e=document.createElement("div");e.style.marginTop="40px";e.style.textAlign="right";var u=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()}); +u.className="geBtn";b.editor.cancelFirst&&e.appendChild(u);if(!b.isOffline()&&"undefined"!=typeof google&&"undefined"!=typeof google.picker&&window.self===window.top){var d=mxUtils.button(mxResources.get("search"),function(){if(null==b.imageSearchPicker){var a=(new google.picker.PickerBuilder).setLocale(mxLanguage).addView(google.picker.ViewId.IMAGE_SEARCH).enableFeature(google.picker.Feature.NAV_HIDDEN);b.imageSearchPicker=a.setCallback(function(b){ImageDialog.filePicked(b)}).build()}b.imageSearchPicker.setVisible(!0)}); +d.className="geBtn";e.appendChild(d);null!=b.drive&&"1"==urlParams.photos&&(d=mxUtils.button(mxResources.get("googlePlus"),function(){b.spinner.spin(document.body,mxResources.get("authorizing"))&&b.drive.checkToken(mxUtils.bind(this,function(){b.spinner.stop();if(null==b.photoPicker){var a=gapi.auth.getToken().access_token,a=(new google.picker.PickerBuilder).setAppId(b.drive.appId).setLocale(mxLanguage).setOAuthToken(a).addView(google.picker.ViewId.PHOTOS).addView(google.picker.ViewId.PHOTO_ALBUMS).addView(google.picker.ViewId.PHOTO_UPLOAD); +b.photoPicker=a.setCallback(function(b){ImageDialog.filePicked(b)}).build()}b.photoPicker.setVisible(!0)}))}),d.className="geBtn",e.appendChild(d))}d=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();c(""!=k.value?new mxImage(mxUtils.trim(k.value),q.value,p.value):null)});d.className="geBtn gePrimaryBtn";e.appendChild(d);b.editor.cancelFirst||e.appendChild(u);a.appendChild(e);this.container=a},ParseDialog=function(b,c,a){function e(a,d){var g=a.split("\n");if("plantUmlPng"==d||"plantUmlSvg"== +d||"plantUmlTxt"==d){var g="plantUmlTxt"==d?PLANT_URL+"/txt/":"plantUmlPng"==d?PLANT_URL+"/png/":PLANT_URL+"/svg/",c=b.editor.graph;if(b.spinner.spin(document.body,mxResources.get("inserting"))){var m=function(b){if(10>b)return String.fromCharCode(48+b);b-=10;if(26>b)return String.fromCharCode(65+b);b-=26;if(26>b)return String.fromCharCode(97+b);b-=26;return 0==b?"-":1==b?"_":"?"},n=function(b,a,d){c1=b>>2;c2=(b&3)<<4|a>>4;c3=(a&15)<<2|d>>6;c4=d&63;r="";r+=m(c1&63);r+=m(c2&63);r+=m(c3&63);return r+= +m(c4&63)},x=new XMLHttpRequest;x.open("GET",g+function(b){r="";for(k=0;k<b.length;k+=3)r=k+2==b.length?r+n(b.charCodeAt(k),b.charCodeAt(k+1),0):k+1==b.length?r+n(b.charCodeAt(k),0,0):r+n(b.charCodeAt(k),b.charCodeAt(k+1),b.charCodeAt(k+2));return r}(c.bytesToString(pako.deflateRaw(unescape(encodeURIComponent(a))))),!0);"plantUmlTxt"!=d&&(x.responseType="blob");x.onload=function(g){if(200<=this.status&&300>this.status)if("plantUmlTxt"==d)b.spinner.stop(),c.setSelectionCell(b.insertAsPreText(this.response, +f.x,f.y)),c.scrollCellToVisible(c.getSelectionCell());else{var m=new FileReader;m.readAsDataURL(this.response);m.onloadend=function(d){var g=new Image;g.onload=function(){b.spinner.stop();var d=g.width,n=g.height;if(0==d&&0==n){var x=m.result,z=x.indexOf(","),x=decodeURIComponent(escape(atob(x.substring(z+1)))),x=mxUtils.parseXml(x).getElementsByTagName("svg");0<x.length&&(d=parseFloat(x[0].getAttribute("width")),n=parseFloat(x[0].getAttribute("height")))}c.getModel().beginUpdate();try{cell=c.insertVertex(null, +null,a,f.x,f.y,d,n,"shape=image;noLabel=1;verticalAlign=top;aspect=fixed;imageAspect=0;image="+b.convertDataUri(m.result)+";")}finally{c.getModel().endUpdate()}c.setSelectionCell(cell);c.scrollCellToVisible(c.getSelectionCell())};g.src=m.result};m.onerror=function(a){b.handleError(a)}}else b.spinner.stop(),b.handleError(g)};x.onerror=function(a){b.handleError(a)};x.send()}}else if("table"==d){for(var z=null,e=[],v=0,k=0;k<g.length;k++)if(x=mxUtils.trim(g[k]),"create table"==x.substring(0,12).toLowerCase())x= +mxUtils.trim(x.substring(12)),"("==x.charAt(x.length-1)&&(x=x.substring(0,x.lastIndexOf(" "))),z=new mxCell(x,new mxGeometry(v,0,160,26),"swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;"),z.vertex=!0,e.push(z),x=b.editor.graph.getPreferredSizeForCell(q),null!=x&&(z.geometry.width=x.width+10);else if(null!=z&&")"==x.charAt(0))v+=z.geometry.width+ +40,z=null;else if("("!=x&&null!=z&&(x=x.substring(0,","==x.charAt(x.length-1)?x.length-1:x.length),"primary key"!=x.substring(0,11).toLowerCase())){var l=x.toLowerCase().indexOf("primary key"),x=x.replace(/primary key/i,""),q=new mxCell(x,new mxGeometry(0,0,90,26),"shape=partialRectangle;top=0;left=0;right=0;bottom=0;align=left;verticalAlign=top;spacingTop=-2;fillColor=none;spacingLeft=34;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;");q.vertex= +!0;x=sb.cloneCell(q,0<l?"PK":"");x.connectable=!1;x.style="shape=partialRectangle;top=0;left=0;bottom=0;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;";x.geometry.width=30;x.geometry.height=26;q.insert(x);x=b.editor.graph.getPreferredSizeForCell(q);null!=x&&z.geometry.width<x.width+10&&(z.geometry.width=Math.min(220,x.width+10));z.insert(q);z.geometry.height+=26}0<e.length&&(c=b.editor.graph,g=c.view, +x=c.getGraphBounds(),c.setSelectionCells(c.importCells(e,Math.ceil(Math.max(0,x.x/g.scale-g.translate.x)+4*c.gridSize),Math.ceil(Math.max(0,(x.y+x.height)/g.scale-g.translate.y)+4*c.gridSize))),c.scrollCellToVisible(c.getSelectionCell()))}else if("list"==d){if(0<g.length){c=b.editor.graph;z=new mxCell(g[0],new mxGeometry(0,0,160,30),"swimlane;fontStyle=1;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;"); +z.vertex=!0;x=c.getPreferredSizeForCell(z);null!=x&&z.geometry.width<x.width+10&&(z.geometry.width=x.width+10);q=[z];if(1<g.length)for(k=1;k<g.length;k++)"--"==g[k]?(x=new mxCell("",new mxGeometry(0,0,40,8),"line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;"),x.vertex=!0,z.geometry.height+=x.geometry.height,z.insert(x),q.push(x)):0<g[k].length&&";"!=g[k].charAt(0)&&(v=new mxCell(g[k], +new mxGeometry(0,0,60,26),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;"),v.vertex=!0,x=c.getPreferredSizeForCell(v),null!=x&&v.geometry.width<x.width&&(v.geometry.width=x.width),z.geometry.width=Math.max(z.geometry.width,v.geometry.width),z.geometry.height+=v.geometry.height,z.insert(v),q.push(v));c.getModel().beginUpdate();try{z=c.importCells([z],f.x,f.y)[0],c.fireEvent(new mxEventObject("cellsInserted", +"cells",[z].concat(z.children)))}finally{c.getModel().endUpdate()}c.setSelectionCell(z);c.scrollCellToVisible(c.getSelectionCell())}}else{for(var q=function(b){var a=p[b];null==a&&(a=new mxCell(b,new mxGeometry(0,0,80,30),"whiteSpace=wrap;html=1;"),a.vertex=!0,p[b]=a,e.push(a));return a},p={},e=[],k=0;k<g.length;k++)if(";"!=g[k].charAt(0)){var u=g[k].split("->");if(2<=u.length){var l=q(u[0]),I=q(u[u.length-1]),u=new mxCell(2<u.length?u[1]:"",new mxGeometry);u.edge=!0;l.insertEdge(u,!0);I.insertEdge(u, +!1);e.push(u)}}if(0<e.length){g=document.createElement("div");g.style.visibility="hidden";document.body.appendChild(g);c=new Graph(g);c.getModel().beginUpdate();try{e=c.importCells(e);for(k=0;k<e.length;k++)c.getModel().isVertex(e[k])&&(x=c.getPreferredSizeForCell(e[k]),e[k].geometry.width=Math.max(e[k].geometry.width,x.width),e[k].geometry.height=Math.max(e[k].geometry.height,x.height));z=new mxFastOrganicLayout(c);z.disableEdgeStyle=!1;z.forceConstant=120;z.execute(c.getDefaultParent());v=new mxParallelEdgeLayout(c); +v.spacing=20;v.execute(c.getDefaultParent())}finally{c.getModel().endUpdate()}c.clearCellOverlays();q=[];b.editor.graph.getModel().beginUpdate();try{q=b.editor.graph.importCells(c.getModel().getChildren(c.getDefaultParent()),f.x,f.y),b.editor.graph.fireEvent(new mxEventObject("cellsInserted","cells",q))}finally{b.editor.graph.getModel().endUpdate()}b.editor.graph.setSelectionCells(q);b.editor.graph.scrollCellToVisible(b.editor.graph.getSelectionCell());c.destroy();g.parentNode.removeChild(g)}}}function k(){return"list"== +q.value?"Person\n-name: String\n-birthDate: Date\n--\n+getName(): String\n+setName(String): void\n+isBirthday(): boolean":"table"==q.value?"CREATE TABLE Suppliers\n(\nsupplier_id int NOT NULL PRIMARY KEY,\nsupplier_name char(50) NOT NULL,\ncontact_name char(50),\n);\nCREATE TABLE Customers\n(\ncustomer_id int NOT NULL PRIMARY KEY,\ncustomer_name char(50) NOT NULL,\naddress char(50),\ncity char(50),\nstate char(25),\nzip_code char(10)\n);\n":"plantUmlPng"==q.value?"@startuml\nskinparam backgroundcolor transparent\nskinparam shadowing false\nAlice -> Bob: Authentication Request\nBob --\x3e Alice: Authentication Response\n\nAlice -> Bob: Another authentication Request\nAlice <-- Bob: another authentication Response\n@enduml": +"plantUmlSvg"==q.value||"plantUmlTxt"==q.value?"@startuml\nskinparam shadowing false\nAlice -> Bob: Authentication Request\nBob --\x3e Alice: Authentication Response\n\nAlice -> Bob: Another authentication Request\nAlice <-- Bob: another authentication Response\n@enduml":";Example:\na->b\nb->edge label->c\nc->a\n"}var f=b.editor.graph.getFreeInsertPoint();c=document.createElement("div");c.style.textAlign="right";var l=document.createElement("textarea");l.style.resize="none";l.style.width="100%";l.style.height= +"354px";l.style.marginBottom="16px";var q=document.createElement("select");"formatSql"==a&&(q.style.display="none");var p=document.createElement("option");p.setAttribute("value","list");mxUtils.write(p,mxResources.get("list"));"plantUml"!=a&&q.appendChild(p);null!=a&&"fromText"!=a||p.setAttribute("selected","selected");p=document.createElement("option");p.setAttribute("value","table");mxUtils.write(p,mxResources.get("formatSql"));"formatSql"==a&&(q.appendChild(p),p.setAttribute("selected","selected")); +p=document.createElement("option");p.setAttribute("value","diagram");mxUtils.write(p,mxResources.get("diagram"));"plantUml"!=a&&q.appendChild(p);p=document.createElement("option");p.setAttribute("value","plantUmlSvg");mxUtils.write(p,mxResources.get("plantUml")+" ("+mxResources.get("formatSvg")+")");"plantUml"==a&&p.setAttribute("selected","selected");var u=document.createElement("option");u.setAttribute("value","plantUmlPng");mxUtils.write(u,mxResources.get("plantUml")+" ("+mxResources.get("formatPng")+ +")");var d=document.createElement("option");d.setAttribute("value","plantUmlTxt");mxUtils.write(d,mxResources.get("plantUml")+" ("+mxResources.get("text")+")");EditorUi.enablePlantUml&&Graph.fileSupport&&!b.isOffline()&&"plantUml"==a&&(q.appendChild(p),q.appendChild(u),q.appendChild(d));var g=k();l.value=g;c.appendChild(l);this.init=function(){l.focus()};Graph.fileSupport&&(l.addEventListener("dragover",function(b){b.stopPropagation();b.preventDefault()},!1),l.addEventListener("drop",function(b){b.stopPropagation(); +b.preventDefault();if(0<b.dataTransfer.files.length){b=b.dataTransfer.files[0];var a=new FileReader;a.onload=function(b){l.value=b.target.result};a.readAsText(b)}},!1));c.appendChild(q);mxEvent.addListener(q,"change",function(){var b=k();if(0==l.value.length||l.value==g)g=b,l.value=g});a=mxUtils.button(mxResources.get("close"),function(){l.value==g?b.hideDialog():b.confirm(mxResources.get("areYouSure"),function(){b.hideDialog()})});a.className="geBtn";b.editor.cancelFirst&&c.appendChild(a);p=mxUtils.button(mxResources.get("insert"), +function(){b.hideDialog();e(l.value,q.value)});c.appendChild(p);p.className="geBtn gePrimaryBtn";b.editor.cancelFirst||c.appendChild(a);this.container=c},NewDialog=function(b,c,a,e,k,f,l,q,p,u,d,g,m,v,t,y){function B(){var b=!0;if(null!=S)for(;D<S.length&&(b||0!=mxUtils.mod(D,30));)b=S[D++],z(b.url,b.libs,b.title,b.tooltip?b.tooltip:b.title,b.select,b.imgUrl,b.info,b.onClick,b.preview),b=!1}function n(){if(aa)a||b.hideDialog(),v(aa,ea,H.value);else if(e)a||b.hideDialog(),e(V,H.value);else{var d=H.value; +null!=d&&0<d.length&&b.pickFolder(b.mode,function(a){b.createFile(d,V,null!=U&&0<U.length?U:null,null,function(){b.hideDialog()},null,a)},b.mode!=App.MODE_GOOGLE||null==b.stateArg||null==b.stateArg.folderId)}}function x(b,a,d,g,c){null!=W&&(W.style.backgroundColor="transparent",W.style.border="1px solid transparent");I.removeAttribute("disabled");V=a;U=d;W=b;aa=g;ea=c;W.style.backgroundColor=q;W.style.border=p}function z(a,d,g,c,m,z,e,t,v){var A=document.createElement("div");A.className="geTemplate"; +A.style.height=P+"px";A.style.width=Q+"px";null!=c&&0<c.length&&A.setAttribute("title",c);if(null!=z)A.style.backgroundImage="url("+z+")",A.style.backgroundSize="contain",A.style.backgroundPosition="center center",A.style.backgroundRepeat="no-repeat",mxEvent.addListener(A,"click",function(b){x(A,null,null,a,e)}),mxEvent.addListener(A,"dblclick",function(b){n()});else if(null!=a&&0<a.length){g=v||TEMPLATE_PATH+"/"+a.substring(0,a.length-4)+".png";A.style.backgroundImage="url("+g+")";A.style.backgroundPosition= +"center center";A.style.backgroundRepeat="no-repeat";var y=!1;mxEvent.addListener(A,"click",function(g){I.setAttribute("disabled","disabled");A.style.backgroundColor="transparent";A.style.border="1px solid transparent";g=a;g=/^https?:\/\//.test(g)&&!b.isCorsEnabledForUrl(g)?PROXY_URL+"?url="+encodeURIComponent(g):TEMPLATE_PATH+"/"+g;K.spin(N);mxUtils.get(g,mxUtils.bind(this,function(b){K.stop();200<=b.getStatus()&&299>=b.getStatus()&&(x(A,b.getText(),d),y&&n())}))});mxEvent.addListener(A,"dblclick", +function(b){y=!0})}else A.innerHTML='<table width="100%" height="100%" style="line-height:1em;"><tr><td align="center" valign="middle">'+mxResources.get(g)+"</td></tr></table>",m&&x(A),null!=t?mxEvent.addListener(A,"click",t):(mxEvent.addListener(A,"click",function(b){x(A)}),mxEvent.addListener(A,"dblclick",function(b){n()}));N.appendChild(A)}function A(){mxEvent.addListener(N,"scroll",function(b){N.scrollTop+N.clientHeight>=N.scrollHeight&&(B(),mxEvent.consume(b))});var b=null,a;for(a in X){var d= +document.createElement("div"),g=mxResources.get(a),c=X[a];null==g&&(g=a.substring(0,1).toUpperCase()+a.substring(1));18<g.length&&(g=g.substring(0,18)+"…");d.style.cssText="display:block;cursor:pointer;padding:6px;white-space:nowrap;margin-bottom:-1px;overflow:hidden;text-overflow:ellipsis;";d.setAttribute("title",g+" ("+c.length+")");mxUtils.write(d,d.getAttribute("title"));null!=u&&(d.style.padding=u);ba.appendChild(d);null==b&&(b=d,b.style.backgroundColor=l);(function(a,g){mxEvent.addListener(d, +"click",function(){b!=g&&(b.style.backgroundColor="",b=g,b.style.backgroundColor=l,N.scrollTop=0,N.innerHTML="",D=0,S=X[a],J=null,B())})})(a,d)}B()}a=null!=a?a:!0;k=null!=k?k:!1;l=null!=l?l:"#ebf2f9";q=null!=q?q:"#e6eff8";p=null!=p?p:"1px solid #ccd9ea";d=null!=d?d:EditorUi.templateFile;var F=document.createElement("div");F.style.height="100%";var E=document.createElement("div");E.style.whiteSpace="nowrap";E.style.height="46px";a&&F.appendChild(E);var G=document.createElement("img");G.setAttribute("border", +"0");G.setAttribute("align","absmiddle");G.style.width="40px";G.style.height="40px";G.style.marginRight="10px";G.style.paddingBottom="4px";G.src=b.mode==App.MODE_GOOGLE?IMAGE_PATH+"/google-drive-logo.svg":b.mode==App.MODE_DROPBOX?IMAGE_PATH+"/dropbox-logo.svg":b.mode==App.MODE_ONEDRIVE?IMAGE_PATH+"/onedrive-logo.svg":b.mode==App.MODE_GITHUB?IMAGE_PATH+"/github-logo.svg":b.mode==App.MODE_TRELLO?IMAGE_PATH+"/trello-logo.svg":b.mode==App.MODE_BROWSER?IMAGE_PATH+"/osa_database.png":IMAGE_PATH+"/osa_drive-harddisk.png"; +!c&&a&&E.appendChild(G);a&&mxUtils.write(E,(null==b.mode||b.mode==App.MODE_GOOGLE||b.mode==App.MODE_BROWSER?mxResources.get("diagramName"):mxResources.get("filename"))+":");G=".xml";b.mode==App.MODE_GOOGLE&&null!=b.drive?G=b.drive.extension:b.mode==App.MODE_DROPBOX&&null!=b.dropbox?G=b.dropbox.extension:b.mode==App.MODE_ONEDRIVE&&null!=b.oneDrive?G=b.oneDrive.extension:b.mode==App.MODE_GITHUB&&null!=b.gitHub?G=b.gitHub.extension:b.mode==App.MODE_TRELLO&&null!=b.trello&&(G=b.trello.extension);var H= +document.createElement("input");H.setAttribute("value",b.defaultFilename+G);H.style.marginRight="20px";H.style.marginLeft="10px";H.style.width=c?"220px":"430px";this.init=function(){a&&(H.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?H.select():document.execCommand("selectAll",!1,null))};a&&E.appendChild(H);var E=!1,D=0,K=new Spinner({lines:12,length:10,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9}),I=mxUtils.button(y|| +mxResources.get("create"),function(){I.setAttribute("disabled","disabled");n();I.removeAttribute("disabled")});I.className="geBtn gePrimaryBtn";if(g||m){var C=[],J=null,M=function(b){I.setAttribute("disabled","disabled");for(var a=0;a<C.length;a++)C[a].className=a==b?"geBtn gePrimaryBtn":"geBtn"},E=!0;y=document.createElement("div");y.style.whiteSpace="nowrap";y.style.height="30px";F.appendChild(y);G=mxUtils.button(mxResources.get("Templates",null,"Templates"),function(){ba.style.display="";N.style.left= +"160px";M(0);N.scrollTop=0;N.innerHTML="";D=0;J!=S&&(S=J,B(),J=null)});C.push(G);y.appendChild(G);var O=function(b){ba.style.display="none";N.style.left="30px";M(b?-1:1);null==J&&(J=S);N.scrollTop=0;N.innerHTML="";K.spin(N);D=0;var a=function(b,a){K.stop();S=b;a?N.innerHTML=a:0==b.length?N.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams",null,"No Diagrams Found")):(N.innerHTML="",B())};b?m(T.value,a):g(a)};g&&(G=mxUtils.button(mxResources.get("Recent",null,"Recent"),function(){O()}),y.appendChild(G), +C.push(G));if(m){G=document.createElement("span");G.style.marginLeft="10px";G.innerHTML=mxUtils.htmlEntities(mxResources.get("search")+":");y.appendChild(G);var T=document.createElement("input");T.style.marginRight="10px";T.style.marginLeft="10px";T.style.width="220px";mxEvent.addListener(T,"keypress",function(b){13==b.keyCode&&O(!0)});y.appendChild(T);G=mxUtils.button(mxResources.get("search"),function(){O(!0)});G.className="geBtn";y.appendChild(G)}M(0)}var U=null,V=null,W=null,aa=null,ea=null,N= +document.createElement("div");N.style.border="1px solid #d3d3d3";N.style.position="absolute";N.style.left="160px";N.style.right="34px";E=(a?72:40)+(E?30:0);N.style.top=E+"px";N.style.bottom="68px";N.style.margin="6px 0 0 -1px";N.style.padding="6px";N.style.overflow="auto";var ba=document.createElement("div");ba.style.cssText="position:absolute;left:30px;width:128px;top:"+E+"px;bottom:68px;margin-top:6px;overflow:auto;border:1px solid #d3d3d3;";var P=140,Q=140,X={},R=1;X.basic=[{title:"blankDiagram", +select:!0}];var S=X.basic;if(!c){F.appendChild(ba);F.appendChild(N);var Z=!1;/^https?:\/\//.test(d)&&!b.isCorsEnabledForUrl(d)&&(d=PROXY_URL+"?url="+encodeURIComponent(d));mxUtils.get(d,function(b){if(!Z){Z=!0;for(b=b.getXml().documentElement.firstChild;null!=b;){if("undefined"!==typeof b.getAttribute){var a=b.getAttribute("url");if(null!=a){var d=b.getAttribute("section");null==d&&(d=a.indexOf("/"),d=a.substring(0,d));a=X[d];null==a&&(R++,a=[],X[d]=a);a.push({url:b.getAttribute("url"),libs:b.getAttribute("libs"), +title:b.getAttribute("title"),tooltip:b.getAttribute("url"),preview:b.getAttribute("preview")})}}b=b.nextSibling}A()}})}mxEvent.addListener(H,"keypress",function(a){b.dialog.container.firstChild==F&&13==a.keyCode&&n()});d=document.createElement("div");d.style.marginTop=c?"4px":"16px";d.style.textAlign="right";d.style.position="absolute";d.style.left="40px";d.style.bottom="24px";d.style.right="40px";E=mxUtils.button(mxResources.get("cancel"),function(){null!=f&&f();b.hideDialog(!0)});E.className="geBtn"; +!b.editor.cancelFirst||k&&null==f||d.appendChild(E);c||b.isOffline()||!a||null!=e||k||(y=mxUtils.button(mxResources.get("help"),function(){b.openLink("https://support.draw.io/display/DO/Creating+and+Opening+Files")}),y.className="geBtn",d.appendChild(y));c||"1"==urlParams.embed||k||(c=mxUtils.button(mxResources.get("fromTemplateUrl"),function(){var a=new FilenameDialog(b,"",mxResources.get("create"),function(a){null!=a&&0<a.length&&(a=b.getUrl(window.location.pathname+"?mode="+b.mode+"&title="+encodeURIComponent(H.value)+ +"&create="+encodeURIComponent(a)),null==b.getCurrentFile()?window.location.href=a:window.openWindow(a))},mxResources.get("url"));b.showDialog(a.container,300,80,!0,!0);a.init()}),c.className="geBtn",d.appendChild(c));Graph.fileSupport&&t&&(t=mxUtils.button(mxResources.get("import"),function(){var a=document.createElement("input");a.setAttribute("multiple","multiple");a.setAttribute("type","file");mxEvent.addListener(a,"change",function(d){b.openFiles(a.files,!0)});a.click()}),t.className="geBtn", +d.appendChild(t));d.appendChild(I);b.editor.cancelFirst||null!=e||k&&null==f||d.appendChild(E);F.appendChild(d);this.container=F},CreateDialog=function(b,c,a,e,k,f,l,q,p,u,d,g,m,v,t){function y(a,d,m,n){function e(){mxEvent.addListener(t,"click",function(){var a=m;if(l){var d=x.value,g=d.lastIndexOf(".");if(0>c.lastIndexOf(".")&&0>g){var a=null!=a?a:F.value,n="";a==App.MODE_GOOGLE?n=b.drive.extension:a==App.MODE_GITHUB?n=b.gitHub.extension:a==App.MODE_TRELLO?n=b.trello.extension:a==App.MODE_DROPBOX? +n=b.dropbox.extension:a==App.MODE_ONEDRIVE?n=b.oneDrive.extension:a==App.MODE_DEVICE&&(n=".xml");0<=g&&(d=d.substring(0,g));x.value=d+n}}B(m)})}var t=document.createElement("a");t.style.overflow="hidden";var v=document.createElement("img");v.src=a;v.setAttribute("border","0");v.setAttribute("align","absmiddle");v.style.width="60px";v.style.height="60px";v.style.paddingBottom="6px";t.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";t.className="geBaseButton";t.style.position="relative";t.style.margin= +"4px";t.style.padding="8px 8px 10px 8px";t.style.whiteSpace="nowrap";t.appendChild(v);mxClient.IS_QUIRKS&&(t.style.cssFloat="left",t.style.zoom="1");t.style.color="gray";t.style.fontSize="11px";var y=document.createElement("div");t.appendChild(y);mxUtils.write(y,d);if(null!=n&&null==b[n]){v.style.visibility="hidden";mxUtils.setOpacity(y,10);var f=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});f.spin(t);var k=window.setTimeout(function(){null== +b[n]&&(f.stop(),t.style.display="none")},3E4);b.addListener("clientLoaded",mxUtils.bind(this,function(){null!=b[n]&&(window.clearTimeout(k),mxUtils.setOpacity(y,100),v.style.visibility="",f.stop(),e())}))}else e();z.appendChild(t);++A==g&&(mxUtils.br(z),A=0)}function B(d){var g=x.value;if(null==d||null!=g&&0<g.length)b.hideDialog(),a(g,d)}l=null!=l?l:!0;q=null!=q?q:!0;g=null!=g?g:4;f=document.createElement("div");null==e&&b.addLanguageMenu(f);var n=document.createElement("h2");mxUtils.write(n,k|| +mxResources.get("create"));n.style.marginTop="0px";n.style.marginBottom="24px";f.appendChild(n);mxUtils.write(f,mxResources.get("filename")+":");var x=document.createElement("input");x.setAttribute("value",c);x.style.width="280px";x.style.marginLeft="10px";x.style.marginBottom="20px";this.init=function(){x.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?x.select():document.execCommand("selectAll",!1,null)};f.appendChild(x);null!=m&&null!=v&&"image/"==v.substring(0, +6)&&(x.style.width="160px",k=null,"image/svg+xml"==v&&mxClient.IS_SVG?(k=document.createElement("div"),k.innerHTML=mxUtils.trim(m),m=k.getElementsByTagName("svg")[0],v=parseInt(m.getAttribute("width")),t=parseInt(m.getAttribute("height")),m.setAttribute("viewBox","0 0 "+v+" "+t),m.setAttribute("width","120px"),m.setAttribute("height","80px")):(k=document.createElement("img"),k.setAttribute("src","data:"+v+(t?";base64,":";utf8,")+m)),k.style.position="absolute",k.style.top="70px",k.style.right="100px", +k.style.maxWidth="120px",k.style.maxHeight="80px",mxUtils.setPrefixedStyle(k.style,"transform","translate(50%,-50%)"),f.appendChild(k),p&&Editor.popupsAllowed&&(k.style.cursor="pointer",mxEvent.addListener(k,"click",function(){B("_blank")})));mxUtils.br(f);var z=document.createElement("div");z.style.textAlign="center";var A=0;z.style.marginTop="6px";f.appendChild(z);var F=document.createElement("select");F.style.marginLeft="10px";b.isOfflineApp()||b.isOffline()||("function"===typeof window.DriveClient&& +(m=document.createElement("option"),m.setAttribute("value",App.MODE_GOOGLE),mxUtils.write(m,mxResources.get("googleDrive")),F.appendChild(m),y(IMAGE_PATH+"/google-drive-logo.svg",mxResources.get("googleDrive"),App.MODE_GOOGLE,"drive")),"function"===typeof window.OneDriveClient&&(m=document.createElement("option"),m.setAttribute("value",App.MODE_ONEDRIVE),mxUtils.write(m,mxResources.get("oneDrive")),F.appendChild(m),b.mode==App.MODE_ONEDRIVE&&m.setAttribute("selected","selected"),y(IMAGE_PATH+"/onedrive-logo.svg", +mxResources.get("oneDrive"),App.MODE_ONEDRIVE,"oneDrive")),"function"===typeof window.DropboxClient&&(m=document.createElement("option"),m.setAttribute("value",App.MODE_DROPBOX),mxUtils.write(m,mxResources.get("dropbox")),F.appendChild(m),b.mode==App.MODE_DROPBOX&&m.setAttribute("selected","selected"),y(IMAGE_PATH+"/dropbox-logo.svg",mxResources.get("dropbox"),App.MODE_DROPBOX,"dropbox")),null!=b.gitHub&&(m=document.createElement("option"),m.setAttribute("value",App.MODE_GITHUB),mxUtils.write(m,mxResources.get("github")), +F.appendChild(m),y(IMAGE_PATH+"/github-logo.svg",mxResources.get("github"),App.MODE_GITHUB,"gitHub")),null!=b.trello&&(m=document.createElement("option"),m.setAttribute("value",App.MODE_TRELLO),mxUtils.write(m,mxResources.get("trello")),F.appendChild(m),y(IMAGE_PATH+"/trello-logo.svg",mxResources.get("trello"),App.MODE_TRELLO,"trello")));Editor.useLocalStorage&&"device"!=urlParams.storage&&null==b.getCurrentFile()||(m=document.createElement("option"),m.setAttribute("value",App.MODE_DEVICE),mxUtils.write(m, +mxResources.get("device")),F.appendChild(m),b.mode!=App.MODE_DEVICE&&q||m.setAttribute("selected","selected"),d&&y(IMAGE_PATH+"/osa_drive-harddisk.png",mxResources.get("device"),App.MODE_DEVICE));q&&isLocalStorage&&"0"!=urlParams.browser&&(q=document.createElement("option"),q.setAttribute("value",App.MODE_BROWSER),mxUtils.write(q,mxResources.get("browser")),F.appendChild(q),b.mode==App.MODE_BROWSER&&q.setAttribute("selected","selected"),y(IMAGE_PATH+"/osa_database.png",mxResources.get("browser"), +App.MODE_BROWSER));q=document.createElement("div");q.style.marginTop="26px";q.style.textAlign="center";null!=u&&(d=mxUtils.button(mxResources.get("help"),function(){b.openLink(u)}),d.className="geBtn",q.appendChild(d));d=mxUtils.button(mxResources.get("cancel"),function(){null!=e?e():(b.fileLoaded(null),b.hideDialog(),window.close(),window.location.href=b.getUrl())});d.className="geBtn";b.editor.cancelFirst&&q.appendChild(d);null==e&&(m=mxUtils.button(mxResources.get("decideLater"),function(){B(null)}), +m.className="geBtn",q.appendChild(m));p&&Editor.popupsAllowed&&(p=mxUtils.button(mxResources.get("openInNewWindow"),function(){B("_blank")}),p.className="geBtn",q.appendChild(p));CreateDialog.showDownloadButton&&(p=mxUtils.button(mxResources.get("download"),function(){B("download")}),p.className="geBtn",q.appendChild(p));b.editor.cancelFirst||q.appendChild(d);mxEvent.addListener(x,"keypress",function(a){13==a.keyCode?B(App.MODE_DEVICE):27==a.keyCode&&(b.fileLoaded(null),b.hideDialog(),window.close())}); +f.appendChild(q);this.container=f};CreateDialog.showDownloadButton=!0; +var PopupDialog=function(b,c,a,e,k){k=null!=k?k:!0;var f=document.createElement("div");f.style.textAlign="left";mxUtils.write(f,mxResources.get("fileOpenLocation"));mxUtils.br(f);mxUtils.br(f);var l=mxUtils.button(mxResources.get("openInThisWindow"),function(){k&&b.hideDialog();null!=e&&e()});l.className="geBtn";l.style.marginBottom="8px";l.style.width="280px";f.appendChild(l);mxUtils.br(f);var q=mxUtils.button(mxResources.get("openInNewWindow"),function(){k&&b.hideDialog();null!=a&&a();b.openLink(c, +null,!0)});q.className="geBtn gePrimaryBtn";q.style.width=l.style.width;f.appendChild(q);mxUtils.br(f);mxUtils.br(f);mxUtils.write(f,mxResources.get("allowPopups"));this.container=f},ImageDialog=function(b,c,a,e,k,f){f=null!=f?f:!0;var l=b.editor.graph,q=document.createElement("div");mxUtils.write(q,c);c=document.createElement("div");c.className="geTitle";c.style.backgroundColor="transparent";c.style.borderColor="transparent";c.style.whiteSpace="nowrap";c.style.textOverflow="clip";c.style.cursor= +"default";mxClient.IS_VML||(c.style.paddingRight="20px");var p=document.createElement("input");p.setAttribute("value",a);p.setAttribute("type","text");p.setAttribute("spellcheck","false");p.setAttribute("autocorrect","off");p.setAttribute("autocomplete","off");p.setAttribute("autocapitalize","off");p.style.marginTop="6px";p.style.width=(Graph.fileSupport?420:340)+(mxClient.IS_QUIRKS?20:-20)+"px";p.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";p.style.backgroundRepeat="no-repeat"; +p.style.backgroundPosition="100% 50%";p.style.paddingRight="14px";a=document.createElement("div");a.setAttribute("title",mxResources.get("reset"));a.style.position="relative";a.style.left="-16px";a.style.width="12px";a.style.height="14px";a.style.cursor="pointer";a.style.display=mxClient.IS_VML?"inline":"inline-block";a.style.top=(mxClient.IS_VML?0:3)+"px";a.style.background="url('"+b.editor.transparentImage+"')";mxEvent.addListener(a,"click",function(){p.value="";p.focus()});c.appendChild(p);c.appendChild(a); +q.appendChild(c);var u=function(a,d,g,c){var n="data:"==a.substring(0,5);!b.isOffline()||n&&"undefined"===typeof chrome?0<a.length&&b.spinner.spin(document.body,mxResources.get("inserting"))?b.loadImage(a,function(n){b.spinner.stop();b.hideDialog();var m=!1===c?1:null!=d&&null!=g?Math.max(d/n.width,g/n.height):Math.min(1,Math.min(520/n.width,520/n.height));f&&(a=b.convertDataUri(a));e(a,Math.round(Number(n.width)*m),Math.round(Number(n.height)*m))},function(){b.spinner.stop();e(null);b.showError(mxResources.get("error"), +mxResources.get("fileNotFound"),mxResources.get("ok"))}):(b.hideDialog(),e(a)):(a=b.convertDataUri(a),d=null==d?120:d,g=null==g?100:g,b.hideDialog(),e(a,d,g))},d=function(a,d){if(null!=a){var g=k?null:l.getModel().getGeometry(l.getSelectionCell());null!=g?u(a,g.width,g.height,d):u(a,null,null,d)}else b.hideDialog(),e(null)};this.init=function(){p.focus();if(Graph.fileSupport){p.setAttribute("placeholder",mxResources.get("dragImagesHere"));var a=q.parentNode,g=null;mxEvent.addListener(a,"dragleave", +function(b){null!=g&&(g.parentNode.removeChild(g),g=null);b.stopPropagation();b.preventDefault()});mxEvent.addListener(a,"dragover",mxUtils.bind(this,function(d){null==g&&(!mxClient.IS_IE||10<document.documentMode)&&(g=b.highlightElement(a));d.stopPropagation();d.preventDefault()}));mxEvent.addListener(a,"drop",mxUtils.bind(this,function(a){null!=g&&(g.parentNode.removeChild(g),g=null);if(0<a.dataTransfer.files.length)b.importFiles(a.dataTransfer.files,0,0,b.maxImageSize,function(b,a,g,c,m,e,t,v){d(b, +v)},function(){},function(b){return"image/"==b.type.substring(0,6)},function(b){for(var a=0;a<b.length;a++)b[a]()},!mxEvent.isControlDown(a));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")){var c=a.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)($|\?)/i.test(c)&&d(decodeURIComponent(c))}a.stopPropagation();a.preventDefault()}),!1)}};a=document.createElement("div");a.style.marginTop=mxClient.IS_QUIRKS?"22px":"14px";a.style.textAlign="right";c=mxUtils.button(mxResources.get("cancel"), +function(){b.spinner.stop();b.hideDialog()});c.className="geBtn";b.editor.cancelFirst&&a.appendChild(c);ImageDialog.filePicked=function(b){b.action==google.picker.Action.PICKED&&null!=b.docs[0].thumbnails&&(b=b.docs[0].thumbnails[b.docs[0].thumbnails.length-1],null!=b&&(p.value=b.url));p.focus()};if(Graph.fileSupport){var g=document.createElement("input");g.setAttribute("multiple","multiple");g.setAttribute("type","file");if(null==document.documentMode){mxEvent.addListener(g,"change",function(a){b.importFiles(g.files, +0,0,b.maxImageSize,function(b,a,g,c,m,z){d(b)},function(){},function(b){return"image/"==b.type.substring(0,6)},function(b){for(var a=0;a<b.length;a++)b[a]()},!0)});var m=mxUtils.button(mxResources.get("open"),function(){g.click()});m.className="geBtn";a.appendChild(m)}}document.createElement("canvas").getContext&&"data:image/"==p.value.substring(0,11)&&"data:image/svg"!=p.value.substring(0,14)&&(m=mxUtils.button(mxResources.get("crop"),function(){var a=new CropImageDialog(b,p.value,function(b){p.value= +b});b.showDialog(a.container,200,185,!0,!0);a.init()}),m.className="geBtn",a.appendChild(m));"undefined"!=typeof google&&"undefined"!=typeof google.picker&&window.self===window.top&&(m=mxUtils.button(mxResources.get("search"),function(){if(null==b.imageSearchPicker){var a=(new google.picker.PickerBuilder).setLocale(mxLanguage).addView(google.picker.ViewId.IMAGE_SEARCH).enableFeature(google.picker.Feature.NAV_HIDDEN);b.imageSearchPicker=a.setCallback(function(b){ImageDialog.filePicked(b)}).build()}b.imageSearchPicker.setVisible(!0)}), +m.className="geBtn",a.appendChild(m),null!=b.drive&&"1"==urlParams.photos&&(m=mxUtils.button(mxResources.get("googlePlus"),function(){b.spinner.spin(document.body,mxResources.get("authorizing"))&&b.drive.checkToken(mxUtils.bind(this,function(){b.spinner.stop();if(null==b.photoPicker){var a=gapi.auth.getToken().access_token,a=(new google.picker.PickerBuilder).setAppId(b.drive.appId).setLocale(mxLanguage).setOAuthToken(a).addView(google.picker.ViewId.PHOTOS).addView(google.picker.ViewId.PHOTO_ALBUMS).addView(google.picker.ViewId.PHOTO_UPLOAD); +b.photoPicker=a.setCallback(function(b){ImageDialog.filePicked(b)}).build()}b.photoPicker.setVisible(!0)}))}),m.className="geBtn",a.appendChild(m)));mxEvent.addListener(p,"keypress",function(b){13==b.keyCode&&d(p.value)});m=mxUtils.button(mxResources.get("apply"),function(){d(p.value)});m.className="geBtn gePrimaryBtn";a.appendChild(m);b.editor.cancelFirst||a.appendChild(c);Graph.fileSupport&&(a.style.marginTop="120px",q.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')",q.style.backgroundPosition= +"center 65%",q.style.backgroundRepeat="no-repeat",c=document.createElement("div"),c.style.position="absolute",c.style.width="420px",c.style.top="58%",c.style.textAlign="center",c.style.fontSize="18px",c.style.color="#a0c3ff",mxUtils.write(c,mxResources.get("dragImagesHere")),q.appendChild(c));q.appendChild(a);this.container=q},LinkDialog=function(b,c,a,e,k){function f(b,a,d){d=mxUtils.button("",d);d.className="geBtn";d.setAttribute("title",a);a=document.createElement("img");a.style.height="26px"; +a.style.width="26px";a.setAttribute("src",b);d.style.minWidth="42px";d.style.verticalAlign="middle";d.appendChild(a);B.appendChild(d)}var l=document.createElement("div");mxUtils.write(l,mxResources.get("editLink")+":");var q=document.createElement("div");q.className="geTitle";q.style.backgroundColor="transparent";q.style.borderColor="transparent";q.style.whiteSpace="nowrap";q.style.textOverflow="clip";q.style.cursor="default";mxClient.IS_VML||(q.style.paddingRight="20px");var p=document.createElement("input"); +p.setAttribute("placeholder",mxResources.get("dragUrlsHere"));p.setAttribute("type","text");p.style.marginTop="6px";p.style.width="440px";p.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";p.style.backgroundRepeat="no-repeat";p.style.backgroundPosition="100% 50%";p.style.paddingRight="14px";var u=document.createElement("div");u.setAttribute("title",mxResources.get("reset"));u.style.position="relative";u.style.left="-16px";u.style.width="12px";u.style.height="14px";u.style.cursor="pointer"; +u.style.display=mxClient.IS_VML?"inline":"inline-block";u.style.top=(mxClient.IS_VML?0:3)+"px";u.style.background="url('"+b.editor.transparentImage+"')";mxEvent.addListener(u,"click",function(){p.value="";p.focus()});var d=document.createElement("input");d.style.cssText="margin-right:8px;margin-bottom:8px;";d.setAttribute("value","url");d.setAttribute("type","radio");d.setAttribute("name","current-linkdialog");var g=document.createElement("input");g.style.cssText="margin-right:8px;margin-bottom:8px;"; +g.setAttribute("value","url");g.setAttribute("type","radio");g.setAttribute("name","current-linkdialog");var m=document.createElement("select");m.style.width="420px";if(k&&null!=b.pages){null!=c&&"data:page/id,"==c.substring(0,13)?(g.setAttribute("checked","checked"),g.defaultChecked=!0):(p.setAttribute("value",c),d.setAttribute("checked","checked"),d.defaultChecked=!0);p.style.width="420px";q.appendChild(d);q.appendChild(p);q.appendChild(u);mxUtils.br(q);q.appendChild(g);k=!1;for(u=0;u<b.pages.length;u++){var v= +document.createElement("option");mxUtils.write(v,b.pages[u].getName()||mxResources.get("pageWithNumber",[u+1]));v.setAttribute("value","data:page/id,"+b.pages[u].getId());c==v.getAttribute("value")&&(v.setAttribute("selected","selected"),k=!0);m.appendChild(v)}if(!k&&g.checked){var t=document.createElement("option");mxUtils.write(t,mxResources.get("pageNotFound"));t.setAttribute("disabled","disabled");t.setAttribute("selected","selected");t.setAttribute("value","pageNotFound");m.appendChild(t);mxEvent.addListener(m, +"change",function(){null==t.parentNode||t.selected||t.parentNode.removeChild(t)})}q.appendChild(m)}else p.setAttribute("value",c),q.appendChild(p),q.appendChild(u);l.appendChild(q);var y=mxUtils.button(a,function(){b.hideDialog();e(g.checked?"pageNotFound"!==m.value?m.value:c:p.value,LinkDialog.selectedDocs)});y.style.verticalAlign="middle";y.className="geBtn gePrimaryBtn";this.init=function(){g.checked?m.focus():(p.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS? +p.select():document.execCommand("selectAll",!1,null));mxEvent.addListener(m,"focus",function(){d.removeAttribute("checked");g.setAttribute("checked","checked");g.checked=!0});mxEvent.addListener(p,"focus",function(){g.removeAttribute("checked");d.setAttribute("checked","checked");d.checked=!0});if(Graph.fileSupport){var a=l.parentNode,c=null;mxEvent.addListener(a,"dragleave",function(b){null!=c&&(c.parentNode.removeChild(c),c=null);b.stopPropagation();b.preventDefault()});mxEvent.addListener(a,"dragover", +mxUtils.bind(this,function(d){null==c&&(!mxClient.IS_IE||10<document.documentMode)&&(c=b.highlightElement(a));d.stopPropagation();d.preventDefault()}));mxEvent.addListener(a,"drop",mxUtils.bind(this,function(b){null!=c&&(c.parentNode.removeChild(c),c=null);0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")&&(p.value=decodeURIComponent(b.dataTransfer.getData("text/uri-list")),d.setAttribute("checked","checked"),d.checked=!0,y.click());b.stopPropagation();b.preventDefault()}),!1)}};var B=document.createElement("div"); +B.style.marginTop="20px";B.style.textAlign="right";a=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});a.style.verticalAlign="middle";a.className="geBtn";b.editor.cancelFirst&&B.appendChild(a);q=mxUtils.button(mxResources.get("help"),function(){b.openLink("https://desk.draw.io/solution/articles/16000080137")});q.style.verticalAlign="middle";q.className="geBtn";B.appendChild(q);b.isOffline()&&!mxClient.IS_CHROMEAPP&&(q.style.display="none");LinkDialog.selectedDocs=null;LinkDialog.filePicked= +function(b){if(b.action==google.picker.Action.PICKED){LinkDialog.selectedDocs=b.docs;var a=b.docs[0].url;"application/mxe"==b.docs[0].mimeType||null!=b.docs[0].mimeType&&"application/vnd.jgraph."==b.docs[0].mimeType.substring(0,23)?a="https://www.draw.io/#G"+b.docs[0].id:"application/vnd.google-apps.folder"==b.docs[0].mimeType&&(a="https://drive.google.com/#folders/"+b.docs[0].id);p.value=a;p.focus()}else LinkDialog.selectedDocs=null;p.focus()};"undefined"!=typeof google&&"undefined"!=typeof google.picker&& +null!=b.drive&&f(IMAGE_PATH+"/google-drive-logo.svg",mxResources.get("googlePlus"),function(){b.spinner.spin(document.body,mxResources.get("authorizing"))&&b.drive.checkToken(mxUtils.bind(this,function(){b.spinner.stop();if(null==b.linkPicker){var a=gapi.auth.getToken().access_token,d=(new google.picker.DocsView(google.picker.ViewId.FOLDERS)).setParent("root").setIncludeFolders(!0).setSelectFolderEnabled(!0),g=(new google.picker.DocsView).setIncludeFolders(!0).setSelectFolderEnabled(!0),c=(new google.picker.DocsView).setIncludeFolders(!0).setEnableTeamDrives(!0).setSelectFolderEnabled(!0), +a=(new google.picker.PickerBuilder).setAppId(b.drive.appId).setLocale(mxLanguage).setOAuthToken(a).enableFeature(google.picker.Feature.SUPPORT_TEAM_DRIVES).addView(d).addView(g).addView(c).addView(google.picker.ViewId.RECENTLY_PICKED).addView(google.picker.ViewId.IMAGE_SEARCH).addView(google.picker.ViewId.VIDEO_SEARCH).addView(google.picker.ViewId.MAPS);"1"==urlParams.photos&&a.addView(google.picker.ViewId.PHOTOS).addView(google.picker.ViewId.PHOTO_ALBUMS).addView(google.picker.ViewId.PHOTO_UPLOAD); +b.linkPicker=a.setCallback(function(b){LinkDialog.filePicked(b)}).build()}b.linkPicker.setVisible(!0)}))});"undefined"!=typeof Dropbox&&"undefined"!=typeof Dropbox.choose&&f(IMAGE_PATH+"/dropbox-logo.svg",mxResources.get("dropbox"),function(){Dropbox.choose({linkType:"direct",cancel:function(){},success:function(b){p.value=b[0].link;p.focus()}})});null!=b.oneDrive&&f(IMAGE_PATH+"/onedrive-logo.svg",mxResources.get("oneDrive"),function(){b.oneDrive.pickFile(function(b,a){p.value=a.value[0].webUrl; +p.focus()})});null!=b.gitHub&&f(IMAGE_PATH+"/github-logo.svg",mxResources.get("github"),function(){b.gitHub.pickFile(function(b){if(null!=b){b=b.split("/");var a=b[0],d=b[1],g=b[2];b=b.slice(3,b.length).join("/");p.value="https://github.com/"+a+"/"+d+"/blob/"+g+"/"+b;p.focus()}})});mxEvent.addListener(p,"keypress",function(a){13==a.keyCode&&(b.hideDialog(),e(g.checked?m.value:p.value,LinkDialog.selectedDocs))});B.appendChild(y);b.editor.cancelFirst||B.appendChild(a);l.appendChild(B);this.container= +l},AboutDialog=function(b){var c=document.createElement("div");c.style.marginTop="6px";c.setAttribute("align","center");var a=document.createElement("img");a.style.border="0px";mxClient.IS_SVG?(a.setAttribute("width","164"),a.setAttribute("height","221"),a.style.width="164px",a.style.height="221px",a.setAttribute("src",IMAGE_PATH+"/drawlogo-text-bottom.svg")):(a.setAttribute("width","176"),a.setAttribute("height","219"),a.style.width="170px",a.style.height="219px",a.setAttribute("src",IMAGE_PATH+ +"/logo-flat.png"));"dark"==uiTheme&&(a.style.filter="grayscale(100%) invert(100%)");c.appendChild(a);mxUtils.br(c);var a="dark"==uiTheme?"#cccccc":"#505050",e=document.createElement("small");e.innerHTML="v "+EditorUi.VERSION;e.style.color=a;c.appendChild(e);mxUtils.br(c);mxUtils.br(c);e=document.createElement("small");e.style.color=a;e.innerHTML='© 2005-2019 <a href="https://about.draw.io/" style="color:inherit;" target="_blank">JGraph Ltd</a>.<br>All Rights Reserved.';c.appendChild(e);mxEvent.addListener(c, +"click",function(a){"A"!=mxEvent.getSource(a).nodeName&&b.hideDialog()});this.container=c},FeedbackDialog=function(b){var c=document.createElement("div"),a=document.createElement("div");mxUtils.write(a,mxResources.get("sendYourFeedbackToDrawIo"));a.style.fontSize="18px";a.style.marginBottom="18px";c.appendChild(a);a=document.createElement("div");mxUtils.write(a,mxResources.get("yourEmailAddress")+" ("+mxResources.get("required")+")");c.appendChild(a);var e=document.createElement("input");e.setAttribute("type", +"text");e.style.marginTop="6px";e.style.width="600px";var k=mxUtils.button(mxResources.get("sendMessage"),function(){var a=p.value+(l.checked?"\nDiagram:\n"+mxUtils.getXml(b.getXmlFileData()):"")+"\nBrowser:\n"+navigator.userAgent;a.length>FeedbackDialog.maxAttachmentSize?b.alert(mxResources.get("drawingTooLarge")):(b.hideDialog(),b.spinner.spin(document.body)&&mxUtils.post(null!=FeedbackDialog.feedbackUrl?FeedbackDialog.feedbackUrl:"/email","email="+encodeURIComponent(e.value)+"&version="+encodeURIComponent(EditorUi.VERSION)+ +"&url="+encodeURIComponent(window.location.href)+"&body="+encodeURIComponent("Feedback:\n"+a),function(a){b.spinner.stop();200<=a.getStatus()&&299>=a.getStatus()?b.alert(mxResources.get("feedbackSent")):b.alert(mxResources.get("errorSendingFeedback"))},function(){b.spinner.stop();b.alert(mxResources.get("errorSendingFeedback"))}))});k.className="geBtn gePrimaryBtn";k.setAttribute("disabled","disabled");var f=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; +mxEvent.addListener(e,"change",function(){0<e.value.length&&0<f.test(e.value)?k.removeAttribute("disabled"):k.setAttribute("disabled","disabled")});mxEvent.addListener(e,"keyup",function(){0<e.value.length&&f.test(e.value)?k.removeAttribute("disabled"):k.setAttribute("disabled","disabled")});c.appendChild(e);this.init=function(){e.focus()};var l=document.createElement("input");l.setAttribute("type","checkbox");l.setAttribute("checked","checked");l.defaultChecked=!0;a=document.createElement("p");a.style.marginTop= +"14px";a.appendChild(l);var q=document.createElement("span");mxUtils.write(q," "+mxResources.get("includeCopyOfMyDiagram"));a.appendChild(q);mxEvent.addListener(q,"click",function(b){l.checked=!l.checked;mxEvent.consume(b)});c.appendChild(a);a=document.createElement("div");mxUtils.write(a,mxResources.get("feedback"));c.appendChild(a);var p=document.createElement("textarea");p.style.resize="none";p.style.width="600px";p.style.height="140px";p.style.marginTop="6px";p.setAttribute("placeholder",mxResources.get("commentsNotes")); +c.appendChild(p);a=document.createElement("div");a.style.marginTop="26px";a.style.textAlign="right";q=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});q.className="geBtn";b.editor.cancelFirst?(a.appendChild(q),a.appendChild(k)):(a.appendChild(k),a.appendChild(q));c.appendChild(a);this.container=c};FeedbackDialog.maxAttachmentSize=1E6; +var RevisionDialog=function(b,c,a){var e=document.createElement("div"),k=document.createElement("h3");k.style.marginTop="0px";mxUtils.write(k,mxResources.get("revisionHistory"));e.appendChild(k);var f=document.createElement("div");f.style.position="absolute";f.style.overflow="auto";f.style.width="170px";f.style.height="378px";e.appendChild(f);var l=document.createElement("div");l.style.position="absolute";l.style.border="1px solid lightGray";l.style.left="199px";l.style.width="470px";l.style.height= +"376px";l.style.overflow="hidden";mxEvent.disableContextMenu(l);e.appendChild(l);var q=new Graph(l);q.setTooltips(!1);q.setEnabled(!1);q.setPanning(!0);q.panningHandler.ignoreCell=!0;q.panningHandler.useLeftButtonForPanning=!0;q.minFitScale=null;q.maxFitScale=null;q.centerZoom=!0;var p=0,u=null,d=0,g=q.getGlobalVariable;q.getGlobalVariable=function(b){return"page"==b&&null!=u&&null!=u[d]?u[d].getAttribute("name"):"pagenumber"==b?d+1:g.apply(this,arguments)};q.getLinkForCell=function(){return null}; +Editor.MathJaxRender&&q.addListener(mxEvent.SIZE,mxUtils.bind(this,function(a,d){b.editor.graph.mathEnabled&&Editor.MathJaxRender(q.container)}));var m=new Spinner({lines:11,length:15,width:6,radius:10,corners:1,rotate:0,direction:1,color:"#000",speed:1.4,trail:60,shadow:!1,hwaccel:!1,className:"spinner",zIndex:2E9,top:"50%",left:"50%"}),v=b.getCurrentFile(),t=null,y=null,B=null,n=null,x=mxUtils.button("",function(){null!=B&&q.zoomIn()});x.className="geSprite geSprite-zoomin";x.setAttribute("title", +mxResources.get("zoomIn"));x.style.outline="none";x.style.border="none";x.style.margin="2px";x.setAttribute("disabled","disabled");mxUtils.setOpacity(x,20);var z=mxUtils.button("",function(){null!=B&&q.zoomOut()});z.className="geSprite geSprite-zoomout";z.setAttribute("title",mxResources.get("zoomOut"));z.style.outline="none";z.style.border="none";z.style.margin="2px";z.setAttribute("disabled","disabled");mxUtils.setOpacity(z,20);var A=mxUtils.button("",function(){null!=B&&(q.maxFitScale=8,q.fit(8), +q.center())});A.className="geSprite geSprite-fit";A.setAttribute("title",mxResources.get("fit"));A.style.outline="none";A.style.border="none";A.style.margin="2px";A.setAttribute("disabled","disabled");mxUtils.setOpacity(A,20);var F=mxUtils.button("",function(){null!=B&&(q.zoomActual(),q.center())});F.className="geSprite geSprite-actualsize";F.setAttribute("title",mxResources.get("actualSize"));F.style.outline="none";F.style.border="none";F.style.margin="2px";F.setAttribute("disabled","disabled"); +mxUtils.setOpacity(F,20);var E=document.createElement("div");E.style.position="absolute";E.style.textAlign="right";E.style.color="gray";E.style.marginTop="10px";E.style.backgroundColor="transparent";E.style.top="440px";E.style.right="32px";E.style.maxWidth="380px";E.style.cursor="default";var G=mxUtils.button(mxResources.get("download"),function(){if(null!=B){var a=b.getCurrentFile(),a=null!=a&&null!=a.getTitle()?a.getTitle():b.defaultFilename,d=mxUtils.getXml(B.documentElement);b.isLocalFileSave()? +b.saveLocalFile(d,a,"text/xml"):(d="undefined"===typeof pako?"&xml="+encodeURIComponent(d):"&data="+encodeURIComponent(b.editor.graph.compress(d)),(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(a)+"&format=xml"+d)).simulate(document,"_blank"))}});G.className="geBtn";G.setAttribute("disabled","disabled");var H=mxUtils.button(mxResources.get("restore"),function(){null!=B&&null!=n&&b.confirm(mxResources.get("areYouSure"),function(){null!=a?a(n):b.spinner.spin(document.body,mxResources.get("restoring"))&& +v.save(!0,function(a){b.spinner.stop();b.replaceFileData(n);b.hideDialog()},function(a){b.spinner.stop();b.editor.setStatus("");b.handleError(a,null!=a?mxResources.get("errorSavingFile"):null)})})});H.className="geBtn";H.setAttribute("disabled","disabled");var D=document.createElement("select");D.setAttribute("disabled","disabled");D.style.maxWidth="80px";D.style.position="relative";D.style.top="-2px";D.style.verticalAlign="bottom";D.style.marginRight="6px";D.style.display="none";var K=null;mxEvent.addListener(D, +"change",function(b){null!=K&&(K(b),mxEvent.consume(b))});var I=mxUtils.button(mxResources.get("open"),function(){null!=B&&(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(mxUtils.getXml(B.documentElement)),b.openLink(b.getUrl(),null,!0))});I.className="geBtn";I.setAttribute("disabled","disabled");null!=a&&(I.style.display="none");var C=mxUtils.button(mxResources.get("show"),function(){null!=y&&b.openLink(y.getUrl(D.selectedIndex))});C.className="geBtn gePrimaryBtn"; +C.setAttribute("disabled","disabled");null!=a&&(C.style.display="none",H.className="geBtn gePrimaryBtn");k=document.createElement("div");k.style.position="absolute";k.style.top="482px";k.style.width="640px";k.style.textAlign="right";var J=document.createElement("div");J.className="geToolbarContainer";J.style.backgroundColor="transparent";J.style.padding="2px";J.style.border="none";J.style.left="199px";J.style.top="442px";var M=null;if(null!=c&&0<c.length){l.style.cursor="move";var O=document.createElement("table"); +O.style.border="1px solid lightGray";O.style.borderCollapse="collapse";O.style.borderSpacing="0px";O.style.width="100%";var T=document.createElement("tbody"),U=(new Date).toDateString();null!=b.currentPage&&null!=b.pages&&(p=mxUtils.indexOf(b.pages,b.currentPage));for(var V=c.length-1;0<=V;V--){var W=function(a){var g=new Date(a.modifiedDate),e=null;if(0<=g.getTime()){var f=function(c){m.stop();var t=mxUtils.parseXml(c),y=b.editor.extractGraphModel(t.documentElement,!0);if(null!=y){var f=function(a){null!= +a&&(a=k(mxUtils.parseXml(b.editor.graph.decompress(mxUtils.getTextContent(a))).documentElement));return a},k=function(b){var a=b.getAttribute("background");if(null==a||""==a||a==mxConstants.NONE)a="#ffffff";l.style.backgroundColor=a;(new mxCodec(b.ownerDocument)).decode(b,q.getModel());q.maxFitScale=1;q.fit(8);q.center();return b};D.style.display="none";D.innerHTML="";B=t;n=c;u=parseSelectFunction=null;d=0;if("mxfile"==y.nodeName){t=y.getElementsByTagName("diagram");u=[];for(c=0;c<t.length;c++)u.push(t[c]); +d=Math.min(p,u.length-1);0<u.length&&f(u[d]);if(1<u.length)for(D.removeAttribute("disabled"),D.style.display="",c=0;c<u.length;c++)t=document.createElement("option"),mxUtils.write(t,u[c].getAttribute("name")||mxResources.get("pageWithNumber",[c+1])),t.setAttribute("value",c),c==d&&t.setAttribute("selected","selected"),D.appendChild(t);K=function(){try{var a=parseInt(D.value);f(u[a]);d=p=a}catch(L){D.value=p,b.handleError(L)}}}else k(y);c=a.lastModifyingUserName;null!=c&&20<c.length&&(c=c.substring(0, +20)+"...");E.innerHTML="";mxUtils.write(E,(null!=c?c+" ":"")+g.toLocaleDateString()+" "+g.toLocaleTimeString());E.setAttribute("title",e.getAttribute("title"));x.removeAttribute("disabled");z.removeAttribute("disabled");A.removeAttribute("disabled");F.removeAttribute("disabled");null!=v&&v.isRestricted()||(b.editor.graph.isEnabled()&&H.removeAttribute("disabled"),G.removeAttribute("disabled"),C.removeAttribute("disabled"),I.removeAttribute("disabled"));mxUtils.setOpacity(x,60);mxUtils.setOpacity(z, +60);mxUtils.setOpacity(A,60);mxUtils.setOpacity(F,60)}else D.style.display="none",D.innerHTML="",E.innerHTML="",mxUtils.write(E,mxResources.get("errorLoadingFile"))},e=document.createElement("tr");e.style.borderBottom="1px solid lightGray";e.style.fontSize="12px";e.style.cursor="pointer";var k=document.createElement("td");k.style.padding="6px";k.style.whiteSpace="nowrap";a==c[c.length-1]?mxUtils.write(k,mxResources.get("current")):g.toDateString()===U?mxUtils.write(k,g.toLocaleTimeString()):mxUtils.write(k, +g.toLocaleDateString()+" "+g.toLocaleTimeString());e.appendChild(k);e.setAttribute("title",g.toLocaleDateString()+" "+g.toLocaleTimeString()+" "+b.formatFileSize(parseInt(a.fileSize))+(null!=a.lastModifyingUserName?" "+a.lastModifyingUserName:""));mxEvent.addListener(e,"click",function(b){y!=a&&(m.stop(),null!=t&&(t.style.backgroundColor=""),y=a,t=e,t.style.backgroundColor="#ebf2f9",n=B=null,E.removeAttribute("title"),E.innerHTML=mxUtils.htmlEntities(mxResources.get("loading")+"..."),l.style.backgroundColor= +"#ffffff",q.getModel().clear(),H.setAttribute("disabled","disabled"),G.setAttribute("disabled","disabled"),x.setAttribute("disabled","disabled"),z.setAttribute("disabled","disabled"),F.setAttribute("disabled","disabled"),A.setAttribute("disabled","disabled"),I.setAttribute("disabled","disabled"),C.setAttribute("disabled","disabled"),D.setAttribute("disabled","disabled"),mxUtils.setOpacity(x,20),mxUtils.setOpacity(z,20),mxUtils.setOpacity(A,20),mxUtils.setOpacity(F,20),m.spin(l),a.getXml(function(b){if(y== +a)try{f(b)}catch(R){E.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+": "+R.message)}},function(b){m.stop();D.style.display="none";D.innerHTML="";E.innerHTML="";mxUtils.write(E,mxResources.get("errorLoadingFile"))}),mxEvent.consume(b))});mxEvent.addListener(e,"dblclick",function(b){C.click();window.getSelection?window.getSelection().removeAllRanges():document.selection&&document.selection.empty();mxEvent.consume(b)},!1);T.appendChild(e)}return e}(c[V]);null!=W&&V==c.length-1&&(M=W)}O.appendChild(T); +f.appendChild(O)}else null==v||null==b.drive&&v.constructor==window.DriveFile||null==b.dropbox&&v.constructor==window.DropboxFile?(l.style.display="none",J.style.display="none",mxUtils.write(f,mxResources.get("notAvailable"))):(l.style.display="none",J.style.display="none",mxUtils.write(f,mxResources.get("noRevisions")));this.init=function(){null!=M&&M.click()};f=mxUtils.button(mxResources.get("close"),function(){b.hideDialog()});f.className="geBtn";J.appendChild(D);J.appendChild(x);J.appendChild(z); +J.appendChild(F);J.appendChild(A);b.editor.cancelFirst?(k.appendChild(f),k.appendChild(G),k.appendChild(I),k.appendChild(H),k.appendChild(C)):(k.appendChild(G),k.appendChild(I),k.appendChild(H),k.appendChild(C),k.appendChild(f));e.appendChild(k);e.appendChild(J);e.appendChild(E);this.container=e},DraftDialog=function(b,c,a,e,k,f,l,q){var p=document.createElement("div"),u=document.createElement("div");u.style.marginTop="0px";u.style.whiteSpace="nowrap";u.style.overflow="auto";mxUtils.write(u,c);p.appendChild(u); +var d=document.createElement("div");d.style.position="absolute";d.style.border="1px solid lightGray";d.style.marginTop="10px";d.style.width="640px";d.style.top="46px";d.style.bottom="74px";d.style.overflow="hidden";mxEvent.disableContextMenu(d);p.appendChild(d);var g=new Graph(d);g.setEnabled(!1);g.setPanning(!0);g.panningHandler.ignoreCell=!0;g.panningHandler.useLeftButtonForPanning=!0;g.minFitScale=null;g.maxFitScale=null;g.centerZoom=!0;c=mxUtils.parseXml(a);var m=b.editor.extractGraphModel(c.documentElement, +!0),v=0,t=null,y=g.getGlobalVariable;g.getGlobalVariable=function(b){return"page"==b&&null!=t&&null!=t[v]?t[v].getAttribute("name"):"pagenumber"==b?v+1:y.apply(this,arguments)};g.getLinkForCell=function(){return null};c=mxUtils.button("",function(){g.zoomIn()});c.className="geSprite geSprite-zoomin";c.setAttribute("title",mxResources.get("zoomIn"));c.style.outline="none";c.style.border="none";c.style.margin="2px";mxUtils.setOpacity(c,60);a=mxUtils.button("",function(){g.zoomOut()});a.className="geSprite geSprite-zoomout"; +a.setAttribute("title",mxResources.get("zoomOut"));a.style.outline="none";a.style.border="none";a.style.margin="2px";mxUtils.setOpacity(a,60);u=mxUtils.button("",function(){g.maxFitScale=8;g.fit(8);g.center()});u.className="geSprite geSprite-fit";u.setAttribute("title",mxResources.get("fit"));u.style.outline="none";u.style.border="none";u.style.margin="2px";mxUtils.setOpacity(u,60);var B=mxUtils.button("",function(){g.zoomActual();g.center()});B.className="geSprite geSprite-actualsize";B.setAttribute("title", +mxResources.get("actualSize"));B.style.outline="none";B.style.border="none";B.style.margin="2px";mxUtils.setOpacity(B,60);k=mxUtils.button(l||mxResources.get("discard"),k);k.className="geBtn";var n=document.createElement("select");n.style.maxWidth="80px";n.style.position="relative";n.style.top="-2px";n.style.verticalAlign="bottom";n.style.marginRight="6px";n.style.display="none";e=mxUtils.button(f||mxResources.get("edit"),e);e.className="geBtn gePrimaryBtn";f=document.createElement("div");f.style.position= +"absolute";f.style.bottom="30px";f.style.width="640px";f.style.textAlign="right";l=document.createElement("div");l.className="geToolbarContainer";l.style.cssText="box-shadow:none !important;background-color:transparent;padding:2px;border-style:none !important;bottom:30px;";this.init=function(){function a(b){if(null!=b){var a=b.getAttribute("background");if(null==a||""==a||a==mxConstants.NONE)a="#ffffff";d.style.backgroundColor=a;(new mxCodec(b.ownerDocument)).decode(b,g.getModel());g.maxFitScale= +1;g.fit(8);g.center()}}function c(d){null!=d&&(d=a(mxUtils.parseXml(b.editor.graph.decompress(mxUtils.getTextContent(d))).documentElement));return d}mxEvent.addListener(n,"change",function(b){v=parseInt(n.value);c(t[v]);mxEvent.consume(b)});if("mxfile"==m.nodeName){var e=m.getElementsByTagName("diagram");t=[];for(var y=0;y<e.length;y++)t.push(e[y]);0<t.length&&c(t[v]);if(1<t.length)for(n.style.display="",y=0;y<t.length;y++)e=document.createElement("option"),mxUtils.write(e,t[y].getAttribute("name")|| +mxResources.get("pageWithNumber",[y+1])),e.setAttribute("value",y),y==v&&e.setAttribute("selected","selected"),n.appendChild(e)}else a(m)};l.appendChild(n);l.appendChild(c);l.appendChild(a);l.appendChild(B);l.appendChild(u);c=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog(!0)});c.className="geBtn";q=null!=q?mxUtils.button(mxResources.get("ignore"),q):null;null!=q&&(q.className="geBtn");b.editor.cancelFirst?(f.appendChild(c),null!=q&&f.appendChild(q),f.appendChild(k),f.appendChild(e)): +(f.appendChild(e),f.appendChild(k),null!=q&&f.appendChild(q),f.appendChild(c));p.appendChild(f);p.appendChild(l);this.container=p},FindWindow=function(b,c,a,e,k){function f(b,a,d){if("object"===typeof a.value&&null!=a.value.attributes){a=a.value.attributes;for(var g=0;g<a.length;g++)if("label"!=a[g].nodeName){var c=mxUtils.trim(a[g].nodeValue.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")).toLowerCase();if(null==b&&c.substring(0,d.length)===d||null!=b&&b.test(c))return!0}}return!1}function l(){var b=p.model.getDescendants(p.model.getRoot()), +a=m.value.toLowerCase(),g=v.checked?new RegExp(a):null,c=null;u!=a&&(u=a,d=null);var e=null==d;if(0<a.length)for(var t=0;t<b.length;t++){var k=p.view.getState(b[t]);if(null!=k&&null!=k.cell.value&&(e||null==c)&&(p.model.isVertex(k.cell)||p.model.isEdge(k.cell))&&(p.isHtmlLabel(k.cell)?(y.innerHTML=p.getLabel(k.cell),label=mxUtils.extractTextWithWhitespace([y])):label=p.getLabel(k.cell),label=mxUtils.trim(label.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")).toLowerCase(),null==g&&(label.substring(0,a.length)=== +a||f(g,k.cell,a))||null!=g&&(g.test(label)||f(g,k.cell,a))))if(e){c=k;break}else null==c&&(c=k);e=e||k==d}null!=c?(d=c,p.scrollCellToVisible(d.cell),p.isEnabled()?p.setSelectionCell(d.cell):p.highlightCell(d.cell)):p.isEnabled()&&p.clearSelection();return 0==a.length||null!=c}var q=b.actions.get("find"),p=b.editor.graph,u=null,d=null,g=document.createElement("div");g.style.userSelect="none";g.style.overflow="hidden";g.style.padding="10px";g.style.height="100%";var m=document.createElement("input"); +m.setAttribute("placeholder",mxResources.get("find"));m.setAttribute("type","text");m.style.marginTop="4px";m.style.marginBottom="6px";m.style.width="200px";m.style.fontSize="12px";m.style.borderRadius="4px";m.style.padding="6px";g.appendChild(m);mxUtils.br(g);var v=document.createElement("input");v.setAttribute("type","checkbox");v.style.marginRight="4px";g.appendChild(v);mxUtils.write(g,mxResources.get("regularExpression"));var t=b.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000088250"); +t.style.position="relative";t.style.marginLeft="6px";t.style.top="-1px";g.appendChild(t);var y=document.createElement("div");mxUtils.br(g);t=mxUtils.button(mxResources.get("reset"),function(){m.value="";m.style.backgroundColor="";u=d=null;m.focus()});t.setAttribute("title",mxResources.get("reset"));t.style.marginTop="6px";t.style.marginRight="4px";t.className="geBtn";g.appendChild(t);t=mxUtils.button(mxResources.get("find"),function(){try{m.style.backgroundColor=l()?"":"#ffcfcf"}catch(B){b.handleError(B)}}); +t.setAttribute("title",mxResources.get("find")+" (Enter)");t.style.marginTop="6px";t.className="geBtn gePrimaryBtn";g.appendChild(t);mxEvent.addListener(m,"keyup",function(b){if(91==b.keyCode||17==b.keyCode)mxEvent.consume(b);else if(27==b.keyCode)q.funct();else if(u!=m.value.toLowerCase()||13==b.keyCode)try{m.style.backgroundColor=l()?"":"#ffcfcf"}catch(n){m.style.backgroundColor="#ffcfcf"}});mxEvent.addListener(g,"keydown",function(a){70==a.keyCode&&b.keyHandler.isControlDown(a)&&!mxEvent.isShiftDown(a)&& +(q.funct(),mxEvent.consume(a))});this.window=new mxWindow(mxResources.get("find"),g,c,a,e,k,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!1);this.window.setClosable(!0);this.window.addListener("show",mxUtils.bind(this,function(){this.window.isVisible()?(m.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?m.select():document.execCommand("selectAll",!1,null)):p.container.focus()}))},TagsWindow=function(b,c,a,e,k){var f= +b.editor.graph,l="tags",q=document.createElement("div");q.style.userSelect="none";q.style.overflow="hidden";q.style.padding="10px";q.style.height="100%";var p=document.createElement("input");p.setAttribute("placeholder",mxResources.get("allTags"));p.setAttribute("type","text");p.style.marginTop="4px";p.style.width="260px";p.style.fontSize="12px";p.style.borderRadius="4px";p.style.padding="6px";q.appendChild(p);if(!b.isOffline()||mxClient.IS_CHROMEAPP){p.style.width="240px";var u=b.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000046966"); +u.firstChild.style.marginBottom="6px";u.style.marginLeft="6px";q.appendChild(u)}mxEvent.addListener(p,"dblclick",function(){var a=new FilenameDialog(b,l,mxResources.get("ok"),mxUtils.bind(this,function(b){null!=b&&0<b.length&&(l=b)}),mxResources.get("enterPropertyName"));b.showDialog(a.container,300,80,!0,!0);a.init()});p.setAttribute("title",mxResources.get("doubleClickChangeProperty"));mxUtils.br(q);u=mxUtils.button(mxResources.get("hide"),function(){var b=f.getCellsForTags(p.value.split(" "),void 0, +l);f.setCellsVisible(b,!1)});u.setAttribute("title",mxResources.get("hide"));u.style.marginTop="8px";u.style.marginRight="4px";u.className="geBtn";q.appendChild(u);u=mxUtils.button(mxResources.get("show"),function(){var b=f.getCellsForTags(p.value.split(" "),void 0,l);f.setCellsVisible(b,!0);if(f.isEnabled())f.setSelectionCells(b);else for(var a=0;a<b.length;a++)f.highlightCell(b[a])});u.setAttribute("title",mxResources.get("show"));u.style.marginTop="8px";u.style.marginRight="4px";u.className="geBtn"; +q.appendChild(u);var d=b.actions.get("tags"),u=mxUtils.button(mxResources.get("close"),function(){d.funct()});u.setAttribute("title",mxResources.get("close")+" (Enter/Esc)");u.style.marginTop="8px";u.className="geBtn gePrimaryBtn";q.appendChild(u);mxEvent.addListener(p,"keyup",function(b){13!=b.keyCode&&27!=b.keyCode||d.funct()});this.window=new mxWindow(mxResources.get("tags"),q,c,a,e,k,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!1);this.window.setClosable(!0); +this.window.addListener("show",mxUtils.bind(this,function(){this.window.isVisible()?(p.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?p.select():document.execCommand("selectAll",!1,null)):f.container.focus()}))},AuthDialog=function(b,c,a,e){var k=document.createElement("div");k.style.textAlign="center";var f=document.createElement("p");f.style.fontSize="16pt";f.style.padding="0px";f.style.margin="0px";f.style.color="gray";mxUtils.write(f,mxResources.get("authorizationRequired")); +var l="Unknown",q=document.createElement("img");q.setAttribute("border","0");q.setAttribute("align","absmiddle");q.style.marginRight="10px";c==b.drive?(l=mxResources.get("googleDrive"),q.src=IMAGE_PATH+"/google-drive-logo-white.svg"):c==b.dropbox?(l=mxResources.get("dropbox"),q.src=IMAGE_PATH+"/dropbox-logo-white.svg"):c==b.oneDrive?(l=mxResources.get("oneDrive"),q.src=IMAGE_PATH+"/onedrive-logo-white.svg"):c==b.gitHub?(l=mxResources.get("github"),q.src=IMAGE_PATH+"/github-logo-white.svg"):c==b.trello&& +(l=mxResources.get("trello"),q.src=IMAGE_PATH+"/trello-logo-white.svg");b=document.createElement("p");mxUtils.write(b,mxResources.get("authorizeThisAppIn",[l]));var p=document.createElement("input");p.setAttribute("type","checkbox");l=mxUtils.button(mxResources.get("authorize"),function(){e(p.checked)});l.insertBefore(q,l.firstChild);l.style.marginTop="6px";l.className="geBigButton";k.appendChild(f);k.appendChild(b);k.appendChild(l);a&&(a=document.createElement("p"),a.style.marginTop="20px",a.appendChild(p), +f=document.createElement("span"),mxUtils.write(f," "+mxResources.get("rememberMe")),a.appendChild(f),k.appendChild(a),p.checked=!0,p.defaultChecked=!0,mxEvent.addListener(f,"click",function(b){p.checked=!p.checked;mxEvent.consume(b)}));this.container=k},MoreShapesDialog=function(b,c,a){a=null!=a?a:b.sidebar.entries;var e=document.createElement("div"),k=[];if(null!=b.sidebar.customEntries)for(var f=0;f<b.sidebar.customEntries.length;f++){for(var l=b.sidebar.customEntries[f],q={title:b.getResource(l.title), +entries:[]},p=0;p<l.entries.length;p++){var u=l.entries[p];q.entries.push({id:u.id,title:b.getResource(u.title),desc:b.getResource(u.desc),image:u.preview})}k.push(q)}for(f=0;f<a.length;f++)if(null==b.sidebar.enabledLibraries)k.push(a[f]);else{q={title:a[f].title,entries:[]};for(p=0;p<a[f].entries.length;p++)0<=mxUtils.indexOf(b.sidebar.enabledLibraries,a[f].entries[p].id)&&q.entries.push(a[f].entries[p]);0<q.entries.length&&k.push(q)}a=k;if(c){p=document.createElement("div");p.className="geDialogTitle"; +mxUtils.write(p,mxResources.get("shapes"));p.style.position="absolute";p.style.top="0px";p.style.left="0px";p.style.lineHeight="40px";p.style.height="40px";p.style.right="0px";mxClient.IS_QUIRKS&&(p.style.width="718px");var d=document.createElement("div"),g=document.createElement("div");d.style.position="absolute";d.style.top="40px";d.style.left="0px";d.style.width="202px";d.style.bottom="60px";d.style.overflow="auto";mxClient.IS_QUIRKS&&(d.style.height="437px",d.style.marginTop="1px");g.style.position= +"absolute";g.style.left="202px";g.style.right="0px";g.style.top="40px";g.style.bottom="60px";g.style.overflow="auto";g.style.borderLeft="1px solid rgb(211, 211, 211)";g.style.textAlign="center";mxClient.IS_QUIRKS&&(g.style.width=parseInt(p.style.width)-202+"px",g.style.height=d.style.height,g.style.marginTop=d.style.marginTop);var m=null,v=[],t=document.createElement("div");t.style.position="relative";t.style.left="0px";t.style.right="0px";for(f=0;f<a.length;f++)(function(a){var c=t.cloneNode(!1); +c.style.fontWeight="bold";c.style.backgroundColor="dark"==uiTheme?"#505759":"#e5e5e5";c.style.padding="6px 0px 6px 20px";mxUtils.write(c,a.title);d.appendChild(c);for(var n=0;n<a.entries.length;n++)(function(a){var c=t.cloneNode(!1);c.style.cursor="pointer";c.style.padding="4px 0px 4px 20px";var x=document.createElement("input");x.setAttribute("type","checkbox");x.checked=b.sidebar.isEntryVisible(a.id);x.defaultChecked=x.checked;c.appendChild(x);mxUtils.write(c," "+a.title);d.appendChild(c);var e= +function(b){if(null==b||"INPUT"!=mxEvent.getSource(b).nodeName){g.style.textAlign="center";g.style.padding="0px";g.style.color="";g.innerHTML="";if(null!=a.desc){var d=document.createElement("pre");d.style.boxSizing="border-box";d.style.fontFamily="inherit";d.style.margin="20px";d.style.right="0px";d.style.textAlign="left";mxUtils.write(d,a.desc);g.appendChild(d)}null!=a.imageCallback?a.imageCallback(g):null!=a.image?g.innerHTML+='<img border="0" src="'+a.image+'"/>':null==a.desc&&(g.style.padding= +"20px",g.style.color="rgb(179, 179, 179)",mxUtils.write(g,mxResources.get("noPreview")));null!=m&&(m.style.backgroundColor="");m=c;m.style.backgroundColor="dark"==uiTheme?"#505759":"#ebf2f9";null!=b&&mxEvent.consume(b)}};mxEvent.addListener(c,"click",e);mxEvent.addListener(c,"dblclick",function(b){x.checked=!x.checked;mxEvent.consume(b)});v.push(function(){return x.checked?a.id:null});0==f&&0==n&&e()})(a.entries[n])})(a[f]);e.style.padding="30px";e.appendChild(p);e.appendChild(d);e.appendChild(g); +a=document.createElement("div");a.className="geDialogFooter";a.style.position="absolute";a.style.paddingRight="16px";a.style.color="gray";a.style.left="0px";a.style.right="0px";a.style.bottom="0px";a.style.height="60px";a.style.lineHeight="52px";mxClient.IS_QUIRKS&&(a.style.width=p.style.width,a.style.paddingTop="12px");var y=document.createElement("input");y.setAttribute("type","checkbox");if(isLocalStorage||mxClient.IS_CHROMEAPP)p=document.createElement("span"),p.style.paddingRight="20px",p.appendChild(y), +mxUtils.write(p," "+mxResources.get("rememberThisSetting")),y.checked=!0,y.defaultChecked=!0,mxEvent.addListener(p,"click",function(b){mxEvent.getSource(b)!=y&&(y.checked=!y.checked,mxEvent.consume(b))}),mxClient.IS_QUIRKS&&(p.style.position="relative",p.style.top="-6px"),a.appendChild(p);p=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});p.className="geBtn";c=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();for(var a=[],d=0;d<v.length;d++){var g=v[d].apply(this, +arguments);null!=g&&a.push(g)}b.sidebar.showEntries(a.join(";"),y.checked,!0)});c.className="geBtn gePrimaryBtn"}else{var B=document.createElement("table"),p=document.createElement("tbody");e.style.height="100%";e.style.overflow="auto";q=document.createElement("tr");B.style.width="100%";c=document.createElement("td");var k=document.createElement("td"),l=document.createElement("td"),n=mxUtils.bind(this,function(a,d,g){var c=document.createElement("input");c.type="checkbox";B.appendChild(c);c.checked= +b.sidebar.isEntryVisible(g);var m=document.createElement("span");mxUtils.write(m,d);d=document.createElement("div");d.style.display="block";d.appendChild(c);d.appendChild(m);mxEvent.addListener(m,"click",function(b){c.checked=!c.checked;mxEvent.consume(b)});a.appendChild(d);return function(){return c.checked?g:null}});q.appendChild(c);q.appendChild(k);q.appendChild(l);p.appendChild(q);B.appendChild(p);for(var v=[],x=0,f=0;f<a.length;f++)for(p=0;p<a[f].entries.length;p++)x++;for(var z=[c,k,l],A=0, +f=0;f<a.length;f++)(function(b){for(var a=0;a<b.entries.length;a++){var d=b.entries[a];v.push(n(z[Math.floor(A/(x/3))],d.title,d.id));A++}})(a[f]);e.appendChild(B);a=document.createElement("div");a.style.marginTop="18px";a.style.textAlign="center";y=document.createElement("input");isLocalStorage&&(y.setAttribute("type","checkbox"),y.checked=!0,y.defaultChecked=!0,a.appendChild(y),p=document.createElement("span"),mxUtils.write(p," "+mxResources.get("rememberThisSetting")),a.appendChild(p),mxEvent.addListener(p, +"click",function(b){y.checked=!y.checked;mxEvent.consume(b)}));e.appendChild(a);p=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});p.className="geBtn";c=mxUtils.button(mxResources.get("apply"),function(){for(var a=["search"],d=0;d<v.length;d++){var g=v[d].apply(this,arguments);null!=g&&a.push(g)}b.sidebar.showEntries(0<a.length?a.join(";"):"",y.checked);b.hideDialog()});c.className="geBtn gePrimaryBtn";a=document.createElement("div");a.style.marginTop="26px";a.style.textAlign= +"right"}b.editor.cancelFirst?(a.appendChild(p),a.appendChild(c)):(a.appendChild(c),a.appendChild(p));e.appendChild(a);this.container=e},PluginsDialog=function(b){function c(){if(0==k.length)e.innerHTML=mxUtils.htmlEntities(mxResources.get("noPlugins"));else{e.innerHTML="";for(var a=0;a<k.length;a++){var g=document.createElement("span");g.style.whiteSpace="nowrap";var m=document.createElement("span");m.className="geSprite geSprite-delete";m.style.position="relative";m.style.cursor="pointer";m.style.top= +"5px";m.style.marginRight="4px";m.style.display="inline-block";g.appendChild(m);mxUtils.write(g,k[a]);e.appendChild(g);mxUtils.br(e);mxEvent.addListener(m,"click",function(a){return function(){b.confirm(window.parent.mxResources.get("delete")+' "'+k[a]+'"?',function(){k.splice(a,1);c()})}}(a))}}}var a=document.createElement("div"),e=document.createElement("div");e.style.height="120px";e.style.overflow="auto";var k=mxSettings.getPlugins().slice();a.appendChild(e);c();var f=mxUtils.button(mxResources.get("add"), +function(){var a="",g=urlParams.p;if(null!=g&&0<g.length){for(var m=g.split(";"),g=0;g<m.length;g++){var e=App.pluginRegistry[m[g]];null!=e&&(a+=e+";")}";"==a.charAt(a.length-1)&&(a=a.substring(0,a.length-1))}a=new FilenameDialog(b,a,mxResources.get("add"),function(a){if(null!=a&&0<a.length){m=a.split(";");for(a=0;a<m.length;a++){var b=m[a],d=App.pluginRegistry[b];null!=d&&(b=d);0<b.length&&0>mxUtils.indexOf(k,b)&&k.push(b)}c()}},mxResources.get("enterValue")+" ("+mxResources.get("url")+")");b.showDialog(a.container, +300,80,!0,!0);a.init()});f.className="geBtn";var l=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});l.className="geBtn";var q=mxUtils.button(mxResources.get("apply"),function(){mxSettings.setPlugins(k);mxSettings.save();b.hideDialog();b.alert(mxResources.get("restartForChangeRequired"))});q.className="geBtn gePrimaryBtn";var p=mxUtils.button(mxResources.get("help"),function(){b.openLink("https://desk.draw.io/support/solutions/articles/16000056430")});p.className="geBtn";b.isOffline()&& +!mxClient.IS_CHROMEAPP&&(p.style.display="none");var u=document.createElement("div");u.style.marginTop="14px";u.style.textAlign="right";b.editor.cancelFirst?(u.appendChild(l),u.appendChild(p),u.appendChild(f),u.appendChild(q)):(u.appendChild(p),u.appendChild(f),u.appendChild(q),u.appendChild(l));a.appendChild(u);this.container=a},CropImageDialog=function(b,c,a){var e=document.createElement("div"),k=document.createElement("table"),f=document.createElement("tbody"),l=document.createElement("tr"),q= +document.createElement("td");q.style.whiteSpace="nowrap";q.setAttribute("colspan","2");mxUtils.write(q,mxResources.get("loading")+"...");l.appendChild(q);f.appendChild(l);var l=document.createElement("tr"),p=document.createElement("td"),u=document.createElement("td");k.style.paddingLeft="6px";mxUtils.write(p,mxResources.get("left")+":");var d=document.createElement("input");d.setAttribute("type","text");d.style.width="100px";d.value="0";this.init=function(){d.focus();d.select()};u.appendChild(d); +l.appendChild(p);l.appendChild(u);f.appendChild(l);l=document.createElement("tr");p=document.createElement("td");u=document.createElement("td");mxUtils.write(p,mxResources.get("top")+":");var g=document.createElement("input");g.setAttribute("type","text");g.style.width="100px";g.value="0";u.appendChild(g);l.appendChild(p);l.appendChild(u);f.appendChild(l);l=document.createElement("tr");p=document.createElement("td");u=document.createElement("td");mxUtils.write(p,mxResources.get("right")+":");var m= +document.createElement("input");m.setAttribute("type","text");m.style.width="100px";m.value="0";u.appendChild(m);l.appendChild(p);l.appendChild(u);f.appendChild(l);l=document.createElement("tr");p=document.createElement("td");u=document.createElement("td");mxUtils.write(p,mxResources.get("bottom")+":");var v=document.createElement("input");v.setAttribute("type","text");v.style.width="100px";v.value="0";u.appendChild(v);l.appendChild(p);l.appendChild(u);f.appendChild(l);l=document.createElement("tr"); +p=document.createElement("td");u=document.createElement("td");mxUtils.write(p,mxResources.get("circle")+":");l.appendChild(p);var t=document.createElement("input");t.setAttribute("type","checkbox");u.appendChild(t);l.appendChild(u);f.appendChild(l);k.appendChild(f);e.appendChild(k);var k=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()}),y=new Image,B=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();var c=document.createElement("canvas"),x=c.getContext("2d"),e=y.width, +A=y.height,f=parseInt(d.value),k=parseInt(g.value),e=Math.max(1,e-f-parseInt(m.value)),A=Math.max(1,A-k-parseInt(v.value));c.width=e;c.height=A;t.checked&&(x.fillStyle="#000000",x.arc(e/2,A/2,Math.min(e/2,A/2),0,2*Math.PI),x.fill(),x.globalCompositeOperation="source-in");x.drawImage(y,f,k,e,A,0,0,e,A);a(c.toDataURL())});B.setAttribute("disabled","disabled");y.onload=function(){B.removeAttribute("disabled");q.innerHTML="";mxUtils.write(q,mxResources.get("width")+": "+y.width+" "+mxResources.get("height")+ +": "+y.height)};y.src=c;mxEvent.addListener(e,"keypress",function(a){13==a.keyCode&&B.click()});c=document.createElement("div");c.style.marginTop="20px";c.style.textAlign="right";b.editor.cancelFirst?(c.appendChild(k),c.appendChild(B)):(c.appendChild(B),c.appendChild(k));e.appendChild(c);this.container=e},EditGeometryDialog=function(b,c){var a=b.editor.graph,e=1==c.length?a.getCellGeometry(c[0]):null,k=document.createElement("div"),f=document.createElement("table"),l=document.createElement("tbody"), +q=document.createElement("tr"),p=document.createElement("td"),u=document.createElement("td");f.style.paddingLeft="6px";mxUtils.write(p,mxResources.get("relative")+":");var d=document.createElement("input");d.setAttribute("type","checkbox");null!=e&&e.relative&&(d.setAttribute("checked","checked"),d.defaultChecked=!0);this.init=function(){d.focus()};u.appendChild(d);q.appendChild(p);q.appendChild(u);l.appendChild(q);q=document.createElement("tr");p=document.createElement("td");u=document.createElement("td"); +mxUtils.write(p,mxResources.get("left")+":");var g=document.createElement("input");g.setAttribute("type","text");g.style.width="100px";g.value=null!=e?e.x:"";u.appendChild(g);q.appendChild(p);q.appendChild(u);l.appendChild(q);q=document.createElement("tr");p=document.createElement("td");u=document.createElement("td");mxUtils.write(p,mxResources.get("top")+":");var m=document.createElement("input");m.setAttribute("type","text");m.style.width="100px";m.value=null!=e?e.y:"";u.appendChild(m);q.appendChild(p); +q.appendChild(u);l.appendChild(q);q=document.createElement("tr");p=document.createElement("td");u=document.createElement("td");mxUtils.write(p,mxResources.get("dx")+":");var v=document.createElement("input");v.setAttribute("type","text");v.style.width="100px";v.value=null!=e&&null!=e.offset?e.offset.x:"";u.appendChild(v);q.appendChild(p);q.appendChild(u);l.appendChild(q);q=document.createElement("tr");p=document.createElement("td");u=document.createElement("td");mxUtils.write(p,mxResources.get("dy")+ +":");var t=document.createElement("input");t.setAttribute("type","text");t.style.width="100px";t.value=null!=e&&null!=e.offset?e.offset.y:"";u.appendChild(t);q.appendChild(p);q.appendChild(u);l.appendChild(q);q=document.createElement("tr");p=document.createElement("td");u=document.createElement("td");mxUtils.write(p,mxResources.get("width")+":");var y=document.createElement("input");y.setAttribute("type","text");y.style.width="100px";y.value=null!=e?e.width:"";u.appendChild(y);q.appendChild(p);q.appendChild(u); +l.appendChild(q);q=document.createElement("tr");p=document.createElement("td");u=document.createElement("td");mxUtils.write(p,mxResources.get("height")+":");var B=document.createElement("input");B.setAttribute("type","text");B.style.width="100px";B.value=null!=e?e.height:"";u.appendChild(B);q.appendChild(p);q.appendChild(u);l.appendChild(q);q=document.createElement("tr");p=document.createElement("td");u=document.createElement("td");mxUtils.write(p,mxResources.get("rotation")+":");var n=document.createElement("input"); +n.setAttribute("type","text");n.style.width="100px";n.value=1==c.length?mxUtils.getValue(a.getCellStyle(c[0]),mxConstants.STYLE_ROTATION,0):"";u.appendChild(n);q.appendChild(p);q.appendChild(u);l.appendChild(q);f.appendChild(l);k.appendChild(f);e=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});e.className="geBtn";var x=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();a.getModel().beginUpdate();try{for(var x=0;x<c.length;x++){var e=a.getCellGeometry(c[x]);null!= +e&&(e=e.clone(),a.isCellMovable(c[x])&&(e.relative=d.checked,0<mxUtils.trim(g.value).length&&(e.x=Number(g.value)),0<mxUtils.trim(m.value).length&&(e.y=Number(m.value)),0<mxUtils.trim(v.value).length&&(null==e.offset&&(e.offset=new mxPoint),e.offset.x=Number(v.value)),0<mxUtils.trim(t.value).length&&(null==e.offset&&(e.offset=new mxPoint),e.offset.y=Number(t.value))),a.isCellResizable(c[x])&&(0<mxUtils.trim(y.value).length&&(e.width=Number(y.value)),0<mxUtils.trim(B.value).length&&(e.height=Number(B.value))), +a.getModel().setGeometry(c[x],e));0<mxUtils.trim(n.value).length&&a.setCellStyles(mxConstants.STYLE_ROTATION,Number(n.value),[c[x]])}}finally{a.getModel().endUpdate()}});x.className="geBtn gePrimaryBtn";mxEvent.addListener(k,"keypress",function(a){13==a.keyCode&&x.click()});f=document.createElement("div");f.style.marginTop="20px";f.style.textAlign="right";b.editor.cancelFirst?(f.appendChild(e),f.appendChild(x)):(f.appendChild(x),f.appendChild(e));k.appendChild(f);this.container=k},LibraryDialog=function(b, +c,a,e,k,f){function l(a){for(a=document.elementFromPoint(a.clientX,a.clientY);null!=a&&a.parentNode!=v;)a=a.parentNode;var b=null;if(null!=a)for(var d=v.firstChild,b=0;null!=d&&d!=a;)d=d.nextSibling,b++;return b}function q(a,g,c,m,n,e,f,k,F){try{if(null==g||"image/"==g.substring(0,6))if(null==a&&null!=f||null==y[a]){var E=function(){D.innerHTML="";D.style.cursor="pointer";D.style.whiteSpace="nowrap";D.style.textOverflow="ellipsis";mxUtils.write(D,null!=J.title&&0<J.title.length?J.title:mxResources.get("untitled")); +D.style.color=null==J.title||0==J.title.length?"#d0d0d0":""};v.style.backgroundImage="";t.style.display="none";var p=n,u=e;if(n>b.maxImageSize||e>b.maxImageSize){var C=Math.min(1,Math.min(b.maxImageSize/Math.max(1,n)),b.maxImageSize/Math.max(1,e));n*=C;e*=C}p>u?(u=Math.round(100*u/p),p=100):(p=Math.round(100*p/u),u=100);var G=document.createElement("div");G.setAttribute("draggable","true");G.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";G.style.position="relative";G.style.cursor="move"; +mxUtils.setPrefixedStyle(G.style,"transition","transform .1s ease-in-out");if(null!=a){var I=document.createElement("img");I.setAttribute("src",z.convert(a));I.style.width=p+"px";I.style.height=u+"px";I.style.margin="10px";I.style.paddingBottom=Math.floor((100-u)/2)+"px";I.style.paddingLeft=Math.floor((100-p)/2)+"px";G.appendChild(I)}else if(null!=f){var M=b.stringToCells(b.editor.graph.decompress(f.xml));0<M.length&&(b.sidebar.createThumb(M,100,100,G,null,!0,!1),G.firstChild.style.display=mxClient.IS_QUIRKS? +"inline":"inline-block",G.firstChild.style.cursor="")}var H=document.createElement("img");H.setAttribute("src",Editor.closeImage);H.setAttribute("border","0");H.setAttribute("title",mxResources.get("delete"));H.setAttribute("align","top");H.style.paddingTop="4px";H.style.position="absolute";H.style.marginLeft="-12px";H.style.zIndex="1";H.style.cursor="pointer";mxEvent.addListener(H,"dragstart",function(a){mxEvent.consume(a)});(function(a,b,g){mxEvent.addListener(H,"click",function(c){y[b]=null;for(var m= +0;m<d.length;m++)if(null!=d[m].data&&d[m].data==b||null!=d[m].xml&&null!=g&&d[m].xml==g.xml){d.splice(m,1);break}G.parentNode.removeChild(a);0==d.length&&(v.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')",t.style.display="");mxEvent.consume(c)});mxEvent.addListener(H,"dblclick",function(a){mxEvent.consume(a)})})(G,a,f);G.appendChild(H);G.style.marginBottom="30px";var D=document.createElement("div");D.style.position="absolute";D.style.boxSizing="border-box";D.style.bottom="-18px";D.style.left= +"10px";D.style.right="10px";D.style.backgroundColor="#ffffff";D.style.overflow="hidden";D.style.textAlign="center";var J=null;null!=a?(J={data:a,w:n,h:e,title:F},null!=k&&(J.aspect=k),y[a]=I,d.push(J)):null!=f&&(f.aspect="fixed",d.push(f),J=f);mxEvent.addListener(D,"keydown",function(a){13==a.keyCode&&null!=x&&(x(),x=null,mxEvent.consume(a))});E();G.appendChild(D);mxEvent.addListener(D,"mousedown",function(a){"true"!=D.getAttribute("contentEditable")&&mxEvent.consume(a)});M=function(a){if(mxClient.IS_IOS|| +mxClient.IS_QUIRKS||mxClient.IS_FF||!(null==document.documentMode||9<document.documentMode)){var d=new FilenameDialog(b,J.title||"",mxResources.get("ok"),function(a){null!=a&&(J.title=a,E())},mxResources.get("enterValue"));b.showDialog(d.container,300,80,!0,!0);d.init();mxEvent.consume(a)}else if("true"!=D.getAttribute("contentEditable")){null!=x&&(x(),x=null);if(null==J.title||0==J.title.length)D.innerHTML="";D.style.textOverflow="";D.style.whiteSpace="";D.style.cursor="text";D.style.color="";D.setAttribute("contentEditable", +"true");D.focus();document.execCommand("selectAll",!1,null);x=function(){D.removeAttribute("contentEditable");D.style.cursor="pointer";J.title=D.innerHTML;E()};mxEvent.consume(a)}};mxEvent.addListener(D,"click",M);mxEvent.addListener(G,"dblclick",M);v.appendChild(G);mxEvent.addListener(G,"dragstart",function(b){null==a&&null!=f&&(H.style.visibility="hidden",D.style.visibility="hidden");mxClient.IS_FF&&null!=f.xml&&b.dataTransfer.setData("Text",f.xml);B=l(b);mxClient.IS_GC&&(G.style.opacity="0.9"); +window.setTimeout(function(){mxUtils.setPrefixedStyle(G.style,"transform","scale(0.5,0.5)");mxUtils.setOpacity(G,30);H.style.visibility="";D.style.visibility=""},0)});mxEvent.addListener(G,"dragend",function(a){"hidden"==H.style.visibility&&(H.style.visibility="",D.style.visibility="");B=null;mxUtils.setOpacity(G,100);mxUtils.setPrefixedStyle(G.style,"transform",null)})}else A||(A=!0,b.handleError({message:mxResources.get("fileExists")}));else{n=!1;try{if(b.spinner.stop(),p=mxUtils.parseXml(a),"mxlibrary"== +p.documentElement.nodeName){u=JSON.parse(mxUtils.getTextContent(p.documentElement));if(null!=u&&0<u.length)for(var O=0;O<u.length;O++)null!=u[O].xml?q(null,null,0,0,0,0,u[O]):q(u[O].data,null,0,0,u[O].w,u[O].h,null,"fixed",u[O].title);n=!0}else if("mxfile"==p.documentElement.nodeName){for(var K=p.documentElement.getElementsByTagName("diagram"),O=0;O<K.length;O++){var u=mxUtils.getTextContent(K[O]),M=b.stringToCells(b.editor.graph.decompress(u)),S=b.editor.graph.getBoundingBoxFromGeometry(M);q(null, +null,0,0,0,0,{xml:u,w:S.width,h:S.height})}n=!0}}catch(Z){}n||(b.spinner.stop(),b.handleError({message:mxResources.get("errorLoadingFile")}))}}catch(Z){}return null}function p(a){a.dataTransfer.dropEffect=null!=B?"move":"copy";a.stopPropagation();a.preventDefault()}function u(a){a.stopPropagation();a.preventDefault();A=!1;n=l(a);if(null!=B)null!=n&&n<v.children.length?(d.splice(n>B?n-1:n,0,d.splice(B,1)[0]),v.insertBefore(v.children[B],v.children[n])):(d.push(d.splice(B,1)[0]),v.appendChild(v.children[B])); +else if(0<a.dataTransfer.files.length)b.importFiles(a.dataTransfer.files,0,0,b.maxImageSize,F(a));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")){var g=decodeURIComponent(a.dataTransfer.getData("text/uri-list"));(/(\.jpg)($|\?)/i.test(g)||/(\.png)($|\?)/i.test(g)||/(\.gif)($|\?)/i.test(g)||/(\.svg)($|\?)/i.test(g))&&b.loadImage(g,function(a){q(g,null,0,0,a.width,a.height);v.scrollTop=v.scrollHeight})}a.stopPropagation();a.preventDefault()}var d=[];a=document.createElement("div"); +a.style.height="100%";var g=document.createElement("div");g.style.whiteSpace="nowrap";g.style.height="40px";a.appendChild(g);mxUtils.write(g,mxResources.get("filename")+":");null==c&&(c=b.defaultLibraryName+".xml");var m=document.createElement("input");m.setAttribute("value",c);m.style.marginRight="20px";m.style.marginLeft="10px";m.style.width="500px";null==k||k.isRenamable()||m.setAttribute("disabled","true");this.init=function(){if(null==k||k.isRenamable())m.focus(),mxClient.IS_GC||mxClient.IS_FF|| +5<=document.documentMode||mxClient.IS_QUIRKS?m.select():document.execCommand("selectAll",!1,null)};g.appendChild(m);var v=document.createElement("div");v.style.borderWidth="1px 0px 1px 0px";v.style.borderColor="#d3d3d3";v.style.borderStyle="solid";v.style.marginTop="6px";v.style.overflow="auto";v.style.height="340px";v.style.backgroundPosition="center center";v.style.backgroundRepeat="no-repeat";0==d.length&&Graph.fileSupport&&(v.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')");var t= +document.createElement("div");t.style.position="absolute";t.style.width="640px";t.style.top="260px";t.style.textAlign="center";t.style.fontSize="22px";t.style.color="#a0c3ff";mxUtils.write(t,mxResources.get("dragImagesHere"));a.appendChild(t);var y={},B=null,n=null,x=null;c=function(a){"true"!=mxEvent.getSource(a).getAttribute("contentEditable")&&null!=x&&(x(),x=null,mxEvent.consume(a))};mxEvent.addListener(v,"mousedown",c);mxEvent.addListener(v,"pointerdown",c);mxEvent.addListener(v,"touchstart", +c);var z=new mxUrlConverter,A=!1;if(null!=e)for(c=0;c<e.length;c++)g=e[c],q(g.data,null,0,0,g.w,g.h,g,g.aspect,g.title);mxEvent.addListener(v,"dragleave",function(a){t.style.cursor="";for(var b=mxEvent.getSource(a);null!=b;){if(b==v||b==t){a.stopPropagation();a.preventDefault();break}b=b.parentNode}});var F=function(a){return function(d,g,c,m,n,e,x,t,z){null!=z&&(/(\.vsdx)($|\?)/i.test(z.name)||/(\.vssx)($|\?)/i.test(z.name))?b.importVisio(z,mxUtils.bind(this,function(d){b.spinner.stop();q(d,g,c, +m,n,e,x,"fixed",mxEvent.isAltDown(a)?null:x.substring(0,x.lastIndexOf(".")).replace(/_/g," "))})):null!=z&&!b.isOffline()&&(new XMLHttpRequest).upload&&b.isRemoteFileFormat(d,z.name)?b.parseFile(z,mxUtils.bind(this,function(d){4==d.readyState&&(b.spinner.stop(),200<=d.status&&299>=d.status&&(q(d.responseText,g,c,m,n,e,x,"fixed",mxEvent.isAltDown(a)?null:x.substring(0,x.lastIndexOf(".")).replace(/_/g," ")),v.scrollTop=v.scrollHeight))})):(q(d,g,c,m,n,e,x,"fixed",mxEvent.isAltDown(a)?null:x.substring(0, +x.lastIndexOf(".")).replace(/_/g," ")),v.scrollTop=v.scrollHeight)}};mxEvent.addListener(v,"dragover",p);mxEvent.addListener(v,"drop",u);mxEvent.addListener(t,"dragover",p);mxEvent.addListener(t,"drop",u);a.appendChild(v);e=document.createElement("div");e.style.textAlign="right";e.style.marginTop="20px";c=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog(!0)});c.setAttribute("id","btnCancel");c.className="geBtn";b.editor.cancelFirst&&e.appendChild(c);g=mxUtils.button(mxResources.get("export"), +function(){var a=b.createLibraryDataFromImages(d),g=m.value;/(\.xml)$/i.test(g)||(g+=".xml");b.isLocalFileSave()?b.saveLocalFile(a,g,"text/xml",null,null,!0):(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(g)+"&format=xml&xml="+encodeURIComponent(a))).simulate(document,"_blank")});g.setAttribute("id","btnDownload");g.className="geBtn";e.appendChild(g);var E=document.createElement("input");E.setAttribute("multiple","multiple");E.setAttribute("type","file");null==document.documentMode&&(mxEvent.addListener(E, +"change",function(a){A=!1;b.importFiles(E.files,0,0,b.maxImageSize,function(b,d,g,c,m,n,e,x,t){F(a)(b,d,g,c,m,n,e,x,t);E.value=""});v.scrollTop=v.scrollHeight}),g=mxUtils.button(mxResources.get("import"),function(){null!=x&&(x(),x=null);E.click()}),g.setAttribute("id","btnAddImage"),g.className="geBtn",e.appendChild(g));g=mxUtils.button(mxResources.get("addImageUrl"),function(){null!=x&&(x(),x=null);b.showImageDialog(mxResources.get("addImageUrl"),"",function(a,b,d){A=!1;if(null!=a){if("data:image/"== +a.substring(0,11)){var g=a.indexOf(",");0<g&&(a=a.substring(0,g)+";base64,"+a.substring(g+1))}q(a,null,0,0,b,d);v.scrollTop=v.scrollHeight}})});g.setAttribute("id","btnAddImageUrl");g.className="geBtn";e.appendChild(g);this.saveBtnClickHandler=function(a,d,g,c){b.saveLibrary(a,d,g,c)};g=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(){null!=x&&(x(),x=null);this.saveBtnClickHandler(m.value,d,k,f)}));g.setAttribute("id","btnSave");g.className="geBtn gePrimaryBtn";e.appendChild(g); +b.editor.cancelFirst||e.appendChild(c);a.appendChild(e);this.container=a},EditShapeDialog=function(b,c,a,e,k){e=null!=e?e:300;k=null!=k?k:120;var f,l,q=document.createElement("table"),p=document.createElement("tbody");q.style.cellPadding="4px";f=document.createElement("tr");l=document.createElement("td");l.setAttribute("colspan","2");l.style.fontSize="10pt";mxUtils.write(l,a);f.appendChild(l);p.appendChild(f);f=document.createElement("tr");l=document.createElement("td");var u=document.createElement("textarea"); +u.style.outline="none";u.style.resize="none";u.style.width=e-200+"px";u.style.height=k+"px";this.textarea=u;this.init=function(){u.focus();u.scrollTop=0};l.appendChild(u);f.appendChild(l);l=document.createElement("td");a=document.createElement("div");a.style.position="relative";a.style.border="1px solid gray";a.style.top="6px";a.style.width="200px";a.style.height=k+4+"px";a.style.overflow="hidden";a.style.marginBottom="16px";mxEvent.disableContextMenu(a);l.appendChild(a);var d=new Graph(a);d.setEnabled(!1); +var g=b.editor.graph.cloneCell(c);d.addCells([g]);a=d.view.getState(g);var m="";null!=a.shape&&null!=a.shape.stencil&&(m=mxUtils.getPrettyXml(a.shape.stencil.desc));mxUtils.write(u,m||"");a=d.getGraphBounds();k=Math.min(160/a.width,(k-40)/a.height);d.view.scaleAndTranslate(k,20/k-a.x,20/k-a.y);f.appendChild(l);p.appendChild(f);f=document.createElement("tr");l=document.createElement("td");l.setAttribute("colspan","2");l.style.paddingTop="2px";l.style.whiteSpace="nowrap";l.setAttribute("align","right"); +k=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});k.className="geBtn";b.editor.cancelFirst&&l.appendChild(k);b.isOffline()||(a=mxUtils.button(mxResources.get("help"),function(){b.openLink("https://desk.draw.io/support/solutions/articles/16000052874")}),a.className="geBtn",l.appendChild(a));var v=function(a,d,g){var c=u.value,e=mxUtils.parseXml(c),c=mxUtils.getPrettyXml(e.documentElement),e=e.documentElement.getElementsByTagName("parsererror");if(null!=e&&0<e.length)b.showError(mxResources.get("error"), +mxResources.get("containsValidationErrors"),mxResources.get("ok"));else if(g&&b.hideDialog(),e=!a.model.contains(d),!g||e||c!=m){c=b.editor.graph.compress(c);a.getModel().beginUpdate();try{if(e){var t=b.editor.graph.getInsertPoint();d.geometry.x=t.x;d.geometry.y=t.y;a.addCell(d)}a.setCellStyles(mxConstants.STYLE_SHAPE,"stencil("+c+")",[d])}catch(A){throw A;}finally{a.getModel().endUpdate()}e&&a.setSelectionCell(d)}};a=mxUtils.button(mxResources.get("preview"),function(){v(d,g,!1)});a.className="geBtn"; +l.appendChild(a);a=mxUtils.button(mxResources.get("apply"),function(){v(b.editor.graph,c,!0)});a.className="geBtn gePrimaryBtn";l.appendChild(a);b.editor.cancelFirst||l.appendChild(k);f.appendChild(l);p.appendChild(f);q.appendChild(p);this.container=q},CustomDialog=function(b,c,a,e,k,f,l,q){var p=document.createElement("div");p.appendChild(c);c=document.createElement("div");c.style.marginTop="16px";c.style.textAlign="center";null!=l&&c.appendChild(l);l=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog(); +null!=e&&e()});l.className="geBtn";q&&(l.style.display="none");b.editor.cancelFirst&&c.appendChild(l);b.isOffline()||null==f||(q=mxUtils.button(mxResources.get("help"),function(){b.openLink(f)}),q.className="geBtn",c.appendChild(q));k=mxUtils.button(k||mxResources.get("ok"),function(){b.hideDialog();null!=a&&a()});c.appendChild(k);k.className="geBtn gePrimaryBtn";b.editor.cancelFirst||c.appendChild(l);p.appendChild(c);this.cancelBtn=l;this.okButton=k;this.container=p},TemplatesDialog=function(){var b= '<div class="geTempDlgHeader"><img src="/images/draw.io-logo.svg" class="geTempDlgHeaderLogo"><input type="search" class="geTempDlgSearchBox" placeholder="'+mxResources.get("search",null,"Search")+'"></div><div class="geTemplatesList"><div class="geTempDlgNewDiagramlbl">'+mxResources.get("newDiagram",null,"New Diagram")+'</div><div class="geTempDlgHLine"></div><div class="geTemplatesLbl">'+mxResources.get("templates",null,"Templates")+'</div></div><div class="geTempDlgContent"><div class="geTempDlgNewDiagramCat"><div class="geTempDlgNewDiagramCatLbl">'+ mxResources.get("newDiagram",null,"New Diagram")+'</div><div class="geTempDlgNewDiagramCatList"></div><div class="geTempDlgNewDiagramCatFooter"><div class="geTempDlgShowAllBtn">'+mxResources.get("showAll",null,"+ Show all")+'</div></div></div><div class="geTempDlgDiagramsList"><div class="geTempDlgDiagramsListHeader"><div class="geTempDlgDiagramsListTitle"></div><div class="geTempDlgDiagramsListBtns"><div class="geTempDlgRadioBtn geTempDlgRadioBtnLarge" data-id="myDiagramsBtn"><img src="/images/my-diagrams.svg" class="geTempDlgMyDiagramsBtnImg"> <span>'+ mxResources.get("myDiagrams",null,"My diagrams")+'</span></div><div class="geTempDlgRadioBtn geTempDlgRadioBtnLarge geTempDlgRadioBtnActive" data-id="allDiagramsBtn"><img src="/images/all-diagrams-sel.svg" class="geTempDlgAllDiagramsBtnImg"> <span>'+mxResources.get("allDiagrams",null,"All diagrams")+'</span></div><div class="geTempDlgSpacer"> </div><div class="geTempDlgRadioBtn geTempDlgRadioBtnSmall geTempDlgRadioBtnActive" data-id="tilesBtn"><img src="/images/tiles-sel.svg" class="geTempDlgTilesBtnImg"></div><div class="geTempDlgRadioBtn geTempDlgRadioBtnSmall" data-id="listBtn"><img src="/images/list.svg" class="geTempDlgListBtnImg"></div></div></div><div class="geTempDlgDiagramsTiles"></div></div></div><br style="clear:both;"/><div class="geTempDlgFooter"><span class="geTempDlgLinkToDiagram geTempDlgLinkToDiagramHint">🛈 '+ -mxResources.get("linkToDiagramHint",null,"Add a link to this diagram. The diagram can only be edited from the page that owns it.")+'</span><button class="geTempDlgLinkToDiagram geTempDlgLinkToDiagramBtn">'+mxResources.get("linkToDiagram",null,"Link to Diagram")+'</button><div class="geTempDlgCreateBtn">'+mxResources.get("create",null,"Create")+'</div><div class="geTempDlgCancelBtn">'+mxResources.get("cancel",null,"Cancel")+"</div></div>",c=document.createElement("div");c.innerHTML=a;c.className="geTemplateDlg"; -var a=window.innerWidth,b=window.innerHeight,f=987,k=712;.9*a<f&&(f=Math.max(.9*a,600),c.style.width=f+"px");.9*b<k&&(k=Math.max(.9*b,300),c.style.height=k+"px");this.width=f;this.height=k;this.container=c}; -TemplatesDialog.prototype.init=function(a,c,b,f,k,h,l,t,p,d){function g(){null!=D&&(D.style.fontWeight="normal",D.style.textDecoration="none",D=null)}function n(a,b,d,g,c,n,m){if(-1<a.className.indexOf("geTempDlgRadioBtnActive"))return!1;a.className+=" geTempDlgRadioBtnActive";C.querySelector(".geTempDlgRadioBtn[data-id="+g+"]").className="geTempDlgRadioBtn "+(m?"geTempDlgRadioBtnLarge":"geTempDlgRadioBtnSmall");C.querySelector("."+b).src="/images/"+d+"-sel.svg";C.querySelector("."+c).src="/images/"+ -n+".svg";return!0}function q(a){function b(a){Z.removeChild(g);C.removeChild(d);Z.scrollTop=n}a=a.prevImgUrl||a.imgUrl||TEMPLATE_PATH+"/"+a.url.substring(0,a.url.length-4)+".png";var d=document.createElement("div");d.className="geTempDlgDialogMask";C.appendChild(d);var g=document.createElement("div");g.className="geTempDlgDiagramPreviewBox";var c=document.createElement("img");c.src=a;g.appendChild(c);a=document.createElement("img");a.src="/images/close.png";a.className="geTempDlgPreviewCloseBtn"; -a.setAttribute("title",mxResources.get("close"));g.appendChild(a);var n=Z.scrollTop;mxEvent.addListener(a,"click",b);mxEvent.addListener(d,"click",b);Z.appendChild(g);Z.scrollTop=0;g.style.lineHeight=g.clientHeight+"px"}function u(a,b,d){if(null!=E){for(var g=E.className.split(" "),c=0;c<g.length;c++)if(-1<g[c].indexOf("Active")){g.splice(c,1);break}E.className=g.join(" ")}null!=a?(E=a,E.className+=" "+b,I=d,N.className="geTempDlgCreateBtn"):(I=E=null,N.className="geTempDlgCreateBtn geTempDlgCreateBtnDisabled")} -function v(b){if(null!=I){var g=I;I=null;N.className="geTempDlgCreateBtn geTempDlgCreateBtnDisabled geTempDlgCreateBtnBusy";g.isExternal?(1==b?d(g.url,g,"nameInput.value"):p(g.url,g,"nameInput.value"),a.hideDialog(!0)):mxUtils.get(TEMPLATE_PATH+"/"+g.url,mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()&&(c(b.getText(),"nameInput.value"),a.hideDialog(!0))}))}}function w(a){a=a?"":"none";for(var b=C.querySelectorAll(".geTempDlgLinkToDiagram"),d=0;d<b.length;d++)b[d].style.display= -a}function y(a,b,d){function g(){N.innerHTML=b?mxUtils.htmlEntities(mxResources.get("create")):mxUtils.htmlEntities(mxResources.get("copy"));w(!b)}R.innerHTML="";u();M=a;var c=null;if(d){c=document.createElement("table");c.className="geTempDlgDiagramsListGrid";var n=document.createElement("tr"),m=document.createElement("th");m.style.width="50%";m.innerHTML=mxUtils.htmlEntities(mxResources.get("diagram",null,"Diagram"));n.appendChild(m);m=document.createElement("th");m.style.width="25%";m.innerHTML= -mxUtils.htmlEntities(mxResources.get("changedBy",null,"Changed By"));n.appendChild(m);m=document.createElement("th");m.style.width="25%";m.innerHTML=mxUtils.htmlEntities(mxResources.get("lastModifiedOn",null,"Last modified on"));n.appendChild(m);c.appendChild(n);R.appendChild(c)}for(n=0;n<a.length;n++){a[n].isExternal=!b;var f=a[n].url,m=mxUtils.htmlEntities(a[n].title),z=a[n].tooltip||a[n].title,h=a[n].imgUrl,k=mxUtils.htmlEntities(a[n].changedBy||""),x=mxUtils.htmlEntities(a[n].lastModifiedOn|| -"");h||(h=TEMPLATE_PATH+"/"+f.substring(0,f.length-4)+".png");f=d?50:15;null!=m&&m.length>f&&(m=m.substring(0,f)+"…");if(d){var F=document.createElement("tr"),h=document.createElement("td"),l=document.createElement("img");l.src="/images/icon-search.svg";l.className="geTempDlgDiagramListPreviewBtn";l.setAttribute("title",mxResources.get("preview"));h.appendChild(l);z=document.createElement("span");z.className="geTempDlgDiagramTitle";z.innerHTML=m;h.appendChild(z);F.appendChild(h);h=document.createElement("td"); -h.innerHTML=k;F.appendChild(h);h=document.createElement("td");h.innerHTML=x;F.appendChild(h);c.appendChild(F);null==E&&(g(),u(F,"geTempDlgDiagramsListGridActive",a[n]));(function(a,b){mxEvent.addListener(F,"click",function(){E!=b&&(g(),u(b,"geTempDlgDiagramsListGridActive",a))});mxEvent.addListener(F,"dblclick",v);mxEvent.addListener(l,"click",function(){q(a)})})(a[n],F)}else{var C=document.createElement("div");C.className="geTempDlgDiagramTile";C.setAttribute("title",z);null==E&&(g(),u(C,"geTempDlgDiagramTileActive", -a[n]));k=document.createElement("div");k.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgLoading";var y=document.createElement("img");y.style.display="none";(function(a,b){y.onload=function(){b.className="geTempDlgDiagramTileImg";a.style.display=""};y.onerror=function(){b.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgError"}})(y,k);y.src=h;k.appendChild(y);C.appendChild(k);k=document.createElement("div");k.className="geTempDlgDiagramTileLbl";k.innerHTML=null!=m?m:"";C.appendChild(k); -l=document.createElement("img");l.src="/images/icon-search.svg";l.className="geTempDlgDiagramPreviewBtn";l.setAttribute("title",mxResources.get("preview"));C.appendChild(l);(function(a,b){mxEvent.addListener(C,"click",function(){E!=b&&(g(),u(b,"geTempDlgDiagramTileActive",a))});mxEvent.addListener(C,"dblclick",v);mxEvent.addListener(l,"click",function(){q(a)})})(a[n],C);R.appendChild(C)}}}function m(a,b){Q.innerHTML="";u();for(var d=!b&&5<a.length?5:a.length,g=0;g<d;g++){var c=a[g];c.isCategory=!0; -var n=document.createElement("div"),m=mxResources.get(c.title);null==m&&(m=c.title.substring(0,1).toUpperCase()+c.title.substring(1));n.className="geTempDlgNewDiagramCatItem";n.setAttribute("title",m);m=mxUtils.htmlEntities(m);15<m.length&&(m=m.substring(0,15)+"…");null==E&&(N.innerHTML=mxUtils.htmlEntities(mxResources.get("create")),w(),u(n,"geTempDlgNewDiagramCatItemActive",c));var f=document.createElement("div");f.className="geTempDlgNewDiagramCatItemImg";var q=document.createElement("img"); -q.src=NEW_DIAGRAM_CATS_PATH+"/"+c.img;f.appendChild(q);n.appendChild(f);f=document.createElement("div");f.className="geTempDlgNewDiagramCatItemLbl";f.innerHTML=m;n.appendChild(f);Q.appendChild(n);(function(a,b){mxEvent.addListener(n,"click",function(){E!=b&&(N.innerHTML=mxUtils.htmlEntities(mxResources.get("create")),w(),u(b,"geTempDlgNewDiagramCatItemActive",a))});mxEvent.addListener(n,"dblclick",v)})(c,n)}T.style.display=5>a.length?"none":""}function x(a){var b=C.querySelector(".geTemplatesList"), -d;for(d in a){var g=document.createElement("div"),c=mxResources.get(d),n=a[d];null==c&&(c=d.substring(0,1).toUpperCase()+d.substring(1));g.className="geTemplateCatLink";g.setAttribute("title",c+" ("+n.length+")");c=mxUtils.htmlEntities(c);15<c.length&&(c=c.substring(0,15)+"…");g.innerHTML=c+" ("+n.length+")";b.appendChild(g);(function(b,d,c){mxEvent.addListener(g,"click",function(){D!=c&&(null!=D?(D.style.fontWeight="normal",D.style.textDecoration="none"):(O.style.display="none",aa.style.minHeight= -"100%"),D=c,D.style.fontWeight="bold",D.style.textDecoration="underline",Z.scrollTop=0,B&&(H=!0),V.innerHTML=d,Y.style.display="none",y(a[b],!0))})})(d,c,g)}}function z(a){l&&(Z.scrollTop=0,R.innerHTML="",X.spin(R),H=!1,B=!0,V.innerHTML=mxUtils.htmlEntities(mxResources.get("recentDiag",null,"Recent Diagrams")),L=null,l(ca,a?null:h))}function F(a){g();Z.scrollTop=0;R.innerHTML="";X.spin(R);H=!1;B=!0;W=null;V.innerHTML=mxUtils.htmlEntities(mxResources.get("searchResults",null,"Search Results"))+' "'+ -mxUtils.htmlEntities(a)+'"';t(a,ca,G?null:h);L=a}f=null!=f?f:TEMPLATE_PATH+"/index.xml";k=null!=k?k:NEW_DIAGRAM_CATS_PATH+"/index.xml";var C=this.container,B=!1,H=!1,D=null,E=null,I=null,A=!1,G=!0,J=!1,M=[],L,T=C.querySelector(".geTempDlgShowAllBtn"),R=C.querySelector(".geTempDlgDiagramsTiles"),V=C.querySelector(".geTempDlgDiagramsListTitle"),Y=C.querySelector(".geTempDlgDiagramsListBtns"),Z=C.querySelector(".geTempDlgContent"),aa=C.querySelector(".geTempDlgDiagramsList"),O=C.querySelector(".geTempDlgNewDiagramCat"), -Q=C.querySelector(".geTempDlgNewDiagramCatList"),N=C.querySelector(".geTempDlgCreateBtn"),X=new Spinner({lines:12,length:10,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"50px",zIndex:2E9});mxEvent.addListener(C.querySelector(".geTempDlgNewDiagramlbl"),"click",function(){g();O.style.display="";aa.style.minHeight="calc(100% - 280px)";z(G)});mxEvent.addListener(C.querySelector(".geTempDlgRadioBtn[data-id=allDiagramsBtn]"),"click",function(){n(this,"geTempDlgAllDiagramsBtnImg", -"all-diagrams","myDiagramsBtn","geTempDlgMyDiagramsBtnImg","my-diagrams",!0)&&(G=!0,null==L?z(G):F(L))});mxEvent.addListener(C.querySelector(".geTempDlgRadioBtn[data-id=myDiagramsBtn]"),"click",function(){n(this,"geTempDlgMyDiagramsBtnImg","my-diagrams","allDiagramsBtn","geTempDlgAllDiagramsBtnImg","all-diagrams",!0)&&(G=!1,null==L?z(G):F(L))});mxEvent.addListener(C.querySelector(".geTempDlgRadioBtn[data-id=listBtn]"),"click",function(){n(this,"geTempDlgListBtnImg","list","tilesBtn","geTempDlgTilesBtnImg", -"tiles",!1)&&(J=!0,y(M,!1,J))});mxEvent.addListener(C.querySelector(".geTempDlgRadioBtn[data-id=tilesBtn]"),"click",function(){n(this,"geTempDlgTilesBtnImg","tiles","listBtn","geTempDlgListBtnImg","list",!1)&&(J=!1,y(M,!1,J))});mxEvent.addListener(T,"click",function(){A?(O.style.height="280px",Q.style.height="190px",T.innerHTML=mxUtils.htmlEntities(mxResources.get("showAll",null,"+ Show all")),m(ba)):(O.style.height="440px",Q.style.height="355px",T.innerHTML=mxUtils.htmlEntities(mxResources.get("showLess", -null,"- Show less")),m(ba,!0));A=!A});var P=!1,U=!1,S={},ba=[],K=1;mxUtils.get(f,function(a){if(!P){P=!0;for(a=a.getXml().documentElement.firstChild;null!=a;){if("undefined"!==typeof a.getAttribute){var b=a.getAttribute("url");if(null!=b){var d=b.indexOf("/"),b=b.substring(0,d),d=S[b];null==d&&(K++,d=[],S[b]=d);d.push({url:a.getAttribute("url"),libs:a.getAttribute("libs"),title:a.getAttribute("title"),tooltip:a.getAttribute("url"),imgUrl:a.getAttribute("imgUrl")})}}a=a.nextSibling}x(S)}});mxUtils.get(k, -function(a){if(!U){U=!0;for(a=a.getXml().documentElement.firstChild;null!=a;)"undefined"!==typeof a.getAttribute&&null!=a.getAttribute("title")&&ba.push({img:a.getAttribute("img"),libs:a.getAttribute("libs"),title:a.getAttribute("title")}),a=a.nextSibling;m(ba)}});var ca=function(a,b){Y.style.display="";X.stop();B=!1;H?H=!1:b?R.innerHTML=b:0==a.length?R.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams",null,"No Diagrams Found")):y(a,!1,J)};z(G);var W=null;t&&mxEvent.addListener(C.querySelector(".geTempDlgSearchBox"), -"keyup",function(a){var b=this;null!=W&&clearTimeout(W);13==a.keyCode?F(b.value):W=setTimeout(function(){F(b.value)},500)});mxEvent.addListener(N,"click",v);mxEvent.addListener(C.querySelector(".geTempDlgLinkToDiagramBtn"),"click",function(a){v(!0)});mxEvent.addListener(C.querySelector(".geTempDlgCancelBtn"),"click",function(){null!=b&&b();a.hideDialog(!0)})}; -var BtnDialog=function(a,c,b,f){var k=document.createElement("div");k.style.textAlign="center";var h=document.createElement("p");h.style.fontSize="16pt";h.style.padding="0px";h.style.margin="0px";h.style.color="gray";mxUtils.write(h,mxResources.get("done"));var l="Unknown",t=document.createElement("img");t.setAttribute("border","0");t.setAttribute("align","absmiddle");t.style.marginRight="10px";c==a.drive?(l=mxResources.get("googleDrive"),t.src=IMAGE_PATH+"/google-drive-logo-white.svg"):c==a.dropbox? -(l=mxResources.get("dropbox"),t.src=IMAGE_PATH+"/dropbox-logo-white.svg"):c==a.oneDrive?(l=mxResources.get("oneDrive"),t.src=IMAGE_PATH+"/onedrive-logo-white.svg"):c==a.gitHub?(l=mxResources.get("github"),t.src=IMAGE_PATH+"/github-logo-white.svg"):c==a.trello&&(l=mxResources.get("trello"),t.src=IMAGE_PATH+"/trello-logo-white.svg");a=document.createElement("p");mxUtils.write(a,mxResources.get("authorizedIn",[l],"You are now authorized in {1}"));b=mxUtils.button(b,f);b.insertBefore(t,b.firstChild); -b.style.marginTop="6px";b.className="geBigButton";k.appendChild(h);k.appendChild(a);k.appendChild(b);this.container=k};(function(){Editor.prototype.appName="draw.io";Editor.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAMAAADzN3VRAAAApVBMVEUAAAD////k5OT///8AAAB1dXXMzMz9/f39/f37+/v5+fn+/v7///9iYmJaWlqFhYWnp6ejo6OHh4f////////////////7+/v5+fnx8fH///8AAAD///8bGxv7+/v5+fkoKCghISFDQ0MYGBjh4eHY2Njb29tQUFBvb29HR0c/Pz82NjYrKyu/v78SEhLu7u7s7OzV1dVVVVU7OzsVFRXAv78QEBBzqehMAAAAG3RSTlMAA/7p/vz5xZlrTiPL/v78+/v7+OXd2TYQDs8L70ZbAAABKUlEQVQoz3VS13LCMBBUXHChd8iukDslQChJ/v/TchaG4cXS+OSb1c7trU7V60OpdRz2ZtNZL4zXNlcN8BEtSG6+NxIXkeRPoBuQ1cjvZ31/VJFB10ISli6diYfH8iYO3WUNCcNlB0gTrXOtkxTo0O1aKKiBBMhhv2MNBQKoiA5wxlZo0JDzD3AYKbWacyj3fs01wxey0pyEP+R8pWKWXoqtIZ0DDg5pbki9krEKOa6LVDQsdoXEsi46Zqh69KFz7B1u7Hb2yDV8firXDKBlZ4UFiswKGRhXTS93/ECK7yxnJ3+S3y/ThpO+cfSD017nqa18aasabU0/t7d+tk0/1oMEJ1NaD67iwdF68OabFSLn+eHb0+vjy+uk8br9fdrftH0O2menfd7+AQfYM/lNjoDHAAAAAElFTkSuQmCC": +mxResources.get("linkToDiagramHint",null,"Add a link to this diagram. The diagram can only be edited from the page that owns it.")+'</span><button class="geTempDlgLinkToDiagram geTempDlgLinkToDiagramBtn">'+mxResources.get("linkToDiagram",null,"Link to Diagram")+'</button><div class="geTempDlgCreateBtn">'+mxResources.get("create",null,"Create")+'</div><div class="geTempDlgCancelBtn">'+mxResources.get("cancel",null,"Cancel")+"</div></div>",c=document.createElement("div");c.innerHTML=b;c.className="geTemplateDlg"; +var b=window.innerWidth,a=window.innerHeight,e=987,k=712;.9*b<e&&(e=Math.max(.9*b,600),c.style.width=e+"px");.9*a<k&&(k=Math.max(.9*a,300),c.style.height=k+"px");this.width=e;this.height=k;this.container=c}; +TemplatesDialog.prototype.init=function(b,c,a,e,k,f,l,q,p,u){function d(){null!=H&&(H.style.fontWeight="normal",H.style.textDecoration="none",H=null)}function g(a,b,d,g,c,m,n){if(-1<a.className.indexOf("geTempDlgRadioBtnActive"))return!1;a.className+=" geTempDlgRadioBtnActive";F.querySelector(".geTempDlgRadioBtn[data-id="+g+"]").className="geTempDlgRadioBtn "+(n?"geTempDlgRadioBtnLarge":"geTempDlgRadioBtnSmall");F.querySelector("."+b).src="/images/"+d+"-sel.svg";F.querySelector("."+c).src="/images/"+ +m+".svg";return!0}function m(a){function b(a){aa.removeChild(g);F.removeChild(d);aa.scrollTop=m}a=a.prevImgUrl||a.imgUrl||TEMPLATE_PATH+"/"+a.url.substring(0,a.url.length-4)+".png";var d=document.createElement("div");d.className="geTempDlgDialogMask";F.appendChild(d);var g=document.createElement("div");g.className="geTempDlgDiagramPreviewBox";var c=document.createElement("img");c.src=a;g.appendChild(c);a=document.createElement("img");a.src="/images/close.png";a.className="geTempDlgPreviewCloseBtn"; +a.setAttribute("title",mxResources.get("close"));g.appendChild(a);var m=aa.scrollTop;mxEvent.addListener(a,"click",b);mxEvent.addListener(d,"click",b);aa.appendChild(g);aa.scrollTop=0;g.style.lineHeight=g.clientHeight+"px"}function v(a,b,d){if(null!=D){for(var g=D.className.split(" "),c=0;c<g.length;c++)if(-1<g[c].indexOf("Active")){g.splice(c,1);break}D.className=g.join(" ")}null!=a?(D=a,D.className+=" "+b,K=d,P.className="geTempDlgCreateBtn"):(K=D=null,P.className="geTempDlgCreateBtn geTempDlgCreateBtnDisabled")} +function t(a){if(null!=K){var d=K;K=null;P.className="geTempDlgCreateBtn geTempDlgCreateBtnDisabled geTempDlgCreateBtnBusy";d.isExternal?(1==a?u(d.url,d,"nameInput.value"):p(d.url,d,"nameInput.value"),b.hideDialog(!0)):mxUtils.get(TEMPLATE_PATH+"/"+d.url,mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()&&(c(a.getText(),"nameInput.value"),b.hideDialog(!0))}))}}function y(a){a=a?"":"none";for(var b=F.querySelectorAll(".geTempDlgLinkToDiagram"),d=0;d<b.length;d++)b[d].style.display= +a}function B(a,b,d){function g(){P.innerHTML=b?mxUtils.htmlEntities(mxResources.get("create")):mxUtils.htmlEntities(mxResources.get("copy"));y(!b)}U.innerHTML="";v();M=a;var c=null;if(d){c=document.createElement("table");c.className="geTempDlgDiagramsListGrid";var n=document.createElement("tr"),e=document.createElement("th");e.style.width="50%";e.innerHTML=mxUtils.htmlEntities(mxResources.get("diagram",null,"Diagram"));n.appendChild(e);e=document.createElement("th");e.style.width="25%";e.innerHTML= +mxUtils.htmlEntities(mxResources.get("changedBy",null,"Changed By"));n.appendChild(e);e=document.createElement("th");e.style.width="25%";e.innerHTML=mxUtils.htmlEntities(mxResources.get("lastModifiedOn",null,"Last modified on"));n.appendChild(e);c.appendChild(n);U.appendChild(c)}for(n=0;n<a.length;n++){a[n].isExternal=!b;var x=a[n].url,e=mxUtils.htmlEntities(a[n].title),z=a[n].tooltip||a[n].title,A=a[n].imgUrl,f=mxUtils.htmlEntities(a[n].changedBy||""),k=mxUtils.htmlEntities(a[n].lastModifiedOn|| +"");A||(A=TEMPLATE_PATH+"/"+x.substring(0,x.length-4)+".png");x=d?50:15;null!=e&&e.length>x&&(e=e.substring(0,x)+"…");if(d){var l=document.createElement("tr"),A=document.createElement("td"),F=document.createElement("img");F.src="/images/icon-search.svg";F.className="geTempDlgDiagramListPreviewBtn";F.setAttribute("title",mxResources.get("preview"));A.appendChild(F);z=document.createElement("span");z.className="geTempDlgDiagramTitle";z.innerHTML=e;A.appendChild(z);l.appendChild(A);A=document.createElement("td"); +A.innerHTML=f;l.appendChild(A);A=document.createElement("td");A.innerHTML=k;l.appendChild(A);c.appendChild(l);null==D&&(g(),v(l,"geTempDlgDiagramsListGridActive",a[n]));(function(a,b){mxEvent.addListener(l,"click",function(){D!=b&&(g(),v(b,"geTempDlgDiagramsListGridActive",a))});mxEvent.addListener(l,"dblclick",t);mxEvent.addListener(F,"click",function(){m(a)})})(a[n],l)}else{var B=document.createElement("div");B.className="geTempDlgDiagramTile";B.setAttribute("title",z);null==D&&(g(),v(B,"geTempDlgDiagramTileActive", +a[n]));f=document.createElement("div");f.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgLoading";var E=document.createElement("img");E.style.display="none";(function(a,b){E.onload=function(){b.className="geTempDlgDiagramTileImg";a.style.display=""};E.onerror=function(){b.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgError"}})(E,f);E.src=A;f.appendChild(E);B.appendChild(f);f=document.createElement("div");f.className="geTempDlgDiagramTileLbl";f.innerHTML=null!=e?e:"";B.appendChild(f); +F=document.createElement("img");F.src="/images/icon-search.svg";F.className="geTempDlgDiagramPreviewBtn";F.setAttribute("title",mxResources.get("preview"));B.appendChild(F);(function(a,b){mxEvent.addListener(B,"click",function(){D!=b&&(g(),v(b,"geTempDlgDiagramTileActive",a))});mxEvent.addListener(B,"dblclick",t);mxEvent.addListener(F,"click",function(){m(a)})})(a[n],B);U.appendChild(B)}}}function n(a,b){ba.innerHTML="";v();for(var d=!b&&5<a.length?5:a.length,g=0;g<d;g++){var c=a[g];c.isCategory= +!0;var m=document.createElement("div"),n=mxResources.get(c.title);null==n&&(n=c.title.substring(0,1).toUpperCase()+c.title.substring(1));m.className="geTempDlgNewDiagramCatItem";m.setAttribute("title",n);n=mxUtils.htmlEntities(n);15<n.length&&(n=n.substring(0,15)+"…");null==D&&(P.innerHTML=mxUtils.htmlEntities(mxResources.get("create")),y(),v(m,"geTempDlgNewDiagramCatItemActive",c));var e=document.createElement("div");e.className="geTempDlgNewDiagramCatItemImg";var x=document.createElement("img"); +x.src=NEW_DIAGRAM_CATS_PATH+"/"+c.img;e.appendChild(x);m.appendChild(e);e=document.createElement("div");e.className="geTempDlgNewDiagramCatItemLbl";e.innerHTML=n;m.appendChild(e);ba.appendChild(m);(function(a,b){mxEvent.addListener(m,"click",function(){D!=b&&(P.innerHTML=mxUtils.htmlEntities(mxResources.get("create")),y(),v(b,"geTempDlgNewDiagramCatItemActive",a))});mxEvent.addListener(m,"dblclick",t)})(c,m)}T.style.display=5>a.length?"none":""}function x(a){var b=F.querySelector(".geTemplatesList"), +d;for(d in a){var g=document.createElement("div"),c=mxResources.get(d),m=a[d];null==c&&(c=d.substring(0,1).toUpperCase()+d.substring(1));g.className="geTemplateCatLink";g.setAttribute("title",c+" ("+m.length+")");c=mxUtils.htmlEntities(c);15<c.length&&(c=c.substring(0,15)+"…");g.innerHTML=c+" ("+m.length+")";b.appendChild(g);(function(b,d,c){mxEvent.addListener(g,"click",function(){H!=c&&(null!=H?(H.style.fontWeight="normal",H.style.textDecoration="none"):(N.style.display="none",ea.style.minHeight= +"100%"),H=c,H.style.fontWeight="bold",H.style.textDecoration="underline",aa.scrollTop=0,E&&(G=!0),V.innerHTML=d,W.style.display="none",B(a[b],!0))})})(d,c,g)}}function z(a){l&&(aa.scrollTop=0,U.innerHTML="",Q.spin(U),G=!1,E=!0,V.innerHTML=mxUtils.htmlEntities(mxResources.get("recentDiag",null,"Recent Diagrams")),O=null,l(L,a?null:f))}function A(a){d();aa.scrollTop=0;U.innerHTML="";Q.spin(U);G=!1;E=!0;fa=null;V.innerHTML=mxUtils.htmlEntities(mxResources.get("searchResults",null,"Search Results"))+ +' "'+mxUtils.htmlEntities(a)+'"';q(a,L,C?null:f);O=a}e=null!=e?e:TEMPLATE_PATH+"/index.xml";k=null!=k?k:NEW_DIAGRAM_CATS_PATH+"/index.xml";var F=this.container,E=!1,G=!1,H=null,D=null,K=null,I=!1,C=!0,J=!1,M=[],O,T=F.querySelector(".geTempDlgShowAllBtn"),U=F.querySelector(".geTempDlgDiagramsTiles"),V=F.querySelector(".geTempDlgDiagramsListTitle"),W=F.querySelector(".geTempDlgDiagramsListBtns"),aa=F.querySelector(".geTempDlgContent"),ea=F.querySelector(".geTempDlgDiagramsList"),N=F.querySelector(".geTempDlgNewDiagramCat"), +ba=F.querySelector(".geTempDlgNewDiagramCatList"),P=F.querySelector(".geTempDlgCreateBtn"),Q=new Spinner({lines:12,length:10,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"50px",zIndex:2E9});mxEvent.addListener(F.querySelector(".geTempDlgNewDiagramlbl"),"click",function(){d();N.style.display="";ea.style.minHeight="calc(100% - 280px)";z(C)});mxEvent.addListener(F.querySelector(".geTempDlgRadioBtn[data-id=allDiagramsBtn]"),"click",function(){g(this,"geTempDlgAllDiagramsBtnImg", +"all-diagrams","myDiagramsBtn","geTempDlgMyDiagramsBtnImg","my-diagrams",!0)&&(C=!0,null==O?z(C):A(O))});mxEvent.addListener(F.querySelector(".geTempDlgRadioBtn[data-id=myDiagramsBtn]"),"click",function(){g(this,"geTempDlgMyDiagramsBtnImg","my-diagrams","allDiagramsBtn","geTempDlgAllDiagramsBtnImg","all-diagrams",!0)&&(C=!1,null==O?z(C):A(O))});mxEvent.addListener(F.querySelector(".geTempDlgRadioBtn[data-id=listBtn]"),"click",function(){g(this,"geTempDlgListBtnImg","list","tilesBtn","geTempDlgTilesBtnImg", +"tiles",!1)&&(J=!0,B(M,!1,J))});mxEvent.addListener(F.querySelector(".geTempDlgRadioBtn[data-id=tilesBtn]"),"click",function(){g(this,"geTempDlgTilesBtnImg","tiles","listBtn","geTempDlgListBtnImg","list",!1)&&(J=!1,B(M,!1,J))});mxEvent.addListener(T,"click",function(){I?(N.style.height="280px",ba.style.height="190px",T.innerHTML=mxUtils.htmlEntities(mxResources.get("showAll",null,"+ Show all")),n(Z)):(N.style.height="440px",ba.style.height="355px",T.innerHTML=mxUtils.htmlEntities(mxResources.get("showLess", +null,"- Show less")),n(Z,!0));I=!I});var X=!1,R=!1,S={},Z=[],ca=1;mxUtils.get(e,function(a){if(!X){X=!0;for(a=a.getXml().documentElement.firstChild;null!=a;){if("undefined"!==typeof a.getAttribute){var b=a.getAttribute("url");if(null!=b){var d=b.indexOf("/"),b=b.substring(0,d),d=S[b];null==d&&(ca++,d=[],S[b]=d);d.push({url:a.getAttribute("url"),libs:a.getAttribute("libs"),title:a.getAttribute("title"),tooltip:a.getAttribute("url"),imgUrl:a.getAttribute("imgUrl")})}}a=a.nextSibling}x(S)}});mxUtils.get(k, +function(a){if(!R){R=!0;for(a=a.getXml().documentElement.firstChild;null!=a;)"undefined"!==typeof a.getAttribute&&null!=a.getAttribute("title")&&Z.push({img:a.getAttribute("img"),libs:a.getAttribute("libs"),title:a.getAttribute("title")}),a=a.nextSibling;n(Z)}});var L=function(a,b){W.style.display="";Q.stop();E=!1;G?G=!1:b?U.innerHTML=b:0==a.length?U.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams",null,"No Diagrams Found")):B(a,!1,J)};z(C);var fa=null;q&&mxEvent.addListener(F.querySelector(".geTempDlgSearchBox"), +"keyup",function(a){var b=this;null!=fa&&clearTimeout(fa);13==a.keyCode?A(b.value):fa=setTimeout(function(){A(b.value)},500)});mxEvent.addListener(P,"click",t);mxEvent.addListener(F.querySelector(".geTempDlgLinkToDiagramBtn"),"click",function(a){t(!0)});mxEvent.addListener(F.querySelector(".geTempDlgCancelBtn"),"click",function(){null!=a&&a();b.hideDialog(!0)})}; +var BtnDialog=function(b,c,a,e){var k=document.createElement("div");k.style.textAlign="center";var f=document.createElement("p");f.style.fontSize="16pt";f.style.padding="0px";f.style.margin="0px";f.style.color="gray";mxUtils.write(f,mxResources.get("done"));var l="Unknown",q=document.createElement("img");q.setAttribute("border","0");q.setAttribute("align","absmiddle");q.style.marginRight="10px";c==b.drive?(l=mxResources.get("googleDrive"),q.src=IMAGE_PATH+"/google-drive-logo-white.svg"):c==b.dropbox? +(l=mxResources.get("dropbox"),q.src=IMAGE_PATH+"/dropbox-logo-white.svg"):c==b.oneDrive?(l=mxResources.get("oneDrive"),q.src=IMAGE_PATH+"/onedrive-logo-white.svg"):c==b.gitHub?(l=mxResources.get("github"),q.src=IMAGE_PATH+"/github-logo-white.svg"):c==b.trello&&(l=mxResources.get("trello"),q.src=IMAGE_PATH+"/trello-logo-white.svg");b=document.createElement("p");mxUtils.write(b,mxResources.get("authorizedIn",[l],"You are now authorized in {1}"));a=mxUtils.button(a,e);a.insertBefore(q,a.firstChild); +a.style.marginTop="6px";a.className="geBigButton";k.appendChild(f);k.appendChild(b);k.appendChild(a);this.container=k};(function(){Editor.prototype.appName="draw.io";Editor.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAMAAADzN3VRAAAApVBMVEUAAAD////k5OT///8AAAB1dXXMzMz9/f39/f37+/v5+fn+/v7///9iYmJaWlqFhYWnp6ejo6OHh4f////////////////7+/v5+fnx8fH///8AAAD///8bGxv7+/v5+fkoKCghISFDQ0MYGBjh4eHY2Njb29tQUFBvb29HR0c/Pz82NjYrKyu/v78SEhLu7u7s7OzV1dVVVVU7OzsVFRXAv78QEBBzqehMAAAAG3RSTlMAA/7p/vz5xZlrTiPL/v78+/v7+OXd2TYQDs8L70ZbAAABKUlEQVQoz3VS13LCMBBUXHChd8iukDslQChJ/v/TchaG4cXS+OSb1c7trU7V60OpdRz2ZtNZL4zXNlcN8BEtSG6+NxIXkeRPoBuQ1cjvZ31/VJFB10ISli6diYfH8iYO3WUNCcNlB0gTrXOtkxTo0O1aKKiBBMhhv2MNBQKoiA5wxlZo0JDzD3AYKbWacyj3fs01wxey0pyEP+R8pWKWXoqtIZ0DDg5pbki9krEKOa6LVDQsdoXEsi46Zqh69KFz7B1u7Hb2yDV8firXDKBlZ4UFiswKGRhXTS93/ECK7yxnJ3+S3y/ThpO+cfSD017nqa18aasabU0/t7d+tk0/1oMEJ1NaD67iwdF68OabFSLn+eHb0+vjy+uk8br9fdrftH0O2menfd7+AQfYM/lNjoDHAAAAAElFTkSuQmCC": IMAGE_PATH+"/delete.png";Editor.plusImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDdCMTdENjVCOEM4MTFFNDlCRjVBNDdCODU5NjNBNUMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDdCMTdENjZCOEM4MTFFNDlCRjVBNDdCODU5NjNBNUMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowN0IxN0Q2M0I4QzgxMUU0OUJGNUE0N0I4NTk2M0E1QyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowN0IxN0Q2NEI4QzgxMUU0OUJGNUE0N0I4NTk2M0E1QyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PtjrjmgAAAAtSURBVHjaYvz//z8DMigvLwcLdHZ2MiKLMzEQCaivkLGsrOw/dU0cAr4GCDAARQsQbTFrv10AAAAASUVORK5CYII=": IMAGE_PATH+"/plus.png";Editor.spinImage=mxClient.IS_SVG?"data:image/gif;base64,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": IMAGE_PATH+"/spin.gif";Editor.globeImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnptNi45MyA2aC0yLjk1Yy0uMzItMS4yNS0uNzgtMi40NS0xLjM4LTMuNTYgMS44NC42MyAzLjM3IDEuOTEgNC4zMyAzLjU2ek0xMiA0LjA0Yy44MyAxLjIgMS40OCAyLjUzIDEuOTEgMy45NmgtMy44MmMuNDMtMS40MyAxLjA4LTIuNzYgMS45MS0zLjk2ek00LjI2IDE0QzQuMSAxMy4zNiA0IDEyLjY5IDQgMTJzLjEtMS4zNi4yNi0yaDMuMzhjLS4wOC42Ni0uMTQgMS4zMi0uMTQgMiAwIC42OC4wNiAxLjM0LjE0IDJINC4yNnptLjgyIDJoMi45NWMuMzIgMS4yNS43OCAyLjQ1IDEuMzggMy41Ni0xLjg0LS42My0zLjM3LTEuOS00LjMzLTMuNTZ6bTIuOTUtOEg1LjA4Yy45Ni0xLjY2IDIuNDktMi45MyA0LjMzLTMuNTZDOC44MSA1LjU1IDguMzUgNi43NSA4LjAzIDh6TTEyIDE5Ljk2Yy0uODMtMS4yLTEuNDgtMi41My0xLjkxLTMuOTZoMy44MmMtLjQzIDEuNDMtMS4wOCAyLjc2LTEuOTEgMy45NnpNMTQuMzQgMTRIOS42NmMtLjA5LS42Ni0uMTYtMS4zMi0uMTYtMiAwLS42OC4wNy0xLjM1LjE2LTJoNC42OGMuMDkuNjUuMTYgMS4zMi4xNiAyIDAgLjY4LS4wNyAxLjM0LS4xNiAyem0uMjUgNS41NmMuNi0xLjExIDEuMDYtMi4zMSAxLjM4LTMuNTZoMi45NWMtLjk2IDEuNjUtMi40OSAyLjkzLTQuMzMgMy41NnpNMTYuMzYgMTRjLjA4LS42Ni4xNC0xLjMyLjE0LTIgMC0uNjgtLjA2LTEuMzQtLjE0LTJoMy4zOGMuMTYuNjQuMjYgMS4zMS4yNiAycy0uMSAxLjM2LS4yNiAyaC0zLjM4eiIvPjwvc3ZnPg=="; @@ -7790,26 +7798,26 @@ Graph.prototype.defaultEdgeLength=a.defaultEdgeLength||Graph.prototype.defaultEd if(null!=a.css){var d=document.createElement("style");d.setAttribute("type","text/css");d.appendChild(document.createTextNode(a.css));var g=document.getElementsByTagName("script")[0];g.parentNode.insertBefore(d,g)}null!=a.libraries&&(Sidebar.prototype.customEntries=a.libraries);null!=a.enabledLibraries&&(Sidebar.prototype.enabledLibraries=a.enabledLibraries);null!=a.defaultLibraries&&(Sidebar.prototype.defaultEntries=a.defaultLibraries);null!=a.defaultCustomLibraries&&(Editor.defaultCustomLibraries= a.defaultCustomLibraries);null!=a.enableCustomLibraries&&(Editor.enableCustomLibraries=a.enableCustomLibraries);null!=a.defaultVertexStyle&&(Graph.prototype.defaultVertexStyle=a.defaultVertexStyle);null!=a.defaultEdgeStyle&&(Graph.prototype.defaultEdgeStyle=a.defaultEdgeStyle);a.emptyDiagramXml&&(EditorUi.prototype.emptyDiagramXml=a.emptyDiagramXml);a.thumbWidth&&(Sidebar.prototype.thumbWidth=a.thumbWidth);a.thumbHeight&&(Sidebar.prototype.thumbHeight=a.thumbHeight);a.emptyLibraryXml&&(EditorUi.prototype.emptyLibraryXml= a.emptyLibraryXml);a.sidebarWidth&&(EditorUi.prototype.hsplitPosition=a.sidebarWidth);a.fontCss&&(d=document.createElement("style"),d.setAttribute("type","text/css"),d.appendChild(document.createTextNode(a.fontCss)),g=document.getElementsByTagName("script")[0],g.parentNode.insertBefore(d,g),Editor.prototype.fontCss=a.fontCss);if(null!=a.plugins&&!b)for(App.initPluginCallback(),d=0;d<a.plugins.length;d++)mxscript(a.plugins[d])}};Editor.GUID_ALPHABET="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_"; -Editor.GUID_LENGTH=20;Editor.guid=function(a){a=null!=a?a:Editor.GUID_LENGTH;for(var b=[],d=0;d<a;d++)b.push(Editor.GUID_ALPHABET.charAt(Math.floor(Math.random()*Editor.GUID_ALPHABET.length)));return b.join("")};Editor.prototype.useForeignObjectForMath=!1;Editor.prototype.editButtonLink=null!=urlParams.edit?decodeURIComponent(urlParams.edit):null;var a=Editor.prototype.setGraphXml;Editor.prototype.setGraphXml=function(b){b=null!=b&&"mxlibrary"!=b.nodeName?this.extractGraphModel(b):null;if(null!=b){var d= -b.getElementsByTagName("parsererror");if(null!=d&&0<d.length){var d=d[0],g=d.getElementsByTagName("div");null!=g&&0<g.length&&(d=g[0]);throw{message:mxUtils.getTextContent(d)};}if("mxGraphModel"==b.nodeName){d=b.getAttribute("style")||"default-style2";if("1"==urlParams.embed||null!=d&&""!=d)d!=this.graph.currentStyle&&(g=null!=this.graph.themes?this.graph.themes[d]:mxUtils.load(STYLE_PATH+"/"+d+".xml").getDocumentElement(),null!=g&&(c=new mxCodec(g.ownerDocument),c.decode(g,this.graph.getStylesheet()))); -else if(g=null!=this.graph.themes?this.graph.themes["default-old"]:mxUtils.load(STYLE_PATH+"/default-old.xml").getDocumentElement(),null!=g){var c=new mxCodec(g.ownerDocument);c.decode(g,this.graph.getStylesheet())}this.graph.currentStyle=d;this.graph.mathEnabled="1"==urlParams.math||"1"==b.getAttribute("math");d=b.getAttribute("backgroundImage");null!=d?(d=JSON.parse(d),this.graph.setBackgroundImage(new mxImage(d.src,d.width,d.height))):this.graph.setBackgroundImage(null);mxClient.NO_FO=this.graph.mathEnabled&& -!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();this.graph.setShadowVisible("1"==b.getAttribute("shadow"),!1)}a.apply(this,arguments)}else throw{message:mxResources.get("notADiagramFile")||"Invalid data",toString:function(){return this.message}};};var c=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=function(a){a=null!=a?a:!0;var b=c.apply(this, +Editor.GUID_LENGTH=20;Editor.guid=function(a){a=null!=a?a:Editor.GUID_LENGTH;for(var b=[],d=0;d<a;d++)b.push(Editor.GUID_ALPHABET.charAt(Math.floor(Math.random()*Editor.GUID_ALPHABET.length)));return b.join("")};Editor.prototype.useForeignObjectForMath=!1;Editor.prototype.editButtonLink=null!=urlParams.edit?decodeURIComponent(urlParams.edit):null;var b=Editor.prototype.setGraphXml;Editor.prototype.setGraphXml=function(a){a=null!=a&&"mxlibrary"!=a.nodeName?this.extractGraphModel(a):null;if(null!=a){var d= +a.getElementsByTagName("parsererror");if(null!=d&&0<d.length){var d=d[0],g=d.getElementsByTagName("div");null!=g&&0<g.length&&(d=g[0]);throw{message:mxUtils.getTextContent(d)};}if("mxGraphModel"==a.nodeName){d=a.getAttribute("style")||"default-style2";if("1"==urlParams.embed||null!=d&&""!=d)d!=this.graph.currentStyle&&(g=null!=this.graph.themes?this.graph.themes[d]:mxUtils.load(STYLE_PATH+"/"+d+".xml").getDocumentElement(),null!=g&&(c=new mxCodec(g.ownerDocument),c.decode(g,this.graph.getStylesheet()))); +else if(g=null!=this.graph.themes?this.graph.themes["default-old"]:mxUtils.load(STYLE_PATH+"/default-old.xml").getDocumentElement(),null!=g){var c=new mxCodec(g.ownerDocument);c.decode(g,this.graph.getStylesheet())}this.graph.currentStyle=d;this.graph.mathEnabled="1"==urlParams.math||"1"==a.getAttribute("math");d=a.getAttribute("backgroundImage");null!=d?(d=JSON.parse(d),this.graph.setBackgroundImage(new mxImage(d.src,d.width,d.height))):this.graph.setBackgroundImage(null);mxClient.NO_FO=this.graph.mathEnabled&& +!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();this.graph.setShadowVisible("1"==a.getAttribute("shadow"),!1)}b.apply(this,arguments)}else throw{message:mxResources.get("notADiagramFile")||"Invalid data",toString:function(){return this.message}};};var c=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=function(a){a=null!=a?a:!0;var b=c.apply(this, arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&b.setAttribute("style",this.graph.currentStyle);null!=this.graph.backgroundImage&&b.setAttribute("backgroundImage",JSON.stringify(this.graph.backgroundImage));b.setAttribute("math",this.graph.mathEnabled?"1":"0");b.setAttribute("shadow",this.graph.shadowVisible?"1":"0");return b};Editor.prototype.isDataSvg=function(a){try{var b=mxUtils.parseXml(a).documentElement.getAttribute("content");if(null!=b&&(null!=b&&"<"!= -b.charAt(0)&&"%"!=b.charAt(0)&&(b=unescape(window.atob?atob(b):Base64.decode(cont,b))),null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b)),null!=b&&0<b.length)){var d=mxUtils.parseXml(b).documentElement;return"mxfile"==d.nodeName||"mxGraphModel"==d.nodeName}}catch(B){}return!1};Editor.prototype.extractGraphModel=function(a,b){if(null!=a&&"undefined"!==typeof pako){var d=a.ownerDocument.getElementsByTagName("div"),g=[];if(null!=d&&0<d.length)for(var c=0;c<d.length;c++)if("mxgraph"==d[c].getAttribute("class")){g.push(d[c]); +b.charAt(0)&&"%"!=b.charAt(0)&&(b=unescape(window.atob?atob(b):Base64.decode(cont,b))),null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b)),null!=b&&0<b.length)){var d=mxUtils.parseXml(b).documentElement;return"mxfile"==d.nodeName||"mxGraphModel"==d.nodeName}}catch(E){}return!1};Editor.prototype.extractGraphModel=function(a,b){if(null!=a&&"undefined"!==typeof pako){var d=a.ownerDocument.getElementsByTagName("div"),g=[];if(null!=d&&0<d.length)for(var c=0;c<d.length;c++)if("mxgraph"==d[c].getAttribute("class")){g.push(d[c]); break}0<g.length&&(d=g[0].getAttribute("data-mxgraph"),null!=d?(g=JSON.parse(d),null!=g&&null!=g.xml&&(g=mxUtils.parseXml(g.xml),a=g.documentElement)):(g=g[0].getElementsByTagName("div"),0<g.length&&(d=mxUtils.getTextContent(g[0]),d=this.graph.decompress(d),0<d.length&&(g=mxUtils.parseXml(d),a=g.documentElement))))}if(null!=a&&"svg"==a.nodeName)if(d=a.getAttribute("content"),null!=d&&"<"!=d.charAt(0)&&"%"!=d.charAt(0)&&(d=unescape(window.atob?atob(d):Base64.decode(cont,d))),null!=d&&"%"==d.charAt(0)&& (d=decodeURIComponent(d)),null!=d&&0<d.length)a=mxUtils.parseXml(d).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==a||b||(g=null,"diagram"==a.nodeName?g=a:"mxfile"==a.nodeName&&(d=a.getElementsByTagName("diagram"),0<d.length&&(g=d[Math.max(0,Math.min(d.length-1,urlParams.page||0))])),null!=g&&(d=this.graph.decompress(mxUtils.getTextContent(g)),null!=d&&0<d.length&&(a=mxUtils.parseXml(d).documentElement)));null==a||"mxGraphModel"==a.nodeName||b&&"mxfile"==a.nodeName|| -(a=null);return a};var b=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled="1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0=null;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();b.apply(this,arguments)};var f=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphComponents= -function(){f.apply(this,arguments);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath&&null!=Editor.MathJaxRender?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform()};Editor.initMath=function(a,b){a=null!=a?a:"https://math.draw.io/current/MathJax.js?config=TeX-MML-AM_HTMLorMML";Editor.mathJaxQueue=[];Editor.doMathJaxRender=function(a){window.setTimeout(function(){"hidden"!= +(a=null);return a};var a=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled="1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0=null;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();a.apply(this,arguments)};var e=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphComponents= +function(){e.apply(this,arguments);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath&&null!=Editor.MathJaxRender?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform()};Editor.initMath=function(a,b){a=null!=a?a:"https://math.draw.io/current/MathJax.js?config=TeX-MML-AM_HTMLorMML";Editor.mathJaxQueue=[];Editor.doMathJaxRender=function(a){window.setTimeout(function(){"hidden"!= a.style.visibility&&MathJax.Hub.Queue(["Typeset",MathJax.Hub,a])},0)};window.MathJax={skipStartupTypeset:!0,showMathMenu:!1,messageStyle:"none",AuthorInit:function(){MathJax.Hub.Config(b||{jax:["input/TeX","input/MathML","input/AsciiMath","output/HTML-CSS"],extensions:["tex2jax.js","mml2jax.js","asciimath2jax.js"],"HTML-CSS":{imageFont:null},TeX:{extensions:["AMSmath.js","AMSsymbols.js","noErrors.js","noUndefined.js"]},tex2jax:{ignoreClass:"mxCellEditor"},asciimath2jax:{ignoreClass:"mxCellEditor"}}); MathJax.Hub.Register.StartupHook("Begin",function(){for(var a=0;a<Editor.mathJaxQueue.length;a++)Editor.doMathJaxRender(Editor.mathJaxQueue[a])})}};Editor.MathJaxRender=function(a){"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?Editor.doMathJaxRender(a):Editor.mathJaxQueue.push(a)};Editor.MathJaxClear=function(){Editor.mathJaxQueue=[]};var d=Editor.prototype.init;Editor.prototype.init=function(){d.apply(this,arguments);this.graph.addListener(mxEvent.SIZE,mxUtils.bind(this,function(a, b){null!=this.graph.container&&this.graph.mathEnabled&&Editor.MathJaxRender(this.graph.container)}))};var g=document.getElementsByTagName("script");if(null!=g&&0<g.length){var c=document.createElement("script");c.type="text/javascript";c.src=a;g[0].parentNode.appendChild(c)}};Editor.prototype.csvToArray=function(a){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(a))return null; var b=[];a.replace(/(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g,function(a,d,g,c){void 0!==d?b.push(d.replace(/\\'/g,"'")):void 0!==g?b.push(g.replace(/\\"/g,'"')):void 0!==c&&b.push(c);return""});/,\s*$/.test(a)&&b.push("");return b};if(window.ColorDialog){var k=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(a,b){k.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}; -var h=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){h.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&(EditDataDialog.getDisplayIdForCell=function(a,b){var d=null;null!=a.editor.graph.getModel().getParent(b)?d=b.getId():null!=a.currentPage&&(d=a.currentPage.getId());return d});if(null!=window.StyleFormatPanel){var l=Format.prototype.init;Format.prototype.init=function(){l.apply(this,arguments);this.editorUi.editor.addListener("fileLoaded", -this.update)};var t=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?t.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var a=this.editorUi.getCurrentFile();return"1"==urlParams.embed||null!=a&&a.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=function(a){return!1};var p=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView= +var f=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){f.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&(EditDataDialog.getDisplayIdForCell=function(a,b){var d=null;null!=a.editor.graph.getModel().getParent(b)?d=b.getId():null!=a.currentPage&&(d=a.currentPage.getId());return d});if(null!=window.StyleFormatPanel){var l=Format.prototype.init;Format.prototype.init=function(){l.apply(this,arguments);this.editorUi.editor.addListener("fileLoaded", +this.update)};var q=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?q.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var a=this.editorUi.getCurrentFile();return"1"==urlParams.embed||null!=a&&a.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=function(a){return!1};var p=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView= function(a){a=p.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var b=this.editorUi,d=b.editor.graph,g=this.createOption(mxResources.get("shadow"),function(){return d.shadowVisible},function(a){var g=new ChangePageSetup(b);g.ignoreColor=!0;g.ignoreImage=!0;g.shadowVisible=a;d.model.execute(g)},{install:function(a){this.listener=function(){a(d.shadowVisible)};b.addListener("shadowVisibleChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}}); -Editor.shadowOptionEnabled||(g.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(g,60));a.appendChild(g)}return a};var d=DiagramFormatPanel.prototype.addOptions;DiagramFormatPanel.prototype.addOptions=function(a){a=d.apply(this,arguments);var b=this.editorUi,g=b.editor.graph;if(g.isEnabled()){var c=b.getCurrentFile();null!=c&&c.isAutosaveOptional()&&(c=this.createOption(mxResources.get("autosave"),function(){return b.editor.autosave},function(a){b.editor.setAutosave(a)}, -{install:function(a){this.listener=function(){a(b.editor.autosave)};b.editor.addListener("autosaveChanged",this.listener)},destroy:function(){b.editor.removeListener(this.listener)}}),a.appendChild(c))}if(this.isMathOptionVisible()&&g.isEnabled()&&"undefined"!==typeof MathJax){c=this.createOption(mxResources.get("mathematicalTypesetting"),function(){return g.mathEnabled},function(a){b.actions.get("mathematicalTypesetting").funct()},{install:function(a){this.listener=function(){a(g.mathEnabled)};b.addListener("mathEnabledChanged", -this.listener)},destroy:function(){b.removeListener(this.listener)}});c.style.paddingTop="5px";a.appendChild(c);var n=b.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000032875");n.style.position="relative";n.style.marginLeft="6px";n.style.top="2px";c.appendChild(n)}return a};mxCellRenderer.prototype.defaultVertexShape.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"absoluteArcSize",dispName:"Abs. Arc Size", +Editor.shadowOptionEnabled||(g.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(g,60));a.appendChild(g)}return a};var u=DiagramFormatPanel.prototype.addOptions;DiagramFormatPanel.prototype.addOptions=function(a){a=u.apply(this,arguments);var b=this.editorUi,d=b.editor.graph;if(d.isEnabled()){var g=b.getCurrentFile();null!=g&&g.isAutosaveOptional()&&(g=this.createOption(mxResources.get("autosave"),function(){return b.editor.autosave},function(a){b.editor.setAutosave(a)}, +{install:function(a){this.listener=function(){a(b.editor.autosave)};b.editor.addListener("autosaveChanged",this.listener)},destroy:function(){b.editor.removeListener(this.listener)}}),a.appendChild(g))}if(this.isMathOptionVisible()&&d.isEnabled()&&"undefined"!==typeof MathJax){g=this.createOption(mxResources.get("mathematicalTypesetting"),function(){return d.mathEnabled},function(a){b.actions.get("mathematicalTypesetting").funct()},{install:function(a){this.listener=function(){a(d.mathEnabled)};b.addListener("mathEnabledChanged", +this.listener)},destroy:function(){b.removeListener(this.listener)}});g.style.paddingTop="5px";a.appendChild(g);var c=b.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000032875");c.style.position="relative";c.style.marginLeft="6px";c.style.top="2px";g.appendChild(c)}return a};mxCellRenderer.prototype.defaultVertexShape.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"absoluteArcSize",dispName:"Abs. Arc Size", type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.link.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:4}];mxCellRenderer.defaultShapes.flexArrow.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:10},{name:"startWidth",dispName:"Start Width",type:"float",min:0,defVal:20},{name:"endWidth",dispName:"End Width",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.process.prototype.customProperties=[{name:"size",dispName:"Indent", type:"float",min:0,max:.5,defVal:.1}];mxCellRenderer.defaultShapes.rhombus.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,max:50,defVal:mxConstants.LINE_ARCSIZE},{name:"double",dispName:"Double",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.partialRectangle.prototype.customProperties=[{name:"top",dispName:"Top Line",type:"bool",defVal:!0},{name:"bottom",dispName:"Bottom Line",type:"bool",defVal:!0},{name:"left",dispName:"Left Line",type:"bool",defVal:!0}, {name:"right",dispName:"Right Line",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.parallelogram.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.hexagon.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1, @@ -7830,498 +7838,496 @@ defVal:60,min:0},{name:"height",dispName:"Title Height",type:"float",defVal:30,m stroke:"#006EAF",font:"#ffffff"},{fill:"#0050ef",stroke:"#001DBC",font:"#ffffff"},{fill:"#6a00ff",stroke:"#3700CC",font:"#ffffff"},{fill:"#aa00ff",stroke:"#7700CC",font:"#ffffff"},{fill:"#d80073",stroke:"#A50040",font:"#ffffff"},{fill:"#a20025",stroke:"#6F0000",font:"#ffffff"}],[{fill:"#e51400",stroke:"#B20000",font:"#ffffff"},{fill:"#fa6800",stroke:"#C73500",font:"#ffffff"},{fill:"#f0a30a",stroke:"#BD7000",font:"#ffffff"},{fill:"#e3c800",stroke:"#B09500",font:"#ffffff"},{fill:"#6d8764",stroke:"#3A5431", font:"#ffffff"},{fill:"#647687",stroke:"#314354",font:"#ffffff"},{fill:"#76608a",stroke:"#432D57",font:"#ffffff"},{fill:"#a0522d",stroke:"#6D1F00",font:"#ffffff"}],[null,{fill:mxConstants.NONE,stroke:"#36393d"},{fill:"#fad7ac",stroke:"#b46504"},{fill:"#fad9d5",stroke:"#ae4132"},{fill:"#b0e3e6",stroke:"#0e8088"},{fill:"#b1ddf0",stroke:"#10739e"},{fill:"#d0cee2",stroke:"#56517e"},{fill:"#bac8d3",stroke:"#23445d"}],[null,{fill:"#f5f5f5",stroke:"#666666",gradient:"#b3b3b3"},{fill:"#dae8fc",stroke:"#6c8ebf", gradient:"#7ea6e0"},{fill:"#d5e8d4",stroke:"#82b366",gradient:"#97d077"},{fill:"#ffcd28",stroke:"#d79b00",gradient:"#ffa500"},{fill:"#fff2cc",stroke:"#d6b656",gradient:"#ffd966"},{fill:"#f8cecc",stroke:"#b85450",gradient:"#ea6b66"},{fill:"#e6d0de",stroke:"#996185",gradient:"#d5739d"}],[null,{fill:"#eeeeee",stroke:"#36393d"},{fill:"#f9f7ed",stroke:"#36393d"},{fill:"#ffcc99",stroke:"#36393d"},{fill:"#cce5ff",stroke:"#36393d"},{fill:"#ffff88",stroke:"#36393d"},{fill:"#cdeb8b",stroke:"#36393d"},{fill:"#ffcccc", -stroke:"#36393d"}]];StyleFormatPanel.prototype.customColorSchemes=null;StyleFormatPanel.prototype.findCommonProperties=function(a,b,d){if(null!=b){var g=function(a){if(null!=a)if(d)for(var g=0;g<a.length;g++)b[a[g].name]=a[g];else for(var c in b){for(var n=!1,g=0;g<a.length;g++)if(a[g].name==c&&a[g].type==b[c].type){n=!0;break}n||delete b[c]}},c=this.editorUi.editor.graph.view.getState(a);null!=c&&null!=c.shape&&(c.shape.commonCustomPropAdded||(c.shape.commonCustomPropAdded=!0,c.shape.customProperties= -c.shape.customProperties||[],c.cell.vertex?Array.prototype.push.apply(c.shape.customProperties,Editor.commonVertexProperties):Array.prototype.push.apply(c.shape.customProperties,Editor.commonEdgeProperties)),g(c.shape.customProperties));a=a.getAttribute("customProperties");if(null!=a)try{g(JSON.parse(a))}catch(D){}}};var g=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var a=this.format.createSelectionState();"image"!=a.style.shape&&this.container.appendChild(this.addStyles(this.createPanel())); -g.apply(this,arguments);if(Editor.enableCustomProperties){for(var b={},d=a.vertices,c=a.edges,n=0;n<d.length;n++)this.findCommonProperties(d[n],b,0==n);for(n=0;n<c.length;n++)this.findCommonProperties(c[n],b,0==d.length&&0==n);0<Object.getOwnPropertyNames(b).length&&this.container.appendChild(this.addProperties(this.createPanel(),b,a))}};var n=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(a){var b=mxUtils.button(mxResources.get("copyStyle"),mxUtils.bind(this, +stroke:"#36393d"}]];StyleFormatPanel.prototype.customColorSchemes=null;StyleFormatPanel.prototype.findCommonProperties=function(a,b,d){if(null!=b){var g=function(a){if(null!=a)if(d)for(var g=0;g<a.length;g++)b[a[g].name]=a[g];else for(var c in b){for(var m=!1,g=0;g<a.length;g++)if(a[g].name==c&&a[g].type==b[c].type){m=!0;break}m||delete b[c]}},c=this.editorUi.editor.graph.view.getState(a);null!=c&&null!=c.shape&&(c.shape.commonCustomPropAdded||(c.shape.commonCustomPropAdded=!0,c.shape.customProperties= +c.shape.customProperties||[],c.cell.vertex?Array.prototype.push.apply(c.shape.customProperties,Editor.commonVertexProperties):Array.prototype.push.apply(c.shape.customProperties,Editor.commonEdgeProperties)),g(c.shape.customProperties));a=a.getAttribute("customProperties");if(null!=a)try{g(JSON.parse(a))}catch(H){}}};var d=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var a=this.format.createSelectionState();"image"!=a.style.shape&&this.container.appendChild(this.addStyles(this.createPanel())); +d.apply(this,arguments);if(Editor.enableCustomProperties){for(var b={},g=a.vertices,c=a.edges,m=0;m<g.length;m++)this.findCommonProperties(g[m],b,0==m);for(m=0;m<c.length;m++)this.findCommonProperties(c[m],b,0==g.length&&0==m);0<Object.getOwnPropertyNames(b).length&&this.container.appendChild(this.addProperties(this.createPanel(),b,a))}};var g=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(a){var b=mxUtils.button(mxResources.get("copyStyle"),mxUtils.bind(this, function(a){this.editorUi.actions.get("copyStyle").funct()}));b.setAttribute("title",mxResources.get("copyStyle")+" ("+this.editorUi.actions.get("copyStyle").shortcut+")");b.style.marginBottom="2px";b.style.width="100px";b.style.marginRight="2px";a.appendChild(b);b=mxUtils.button(mxResources.get("pasteStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("pasteStyle").funct()}));b.setAttribute("title",mxResources.get("pasteStyle")+" ("+this.editorUi.actions.get("pasteStyle").shortcut+")"); -b.style.marginBottom="2px";b.style.width="100px";a.appendChild(b);mxUtils.br(a);return n.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=function(a,b,d){function g(a,b,d,g){h.getModel().beginUpdate();try{var c=[],n=[];if(null!=d.index){for(var m=[],f=d.parentRow.nextSibling;f&&f.getAttribute("data-pName")==a;)m.push(f.getAttribute("data-pValue")),f=f.nextSibling;d.index<m.length?null!=g?m.splice(g,1):m[d.index]=b:m.push(b);null!=d.size&&m.length> -d.size&&(m=m.slice(0,d.size));b=m.join(",");null!=d.countProperty&&(h.setCellStyles(d.countProperty,m.length,h.getSelectionCells()),c.push(d.countProperty),n.push(m.length))}h.setCellStyles(a,b,h.getSelectionCells());c.push(a);n.push(b);if(null!=d.dependentProps)for(a=0;a<d.dependentProps.length;a++){var q=d.dependentPropsDefVal[a],u=d.dependentPropsVals[a];if(u.length>b)u=u.slice(0,b);else for(var k=u.length;k<b;k++)u.push(q);u=u.join(",");h.setCellStyles(d.dependentProps[a],u,h.getSelectionCells()); -c.push(d.dependentProps[a]);n.push(u)}w.editorUi.fireEvent(new mxEventObject("styleChanged","keys",c,"values",n,"cells",h.getSelectionCells()))}finally{h.getModel().endUpdate()}}function c(b,d,g){var c=mxUtils.getOffset(a,!0),n=mxUtils.getOffset(b,!0);d.style.position="absolute";d.style.left=n.x-c.x+"px";d.style.top=n.y-c.y+"px";d.style.width=b.offsetWidth+"px";d.style.height=b.offsetHeight-(g?4:0)+"px";d.style.zIndex=5}function n(a,b,d){var c=document.createElement("div");c.style.width="32px";c.style.height= -"4px";c.style.margin="2px";c.style.border="1px solid black";c.style.background=b&&"none"!=b?b:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(w,function(n){this.editorUi.pickColor(b,function(b){c.style.background="none"==b?"url('"+Dialog.prototype.noColorImage+"')":b;g(a,b,d)});mxEvent.consume(n)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(c);return btn}function m(a,b,d,c,n,m,f){null!=b&&(b=b.split(","),k.push({name:a, -values:b,type:d,defVal:c,countProperty:n,parentRow:m,isDeletable:!0,flipBkg:f}));btn=mxUtils.button("+",mxUtils.bind(w,function(b){for(var q=m,w=0;null!=q.nextSibling;)if(q.nextSibling.getAttribute("data-pName")==a)q=q.nextSibling,w++;else break;var h={type:d,parentRow:m,index:w,isDeletable:!0,defVal:c,countProperty:n},w=u(a,"",h,0==w%2,f);g(a,c,h);q.parentNode.insertBefore(w,q.nextSibling);mxEvent.consume(b)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn} -function f(a,b,d,g,c,n,m){if(0<c){var f=Array(c);b=null!=b?b.split(","):[];for(var q=0;q<c;q++)f[q]=null!=b[q]?b[q]:null!=g?g:"";k.push({name:a,values:f,type:d,defVal:g,parentRow:n,flipBkg:m,size:c})}return document.createElement("div")}function q(a,b,d){var c=document.createElement("input");c.type="checkbox";c.checked="1"==b;mxEvent.addListener(c,"change",function(){g(a,c.checked?"1":"0",d)});return c}function u(b,d,u,h,k){var x=u.dispName,v=u.type,l=document.createElement("tr");l.className="gePropRow"+ -(k?"Dark":"")+(h?"Alt":"")+" gePropNonHeaderRow";l.setAttribute("data-pName",b);l.setAttribute("data-pValue",d);h=!1;null!=u.index&&(l.setAttribute("data-index",u.index),x=(null!=x?x:"")+"["+u.index+"]",h=!0);var z=document.createElement("td");z.className="gePropRowCell";z.innerHTML=mxUtils.htmlEntities(mxResources.get(x,null,x));h&&(z.style.textAlign="right");l.appendChild(z);z=document.createElement("td");z.className="gePropRowCell";if("color"==v)z.appendChild(n(b,d,u));else if("bool"==v||"boolean"== -v)z.appendChild(q(b,d,u));else if("enum"==v){var F=u.enumList;for(k=0;k<F.length;k++)if(x=F[k],x.val==d){z.innerHTML=mxUtils.htmlEntities(mxResources.get(x.dispName,null,x.dispName));break}mxEvent.addListener(z,"click",mxUtils.bind(w,function(){var n=document.createElement("select");c(z,n);for(var m=0;m<F.length;m++){var f=F[m],q=document.createElement("option");q.value=mxUtils.htmlEntities(f.val);q.innerHTML=mxUtils.htmlEntities(mxResources.get(f.dispName,null,f.dispName));n.appendChild(q)}n.value= -d;a.appendChild(n);mxEvent.addListener(n,"change",function(){var a=mxUtils.htmlEntities(n.value);g(b,a,u)});n.focus();mxEvent.addListener(n,"blur",function(){a.removeChild(n)})}))}else"dynamicArr"==v?z.appendChild(m(b,d,u.subType,u.subDefVal,u.countProperty,l,k)):"staticArr"==v?z.appendChild(f(b,d,u.subType,u.subDefVal,u.size,l,k)):(z.innerHTML=d,mxEvent.addListener(z,"click",mxUtils.bind(w,function(){function n(){var a=m.value,a=0==a.length&&"string"!=v?0:a;u.allowAuto&&("auto"==a.trim().toLowerCase()? -(a="auto",v="string"):(a=parseFloat(a),a=isNaN(a)?0:a));null!=u.min&&a<u.min?a=u.min:null!=u.max&&a>u.max&&(a=u.max);a=mxUtils.htmlEntities(("int"==v?parseInt(a):a)+"");g(b,a,u)}var m=document.createElement("input");c(z,m,!0);m.value=d;m.className="gePropEditor";"int"!=v&&"float"!=v||u.allowAuto||(m.type="number",m.step="int"==v?"1":"any",null!=u.min&&(m.min=parseFloat(u.min)),null!=u.max&&(m.max=parseFloat(u.max)));a.appendChild(m);mxEvent.addListener(m,"keypress",function(a){13==a.keyCode&&n()}); -m.focus();mxEvent.addListener(m,"blur",function(){n()})})));u.isDeletable&&(k=mxUtils.button("-",mxUtils.bind(w,function(a){g(b,"",u,u.index);mxEvent.consume(a)})),k.style.height="16px",k.style.width="25px",k.style["float"]="right",k.className="geColorBtn",z.appendChild(k));l.appendChild(z);return l}var w=this,h=this.editorUi.editor.graph,k=[];a.style.position="relative";a.style.padding="0";var v=document.createElement("table");v.style.whiteSpace="nowrap";v.style.width="100%";var x=document.createElement("tr"); -x.className="gePropHeader";var l=document.createElement("th");l.className="gePropHeaderCell";var z=document.createElement("img");z.src=Sidebar.prototype.expandedImage;l.appendChild(z);mxUtils.write(l,mxResources.get("property"));x.style.cursor="pointer";var F=function(){var b=v.querySelectorAll(".gePropNonHeaderRow"),d;if(w.editorUi.propertiesCollapsed){z.src=Sidebar.prototype.collapsedImage;d="none";for(var g=a.childNodes.length-1;0<=g;g--)try{var c=a.childNodes[g],n=c.nodeName.toUpperCase();"INPUT"!= -n&&"SELECT"!=n||a.removeChild(c)}catch(ga){}}else z.src=Sidebar.prototype.expandedImage,d="";for(g=0;g<b.length;g++)b[g].style.display=d};mxEvent.addListener(x,"click",function(){w.editorUi.propertiesCollapsed=!w.editorUi.propertiesCollapsed;F()});x.appendChild(l);l=document.createElement("th");l.className="gePropHeaderCell";l.innerHTML=mxResources.get("value");x.appendChild(l);v.appendChild(x);var y=!1,C=!1,t;for(t in b)if(x=b[t],"function"!=typeof x.isVisible||x.isVisible(d)){var p=null!=d.style[t]? -mxUtils.htmlEntities(d.style[t]+""):x.defVal;if("separator"==x.type)C=!C;else{if("staticArr"==x.type)x.size=parseInt(d.style[x.sizeProperty]||b[x.sizeProperty].defVal)||0;else if(null!=x.dependentProps){for(var X=x.dependentProps,P=[],U=[],l=0;l<X.length;l++){var S=d.style[X[l]];U.push(b[X[l]].subDefVal);P.push(null!=S?S.split(","):[])}x.dependentPropsDefVal=U;x.dependentPropsVals=P}v.appendChild(u(t,p,x,y,C));y=!y}}for(l=0;l<k.length;l++)for(x=k[l],b=x.parentRow,d=0;d<x.values.length;d++)t=u(x.name, -x.values[d],{type:x.type,parentRow:x.parentRow,isDeletable:x.isDeletable,index:d,defVal:x.defVal,countProperty:x.countProperty,size:x.size},0==d%2,x.flipBkg),b.parentNode.insertBefore(t,b.nextSibling),b=t;a.appendChild(v);F();return a};StyleFormatPanel.prototype.addStyles=function(a){function b(a){function b(a){var b=mxUtils.button("",function(b){g.getModel().beginUpdate();try{var d=g.getSelectionCells();for(b=0;b<d.length;b++){for(var c=g.getModel().getStyle(d[b]),m=0;m<n.length;m++)c=mxUtils.removeStylename(c, -n[m]);var f=g.getModel().isVertex(d[b])?g.defaultVertexStyle:g.defaultEdgeStyle;null!=a?(c=mxUtils.setStyle(c,mxConstants.STYLE_FILLCOLOR,a.fill||mxUtils.getValue(f,mxConstants.STYLE_FILLCOLOR,null)),c=mxUtils.setStyle(c,mxConstants.STYLE_STROKECOLOR,a.stroke||mxUtils.getValue(f,mxConstants.STYLE_STROKECOLOR,null)),c=mxUtils.setStyle(c,mxConstants.STYLE_GRADIENTCOLOR,a.gradient||mxUtils.getValue(f,mxConstants.STYLE_GRADIENTCOLOR,null)),g.getModel().isVertex(d[b])&&(c=mxUtils.setStyle(c,mxConstants.STYLE_FONTCOLOR, -a.font||mxUtils.getValue(f,mxConstants.STYLE_FONTCOLOR,null)))):(c=mxUtils.setStyle(c,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(f,mxConstants.STYLE_FILLCOLOR,"#ffffff")),c=mxUtils.setStyle(c,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(f,mxConstants.STYLE_STROKECOLOR,"#000000")),c=mxUtils.setStyle(c,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(f,mxConstants.STYLE_GRADIENTCOLOR,null)),g.getModel().isVertex(d[b])&&(c=mxUtils.setStyle(c,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(f,mxConstants.STYLE_FONTCOLOR, +b.style.marginBottom="2px";b.style.width="100px";a.appendChild(b);mxUtils.br(a);return g.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=function(a,b,d){function g(a,b,d,g){y.getModel().beginUpdate();try{var c=[],m=[];if(null!=d.index){for(var n=[],e=d.parentRow.nextSibling;e&&e.getAttribute("data-pName")==a;)n.push(e.getAttribute("data-pValue")),e=e.nextSibling;d.index<n.length?null!=g?n.splice(g,1):n[d.index]=b:n.push(b);null!=d.size&&n.length> +d.size&&(n=n.slice(0,d.size));b=n.join(",");null!=d.countProperty&&(y.setCellStyles(d.countProperty,n.length,y.getSelectionCells()),c.push(d.countProperty),m.push(n.length))}y.setCellStyles(a,b,y.getSelectionCells());c.push(a);m.push(b);if(null!=d.dependentProps)for(a=0;a<d.dependentProps.length;a++){var x=d.dependentPropsDefVal[a],t=d.dependentPropsVals[a];if(t.length>b)t=t.slice(0,b);else for(var f=t.length;f<b;f++)t.push(x);t=t.join(",");y.setCellStyles(d.dependentProps[a],t,y.getSelectionCells()); +c.push(d.dependentProps[a]);m.push(t)}v.editorUi.fireEvent(new mxEventObject("styleChanged","keys",c,"values",m,"cells",y.getSelectionCells()))}finally{y.getModel().endUpdate()}}function c(b,d,g){var c=mxUtils.getOffset(a,!0),m=mxUtils.getOffset(b,!0);d.style.position="absolute";d.style.left=m.x-c.x+"px";d.style.top=m.y-c.y+"px";d.style.width=b.offsetWidth+"px";d.style.height=b.offsetHeight-(g?4:0)+"px";d.style.zIndex=5}function m(a,b,d){var c=document.createElement("div");c.style.width="32px";c.style.height= +"4px";c.style.margin="2px";c.style.border="1px solid black";c.style.background=b&&"none"!=b?b:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(v,function(m){this.editorUi.pickColor(b,function(b){c.style.background="none"==b?"url('"+Dialog.prototype.noColorImage+"')":b;g(a,b,d)});mxEvent.consume(m)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(c);return btn}function n(a,b,d,c,m,n,e){null!=b&&(b=b.split(","),f.push({name:a, +values:b,type:d,defVal:c,countProperty:m,parentRow:n,isDeletable:!0,flipBkg:e}));btn=mxUtils.button("+",mxUtils.bind(v,function(b){for(var x=n,v=0;null!=x.nextSibling;)if(x.nextSibling.getAttribute("data-pName")==a)x=x.nextSibling,v++;else break;var y={type:d,parentRow:n,index:v,isDeletable:!0,defVal:c,countProperty:m},v=t(a,"",y,0==v%2,e);g(a,c,y);x.parentNode.insertBefore(v,x.nextSibling);mxEvent.consume(b)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn} +function e(a,b,d,g,c,m,n){if(0<c){var e=Array(c);b=null!=b?b.split(","):[];for(var x=0;x<c;x++)e[x]=null!=b[x]?b[x]:null!=g?g:"";f.push({name:a,values:e,type:d,defVal:g,parentRow:m,flipBkg:n,size:c})}return document.createElement("div")}function x(a,b,d){var c=document.createElement("input");c.type="checkbox";c.checked="1"==b;mxEvent.addListener(c,"change",function(){g(a,c.checked?"1":"0",d)});return c}function t(b,d,t,y,f){var z=t.dispName,k=t.type,A=document.createElement("tr");A.className="gePropRow"+ +(f?"Dark":"")+(y?"Alt":"")+" gePropNonHeaderRow";A.setAttribute("data-pName",b);A.setAttribute("data-pValue",d);y=!1;null!=t.index&&(A.setAttribute("data-index",t.index),z=(null!=z?z:"")+"["+t.index+"]",y=!0);var l=document.createElement("td");l.className="gePropRowCell";l.innerHTML=mxUtils.htmlEntities(mxResources.get(z,null,z));y&&(l.style.textAlign="right");A.appendChild(l);l=document.createElement("td");l.className="gePropRowCell";if("color"==k)l.appendChild(m(b,d,t));else if("bool"==k||"boolean"== +k)l.appendChild(x(b,d,t));else if("enum"==k){var B=t.enumList;for(f=0;f<B.length;f++)if(z=B[f],z.val==d){l.innerHTML=mxUtils.htmlEntities(mxResources.get(z.dispName,null,z.dispName));break}mxEvent.addListener(l,"click",mxUtils.bind(v,function(){var m=document.createElement("select");c(l,m);for(var n=0;n<B.length;n++){var e=B[n],x=document.createElement("option");x.value=mxUtils.htmlEntities(e.val);x.innerHTML=mxUtils.htmlEntities(mxResources.get(e.dispName,null,e.dispName));m.appendChild(x)}m.value= +d;a.appendChild(m);mxEvent.addListener(m,"change",function(){var a=mxUtils.htmlEntities(m.value);g(b,a,t)});m.focus();mxEvent.addListener(m,"blur",function(){a.removeChild(m)})}))}else"dynamicArr"==k?l.appendChild(n(b,d,t.subType,t.subDefVal,t.countProperty,A,f)):"staticArr"==k?l.appendChild(e(b,d,t.subType,t.subDefVal,t.size,A,f)):(l.innerHTML=d,mxEvent.addListener(l,"click",mxUtils.bind(v,function(){function m(){var a=n.value,a=0==a.length&&"string"!=k?0:a;t.allowAuto&&("auto"==a.trim().toLowerCase()? +(a="auto",k="string"):(a=parseFloat(a),a=isNaN(a)?0:a));null!=t.min&&a<t.min?a=t.min:null!=t.max&&a>t.max&&(a=t.max);a=mxUtils.htmlEntities(("int"==k?parseInt(a):a)+"");g(b,a,t)}var n=document.createElement("input");c(l,n,!0);n.value=d;n.className="gePropEditor";"int"!=k&&"float"!=k||t.allowAuto||(n.type="number",n.step="int"==k?"1":"any",null!=t.min&&(n.min=parseFloat(t.min)),null!=t.max&&(n.max=parseFloat(t.max)));a.appendChild(n);mxEvent.addListener(n,"keypress",function(a){13==a.keyCode&&m()}); +n.focus();mxEvent.addListener(n,"blur",function(){m()})})));t.isDeletable&&(f=mxUtils.button("-",mxUtils.bind(v,function(a){g(b,"",t,t.index);mxEvent.consume(a)})),f.style.height="16px",f.style.width="25px",f.style["float"]="right",f.className="geColorBtn",l.appendChild(f));A.appendChild(l);return A}var v=this,y=this.editorUi.editor.graph,f=[];a.style.position="relative";a.style.padding="0";var k=document.createElement("table");k.style.whiteSpace="nowrap";k.style.width="100%";var z=document.createElement("tr"); +z.className="gePropHeader";var A=document.createElement("th");A.className="gePropHeaderCell";var l=document.createElement("img");l.src=Sidebar.prototype.expandedImage;A.appendChild(l);mxUtils.write(A,mxResources.get("property"));z.style.cursor="pointer";var B=function(){var b=k.querySelectorAll(".gePropNonHeaderRow"),d;if(v.editorUi.propertiesCollapsed){l.src=Sidebar.prototype.collapsedImage;d="none";for(var g=a.childNodes.length-1;0<=g;g--)try{var c=a.childNodes[g],m=c.nodeName.toUpperCase();"INPUT"!= +m&&"SELECT"!=m||a.removeChild(c)}catch(oa){}}else l.src=Sidebar.prototype.expandedImage,d="";for(g=0;g<b.length;g++)b[g].style.display=d};mxEvent.addListener(z,"click",function(){v.editorUi.propertiesCollapsed=!v.editorUi.propertiesCollapsed;B()});z.appendChild(A);A=document.createElement("th");A.className="gePropHeaderCell";A.innerHTML=mxResources.get("value");z.appendChild(A);k.appendChild(z);var q=!1,F=!1,p;for(p in b)if(z=b[p],"function"!=typeof z.isVisible||z.isVisible(d)){var u=null!=d.style[p]? +mxUtils.htmlEntities(d.style[p]+""):z.defVal;if("separator"==z.type)F=!F;else{if("staticArr"==z.type)z.size=parseInt(d.style[z.sizeProperty]||b[z.sizeProperty].defVal)||0;else if(null!=z.dependentProps){for(var Q=z.dependentProps,X=[],R=[],A=0;A<Q.length;A++){var S=d.style[Q[A]];R.push(b[Q[A]].subDefVal);X.push(null!=S?S.split(","):[])}z.dependentPropsDefVal=R;z.dependentPropsVals=X}k.appendChild(t(p,u,z,q,F));q=!q}}for(A=0;A<f.length;A++)for(z=f[A],b=z.parentRow,d=0;d<z.values.length;d++)p=t(z.name, +z.values[d],{type:z.type,parentRow:z.parentRow,isDeletable:z.isDeletable,index:d,defVal:z.defVal,countProperty:z.countProperty,size:z.size},0==d%2,z.flipBkg),b.parentNode.insertBefore(p,b.nextSibling),b=p;a.appendChild(k);B();return a};StyleFormatPanel.prototype.addStyles=function(a){function b(a){function b(a){var b=mxUtils.button("",function(b){g.getModel().beginUpdate();try{var d=g.getSelectionCells();for(b=0;b<d.length;b++){for(var c=g.getModel().getStyle(d[b]),n=0;n<m.length;n++)c=mxUtils.removeStylename(c, +m[n]);var e=g.getModel().isVertex(d[b])?g.defaultVertexStyle:g.defaultEdgeStyle;null!=a?(c=mxUtils.setStyle(c,mxConstants.STYLE_FILLCOLOR,a.fill||mxUtils.getValue(e,mxConstants.STYLE_FILLCOLOR,null)),c=mxUtils.setStyle(c,mxConstants.STYLE_STROKECOLOR,a.stroke||mxUtils.getValue(e,mxConstants.STYLE_STROKECOLOR,null)),c=mxUtils.setStyle(c,mxConstants.STYLE_GRADIENTCOLOR,a.gradient||mxUtils.getValue(e,mxConstants.STYLE_GRADIENTCOLOR,null)),g.getModel().isVertex(d[b])&&(c=mxUtils.setStyle(c,mxConstants.STYLE_FONTCOLOR, +a.font||mxUtils.getValue(e,mxConstants.STYLE_FONTCOLOR,null)))):(c=mxUtils.setStyle(c,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(e,mxConstants.STYLE_FILLCOLOR,"#ffffff")),c=mxUtils.setStyle(c,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(e,mxConstants.STYLE_STROKECOLOR,"#000000")),c=mxUtils.setStyle(c,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(e,mxConstants.STYLE_GRADIENTCOLOR,null)),g.getModel().isVertex(d[b])&&(c=mxUtils.setStyle(c,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(e,mxConstants.STYLE_FONTCOLOR, null))));g.getModel().setStyle(d[b],c)}}finally{g.getModel().endUpdate()}});b.className="geStyleButton";b.style.width="36px";b.style.height="30px";b.style.margin="0px 6px 6px 0px";if(null!=a)null!=a.gradient?mxClient.IS_IE&&(mxClient.IS_QUIRKS||10>document.documentMode)?b.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+a.fill+"', EndColorStr='"+a.gradient+"', GradientType=0)":b.style.backgroundImage="linear-gradient("+a.fill+" 0px,"+a.gradient+" 100%)":a.fill==mxConstants.NONE? -b.style.background="url('"+Dialog.prototype.noColorImage+"')":b.style.backgroundColor=a.fill||mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),b.style.border="1px solid "+(a.stroke||mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000"));else{var d=mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),m=mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");b.style.backgroundColor=d;b.style.border="1px solid "+ -m}c.appendChild(b)}c.innerHTML="";for(var d=0;d<a.length;d++)0<d&&0==mxUtils.mod(d,4)&&mxUtils.br(c),b(a[d])}function d(a){mxEvent.addListener(a,"mouseenter",function(){a.style.opacity="1"});mxEvent.addListener(a,"mouseleave",function(){a.style.opacity="0.5"})}var g=this.editorUi.editor.graph,c=document.createElement("div");c.style.whiteSpace="nowrap";c.style.paddingLeft="24px";c.style.paddingRight="20px";a.style.paddingLeft="16px";a.style.paddingBottom="6px";a.style.position="relative";a.appendChild(c); -var n="plain-gray plain-blue plain-green plain-turquoise plain-orange plain-yellow plain-red plain-pink plain-purple gray blue green turquoise orange yellow red pink purple".split(" ");null==this.editorUi.currentScheme&&(this.editorUi.currentScheme=0);var m=document.createElement("div");m.style.cssText="position:absolute;left:10px;top:8px;bottom:8px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);"; -mxEvent.addListener(m,"click",mxUtils.bind(this,function(){this.editorUi.currentScheme=mxUtils.mod(this.editorUi.currentScheme-1,this.defaultColorSchemes.length);b(this.defaultColorSchemes[this.editorUi.currentScheme])}));var f=document.createElement("div");f.style.cssText="position:absolute;left:202px;top:8px;bottom:8px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYBuwCcAAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADZJREFUCNdjQAOMAmBKaiGY8loF5rKswsZlrVo8AUiFrTICcbIWK8A5DF1gDoMymMPApIAwHwCS0Qx/U7qCBQAAAABJRU5ErkJggg==);"; -1<this.defaultColorSchemes.length&&(a.appendChild(m),a.appendChild(f));mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.editorUi.currentScheme=mxUtils.mod(this.editorUi.currentScheme+1,this.defaultColorSchemes.length);b(this.defaultColorSchemes[this.editorUi.currentScheme])}));d(m);d(f);b(this.defaultColorSchemes[this.editorUi.currentScheme]);return a};StyleFormatPanel.prototype.addEditOps=function(a){var b=this.format.getSelectionState(),d=null;1==this.editorUi.editor.graph.getSelectionCount()&& +b.style.background="url('"+Dialog.prototype.noColorImage+"')":b.style.backgroundColor=a.fill||mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),b.style.border="1px solid "+(a.stroke||mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000"));else{var d=mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),n=mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");b.style.backgroundColor=d;b.style.border="1px solid "+ +n}c.appendChild(b)}c.innerHTML="";for(var d=0;d<a.length;d++)0<d&&0==mxUtils.mod(d,4)&&mxUtils.br(c),b(a[d])}function d(a){mxEvent.addListener(a,"mouseenter",function(){a.style.opacity="1"});mxEvent.addListener(a,"mouseleave",function(){a.style.opacity="0.5"})}var g=this.editorUi.editor.graph,c=document.createElement("div");c.style.whiteSpace="nowrap";c.style.paddingLeft="24px";c.style.paddingRight="20px";a.style.paddingLeft="16px";a.style.paddingBottom="6px";a.style.position="relative";a.appendChild(c); +var m="plain-gray plain-blue plain-green plain-turquoise plain-orange plain-yellow plain-red plain-pink plain-purple gray blue green turquoise orange yellow red pink purple".split(" ");null==this.editorUi.currentScheme&&(this.editorUi.currentScheme=0);var n=document.createElement("div");n.style.cssText="position:absolute;left:10px;top:8px;bottom:8px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);"; +mxEvent.addListener(n,"click",mxUtils.bind(this,function(){this.editorUi.currentScheme=mxUtils.mod(this.editorUi.currentScheme-1,this.defaultColorSchemes.length);b(this.defaultColorSchemes[this.editorUi.currentScheme])}));var e=document.createElement("div");e.style.cssText="position:absolute;left:202px;top:8px;bottom:8px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYBuwCcAAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADZJREFUCNdjQAOMAmBKaiGY8loF5rKswsZlrVo8AUiFrTICcbIWK8A5DF1gDoMymMPApIAwHwCS0Qx/U7qCBQAAAABJRU5ErkJggg==);"; +1<this.defaultColorSchemes.length&&(a.appendChild(n),a.appendChild(e));mxEvent.addListener(e,"click",mxUtils.bind(this,function(){this.editorUi.currentScheme=mxUtils.mod(this.editorUi.currentScheme+1,this.defaultColorSchemes.length);b(this.defaultColorSchemes[this.editorUi.currentScheme])}));d(n);d(e);b(this.defaultColorSchemes[this.editorUi.currentScheme]);return a};StyleFormatPanel.prototype.addEditOps=function(a){var b=this.format.getSelectionState(),d=null;1==this.editorUi.editor.graph.getSelectionCount()&& (d=mxUtils.button(mxResources.get("editStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("editStyle").funct()})),d.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),d.style.width="202px",d.style.marginBottom="2px",a.appendChild(d));var g=this.editorUi.editor.graph,c=g.view.getState(g.getSelectionCell());1==g.getSelectionCount()&&null!=c&&null!=c.shape&&null!=c.shape.stencil?(b=mxUtils.button(mxResources.get("editShape"),mxUtils.bind(this, function(a){this.editorUi.actions.get("editShape").funct()})),b.setAttribute("title",mxResources.get("editShape")),b.style.marginBottom="2px",null==d?b.style.width="202px":(d.style.width="100px",b.style.width="100px",b.style.marginLeft="2px"),a.appendChild(b)):b.image&&(b=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,function(a){this.editorUi.actions.get("image").funct()})),b.setAttribute("title",mxResources.get("editImage")),b.style.marginBottom="2px",null==d?b.style.width="202px": (d.style.width="100px",b.style.width="100px",b.style.marginLeft="2px"),a.appendChild(b));return a}}Graph.prototype.defaultThemeName="default-style2";Graph.prototype.lastPasteXml=null;Graph.prototype.pasteCounter=0;Graph.prototype.defaultScrollbars="0"!=urlParams.sb;Graph.prototype.defaultPageVisible="0"!=urlParams.pv;Graph.prototype.shadowId="dropShadow";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity="0.4";Graph.prototype.svgShadowBlur="1.7";Graph.prototype.svgShadowSize= -"3";Graph.prototype.edgeMode="move"!=urlParams.edge;var q=Graph.prototype.init;Graph.prototype.init=function(){function a(a){b=a;if(mxClient.IS_QUIRKS||7==document.documentMode||8==document.documentMode)b=mxUtils.clone(a)}q.apply(this,arguments);var b=null;mxEvent.addListener(this.container,"mouseenter",a);mxEvent.addListener(this.container,"mousemove",a);mxEvent.addListener(this.container,"mouseleave",function(a){b=null});this.isMouseInsertPoint=function(){return null!=b};var d=this.getInsertPoint; +"3";Graph.prototype.edgeMode="move"!=urlParams.edge;var m=Graph.prototype.init;Graph.prototype.init=function(){function a(a){b=a;if(mxClient.IS_QUIRKS||7==document.documentMode||8==document.documentMode)b=mxUtils.clone(a)}m.apply(this,arguments);var b=null;mxEvent.addListener(this.container,"mouseenter",a);mxEvent.addListener(this.container,"mousemove",a);mxEvent.addListener(this.container,"mouseleave",function(a){b=null});this.isMouseInsertPoint=function(){return null!=b};var d=this.getInsertPoint; this.getInsertPoint=function(){return null!=b?this.getPointForEvent(b):d.apply(this,arguments)};var g=this.layoutManager.getLayout;this.layoutManager.getLayout=function(a){var b=this.graph.view.getState(a),b=null!=b?b.style:this.graph.getCellStyle(a);if(null!=b){if("undefined"!=typeof mxRackContainer&&"rack"==b.childLayout){var d=new mxStackLayout(this.graph,!1);d.setChildGeometry=function(a,b){b.height=Math.max(b.height,20);if(1<b.height/20){var d=b.height%20;b.height+=10<d?20-d:-d}this.graph.getModel().setGeometry(a, b)};d.fill=!0;d.unitSize=mxRackContainer.unitSize|20;d.marginLeft=b.marginLeft||0;d.marginRight=b.marginRight||0;d.marginTop=b.marginTop||0;d.marginBottom=b.marginBottom||0;d.resizeParent=!1;return d}if("undefined"!=typeof mxTableLayout&&"tableLayout"==b.childLayout)return d=new mxTableLayout(this.graph),d.rows=b.tableRows||2,d.columns=b.tableColumns||2,d.colPercentages=b.colPercentages,d.rowPercentages=b.rowPercentages,d.equalColumns="1"==mxUtils.getValue(b,"equalColumns",d.colPercentages?"0":"1"), d.equalRows="1"==mxUtils.getValue(b,"equalRows",d.rowPercentages?"0":"1"),d.resizeParent="1"==mxUtils.getValue(b,"resizeParent","1"),d.border=b.tableBorder||d.border,d.marginLeft=b.marginLeft||0,d.marginRight=b.marginRight||0,d.marginTop=b.marginTop||0,d.marginBottom=b.marginBottom||0,d.autoAddCol="1"==mxUtils.getValue(b,"autoAddCol","0"),d.autoAddRow="1"==mxUtils.getValue(b,"autoAddRow",d.autoAddCol?"0":"1"),d.colWidths=b.colWidths||"100",d.rowHeights=b.rowHeights||"50",d}return g.apply(this,arguments)}}; -var u=Graph.prototype.isCssTransformsSupported;Graph.prototype.isCssTransformsSupported=function(){return u.apply(this,arguments)&&!mxClient.IS_SF};var v=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(a){var b=v.apply(this,arguments);if(null==b){if(null==this.globalUrlVars&&null!=urlParams.vars)try{this.globalUrlVars=JSON.parse(decodeURIComponent(urlParams.vars))}catch(C){null!=window.console&&console.log("Error in vars URL parameter: "+C)}null!=this.globalUrlVars&&(b= -this.globalUrlVars[a])}return b};var w=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){w.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var a=this.getDrawPane().parentNode;!this.graph.mathEnabled||mxClient.NO_FO||null!=this.webKitForceRepaintNode&&null!=this.webKitForceRepaintNode.parentNode||"svg"!=this.graph.container.firstChild.nodeName?null==this.webKitForceRepaintNode||this.graph.mathEnabled&&("svg"==this.graph.container.firstChild.nodeName|| -this.graph.container.firstChild==this.webKitForceRepaintNode)||(null!=this.webKitForceRepaintNode.parentNode&&this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",a.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,a.ownerSVGElement))}};var y=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet= -function(){y.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(a){if("data:action/json,"==a.substring(0,17)&&(a=JSON.parse(a.substring(17)),null!=a.actions)){for(var b=0;b<a.actions.length;b++)if(null!=a.actions[b].open)if(this.isCustomLink(a.actions[b].open)){if(!this.customLinkClicked(a.actions[b].open))return}else this.openLink(a.actions[b].open);this.model.beginUpdate();try{for(b=0;b<a.actions.length;b++)this.handleLinkAction(a.actions[b])}finally{this.model.endUpdate()}}}; +var v=Graph.prototype.isCssTransformsSupported;Graph.prototype.isCssTransformsSupported=function(){return v.apply(this,arguments)&&!mxClient.IS_SF};var t=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(a){var b=t.apply(this,arguments);if(null==b){if(null==this.globalUrlVars&&null!=urlParams.vars)try{this.globalUrlVars=JSON.parse(decodeURIComponent(urlParams.vars))}catch(F){null!=window.console&&console.log("Error in vars URL parameter: "+F)}null!=this.globalUrlVars&&(b= +this.globalUrlVars[a])}return b};var y=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){y.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var a=this.getDrawPane().parentNode;!this.graph.mathEnabled||mxClient.NO_FO||null!=this.webKitForceRepaintNode&&null!=this.webKitForceRepaintNode.parentNode||"svg"!=this.graph.container.firstChild.nodeName?null==this.webKitForceRepaintNode||this.graph.mathEnabled&&("svg"==this.graph.container.firstChild.nodeName|| +this.graph.container.firstChild==this.webKitForceRepaintNode)||(null!=this.webKitForceRepaintNode.parentNode&&this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",a.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,a.ownerSVGElement))}};var B=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet= +function(){B.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(a){if("data:action/json,"==a.substring(0,17)&&(a=JSON.parse(a.substring(17)),null!=a.actions)){for(var b=0;b<a.actions.length;b++)if(null!=a.actions[b].open)if(this.isCustomLink(a.actions[b].open)){if(!this.customLinkClicked(a.actions[b].open))return}else this.openLink(a.actions[b].open);this.model.beginUpdate();try{for(b=0;b<a.actions.length;b++)this.handleLinkAction(a.actions[b])}finally{this.model.endUpdate()}}}; Graph.prototype.handleLinkAction=function(a){var b=[];null!=a.select&&this.isEnabled()&&(b=this.getCellsForAction(a.select),this.setSelectionCells(b));null!=a.highlight&&(b=this.getCellsForAction(a.highlight),this.highlightCells(b,a.highlight.color,a.highlight.duration,a.highlight.opacity));null!=a.toggle&&this.toggleCells(this.getCellsForAction(a.toggle));null!=a.show&&this.setCellsVisible(this.getCellsForAction(a.show),!0);null!=a.hide&&this.setCellsVisible(this.getCellsForAction(a.hide),!1);null!= a.scroll&&(b=this.getCellsForAction(a.scroll));0<b.length&&this.scrollCellToVisible(b[0])};Graph.prototype.getCellsForAction=function(a){return this.getCellsById(a.cells).concat(this.getCellsForTags(a.tags))};Graph.prototype.getCellsById=function(a){var b=[];if(null!=a)for(var d=0;d<a.length;d++)if("*"==a[d])var g=this.getDefaultParent(),b=b.concat(this.model.filterDescendants(function(a){return a!=g},g));else{var c=this.model.getCell(a[d]);null!=c&&b.push(c)}return b};Graph.prototype.getCellsForTags= -function(a,b,d){var g=[];if(null!=a){b=null!=b?b:this.model.getDescendants(this.model.getRoot());d=null!=d?d:"tags";for(var c=0;c<b.length;c++)if(this.model.isVertex(b[c])||this.model.isEdge(b[c])){var n=null!=b[c].value&&"object"==typeof b[c].value?mxUtils.trim(b[c].value.getAttribute(d)||""):"",m=!0;if(0<n.length)for(var n=n.toLowerCase().split(" "),f=0;f<a.length&&m;f++)var q=mxUtils.trim(a[f]).toLowerCase(),m=m&&(0==q.length||0<=mxUtils.indexOf(n,q));else m=0==a.length;m&&g.push(b[c])}}return g}; +function(a,b,d){var g=[];if(null!=a){b=null!=b?b:this.model.getDescendants(this.model.getRoot());d=null!=d?d:"tags";for(var c=0;c<b.length;c++)if(this.model.isVertex(b[c])||this.model.isEdge(b[c])){var m=null!=b[c].value&&"object"==typeof b[c].value?mxUtils.trim(b[c].value.getAttribute(d)||""):"",n=!0;if(0<m.length)for(var m=m.toLowerCase().split(" "),e=0;e<a.length&&n;e++)var x=mxUtils.trim(a[e]).toLowerCase(),n=n&&(0==x.length||0<=mxUtils.indexOf(m,x));else n=0==a.length;n&&g.push(b[c])}}return g}; Graph.prototype.toggleCells=function(a){this.model.beginUpdate();try{for(var b=0;b<a.length;b++)this.model.setVisible(a[b],!this.model.isVisible(a[b]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(a,b){this.model.beginUpdate();try{for(var d=0;d<a.length;d++)this.model.setVisible(a[d],b)}finally{this.model.endUpdate()}};Graph.prototype.highlightCells=function(a,b,d,g){for(var c=0;c<a.length;c++)this.highlightCell(a[c],b,d,g)};Graph.prototype.highlightCell=function(a,b, -d,g){b=null!=b?b:mxConstants.DEFAULT_VALID_COLOR;d=null!=d?d:1E3;a=this.view.getState(a);if(null!=a){var c=Math.max(5,mxUtils.getValue(a.style,mxConstants.STYLE_STROKEWIDTH,1)+4),n=new mxCellHighlight(this,b,c,!1);null!=g&&(n.opacity=g);n.highlight(a);window.setTimeout(function(){null!=n.shape&&(mxUtils.setPrefixedStyle(n.shape.node.style,"transition","all 1200ms ease-in-out"),n.shape.node.style.opacity=0);window.setTimeout(function(){n.destroy()},1200)},d)}};Graph.prototype.addSvgShadow=function(a, -b,d){d=null!=d?d:!1;var g=a.ownerDocument,c=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG,"filter"):g.createElement("filter");c.setAttribute("id",this.shadowId);var n=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):g.createElement("feGaussianBlur");n.setAttribute("in","SourceAlpha");n.setAttribute("stdDeviation",this.svgShadowBlur);n.setAttribute("result","blur");c.appendChild(n);n=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG,"feOffset"): -g.createElement("feOffset");n.setAttribute("in","blur");n.setAttribute("dx",this.svgShadowSize);n.setAttribute("dy",this.svgShadowSize);n.setAttribute("result","offsetBlur");c.appendChild(n);n=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG,"feFlood"):g.createElement("feFlood");n.setAttribute("flood-color",this.svgShadowColor);n.setAttribute("flood-opacity",this.svgShadowOpacity);n.setAttribute("result","offsetColor");c.appendChild(n);n=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG, -"feComposite"):g.createElement("feComposite");n.setAttribute("in","offsetColor");n.setAttribute("in2","offsetBlur");n.setAttribute("operator","in");n.setAttribute("result","offsetBlur");c.appendChild(n);n=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG,"feBlend"):g.createElement("feBlend");n.setAttribute("in","SourceGraphic");n.setAttribute("in2","offsetBlur");c.appendChild(n);n=a.getElementsByTagName("defs");0==n.length?(g=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG, -"defs"):g.createElement("defs"),null!=a.firstChild?a.insertBefore(g,a.firstChild):a.appendChild(g)):g=n[0];g.appendChild(c);d||((b||a.getElementsByTagName("g")[0]).setAttribute("filter","url(#"+this.shadowId+")"),isNaN(parseInt(a.getAttribute("width")))||(a.setAttribute("width",parseInt(a.getAttribute("width"))+6),a.setAttribute("height",parseInt(a.getAttribute("height"))+6)));return c};Graph.prototype.setShadowVisible=function(a,b){mxClient.IS_SVG&&(b=null!=b?b:!0,(this.shadowVisible=a)?this.view.getDrawPane().setAttribute("filter", -"url(#"+this.shadowId+")"):this.view.getDrawPane().removeAttribute("filter"),b&&this.fireEvent(new mxEventObject("shadowVisibleChanged")))};Graph.prototype.selectUnlockedLayer=function(){if(null==this.defaultParent){var a=this.model.getChildCount(this.model.root),b,d=0;do b=this.model.getChildAt(this.model.root,d);while(d++<a&&"1"==mxUtils.getValue(this.getCellStyle(b),"locked","0"));null!=b&&this.setDefaultParent(b)}};mxStencilRegistry.libraries.mockup=[SHAPES_PATH+"/mockup/mxMockupButtons.js"]; -mxStencilRegistry.libraries.arrows2=[SHAPES_PATH+"/mxArrows.js"];mxStencilRegistry.libraries.atlassian=[STENCIL_PATH+"/atlassian.xml",SHAPES_PATH+"/mxAtlassian.js"];mxStencilRegistry.libraries.bpmn=[SHAPES_PATH+"/bpmn/mxBpmnShape2.js",STENCIL_PATH+"/bpmn.xml"];mxStencilRegistry.libraries.dfd=[SHAPES_PATH+"/mxDFD.js"];mxStencilRegistry.libraries.er=[SHAPES_PATH+"/er/mxER.js"];mxStencilRegistry.libraries.flowchart=[SHAPES_PATH+"/mxFlowchart.js",STENCIL_PATH+"/flowchart.xml"];mxStencilRegistry.libraries.ios= -[SHAPES_PATH+"/mockup/mxMockupiOS.js"];mxStencilRegistry.libraries.rackGeneral=[SHAPES_PATH+"/rack/mxRack.js",STENCIL_PATH+"/rack/general.xml"];mxStencilRegistry.libraries.rackF5=[STENCIL_PATH+"/rack/f5.xml"];mxStencilRegistry.libraries.lean_mapping=[SHAPES_PATH+"/mxLeanMap.js",STENCIL_PATH+"/lean_mapping.xml"];mxStencilRegistry.libraries.basic=[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/basic.xml"];mxStencilRegistry.libraries.ios7icons=[STENCIL_PATH+"/ios7/icons.xml"];mxStencilRegistry.libraries.ios7ui= -[SHAPES_PATH+"/ios7/mxIOS7Ui.js",STENCIL_PATH+"/ios7/misc.xml"];mxStencilRegistry.libraries.android=[SHAPES_PATH+"/mxAndroid.js",STENCIL_PATH+"/android/android.xml"];mxStencilRegistry.libraries["electrical/transmission"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/transmission.xml"];mxStencilRegistry.libraries["electrical/logic_gates"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/logic_gates.xml"];mxStencilRegistry.libraries["electrical/abstract"]=[SHAPES_PATH+"/mxElectrical.js", -STENCIL_PATH+"/electrical/abstract.xml"];mxStencilRegistry.libraries.infographic=[SHAPES_PATH+"/mxInfographic.js"];mxStencilRegistry.libraries["mockup/buttons"]=[SHAPES_PATH+"/mockup/mxMockupButtons.js"];mxStencilRegistry.libraries["mockup/containers"]=[SHAPES_PATH+"/mockup/mxMockupContainers.js"];mxStencilRegistry.libraries["mockup/forms"]=[SHAPES_PATH+"/mockup/mxMockupForms.js"];mxStencilRegistry.libraries["mockup/graphics"]=[SHAPES_PATH+"/mockup/mxMockupGraphics.js",STENCIL_PATH+"/mockup/misc.xml"]; -mxStencilRegistry.libraries["mockup/markup"]=[SHAPES_PATH+"/mockup/mxMockupMarkup.js"];mxStencilRegistry.libraries["mockup/misc"]=[SHAPES_PATH+"/mockup/mxMockupMisc.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/navigation"]=[SHAPES_PATH+"/mockup/mxMockupNavigation.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/text"]=[SHAPES_PATH+"/mockup/mxMockupText.js"];mxStencilRegistry.libraries.floorplan=[SHAPES_PATH+"/mxFloorplan.js",STENCIL_PATH+"/floorplan.xml"]; -mxStencilRegistry.libraries.bootstrap=[SHAPES_PATH+"/mxBootstrap.js",STENCIL_PATH+"/bootstrap.xml"];mxStencilRegistry.libraries.gmdl=[SHAPES_PATH+"/mxGmdl.js",STENCIL_PATH+"/gmdl.xml"];mxStencilRegistry.libraries.gcp2=[SHAPES_PATH+"/mxGCP2.js",STENCIL_PATH+"/gcp2.xml"];mxStencilRegistry.libraries.cabinets=[SHAPES_PATH+"/mxCabinets.js",STENCIL_PATH+"/cabinets.xml"];mxStencilRegistry.libraries.archimate=[SHAPES_PATH+"/mxArchiMate.js"];mxStencilRegistry.libraries.archimate3=[SHAPES_PATH+"/mxArchiMate3.js"]; -mxStencilRegistry.libraries.sysml=[SHAPES_PATH+"/mxSysML.js"];mxStencilRegistry.libraries.eip=[SHAPES_PATH+"/mxEip.js",STENCIL_PATH+"/eip.xml"];mxStencilRegistry.libraries.networks=[SHAPES_PATH+"/mxNetworks.js",STENCIL_PATH+"/networks.xml"];mxStencilRegistry.libraries.aws3d=[SHAPES_PATH+"/mxAWS3D.js",STENCIL_PATH+"/aws3d.xml"];mxStencilRegistry.libraries.aws4=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.veeam=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml", -STENCIL_PATH+"/veeam/veeam.xml"];mxStencilRegistry.libraries.pid2inst=[SHAPES_PATH+"/pid2/mxPidInstruments.js"];mxStencilRegistry.libraries.pid2misc=[SHAPES_PATH+"/pid2/mxPidMisc.js",STENCIL_PATH+"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"];mxMarker.getPackageForType=function(a){var b=null;null!=a&&0<a.length&&("ER"==a.substring(0,2)?b="mxgraph.er":"sysML"==a.substring(0, -5)&&(b="mxgraph.sysml"));return b};var m=mxMarker.createMarker;mxMarker.createMarker=function(a,b,d,g,c,n,f,q,u,w){if(null!=d&&null==mxMarker.markers[d]){var h=this.getPackageForType(d);null!=h&&mxStencilRegistry.getStencil(h)}return m.apply(this,arguments)};PrintDialog.prototype.create=function(a,b){function d(){x.value=Math.max(1,Math.min(f,Math.max(parseInt(x.value),parseInt(k.value))));k.value=Math.max(1,Math.min(f,Math.min(parseInt(x.value),parseInt(k.value))))}function g(b){function d(b,d,c){var n= -b.getGraphBounds(),m=0,f=0,q=W.get(),u=1/b.pageScale,w=z.checked;if(w)var u=parseInt(K.value),h=parseInt(ca.value),u=Math.min(q.height*h/(n.height/b.view.scale),q.width*u/(n.width/b.view.scale));else u=parseInt(y.value)/(100*b.pageScale),isNaN(u)&&(g=1/b.pageScale,y.value="100 %");q=mxRectangle.fromRectangle(q);q.width=Math.ceil(q.width*g);q.height=Math.ceil(q.height*g);u*=g;!w&&b.pageVisible?(n=b.getPageLayout(),m-=n.x*q.width,f-=n.y*q.height):w=!0;if(null==d){d=PrintDialog.createPrintPreview(b, -u,q,0,m,f,w);d.pageSelector=!1;d.mathEnabled=!1;b=a.getCurrentFile();null!=b&&(d.title=b.getTitle());var k=d.writeHead;d.writeHead=function(b){k.apply(this,arguments);null!=a.editor.fontCss&&(b.writeln('<style type="text/css">'),b.writeln(a.editor.fontCss),b.writeln("</style>"))};if("undefined"!==typeof MathJax){var v=d.renderPage;d.renderPage=function(a,b,d,g,c,n){var m=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;var f=v.apply(this, -arguments);mxClient.NO_FO=m;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:f.className="geDisableMathJax";return f}}d.open(null,null,c,!0)}else{q=b.background;if(null==q||""==q||q==mxConstants.NONE)q="#ffffff";d.backgroundColor=q;d.autoOrigin=w;d.appendGraph(b,u,m,f,c,!0)}return d}var g=parseInt(ea.value)/100;isNaN(g)&&(g=1,ea.value="100 %");var g=.75*g,n=k.value,m=x.value,f=!w.checked,u=null;f&&(f=n==q&&m==q);if(!f&&null!=a.pages&&a.pages.length){var h=0,f=a.pages.length-1;w.checked|| -(h=parseInt(n)-1,f=parseInt(m)-1);for(var v=h;v<=f;v++){var l=a.pages[v],n=l==a.currentPage?c:null;if(null==n){var n=a.createTemporaryGraph(c.getStylesheet()),m=!0,h=!1,t=null,p=null;null==l.viewState&&null==l.root&&a.updatePageRoot(l);null!=l.viewState&&(m=l.viewState.pageVisible,h=l.viewState.mathEnabled,t=l.viewState.background,p=l.viewState.backgroundImage);n.background=t;n.backgroundImage=null!=p?new mxImage(p.src,p.width,p.height):null;n.pageVisible=m;n.mathEnabled=h;var F=n.getGlobalVariable; -n.getGlobalVariable=function(a){return"page"==a?l.getName():"pagenumber"==a?v+1:F.apply(this,arguments)};document.body.appendChild(n.container);a.updatePageRoot(l);n.model.setRoot(l.root)}u=d(n,u,v!=f);n!=c&&n.container.parentNode.removeChild(n.container)}}else u=d(c);u.mathEnabled&&(f=u.wnd.document,f.writeln('<script type="text/x-mathjax-config">'),f.writeln("MathJax.Hub.Config({"),f.writeln("showMathMenu: false,"),f.writeln('messageStyle: "none",'),f.writeln('jax: ["input/TeX", "input/MathML", "input/AsciiMath", "output/HTML-CSS"],'), -f.writeln('extensions: ["tex2jax.js", "mml2jax.js", "asciimath2jax.js"],'),f.writeln('"HTML-CSS": {'),f.writeln("imageFont: null"),f.writeln("},"),f.writeln("TeX: {"),f.writeln('extensions: ["AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js"]'),f.writeln("},"),f.writeln("tex2jax: {"),f.writeln('\tignoreClass: "geDisableMathJax"'),f.writeln("},"),f.writeln("asciimath2jax: {"),f.writeln('\tignoreClass: "geDisableMathJax"'),f.writeln("}"),f.writeln("});"),b&&(f.writeln("MathJax.Hub.Queue(function () {"), -f.writeln("window.print();"),f.writeln("});")),f.writeln("\x3c/script>"),f.writeln('<script type="text/javascript" src="https://math.draw.io/current/MathJax.js">\x3c/script>'));u.closeDocument();!u.mathEnabled&&b&&PrintDialog.printPreview(u)}var c=a.editor.graph,n=document.createElement("div"),m=document.createElement("h3");m.style.width="100%";m.style.textAlign="center";m.style.marginTop="0px";mxUtils.write(m,b||mxResources.get("print"));n.appendChild(m);var f=1,q=1,u=document.createElement("div"); -u.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var w=document.createElement("input");w.style.cssText="margin-right:8px;margin-bottom:8px;";w.setAttribute("value","all");w.setAttribute("type","radio");w.setAttribute("name","pages-printdialog");u.appendChild(w);m=document.createElement("span");mxUtils.write(m,mxResources.get("printAllPages"));u.appendChild(m);mxUtils.br(u);var h=w.cloneNode(!0);w.setAttribute("checked","checked");h.setAttribute("value","range"); -u.appendChild(h);m=document.createElement("span");mxUtils.write(m,mxResources.get("pages")+":");u.appendChild(m);var k=document.createElement("input");k.style.cssText="margin:0 8px 0 8px;";k.setAttribute("value","1");k.setAttribute("type","number");k.setAttribute("min","1");k.style.width="50px";u.appendChild(k);m=document.createElement("span");mxUtils.write(m,mxResources.get("to"));u.appendChild(m);var x=k.cloneNode(!0);u.appendChild(x);mxEvent.addListener(k,"focus",function(){h.checked=!0});mxEvent.addListener(x, -"focus",function(){h.checked=!0});mxEvent.addListener(k,"change",d);mxEvent.addListener(x,"change",d);if(null!=a.pages&&(f=a.pages.length,null!=a.currentPage))for(m=0;m<a.pages.length;m++)if(a.currentPage==a.pages[m]){q=m+1;k.value=q;x.value=q;break}k.setAttribute("max",f);x.setAttribute("max",f);1<f&&n.appendChild(u);var v=document.createElement("div");v.style.marginBottom="10px";var l=document.createElement("input");l.style.marginRight="8px";l.setAttribute("value","adjust");l.setAttribute("type", -"radio");l.setAttribute("name","printZoom");v.appendChild(l);m=document.createElement("span");mxUtils.write(m,mxResources.get("adjustTo"));v.appendChild(m);var y=document.createElement("input");y.style.cssText="margin:0 8px 0 8px;";y.setAttribute("value","100 %");y.style.width="50px";v.appendChild(y);mxEvent.addListener(y,"focus",function(){l.checked=!0});n.appendChild(v);var u=u.cloneNode(!1),z=l.cloneNode(!0);z.setAttribute("value","fit");l.setAttribute("checked","checked");m=document.createElement("div"); -m.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";m.appendChild(z);u.appendChild(m);v=document.createElement("table");v.style.display="inline-block";var t=document.createElement("tbody"),p=document.createElement("tr"),F=p.cloneNode(!0),N=document.createElement("td"),X=N.cloneNode(!0),P=N.cloneNode(!0),U=N.cloneNode(!0),S=N.cloneNode(!0),ba=N.cloneNode(!0);N.style.textAlign="right";U.style.textAlign="right";mxUtils.write(N,mxResources.get("fitTo"));var K=document.createElement("input"); -K.style.cssText="margin:0 8px 0 8px;";K.setAttribute("value","1");K.setAttribute("min","1");K.setAttribute("type","number");K.style.width="40px";X.appendChild(K);m=document.createElement("span");mxUtils.write(m,mxResources.get("fitToSheetsAcross"));P.appendChild(m);mxUtils.write(U,mxResources.get("fitToBy"));var ca=K.cloneNode(!0);S.appendChild(ca);mxEvent.addListener(K,"focus",function(){z.checked=!0});mxEvent.addListener(ca,"focus",function(){z.checked=!0});m=document.createElement("span");mxUtils.write(m, -mxResources.get("fitToSheetsDown"));ba.appendChild(m);p.appendChild(N);p.appendChild(X);p.appendChild(P);F.appendChild(U);F.appendChild(S);F.appendChild(ba);t.appendChild(p);t.appendChild(F);v.appendChild(t);u.appendChild(v);n.appendChild(u);u=document.createElement("div");m=document.createElement("div");m.style.fontWeight="bold";m.style.marginBottom="12px";mxUtils.write(m,mxResources.get("paperSize"));u.appendChild(m);m=document.createElement("div");m.style.marginBottom="12px";var W=PageSetupDialog.addPageFormatPanel(m, -"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);u.appendChild(m);m=document.createElement("span");mxUtils.write(m,mxResources.get("pageScale"));u.appendChild(m);var ea=document.createElement("input");ea.style.cssText="margin:0 8px 0 8px;";ea.setAttribute("value","100 %");ea.style.width="60px";u.appendChild(ea);n.appendChild(u);m=document.createElement("div");m.style.cssText="text-align:right;margin:48px 0 0 0;";u=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()}); -u.className="geBtn";a.editor.cancelFirst&&m.appendChild(u);a.isOffline()||(v=mxUtils.button(mxResources.get("help"),function(){c.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),v.className="geBtn",m.appendChild(v));PrintDialog.previewEnabled&&(v=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();g(!1)}),v.className="geBtn",m.appendChild(v));v=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();g(!0)});v.className= -"geBtn gePrimaryBtn";m.appendChild(v);a.editor.cancelFirst||m.appendChild(u);n.appendChild(m);this.container=n};var x=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page=this.ui.currentPage);this.page!=this.ui.currentPage?null!=this.page.viewState&&(this.ignoreColor||(this.page.viewState.background=this.color),this.ignoreImage||(this.page.viewState.backgroundImage=this.image),null!=this.format&&(this.page.viewState.pageFormat=this.format),null!= -this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled),null!=this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)):(x.apply(this,arguments),null!=this.mathEnabled&&this.mathEnabled!=this.ui.isMathEnabled()&&(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled),null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=!this.shadowVisible))}})(); -var ErrorDialog=function(a,c,b,f,k,h,l,t,p,d,g){p=null!=p?p:!0;var n=document.createElement("div");n.style.textAlign="center";if(null!=c){var q=document.createElement("div");q.style.padding="0px";q.style.margin="0px";q.style.fontSize="18px";q.style.paddingBottom="16px";q.style.marginBottom="16px";q.style.borderBottom="1px solid #c0c0c0";q.style.color="gray";q.style.whiteSpace="nowrap";q.style.textOverflow="ellipsis";q.style.overflow="hidden";mxUtils.write(q,c);q.setAttribute("title",c);n.appendChild(q)}c= -document.createElement("div");c.style.padding="6px";c.innerHTML=b;n.appendChild(c);b=document.createElement("div");b.style.marginTop="16px";b.style.textAlign="center";null!=h&&(c=mxUtils.button(mxResources.get("tryAgain"),function(){a.hideDialog();h()}),c.className="geBtn",b.appendChild(c),b.style.textAlign="center");null!=d&&(d=mxUtils.button(d,function(){null!=g&&g()}),d.className="geBtn",b.appendChild(d));var u=mxUtils.button(f,function(){p&&a.hideDialog();null!=k&&k()});u.className="geBtn";b.appendChild(u); -null!=l&&(f=mxUtils.button(l,function(){p&&a.hideDialog();null!=t&&t()}),f.className="geBtn gePrimaryBtn",b.appendChild(f));this.init=function(){u.focus()};n.appendChild(b);this.container=n}; -(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,b,f){f.ui=a.ui;return b};a.afterDecode=function(a,b,f){f.previousColor=f.color;f.previousImage=f.image;f.previousFormat=f.format;null!=f.foldingEnabled&&(f.foldingEnabled=!f.foldingEnabled);null!=f.mathEnabled&&(f.mathEnabled=!f.mathEnabled);null!=f.shadowVisible&&(f.shadowVisible=!f.shadowVisible);return f};mxCodecRegistry.register(a)})();(function(){EditorUi.VERSION="10.1.2";EditorUi.compactUi="atlas"!=uiTheme;EditorUi.enableLogging="1"!=urlParams.stealth&&/.*\.draw\.io$/.test(window.location.hostname)&&"support.draw.io"!=window.location.hostname;EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.logError=function(a,b,c,f,u){if("1"==urlParams.dev)EditorUi.debug("logError",a,b,c,f,u);else if(EditorUi.enableLogging)try{if(a!=EditorUi.lastErrorMessage&&(null== -a||null==b||-1==a.indexOf("Script error")&&-1==a.indexOf("extension"))&&null!=a&&0>a.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=a;var d=0<=a.indexOf("NetworkError")||0<=a.indexOf("SecurityError")||0<=a.indexOf("NS_ERROR_FAILURE")||0<=a.indexOf("out of memory")?"CONFIG":"SEVERE",g=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=g+"/log?severity="+d+"&v="+encodeURIComponent(EditorUi.VERSION)+"&msg=clientError:"+encodeURIComponent(a)+":url:"+encodeURIComponent(window.location.href)+ -":lnum:"+encodeURIComponent(c)+(null!=f?":colno:"+encodeURIComponent(f):"")+(null!=u&&null!=u.stack?"&stack="+encodeURIComponent(u.stack):"")}}catch(y){}};EditorUi.logEvent=function(a){if("1"==urlParams.dev)EditorUi.debug("logEvent",a);else if(EditorUi.enableLogging)try{var b=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=b+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=a?"&data="+encodeURIComponent(JSON.stringify(a)):"")}catch(n){}};EditorUi.sendReport=function(a, -b){if("1"==urlParams.dev)EditorUi.debug("sendReport",a);else if(EditorUi.enableLogging)try{b=null!=b?b:5E4,a.length>b&&(a=a.substring(0,b)+"\n...[SHORTENED]"),mxUtils.post("/email","version="+encodeURIComponent(EditorUi.VERSION)+"&url="+encodeURIComponent(window.location.href)+"&data="+encodeURIComponent(a))}catch(n){}};EditorUi.debug=function(){if(null!=window.console&&"1"==urlParams.test){for(var a=[(new Date).toISOString()],b=0;b<arguments.length;b++)a.push(arguments[b]);console.log.apply(console, -a)}};EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.scratchpadHelpLink="https://desk.draw.io/support/solutions/articles/16000042367";EditorUi.prototype.emptyDiagramXml='<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/></root></mxGraphModel>';EditorUi.prototype.emptyLibraryXml="<mxlibrary>[]</mxlibrary>"; -EditorUi.prototype.mode=null;EditorUi.prototype.sidebarFooterHeight=36;EditorUi.prototype.defaultCustomShapeStyle="shape=stencil(tZRtTsQgEEBPw1+DJR7AoN6DbWftpAgE0Ortd/jYRGq72R+YNE2YgTePloEJGWblgA18ZuKFDcMj5/Sm8boZq+BgjCX4pTyqk6ZlKROitwusOMXKQDODx5iy4pXxZ5qTHiFHawxB0JrQZH7lCabQ0Fr+XWC1/E8zcsT/gAi+Subo2/3Mh6d/oJb5nU1b5tW7r2knautaa3T+U32o7f7vZwpJkaNDLORJjcu7t59m2jXxqX9un+tt022acsfmoKaQZ+vhhswZtS6Ne/ThQGt0IV0N3Yyv6P3CeT9/tHO0XFI5cAE=);whiteSpace=wrap;html=1;";EditorUi.prototype.svgBrokenImage=Graph.createSvgImage(10, -10,'<rect x="0" y="0" width="10" height="10" stroke="#000" fill="transparent"/><path d="m 0 0 L 10 10 L 0 10 L 10 0" stroke="#000" fill="transparent"/>');EditorUi.prototype.crossOriginImages=!mxClient.IS_IE;EditorUi.prototype.maxBackgroundSize=1600;EditorUi.prototype.maxImageSize=520;EditorUi.prototype.resampleThreshold=1E5;EditorUi.prototype.maxImageBytes=1E6;EditorUi.prototype.maxBackgroundBytes=25E5;EditorUi.prototype.currentFile=null;EditorUi.prototype.printPdfExport=!1;EditorUi.prototype.pdfPageExport= -!0;EditorUi.prototype.formatEnabled="0"!=urlParams.format;EditorUi.prototype.insertTemplateEnabled=!0;EditorUi.prototype.closableScratchpad=!0;(function(){EditorUi.prototype.useCanvasForExport=!1;EditorUi.prototype.jpgSupported=!1;try{var a=document.createElement("canvas");EditorUi.prototype.canvasSupported=!(!a.getContext||!a.getContext("2d"))}catch(u){}try{var b=document.createElement("canvas"),c=new Image;c.onload=function(){try{b.getContext("2d").drawImage(c,0,0);var a=b.toDataURL("image/png"); -EditorUi.prototype.useCanvasForExport=null!=a&&6<a.length}catch(v){}};c.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(u){}try{b=document.createElement("canvas");b.width=b.height=1;var f=b.toDataURL("image/jpeg");EditorUi.prototype.jpgSupported= -null!==f.match("image/jpeg")}catch(u){}})();EditorUi.prototype.openLink=function(a,b,c){return this.editor.graph.openLink(a,b,c)};EditorUi.prototype.showSplash=function(a){};EditorUi.prototype.getLocalData=function(a,b){b(localStorage.getItem(a))};EditorUi.prototype.setLocalData=function(a,b,c){localStorage.setItem(a,b);null!=c&&c()};EditorUi.prototype.removeLocalData=function(a,b){localStorage.removeItem(a);b()};EditorUi.prototype.setMathEnabled=function(a){this.editor.graph.mathEnabled=a;this.editor.updateGraphComponents(); -this.editor.graph.refresh();this.fireEvent(new mxEventObject("mathEnabledChanged"))};EditorUi.prototype.isMathEnabled=function(a){return this.editor.graph.mathEnabled};EditorUi.prototype.isAppCache=function(){return"1"==urlParams.appcache||this.isOfflineApp()};EditorUi.prototype.isOfflineApp=function(){return"1"==urlParams.offline};EditorUi.prototype.isOffline=function(){return this.isOfflineApp()||!navigator.onLine||"1"==urlParams.stealth};EditorUi.prototype.createSpinner=function(a,b,c){c=null!= -c?c:24;var d=new Spinner({lines:12,length:c,width:Math.round(c/3),radius:Math.round(c/2),rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),g=d.spin;d.spin=function(c,n){var m=!1;this.active||(g.call(this,c),this.active=!0,null!=n&&(m=document.createElement("div"),m.style.position="absolute",m.style.whiteSpace="nowrap",m.style.background="#4B4243",m.style.color="white",m.style.fontFamily="Helvetica, Arial",m.style.fontSize="9pt",m.style.padding="6px", -m.style.paddingLeft="10px",m.style.paddingRight="10px",m.style.zIndex=2E9,m.style.left=Math.max(0,a)+"px",m.style.top=Math.max(0,b+70)+"px",mxUtils.setPrefixedStyle(m.style,"borderRadius","6px"),mxUtils.setPrefixedStyle(m.style,"transform","translate(-50%,-50%)"),"dark"!=uiTheme&&mxUtils.setPrefixedStyle(m.style,"boxShadow","2px 2px 3px 0px #ddd"),"..."!=n.substring(n.length-3,n.length)&&(n+="..."),m.innerHTML=n,c.appendChild(m),d.status=m,mxClient.IS_VML&&(null==document.documentMode||8>=document.documentMode)&& -(m.style.left=Math.round(Math.max(0,a-m.offsetWidth/2))+"px",m.style.top=Math.round(Math.max(0,b+70-m.offsetHeight/2))+"px")),this.pause=mxUtils.bind(this,function(){var a=function(){};this.active&&(a=mxUtils.bind(this,function(){this.spin(c,n)}));this.stop();return a}),m=!0);return m};var n=d.stop;d.stop=function(){n.call(this);this.active=!1;null!=d.status&&(d.status.parentNode.removeChild(d.status),d.status=null)};d.pause=function(){return function(){}};return d};EditorUi.parsePng=function(a,b, -c){function d(a,b){var d=n;n+=b;return a.substring(d,n)}function g(a){a=d(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}var n=0;if(d(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=c&&c();else if(d(a,4),"IHDR"!=d(a,4))null!=c&&c();else{d(a,17);do{c=g(a);var f=d(a,4);if(null!=b&&b(n-8,f,c))break;value=d(a,c);d(a,4);if("IEND"==f)break}while(c)}};EditorUi.prototype.isCompatibleString=function(a){try{var b=mxUtils.parseXml(a), -d=this.editor.extractGraphModel(b.documentElement,!0);return null!=d&&0==d.getElementsByTagName("parsererror").length}catch(q){}return!1};var a=EditorUi.prototype.extractGraphModelFromHtml;EditorUi.prototype.extractGraphModelFromHtml=function(b){var d=a.apply(this,arguments);if(null==d)try{var c=b.indexOf("<mxfile ");if(0<=c){var f=b.lastIndexOf("</mxfile>");f>c&&(d=b.substring(c,f+15).replace(/>/g,">").replace(/</g,"<").replace(/\\"/g,'"').replace(/\n/g,""))}else var u=mxUtils.parseXml(b), -h=this.editor.extractGraphModel(u.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility),d=null!=h?mxUtils.getXml(h):""}catch(w){}return d};EditorUi.prototype.validateFileData=function(a){if(null!=a&&0<a.length){var b=a.indexOf('<meta charset="utf-8">');0<=b&&(a=a.slice(0,b)+'<meta charset="utf-8"/>'+a.slice(b+23-1,a.length));a=this.editor.graph.zapGremlins(a)}return a};EditorUi.prototype.replaceFileData=function(a){a=this.validateFileData(a);a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement: -null;var b=null!=a?this.editor.extractGraphModel(a,!0):null;null!=b&&(a=b);if(null!=a){b=this.editor.graph;b.model.beginUpdate();try{var d=null!=this.pages?this.pages.slice():null,c=a.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<c.length||1==c.length&&c[0].hasAttribute("name")){this.fileNode=a;this.pages=null!=this.pages?this.pages:[];for(var f=c.length-1;0<=f;f--){var h=this.updatePageRoot(new DiagramPage(c[f]));null==h.getName()&&h.setName(mxResources.get("pageWithNumber",[f+1])); -b.model.execute(new ChangePage(this,h,0==f?h:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),b.model.execute(new ChangePage(this,this.currentPage,this.currentPage,0))),this.editor.setGraphXml(a),null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=d)for(f=0;f<d.length;f++)b.model.execute(new ChangePage(this, -d[f],null))}finally{b.model.endUpdate()}}};EditorUi.prototype.createFileData=function(a,b,c,f,u,h,w,k,m,x){b=null!=b?b:this.editor.graph;u=null!=u?u:!1;m=null!=m?m:!0;var d,g=null;null==c||c.getMode()==App.MODE_DEVICE||c.getMode()==App.MODE_BROWSER?d="_blank":g=d=f;if(null==a)return"";var n=a;if("mxfile"!=n.nodeName.toLowerCase()){var q=b.zapGremlins(mxUtils.getXml(a)),n=b.compress(q);if(b.decompress(n)!=q)return q;q=a.ownerDocument.createElement("diagram");q.setAttribute("id",Editor.guid());mxUtils.setTextContent(q, -n);n=a.ownerDocument.createElement("mxfile");n.appendChild(q)}x?(n=n.cloneNode(!0),n.removeAttribute("userAgent"),n.removeAttribute("version"),n.removeAttribute("editor"),n.removeAttribute("type")):(n.removeAttribute("userAgent"),n.removeAttribute("version"),n.removeAttribute("editor"),n.removeAttribute("type"),n.setAttribute("modified",(new Date).toISOString()),n.setAttribute("host",window.location.hostname),n.setAttribute("agent",navigator.userAgent),n.setAttribute("version",EditorUi.VERSION),n.setAttribute("etag", -Editor.guid()),a=null!=c?c.getMode():this.mode,null!=a&&n.setAttribute("type",a));a=mxUtils.getXml(n);if(!h&&!u&&(w||null!=c&&/(\.html)$/i.test(c.getTitle())))a=this.getHtml2(mxUtils.getXml(n),b,null!=c?c.getTitle():null,d,g);else if(h||!u&&null!=c&&/(\.svg)$/i.test(c.getTitle()))null==c||c.getMode()!=App.MODE_DEVICE&&c.getMode()!=App.MODE_BROWSER||(f=null),a=this.getEmbeddedSvg(a,b,f,null,k,m,g);return a};EditorUi.prototype.getXmlFileData=function(a,b){a=null!=a?a:!0;b=null!=b?b:!1;var d=this.editor.getGraphXml(a); -if(a&&null!=this.fileNode&&null!=this.currentPage)if(d=this.editor.graph.compress(this.editor.graph.zapGremlins(mxUtils.getXml(d))),mxUtils.setTextContent(this.currentPage.node,d),d=this.fileNode.cloneNode(!1),b)d.appendChild(this.currentPage.node);else for(var g=0;g<this.pages.length;g++){if(this.currentPage!=this.pages[g]&&this.pages[g].needsUpdate){var c=(new mxCodec(mxUtils.createXmlDocument())).encode(new mxGraphModel(this.pages[g].root));this.editor.graph.saveViewState(this.pages[g].viewState, -c);mxUtils.setTextContent(this.pages[g].node,this.editor.graph.compressNode(c));delete this.pages[g].needsUpdate}d.appendChild(this.pages[g].node)}return d};EditorUi.prototype.anonymizeString=function(a,b){for(var d=[],g=0;g<a.length;g++){var c=a.charAt(g);0<=EditorUi.ignoredAnonymizedChars.indexOf(c)?d.push(c):isNaN(parseInt(c))?c.toLowerCase()!=c?d.push(String.fromCharCode(65+Math.round(25*Math.random()))):c.toUpperCase()!=c?d.push(String.fromCharCode(97+Math.round(25*Math.random()))):/\s/.test(c)? -d.push(" "):d.push("?"):d.push(b?"0":Math.round(9*Math.random()))}return d.join("")};EditorUi.prototype.anonymizePatch=function(a){if(null!=a[EditorUi.DIFF_INSERT])for(var b=0;b<a[EditorUi.DIFF_INSERT].length;b++)try{var d=mxUtils.parseXml(a[EditorUi.DIFF_INSERT][b].data).documentElement.cloneNode(!1);null!=d.getAttribute("name")&&d.setAttribute("name",this.anonymizeString(d.getAttribute("name")));a[EditorUi.DIFF_INSERT][b].data=mxUtils.getXml(d)}catch(v){a[EditorUi.DIFF_INSERT][b].data=v.message}if(null!= -a[EditorUi.DIFF_UPDATE]){for(var c in a[EditorUi.DIFF_UPDATE]){var f=a[EditorUi.DIFF_UPDATE][c];null!=f.name&&(f.name=this.anonymizeString(f.name));null!=f.cells&&(b=mxUtils.bind(this,function(a){var b=f.cells[a];if(null!=b){for(var d in b)null!=b[d].value&&(b[d].value="["+b[d].value.length+"]"),null!=b[d].style&&(b[d].style="["+b[d].style.length+"]"),null!=b[d].geometry&&(b[d].geometry="["+b[d].geometry.length+"]"),0==Object.keys(b[d]).length&&delete b[d];0==Object.keys(b).length&&delete f.cells[a]}}), -b(EditorUi.DIFF_INSERT),b(EditorUi.DIFF_UPDATE),0==Object.keys(f.cells).length&&delete f.cells);0==Object.keys(f).length&&delete a[EditorUi.DIFF_UPDATE][c]}0==Object.keys(a[EditorUi.DIFF_UPDATE]).length&&delete a[EditorUi.DIFF_UPDATE]}return a};EditorUi.prototype.anonymizeAttributes=function(a,b){if(null!=a.attributes)for(var d=0;d<a.attributes.length;d++)"as"!=a.attributes[d].name&&a.setAttribute(a.attributes[d].name,this.anonymizeString(a.attributes[d].value,b));if(null!=a.childNodes)for(d=0;d< -a.childNodes.length;d++)this.anonymizeAttributes(a.childNodes[d],b)};EditorUi.prototype.anonymizeNode=function(a,b){for(var d=a.getElementsByTagName("mxCell"),c=0;c<d.length;c++)null!=d[c].getAttribute("value")&&d[c].setAttribute("value","["+d[c].getAttribute("value").length+"]"),null!=d[c].getAttribute("style")&&d[c].setAttribute("style","["+d[c].getAttribute("style").length+"]"),null!=d[c].parentNode&&"root"!=d[c].parentNode.nodeName&&null!=d[c].parentNode.parentNode&&(d[c].setAttribute("id",d[c].parentNode.getAttribute("id")), -d[c].parentNode.parentNode.replaceChild(d[c],d[c].parentNode));d=a.getElementsByTagName("mxGeometry");for(c=0;c<d.length;c++)this.anonymizeAttributes(d[c],b);return a};EditorUi.prototype.synchronizeCurrentFile=function(a){var b=this.getCurrentFile();null!=b&&(b.savingFile?this.handleError({message:mxResources.get("busy")}):!a&&b.invalidChecksum?b.handleFileError(null,!0):this.spinner.spin(document.body,mxResources.get("updatingDocument"))&&(b.clearAutosave(),this.editor.setStatus(""),a?b.reloadFile(mxUtils.bind(this, -function(){b.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){b.handleFileError(a,!0)})):b.synchronizeFile(mxUtils.bind(this,function(){b.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){b.handleFileError(a,!0)}))))};EditorUi.prototype.getFileData=function(a,b,c,f,u,h,w,k,m){u=null!=u?u:!0;w=null!=w?w:this.getXmlFileData(u,null!=h?h:!1);m=null!=m?m:this.getCurrentFile();h=this.editor.graph;if(null!=this.pages&&this.currentPage!=this.pages[0]&& -(b||!a&&null!=m&&/(\.svg)$/i.test(m.getTitle()))){h=this.createTemporaryGraph(h.getStylesheet());var d=h.getGlobalVariable,g=this.pages[0];h.getGlobalVariable=function(a){return"page"==a?g.getName():"pagenumber"==a?1:d.apply(this,arguments)};document.body.appendChild(h.container);h.model.setRoot(g.root)}a=this.createFileData(w,h,m,window.location.href,a,b,c,f,u,k);h!=this.editor.graph&&h.container.parentNode.removeChild(h.container);return a};EditorUi.prototype.getHtml=function(a,b,c,f,u,h){h=null!= -h?h:!0;var d=null,g="https://www.draw.io/js/embed-static.min.js";if(null!=b){var d=h?b.getGraphBounds():b.getBoundingBox(b.getSelectionCells()),m=b.view.scale;h=Math.floor(d.x/m-b.view.translate.x);m=Math.floor(d.y/m-b.view.translate.y);d=b.background;null==u&&(b=this.getBasenames().join(";"),0<b.length&&(g="https://www.draw.io/embed.js?s="+b));a.setAttribute("x0",h);a.setAttribute("y0",m)}null!=a&&(a.setAttribute("pan","1"),a.setAttribute("zoom","1"),a.setAttribute("resize","0"),a.setAttribute("fit", -"0"),a.setAttribute("border","20"),a.setAttribute("links","1"),null!=f&&a.setAttribute("edit",f));null!=u&&(u=u.replace(/&/g,"&"));a=null!=a?this.editor.graph.zapGremlins(mxUtils.getXml(a)):"";f=this.editor.graph.compress(a);this.editor.graph.decompress(f)!=a&&(f=encodeURIComponent(a));return(null==u?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=u?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null== -u?null!=c?"<title>"+mxUtils.htmlEntities(c)+"</title>\n":"":"<title>Draw.io Diagram</title>\n")+(null!=u?'<meta http-equiv="refresh" content="0;URL=\''+u+"'\"/>\n":"")+"</head>\n<body"+(null==u&&null!=d&&d!=mxConstants.NONE?' style="background-color:'+d+';">':">")+'\n<div class="mxgraph" style="position:relative;overflow:auto;width:100%;">\n<div style="width:1px;height:1px;overflow:hidden;">'+f+"</div>\n</div>\n"+(null==u?'<script type="text/javascript" src="'+g+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+ -u+'" target="_blank"><img border="0" src="https://www.draw.io/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(a,b,c,f,u){null!=u&&(u=u.replace(/&/g,"&"));a={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,resize:!0,xml:this.editor.graph.zapGremlins(a),toolbar:"pages zoom layers lightbox"};null!=this.pages&&null!=this.currentPage&&(a.page=mxUtils.indexOf(this.pages,this.currentPage));return(null==u?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n': -"")+"<!DOCTYPE html>\n<html"+(null!=u?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==u?null!=c?"<title>"+mxUtils.htmlEntities(c)+"</title>\n":"":"<title>Draw.io Diagram</title>\n")+(null!=u?'<meta http-equiv="refresh" content="0;URL=\''+u+"'\"/>\n":"")+'<meta charset="utf-8"/>\n</head>\n<body>\n<div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(a))+'"></div>\n'+(null==u?'<script type="text/javascript" src="https://www.draw.io/js/viewer.min.js">\x3c/script>': -'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+u+'" target="_blank"><img border="0" src="https://www.draw.io/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.setFileData=function(a){a=this.validateFileData(a);this.pages=this.fileNode=this.currentPage=null;a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement:null;var b=null!=a?a.getElementsByTagName("parsererror"):null;if(null!=b&&0<b.length)throw a=mxResources.get("invalidOrMissingFile"), -b=b[0].getElementsByTagName("div"),0<b.length&&(a=mxUtils.getTextContent(b[0])),Error(a);b=null!=a?this.editor.extractGraphModel(a,!0):null;null!=b&&(a=b);if(null!=a&&"mxfile"==a.nodeName&&(b=a.getElementsByTagName("diagram"),"0"!=urlParams.pages||1<b.length||1==b.length&&b[0].hasAttribute("name"))){this.fileNode=a;this.pages=[];for(a=0;a<b.length;a++){null==b[a].getAttribute("id")&&b[a].setAttribute("id",a);var d=new DiagramPage(b[a]);null==d.getName()&&d.setName(mxResources.get("pageWithNumber", -[a+1]));this.pages.push(d)}this.currentPage=this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];a=this.currentPage.node}"0"!=urlParams.pages&&null==this.fileNode&&null!=a&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(a);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root)}; -EditorUi.prototype.getBaseFilename=function(a){var b=this.getCurrentFile(),b=null!=b&&null!=b.getTitle()?b.getTitle():this.defaultFilename;if(/(\.xml)$/i.test(b)||/(\.html)$/i.test(b)||/(\.svg)$/i.test(b)||/(\.png)$/i.test(b))b=b.substring(0,b.lastIndexOf("."));!a&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&0<this.currentPage.getName().length&&(b=b+"-"+this.currentPage.getName());return b};EditorUi.prototype.downloadFile=function(a, -b,c,f,u,h,k){try{f=null!=f?f:this.editor.graph.isSelectionEmpty();var d=this.getBaseFilename(!u),g=d+"."+a;if("xml"==a){var n='<?xml version="1.0" encoding="UTF-8"?>\n'+(b?mxUtils.getXml(this.editor.getGraphXml(f)):this.getFileData(!0,null,null,null,f,u));this.saveData(g,a,n,"text/xml")}else if("html"==a)n=this.getHtml2(this.getFileData(!0),this.editor.graph,d),this.saveData(g,a,n,"text/html");else if("svg"!=a&&"xmlsvg"!=a||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==a?g= -d+".png":"jpeg"==a&&(g=d+".jpg"),this.saveRequest(g,a,mxUtils.bind(this,function(b,d){try{var c=this.editor.graph.pageVisible;null!=h&&(this.editor.graph.pageVisible=h);var g=this.createDownloadRequest(b,a,f,d,k,u);this.editor.graph.pageVisible=c;return g}catch(A){this.handleError(A)}}));else{var q=null,w=mxUtils.bind(this,function(a){a.length<=MAX_REQUEST_SIZE?this.saveData(g,"svg",a,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this, -function(){mxUtils.popup(q)}))});if("svg"==a){var v=this.editor.graph.background;if(k||v==mxConstants.NONE)v=null;var l=this.editor.graph.getSvg(v,null,null,null,null,f);c&&this.editor.graph.addSvgShadow(l);this.convertImages(l,mxUtils.bind(this,mxUtils.bind(this,function(a){this.spinner.stop();w('<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a))})))}else g=d+".svg",q=this.getFileData(!1, -!0,null,mxUtils.bind(this,function(a){this.spinner.stop();w(a)}),f)}}catch(H){this.handleError(H)}};EditorUi.prototype.createDownloadRequest=function(a,b,c,f,u,h){var d=this.editor.graph.getGraphBounds();c=this.getFileData(!0,null,null,null,c,0==h?!1:"xmlpng"!=b);var g="",m="";if(d.width*d.height>MAX_AREA||c.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};d="0";"pdf"==b&&0==h&&(m="&allPages=1");if("xmlpng"==b&&(d="1",b="png",null!=this.pages&&null!=this.currentPage))for(h= -0;h<this.pages.length;h++)if(this.pages[h]==this.currentPage){g="&from="+h;break}h=this.editor.graph.background;"png"==b&&u&&(h=mxConstants.NONE);return new mxXmlRequest(EXPORT_URL,"format="+b+g+m+"&bg="+(null!=h?h:mxConstants.NONE)+"&base64="+f+"&embedXml="+d+"&xml="+encodeURIComponent(c)+(null!=a?"&filename="+encodeURIComponent(a):""))};EditorUi.prototype.setMode=function(a,b){this.mode=a};EditorUi.prototype.loadDescriptor=function(a,b,c){var d=window.location.hash,g=mxUtils.bind(this,function(c){var g= -null!=a.data?a.data:"";null!=c&&0<c.length&&(0<g.length&&(g+="\n"),g+=c);c=new LocalFile(this,"csv"!=a.format&&0<g.length?g:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);c.getHash=function(){return d};this.fileLoaded(c);"csv"==a.format&&this.importCsv(g,mxUtils.bind(this,function(a){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=a.update){var m=null!=a.interval?parseInt(a.interval):6E4,f=null, -n=mxUtils.bind(this,function(){var b=this.currentPage;mxUtils.post(a.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(a){b===this.currentPage&&(200<=a.getStatus()&&300>=a.getStatus()?(this.updateDiagram(a.getText()),q()):this.handleError({message:mxResources.get("error")+" "+a.getStatus()}))}),mxUtils.bind(this,function(a){this.handleError(a)}))}),q=mxUtils.bind(this,function(){window.clearTimeout(f);f=window.setTimeout(n,m)});this.editor.addListener("pageSelected", -mxUtils.bind(this,function(){q();n()}));q();n()}null!=b&&b()});if(null!=a.url&&0<a.url.length){var f=a.url;/^https?:\/\//.test(f)&&!this.isCorsEnabledForUrl(f)&&(f=PROXY_URL+"?url="+encodeURIComponent(f));this.loadUrl(f,mxUtils.bind(this,function(a){g(a)}),mxUtils.bind(this,function(a){null!=c&&c(a)}))}else g("")};EditorUi.prototype.updateDiagram=function(a){function b(a){var b=new mxCellOverlay(a.image||f.warningImage,a.tooltip,a.align,a.valign,a.offset);b.addListener(mxEvent.CLICK,function(b,d){c.alert(a.tooltip)}); -return b}var d=null,c=this;if(null!=a&&0<a.length&&(d=mxUtils.parseXml(a),a=null!=d?d.documentElement:null,null!=a&&"updates"==a.nodeName)){var f=this.editor.graph,h=f.getModel();h.beginUpdate();var k=null;try{for(a=a.firstChild;null!=a;){if("update"==a.nodeName){var l=h.getCell(a.getAttribute("id"));if(null!=l){try{var m=a.getAttribute("value");if(null!=m){var x=mxUtils.parseXml(m).documentElement;if(null!=x)if("1"==x.getAttribute("replace-value"))h.setValue(l,x);else for(var t=x.attributes,p=0;p< -t.length;p++)f.setAttributeForCell(l,t[p].nodeName,0<t[p].nodeValue.length?t[p].nodeValue:null)}}catch(G){null!=window.console&&console.log("Error in value for "+l.id+": "+G)}try{var C=a.getAttribute("style");null!=C&&f.model.setStyle(l,C)}catch(G){null!=window.console&&console.log("Error in style for "+l.id+": "+G)}try{var B=a.getAttribute("icon");if(null!=B){var H=0<B.length?JSON.parse(B):null;null!=H&&H.append||f.removeCellOverlays(l);null!=H&&f.addCellOverlay(l,b(H))}}catch(G){null!=window.console&& -console.log("Error in icon for "+l.id+": "+G)}try{var D=a.getAttribute("geometry");if(null!=D){var D=JSON.parse(D),E=f.getCellGeometry(l);if(null!=E){E=E.clone();for(key in D){var I=parseFloat(D[key]);"dx"==key?E.x+=I:"dy"==key?E.y+=I:"dw"==key?E.width+=I:"dh"==key?E.height+=I:E[key]=parseFloat(D[key])}f.model.setGeometry(l,E)}}}catch(G){null!=window.console&&console.log("Error in icon for "+l.id+": "+G)}}}else if("model"==a.nodeName){for(var A=a.firstChild;null!=A&&A.nodeType!=mxConstants.NODETYPE_ELEMENT;)A= -A.nextSibling;null!=A&&(new mxCodec(a.firstChild)).decode(A,h)}else if("view"==a.nodeName){if(a.hasAttribute("scale")&&(f.view.scale=parseFloat(a.getAttribute("scale"))),a.hasAttribute("dx")||a.hasAttribute("dy"))f.view.translate=new mxPoint(parseFloat(a.getAttribute("dx")||0),parseFloat(a.getAttribute("dy")||0))}else"fit"==a.nodeName&&(k=a.hasAttribute("max-scale")?parseFloat(a.getAttribute("max-scale")):1);a=a.nextSibling}}finally{h.endUpdate()}null!=k&&this.chromelessResize&&this.chromelessResize(!0, -k)}return d};EditorUi.prototype.getCopyFilename=function(a,b){var d=null!=a&&null!=a.getTitle()?a.getTitle():this.defaultFilename,c="",g=d.lastIndexOf(".");0<=g&&(c=d.substring(g),d=d.substring(0,g));if(b)var f=new Date,g=f.getFullYear(),h=f.getMonth()+1,k=f.getDate(),m=f.getHours(),x=f.getMinutes(),f=f.getSeconds(),d=d+(" "+(g+"-"+h+"-"+k+"-"+m+"-"+x+"-"+f));return d=mxResources.get("copyOf",[d])+c};EditorUi.prototype.fileLoaded=function(a){var b=this.getCurrentFile();this.fileLoadedError=null;this.setCurrentFile(null); -var d=!1;this.hideDialog();null!=b&&(b.removeListener(this.descriptorChangedListener),b.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var c=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=b&&this.updateDocumentTitle();this.editor.graph.model.clear();this.editor.undoManager.clear();this.setBackgroundImage(null);null!=window.location.hash&&0<window.location.hash.length&&(window.location.hash="");null!=this.fname&&(this.fnameWrapper.style.display= -"none",this.fname.innerHTML="",this.fname.setAttribute("title",mxResources.get("rename")));this.editor.setStatus("");this.updateUi();this.showSplash()});if(null!=a)try{mxClient.IS_SF&&"min"==uiTheme&&(this.diagramContainer.style.visibility="");this.setCurrentFile(a);a.addListener("descriptorChanged",this.descriptorChangedListener);a.addListener("contentChanged",this.descriptorChangedListener);a.open();this.setGraphEnabled(!0);this.setMode(a.getMode());this.editor.graph.model.prefix=Editor.guid()+ -"-";this.editor.undoManager.clear();this.descriptorChanged();this.updateUi();a.isEditable()?a.isModified()?(a.addUnsavedStatus(),null!=a.backupPatch&&a.patch([a.backupPatch])):this.editor.setStatus(""):this.editor.setStatus('<span class="geStatusAlert" style="margin-left:8px;">'+mxUtils.htmlEntities(mxResources.get("readOnly"))+"</span>");!this.editor.isChromelessView()||this.editor.editable?(this.editor.graph.selectUnlockedLayer(),this.showLayersDialog(),this.restoreLibraries(),window.self!==window.top&& -window.focus()):this.editor.graph.isLightboxView()&&this.lightboxFit();this.chromelessResize&&this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));d=!0;this.isOffline()||null==a.getMode()||EditorUi.logEvent({category:"File",action:"open",label:a.getMode()+"."+a.getSize()});if(this.editor.editable&&this.mode==a.getMode()&&a.getMode()!=App.MODE_DEVICE&&null!=a.getMode())try{this.addRecent({id:a.getHash(),title:a.getTitle(),mode:a.getMode()})}catch(u){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+ -1),mxSettings.save()}catch(u){}}catch(u){this.fileLoadedError=u;null!=window.console&&console.log("error in fileLoaded:",a,u);if(EditorUi.enableLogging&&!this.isOffline())try{(new Image).src=(null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"")+"/log?v="+encodeURIComponent(EditorUi.VERSION)+"&msg=errorInFileLoaded:url:"+encodeURIComponent(window.location.href)+(null!=u&&null!=u.message?":err:"+encodeURIComponent(u.message):"")+(null!=u&&null!=u.stack?"&stack="+encodeURIComponent(u.stack):"")}catch(v){}this.handleError(u, -mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=b?this.fileLoaded(b):c()}),!0)}else c();return d};EditorUi.prototype.isActive=function(){return this.editor.graph.isEditing()||this.editor.graph.isMouseDown||null!=this.dialog};EditorUi.prototype.runWhenIdle=function(a){if(this.isActive()){var b=mxUtils.bind(this,function(){this.isActive()||(this.editor.graph.removeMouseListener(d), -this.editor.removeListener("hideDialog",b),this.editor.graph.removeListener(b),null!=window.requestAnimationFrame?window.requestAnimationFrame(a):a())}),d={mouseDown:function(){},mouseMove:function(){},mouseUp:b};this.editor.graph.addListener(mxEvent.EDITING_STOPPED,b);this.editor.graph.addListener(mxEvent.ESCAPE,b);this.editor.graph.addMouseListener(d);this.editor.addListener("hideDialog",b)}else null!=window.requestAnimationFrame?window.requestAnimationFrame(a):a()};EditorUi.prototype.getHashValueForPages= -function(a,b){var d=0,c=new mxGraphModel,g=new mxCodec;null!=b&&(b.byteCount=0,b.attrCount=0,b.eltCount=0,b.nodeCount=0);for(var f=0;f<a.length;f++){this.updatePageRoot(a[f]);var h=a[f].node.cloneNode(!1);h.removeAttribute("name");c.root=a[f].root;var k=g.encode(c);this.editor.graph.saveViewState(a[f].viewState,k,!0);k.removeAttribute("pageWidth");k.removeAttribute("pageHeight");h.appendChild(k);null!=b&&(b.eltCount+=h.getElementsByTagName("*").length,b.nodeCount+=h.getElementsByTagName("mxCell").length); -d=(d<<5)-d+this.hashValue(h,function(a,b,d,c){return!c||"mxGeometry"!=a.nodeName&&"mxPoint"!=a.nodeName||"x"!=b&&"y"!=b&&"width"!=b&&"height"!=b?c&&"mxCell"==a.nodeName&&"previous"==b?null:d:Math.round(d)},b)<<0}return d};EditorUi.prototype.hashValue=function(a,b,c){var d=0;if(null!=a&&"object"===typeof a&&"number"===typeof a.nodeType&&"string"===typeof a.nodeName&&"function"===typeof a.getAttribute){null!=a.nodeName&&(d^=this.hashValue(a.nodeName,b,c));if(null!=a.attributes){null!=c&&(c.attrCount+= -a.attributes.length);for(var g=0;g<a.attributes.length;g++){var f=a.attributes[g].name,n=null!=b?b(a,f,a.attributes[g].value,!0):a.attributes[g].value;null!=n&&(d^=this.hashValue(f,b,c)+this.hashValue(n,b,c))}}if(null!=a.childNodes)for(g=0;g<a.childNodes.length;g++)d=(d<<5)-d+this.hashValue(a.childNodes[g],b,c)<<0}else if(null!=a&&"function"!==typeof a){a=String(a);b=0;null!=c&&(c.byteCount+=a.length);for(g=0;g<a.length;g++)b=(b<<5)-b+a.charCodeAt(g)<<0;d^=b}return d};EditorUi.prototype.descriptorChanged= -function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary=function(a,b,c,f,u,h,k){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||mxClient.IS_CHROMEAPP};EditorUi.prototype.toggleScratchpad=function(){this.isScratchpadEnabled()&&(null==this.scratchpad?this.getLocalData(".scratchpad",mxUtils.bind(this,function(a){null==a&&(a=this.emptyLibraryXml);this.loadLibrary(new StorageLibrary(this,a,".scratchpad"))})):this.closeLibrary(this.scratchpad))}; -EditorUi.prototype.createLibraryDataFromImages=function(a){var b=mxUtils.createXmlDocument(),d=b.createElement("mxlibrary");mxUtils.setTextContent(d,JSON.stringify(a));b.appendChild(d);return mxUtils.getXml(b)};EditorUi.prototype.closeLibrary=function(a){null!=a&&(this.removeLibrarySidebar(a.getHash()),a.constructor!=LocalLibrary&&mxSettings.removeCustomLibrary(a.getHash()),".scratchpad"==a.title&&(this.scratchpad=null))};EditorUi.prototype.removeLibrarySidebar=function(a){var b=this.sidebar.palettes[a]; -if(null!=b){for(var d=0;d<b.length;d++)b[d].parentNode.removeChild(b[d]);delete this.sidebar.palettes[a]}};EditorUi.prototype.repositionLibrary=function(a){var b=this.sidebar.container;if(null==a){var d=this.sidebar.palettes["L.scratchpad"];null==d&&(d=this.sidebar.palettes.search);null!=d&&(a=d[d.length-1].nextSibling)}a=null!=a?a:b.firstChild.nextSibling.nextSibling;var d=b.lastChild,c=d.previousSibling;b.insertBefore(d,a);b.insertBefore(c,d)};EditorUi.prototype.loadLibrary=function(a){var b=mxUtils.parseXml(a.getData()); -if("mxlibrary"==b.documentElement.nodeName){var d=JSON.parse(mxUtils.getTextContent(b.documentElement));this.libraryLoaded(a,d,b.documentElement.getAttribute("title"))}else throw{message:mxResources.get("notALibraryFile")};};EditorUi.prototype.getLibraryStorageHint=function(a){return""};EditorUi.prototype.libraryLoaded=function(a,b,c){if(null!=this.sidebar){a.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(a.getHash());".scratchpad"==a.title&&(this.scratchpad=a);var d=this.sidebar.palettes[a.getHash()], -d=null!=d?d[d.length-1].nextSibling:null;this.removeLibrarySidebar(a.getHash());var g=null,f=mxUtils.bind(this,function(b,d){0==b.length&&a.isEditable()?(null==g&&(g=document.createElement("div"),mxUtils.setPrefixedStyle(g.style,"borderRadius","6px"),g.style.border="3px dotted lightGray",g.style.textAlign="center",g.style.padding="8px",g.style.color="#B3B3B3",mxUtils.write(g,mxResources.get("dragElementsHere"))),d.appendChild(g)):this.addLibraryEntries(b,d)});if(null!=this.sidebar&&null!=b)for(var n= -0;n<b.length;n++)mxUtils.bind(this,function(a){var b=a.data;null!=b&&null!=a.title?this.sidebar.addEntry(a.title,mxUtils.bind(this,function(){b=this.convertDataUri(b);var d="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==a.aspect&&(d+="aspect=fixed;");return this.sidebar.createVertexTemplate(d+"image="+b,a.w,a.h,"",a.title||"",!1,!1,!0)})):null!=a.xml&&null!=a.title&&this.sidebar.addEntry(a.title,mxUtils.bind(this,function(){var b=this.stringToCells(this.editor.graph.decompress(a.xml)); -return this.sidebar.createVertexTemplateFromCells(b,a.w,a.h,a.title||"",!0,!1,!0)}))})(b[n]);c=null!=c&&0<c.length?c:a.getTitle();var h=this.sidebar.addPalette(a.getHash(),c,!0,mxUtils.bind(this,function(a){f(b,a)}));this.repositionLibrary(d);var m=h.parentNode.previousSibling;c=m.getAttribute("title");null!=c&&0<c.length&&".scratchpad"!=a.title&&m.setAttribute("title",this.getLibraryStorageHint(a)+"\n"+c);var k=document.createElement("div");k.style.position="absolute";k.style.right="0px";k.style.top= -"0px";k.style.padding="8px";mxClient.IS_QUIRKS||8==document.documentMode||(k.style.backgroundColor="inherit");m.style.position="relative";var l=document.createElement("img");l.setAttribute("src",Dialog.prototype.closeImage);l.setAttribute("title",mxResources.get("close"));l.setAttribute("valign","absmiddle");l.setAttribute("border","0");l.style.margin="0 3px";var t=null;if(".scratchpad"!=a.title||this.closableScratchpad)k.appendChild(l),mxEvent.addListener(l,"click",mxUtils.bind(this,function(b){if(!mxEvent.isConsumed(b)){var d= -mxUtils.bind(this,function(){this.closeLibrary(a)});null!=t?this.confirm(mxResources.get("allChangesLost"),null,d,mxResources.get("cancel"),mxResources.get("discardChanges")):d();mxEvent.consume(b)}}));if(a.isEditable()){var p=this.editor.graph,B=null,H=mxUtils.bind(this,function(d){this.showLibraryDialog(a.getTitle(),h,b,a,a.getMode());mxEvent.consume(d)}),D=mxUtils.bind(this,function(d){a.setModified(!0);a.isAutosave()?(null!=B&&null!=B.parentNode&&B.parentNode.removeChild(B),B=l.cloneNode(!1), -B.setAttribute("src",Editor.spinImage),B.setAttribute("title",mxResources.get("saving")),B.style.cursor="default",B.style.marginRight="2px",B.style.marginTop="-2px",k.insertBefore(B,k.firstChild),m.style.paddingRight=18*k.childNodes.length+"px",this.saveLibrary(a.getTitle(),b,a,a.getMode(),!0,!0,function(){null!=B&&null!=B.parentNode&&(B.parentNode.removeChild(B),m.style.paddingRight=18*k.childNodes.length+"px")})):null==t&&(t=l.cloneNode(!1),t.setAttribute("src",IMAGE_PATH+"/download.png"),t.setAttribute("title", -mxResources.get("save")),k.insertBefore(t,k.firstChild),mxEvent.addListener(t,"click",mxUtils.bind(this,function(d){this.saveLibrary(a.getTitle(),b,a,a.getMode(),a.constructor==LocalLibrary,!0,function(){null==t||a.isModified()||(m.style.paddingRight=18*k.childNodes.length+"px",t.parentNode.removeChild(t),t=null)});mxEvent.consume(d)})),m.style.paddingRight=18*k.childNodes.length+"px")}),E=mxUtils.bind(this,function(a,d,c,f){a=p.cloneCells(mxUtils.sortCells(p.model.getTopmostCells(a)));for(var m= -0;m<a.length;m++){var n=p.getCellGeometry(a[m]);null!=n&&n.translate(-d.x,-d.y)}h.appendChild(this.sidebar.createVertexTemplateFromCells(a,d.width,d.height,f||"",!0,!1,!1));a={xml:this.editor.graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(a))),w:d.width,h:d.height};null!=f&&(a.title=f);b.push(a);D(c);null!=g&&null!=g.parentNode&&0<b.length&&(g.parentNode.removeChild(g),g=null)}),I=mxUtils.bind(this,function(a){if(p.isSelectionEmpty())p.getRubberband().isActive()?(p.getRubberband().execute(a), -p.getRubberband().reset()):this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var b=p.getSelectionCells(),d=p.view.getBounds(b),c=p.view.scale;d.x/=c;d.y/=c;d.width/=c;d.height/=c;d.x-=p.view.translate.x;d.y-=p.view.translate.y;E(b,d)}mxEvent.consume(a)});h.style.border="3px solid transparent";mxEvent.addGestureListeners(h,function(){},mxUtils.bind(this,function(a){p.isMouseDown&&null!=p.panningManager&&null!=p.graphHandler.shape&&(p.graphHandler.shape.node.style.visibility= -"hidden",null!=g?g.style.border="3px dotted rgb(254, 137, 12)":h.style.border="3px dotted rgb(254, 137, 12)",h.style.cursor="copy",p.panningManager.stop(),p.autoScroll=!1,null!=p.graphHandler.guide&&p.graphHandler.guide.setVisible(!1),null!=p.graphHandler.hint&&(p.graphHandler.hint.style.visibility="hidden"),mxEvent.consume(a))}),mxUtils.bind(this,function(a){p.isMouseDown&&null!=p.panningManager&&null!=p.graphHandler&&(h.style.border="3px solid transparent",null!=g&&(g.style.border="3px dotted lightGray"), -h.style.cursor="default",this.sidebar.showTooltips=!0,p.panningManager.stop(),p.graphHandler.reset(),p.isMouseDown=!1,p.autoScroll=!0,I(a),mxEvent.consume(a))}));mxEvent.addListener(h,"mouseleave",mxUtils.bind(this,function(a){p.isMouseDown&&null!=p.graphHandler.shape&&(p.graphHandler.shape.node.style.visibility="visible",h.style.border="3px solid transparent",h.style.cursor="",p.autoScroll=!0,null!=p.graphHandler.guide&&p.graphHandler.guide.setVisible(!0),null!=p.graphHandler.hint&&(p.graphHandler.hint.style.visibility= -"visible"),null!=g&&(g.style.border="3px dotted lightGray"))}));Graph.fileSupport&&(mxEvent.addListener(h,"dragover",mxUtils.bind(this,function(a){null!=g?g.style.border="3px dotted rgb(254, 137, 12)":h.style.border="3px dotted rgb(254, 137, 12)";a.dataTransfer.dropEffect="copy";h.style.cursor="copy";this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()})),mxEvent.addListener(h,"drop",mxUtils.bind(this,function(a){h.style.border="3px solid transparent";h.style.cursor="";null!=g&&(g.style.border= -"3px dotted lightGray");0<a.dataTransfer.files.length&&this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(d,c,m,n,q,k,u,w,l){if(null!=d&&"image/"==c.substring(0,6))d="shape=image;verticalLabelPosition=bottom;verticalAlign=top;aspect=fixed;image="+this.convertDataUri(d),d=[new mxCell("",new mxGeometry(0,0,q,k),d)],d[0].vertex=!0,E(d,new mxRectangle(0,0,q,k),a,mxEvent.isAltDown(a)?null:u.substring(0,u.lastIndexOf(".")).replace(/_/g," ")),null!=g&&null!=g.parentNode&& -0<b.length&&(g.parentNode.removeChild(g),g=null);else{var x=!1,v=mxUtils.bind(this,function(d,c){if(null!=d&&"text/xml"==c){var m=mxUtils.parseXml(d);if("mxlibrary"==m.documentElement.nodeName)try{var n=JSON.parse(mxUtils.getTextContent(m.documentElement));f(n,h);b=b.concat(n);D(a);this.spinner.stop();x=!0}catch(K){}else if("mxfile"==m.documentElement.nodeName)try{for(var q=m.documentElement.getElementsByTagName("diagram"),m=0;m<q.length;m++){var n=mxUtils.getTextContent(q[m]),u=this.stringToCells(this.editor.graph.decompress(n)), -k=this.editor.graph.getBoundingBoxFromGeometry(u);E(u,new mxRectangle(0,0,k.width,k.height),a)}x=!0}catch(K){null!=window.console&&console.log("error in drop handler:",K)}}x||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=g&&null!=g.parentNode&&0<b.length&&(g.parentNode.removeChild(g),g=null)});null!=l&&null!=u&&(/(\.v(dx|sdx?))($|\?)/i.test(u)||/(\.vs(x|sx?))($|\?)/i.test(u))?this.importVisio(l,function(a){v(a,"text/xml")},null,u):!this.isOffline()&&(new XMLHttpRequest).upload&& -this.isRemoteFileFormat(d,u)&&null!=l?this.parseFile(l,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?v(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):v(d,c)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(h,"dragleave",function(a){null!=g?g.style.border="3px dotted lightGray":(h.style.border="3px solid transparent", -h.style.cursor="");a.stopPropagation();a.preventDefault()}));l=l.cloneNode(!1);l.setAttribute("src",Editor.editImage);l.setAttribute("title",mxResources.get("edit"));k.insertBefore(l,k.firstChild);mxEvent.addListener(l,"click",H);mxEvent.addListener(h,"dblclick",function(a){mxEvent.getSource(a)==h&&H(a)});c=l.cloneNode(!1);c.setAttribute("src",Editor.plusImage);c.setAttribute("title",mxResources.get("add"));k.insertBefore(c,k.firstChild);mxEvent.addListener(c,"click",I);this.isOffline()||".scratchpad"!= -a.title||null==EditorUi.scratchpadHelpLink||(c=document.createElement("span"),c.setAttribute("title",mxResources.get("help")),c.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;",mxUtils.write(c,"?"),mxEvent.addGestureListeners(c,mxUtils.bind(this,function(a){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(a)})),k.insertBefore(c,k.firstChild))}m.appendChild(k);m.style.paddingRight=18*k.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(a,b){for(var d= -0;d<a.length;d++){var c=a[d],g=c.data;if(null!=g){var g=this.convertDataUri(g),f="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==c.aspect&&(f+="aspect=fixed;");b.appendChild(this.sidebar.createVertexTemplate(f+"image="+g,c.w,c.h,"",c.title||"",!1,!1,!0))}else null!=c.xml&&(g=this.stringToCells(this.editor.graph.decompress(c.xml)),0<g.length&&b.appendChild(this.sidebar.createVertexTemplateFromCells(g,c.w,c.h,c.title||"",!0,!1,!0)))}};EditorUi.prototype.getResource= -function(a){return null!=a?a[mxLanguage]||a.main:null};EditorUi.prototype.footerHeight=0;"1"==urlParams.offline||EditorUi.isElectronApp||("1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64),EditorUi.prototype.createFooter=function(){return document.getElementById("geFooter")});EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground=mxClient.IS_QUIRKS? -"none":"linear-gradient(rgb(255, 255, 255) 0px, rgb(242, 242, 242) 100%)",Toolbar.prototype.selectedBackground="rgb(242, 242, 242)"),Editor.prototype.initialTopSpacing=3,EditorUi.prototype.menubarHeight=41,EditorUi.prototype.toolbarHeight=38,EditorUi.prototype.hsplitPosition=188,Sidebar.prototype.thumbWidth=46,Sidebar.prototype.thumbHeight=46,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2):"dark"==uiTheme&&(mxClient.link("stylesheet",STYLE_PATH+"/dark.css"), -Dialog.backdropColor="#2a2a2a",Graph.prototype.defaultThemeName="darkTheme",Graph.prototype.defaultPageBackgroundColor="#2a2a2a",Graph.prototype.defaultPageBorderColor="#505759",Graph.prototype.svgShadowColor="#e0e0e0",Graph.prototype.svgShadowOpacity="0.6",Graph.prototype.svgShadowSize="0.8",Graph.prototype.svgShadowBlur="1.4",Format.prototype.inactiveTabBackgroundColor="black",BaseFormatPanel.prototype.buttonBackgroundColor="#2a2a2a",Sidebar.prototype.dragPreviewBorder="1px dashed #cccccc",mxGraphHandler.prototype.previewColor= -"#cccccc",StyleFormatPanel.prototype.defaultStrokeColor="#cccccc",mxClient.IS_SVG&&(Editor.helpImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAP1BMVEUAAAD///////////////////////////////////////////////////////////////////////////////9Du/pqAAAAFXRSTlMAT30qCJRBboyDZyCgRzUUdF46MJlgXETgAAAAeklEQVQY022O2w4DIQhEQUURda/9/28tUO2+7CQS5sgQ4F1RapX78YUwRqQjTU8ILqQfKerTKTvACJ4nLX3krt+8aS82oI8aQC4KavRgtvEW/mDvsICgA03PSGRr79MqX1YPNIxzjyqtw8ZnnRo4t5a5undtJYRywau+ds4Cyza3E6YAAAAASUVORK5CYII=", -Editor.checkmarkImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAMAAACeyVWkAAAARVBMVEUAAACZmZkICAgEBASNjY2Dg4MYGBiTk5N5eXl1dXVmZmZQUFBCQkI3NzceHh4MDAykpKSJiYl+fn5sbGxaWlo/Pz8SEhK96uPlAAAAAXRSTlMAQObYZgAAAE5JREFUGNPFzTcSgDAQQ1HJGUfy/Y9K7V1qeOUfzQifCQZai1XHaz11LFysbDbzgDSSWMZiETz3+b8yNUc/MMsktxuC8XQBSncdLwz+8gCCggGXzBcozAAAAABJRU5ErkJggg=="))};EditorUi.initTheme();EditorUi.prototype.hideFooter=function(){var a=document.getElementById("geFooter");null!=a&&(this.footerHeight=0,a.style.display= -"none",this.refresh())};EditorUi.prototype.showFooter=function(a){var b=document.getElementById("geFooter");null!=b&&(this.footerHeight=a,b.style.display="inline",this.refresh())};EditorUi.prototype.showImageDialog=function(a,b,c,f,h){a=new ImageDialog(this,a,b,c,f,h);this.showDialog(a.container,Graph.fileSupport?440:360,Graph.fileSupport?200:90,!0,!0);a.init()};EditorUi.prototype.showBackgroundImageDialog=function(a){a=null!=a?a:mxUtils.bind(this,function(a){a=new ChangePageSetup(this,null,a);a.ignoreColor= -!0;this.editor.graph.model.execute(a)});var b=new BackgroundImageDialog(this,mxUtils.bind(this,function(b){a(b)}));this.showDialog(b.container,360,200,!0,!0);b.init()};EditorUi.prototype.showLibraryDialog=function(a,b,c,f,h){a=new LibraryDialog(this,a,b,c,f,h);this.showDialog(a.container,620,440,!0,!1,mxUtils.bind(this,function(a){a&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));a.init()};EditorUi.prototype.createSidebarFooterContainer=function(){var a=this.createDiv("geSidebarContainer"); -a.style.position="absolute";a.style.overflow="hidden";a.style.borderWidth="3px";var b=document.createElement("a");b.className="geTitle";b.style.height="100%";b.style.paddingTop="9px";b.innerHTML='<span style="font-size:18px;margin-right:5px;">+</span>';mxUtils.write(b,mxResources.get("moreShapes")+"...");mxEvent.addListener(b,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(b,"click",mxUtils.bind(this,function(a){this.actions.get("shapes").funct(); -mxEvent.consume(a)}));a.appendChild(b);return a};EditorUi.prototype.handleError=function(a,b,c,f){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},g=null!=a&&null!=a.error?a.error:a;if(null!=g||null!=b){a=mxUtils.htmlEntities(mxResources.get("unknownError"));var n=mxResources.get("ok"),q=null;b=null!=b?b:mxResources.get("error");if(null!=g)if(null!=g.retry&&(n=mxResources.get("cancel"),q=function(){d();g.retry()}),404==g.code||404==g.status||403==g.code){a=403== -g.code?null!=g.message?mxUtils.htmlEntities(g.message):mxUtils.htmlEntities(mxResources.get("accessDenied")):mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied"));var m=window.location.hash;null!=m&&"#G"==m.substring(0,2)&&(m=m.substring(2),a+='<br><a href="https://drive.google.com/open?id='+m+'" target="_blank">'+mxUtils.htmlEntities(mxResources.get("tryOpeningViaThisPage"))+"</a>")}else null!=g.message?a=mxUtils.htmlEntities(g.message):null!=g.response&&null!=g.response.error?a=mxUtils.htmlEntities(g.response.error): -"undefined"!==window.App&&(g.code==App.ERROR_TIMEOUT?a=mxUtils.htmlEntities(mxResources.get("timeout")):g.code==App.ERROR_BUSY&&(a=mxUtils.htmlEntities(mxResources.get("busy"))));this.showError(b,a,n,c,q,null,null,null,null,null,null,null,f?c:null)}else null!=c&&c()};EditorUi.prototype.showError=function(a,b,c,f,h,k,w,l,m,x,p,t,C){a=new ErrorDialog(this,a,b,c||mxResources.get("ok"),f,h,k,w,t,l,m);this.showDialog(a.container,x||340,p||(null!=b&&120<b.length?180:150),!0,!1,C);a.init()};EditorUi.prototype.alert= -function(a,b){var d=new ErrorDialog(this,null,a,mxResources.get("ok"),b);this.showDialog(d.container,340,100,!0,!1);d.init()};EditorUi.prototype.confirm=function(a,b,c,f,h,k){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){};a=new ConfirmDialog(this,a,function(){d();null!=b&&b()},function(){d();null!=c&&c()},f,h);this.showDialog(a.container,340,90,!0,k);a.init()};EditorUi.prototype.setCurrentFile=function(a){this.currentFile=a};EditorUi.prototype.getCurrentFile= -function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||!this.editor.graph.mathEnabled&&this.useCanvasForExport};EditorUi.prototype.createSvgDataUri=function(a){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(a)))};EditorUi.prototype.createImageDataUri=function(a,b,c){var d=a.toDataURL("image/"+c);if(6>=d.length||d==a.cloneNode(!1).toDataURL("image/"+c))throw{message:"Invalid image"};null!=b&&(d=this.writeGraphModelToPng(d, -"zTXt","mxGraphModel",atob(this.editor.graph.compress(b))));return d};EditorUi.prototype.saveCanvas=function(a,b,c){var d="jpeg"==c?"jpg":c,g=this.getBaseFilename()+"."+d;a=this.createImageDataUri(a,b,c);this.saveData(g,d,a.substring(a.lastIndexOf(",")+1),"image/"+c,!0)};EditorUi.prototype.isLocalFileSave=function(){return"remote"!=urlParams.save&&(mxClient.IS_IE||"undefined"!==typeof window.Blob&&"undefined"!==typeof window.URL)&&9!=document.documentMode&&8!=document.documentMode&&7!=document.documentMode&& -!mxClient.IS_QUIRKS||this.isOfflineApp()||mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(a,b){var d=new TextareaDialog(this,a,b,null,null,mxResources.get("close"));d.textarea.style.width="600px";d.textarea.style.height="380px";this.showDialog(d.container,620,460,!0,!0);d.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(a,b,c,f,h){if(window.Blob&&navigator.msSaveOrOpenBlob)a=f?this.base64ToBlob(a,c):new Blob([a],{type:c}),navigator.msSaveOrOpenBlob(a, -b);else if(mxClient.IS_IE)c=window.open("about:blank","_blank"),null==c?mxUtils.popup(a,!0):(c.document.write(a),c.document.close(),c.document.execCommand("SaveAs",!0,b),c.close());else{var d=document.createElement("a"),g=!mxClient.IS_SF&&0>navigator.userAgent.indexOf("PaleMoon/")&&"undefined"!==typeof d.download;if(mxClient.IS_GC)var n=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./),g=65==(n?parseInt(n[2],10):!1)?!1:g;if(g||this.isOffline()){d.href=URL.createObjectURL(f?this.base64ToBlob(a, -c):new Blob([a],{type:c}));g?d.download=b:d.setAttribute("target","_blank");document.body.appendChild(d);try{window.setTimeout(function(){URL.revokeObjectURL(d.href)},0),d.click(),d.parentNode.removeChild(d)}catch(m){}}else this.createEchoRequest(a,b,c,f,h).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(a,b,c,f,h,k){a="xml="+encodeURIComponent(a);return new mxXmlRequest(SAVE_URL,a+(null!=c?"&mime="+c:"")+(null!=h?"&format="+h:"")+(null!=k?"&base64="+k:"")+(null!=b?"&filename="+ -encodeURIComponent(b):"")+(f?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(a,b){b=b||"";for(var d=atob(a),c=d.length,g=Math.ceil(c/1024),f=Array(g),h=0;h<g;++h){for(var k=1024*h,m=Math.min(k+1024,c),l=Array(m-k),p=0;k<m;++p,++k)l[p]=d[k].charCodeAt(0);f[h]=new Uint8Array(l)}return new Blob(f,{type:b})};EditorUi.prototype.saveLocalFile=function(a,b,c,f,h,k,l){k=null!=k?k:!1;l=null!=l?l:"vsdx"!=h&&(!mxClient.IS_IOS||!navigator.standalone);h=this.getServiceCount(k);b=new CreateDialog(this, -b,mxUtils.bind(this,function(b,d){try{if("_blank"==d)if(null==c||"image/"!=c.substring(0,6)||"image/svg"==c.substring(0,9)&&!mxClient.IS_SVG){var g=window.open("about:blank");null==g?mxUtils.popup(a,!0):(g.document.write(mxUtils.htmlEntities(a,!1)),g.document.close())}else this.openInNewWindow(a,c,f);else d==App.MODE_DEVICE||"download"==d?this.doSaveLocalFile(a,b,c,f):null!=b&&0<b.length&&this.pickFolder(d,mxUtils.bind(this,function(g){try{this.exportFile(a,b,c,f,d,g)}catch(F){this.handleError(F)}}))}catch(z){this.handleError(z)}}), -mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,k,l,null,1<h,4<h&&(!k||6>h)?3:4,a,c,f);this.showDialog(b.container,420,1==h?160:4<h?390:270,!0,!0);b.init()};EditorUi.prototype.openInNewWindow=function(a,b,c){if(mxClient.IS_GC||mxClient.IS_EDGE||11==document.documentMode||10==document.documentMode){var d=window.open("about:blank");null==d?mxUtils.popup(a,!0):("image/svg+xml"==b?d.document.write("<html>"+a+"</html>"):d.document.write('<html><img src="data:'+ -b+(c?";base64,"+a:";charset=utf8,"+encodeURIComponent(a))+'"/></html>'),d.document.close())}else d=window.open("data:"+b+(c?";base64,"+a:";charset=utf8,"+encodeURIComponent(a))),null==d&&mxUtils.popup(a,!0)};var c=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.addChromelessToolbarItems=function(a){if(this.isExportToCanvas()){this.exportDialog=null;var b=a(mxUtils.bind(this,function(a){var d=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",d); -null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null)});if(null!=this.exportDialog)d.apply(this);else{this.exportDialog=document.createElement("div");var c=b.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";this.exportDialog.style.fontFamily="Helvetica,Arial";this.exportDialog.style.backgroundColor="#000000";this.exportDialog.style.width= -"50px";this.exportDialog.style.height="50px";this.exportDialog.style.padding="4px 2px 4px 2px";this.exportDialog.style.color="#ffffff";mxUtils.setOpacity(this.exportDialog,70);this.exportDialog.style.left=c.left+"px";this.exportDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";c=mxUtils.getCurrentStyle(this.editor.graph.container);this.exportDialog.style.zIndex=c.zIndex;var g=new Spinner({lines:8,length:6,width:5,radius:6,rotate:0,color:"#fff", -speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"28px",zIndex:2E9});g.spin(this.exportDialog);this.exportToCanvas(mxUtils.bind(this,function(a){g.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var b=this.createImageDataUri(a,null,"png");a=document.createElement("img");a.style.maxWidth="140px";a.style.maxHeight="140px";a.style.cursor="pointer";a.style.backgroundColor="white";a.setAttribute("title",mxResources.get("openInNewWindow")); -a.setAttribute("border","0");a.setAttribute("src",b);this.exportDialog.appendChild(a);mxEvent.addListener(a,"click",mxUtils.bind(this,function(){this.openInNewWindow(b.substring(b.indexOf(",")+1),"image/png",!0);d.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));mxEvent.addListener(this.editor.graph.container,"click",d);document.body.appendChild(this.exportDialog)}mxEvent.consume(a)}),Editor.cameraLargeImage,mxResources.get("export"))}c.apply(this, -arguments)};EditorUi.prototype.saveData=function(a,b,c,f,h){this.isLocalFileSave()?this.saveLocalFile(c,a,f,h,b):this.saveRequest(a,b,mxUtils.bind(this,function(a,d){return this.createEchoRequest(c,a,f,h,b,d)}),c,h,f)};EditorUi.prototype.saveRequest=function(a,b,c,f,h,k,l){l=null!=l?l:!mxClient.IS_IOS||!navigator.standalone;var d=this.getServiceCount(!1);a=new CreateDialog(this,a,mxUtils.bind(this,function(a,d){if("_blank"==d||null!=a&&0<a.length){var g=c("_blank"==d?null:a,d==App.MODE_DEVICE||"download"== -d||null==d||"_blank"==d?"0":"1");null!=g&&(d==App.MODE_DEVICE||"download"==d||"_blank"==d?g.simulate(document,"_blank"):this.pickFolder(d,mxUtils.bind(this,function(c){k=null!=k?k:"pdf"==b?"application/pdf":"image/"+b;if(null!=f)try{this.exportFile(f,a,k,!0,d,c)}catch(C){this.handleError(C)}else this.spinner.spin(document.body,mxResources.get("saving"))&&g.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=g.getStatus()&&299>=g.getStatus())try{this.exportFile(g.getText(),a,k,!0,d,c)}catch(C){this.handleError(C)}else this.handleError({message:mxResources.get("errorSavingFile")})}), -function(a){this.spinner.stop();this.handleError(a)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,l,null,1<d,4<d?3:4,f,k,h);this.showDialog(a.container,380,1==d?160:4<d?390:270,!0,!0);a.init()};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(a,b,c,f,h,k){};EditorUi.prototype.pickFolder=function(a,b,c){b(null)};EditorUi.prototype.exportSvg=function(a,b,c,f,h,k,l, -p,m,x){if(this.spinner.spin(document.body,mxResources.get("export"))){var d=this.editor.graph.isSelectionEmpty();c=null!=c?c:d;d=b?null:this.editor.graph.background;d==mxConstants.NONE&&(d=null);null==d&&0==b&&(d="#ffffff");var g=this.editor.graph.getSvg(d,a,l,p,null,c,null,null,"blank"==x?"_blank":"self"==x?"_top":null);f&&this.editor.graph.addSvgShadow(g,g);var n=this.getBaseFilename()+".svg",q=mxUtils.bind(this,function(a){this.spinner.stop();h&&a.setAttribute("content",this.getFileData(!0,null, -null,null,c,m));if(null!=this.editor.fontCss){var b=a.ownerDocument,b=null!=b.createElementNS?b.createElementNS(mxConstants.NS_SVG,"style"):b.createElement("style");b.setAttribute("type","text/css");mxUtils.setTextContent(b,this.editor.fontCss);a.getElementsByTagName("defs")[0].appendChild(b)}var d='<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a);this.isLocalFileSave()||d.length<=MAX_REQUEST_SIZE?this.saveData(n,"svg",d,"image/svg+xml"): -this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(d)}))});this.convertMath(this.editor.graph,g,!1,mxUtils.bind(this,function(){k?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.convertImages(g,q,this.thumbImageCache)):q(g)}))}};EditorUi.prototype.addRadiobox=function(a,b,c,f,h,k,l){return this.addCheckbox(a,c,f,h,k,l,!0,b)};EditorUi.prototype.addCheckbox=function(a,b,c,f,h,k,l,p){k=null!=k?k:!0;var d=document.createElement("input"); -d.style.marginRight="8px";d.style.marginTop="16px";d.setAttribute("type",l?"radio":"checkbox");l="geCheckbox-"+Editor.guid();d.id=l;null!=p&&d.setAttribute("name",p);c&&(d.setAttribute("checked","checked"),d.defaultChecked=!0);f&&d.setAttribute("disabled","disabled");k&&(a.appendChild(d),c=document.createElement("label"),mxUtils.write(c,b),c.setAttribute("for",l),a.appendChild(c),h||mxUtils.br(a));return d};EditorUi.prototype.addEditButton=function(a,b){var d=this.addCheckbox(a,mxResources.get("edit")+ -":",!0,null,!0);d.style.marginLeft="24px";var c=this.getCurrentFile(),g="";null!=c&&c.getMode()!=App.MODE_DEVICE&&c.getMode()!=App.MODE_BROWSER&&(g=window.location.href);var f=document.createElement("select");f.style.width="120px";f.style.marginLeft="8px";f.style.marginRight="10px";f.className="geBtn";c=document.createElement("option");c.setAttribute("value","blank");mxUtils.write(c,mxResources.get("makeCopy"));f.appendChild(c);c=document.createElement("option");c.setAttribute("value","custom");mxUtils.write(c, -mxResources.get("custom")+"...");f.appendChild(c);a.appendChild(f);mxEvent.addListener(f,"change",mxUtils.bind(this,function(){if("custom"==f.value){var a=new FilenameDialog(this,g,mxResources.get("ok"),function(a){null!=a?g=a:f.value="blank"},mxResources.get("url"),null,null,null,null,function(){f.value="blank"});this.showDialog(a.container,300,80,!0,!1);a.init()}}));mxEvent.addListener(d,"change",mxUtils.bind(this,function(){d.checked&&(null==b||b.checked)?f.removeAttribute("disabled"):f.setAttribute("disabled", -"disabled")}));mxUtils.br(a);return{getLink:function(){return d.checked?"blank"===f.value?"_blank":g:null},getEditInput:function(){return d},getEditSelect:function(){return f}}};EditorUi.prototype.addLinkSection=function(a,b){function d(){h.innerHTML='<div style="width:100%;height:100%;box-sizing:border-box;'+(null!=f&&f!=mxConstants.NONE?"border:1px solid black;background-color:"+f:"background-position:center center;background-repeat:no-repeat;background-image:url('"+Dialog.prototype.closeImage+ +d,g){b=null!=b?b:mxConstants.DEFAULT_VALID_COLOR;d=null!=d?d:1E3;a=this.view.getState(a);if(null!=a){var c=Math.max(5,mxUtils.getValue(a.style,mxConstants.STYLE_STROKEWIDTH,1)+4),m=new mxCellHighlight(this,b,c,!1);null!=g&&(m.opacity=g);m.highlight(a);window.setTimeout(function(){null!=m.shape&&(mxUtils.setPrefixedStyle(m.shape.node.style,"transition","all 1200ms ease-in-out"),m.shape.node.style.opacity=0);window.setTimeout(function(){m.destroy()},1200)},d)}};Graph.prototype.addSvgShadow=function(a, +b,d){d=null!=d?d:!1;var g=a.ownerDocument,c=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG,"filter"):g.createElement("filter");c.setAttribute("id",this.shadowId);var m=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):g.createElement("feGaussianBlur");m.setAttribute("in","SourceAlpha");m.setAttribute("stdDeviation",this.svgShadowBlur);m.setAttribute("result","blur");c.appendChild(m);m=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG,"feOffset"): +g.createElement("feOffset");m.setAttribute("in","blur");m.setAttribute("dx",this.svgShadowSize);m.setAttribute("dy",this.svgShadowSize);m.setAttribute("result","offsetBlur");c.appendChild(m);m=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG,"feFlood"):g.createElement("feFlood");m.setAttribute("flood-color",this.svgShadowColor);m.setAttribute("flood-opacity",this.svgShadowOpacity);m.setAttribute("result","offsetColor");c.appendChild(m);m=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG, +"feComposite"):g.createElement("feComposite");m.setAttribute("in","offsetColor");m.setAttribute("in2","offsetBlur");m.setAttribute("operator","in");m.setAttribute("result","offsetBlur");c.appendChild(m);m=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG,"feBlend"):g.createElement("feBlend");m.setAttribute("in","SourceGraphic");m.setAttribute("in2","offsetBlur");c.appendChild(m);m=a.getElementsByTagName("defs");0==m.length?(g=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG, +"defs"):g.createElement("defs"),null!=a.firstChild?a.insertBefore(g,a.firstChild):a.appendChild(g)):g=m[0];g.appendChild(c);d||(b=null!=b?b:a.getElementsByTagName("g")[0],null!=b&&(b.setAttribute("filter","url(#"+this.shadowId+")"),isNaN(parseInt(a.getAttribute("width")))||(a.setAttribute("width",parseInt(a.getAttribute("width"))+6),a.setAttribute("height",parseInt(a.getAttribute("height"))+6),b=a.getAttribute("viewBox"),null!=b&&0<b.length&&(b=b.split(" "),3<b.length&&(w=parseFloat(b[2])+6,h=parseFloat(b[3])+ +6,a.setAttribute("viewBox",b[0]+" "+b[1]+" "+w+" "+h))))));return c};Graph.prototype.setShadowVisible=function(a,b){mxClient.IS_SVG&&(b=null!=b?b:!0,(this.shadowVisible=a)?this.view.getDrawPane().setAttribute("filter","url(#"+this.shadowId+")"):this.view.getDrawPane().removeAttribute("filter"),b&&this.fireEvent(new mxEventObject("shadowVisibleChanged")))};Graph.prototype.selectUnlockedLayer=function(){if(null==this.defaultParent){var a=this.model.getChildCount(this.model.root),b,d=0;do b=this.model.getChildAt(this.model.root, +d);while(d++<a&&"1"==mxUtils.getValue(this.getCellStyle(b),"locked","0"));null!=b&&this.setDefaultParent(b)}};mxStencilRegistry.libraries.mockup=[SHAPES_PATH+"/mockup/mxMockupButtons.js"];mxStencilRegistry.libraries.arrows2=[SHAPES_PATH+"/mxArrows.js"];mxStencilRegistry.libraries.atlassian=[STENCIL_PATH+"/atlassian.xml",SHAPES_PATH+"/mxAtlassian.js"];mxStencilRegistry.libraries.bpmn=[SHAPES_PATH+"/bpmn/mxBpmnShape2.js",STENCIL_PATH+"/bpmn.xml"];mxStencilRegistry.libraries.dfd=[SHAPES_PATH+"/mxDFD.js"]; +mxStencilRegistry.libraries.er=[SHAPES_PATH+"/er/mxER.js"];mxStencilRegistry.libraries.flowchart=[SHAPES_PATH+"/mxFlowchart.js",STENCIL_PATH+"/flowchart.xml"];mxStencilRegistry.libraries.ios=[SHAPES_PATH+"/mockup/mxMockupiOS.js"];mxStencilRegistry.libraries.rackGeneral=[SHAPES_PATH+"/rack/mxRack.js",STENCIL_PATH+"/rack/general.xml"];mxStencilRegistry.libraries.rackF5=[STENCIL_PATH+"/rack/f5.xml"];mxStencilRegistry.libraries.lean_mapping=[SHAPES_PATH+"/mxLeanMap.js",STENCIL_PATH+"/lean_mapping.xml"]; +mxStencilRegistry.libraries.basic=[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/basic.xml"];mxStencilRegistry.libraries.ios7icons=[STENCIL_PATH+"/ios7/icons.xml"];mxStencilRegistry.libraries.ios7ui=[SHAPES_PATH+"/ios7/mxIOS7Ui.js",STENCIL_PATH+"/ios7/misc.xml"];mxStencilRegistry.libraries.android=[SHAPES_PATH+"/mxAndroid.js",STENCIL_PATH+"/android/android.xml"];mxStencilRegistry.libraries["electrical/transmission"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/transmission.xml"];mxStencilRegistry.libraries["electrical/logic_gates"]= +[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/logic_gates.xml"];mxStencilRegistry.libraries["electrical/abstract"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/abstract.xml"];mxStencilRegistry.libraries.infographic=[SHAPES_PATH+"/mxInfographic.js"];mxStencilRegistry.libraries["mockup/buttons"]=[SHAPES_PATH+"/mockup/mxMockupButtons.js"];mxStencilRegistry.libraries["mockup/containers"]=[SHAPES_PATH+"/mockup/mxMockupContainers.js"];mxStencilRegistry.libraries["mockup/forms"]= +[SHAPES_PATH+"/mockup/mxMockupForms.js"];mxStencilRegistry.libraries["mockup/graphics"]=[SHAPES_PATH+"/mockup/mxMockupGraphics.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/markup"]=[SHAPES_PATH+"/mockup/mxMockupMarkup.js"];mxStencilRegistry.libraries["mockup/misc"]=[SHAPES_PATH+"/mockup/mxMockupMisc.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/navigation"]=[SHAPES_PATH+"/mockup/mxMockupNavigation.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/text"]= +[SHAPES_PATH+"/mockup/mxMockupText.js"];mxStencilRegistry.libraries.floorplan=[SHAPES_PATH+"/mxFloorplan.js",STENCIL_PATH+"/floorplan.xml"];mxStencilRegistry.libraries.bootstrap=[SHAPES_PATH+"/mxBootstrap.js",STENCIL_PATH+"/bootstrap.xml"];mxStencilRegistry.libraries.gmdl=[SHAPES_PATH+"/mxGmdl.js",STENCIL_PATH+"/gmdl.xml"];mxStencilRegistry.libraries.gcp2=[SHAPES_PATH+"/mxGCP2.js",STENCIL_PATH+"/gcp2.xml"];mxStencilRegistry.libraries.cabinets=[SHAPES_PATH+"/mxCabinets.js",STENCIL_PATH+"/cabinets.xml"]; +mxStencilRegistry.libraries.archimate=[SHAPES_PATH+"/mxArchiMate.js"];mxStencilRegistry.libraries.archimate3=[SHAPES_PATH+"/mxArchiMate3.js"];mxStencilRegistry.libraries.sysml=[SHAPES_PATH+"/mxSysML.js"];mxStencilRegistry.libraries.eip=[SHAPES_PATH+"/mxEip.js",STENCIL_PATH+"/eip.xml"];mxStencilRegistry.libraries.networks=[SHAPES_PATH+"/mxNetworks.js",STENCIL_PATH+"/networks.xml"];mxStencilRegistry.libraries.aws3d=[SHAPES_PATH+"/mxAWS3D.js",STENCIL_PATH+"/aws3d.xml"];mxStencilRegistry.libraries.aws4= +[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.veeam=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam.xml"];mxStencilRegistry.libraries.pid2inst=[SHAPES_PATH+"/pid2/mxPidInstruments.js"];mxStencilRegistry.libraries.pid2misc=[SHAPES_PATH+"/pid2/mxPidMisc.js",STENCIL_PATH+"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"]; +mxMarker.getPackageForType=function(a){var b=null;null!=a&&0<a.length&&("ER"==a.substring(0,2)?b="mxgraph.er":"sysML"==a.substring(0,5)&&(b="mxgraph.sysml"));return b};var n=mxMarker.createMarker;mxMarker.createMarker=function(a,b,d,g,c,m,e,x,t,v){if(null!=d&&null==mxMarker.markers[d]){var y=this.getPackageForType(d);null!=y&&mxStencilRegistry.getStencil(y)}return n.apply(this,arguments)};PrintDialog.prototype.create=function(a,b){function d(){k.value=Math.max(1,Math.min(e,Math.max(parseInt(k.value), +parseInt(f.value))));f.value=Math.max(1,Math.min(e,Math.min(parseInt(k.value),parseInt(f.value))))}function g(b){function d(b,d,c){var m=b.getGraphBounds(),n=0,e=0,x=fa.get(),t=1/b.pageScale,v=B.checked;if(v)var t=parseInt(ca.value),y=parseInt(L.value),t=Math.min(x.height*y/(m.height/b.view.scale),x.width*t/(m.width/b.view.scale));else t=parseInt(A.value)/(100*b.pageScale),isNaN(t)&&(g=1/b.pageScale,A.value="100 %");x=mxRectangle.fromRectangle(x);x.width=Math.ceil(x.width*g);x.height=Math.ceil(x.height* +g);t*=g;!v&&b.pageVisible?(m=b.getPageLayout(),n-=m.x*x.width,e-=m.y*x.height):v=!0;if(null==d){d=PrintDialog.createPrintPreview(b,t,x,0,n,e,v);d.pageSelector=!1;d.mathEnabled=!1;b=a.getCurrentFile();null!=b&&(d.title=b.getTitle());var f=d.writeHead;d.writeHead=function(b){f.apply(this,arguments);null!=a.editor.fontCss&&(b.writeln('<style type="text/css">'),b.writeln(a.editor.fontCss),b.writeln("</style>"))};if("undefined"!==typeof MathJax){var k=d.renderPage;d.renderPage=function(a,b,d,g,c,m){var n= +mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;var e=k.apply(this,arguments);mxClient.NO_FO=n;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:e.className="geDisableMathJax";return e}}d.open(null,null,c,!0)}else{x=b.background;if(null==x||""==x||x==mxConstants.NONE)x="#ffffff";d.backgroundColor=x;d.autoOrigin=v;d.appendGraph(b,t,n,e,c,!0)}return d}var g=parseInt(Y.value)/100;isNaN(g)&&(g=1,Y.value="100 %");var g=.75* +g,m=f.value,n=k.value,e=!v.checked,t=null;e&&(e=m==x&&n==x);if(!e&&null!=a.pages&&a.pages.length){var y=0,e=a.pages.length-1;v.checked||(y=parseInt(m)-1,e=parseInt(n)-1);for(var l=y;l<=e;l++){var z=a.pages[l],m=z==a.currentPage?c:null;if(null==m){var m=a.createTemporaryGraph(c.getStylesheet()),n=!0,y=!1,q=null,p=null;null==z.viewState&&null==z.root&&a.updatePageRoot(z);null!=z.viewState&&(n=z.viewState.pageVisible,y=z.viewState.mathEnabled,q=z.viewState.background,p=z.viewState.backgroundImage);m.background= +q;m.backgroundImage=null!=p?new mxImage(p.src,p.width,p.height):null;m.pageVisible=n;m.mathEnabled=y;var u=m.getGlobalVariable;m.getGlobalVariable=function(a){return"page"==a?z.getName():"pagenumber"==a?l+1:u.apply(this,arguments)};document.body.appendChild(m.container);a.updatePageRoot(z);m.model.setRoot(z.root)}t=d(m,t,l!=e);m!=c&&m.container.parentNode.removeChild(m.container)}}else t=d(c);null==t?a.handleError({message:mxResources.get("errorUpdatingPreview")}):(t.mathEnabled&&(e=t.wnd.document, +e.writeln('<script type="text/x-mathjax-config">'),e.writeln("MathJax.Hub.Config({"),e.writeln("showMathMenu: false,"),e.writeln('messageStyle: "none",'),e.writeln('jax: ["input/TeX", "input/MathML", "input/AsciiMath", "output/HTML-CSS"],'),e.writeln('extensions: ["tex2jax.js", "mml2jax.js", "asciimath2jax.js"],'),e.writeln('"HTML-CSS": {'),e.writeln("imageFont: null"),e.writeln("},"),e.writeln("TeX: {"),e.writeln('extensions: ["AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js"]'),e.writeln("},"), +e.writeln("tex2jax: {"),e.writeln('\tignoreClass: "geDisableMathJax"'),e.writeln("},"),e.writeln("asciimath2jax: {"),e.writeln('\tignoreClass: "geDisableMathJax"'),e.writeln("}"),e.writeln("});"),b&&(e.writeln("MathJax.Hub.Queue(function () {"),e.writeln("window.print();"),e.writeln("});")),e.writeln("\x3c/script>"),e.writeln('<script type="text/javascript" src="https://math.draw.io/current/MathJax.js">\x3c/script>')),t.closeDocument(),!t.mathEnabled&&b&&PrintDialog.printPreview(t))}var c=a.editor.graph, +m=document.createElement("div"),n=document.createElement("h3");n.style.width="100%";n.style.textAlign="center";n.style.marginTop="0px";mxUtils.write(n,b||mxResources.get("print"));m.appendChild(n);var e=1,x=1,t=document.createElement("div");t.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var v=document.createElement("input");v.style.cssText="margin-right:8px;margin-bottom:8px;";v.setAttribute("value","all");v.setAttribute("type","radio");v.setAttribute("name", +"pages-printdialog");t.appendChild(v);n=document.createElement("span");mxUtils.write(n,mxResources.get("printAllPages"));t.appendChild(n);mxUtils.br(t);var y=v.cloneNode(!0);v.setAttribute("checked","checked");y.setAttribute("value","range");t.appendChild(y);n=document.createElement("span");mxUtils.write(n,mxResources.get("pages")+":");t.appendChild(n);var f=document.createElement("input");f.style.cssText="margin:0 8px 0 8px;";f.setAttribute("value","1");f.setAttribute("type","number");f.setAttribute("min", +"1");f.style.width="50px";t.appendChild(f);n=document.createElement("span");mxUtils.write(n,mxResources.get("to"));t.appendChild(n);var k=f.cloneNode(!0);t.appendChild(k);mxEvent.addListener(f,"focus",function(){y.checked=!0});mxEvent.addListener(k,"focus",function(){y.checked=!0});mxEvent.addListener(f,"change",d);mxEvent.addListener(k,"change",d);if(null!=a.pages&&(e=a.pages.length,null!=a.currentPage))for(n=0;n<a.pages.length;n++)if(a.currentPage==a.pages[n]){x=n+1;f.value=x;k.value=x;break}f.setAttribute("max", +e);k.setAttribute("max",e);1<e&&m.appendChild(t);var l=document.createElement("div");l.style.marginBottom="10px";var z=document.createElement("input");z.style.marginRight="8px";z.setAttribute("value","adjust");z.setAttribute("type","radio");z.setAttribute("name","printZoom");l.appendChild(z);n=document.createElement("span");mxUtils.write(n,mxResources.get("adjustTo"));l.appendChild(n);var A=document.createElement("input");A.style.cssText="margin:0 8px 0 8px;";A.setAttribute("value","100 %");A.style.width= +"50px";l.appendChild(A);mxEvent.addListener(A,"focus",function(){z.checked=!0});m.appendChild(l);var t=t.cloneNode(!1),B=z.cloneNode(!0);B.setAttribute("value","fit");z.setAttribute("checked","checked");n=document.createElement("div");n.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";n.appendChild(B);t.appendChild(n);l=document.createElement("table");l.style.display="inline-block";var q=document.createElement("tbody"),p=document.createElement("tr"),u=p.cloneNode(!0), +P=document.createElement("td"),Q=P.cloneNode(!0),X=P.cloneNode(!0),R=P.cloneNode(!0),S=P.cloneNode(!0),Z=P.cloneNode(!0);P.style.textAlign="right";R.style.textAlign="right";mxUtils.write(P,mxResources.get("fitTo"));var ca=document.createElement("input");ca.style.cssText="margin:0 8px 0 8px;";ca.setAttribute("value","1");ca.setAttribute("min","1");ca.setAttribute("type","number");ca.style.width="40px";Q.appendChild(ca);n=document.createElement("span");mxUtils.write(n,mxResources.get("fitToSheetsAcross")); +X.appendChild(n);mxUtils.write(R,mxResources.get("fitToBy"));var L=ca.cloneNode(!0);S.appendChild(L);mxEvent.addListener(ca,"focus",function(){B.checked=!0});mxEvent.addListener(L,"focus",function(){B.checked=!0});n=document.createElement("span");mxUtils.write(n,mxResources.get("fitToSheetsDown"));Z.appendChild(n);p.appendChild(P);p.appendChild(Q);p.appendChild(X);u.appendChild(R);u.appendChild(S);u.appendChild(Z);q.appendChild(p);q.appendChild(u);l.appendChild(q);t.appendChild(l);m.appendChild(t); +t=document.createElement("div");n=document.createElement("div");n.style.fontWeight="bold";n.style.marginBottom="12px";mxUtils.write(n,mxResources.get("paperSize"));t.appendChild(n);n=document.createElement("div");n.style.marginBottom="12px";var fa=PageSetupDialog.addPageFormatPanel(n,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);t.appendChild(n);n=document.createElement("span");mxUtils.write(n,mxResources.get("pageScale"));t.appendChild(n);var Y=document.createElement("input"); +Y.style.cssText="margin:0 8px 0 8px;";Y.setAttribute("value","100 %");Y.style.width="60px";t.appendChild(Y);m.appendChild(t);n=document.createElement("div");n.style.cssText="text-align:right;margin:48px 0 0 0;";t=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});t.className="geBtn";a.editor.cancelFirst&&n.appendChild(t);a.isOffline()||(l=mxUtils.button(mxResources.get("help"),function(){c.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),l.className="geBtn", +n.appendChild(l));PrintDialog.previewEnabled&&(l=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();g(!1)}),l.className="geBtn",n.appendChild(l));l=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();g(!0)});l.className="geBtn gePrimaryBtn";n.appendChild(l);a.editor.cancelFirst||n.appendChild(t);m.appendChild(n);this.container=m};var x=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page= +this.ui.currentPage);this.page!=this.ui.currentPage?null!=this.page.viewState&&(this.ignoreColor||(this.page.viewState.background=this.color),this.ignoreImage||(this.page.viewState.backgroundImage=this.image),null!=this.format&&(this.page.viewState.pageFormat=this.format),null!=this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled),null!=this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)):(x.apply(this,arguments),null!=this.mathEnabled&&this.mathEnabled!=this.ui.isMathEnabled()&& +(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled),null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=!this.shadowVisible))}})(); +var ErrorDialog=function(b,c,a,e,k,f,l,q,p,u,d){p=null!=p?p:!0;var g=document.createElement("div");g.style.textAlign="center";if(null!=c){var m=document.createElement("div");m.style.padding="0px";m.style.margin="0px";m.style.fontSize="18px";m.style.paddingBottom="16px";m.style.marginBottom="16px";m.style.borderBottom="1px solid #c0c0c0";m.style.color="gray";m.style.whiteSpace="nowrap";m.style.textOverflow="ellipsis";m.style.overflow="hidden";mxUtils.write(m,c);m.setAttribute("title",c);g.appendChild(m)}c= +document.createElement("div");c.style.padding="6px";c.innerHTML=a;g.appendChild(c);a=document.createElement("div");a.style.marginTop="16px";a.style.textAlign="center";null!=f&&(c=mxUtils.button(mxResources.get("tryAgain"),function(){b.hideDialog();f()}),c.className="geBtn",a.appendChild(c),a.style.textAlign="center");null!=u&&(u=mxUtils.button(u,function(){null!=d&&d()}),u.className="geBtn",a.appendChild(u));var v=mxUtils.button(e,function(){p&&b.hideDialog();null!=k&&k()});v.className="geBtn";a.appendChild(v); +null!=l&&(e=mxUtils.button(l,function(){p&&b.hideDialog();null!=q&&q()}),e.className="geBtn gePrimaryBtn",a.appendChild(e));this.init=function(){v.focus()};g.appendChild(a);this.container=g}; +(function(){var b=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);b.beforeDecode=function(b,a,e){e.ui=b.ui;return a};b.afterDecode=function(b,a,e){e.previousColor=e.color;e.previousImage=e.image;e.previousFormat=e.format;null!=e.foldingEnabled&&(e.foldingEnabled=!e.foldingEnabled);null!=e.mathEnabled&&(e.mathEnabled=!e.mathEnabled);null!=e.shadowVisible&&(e.shadowVisible=!e.shadowVisible);return e};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="10.1.7";EditorUi.compactUi="atlas"!=uiTheme;EditorUi.enableLogging="1"!=urlParams.stealth&&/.*\.draw\.io$/.test(window.location.hostname)&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost="https://www.draw.io";EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.logError=function(a,b,c,e,t){if("1"==urlParams.dev)EditorUi.debug("logError",a,b,c,e,t);else if(EditorUi.enableLogging)try{if(a!= +EditorUi.lastErrorMessage&&(null==a||null==b||-1==a.indexOf("Script error")&&-1==a.indexOf("extension"))&&null!=a&&0>a.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=a;var d=0<=a.indexOf("NetworkError")||0<=a.indexOf("SecurityError")||0<=a.indexOf("NS_ERROR_FAILURE")||0<=a.indexOf("out of memory")?"CONFIG":"SEVERE",g=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=g+"/log?severity="+d+"&v="+encodeURIComponent(EditorUi.VERSION)+"&msg=clientError:"+encodeURIComponent(a)+ +":url:"+encodeURIComponent(window.location.href)+":lnum:"+encodeURIComponent(c)+(null!=e?":colno:"+encodeURIComponent(e):"")+(null!=t&&null!=t.stack?"&stack="+encodeURIComponent(t.stack):"")}}catch(n){}};EditorUi.logEvent=function(a){if("1"==urlParams.dev)EditorUi.debug("logEvent",a);else if(EditorUi.enableLogging)try{var b=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=b+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=a?"&data="+encodeURIComponent(JSON.stringify(a)): +"")}catch(m){}};EditorUi.sendReport=function(a,b){if("1"==urlParams.dev)EditorUi.debug("sendReport",a);else if(EditorUi.enableLogging)try{b=null!=b?b:5E4,a.length>b&&(a=a.substring(0,b)+"\n...[SHORTENED]"),mxUtils.post("/email","version="+encodeURIComponent(EditorUi.VERSION)+"&url="+encodeURIComponent(window.location.href)+"&data="+encodeURIComponent(a))}catch(m){}};EditorUi.debug=function(){if(null!=window.console&&"1"==urlParams.test){for(var a=[(new Date).toISOString()],b=0;b<arguments.length;b++)a.push(arguments[b]); +console.log.apply(console,a)}};EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl="1"==urlParams.dev?"/cache":"https://rt.draw.io/cache";EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.scratchpadHelpLink="https://desk.draw.io/support/solutions/articles/16000042367";EditorUi.prototype.emptyDiagramXml='<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/></root></mxGraphModel>'; +EditorUi.prototype.emptyLibraryXml="<mxlibrary>[]</mxlibrary>";EditorUi.prototype.mode=null;EditorUi.prototype.sidebarFooterHeight=36;EditorUi.prototype.defaultCustomShapeStyle="shape=stencil(tZRtTsQgEEBPw1+DJR7AoN6DbWftpAgE0Ortd/jYRGq72R+YNE2YgTePloEJGWblgA18ZuKFDcMj5/Sm8boZq+BgjCX4pTyqk6ZlKROitwusOMXKQDODx5iy4pXxZ5qTHiFHawxB0JrQZH7lCabQ0Fr+XWC1/E8zcsT/gAi+Subo2/3Mh6d/oJb5nU1b5tW7r2knautaa3T+U32o7f7vZwpJkaNDLORJjcu7t59m2jXxqX9un+tt022acsfmoKaQZ+vhhswZtS6Ne/ThQGt0IV0N3Yyv6P3CeT9/tHO0XFI5cAE=);whiteSpace=wrap;html=1;"; +EditorUi.prototype.svgBrokenImage=Graph.createSvgImage(10,10,'<rect x="0" y="0" width="10" height="10" stroke="#000" fill="transparent"/><path d="m 0 0 L 10 10 L 0 10 L 10 0" stroke="#000" fill="transparent"/>');EditorUi.prototype.crossOriginImages=!mxClient.IS_IE;EditorUi.prototype.maxBackgroundSize=1600;EditorUi.prototype.maxImageSize=520;EditorUi.prototype.resampleThreshold=1E5;EditorUi.prototype.maxImageBytes=1E6;EditorUi.prototype.maxBackgroundBytes=25E5;EditorUi.prototype.currentFile=null;EditorUi.prototype.printPdfExport= +!1;EditorUi.prototype.pdfPageExport=!0;EditorUi.prototype.formatEnabled="0"!=urlParams.format;EditorUi.prototype.insertTemplateEnabled=!0;EditorUi.prototype.closableScratchpad=!0;(function(){EditorUi.prototype.useCanvasForExport=!1;EditorUi.prototype.jpgSupported=!1;try{var a=document.createElement("canvas");EditorUi.prototype.canvasSupported=!(!a.getContext||!a.getContext("2d"))}catch(t){}try{var b=document.createElement("canvas"),c=new Image;c.onload=function(){try{b.getContext("2d").drawImage(c, +0,0);var a=b.toDataURL("image/png");EditorUi.prototype.useCanvasForExport=null!=a&&6<a.length}catch(y){}};c.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(t){}try{b=document.createElement("canvas");b.width=b.height=1;var e= +b.toDataURL("image/jpeg");EditorUi.prototype.jpgSupported=null!==e.match("image/jpeg")}catch(t){}})();EditorUi.prototype.openLink=function(a,b,c){return this.editor.graph.openLink(a,b,c)};EditorUi.prototype.showSplash=function(a){};EditorUi.prototype.getLocalData=function(a,b){b(localStorage.getItem(a))};EditorUi.prototype.setLocalData=function(a,b,c){localStorage.setItem(a,b);null!=c&&c()};EditorUi.prototype.removeLocalData=function(a,b){localStorage.removeItem(a);b()};EditorUi.prototype.setMathEnabled= +function(a){this.editor.graph.mathEnabled=a;this.editor.updateGraphComponents();this.editor.graph.refresh();this.fireEvent(new mxEventObject("mathEnabledChanged"))};EditorUi.prototype.isMathEnabled=function(a){return this.editor.graph.mathEnabled};EditorUi.prototype.isAppCache=function(){return"1"==urlParams.appcache||this.isOfflineApp()};EditorUi.prototype.isOfflineApp=function(){return"1"==urlParams.offline};EditorUi.prototype.isOffline=function(){return this.isOfflineApp()||!navigator.onLine|| +"1"==urlParams.stealth};EditorUi.prototype.createSpinner=function(a,b,c){c=null!=c?c:24;var d=new Spinner({lines:12,length:c,width:Math.round(c/3),radius:Math.round(c/2),rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),g=d.spin;d.spin=function(c,m){var n=!1;this.active||(g.call(this,c),this.active=!0,null!=m&&(n=document.createElement("div"),n.style.position="absolute",n.style.whiteSpace="nowrap",n.style.background="#4B4243",n.style.color="white", +n.style.fontFamily="Helvetica, Arial",n.style.fontSize="9pt",n.style.padding="6px",n.style.paddingLeft="10px",n.style.paddingRight="10px",n.style.zIndex=2E9,n.style.left=Math.max(0,a)+"px",n.style.top=Math.max(0,b+70)+"px",mxUtils.setPrefixedStyle(n.style,"borderRadius","6px"),mxUtils.setPrefixedStyle(n.style,"transform","translate(-50%,-50%)"),"dark"!=uiTheme&&mxUtils.setPrefixedStyle(n.style,"boxShadow","2px 2px 3px 0px #ddd"),"..."!=m.substring(m.length-3,m.length)&&(m+="..."),n.innerHTML=m,c.appendChild(n), +d.status=n,mxClient.IS_VML&&(null==document.documentMode||8>=document.documentMode)&&(n.style.left=Math.round(Math.max(0,a-n.offsetWidth/2))+"px",n.style.top=Math.round(Math.max(0,b+70-n.offsetHeight/2))+"px")),this.pause=mxUtils.bind(this,function(){var a=function(){};this.active&&(a=mxUtils.bind(this,function(){this.spin(c,m)}));this.stop();return a}),n=!0);return n};var m=d.stop;d.stop=function(){m.call(this);this.active=!1;null!=d.status&&(d.status.parentNode.removeChild(d.status),d.status=null)}; +d.pause=function(){return function(){}};return d};EditorUi.parsePng=function(a,b,c){function d(a,b){var d=m;m+=b;return a.substring(d,m)}function g(a){a=d(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}var m=0;if(d(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=c&&c();else if(d(a,4),"IHDR"!=d(a,4))null!=c&&c();else{d(a,17);do{c=g(a);var e=d(a,4);if(null!=b&&b(m-8,e,c))break;value=d(a,c);d(a,4);if("IEND"==e)break}while(c)}}; +EditorUi.prototype.isCompatibleString=function(a){try{var b=mxUtils.parseXml(a),d=this.editor.extractGraphModel(b.documentElement,!0);return null!=d&&0==d.getElementsByTagName("parsererror").length}catch(v){}return!1};var b=EditorUi.prototype.extractGraphModelFromHtml;EditorUi.prototype.extractGraphModelFromHtml=function(a){var d=b.apply(this,arguments);if(null==d)try{var c=a.indexOf("<mxfile ");if(0<=c){var e=a.lastIndexOf("</mxfile>");e>c&&(d=a.substring(c,e+15).replace(/>/g,">").replace(/</g, +"<").replace(/\\"/g,'"').replace(/\n/g,""))}else var t=mxUtils.parseXml(a),f=this.editor.extractGraphModel(t.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility),d=null!=f?mxUtils.getXml(f):""}catch(B){}return d};EditorUi.prototype.validateFileData=function(a){if(null!=a&&0<a.length){var b=a.indexOf('<meta charset="utf-8">');0<=b&&(a=a.slice(0,b)+'<meta charset="utf-8"/>'+a.slice(b+23-1,a.length));a=this.editor.graph.zapGremlins(a)}return a};EditorUi.prototype.replaceFileData= +function(a){a=this.validateFileData(a);a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement:null;var b=null!=a?this.editor.extractGraphModel(a,!0):null;null!=b&&(a=b);if(null!=a){b=this.editor.graph;b.model.beginUpdate();try{var d=null!=this.pages?this.pages.slice():null,c=a.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<c.length||1==c.length&&c[0].hasAttribute("name")){this.fileNode=a;this.pages=null!=this.pages?this.pages:[];for(var e=c.length-1;0<=e;e--){var f=this.updatePageRoot(new DiagramPage(c[e])); +null==f.getName()&&f.setName(mxResources.get("pageWithNumber",[e+1]));b.model.execute(new ChangePage(this,f,0==e?f:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),b.model.execute(new ChangePage(this,this.currentPage,this.currentPage,0))),this.editor.setGraphXml(a),null!=this.currentPage&&(this.currentPage.root= +this.editor.graph.model.root);if(null!=d)for(e=0;e<d.length;e++)b.model.execute(new ChangePage(this,d[e],null))}finally{b.model.endUpdate()}}};EditorUi.prototype.createFileData=function(a,b,c,e,t,f,k,n,x,l){b=null!=b?b:this.editor.graph;t=null!=t?t:!1;x=null!=x?x:!0;var d,g=null;null==c||c.getMode()==App.MODE_DEVICE||c.getMode()==App.MODE_BROWSER?d="_blank":g=d=e;if(null==a)return"";var m=a;if("mxfile"!=m.nodeName.toLowerCase()){var v=b.zapGremlins(mxUtils.getXml(a)),m=b.compress(v);if(b.decompress(m)!= +v)return v;v=a.ownerDocument.createElement("diagram");v.setAttribute("id",Editor.guid());mxUtils.setTextContent(v,m);m=a.ownerDocument.createElement("mxfile");m.appendChild(v)}l?(m=m.cloneNode(!0),m.removeAttribute("userAgent"),m.removeAttribute("version"),m.removeAttribute("editor"),m.removeAttribute("type")):(m.removeAttribute("userAgent"),m.removeAttribute("version"),m.removeAttribute("editor"),m.removeAttribute("type"),m.setAttribute("modified",(new Date).toISOString()),m.setAttribute("host", +window.location.hostname),m.setAttribute("agent",navigator.userAgent),m.setAttribute("version",EditorUi.VERSION),m.setAttribute("etag",Editor.guid()),a=null!=c?c.getMode():this.mode,null!=a&&m.setAttribute("type",a));a=mxUtils.getXml(m);if(!f&&!t&&(k||null!=c&&/(\.html)$/i.test(c.getTitle())))a=this.getHtml2(mxUtils.getXml(m),b,null!=c?c.getTitle():null,d,g);else if(f||!t&&null!=c&&/(\.svg)$/i.test(c.getTitle()))null==c||c.getMode()!=App.MODE_DEVICE&&c.getMode()!=App.MODE_BROWSER||(e=null),a=this.getEmbeddedSvg(a, +b,e,null,n,x,g);return a};EditorUi.prototype.getXmlFileData=function(a,b){a=null!=a?a:!0;b=null!=b?b:!1;var d=this.editor.getGraphXml(a);if(a&&null!=this.fileNode&&null!=this.currentPage)if(d=this.editor.graph.compress(this.editor.graph.zapGremlins(mxUtils.getXml(d))),mxUtils.setTextContent(this.currentPage.node,d),d=this.fileNode.cloneNode(!1),b)d.appendChild(this.currentPage.node);else for(var g=0;g<this.pages.length;g++){if(this.currentPage!=this.pages[g]&&this.pages[g].needsUpdate){var c=(new mxCodec(mxUtils.createXmlDocument())).encode(new mxGraphModel(this.pages[g].root)); +this.editor.graph.saveViewState(this.pages[g].viewState,c);mxUtils.setTextContent(this.pages[g].node,this.editor.graph.compressNode(c));delete this.pages[g].needsUpdate}d.appendChild(this.pages[g].node)}return d};EditorUi.prototype.anonymizeString=function(a,b){for(var d=[],g=0;g<a.length;g++){var c=a.charAt(g);0<=EditorUi.ignoredAnonymizedChars.indexOf(c)?d.push(c):isNaN(parseInt(c))?c.toLowerCase()!=c?d.push(String.fromCharCode(65+Math.round(25*Math.random()))):c.toUpperCase()!=c?d.push(String.fromCharCode(97+ +Math.round(25*Math.random()))):/\s/.test(c)?d.push(" "):d.push("?"):d.push(b?"0":Math.round(9*Math.random()))}return d.join("")};EditorUi.prototype.anonymizePatch=function(a){if(null!=a[EditorUi.DIFF_INSERT])for(var b=0;b<a[EditorUi.DIFF_INSERT].length;b++)try{var d=mxUtils.parseXml(a[EditorUi.DIFF_INSERT][b].data).documentElement.cloneNode(!1);null!=d.getAttribute("name")&&d.setAttribute("name",this.anonymizeString(d.getAttribute("name")));a[EditorUi.DIFF_INSERT][b].data=mxUtils.getXml(d)}catch(y){a[EditorUi.DIFF_INSERT][b].data= +y.message}if(null!=a[EditorUi.DIFF_UPDATE]){for(var c in a[EditorUi.DIFF_UPDATE]){var e=a[EditorUi.DIFF_UPDATE][c];null!=e.name&&(e.name=this.anonymizeString(e.name));null!=e.cells&&(b=mxUtils.bind(this,function(a){var b=e.cells[a];if(null!=b){for(var d in b)null!=b[d].value&&(b[d].value="["+b[d].value.length+"]"),null!=b[d].xmlValue&&(b[d].xmlValue="["+b[d].xmlValue.length+"]"),null!=b[d].style&&(b[d].style="["+b[d].style.length+"]"),0==Object.keys(b[d]).length&&delete b[d];0==Object.keys(b).length&& +delete e.cells[a]}}),b(EditorUi.DIFF_INSERT),b(EditorUi.DIFF_UPDATE),0==Object.keys(e.cells).length&&delete e.cells);0==Object.keys(e).length&&delete a[EditorUi.DIFF_UPDATE][c]}0==Object.keys(a[EditorUi.DIFF_UPDATE]).length&&delete a[EditorUi.DIFF_UPDATE]}return a};EditorUi.prototype.anonymizeAttributes=function(a,b){if(null!=a.attributes)for(var d=0;d<a.attributes.length;d++)"as"!=a.attributes[d].name&&a.setAttribute(a.attributes[d].name,this.anonymizeString(a.attributes[d].value,b));if(null!=a.childNodes)for(d= +0;d<a.childNodes.length;d++)this.anonymizeAttributes(a.childNodes[d],b)};EditorUi.prototype.anonymizeNode=function(a,b){for(var d=a.getElementsByTagName("mxCell"),c=0;c<d.length;c++)null!=d[c].getAttribute("value")&&d[c].setAttribute("value","["+d[c].getAttribute("value").length+"]"),null!=d[c].getAttribute("xmlValue")&&d[c].setAttribute("xmlValue","["+d[c].getAttribute("xmlValue").length+"]"),null!=d[c].getAttribute("style")&&d[c].setAttribute("style","["+d[c].getAttribute("style").length+"]"),null!= +d[c].parentNode&&"root"!=d[c].parentNode.nodeName&&null!=d[c].parentNode.parentNode&&(d[c].setAttribute("id",d[c].parentNode.getAttribute("id")),d[c].parentNode.parentNode.replaceChild(d[c],d[c].parentNode));return a};EditorUi.prototype.synchronizeCurrentFile=function(a){var b=this.getCurrentFile();null!=b&&(b.savingFile?this.handleError({message:mxResources.get("busy")}):!a&&b.invalidChecksum?b.handleFileError(null,!0):this.spinner.spin(document.body,mxResources.get("updatingDocument"))&&(b.clearAutosave(), +this.editor.setStatus(""),a?b.reloadFile(mxUtils.bind(this,function(){b.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){b.handleFileError(a,!0)})):b.synchronizeFile(mxUtils.bind(this,function(){b.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){b.handleFileError(a,!0)}))))};EditorUi.prototype.getFileData=function(a,b,c,e,t,f,k,n,x){t=null!=t?t:!0;k=null!=k?k:this.getXmlFileData(t,null!=f?f:!1);x=null!=x?x:this.getCurrentFile();f=this.editor.graph; +if(null!=this.pages&&this.currentPage!=this.pages[0]&&(b||!a&&null!=x&&/(\.svg)$/i.test(x.getTitle()))){f=this.createTemporaryGraph(f.getStylesheet());var d=f.getGlobalVariable,g=this.pages[0];f.getGlobalVariable=function(a){return"page"==a?g.getName():"pagenumber"==a?1:d.apply(this,arguments)};document.body.appendChild(f.container);f.model.setRoot(g.root)}a=this.createFileData(k,f,x,window.location.href,a,b,c,e,t,n);f!=this.editor.graph&&f.container.parentNode.removeChild(f.container);return a}; +EditorUi.prototype.getHtml=function(a,b,c,e,t,f){f=null!=f?f:!0;var d=null,g=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=b){var d=f?b.getGraphBounds():b.getBoundingBox(b.getSelectionCells()),m=b.view.scale;f=Math.floor(d.x/m-b.view.translate.x);m=Math.floor(d.y/m-b.view.translate.y);d=b.background;null==t&&(b=this.getBasenames().join(";"),0<b.length&&(g=EditorUi.drawHost+"/embed.js?s="+b));a.setAttribute("x0",f);a.setAttribute("y0",m)}null!=a&&(a.setAttribute("pan","1"),a.setAttribute("zoom", +"1"),a.setAttribute("resize","0"),a.setAttribute("fit","0"),a.setAttribute("border","20"),a.setAttribute("links","1"),null!=e&&a.setAttribute("edit",e));null!=t&&(t=t.replace(/&/g,"&"));a=null!=a?this.editor.graph.zapGremlins(mxUtils.getXml(a)):"";e=this.editor.graph.compress(a);this.editor.graph.decompress(e)!=a&&(e=encodeURIComponent(a));return(null==t?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=t?' xmlns="http://www.w3.org/1999/xhtml">': +">")+"\n<head>\n"+(null==t?null!=c?"<title>"+mxUtils.htmlEntities(c)+"</title>\n":"":"<title>Draw.io Diagram</title>\n")+(null!=t?'<meta http-equiv="refresh" content="0;URL=\''+t+"'\"/>\n":"")+"</head>\n<body"+(null==t&&null!=d&&d!=mxConstants.NONE?' style="background-color:'+d+';">':">")+'\n<div class="mxgraph" style="position:relative;overflow:auto;width:100%;">\n<div style="width:1px;height:1px;overflow:hidden;">'+e+"</div>\n</div>\n"+(null==t?'<script type="text/javascript" src="'+g+'">\x3c/script>': +'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+t+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(a,b,c,e,t){b=EditorUi.drawHost+"/js/viewer.min.js";null!=t&&(t=t.replace(/&/g,"&"));a={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,resize:!0,xml:this.editor.graph.zapGremlins(a),toolbar:"pages zoom layers lightbox"};null!=this.pages&&null!= +this.currentPage&&(a.page=mxUtils.indexOf(this.pages,this.currentPage));return(null==t?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=t?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==t?null!=c?"<title>"+mxUtils.htmlEntities(c)+"</title>\n":"":"<title>Draw.io Diagram</title>\n")+(null!=t?'<meta http-equiv="refresh" content="0;URL=\''+t+"'\"/>\n":"")+'<meta charset="utf-8"/>\n</head>\n<body>\n<div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="'+ +mxUtils.htmlEntities(JSON.stringify(a))+'"></div>\n'+(null==t?'<script type="text/javascript" src="'+b+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+t+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.setFileData=function(a){a=this.validateFileData(a);this.pages=this.fileNode=this.currentPage=null;a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement: +null;var b=null!=a?a.getElementsByTagName("parsererror"):null;if(null!=b&&0<b.length)throw a=mxResources.get("invalidOrMissingFile"),b=b[0].getElementsByTagName("div"),0<b.length&&(a=mxUtils.getTextContent(b[0])),Error(a);b=null!=a?this.editor.extractGraphModel(a,!0):null;null!=b&&(a=b);if(null!=a&&"mxfile"==a.nodeName&&(b=a.getElementsByTagName("diagram"),"0"!=urlParams.pages||1<b.length||1==b.length&&b[0].hasAttribute("name"))){this.fileNode=a;this.pages=[];for(a=0;a<b.length;a++){null==b[a].getAttribute("id")&& +b[a].setAttribute("id",a);var d=new DiagramPage(b[a]);null==d.getName()&&d.setName(mxResources.get("pageWithNumber",[a+1]));this.pages.push(d)}this.currentPage=this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];a=this.currentPage.node}"0"!=urlParams.pages&&null==this.fileNode&&null!=a&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])), +this.pages=[this.currentPage]);this.editor.setGraphXml(a);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root)};EditorUi.prototype.getBaseFilename=function(a){var b=this.getCurrentFile(),b=null!=b&&null!=b.getTitle()?b.getTitle():this.defaultFilename;if(/(\.xml)$/i.test(b)||/(\.html)$/i.test(b)||/(\.svg)$/i.test(b)||/(\.png)$/i.test(b)||/(\.drawio)$/i.test(b))b=b.substring(0,b.lastIndexOf("."));!a&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&& +0<this.currentPage.getName().length&&(b=b+"-"+this.currentPage.getName());return b};EditorUi.prototype.downloadFile=function(a,b,c,e,t,f,k){try{e=null!=e?e:this.editor.graph.isSelectionEmpty();var d=this.getBaseFilename(!t),g=d+"."+a;if("xml"==a){var m='<?xml version="1.0" encoding="UTF-8"?>\n'+(b?mxUtils.getXml(this.editor.getGraphXml(e)):this.getFileData(!0,null,null,null,e,t));this.saveData(g,a,m,"text/xml")}else if("html"==a)m=this.getHtml2(this.getFileData(!0),this.editor.graph,d),this.saveData(g, +a,m,"text/html");else if("svg"!=a&&"xmlsvg"!=a||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==a?g=d+".png":"jpeg"==a&&(g=d+".jpg"),this.saveRequest(g,a,mxUtils.bind(this,function(b,d){try{var c=this.editor.graph.pageVisible;null!=f&&(this.editor.graph.pageVisible=f);var g=this.createDownloadRequest(b,a,e,d,k,t);this.editor.graph.pageVisible=c;return g}catch(C){this.handleError(C)}}));else{var v=null,y=mxUtils.bind(this,function(a){a.length<=MAX_REQUEST_SIZE?this.saveData(g, +"svg",a,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(v)}))});if("svg"==a){var l=this.editor.graph.background;if(k||l==mxConstants.NONE)l=null;var B=this.editor.graph.getSvg(l,null,null,null,null,e);c&&this.editor.graph.addSvgShadow(B);this.convertImages(B,mxUtils.bind(this,mxUtils.bind(this,function(a){this.spinner.stop();y('<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+ +mxUtils.getXml(a))})))}else g=d+".svg",v=this.getFileData(!1,!0,null,mxUtils.bind(this,function(a){this.spinner.stop();y(a)}),e)}}catch(H){this.handleError(H)}};EditorUi.prototype.createDownloadRequest=function(a,b,c,e,t,f){var d=this.editor.graph.getGraphBounds();c=this.getFileData(!0,null,null,null,c,0==f?!1:"xmlpng"!=b);var g="",m="";if(d.width*d.height>MAX_AREA||c.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};d="0";"pdf"==b&&0==f&&(m="&allPages=1");if("xmlpng"==b&& +(d="1",b="png",null!=this.pages&&null!=this.currentPage))for(f=0;f<this.pages.length;f++)if(this.pages[f]==this.currentPage){g="&from="+f;break}f=this.editor.graph.background;"png"==b&&t&&(f=mxConstants.NONE);return new mxXmlRequest(EXPORT_URL,"format="+b+g+m+"&bg="+(null!=f?f:mxConstants.NONE)+"&base64="+e+"&embedXml="+d+"&xml="+encodeURIComponent(c)+(null!=a?"&filename="+encodeURIComponent(a):""))};EditorUi.prototype.setMode=function(a,b){this.mode=a};EditorUi.prototype.loadDescriptor=function(a, +b,c){var d=window.location.hash,g=mxUtils.bind(this,function(c){var g=null!=a.data?a.data:"";null!=c&&0<c.length&&(0<g.length&&(g+="\n"),g+=c);c=new LocalFile(this,"csv"!=a.format&&0<g.length?g:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);c.getHash=function(){return d};this.fileLoaded(c);"csv"==a.format&&this.importCsv(g,mxUtils.bind(this,function(a){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")})); +if(null!=a.update){var e=null!=a.interval?parseInt(a.interval):6E4,m=null,t=mxUtils.bind(this,function(){var b=this.currentPage;mxUtils.post(a.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(a){b===this.currentPage&&(200<=a.getStatus()&&300>=a.getStatus()?(this.updateDiagram(a.getText()),f()):this.handleError({message:mxResources.get("error")+" "+a.getStatus()}))}),mxUtils.bind(this,function(a){this.handleError(a)}))}),f=mxUtils.bind(this,function(){window.clearTimeout(m); +m=window.setTimeout(t,e)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){f();t()}));f();t()}null!=b&&b()});if(null!=a.url&&0<a.url.length){var e=a.url;/^https?:\/\//.test(e)&&!this.isCorsEnabledForUrl(e)&&(e=PROXY_URL+"?url="+encodeURIComponent(e));this.loadUrl(e,mxUtils.bind(this,function(a){g(a)}),mxUtils.bind(this,function(a){null!=c&&c(a)}))}else g("")};EditorUi.prototype.updateDiagram=function(a){function b(a){var b=new mxCellOverlay(a.image||e.warningImage,a.tooltip,a.align, +a.valign,a.offset);b.addListener(mxEvent.CLICK,function(b,d){c.alert(a.tooltip)});return b}var d=null,c=this;if(null!=a&&0<a.length&&(d=mxUtils.parseXml(a),a=null!=d?d.documentElement:null,null!=a&&"updates"==a.nodeName)){var e=this.editor.graph,f=e.getModel();f.beginUpdate();var k=null;try{for(a=a.firstChild;null!=a;){if("update"==a.nodeName){var n=f.getCell(a.getAttribute("id"));if(null!=n){try{var x=a.getAttribute("value");if(null!=x){var l=mxUtils.parseXml(x).documentElement;if(null!=l)if("1"== +l.getAttribute("replace-value"))f.setValue(n,l);else for(var A=l.attributes,q=0;q<A.length;q++)e.setAttributeForCell(n,A[q].nodeName,0<A[q].nodeValue.length?A[q].nodeValue:null)}}catch(J){null!=window.console&&console.log("Error in value for "+n.id+": "+J)}try{var p=a.getAttribute("style");null!=p&&e.model.setStyle(n,p)}catch(J){null!=window.console&&console.log("Error in style for "+n.id+": "+J)}try{var u=a.getAttribute("icon");if(null!=u){var H=0<u.length?JSON.parse(u):null;null!=H&&H.append||e.removeCellOverlays(n); +null!=H&&e.addCellOverlay(n,b(H))}}catch(J){null!=window.console&&console.log("Error in icon for "+n.id+": "+J)}try{var D=a.getAttribute("geometry");if(null!=D){var D=JSON.parse(D),K=e.getCellGeometry(n);if(null!=K){K=K.clone();for(key in D){var I=parseFloat(D[key]);"dx"==key?K.x+=I:"dy"==key?K.y+=I:"dw"==key?K.width+=I:"dh"==key?K.height+=I:K[key]=parseFloat(D[key])}e.model.setGeometry(n,K)}}}catch(J){null!=window.console&&console.log("Error in icon for "+n.id+": "+J)}}}else if("model"==a.nodeName){for(var C= +a.firstChild;null!=C&&C.nodeType!=mxConstants.NODETYPE_ELEMENT;)C=C.nextSibling;null!=C&&(new mxCodec(a.firstChild)).decode(C,f)}else if("view"==a.nodeName){if(a.hasAttribute("scale")&&(e.view.scale=parseFloat(a.getAttribute("scale"))),a.hasAttribute("dx")||a.hasAttribute("dy"))e.view.translate=new mxPoint(parseFloat(a.getAttribute("dx")||0),parseFloat(a.getAttribute("dy")||0))}else"fit"==a.nodeName&&(k=a.hasAttribute("max-scale")?parseFloat(a.getAttribute("max-scale")):1);a=a.nextSibling}}finally{f.endUpdate()}null!= +k&&this.chromelessResize&&this.chromelessResize(!0,k)}return d};EditorUi.prototype.getCopyFilename=function(a,b){var d=null!=a&&null!=a.getTitle()?a.getTitle():this.defaultFilename,c="",g=d.lastIndexOf(".");0<=g&&(c=d.substring(g),d=d.substring(0,g));if(b)var e=new Date,g=e.getFullYear(),f=e.getMonth()+1,n=e.getDate(),x=e.getHours(),k=e.getMinutes(),e=e.getSeconds(),d=d+(" "+(g+"-"+f+"-"+n+"-"+x+"-"+k+"-"+e));return d=mxResources.get("copyOf",[d])+c};EditorUi.prototype.fileLoaded=function(a){var b= +this.getCurrentFile();this.fileLoadedError=null;this.setCurrentFile(null);var d=!1;this.hideDialog();null!=b&&(b.removeListener(this.descriptorChangedListener),b.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var c=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=b&&this.updateDocumentTitle();this.editor.graph.model.clear();this.editor.undoManager.clear();this.setBackgroundImage(null);null!=window.location.hash&&0<window.location.hash.length&& +(window.location.hash="");null!=this.fname&&(this.fnameWrapper.style.display="none",this.fname.innerHTML="",this.fname.setAttribute("title",mxResources.get("rename")));this.editor.setStatus("");this.updateUi();this.showSplash()});if(null!=a)try{mxClient.IS_SF&&"min"==uiTheme&&(this.diagramContainer.style.visibility="");this.openingFile=!0;this.setCurrentFile(a);a.addListener("descriptorChanged",this.descriptorChangedListener);a.addListener("contentChanged",this.descriptorChangedListener);a.open(); +delete this.openingFile;this.setGraphEnabled(!0);this.setMode(a.getMode());this.editor.graph.model.prefix=Editor.guid()+"-";this.editor.undoManager.clear();this.descriptorChanged();this.updateUi();a.isEditable()?a.isModified()?(a.addUnsavedStatus(),null!=a.backupPatch&&a.patch([a.backupPatch])):this.editor.setStatus(""):this.editor.setStatus('<span class="geStatusAlert" style="margin-left:8px;">'+mxUtils.htmlEntities(mxResources.get("readOnly"))+"</span>");!this.editor.isChromelessView()||this.editor.editable? +(this.editor.graph.selectUnlockedLayer(),this.showLayersDialog(),this.restoreLibraries(),window.self!==window.top&&window.focus()):this.editor.graph.isLightboxView()&&this.lightboxFit();this.chromelessResize&&this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));d=!0;this.isOffline()||null==a.getMode()||EditorUi.logEvent({category:"File",action:"open",label:a.getMode()+"."+a.getSize()});if(this.editor.editable&&this.mode==a.getMode()&&a.getMode()!=App.MODE_DEVICE&&null!=a.getMode())try{this.addRecent({id:a.getHash(), +title:a.getTitle(),mode:a.getMode()})}catch(t){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+1),mxSettings.save()}catch(t){}}catch(t){this.fileLoadedError=t;null!=window.console&&console.log("error in fileLoaded:",a,t);if(EditorUi.enableLogging&&!this.isOffline())try{(new Image).src=(null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"")+"/log?v="+encodeURIComponent(EditorUi.VERSION)+"&msg=errorInFileLoaded:url:"+encodeURIComponent(window.location.href)+(null!=t&&null!=t.message?":err:"+ +encodeURIComponent(t.message):"")+(null!=t&&null!=t.stack?"&stack="+encodeURIComponent(t.stack):"")}catch(y){}this.handleError(t,mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=b?this.fileLoaded(b):c()}),!0)}else c();return d};EditorUi.prototype.getHashValueForPages=function(a,b){var d=0,c=new mxGraphModel,g=new mxCodec;null!=b&&(b.byteCount=0, +b.attrCount=0,b.eltCount=0,b.nodeCount=0);for(var e=0;e<a.length;e++){this.updatePageRoot(a[e]);var f=a[e].node.cloneNode(!1);f.removeAttribute("name");c.root=a[e].root;var n=g.encode(c);this.editor.graph.saveViewState(a[e].viewState,n,!0);n.removeAttribute("pageWidth");n.removeAttribute("pageHeight");f.appendChild(n);null!=b&&(b.eltCount+=f.getElementsByTagName("*").length,b.nodeCount+=f.getElementsByTagName("mxCell").length);d=(d<<5)-d+this.hashValue(f,function(a,b,d,c){return!c||"mxGeometry"!= +a.nodeName&&"mxPoint"!=a.nodeName||"x"!=b&&"y"!=b&&"width"!=b&&"height"!=b?c&&"mxCell"==a.nodeName&&"previous"==b?null:d:Math.round(d)},b)<<0}return d};EditorUi.prototype.hashValue=function(a,b,c){var d=0;if(null!=a&&"object"===typeof a&&"number"===typeof a.nodeType&&"string"===typeof a.nodeName&&"function"===typeof a.getAttribute){null!=a.nodeName&&(d^=this.hashValue(a.nodeName,b,c));if(null!=a.attributes){null!=c&&(c.attrCount+=a.attributes.length);for(var g=0;g<a.attributes.length;g++){var e=a.attributes[g].name, +m=null!=b?b(a,e,a.attributes[g].value,!0):a.attributes[g].value;null!=m&&(d^=this.hashValue(e,b,c)+this.hashValue(m,b,c))}}if(null!=a.childNodes)for(g=0;g<a.childNodes.length;g++)d=(d<<5)-d+this.hashValue(a.childNodes[g],b,c)<<0}else if(null!=a&&"function"!==typeof a){a=String(a);b=0;null!=c&&(c.byteCount+=a.length);for(g=0;g<a.length;g++)b=(b<<5)-b+a.charCodeAt(g)<<0;d^=b}return d};EditorUi.prototype.descriptorChanged=function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary= +function(a,b,c,e,t,f,k){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||mxClient.IS_CHROMEAPP};EditorUi.prototype.toggleScratchpad=function(){this.isScratchpadEnabled()&&(null==this.scratchpad?this.getLocalData(".scratchpad",mxUtils.bind(this,function(a){null==a&&(a=this.emptyLibraryXml);this.loadLibrary(new StorageLibrary(this,a,".scratchpad"))})):this.closeLibrary(this.scratchpad))};EditorUi.prototype.createLibraryDataFromImages=function(a){var b=mxUtils.createXmlDocument(), +d=b.createElement("mxlibrary");mxUtils.setTextContent(d,JSON.stringify(a));b.appendChild(d);return mxUtils.getXml(b)};EditorUi.prototype.closeLibrary=function(a){null!=a&&(this.removeLibrarySidebar(a.getHash()),a.constructor!=LocalLibrary&&mxSettings.removeCustomLibrary(a.getHash()),".scratchpad"==a.title&&(this.scratchpad=null))};EditorUi.prototype.removeLibrarySidebar=function(a){var b=this.sidebar.palettes[a];if(null!=b){for(var d=0;d<b.length;d++)b[d].parentNode.removeChild(b[d]);delete this.sidebar.palettes[a]}}; +EditorUi.prototype.repositionLibrary=function(a){var b=this.sidebar.container;if(null==a){var d=this.sidebar.palettes["L.scratchpad"];null==d&&(d=this.sidebar.palettes.search);null!=d&&(a=d[d.length-1].nextSibling)}a=null!=a?a:b.firstChild.nextSibling.nextSibling;var d=b.lastChild,c=d.previousSibling;b.insertBefore(d,a);b.insertBefore(c,d)};EditorUi.prototype.loadLibrary=function(a){var b=mxUtils.parseXml(a.getData());if("mxlibrary"==b.documentElement.nodeName){var d=JSON.parse(mxUtils.getTextContent(b.documentElement)); +this.libraryLoaded(a,d,b.documentElement.getAttribute("title"))}else throw{message:mxResources.get("notALibraryFile")};};EditorUi.prototype.getLibraryStorageHint=function(a){return""};EditorUi.prototype.libraryLoaded=function(a,b,c){if(null!=this.sidebar){a.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(a.getHash());".scratchpad"==a.title&&(this.scratchpad=a);var d=this.sidebar.palettes[a.getHash()],d=null!=d?d[d.length-1].nextSibling:null;this.removeLibrarySidebar(a.getHash());var g=null, +e=mxUtils.bind(this,function(b,d){0==b.length&&a.isEditable()?(null==g&&(g=document.createElement("div"),mxUtils.setPrefixedStyle(g.style,"borderRadius","6px"),g.style.border="3px dotted lightGray",g.style.textAlign="center",g.style.padding="8px",g.style.color="#B3B3B3",mxUtils.write(g,mxResources.get("dragElementsHere"))),d.appendChild(g)):this.addLibraryEntries(b,d)});if(null!=this.sidebar&&null!=b)for(var m=0;m<b.length;m++)mxUtils.bind(this,function(a){var b=a.data;null!=b&&null!=a.title?this.sidebar.addEntry(a.title, +mxUtils.bind(this,function(){b=this.convertDataUri(b);var d="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==a.aspect&&(d+="aspect=fixed;");return this.sidebar.createVertexTemplate(d+"image="+b,a.w,a.h,"",a.title||"",!1,!1,!0)})):null!=a.xml&&null!=a.title&&this.sidebar.addEntry(a.title,mxUtils.bind(this,function(){var b=this.stringToCells(this.editor.graph.decompress(a.xml));return this.sidebar.createVertexTemplateFromCells(b,a.w,a.h,a.title||"",!0,!1,!0)}))})(b[m]); +c=null!=c&&0<c.length?c:a.getTitle();var n=this.sidebar.addPalette(a.getHash(),c,!0,mxUtils.bind(this,function(a){e(b,a)}));this.repositionLibrary(d);var x=n.parentNode.previousSibling;c=x.getAttribute("title");null!=c&&0<c.length&&".scratchpad"!=a.title&&x.setAttribute("title",this.getLibraryStorageHint(a)+"\n"+c);var f=document.createElement("div");f.style.position="absolute";f.style.right="0px";f.style.top="0px";f.style.padding="8px";mxClient.IS_QUIRKS||8==document.documentMode||(f.style.backgroundColor= +"inherit");x.style.position="relative";var k=document.createElement("img");k.setAttribute("src",Dialog.prototype.closeImage);k.setAttribute("title",mxResources.get("close"));k.setAttribute("valign","absmiddle");k.setAttribute("border","0");k.style.margin="0 3px";var l=null;if(".scratchpad"!=a.title||this.closableScratchpad)f.appendChild(k),mxEvent.addListener(k,"click",mxUtils.bind(this,function(b){if(!mxEvent.isConsumed(b)){var d=mxUtils.bind(this,function(){this.closeLibrary(a)});null!=l?this.confirm(mxResources.get("allChangesLost"), +null,d,mxResources.get("cancel"),mxResources.get("discardChanges")):d();mxEvent.consume(b)}}));if(a.isEditable()){var q=this.editor.graph,p=null,u=mxUtils.bind(this,function(d){this.showLibraryDialog(a.getTitle(),n,b,a,a.getMode());mxEvent.consume(d)}),D=mxUtils.bind(this,function(d){a.setModified(!0);a.isAutosave()?(null!=p&&null!=p.parentNode&&p.parentNode.removeChild(p),p=k.cloneNode(!1),p.setAttribute("src",Editor.spinImage),p.setAttribute("title",mxResources.get("saving")),p.style.cursor="default", +p.style.marginRight="2px",p.style.marginTop="-2px",f.insertBefore(p,f.firstChild),x.style.paddingRight=18*f.childNodes.length+"px",this.saveLibrary(a.getTitle(),b,a,a.getMode(),!0,!0,function(){null!=p&&null!=p.parentNode&&(p.parentNode.removeChild(p),x.style.paddingRight=18*f.childNodes.length+"px")})):null==l&&(l=k.cloneNode(!1),l.setAttribute("src",IMAGE_PATH+"/download.png"),l.setAttribute("title",mxResources.get("save")),f.insertBefore(l,f.firstChild),mxEvent.addListener(l,"click",mxUtils.bind(this, +function(d){this.saveLibrary(a.getTitle(),b,a,a.getMode(),a.constructor==LocalLibrary,!0,function(){null==l||a.isModified()||(x.style.paddingRight=18*f.childNodes.length+"px",l.parentNode.removeChild(l),l=null)});mxEvent.consume(d)})),x.style.paddingRight=18*f.childNodes.length+"px")}),K=mxUtils.bind(this,function(a,d,c,e){a=q.cloneCells(mxUtils.sortCells(q.model.getTopmostCells(a)));for(var m=0;m<a.length;m++){var x=q.getCellGeometry(a[m]);null!=x&&x.translate(-d.x,-d.y)}n.appendChild(this.sidebar.createVertexTemplateFromCells(a, +d.width,d.height,e||"",!0,!1,!1));a={xml:this.editor.graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(a))),w:d.width,h:d.height};null!=e&&(a.title=e);b.push(a);D(c);null!=g&&null!=g.parentNode&&0<b.length&&(g.parentNode.removeChild(g),g=null)}),I=mxUtils.bind(this,function(a){if(q.isSelectionEmpty())q.getRubberband().isActive()?(q.getRubberband().execute(a),q.getRubberband().reset()):this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var b= +q.getSelectionCells(),d=q.view.getBounds(b),c=q.view.scale;d.x/=c;d.y/=c;d.width/=c;d.height/=c;d.x-=q.view.translate.x;d.y-=q.view.translate.y;K(b,d)}mxEvent.consume(a)});n.style.border="3px solid transparent";mxEvent.addGestureListeners(n,function(){},mxUtils.bind(this,function(a){q.isMouseDown&&null!=q.panningManager&&null!=q.graphHandler.shape&&(q.graphHandler.shape.node.style.visibility="hidden",null!=g?g.style.border="3px dotted rgb(254, 137, 12)":n.style.border="3px dotted rgb(254, 137, 12)", +n.style.cursor="copy",q.panningManager.stop(),q.autoScroll=!1,null!=q.graphHandler.guide&&q.graphHandler.guide.setVisible(!1),null!=q.graphHandler.hint&&(q.graphHandler.hint.style.visibility="hidden"),mxEvent.consume(a))}),mxUtils.bind(this,function(a){q.isMouseDown&&null!=q.panningManager&&null!=q.graphHandler&&(n.style.border="3px solid transparent",null!=g&&(g.style.border="3px dotted lightGray"),n.style.cursor="default",this.sidebar.showTooltips=!0,q.panningManager.stop(),q.graphHandler.reset(), +q.isMouseDown=!1,q.autoScroll=!0,I(a),mxEvent.consume(a))}));mxEvent.addListener(n,"mouseleave",mxUtils.bind(this,function(a){q.isMouseDown&&null!=q.graphHandler.shape&&(q.graphHandler.shape.node.style.visibility="visible",n.style.border="3px solid transparent",n.style.cursor="",q.autoScroll=!0,null!=q.graphHandler.guide&&q.graphHandler.guide.setVisible(!0),null!=q.graphHandler.hint&&(q.graphHandler.hint.style.visibility="visible"),null!=g&&(g.style.border="3px dotted lightGray"))}));Graph.fileSupport&& +(mxEvent.addListener(n,"dragover",mxUtils.bind(this,function(a){null!=g?g.style.border="3px dotted rgb(254, 137, 12)":n.style.border="3px dotted rgb(254, 137, 12)";a.dataTransfer.dropEffect="copy";n.style.cursor="copy";this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()})),mxEvent.addListener(n,"drop",mxUtils.bind(this,function(a){n.style.border="3px solid transparent";n.style.cursor="";null!=g&&(g.style.border="3px dotted lightGray");0<a.dataTransfer.files.length&&this.importFiles(a.dataTransfer.files, +0,0,this.maxImageSize,mxUtils.bind(this,function(d,c,m,x,f,t,k,v,y){if(null!=d&&"image/"==c.substring(0,6))d="shape=image;verticalLabelPosition=bottom;verticalAlign=top;aspect=fixed;image="+this.convertDataUri(d),d=[new mxCell("",new mxGeometry(0,0,f,t),d)],d[0].vertex=!0,K(d,new mxRectangle(0,0,f,t),a,mxEvent.isAltDown(a)?null:k.substring(0,k.lastIndexOf(".")).replace(/_/g," ")),null!=g&&null!=g.parentNode&&0<b.length&&(g.parentNode.removeChild(g),g=null);else{var l=!1,z=mxUtils.bind(this,function(d, +c){if(null!=d&&"text/xml"==c){var m=mxUtils.parseXml(d);if("mxlibrary"==m.documentElement.nodeName)try{var x=JSON.parse(mxUtils.getTextContent(m.documentElement));e(x,n);b=b.concat(x);D(a);this.spinner.stop();l=!0}catch(L){}else if("mxfile"==m.documentElement.nodeName)try{for(var f=m.documentElement.getElementsByTagName("diagram"),m=0;m<f.length;m++){var x=mxUtils.getTextContent(f[m]),t=this.stringToCells(this.editor.graph.decompress(x)),k=this.editor.graph.getBoundingBoxFromGeometry(t);K(t,new mxRectangle(0, +0,k.width,k.height),a)}l=!0}catch(L){null!=window.console&&console.log("error in drop handler:",L)}}l||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=g&&null!=g.parentNode&&0<b.length&&(g.parentNode.removeChild(g),g=null)});null!=y&&null!=k&&(/(\.v(dx|sdx?))($|\?)/i.test(k)||/(\.vs(x|sx?))($|\?)/i.test(k))?this.importVisio(y,function(a){z(a,"text/xml")},null,k):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,k)&&null!=y?this.parseFile(y, +mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?z(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):z(d,c)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(n,"dragleave",function(a){null!=g?g.style.border="3px dotted lightGray":(n.style.border="3px solid transparent",n.style.cursor="");a.stopPropagation();a.preventDefault()})); +k=k.cloneNode(!1);k.setAttribute("src",Editor.editImage);k.setAttribute("title",mxResources.get("edit"));f.insertBefore(k,f.firstChild);mxEvent.addListener(k,"click",u);mxEvent.addListener(n,"dblclick",function(a){mxEvent.getSource(a)==n&&u(a)});c=k.cloneNode(!1);c.setAttribute("src",Editor.plusImage);c.setAttribute("title",mxResources.get("add"));f.insertBefore(c,f.firstChild);mxEvent.addListener(c,"click",I);this.isOffline()||".scratchpad"!=a.title||null==EditorUi.scratchpadHelpLink||(c=document.createElement("span"), +c.setAttribute("title",mxResources.get("help")),c.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;",mxUtils.write(c,"?"),mxEvent.addGestureListeners(c,mxUtils.bind(this,function(a){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(a)})),f.insertBefore(c,f.firstChild))}x.appendChild(f);x.style.paddingRight=18*f.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(a,b){for(var d=0;d<a.length;d++){var c=a[d],g=c.data;if(null!=g){var g=this.convertDataUri(g), +e="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==c.aspect&&(e+="aspect=fixed;");b.appendChild(this.sidebar.createVertexTemplate(e+"image="+g,c.w,c.h,"",c.title||"",!1,!1,!0))}else null!=c.xml&&(g=this.stringToCells(this.editor.graph.decompress(c.xml)),0<g.length&&b.appendChild(this.sidebar.createVertexTemplateFromCells(g,c.w,c.h,c.title||"",!0,!1,!0)))}};EditorUi.prototype.getResource=function(a){return null!=a?a[mxLanguage]||a.main:null};EditorUi.prototype.footerHeight= +0;"1"==urlParams.offline||EditorUi.isElectronApp||("1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64),EditorUi.prototype.createFooter=function(){return document.getElementById("geFooter")});EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground=mxClient.IS_QUIRKS?"none":"linear-gradient(rgb(255, 255, 255) 0px, rgb(242, 242, 242) 100%)",Toolbar.prototype.selectedBackground= +"rgb(242, 242, 242)"),Editor.prototype.initialTopSpacing=3,EditorUi.prototype.menubarHeight=41,EditorUi.prototype.toolbarHeight=38,EditorUi.prototype.hsplitPosition=188,Sidebar.prototype.thumbWidth=46,Sidebar.prototype.thumbHeight=46,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2):"dark"==uiTheme&&(mxClient.link("stylesheet",STYLE_PATH+"/dark.css"),Dialog.backdropColor="#2a2a2a",Graph.prototype.defaultThemeName="darkTheme",Graph.prototype.defaultPageBackgroundColor= +"#2a2a2a",Graph.prototype.defaultPageBorderColor="#505759",Graph.prototype.svgShadowColor="#e0e0e0",Graph.prototype.svgShadowOpacity="0.6",Graph.prototype.svgShadowSize="0.8",Graph.prototype.svgShadowBlur="1.4",Format.prototype.inactiveTabBackgroundColor="black",BaseFormatPanel.prototype.buttonBackgroundColor="#2a2a2a",Sidebar.prototype.dragPreviewBorder="1px dashed #cccccc",mxGraphHandler.prototype.previewColor="#cccccc",StyleFormatPanel.prototype.defaultStrokeColor="#cccccc",mxClient.IS_SVG&&(Editor.helpImage= +"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAP1BMVEUAAAD///////////////////////////////////////////////////////////////////////////////9Du/pqAAAAFXRSTlMAT30qCJRBboyDZyCgRzUUdF46MJlgXETgAAAAeklEQVQY022O2w4DIQhEQUURda/9/28tUO2+7CQS5sgQ4F1RapX78YUwRqQjTU8ILqQfKerTKTvACJ4nLX3krt+8aS82oI8aQC4KavRgtvEW/mDvsICgA03PSGRr79MqX1YPNIxzjyqtw8ZnnRo4t5a5undtJYRywau+ds4Cyza3E6YAAAAASUVORK5CYII=",Editor.checkmarkImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAMAAACeyVWkAAAARVBMVEUAAACZmZkICAgEBASNjY2Dg4MYGBiTk5N5eXl1dXVmZmZQUFBCQkI3NzceHh4MDAykpKSJiYl+fn5sbGxaWlo/Pz8SEhK96uPlAAAAAXRSTlMAQObYZgAAAE5JREFUGNPFzTcSgDAQQ1HJGUfy/Y9K7V1qeOUfzQifCQZai1XHaz11LFysbDbzgDSSWMZiETz3+b8yNUc/MMsktxuC8XQBSncdLwz+8gCCggGXzBcozAAAAABJRU5ErkJggg=="))}; +EditorUi.initTheme();EditorUi.prototype.hideFooter=function(){var a=document.getElementById("geFooter");null!=a&&(this.footerHeight=0,a.style.display="none",this.refresh())};EditorUi.prototype.showFooter=function(a){var b=document.getElementById("geFooter");null!=b&&(this.footerHeight=a,b.style.display="inline",this.refresh())};EditorUi.prototype.showImageDialog=function(a,b,c,e,f){a=new ImageDialog(this,a,b,c,e,f);this.showDialog(a.container,Graph.fileSupport?440:360,Graph.fileSupport?200:90,!0, +!0);a.init()};EditorUi.prototype.showBackgroundImageDialog=function(a){a=null!=a?a:mxUtils.bind(this,function(a){a=new ChangePageSetup(this,null,a);a.ignoreColor=!0;this.editor.graph.model.execute(a)});var b=new BackgroundImageDialog(this,mxUtils.bind(this,function(b){a(b)}));this.showDialog(b.container,360,200,!0,!0);b.init()};EditorUi.prototype.showLibraryDialog=function(a,b,c,e,f){a=new LibraryDialog(this,a,b,c,e,f);this.showDialog(a.container,640,440,!0,!1,mxUtils.bind(this,function(a){a&&null== +this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));a.init()};var c=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(a){var b=c.apply(this,arguments);this.editor.graph.addListener("viewStateChanged",mxUtils.bind(this,function(a){this.editor.graph.isSelectionEmpty()&&b.refresh()}));return b};EditorUi.prototype.createSidebarFooterContainer=function(){var a=this.createDiv("geSidebarContainer");a.style.position="absolute";a.style.overflow="hidden";a.style.borderWidth= +"3px";var b=document.createElement("a");b.className="geTitle";b.style.height="100%";b.style.paddingTop="9px";b.innerHTML='<span style="font-size:18px;margin-right:5px;">+</span>';mxUtils.write(b,mxResources.get("moreShapes")+"...");mxEvent.addListener(b,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(b,"click",mxUtils.bind(this,function(a){this.actions.get("shapes").funct();mxEvent.consume(a)}));a.appendChild(b);return a};EditorUi.prototype.handleError= +function(a,b,c,e){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},g=null!=a&&null!=a.error?a.error:a;if(null!=g||null!=b){a=mxUtils.htmlEntities(mxResources.get("unknownError"));var m=mxResources.get("ok"),n=null;b=null!=b?b:mxResources.get("error");if(null!=g)if(null!=g.retry&&(m=mxResources.get("cancel"),n=function(){d();g.retry()}),404==g.code||404==g.status||403==g.code){a=403==g.code?null!=g.message?mxUtils.htmlEntities(g.message):mxUtils.htmlEntities(mxResources.get("accessDenied")): +mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied"));var x=window.location.hash;null!=x&&"#G"==x.substring(0,2)&&(x=x.substring(2),a+='<br><a href="https://drive.google.com/open?id='+x+'" target="_blank">'+mxUtils.htmlEntities(mxResources.get("tryOpeningViaThisPage"))+"</a>")}else null!=g.message?a=mxUtils.htmlEntities(g.message):null!=g.response&&null!=g.response.error?a=mxUtils.htmlEntities(g.response.error):"undefined"!==window.App&&(g.code==App.ERROR_TIMEOUT?a=mxUtils.htmlEntities(mxResources.get("timeout")): +g.code==App.ERROR_BUSY&&(a=mxUtils.htmlEntities(mxResources.get("busy"))));this.showError(b,a,m,c,n,null,null,null,null,null,null,null,e?c:null)}else null!=c&&c()};EditorUi.prototype.showError=function(a,b,c,e,f,k,l,n,x,z,A,q,p){a=new ErrorDialog(this,a,b,c||mxResources.get("ok"),e,f,k,l,q,n,x);this.showDialog(a.container,z||340,A||(null!=b&&120<b.length?180:150),!0,!1,p);a.init()};EditorUi.prototype.alert=function(a,b){var d=new ErrorDialog(this,null,a,mxResources.get("ok"),b);this.showDialog(d.container, +340,100,!0,!1);d.init()};EditorUi.prototype.confirm=function(a,b,c,e,f,k){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){};a=new ConfirmDialog(this,a,function(){d();null!=b&&b()},function(){d();null!=c&&c()},e,f);this.showDialog(a.container,340,90,!0,k);a.init()};EditorUi.prototype.setCurrentFile=function(a){this.currentFile=a};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP|| +!this.editor.graph.mathEnabled&&this.useCanvasForExport};EditorUi.prototype.createSvgDataUri=function(a){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(a)))};EditorUi.prototype.createImageDataUri=function(a,b,c){var d=a.toDataURL("image/"+c);if(6>=d.length||d==a.cloneNode(!1).toDataURL("image/"+c))throw{message:"Invalid image"};null!=b&&(d=this.writeGraphModelToPng(d,"zTXt","mxGraphModel",atob(this.editor.graph.compress(b))));return d};EditorUi.prototype.saveCanvas=function(a, +b,c){var d="jpeg"==c?"jpg":c,g=this.getBaseFilename()+"."+d;a=this.createImageDataUri(a,b,c);this.saveData(g,d,a.substring(a.lastIndexOf(",")+1),"image/"+c,!0)};EditorUi.prototype.isLocalFileSave=function(){return"remote"!=urlParams.save&&(mxClient.IS_IE||"undefined"!==typeof window.Blob&&"undefined"!==typeof window.URL)&&9!=document.documentMode&&8!=document.documentMode&&7!=document.documentMode&&!mxClient.IS_QUIRKS||this.isOfflineApp()||mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(a, +b){var d=new TextareaDialog(this,a,b,null,null,mxResources.get("close"));d.textarea.style.width="600px";d.textarea.style.height="380px";this.showDialog(d.container,620,460,!0,!0);d.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(a,b,c,e,f){if(window.Blob&&navigator.msSaveOrOpenBlob)a=e?this.base64ToBlob(a,c):new Blob([a],{type:c}),navigator.msSaveOrOpenBlob(a,b);else if(mxClient.IS_IE)c=window.open("about:blank","_blank"),null==c?mxUtils.popup(a,!0):(c.document.write(a), +c.document.close(),c.document.execCommand("SaveAs",!0,b),c.close());else{var d=document.createElement("a"),g=!mxClient.IS_SF&&0>navigator.userAgent.indexOf("PaleMoon/")&&"undefined"!==typeof d.download;if(mxClient.IS_GC)var n=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./),g=65==(n?parseInt(n[2],10):!1)?!1:g;if(g||this.isOffline()){d.href=URL.createObjectURL(e?this.base64ToBlob(a,c):new Blob([a],{type:c}));g?d.download=b:d.setAttribute("target","_blank");document.body.appendChild(d);try{window.setTimeout(function(){URL.revokeObjectURL(d.href)}, +0),d.click(),d.parentNode.removeChild(d)}catch(x){}}else this.createEchoRequest(a,b,c,e,f).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(a,b,c,e,f,k){a="xml="+encodeURIComponent(a);return new mxXmlRequest(SAVE_URL,a+(null!=c?"&mime="+c:"")+(null!=f?"&format="+f:"")+(null!=k?"&base64="+k:"")+(null!=b?"&filename="+encodeURIComponent(b):"")+(e?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(a,b){b=b||"";for(var d=atob(a),c=d.length,g=Math.ceil(c/1024),e=Array(g), +f=0;f<g;++f){for(var n=1024*f,x=Math.min(n+1024,c),k=Array(x-n),l=0;n<x;++l,++n)k[l]=d[n].charCodeAt(0);e[f]=new Uint8Array(k)}return new Blob(e,{type:b})};EditorUi.prototype.saveLocalFile=function(a,b,c,e,f,k,l){k=null!=k?k:!1;l=null!=l?l:"vsdx"!=f&&(!mxClient.IS_IOS||!navigator.standalone);f=this.getServiceCount(k);b=new CreateDialog(this,b,mxUtils.bind(this,function(b,d){try{if("_blank"==d)if(null==c||"image/"!=c.substring(0,6)||"image/svg"==c.substring(0,9)&&!mxClient.IS_SVG){var g=window.open("about:blank"); +null==g?mxUtils.popup(a,!0):(g.document.write(mxUtils.htmlEntities(a,!1)),g.document.close())}else this.openInNewWindow(a,c,e);else d==App.MODE_DEVICE||"download"==d?this.doSaveLocalFile(a,b,c,e):null!=b&&0<b.length&&this.pickFolder(d,mxUtils.bind(this,function(g){try{this.exportFile(a,b,c,e,d,g)}catch(F){this.handleError(F)}}))}catch(A){this.handleError(A)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,k,l,null,1<f,4<f&&(!k||6>f)?3:4, +a,c,e);this.showDialog(b.container,420,1==f?160:4<f?390:270,!0,!0);b.init()};EditorUi.prototype.openInNewWindow=function(a,b,c){if(mxClient.IS_GC||mxClient.IS_EDGE||11==document.documentMode||10==document.documentMode){var d=window.open("about:blank");null==d||null==d.document?mxUtils.popup(a,!0):("image/svg+xml"==b?d.document.write("<html>"+a+"</html>"):d.document.write('<html><img src="data:'+b+(c?";base64,"+a:";charset=utf8,"+encodeURIComponent(a))+'"/></html>'),d.document.close())}else d=window.open("data:"+ +b+(c?";base64,"+a:";charset=utf8,"+encodeURIComponent(a))),null!=d&&null!=d.document||mxUtils.popup(a,!0)};var a=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.addChromelessToolbarItems=function(b){if(this.isExportToCanvas()){this.exportDialog=null;var d=b(mxUtils.bind(this,function(a){var b=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",b);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog= +null)});if(null!=this.exportDialog)b.apply(this);else{this.exportDialog=document.createElement("div");var c=d.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";this.exportDialog.style.fontFamily="Helvetica,Arial";this.exportDialog.style.backgroundColor="#000000";this.exportDialog.style.width="50px";this.exportDialog.style.height="50px";this.exportDialog.style.padding="4px 2px 4px 2px"; +this.exportDialog.style.color="#ffffff";mxUtils.setOpacity(this.exportDialog,70);this.exportDialog.style.left=c.left+"px";this.exportDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";c=mxUtils.getCurrentStyle(this.editor.graph.container);this.exportDialog.style.zIndex=c.zIndex;var g=new Spinner({lines:8,length:6,width:5,radius:6,rotate:0,color:"#fff",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"28px",zIndex:2E9});g.spin(this.exportDialog); +this.exportToCanvas(mxUtils.bind(this,function(a){g.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var d=this.createImageDataUri(a,null,"png");a=document.createElement("img");a.style.maxWidth="140px";a.style.maxHeight="140px";a.style.cursor="pointer";a.style.backgroundColor="white";a.setAttribute("title",mxResources.get("openInNewWindow"));a.setAttribute("border","0");a.setAttribute("src",d);this.exportDialog.appendChild(a); +mxEvent.addListener(a,"click",mxUtils.bind(this,function(){this.openInNewWindow(d.substring(d.indexOf(",")+1),"image/png",!0);b.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));mxEvent.addListener(this.editor.graph.container,"click",b);document.body.appendChild(this.exportDialog)}mxEvent.consume(a)}),Editor.cameraLargeImage,mxResources.get("export"))}a.apply(this,arguments)};EditorUi.prototype.saveData=function(a,b, +c,e,f){this.isLocalFileSave()?this.saveLocalFile(c,a,e,f,b):this.saveRequest(a,b,mxUtils.bind(this,function(a,d){return this.createEchoRequest(c,a,e,f,b,d)}),c,f,e)};EditorUi.prototype.saveRequest=function(a,b,c,e,f,k,l){l=null!=l?l:!mxClient.IS_IOS||!navigator.standalone;var d=this.getServiceCount(!1);a=new CreateDialog(this,a,mxUtils.bind(this,function(a,d){if("_blank"==d||null!=a&&0<a.length){var g=c("_blank"==d?null:a,d==App.MODE_DEVICE||"download"==d||null==d||"_blank"==d?"0":"1");null!=g&&(d== +App.MODE_DEVICE||"download"==d||"_blank"==d?g.simulate(document,"_blank"):this.pickFolder(d,mxUtils.bind(this,function(c){k=null!=k?k:"pdf"==b?"application/pdf":"image/"+b;if(null!=e)try{this.exportFile(e,a,k,!0,d,c)}catch(E){this.handleError(E)}else this.spinner.spin(document.body,mxResources.get("saving"))&&g.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=g.getStatus()&&299>=g.getStatus())try{this.exportFile(g.getText(),a,k,!0,d,c)}catch(E){this.handleError(E)}else this.handleError({message:mxResources.get("errorSavingFile")})}), +function(a){this.spinner.stop();this.handleError(a)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,l,null,1<d,4<d?3:4,e,k,f);this.showDialog(a.container,380,1==d?160:4<d?390:270,!0,!0);a.init()};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(a,b,c,e,f,k){};EditorUi.prototype.pickFolder=function(a,b,c){b(null)};EditorUi.prototype.exportSvg=function(a,b,c,e,f,k,l, +n,x,z){if(this.spinner.spin(document.body,mxResources.get("export"))){var d=this.editor.graph.isSelectionEmpty();c=null!=c?c:d;d=b?null:this.editor.graph.background;d==mxConstants.NONE&&(d=null);null==d&&0==b&&(d="#ffffff");var g=this.editor.graph.getSvg(d,a,l,n,null,c,null,null,"blank"==z?"_blank":"self"==z?"_top":null);e&&this.editor.graph.addSvgShadow(g);var m=this.getBaseFilename()+".svg",t=mxUtils.bind(this,function(a){this.spinner.stop();f&&a.setAttribute("content",this.getFileData(!0,null, +null,null,c,x));if(null!=this.editor.fontCss){var b=a.ownerDocument,b=null!=b.createElementNS?b.createElementNS(mxConstants.NS_SVG,"style"):b.createElement("style");b.setAttribute("type","text/css");mxUtils.setTextContent(b,this.editor.fontCss);a.getElementsByTagName("defs")[0].appendChild(b)}var d='<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a);this.isLocalFileSave()||d.length<=MAX_REQUEST_SIZE?this.saveData(m,"svg",d,"image/svg+xml"): +this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(d)}))});this.convertMath(this.editor.graph,g,!1,mxUtils.bind(this,function(){k?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.convertImages(g,t,this.thumbImageCache)):t(g)}))}};EditorUi.prototype.addRadiobox=function(a,b,c,e,f,k,l){return this.addCheckbox(a,c,e,f,k,l,!0,b)};EditorUi.prototype.addCheckbox=function(a,b,c,e,f,k,l,n){k=null!=k?k:!0;var d=document.createElement("input"); +d.style.marginRight="8px";d.style.marginTop="16px";d.setAttribute("type",l?"radio":"checkbox");l="geCheckbox-"+Editor.guid();d.id=l;null!=n&&d.setAttribute("name",n);c&&(d.setAttribute("checked","checked"),d.defaultChecked=!0);e&&d.setAttribute("disabled","disabled");k&&(a.appendChild(d),c=document.createElement("label"),mxUtils.write(c,b),c.setAttribute("for",l),a.appendChild(c),f||mxUtils.br(a));return d};EditorUi.prototype.addEditButton=function(a,b){var d=this.addCheckbox(a,mxResources.get("edit")+ +":",!0,null,!0);d.style.marginLeft="24px";var c=this.getCurrentFile(),g="";null!=c&&c.getMode()!=App.MODE_DEVICE&&c.getMode()!=App.MODE_BROWSER&&(g=window.location.href);var e=document.createElement("select");e.style.width="120px";e.style.marginLeft="8px";e.style.marginRight="10px";e.className="geBtn";c=document.createElement("option");c.setAttribute("value","blank");mxUtils.write(c,mxResources.get("makeCopy"));e.appendChild(c);c=document.createElement("option");c.setAttribute("value","custom");mxUtils.write(c, +mxResources.get("custom")+"...");e.appendChild(c);a.appendChild(e);mxEvent.addListener(e,"change",mxUtils.bind(this,function(){if("custom"==e.value){var a=new FilenameDialog(this,g,mxResources.get("ok"),function(a){null!=a?g=a:e.value="blank"},mxResources.get("url"),null,null,null,null,function(){e.value="blank"});this.showDialog(a.container,300,80,!0,!1);a.init()}}));mxEvent.addListener(d,"change",mxUtils.bind(this,function(){d.checked&&(null==b||b.checked)?e.removeAttribute("disabled"):e.setAttribute("disabled", +"disabled")}));mxUtils.br(a);return{getLink:function(){return d.checked?"blank"===e.value?"_blank":g:null},getEditInput:function(){return d},getEditSelect:function(){return e}}};EditorUi.prototype.addLinkSection=function(a,b){function d(){f.innerHTML='<div style="width:100%;height:100%;box-sizing:border-box;'+(null!=e&&e!=mxConstants.NONE?"border:1px solid black;background-color:"+e:"background-position:center center;background-repeat:no-repeat;background-image:url('"+Dialog.prototype.closeImage+ "')")+';"></div>'}mxUtils.write(a,mxResources.get("links")+":");var c=document.createElement("select");c.style.width="100px";c.style.marginLeft="8px";c.style.marginRight="10px";c.className="geBtn";var g=document.createElement("option");g.setAttribute("value","auto");mxUtils.write(g,mxResources.get("automatic"));c.appendChild(g);g=document.createElement("option");g.setAttribute("value","blank");mxUtils.write(g,mxResources.get("openInNewWindow"));c.appendChild(g);g=document.createElement("option"); -g.setAttribute("value","self");mxUtils.write(g,mxResources.get("openInThisWindow"));c.appendChild(g);b&&(g=document.createElement("option"),g.setAttribute("value","frame"),mxUtils.write(g,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),c.appendChild(g));a.appendChild(c);mxUtils.write(a,mxResources.get("borderColor")+":");var f="#0000ff",h=null,h=mxUtils.button("",mxUtils.bind(this,function(a){this.pickColor(f||"none",function(a){f=a;d()});mxEvent.consume(a)}));d();h.style.padding= -mxClient.IS_FF?"4px 2px 4px 2px":"4px";h.style.marginLeft="4px";h.style.height="22px";h.style.width="22px";h.style.position="relative";h.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";h.className="geColorBtn";a.appendChild(h);mxUtils.br(a);return{getColor:function(){return f},getTarget:function(){return c.value},focus:function(){c.focus()}}};EditorUi.prototype.createLink=function(a,b,c,f,h,k,l,p){var d=this.getCurrentFile(),g=[];f&&(g.push("lightbox=1"),"auto"!=a&&g.push("target="+ -a),null!=b&&b!=mxConstants.NONE&&g.push("highlight="+("#"==b.charAt(0)?b.substring(1):b)),null!=h&&0<h.length&&g.push("edit="+encodeURIComponent(h)),k&&g.push("layers=1"),this.editor.graph.foldingEnabled&&g.push("nav=1"));c&&(a=this.getSelectedPageIndex(),0<a&&g.push("page="+a));a=!0;null!=l?c="#U"+encodeURIComponent(l):(d=this.getCurrentFile(),p||null==d||d.constructor!=window.DriveFile?c="#R"+encodeURIComponent(c?this.getFileData(!0,null,null,null,null,null,null,!0):this.editor.graph.compress(mxUtils.getXml(this.editor.getGraphXml()))): -(c="#"+d.getHash(),a=!1));a&&null!=d&&null!=d.getTitle()&&d.getTitle()!=this.defaultFilename&&g.push("title="+encodeURIComponent(d.getTitle()));return(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?"https://www.draw.io/":"https://"+window.location.host+"/")+(0<g.length?"?"+g.join("&"):"")+c};EditorUi.prototype.createHtml=function(a,b,c,f,h,k,l,p,m,x,t){this.getBasenames();var d={};""!=h&&h!=mxConstants.NONE&&(d.highlight=h);"auto"!==f&&(d.target=f); -m||(d.lightbox=!1);d.nav=this.editor.graph.foldingEnabled;c=parseInt(c);isNaN(c)||100==c||(d.zoom=c/100);c=[];l&&(c.push("pages"),d.resize=!0,null!=this.pages&&null!=this.currentPage&&(d.page=mxUtils.indexOf(this.pages,this.currentPage)));b&&(c.push("zoom"),d.resize=!0);p&&c.push("layers");0<c.length&&(m&&c.push("lightbox"),d.toolbar=c.join(" "));null!=x&&0<x.length&&(d.edit=x);null!=a?d.url=a:d.xml=this.getFileData(!0,null,null,null,null,!l);b='<div class="mxgraph" style="'+(k?"max-width:100%;": -"")+(""!=c?"border:1px solid transparent;":"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(d))+'"></div>';a=null!=a?"&fetch="+encodeURIComponent(a):"";t(b,'<script type="text/javascript" src="'+(0<a.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":"https://www.draw.io/embed2.js?")+a:"1"==urlParams.dev?"https://test.draw.io/js/viewer.min.js":"https://www.draw.io/js/viewer.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(a,b,c,f){var d=document.createElement("div"); -d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,mxResources.get("html"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(g);var n=document.createElement("div");n.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var h=document.createElement("input");h.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";h.setAttribute("value","url");h.setAttribute("type","radio");h.setAttribute("name", -"type-embedhtmldialog");g=h.cloneNode(!0);g.setAttribute("value","copy");n.appendChild(g);var m=document.createElement("span");mxUtils.write(m,mxResources.get("includeCopyOfMyDiagram"));n.appendChild(m);mxUtils.br(n);n.appendChild(h);m=document.createElement("span");mxUtils.write(m,mxResources.get("publicDiagramUrl"));n.appendChild(m);var k=this.getCurrentFile();null==c&&null!=k&&k.constructor==window.DriveFile&&(m=document.createElement("a"),m.style.paddingLeft="12px",m.style.color="gray",m.setAttribute("href", -"javascript:void(0);"),mxUtils.write(m,mxResources.get("share")),n.appendChild(m),mxEvent.addListener(m,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(k.getId())})));g.setAttribute("checked","checked");null==c&&h.setAttribute("disabled","disabled");d.appendChild(n);var q=this.addLinkSection(d),l=this.addCheckbox(d,mxResources.get("zoom"),!0,null,!0);mxUtils.write(d,":");var p=document.createElement("input");p.setAttribute("type","text");p.style.marginRight="16px"; -p.style.width="60px";p.style.marginLeft="4px";p.style.marginRight="12px";p.value="100%";d.appendChild(p);var t=this.addCheckbox(d,mxResources.get("fit"),!0),n=null!=this.pages&&1<this.pages.length,H=H=this.addCheckbox(d,mxResources.get("allPages"),n,!n),D=this.addCheckbox(d,mxResources.get("layers"),!0),E=this.addCheckbox(d,mxResources.get("lightbox"),!0),I=this.addEditButton(d,E),A=I.getEditInput();A.style.marginBottom="16px";mxEvent.addListener(E,"change",function(){E.checked?A.removeAttribute("disabled"): -A.setAttribute("disabled","disabled");A.checked&&E.checked?I.getEditSelect().removeAttribute("disabled"):I.getEditSelect().setAttribute("disabled","disabled")});a=new CustomDialog(this,d,mxUtils.bind(this,function(){f(h.checked?c:null,l.checked,p.value,q.getTarget(),q.getColor(),t.checked,H.checked,D.checked,E.checked,I.getLink())}),null,a,b);this.showDialog(a.container,340,384,!0,!0);g.focus()};EditorUi.prototype.showPublishLinkDialog=function(a,b,c,f,h,k){var d=document.createElement("div");d.style.whiteSpace= -"nowrap";var g=document.createElement("h3");mxUtils.write(g,a||mxResources.get("link"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(g);var m=this.getCurrentFile(),g="https://desk.draw.io/support/solutions/articles/16000051941";a=0;if(null!=m&&m.constructor==window.DriveFile&&!b){a=80;var g="https://desk.draw.io/support/solutions/articles/16000039384",n=document.createElement("div");n.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;"; -var q=document.createElement("div");q.style.whiteSpace="normal";mxUtils.write(q,mxResources.get("linkAccountRequired"));n.appendChild(q);q=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(m.getId())}));q.style.marginTop="12px";q.className="geBtn";n.appendChild(q);d.appendChild(n);q=document.createElement("a");q.style.paddingLeft="12px";q.style.color="gray";q.style.fontSize="11px";q.setAttribute("href","javascript:void(0);");mxUtils.write(q,mxResources.get("check")); -n.appendChild(q);mxEvent.addListener(q,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(a){this.spinner.stop();a=new ErrorDialog(this,null,mxResources.get(null!=a?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(a.container,300,80,!0,!1);a.init()}))}))}var l=null,u=null;if(null!=c||null!=f)a+=30,mxUtils.write(d,mxResources.get("width")+":"),l=document.createElement("input"), -l.setAttribute("type","text"),l.style.marginRight="16px",l.style.width="50px",l.style.marginLeft="6px",l.style.marginRight="16px",l.style.marginBottom="10px",l.value="100%",d.appendChild(l),mxUtils.write(d,mxResources.get("height")+":"),u=document.createElement("input"),u.setAttribute("type","text"),u.style.width="50px",u.style.marginLeft="6px",u.style.marginBottom="10px",u.value=f+"px",d.appendChild(u),mxUtils.br(d);var p=this.addLinkSection(d,k);c=null!=this.pages&&1<this.pages.length;var v=null; -if(null==m||m.constructor!=window.DriveFile||b)v=this.addCheckbox(d,mxResources.get("allPages"),c,!c);var t=this.addCheckbox(d,mxResources.get("lightbox"),!0),E=this.addEditButton(d,t),I=E.getEditInput(),A=this.addCheckbox(d,mxResources.get("layers"),!0);A.style.marginLeft=I.style.marginLeft;A.style.marginBottom="16px";A.style.marginTop="8px";mxEvent.addListener(t,"change",function(){t.checked?(A.removeAttribute("disabled"),I.removeAttribute("disabled")):(A.setAttribute("disabled","disabled"),I.setAttribute("disabled", -"disabled"));I.checked&&t.checked?E.getEditSelect().removeAttribute("disabled"):E.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,mxUtils.bind(this,function(){h(p.getTarget(),p.getColor(),null==v?!0:v.checked,t.checked,E.getLink(),A.checked,null!=l?l.value:null,null!=u?u.value:null)}),null,mxResources.get("create"),g);this.showDialog(b.container,340,254+a,!0,!0);null!=l?(l.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?l.select(): -document.execCommand("selectAll",!1,null)):p.focus()};EditorUi.prototype.showRemoteExportDialog=function(a,b,c,f){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,mxResources.get("image"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(g);var n=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),h=f?null:this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"), -!0),g=this.editor.graph,m=f?null:this.addCheckbox(d,mxResources.get("transparentBackground"),g.background==mxConstants.NONE||null==g.background);null!=m&&(m.style.marginBottom="16px");a=new CustomDialog(this,d,mxUtils.bind(this,function(){c(!n.checked,null!=h?h.checked:!1,null!=m?m.checked:!1)}),null,a,b);this.showDialog(a.container,300,f?100:186,!0,!0)};EditorUi.prototype.showExportDialog=function(a,b,c,f,h,k,l,p){l=null!=l?l:!0;var d=document.createElement("div");d.style.whiteSpace="nowrap";var g= -this.editor.graph,n="jpeg"==p?196:300,q=document.createElement("h3");mxUtils.write(q,a);q.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";d.appendChild(q);mxUtils.write(d,mxResources.get("zoom")+":");var u=document.createElement("input");u.setAttribute("type","text");u.style.marginRight="16px";u.style.width="60px";u.style.marginLeft="4px";u.style.marginRight="12px";u.value=this.lastExportZoom||"100%";d.appendChild(u);mxUtils.write(d,mxResources.get("borderWidth")+":"); -var w=document.createElement("input");w.setAttribute("type","text");w.style.marginRight="16px";w.style.width="60px";w.style.marginLeft="4px";w.value=this.lastExportBorder||"0";d.appendChild(w);mxUtils.br(d);var v=this.addCheckbox(d,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=p),t=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,g.isSelectionEmpty()),y=document.createElement("input");y.style.marginTop="16px";y.style.marginRight="8px";y.style.marginLeft="24px";y.setAttribute("disabled", -"disabled");y.setAttribute("type","checkbox");k&&(d.appendChild(y),mxUtils.write(d,mxResources.get("crop")),mxUtils.br(d),n+=26,mxEvent.addListener(t,"change",function(){t.checked?y.removeAttribute("disabled"):y.setAttribute("disabled","disabled")}));g.isSelectionEmpty()||(y.setAttribute("checked","checked"),y.defaultChecked=!0);var I=this.addCheckbox(d,mxResources.get("shadow"),g.shadowVisible),A=document.createElement("input");A.style.marginTop="16px";A.style.marginRight="8px";A.setAttribute("type", -"checkbox");!this.isOffline()&&this.canvasSupported||A.setAttribute("disabled","disabled");b&&(d.appendChild(A),mxUtils.write(d,mxResources.get("embedImages")),mxUtils.br(d),n+=26);var G=this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),l,null,null,"jpeg"!=p),J=null!=this.pages&&1<this.pages.length,M=this.addCheckbox(d,J?mxResources.get("allPages"):"",J,!J,null,"jpeg"!=p);M.style.marginLeft="24px";M.style.marginBottom="16px";J||(M.style.display="none");mxEvent.addListener(G,"change",function(){G.checked&& -J?M.removeAttribute("disabled"):M.setAttribute("disabled","disabled")});l&&J||M.setAttribute("disabled","disabled");var L=document.createElement("select");L.style.maxWidth="260px";L.style.marginLeft="8px";L.style.marginRight="10px";L.className="geBtn";a=document.createElement("option");a.setAttribute("value","auto");mxUtils.write(a,mxResources.get("automatic"));L.appendChild(a);a=document.createElement("option");a.setAttribute("value","blank");mxUtils.write(a,mxResources.get("openInNewWindow"));L.appendChild(a); -a=document.createElement("option");a.setAttribute("value","self");mxUtils.write(a,mxResources.get("openInThisWindow"));L.appendChild(a);"svg"==p&&(mxUtils.write(d,mxResources.get("links")+":"),d.appendChild(L),mxUtils.br(d),mxUtils.br(d),n+=26);c=new CustomDialog(this,d,mxUtils.bind(this,function(){this.lastExportBorder=w.value;this.lastExportZoom=u.value;h(u.value,v.checked,!t.checked,I.checked,G.checked,A.checked,w.value,y.checked,!M.checked,L.value)}),null,c,f);this.showDialog(c.container,340, -n,!0,!0);u.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?u.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(a,b,c,f,h){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=this.editor.graph;if(null!=b){var n=document.createElement("h3");mxUtils.write(n,b);n.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(n)}var m=this.addCheckbox(d,mxResources.get("fit"), -!0),k=this.addCheckbox(d,mxResources.get("shadow"),g.shadowVisible&&f,!f),q=this.addCheckbox(d,c),l=this.addCheckbox(d,mxResources.get("lightbox"),!0),u=this.addEditButton(d,l),p=u.getEditInput(),t=1<g.model.getChildCount(g.model.getRoot()),D=this.addCheckbox(d,mxResources.get("layers"),t,!t);D.style.marginLeft=p.style.marginLeft;D.style.marginBottom="12px";D.style.marginTop="8px";mxEvent.addListener(l,"change",function(){l.checked?(t&&D.removeAttribute("disabled"),p.removeAttribute("disabled")): -(D.setAttribute("disabled","disabled"),p.setAttribute("disabled","disabled"));p.checked&&l.checked?u.getEditSelect().removeAttribute("disabled"):u.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,mxUtils.bind(this,function(){a(m.checked,k.checked,q.checked,l.checked,u.getLink(),D.checked)}),null,mxResources.get("embed"),h);this.showDialog(b.container,280,280,!0,!0)};EditorUi.prototype.createEmbedImage=function(a,b,c,f,h,k,l,p){function d(b){var d=" ",m="";f&&(d=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('https://www.draw.io/?client=1&lightbox=1"+ -(h?"&edit=_blank":"")+(k?"&layers=1":"")+"');}})(this);\"",m+="cursor:pointer;");a&&(m+="max-width:100%;");var n="";c&&(n=' width="'+Math.round(g.width)+'" height="'+Math.round(g.height)+'"');l('<img src="'+b+'"'+n+(""!=m?' style="'+m+'"':"")+d+"/>")}var g=this.editor.graph.getGraphBounds();if(this.isExportToCanvas())this.exportToCanvas(mxUtils.bind(this,function(a){var b=f?this.getFileData(!0):null;a=this.createImageDataUri(a,b,"png");d(a)}),null,null,null,mxUtils.bind(this,function(a){p({message:mxResources.get("unknownError")})}), -null,!0,c?2:1,null,b);else if(b=this.getFileData(!0),g.width*g.height<=MAX_AREA&&b.length<=MAX_REQUEST_SIZE){var n="";c&&(n="&w="+Math.round(2*g.width)+"&h="+Math.round(2*g.height));var q=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(f?"1":"0")+n+"&xml="+encodeURIComponent(b));q.send(mxUtils.bind(this,function(){200<=q.getStatus()&&299>=q.getStatus()?d("data:image/png;base64,"+q.getText()):p({message:mxResources.get("unknownError")})}))}else p({message:mxResources.get("drawingTooLarge")})}; -EditorUi.prototype.createEmbedSvg=function(a,b,c,f,h,k,l){var d=this.editor.graph.getSvg(),g=d.getElementsByTagName("a");if(null!=g)for(var n=0;n<g.length;n++){var q=g[n].getAttribute("href");null!=q&&"#"==q.charAt(0)&&"_blank"==g[n].getAttribute("target")&&g[n].removeAttribute("target")}f&&d.setAttribute("content",this.getFileData(!0));b&&this.editor.graph.addSvgShadow(d);if(c){var u=" ",w="";f&&(u="onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('https://www.draw.io/?client=1&lightbox=1"+ -(h?"&edit=_blank":"")+(k?"&layers=1":"")+"');}})(this);\"",w+="cursor:pointer;");a&&(w+="max-width:100%;");this.convertImages(d,mxUtils.bind(this,function(a){l('<img src="'+this.createSvgDataUri(mxUtils.getXml(a))+'"'+(""!=w?' style="'+w+'"':"")+u+"/>")}))}else w="",f&&(d.setAttribute("onclick","(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&&src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&&!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('https://www.draw.io/?client=1&lightbox=1"+ -(h?"&edit=_blank":"")+(k?"&layers=1":"")+"');}}})(this);"),w+="cursor:pointer;"),a&&(a=parseInt(d.getAttribute("width")),b=parseInt(d.getAttribute("height")),d.setAttribute("viewBox","0 0 "+a+" "+b),w+="max-width:100%;max-height:"+b+"px;",d.removeAttribute("height")),""!=w&&d.setAttribute("style",w),l(mxUtils.getXml(d))};EditorUi.prototype.timeSince=function(a){a=Math.floor((new Date-a)/1E3);var b=Math.floor(a/31536E3);if(1<b)return b+" "+mxResources.get("years");b=Math.floor(a/2592E3);if(1<b)return b+ -" "+mxResources.get("months");b=Math.floor(a/86400);if(1<b)return b+" "+mxResources.get("days");b=Math.floor(a/3600);if(1<b)return b+" "+mxResources.get("hours");b=Math.floor(a/60);return 1<b?b+" "+mxResources.get("minutes"):1==b?b+" "+mxResources.get("minute"):null};EditorUi.prototype.convertMath=function(a,b,c,f){a.mathEnabled&&"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?(Editor.MathJaxRender(b),window.setTimeout(mxUtils.bind(this,function(){MathJax.Hub.Queue(mxUtils.bind(this, -function(){f()}))}),0)):f()};EditorUi.prototype.decodeNodeIntoGraph=function(a,b){if(null!=a){var d=null;if("diagram"==a.nodeName)d=a;else if("mxfile"==a.nodeName){var c=a.getElementsByTagName("diagram");if(0<c.length){var d=c[0],g=b.getGlobalVariable;b.getGlobalVariable=function(a){return"page"==a?d.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==a?1:g.apply(this,arguments)}}}null!=d&&(c=b.decompress(mxUtils.getTextContent(d)),null!=c&&0<c.length&&(a=mxUtils.parseXml(c).documentElement))}c= -this.editor.graph;try{this.editor.graph=b,this.editor.setGraphXml(a)}catch(v){}finally{this.editor.graph=c}return a};EditorUi.prototype.getEmbeddedPng=function(a,b,c){var d=this.editor.graph,g=null;if(null!=c&&0<c.length)d=this.createTemporaryGraph(this.editor.graph.getStylesheet()),document.body.appendChild(d.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(c).documentElement,!0),d),g=c;else if(null!=this.pages&&this.currentPage!=this.pages[0]){var d=this.createTemporaryGraph(d.getStylesheet()), -f=d.getGlobalVariable,n=this.pages[0];d.getGlobalVariable=function(a){return"page"==a?n.getName():"pagenumber"==a?1:f.apply(this,arguments)};document.body.appendChild(d.container);d.model.setRoot(n.root)}this.exportToCanvas(mxUtils.bind(this,function(c){try{null==g&&(g=this.getFileData(!0));var f=c.toDataURL("image/png"),f=this.writeGraphModelToPng(f,"zTXt","mxGraphModel",atob(this.editor.graph.compress(g)));a(f.substring(f.lastIndexOf(",")+1));d!=this.editor.graph&&d.container.parentNode.removeChild(d.container)}catch(x){null!= -b&&b(x)}}),null,null,null,mxUtils.bind(this,function(a){null!=b&&b(a)}),null,null,null,null,d.shadowVisible,null,d)};EditorUi.prototype.getEmbeddedSvg=function(a,b,c,f,h,k,l){l=b.background;l==mxConstants.NONE&&(l=null);b=b.getSvg(l,null,null,null,null,k);null!=a&&b.setAttribute("content",a);null!=c&&b.setAttribute("resource",c);if(null!=h)this.convertImages(b,mxUtils.bind(this,function(a){h((f?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+ -mxUtils.getXml(a))}));else return(f?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(b)};EditorUi.prototype.exportImage=function(a,b,c,f,h,k,l,p,m){m=null!=m?m:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var d=this.editor.graph.isSelectionEmpty();c=null!=c?c:d;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.exportToCanvas(mxUtils.bind(this,function(a){this.spinner.stop(); -try{this.saveCanvas(a,h?this.getFileData(!0,null,null,null,c,p):null,m)}catch(F){"Invalid image"==F.message?this.downloadFile(m):this.handleError(F)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),null,c,a||1,b,f,null,null,k,l)}catch(z){this.spinner.stop(),this.handleError(z)}}};EditorUi.prototype.loadFonts=function(a){if(null!=this.editor.fontCss&&null==this.editor.resolvedFontCss){var b=function(a){return a.replace(RegExp("^[\\s\"']+","g"), -"").replace(RegExp("[\\s\"']+$","g"),"")},d=this.editor.fontCss.split("url("),c=0,f={},h=mxUtils.bind(this,function(){if(0==c){for(var g=[d[0]],m=1;m<d.length;m++){var n=d[m].indexOf(")");g.push('url("');g.push(f[b(d[m].substring(0,n))]);g.push('"'+d[m].substring(n))}this.editor.resolvedFontCss=g.join("");a()}});if(0<d.length)for(var k=1;k<d.length;k++){var l=d[k].indexOf(")"),m=null,x=d[k].indexOf("format(",l);0<x&&(m=b(d[k].substring(x+7,d[k].indexOf(")",x))));mxUtils.bind(this,function(a){if(null== -f[a]){f[a]=a;c++;var b="application/x-font-ttf";if("svg"==m||/(\.svg)($|\?)/i.test(a))b="image/svg+xml";else if("otf"==m||"embedded-opentype"==m||/(\.otf)($|\?)/i.test(a))b="application/x-font-opentype";else if("woff"==m||/(\.woff)($|\?)/i.test(a))b="application/font-woff";else if("woff2"==m||/(\.woff2)($|\?)/i.test(a))b="application/font-woff2";else if("eot"==m||/(\.eot)($|\?)/i.test(a))b="application/vnd.ms-fontobject";else if("sfnt"==m||/(\.sfnt)($|\?)/i.test(a))b="application/font-sfnt";var d= -a;/^https?:\/\//.test(d)&&!this.isCorsEnabledForUrl(d)&&(d=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(d,mxUtils.bind(this,function(b){f[a]=b;c--;h()}),mxUtils.bind(this,function(a){c--;h()}),!0,null,"data:"+b+";charset=utf-8;base64,")}})(b(d[k].substring(0,l)),m)}}else a()};EditorUi.prototype.exportToCanvas=function(a,b,c,f,h,k,l,p,m,x,t,F,C,B){k=null!=k?k:!0;F=null!=F?F:this.editor.graph;C=null!=C?C:0;var d=m?null:F.background;d==mxConstants.NONE&&(d=null);null==d&&(d=f);null==d&&0==m&& -(d=this.editor.graph.defaultPageBackgroundColor);this.convertImages(F.getSvg(d,null,null,B,null,null!=l?l:!0,null,null,null,x),mxUtils.bind(this,function(c){var g=new Image;g.onload=mxUtils.bind(this,function(){try{var f=document.createElement("canvas"),m=parseInt(c.getAttribute("width")),n=parseInt(c.getAttribute("height"));p=null!=p?p:1;null!=b&&(p=k?Math.min(1,Math.min(3*b/(4*n),b/m)):b/m);m=Math.ceil(p*m)+2*C;n=Math.ceil(p*n)+2*C;f.setAttribute("width",m);f.setAttribute("height",n);var q=f.getContext("2d"); -null!=d&&(q.beginPath(),q.rect(0,0,m,n),q.fillStyle=d,q.fill());q.scale(p,p);mxClient.IS_SF?window.setTimeout(function(){q.drawImage(g,C/p,C/p);a(f)},0):(q.drawImage(g,C/p,C/p),a(f))}catch(L){null!=h&&h(L)}});g.onerror=function(a){null!=h&&h(a)};try{x&&this.editor.graph.addSvgShadow(c,c);var f=mxUtils.bind(this,function(){if(null!=this.editor.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.editor.resolvedFontCss;c.getElementsByTagName("defs")[0].appendChild(a)}this.convertMath(F, -c,!0,mxUtils.bind(this,function(){g.src=this.createSvgDataUri(mxUtils.getXml(c))}))});this.loadFonts(f)}catch(A){null!=h&&h(A)}}),c,t)};EditorUi.prototype.createImageUrlConverter=function(){var a=new mxUrlConverter;a.updateBaseUrl();var b=a.convert,c=this;a.convert=function(d){if(null!=d){var g="http://"==d.substring(0,7)||"https://"==d.substring(0,8);g&&!navigator.onLine?d=c.svgBrokenImage.src:!g||d.substring(0,a.baseUrl.length)==a.baseUrl||c.crossOriginImages&&c.isCorsEnabledForUrl(d)?"chrome-extension://"!= -d.substring(0,19)&&(d=b.apply(this,arguments)):d=PROXY_URL+"?url="+encodeURIComponent(d)}return d};return a};EditorUi.prototype.convertImages=function(a,b,c,f){null==f&&(f=this.createImageUrlConverter());var d=0,g=c||{};c=mxUtils.bind(this,function(c,n){for(var m=a.getElementsByTagName(c),h=0;h<m.length;h++)mxUtils.bind(this,function(c){var m=f.convert(c.getAttribute(n));if(null!=m&&"data:"!=m.substring(0,5)){var h=g[m];null==h?(d++,this.convertImageToDataUri(m,function(f){null!=f&&(g[m]=f,c.setAttribute(n, -f));d--;0==d&&b(a)})):c.setAttribute(n,h)}else null!=m&&c.setAttribute(n,m)})(m[h])});c("image","xlink:href");c("img","src");0==d&&b(a)};EditorUi.prototype.loadUrl=function(a,b,c,f,h,k){try{var d=f||/(\.png)($|\?)/i.test(a)||/(\.jpe?g)($|\?)/i.test(a)||/(\.gif)($|\?)/i.test(a);h=null!=h?h:!0;var g=mxUtils.bind(this,function(){mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=b){var g=a.getText();if(d){if((9==document.documentMode||10==document.documentMode)&& -"undefined"!==typeof window.mxUtilsBinaryToArray){a=mxUtilsBinaryToArray(a.request.responseBody).toArray();for(var g=Array(a.length),f=0;f<a.length;f++)g[f]=String.fromCharCode(a[f]);g=g.join("")}k=null!=k?k:"data:image/png;base64,";g=k+this.base64Encode(g)}b(g)}}else null!=c&&c({code:App.ERROR_UNKNOWN},a)}),function(){null!=c&&c({code:App.ERROR_UNKNOWN})},d,this.timeout,function(){h&&null!=c&&c({code:App.ERROR_TIMEOUT,retry:g})})});g()}catch(m){null!=c&&c(m)}};EditorUi.prototype.isCorsEnabledForUrl= +g.setAttribute("value","self");mxUtils.write(g,mxResources.get("openInThisWindow"));c.appendChild(g);b&&(g=document.createElement("option"),g.setAttribute("value","frame"),mxUtils.write(g,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),c.appendChild(g));a.appendChild(c);mxUtils.write(a,mxResources.get("borderColor")+":");var e="#0000ff",f=null,f=mxUtils.button("",mxUtils.bind(this,function(a){this.pickColor(e||"none",function(a){e=a;d()});mxEvent.consume(a)}));d();f.style.padding= +mxClient.IS_FF?"4px 2px 4px 2px":"4px";f.style.marginLeft="4px";f.style.height="22px";f.style.width="22px";f.style.position="relative";f.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";f.className="geColorBtn";a.appendChild(f);mxUtils.br(a);return{getColor:function(){return e},getTarget:function(){return c.value},focus:function(){c.focus()}}};EditorUi.prototype.createLink=function(a,b,c,e,f,k,l,n){var d=this.getCurrentFile(),g=[];e&&(g.push("lightbox=1"),"auto"!=a&&g.push("target="+ +a),null!=b&&b!=mxConstants.NONE&&g.push("highlight="+("#"==b.charAt(0)?b.substring(1):b)),null!=f&&0<f.length&&g.push("edit="+encodeURIComponent(f)),k&&g.push("layers=1"),this.editor.graph.foldingEnabled&&g.push("nav=1"));c&&(a=this.getSelectedPageIndex(),0<a&&g.push("page="+a));a=!0;null!=l?c="#U"+encodeURIComponent(l):(d=this.getCurrentFile(),n||null==d||d.constructor!=window.DriveFile?c="#R"+encodeURIComponent(c?this.getFileData(!0,null,null,null,null,null,null,!0):this.editor.graph.compress(mxUtils.getXml(this.editor.getGraphXml()))): +(c="#"+d.getHash(),a=!1));a&&null!=d&&null!=d.getTitle()&&d.getTitle()!=this.defaultFilename&&g.push("title="+encodeURIComponent(d.getTitle()));return(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host+"/")+(0<g.length?"?"+g.join("&"):"")+c};EditorUi.prototype.createHtml=function(a,b,c,e,f,k,l,n,x,q,A){this.getBasenames();var d={};""!=f&&f!=mxConstants.NONE&&(d.highlight=f);"auto"!==e&&(d.target=e);x||(d.lightbox= +!1);d.nav=this.editor.graph.foldingEnabled;c=parseInt(c);isNaN(c)||100==c||(d.zoom=c/100);c=[];l&&(c.push("pages"),d.resize=!0,null!=this.pages&&null!=this.currentPage&&(d.page=mxUtils.indexOf(this.pages,this.currentPage)));b&&(c.push("zoom"),d.resize=!0);n&&c.push("layers");0<c.length&&(x&&c.push("lightbox"),d.toolbar=c.join(" "));null!=q&&0<q.length&&(d.edit=q);null!=a?d.url=a:d.xml=this.getFileData(!0,null,null,null,null,!l);b='<div class="mxgraph" style="'+(k?"max-width:100%;":"")+(""!=c?"border:1px solid transparent;": +"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(d))+'"></div>';a=null!=a?"&fetch="+encodeURIComponent(a):"";A(b,'<script type="text/javascript" src="'+(0<a.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.drawHost+"/embed2.js?")+a:"1"==urlParams.dev?"https://test.draw.io/js/viewer.min.js":window.VIEWER_URL?window.VIEWER_URL:EditorUi.drawHost+"/js/viewer.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(a,b,c,e){var d=document.createElement("div"); +d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,mxResources.get("html"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(g);var f=document.createElement("div");f.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var n=document.createElement("input");n.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";n.setAttribute("value","url");n.setAttribute("type","radio");n.setAttribute("name", +"type-embedhtmldialog");g=n.cloneNode(!0);g.setAttribute("value","copy");f.appendChild(g);var m=document.createElement("span");mxUtils.write(m,mxResources.get("includeCopyOfMyDiagram"));f.appendChild(m);mxUtils.br(f);f.appendChild(n);m=document.createElement("span");mxUtils.write(m,mxResources.get("publicDiagramUrl"));f.appendChild(m);var k=this.getCurrentFile();null==c&&null!=k&&k.constructor==window.DriveFile&&(m=document.createElement("a"),m.style.paddingLeft="12px",m.style.color="gray",m.setAttribute("href", +"javascript:void(0);"),mxUtils.write(m,mxResources.get("share")),f.appendChild(m),mxEvent.addListener(m,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(k.getId())})));g.setAttribute("checked","checked");null==c&&n.setAttribute("disabled","disabled");d.appendChild(f);var l=this.addLinkSection(d),v=this.addCheckbox(d,mxResources.get("zoom"),!0,null,!0);mxUtils.write(d,":");var q=document.createElement("input");q.setAttribute("type","text");q.style.marginRight="16px"; +q.style.width="60px";q.style.marginLeft="4px";q.style.marginRight="12px";q.value="100%";d.appendChild(q);var p=this.addCheckbox(d,mxResources.get("fit"),!0),f=null!=this.pages&&1<this.pages.length,u=u=this.addCheckbox(d,mxResources.get("allPages"),f,!f),D=this.addCheckbox(d,mxResources.get("layers"),!0),K=this.addCheckbox(d,mxResources.get("lightbox"),!0),I=this.addEditButton(d,K),C=I.getEditInput();C.style.marginBottom="16px";mxEvent.addListener(K,"change",function(){K.checked?C.removeAttribute("disabled"): +C.setAttribute("disabled","disabled");C.checked&&K.checked?I.getEditSelect().removeAttribute("disabled"):I.getEditSelect().setAttribute("disabled","disabled")});a=new CustomDialog(this,d,mxUtils.bind(this,function(){e(n.checked?c:null,v.checked,q.value,l.getTarget(),l.getColor(),p.checked,u.checked,D.checked,K.checked,I.getLink())}),null,a,b);this.showDialog(a.container,340,384,!0,!0);g.focus()};EditorUi.prototype.showPublishLinkDialog=function(a,b,c,e,f,k){var d=document.createElement("div");d.style.whiteSpace= +"nowrap";var g=document.createElement("h3");mxUtils.write(g,a||mxResources.get("link"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(g);var m=this.getCurrentFile(),g="https://desk.draw.io/support/solutions/articles/16000051941";a=0;if(null!=m&&m.constructor==window.DriveFile&&!b){a=80;var g="https://desk.draw.io/support/solutions/articles/16000039384",t=document.createElement("div");t.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;"; +var l=document.createElement("div");l.style.whiteSpace="normal";mxUtils.write(l,mxResources.get("linkAccountRequired"));t.appendChild(l);l=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(m.getId())}));l.style.marginTop="12px";l.className="geBtn";t.appendChild(l);d.appendChild(t);l=document.createElement("a");l.style.paddingLeft="12px";l.style.color="gray";l.style.fontSize="11px";l.setAttribute("href","javascript:void(0);");mxUtils.write(l,mxResources.get("check")); +t.appendChild(l);mxEvent.addListener(l,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(a){this.spinner.stop();a=new ErrorDialog(this,null,mxResources.get(null!=a?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(a.container,300,80,!0,!1);a.init()}))}))}var v=null,y=null;if(null!=c||null!=e)a+=30,mxUtils.write(d,mxResources.get("width")+":"),v=document.createElement("input"), +v.setAttribute("type","text"),v.style.marginRight="16px",v.style.width="50px",v.style.marginLeft="6px",v.style.marginRight="16px",v.style.marginBottom="10px",v.value="100%",d.appendChild(v),mxUtils.write(d,mxResources.get("height")+":"),y=document.createElement("input"),y.setAttribute("type","text"),y.style.width="50px",y.style.marginLeft="6px",y.style.marginBottom="10px",y.value=e+"px",d.appendChild(y),mxUtils.br(d);var q=this.addLinkSection(d,k);c=null!=this.pages&&1<this.pages.length;var p=null; +if(null==m||m.constructor!=window.DriveFile||b)p=this.addCheckbox(d,mxResources.get("allPages"),c,!c);var u=this.addCheckbox(d,mxResources.get("lightbox"),!0),K=this.addEditButton(d,u),I=K.getEditInput(),C=this.addCheckbox(d,mxResources.get("layers"),!0);C.style.marginLeft=I.style.marginLeft;C.style.marginBottom="16px";C.style.marginTop="8px";mxEvent.addListener(u,"change",function(){u.checked?(C.removeAttribute("disabled"),I.removeAttribute("disabled")):(C.setAttribute("disabled","disabled"),I.setAttribute("disabled", +"disabled"));I.checked&&u.checked?K.getEditSelect().removeAttribute("disabled"):K.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,mxUtils.bind(this,function(){f(q.getTarget(),q.getColor(),null==p?!0:p.checked,u.checked,K.getLink(),C.checked,null!=v?v.value:null,null!=y?y.value:null)}),null,mxResources.get("create"),g);this.showDialog(b.container,340,254+a,!0,!0);null!=v?(v.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?v.select(): +document.execCommand("selectAll",!1,null)):q.focus()};EditorUi.prototype.showRemoteExportDialog=function(a,b,c,e){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,mxResources.get("image"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(g);var f=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),n=e?null:this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"), +!0),g=this.editor.graph,m=e?null:this.addCheckbox(d,mxResources.get("transparentBackground"),g.background==mxConstants.NONE||null==g.background);null!=m&&(m.style.marginBottom="16px");a=new CustomDialog(this,d,mxUtils.bind(this,function(){c(!f.checked,null!=n?n.checked:!1,null!=m?m.checked:!1)}),null,a,b);this.showDialog(a.container,300,e?100:186,!0,!0)};EditorUi.prototype.showExportDialog=function(a,b,c,e,f,k,l,n){l=null!=l?l:!0;var d=document.createElement("div");d.style.whiteSpace="nowrap";var g= +this.editor.graph,m="jpeg"==n?196:300,t=document.createElement("h3");mxUtils.write(t,a);t.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";d.appendChild(t);mxUtils.write(d,mxResources.get("zoom")+":");var v=document.createElement("input");v.setAttribute("type","text");v.style.marginRight="16px";v.style.width="60px";v.style.marginLeft="4px";v.style.marginRight="12px";v.value=this.lastExportZoom||"100%";d.appendChild(v);mxUtils.write(d,mxResources.get("borderWidth")+":"); +var y=document.createElement("input");y.setAttribute("type","text");y.style.marginRight="16px";y.style.width="60px";y.style.marginLeft="4px";y.value=this.lastExportBorder||"0";d.appendChild(y);mxUtils.br(d);var q=this.addCheckbox(d,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=n),p=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,g.isSelectionEmpty()),u=document.createElement("input");u.style.marginTop="16px";u.style.marginRight="8px";u.style.marginLeft="24px";u.setAttribute("disabled", +"disabled");u.setAttribute("type","checkbox");k&&(d.appendChild(u),mxUtils.write(d,mxResources.get("crop")),mxUtils.br(d),m+=26,mxEvent.addListener(p,"change",function(){p.checked?u.removeAttribute("disabled"):u.setAttribute("disabled","disabled")}));g.isSelectionEmpty()||(u.setAttribute("checked","checked"),u.defaultChecked=!0);var B=this.addCheckbox(d,mxResources.get("shadow"),g.shadowVisible),C=document.createElement("input");C.style.marginTop="16px";C.style.marginRight="8px";C.setAttribute("type", +"checkbox");!this.isOffline()&&this.canvasSupported||C.setAttribute("disabled","disabled");b&&(d.appendChild(C),mxUtils.write(d,mxResources.get("embedImages")),mxUtils.br(d),m+=26);var J=this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),l,null,null,"jpeg"!=n),M=null!=this.pages&&1<this.pages.length,O=this.addCheckbox(d,M?mxResources.get("allPages"):"",M,!M,null,"jpeg"!=n);O.style.marginLeft="24px";O.style.marginBottom="16px";M||(O.style.display="none");mxEvent.addListener(J,"change",function(){J.checked&& +M?O.removeAttribute("disabled"):O.setAttribute("disabled","disabled")});l&&M||O.setAttribute("disabled","disabled");var T=document.createElement("select");T.style.maxWidth="260px";T.style.marginLeft="8px";T.style.marginRight="10px";T.className="geBtn";a=document.createElement("option");a.setAttribute("value","auto");mxUtils.write(a,mxResources.get("automatic"));T.appendChild(a);a=document.createElement("option");a.setAttribute("value","blank");mxUtils.write(a,mxResources.get("openInNewWindow"));T.appendChild(a); +a=document.createElement("option");a.setAttribute("value","self");mxUtils.write(a,mxResources.get("openInThisWindow"));T.appendChild(a);"svg"==n&&(mxUtils.write(d,mxResources.get("links")+":"),d.appendChild(T),mxUtils.br(d),mxUtils.br(d),m+=26);c=new CustomDialog(this,d,mxUtils.bind(this,function(){this.lastExportBorder=y.value;this.lastExportZoom=v.value;f(v.value,q.checked,!p.checked,B.checked,J.checked,C.checked,y.value,u.checked,!O.checked,T.value)}),null,c,e);this.showDialog(c.container,340, +m,!0,!0);v.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?v.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(a,b,c,e,f){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=this.editor.graph;if(null!=b){var n=document.createElement("h3");mxUtils.write(n,b);n.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(n)}var m=this.addCheckbox(d,mxResources.get("fit"), +!0),k=this.addCheckbox(d,mxResources.get("shadow"),g.shadowVisible&&e,!e),t=this.addCheckbox(d,c),l=this.addCheckbox(d,mxResources.get("lightbox"),!0),v=this.addEditButton(d,l),q=v.getEditInput(),p=1<g.model.getChildCount(g.model.getRoot()),u=this.addCheckbox(d,mxResources.get("layers"),p,!p);u.style.marginLeft=q.style.marginLeft;u.style.marginBottom="12px";u.style.marginTop="8px";mxEvent.addListener(l,"change",function(){l.checked?(p&&u.removeAttribute("disabled"),q.removeAttribute("disabled")): +(u.setAttribute("disabled","disabled"),q.setAttribute("disabled","disabled"));q.checked&&l.checked?v.getEditSelect().removeAttribute("disabled"):v.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,mxUtils.bind(this,function(){a(m.checked,k.checked,t.checked,l.checked,v.getLink(),u.checked)}),null,mxResources.get("embed"),f);this.showDialog(b.container,280,280,!0,!0)};EditorUi.prototype.createEmbedImage=function(a,b,c,e,f,k,l,n){function d(b){var d=" ",n="";e&&(d=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+ +EditorUi.drawHost+"/?client=1&lightbox=1"+(f?"&edit=_blank":"")+(k?"&layers=1":"")+"');}})(this);\"",n+="cursor:pointer;");a&&(n+="max-width:100%;");var m="";c&&(m=' width="'+Math.round(g.width)+'" height="'+Math.round(g.height)+'"');l('<img src="'+b+'"'+m+(""!=n?' style="'+n+'"':"")+d+"/>")}var g=this.editor.graph.getGraphBounds();if(this.isExportToCanvas())this.exportToCanvas(mxUtils.bind(this,function(a){var b=e?this.getFileData(!0):null;a=this.createImageDataUri(a,b,"png");d(a)}),null,null,null, +mxUtils.bind(this,function(a){n({message:mxResources.get("unknownError")})}),null,!0,c?2:1,null,b);else if(b=this.getFileData(!0),g.width*g.height<=MAX_AREA&&b.length<=MAX_REQUEST_SIZE){var m="";c&&(m="&w="+Math.round(2*g.width)+"&h="+Math.round(2*g.height));var t=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(e?"1":"0")+m+"&xml="+encodeURIComponent(b));t.send(mxUtils.bind(this,function(){200<=t.getStatus()&&299>=t.getStatus()?d("data:image/png;base64,"+t.getText()):n({message:mxResources.get("unknownError")})}))}else n({message:mxResources.get("drawingTooLarge")})}; +EditorUi.prototype.createEmbedSvg=function(a,b,c,e,f,k,l){var d=this.editor.graph.getSvg(),g=d.getElementsByTagName("a");if(null!=g)for(var m=0;m<g.length;m++){var t=g[m].getAttribute("href");null!=t&&"#"==t.charAt(0)&&"_blank"==g[m].getAttribute("target")&&g[m].removeAttribute("target")}e&&d.setAttribute("content",this.getFileData(!0));b&&this.editor.graph.addSvgShadow(d);if(c){var v=" ",y="";e&&(v="onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+ +EditorUi.drawHost+"/?client=1&lightbox=1"+(f?"&edit=_blank":"")+(k?"&layers=1":"")+"');}})(this);\"",y+="cursor:pointer;");a&&(y+="max-width:100%;");this.convertImages(d,mxUtils.bind(this,function(a){l('<img src="'+this.createSvgDataUri(mxUtils.getXml(a))+'"'+(""!=y?' style="'+y+'"':"")+v+"/>")}))}else y="",e&&(d.setAttribute("onclick","(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&&src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&&!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('"+ +EditorUi.drawHost+"/?client=1&lightbox=1"+(f?"&edit=_blank":"")+(k?"&layers=1":"")+"');}}})(this);"),y+="cursor:pointer;"),a&&(a=parseInt(d.getAttribute("width")),b=parseInt(d.getAttribute("height")),d.setAttribute("viewBox","-0.5 -0.5 "+a+" "+b),y+="max-width:100%;max-height:"+b+"px;",d.removeAttribute("height")),""!=y&&d.setAttribute("style",y),l(mxUtils.getXml(d))};EditorUi.prototype.timeSince=function(a){a=Math.floor((new Date-a)/1E3);var b=Math.floor(a/31536E3);if(1<b)return b+" "+mxResources.get("years"); +b=Math.floor(a/2592E3);if(1<b)return b+" "+mxResources.get("months");b=Math.floor(a/86400);if(1<b)return b+" "+mxResources.get("days");b=Math.floor(a/3600);if(1<b)return b+" "+mxResources.get("hours");b=Math.floor(a/60);return 1<b?b+" "+mxResources.get("minutes"):1==b?b+" "+mxResources.get("minute"):null};EditorUi.prototype.convertMath=function(a,b,c,e){a.mathEnabled&&"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?(Editor.MathJaxRender(b),window.setTimeout(mxUtils.bind(this,function(){MathJax.Hub.Queue(mxUtils.bind(this, +function(){e()}))}),0)):e()};EditorUi.prototype.decodeNodeIntoGraph=function(a,b){if(null!=a){var c=null;if("diagram"==a.nodeName)c=a;else if("mxfile"==a.nodeName){var d=a.getElementsByTagName("diagram");if(0<d.length){var c=d[0],g=b.getGlobalVariable;b.getGlobalVariable=function(a){return"page"==a?c.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==a?1:g.apply(this,arguments)}}}null!=c&&(d=b.decompress(mxUtils.getTextContent(c)),null!=d&&0<d.length&&(a=mxUtils.parseXml(d).documentElement))}d= +this.editor.graph;try{this.editor.graph=b,this.editor.setGraphXml(a)}catch(y){}finally{this.editor.graph=d}return a};EditorUi.prototype.getEmbeddedPng=function(a,b,c){var d=this.editor.graph,g=null;if(null!=c&&0<c.length)d=this.createTemporaryGraph(this.editor.graph.getStylesheet()),document.body.appendChild(d.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(c).documentElement,!0),d),g=c;else if(null!=this.pages&&this.currentPage!=this.pages[0]){var d=this.createTemporaryGraph(d.getStylesheet()), +e=d.getGlobalVariable,f=this.pages[0];d.getGlobalVariable=function(a){return"page"==a?f.getName():"pagenumber"==a?1:e.apply(this,arguments)};document.body.appendChild(d.container);d.model.setRoot(f.root)}this.exportToCanvas(mxUtils.bind(this,function(c){try{null==g&&(g=this.getFileData(!0));var e=c.toDataURL("image/png"),e=this.writeGraphModelToPng(e,"zTXt","mxGraphModel",atob(this.editor.graph.compress(g)));a(e.substring(e.lastIndexOf(",")+1));d!=this.editor.graph&&d.container.parentNode.removeChild(d.container)}catch(z){null!= +b&&b(z)}}),null,null,null,mxUtils.bind(this,function(a){null!=b&&b(a)}),null,null,null,null,d.shadowVisible,null,d)};EditorUi.prototype.getEmbeddedSvg=function(a,b,c,e,f,k,l){l=b.background;l==mxConstants.NONE&&(l=null);k=b.getSvg(l,null,null,null,null,k);b.shadowVisible&&b.addSvgShadow(k);null!=a&&k.setAttribute("content",a);null!=c&&k.setAttribute("resource",c);if(null!=f)this.convertImages(k,mxUtils.bind(this,function(a){f((e?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+ +mxUtils.getXml(a))}));else return(e?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(k)};EditorUi.prototype.exportImage=function(a,b,c,e,f,k,l,n,x){x=null!=x?x:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var d=this.editor.graph.isSelectionEmpty();c=null!=c?c:d;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.exportToCanvas(mxUtils.bind(this,function(a){this.spinner.stop(); +try{this.saveCanvas(a,f?this.getFileData(!0,null,null,null,c,n):null,x)}catch(F){"Invalid image"==F.message?this.downloadFile(x):this.handleError(F)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),null,c,a||1,b,e,null,null,k,l)}catch(A){this.spinner.stop(),this.handleError(A)}}};EditorUi.prototype.loadFonts=function(a){if(null!=this.editor.fontCss&&null==this.editor.resolvedFontCss){var b=function(a){return a.replace(RegExp("^[\\s\"']+","g"), +"").replace(RegExp("[\\s\"']+$","g"),"")},c=this.editor.fontCss.split("url("),d=0,e={},f=mxUtils.bind(this,function(){if(0==d){for(var g=[c[0]],n=1;n<c.length;n++){var f=c[n].indexOf(")");g.push('url("');g.push(e[b(c[n].substring(0,f))]);g.push('"'+c[n].substring(f))}this.editor.resolvedFontCss=g.join("");a()}});if(0<c.length)for(var k=1;k<c.length;k++){var n=c[k].indexOf(")"),x=null,l=c[k].indexOf("format(",n);0<l&&(x=b(c[k].substring(l+7,c[k].indexOf(")",l))));mxUtils.bind(this,function(a){if(null== +e[a]){e[a]=a;d++;var b="application/x-font-ttf";if("svg"==x||/(\.svg)($|\?)/i.test(a))b="image/svg+xml";else if("otf"==x||"embedded-opentype"==x||/(\.otf)($|\?)/i.test(a))b="application/x-font-opentype";else if("woff"==x||/(\.woff)($|\?)/i.test(a))b="application/font-woff";else if("woff2"==x||/(\.woff2)($|\?)/i.test(a))b="application/font-woff2";else if("eot"==x||/(\.eot)($|\?)/i.test(a))b="application/vnd.ms-fontobject";else if("sfnt"==x||/(\.sfnt)($|\?)/i.test(a))b="application/font-sfnt";var c= +a;/^https?:\/\//.test(c)&&!this.isCorsEnabledForUrl(c)&&(c=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(c,mxUtils.bind(this,function(b){e[a]=b;d--;f()}),mxUtils.bind(this,function(a){d--;f()}),!0,null,"data:"+b+";charset=utf-8;base64,")}})(b(c[k].substring(0,n)),x)}}else a()};EditorUi.prototype.exportToCanvas=function(a,b,c,e,f,k,l,n,x,q,p,u,E,G){k=null!=k?k:!0;u=null!=u?u:this.editor.graph;E=null!=E?E:0;var d=x?null:u.background;d==mxConstants.NONE&&(d=null);null==d&&(d=e);null==d&&0==x&& +(d=this.editor.graph.defaultPageBackgroundColor);this.convertImages(u.getSvg(d,null,null,G,null,null!=l?l:!0,null,null,null,q),mxUtils.bind(this,function(c){var g=new Image;g.onload=mxUtils.bind(this,function(){try{var e=document.createElement("canvas"),m=parseInt(c.getAttribute("width")),x=parseInt(c.getAttribute("height"));n=null!=n?n:1;null!=b&&(n=k?Math.min(1,Math.min(3*b/(4*x),b/m)):b/m);m=Math.ceil(n*m)+2*E;x=Math.ceil(n*x)+2*E;e.setAttribute("width",m);e.setAttribute("height",x);var l=e.getContext("2d"); +null!=d&&(l.beginPath(),l.rect(0,0,m,x),l.fillStyle=d,l.fill());l.scale(n,n);mxClient.IS_SF?window.setTimeout(function(){l.drawImage(g,E/n,E/n);a(e)},0):(l.drawImage(g,E/n,E/n),a(e))}catch(T){null!=f&&f(T)}});g.onerror=function(a){null!=f&&f(a)};try{q&&this.editor.graph.addSvgShadow(c);var e=mxUtils.bind(this,function(){if(null!=this.editor.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.editor.resolvedFontCss;c.getElementsByTagName("defs")[0].appendChild(a)}this.convertMath(u, +c,!0,mxUtils.bind(this,function(){g.src=this.createSvgDataUri(mxUtils.getXml(c))}))});this.loadFonts(e)}catch(C){null!=f&&f(C)}}),c,p)};EditorUi.prototype.createImageUrlConverter=function(){var a=new mxUrlConverter;a.updateBaseUrl();var b=a.convert,c=this;a.convert=function(d){if(null!=d){var g="http://"==d.substring(0,7)||"https://"==d.substring(0,8);g&&!navigator.onLine?d=c.svgBrokenImage.src:!g||d.substring(0,a.baseUrl.length)==a.baseUrl||c.crossOriginImages&&c.isCorsEnabledForUrl(d)?"chrome-extension://"!= +d.substring(0,19)&&(d=b.apply(this,arguments)):d=PROXY_URL+"?url="+encodeURIComponent(d)}return d};return a};EditorUi.prototype.convertImages=function(a,b,c,e){null==e&&(e=this.createImageUrlConverter());var d=0,g=c||{};c=mxUtils.bind(this,function(c,n){for(var f=a.getElementsByTagName(c),m=0;m<f.length;m++)mxUtils.bind(this,function(c){var f=e.convert(c.getAttribute(n));if(null!=f&&"data:"!=f.substring(0,5)){var m=g[f];null==m?(d++,this.convertImageToDataUri(f,function(e){null!=e&&(g[f]=e,c.setAttribute(n, +e));d--;0==d&&b(a)})):c.setAttribute(n,m)}else null!=f&&c.setAttribute(n,f)})(f[m])});c("image","xlink:href");c("img","src");0==d&&b(a)};EditorUi.prototype.loadUrl=function(a,b,c,e,f,k){try{var d=e||/(\.png)($|\?)/i.test(a)||/(\.jpe?g)($|\?)/i.test(a)||/(\.gif)($|\?)/i.test(a);f=null!=f?f:!0;var g=mxUtils.bind(this,function(){mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=b){var g=a.getText();if(d){if((9==document.documentMode||10==document.documentMode)&& +"undefined"!==typeof window.mxUtilsBinaryToArray){a=mxUtilsBinaryToArray(a.request.responseBody).toArray();for(var g=Array(a.length),e=0;e<a.length;e++)g[e]=String.fromCharCode(a[e]);g=g.join("")}k=null!=k?k:"data:image/png;base64,";g=k+this.base64Encode(g)}b(g)}}else null!=c&&c({code:App.ERROR_UNKNOWN},a)}),function(){null!=c&&c({code:App.ERROR_UNKNOWN})},d,this.timeout,function(){f&&null!=c&&c({code:App.ERROR_TIMEOUT,retry:g})})});g()}catch(x){null!=c&&c(x)}};EditorUi.prototype.isCorsEnabledForUrl= function(a){null!=urlParams.cors&&null==this.corsRegExp&&(this.corsRegExp=new RegExp(decodeURIComponent(urlParams.cors)));return null!=this.corsRegExp&&this.corsRegExp.test(a)||"https://raw.githubusercontent.com/"===a.substring(0,34)||"https://cdn.rawgit.com/"===a.substring(0,23)||"https://rawgit.com/"===a.substring(0,19)||/^https?:\/\/[^\/]*\.iconfinder.com\//.test(a)||/^https?:\/\/[^\/]*\.draw\.io\/proxy/.test(a)||/^https?:\/\/[^\/]*\.github\.io\//.test(a)};EditorUi.prototype.convertImageToDataUri= -function(a,b){if(/(\.svg)$/i.test(a))mxUtils.get(a,mxUtils.bind(this,function(a){b(this.createSvgDataUri(a.getText()))}),function(){b(this.svgBrokenImage.src)});else{var d=new Image,c=this;this.crossOriginImages&&(d.crossOrigin="anonymous");d.onload=function(){var a=document.createElement("canvas"),g=a.getContext("2d");a.height=d.height;a.width=d.width;g.drawImage(d,0,0);try{b(a.toDataURL())}catch(w){b(c.svgBrokenImage.src)}};d.onerror=function(){b(c.svgBrokenImage.src)};d.src=a}};EditorUi.prototype.importXml= -function(a,b,c,f,h){b=null!=b?b:0;c=null!=c?c:0;var d=[];try{var g=this.editor.graph;if(null!=a&&0<a.length){var n=mxUtils.parseXml(a),m=this.editor.extractGraphModel(n.documentElement,null!=this.pages);if(null!=m&&"mxfile"==m.nodeName&&null!=this.pages){var k=m.getElementsByTagName("diagram");if(1==k.length)m=mxUtils.parseXml(g.decompress(mxUtils.getTextContent(k[0]))).documentElement;else if(1<k.length){g.model.beginUpdate();try{for(a=0;a<k.length;a++){k[a].removeAttribute("id");var l=this.updatePageRoot(new DiagramPage(k[a])), -q=this.pages.length;null==l.getName()&&l.setName(mxResources.get("pageWithNumber",[q+1]));g.model.execute(new ChangePage(this,l,l,q))}}finally{g.model.endUpdate()}}}null!=m&&"mxGraphModel"===m.nodeName&&(d=g.importGraphModel(m,b,c,f))}}catch(C){if(h)throw C;this.handleError(C)}return d};EditorUi.prototype.isRemoteVisioFormat=function(a){return/(\.v(sd|dx))($|\?)/i.test(a)||/(\.vs(s|x))($|\?)/i.test(a)};EditorUi.prototype.importVisio=function(a,b,c,f){f=null!=f?f:a.name;c=null!=c?c:mxUtils.bind(this, -function(a){this.handleError(a)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio)if(this.isRemoteVisioFormat(f)&&null!=VSD_CONVERT_URL){var d=new FormData;d.append("file1",a,f);var g=new XMLHttpRequest;g.open("POST",VSD_CONVERT_URL);g.responseType="blob";g.onreadystatechange=mxUtils.bind(this,function(){if(4==g.readyState)if(200<=g.status&&299>=g.status)try{g.response.name=f,this.doImportVisio(g.response,b,c)}catch(y){c(y)}else c({})});g.send(d)}else try{this.doImportVisio(a, -b,c)}catch(y){c(y)}});this.doImportVisio||this.loadingExtensions||this.isOffline()?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",d))};EditorUi.prototype.importGraphML=function(a,b,c){c=null!=c?c:mxUtils.bind(this,function(a){this.handleError(a)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(a,b,c)}catch(u){c(u)}});this.doImportGraphML||this.loadingExtensions||this.isOffline()?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js", +function(a,b){if(/(\.svg)$/i.test(a))mxUtils.get(a,mxUtils.bind(this,function(a){b(this.createSvgDataUri(a.getText()))}),function(){b(this.svgBrokenImage.src)});else{var c=new Image,d=this;this.crossOriginImages&&(c.crossOrigin="anonymous");c.onload=function(){var a=document.createElement("canvas"),g=a.getContext("2d");a.height=c.height;a.width=c.width;g.drawImage(c,0,0);try{b(a.toDataURL())}catch(B){b(d.svgBrokenImage.src)}};c.onerror=function(){b(d.svgBrokenImage.src)};c.src=a}};EditorUi.prototype.importXml= +function(a,b,c,e,f){b=null!=b?b:0;c=null!=c?c:0;var d=[];try{var g=this.editor.graph;if(null!=a&&0<a.length){var n=mxUtils.parseXml(a),m=this.editor.extractGraphModel(n.documentElement,null!=this.pages);if(null!=m&&"mxfile"==m.nodeName&&null!=this.pages){var k=m.getElementsByTagName("diagram");if(1==k.length)m=mxUtils.parseXml(g.decompress(mxUtils.getTextContent(k[0]))).documentElement;else if(1<k.length){g.model.beginUpdate();try{for(a=0;a<k.length;a++){k[a].removeAttribute("id");var l=this.updatePageRoot(new DiagramPage(k[a])), +t=this.pages.length;null==l.getName()&&l.setName(mxResources.get("pageWithNumber",[t+1]));g.model.execute(new ChangePage(this,l,l,t))}}finally{g.model.endUpdate()}}}null!=m&&"mxGraphModel"===m.nodeName&&(d=g.importGraphModel(m,b,c,e))}}catch(E){if(f)throw E;this.handleError(E)}return d};EditorUi.prototype.isRemoteVisioFormat=function(a){return/(\.v(sd|dx))($|\?)/i.test(a)||/(\.vs(s|x))($|\?)/i.test(a)};EditorUi.prototype.importVisio=function(a,b,c,e){e=null!=e?e:a.name;c=null!=c?c:mxUtils.bind(this, +function(a){this.handleError(a)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio)if(this.isRemoteVisioFormat(e)&&null!=VSD_CONVERT_URL){var d=new FormData;d.append("file1",a,e);var g=new XMLHttpRequest;g.open("POST",VSD_CONVERT_URL);g.responseType="blob";g.onreadystatechange=mxUtils.bind(this,function(){if(4==g.readyState)if(200<=g.status&&299>=g.status)try{g.response.name=e,this.doImportVisio(g.response,b,c)}catch(n){c(n)}else c({})});g.send(d)}else try{this.doImportVisio(a, +b,c)}catch(n){c(n)}});this.doImportVisio||this.loadingExtensions||this.isOffline()?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",d))};EditorUi.prototype.importGraphML=function(a,b,c){c=null!=c?c:mxUtils.bind(this,function(a){this.handleError(a)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(a,b,c)}catch(t){c(t)}});this.doImportGraphML||this.loadingExtensions||this.isOffline()?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js", d))};EditorUi.prototype.exportVisio=function(){var a=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof VsdxExport)try{(new VsdxExport(this)).exportCurrentDiagrams()||this.handleError({message:mxResources.get("unknownError")})}catch(g){this.handleError(g)}});"undefined"!==typeof VsdxExport||this.loadingExtensions||this.isOffline()?a():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",a))};EditorUi.prototype.convertLucidChart=function(a,b,c){var d=mxUtils.bind(this, -function(){this.loadingExtensions=!1;if("undefined"!==typeof window.LucidImporter)try{b(LucidImporter.importState(JSON.parse(a)))}catch(u){c(u)}else c({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof window.LucidImporter||this.loadingExtensions||this.isOffline()?window.setTimeout(d,0):(this.loadingExtensions=!0,"1"==urlParams.dev?mxscript("js/diagramly/Extensions.js",d):mxscript("js/extensions.min.js",d))};EditorUi.prototype.insertAsPreText=function(a,b,c){var d=this.editor.graph, -g=null;d.getModel().beginUpdate();try{g=d.insertVertex(null,null,"<pre>"+a+"</pre>",b,c,1,1,"text;html=1;align=center;verticalAlign=middle;"),d.updateCellSize(g,!0)}finally{d.getModel().endUpdate()}return g};EditorUi.prototype.insertTextAt=function(a,b,c,f,h,k,l){k=null!=k?k:!0;l=null!=l?l:!0;if(null!=a)if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a))this.parseFile(new Blob([a.replace(/\s+/g," ")],{type:"application/octet-stream"}),mxUtils.bind(this, -function(a){4==a.readyState&&200<=a.status&&299>=a.status&&this.editor.graph.setSelectionCells(this.insertTextAt(a.responseText,b,c,!0))}));else if("data:"==a.substring(0,5)||!this.isOffline()&&(h||/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(a))){var d=this.editor.graph;if("data:image/png;base64,"==a.substring(0,22)){var g=this.extractGraphModelFromPng(a),n=this.importXml(g,b,c,k,!0);if(0<n.length)return n}if("data:image/svg+xml;"==a.substring(0,19))try{if(g=null,"data:image/svg+xml;base64,"==a.substring(0, -26)?(g=a.substring(a.indexOf(",")+1),g=window.atob&&!mxClient.IS_SF?atob(g):Base64.decode(g,!0)):g=decodeURIComponent(a.substring(a.indexOf(",")+1)),n=this.importXml(g,b,c,k,!0),0<n.length)return n}catch(z){}this.loadImage(a,mxUtils.bind(this,function(g){if("data:"==a.substring(0,5))this.resizeImage(g,a,mxUtils.bind(this,function(a,g,f){d.setSelectionCell(d.insertVertex(null,null,"",d.snap(b),d.snap(c),g,f,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+ -this.convertDataUri(a)+";"))}),l,this.maxImageSize);else{var f=Math.min(1,Math.min(this.maxImageSize/g.width,this.maxImageSize/g.height)),m=Math.round(g.width*f);g=Math.round(g.height*f);d.setSelectionCell(d.insertVertex(null,null,"",d.snap(b),d.snap(c),m,g,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+a+";"))}}),mxUtils.bind(this,function(){var g=null;d.getModel().beginUpdate();try{g=d.insertVertex(d.getDefaultParent(), -null,a,d.snap(b),d.snap(c),1,1,"text;"+(f?"html=1;":"")),d.updateCellSize(g),d.fireEvent(new mxEventObject("textInserted","cells",[g]))}finally{d.getModel().endUpdate()}d.setSelectionCell(g)}))}else{a=this.editor.graph.zapGremlins(mxUtils.trim(a));if(this.isCompatibleString(a))return this.importXml(a,b,c,k);if(0<a.length)if(this.isLucidChartData(a))this.convertLucidChart(a,mxUtils.bind(this,function(a){this.editor.graph.setSelectionCells(this.importXml(a,b,c,k))}),mxUtils.bind(this,function(a){this.handleError(a)})); -else{d=this.editor.graph;h=null;d.getModel().beginUpdate();try{h=d.insertVertex(d.getDefaultParent(),null,"",d.snap(b),d.snap(c),1,1,"text;"+(f?"html=1;":"")),d.fireEvent(new mxEventObject("textInserted","cells",[h])),"<"==a.charAt(0)&&a.indexOf(">")==a.length-1&&(a=mxUtils.htmlEntities(a)),h.value=a,d.updateCellSize(h),/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/i.test(h.value)&& -d.setLinkForCell(h,h.value),h.geometry.width+=d.gridSize,h.geometry.height+=d.gridSize}finally{d.getModel().endUpdate()}return[h]}}return[]};EditorUi.prototype.formatFileSize=function(a){var b=-1;do a/=1024,b++;while(1024<a);return Math.max(a,.1).toFixed(1)+" kB; MB; GB; TB;PB;EB;ZB;YB".split(";")[b]};EditorUi.prototype.convertDataUri=function(a){if("data:"==a.substring(0,5)){var b=a.indexOf(";");0<b&&(a=a.substring(0,b)+a.substring(a.indexOf(",",b+1)))}return a};EditorUi.prototype.isRemoteFileFormat= +function(){this.loadingExtensions=!1;if("undefined"!==typeof window.LucidImporter)try{b(LucidImporter.importState(JSON.parse(a)))}catch(t){c(t)}else c({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof window.LucidImporter||this.loadingExtensions||this.isOffline()?window.setTimeout(d,0):(this.loadingExtensions=!0,"1"==urlParams.dev?mxscript("js/diagramly/Extensions.js",d):mxscript("js/extensions.min.js",d))};EditorUi.prototype.insertAsPreText=function(a,b,c){var d=this.editor.graph, +g=null;d.getModel().beginUpdate();try{g=d.insertVertex(null,null,"<pre>"+a+"</pre>",b,c,1,1,"text;html=1;align=center;verticalAlign=middle;"),d.updateCellSize(g,!0)}finally{d.getModel().endUpdate()}return g};EditorUi.prototype.insertTextAt=function(a,b,c,e,f,k,l){k=null!=k?k:!0;l=null!=l?l:!0;if(null!=a)if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a))this.parseFile(new Blob([a.replace(/\s+/g," ")],{type:"application/octet-stream"}),mxUtils.bind(this, +function(a){4==a.readyState&&200<=a.status&&299>=a.status&&this.editor.graph.setSelectionCells(this.insertTextAt(a.responseText,b,c,!0))}));else if("data:"==a.substring(0,5)||!this.isOffline()&&(f||/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(a))){var d=this.editor.graph;if("data:image/png;base64,"==a.substring(0,22)){var g=this.extractGraphModelFromPng(a),m=this.importXml(g,b,c,k,!0);if(0<m.length)return m}if("data:image/svg+xml;"==a.substring(0,19))try{if(g=null,"data:image/svg+xml;base64,"==a.substring(0, +26)?(g=a.substring(a.indexOf(",")+1),g=window.atob&&!mxClient.IS_SF?atob(g):Base64.decode(g,!0)):g=decodeURIComponent(a.substring(a.indexOf(",")+1)),m=this.importXml(g,b,c,k,!0),0<m.length)return m}catch(A){}this.loadImage(a,mxUtils.bind(this,function(g){if("data:"==a.substring(0,5))this.resizeImage(g,a,mxUtils.bind(this,function(a,g,e){d.setSelectionCell(d.insertVertex(null,null,"",d.snap(b),d.snap(c),g,e,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+ +this.convertDataUri(a)+";"))}),l,this.maxImageSize);else{var e=Math.min(1,Math.min(this.maxImageSize/g.width,this.maxImageSize/g.height)),n=Math.round(g.width*e);g=Math.round(g.height*e);d.setSelectionCell(d.insertVertex(null,null,"",d.snap(b),d.snap(c),n,g,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+a+";"))}}),mxUtils.bind(this,function(){var g=null;d.getModel().beginUpdate();try{g=d.insertVertex(d.getDefaultParent(), +null,a,d.snap(b),d.snap(c),1,1,"text;"+(e?"html=1;":"")),d.updateCellSize(g),d.fireEvent(new mxEventObject("textInserted","cells",[g]))}finally{d.getModel().endUpdate()}d.setSelectionCell(g)}))}else{a=this.editor.graph.zapGremlins(mxUtils.trim(a));if(this.isCompatibleString(a))return this.importXml(a,b,c,k);if(0<a.length)if(this.isLucidChartData(a))this.convertLucidChart(a,mxUtils.bind(this,function(a){this.editor.graph.setSelectionCells(this.importXml(a,b,c,k))}),mxUtils.bind(this,function(a){this.handleError(a)})); +else{d=this.editor.graph;f=null;d.getModel().beginUpdate();try{f=d.insertVertex(d.getDefaultParent(),null,"",d.snap(b),d.snap(c),1,1,"text;"+(e?"html=1;":"")),d.fireEvent(new mxEventObject("textInserted","cells",[f])),"<"==a.charAt(0)&&a.indexOf(">")==a.length-1&&(a=mxUtils.htmlEntities(a)),f.value=a,d.updateCellSize(f),/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/i.test(f.value)&& +d.setLinkForCell(f,f.value),f.geometry.width+=d.gridSize,f.geometry.height+=d.gridSize}finally{d.getModel().endUpdate()}return[f]}}return[]};EditorUi.prototype.formatFileSize=function(a){var b=-1;do a/=1024,b++;while(1024<a);return Math.max(a,.1).toFixed(1)+" kB; MB; GB; TB;PB;EB;ZB;YB".split(";")[b]};EditorUi.prototype.convertDataUri=function(a){if("data:"==a.substring(0,5)){var b=a.indexOf(";");0<b&&(a=a.substring(0,b)+a.substring(a.indexOf(",",b+1)))}return a};EditorUi.prototype.isRemoteFileFormat= function(a,b){return/(\"contentType\":\s*\"application\/gliffy\+json\")/.test(a)};EditorUi.prototype.isLucidChartData=function(a){return null!=a&&'{"state":"{\\"Properties\\":'==a.substring(0,26)};EditorUi.prototype.importLocalFile=function(a,b){if(a&&Graph.fileSupport&&(!mxClient.IS_IE&&!mxClient.IS_IE11||0>navigator.appVersion.indexOf("Windows NT 6.1"))){var c=document.createElement("input");c.setAttribute("type","file");mxEvent.addListener(c,"change",mxUtils.bind(this,function(){null!=c.files&& -this.importFiles(c.files,null,null,this.maxImageSize)}));c.click()}else{window.openNew=!1;window.openKey="import";if(!b){var d=Editor.useLocalStorage;Editor.useLocalStorage=!a}window.openFile=new OpenFile(mxUtils.bind(this,function(a){this.hideDialog(a)}));window.openFile.setConsumer(mxUtils.bind(this,function(a,b){if(null!=b&&Graph.fileSupport&&/(\.v(dx|sdx?))($|\?)/i.test(b)){var c=new Blob([a],{type:"application/octet-stream"});this.importVisio(c,mxUtils.bind(this,function(a){this.importXml(a)}), -null,b)}else this.editor.graph.setSelectionCells(this.importXml(a))}));this.showDialog((new OpenDialog(this)).container,360,220,!0,!0,function(){window.openFile=null});if(!b){var g=this.dialog,f=g.close;this.dialog.close=mxUtils.bind(this,function(a){Editor.useLocalStorage=d;f.apply(g,arguments);a&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};EditorUi.prototype.importFile=function(a,b,c,f,h,k,l,p,m,x,t){x=null!=x?x:!0;var d=!1,g=null,n=mxUtils.bind(this,function(a){var b= -null;null!=a&&"<mxlibrary"==a.substring(0,10)?this.loadLibrary(new LocalLibrary(this,a,l)):b=this.importXml(a,c,f,x);null!=p&&p(b)});"image"==b.substring(0,5)?(m=!1,"image/png"==b.substring(0,9)&&(b=t?null:this.extractGraphModelFromPng(a),null!=b&&0<b.length&&(g=this.importXml(b,c,f,x),m=!0)),m||(g=this.editor.graph,b=a.indexOf(";"),0<b&&(a=a.substring(0,b)+a.substring(a.indexOf(",",b+1))),x&&g.isGridEnabled()&&(c=g.snap(c),f=g.snap(f)),g=[g.insertVertex(null,null,"",c,f,h,k,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+ -a+";")])):/(\.*<graphml )/.test(a)?(d=!0,this.importGraphML(a,n)):null!=m&&null!=l&&(/(\.v(dx|sdx?))($|\?)/i.test(l)||/(\.vs(x|sx?))($|\?)/i.test(l))?(d=!0,this.importVisio(m,n)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a,l)?(d=!0,this.parseFile(null!=m?m:new Blob([a],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?n(a.responseText):null!=p&&p(null))}),l)):/(\.v(sd|dx))($|\?)/i.test(l)||/(\.vs(s|x))($|\?)/i.test(l)|| -(g=this.insertTextAt(this.validateFileData(a),c,f,!0,null,x));d||null==p||p(g);return g};EditorUi.prototype.base64Encode=function(a){for(var b="",c=0,d=a.length,f,h,k;c<d;){f=a.charCodeAt(c++)&255;if(c==d){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&3)<<4);b+="==";break}h=a.charCodeAt(c++);if(c==d){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>2); -b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&3)<<4|(h&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((h&15)<<2);b+="=";break}k=a.charCodeAt(c++);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&3)<<4|(h&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((h&15)<<2|(k&192)>>6);b+= -"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(k&63)}return b};EditorUi.prototype.importFiles=function(a,b,c,f,h,k,l,p,m,x,t,F){b=null!=b?b:0;c=null!=c?c:0;f=null!=f?f:this.maxImageSize;x=null!=x?x:this.maxImageBytes;var d=null!=b&&null!=c,g=!0,n=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var q=t||this.resampleThreshold,u=0;u<a.length;u++)if("image/"==a[u].type.substring(0,6)&&a[u].size>q){n=!0;break}var w=mxUtils.bind(this,function(){var m=this.editor.graph,n=m.gridSize; -h=null!=h?h:mxUtils.bind(this,function(a,b,c,f,g,m,h,n,k){return null!=a&&"<mxlibrary"==a.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,a,h)),null):this.importFile(a,b,c,f,g,m,h,n,k,d,F)});k=null!=k?k:mxUtils.bind(this,function(a){m.setSelectionCells(a)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var q=a.length,u=q,w=[],v=mxUtils.bind(this,function(a,b){w[a]=b;if(0==--u){this.spinner.stop();if(null!=p)p(w);else{var c=[];m.getModel().beginUpdate(); -try{for(var d=0;d<w.length;d++){var f=w[d]();null!=f&&(c=c.concat(f))}}finally{m.getModel().endUpdate()}}k(c)}}),z=0;z<q;z++)mxUtils.bind(this,function(d){var k=a[d],q=new FileReader;q.onload=mxUtils.bind(this,function(a){if(null==l||l(k))if("image/"==k.type.substring(0,6))if("image/svg"==k.type.substring(0,9)){var q=a.target.result,u=q.indexOf(","),p=decodeURIComponent(escape(atob(q.substring(u+1)))),w=mxUtils.parseXml(p),p=w.getElementsByTagName("svg");if(0<p.length){var p=p[0],z=F?null:p.getAttribute("content"); -null!=z&&"<"!=z.charAt(0)&&"%"!=z.charAt(0)&&(z=unescape(window.atob?atob(z):Base64.decode(z,!0)));null!=z&&"%"==z.charAt(0)&&(z=decodeURIComponent(z));null==z||"<mxfile "!==z.substring(0,8)&&"<mxGraphModel "!==z.substring(0,14)?v(d,mxUtils.bind(this,function(){try{if(q.substring(0,u+1),null!=w){var a=w.getElementsByTagName("svg");if(0<a.length){var g=a[0],l=parseFloat(g.getAttribute("width")),p=parseFloat(g.getAttribute("height")),x=g.getAttribute("viewBox");if(null==x||0==x.length)g.setAttribute("viewBox", -"0 0 "+l+" "+p);else if(isNaN(l)||isNaN(p)){var t=x.split(" ");3<t.length&&(l=parseFloat(t[2]),p=parseFloat(t[3]))}q=this.createSvgDataUri(mxUtils.getXml(g));var v=Math.min(1,Math.min(f/Math.max(1,l)),f/Math.max(1,p)),z=h(q,k.type,b+d*n,c+d*n,Math.max(1,Math.round(l*v)),Math.max(1,Math.round(p*v)),k.name);if(isNaN(l)||isNaN(p)){var F=new Image;F.onload=mxUtils.bind(this,function(){l=Math.max(1,F.width);p=Math.max(1,F.height);z[0].geometry.width=l;z[0].geometry.height=p;g.setAttribute("viewBox","0 0 "+ -l+" "+p);q=this.createSvgDataUri(mxUtils.getXml(g));var a=q.indexOf(";");0<a&&(q=q.substring(0,a)+q.substring(q.indexOf(",",a+1)));m.setCellStyles("image",q,[z[0]])});F.src=this.createSvgDataUri(mxUtils.getXml(g))}return z}}}catch(na){}return null})):v(d,mxUtils.bind(this,function(){return h(z,"text/xml",b+d*n,c+d*n,0,0,k.name)}))}else v(d,mxUtils.bind(this,function(){return null}))}else{p=!1;if("image/png"==k.type){var A=F?null:this.extractGraphModelFromPng(a.target.result);if(null!=A&&0<A.length){var y= -new Image;y.src=a.target.result;v(d,mxUtils.bind(this,function(){return h(A,"text/xml",b+d*n,c+d*n,y.width,y.height,k.name)}));p=!0}}p||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"),mxResources.get("cancel"),mxUtils.bind(this,function(){}),null,mxResources.get("ok"),mxUtils.bind(this,function(){this.actions.get("import").funct()}))):this.loadImage(a.target.result,mxUtils.bind(this,function(m){this.resizeImage(m,a.target.result, -mxUtils.bind(this,function(m,l,q){v(d,mxUtils.bind(this,function(){if(null!=m&&m.length<x){var u=g&&this.isResampleImage(a.target.result,t)?Math.min(1,Math.min(f/l,f/q)):1;return h(m,k.type,b+d*n,c+d*n,Math.round(l*u),Math.round(q*u),k.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),g,f,t)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else h(a.target.result,k.type,b+d*n,c+d*n,240,160,k.name,function(a){v(d, -function(){return a})})});/(\.v(dx|sdx?))($|\?)/i.test(k.name)||/(\.vs(x|sx?))($|\?)/i.test(k.name)?h(null,k.type,b+d*n,c+d*n,240,160,k.name,function(a){v(d,function(){return a})},k):"image"==k.type.substring(0,5)?q.readAsDataURL(k):q.readAsText(k)})(z)});n?this.confirmImageResize(function(a){g=a;w()},m):w()};EditorUi.prototype.confirmImageResize=function(a,b){b=null!=b?b:!1;var c=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},d=isLocalStorage||mxClient.IS_CHROMEAPP? -mxSettings.getResizeImages():null,f=function(d,f){if(d||b)mxSettings.setResizeImages(d?f:null),mxSettings.save();c();a(f)};null==d||b?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(a){f(a,!0)},function(a){f(a,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage|| -mxClient.IS_CHROMEAPP?220:200,!0,!0):f(!1,d)};EditorUi.prototype.parseFile=function(a,b,c){c=null!=c?c:a.name;var d=new FormData;d.append("format","xml");d.append("upfile",a,c);var f=new XMLHttpRequest;f.open("POST",OPEN_URL);f.onreadystatechange=function(){b(f)};f.send(d)};EditorUi.prototype.isResampleImage=function(a,b){b=null!=b?b:this.resampleThreshold;return a.length>b};EditorUi.prototype.resizeImage=function(a,b,c,f,h,k){h=null!=h?h:this.maxImageSize;var d=Math.max(1,a.width),g=Math.max(1,a.height); -if(f&&this.isResampleImage(b,k))try{var m=Math.max(d/h,g/h);if(1<m){var n=Math.round(d/m),l=Math.round(g/m),q=document.createElement("canvas");q.width=n;q.height=l;q.getContext("2d").drawImage(a,0,0,n,l);var u=q.toDataURL();if(u.length<b.length){var p=document.createElement("canvas");p.width=n;p.height=l;var t=p.toDataURL();u!==t&&(b=u,d=n,g=l)}}}catch(D){}c(b,d,g)};EditorUi.prototype.crcTable=[];for(var b=0;256>b;b++)for(var f=b,k=0;8>k;k++)f=1==(f&1)?3988292384^f>>>1:f>>>1,EditorUi.prototype.crcTable[b]= -f;EditorUi.prototype.updateCRC=function(a,b,c,f){for(var d=0;d<f;d++)a=EditorUi.prototype.crcTable[(a^b[c+d])&255]^a>>>8;return a};EditorUi.prototype.crc32=function(a){this.crcTable=this.crcTable||this.createCrcTable();for(var b=-1,c=0;c<a.length;c++)b=b>>>8^this.crcTable[(b^a.charCodeAt(c))&255];return(b^-1)>>>0};EditorUi.prototype.writeGraphModelToPng=function(a,b,c,f,h){function d(a,b){var c=m;m+=b;return a.substring(c,m)}function g(a){a=d(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<< -16)+(a.charCodeAt(0)<<24)}function k(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,!0);var m=0;if(d(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=h&&h();else if(d(a,4),"IHDR"!=d(a,4))null!=h&&h();else{d(a,17);h=a.substring(0,m);do{var n=g(a);if("IDAT"==d(a,4)){h=a.substring(0,m-8);c=c+String.fromCharCode(0)+("zTXt"==b?String.fromCharCode(0):"")+f;f=4294967295;f=this.updateCRC(f, -b,0,4);f=this.updateCRC(f,c,0,c.length);h+=k(c.length)+b+c+k(f^4294967295);h+=a.substring(m-8,a.length);break}h+=a.substring(m-8,m-4+n);d(a,n);d(a,4)}while(n);return"data:image/png;base64,"+(window.btoa?btoa(h):Base64.encode(h,!0))}};EditorUi.prototype.extractGraphModelFromPng=function(a){var b=null;try{var c=a.substring(a.indexOf(",")+1),d=window.atob&&!mxClient.IS_SF?atob(c):Base64.decode(c,!0);EditorUi.parsePng(d,mxUtils.bind(this,function(a,c,f){a=d.substring(a+8,a+8+f);"zTXt"==c?(f=a.indexOf(String.fromCharCode(0)), -"mxGraphModel"==a.substring(0,f)&&(a=this.editor.graph.bytesToString(pako.inflateRaw(a.substring(f+2))).replace(/\+/g," "),null!=a&&0<a.length&&(b=a))):"tEXt"==c&&(a=a.split(String.fromCharCode(0)),1<a.length&&"mxGraphModel"==a[0]&&(b=a[1]));if(null!=b||"IDAT"==c)return!0}))}catch(u){}null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));return b};EditorUi.prototype.loadImage=function(a,b,c){var d=new Image;d.onload=function(){b(d)};null!=c&&(d.onerror= -c);d.src=a};var h=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=mxStencilRegistry.allowEval&&!this.isOfflineApp();"undefined"!==typeof window.mxSettings&&(this.formatWidth=mxSettings.getFormatWidth());var a=this,b=this.editor.graph;b.getLinkTitle=function(b){return a.getLinkTitle(b)};b.customLinkClicked=function(b){var c=!1;try{a.handleCustomLink(b),c=!0}catch(A){a.handleError(A)}return c};var c=this.clearDefaultStyle;this.clearDefaultStyle=function(){c.apply(this, -arguments)};this.isOffline()||"undefined"===typeof window.EditDataDialog||(EditDataDialog.placeholderHelpLink="https://desk.draw.io/support/solutions/articles/16000051979");var f=a.editor.getEditBlankUrl;this.editor.getEditBlankUrl=function(b){b=null!=b?b:"";if(null!=a.pages&&null!=a.currentPage)for(var c=0;c<a.pages.length;c++)if(a.pages[c]==a.currentPage){0<c&&(b+=(0<b.length?"&":"?")+"page="+c);break}"1"==urlParams.dev&&(b+=(0<b.length?"&":"?")+"dev=1&drawdev=1");return f.apply(this,arguments)}; -var k=b.addClickHandler;b.addClickHandler=function(a,c,d){var f=c;c=function(a,c){if(null==c){var d=mxEvent.getSource(a);"a"==d.nodeName.toLowerCase()&&(c=d.getAttribute("href"))}null!=c&&b.isCustomLink(c)&&(mxEvent.isTouchEvent(a)||!mxEvent.isPopupTrigger(a))&&b.customLinkClicked(c)&&mxEvent.consume(a);null!=f&&f(a,c)};k.call(this,a,c,d)};h.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(b.view.canvas.ownerSVGElement,null,!0);a.actions.get("print").funct=function(){a.showDialog((new PrintDialog(a)).container, -360,null!=a.pages&&1<a.pages.length?420:360,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var l=b.getGlobalVariable;b.getGlobalVariable=function(b){return"page"==b&&null!=a.currentPage?a.currentPage.getName():"pagenumber"==b?null!=a.currentPage&&null!=a.pages?mxUtils.indexOf(a.pages,a.currentPage)+1:1:l.apply(this,arguments)};var p=b.labelLinkClicked;b.labelLinkClicked=function(a,c,d){var f=c.getAttribute("href");if(null==f||!b.isCustomLink(f)||!mxEvent.isTouchEvent(d)&&mxEvent.isPopupTrigger(d))p.apply(this, -arguments);else{if(!b.isEnabled()||null!=a&&b.isCellLocked(a.cell))b.customLinkClicked(f),b.getRubberband().reset();mxEvent.consume(d)}};this.editor.getOrCreateFilename=function(){var b=a.defaultFilename,c=a.getCurrentFile();null!=c&&(b=null!=c.getTitle()?c.getTitle():b);return b};var t=this.actions.get("print");t.setEnabled(!mxClient.IS_IOS||!navigator.standalone);t.visible=t.isEnabled();if(!this.editor.chromeless||this.editor.editable){var m=function(){window.setTimeout(function(){x.innerHTML=" "; -x.focus();document.execCommand("selectAll",!1,null)},0)};this.keyHandler.bindAction(70,!0,"find");this.keyHandler.bindAction(67,!0,"copyStyle",!0);this.keyHandler.bindAction(86,!0,"pasteStyle",!0);this.keyHandler.bindAction(77,!0,"editGeometry",!0);this.keyHandler.bindAction(88,!0,"insertText",!0);this.keyHandler.bindAction(75,!0,"insertRectangle");this.keyHandler.bindAction(75,!0,"insertEllipse",!0);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(this.altShiftActions[83]="synchronize");mxClient.IS_IE|| -b.container.addEventListener("paste",mxUtils.bind(this,function(a){var b=this.editor.graph;if(!mxEvent.isConsumed(a))try{for(var c=a.clipboardData||a.originalEvent.clipboardData,d=!1,f=0;f<c.types.length;f++)if("text/"===c.types[f].substring(0,5)){d=!0;break}if(!d){var g=c.items;for(index in g){var m=g[index];if("file"===m.kind){if(b.isEditing())this.importFiles([m.getAsFile()],0,0,this.maxImageSize,function(a,c,d,f,g,m){b.insertImage(a,g,m)},function(){},function(a){return"image/"==a.type.substring(0, -6)},function(a){for(var b=0;b<a.length;b++)a[b]()});else{var h=this.editor.graph.getInsertPoint();this.importFiles([m.getAsFile()],h.x,h.y,this.maxImageSize);mxEvent.consume(a)}break}}}}catch(R){}}),!1);var x=document.createElement("div");x.style.position="absolute";x.style.whiteSpace="nowrap";x.style.overflow="hidden";x.style.display="block";x.contentEditable=!0;mxUtils.setOpacity(x,0);x.style.width="1px";x.style.height="1px";x.innerHTML=" ";var z=!1;this.keyHandler.bindControlKey(88,null); -this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(a){var c=mxEvent.getSource(a);null==b.container||!b.isEnabled()||b.isMouseDown||b.isEditing()||null!=this.dialog||"INPUT"==c.nodeName||"TEXTAREA"==c.nodeName||!(224==a.keyCode||!mxClient.IS_MAC&&17==a.keyCode||mxClient.IS_MAC&&91==a.keyCode)||z||(x.style.left=b.container.scrollLeft+10+"px",x.style.top=b.container.scrollTop+10+"px",b.container.appendChild(x), -z=!0,mxClient.IS_QUIRKS?window.setTimeout(function(){x.focus();document.execCommand("selectAll",!1,null)},0):(x.focus(),document.execCommand("selectAll",!1,null)))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(a){var c=a.keyCode;window.setTimeout(mxUtils.bind(this,function(){!z||224!=c&&17!=c&&91!=c||(z=!1,b.isEditing()||null!=this.dialog||null==b.container||b.container.focus(),x.parentNode.removeChild(x),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(x, -"copy",mxUtils.bind(this,function(a){b.isEnabled()&&(mxClipboard.copy(b),this.copyCells(x),m())}));mxEvent.addListener(x,"cut",mxUtils.bind(this,function(a){b.isEnabled()&&(mxClipboard.copy(b),this.copyCells(x,!0),m())}));mxEvent.addListener(x,"paste",mxUtils.bind(this,function(a){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&(x.innerHTML=" ",x.focus(),window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(a,x);x.innerHTML=" "}),0))}),!0);var F=this.isSelectionAllowed;this.isSelectionAllowed= -function(a){return mxEvent.getSource(a)==x?!0:F.apply(this,arguments)}}this.spinner=this.createSpinner(document.body.clientWidth/2-2,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,24);Graph.fileSupport&&this.editor.graph.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,function(a){var b=this.editor.graph,c=b.cellEditor.text2,d=null;null!=c&&(mxEvent.addListener(c,"dragleave",function(a){null!=d&&(d.parentNode.removeChild(d),d=null);a.stopPropagation();a.preventDefault()}), -mxEvent.addListener(c,"dragover",mxUtils.bind(this,function(a){null==d&&(!mxClient.IS_IE||10<document.documentMode)&&(d=this.highlightElement(c));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(c,"drop",mxUtils.bind(this,function(a){null!=d&&(d.parentNode.removeChild(d),d=null);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,function(a,c,d,f,g,m){b.insertImage(a,g,m)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b= -0;b<a.length;b++)a[b]()},mxEvent.isControlDown(a));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")){var c=a.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(c)?this.loadImage(decodeURIComponent(c),mxUtils.bind(this,function(a){var d=Math.max(1,a.width);a=Math.max(1,a.height);var f=this.maxImageSize,f=Math.min(1,Math.min(f/Math.max(1,d)),f/Math.max(1,a));b.insertImage(decodeURIComponent(c),d*f,a*f)})):document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/plain"))}else 0<= -mxUtils.indexOf(a.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/plain"));a.stopPropagation();a.preventDefault()})))}));if("1"==urlParams.ruler&&"undefined"!==typeof mxRuler){t=document.createElement("div");t.style.position="absolute";t.style.top="95px";t.style.left="250px";t.style.width="2000px";t.style.height="30px";t.style.background= -"whiteSmoke";document.body.appendChild(t);var C=document.createElement("div");C.style.position="absolute";C.style.top="125px";C.style.left="220px";C.style.width="30px";C.style.height="1000px";C.style.background="whiteSmoke";document.body.appendChild(C);var B=document.createElement("div");B.style.position="absolute";B.style.top="95px";B.style.left="220px";B.style.width="30px";B.style.height="30px";B.style.background="whiteSmoke";document.body.appendChild(B);this.vRuler=new mxRuler(this.editor.graph, -C,!0);this.hRuler=new mxRuler(this.editor.graph,t,!1)}if("1"==urlParams.styledev){t=document.getElementById("geFooter");null!=t&&(this.styleInput=document.createElement("input"),this.styleInput.setAttribute("type","text"),this.styleInput.style.position="absolute",this.styleInput.style.top="14px",this.styleInput.style.left="2px",this.styleInput.style.width="98%",this.styleInput.style.visibility="hidden",this.styleInput.style.opacity="0.9",mxEvent.addListener(this.styleInput,"change",mxUtils.bind(this, -function(){this.editor.graph.getModel().setStyle(this.editor.graph.getSelectionCell(),this.styleInput.value)})),t.appendChild(this.styleInput),this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(a,b){if(0<this.editor.graph.getSelectionCount()){var c=this.editor.graph.getSelectionCell(),c=this.editor.graph.getModel().getStyle(c);this.styleInput.value=c||"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var H=this.isSelectionAllowed; -this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==this.styleInput?!0:H.apply(this,arguments)}}t=document.getElementById("geInfo");null!=t&&t.parentNode.removeChild(t);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var D=null;mxEvent.addListener(b.container,"dragleave",function(a){b.isEnabled()&&(null!=D&&(D.parentNode.removeChild(D),D=null),a.stopPropagation(),a.preventDefault())});mxEvent.addListener(b.container,"dragover",mxUtils.bind(this,function(a){null== -D&&(!mxClient.IS_IE||10<document.documentMode)&&(D=this.highlightElement(b.container));null!=this.sidebar&&this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()}));mxEvent.addListener(b.container,"drop",mxUtils.bind(this,function(a){null!=D&&(D.parentNode.removeChild(D),D=null);if(b.isEnabled()){var c=mxUtils.convertPoint(b.container,mxEvent.getClientX(a),mxEvent.getClientY(a)),d=b.view.translate,f=b.view.scale,g=c.x/f-d.x,m=c.y/f-d.y;mxEvent.isAltDown(a)&&(m=g=0);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files, -g,m,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(a),null,null,mxEvent.isShiftDown(a));else{var h=0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):null,c=this.extractGraphModelFromEvent(a,null!=this.pages);if(null!=c)b.setSelectionCells(this.importXml(c,g,m,!0));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/html")){var k=a.dataTransfer.getData("text/html"),c=document.createElement("div");c.innerHTML=k;var n=null,d=c.getElementsByTagName("img"); -null!=d&&1==d.length?(k=d[0].getAttribute("src"),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(k)||(n=!0)):(c=c.getElementsByTagName("a"),null!=c&&1==c.length&&(k=c[0].getAttribute("href")));var l=!0,q=mxUtils.bind(this,function(){b.setSelectionCells(this.insertTextAt(k,g,m,!0,n,null,l))});n&&k.length>this.resampleThreshold?this.confirmImageResize(function(a){l=a;q()},mxEvent.isControlDown(a)):q()}else null!=h&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(h)?this.loadImage(decodeURIComponent(h),mxUtils.bind(this, -function(a){var c=Math.max(1,a.width);a=Math.max(1,a.height);var d=this.maxImageSize,d=Math.min(1,Math.min(d/Math.max(1,c)),d/Math.max(1,a));b.setSelectionCell(b.insertVertex(null,null,"",g,m,c*d,a*d,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+h+";"))}),mxUtils.bind(this,function(a){b.setSelectionCells(this.insertTextAt(h,g,m,!0))})):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&b.setSelectionCells(this.insertTextAt(a.dataTransfer.getData("text/plain"), -g,m,!0))}}a.stopPropagation();a.preventDefault()}),!1)}this.initPages();this.editUpdateListener=mxUtils.bind(this,function(a,b){var c=b.getProperty("edit");null!=c&&this.updateEditReferences(c)});this.editor.undoManager.addListener(mxEvent.BEFORE_UNDO,this.editUpdateListener);this.editor.undoManager.addListener(mxEvent.BEFORE_REDO,this.editUpdateListener);"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.getLinkTitle=function(a){var b=Graph.prototype.getLinkTitle.apply(this, +this.importFiles(c.files,null,null,this.maxImageSize)}));c.click()}else{window.openNew=!1;window.openKey="import";if(!b){var d=Editor.useLocalStorage;Editor.useLocalStorage=!a}window.openFile=new OpenFile(mxUtils.bind(this,function(a){this.hideDialog(a)}));window.openFile.setConsumer(mxUtils.bind(this,function(a,b){if(null!=b&&Graph.fileSupport&&/(\.v(dx|sdx?))($|\?)/i.test(b)){var c=new Blob([a],{type:"application/octet-stream"});this.importVisio(c,mxUtils.bind(this,function(a){this.importXml(a, +0,0,!0)}),null,b)}else this.editor.graph.setSelectionCells(this.importXml(a,0,0,!0))}));this.showDialog((new OpenDialog(this)).container,360,220,!0,!0,function(){window.openFile=null});if(!b){var g=this.dialog,e=g.close;this.dialog.close=mxUtils.bind(this,function(a){Editor.useLocalStorage=d;e.apply(g,arguments);a&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};EditorUi.prototype.importFile=function(a,b,c,e,f,k,l,n,x,q,p){q=null!=q?q:!0;var d=!1,g=null,m=mxUtils.bind(this, +function(a){var b=null;null!=a&&"<mxlibrary"==a.substring(0,10)?this.loadLibrary(new LocalLibrary(this,a,l)):b=this.importXml(a,c,e,q);null!=n&&n(b)});"image"==b.substring(0,5)?(x=!1,"image/png"==b.substring(0,9)&&(b=p?null:this.extractGraphModelFromPng(a),null!=b&&0<b.length&&(g=this.importXml(b,c,e,q),x=!0)),x||(g=this.editor.graph,b=a.indexOf(";"),0<b&&(a=a.substring(0,b)+a.substring(a.indexOf(",",b+1))),q&&g.isGridEnabled()&&(c=g.snap(c),e=g.snap(e)),g=[g.insertVertex(null,null,"",c,e,f,k,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+ +a+";")])):/(\.*<graphml )/.test(a)?(d=!0,this.importGraphML(a,m)):null!=x&&null!=l&&(/(\.v(dx|sdx?))($|\?)/i.test(l)||/(\.vs(x|sx?))($|\?)/i.test(l))?(d=!0,this.importVisio(x,m)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a,l)?(d=!0,this.parseFile(null!=x?x:new Blob([a],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?m(a.responseText):null!=n&&n(null))}),l)):/(\.v(sd|dx))($|\?)/i.test(l)||/(\.vs(s|x))($|\?)/i.test(l)|| +(g=this.insertTextAt(this.validateFileData(a),c,e,!0,null,q));d||null==n||n(g);return g};EditorUi.prototype.base64Encode=function(a){for(var b="",c=0,d=a.length,e,f,k;c<d;){e=a.charCodeAt(c++)&255;if(c==d){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4);b+="==";break}f=a.charCodeAt(c++);if(c==d){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2); +b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(f&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&15)<<2);b+="=";break}k=a.charCodeAt(c++);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(f&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&15)<<2|(k&192)>>6);b+= +"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(k&63)}return b};EditorUi.prototype.importFiles=function(a,b,c,e,f,k,l,n,x,q,p,u){b=null!=b?b:0;c=null!=c?c:0;e=null!=e?e:this.maxImageSize;q=null!=q?q:this.maxImageBytes;var d=null!=b&&null!=c,g=!0,m=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var t=p||this.resampleThreshold,v=0;v<a.length;v++)if("image/"==a[v].type.substring(0,6)&&a[v].size>t){m=!0;break}var y=mxUtils.bind(this,function(){var m=this.editor.graph,x=m.gridSize; +f=null!=f?f:mxUtils.bind(this,function(a,b,c,g,e,n,f,k,m){return null!=a&&"<mxlibrary"==a.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,a,f)),null):this.importFile(a,b,c,g,e,n,f,k,m,d,u)});k=null!=k?k:mxUtils.bind(this,function(a){m.setSelectionCells(a)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var t=a.length,v=t,y=[],z=mxUtils.bind(this,function(a,b){y[a]=b;if(0==--v){this.spinner.stop();if(null!=n)n(y);else{var c=[];m.getModel().beginUpdate(); +try{for(var d=0;d<y.length;d++){var g=y[d]();null!=g&&(c=c.concat(g))}}finally{m.getModel().endUpdate()}}k(c)}}),A=0;A<t;A++)mxUtils.bind(this,function(d){var n=a[d];if(null!=n){var k=new FileReader;k.onload=mxUtils.bind(this,function(a){if(null==l||l(n))if("image/"==n.type.substring(0,6))if("image/svg"==n.type.substring(0,9)){var k=a.target.result,t=k.indexOf(","),v=decodeURIComponent(escape(atob(k.substring(t+1)))),y=mxUtils.parseXml(v),v=y.getElementsByTagName("svg");if(0<v.length){var v=v[0], +A=u?null:v.getAttribute("content");null!=A&&"<"!=A.charAt(0)&&"%"!=A.charAt(0)&&(A=unescape(window.atob?atob(A):Base64.decode(A,!0)));null!=A&&"%"==A.charAt(0)&&(A=decodeURIComponent(A));null==A||"<mxfile "!==A.substring(0,8)&&"<mxGraphModel "!==A.substring(0,14)?z(d,mxUtils.bind(this,function(){try{if(k.substring(0,t+1),null!=y){var a=y.getElementsByTagName("svg");if(0<a.length){var g=a[0],l=parseFloat(g.getAttribute("width")),q=parseFloat(g.getAttribute("height")),v=g.getAttribute("viewBox");if(null== +v||0==v.length)g.setAttribute("viewBox","0 0 "+l+" "+q);else if(isNaN(l)||isNaN(q)){var p=v.split(" ");3<p.length&&(l=parseFloat(p[2]),q=parseFloat(p[3]))}k=this.createSvgDataUri(mxUtils.getXml(g));var u=Math.min(1,Math.min(e/Math.max(1,l)),e/Math.max(1,q)),z=f(k,n.type,b+d*x,c+d*x,Math.max(1,Math.round(l*u)),Math.max(1,Math.round(q*u)),n.name);if(isNaN(l)||isNaN(q)){var A=new Image;A.onload=mxUtils.bind(this,function(){l=Math.max(1,A.width);q=Math.max(1,A.height);z[0].geometry.width=l;z[0].geometry.height= +q;g.setAttribute("viewBox","0 0 "+l+" "+q);k=this.createSvgDataUri(mxUtils.getXml(g));var a=k.indexOf(";");0<a&&(k=k.substring(0,a)+k.substring(k.indexOf(",",a+1)));m.setCellStyles("image",k,[z[0]])});A.src=this.createSvgDataUri(mxUtils.getXml(g))}return z}}}catch(pa){}return null})):z(d,mxUtils.bind(this,function(){return f(A,"text/xml",b+d*x,c+d*x,0,0,n.name)}))}else z(d,mxUtils.bind(this,function(){return null}))}else{v=!1;if("image/png"==n.type){var B=u?null:this.extractGraphModelFromPng(a.target.result); +if(null!=B&&0<B.length){var I=new Image;I.src=a.target.result;z(d,mxUtils.bind(this,function(){return f(B,"text/xml",b+d*x,c+d*x,I.width,I.height,n.name)}));v=!0}}v||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"),mxResources.get("cancel"),mxUtils.bind(this,function(){}),null,mxResources.get("ok"),mxUtils.bind(this,function(){this.actions.get("import").funct()}))):this.loadImage(a.target.result,mxUtils.bind(this,function(k){this.resizeImage(k, +a.target.result,mxUtils.bind(this,function(k,m,l){z(d,mxUtils.bind(this,function(){if(null!=k&&k.length<q){var t=g&&this.isResampleImage(a.target.result,p)?Math.min(1,Math.min(e/m,e/l)):1;return f(k,n.type,b+d*x,c+d*x,Math.round(m*t),Math.round(l*t),n.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),g,e,p)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else f(a.target.result,n.type,b+d*x,c+d*x,240,160,n.name, +function(a){z(d,function(){return a})})});/(\.v(dx|sdx?))($|\?)/i.test(n.name)||/(\.vs(x|sx?))($|\?)/i.test(n.name)?f(null,n.type,b+d*x,c+d*x,240,160,n.name,function(a){z(d,function(){return a})},n):"image"==n.type.substring(0,5)?k.readAsDataURL(n):k.readAsText(n)}})(A)});m?this.confirmImageResize(function(a){g=a;y()},x):y()};EditorUi.prototype.confirmImageResize=function(a,b){b=null!=b?b:!1;var c=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},d=isLocalStorage||mxClient.IS_CHROMEAPP? +mxSettings.getResizeImages():null,g=function(d,g){if(d||b)mxSettings.setResizeImages(d?g:null),mxSettings.save();c();a(g)};null==d||b?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(a){g(a,!0)},function(a){g(a,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage|| +mxClient.IS_CHROMEAPP?220:200,!0,!0):g(!1,d)};EditorUi.prototype.parseFile=function(a,b,c){c=null!=c?c:a.name;var d=new FormData;d.append("format","xml");d.append("upfile",a,c);var g=new XMLHttpRequest;g.open("POST",OPEN_URL);g.onreadystatechange=function(){b(g)};g.send(d)};EditorUi.prototype.isResampleImage=function(a,b){b=null!=b?b:this.resampleThreshold;return a.length>b};EditorUi.prototype.resizeImage=function(a,b,c,e,f,k){f=null!=f?f:this.maxImageSize;var d=Math.max(1,a.width),g=Math.max(1,a.height); +if(e&&this.isResampleImage(b,k))try{var m=Math.max(d/f,g/f);if(1<m){var l=Math.round(d/m),t=Math.round(g/m),q=document.createElement("canvas");q.width=l;q.height=t;q.getContext("2d").drawImage(a,0,0,l,t);var v=q.toDataURL();if(v.length<b.length){var p=document.createElement("canvas");p.width=l;p.height=t;var y=p.toDataURL();v!==y&&(b=v,d=l,g=t)}}}catch(D){}c(b,d,g)};EditorUi.prototype.crcTable=[];for(var e=0;256>e;e++)for(var k=e,f=0;8>f;f++)k=1==(k&1)?3988292384^k>>>1:k>>>1,EditorUi.prototype.crcTable[e]= +k;EditorUi.prototype.updateCRC=function(a,b,c,e){for(var d=0;d<e;d++)a=EditorUi.prototype.crcTable[(a^b[c+d])&255]^a>>>8;return a};EditorUi.prototype.crc32=function(a){this.crcTable=this.crcTable||this.createCrcTable();for(var b=-1,c=0;c<a.length;c++)b=b>>>8^this.crcTable[(b^a.charCodeAt(c))&255];return(b^-1)>>>0};EditorUi.prototype.writeGraphModelToPng=function(a,b,c,e,f){function d(a,b){var c=k;k+=b;return a.substring(c,k)}function g(a){a=d(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<< +16)+(a.charCodeAt(0)<<24)}function n(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,!0);var k=0;if(d(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=f&&f();else if(d(a,4),"IHDR"!=d(a,4))null!=f&&f();else{d(a,17);f=a.substring(0,k);do{var m=g(a);if("IDAT"==d(a,4)){f=a.substring(0,k-8);c=c+String.fromCharCode(0)+("zTXt"==b?String.fromCharCode(0):"")+e;e=4294967295;e=this.updateCRC(e, +b,0,4);e=this.updateCRC(e,c,0,c.length);f+=n(c.length)+b+c+n(e^4294967295);f+=a.substring(k-8,a.length);break}f+=a.substring(k-8,k-4+m);d(a,m);d(a,4)}while(m);return"data:image/png;base64,"+(window.btoa?btoa(f):Base64.encode(f,!0))}};EditorUi.prototype.extractGraphModelFromPng=function(a){var b=null;try{var c=a.substring(a.indexOf(",")+1),d=window.atob&&!mxClient.IS_SF?atob(c):Base64.decode(c,!0);EditorUi.parsePng(d,mxUtils.bind(this,function(a,c,e){a=d.substring(a+8,a+8+e);"zTXt"==c?(e=a.indexOf(String.fromCharCode(0)), +"mxGraphModel"==a.substring(0,e)&&(a=this.editor.graph.bytesToString(pako.inflateRaw(a.substring(e+2))).replace(/\+/g," "),null!=a&&0<a.length&&(b=a))):"tEXt"==c&&(a=a.split(String.fromCharCode(0)),1<a.length&&"mxGraphModel"==a[0]&&(b=a[1]));if(null!=b||"IDAT"==c)return!0}))}catch(t){}null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));return b};EditorUi.prototype.loadImage=function(a,b,c){var d=new Image;d.onload=function(){b(d)};null!=c&&(d.onerror= +c);d.src=a};var l=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=mxStencilRegistry.allowEval&&!this.isOfflineApp();"undefined"!==typeof window.mxSettings&&(this.formatWidth=mxSettings.getFormatWidth());var a=this,b=this.editor.graph;b.getLinkTitle=function(b){return a.getLinkTitle(b)};b.customLinkClicked=function(b){var c=!1;try{a.handleCustomLink(b),c=!0}catch(C){a.handleError(C)}return c};var c=this.clearDefaultStyle;this.clearDefaultStyle=function(){c.apply(this, +arguments)};this.isOffline()||"undefined"===typeof window.EditDataDialog||(EditDataDialog.placeholderHelpLink="https://desk.draw.io/support/solutions/articles/16000051979");var e=a.editor.getEditBlankUrl;this.editor.getEditBlankUrl=function(b){b=null!=b?b:"";if(null!=a.pages&&null!=a.currentPage)for(var c=0;c<a.pages.length;c++)if(a.pages[c]==a.currentPage){0<c&&(b+=(0<b.length?"&":"?")+"page="+c);break}"1"==urlParams.dev&&(b+=(0<b.length?"&":"?")+"dev=1&drawdev=1");return e.apply(this,arguments)}; +var f=b.addClickHandler;b.addClickHandler=function(a,c,d){var e=c;c=function(a,c){if(null==c){var d=mxEvent.getSource(a);"a"==d.nodeName.toLowerCase()&&(c=d.getAttribute("href"))}null!=c&&b.isCustomLink(c)&&(mxEvent.isTouchEvent(a)||!mxEvent.isPopupTrigger(a))&&b.customLinkClicked(c)&&mxEvent.consume(a);null!=e&&e(a,c)};f.call(this,a,c,d)};l.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(b.view.canvas.ownerSVGElement,null,!0);a.actions.get("print").funct=function(){a.showDialog((new PrintDialog(a)).container, +360,null!=a.pages&&1<a.pages.length?420:360,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var k=b.getGlobalVariable;b.getGlobalVariable=function(b){return"page"==b&&null!=a.currentPage?a.currentPage.getName():"pagenumber"==b?null!=a.currentPage&&null!=a.pages?mxUtils.indexOf(a.pages,a.currentPage)+1:1:k.apply(this,arguments)};var q=b.labelLinkClicked;b.labelLinkClicked=function(a,c,d){var e=c.getAttribute("href");if(null==e||!b.isCustomLink(e)||!mxEvent.isTouchEvent(d)&&mxEvent.isPopupTrigger(d))q.apply(this, +arguments);else{if(!b.isEnabled()||null!=a&&b.isCellLocked(a.cell))b.customLinkClicked(e),b.getRubberband().reset();mxEvent.consume(d)}};this.editor.getOrCreateFilename=function(){var b=a.defaultFilename,c=a.getCurrentFile();null!=c&&(b=null!=c.getTitle()?c.getTitle():b);return b};var n=this.actions.get("print");n.setEnabled(!mxClient.IS_IOS||!navigator.standalone);n.visible=n.isEnabled();if(!this.editor.chromeless||this.editor.editable){var x=function(){window.setTimeout(function(){p.innerHTML=" "; +p.focus();document.execCommand("selectAll",!1,null)},0)};this.keyHandler.bindAction(70,!0,"find");this.keyHandler.bindAction(67,!0,"copyStyle",!0);this.keyHandler.bindAction(86,!0,"pasteStyle",!0);this.keyHandler.bindAction(77,!0,"editGeometry",!0);this.keyHandler.bindAction(88,!0,"insertText",!0);this.keyHandler.bindAction(75,!0,"insertRectangle");this.keyHandler.bindAction(75,!0,"insertEllipse",!0);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(this.altShiftActions[83]="synchronize");mxClient.IS_IE|| +b.container.addEventListener("paste",mxUtils.bind(this,function(a){var b=this.editor.graph;if(!mxEvent.isConsumed(a))try{for(var c=a.clipboardData||a.originalEvent.clipboardData,d=!1,e=0;e<c.types.length;e++)if("text/"===c.types[e].substring(0,5)){d=!0;break}if(!d){var g=c.items;for(index in g){var n=g[index];if("file"===n.kind){if(b.isEditing())this.importFiles([n.getAsFile()],0,0,this.maxImageSize,function(a,c,d,e,g,n){b.insertImage(a,g,n)},function(){},function(a){return"image/"==a.type.substring(0, +6)},function(a){for(var b=0;b<a.length;b++)a[b]()});else{var f=this.editor.graph.getInsertPoint();this.importFiles([n.getAsFile()],f.x,f.y,this.maxImageSize);mxEvent.consume(a)}break}}}}catch(V){}}),!1);var p=document.createElement("div");p.style.position="absolute";p.style.whiteSpace="nowrap";p.style.overflow="hidden";p.style.display="block";p.contentEditable=!0;mxUtils.setOpacity(p,0);p.style.width="1px";p.style.height="1px";p.innerHTML=" ";var u=!1;this.keyHandler.bindControlKey(88,null); +this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(a){var c=mxEvent.getSource(a);null==b.container||!b.isEnabled()||b.isMouseDown||b.isEditing()||null!=this.dialog||"INPUT"==c.nodeName||"TEXTAREA"==c.nodeName||!(224==a.keyCode||!mxClient.IS_MAC&&17==a.keyCode||mxClient.IS_MAC&&91==a.keyCode)||u||(p.style.left=b.container.scrollLeft+10+"px",p.style.top=b.container.scrollTop+10+"px",b.container.appendChild(p), +u=!0,mxClient.IS_QUIRKS?window.setTimeout(function(){p.focus();document.execCommand("selectAll",!1,null)},0):(p.focus(),document.execCommand("selectAll",!1,null)))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(a){var c=a.keyCode;window.setTimeout(mxUtils.bind(this,function(){!u||224!=c&&17!=c&&91!=c||(u=!1,b.isEditing()||null!=this.dialog||null==b.container||b.container.focus(),p.parentNode.removeChild(p),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(p, +"copy",mxUtils.bind(this,function(a){b.isEnabled()&&(mxClipboard.copy(b),this.copyCells(p),x())}));mxEvent.addListener(p,"cut",mxUtils.bind(this,function(a){b.isEnabled()&&(mxClipboard.copy(b),this.copyCells(p,!0),x())}));mxEvent.addListener(p,"paste",mxUtils.bind(this,function(a){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&(p.innerHTML=" ",p.focus(),window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(a,p);p.innerHTML=" "}),0))}),!0);var F=this.isSelectionAllowed;this.isSelectionAllowed= +function(a){return mxEvent.getSource(a)==p?!0:F.apply(this,arguments)}}this.spinner=this.createSpinner(document.body.clientWidth/2-2,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,24);Graph.fileSupport&&this.editor.graph.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,function(a){var b=this.editor.graph,c=b.cellEditor.text2,d=null;null!=c&&(mxEvent.addListener(c,"dragleave",function(a){null!=d&&(d.parentNode.removeChild(d),d=null);a.stopPropagation();a.preventDefault()}), +mxEvent.addListener(c,"dragover",mxUtils.bind(this,function(a){null==d&&(!mxClient.IS_IE||10<document.documentMode)&&(d=this.highlightElement(c));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(c,"drop",mxUtils.bind(this,function(a){null!=d&&(d.parentNode.removeChild(d),d=null);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,function(a,c,d,e,g,n){b.insertImage(a,g,n)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b= +0;b<a.length;b++)a[b]()},mxEvent.isControlDown(a));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")){var c=a.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(c)?this.loadImage(decodeURIComponent(c),mxUtils.bind(this,function(a){var d=Math.max(1,a.width);a=Math.max(1,a.height);var e=this.maxImageSize,e=Math.min(1,Math.min(e/Math.max(1,d)),e/Math.max(1,a));b.insertImage(decodeURIComponent(c),d*e,a*e)})):document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/plain"))}else 0<= +mxUtils.indexOf(a.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/plain"));a.stopPropagation();a.preventDefault()})))}));if("1"==urlParams.ruler&&"undefined"!==typeof mxRuler){n=document.createElement("div");n.style.position="absolute";n.style.top="95px";n.style.left="250px";n.style.width="2000px";n.style.height="30px";n.style.background= +"whiteSmoke";document.body.appendChild(n);var E=document.createElement("div");E.style.position="absolute";E.style.top="125px";E.style.left="220px";E.style.width="30px";E.style.height="1000px";E.style.background="whiteSmoke";document.body.appendChild(E);var G=document.createElement("div");G.style.position="absolute";G.style.top="95px";G.style.left="220px";G.style.width="30px";G.style.height="30px";G.style.background="whiteSmoke";document.body.appendChild(G);this.vRuler=new mxRuler(this.editor.graph, +E,!0);this.hRuler=new mxRuler(this.editor.graph,n,!1)}if("1"==urlParams.styledev){n=document.getElementById("geFooter");null!=n&&(this.styleInput=document.createElement("input"),this.styleInput.setAttribute("type","text"),this.styleInput.style.position="absolute",this.styleInput.style.top="14px",this.styleInput.style.left="2px",this.styleInput.style.width="98%",this.styleInput.style.visibility="hidden",this.styleInput.style.opacity="0.9",mxEvent.addListener(this.styleInput,"change",mxUtils.bind(this, +function(){this.editor.graph.getModel().setStyle(this.editor.graph.getSelectionCell(),this.styleInput.value)})),n.appendChild(this.styleInput),this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(a,b){if(0<this.editor.graph.getSelectionCount()){var c=this.editor.graph.getSelectionCell(),c=this.editor.graph.getModel().getStyle(c);this.styleInput.value=c||"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var H=this.isSelectionAllowed; +this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==this.styleInput?!0:H.apply(this,arguments)}}n=document.getElementById("geInfo");null!=n&&n.parentNode.removeChild(n);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var D=null;mxEvent.addListener(b.container,"dragleave",function(a){b.isEnabled()&&(null!=D&&(D.parentNode.removeChild(D),D=null),a.stopPropagation(),a.preventDefault())});mxEvent.addListener(b.container,"dragover",mxUtils.bind(this,function(a){null== +D&&(!mxClient.IS_IE||10<document.documentMode)&&(D=this.highlightElement(b.container));null!=this.sidebar&&this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()}));mxEvent.addListener(b.container,"drop",mxUtils.bind(this,function(a){null!=D&&(D.parentNode.removeChild(D),D=null);if(b.isEnabled()){var c=mxUtils.convertPoint(b.container,mxEvent.getClientX(a),mxEvent.getClientY(a)),d=b.view.translate,e=b.view.scale,g=c.x/e-d.x,n=c.y/e-d.y;mxEvent.isAltDown(a)&&(n=g=0);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files, +g,n,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(a),null,null,mxEvent.isShiftDown(a));else{var f=0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):null,c=this.extractGraphModelFromEvent(a,null!=this.pages);if(null!=c)b.setSelectionCells(this.importXml(c,g,n,!0));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/html")){var k=a.dataTransfer.getData("text/html"),c=document.createElement("div");c.innerHTML=k;var m=null,d=c.getElementsByTagName("img"); +null!=d&&1==d.length?(k=d[0].getAttribute("src"),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(k)||(m=!0)):(c=c.getElementsByTagName("a"),null!=c&&1==c.length&&(k=c[0].getAttribute("href")));var x=!0,l=mxUtils.bind(this,function(){b.setSelectionCells(this.insertTextAt(k,g,n,!0,m,null,x))});m&&k.length>this.resampleThreshold?this.confirmImageResize(function(a){x=a;l()},mxEvent.isControlDown(a)):l()}else null!=f&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(f)?this.loadImage(decodeURIComponent(f),mxUtils.bind(this, +function(a){var c=Math.max(1,a.width);a=Math.max(1,a.height);var d=this.maxImageSize,d=Math.min(1,Math.min(d/Math.max(1,c)),d/Math.max(1,a));b.setSelectionCell(b.insertVertex(null,null,"",g,n,c*d,a*d,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+f+";"))}),mxUtils.bind(this,function(a){b.setSelectionCells(this.insertTextAt(f,g,n,!0))})):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&b.setSelectionCells(this.insertTextAt(a.dataTransfer.getData("text/plain"), +g,n,!0))}}a.stopPropagation();a.preventDefault()}),!1)}this.initPages();this.editUpdateListener=mxUtils.bind(this,function(a,b){var c=b.getProperty("edit");null!=c&&this.updateEditReferences(c)});this.editor.undoManager.addListener(mxEvent.BEFORE_UNDO,this.editUpdateListener);this.editor.undoManager.addListener(mxEvent.BEFORE_REDO,this.editUpdateListener);"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.getLinkTitle=function(a){var b=Graph.prototype.getLinkTitle.apply(this, arguments);if("data:page/id,"==a.substring(0,13)){var c=a.indexOf(",");0<c&&(b=this.getPageById(a.substring(c+1)),b=null!=b?b.getName():mxResources.get("pageNotFound"))}else"data:"==a.substring(0,5)&&(b=mxResources.get("action"));return b};EditorUi.prototype.handleCustomLink=function(a){if("data:page/id,"==a.substring(0,13)){var b=a.indexOf(",");if(a=this.getPageById(a.substring(b+1)))this.selectPage(a);else throw Error(mxResources.get("pageNotFound")||"Page not found");}else this.editor.graph.handleCustomLink(a)}; EditorUi.prototype.isSettingsEnabled=function(){return"undefined"!==typeof window.mxSettings&&(isLocalStorage||mxClient.IS_CHROMEAPP)};EditorUi.prototype.installSettings=function(){if(this.isSettingsEnabled()){ColorDialog.recentColors=mxSettings.getRecentColors();this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]));this.editor.graph.connectionHandler.setCreateTarget(mxSettings.isCreateTarget());this.fireEvent(new mxEventObject("copyConnectChanged"));this.addListener("copyConnectChanged", mxUtils.bind(this,function(a,b){mxSettings.setCreateTarget(this.editor.graph.connectionHandler.isCreateTarget());mxSettings.save()}));this.editor.graph.pageFormat=mxSettings.getPageFormat();this.addListener("pageFormatChanged",mxUtils.bind(this,function(a,b){mxSettings.setPageFormat(this.editor.graph.pageFormat);mxSettings.save()}));this.editor.graph.view.gridColor=mxSettings.getGridColor();this.addListener("gridColorChanged",mxUtils.bind(this,function(a,b){mxSettings.setGridColor(this.editor.graph.view.gridColor); mxSettings.save()}));if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)this.editor.addListener("autosaveChanged",mxUtils.bind(this,function(a,b){mxSettings.setAutosave(this.editor.autosave);mxSettings.save()})),this.editor.autosave=mxSettings.getAutosave();null!=this.sidebar&&this.sidebar.showPalette("search",mxSettings.settings.search);this.editor.chromeless&&!this.editor.editable||null==this.sidebar||!(mxSettings.settings.isNew||8>=parseInt(mxSettings.settings.version||0))||(this.toggleScratchpad(), -mxSettings.save());this.addListener("formatWidthChanged",function(){mxSettings.setFormatWidth(this.formatWidth);mxSettings.save()})}};EditorUi.prototype.copyCells=function(a,b){var c=this.editor.graph;if(c.isSelectionEmpty())a.innerHTML="";else{var d=mxUtils.sortCells(c.model.getTopmostCells(c.getSelectionCells())),f=mxUtils.getXml(this.editor.graph.encodeCells(d));mxUtils.setTextContent(a,encodeURIComponent(f));b?(c.removeCells(d,!1),c.lastPasteXml=null):(c.lastPasteXml=f,c.pasteCounter=0);a.focus(); +mxSettings.save());this.addListener("formatWidthChanged",function(){mxSettings.setFormatWidth(this.formatWidth);mxSettings.save()})}};EditorUi.prototype.copyCells=function(a,b){var c=this.editor.graph;if(c.isSelectionEmpty())a.innerHTML="";else{var d=mxUtils.sortCells(c.model.getTopmostCells(c.getSelectionCells())),e=mxUtils.getXml(this.editor.graph.encodeCells(d));mxUtils.setTextContent(a,encodeURIComponent(e));b?(c.removeCells(d,!1),c.lastPasteXml=null):(c.lastPasteXml=e,c.pasteCounter=0);a.focus(); document.execCommand("selectAll",!1,null)}};EditorUi.prototype.pasteCells=function(a,b){if(!mxEvent.isConsumed(a)){var c=b.getElementsByTagName("span");if(null!=c&&0<c.length&&"application/vnd.lucid.chart.objects"===c[0].getAttribute("data-lucid-type")){var d=c[0].getAttribute("data-lucid-content");null!=d&&0<d.length&&(this.convertLucidChart(d,mxUtils.bind(this,function(a){this.editor.graph.setSelectionCells(this.importXml(a,0,0))}),mxUtils.bind(this,function(a){this.handleError(a)})),mxEvent.consume(a))}else{var d= -this.editor.graph,f=mxUtils.trim(mxClient.IS_QUIRKS||8==document.documentMode?mxUtils.getTextContent(b):b.textContent),g=!1;try{var h=f.lastIndexOf("%3E");0<=h&&h<f.length-3&&(f=f.substring(0,h+3))}catch(m){}try{var c=b.getElementsByTagName("span"),k=null!=c&&0<c.length?mxUtils.trim(decodeURIComponent(c[0].textContent)):decodeURIComponent(f);this.isCompatibleString(k)&&(g=!0,f=k)}catch(m){}d.lastPasteXml==f?d.pasteCounter++:(d.lastPasteXml=f,d.pasteCounter=0);c=d.pasteCounter*d.gridSize;if(null!= -f&&0<f.length&&(g||this.isCompatibleString(f)?d.setSelectionCells(this.importXml(f,c,c)):(g=d.getInsertPoint(),d.isMouseInsertPoint()&&(c=0,d.lastPasteXml==f&&0<d.pasteCounter&&d.pasteCounter--),d.setSelectionCells(this.insertTextAt(f,g.x+c,g.y+c,!0))),!d.isSelectionEmpty())){d.scrollCellToVisible(d.getSelectionCell());null!=this.hoverIcons&&this.hoverIcons.update(d.view.getState(d.getSelectionCell()));try{mxEvent.consume(a)}catch(m){}}}}};EditorUi.prototype.addFileDropHandler=function(a){if(Graph.fileSupport)for(var b= +this.editor.graph,e=mxUtils.trim(mxClient.IS_QUIRKS||8==document.documentMode?mxUtils.getTextContent(b):b.textContent),g=!1;try{var f=e.lastIndexOf("%3E");0<=f&&f<e.length-3&&(e=e.substring(0,f+3))}catch(x){}try{var c=b.getElementsByTagName("span"),n=null!=c&&0<c.length?mxUtils.trim(decodeURIComponent(c[0].textContent)):decodeURIComponent(e);this.isCompatibleString(n)&&(g=!0,e=n)}catch(x){}d.lastPasteXml==e?d.pasteCounter++:(d.lastPasteXml=e,d.pasteCounter=0);c=d.pasteCounter*d.gridSize;if(null!= +e&&0<e.length&&(g||this.isCompatibleString(e)?d.setSelectionCells(this.importXml(e,c,c)):(g=d.getInsertPoint(),d.isMouseInsertPoint()&&(c=0,d.lastPasteXml==e&&0<d.pasteCounter&&d.pasteCounter--),d.setSelectionCells(this.insertTextAt(e,g.x+c,g.y+c,!0))),!d.isSelectionEmpty())){d.scrollCellToVisible(d.getSelectionCell());null!=this.hoverIcons&&this.hoverIcons.update(d.view.getState(d.getSelectionCell()));try{mxEvent.consume(a)}catch(x){}}}}};EditorUi.prototype.addFileDropHandler=function(a){if(Graph.fileSupport)for(var b= null,c=0;c<a.length;c++)mxEvent.addListener(a[c],"dragleave",function(a){null!=b&&(b.parentNode.removeChild(b),b=null);a.stopPropagation();a.preventDefault()}),mxEvent.addListener(a[c],"dragover",mxUtils.bind(this,function(a){(this.editor.graph.isEnabled()||"1"!=urlParams.embed)&&null==b&&(!mxClient.IS_IE||10<document.documentMode&&12>document.documentMode)&&(b=this.highlightElement());a.stopPropagation();a.preventDefault()})),mxEvent.addListener(a[c],"drop",mxUtils.bind(this,function(a){null!=b&& (b.parentNode.removeChild(b),b=null);if(this.editor.graph.isEnabled()||"1"!=urlParams.embed)if(0<a.dataTransfer.files.length)this.hideDialog(),"1"==urlParams.embed?this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,null,null,null,null,!mxEvent.isControlDown(a)&&!mxEvent.isShiftDown(a)):this.openFiles(a.dataTransfer.files,!0);else{var c=this.extractGraphModelFromEvent(a);if(null==c){var d=null!=a.dataTransfer?a.dataTransfer:a.clipboardData;null!=d&&(10==document.documentMode||11==document.documentMode? c=d.getData("Text"):(c=null,c=0<=mxUtils.indexOf(d.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):0<=mxUtils.indexOf(d.types,"text/html")?d.getData("text/html"):null,null!=c&&0<c.length?(d=document.createElement("div"),d.innerHTML=c,d=d.getElementsByTagName("img"),0<d.length&&(c=d[0].getAttribute("src"))):0<=mxUtils.indexOf(d.types,"text/plain")&&(c=d.getData("text/plain"))),null!=c&&("data:image/png;base64,"==c.substring(0,22)?(c=this.extractGraphModelFromPng(c),null!=c&&0<c.length&& -this.openLocalFile(c,null,!0)):!this.isOffline()&&this.isRemoteFileFormat(c)?(new mxXmlRequest(OPEN_URL,"format=xml&data="+encodeURIComponent(c))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()&&this.openLocalFile(a.getText(),null,!0)})):/^https?:\/\//.test(c)&&(null==this.getCurrentFile()?window.location.hash="#U"+encodeURIComponent(c):window.openWindow((mxClient.IS_CHROMEAPP?"https://www.draw.io/":"https://"+location.host+"/")+window.location.search+"#U"+encodeURIComponent(c)))))}else this.openLocalFile(c, -null,!0)}a.stopPropagation();a.preventDefault()}))};EditorUi.prototype.highlightElement=function(a){var b=0,c=0,d,f;if(null==a){f=document.body;var h=document.documentElement;d=(f.clientWidth||h.clientWidth)-3;f=Math.max(f.clientHeight||0,h.clientHeight)-3}else b=a.offsetTop,c=a.offsetLeft,d=a.clientWidth,f=a.clientHeight;h=document.createElement("div");h.style.zIndex=mxPopupMenu.prototype.zIndex+2;h.style.border="3px dotted rgb(254, 137, 12)";h.style.pointerEvents="none";h.style.position="absolute"; -h.style.top=b+"px";h.style.left=c+"px";h.style.width=Math.max(0,d-3)+"px";h.style.height=Math.max(0,f-3)+"px";null!=a&&a.parentNode==this.editor.graph.container?this.editor.graph.container.appendChild(h):document.body.appendChild(h);return h};EditorUi.prototype.stringToCells=function(a){a=mxUtils.parseXml(a);var b=this.editor.extractGraphModel(a.documentElement);a=[];if(null!=b){var c=new mxCodec(b.ownerDocument),d=new mxGraphModel;c.decode(b,d);b=d.getChildAt(d.getRoot(),0);for(c=0;c<d.getChildCount(b);c++)a.push(d.getChildAt(b, -c))}return a};EditorUi.prototype.openFiles=function(a,b){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var c=0;c<a.length;c++)mxUtils.bind(this,function(a){var c=new FileReader;c.onload=mxUtils.bind(this,function(c){try{var d=c.target.result,f=a.name;if(null!=f&&0<f.length){!this.useCanvasForExport&&/(\.png)$/i.test(f)&&(f=f.substring(0,f.length-4)+".xml");var g=mxUtils.bind(this,function(a){f=0<=f.lastIndexOf(".")?f.substring(0,f.lastIndexOf("."))+".xml":f+".xml";if("<mxlibrary"== -a.substring(0,10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,a,f))}catch(z){this.handleError(z,mxResources.get("errorLoadingFile"))}}else this.openLocalFile(a,f,b)});if(/(\.v(dx|sdx?))($|\?)/i.test(f)||/(\.vs(x|sx?))($|\?)/i.test(f))this.importVisio(a,mxUtils.bind(this,function(a){this.spinner.stop();g(a)}));else if(/(\.*<graphml )/.test(d))this.importGraphML(d,mxUtils.bind(this,function(a){this.spinner.stop(); -g(a)}));else if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,f))this.parseFile(a,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?g(a.responseText):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))}));else if(this.isLucidChartData(d))/(\.json)$/i.test(f)&&(f=f.substring(0,f.length-5)+".xml"),this.convertLucidChart(d, -mxUtils.bind(this,function(a){this.spinner.stop();this.openLocalFile(a,f,b)}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));else if("<mxlibrary"==c.target.result.substring(0,10)){this.spinner.stop();null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,c.target.result,a.name))}catch(x){this.handleError(x,mxResources.get("errorLoadingFile"))}}else"image/png"==a.type.substring(0, -9)&&(d=this.extractGraphModelFromPng(d)),this.spinner.stop(),this.openLocalFile(d,f,b)}}catch(x){this.handleError(x)}});c.onerror=mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a);window.openFile=null});"image"===a.type.substring(0,5)&&"image/svg"!==a.type.substring(0,9)?c.readAsDataURL(a):c.readAsText(a)})(a[c])};EditorUi.prototype.openLocalFile=function(a,b,c){var d=this.getCurrentFile(),f=mxUtils.bind(this,function(){window.openFile=null;if(null==b&&null!=this.getCurrentFile()&& -this.isDiagramEmpty()){var d=mxUtils.parseXml(a);null!=d&&(this.editor.setGraphXml(d.documentElement),this.editor.graph.selectAll())}else this.fileLoaded(new LocalFile(this,a,b||this.defaultFilename,c))});if(null!=a&&0<a.length)null==d||!d.isModified()&&(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)?f():(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&null!=d&&d.isModified()?this.confirm(mxResources.get("allChangesLost"),null,f,mxResources.get("cancel"),mxResources.get("discardChanges")):(window.openFile= -new OpenFile(function(){window.openFile=null}),window.openFile.setData(a,b),window.openWindow(this.getUrl(),null,mxUtils.bind(this,function(){null!=d&&d.isModified()?this.confirm(mxResources.get("allChangesLost"),null,f,mxResources.get("cancel"),mxResources.get("discardChanges")):f()})));else throw Error(mxResources.get("notADiagramFile"));};EditorUi.prototype.getBasenames=function(){var a={};if(null!=this.pages)for(var b=0;b<this.pages.length;b++)this.updatePageRoot(this.pages[b]),this.addBasenamesForCell(this.pages[b].root, -a);else this.addBasenamesForCell(this.editor.graph.model.getRoot(),a);var b=[],c;for(c in a)b.push(c);return b};EditorUi.prototype.addBasenamesForCell=function(a,b){function c(a){if(null!=a){var c=a.lastIndexOf(".");0<c&&(a=a.substring(c+1,a.length));null==b[a]&&(b[a]=!0)}}var d=this.editor.graph,f=d.getCellStyle(a);c(mxStencilRegistry.getBasenameForStencil(f[mxConstants.STYLE_SHAPE]));d.model.isEdge(a)&&(c(mxMarker.getPackageForType(f[mxConstants.STYLE_STARTARROW])),c(mxMarker.getPackageForType(f[mxConstants.STYLE_ENDARROW]))); -for(var f=d.model.getChildCount(a),g=0;g<f;g++)this.addBasenamesForCell(d.model.getChildAt(a,g),b)};EditorUi.prototype.setGraphEnabled=function(a){this.diagramContainer.style.visibility=a?"":"hidden";this.formatContainer.style.visibility=a?"":"hidden";this.sidebarFooterContainer.style.display=a?"":"none";this.sidebarContainer.style.display=a?"":"none";this.hsplit.style.display=a?"":"none";this.editor.graph.setEnabled(a);null!=this.tabContainer&&(this.tabContainer.style.visibility=a?"":"hidden");a|| +this.openLocalFile(c,null,!0)):!this.isOffline()&&this.isRemoteFileFormat(c)?(new mxXmlRequest(OPEN_URL,"format=xml&data="+encodeURIComponent(c))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()&&this.openLocalFile(a.getText(),null,!0)})):/^https?:\/\//.test(c)&&(null==this.getCurrentFile()?window.location.hash="#U"+encodeURIComponent(c):window.openWindow((mxClient.IS_CHROMEAPP?EditorUi.drawHost+"/":"https://"+location.host+"/")+window.location.search+"#U"+encodeURIComponent(c)))))}else this.openLocalFile(c, +null,!0)}a.stopPropagation();a.preventDefault()}))};EditorUi.prototype.highlightElement=function(a){var b=0,c=0,d,e;if(null==a){e=document.body;var f=document.documentElement;d=(e.clientWidth||f.clientWidth)-3;e=Math.max(e.clientHeight||0,f.clientHeight)-3}else b=a.offsetTop,c=a.offsetLeft,d=a.clientWidth,e=a.clientHeight;f=document.createElement("div");f.style.zIndex=mxPopupMenu.prototype.zIndex+2;f.style.border="3px dotted rgb(254, 137, 12)";f.style.pointerEvents="none";f.style.position="absolute"; +f.style.top=b+"px";f.style.left=c+"px";f.style.width=Math.max(0,d-3)+"px";f.style.height=Math.max(0,e-3)+"px";null!=a&&a.parentNode==this.editor.graph.container?this.editor.graph.container.appendChild(f):document.body.appendChild(f);return f};EditorUi.prototype.stringToCells=function(a){a=mxUtils.parseXml(a);var b=this.editor.extractGraphModel(a.documentElement);a=[];if(null!=b){var c=new mxCodec(b.ownerDocument),d=new mxGraphModel;c.decode(b,d);b=d.getChildAt(d.getRoot(),0);for(c=0;c<d.getChildCount(b);c++)a.push(d.getChildAt(b, +c))}return a};EditorUi.prototype.openFiles=function(a,b){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var c=0;c<a.length;c++)mxUtils.bind(this,function(a){var c=new FileReader;c.onload=mxUtils.bind(this,function(c){try{var d=c.target.result,e=a.name;if(null!=e&&0<e.length){!this.useCanvasForExport&&/(\.png)$/i.test(e)&&(e=e.substring(0,e.length-4)+".xml");var g=mxUtils.bind(this,function(a){e=0<=e.lastIndexOf(".")?e.substring(0,e.lastIndexOf("."))+".xml":e+".xml";if("<mxlibrary"== +a.substring(0,10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,a,e))}catch(A){this.handleError(A,mxResources.get("errorLoadingFile"))}}else this.openLocalFile(a,e,b)});if(/(\.v(dx|sdx?))($|\?)/i.test(e)||/(\.vs(x|sx?))($|\?)/i.test(e))this.importVisio(a,mxUtils.bind(this,function(a){this.spinner.stop();g(a)}));else if(/(\.*<graphml )/.test(d))this.importGraphML(d,mxUtils.bind(this,function(a){this.spinner.stop(); +g(a)}));else if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,e))this.parseFile(a,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?g(a.responseText):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))}));else if(this.isLucidChartData(d))/(\.json)$/i.test(e)&&(e=e.substring(0,e.length-5)+".xml"),this.convertLucidChart(d, +mxUtils.bind(this,function(a){this.spinner.stop();this.openLocalFile(a,e,b)}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));else if("<mxlibrary"==c.target.result.substring(0,10)){this.spinner.stop();null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,c.target.result,a.name))}catch(z){this.handleError(z,mxResources.get("errorLoadingFile"))}}else"image/png"==a.type.substring(0, +9)&&(d=this.extractGraphModelFromPng(d)),this.spinner.stop(),this.openLocalFile(d,e,b)}}catch(z){this.handleError(z)}});c.onerror=mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a);window.openFile=null});"image"===a.type.substring(0,5)&&"image/svg"!==a.type.substring(0,9)?c.readAsDataURL(a):c.readAsText(a)})(a[c])};EditorUi.prototype.openLocalFile=function(a,b,c){var d=this.getCurrentFile(),e=mxUtils.bind(this,function(){window.openFile=null;if(null==b&&null!=this.getCurrentFile()&& +this.isDiagramEmpty()){var d=mxUtils.parseXml(a);null!=d&&(this.editor.setGraphXml(d.documentElement),this.editor.graph.selectAll())}else this.fileLoaded(new LocalFile(this,a,b||this.defaultFilename,c))});if(null!=a&&0<a.length)null==d||!d.isModified()&&(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)?e():(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&null!=d&&d.isModified()?this.confirm(mxResources.get("allChangesLost"),null,e,mxResources.get("cancel"),mxResources.get("discardChanges")):(window.openFile= +new OpenFile(function(){window.openFile=null}),window.openFile.setData(a,b),window.openWindow(this.getUrl(),null,mxUtils.bind(this,function(){null!=d&&d.isModified()?this.confirm(mxResources.get("allChangesLost"),null,e,mxResources.get("cancel"),mxResources.get("discardChanges")):e()})));else throw Error(mxResources.get("notADiagramFile"));};EditorUi.prototype.getBasenames=function(){var a={};if(null!=this.pages)for(var b=0;b<this.pages.length;b++)this.updatePageRoot(this.pages[b]),this.addBasenamesForCell(this.pages[b].root, +a);else this.addBasenamesForCell(this.editor.graph.model.getRoot(),a);var b=[],c;for(c in a)b.push(c);return b};EditorUi.prototype.addBasenamesForCell=function(a,b){function c(a){if(null!=a){var c=a.lastIndexOf(".");0<c&&(a=a.substring(c+1,a.length));null==b[a]&&(b[a]=!0)}}var d=this.editor.graph,e=d.getCellStyle(a);c(mxStencilRegistry.getBasenameForStencil(e[mxConstants.STYLE_SHAPE]));d.model.isEdge(a)&&(c(mxMarker.getPackageForType(e[mxConstants.STYLE_STARTARROW])),c(mxMarker.getPackageForType(e[mxConstants.STYLE_ENDARROW]))); +for(var e=d.model.getChildCount(a),g=0;g<e;g++)this.addBasenamesForCell(d.model.getChildAt(a,g),b)};EditorUi.prototype.setGraphEnabled=function(a){this.diagramContainer.style.visibility=a?"":"hidden";this.formatContainer.style.visibility=a?"":"hidden";this.sidebarFooterContainer.style.display=a?"":"none";this.sidebarContainer.style.display=a?"":"none";this.hsplit.style.display=a?"":"none";this.editor.graph.setEnabled(a);null!=this.tabContainer&&(this.tabContainer.style.visibility=a?"":"hidden");a|| (null!=this.actions.outlineWindow&&this.actions.outlineWindow.window.setVisible(!1),null!=this.actions.layersWindow&&this.actions.layersWindow.window.setVisible(!1),null!=this.menus.tagsWindow&&this.menus.tagsWindow.window.setVisible(!1),null!=this.menus.findWindow&&this.menus.findWindow.window.setVisible(!1))};EditorUi.prototype.initializeEmbedMode=function(){this.setGraphEnabled(!1);(window.opener||window.parent)!=window&&("1"!=urlParams.spin||this.spinner.spin(document.body,mxResources.get("loading")))&& this.installMessageHandler(mxUtils.bind(this,function(a,b,c){this.spinner.stop();this.addEmbedButtons();this.setGraphEnabled(!0);null!=a&&0<a.length?(this.setFileData(a),this.editor.isChromelessView()?this.editor.graph.isLightboxView()&&this.lightboxFit():this.showLayersDialog(),this.chromelessResize&&this.chromelessResize()):(this.editor.graph.model.clear(),this.editor.fireEvent(new mxEventObject("resetGraphView")));this.editor.undoManager.clear();this.editor.modified=null!=c?c:!1;this.updateUi(); window.self!==window.top&&window.focus();null!=this.format&&this.format.refresh()}))};EditorUi.prototype.showLayersDialog=function(){1<this.editor.graph.getModel().getChildCount(this.editor.graph.getModel().getRoot())&&(null==this.actions.layersWindow?this.actions.get("layers").funct():this.actions.layersWindow.window.setVisible(!0))};EditorUi.prototype.getPublicUrl=function(a,b){null!=a?a.getPublicUrl(b):b(null)};EditorUi.prototype.createLoadMessage=function(a){var b=this.editor.graph;return{event:a, -pageVisible:b.pageVisible,translate:b.view.translate,bounds:b.getGraphBounds(),currentPage:this.getSelectedPageIndex(),scale:b.view.scale,page:b.view.getBackgroundPageBounds()}};EditorUi.prototype.installMessageHandler=function(a){var b=null,c=!1,d=!1,f=null,h=mxUtils.bind(this,function(a,b){this.editor.modified&&"0"!=urlParams.modified?null!=urlParams.modified&&this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(urlParams.modified))):this.editor.setStatus("")});this.editor.graph.model.addListener(mxEvent.CHANGE, -h);mxEvent.addListener(window,"message",mxUtils.bind(this,function(g){if(g.source==(window.opener||window.parent)){var m=g.data,h=mxUtils.bind(this,function(a){if(null!=a&&"function"===typeof a.charAt&&"<"!=a.charAt(0))try{"data:image/png;base64,"==a.substring(0,22)?a=this.extractGraphModelFromPng(a):"data:image/svg+xml;base64,"==a.substring(0,26)?a=atob(a.substring(26)):"data:image/svg+xml;utf8,"==a.substring(0,24)&&(a=a.substring(24)),null!=a&&("%"==a.charAt(0)?a=decodeURIComponent(a):"<"!=a.charAt(0)&& -(a=this.editor.graph.decompress(a)))}catch(M){}return a});if("json"==urlParams.proto){try{m=JSON.parse(m)}catch(J){m=null}if(null==m)return;if("dialog"==m.action){this.showError(null!=m.titleKey?mxResources.get(m.titleKey):m.title,null!=m.messageKey?mxResources.get(m.messageKey):m.message,null!=m.buttonKey?mxResources.get(m.buttonKey):m.button);null!=m.modified&&(this.editor.modified=m.modified);return}if("prompt"==m.action){this.spinner.stop();h=new FilenameDialog(this,m.defaultValue||"",null!=m.okKey? -mxResources.get(m.okKey):null,function(a){null!=a&&k.postMessage(JSON.stringify({event:"prompt",value:a,message:m}),"*")},null!=m.titleKey?mxResources.get(m.titleKey):m.title);this.showDialog(h.container,300,80,!0,!1);h.init();return}if("draft"==m.action){var n=h(m.xml);this.spinner.stop();h=new DraftDialog(this,mxResources.get("draftFound",[m.name||this.defaultFilename]),n,mxUtils.bind(this,function(){this.hideDialog();k.postMessage(JSON.stringify({event:"draft",result:"edit",message:m}),"*")}), -mxUtils.bind(this,function(){this.hideDialog();k.postMessage(JSON.stringify({event:"draft",result:"discard",message:m}),"*")}),m.editKey?mxResources.get(m.editKey):null,m.discardKey?mxResources.get(m.discardKey):null,m.ignore?mxUtils.bind(this,function(){this.hideDialog();k.postMessage(JSON.stringify({event:"draft",result:"ignore",message:m}),"*")}):null);this.showDialog(h.container,640,480,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));try{h.init()}catch(J){k.postMessage(JSON.stringify({event:"draft", -error:J.toString(),message:m}),"*")}return}if("template"==m.action){this.spinner.stop();h=1==m.enableRecent;n=1==m.enableSearch;h=new NewDialog(this,!1,null!=m.callback,mxUtils.bind(this,function(b,c){b=b||this.emptyDiagramXml;null!=m.callback?k.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:c}),"*"):(a(b,g,b!=this.emptyDiagramXml),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,h?mxUtils.bind(this,function(a){this.recentReadyCallback= -a;k.postMessage(JSON.stringify({event:"recentDocs"}),"*")}):null,n?mxUtils.bind(this,function(a,b){this.searchReadyCallback=b;k.postMessage(JSON.stringify({event:"searchDocs",searchStr:a}),"*")}):null,function(a,b,c){k.postMessage(JSON.stringify({event:"template",docUrl:a,info:b,name:c}),"*")});this.showDialog(h.container,620,440,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));h.init();return}if("searchDocsList"==m.action)this.searchReadyCallback(m.list,m.errorMsg);else if("recentDocsList"== -m.action)this.recentReadyCallback(m.list,m.errorMsg);else{if("textContent"==m.action){this.editor.graph.setEnabled(!1);var l=this.editor.graph,h="";if(null!=this.pages)for(n=0;n<this.pages.length;n++){var q=l;this.currentPage!=this.pages[n]&&(q=this.createTemporaryGraph(l.getStylesheet()),q.model.setRoot(this.pages[n].root));h+=this.pages[n].getName()+" "+q.getIndexableText()+" "}else h=l.getIndexableText();this.editor.graph.setEnabled(!0);k.postMessage(JSON.stringify({event:"textContent",data:h, -message:m}),"*");return}if("status"==m.action){null!=m.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(m.messageKey))):null!=m.message&&this.editor.setStatus(mxUtils.htmlEntities(m.message));null!=m.modified&&(this.editor.modified=m.modified);return}if("spinner"==m.action){var p=null!=m.messageKey?mxResources.get(m.messageKey):m.message;null==m.show||m.show?this.spinner.spin(document.body,p):this.spinner.stop();return}if("export"==m.action){if("png"==m.format||"xmlpng"==m.format){if(null== -m.spin&&null==m.spinKey||this.spinner.spin(document.body,null!=m.spinKey?mxResources.get(m.spinKey):m.spin)){var t=null!=m.xml?m.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var l=this.editor.graph,u=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();var b=this.createLoadMessage("export");b.format=m.format;b.message=m;b.data=a;b.xml=encodeURIComponent(t);k.postMessage(JSON.stringify(b),"*")}),w=mxUtils.bind(this,function(a){null==a&&(a=Editor.blankImage); -"xmlpng"==m.format&&(a=this.writeGraphModelToPng(a,"zTXt","mxGraphModel",atob(this.editor.graph.compress(t))));l!=this.editor.graph&&l.container.parentNode.removeChild(l.container);u(a)});if(this.isExportToCanvas()){if(null!=this.pages&&this.currentPage!=this.pages[0]){var l=this.createTemporaryGraph(l.getStylesheet()),v=l.getGlobalVariable,A=this.pages[0];l.getGlobalVariable=function(a){return"page"==a?A.getName():"pagenumber"==a?1:v.apply(this,arguments)};document.body.appendChild(l.container); -l.model.setRoot(A.root)}this.exportToCanvas(mxUtils.bind(this,function(a){w(a.toDataURL("image/png"))}),null,null,null,mxUtils.bind(this,function(){w(null)}),null,null,null,null,null,null,l)}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==m.format?"1":"0")+"&base64=1&xml="+encodeURIComponent(encodeURIComponent(t)))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()?u("data:image/png;base64,"+a.getText()):w(null)}),mxUtils.bind(this,function(){w(null)}))}}else{null!= -m.xml&&0<m.xml.length&&this.setFileData(m.xml);p=this.createLoadMessage("export");if("html2"==m.format||"html"==m.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length))h=this.getXmlFileData(),p.xml=mxUtils.getXml(h),p.data=this.getFileData(null,null,!0,null,null,null,h),p.format=m.format;else if("html"==m.format)t=this.editor.getGraphXml(),p.data=this.getHtml(t,this.editor.graph),p.xml=mxUtils.getXml(t),p.format=m.format;else{mxSvgCanvas2D.prototype.foAltText=null;h=this.editor.graph.background; -h==mxConstants.NONE&&(h=null);p.xml=this.getFileData(!0);p.format="svg";if(m.embedImages||null==m.embedImages){if(null==m.spin&&null==m.spinKey||this.spinner.spin(document.body,null!=m.spinKey?mxResources.get(m.spinKey):m.spin))this.editor.graph.setEnabled(!1),"xmlsvg"==m.format?this.getEmbeddedSvg(p.xml,this.editor.graph,null,!0,mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();p.data=this.createSvgDataUri(a);k.postMessage(JSON.stringify(p),"*")})):this.convertImages(this.editor.graph.getSvg(h), -mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();p.data=this.createSvgDataUri(mxUtils.getXml(a));k.postMessage(JSON.stringify(p),"*")}));return}h="xmlsvg"==m.format?this.getEmbeddedSvg(this.getFileData(!0),this.editor.graph,null,!0):mxUtils.getXml(this.editor.graph.getSvg(h));p.data=this.createSvgDataUri(h)}k.postMessage(JSON.stringify(p),"*")}return}if("load"==m.action)d=1==m.autosave,this.hideDialog(),null!=m.modified&&null==urlParams.modified&&(urlParams.modified= -m.modified),null!=m.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=m.saveAndExit),null!=m.title&&null!=this.buttonContainer&&(n=document.createElement("span"),mxUtils.write(n,m.title),"atlas"==uiTheme?(this.buttonContainer.style.paddingRight="12px",this.buttonContainer.style.paddingTop="12px"):"min"!=uiTheme&&(this.buttonContainer.style.paddingRight="38px",this.buttonContainer.style.paddingTop="6px"),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan), -this.buttonContainer.appendChild(n),this.embedFilenameSpan=n),m=null!=m.xmlpng?this.extractGraphModelFromPng(m.xmlpng):m.xml;else{k.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(m)}),"*");return}}}var y=mxUtils.bind(this,function(g,m){c=!0;try{a(g,m)}catch(T){this.handleError(T)}c=!1;null!=urlParams.modified&&this.editor.setStatus("");var h=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}); -f=h();d&&null==b&&(b=mxUtils.bind(this,function(a,b){var d=h();if(d!=f&&!c){var g=this.createLoadMessage("autosave");g.xml=d;d=JSON.stringify(g);(window.opener||window.parent).postMessage(d,"*")}f=d}),this.editor.graph.model.addListener(mxEvent.CHANGE,b),this.editor.graph.addListener("gridSizeChanged",b),this.editor.graph.addListener("shadowVisibleChanged",b),this.addListener("pageFormatChanged",b),this.addListener("pageScaleChanged",b),this.addListener("backgroundColorChanged",b),this.addListener("backgroundImageChanged", -b),this.addListener("foldingEnabledChanged",b),this.addListener("mathEnabledChanged",b),this.addListener("gridEnabledChanged",b),this.addListener("guidesEnabledChanged",b),this.addListener("pageViewChanged",b));"1"!=urlParams.returnbounds&&"json"!=urlParams.proto||k.postMessage(JSON.stringify(this.createLoadMessage("load")),"*")});null!=m&&"function"===typeof m.substring&&"data:application/vnd.visio;base64,"==m.substring(0,34)?(h="0M8R4KGxGuE"==m.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(m.substring(m.indexOf(",")+ -1)),function(a){y(a,g)},mxUtils.bind(this,function(a){this.handleError(a)}),h)):null!=m&&"function"===typeof m.substring&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(m,"")?this.parseFile(new Blob([m],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&200<=a.status&&299>=a.status&&"<mxGraphModel"==a.responseText.substring(0,13)&&y(a.responseText,g)}),""):null!=m&&"function"===typeof m.substring&&this.isLucidChartData(m)?this.convertLucidChart(m, -mxUtils.bind(this,function(a){y(a)}),mxUtils.bind(this,function(a){this.handleError(a)})):(m=h(m),y(m,g))}}));var k=window.opener||window.parent,h="json"==urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";k.postMessage(h,"*")};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar){var a=document.createElement("div");a.style.display="inline-block";a.style.position="absolute";a.style.paddingTop="atlas"==uiTheme?"2px":"3px";a.style.paddingLeft="8px";a.style.paddingBottom= +pageVisible:b.pageVisible,translate:b.view.translate,bounds:b.getGraphBounds(),currentPage:this.getSelectedPageIndex(),scale:b.view.scale,page:b.view.getBackgroundPageBounds()}};EditorUi.prototype.installMessageHandler=function(a){var b=null,c=!1,d=!1,e=null,f=mxUtils.bind(this,function(a,b){this.editor.modified&&"0"!=urlParams.modified?null!=urlParams.modified&&this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(urlParams.modified))):this.editor.setStatus("")});this.editor.graph.model.addListener(mxEvent.CHANGE, +f);mxEvent.addListener(window,"message",mxUtils.bind(this,function(g){if(g.source==(window.opener||window.parent)){var f=g.data,n=mxUtils.bind(this,function(a){if(null!=a&&"function"===typeof a.charAt&&"<"!=a.charAt(0))try{"data:image/png;base64,"==a.substring(0,22)?a=this.extractGraphModelFromPng(a):"data:image/svg+xml;base64,"==a.substring(0,26)?a=atob(a.substring(26)):"data:image/svg+xml;utf8,"==a.substring(0,24)&&(a=a.substring(24)),null!=a&&("%"==a.charAt(0)?a=decodeURIComponent(a):"<"!=a.charAt(0)&& +(a=this.editor.graph.decompress(a)))}catch(O){}return a});if("json"==urlParams.proto){try{f=JSON.parse(f)}catch(M){f=null}if(null==f)return;if("dialog"==f.action){this.showError(null!=f.titleKey?mxResources.get(f.titleKey):f.title,null!=f.messageKey?mxResources.get(f.messageKey):f.message,null!=f.buttonKey?mxResources.get(f.buttonKey):f.button);null!=f.modified&&(this.editor.modified=f.modified);return}if("prompt"==f.action){this.spinner.stop();n=new FilenameDialog(this,f.defaultValue||"",null!=f.okKey? +mxResources.get(f.okKey):null,function(a){null!=a&&k.postMessage(JSON.stringify({event:"prompt",value:a,message:f}),"*")},null!=f.titleKey?mxResources.get(f.titleKey):f.title);this.showDialog(n.container,300,80,!0,!1);n.init();return}if("draft"==f.action){var l=n(f.xml);this.spinner.stop();n=new DraftDialog(this,mxResources.get("draftFound",[f.name||this.defaultFilename]),l,mxUtils.bind(this,function(){this.hideDialog();k.postMessage(JSON.stringify({event:"draft",result:"edit",message:f}),"*")}), +mxUtils.bind(this,function(){this.hideDialog();k.postMessage(JSON.stringify({event:"draft",result:"discard",message:f}),"*")}),f.editKey?mxResources.get(f.editKey):null,f.discardKey?mxResources.get(f.discardKey):null,f.ignore?mxUtils.bind(this,function(){this.hideDialog();k.postMessage(JSON.stringify({event:"draft",result:"ignore",message:f}),"*")}):null);this.showDialog(n.container,640,480,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));try{n.init()}catch(M){k.postMessage(JSON.stringify({event:"draft", +error:M.toString(),message:f}),"*")}return}if("template"==f.action){this.spinner.stop();n=1==f.enableRecent;l=1==f.enableSearch;n=new NewDialog(this,!1,null!=f.callback,mxUtils.bind(this,function(b,c){b=b||this.emptyDiagramXml;null!=f.callback?k.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:c}),"*"):(a(b,g,b!=this.emptyDiagramXml),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,n?mxUtils.bind(this,function(a){this.recentReadyCallback= +a;k.postMessage(JSON.stringify({event:"recentDocs"}),"*")}):null,l?mxUtils.bind(this,function(a,b){this.searchReadyCallback=b;k.postMessage(JSON.stringify({event:"searchDocs",searchStr:a}),"*")}):null,function(a,b,c){k.postMessage(JSON.stringify({event:"template",docUrl:a,info:b,name:c}),"*")});this.showDialog(n.container,620,440,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));n.init();return}if("searchDocsList"==f.action)this.searchReadyCallback(f.list,f.errorMsg);else if("recentDocsList"== +f.action)this.recentReadyCallback(f.list,f.errorMsg);else{if("textContent"==f.action){this.editor.graph.setEnabled(!1);var m=this.editor.graph,n="";if(null!=this.pages)for(l=0;l<this.pages.length;l++){var q=m;this.currentPage!=this.pages[l]&&(q=this.createTemporaryGraph(m.getStylesheet()),q.model.setRoot(this.pages[l].root));n+=this.pages[l].getName()+" "+q.getIndexableText()+" "}else n=m.getIndexableText();this.editor.graph.setEnabled(!0);k.postMessage(JSON.stringify({event:"textContent",data:n, +message:f}),"*");return}if("status"==f.action){null!=f.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(f.messageKey))):null!=f.message&&this.editor.setStatus(mxUtils.htmlEntities(f.message));null!=f.modified&&(this.editor.modified=f.modified);return}if("spinner"==f.action){var p=null!=f.messageKey?mxResources.get(f.messageKey):f.message;null==f.show||f.show?this.spinner.spin(document.body,p):this.spinner.stop();return}if("export"==f.action){if("png"==f.format||"xmlpng"==f.format){if(null== +f.spin&&null==f.spinKey||this.spinner.spin(document.body,null!=f.spinKey?mxResources.get(f.spinKey):f.spin)){var t=null!=f.xml?f.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var m=this.editor.graph,u=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();var b=this.createLoadMessage("export");b.format=f.format;b.message=f;b.data=a;b.xml=encodeURIComponent(t);k.postMessage(JSON.stringify(b),"*")}),v=mxUtils.bind(this,function(a){null==a&&(a=Editor.blankImage); +"xmlpng"==f.format&&(a=this.writeGraphModelToPng(a,"zTXt","mxGraphModel",atob(this.editor.graph.compress(t))));m!=this.editor.graph&&m.container.parentNode.removeChild(m.container);u(a)});if(this.isExportToCanvas()){if(null!=this.pages&&this.currentPage!=this.pages[0]){var m=this.createTemporaryGraph(m.getStylesheet()),y=m.getGlobalVariable,B=this.pages[0];m.getGlobalVariable=function(a){return"page"==a?B.getName():"pagenumber"==a?1:y.apply(this,arguments)};document.body.appendChild(m.container); +m.model.setRoot(B.root)}this.exportToCanvas(mxUtils.bind(this,function(a){v(a.toDataURL("image/png"))}),null,null,null,mxUtils.bind(this,function(){v(null)}),null,null,null,null,null,null,m)}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==f.format?"1":"0")+"&base64=1&xml="+encodeURIComponent(encodeURIComponent(t)))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()?u("data:image/png;base64,"+a.getText()):v(null)}),mxUtils.bind(this,function(){v(null)}))}}else{null!= +f.xml&&0<f.xml.length&&this.setFileData(f.xml);p=this.createLoadMessage("export");if("html2"==f.format||"html"==f.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length))n=this.getXmlFileData(),p.xml=mxUtils.getXml(n),p.data=this.getFileData(null,null,!0,null,null,null,n),p.format=f.format;else if("html"==f.format)t=this.editor.getGraphXml(),p.data=this.getHtml(t,this.editor.graph),p.xml=mxUtils.getXml(t),p.format=f.format;else{mxSvgCanvas2D.prototype.foAltText=null;n=this.editor.graph.background; +n==mxConstants.NONE&&(n=null);p.xml=this.getFileData(!0);p.format="svg";if(f.embedImages||null==f.embedImages){if(null==f.spin&&null==f.spinKey||this.spinner.spin(document.body,null!=f.spinKey?mxResources.get(f.spinKey):f.spin))this.editor.graph.setEnabled(!1),"xmlsvg"==f.format?this.getEmbeddedSvg(p.xml,this.editor.graph,null,!0,mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();p.data=this.createSvgDataUri(a);k.postMessage(JSON.stringify(p),"*")})):this.convertImages(this.editor.graph.getSvg(n), +mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();p.data=this.createSvgDataUri(mxUtils.getXml(a));k.postMessage(JSON.stringify(p),"*")}));return}n="xmlsvg"==f.format?this.getEmbeddedSvg(this.getFileData(!0),this.editor.graph,null,!0):mxUtils.getXml(this.editor.graph.getSvg(n));p.data=this.createSvgDataUri(n)}k.postMessage(JSON.stringify(p),"*")}return}if("load"==f.action)d=1==f.autosave,this.hideDialog(),null!=f.modified&&null==urlParams.modified&&(urlParams.modified= +f.modified),null!=f.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=f.saveAndExit),null!=f.title&&null!=this.buttonContainer&&(l=document.createElement("span"),mxUtils.write(l,f.title),"atlas"==uiTheme?(this.buttonContainer.style.paddingRight="12px",this.buttonContainer.style.paddingTop="12px"):"min"!=uiTheme&&(this.buttonContainer.style.paddingRight="38px",this.buttonContainer.style.paddingTop="6px"),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan), +this.buttonContainer.appendChild(l),this.embedFilenameSpan=l),f=null!=f.xmlpng?this.extractGraphModelFromPng(f.xmlpng):f.xml;else{k.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(f)}),"*");return}}}var J=mxUtils.bind(this,function(g,f){c=!0;try{a(g,f)}catch(U){this.handleError(U)}c=!1;null!=urlParams.modified&&this.editor.setStatus("");var n=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}); +e=n();d&&null==b&&(b=mxUtils.bind(this,function(a,b){var d=n();if(d!=e&&!c){var g=this.createLoadMessage("autosave");g.xml=d;d=JSON.stringify(g);(window.opener||window.parent).postMessage(d,"*")}e=d}),this.editor.graph.model.addListener(mxEvent.CHANGE,b),this.editor.graph.addListener("gridSizeChanged",b),this.editor.graph.addListener("shadowVisibleChanged",b),this.addListener("pageFormatChanged",b),this.addListener("pageScaleChanged",b),this.addListener("backgroundColorChanged",b),this.addListener("backgroundImageChanged", +b),this.addListener("foldingEnabledChanged",b),this.addListener("mathEnabledChanged",b),this.addListener("gridEnabledChanged",b),this.addListener("guidesEnabledChanged",b),this.addListener("pageViewChanged",b));"1"!=urlParams.returnbounds&&"json"!=urlParams.proto||k.postMessage(JSON.stringify(this.createLoadMessage("load")),"*")});null!=f&&"function"===typeof f.substring&&"data:application/vnd.visio;base64,"==f.substring(0,34)?(n="0M8R4KGxGuE"==f.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(f.substring(f.indexOf(",")+ +1)),function(a){J(a,g)},mxUtils.bind(this,function(a){this.handleError(a)}),n)):null!=f&&"function"===typeof f.substring&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(f,"")?this.parseFile(new Blob([f],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&200<=a.status&&299>=a.status&&"<mxGraphModel"==a.responseText.substring(0,13)&&J(a.responseText,g)}),""):null!=f&&"function"===typeof f.substring&&this.isLucidChartData(f)?this.convertLucidChart(f, +mxUtils.bind(this,function(a){J(a)}),mxUtils.bind(this,function(a){this.handleError(a)})):(f=n(f),J(f,g))}}));var k=window.opener||window.parent,f="json"==urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";k.postMessage(f,"*")};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar){var a=document.createElement("div");a.style.display="inline-block";a.style.position="absolute";a.style.paddingTop="atlas"==uiTheme?"2px":"3px";a.style.paddingLeft="8px";a.style.paddingBottom= "2px";var b=document.createElement("button");mxUtils.write(b,mxResources.get("save"));b.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)");b.className="geBigButton";b.style.fontSize="12px";b.style.padding="4px 6px 4px 6px";b.style.borderRadius="3px";mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()}));a.appendChild(b);"1"==urlParams.saveAndExit&&(b=document.createElement("a"),mxUtils.write(b,mxResources.get("saveAndExit")),b.setAttribute("title", mxResources.get("saveAndExit")),b.style.fontSize="12px",b.style.marginLeft="6px",b.style.padding="4px",b.style.cursor="pointer",mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b));b=document.createElement("a");mxUtils.write(b,mxResources.get("exit"));b.setAttribute("title",mxResources.get("exit"));b.style.fontSize="12px";b.style.marginLeft="6px";b.style.marginRight="20px";b.style.padding="4px";b.style.cursor="pointer";mxEvent.addListener(b, "click",mxUtils.bind(this,function(){this.actions.get("exit").funct()}));a.appendChild(b);this.toolbar.container.appendChild(a);this.toolbar.staticElements.push(a);a.style.right="atlas"!=uiTheme?"52px":"42px"}};EditorUi.prototype.showImportCsvDialog=function(){null==this.importCsvDialog&&(this.importCsvDialog=new TextareaDialog(this,mxResources.get("csv")+":",Editor.defaultCsvValue,mxUtils.bind(this,function(a){this.importCsv(a)}),null,null,620,430,null,!0,!0,mxResources.get("import")));this.showDialog(this.importCsvDialog.container, -640,520,!0,!0);this.importCsvDialog.init()};EditorUi.prototype.importCsv=function(a,b){try{var c=a.split("\n"),d=[];if(0<c.length){var f={},g=null,h=null,k=null,m=null,l="",p="auto",t="auto",C=null,B=null,H=40,D=40,E=100,I=0,A=this.editor.graph;A.getGraphBounds();for(var G=function(){null!=b?b(fa):(A.setSelectionCells(fa),A.scrollCellToVisible(A.getSelectionCell()))},J=A.getFreeInsertPoint(),M=J.x,L=J.y,J=L,T=null,R="auto",m=null,V=[],Y=null,Z=null,aa=0;aa<c.length&&"#"==c[aa].charAt(0);){a=c[aa]; -for(aa++;aa<c.length&&"\\"==a.charAt(a.length-1)&&"#"==c[aa].charAt(0);)a=a.substring(0,a.length-1)+mxUtils.trim(c[aa].substring(1)),aa++;if("#"!=a.charAt(1)){var O=a.indexOf(":");if(0<O){var Q=mxUtils.trim(a.substring(1,O)),N=mxUtils.trim(a.substring(O+1));"label"==Q?T=A.sanitizeHtml(N):"style"==Q?g=N:"parentstyle"==Q?h=N:"identity"==Q&&0<N.length&&"-"!=N?k=N:"parent"==Q&&0<N.length&&"-"!=N?m=N:"namespace"==Q&&0<N.length&&"-"!=N?l=N:"width"==Q?p=N:"height"==Q?t=N:"left"==Q&&0<N.length?C=N:"top"== -Q&&0<N.length?B=N:"ignore"==Q?Z=N.split(","):"connect"==Q?V.push(JSON.parse(N)):"link"==Q?Y=N:"padding"==Q?I=parseFloat(N):"edgespacing"==Q?H=parseFloat(N):"nodespacing"==Q?D=parseFloat(N):"levelspacing"==Q?E=parseFloat(N):"layout"==Q&&(R=N)}}}var X=this.editor.csvToArray(c[aa]),Q=O=null;if(null!=k||null!=m)for(var P=0;P<X.length;P++)k==X[P]&&(O=P),m==X[P]&&(Q=P);null==T&&(T="%"+X[0]+"%");if(null!=V)for(var U=0;U<V.length;U++)null==f[V[U].to]&&(f[V[U].to]={});A.model.beginUpdate();try{for(P=aa+1;P< -c.length;P++){var S=this.editor.csvToArray(c[P]);if(null==S){var ba=40<c[P].length?c[P].substring(0,40)+"...":c[P];throw Error(P+" ("+ba+") "+mxResources.get("containsValidationErrors"));}if(S.length==X.length){var K=null,ca=null!=O?l+S[O]:null;null!=ca&&(K=A.model.getCell(ca));null==K&&(K=new mxCell(T,new mxGeometry(M,J,0,0),g||"whiteSpace=wrap;html=1;"),K.vertex=!0,K.id=ca);for(var W=0;W<S.length;W++)A.setAttributeForCell(K,X[W],S[W]);A.setAttributeForCell(K,"placeholders","1");K.style=A.replacePlaceholders(K, -K.style);for(U=0;U<V.length;U++)f[V[U].to][K.getAttribute(V[U].to)]=K;null!=Y&&"link"!=Y&&(A.setLinkForCell(K,K.getAttribute(Y)),A.setAttributeForCell(K,Y,null));A.fireEvent(new mxEventObject("cellsInserted","cells",[K]));var ea=this.editor.graph.getPreferredSizeForCell(K);K.vertex&&(null!=C&&null!=K.getAttribute(C)&&(K.geometry.x=M+parseFloat(K.getAttribute(C))),null!=B&&null!=K.getAttribute(B)&&(K.geometry.y=L+parseFloat(K.getAttribute(B))),"@"==p.charAt(0)&&null!=K.getAttribute(p.substring(1))? -K.geometry.width=parseFloat(K.getAttribute(p.substring(1))):K.geometry.width="auto"==p?ea.width+I:parseFloat(p),"@"==t.charAt(0)&&null!=K.getAttribute(t.substring(1))?K.geometry.height=parseFloat(K.getAttribute(t.substring(1))):K.geometry.height="auto"==t?ea.height+I:parseFloat(t),J+=K.geometry.height+D);m=null!=Q?A.model.getCell(l+S[Q]):null;null!=m?(m.style=A.replacePlaceholders(m,h),A.addCell(K,m)):d.push(A.addCell(K))}}for(var ga=d.slice(),fa=d.slice(),U=0;U<V.length;U++)for(var da=V[U],P=0;P< -d.length;P++){var K=d[P],oa=K.getAttribute(da.from);if(null!=oa){A.setAttributeForCell(K,da.from,null);for(var na=oa.split(","),W=0;W<na.length;W++){var ha=f[da.to][na[W]];null!=ha&&(T=da.label,null!=da.fromlabel&&(T=(K.getAttribute(da.fromlabel)||"")+(T||"")),null!=da.tolabel&&(T=(T||"")+(ha.getAttribute(da.tolabel)||"")),fa.push(A.insertEdge(null,null,T||"",da.invert?ha:K,da.invert?K:ha,da.style||A.createCurrentEdgeStyle())),mxUtils.remove(da.invert?K:ha,ga))}}}if(null!=Z)for(P=0;P<d.length;P++)for(K= -d[P],W=0;W<Z.length;W++)A.setAttributeForCell(K,mxUtils.trim(Z[W]),null);var ka=new mxParallelEdgeLayout(A);ka.spacing=H;var pa=function(){ka.execute(A.getDefaultParent());for(var a=0;a<d.length;a++){var b=A.getCellGeometry(d[a]);b.x=Math.round(A.snap(b.x));b.y=Math.round(A.snap(b.y));"auto"==p&&(b.width=Math.round(A.snap(b.width)));"auto"==t&&(b.height=Math.round(A.snap(b.height)))}};if("circle"==R){var la=new mxCircleLayout(A);la.resetEdges=!1;var qa=la.isVertexIgnored;la.isVertexIgnored=function(a){return qa.apply(this, -arguments)||0>mxUtils.indexOf(d,a)};this.executeLayout(function(){la.execute(A.getDefaultParent());pa()},!0,G);G=null}else if("horizontaltree"==R||"verticaltree"==R||"auto"==R&&fa.length==2*d.length-1&&1==ga.length){A.view.validate();var ma=new mxCompactTreeLayout(A,"horizontaltree"==R);ma.levelDistance=D;ma.edgeRouting=!1;ma.resetEdges=!1;this.executeLayout(function(){ma.execute(A.getDefaultParent(),0<ga.length?ga[0]:null)},!0,G);G=null}else if("horizontalflow"==R||"verticalflow"==R||"auto"==R&& -1==ga.length){A.view.validate();var ia=new mxHierarchicalLayout(A,"horizontalflow"==R?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);ia.intraCellSpacing=D;ia.parallelEdgeSpacing=H;ia.interRankCellSpacing=E;ia.disableEdgeStyle=!1;this.executeLayout(function(){ia.execute(A.getDefaultParent(),fa);A.moveCells(fa,M,L)},!0,G);G=null}else if("organic"==R||"auto"==R&&fa.length>d.length){A.view.validate();var ja=new mxFastOrganicLayout(A);ja.forceConstant=3*D;ja.resetEdges=!1;var ra=ja.isVertexIgnored; -ja.isVertexIgnored=function(a){return ra.apply(this,arguments)||0>mxUtils.indexOf(d,a)};ka=new mxParallelEdgeLayout(A);ka.spacing=H;this.executeLayout(function(){ja.execute(A.getDefaultParent());pa()},!0,G);G=null}this.hideDialog()}finally{A.model.endUpdate()}null!=G&&G()}}catch(sa){this.handleError(sa)}};EditorUi.prototype.getSearch=function(a){var b="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=a&&0<window.location.search.length){var c="?",d;for(d in urlParams)0>mxUtils.indexOf(a,d)&& -null!=urlParams[d]&&(b+=c+d+"="+urlParams[d],c="&")}else b=window.location.search;return b};EditorUi.prototype.getUrl=function(a){a=null!=a?a:window.location.pathname;var b=0<a.indexOf("?")?1:0;if("1"==urlParams.offline)a+=window.location.search;else{var c="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),d;for(d in urlParams)0>mxUtils.indexOf(c,d)&&(a=0==b?a+"?":a+"&",null!=urlParams[d]&&(a+=d+"="+urlParams[d],b++))}return a};EditorUi.prototype.showLinkDialog= -function(a,b,c){a=new LinkDialog(this,a,b,c,!0);this.showDialog(a.container,480,130,!0,!0);a.init()};var l=EditorUi.prototype.createOutline;EditorUi.prototype.createOutline=function(a){var b=l.apply(this,arguments),c=this.editor.graph,d=b.getSourceGraphBounds;b.getSourceGraphBounds=function(){if(mxUtils.hasScrollbars(c.container)&&c.pageVisible&&null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width- -2*a.x/b),Math.ceil(this.source.minimumGraphSize.height-2*a.y/b))}return d.apply(this,arguments)};var f=b.getSourceContainerSize;b.getSourceContainerSize=function(){if(mxUtils.hasScrollbars(c.container)&&null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width*b-2*a.x),Math.ceil(this.source.minimumGraphSize.height*b-2*a.y))}return f.apply(this,arguments)};b.getOutlineOffset=function(a){if(mxUtils.hasScrollbars(c.container)&& -null!=this.source.minimumGraphSize){var d=this.source.getPagePadding();return new mxPoint(Math.round(Math.max(0,(b.outline.container.clientWidth/a-(this.source.minimumGraphSize.width-2*d.x))/2)-d.x),Math.round(Math.max(0,(b.outline.container.clientHeight/a-(this.source.minimumGraphSize.height-2*d.y))/2)-d.y-5/a))}return new mxPoint(8/a,8/a)};var h=b.init;b.init=function(){h.apply(this,arguments);b.outline.view.getBackgroundPageBounds=function(){var a=c.getPageLayout(),b=c.getPageSize();return new mxRectangle(this.scale* -(this.translate.x+a.x*b.width),this.scale*(this.translate.y+a.y*b.height),this.scale*a.width*b.width,this.scale*a.height*b.height)};b.outline.view.validateBackgroundPage()};this.editor.addListener("pageSelected",function(a,c){var d=c.getProperty("change"),f=b.source,g=b.outline;g.pageScale=f.pageScale;g.pageFormat=f.pageFormat;g.background=f.background;g.pageVisible=f.pageVisible;g.background=f.background;var h=mxUtils.getCurrentStyle(f.container);g.container.style.backgroundColor=h.backgroundColor; -null!=f.view.backgroundPageShape&&null!=g.view.backgroundPageShape&&(g.view.backgroundPageShape.fill=f.view.backgroundPageShape.fill);b.outline.view.clear(d.previousPage.root,!0);b.outline.view.validate()});return b};EditorUi.prototype.getServiceCount=function(a,b){var c=0;null==this.drive&&"function"!==typeof window.DriveClient||c++;b||null==this.dropbox&&"function"!==typeof window.DropboxClient||c++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||c++;b||null==this.gitHub||c++;b|| -null==this.trello&&"function"!==typeof window.TrelloClient||c++;c++;return c};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var a=this.getCurrentFile(),b=null!=a||"1"==urlParams.embed&&this.editor.graph.isEnabled();this.menus.get("viewPanels").setEnabled(b);this.menus.get("viewZoom").setEnabled(b);var c=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==a||a.isRestricted());this.actions.get("makeCopy").setEnabled(!c);this.actions.get("print").setEnabled(!c); -this.menus.get("exportAs").setEnabled(!c);this.menus.get("embed").setEnabled(!c);c="1"!=urlParams.embed||this.editor.graph.isEnabled();this.menus.get("extras").setEnabled(c);Editor.enableCustomLibraries&&(this.menus.get("openLibraryFrom").setEnabled(c),this.menus.get("newLibrary").setEnabled(c));a="1"==urlParams.embed&&this.editor.graph.isEnabled()||null!=a&&a.isEditable();this.actions.get("image").setEnabled(b);this.actions.get("zoomIn").setEnabled(b);this.actions.get("zoomOut").setEnabled(b);this.actions.get("resetView").setEnabled(b); -this.actions.get("undo").setEnabled(this.canUndo()&&a);this.actions.get("redo").setEnabled(this.canRedo()&&a);this.menus.get("edit").setEnabled(b);this.menus.get("view").setEnabled(b);this.menus.get("importFrom").setEnabled(a);this.menus.get("arrange").setEnabled(a);null!=this.toolbar&&(null!=this.toolbar.edgeShapeMenu&&this.toolbar.edgeShapeMenu.setEnabled(a),null!=this.toolbar.edgeStyleMenu&&this.toolbar.edgeStyleMenu.setEnabled(a));if(this.isAppCache()){var f=applicationCache;if(null!=f&&null== +640,520,!0,!0);this.importCsvDialog.init()};EditorUi.prototype.importCsv=function(a,b){try{var c=a.split("\n"),d=[];if(0<c.length){var e={},g=null,f=null,n=null,k=null,l="",q="auto",p="auto",u=null,G=null,H=40,D=40,K=100,I=0,C=this.editor.graph;C.getGraphBounds();for(var J=function(){null!=b?b(ga):(C.setSelectionCells(ga),C.scrollCellToVisible(C.getSelectionCell()))},M=C.getFreeInsertPoint(),O=M.x,T=M.y,M=T,U=null,V="auto",k=null,W=[],aa=null,ea=null,N=0;N<c.length&&"#"==c[N].charAt(0);){a=c[N];for(N++;N< +c.length&&"\\"==a.charAt(a.length-1)&&"#"==c[N].charAt(0);)a=a.substring(0,a.length-1)+mxUtils.trim(c[N].substring(1)),N++;if("#"!=a.charAt(1)){var ba=a.indexOf(":");if(0<ba){var P=mxUtils.trim(a.substring(1,ba)),Q=mxUtils.trim(a.substring(ba+1));"label"==P?U=C.sanitizeHtml(Q):"style"==P?g=Q:"parentstyle"==P?f=Q:"identity"==P&&0<Q.length&&"-"!=Q?n=Q:"parent"==P&&0<Q.length&&"-"!=Q?k=Q:"namespace"==P&&0<Q.length&&"-"!=Q?l=Q:"width"==P?q=Q:"height"==P?p=Q:"left"==P&&0<Q.length?u=Q:"top"==P&&0<Q.length? +G=Q:"ignore"==P?ea=Q.split(","):"connect"==P?W.push(JSON.parse(Q)):"link"==P?aa=Q:"padding"==P?I=parseFloat(Q):"edgespacing"==P?H=parseFloat(Q):"nodespacing"==P?D=parseFloat(Q):"levelspacing"==P?K=parseFloat(Q):"layout"==P&&(V=Q)}}}var X=this.editor.csvToArray(c[N]),P=ba=null;if(null!=n||null!=k)for(var R=0;R<X.length;R++)n==X[R]&&(ba=R),k==X[R]&&(P=R);null==U&&(U="%"+X[0]+"%");if(null!=W)for(var S=0;S<W.length;S++)null==e[W[S].to]&&(e[W[S].to]={});C.model.beginUpdate();try{for(R=N+1;R<c.length;R++){var Z= +this.editor.csvToArray(c[R]);if(null==Z){var ca=40<c[R].length?c[R].substring(0,40)+"...":c[R];throw Error(R+" ("+ca+") "+mxResources.get("containsValidationErrors"));}if(Z.length==X.length){var L=null,fa=null!=ba?l+Z[ba]:null;null!=fa&&(L=C.model.getCell(fa));null==L&&(L=new mxCell(U,new mxGeometry(O,M,0,0),g||"whiteSpace=wrap;html=1;"),L.vertex=!0,L.id=fa);for(var Y=0;Y<Z.length;Y++)C.setAttributeForCell(L,X[Y],Z[Y]);C.setAttributeForCell(L,"placeholders","1");L.style=C.replacePlaceholders(L,L.style); +for(S=0;S<W.length;S++)e[W[S].to][L.getAttribute(W[S].to)]=L;null!=aa&&"link"!=aa&&(C.setLinkForCell(L,L.getAttribute(aa)),C.setAttributeForCell(L,aa,null));C.fireEvent(new mxEventObject("cellsInserted","cells",[L]));var oa=this.editor.graph.getPreferredSizeForCell(L);L.vertex&&(null!=u&&null!=L.getAttribute(u)&&(L.geometry.x=O+parseFloat(L.getAttribute(u))),null!=G&&null!=L.getAttribute(G)&&(L.geometry.y=T+parseFloat(L.getAttribute(G))),"@"==q.charAt(0)&&null!=L.getAttribute(q.substring(1))?L.geometry.width= +parseFloat(L.getAttribute(q.substring(1))):L.geometry.width="auto"==q?oa.width+I:parseFloat(q),"@"==p.charAt(0)&&null!=L.getAttribute(p.substring(1))?L.geometry.height=parseFloat(L.getAttribute(p.substring(1))):L.geometry.height="auto"==p?oa.height+I:parseFloat(p),M+=L.geometry.height+D);k=null!=P?C.model.getCell(l+Z[P]):null;null!=k?(k.style=C.replacePlaceholders(k,f),C.addCell(L,k)):d.push(C.addCell(L))}}for(var ha=d.slice(),ga=d.slice(),S=0;S<W.length;S++)for(var da=W[S],R=0;R<d.length;R++){var L= +d[R],qa=L.getAttribute(da.from);if(null!=qa){C.setAttributeForCell(L,da.from,null);for(var pa=qa.split(","),Y=0;Y<pa.length;Y++){var ia=e[da.to][pa[Y]];null!=ia&&(U=da.label,null!=da.fromlabel&&(U=(L.getAttribute(da.fromlabel)||"")+(U||"")),null!=da.tolabel&&(U=(U||"")+(ia.getAttribute(da.tolabel)||"")),ga.push(C.insertEdge(null,null,U||"",da.invert?ia:L,da.invert?L:ia,da.style||C.createCurrentEdgeStyle())),mxUtils.remove(da.invert?L:ia,ha))}}}if(null!=ea)for(R=0;R<d.length;R++)for(L=d[R],Y=0;Y<ea.length;Y++)C.setAttributeForCell(L, +mxUtils.trim(ea[Y]),null);var la=new mxParallelEdgeLayout(C);la.spacing=H;var ra=function(){la.execute(C.getDefaultParent());for(var a=0;a<d.length;a++){var b=C.getCellGeometry(d[a]);b.x=Math.round(C.snap(b.x));b.y=Math.round(C.snap(b.y));"auto"==q&&(b.width=Math.round(C.snap(b.width)));"auto"==p&&(b.height=Math.round(C.snap(b.height)))}};if("circle"==V){var ma=new mxCircleLayout(C);ma.resetEdges=!1;var sa=ma.isVertexIgnored;ma.isVertexIgnored=function(a){return sa.apply(this,arguments)||0>mxUtils.indexOf(d, +a)};this.executeLayout(function(){ma.execute(C.getDefaultParent());ra()},!0,J);J=null}else if("horizontaltree"==V||"verticaltree"==V||"auto"==V&&ga.length==2*d.length-1&&1==ha.length){C.view.validate();var na=new mxCompactTreeLayout(C,"horizontaltree"==V);na.levelDistance=D;na.edgeRouting=!1;na.resetEdges=!1;this.executeLayout(function(){na.execute(C.getDefaultParent(),0<ha.length?ha[0]:null)},!0,J);J=null}else if("horizontalflow"==V||"verticalflow"==V||"auto"==V&&1==ha.length){C.view.validate(); +var ja=new mxHierarchicalLayout(C,"horizontalflow"==V?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);ja.intraCellSpacing=D;ja.parallelEdgeSpacing=H;ja.interRankCellSpacing=K;ja.disableEdgeStyle=!1;this.executeLayout(function(){ja.execute(C.getDefaultParent(),ga);C.moveCells(ga,O,T)},!0,J);J=null}else if("organic"==V||"auto"==V&&ga.length>d.length){C.view.validate();var ka=new mxFastOrganicLayout(C);ka.forceConstant=3*D;ka.resetEdges=!1;var ua=ka.isVertexIgnored;ka.isVertexIgnored=function(a){return ua.apply(this, +arguments)||0>mxUtils.indexOf(d,a)};la=new mxParallelEdgeLayout(C);la.spacing=H;this.executeLayout(function(){ka.execute(C.getDefaultParent());ra()},!0,J);J=null}this.hideDialog()}finally{C.model.endUpdate()}null!=J&&J()}}catch(ta){this.handleError(ta)}};EditorUi.prototype.getSearch=function(a){var b="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=a&&0<window.location.search.length){var c="?",d;for(d in urlParams)0>mxUtils.indexOf(a,d)&&null!=urlParams[d]&&(b+=c+d+"="+urlParams[d],c="&")}else b= +window.location.search;return b};EditorUi.prototype.getUrl=function(a){a=null!=a?a:window.location.pathname;var b=0<a.indexOf("?")?1:0;if("1"==urlParams.offline)a+=window.location.search;else{var c="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),d;for(d in urlParams)0>mxUtils.indexOf(c,d)&&(a=0==b?a+"?":a+"&",null!=urlParams[d]&&(a+=d+"="+urlParams[d],b++))}return a};EditorUi.prototype.showLinkDialog=function(a,b,c){a=new LinkDialog(this,a,b,c, +!0);this.showDialog(a.container,480,130,!0,!0);a.init()};var q=EditorUi.prototype.createOutline;EditorUi.prototype.createOutline=function(a){var b=q.apply(this,arguments),c=this.editor.graph,d=b.getSourceGraphBounds;b.getSourceGraphBounds=function(){if(mxUtils.hasScrollbars(c.container)&&c.pageVisible&&null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width-2*a.x/b),Math.ceil(this.source.minimumGraphSize.height- +2*a.y/b))}return d.apply(this,arguments)};var e=b.getSourceContainerSize;b.getSourceContainerSize=function(){if(mxUtils.hasScrollbars(c.container)&&null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width*b-2*a.x),Math.ceil(this.source.minimumGraphSize.height*b-2*a.y))}return e.apply(this,arguments)};b.getOutlineOffset=function(a){if(mxUtils.hasScrollbars(c.container)&&null!=this.source.minimumGraphSize){var d= +this.source.getPagePadding();return new mxPoint(Math.round(Math.max(0,(b.outline.container.clientWidth/a-(this.source.minimumGraphSize.width-2*d.x))/2)-d.x),Math.round(Math.max(0,(b.outline.container.clientHeight/a-(this.source.minimumGraphSize.height-2*d.y))/2)-d.y-5/a))}return new mxPoint(8/a,8/a)};var f=b.init;b.init=function(){f.apply(this,arguments);b.outline.view.getBackgroundPageBounds=function(){var a=c.getPageLayout(),b=c.getPageSize();return new mxRectangle(this.scale*(this.translate.x+ +a.x*b.width),this.scale*(this.translate.y+a.y*b.height),this.scale*a.width*b.width,this.scale*a.height*b.height)};b.outline.view.validateBackgroundPage()};this.editor.addListener("pageSelected",function(a,c){var d=c.getProperty("change"),e=b.source,f=b.outline;f.pageScale=e.pageScale;f.pageFormat=e.pageFormat;f.background=e.background;f.pageVisible=e.pageVisible;f.background=e.background;var g=mxUtils.getCurrentStyle(e.container);f.container.style.backgroundColor=g.backgroundColor;null!=e.view.backgroundPageShape&& +null!=f.view.backgroundPageShape&&(f.view.backgroundPageShape.fill=e.view.backgroundPageShape.fill);b.outline.view.clear(d.previousPage.root,!0);b.outline.view.validate()});return b};EditorUi.prototype.getServiceCount=function(a,b){var c=0;null==this.drive&&"function"!==typeof window.DriveClient||c++;b||null==this.dropbox&&"function"!==typeof window.DropboxClient||c++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||c++;b||null==this.gitHub||c++;b||null==this.trello&&"function"!==typeof window.TrelloClient|| +c++;c++;return c};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var a=this.getCurrentFile(),b=null!=a||"1"==urlParams.embed&&this.editor.graph.isEnabled();this.menus.get("viewPanels").setEnabled(b);this.menus.get("viewZoom").setEnabled(b);var c=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==a||a.isRestricted());this.actions.get("makeCopy").setEnabled(!c);this.actions.get("print").setEnabled(!c);this.menus.get("exportAs").setEnabled(!c); +this.menus.get("embed").setEnabled(!c);c="1"!=urlParams.embed||this.editor.graph.isEnabled();this.menus.get("extras").setEnabled(c);Editor.enableCustomLibraries&&(this.menus.get("openLibraryFrom").setEnabled(c),this.menus.get("newLibrary").setEnabled(c));a="1"==urlParams.embed&&this.editor.graph.isEnabled()||null!=a&&a.isEditable();this.actions.get("image").setEnabled(b);this.actions.get("zoomIn").setEnabled(b);this.actions.get("zoomOut").setEnabled(b);this.actions.get("resetView").setEnabled(b); +this.actions.get("undo").setEnabled(this.canUndo()&&a);this.actions.get("redo").setEnabled(this.canRedo()&&a);this.menus.get("edit").setEnabled(b);this.menus.get("view").setEnabled(b);this.menus.get("importFrom").setEnabled(a);this.menus.get("arrange").setEnabled(a);null!=this.toolbar&&(null!=this.toolbar.edgeShapeMenu&&this.toolbar.edgeShapeMenu.setEnabled(a),null!=this.toolbar.edgeStyleMenu&&this.toolbar.edgeStyleMenu.setEnabled(a));if(this.isAppCache()){var e=applicationCache;if(null!=e&&null== this.offlineStatus){this.offlineStatus=document.createElement("div");this.offlineStatus.className="geItem";this.offlineStatus.style.position="absolute";this.offlineStatus.style.fontSize="8pt";this.offlineStatus.style.top="2px";this.offlineStatus.style.right="12px";this.offlineStatus.style.color="#666";this.offlineStatus.style.margin="4px";this.offlineStatus.style.padding="2px";this.offlineStatus.style.verticalAlign="middle";this.offlineStatus.innerHTML="";this.menubarContainer.appendChild(this.offlineStatus); -mxEvent.addListener(this.offlineStatus,"click",mxUtils.bind(this,function(){var a=this.offlineStatus.getElementsByTagName("img");null!=a&&0<a.length&&this.alert(a[0].getAttribute("title"))}));var f=window.applicationCache,h=null,b=mxUtils.bind(this,function(){var a=f.status,b;a==f.CHECKING&&(a=f.DOWNLOADING);switch(a){case f.UNCACHED:b="";break;case f.IDLE:b="min"==uiTheme?"":'<img title="draw.io is up to date." border="0" src="'+IMAGE_PATH+'/checkmark.gif"/>';break;case f.DOWNLOADING:b='<img title="Downloading new version..." border="0" src="'+ -IMAGE_PATH+'/spin.gif"/>';break;case f.UPDATEREADY:b='<img title="'+mxUtils.htmlEntities(mxResources.get("restartForChangeRequired"))+'" border="0" src="'+IMAGE_PATH+'/download.png"/>';break;case f.OBSOLETE:b='<img title="Obsolete" border="0" src="'+IMAGE_PATH+'/clear.gif"/>';break;default:b='<img title="Unknown" border="0" src="'+IMAGE_PATH+'/clear.gif"/>'}a!=h&&(this.offlineStatus.innerHTML=b,h=a)});mxEvent.addListener(f,"checking",b);mxEvent.addListener(f,"noupdate",b);mxEvent.addListener(f,"downloading", -b);mxEvent.addListener(f,"progress",b);mxEvent.addListener(f,"cached",b);mxEvent.addListener(f,"updateready",b);mxEvent.addListener(f,"obsolete",b);mxEvent.addListener(f,"error",b);b()}}else this.updateUserElement()};EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=function(){};EditorUi.prototype.isDiagramActive=function(){var a=this.getCurrentFile();return null!=a&&a.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};var t=EditorUi.prototype.updateActionStates; -EditorUi.prototype.updateActionStates=function(){t.apply(this,arguments);var a=this.editor.graph,b=this.isDiagramActive(),c=this.getCurrentFile();this.actions.get("pageSetup").setEnabled(b);this.actions.get("autosave").setEnabled(null!=c&&c.isEditable()&&c.isAutosaveOptional());this.actions.get("guides").setEnabled(b);this.actions.get("editData").setEnabled(b);this.actions.get("shadowVisible").setEnabled(b);this.actions.get("connectionArrows").setEnabled(b);this.actions.get("connectionPoints").setEnabled(b); +mxEvent.addListener(this.offlineStatus,"click",mxUtils.bind(this,function(){var a=this.offlineStatus.getElementsByTagName("img");null!=a&&0<a.length&&this.alert(a[0].getAttribute("title"))}));var e=window.applicationCache,f=null,b=mxUtils.bind(this,function(){var a=e.status,b;a==e.CHECKING&&(a=e.DOWNLOADING);switch(a){case e.UNCACHED:b="";break;case e.IDLE:b="min"==uiTheme?"":'<img title="draw.io is up to date." border="0" src="'+IMAGE_PATH+'/checkmark.gif"/>';break;case e.DOWNLOADING:b='<img title="Downloading new version..." border="0" src="'+ +IMAGE_PATH+'/spin.gif"/>';break;case e.UPDATEREADY:b='<img title="'+mxUtils.htmlEntities(mxResources.get("restartForChangeRequired"))+'" border="0" src="'+IMAGE_PATH+'/download.png"/>';break;case e.OBSOLETE:b='<img title="Obsolete" border="0" src="'+IMAGE_PATH+'/clear.gif"/>';break;default:b='<img title="Unknown" border="0" src="'+IMAGE_PATH+'/clear.gif"/>'}a!=f&&(this.offlineStatus.innerHTML=b,f=a)});mxEvent.addListener(e,"checking",b);mxEvent.addListener(e,"noupdate",b);mxEvent.addListener(e,"downloading", +b);mxEvent.addListener(e,"progress",b);mxEvent.addListener(e,"cached",b);mxEvent.addListener(e,"updateready",b);mxEvent.addListener(e,"obsolete",b);mxEvent.addListener(e,"error",b);b()}}else this.updateUserElement()};EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=function(){};EditorUi.prototype.isDiagramActive=function(){var a=this.getCurrentFile();return null!=a&&a.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};var p=EditorUi.prototype.updateActionStates; +EditorUi.prototype.updateActionStates=function(){p.apply(this,arguments);var a=this.editor.graph,b=this.isDiagramActive(),c=this.getCurrentFile();this.actions.get("pageSetup").setEnabled(b);this.actions.get("autosave").setEnabled(null!=c&&c.isEditable()&&c.isAutosaveOptional());this.actions.get("guides").setEnabled(b);this.actions.get("editData").setEnabled(b);this.actions.get("shadowVisible").setEnabled(b);this.actions.get("connectionArrows").setEnabled(b);this.actions.get("connectionPoints").setEnabled(b); this.actions.get("copyStyle").setEnabled(b&&!a.isSelectionEmpty());this.actions.get("pasteStyle").setEnabled(b&&!a.isSelectionEmpty());this.actions.get("editGeometry").setEnabled(a.getModel().isVertex(a.getSelectionCell()));this.actions.get("createShape").setEnabled(b);this.actions.get("createRevision").setEnabled(b);this.actions.get("moveToFolder").setEnabled(null!=c);this.actions.get("makeCopy").setEnabled(null!=c&&!c.isRestricted());this.actions.get("editDiagram").setEnabled(b&&(null==c||!c.isRestricted())); this.actions.get("publishLink").setEnabled(null!=c&&!c.isRestricted());this.actions.get("tags").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("find").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("layers").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("outline").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("rename").setEnabled(null!=c&&c.isRenamable()||"1"==urlParams.embed); -this.actions.get("close").setEnabled(null!=c);this.menus.get("publish").setEnabled(null!=c&&!c.isRestricted());a=a.view.getState(a.getSelectionCell());this.actions.get("editShape").setEnabled(b&&null!=a&&null!=a.shape&&null!=a.shape.stencil)};var p=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){this.editUpdateListener&&(this.editor.undoManager.removeListener(this.editUpdateListener),this.editUpdateListener=null);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog), -this.exportDialog=null);p.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(a,b,c,f,h,k){var d=a.editor.graph;if("xml"==c)a.hideDialog(),a.saveData(b,"xml",mxUtils.getXml(a.editor.getGraphXml()),"text/xml");else if("svg"==c)a.hideDialog(),a.saveData(b,"svg",mxUtils.getXml(d.getSvg(f,h,k)),"image/svg+xml");else{var g=a.getFileData(!0,null,null,null,null,!0),m=d.getGraphBounds(),l=Math.floor(m.width*h/d.view.scale), -n=Math.floor(m.height*h/d.view.scale);g.length<=MAX_REQUEST_SIZE&&l*n<MAX_AREA?(a.hideDialog(),a.saveRequest(b,c,function(a,b){return new mxXmlRequest(EXPORT_URL,"format="+c+"&base64="+(b||"0")+(null!=a?"&filename="+encodeURIComponent(a):"")+"&bg="+(null!=f?f:"none")+"&w="+l+"&h="+n+"&border="+k+"&xml="+encodeURIComponent(g))})):mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.updateEditReferences=function(a){for(var b=0;b<a.changes.length;b++){var c=a.changes[b];if(null!=c&& -c.constructor==mxChildChange&&null!=c.child){var d=c.child;if(null!=d.source&&null!=d.source.id){var f=this.getFutureCellForEdit(c.model,a,d.source.id);f!=d.source&&(d.source=f)}null!=d.target&&null!=d.target.id&&(c=this.getFutureCellForEdit(c.model,a,d.target.id),c!=d.target&&(d.target=c))}}};EditorUi.prototype.getFutureCellForEdit=function(a,b,c){var d=a.getCell(c);if(null==d)for(var f=b.changes.length-1;0<=f;f--){var g=b.changes[f];if(g.constructor==mxChildChange&&null!=g.child&&g.child.id==c){a.contains(g.previous)&& -(d=g.child);break}}return d}})();EditorUi.DIFF_INSERT="i";EditorUi.DIFF_REMOVE="r";EditorUi.DIFF_UPDATE="u";EditorUi.prototype.codec=new mxCodec;EditorUi.prototype.viewStateProperties={background:!0,backgroundImage:!0,shadowVisible:!0,foldingEnabled:!0,pageScale:!0,mathEnabled:!0,pageFormat:!0};EditorUi.prototype.cellProperties={id:!0,value:!0,xmlValue:!0,vertex:!0,edge:!0,visible:!0,collapsed:!0,connectable:!0,parent:!0,children:!0,previous:!0,source:!0,target:!0,edges:!0,geometry:!0,style:!0,mxObjectId:!0,mxTransient:!0}; -EditorUi.prototype.patchPages=function(a,c,b,f,k){var h={},l=[],t={},p={},d={},g={};if(null!=f&&null!=f[EditorUi.DIFF_UPDATE])for(var n in f[EditorUi.DIFF_UPDATE])h[n]=f[EditorUi.DIFF_UPDATE][n];if(null!=c[EditorUi.DIFF_REMOVE])for(f=0;f<c[EditorUi.DIFF_REMOVE].length;f++)p[c[EditorUi.DIFF_REMOVE][f]]=!0;if(null!=c[EditorUi.DIFF_INSERT])for(f=0;f<c[EditorUi.DIFF_INSERT].length;f++)t[c[EditorUi.DIFF_INSERT][f].previous]=c[EditorUi.DIFF_INSERT][f];if(null!=c[EditorUi.DIFF_UPDATE])for(n in c[EditorUi.DIFF_UPDATE])f= -c[EditorUi.DIFF_UPDATE][n],null!=f.previous&&(g[f.previous]=n);if(null!=a){var q="";for(f=0;f<a.length;f++){var u=a[f].getId();d[u]=a[f];null!=g[q]||p[u]||null!=c[EditorUi.DIFF_UPDATE]&&null!=c[EditorUi.DIFF_UPDATE][u]&&null!=c[EditorUi.DIFF_UPDATE][u].previous||(g[q]=u);q=u}}var v={},w=mxUtils.bind(this,function(a){var f=null!=a?a.getId():"";if(null!=a&&!v[f]){v[f]=!0;l.push(a);var m=null!=c[EditorUi.DIFF_UPDATE]?c[EditorUi.DIFF_UPDATE][f]:null;null!=m&&(this.updatePageRoot(a),null!=m.name&&a.setName(m.name), -null!=m.view&&this.patchViewState(a,m.view),null!=m.cells&&this.patchPage(a,m.cells,h[a.getId()],k),!b||null==m.cells&&null==m.view||(a.needsUpdate=!0))}a=g[f];null!=a&&(delete g[f],w(d[a]));a=t[f];null!=a&&(delete t[f],y(a))}),y=mxUtils.bind(this,function(a){a=mxUtils.parseXml(a.data).documentElement;a=new DiagramPage(a);this.updatePageRoot(a);var c=d[a.getId()];null==c?w(a):(c.root=a.root,this.currentPage==c?this.editor.graph.model.setRoot(c.root):b&&(c.needsUpdate=!0))});w();for(n in g)w(d[g[n]]), -delete g[n];for(n in t)y(t[n]),delete t[n];return l};EditorUi.prototype.patchViewState=function(a,c){if(null!=a.viewState&&null!=c){a==this.currentPage&&(a.viewState=this.editor.graph.getViewState());for(var b in c)a.viewState[b]=JSON.parse(c[b]);a==this.currentPage&&this.editor.graph.setViewState(a.viewState)}}; -EditorUi.prototype.createParentLookup=function(a,c){function b(a){var b=f[a];null==b&&(b={inserted:[],moved:{}},f[a]=b);return b}var f={};if(null!=c[EditorUi.DIFF_INSERT])for(var k=0;k<c[EditorUi.DIFF_INSERT].length;k++){var h=c[EditorUi.DIFF_INSERT][k],l=null!=h.parent?h.parent:"",t=null!=h.previous?h.previous:"";b(l).inserted[t]=h}if(null!=c[EditorUi.DIFF_UPDATE])for(var p in c[EditorUi.DIFF_UPDATE])h=c[EditorUi.DIFF_UPDATE][p],null!=h.previous&&(l=h.parent,null==l&&(k=a.getCell(p),null!=k&&(k= -a.getParent(k),null!=k&&(l=k.getId()))),null!=l&&(b(l).moved[h.previous]=p));return f}; -EditorUi.prototype.patchPage=function(a,c,b,f){var k=a==this.currentPage?this.editor.graph.model:new mxGraphModel(a.root),h=this.createParentLookup(k,c);k.beginUpdate();try{var l=k.updateEdgeParent,t=new mxDictionary,p=[];k.updateEdgeParent=function(a,b){!t.get(a)&&f&&(t.put(a,!0),p.push(a))};var d=h[""],g=null!=d&&null!=d.inserted?d.inserted[""]:null,n=null;null!=g&&(n=this.getCellForJson(g));if(null==n){var q=null!=d&&null!=d.moved?d.moved[""]:null;null!=q&&(n=k.getCell(q))}null!=n&&(k.setRoot(n), -a.root=n);this.patchCellRecursive(a,k,k.root,h,c);if(null!=c[EditorUi.DIFF_REMOVE])for(var u=0;u<c[EditorUi.DIFF_REMOVE].length;u++){var v=k.getCell(c[EditorUi.DIFF_REMOVE][u]);null!=v&&k.remove(v)}if(null!=c[EditorUi.DIFF_UPDATE]){var w=null!=b&&null!=b.cells?b.cells[EditorUi.DIFF_UPDATE]:null;for(q in c[EditorUi.DIFF_UPDATE])this.patchCell(k,k.getCell(q),c[EditorUi.DIFF_UPDATE][q],null!=w?w[q]:null)}if(null!=c[EditorUi.DIFF_INSERT])for(u=0;u<c[EditorUi.DIFF_INSERT].length;u++)g=c[EditorUi.DIFF_INSERT][u], -v=k.getCell(g.id),null!=v&&(k.setTerminal(v,k.getCell(g.source),!0),k.setTerminal(v,k.getCell(g.target),!1));k.updateEdgeParent=l;if(f&&0<p.length)for(u=0;u<p.length;u++)k.contains(p[u])&&k.updateEdgeParent(p[u])}finally{k.endUpdate()}}; -EditorUi.prototype.patchCellRecursive=function(a,c,b,f,k){if(null!=b){for(var h=f[b.getId()],l=null!=h&&null!=h.inserted?h.inserted:{},t=null!=h&&null!=h.moved?h.moved:{},p=0,h=c.getChildCount(b),d="",g=0;g<h;g++){var n=c.getChildAt(b,g).getId();null==t[d]&&(null==k[EditorUi.DIFF_UPDATE]||null==k[EditorUi.DIFF_UPDATE][n]||null==k[EditorUi.DIFF_UPDATE][n].previous&&null==k[EditorUi.DIFF_UPDATE][n].parent)&&(t[d]=n);d=n}var q=mxUtils.bind(this,function(d){var g=null!=d?d.getId():"";null!=d&&(c.getChildAt(b, -p)!=d&&c.add(b,d,p),this.patchCellRecursive(a,c,d,f,k),p++);d=t[g];null!=d&&(delete t[g],q(c.getCell(d)));d=l[g];null!=d&&(delete l[g],q(this.getCellForJson(d)))});q();for(var u in t)q(c.getCell(t[u])),delete t[u];for(u in l)q(this.getCellForJson(l[u])),delete l[u]}}; -EditorUi.prototype.patchCell=function(a,c,b,f){if(null!=c&&null!=b){if(null==f||null==f.xmlValue&&(null==f.value||""==f.value))"value"in b?a.setValue(c,b.value):null!=b.xmlValue&&a.setValue(c,mxUtils.parseXml(b.xmlValue).documentElement);null!=f&&null!=f.style||null==b.style||a.setStyle(c,b.style);null!=b.visible&&a.setVisible(c,1==b.visible);null!=b.collapsed&&a.setCollapsed(c,1==b.collapsed);null!=b.vertex&&(c.vertex=1==b.vertex);null!=b.edge&&(c.edge=1==b.edge);null!=b.connectable&&(c.connectable= -1==b.connectable);null!=b.geometry&&a.setGeometry(c,this.codec.decode(mxUtils.parseXml(b.geometry).documentElement));null!=b.source&&a.setTerminal(c,a.getCell(b.source),!0);null!=b.target&&a.setTerminal(c,a.getCell(b.target),!1);for(var k in b)this.cellProperties[k]||(c[k]=b[k])}}; -EditorUi.prototype.getPagesForNode=function(a,c){var b=this.editor.extractGraphModel(a,!0);null!=b&&(a=b);var f=a.getElementsByTagName(c||"diagram"),b=[];if(0<f.length)for(var k=0;k<f.length;k++){var h=new DiagramPage(f[k]);this.updatePageRoot(h);b.push(h)}else"mxGraphModel"==a.nodeName&&(f=this.editor.graph,h=new DiagramPage(a.ownerDocument.createElement("diagram")),h.setName(mxResources.get("pageWithNumber",[1])),mxUtils.setTextContent(h.node,f.compress(f.zapGremlins(mxUtils.getXml(a)))),b.push(h)); -return b}; -EditorUi.prototype.diffPages=function(a,c){for(var b=[],f=[],k={},h={},l={},t=null,p=0;p<c.length;p++)h[c[p].getId()]={page:c[p],prev:t},t=c[p];t=null;for(p=0;p<a.length;p++){var d=a[p].getId(),g=h[d];if(null==g)f.push(d);else{var n=this.diffPage(a[p],g.page),q={};0<Object.keys(n).length&&(q.cells=n);n=this.diffViewState(a[p],g.page);0<Object.keys(n).length&&(q.view=n);if((null!=g.prev?null==t:null!=t)||null!=t&&null!=g.prev&&t.getId()!=g.prev.getId())q.previous=null!=g.prev?g.prev.getId():"";null!= -g.page.getName()&&a[p].getName()!=g.page.getName()&&(q.name=g.page.getName());0<Object.keys(q).length&&(l[d]=q)}delete h[a[p].getId()];t=a[p]}for(d in h)g=h[d],b.push({data:mxUtils.getXml(g.page.node),previous:null!=g.prev?g.prev.getId():""});0<Object.keys(l).length&&(k[EditorUi.DIFF_UPDATE]=l);0<f.length&&(k[EditorUi.DIFF_REMOVE]=f);0<b.length&&(k[EditorUi.DIFF_INSERT]=b);return k}; -EditorUi.prototype.createCellLookup=function(a,c,b){b=null!=b?b:{};b[a.getId()]={cell:a,prev:c};var f=a.getChildCount();c=null;for(var k=0;k<f;k++){var h=a.getChildAt(k);this.createCellLookup(h,c,b);c=h}return b}; -EditorUi.prototype.diffCellRecursive=function(a,c,b,f,k){f=null!=f?f:{};var h=b[a.getId()];delete b[a.getId()];if(null==h)k.push(a.getId());else{var l=this.diffCell(a,h.cell);if(null!=l.parent||(null!=h.prev?null==c:null!=c)||null!=c&&null!=h.prev&&c.getId()!=h.prev.getId())l.previous=null!=h.prev?h.prev.getId():"";0<Object.keys(l).length&&(f[a.getId()]=l)}h=a.getChildCount();c=null;for(l=0;l<h;l++){var t=a.getChildAt(l);this.diffCellRecursive(t,c,b,f,k);c=t}return f}; -EditorUi.prototype.diffPage=function(a,c){var b=[],f=[],k={};this.updatePageRoot(a);this.updatePageRoot(c);var h=this.createCellLookup(c.root),l=this.diffCellRecursive(a.root,null,h,l,f),t;for(t in h){var p=h[t];b.push(this.getJsonForCell(p.cell,p.prev))}0<Object.keys(l).length&&(k[EditorUi.DIFF_UPDATE]=l);0<f.length&&(k[EditorUi.DIFF_REMOVE]=f);0<b.length&&(k[EditorUi.DIFF_INSERT]=b);return k}; -EditorUi.prototype.diffViewState=function(a,c){var b=a.viewState,f=c.viewState,k={};c==this.currentPage&&(f=this.editor.graph.getViewState());if(null!=b&&null!=f)for(var h in this.viewStateProperties){var l=JSON.stringify(b[h]),t=JSON.stringify(f[h]);l!=t&&(k[h]=t)}return k}; -EditorUi.prototype.getCellForJson=function(a){var c=null!=a.geometry?this.codec.decode(mxUtils.parseXml(a.geometry).documentElement):null,b=a.value;null!=a.xmlValue&&(b=mxUtils.parseXml(a.xmlValue).documentElement);c=new mxCell(b,c,a.style);c.connectable=0!=a.connectable;c.collapsed=1==a.collapsed;c.visible=0!=a.visible;c.vertex=1==a.vertex;c.edge=1==a.edge;c.id=a.id;for(var f in a)this.cellProperties[f]||(c[f]=a[f]);return c}; -EditorUi.prototype.getJsonForCell=function(a,c){var b={id:a.getId()};a.vertex&&(b.vertex=1);a.edge&&(b.edge=1);a.connectable||(b.connectable=0);null!=a.parent&&(b.parent=a.parent.getId());null!=c&&(b.previous=c.getId());null!=a.source&&(b.source=a.source.getId());null!=a.target&&(b.target=a.target.getId());null!=a.style&&(b.style=a.style);null!=a.geometry&&(b.geometry=mxUtils.getXml(this.codec.encode(a.geometry)));a.collapsed&&(b.collapsed=1);a.visible||(b.visible=0);null!=a.value&&("object"===typeof a.value&& -"number"===typeof a.value.nodeType&&"string"===typeof a.value.nodeName&&"function"===typeof a.value.getAttribute?b.xmlValue=mxUtils.getXml(a.value):b.value=a.value);for(var f in a)this.cellProperties[f]||"function"===typeof a[f]||(b[f]=a[f]);return b}; -EditorUi.prototype.diffCell=function(a,c){function b(a){return null!=a&&"object"===typeof a&&"number"===typeof a.nodeType&&"string"===typeof a.nodeName&&"function"===typeof a.getAttribute}var f={};a.vertex!=c.vertex&&(f.vertex=c.vertex?1:0);a.edge!=c.edge&&(f.edge=c.edge?1:0);a.connectable!=c.connectable&&(f.connectable=c.connectable?1:0);if((null!=a.parent?null==c.parent:null!=c.parent)||null!=a.parent&&null!=c.parent&&a.parent.getId()!=c.parent.getId())f.parent=null!=c.parent?c.parent.getId():""; -if((null!=a.source?null==c.source:null!=c.source)||null!=a.source&&null!=c.source&&a.source.getId()!=c.source.getId())f.source=null!=c.source?c.source.getId():"";if((null!=a.target?null==c.target:null!=c.target)||null!=a.target&&null!=c.target&&a.target.getId()!=c.target.getId())f.target=null!=c.target?c.target.getId():"";b(a.value)&&b(c.value)?a.value.isEqualNode(c.value)||(f.xmlValue=mxUtils.getXml(c.value)):a.value!=c.value&&(b(c.value)?f.xmlValue=mxUtils.getXml(c.value):f.value=null!=c.value? -c.value:null);a.style!=c.style&&(f.style=c.style);a.visible!=c.visible&&(f.visible=c.visible?1:0);a.collapsed!=c.collapsed&&(f.collapsed=c.collapsed?1:0);this.isObjectEqual(a.geometry,c.geometry,new mxGeometry)||(f.geometry=mxUtils.getXml(this.codec.encode(c.geometry)));for(var k in a)this.cellProperties[k]||"function"===typeof a[k]||"function"===typeof c[k]||a[k]==c[k]||(f[k]=void 0===c[k]?null:c[k]);for(k in c)k in a||this.cellProperties[k]||"function"===typeof a[k]||"function"===typeof c[k]||a[k]== -c[k]||(f[k]=void 0===c[k]?null:c[k]);return f};EditorUi.prototype.isObjectEqual=function(a,c,b){if(null==a&&null==c)return!0;if(null!=a?null==c:null!=c)return!1;var f=function(a,c){return null==b||b[a]!=c?!0===c?1:c:void 0};return JSON.stringify(a,f)==JSON.stringify(c,f)};var mxSettings={currentVersion:17,defaultFormatWidth:600>screen.width?"0":"240",key:".drawio-config",getLanguage:function(){return mxSettings.settings.language},setLanguage:function(a){mxSettings.settings.language=a},getUi:function(){return mxSettings.settings.ui},setUi:function(a){mxSettings.settings.ui=a},getShowStartScreen:function(){return mxSettings.settings.showStartScreen},setShowStartScreen:function(a){mxSettings.settings.showStartScreen=a},getGridColor:function(){return mxSettings.settings.gridColor}, -setGridColor:function(a){mxSettings.settings.gridColor=a},getAutosave:function(){return mxSettings.settings.autosave},setAutosave:function(a){mxSettings.settings.autosave=a},getResizeImages:function(){return mxSettings.settings.resizeImages},setResizeImages:function(a){mxSettings.settings.resizeImages=a},getOpenCounter:function(){return mxSettings.settings.openCounter},setOpenCounter:function(a){mxSettings.settings.openCounter=a},getLibraries:function(){return mxSettings.settings.libraries},setLibraries:function(a){mxSettings.settings.libraries= -a},addCustomLibrary:function(a){mxSettings.load();0>mxUtils.indexOf(mxSettings.settings.customLibraries,a)&&("L.scratchpad"===a?mxSettings.settings.customLibraries.splice(0,0,a):mxSettings.settings.customLibraries.push(a));mxSettings.save()},removeCustomLibrary:function(a){mxSettings.load();mxUtils.remove(a,mxSettings.settings.customLibraries);mxSettings.save()},getCustomLibraries:function(){return mxSettings.settings.customLibraries},getPlugins:function(){return mxSettings.settings.plugins},setPlugins:function(a){mxSettings.settings.plugins= -a},getRecentColors:function(){return mxSettings.settings.recentColors},setRecentColors:function(a){mxSettings.settings.recentColors=a},getFormatWidth:function(){return parseInt(mxSettings.settings.formatWidth)},setFormatWidth:function(a){mxSettings.settings.formatWidth=a},isCreateTarget:function(){return mxSettings.settings.createTarget},setCreateTarget:function(a){mxSettings.settings.createTarget=a},getPageFormat:function(){return mxSettings.settings.pageFormat},setPageFormat:function(a){mxSettings.settings.pageFormat= -a},init:function(){mxSettings.settings={language:"",configVersion:Editor.configVersion,libraries:Sidebar.prototype.defaultEntries,customLibraries:Editor.defaultCustomLibraries,plugins:[],recentColors:[],formatWidth:mxSettings.defaultFormatWidth,createTarget:!1,pageFormat:mxGraph.prototype.pageFormat,search:!0,showStartScreen:!0,gridColor:mxGraphView.prototype.gridColor,autosave:!EditorUi.isElectronApp,resizeImages:null,openCounter:0,version:mxSettings.currentVersion,isNew:!0}},save:function(){if(isLocalStorage&& -"undefined"!==typeof JSON)try{delete mxSettings.settings.isNew,mxSettings.settings.version=mxSettings.currentVersion,localStorage.setItem(mxSettings.key,JSON.stringify(mxSettings.settings))}catch(a){}},load:function(){isLocalStorage&&"undefined"!==typeof JSON&&mxSettings.parse(localStorage.getItem(mxSettings.key));null==mxSettings.settings&&mxSettings.init()},parse:function(a){null!=a&&(a=JSON.parse(a),null!=Editor.config&&Editor.config.override||a.configVersion!=Editor.configVersion?mxSettings.settings= -null:(mxSettings.settings=a,null==mxSettings.settings.plugins&&(mxSettings.settings.plugins=[]),null==mxSettings.settings.recentColors&&(mxSettings.settings.recentColors=[]),null==mxSettings.settings.libraries&&(mxSettings.settings.libraries=Sidebar.prototype.defaultEntries),null==mxSettings.settings.customLibraries&&(mxSettings.settings.customLibraries=Editor.defaultCustomLibraries),null==mxSettings.settings.ui&&(mxSettings.settings.ui=""),null==mxSettings.settings.formatWidth&&(mxSettings.settings.formatWidth= +this.actions.get("close").setEnabled(null!=c);this.menus.get("publish").setEnabled(null!=c&&!c.isRestricted());a=a.view.getState(a.getSelectionCell());this.actions.get("editShape").setEnabled(b&&null!=a&&null!=a.shape&&null!=a.shape.stencil)};var u=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){this.editUpdateListener&&(this.editor.undoManager.removeListener(this.editUpdateListener),this.editUpdateListener=null);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog), +this.exportDialog=null);u.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(a,b,c,e,f,k){var d=a.editor.graph;if("xml"==c)a.hideDialog(),a.saveData(b,"xml",mxUtils.getXml(a.editor.getGraphXml()),"text/xml");else if("svg"==c)a.hideDialog(),a.saveData(b,"svg",mxUtils.getXml(d.getSvg(e,f,k)),"image/svg+xml");else{var g=a.getFileData(!0,null,null,null,null,!0),l=d.getGraphBounds(),m=Math.floor(l.width*f/d.view.scale), +q=Math.floor(l.height*f/d.view.scale);g.length<=MAX_REQUEST_SIZE&&m*q<MAX_AREA?(a.hideDialog(),a.saveRequest(b,c,function(a,b){return new mxXmlRequest(EXPORT_URL,"format="+c+"&base64="+(b||"0")+(null!=a?"&filename="+encodeURIComponent(a):"")+"&bg="+(null!=e?e:"none")+"&w="+m+"&h="+q+"&border="+k+"&xml="+encodeURIComponent(g))})):mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.updateEditReferences=function(a){for(var b=0;b<a.changes.length;b++){var c=a.changes[b];if(null!=c&& +c.constructor==mxChildChange&&null!=c.child){var d=c.child;if(null!=d.source&&null!=d.source.id){var e=this.getFutureCellForEdit(c.model,a,d.source.id);e!=d.source&&(d.source=e)}null!=d.target&&null!=d.target.id&&(c=this.getFutureCellForEdit(c.model,a,d.target.id),c!=d.target&&(d.target=c))}}};EditorUi.prototype.getFutureCellForEdit=function(a,b,c){var d=a.getCell(c);if(null==d)for(var e=b.changes.length-1;0<=e;e--){var f=b.changes[e];if(f.constructor==mxChildChange&&null!=f.child&&f.child.id==c){a.contains(f.previous)&& +(d=f.child);break}}return d}})();EditorUi.DIFF_INSERT="i";EditorUi.DIFF_REMOVE="r";EditorUi.DIFF_UPDATE="u";EditorUi.prototype.codec=new mxCodec;EditorUi.prototype.viewStateProperties={background:!0,backgroundImage:!0,shadowVisible:!0,foldingEnabled:!0,pageScale:!0,mathEnabled:!0,pageFormat:!0};EditorUi.prototype.cellProperties={id:!0,value:!0,xmlValue:!0,vertex:!0,edge:!0,visible:!0,collapsed:!0,connectable:!0,parent:!0,children:!0,previous:!0,source:!0,target:!0,edges:!0,geometry:!0,style:!0,mxObjectId:!0,mxTransient:!0}; +EditorUi.prototype.patchPages=function(b,c,a,e,k){var f={},l=[],q={},p={},u={},d={};if(null!=e&&null!=e[EditorUi.DIFF_UPDATE])for(var g in e[EditorUi.DIFF_UPDATE])f[g]=e[EditorUi.DIFF_UPDATE][g];if(null!=c[EditorUi.DIFF_REMOVE])for(e=0;e<c[EditorUi.DIFF_REMOVE].length;e++)p[c[EditorUi.DIFF_REMOVE][e]]=!0;if(null!=c[EditorUi.DIFF_INSERT])for(e=0;e<c[EditorUi.DIFF_INSERT].length;e++)q[c[EditorUi.DIFF_INSERT][e].previous]=c[EditorUi.DIFF_INSERT][e];if(null!=c[EditorUi.DIFF_UPDATE])for(g in c[EditorUi.DIFF_UPDATE])e= +c[EditorUi.DIFF_UPDATE][g],null!=e.previous&&(d[e.previous]=g);if(null!=b){var m="";for(e=0;e<b.length;e++){var v=b[e].getId();u[v]=b[e];null!=d[m]||p[v]||null!=c[EditorUi.DIFF_UPDATE]&&null!=c[EditorUi.DIFF_UPDATE][v]&&null!=c[EditorUi.DIFF_UPDATE][v].previous||(d[m]=v);m=v}}var t={},y=mxUtils.bind(this,function(b){var e=null!=b?b.getId():"";if(null!=b&&!t[e]){t[e]=!0;l.push(b);var g=null!=c[EditorUi.DIFF_UPDATE]?c[EditorUi.DIFF_UPDATE][e]:null;null!=g&&(this.updatePageRoot(b),null!=g.name&&b.setName(g.name), +null!=g.view&&this.patchViewState(b,g.view),null!=g.cells&&this.patchPage(b,g.cells,f[b.getId()],k),!a||null==g.cells&&null==g.view||(b.needsUpdate=!0))}b=d[e];null!=b&&(delete d[e],y(u[b]));b=q[e];null!=b&&(delete q[e],B(b))}),B=mxUtils.bind(this,function(b){b=mxUtils.parseXml(b.data).documentElement;b=new DiagramPage(b);this.updatePageRoot(b);var c=u[b.getId()];null==c?y(b):(c.root=b.root,this.currentPage==c?this.editor.graph.model.setRoot(c.root):a&&(c.needsUpdate=!0))});y();for(g in d)y(u[d[g]]), +delete d[g];for(g in q)B(q[g]),delete q[g];return l};EditorUi.prototype.patchViewState=function(b,c){if(null!=b.viewState&&null!=c){b==this.currentPage&&(b.viewState=this.editor.graph.getViewState());for(var a in c)b.viewState[a]=JSON.parse(c[a]);b==this.currentPage&&this.editor.graph.setViewState(b.viewState)}}; +EditorUi.prototype.createParentLookup=function(b,c){function a(a){var b=e[a];null==b&&(b={inserted:[],moved:{}},e[a]=b);return b}var e={};if(null!=c[EditorUi.DIFF_INSERT])for(var k=0;k<c[EditorUi.DIFF_INSERT].length;k++){var f=c[EditorUi.DIFF_INSERT][k],l=null!=f.parent?f.parent:"",q=null!=f.previous?f.previous:"";a(l).inserted[q]=f}if(null!=c[EditorUi.DIFF_UPDATE])for(var p in c[EditorUi.DIFF_UPDATE])f=c[EditorUi.DIFF_UPDATE][p],null!=f.previous&&(l=f.parent,null==l&&(k=b.getCell(p),null!=k&&(k= +b.getParent(k),null!=k&&(l=k.getId()))),null!=l&&(a(l).moved[f.previous]=p));return e}; +EditorUi.prototype.patchPage=function(b,c,a,e){var k=b==this.currentPage?this.editor.graph.model:new mxGraphModel(b.root),f=this.createParentLookup(k,c);k.beginUpdate();try{var l=k.updateEdgeParent,q=new mxDictionary,p=[];k.updateEdgeParent=function(a,b){!q.get(a)&&e&&(q.put(a,!0),p.push(a))};var u=f[""],d=null!=u&&null!=u.inserted?u.inserted[""]:null,g=null;null!=d&&(g=this.getCellForJson(d));if(null==g){var m=null!=u&&null!=u.moved?u.moved[""]:null;null!=m&&(g=k.getCell(m))}null!=g&&(k.setRoot(g), +b.root=g);this.patchCellRecursive(b,k,k.root,f,c);if(null!=c[EditorUi.DIFF_REMOVE])for(var v=0;v<c[EditorUi.DIFF_REMOVE].length;v++){var t=k.getCell(c[EditorUi.DIFF_REMOVE][v]);null!=t&&k.remove(t)}if(null!=c[EditorUi.DIFF_UPDATE]){var y=null!=a&&null!=a.cells?a.cells[EditorUi.DIFF_UPDATE]:null;for(m in c[EditorUi.DIFF_UPDATE])this.patchCell(k,k.getCell(m),c[EditorUi.DIFF_UPDATE][m],null!=y?y[m]:null)}if(null!=c[EditorUi.DIFF_INSERT])for(v=0;v<c[EditorUi.DIFF_INSERT].length;v++)d=c[EditorUi.DIFF_INSERT][v], +t=k.getCell(d.id),null!=t&&(k.setTerminal(t,k.getCell(d.source),!0),k.setTerminal(t,k.getCell(d.target),!1));k.updateEdgeParent=l;if(e&&0<p.length)for(v=0;v<p.length;v++)k.contains(p[v])&&k.updateEdgeParent(p[v])}finally{k.endUpdate()}}; +EditorUi.prototype.patchCellRecursive=function(b,c,a,e,k){if(null!=a){for(var f=e[a.getId()],l=null!=f&&null!=f.inserted?f.inserted:{},f=null!=f&&null!=f.moved?f.moved:{},q=0,p=c.getChildCount(a),u="",d=0;d<p;d++){var g=c.getChildAt(a,d).getId();null==f[u]&&(null==k[EditorUi.DIFF_UPDATE]||null==k[EditorUi.DIFF_UPDATE][g]||null==k[EditorUi.DIFF_UPDATE][g].previous&&null==k[EditorUi.DIFF_UPDATE][g].parent)&&(f[u]=g);u=g}p=mxUtils.bind(this,function(d,f){var g=null!=d?d.getId():"";if(null!=d&&f){var l= +c.getCell(g);null!=l&&l!=d&&(d=null)}null!=d&&(c.getChildAt(a,q)!=d&&c.add(a,d,q),this.patchCellRecursive(b,c,d,e,k),q++);return g});for(u=[null];0<u.length;)if(d=u.shift(),d=p(null!=d?d.child:null,null!=d?d.insert:!1),g=f[d],null!=g&&(delete f[d],u.push({child:c.getCell(g)})),g=l[d],null!=g&&(delete l[d],u.push({child:this.getCellForJson(g),insert:!0})),0==u.length){for(d in f)u.push({child:c.getCell(f[d])}),delete f[d];for(d in l)u.push({child:this.getCellForJson(l[d]),insert:!0}),delete l[d]}}}; +EditorUi.prototype.patchCell=function(b,c,a,e){if(null!=c&&null!=a){if(null==e||null==e.xmlValue&&(null==e.value||""==e.value))"value"in a?b.setValue(c,a.value):null!=a.xmlValue&&b.setValue(c,mxUtils.parseXml(a.xmlValue).documentElement);null!=e&&null!=e.style||null==a.style||b.setStyle(c,a.style);null!=a.visible&&b.setVisible(c,1==a.visible);null!=a.collapsed&&b.setCollapsed(c,1==a.collapsed);null!=a.vertex&&(c.vertex=1==a.vertex);null!=a.edge&&(c.edge=1==a.edge);null!=a.connectable&&(c.connectable= +1==a.connectable);null!=a.geometry&&b.setGeometry(c,this.codec.decode(mxUtils.parseXml(a.geometry).documentElement));null!=a.source&&b.setTerminal(c,b.getCell(a.source),!0);null!=a.target&&b.setTerminal(c,b.getCell(a.target),!1);for(var k in a)this.cellProperties[k]||(c[k]=a[k])}}; +EditorUi.prototype.getPagesForNode=function(b,c){var a=this.editor.extractGraphModel(b,!0);null!=a&&(b=a);var e=b.getElementsByTagName(c||"diagram"),a=[];if(0<e.length)for(var k=0;k<e.length;k++){var f=new DiagramPage(e[k]);this.updatePageRoot(f);a.push(f)}else"mxGraphModel"==b.nodeName&&(e=this.editor.graph,f=new DiagramPage(b.ownerDocument.createElement("diagram")),f.setName(mxResources.get("pageWithNumber",[1])),mxUtils.setTextContent(f.node,e.compress(e.zapGremlins(mxUtils.getXml(b)))),a.push(f)); +return a}; +EditorUi.prototype.diffPages=function(b,c){for(var a=[],e=[],k={},f={},l={},q=null,p=0;p<c.length;p++)f[c[p].getId()]={page:c[p],prev:q},q=c[p];q=null;for(p=0;p<b.length;p++){var u=b[p].getId(),d=f[u];if(null==d)e.push(u);else{var g=this.diffPage(b[p],d.page),m={};0<Object.keys(g).length&&(m.cells=g);g=this.diffViewState(b[p],d.page);0<Object.keys(g).length&&(m.view=g);if((null!=d.prev?null==q:null!=q)||null!=q&&null!=d.prev&&q.getId()!=d.prev.getId())m.previous=null!=d.prev?d.prev.getId():"";null!= +d.page.getName()&&b[p].getName()!=d.page.getName()&&(m.name=d.page.getName());0<Object.keys(m).length&&(l[u]=m)}delete f[b[p].getId()];q=b[p]}for(u in f)d=f[u],a.push({data:mxUtils.getXml(d.page.node),previous:null!=d.prev?d.prev.getId():""});0<Object.keys(l).length&&(k[EditorUi.DIFF_UPDATE]=l);0<e.length&&(k[EditorUi.DIFF_REMOVE]=e);0<a.length&&(k[EditorUi.DIFF_INSERT]=a);return k}; +EditorUi.prototype.createCellLookup=function(b,c,a){a=null!=a?a:{};a[b.getId()]={cell:b,prev:c};var e=b.getChildCount();c=null;for(var k=0;k<e;k++){var f=b.getChildAt(k);this.createCellLookup(f,c,a);c=f}return a}; +EditorUi.prototype.diffCellRecursive=function(b,c,a,e,k){e=null!=e?e:{};var f=a[b.getId()];delete a[b.getId()];if(null==f)k.push(b.getId());else{var l=this.diffCell(b,f.cell);if(null!=l.parent||(null!=f.prev?null==c:null!=c)||null!=c&&null!=f.prev&&c.getId()!=f.prev.getId())l.previous=null!=f.prev?f.prev.getId():"";0<Object.keys(l).length&&(e[b.getId()]=l)}f=b.getChildCount();c=null;for(l=0;l<f;l++){var q=b.getChildAt(l);this.diffCellRecursive(q,c,a,e,k);c=q}return e}; +EditorUi.prototype.diffPage=function(b,c){var a=[],e=[],k={};this.updatePageRoot(b);this.updatePageRoot(c);var f=this.createCellLookup(c.root),l=this.diffCellRecursive(b.root,null,f,l,e),q;for(q in f){var p=f[q];a.push(this.getJsonForCell(p.cell,p.prev))}0<Object.keys(l).length&&(k[EditorUi.DIFF_UPDATE]=l);0<e.length&&(k[EditorUi.DIFF_REMOVE]=e);0<a.length&&(k[EditorUi.DIFF_INSERT]=a);return k}; +EditorUi.prototype.diffViewState=function(b,c){var a=b.viewState,e=c.viewState,k={};c==this.currentPage&&(e=this.editor.graph.getViewState());if(null!=a&&null!=e)for(var f in this.viewStateProperties){var l=JSON.stringify(a[f]),q=JSON.stringify(e[f]);l!=q&&(k[f]=q)}return k}; +EditorUi.prototype.getCellForJson=function(b){var c=null!=b.geometry?this.codec.decode(mxUtils.parseXml(b.geometry).documentElement):null,a=b.value;null!=b.xmlValue&&(a=mxUtils.parseXml(b.xmlValue).documentElement);c=new mxCell(a,c,b.style);c.connectable=0!=b.connectable;c.collapsed=1==b.collapsed;c.visible=0!=b.visible;c.vertex=1==b.vertex;c.edge=1==b.edge;c.id=b.id;for(var e in b)this.cellProperties[e]||(c[e]=b[e]);return c}; +EditorUi.prototype.getJsonForCell=function(b,c){var a={id:b.getId()};b.vertex&&(a.vertex=1);b.edge&&(a.edge=1);b.connectable||(a.connectable=0);null!=b.parent&&(a.parent=b.parent.getId());null!=c&&(a.previous=c.getId());null!=b.source&&(a.source=b.source.getId());null!=b.target&&(a.target=b.target.getId());null!=b.style&&(a.style=b.style);null!=b.geometry&&(a.geometry=mxUtils.getXml(this.codec.encode(b.geometry)));b.collapsed&&(a.collapsed=1);b.visible||(a.visible=0);null!=b.value&&("object"===typeof b.value&& +"number"===typeof b.value.nodeType&&"string"===typeof b.value.nodeName&&"function"===typeof b.value.getAttribute?a.xmlValue=mxUtils.getXml(b.value):a.value=b.value);for(var e in b)this.cellProperties[e]||"function"===typeof b[e]||(a[e]=b[e]);return a}; +EditorUi.prototype.diffCell=function(b,c){function a(a){return null!=a&&"object"===typeof a&&"number"===typeof a.nodeType&&"string"===typeof a.nodeName&&"function"===typeof a.getAttribute}var e={};b.vertex!=c.vertex&&(e.vertex=c.vertex?1:0);b.edge!=c.edge&&(e.edge=c.edge?1:0);b.connectable!=c.connectable&&(e.connectable=c.connectable?1:0);if((null!=b.parent?null==c.parent:null!=c.parent)||null!=b.parent&&null!=c.parent&&b.parent.getId()!=c.parent.getId())e.parent=null!=c.parent?c.parent.getId():""; +if((null!=b.source?null==c.source:null!=c.source)||null!=b.source&&null!=c.source&&b.source.getId()!=c.source.getId())e.source=null!=c.source?c.source.getId():"";if((null!=b.target?null==c.target:null!=c.target)||null!=b.target&&null!=c.target&&b.target.getId()!=c.target.getId())e.target=null!=c.target?c.target.getId():"";a(b.value)&&a(c.value)?b.value.isEqualNode(c.value)||(e.xmlValue=mxUtils.getXml(c.value)):b.value!=c.value&&(a(c.value)?e.xmlValue=mxUtils.getXml(c.value):e.value=null!=c.value? +c.value:null);b.style!=c.style&&(e.style=c.style);b.visible!=c.visible&&(e.visible=c.visible?1:0);b.collapsed!=c.collapsed&&(e.collapsed=c.collapsed?1:0);if(!this.isObjectEqual(b.geometry,c.geometry,new mxGeometry)){var k=this.codec.encode(c.geometry);null!=k&&(e.geometry=mxUtils.getXml(k))}for(var f in b)this.cellProperties[f]||"function"===typeof b[f]||"function"===typeof c[f]||b[f]==c[f]||(e[f]=void 0===c[f]?null:c[f]);for(f in c)f in b||this.cellProperties[f]||"function"===typeof b[f]||"function"=== +typeof c[f]||b[f]==c[f]||(e[f]=void 0===c[f]?null:c[f]);return e};EditorUi.prototype.isObjectEqual=function(b,c,a){if(null==b&&null==c)return!0;if(null!=b?null==c:null!=c)return!1;var e=function(b,c){return null==a||a[b]!=c?!0===c?1:c:void 0};return JSON.stringify(b,e)==JSON.stringify(c,e)};var mxSettings={currentVersion:17,defaultFormatWidth:600>screen.width?"0":"240",key:".drawio-config",getLanguage:function(){return mxSettings.settings.language},setLanguage:function(b){mxSettings.settings.language=b},getUi:function(){return mxSettings.settings.ui},setUi:function(b){mxSettings.settings.ui=b},getShowStartScreen:function(){return mxSettings.settings.showStartScreen},setShowStartScreen:function(b){mxSettings.settings.showStartScreen=b},getGridColor:function(){return mxSettings.settings.gridColor}, +setGridColor:function(b){mxSettings.settings.gridColor=b},getAutosave:function(){return mxSettings.settings.autosave},setAutosave:function(b){mxSettings.settings.autosave=b},getResizeImages:function(){return mxSettings.settings.resizeImages},setResizeImages:function(b){mxSettings.settings.resizeImages=b},getOpenCounter:function(){return mxSettings.settings.openCounter},setOpenCounter:function(b){mxSettings.settings.openCounter=b},getLibraries:function(){return mxSettings.settings.libraries},setLibraries:function(b){mxSettings.settings.libraries= +b},addCustomLibrary:function(b){mxSettings.load();0>mxUtils.indexOf(mxSettings.settings.customLibraries,b)&&("L.scratchpad"===b?mxSettings.settings.customLibraries.splice(0,0,b):mxSettings.settings.customLibraries.push(b));mxSettings.save()},removeCustomLibrary:function(b){mxSettings.load();mxUtils.remove(b,mxSettings.settings.customLibraries);mxSettings.save()},getCustomLibraries:function(){return mxSettings.settings.customLibraries},getPlugins:function(){return mxSettings.settings.plugins},setPlugins:function(b){mxSettings.settings.plugins= +b},getRecentColors:function(){return mxSettings.settings.recentColors},setRecentColors:function(b){mxSettings.settings.recentColors=b},getFormatWidth:function(){return parseInt(mxSettings.settings.formatWidth)},setFormatWidth:function(b){mxSettings.settings.formatWidth=b},isCreateTarget:function(){return mxSettings.settings.createTarget},setCreateTarget:function(b){mxSettings.settings.createTarget=b},getPageFormat:function(){return mxSettings.settings.pageFormat},setPageFormat:function(b){mxSettings.settings.pageFormat= +b},init:function(){mxSettings.settings={language:"",configVersion:Editor.configVersion,libraries:Sidebar.prototype.defaultEntries,customLibraries:Editor.defaultCustomLibraries,plugins:[],recentColors:[],formatWidth:mxSettings.defaultFormatWidth,createTarget:!1,pageFormat:mxGraph.prototype.pageFormat,search:!0,showStartScreen:!0,gridColor:mxGraphView.prototype.gridColor,autosave:!EditorUi.isElectronApp,resizeImages:null,openCounter:0,version:mxSettings.currentVersion,isNew:!0}},save:function(){if(isLocalStorage&& +"undefined"!==typeof JSON)try{delete mxSettings.settings.isNew,mxSettings.settings.version=mxSettings.currentVersion,localStorage.setItem(mxSettings.key,JSON.stringify(mxSettings.settings))}catch(b){}},load:function(){isLocalStorage&&"undefined"!==typeof JSON&&mxSettings.parse(localStorage.getItem(mxSettings.key));null==mxSettings.settings&&mxSettings.init()},parse:function(b){null!=b&&(b=JSON.parse(b),null!=Editor.config&&Editor.config.override||b.configVersion!=Editor.configVersion?mxSettings.settings= +null:(mxSettings.settings=b,null==mxSettings.settings.plugins&&(mxSettings.settings.plugins=[]),null==mxSettings.settings.recentColors&&(mxSettings.settings.recentColors=[]),null==mxSettings.settings.libraries&&(mxSettings.settings.libraries=Sidebar.prototype.defaultEntries),null==mxSettings.settings.customLibraries&&(mxSettings.settings.customLibraries=Editor.defaultCustomLibraries),null==mxSettings.settings.ui&&(mxSettings.settings.ui=""),null==mxSettings.settings.formatWidth&&(mxSettings.settings.formatWidth= mxSettings.defaultFormatWidth),null!=mxSettings.settings.lastAlert&&delete mxSettings.settings.lastAlert,null==mxSettings.settings.createTarget&&(mxSettings.settings.createTarget=!1),null==mxSettings.settings.pageFormat&&(mxSettings.settings.pageFormat=mxGraph.prototype.pageFormat),null==mxSettings.settings.search&&(mxSettings.settings.search=!0),null==mxSettings.settings.showStartScreen&&(mxSettings.settings.showStartScreen=!0),null==mxSettings.settings.gridColor&&(mxSettings.settings.gridColor= -mxGraphView.prototype.gridColor),null==mxSettings.settings.autosave&&(mxSettings.settings.autosave=!0),null!=mxSettings.settings.scratchpadSeen&&delete mxSettings.settings.scratchpadSeen))},clear:function(){isLocalStorage&&localStorage.removeItem(mxSettings.key)}};("undefined"==typeof mxLoadSettings||mxLoadSettings)&&mxSettings.load();DrawioFileSync=function(a){mxEventSource.call(this);this.lastActivity=new Date;this.clientId=Editor.guid();this.ui=a.ui;this.file=a;this.onlineListener=mxUtils.bind(this,function(){this.updateOnlineState();this.isConnected()&&this.fileChangedNotify()});mxEvent.addListener(window,"online",this.onlineListener);this.visibleListener=mxUtils.bind(this,function(){"hidden"==document.visibilityState?this.isConnected()&&this.stop():this.start()});mxEvent.addListener(document,"visibilitychange",this.visibleListener); -this.activityListener=mxUtils.bind(this,function(a){this.lastActivity=new Date;this.start()});mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.activityListener);mxEvent.addListener(document,"keypress",this.activityListener);mxEvent.addListener(window,"focus",this.activityListener);!mxClient.IS_POINTER&&mxClient.IS_TOUCH&&(mxEvent.addListener(document,"touchstart",this.activityListener),mxEvent.addListener(document,"touchmove",this.activityListener));this.pusherErrorListener= -mxUtils.bind(this,function(a){null!=a.error&&null!=a.error.data&&4004===a.error.data.code&&EditorUi.logError("Error: Pusher Limit",null,this.file.getId())});this.connectionListener=mxUtils.bind(this,function(){this.updateOnlineState();this.updateStatus();if(this.isConnected()){if(!this.announced){var a=this.file.getCurrentUser(),b={a:"join"};null!=a&&(b.name=a.displayName,b.uid=a.id);mxUtils.post(this.cacheUrl,this.getIdParameters()+"&msg="+encodeURIComponent(this.objectToString(this.createMessage(b)))); -this.file.stats.msgSent++;this.announced=!0}this.fileChangedNotify()}});this.changeListener=mxUtils.bind(this,function(a){this.file.stats.msgReceived++;this.lastActivity=new Date;if(this.enabled&&!this.file.inConflictState&&!this.file.redirectDialogShowing)try{var b=this.stringToObject(a);null!=b&&(EditorUi.debug("Sync.message",[this],b,a.length,"bytes"),b.v>DrawioFileSync.PROTOCOL?this.file.redirectToNewApp(mxUtils.bind(this,function(){})):b.v===DrawioFileSync.PROTOCOL&&null!=b.d&&this.handleMessageData(b.d))}catch(f){null!= -window.console&&"1"==urlParams.test&&console.log(f)}})};DrawioFileSync.PROTOCOL=6;mxUtils.extend(DrawioFileSync,mxEventSource);DrawioFileSync.prototype.maxCacheEntrySize=1E6;DrawioFileSync.prototype.enabled=!0;DrawioFileSync.prototype.updateStatusInterval=1E4;DrawioFileSync.prototype.cacheUrl="1"==urlParams.dev?"/cache":"https://rt.draw.io/cache";DrawioFileSync.prototype.channelId=null;DrawioFileSync.prototype.channel=null;DrawioFileSync.prototype.catchupRetryCount=0; -DrawioFileSync.prototype.maxCatchupRetries=15;DrawioFileSync.prototype.maxCacheReadyRetries=2;DrawioFileSync.prototype.cacheReadyDelay=500;DrawioFileSync.prototype.inactivityTimeoutSeconds=3600;DrawioFileSync.prototype.lastActivity=null; -DrawioFileSync.prototype.start=function(){null==this.channelId&&(this.channelId=this.file.getChannelId());null==this.key&&(this.key=this.file.getChannelKey());if(null==this.pusher&&null!=this.channelId&&"hidden"!=document.visibilityState){this.pusher=this.ui.getPusher();if(null!=this.pusher){try{null!=this.pusher.connection&&this.pusher.connection.bind("error",this.pusherErrorListener)}catch(b){}try{if(this.pusher.connect(),this.channel=this.pusher.subscribe(this.channelId),EditorUi.debug("Sync.start", -[this]),null==this.file.stats.start&&(this.file.stats.start=(new Date).toISOString(),!this.ui.isOffline())){var a=this.file.getCurrentUser(),c=null!=a?this.ui.hashValue(a.id):"unknown";EditorUi.logEvent({category:"RT-START-"+DrawioFile.SYNC,action:"file-"+this.file.getId()+"-mode-"+this.file.getMode()+"-size-"+this.file.getSize()+"-user-"+c+"-client-"+this.clientId,label:this.file.stats.start})}}catch(b){}this.installListeners()}window.setTimeout(mxUtils.bind(this,function(){this.lastModified=this.file.getLastModifiedDate(); -this.lastActivity=new Date;this.resetUpdateStatusThread();this.updateOnlineState();this.updateStatus()},0))}};DrawioFileSync.prototype.isConnected=function(){return null!=this.pusher&&null!=this.pusher.connection?"connected"==this.pusher.connection.state:!1}; -DrawioFileSync.prototype.updateOnlineState=function(){var a=mxUtils.bind(this,function(a){mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){this.enabled=!this.enabled;this.ui.updateButtonContainer();this.resetUpdateStatusThread();this.updateOnlineState();this.updateStatus();!this.file.inConflictState&&this.enabled&&this.fileChangedNotify()}))});if("min"==uiTheme&&null!=this.ui.buttonContainer){if(null==this.collaboratorsElement){var c=document.createElement("a");c.className="geToolbarButton"; -c.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;cursor:pointer;float:left;";c.style.backgroundPosition="center center";c.style.backgroundRepeat="no-repeat";c.style.backgroundSize="24px 24px";c.style.height="24px";c.style.width="24px";a(c);this.ui.buttonContainer.appendChild(c);this.collaboratorsElement=c}}else null!=this.ui.toolbarContainer&&null==this.collaboratorsElement&&(c=document.createElement("a"),c.className="geButton",c.style.position="absolute", +mxGraphView.prototype.gridColor),null==mxSettings.settings.autosave&&(mxSettings.settings.autosave=!0),null!=mxSettings.settings.scratchpadSeen&&delete mxSettings.settings.scratchpadSeen))},clear:function(){isLocalStorage&&localStorage.removeItem(mxSettings.key)}};("undefined"==typeof mxLoadSettings||mxLoadSettings)&&mxSettings.load();DrawioFileSync=function(b){mxEventSource.call(this);this.lastActivity=new Date;this.clientId=Editor.guid();this.ui=b.ui;this.file=b;this.onlineListener=mxUtils.bind(this,function(){this.updateOnlineState();this.isConnected()&&this.fileChangedNotify()});mxEvent.addListener(window,"online",this.onlineListener);this.visibleListener=mxUtils.bind(this,function(){"hidden"==document.visibilityState?this.isConnected()&&this.stop():this.start()});mxEvent.addListener(document,"visibilitychange",this.visibleListener); +this.activityListener=mxUtils.bind(this,function(b){this.lastActivity=new Date;this.start()});mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.activityListener);mxEvent.addListener(document,"keypress",this.activityListener);mxEvent.addListener(window,"focus",this.activityListener);!mxClient.IS_POINTER&&mxClient.IS_TOUCH&&(mxEvent.addListener(document,"touchstart",this.activityListener),mxEvent.addListener(document,"touchmove",this.activityListener));this.pusherErrorListener= +mxUtils.bind(this,function(b){null!=b.error&&null!=b.error.data&&4004===b.error.data.code&&EditorUi.logError("Error: Pusher Limit",null,this.file.getId())});this.connectionListener=mxUtils.bind(this,function(){this.updateOnlineState();this.updateStatus();if(this.isConnected()){if(!this.announced){var b=this.file.getCurrentUser(),a={a:"join"};null!=b&&(a.name=b.displayName,a.uid=b.id);mxUtils.post(EditorUi.cacheUrl,this.getIdParameters()+"&msg="+encodeURIComponent(this.objectToString(this.createMessage(a)))); +this.file.stats.msgSent++;this.announced=!0}this.fileChangedNotify()}});this.changeListener=mxUtils.bind(this,function(b){this.file.stats.msgReceived++;this.lastActivity=new Date;if(this.enabled&&!this.file.inConflictState&&!this.file.redirectDialogShowing)try{var a=this.stringToObject(b);null!=a&&(EditorUi.debug("Sync.message",[this],a,b.length,"bytes"),a.v>DrawioFileSync.PROTOCOL?this.file.redirectToNewApp(mxUtils.bind(this,function(){})):a.v===DrawioFileSync.PROTOCOL&&null!=a.d&&this.handleMessageData(a.d))}catch(e){null!= +window.console&&"1"==urlParams.test&&console.log(e)}})};DrawioFileSync.PROTOCOL=6;mxUtils.extend(DrawioFileSync,mxEventSource);DrawioFileSync.prototype.maxCacheEntrySize=1E6;DrawioFileSync.prototype.enabled=!0;DrawioFileSync.prototype.updateStatusInterval=1E4;DrawioFileSync.prototype.channelId=null;DrawioFileSync.prototype.channel=null;DrawioFileSync.prototype.catchupRetryCount=0;DrawioFileSync.prototype.maxCatchupRetries=15;DrawioFileSync.prototype.maxCacheReadyRetries=2; +DrawioFileSync.prototype.cacheReadyDelay=500;DrawioFileSync.prototype.inactivityTimeoutSeconds=1800;DrawioFileSync.prototype.lastActivity=null; +DrawioFileSync.prototype.start=function(){null==this.channelId&&(this.channelId=this.file.getChannelId());null==this.key&&(this.key=this.file.getChannelKey());if(null==this.pusher&&null!=this.channelId&&"hidden"!=document.visibilityState){this.pusher=this.ui.getPusher();if(null!=this.pusher){try{null!=this.pusher.connection&&this.pusher.connection.bind("error",this.pusherErrorListener)}catch(b){}try{this.pusher.connect(),this.channel=this.pusher.subscribe(this.channelId),EditorUi.debug("Sync.start", +[this])}catch(b){}this.installListeners()}window.setTimeout(mxUtils.bind(this,function(){this.lastModified=this.file.getLastModifiedDate();this.lastActivity=new Date;this.resetUpdateStatusThread();this.updateOnlineState();this.updateStatus()},0))}};DrawioFileSync.prototype.isConnected=function(){return null!=this.pusher&&null!=this.pusher.connection?"connected"==this.pusher.connection.state:!1}; +DrawioFileSync.prototype.updateOnlineState=function(){var b=mxUtils.bind(this,function(a){mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){this.enabled=!this.enabled;this.ui.updateButtonContainer();this.resetUpdateStatusThread();this.updateOnlineState();this.updateStatus();!this.file.inConflictState&&this.enabled&&this.fileChangedNotify()}))});if("min"==uiTheme&&null!=this.ui.buttonContainer){if(null==this.collaboratorsElement){var c=document.createElement("a");c.className="geToolbarButton"; +c.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;cursor:pointer;float:left;";c.style.backgroundPosition="center center";c.style.backgroundRepeat="no-repeat";c.style.backgroundSize="24px 24px";c.style.height="24px";c.style.width="24px";b(c);this.ui.buttonContainer.appendChild(c);this.collaboratorsElement=c}}else null!=this.ui.toolbarContainer&&null==this.collaboratorsElement&&(c=document.createElement("a"),c.className="geButton",c.style.position="absolute", c.style.display="inline-block",c.style.verticalAlign="bottom",c.style.color="#666",c.style.top="5px",c.style.right="atlas"==uiTheme?"42px":"60px",c.style.padding="2px",c.style.fontSize="8pt",c.style.verticalAlign="middle",c.style.textDecoration="none",c.style.backgroundPosition="center center",c.style.backgroundRepeat="no-repeat",c.style.backgroundSize="16px 16px",c.style.width="16px",c.style.height="16px",mxUtils.setOpacity(c,60),"dark"==uiTheme&&(c.style.filter="invert(100%)"),mxEvent.addListener(c, -mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()})),a(c),this.ui.toolbarContainer.appendChild(c),this.collaboratorsElement=c);null!=this.collaboratorsElement&&(a="",a=this.enabled?this.file.invalidChecksum?mxResources.get("error")+": "+mxResources.get("checksum"):this.ui.isOffline()||!this.isConnected()?mxResources.get("offline"):mxResources.get("online"):mxResources.get("disconnected"),this.collaboratorsElement.setAttribute("title",a),this.collaboratorsElement.style.backgroundImage= +mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()})),b(c),this.ui.toolbarContainer.appendChild(c),this.collaboratorsElement=c);null!=this.collaboratorsElement&&(b="",b=this.enabled?this.file.invalidChecksum?mxResources.get("error")+": "+mxResources.get("checksum"):this.ui.isOffline()||!this.isConnected()?mxResources.get("offline"):mxResources.get("online"):mxResources.get("disconnected"),this.collaboratorsElement.setAttribute("title",b),this.collaboratorsElement.style.backgroundImage= "url("+(this.enabled?this.ui.isOffline()||!this.isConnected()||this.file.invalidChecksum?Editor.syncProblemImage:Editor.syncImage:Editor.syncDisabledImage)+")")}; -DrawioFileSync.prototype.updateStatus=function(){this.isConnected()&&null!=this.lastActivity&&((new Date).getTime()-this.lastActivity.getTime())/1E3>this.inactivityTimeoutSeconds&&this.stop();if(!(this.file.isModified()||this.file.inConflictState||null!=this.file.autosaveThread||this.file.savingFile||this.file.redirectDialogShowing))if(this.enabled&&null!=this.ui.statusContainer){var a=this.ui.timeSince(new Date(this.lastModified));null==a&&(a=mxResources.get("lessThanAMinute"));var c=this.file.isRevisionHistorySupported(), -b=this.lastMessage;this.lastMessage=null;null!=b&&40<b.length&&(b=b.substring(0,40)+"...");a=mxResources.get("lastChange",[a]);this.ui.editor.setStatus('<div title="'+mxUtils.htmlEntities(a)+'" style="display:inline-block;">'+mxUtils.htmlEntities(a)+"</div>"+(null!=b?' <span style="opacity:0;" title="'+mxUtils.htmlEntities(b)+'">('+mxUtils.htmlEntities(b)+")</span>":"")+(this.file.isEditable()?"":'<div class="geStatusAlert" style="margin-left:8px;display:inline-block;">'+mxUtils.htmlEntities(mxResources.get("readOnly"))+ -"</div>")+(this.isConnected()?"":'<div class="geStatusAlert geBlink" style="margin-left:8px;display:inline-block;">'+mxUtils.htmlEntities(mxResources.get("disconnected"))+"</div>"));b=this.ui.statusContainer.getElementsByTagName("div");0<b.length&&c&&(b[0].style.cursor="pointer",b[0].style.textDecoration="underline",mxEvent.addListener(b[0],"click",mxUtils.bind(this,function(){this.ui.actions.get("revisionHistory").funct()})));c=this.ui.statusContainer.getElementsByTagName("span");if(0<c.length){var f= -c[0];mxUtils.setPrefixedStyle(f.style,"transition","all 0.2s ease");window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(f,100);mxUtils.setPrefixedStyle(f.style,"transition","all 1s ease");window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(f,0)}),this.updateStatusInterval/2)}),0)}this.resetUpdateStatusThread()}else this.file.addAllSavedStatus()}; +DrawioFileSync.prototype.updateStatus=function(){this.isConnected()&&null!=this.lastActivity&&((new Date).getTime()-this.lastActivity.getTime())/1E3>this.inactivityTimeoutSeconds&&this.stop();if(!(this.file.isModified()||this.file.inConflictState||null!=this.file.autosaveThread||this.file.savingFile||this.file.redirectDialogShowing))if(this.enabled&&null!=this.ui.statusContainer){var b=this.ui.timeSince(new Date(this.lastModified));null==b&&(b=mxResources.get("lessThanAMinute"));var c=this.file.isRevisionHistorySupported(), +a=this.lastMessage;this.lastMessage=null;null!=a&&40<a.length&&(a=a.substring(0,40)+"...");b=mxResources.get("lastChange",[b]);this.ui.editor.setStatus('<div title="'+mxUtils.htmlEntities(b)+'" style="display:inline-block;">'+mxUtils.htmlEntities(b)+"</div>"+(null!=a?' <span style="opacity:0;" title="'+mxUtils.htmlEntities(a)+'">('+mxUtils.htmlEntities(a)+")</span>":"")+(this.file.isEditable()?"":'<div class="geStatusAlert" style="margin-left:8px;display:inline-block;">'+mxUtils.htmlEntities(mxResources.get("readOnly"))+ +"</div>")+(this.isConnected()?"":'<div class="geStatusAlert geBlink" style="margin-left:8px;display:inline-block;">'+mxUtils.htmlEntities(mxResources.get("disconnected"))+"</div>"));a=this.ui.statusContainer.getElementsByTagName("div");0<a.length&&c&&(a[0].style.cursor="pointer",a[0].style.textDecoration="underline",mxEvent.addListener(a[0],"click",mxUtils.bind(this,function(){this.ui.actions.get("revisionHistory").funct()})));c=this.ui.statusContainer.getElementsByTagName("span");if(0<c.length){var e= +c[0];mxUtils.setPrefixedStyle(e.style,"transition","all 0.2s ease");window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(e,100);mxUtils.setPrefixedStyle(e.style,"transition","all 1s ease");window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(e,0)}),this.updateStatusInterval/2)}),0)}this.resetUpdateStatusThread()}else this.file.addAllSavedStatus()}; DrawioFileSync.prototype.resetUpdateStatusThread=function(){null!=this.updateStatusThread&&window.clearInterval(this.updateStatusThread);null!=this.channel&&(this.updateStatusThread=window.setInterval(mxUtils.bind(this,function(){this.updateStatus()}),this.updateStatusInterval))};DrawioFileSync.prototype.installListeners=function(){null!=this.pusher&&null!=this.pusher.connection&&this.pusher.connection.bind("state_change",this.connectionListener);null!=this.channel&&this.channel.bind("changed",this.changeListener)}; -DrawioFileSync.prototype.handleMessageData=function(a){"desc"==a.a?this.file.savingFile||this.reloadDescriptor():"join"==a.a||"leave"==a.a?("join"==a.a&&this.file.stats.joined++,null!=a.name&&(this.lastMessage=mxResources.get("join"==a.a?"userJoined":"userLeft",[a.name]),this.resetUpdateStatusThread(),this.updateStatus())):null!=a.m&&(a=new Date(a.m),null==this.lastMessageModified||this.lastMessageModified<a)&&(this.lastMessageModified=a,this.fileChangedNotify())}; +DrawioFileSync.prototype.handleMessageData=function(b){"desc"==b.a?this.file.savingFile||this.reloadDescriptor():"join"==b.a||"leave"==b.a?("join"==b.a&&this.file.stats.joined++,null!=b.name&&(this.lastMessage=mxResources.get("join"==b.a?"userJoined":"userLeft",[b.name]),this.resetUpdateStatusThread(),this.updateStatus())):null!=b.m&&(b=new Date(b.m),null==this.lastMessageModified||this.lastMessageModified<b)&&(this.lastMessageModified=b,this.fileChangedNotify())}; DrawioFileSync.prototype.isValidState=function(){return this.ui.getCurrentFile()==this.file&&this.file.sync==this&&!this.file.invalidChecksum&&!this.file.redirectDialogShowing}; -DrawioFileSync.prototype.fileChangedNotify=function(){if(this.isValidState())if(this.file.savingFile)this.remoteFileChanged=!0;else var a=this.fileChanged(mxUtils.bind(this,function(a){this.updateStatus()}),mxUtils.bind(this,function(a){this.file.handleFileError(a)}),mxUtils.bind(this,function(){return!this.file.savingFile&&this.notifyThread!=a}))}; -DrawioFileSync.prototype.fileChanged=function(a,c,b){var f=window.setTimeout(mxUtils.bind(this,function(){null!=b&&b()||(this.isValidState()?this.file.loadPatchDescriptor(mxUtils.bind(this,function(f){null!=b&&b()||(this.isValidState()?this.catchup(this.file.getDescriptorEtag(f),this.file.getDescriptorSecret(f),a,c,b):null!=c&&c())}),c):null!=c&&c())}),0);return this.notifyThread=f}; -DrawioFileSync.prototype.reloadDescriptor=function(){this.file.loadDescriptor(mxUtils.bind(this,function(a){null!=a?(this.file.setDescriptorEtag(a,this.file.getCurrentEtag()),this.updateDescriptor(a),this.fileChangedNotify()):(this.file.inConflictState=!0,this.file.handleFileError())}),mxUtils.bind(this,function(a){this.file.inConflictState=!0;this.file.handleFileError(a)}))};DrawioFileSync.prototype.updateDescriptor=function(a){this.file.setDescriptor(a);this.file.descriptorChanged();this.start()}; -DrawioFileSync.prototype.catchup=function(a,c,b,f,k){if(null==k||!k()){var h=this.file.getCurrentEtag();if(h==a)null!=b&&b();else if(this.isValidState()){var l=0,t=!1,p=mxUtils.bind(this,function(){null!=k&&k()||(h!=this.file.getCurrentEtag()?null!=b&&b():this.isValidState()?mxUtils.get(this.cacheUrl+"?id="+encodeURIComponent(this.channelId)+"&from="+encodeURIComponent(h)+"&to="+encodeURIComponent(a)+(null!=c?"&secret="+encodeURIComponent(c):""),mxUtils.bind(this,function(c){this.file.stats.bytesReceived+= -c.getText().length;if(null==k||!k())if(h!=this.file.getCurrentEtag())null!=b&&b();else if(this.isValidState()){var d=null,n=[],q=[];if(200<=c.getStatus()&&299>=c.getStatus()&&0<c.getText().length)try{var u=JSON.parse(c.getText());if(null!=u&&0<u.length)for(var v=0;v<u.length;v++){var w=this.stringToObject(u[v]);if(w.v>DrawioFileSync.PROTOCOL){t=!0;q=[];break}else if(w.v===DrawioFileSync.PROTOCOL&&null!=w.d)d=w.d.checksum,q.push(w.d.patch),null!=w.d.details&&(w.d.details.checksum=d,n.push(JSON.stringify(w.d.details))); -else{t=!0;q=[];break}}}catch(y){q=[],null!=window.console&&"1"==urlParams.test&&console.log(y)}try{0<q.length?(this.file.stats.cacheHits++,this.merge(q,d,a,b,f,k,n)):l<=this.maxCacheReadyRetries&&!t&&401!=c.getStatus()?(l++,this.file.stats.cacheMiss++,window.setTimeout(p,(l+1)*this.cacheReadyDelay)):(this.file.stats.cacheFail++,this.reload(b,f,k))}catch(y){null!=f&&f(y)}}else null!=f&&f()})):null!=f&&f())});window.setTimeout(p,this.cacheReadyDelay)}else null!=f&&f()}}; -DrawioFileSync.prototype.reload=function(a,c,b,f){this.file.updateFile(mxUtils.bind(this,function(){this.lastModified=this.file.getLastModifiedDate();this.updateStatus();this.start();null!=a&&a()}),mxUtils.bind(this,function(a){null!=c&&c(a)}),b,f)}; -DrawioFileSync.prototype.merge=function(a,c,b,f,k,h,l){try{this.file.stats.merged++;this.lastModified=new Date;this.file.shadowPages=null!=this.file.shadowPages?this.file.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.file.shadowData).documentElement);this.file.backupPatch=this.file.isModified()?this.ui.diffPages(this.file.shadowPages,this.ui.pages):null;if(this.file.ignorePatches(a))this.file.stats.shadowState=this.ui.hashValue(b);else{for(h=0;h<a.length;h++)this.file.shadowPages=this.ui.patchPages(this.file.shadowPages, -a[h]);this.file.stats.shadowState=this.ui.hashValue(b);h={};var t=null!=c?this.ui.getHashValueForPages(this.file.shadowPages,h):null;"1"==urlParams.test&&EditorUi.debug("Sync.merge",[this],"from",this.file.getCurrentEtag(),"to",b,"backup",this.file.backupPatch,"attempt",this.catchupRetryCount,"details",l,h,"patches",a,"checksum",c==t,c);if(null!=c&&c!=t){var p=this.ui.hashValue(this.file.getCurrentEtag()),d=this.ui.hashValue(b);h.inConflictState=this.file.inConflictState;h.invalidChecksum=this.file.invalidChecksum; -this.file.checksumError(k,a,"From: "+p+"\nTo: "+d+(null!=l&&0<l.length?"\nDetails: "+l.join(", "):"")+"\nChecksum: "+c+"\nCurrent: "+t+(null!=h?"\nCurrent Details: "+JSON.stringify(h):""),b);return}this.file.patch(a,DrawioFile.LAST_WRITE_WINS?this.file.backupPatch:null)}this.file.stats.lastMergeTime=(new Date).toISOString();this.file.stats.lastMerge=l;this.file.invalidChecksum=!1;this.file.inConflictState=!1;this.file.setCurrentEtag(b);this.file.backupPatch=null;null!=f&&f()}catch(g){this.file.inConflictState= -!0;this.file.invalidChecksum=!0;this.file.descriptorChanged();null!=k&&k(g);try{p=this.ui.hashValue(this.file.getCurrentEtag()),d=this.ui.hashValue(b),this.file.sendErrorReport("Error in merge","From: "+p+"\nTo: "+d+(null!=l&&0<l.length?"\nDetails: "+l.join(", "):"")+"\nChecksum: "+c+"\nPatches:\n"+this.file.compressReportData(JSON.stringify(a,null,2)),g)}catch(n){}}}; -DrawioFileSync.prototype.descriptorChanged=function(a){this.lastModified=this.file.getLastModifiedDate();if(null!=this.channelId){var c=this.objectToString(this.createMessage({a:"desc",m:this.lastModified.getTime()})),b=this.file.getCurrentEtag(),f=this.objectToString({});mxUtils.post(this.cacheUrl,this.getIdParameters()+"&from="+encodeURIComponent(a)+"&to="+encodeURIComponent(b)+"&msg="+encodeURIComponent(c)+"&data="+encodeURIComponent(f));this.file.stats.bytesSent+=f.length;this.file.stats.msgSent++}this.updateStatus()}; -DrawioFileSync.prototype.objectToString=function(a){a=this.ui.editor.graph.compress(JSON.stringify(a));null!=this.key&&"undefined"!==typeof CryptoJS&&(a=CryptoJS.AES.encrypt(a,this.key).toString());return a};DrawioFileSync.prototype.stringToObject=function(a){null!=this.key&&"undefined"!==typeof CryptoJS&&(a=CryptoJS.AES.decrypt(a,this.key).toString(CryptoJS.enc.Utf8));return JSON.parse(this.ui.editor.graph.decompress(a))}; -DrawioFileSync.prototype.fileSaved=function(a,c,b,f){this.lastModified=this.file.getLastModifiedDate();this.resetUpdateStatusThread();this.catchupRetryCount=0;if(!this.ui.isOffline()&&!this.file.inConflictState&&!this.file.redirectDialogShowing&&(this.start(),null!=this.channelId&&this.isConnected())){var k=null!=this.file.shadowPages?this.file.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.file.shadowData).documentElement),h={v:EditorUi.VERSION,t:(new Date).toISOString(),ua:navigator.userAgent}; -f=this.ui.getHashValueForPages(a,h);k=this.ui.diffPages(k,a);c=this.file.getDescriptorEtag(c);var l=this.file.getCurrentEtag();h.from=this.ui.hashValue(c);h.to=this.ui.hashValue(l);var h=this.objectToString(this.createMessage({patch:k,checksum:f,details:h})),t=this.objectToString(this.createMessage({m:this.lastModified.getTime()})),p=this.file.getDescriptorSecret(this.file.getDescriptor());this.file.stats.bytesSent+=h.length;this.file.stats.msgSent++;mxUtils.post(this.cacheUrl,this.getIdParameters()+ -"&from="+encodeURIComponent(c)+"&to="+encodeURIComponent(l)+"&msg="+encodeURIComponent(t)+(null!=p?"&secret="+encodeURIComponent(p):"")+(h.length<this.maxCacheEntrySize?"&data="+encodeURIComponent(h):""),mxUtils.bind(this,function(a){}));"1"==urlParams.test&&EditorUi.debug("Sync.fileSaved",[this],"from",c,"to",l,h.length,"bytes","diff",k,"checksum",f)}this.file.shadowPages=a;this.file.stats.emptyPrefix=this.file.stats.emptyPrefix||0==this.ui.editor.graph.model.prefix.length;null!=b&&b()}; -DrawioFileSync.prototype.getIdParameters=function(){var a="id="+this.channelId;null!=this.pusher&&null!=this.pusher.connection&&(a+="&sid="+this.pusher.connection.socket_id);return a};DrawioFileSync.prototype.createMessage=function(a){return{v:DrawioFileSync.PROTOCOL,d:a,c:this.clientId}}; -DrawioFileSync.prototype.fileConflict=function(a,c,b){this.catchupRetryCount++;if(this.catchupRetryCount<this.maxCatchupRetries)if(this.file.stats.conflicts++,null!=a){var f=this.file.getDescriptorEtag(a);a=this.file.getDescriptorSecret(a);this.catchup(f,a,c,b)}else this.fileChanged(c,b);else this.catchupRetryCount=0,this.file.stats.timeouts++,null!=b&&b({message:mxResources.get("timeout")})}; +DrawioFileSync.prototype.fileChangedNotify=function(){if(this.isValidState())if(this.file.savingFile)this.remoteFileChanged=!0;else var b=this.fileChanged(mxUtils.bind(this,function(b){this.updateStatus()}),mxUtils.bind(this,function(b){this.file.handleFileError(b)}),mxUtils.bind(this,function(){return!this.file.savingFile&&this.notifyThread!=b}))}; +DrawioFileSync.prototype.fileChanged=function(b,c,a){var e=window.setTimeout(mxUtils.bind(this,function(){null!=a&&a()||(this.isValidState()?this.file.loadPatchDescriptor(mxUtils.bind(this,function(e){null!=a&&a()||(this.isValidState()?this.catchup(this.file.getDescriptorEtag(e),this.file.getDescriptorSecret(e),b,c,a):null!=c&&c())}),c):null!=c&&c())}),0);return this.notifyThread=e}; +DrawioFileSync.prototype.reloadDescriptor=function(){this.file.loadDescriptor(mxUtils.bind(this,function(b){null!=b?(this.file.setDescriptorEtag(b,this.file.getCurrentEtag()),this.updateDescriptor(b),this.fileChangedNotify()):(this.file.inConflictState=!0,this.file.handleFileError())}),mxUtils.bind(this,function(b){this.file.inConflictState=!0;this.file.handleFileError(b)}))};DrawioFileSync.prototype.updateDescriptor=function(b){this.file.setDescriptor(b);this.file.descriptorChanged();this.start()}; +DrawioFileSync.prototype.catchup=function(b,c,a,e,k){if(null==k||!k()){var f=this.file.getCurrentEtag();if(f==b)null!=a&&a();else if(this.isValidState()){var l=0,q=!1,p=mxUtils.bind(this,function(){if(null==k||!k())if(f!=this.file.getCurrentEtag())null!=a&&a();else if(this.isValidState()){var u=!0,d=window.setTimeout(mxUtils.bind(this,function(){u=!1;this.reload(a,e,k)}),this.ui.timeout);mxUtils.get(EditorUi.cacheUrl+"?id="+encodeURIComponent(this.channelId)+"&from="+encodeURIComponent(f)+"&to="+ +encodeURIComponent(b)+(null!=c?"&secret="+encodeURIComponent(c):""),mxUtils.bind(this,function(c){this.file.stats.bytesReceived+=c.getText().length;window.clearTimeout(d);if(u&&(null==k||!k()))if(f!=this.file.getCurrentEtag())null!=a&&a();else if(this.isValidState()){var g=null,v=[];if(200<=c.getStatus()&&299>=c.getStatus()&&0<c.getText().length)try{var t=JSON.parse(c.getText());if(null!=t&&0<t.length)for(var y=0;y<t.length;y++){var B=this.stringToObject(t[y]);if(B.v>DrawioFileSync.PROTOCOL){q=!0; +v=[];break}else if(B.v===DrawioFileSync.PROTOCOL&&null!=B.d)g=B.d.checksum,v.push(B.d.patch);else{q=!0;v=[];break}}}catch(n){v=[],null!=window.console&&"1"==urlParams.test&&console.log(n)}try{0<v.length?(this.file.stats.cacheHits++,this.merge(v,g,b,a,e,k)):l<=this.maxCacheReadyRetries&&!q&&401!=c.getStatus()?(l++,this.file.stats.cacheMiss++,window.setTimeout(p,(l+1)*this.cacheReadyDelay)):(this.file.stats.cacheFail++,this.reload(a,e,k))}catch(n){null!=e&&e(n)}}else null!=e&&e()}))}else null!=e&&e()}); +window.setTimeout(p,this.cacheReadyDelay)}else null!=e&&e()}};DrawioFileSync.prototype.reload=function(b,c,a,e){this.file.updateFile(mxUtils.bind(this,function(){this.lastModified=this.file.getLastModifiedDate();this.updateStatus();this.start();null!=b&&b()}),mxUtils.bind(this,function(a){null!=c&&c(a)}),a,e)}; +DrawioFileSync.prototype.merge=function(b,c,a,e,k,f){try{this.file.stats.merged++;this.lastModified=new Date;this.file.shadowPages=null!=this.file.shadowPages?this.file.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.file.shadowData).documentElement);this.file.backupPatch=this.file.isModified()?this.ui.diffPages(this.file.shadowPages,this.ui.pages):null;if(!this.file.ignorePatches(b)){for(f=0;f<b.length;f++)this.file.shadowPages=this.ui.patchPages(this.file.shadowPages,b[f]);var l=null!= +c?this.ui.getHashValueForPages(this.file.shadowPages):null;"1"==urlParams.test&&EditorUi.debug("Sync.merge",[this],"from",this.file.getCurrentEtag(),"to",a,"backup",this.file.backupPatch,"attempt",this.catchupRetryCount,"patches",b,"checksum",c==l,c);if(null!=c&&c!=l){var q=this.ui.hashValue(this.file.getCurrentEtag()),p=this.ui.hashValue(a);this.file.checksumError(k,b,"From: "+q+"\nTo: "+p+"\nChecksum: "+c+"\nCurrent: "+l,a,"merge");return}this.file.patch(b,DrawioFile.LAST_WRITE_WINS?this.file.backupPatch: +null)}this.file.invalidChecksum=!1;this.file.inConflictState=!1;this.file.setCurrentEtag(a);this.file.backupPatch=null;null!=e&&e()}catch(u){this.file.inConflictState=!0;this.file.invalidChecksum=!0;this.file.descriptorChanged();null!=k&&k(u);try{this.file.errorReportsEnabled&&(q=this.ui.hashValue(this.file.getCurrentEtag()),p=this.ui.hashValue(a),this.file.sendErrorReport("Error in merge","From: "+q+"\nTo: "+p+"\nChecksum: "+c+"\nPatches:\n"+this.file.compressReportData(JSON.stringify(b,null,2)), +u))}catch(d){}}}; +DrawioFileSync.prototype.descriptorChanged=function(b){this.lastModified=this.file.getLastModifiedDate();if(null!=this.channelId){var c=this.objectToString(this.createMessage({a:"desc",m:this.lastModified.getTime()})),a=this.file.getCurrentEtag(),e=this.objectToString({});mxUtils.post(EditorUi.cacheUrl,this.getIdParameters()+"&from="+encodeURIComponent(b)+"&to="+encodeURIComponent(a)+"&msg="+encodeURIComponent(c)+"&data="+encodeURIComponent(e));this.file.stats.bytesSent+=e.length;this.file.stats.msgSent++}this.updateStatus()}; +DrawioFileSync.prototype.objectToString=function(b){b=this.ui.editor.graph.compress(JSON.stringify(b));null!=this.key&&"undefined"!==typeof CryptoJS&&(b=CryptoJS.AES.encrypt(b,this.key).toString());return b};DrawioFileSync.prototype.stringToObject=function(b){null!=this.key&&"undefined"!==typeof CryptoJS&&(b=CryptoJS.AES.decrypt(b,this.key).toString(CryptoJS.enc.Utf8));return JSON.parse(this.ui.editor.graph.decompress(b))}; +DrawioFileSync.prototype.fileSaved=function(b,c,a,e){this.lastModified=this.file.getLastModifiedDate();this.resetUpdateStatusThread();this.catchupRetryCount=0;if(!this.ui.isOffline()&&!this.file.inConflictState&&!this.file.redirectDialogShowing&&(this.start(),null!=this.channelId&&this.isConnected())){var k=null!=this.file.shadowPages?this.file.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.file.shadowData).documentElement);e=this.ui.getHashValueForPages(b);k=this.ui.diffPages(k,b);c=this.file.getDescriptorEtag(c); +var f=this.file.getCurrentEtag(),l=this.objectToString(this.createMessage({patch:k,checksum:e})),q=this.objectToString(this.createMessage({m:this.lastModified.getTime()})),p=this.file.getDescriptorSecret(this.file.getDescriptor());this.file.stats.bytesSent+=l.length;this.file.stats.msgSent++;mxUtils.post(EditorUi.cacheUrl,this.getIdParameters()+"&from="+encodeURIComponent(c)+"&to="+encodeURIComponent(f)+"&msg="+encodeURIComponent(q)+(null!=p?"&secret="+encodeURIComponent(p):"")+(l.length<this.maxCacheEntrySize? +"&data="+encodeURIComponent(l):""),mxUtils.bind(this,function(a){}));"1"==urlParams.test&&EditorUi.debug("Sync.fileSaved",[this],"from",c,"to",f,l.length,"bytes","diff",k,"checksum",e)}this.file.shadowPages=b;null!=a&&a()};DrawioFileSync.prototype.getIdParameters=function(){var b="id="+this.channelId;null!=this.pusher&&null!=this.pusher.connection&&(b+="&sid="+this.pusher.connection.socket_id);return b};DrawioFileSync.prototype.createMessage=function(b){return{v:DrawioFileSync.PROTOCOL,d:b,c:this.clientId}}; +DrawioFileSync.prototype.fileConflict=function(b,c,a){this.catchupRetryCount++;if(this.catchupRetryCount<this.maxCatchupRetries)if(this.file.stats.conflicts++,null!=b){var e=this.file.getDescriptorEtag(b);b=this.file.getDescriptorSecret(b);this.catchup(e,b,c,a)}else this.fileChanged(c,a);else this.file.stats.timeouts++,this.catchupRetryCount=0,null!=a&&a({message:mxResources.get("timeout")})}; DrawioFileSync.prototype.stop=function(){null!=this.pusher&&(EditorUi.debug("Sync.stop",[this]),null!=this.pusher.connection&&(this.pusher.connection.unbind("state_change",this.connectionListener),this.pusher.connection.unbind("error",this.pusherErrorListener)),null!=this.channel&&(this.channel.unbind("changed",this.changeListener),this.channel=null),this.pusher.disconnect(),this.pusher=null);this.updateOnlineState();this.updateStatus()}; -DrawioFileSync.prototype.destroy=function(){if(null!=this.channelId){var a=this.file.getCurrentUser(),c={a:"leave"};null!=a&&(c.name=a.displayName,c.uid=a.id);mxUtils.post(this.cacheUrl,this.getIdParameters()+"&msg="+encodeURIComponent(this.objectToString(this.createMessage(c))));this.file.stats.msgSent++}this.stop();null!=this.updateStatusThread&&(window.clearInterval(this.updateStatusThread),this.updateStatusThread=null);null!=this.onlineListener&&(mxEvent.removeListener(window,"online",this.onlineListener), +DrawioFileSync.prototype.destroy=function(){if(null!=this.channelId){var b=this.file.getCurrentUser(),c={a:"leave"};null!=b&&(c.name=b.displayName,c.uid=b.id);mxUtils.post(EditorUi.cacheUrl,this.getIdParameters()+"&msg="+encodeURIComponent(this.objectToString(this.createMessage(c))));this.file.stats.msgSent++}this.stop();null!=this.updateStatusThread&&(window.clearInterval(this.updateStatusThread),this.updateStatusThread=null);null!=this.onlineListener&&(mxEvent.removeListener(window,"online",this.onlineListener), this.onlineListener=null);null!=this.visibleListener&&(mxEvent.removeListener(document,"visibilitychange",this.visibleListener),this.visibleListener=null);null!=this.activityListener&&(mxEvent.removeListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.activityListener),mxEvent.removeListener(document,"keypress",this.activityListener),mxEvent.removeListener(window,"focus",this.activityListener),!mxClient.IS_POINTER&&mxClient.IS_TOUCH&&(mxEvent.removeListener(document,"touchstart",this.activityListener), -mxEvent.removeListener(document,"touchmove",this.activityListener)),this.activityListener=null);null!=this.collaboratorsElement&&(this.collaboratorsElement.parentNode.removeChild(this.collaboratorsElement),this.collaboratorsElement=null)};App=function(a,c,b){EditorUi.call(this,a,c,null!=b?b:"1"==urlParams.lightbox||"min"==uiTheme&&"0"!=urlParams.chrome);mxClient.IS_SVG?mxGraph.prototype.warningImage.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAE7SURBVHjaYvz//z8DJQAggBjwGXDuHMP/tWuD/uPTCxBAOA0AaQRK/f/+XeJ/cbHlf1wGAAQQTgPu3QNLgfHSpZo4DQAIIKwGwGyH4e/fFbG6AiQJEEAs2Ew2NFzH8OOHBMO6dT/A/KCg7wxGRh+wuhQggDBcALMdFIAcHBxgDGJjcwVIIUAAYbhAUXEdVos4OO4DXcGBIQ4QQCguQPY7sgtgAYruCpAgQACx4LJdU1OCwctLEcyWlLwPJF+AXQE0EMUBAAEEdwF6yMOiD4RRY0QT7gqQAEAAseDzu6XldYYPH9DD4joQa8L5AAEENgWb7SBcXa0JDQMBrK4AcQACiAlfyOMCEFdAnAYQQEz4FLa0XGf4/v0H0IIPONUABBAjyBmMjIwMS5cK/L927QORbtBkaG29DtYLEGAAH6f7oq3Zc+kAAAAASUVORK5CYII=": -(new Image).src=mxGraph.prototype.warningImage.src;window.openWindow=mxUtils.bind(this,function(a,b,c){var f=null;try{f=window.open(a)}catch(t){}null==f||void 0===f?this.showDialog((new PopupDialog(this,a,b,c)).container,320,140,!0,!0):null!=b&&b()});this.updateDocumentTitle();this.updateUi();window.showOpenAlert=mxUtils.bind(this,function(a){null!=window.openFile&&window.openFile.cancel(!0);this.handleError(a)});this.editor.chromeless&&!this.editor.editable||this.addFileDropHandler([document]);if(null!= -App.DrawPlugins){for(a=0;a<App.DrawPlugins.length;a++)try{App.DrawPlugins[a](this)}catch(f){null!=window.console&&console.log("Plugin Error:",f,App.DrawPlugins[a])}window.Draw.loadPlugin=mxUtils.bind(this,function(a){a(this)})}this.load()};App.ERROR_TIMEOUT="timeout";App.ERROR_BUSY="busy";App.ERROR_UNKNOWN="unknown";App.MODE_GOOGLE="google";App.MODE_DROPBOX="dropbox";App.MODE_ONEDRIVE="onedrive";App.MODE_GITHUB="github";App.MODE_DEVICE="device";App.MODE_BROWSER="browser";App.MODE_TRELLO="trello"; +mxEvent.removeListener(document,"touchmove",this.activityListener)),this.activityListener=null);null!=this.collaboratorsElement&&(this.collaboratorsElement.parentNode.removeChild(this.collaboratorsElement),this.collaboratorsElement=null)};App=function(b,c,a){EditorUi.call(this,b,c,null!=a?a:"1"==urlParams.lightbox||"min"==uiTheme&&"0"!=urlParams.chrome);mxClient.IS_SVG?mxGraph.prototype.warningImage.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAE7SURBVHjaYvz//z8DJQAggBjwGXDuHMP/tWuD/uPTCxBAOA0AaQRK/f/+XeJ/cbHlf1wGAAQQTgPu3QNLgfHSpZo4DQAIIKwGwGyH4e/fFbG6AiQJEEAs2Ew2NFzH8OOHBMO6dT/A/KCg7wxGRh+wuhQggDBcALMdFIAcHBxgDGJjcwVIIUAAYbhAUXEdVos4OO4DXcGBIQ4QQCguQPY7sgtgAYruCpAgQACx4LJdU1OCwctLEcyWlLwPJF+AXQE0EMUBAAEEdwF6yMOiD4RRY0QT7gqQAEAAseDzu6XldYYPH9DD4joQa8L5AAEENgWb7SBcXa0JDQMBrK4AcQACiAlfyOMCEFdAnAYQQEz4FLa0XGf4/v0H0IIPONUABBAjyBmMjIwMS5cK/L927QORbtBkaG29DtYLEGAAH6f7oq3Zc+kAAAAASUVORK5CYII=": +(new Image).src=mxGraph.prototype.warningImage.src;window.openWindow=mxUtils.bind(this,function(a,b,c){var e=null;try{e=window.open(a)}catch(q){}null==e||void 0===e?this.showDialog((new PopupDialog(this,a,b,c)).container,320,140,!0,!0):null!=b&&b()});this.updateDocumentTitle();this.updateUi();window.showOpenAlert=mxUtils.bind(this,function(a){null!=window.openFile&&window.openFile.cancel(!0);this.handleError(a)});this.editor.chromeless&&!this.editor.editable||this.addFileDropHandler([document]);if(null!= +App.DrawPlugins){for(b=0;b<App.DrawPlugins.length;b++)try{App.DrawPlugins[b](this)}catch(e){null!=window.console&&console.log("Plugin Error:",e,App.DrawPlugins[b])}window.Draw.loadPlugin=mxUtils.bind(this,function(a){a(this)})}this.load()};App.ERROR_TIMEOUT="timeout";App.ERROR_BUSY="busy";App.ERROR_UNKNOWN="unknown";App.MODE_GOOGLE="google";App.MODE_DROPBOX="dropbox";App.MODE_ONEDRIVE="onedrive";App.MODE_GITHUB="github";App.MODE_DEVICE="device";App.MODE_BROWSER="browser";App.MODE_TRELLO="trello"; App.DROPBOX_APPKEY="libwls2fa9szdji";App.DROPBOX_URL="js/dropbox/Dropbox-sdk.min.js";App.DROPINS_URL="https://www.dropbox.com/static/api/2/dropins.js";App.ONEDRIVE_URL=mxClient.IS_IE11?"https://js.live.net/v7.2/OneDrive.js":"js/onedrive/OneDrive.js";App.TRELLO_URL="https://api.trello.com/1/client.js";App.TRELLO_JQUERY_URL="https://code.jquery.com/jquery-1.7.1.min.js";App.FOOTER_PLUGIN_URL="https://www.jgraph.com/drawio-footer.js";App.PUSHER_KEY="1e756b07a690c5bdb054";App.PUSHER_CLUSTER="eu"; App.PUSHER_URL="https://js.pusher.com/4.3/pusher.min.js";App.GOOGLE_APIS="client,drive-share"; App.pluginRegistry={"4xAKTrabTpTzahoLthkwPNUn":"/plugins/explore.js",ex:"/plugins/explore.js",p1:"/plugins/p1.js",ac:"/plugins/connect.js",acj:"/plugins/connectJira.js",ac148:"/plugins/cConf-1-4-8.js",voice:"/plugins/voice.js",tips:"/plugins/tooltips.js",svgdata:"/plugins/svgdata.js",electron:"plugins/electron.js",number:"/plugins/number.js",sql:"/plugins/sql.js",props:"/plugins/props.js",text:"/plugins/text.js",anim:"/plugins/animation.js",update:"/plugins/update.js",trees:"/plugins/trees/trees.js", "import":"/plugins/import.js",replay:"/plugins/replay.js",anon:"/plugins/anonymize.js",tr:"/plugins/trello.js",f5:"/plugins/rackF5.js",tickets:"/plugins/tickets.js",flow:"/plugins/flow.js",webcola:"/plugins/webcola/webcola.js",rnd:"/plugins/random.js",page:"/plugins/page.js"}; -App.getStoredMode=function(){var a=null;null==a&&isLocalStorage&&(a=localStorage.getItem(".mode"));if(null==a&&"undefined"!=typeof Storage){for(var c=document.cookie.split(";"),b=0;b<c.length;b++){var f=mxUtils.trim(c[b]);if("MODE="==f.substring(0,5)){a=f.substring(5);break}}null!=a&&isLocalStorage&&(c=new Date,c.setYear(c.getFullYear()-1),document.cookie="MODE=; expires="+c.toUTCString(),localStorage.setItem(".mode",a))}return a}; +App.getStoredMode=function(){var b=null;null==b&&isLocalStorage&&(b=localStorage.getItem(".mode"));if(null==b&&"undefined"!=typeof Storage){for(var c=document.cookie.split(";"),a=0;a<c.length;a++){var e=mxUtils.trim(c[a]);if("MODE="==e.substring(0,5)){b=e.substring(5);break}}null!=b&&isLocalStorage&&(c=new Date,c.setYear(c.getFullYear()-1),document.cookie="MODE=; expires="+c.toUTCString(),localStorage.setItem(".mode",b))}return b}; (function(){mxClient.IS_CHROMEAPP||("1"!=urlParams.offline&&("db.draw.io"==window.location.hostname&&null==urlParams.mode&&(urlParams.mode="dropbox"),App.mode=urlParams.mode,null==App.mode&&(App.mode=App.getStoredMode())),null!=window.mxscript&&("1"!=urlParams.embed&&("function"===typeof window.DriveClient&&("0"!=urlParams.gapi&&isSvgBrowser&&(null==document.documentMode||10<=document.documentMode)?App.mode==App.MODE_GOOGLE||null!=urlParams.state&&""==window.location.hash||null!=window.location.hash&& "#G"==window.location.hash.substring(0,2)?mxscript("https://apis.google.com/js/api.js"):"0"!=urlParams.chrome||null!=window.location.hash&&"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D"===window.location.hash.substring(0,45)||(window.DriveClient=null):window.DriveClient=null),"function"===typeof window.DropboxClient&&("0"!=urlParams.db&&isSvgBrowser&&(null==document.documentMode||9<document.documentMode)?App.mode==App.MODE_DROPBOX||null!=window.location.hash&&"#D"==window.location.hash.substring(0, 2)?(mxscript(App.DROPBOX_URL),mxscript(App.DROPINS_URL,null,"dropboxjs",App.DROPBOX_APPKEY)):"0"==urlParams.chrome&&(window.DropboxClient=null):window.DropboxClient=null),"function"===typeof window.OneDriveClient&&("0"!=urlParams.od&&(0>navigator.userAgent.indexOf("MSIE")||10<=document.documentMode)?App.mode==App.MODE_ONEDRIVE||null!=window.location.hash&&"#W"==window.location.hash.substring(0,2)?mxscript(App.ONEDRIVE_URL):"0"==urlParams.chrome&&(window.OneDriveClient=null):window.OneDriveClient= null),"function"===typeof window.TrelloClient&&("0"!=urlParams.tr&&isSvgBrowser&&(null==document.documentMode||10<=document.documentMode)?App.mode==App.MODE_TRELLO||null!=window.location.hash&&"#T"==window.location.hash.substring(0,2)?(mxscript(App.TRELLO_JQUERY_URL),mxscript(App.TRELLO_URL)):"0"==urlParams.chrome&&(window.TrelloClient=null):window.TrelloClient=null)),"undefined"==typeof JSON&&mxscript("js/json/json2.min.js")))})(); -App.main=function(a,c){function b(d){mxUtils.getAll("1"!=urlParams.dev?[d]:[d,"dark"==uiTheme?STYLE_PATH+"/dark-default.xml":STYLE_PATH+"/default.xml"],function(b){mxResources.parse(b[0].getText());1<b.length&&(Graph.prototype.defaultThemes[Graph.prototype.defaultThemeName]=b[1].getDocumentElement());b=null!=c?c():new App(new Editor("0"==urlParams.chrome||"min"==uiTheme,null,null,null,"0"!=urlParams.chrome));if(null!=window.mxscript){if("function"===typeof window.DropboxClient&&null==window.Dropbox&& +App.main=function(b,c){function a(d){mxUtils.getAll("1"!=urlParams.dev?[d]:[d,"dark"==uiTheme?STYLE_PATH+"/dark-default.xml":STYLE_PATH+"/default.xml"],function(a){mxResources.parse(a[0].getText());1<a.length&&(Graph.prototype.defaultThemes[Graph.prototype.defaultThemeName]=a[1].getDocumentElement());a=null!=c?c():new App(new Editor("0"==urlParams.chrome||"min"==uiTheme,null,null,null,"0"!=urlParams.chrome));if(null!=window.mxscript){if("function"===typeof window.DropboxClient&&null==window.Dropbox&& null!=window.DrawDropboxClientCallback&&("1"!=urlParams.embed&&"0"!=urlParams.db||"1"==urlParams.embed&&"1"==urlParams.db)&&isSvgBrowser&&(null==document.documentMode||9<document.documentMode))mxscript(App.DROPBOX_URL,function(){mxscript(App.DROPINS_URL,function(){DrawDropboxClientCallback()},"dropboxjs",App.DROPBOX_APPKEY)});else if("undefined"===typeof window.Dropbox||"undefined"===typeof window.Dropbox.choose)window.DropboxClient=null;"function"===typeof window.OneDriveClient&&"undefined"===typeof OneDrive&& null!=window.DrawOneDriveClientCallback&&("1"!=urlParams.embed&&"0"!=urlParams.od||"1"==urlParams.embed&&"1"==urlParams.od)&&(0>navigator.userAgent.indexOf("MSIE")||10<=document.documentMode)?mxscript(App.ONEDRIVE_URL,window.DrawOneDriveClientCallback):"undefined"===typeof window.OneDrive&&(window.OneDriveClient=null);"function"===typeof window.TrelloClient&&"undefined"===typeof window.Trello&&null!=window.DrawTrelloClientCallback&&("1"!=urlParams.embed&&"0"!=urlParams.tr||"1"==urlParams.embed&&"1"== -urlParams.tr)&&(0>navigator.userAgent.indexOf("MSIE")||10<=document.documentMode)?mxscript(App.TRELLO_JQUERY_URL,function(){mxscript(App.TRELLO_URL,function(){DrawTrelloClientCallback()})}):"undefined"===typeof window.Trello&&(window.TrelloClient=null)}null!=a&&a(b);"0"!=urlParams.chrome&&"1"==urlParams.test&&(EditorUi.debug("Started in "+((new Date).getTime()-t0.getTime())+"ms"),null!=urlParams["export"]&&EditorUi.debug("Export:",EXPORT_URL))},function(a){document.getElementById("geStatus").innerHTML= -"Error loading page. <a>Please try refreshing.</a>";document.getElementById("geStatus").getElementsByTagName("a")[0].onclick=function(){mxLanguage="en";b(mxResources.getDefaultBundle(RESOURCE_BASE,mxLanguage)||mxResources.getSpecialBundle(RESOURCE_BASE,mxLanguage))}})}function f(){mxResources.loadDefaultBundle=!1;b(mxResources.getDefaultBundle(RESOURCE_BASE,mxLanguage)||mxResources.getSpecialBundle(RESOURCE_BASE,mxLanguage))}window.onerror=function(a,b,c,d,f){EditorUi.logError(a,b,c,d,f)};if("1"== -urlParams.embed||"1"==urlParams.lightbox){var k=document.getElementById("geInfo");null!=k&&k.parentNode.removeChild(k)}if(null!=window.mxscript){if("1"==urlParams.offline||"1"==urlParams.appcache)mxscript("js/shapes.min.js"),mxscript("js/stencils.min.js"),mxscript("js/extensions.min.js"),k=document.createElement("iframe"),k.setAttribute("width","0"),k.setAttribute("height","0"),k.setAttribute("src","offline.html"),document.body.appendChild(k);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||"auto"!= -DrawioFile.SYNC||mxscript(App.PUSHER_URL);if("0"!=urlParams.plugins&&"1"!=urlParams.offline){var k=null!=mxSettings.settings?mxSettings.getPlugins():null,h={},l=urlParams.p;App.initPluginCallback();if(null!=l)for(var t=l.split(";"),l=0;l<t.length;l++){var p=App.pluginRegistry[t[l]];null!=p&&null==h[p]?(h[p]=!0,"undefined"===typeof window.drawDevUrl?mxscript(p):mxscript(drawDevUrl+p)):null!=window.console&&console.log("Unknown plugin:",t[l])}else"0"==urlParams.chrome||EditorUi.isElectronApp||mxscript(App.FOOTER_PLUGIN_URL, -null,null,null,mxClient.IS_SVG);if(null!=k&&0<k.length&&"0"!=urlParams.plugins){for(var t=window.location.protocol+"//"+window.location.host,d=!0,l=0;l<k.length&&d;l++)"/"!=k[l].charAt(0)&&k[l].substring(0,t.length)!=t&&(d=!1);if(d||mxUtils.confirm(mxResources.replacePlaceholders("The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n",[k.join("\n")]).replace(/\\n/g, -"\n")))for(l=0;l<k.length;l++)try{null==h[k[l]]&&(h[p]=!0,mxscript(k[l]))}catch(q){}}}"function"===typeof window.DriveClient&&"undefined"===typeof gapi&&("1"!=urlParams.embed&&"0"!=urlParams.gapi||"1"==urlParams.embed&&"1"==urlParams.gapi)&&isSvgBrowser&&isLocalStorage&&(null==document.documentMode||10<=document.documentMode)?mxscript("https://apis.google.com/js/api.js?onload=DrawGapiClientCallback",null,null,null,mxClient.IS_SVG):"undefined"===typeof window.gapi&&(window.DriveClient=null)}"0"!=urlParams.math&& -Editor.initMath();if("1"==urlParams.configure){var g=window.opener||window.parent,n=function(a){if(a.source==g)try{var b=JSON.parse(a.data);null!=b&&"configure"==b.action&&(mxEvent.removeListener(window,"message",n),Editor.configure(b.config,!0),mxSettings.load(),f())}catch(v){null!=window.console&&console.log("Error in configuration: "+v)}};mxEvent.addListener(window,"message",n);g.postMessage(JSON.stringify({event:"load"}),"*")}else f()};mxUtils.extend(App,EditorUi); +urlParams.tr)&&(0>navigator.userAgent.indexOf("MSIE")||10<=document.documentMode)?mxscript(App.TRELLO_JQUERY_URL,function(){mxscript(App.TRELLO_URL,function(){DrawTrelloClientCallback()})}):"undefined"===typeof window.Trello&&(window.TrelloClient=null)}null!=b&&b(a);"0"!=urlParams.chrome&&"1"==urlParams.test&&(EditorUi.debug("Started in "+((new Date).getTime()-t0.getTime())+"ms"),null!=urlParams["export"]&&EditorUi.debug("Export:",EXPORT_URL))},function(b){b=document.getElementById("geStatus");null!= +b&&(b.innerHTML="Error loading page. <a>Please try refreshing.</a>",b.getElementsByTagName("a")[0].onclick=function(){mxLanguage="en";a(mxResources.getDefaultBundle(RESOURCE_BASE,mxLanguage)||mxResources.getSpecialBundle(RESOURCE_BASE,mxLanguage))})})}function e(){mxResources.loadDefaultBundle=!1;a(mxResources.getDefaultBundle(RESOURCE_BASE,mxLanguage)||mxResources.getSpecialBundle(RESOURCE_BASE,mxLanguage))}window.onerror=function(a,b,c,d,e){EditorUi.logError(a,b,c,d,e)};if("1"==urlParams.embed|| +"1"==urlParams.lightbox){var k=document.getElementById("geInfo");null!=k&&k.parentNode.removeChild(k)}if(null!=window.mxscript){if("1"==urlParams.offline||"1"==urlParams.appcache)mxscript("js/shapes.min.js"),mxscript("js/stencils.min.js"),mxscript("js/extensions.min.js"),k=document.createElement("iframe"),k.setAttribute("width","0"),k.setAttribute("height","0"),k.setAttribute("src","offline.html"),document.body.appendChild(k);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||"auto"!=DrawioFile.SYNC|| +mxscript(App.PUSHER_URL);if("0"!=urlParams.plugins&&"1"!=urlParams.offline){var k=null!=mxSettings.settings?mxSettings.getPlugins():null,f={},l=urlParams.p;App.initPluginCallback();if(null!=l)for(var q=l.split(";"),l=0;l<q.length;l++){var p=App.pluginRegistry[q[l]];null!=p&&null==f[p]?(f[p]=!0,"undefined"===typeof window.drawDevUrl?mxscript(p):mxscript(drawDevUrl+p)):null!=window.console&&console.log("Unknown plugin:",q[l])}else"0"==urlParams.chrome||EditorUi.isElectronApp||mxscript(App.FOOTER_PLUGIN_URL, +null,null,null,mxClient.IS_SVG);if(null!=k&&0<k.length&&"0"!=urlParams.plugins){for(var q=window.location.protocol+"//"+window.location.host,u=!0,l=0;l<k.length&&u;l++)"/"!=k[l].charAt(0)&&k[l].substring(0,q.length)!=q&&(u=!1);if(u||mxUtils.confirm(mxResources.replacePlaceholders("The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n",[k.join("\n")]).replace(/\\n/g, +"\n")))for(l=0;l<k.length;l++)try{null==f[k[l]]&&(f[p]=!0,mxscript(k[l]))}catch(m){}}}"function"===typeof window.DriveClient&&"undefined"===typeof gapi&&("1"!=urlParams.embed&&"0"!=urlParams.gapi||"1"==urlParams.embed&&"1"==urlParams.gapi)&&isSvgBrowser&&isLocalStorage&&(null==document.documentMode||10<=document.documentMode)?mxscript("https://apis.google.com/js/api.js?onload=DrawGapiClientCallback",null,null,null,mxClient.IS_SVG):"undefined"===typeof window.gapi&&(window.DriveClient=null)}"0"!=urlParams.math&& +Editor.initMath();if("1"==urlParams.configure){var d=window.opener||window.parent,g=function(a){if(a.source==d)try{var b=JSON.parse(a.data);null!=b&&"configure"==b.action&&(mxEvent.removeListener(window,"message",g),Editor.configure(b.config,!0),mxSettings.load(),e())}catch(t){null!=window.console&&console.log("Error in configuration: "+t)}};mxEvent.addListener(window,"message",g);d.postMessage(JSON.stringify({event:"load"}),"*")}else e()};mxUtils.extend(App,EditorUi); App.prototype.defaultUserPicture="https://lh3.googleusercontent.com/-HIzvXUy6QUY/AAAAAAAAAAI/AAAAAAAAAAA/giuR7PQyjEk/photo.jpg?sz=30";App.prototype.shareImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowOTgwMTE3NDA3MjA2ODExODhDNkFGMDBEQkQ0RTgwOSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxMjU2NzdEMTcwRDIxMUUxQjc0MDkxRDhCNUQzOEFGRCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxMjU2NzdEMDcwRDIxMUUxQjc0MDkxRDhCNUQzOEFGRCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowNjgwMTE3NDA3MjA2ODExODcxRkM4MUY1OTFDMjQ5OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowNzgwMTE3NDA3MjA2ODExODhDNkFGMDBEQkQ0RTgwOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PrM/fs0AAADgSURBVHjaYmDAA/7//88MwgzkAKDGFiD+BsQ/QWxSNaf9RwN37twpI8WAS+gGfP78+RpQSoRYA36iG/D379+vQClNdLVMOMz4gi7w79+/n0CKg1gD9qELvH379hzIHGK9oA508ieY8//8+fO5rq4uFCilRKwL1JmYmNhhHEZGRiZ+fn6Q2meEbDYG4u3/cYCfP38uA7kOm0ZOIJ7zn0jw48ePPiDFhmzArv8kgi9fvuwB+w5qwH9ykjswbFSZyM4sEMDPBDTlL5BxkFSd7969OwZ2BZKYGhDzkmjOJ4AAAwBhpRqGnEFb8QAAAABJRU5ErkJggg=="; App.prototype.chevronUpImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDg2NEE3NUY1MUVBMTFFM0I3MUVEMTc0N0YyOUI4QzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDg2NEE3NjA1MUVBMTFFM0I3MUVEMTc0N0YyOUI4QzEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0ODY0QTc1RDUxRUExMUUzQjcxRUQxNzQ3RjI5QjhDMSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0ODY0QTc1RTUxRUExMUUzQjcxRUQxNzQ3RjI5QjhDMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pg+qUokAAAAMUExURQAAANnZ2b+/v////5bgre4AAAAEdFJOU////wBAKqn0AAAAL0lEQVR42mJgRgMMRAswMKAKMDDARBjg8lARBoR6KImkH0wTbygT6YaS4DmAAAMAYPkClOEDDD0AAAAASUVORK5CYII=": IMAGE_PATH+"/chevron-up.png"; @@ -8330,123 +8336,121 @@ App.prototype.chevronDownImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGg App.prototype.formatShowImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODdCREY5REY1NkQ3MTFFNTkyNjNEMTA5NjgwODUyRTgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODdCREY5RTA1NkQ3MTFFNTkyNjNEMTA5NjgwODUyRTgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4N0JERjlERDU2RDcxMUU1OTI2M0QxMDk2ODA4NTJFOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4N0JERjlERTU2RDcxMUU1OTI2M0QxMDk2ODA4NTJFOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PlnMQ/8AAAAJUExURQAAAP///3FxcTfTiAsAAAACdFJOU/8A5bcwSgAAACFJREFUeNpiYEQDDEQJMMABTAAixcQ00ALoDiPRcwABBgB6DADly9Yx8wAAAABJRU5ErkJggg==":IMAGE_PATH+ "/format-show.png"; App.prototype.formatHideImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODdCREY5REI1NkQ3MTFFNTkyNjNEMTA5NjgwODUyRTgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODdCREY5REM1NkQ3MTFFNTkyNjNEMTA5NjgwODUyRTgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4N0JERjlEOTU2RDcxMUU1OTI2M0QxMDk2ODA4NTJFOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4N0JERjlEQTU2RDcxMUU1OTI2M0QxMDk2ODA4NTJFOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqjT9SMAAAAGUExURQAAAP///6XZn90AAAACdFJOU/8A5bcwSgAAAB9JREFUeNpiYEQDDEQJMMABTAAmNdAC6A4j0XMAAQYAcbwA1Xvj1CgAAAAASUVORK5CYII=":IMAGE_PATH+ -"/format-hide.png";App.prototype.fullscreenImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAAAAAClZ7nPAAAAAXRSTlMAQObYZgAAABpJREFUCNdjgAAbGxAy4AEh5gNwBBGByoIBAIueBd12TUjqAAAAAElFTkSuQmCC":IMAGE_PATH+"/fullscreen.png";App.prototype.timeout=25E3;"1"!=urlParams.embed?App.prototype.menubarHeight=60:App.prototype.footerHeight=0;App.initPluginCallback=function(){null==App.DrawPlugins&&(App.DrawPlugins=[],window.Draw={},window.Draw.loadPlugin=function(a){App.DrawPlugins.push(a)})}; +"/format-hide.png";App.prototype.fullscreenImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAAAAAClZ7nPAAAAAXRSTlMAQObYZgAAABpJREFUCNdjgAAbGxAy4AEh5gNwBBGByoIBAIueBd12TUjqAAAAAElFTkSuQmCC":IMAGE_PATH+"/fullscreen.png";App.prototype.timeout=25E3;"1"!=urlParams.embed?App.prototype.menubarHeight=60:App.prototype.footerHeight=0;App.initPluginCallback=function(){null==App.DrawPlugins&&(App.DrawPlugins=[],window.Draw={},window.Draw.loadPlugin=function(b){App.DrawPlugins.push(b)})}; App.prototype.init=function(){EditorUi.prototype.init.apply(this,arguments);this.defaultLibraryName=mxResources.get("untitledLibrary");this.descriptorChangedListener=mxUtils.bind(this,this.descriptorChanged);this.gitHub=mxClient.IS_IE&&10!=document.documentMode&&!mxClient.IS_IE11&&!mxClient.IS_EDGE||"0"==urlParams.gh||"1"==urlParams.embed&&"1"!=urlParams.gh?null:new GitHubClient(this);null!=this.gitHub&&this.gitHub.addListener("userChanged",mxUtils.bind(this,function(){this.updateUserElement();this.restoreLibraries()})); -if("1"!=urlParams.embed||"1"==urlParams.od){var a=mxUtils.bind(this,function(){"undefined"!==typeof OneDrive?(this.oneDrive=new OneDriveClient(this),this.oneDrive.addListener("userChanged",mxUtils.bind(this,function(){this.updateUserElement();this.restoreLibraries()})),this.fireEvent(new mxEventObject("clientLoaded","client",this.oneDrive))):null==window.DrawOneDriveClientCallback&&(window.DrawOneDriveClientCallback=a)});a()}if("1"!=urlParams.embed||"1"==urlParams.tr){var c=mxUtils.bind(this,function(){"undefined"!== -typeof window.Trello?(this.trello=new TrelloClient(this),this.trello.addListener("userChanged",mxUtils.bind(this,function(){this.updateUserElement();this.restoreLibraries()})),this.fireEvent(new mxEventObject("clientLoaded","client",this.trello))):null==window.DrawTrelloClientCallback&&(window.DrawTrelloClientCallback=c)});c()}if("1"!=urlParams.embed||"1"==urlParams.gapi){var b=mxUtils.bind(this,function(){if("undefined"!==typeof gapi){var a=mxUtils.bind(this,function(){this.drive=new DriveClient(this); +if("1"!=urlParams.embed||"1"==urlParams.od){var b=mxUtils.bind(this,function(){"undefined"!==typeof OneDrive?(this.oneDrive=new OneDriveClient(this),this.oneDrive.addListener("userChanged",mxUtils.bind(this,function(){this.updateUserElement();this.restoreLibraries()})),this.fireEvent(new mxEventObject("clientLoaded","client",this.oneDrive))):null==window.DrawOneDriveClientCallback&&(window.DrawOneDriveClientCallback=b)});b()}if("1"!=urlParams.embed||"1"==urlParams.tr){var c=mxUtils.bind(this,function(){"undefined"!== +typeof window.Trello?(this.trello=new TrelloClient(this),this.trello.addListener("userChanged",mxUtils.bind(this,function(){this.updateUserElement();this.restoreLibraries()})),this.fireEvent(new mxEventObject("clientLoaded","client",this.trello))):null==window.DrawTrelloClientCallback&&(window.DrawTrelloClientCallback=c)});c()}if("1"!=urlParams.embed||"1"==urlParams.gapi){var a=mxUtils.bind(this,function(){if("undefined"!==typeof gapi){var b=mxUtils.bind(this,function(){this.drive=new DriveClient(this); "420247213240"==this.drive.appId&&this.editor.addListener("fileLoaded",mxUtils.bind(this,function(){var a=this.getCurrentFile();null!=a&&a.constructor==DriveFile&&(a=document.getElementById("geFooterItem2"),null!=a&&(a.innerHTML='<a href="https://support.draw.io/display/DO/2014/11/27/Switching+application+in+Google+Drive" target="_blank" title="IMPORTANT NOTICE">IMPORTANT NOTICE</a>'))}));this.drive.addListener("userChanged",mxUtils.bind(this,function(){this.updateUserElement();this.restoreLibraries(); -this.checkLicense()}));this.fireEvent(new mxEventObject("clientLoaded","client",this.drive))});null!=window.DrawGapiClientCallback?(gapi.load(("0"!=urlParams.picker?"picker,":"")+"auth:"+App.GOOGLE_APIS,mxUtils.bind(this,function(b){null!=gapi.client&&gapi.client.load("drive","v2",mxUtils.bind(this,function(){gapi.auth.init(mxUtils.bind(this,function(){null!=gapi.client.drive&&a()}))}))})),window.DrawGapiClientCallback=null):a()}else null==window.DrawGapiClientCallback&&(window.DrawGapiClientCallback= -b)});b()}if("1"!=urlParams.embed||"1"==urlParams.db){var f=mxUtils.bind(this,function(){"function"===typeof Dropbox&&"undefined"!==typeof Dropbox.choose?(window.DrawDropboxClientCallback=null,this.dropbox=new DropboxClient(this),this.dropbox.addListener("userChanged",mxUtils.bind(this,function(){this.updateUserElement();this.restoreLibraries()})),this.fireEvent(new mxEventObject("clientLoaded","client",this.dropbox))):null==window.DrawDropboxClientCallback&&(window.DrawDropboxClientCallback=f)}); -f()}"1"!=urlParams.embed?(this.bg=this.createBackground(),document.body.appendChild(this.bg),this.diagramContainer.style.visibility="hidden",this.formatContainer.style.visibility="hidden",this.hsplit.style.display="none",this.sidebarContainer.style.display="none",this.sidebarFooterContainer.style.display="none","1"==urlParams.local?this.setMode(App.MODE_DEVICE):this.mode=App.mode):null!=this.menubar&&(this.menubar.container.style.paddingTop="0px");this.updateHeader();null!=this.menubar&&(this.buttonContainer= -document.createElement("div"),this.buttonContainer.style.display="inline-block",this.buttonContainer.style.paddingRight="48px",this.buttonContainer.style.position="absolute",this.buttonContainer.style.right="0px",this.menubar.container.appendChild(this.buttonContainer));"atlas"==uiTheme&&null!=this.menubar&&(null!=this.toggleElement&&(this.toggleElement.click(),this.toggleElement.style.display="none"),this.icon=document.createElement("img"),this.icon.setAttribute("src",IMAGE_PATH+"/logo-flat-small.png"), -this.icon.setAttribute("title",mxResources.get("draw.io")),this.icon.style.paddingTop="11px",this.icon.style.marginLeft="4px",this.icon.style.marginRight="6px",mxClient.IS_QUIRKS&&(this.icon.style.marginTop="12px"),this.menubar.container.insertBefore(this.icon,this.menubar.container.firstChild))}; -App.prototype.isDriveDomain=function(){return"0"!=urlParams.drive&&("test.draw.io"==window.location.hostname||"cdn.draw.io"==window.location.hostname||"www.draw.io"==window.location.hostname||"drive.draw.io"==window.location.hostname||"jgraph.github.io"==window.location.hostname)};App.prototype.isLegacyDriveDomain=function(){return 0==urlParams.drive||"legacy.draw.io"==window.location.hostname}; -App.prototype.getPusher=function(){null==this.pusher&&"function"===typeof window.Pusher&&(this.pusher=new Pusher(App.PUSHER_KEY,{cluster:App.PUSHER_CLUSTER,encrypted:!0}));return this.pusher}; -App.prototype.checkLicense=function(){var a=this.drive.getUser(),c=("1"==urlParams.dev?urlParams.lic:null)||(null!=a?a.email:null);if(!this.isOffline()&&!this.editor.chromeless&&null!=c){var b=c.lastIndexOf("@"),f=c;0<=b&&(f=c.substring(b+1),c=this.crc32(c.substring(0,b))+"@"+f);mxUtils.post("/license","domain="+encodeURIComponent(f)+"&email="+encodeURIComponent(c)+"&ds="+encodeURIComponent(a.displayName)+"&lc="+encodeURIComponent(a.locale)+"&ts="+(new Date).getTime(),mxUtils.bind(this,function(a){}))}}; -App.prototype.handleLicense=function(a,c){var b=document.getElementById("geFooter"),f=null;if(null!=b&&null!=a)if(f=a.expiry,null!=a.footer)b.innerHTML=decodeURIComponent(a.footer);else if(this.hideFooter(),null!=f&&"never"!=f){var k=new Date(Date.parse(f)),h=Math.round((k-Date.now())/864E5);if(90>h){var l="https://support.draw.io/display/DKB/draw.io+footer+state+that+license+is+expiring+on+Google+For+Work+account?domain="+encodeURIComponent(c);b.style.height="100%";b.style.margin="0px";b.style.display= -"";0>h?(this.footerHeight=80,b.innerHTML='<table height="100%"><tr><td valign="middle" align="center" class="geStatusAlert geBlink"><a href="'+l+'" style="padding-top:16px;" target="_blank"><img border="0" src="'+mxGraph.prototype.warningImage.src+'" align="top" style="margin-right:6px">'+mxResources.get("licenseHasExpired",[c,k.toLocaleDateString()])+"</a></td></tr></table>"):(this.footerHeight=46,b.innerHTML='<table height="100%"><tr><td valign="middle" align="center" class="geStatusAlert"><a href="'+ -l+'" target="_blank"><img border="0" src="'+mxGraph.prototype.warningImage.src+'" align="top" style="margin-right:6px">'+mxResources.get("licenseWillExpire",[c,k.toLocaleDateString()])+"</a></td></tr></table>");this.refresh()}}return f};App.prototype.getEditBlankXml=function(){var a=this.getCurrentFile();return null!=a&&this.editor.isChromelessView()&&this.editor.graph.isLightboxView()?a.getData():this.getFileData(!0)}; -App.prototype.updateActionStates=function(){EditorUi.prototype.updateActionStates.apply(this,arguments);var a=this.getCurrentFile();this.actions.get("revisionHistory").setEnabled(null!=a&&(a.constructor==DriveFile&&a.isEditable()||a.constructor==DropboxFile))};App.prototype.updateDraft=function(){isLocalStorage&&null!=localStorage&&localStorage.setItem(".draft",JSON.stringify({modified:(new Date).getTime(),data:this.getFileData()}))};App.prototype.getDraft=function(){return null}; -App.prototype.addRecent=function(a){if(isLocalStorage&&null!=localStorage){var c=this.getRecent();if(null==c)c=[];else for(var b=0;b<c.length;b++)c[b].id==a.id&&c.splice(b,1);null!=c&&(c.unshift(a),c=c.slice(0,10),localStorage.setItem(".recent",JSON.stringify(c)))}};App.prototype.getRecent=function(){if(isLocalStorage&&null!=localStorage){try{var a=localStorage.getItem(".recent");if(null!=a)return JSON.parse(a)}catch(c){}return null}}; -App.prototype.resetRecent=function(a){if(isLocalStorage&&null!=localStorage)try{localStorage.removeItem(".recent")}catch(c){}};App.prototype.removeDraft=function(){if(isLocalStorage&&null!=localStorage&&"0"==urlParams.splash)try{localStorage.removeItem(".draft")}catch(a){}}; -App.prototype.onBeforeUnload=function(){if("1"==urlParams.embed&&this.editor.modified)return mxResources.get("allChangesLost");var a=this.getCurrentFile();if(null!=a)if(a.constructor!=LocalFile||""!=a.getHash()||a.isModified()||"1"==urlParams.nowarn||this.isDiagramEmpty()||null!=urlParams.url||this.editor.isChromelessView()){if(a.isModified())return mxResources.get("allChangesLost");a.close(!0)}else return mxResources.get("ensureDataSaved")}; -App.prototype.updateDocumentTitle=function(){if(!this.editor.graph.isLightboxView()){var a=this.editor.appName,c=this.getCurrentFile();this.isOfflineApp()&&(a+=" app");null!=c&&(a=(null!=c.getTitle()?c.getTitle():this.defaultFilename)+" - "+a);document.title=a}};App.prototype.createCrcTable=function(){for(var a=[],c,b=0;256>b;b++){c=b;for(var f=0;8>f;f++)c=c&1?3988292384^c>>>1:c>>>1;a[b]=c}return a}; -App.prototype.getThumbnail=function(a,c){var b=!1;try{null==this.thumbImageCache&&(this.thumbImageCache={});var f=this.editor.graph;if(null!=this.pages&&this.currentPage!=this.pages[0]){var f=this.createTemporaryGraph(f.getStylesheet()),k=f.getGlobalVariable,h=this.pages[0];f.getGlobalVariable=function(a){return"page"==a?h.getName():"pagenumber"==a?1:k.apply(this,arguments)};document.body.appendChild(f.container);f.model.setRoot(h.root)}if(mxClient.IS_CHROMEAPP||!f.mathEnabled&&this.useCanvasForExport)this.exportToCanvas(mxUtils.bind(this, -function(a){f!=this.editor.graph&&f.container.parentNode.removeChild(f.container);c(a)}),a,this.thumbImageCache,"#ffffff",function(){c()},null,null,null,null,null,null,f),b=!0;else if(this.canvasSupported&&null!=this.getCurrentFile()){var l=document.createElement("canvas"),t=f.getGraphBounds(),p=a/t.width,p=Math.min(1,Math.min(3*a/(4*t.height),p)),d=Math.floor(t.x),g=Math.floor(t.y);l.setAttribute("width",Math.ceil(p*(t.width+4)));l.setAttribute("height",Math.ceil(p*(t.height+4)));var n=l.getContext("2d"); -n.scale(p,p);n.translate(-d,-g);var q=f.background;if(null==q||""==q||q==mxConstants.NONE)q="#ffffff";n.save();n.fillStyle=q;n.fillRect(d,g,Math.ceil(t.width+4),Math.ceil(t.height+4));n.restore();var u=new mxJsCanvas(l),v=new mxAsyncCanvas(this.thumbImageCache);u.images=this.thumbImageCache.images;var w=new mxImageExport;w.drawShape=function(a,b){a.shape instanceof mxShape&&a.shape.checkBounds()&&(b.save(),b.translate(.5,.5),a.shape.paint(b),b.translate(-.5,-.5),b.restore())};w.drawText=function(a, -b){};w.drawState(f.getView().getState(f.model.root),v);v.finish(mxUtils.bind(this,function(){w.drawState(f.getView().getState(f.model.root),u);f!=this.editor.graph&&f.container.parentNode.removeChild(f.container);c(l)}));b=!0}}catch(y){f!=this.editor.graph&&f.container.parentNode.removeChild(f.container)}return b}; -App.prototype.createBackground=function(){var a=this.createDiv("background");a.style.position="absolute";a.style.background="white";a.style.left="0px";a.style.top="0px";a.style.bottom="0px";a.style.right="0px";mxUtils.setOpacity(a,100);mxClient.IS_QUIRKS&&new mxDivResizer(a);return a}; -(function(){var a=EditorUi.prototype.setMode;App.prototype.setMode=function(c,b){a.apply(this,arguments);null!=this.mode&&(Editor.useLocalStorage=this.mode==App.MODE_BROWSER);if(b)if(isLocalStorage)localStorage.setItem(".mode",c);else if("undefined"!=typeof Storage){var f=new Date;f.setYear(f.getFullYear()+1);document.cookie="MODE="+c+"; expires="+f.toUTCString()}null!=this.appIcon&&(f=this.getCurrentFile(),c=null!=f?f.getMode():null,c==App.MODE_GOOGLE?(this.appIcon.setAttribute("title",mxResources.get("openIt", -[mxResources.get("googleDrive")])),this.appIcon.style.cursor="pointer"):c==App.MODE_DROPBOX?(this.appIcon.setAttribute("title",mxResources.get("openIt",[mxResources.get("dropbox")])),this.appIcon.style.cursor="pointer"):c==App.MODE_ONEDRIVE?(this.appIcon.setAttribute("title",mxResources.get("openIt",[mxResources.get("oneDrive")])),this.appIcon.style.cursor="pointer"):(this.appIcon.removeAttribute("title"),this.appIcon.style.cursor="default"))}})(); -App.prototype.appIconClicked=function(a){if(mxEvent.isAltDown(a))this.showSplash(!0);else{var c=this.getCurrentFile(),b=null!=c?c.getMode():null;b==App.MODE_GOOGLE?null!=c.desc&&null!=c.desc.parents&&0<c.desc.parents.length?this.openLink("https://drive.google.com/drive/folders/"+c.desc.parents[0].id):this.openLink("https://drive.google.com/?authuser=0"):b==App.MODE_DROPBOX?this.openLink("https://www.dropbox.com/"):b==App.MODE_ONEDRIVE?this.openLink("https://onedrive.live.com/"):b==App.MODE_TRELLO? -this.openLink("https://trello.com/"):b==App.MODE_GITHUB&&(null!=c&&c.constructor==GitHubFile?this.openLink(c.meta.html_url):this.openLink("https://github.com/"))}mxEvent.consume(a)};App.prototype.clearMode=function(){if(isLocalStorage)localStorage.removeItem(".mode");else if("undefined"!=typeof Storage){var a=new Date;a.setYear(a.getFullYear()-1);document.cookie="MODE=; expires="+a.toUTCString()}}; -App.prototype.getDiagramId=function(){var a=window.location.hash;null!=a&&0<a.length&&(a=a.substring(1));return a}; -App.prototype.open=function(){try{if(null!=window.opener){var a=urlParams.create;null!=a&&(a=decodeURIComponent(a));if(null!=a&&0<a.length&&"http://"!=a.substring(0,7)&&"https://"!=a.substring(0,8)){var c=mxUtils.parseXml(window.opener[a]);this.editor.setGraphXml(c.documentElement)}else null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(a,c,k){this.spinner.stop();null==c&&(c=urlParams.title,k=!0,c=null!=c?decodeURIComponent(c):this.defaultFilename);0<(this.useCanvasForExport? --1:".png"==c.substring(c.length-4))&&(c=c.substring(0,c.length-4)+".xml");this.fileLoaded(mxClient.IS_IOS?new StorageFile(this,a,c):new LocalFile(this,a,c,k))}))}}catch(b){}}; -App.prototype.loadGapi=function(a){"undefined"!==typeof gapi&&gapi.load(("0"!=urlParams.picker?"picker,":"")+"auth:"+App.GOOGLE_APIS,mxUtils.bind(this,function(c){null==gapi.client?(this.mode=this.drive=null,a()):gapi.client.load("drive","v2",mxUtils.bind(this,function(){gapi.auth.init(mxUtils.bind(this,function(){null==gapi.client.drive&&(this.mode=this.drive=null);a()}))}))}))}; -App.prototype.load=function(){if("1"!=urlParams.embed){if(this.spinner.spin(document.body,mxResources.get("starting"))){try{this.stateArg=null!=urlParams.state&&null!=this.drive?JSON.parse(decodeURIComponent(urlParams.state)):null}catch(a){}this.editor.graph.setEnabled(null!=this.getCurrentFile());null!=window.location.hash&&0!=window.location.hash.length||null==this.drive||null==this.stateArg||null==this.stateArg.userId||this.drive.setUserId(this.stateArg.userId);null!=urlParams.fileId?(window.location.hash= +this.checkLicense()}));this.fireEvent(new mxEventObject("clientLoaded","client",this.drive))});null!=window.DrawGapiClientCallback?(gapi.load(("0"!=urlParams.picker?"picker,":"")+"auth:"+App.GOOGLE_APIS,mxUtils.bind(this,function(a){null!=gapi.client&&gapi.client.load("drive","v2",mxUtils.bind(this,function(){gapi.auth.init(mxUtils.bind(this,function(){null!=gapi.client.drive&&b()}))}))})),window.DrawGapiClientCallback=null):b()}else null==window.DrawGapiClientCallback&&(window.DrawGapiClientCallback= +a)});a()}if("1"!=urlParams.embed||"1"==urlParams.db){var e=mxUtils.bind(this,function(){"function"===typeof Dropbox&&"undefined"!==typeof Dropbox.choose?(window.DrawDropboxClientCallback=null,this.dropbox=new DropboxClient(this),this.dropbox.addListener("userChanged",mxUtils.bind(this,function(){this.updateUserElement();this.restoreLibraries()})),this.fireEvent(new mxEventObject("clientLoaded","client",this.dropbox))):null==window.DrawDropboxClientCallback&&(window.DrawDropboxClientCallback=e)}); +e()}if("1"!=urlParams.embed){this.bg=this.createBackground();document.body.appendChild(this.bg);this.diagramContainer.style.visibility="hidden";this.formatContainer.style.visibility="hidden";this.hsplit.style.display="none";this.sidebarContainer.style.display="none";this.sidebarFooterContainer.style.display="none";"1"==urlParams.local?this.setMode(App.MODE_DEVICE):this.mode=App.mode;var k=!0,f=window.setTimeout(mxUtils.bind(this,function(){k=!1;EditorUi.logEvent({category:"Cache",action:"alive",label:408})}), +this.timeout),l=(new Date).getTime();mxUtils.get(EditorUi.cacheUrl+"?alive",mxUtils.bind(this,function(a){window.clearTimeout(f);k&&EditorUi.logEvent({category:"Cache",action:"alive",label:a.getStatus()+"."+((new Date).getTime()-l)})}))}else null!=this.menubar&&(this.menubar.container.style.paddingTop="0px");this.updateHeader();null!=this.menubar&&(this.buttonContainer=document.createElement("div"),this.buttonContainer.style.display="inline-block",this.buttonContainer.style.paddingRight="48px",this.buttonContainer.style.position= +"absolute",this.buttonContainer.style.right="0px",this.menubar.container.appendChild(this.buttonContainer));"atlas"==uiTheme&&null!=this.menubar&&(null!=this.toggleElement&&(this.toggleElement.click(),this.toggleElement.style.display="none"),this.icon=document.createElement("img"),this.icon.setAttribute("src",IMAGE_PATH+"/logo-flat-small.png"),this.icon.setAttribute("title",mxResources.get("draw.io")),this.icon.style.paddingTop="11px",this.icon.style.marginLeft="4px",this.icon.style.marginRight="6px", +mxClient.IS_QUIRKS&&(this.icon.style.marginTop="12px"),this.menubar.container.insertBefore(this.icon,this.menubar.container.firstChild))};App.prototype.isDriveDomain=function(){return"0"!=urlParams.drive&&("test.draw.io"==window.location.hostname||"cdn.draw.io"==window.location.hostname||"www.draw.io"==window.location.hostname||"drive.draw.io"==window.location.hostname||"jgraph.github.io"==window.location.hostname)}; +App.prototype.isLegacyDriveDomain=function(){return 0==urlParams.drive||"legacy.draw.io"==window.location.hostname};App.prototype.getPusher=function(){null==this.pusher&&"function"===typeof window.Pusher&&(this.pusher=new Pusher(App.PUSHER_KEY,{cluster:App.PUSHER_CLUSTER,encrypted:!0}));return this.pusher}; +App.prototype.checkLicense=function(){var b=this.drive.getUser(),c=("1"==urlParams.dev?urlParams.lic:null)||(null!=b?b.email:null);if(!this.isOffline()&&!this.editor.chromeless&&null!=c){var a=c.lastIndexOf("@"),e=c;0<=a&&(e=c.substring(a+1),c=this.crc32(c.substring(0,a))+"@"+e);mxUtils.post("/license","domain="+encodeURIComponent(e)+"&email="+encodeURIComponent(c)+"&ds="+encodeURIComponent(b.displayName)+"&lc="+encodeURIComponent(b.locale)+"&ts="+(new Date).getTime(),mxUtils.bind(this,function(a){}))}}; +App.prototype.handleLicense=function(b,c){var a=document.getElementById("geFooter"),e=null;if(null!=a&&null!=b)if(e=b.expiry,null!=b.footer)a.innerHTML=decodeURIComponent(b.footer);else if(this.hideFooter(),null!=e&&"never"!=e){var k=new Date(Date.parse(e)),f=Math.round((k-Date.now())/864E5);if(90>f){var l="https://support.draw.io/display/DKB/draw.io+footer+state+that+license+is+expiring+on+Google+For+Work+account?domain="+encodeURIComponent(c);a.style.height="100%";a.style.margin="0px";a.style.display= +"";0>f?(this.footerHeight=80,a.innerHTML='<table height="100%"><tr><td valign="middle" align="center" class="geStatusAlert geBlink"><a href="'+l+'" style="padding-top:16px;" target="_blank"><img border="0" src="'+mxGraph.prototype.warningImage.src+'" align="top" style="margin-right:6px">'+mxResources.get("licenseHasExpired",[c,k.toLocaleDateString()])+"</a></td></tr></table>"):(this.footerHeight=46,a.innerHTML='<table height="100%"><tr><td valign="middle" align="center" class="geStatusAlert"><a href="'+ +l+'" target="_blank"><img border="0" src="'+mxGraph.prototype.warningImage.src+'" align="top" style="margin-right:6px">'+mxResources.get("licenseWillExpire",[c,k.toLocaleDateString()])+"</a></td></tr></table>");this.refresh()}}return e};App.prototype.getEditBlankXml=function(){var b=this.getCurrentFile();return null!=b&&this.editor.isChromelessView()&&this.editor.graph.isLightboxView()?b.getData():this.getFileData(!0)}; +App.prototype.updateActionStates=function(){EditorUi.prototype.updateActionStates.apply(this,arguments);var b=this.getCurrentFile();this.actions.get("revisionHistory").setEnabled(null!=b&&(b.constructor==DriveFile&&b.isEditable()||b.constructor==DropboxFile))};App.prototype.updateDraft=function(){isLocalStorage&&null!=localStorage&&localStorage.setItem(".draft",JSON.stringify({modified:(new Date).getTime(),data:this.getFileData()}))};App.prototype.getDraft=function(){return null}; +App.prototype.addRecent=function(b){if(isLocalStorage&&null!=localStorage){var c=this.getRecent();if(null==c)c=[];else for(var a=0;a<c.length;a++)c[a].id==b.id&&c.splice(a,1);null!=c&&(c.unshift(b),c=c.slice(0,10),localStorage.setItem(".recent",JSON.stringify(c)))}};App.prototype.getRecent=function(){if(isLocalStorage&&null!=localStorage){try{var b=localStorage.getItem(".recent");if(null!=b)return JSON.parse(b)}catch(c){}return null}}; +App.prototype.resetRecent=function(b){if(isLocalStorage&&null!=localStorage)try{localStorage.removeItem(".recent")}catch(c){}};App.prototype.removeDraft=function(){if(isLocalStorage&&null!=localStorage&&"0"==urlParams.splash)try{localStorage.removeItem(".draft")}catch(b){}}; +App.prototype.onBeforeUnload=function(){if("1"==urlParams.embed&&this.editor.modified)return mxResources.get("allChangesLost");var b=this.getCurrentFile();if(null!=b)if(b.constructor!=LocalFile||""!=b.getHash()||b.isModified()||"1"==urlParams.nowarn||this.isDiagramEmpty()||null!=urlParams.url||this.editor.isChromelessView()){if(b.isModified())return mxResources.get("allChangesLost");b.close(!0)}else return mxResources.get("ensureDataSaved")}; +App.prototype.updateDocumentTitle=function(){if(!this.editor.graph.isLightboxView()){var b=this.editor.appName,c=this.getCurrentFile();this.isOfflineApp()&&(b+=" app");null!=c&&(b=(null!=c.getTitle()?c.getTitle():this.defaultFilename)+" - "+b);document.title=b}};App.prototype.createCrcTable=function(){for(var b=[],c,a=0;256>a;a++){c=a;for(var e=0;8>e;e++)c=c&1?3988292384^c>>>1:c>>>1;b[a]=c}return b}; +App.prototype.getThumbnail=function(b,c){var a=!1;try{null==this.thumbImageCache&&(this.thumbImageCache={});var e=this.editor.graph;if(null!=this.pages&&this.currentPage!=this.pages[0]){var e=this.createTemporaryGraph(e.getStylesheet()),k=e.getGlobalVariable,f=this.pages[0];e.getGlobalVariable=function(a){return"page"==a?f.getName():"pagenumber"==a?1:k.apply(this,arguments)};document.body.appendChild(e.container);e.model.setRoot(f.root)}if(mxClient.IS_CHROMEAPP||!e.mathEnabled&&this.useCanvasForExport)this.exportToCanvas(mxUtils.bind(this, +function(a){e!=this.editor.graph&&e.container.parentNode.removeChild(e.container);c(a)}),b,this.thumbImageCache,"#ffffff",function(){c()},null,null,null,null,null,null,e),a=!0;else if(this.canvasSupported&&null!=this.getCurrentFile()){var l=document.createElement("canvas"),q=e.getGraphBounds(),p=b/q.width,p=Math.min(1,Math.min(3*b/(4*q.height),p)),u=Math.floor(q.x),d=Math.floor(q.y);l.setAttribute("width",Math.ceil(p*(q.width+4)));l.setAttribute("height",Math.ceil(p*(q.height+4)));var g=l.getContext("2d"); +g.scale(p,p);g.translate(-u,-d);var m=e.background;if(null==m||""==m||m==mxConstants.NONE)m="#ffffff";g.save();g.fillStyle=m;g.fillRect(u,d,Math.ceil(q.width+4),Math.ceil(q.height+4));g.restore();var v=new mxJsCanvas(l),t=new mxAsyncCanvas(this.thumbImageCache);v.images=this.thumbImageCache.images;var y=new mxImageExport;y.drawShape=function(a,b){a.shape instanceof mxShape&&a.shape.checkBounds()&&(b.save(),b.translate(.5,.5),a.shape.paint(b),b.translate(-.5,-.5),b.restore())};y.drawText=function(a, +b){};y.drawState(e.getView().getState(e.model.root),t);t.finish(mxUtils.bind(this,function(){y.drawState(e.getView().getState(e.model.root),v);e!=this.editor.graph&&e.container.parentNode.removeChild(e.container);c(l)}));a=!0}}catch(B){e!=this.editor.graph&&e.container.parentNode.removeChild(e.container)}return a}; +App.prototype.createBackground=function(){var b=this.createDiv("background");b.style.position="absolute";b.style.background="white";b.style.left="0px";b.style.top="0px";b.style.bottom="0px";b.style.right="0px";mxUtils.setOpacity(b,100);mxClient.IS_QUIRKS&&new mxDivResizer(b);return b}; +(function(){var b=EditorUi.prototype.setMode;App.prototype.setMode=function(c,a){b.apply(this,arguments);null!=this.mode&&(Editor.useLocalStorage=this.mode==App.MODE_BROWSER);if(null!=this.appIcon){var e=this.getCurrentFile();c=null!=e?e.getMode():c;c==App.MODE_GOOGLE?(this.appIcon.setAttribute("title",mxResources.get("openIt",[mxResources.get("googleDrive")])),this.appIcon.style.cursor="pointer"):c==App.MODE_DROPBOX?(this.appIcon.setAttribute("title",mxResources.get("openIt",[mxResources.get("dropbox")])), +this.appIcon.style.cursor="pointer"):c==App.MODE_ONEDRIVE?(this.appIcon.setAttribute("title",mxResources.get("openIt",[mxResources.get("oneDrive")])),this.appIcon.style.cursor="pointer"):(this.appIcon.removeAttribute("title"),this.appIcon.style.cursor="default")}if(a)try{if(isLocalStorage)localStorage.setItem(".mode",c);else if("undefined"!=typeof Storage){var k=new Date;k.setYear(k.getFullYear()+1);document.cookie="MODE="+c+"; expires="+k.toUTCString()}}catch(f){}}})(); +App.prototype.appIconClicked=function(b){if(mxEvent.isAltDown(b))this.showSplash(!0);else{var c=this.getCurrentFile(),a=null!=c?c.getMode():null;a==App.MODE_GOOGLE?null!=c.desc&&null!=c.desc.parents&&0<c.desc.parents.length?this.openLink("https://drive.google.com/drive/folders/"+c.desc.parents[0].id):this.openLink("https://drive.google.com/?authuser=0"):a==App.MODE_DROPBOX?this.openLink("https://www.dropbox.com/"):a==App.MODE_ONEDRIVE?this.openLink("https://onedrive.live.com/"):a==App.MODE_TRELLO? +this.openLink("https://trello.com/"):a==App.MODE_GITHUB&&(null!=c&&c.constructor==GitHubFile?this.openLink(c.meta.html_url):this.openLink("https://github.com/"))}mxEvent.consume(b)};App.prototype.clearMode=function(){if(isLocalStorage)localStorage.removeItem(".mode");else if("undefined"!=typeof Storage){var b=new Date;b.setYear(b.getFullYear()-1);document.cookie="MODE=; expires="+b.toUTCString()}}; +App.prototype.getDiagramId=function(){var b=window.location.hash;null!=b&&0<b.length&&(b=b.substring(1));return b}; +App.prototype.open=function(){try{if(null!=window.opener){var b=urlParams.create;null!=b&&(b=decodeURIComponent(b));if(null!=b&&0<b.length&&"http://"!=b.substring(0,7)&&"https://"!=b.substring(0,8)){var c=mxUtils.parseXml(window.opener[b]);this.editor.setGraphXml(c.documentElement)}else null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(a,b,c){this.spinner.stop();null==b&&(b=urlParams.title,c=!0,b=null!=b?decodeURIComponent(b):this.defaultFilename);0<(this.useCanvasForExport? +-1:".png"==b.substring(b.length-4))&&(b=b.substring(0,b.length-4)+".xml");this.fileLoaded(mxClient.IS_IOS?new StorageFile(this,a,b):new LocalFile(this,a,b,c))}))}}catch(a){}}; +App.prototype.loadGapi=function(b){"undefined"!==typeof gapi&&gapi.load(("0"!=urlParams.picker?"picker,":"")+"auth:"+App.GOOGLE_APIS,mxUtils.bind(this,function(c){null==gapi.client?(this.mode=this.drive=null,b()):gapi.client.load("drive","v2",mxUtils.bind(this,function(){gapi.auth.init(mxUtils.bind(this,function(){null==gapi.client.drive&&(this.mode=this.drive=null);b()}))}))}))}; +App.prototype.load=function(){if("1"!=urlParams.embed){if(this.spinner.spin(document.body,mxResources.get("starting"))){try{this.stateArg=null!=urlParams.state&&null!=this.drive?JSON.parse(decodeURIComponent(urlParams.state)):null}catch(b){}this.editor.graph.setEnabled(null!=this.getCurrentFile());null!=window.location.hash&&0!=window.location.hash.length||null==this.drive||null==this.stateArg||null==this.stateArg.userId||this.drive.setUserId(this.stateArg.userId);null!=urlParams.fileId?(window.location.hash= "G"+urlParams.fileId,window.location.search=this.getSearch(["fileId"])):null==this.drive?(this.mode==App.MODE_GOOGLE&&(this.mode=null),this.start()):this.loadGapi(mxUtils.bind(this,function(){this.start()}))}}else this.restoreLibraries(),"1"==urlParams.gapi&&this.loadGapi(function(){})}; -App.prototype.showRefreshDialog=function(a,c){if(!this.showingRefreshDialog&&(this.showingRefreshDialog=!0,this.showError(a||mxResources.get("externalChanges"),c||mxResources.get("redirectToNewApp"),mxResources.get("refresh"),mxUtils.bind(this,function(){var a=this.getCurrentFile();null!=a&&a.setModified(!1);this.spinner.spin(document.body,mxResources.get("connecting"));this.editor.graph.setEnabled(!1);window.location.reload()}),null,null,null,null,null,340,180),null!=this.dialog&&null!=this.dialog.container)){var b= -this.createRealtimeNotice();b.style.left="0";b.style.right="0";b.style.borderRadius="0";b.style.borderLeftStyle="none";b.style.borderRightStyle="none";b.style.marginBottom="26px";b.style.padding="8px 0 8px 0";this.dialog.container.appendChild(b)}}; -App.prototype.showAlert=function(a){if(null!=a&&0<a.length){var c=document.createElement("div");c.className="geAlert";c.style.zIndex=2E9;c.style.left="50%";c.style.top="-100%";mxUtils.setPrefixedStyle(c.style,"transform","translate(-50%,0%)");mxUtils.setPrefixedStyle(c.style,"transition","all 1s ease");c.innerHTML=a;a=document.createElement("a");a.className="geAlertLink";a.style.textAlign="right";a.style.marginTop="20px";a.style.display="block";a.setAttribute("title",mxResources.get("close"));a.innerHTML= -mxResources.get("close");c.appendChild(a);mxEvent.addListener(a,"click",function(a){null!=c.parentNode&&(c.parentNode.removeChild(c),mxEvent.consume(a))});document.body.appendChild(c);window.setTimeout(function(){c.style.top="30px"},10);window.setTimeout(function(){mxUtils.setPrefixedStyle(c.style,"transition","all 2s ease");c.style.opacity="0";window.setTimeout(function(){null!=c.parentNode&&c.parentNode.removeChild(c)},2E3)},15E3)}}; -App.prototype.start=function(){this.bg.parentNode.removeChild(this.bg);this.restoreLibraries();this.spinner.stop();try{if("1"!=urlParams.client&&"1"!=urlParams.embed&&mxEvent.addListener(window,"hashchange",mxUtils.bind(this,function(a){try{var b=this.getDiagramId(),c=this.getCurrentFile();null!=c&&c.getHash()==b||this.loadFile(b,!0)}catch(t){null!=document.body&&this.handleError(t,mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){var a=this.getCurrentFile();window.location.hash=null!= -a?a.getHash():""}))}})),(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.url)this.loadFile("U"+urlParams.url,!0);else if(null==this.getCurrentFile()){var a=mxUtils.bind(this,function(){if("1"==urlParams.client&&(null==window.location.hash||0==window.location.hash.length||"#P"==window.location.hash.substring(0,2))){var a=mxUtils.bind(this,function(a){"data:image/png;base64,"==a.substring(0,22)&&(a=this.extractGraphModelFromPng(a));var b=urlParams.title,b=null!=b?decodeURIComponent(b): -this.defaultFilename;a=new LocalFile(this,a,b,!0);null!=window.location.hash&&"#P"==window.location.hash.substring(0,2)&&(a.getHash=function(){return window.location.hash.substring(1)});this.fileLoaded(a);this.getCurrentFile().setModified(!this.editor.chromeless)}),b=window.opener||window.parent;if(b!=window){var c=urlParams.create;null!=c?a(b[decodeURIComponent(c)]):(c=urlParams.data,null!=c?a(decodeURIComponent(c)):this.installMessageHandler(mxUtils.bind(this,function(c,f){f.source==b&&a(c)})))}}else if(null== -this.dialog)if("1"==urlParams.demo)c=Editor.useLocalStorage,this.createFile(this.defaultFilename,null,null,null,null,null,null,!0),Editor.useLocalStorage=c;else{c=!1;try{c=null!=window.opener&&null!=window.opener.openFile}catch(d){}if(c)this.spinner.spin(document.body,mxResources.get("loading"));else if(c=this.getDiagramId(),"0"!=urlParams.splash||null!=c&&0!=c.length)this.loadFile(c);else if(!mxClient.IS_CHROMEAPP){var f=this.getDraft(),p=null!=f?f.data:this.getFileData(),c=Editor.useLocalStorage; -this.createFile(this.defaultFilename,p,null,null,null,null,null,!0);Editor.useLocalStorage=c;null!=f&&(c=this.getCurrentFile(),null!=c&&c.addUnsavedStatus())}}}),c=decodeURIComponent(urlParams.create||"");if((null==window.location.hash||1>=window.location.hash.length)&&null!=c&&0<c.length&&this.spinner.spin(document.body,mxResources.get("loading"))){var b=mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("reconnecting"))&&(window.location.search=this.getSearch(["create", -"title"]))}),f=mxUtils.bind(this,function(a){this.spinner.stop();if("0"!=urlParams.splash){this.fileLoaded(new LocalFile(this,a,null));this.editor.graph.setEnabled(!1);this.mode=urlParams.mode;var b=urlParams.title,b=null!=b?decodeURIComponent(b):this.defaultFilename;a=this.getServiceCount(!0);var c=4>=a?4:3,b=new CreateDialog(this,b,mxUtils.bind(this,function(a,b){if(null==b){this.hideDialog();var c=Editor.useLocalStorage;this.createFile(0<a.length?a:this.defaultFilename,this.getFileData(),null, -null,null,!0,null,!0);Editor.useLocalStorage=c}else this.pickFolder(b,mxUtils.bind(this,function(c){this.createFile(a,this.getFileData(!0),null,b,null,!0,c)}))}),null,null,null,null,"1"==urlParams.browser,null,null,!0,c);this.showDialog(b.container,380,a>c?390:270,!0,!1,mxUtils.bind(this,function(a){a&&null==this.getCurrentFile()&&this.showSplash()}));b.init()}}),c=decodeURIComponent(c);if("http://"!=c.substring(0,7)&&"https://"!=c.substring(0,8))try{null!=window.opener&&null!=window.opener[c]?f(window.opener[c]): -this.handleError(null,mxResources.get("errorLoadingFile"))}catch(k){this.handleError(k,mxResources.get("errorLoadingFile"))}else this.loadTemplate(c,function(a){f(a)},mxUtils.bind(this,function(){this.handleError(null,mxResources.get("errorLoadingFile"),b)}))}else(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.state&&null!=this.stateArg&&"open"==this.stateArg.action&&null!=this.stateArg.ids&&(window.location.hash="G"+this.stateArg.ids[0]),(null==window.location.hash|| -1>=window.location.hash.length)&&null!=this.drive&&null!=this.stateArg&&"create"==this.stateArg.action?(this.setMode(App.MODE_GOOGLE),this.actions.get("new").funct()):a()}}catch(k){this.handleError(k)}}; -App.prototype.showSplash=function(a){var c=this.getServiceCount(!0,!0),b=mxUtils.bind(this,function(){var a=new SplashDialog(this);this.showDialog(a.container,340,2>c||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?200:260,!0,!0,mxUtils.bind(this,function(a){a&&!mxClient.IS_CHROMEAPP&&(a=Editor.useLocalStorage,this.createFile(this.defaultFilename,null,null,null,null,null,null,"1"!=urlParams.local),Editor.useLocalStorage=a)}),!0)});if(this.editor.isChromelessView())this.handleError({message:mxResources.get("noFileSelected")}, -mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){this.showSplash()}));else if(mxClient.IS_CHROMEAPP||null!=this.mode&&!a)null==urlParams.create&&b();else{a=4==c?2:3;var f=new StorageDialog(this,mxUtils.bind(this,function(){this.hideDialog();b()}),a);this.showDialog(f.container,3>a?260:300,4<=c?420:300,!0,!1);f.init()}}; -App.prototype.addLanguageMenu=function(a,c){var b=null;if((!this.isOfflineApp()||mxClient.IS_CHROMEAPP)&&null!=this.menus.get("language")){b=document.createElement("div");b.setAttribute("title",mxResources.get("language"));b.className="geIcon geSprite geSprite-globe";b.style.position="absolute";b.style.cursor="pointer";b.style.bottom="20px";b.style.right="20px";if(c){b.style.direction="rtl";b.style.textAlign="right";b.style.right="24px";var f=document.createElement("span");f.style.display="inline-block"; -f.style.fontSize="12px";f.style.margin="5px 24px 0 0";f.style.color="gray";mxUtils.write(f,mxResources.get("language"));b.appendChild(f)}mxEvent.addListener(b,"click",mxUtils.bind(this,function(a){this.editor.graph.popupMenuHandler.hideMenu();var c=new mxPopupMenu(this.menus.get("language").funct);c.div.className+=" geMenubarMenu";c.smartSeparators=!0;c.showDisabled=!0;c.autoExpand=!0;c.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(c,arguments);c.destroy()});var f=mxUtils.getOffset(b); -c.popup(f.x,f.y+b.offsetHeight,null,a);this.setCurrentMenu(c)}));a.appendChild(b)}return b}; -App.prototype.pickFile=function(a){a=null!=a?a:this.mode;if(a==App.MODE_GOOGLE)null!=this.drive&&"undefined"!=typeof google&&"undefined"!=typeof google.picker?this.drive.pickFile():this.openLink("https://drive.google.com");else{var c=this.getPeerForMode(a);if(null!=c)c.pickFile();else if(a==App.MODE_DEVICE&&Graph.fileSupport&&(!mxClient.IS_IE&&!mxClient.IS_IE11||0>navigator.appVersion.indexOf("Windows NT 6.1"))){var b=document.createElement("input");b.setAttribute("type","file");mxEvent.addListener(b, -"change",mxUtils.bind(this,function(){null!=b.files&&this.openFiles(b.files)}));b.click()}else{this.hideDialog();window.openNew=null!=this.getCurrentFile()&&!this.isDiagramEmpty();window.baseUrl=this.getUrl();window.openKey="open";var f=Editor.useLocalStorage;Editor.useLocalStorage=a==App.MODE_BROWSER;this.openFile();window.openFile.setConsumer(mxUtils.bind(this,function(b,c){this.useCanvasForExport||".png"!=c.substring(c.length-4)||(c=c.substring(0,c.length-4)+".xml");this.fileLoaded(a==App.MODE_BROWSER? -new StorageFile(this,b,c):new LocalFile(this,b,c))}));var k=this.dialog,h=k.close;this.dialog.close=mxUtils.bind(this,function(a){Editor.useLocalStorage=f;h.apply(k,arguments);null==this.getCurrentFile()&&this.showSplash()})}}}; -App.prototype.pickLibrary=function(a){a=null!=a?a:this.mode;if(a==App.MODE_GOOGLE||a==App.MODE_DROPBOX||a==App.MODE_ONEDRIVE||a==App.MODE_GITHUB||a==App.MODE_TRELLO){var c=a==App.MODE_GOOGLE?this.drive:a==App.MODE_ONEDRIVE?this.oneDrive:a==App.MODE_GITHUB?this.gitHub:a==App.MODE_TRELLO?this.trello:this.dropbox;null!=c&&c.pickLibrary(mxUtils.bind(this,function(a,b){if(null!=b)try{this.loadLibrary(b)}catch(l){this.handleError(l,mxResources.get("errorLoadingFile"))}else this.spinner.spin(document.body, -mxResources.get("loading"))&&c.getLibrary(a,mxUtils.bind(this,function(a){this.spinner.stop();try{this.loadLibrary(a)}catch(t){this.handleError(t,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(a){this.handleError(a,null!=a?mxResources.get("errorLoadingFile"):null)}))}))}else if(a!=App.MODE_DEVICE||!Graph.fileSupport||mxClient.IS_IE||mxClient.IS_IE11){window.openNew=!1;window.openKey="open";var b=Editor.useLocalStorage;Editor.useLocalStorage=a==App.MODE_BROWSER;window.openFile= -new OpenFile(mxUtils.bind(this,function(a){this.hideDialog(a)}));window.openFile.setConsumer(mxUtils.bind(this,function(b,c){try{this.loadLibrary(a==App.MODE_BROWSER?new StorageLibrary(this,b,c):new LocalLibrary(this,b,c))}catch(l){this.handleError(l,mxResources.get("errorLoadingFile"))}}));this.showDialog((new OpenDialog(this)).container,Editor.useLocalStorage?640:360,Editor.useLocalStorage?480:220,!0,!0,function(){Editor.useLocalStorage=b;window.openFile=null})}else{var f=document.createElement("input"); -f.setAttribute("type","file");mxEvent.addListener(f,"change",mxUtils.bind(this,function(){if(null!=f.files)for(var a=0;a<f.files.length;a++)mxUtils.bind(this,function(a){var b=new FileReader;b.onload=mxUtils.bind(this,function(b){try{this.loadLibrary(new LocalLibrary(this,b.target.result,a.name))}catch(p){this.handleError(p,mxResources.get("errorLoadingFile"))}});b.readAsText(a)})(f.files[a])}));f.click()}}; -App.prototype.saveLibrary=function(a,c,b,f,k,h,l){f=null!=f?f:this.mode;k=null!=k?k:!1;h=null!=h?h:!1;var t=this.createLibraryDataFromImages(c),p=mxUtils.bind(this,function(a){this.spinner.stop();null!=l&&l();this.handleError(a,null!=a?mxResources.get("errorSavingFile"):null)});null==b&&f==App.MODE_DEVICE&&(b=new LocalLibrary(this,t,a));if(null==b)this.pickFolder(f,mxUtils.bind(this,function(b){f==App.MODE_GOOGLE&&null!=this.drive&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.drive.insertFile(a, -t,b,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),p,this.drive.libraryMimeType):f==App.MODE_GITHUB&&null!=this.gitHub&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.gitHub.insertLibrary(a,t,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),p,b):f==App.MODE_TRELLO&&null!=this.trello&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.trello.insertLibrary(a,t,mxUtils.bind(this, -function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),p,b):f==App.MODE_DROPBOX&&null!=this.dropbox&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.dropbox.insertLibrary(a,t,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),p,b):f==App.MODE_ONEDRIVE&&null!=this.oneDrive&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.oneDrive.insertLibrary(a,t,mxUtils.bind(this,function(a){this.spinner.stop(); -this.hideDialog(!0);this.libraryLoaded(a,c)}),p,b):f==App.MODE_BROWSER?(b=mxUtils.bind(this,function(){var b=new StorageLibrary(this,t,a);b.saveFile(a,!1,mxUtils.bind(this,function(){this.hideDialog(!0);this.libraryLoaded(b,c)}),p)}),null==localStorage.getItem(a)?b():this.confirm(mxResources.get("replaceIt",[a]),b)):this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})}));else if(k||this.spinner.spin(document.body,mxResources.get("saving"))){b.setData(t);var d=mxUtils.bind(this, -function(){b.save(!0,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);h||this.libraryLoaded(b,c);null!=l&&l()}),p)});if(a!=b.getTitle()){var g=b.getHash();b.rename(a,mxUtils.bind(this,function(a){b.constructor!=LocalLibrary&&g!=b.getHash()&&(mxSettings.removeCustomLibrary(g),mxSettings.addCustomLibrary(b.getHash()));this.removeLibrarySidebar(g);d()}),p)}else d()}}; -App.prototype.saveFile=function(a,c){var b=this.getCurrentFile();if(null!=b){var f=mxUtils.bind(this,function(){this.removeDraft();this.getCurrentFile()==b||b.isModified()||(b.getMode()!=App.MODE_DEVICE?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("allChangesSaved"))):this.editor.setStatus(""));null!=c&&c()});if(a||null==b.getTitle()||null==this.mode){var k=null!=b.getTitle()?b.getTitle():this.defaultFilename,h=!mxClient.IS_IOS||!navigator.standalone,l=this.mode,t=this.getServiceCount(!0); -isLocalStorage&&t++;var p=4>=t?2:6<t?4:3,k=new CreateDialog(this,k,mxUtils.bind(this,function(a,b){null!=a&&0<a.length&&(null==l&&b==App.MODE_DEVICE?(this.setMode(App.MODE_DEVICE),this.save(a,f)):"download"==b?(new LocalFile(this,null,a)).save():"_blank"==b?(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(this.getFileData(!0)),this.openLink(this.getUrl(window.location.pathname),null,!0)):l!=b?this.pickFolder(b,mxUtils.bind(this,function(c){this.createFile(a, -this.getFileData(/(\.xml)$/i.test(a)||0>a.indexOf("."),/(\.svg)$/i.test(a),/(\.html)$/i.test(a)),null,b,f,null==this.mode,c)})):null!=b&&this.save(a,f))}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),null,null,h,this.isOffline()?null:"https://desk.draw.io/support/solutions/articles/16000042485",!0,p);this.showDialog(k.container,460,t>p?390:270,!0,!0);k.init()}else this.save(b.getTitle(),f)}}; -App.prototype.loadTemplate=function(a,c,b){var f=a;this.isCorsEnabledForUrl(f)||(f="t="+(new Date).getTime(),f=PROXY_URL+"?url="+encodeURIComponent(a)+"&"+f);this.loadUrl(f,mxUtils.bind(this,function(f){/(\.vsdx)($|\?)/i.test(a)?this.importVisio(this.base64ToBlob(f.substring(f.indexOf(",")+1)),function(a){c(a)},b,a):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(f,a)?this.parseFile(new Blob([f],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&& -200<=a.status&&299>=a.status&&"<mxGraphModel"==a.responseText.substring(0,13)&&c(a.responseText)}),a):this.isLucidChartData(f)?this.convertLucidChart(f,mxUtils.bind(this,function(a){c(a)}),mxUtils.bind(this,function(a){b(a)})):(/(\.png)($|\?)/i.test(a)&&(f=this.extractGraphModelFromPng(f)),c(f))}),b,/(\.png)($|\?)/i.test(a)||/(\.vsdx)($|\?)/i.test(a))}; -App.prototype.getPeerForMode=function(a){return a==App.MODE_GOOGLE?this.drive:a==App.MODE_GITHUB?this.gitHub:a==App.MODE_DROPBOX?this.dropbox:a==App.MODE_ONEDRIVE?this.oneDrive:a==App.MODE_TRELLO?this.trello:null}; -App.prototype.createFile=function(a,c,b,f,k,h,l,t){f=t?null:null!=f?f:this.mode;if(null!=a&&this.spinner.spin(document.body,mxResources.get("inserting"))){c=null!=c?c:this.emptyDiagramXml;var p=mxUtils.bind(this,function(){this.spinner.stop()}),d=mxUtils.bind(this,function(a){p();null==a&&null==this.getCurrentFile()&&null==this.dialog?this.showSplash():null!=a&&this.handleError(a)});try{if(f==App.MODE_GOOGLE&&null!=this.drive)null==l&&null!=this.stateArg&&null!=this.stateArg.folderId&&(l=this.stateArg.folderId), -this.drive.insertFile(a,c,l,mxUtils.bind(this,function(a){p();this.fileCreated(a,b,h,k)}),d);else if(f==App.MODE_GITHUB&&null!=this.gitHub)this.gitHub.insertFile(a,c,mxUtils.bind(this,function(a){p();this.fileCreated(a,b,h,k)}),d,!1,l);else if(f==App.MODE_TRELLO&&null!=this.trello)this.trello.insertFile(a,c,mxUtils.bind(this,function(a){p();this.fileCreated(a,b,h,k)}),d,!1,l);else if(f==App.MODE_DROPBOX&&null!=this.dropbox)this.dropbox.insertFile(a,c,mxUtils.bind(this,function(a){p();this.fileCreated(a, -b,h,k)}),d);else if(f==App.MODE_ONEDRIVE&&null!=this.oneDrive)this.oneDrive.insertFile(a,c,mxUtils.bind(this,function(a){p();this.fileCreated(a,b,h,k)}),d,!1,l);else if(f==App.MODE_BROWSER){p();var g=mxUtils.bind(this,function(){var f=new StorageFile(this,c,a);f.saveFile(a,!1,mxUtils.bind(this,function(){this.fileCreated(f,b,h,k)}),d)});null==localStorage.getItem(a)?g():this.confirm(mxResources.get("replaceIt",[a]),g,mxUtils.bind(this,function(){null==this.getCurrentFile()&&null==this.dialog&&this.showSplash()}))}else p(), -this.fileCreated(new LocalFile(this,c,a,null==f),b,h,k)}catch(n){p(),this.handleError(n)}}}; -App.prototype.fileCreated=function(a,c,b,f){var k=window.location.pathname;null!=c&&0<c.length&&(k+="?libs="+c);k=this.getUrl(k);a.getMode()!=App.MODE_DEVICE&&(k+="#"+a.getHash());if(this.spinner.spin(document.body,mxResources.get("inserting"))){var h=a.getData(),h=0<h.length?this.editor.extractGraphModel(mxUtils.parseXml(h).documentElement,!0):null,l=window.location.protocol+"//"+window.location.hostname+k,t=h,p=null;null!=h&&/\.svg$/i.test(a.getTitle())&&(p=this.createTemporaryGraph(this.editor.graph.getStylesheet()), -document.body.appendChild(p.container),t=this.decodeNodeIntoGraph(t,p));a.setData(this.createFileData(h,p,a,l));null!=p&&p.container.parentNode.removeChild(p.container);var d=mxUtils.bind(this,function(){this.spinner.stop()}),g=mxUtils.bind(this,function(){d();var g=this.getCurrentFile();null==b&&null!=g&&(b=!g.isModified()&&null==g.getMode());var h=mxUtils.bind(this,function(){window.openFile=null;this.fileLoaded(a);b&&a.addAllSavedStatus();null!=c&&this.sidebar.showEntries(c)}),l=mxUtils.bind(this, -function(){b||null==g||!g.isModified()?h():this.confirm(mxResources.get("allChangesLost"),null,h,mxResources.get("cancel"),mxResources.get("discardChanges"))});null!=f&&f();null==b||b?l():(a.constructor==LocalFile&&(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(a.getData(),a.getTitle(),null==a.getMode())),null!=f&&f(),window.openWindow(k,null,l))});a.constructor==LocalFile?g():a.saveFile(a.getTitle(),!1,mxUtils.bind(this,function(){g()}),mxUtils.bind(this, -function(a){d();this.handleError(a)}))}}; -App.prototype.loadFile=function(a,c,b,f,k){this.hideDialog();var h=mxUtils.bind(this,function(){if(null==a||0==a.length)this.editor.setStatus(""),this.fileLoaded(null);else if(this.spinner.spin(document.body,mxResources.get("loading")))if("L"==a.charAt(0))if(this.spinner.stop(),isLocalStorage)try{a=decodeURIComponent(a.substring(1));var h=localStorage.getItem(a);if(null!=h)this.fileLoaded(new StorageFile(this,h,a)),null!=f&&f();else throw{message:mxResources.get("fileNotFound")};}catch(n){this.handleError(n, -mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){var a=this.getCurrentFile();window.location.hash=null!=a?a.getHash():""}))}else this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")},mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){var a=this.getCurrentFile();window.location.hash=null!=a?a.getHash():""}));else if(null!=b)this.spinner.stop(),this.fileLoaded(b),null!=f&&f();else if("S"==a.charAt(0)){this.spinner.stop();try{this.loadDescriptor(JSON.parse(this.editor.graph.decompress(a.substring(1))), -f,mxUtils.bind(this,function(a){this.handleError(a,mxResources.get("errorLoadingFile"))}))}catch(n){this.handleError(n,mxResources.get("errorLoadingFile"))}}else if("R"==a.charAt(0))this.spinner.stop(),h=decodeURIComponent(a.substring(1)),"<"!=h.charAt(0)&&(h=this.editor.graph.decompress(h)),h=new LocalFile(this,h,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0),h.getHash=function(){return a},this.fileLoaded(h),null!=f&&f();else if("U"==a.charAt(0)){var d=decodeURIComponent(a.substring(1)), -g=mxUtils.bind(this,function(){if("https://drive.google.com/uc?id="!=d.substring(0,31)||null==this.drive&&"function"!==typeof window.DriveClient)return!1;this.hideDialog();var a=mxUtils.bind(this,function(){this.spinner.stop();return null!=this.drive?(this.loadFile("G"+d.substring(31,d.lastIndexOf("&ex")),c,f),!0):!1});!a()&&this.spinner.spin(document.body,mxResources.get("loading"))&&this.addListener("clientLoaded",a);return!0});this.loadTemplate(d,mxUtils.bind(this,function(b){this.spinner.stop(); -if(null!=b&&0<b.length){var c=this.defaultFilename;if(null==urlParams.title&&"1"!=urlParams.notitle){var f=d,h=d.lastIndexOf("."),k=f.lastIndexOf("/");h>k&&0<k&&(f=f.substring(k+1,h),h=d.substring(h),this.useCanvasForExport||".png"!=h||(h=".xml"),".svg"===h||".xml"===h||".html"===h||".png"===h)&&(c=f+h)}b=new LocalFile(this,b,null!=urlParams.title?decodeURIComponent(urlParams.title):c,!0);b.getHash=function(){return a};this.fileLoaded(b)||g()}}),mxUtils.bind(this,function(){g()||(this.spinner.stop(), -this.handleError({message:mxResources.get("fileNotFound")},mxResources.get("errorLoadingFile")))}))}else h=null,"G"==a.charAt(0)?h=this.drive:"D"==a.charAt(0)?h=this.dropbox:"W"==a.charAt(0)?h=this.oneDrive:"H"==a.charAt(0)?h=this.gitHub:"T"==a.charAt(0)&&(h=this.trello),null==h?this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")},mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){var a=this.getCurrentFile();window.location.hash=null!=a?a.getHash():""})):(a=decodeURIComponent(a.substring(1)), -h.getFile(a,mxUtils.bind(this,function(a){this.spinner.stop();this.fileLoaded(a);null!=f&&f()}),mxUtils.bind(this,function(b){null!=window.console&&null!=b&&console.log("error in loadFile:",a,b);this.handleError(b,null!=b?mxResources.get("errorLoadingFile"):null,mxUtils.bind(this,function(){var a=this.getCurrentFile();null==a?(window.location.hash="",this.showSplash()):window.location.hash=a.getHash()}))})))}),l=this.getCurrentFile(),t=mxUtils.bind(this,function(){k||null==l||!l.isModified()?h(): -this.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){null!=l&&(window.location.hash=l.getHash())}),h,mxResources.get("cancel"),mxResources.get("discardChanges"))});null==a||0==a.length?t():null!=l&&l.isModified()&&!c?window.openWindow(this.getUrl()+"#"+a,null,t):t()}; -App.prototype.getLibraryStorageHint=function(a){var c=a.getTitle();a.constructor!=LocalLibrary&&(c+="\n"+a.getHash());a.constructor==DriveLibrary?c+=" ("+mxResources.get("googleDrive")+")":a.constructor==GitHubLibrary?c+=" ("+mxResources.get("github")+")":a.constructor==TrelloLibrary?c+=" ("+mxResources.get("trello")+")":a.constructor==DropboxLibrary?c+=" ("+mxResources.get("dropbox")+")":a.constructor==OneDriveLibrary?c+=" ("+mxResources.get("oneDrive")+")":a.constructor==StorageLibrary?c+=" ("+ -mxResources.get("browser")+")":a.constructor==LocalLibrary&&(c+=" ("+mxResources.get("device")+")");return c}; -App.prototype.restoreLibraries=function(){if(null!=this.sidebar){null==this.pendingLibraries&&(this.pendingLibraries={});var a=mxUtils.bind(this,function(a,c){c||mxSettings.removeCustomLibrary(a);delete this.pendingLibraries[a]}),c=mxUtils.bind(this,function(b,c){var f=0,h=[],l=mxUtils.bind(this,function(){if(0==f){if(null!=b)for(var a=b.length-1;0<=a;a--)null!=h[a]&&this.loadLibrary(h[a]);null!=c&&c()}});if(null!=b)for(var t=0;t<b.length;t++){var p=encodeURIComponent(decodeURIComponent(b[t]));mxUtils.bind(this, -function(b,c){if(null!=b&&0<b.length&&null==this.pendingLibraries[b]&&null==this.sidebar.palettes[b]){f++;var d=mxUtils.bind(this,function(a){delete this.pendingLibraries[b];h[c]=a;f--;l()}),g=mxUtils.bind(this,function(c){a(b,c);f--;l()});this.pendingLibraries[b]=!0;var k=b.substring(0,1);if("L"==k)(isLocalStorage||mxClient.IS_CHROMEAPP)&&window.setTimeout(mxUtils.bind(this,function(){try{var a=decodeURIComponent(b.substring(1));this.getLocalData(a,mxUtils.bind(this,function(b){".scratchpad"==a&& -null==b&&(b=this.emptyLibraryXml);null!=b?d(new StorageLibrary(this,b,a)):g()}))}catch(m){g()}}),0);else if("U"==k){var p=decodeURIComponent(b.substring(1));if(!this.isOffline()){k=p;this.isCorsEnabledForUrl(k)||(k="t="+(new Date).getTime(),k=PROXY_URL+"?url="+encodeURIComponent(p)+"&"+k);try{mxUtils.get(k,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus())try{d(new UrlLibrary(this,a.getText(),p))}catch(m){g()}else g()}),function(){g()})}catch(y){g()}}}else{var t=null;"G"==k? -null!=this.drive&&null!=this.drive.user&&(t=this.drive):"H"==k?null!=this.gitHub&&null!=this.gitHub.getUser()&&(t=this.gitHub):"T"==k?null!=this.trello&&this.trello.isAuthorized()&&(t=this.trello):"D"==k?null!=this.dropbox&&null!=this.dropbox.getUser()&&(t=this.dropbox):"W"==k&&null!=this.oneDrive&&null!=this.oneDrive.getUser()&&(t=this.oneDrive);null!=t?t.getLibrary(decodeURIComponent(b.substring(1)),mxUtils.bind(this,function(a){try{d(a)}catch(m){g()}}),function(a){g()}):g(!0)}}})(p,t)}l()});c(mxSettings.getCustomLibraries(), +App.prototype.showRefreshDialog=function(b,c){if(!this.showingRefreshDialog&&(this.showingRefreshDialog=!0,this.showError(b||mxResources.get("externalChanges"),c||mxResources.get("redirectToNewApp"),mxResources.get("refresh"),mxUtils.bind(this,function(){var a=this.getCurrentFile();null!=a&&a.setModified(!1);this.spinner.spin(document.body,mxResources.get("connecting"));this.editor.graph.setEnabled(!1);window.location.reload()}),null,null,null,null,null,340,180),null!=this.dialog&&null!=this.dialog.container)){var a= +this.createRealtimeNotice();a.style.left="0";a.style.right="0";a.style.borderRadius="0";a.style.borderLeftStyle="none";a.style.borderRightStyle="none";a.style.marginBottom="26px";a.style.padding="8px 0 8px 0";this.dialog.container.appendChild(a)}}; +App.prototype.showAlert=function(b){if(null!=b&&0<b.length){var c=document.createElement("div");c.className="geAlert";c.style.zIndex=2E9;c.style.left="50%";c.style.top="-100%";mxUtils.setPrefixedStyle(c.style,"transform","translate(-50%,0%)");mxUtils.setPrefixedStyle(c.style,"transition","all 1s ease");c.innerHTML=b;b=document.createElement("a");b.className="geAlertLink";b.style.textAlign="right";b.style.marginTop="20px";b.style.display="block";b.setAttribute("title",mxResources.get("close"));b.innerHTML= +mxResources.get("close");c.appendChild(b);mxEvent.addListener(b,"click",function(a){null!=c.parentNode&&(c.parentNode.removeChild(c),mxEvent.consume(a))});document.body.appendChild(c);window.setTimeout(function(){c.style.top="30px"},10);window.setTimeout(function(){mxUtils.setPrefixedStyle(c.style,"transition","all 2s ease");c.style.opacity="0";window.setTimeout(function(){null!=c.parentNode&&c.parentNode.removeChild(c)},2E3)},15E3)}}; +App.prototype.start=function(){this.bg.parentNode.removeChild(this.bg);this.restoreLibraries();this.spinner.stop();try{if("1"!=urlParams.client&&"1"!=urlParams.embed&&mxEvent.addListener(window,"hashchange",mxUtils.bind(this,function(a){try{var b=this.getDiagramId(),c=this.getCurrentFile();null!=c&&c.getHash()==b||this.loadFile(b,!0)}catch(q){null!=document.body&&this.handleError(q,mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){var a=this.getCurrentFile();window.location.hash=null!= +a?a.getHash():""}))}})),(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.url)this.loadFile("U"+urlParams.url,!0);else if(null==this.getCurrentFile()){var b=mxUtils.bind(this,function(){if("1"==urlParams.client&&(null==window.location.hash||0==window.location.hash.length||"#P"==window.location.hash.substring(0,2))){var a=mxUtils.bind(this,function(a){"data:image/png;base64,"==a.substring(0,22)&&(a=this.extractGraphModelFromPng(a));var b=urlParams.title,b=null!=b?decodeURIComponent(b): +this.defaultFilename;a=new LocalFile(this,a,b,!0);null!=window.location.hash&&"#P"==window.location.hash.substring(0,2)&&(a.getHash=function(){return window.location.hash.substring(1)});this.fileLoaded(a);this.getCurrentFile().setModified(!this.editor.chromeless)}),b=window.opener||window.parent;if(b!=window){var c=urlParams.create;null!=c?a(b[decodeURIComponent(c)]):(c=urlParams.data,null!=c?a(decodeURIComponent(c)):this.installMessageHandler(mxUtils.bind(this,function(c,d){d.source==b&&a(c)})))}}else if(null== +this.dialog)if("1"==urlParams.demo)c=Editor.useLocalStorage,this.createFile(this.defaultFilename,null,null,null,null,null,null,!0),Editor.useLocalStorage=c;else{c=!1;try{c=null!=window.opener&&null!=window.opener.openFile}catch(u){}if(c)this.spinner.spin(document.body,mxResources.get("loading"));else if(c=this.getDiagramId(),"0"!=urlParams.splash||null!=c&&0!=c.length)this.loadFile(c);else if(!mxClient.IS_CHROMEAPP){var e=this.getDraft(),p=null!=e?e.data:this.getFileData(),c=Editor.useLocalStorage; +this.createFile(this.defaultFilename,p,null,null,null,null,null,!0);Editor.useLocalStorage=c;null!=e&&(c=this.getCurrentFile(),null!=c&&c.addUnsavedStatus())}}}),c=decodeURIComponent(urlParams.create||"");if((null==window.location.hash||1>=window.location.hash.length)&&null!=c&&0<c.length&&this.spinner.spin(document.body,mxResources.get("loading"))){var a=mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("reconnecting"))&&(window.location.search=this.getSearch(["create", +"title"]))}),e=mxUtils.bind(this,function(a){this.spinner.stop();if("0"!=urlParams.splash){this.fileLoaded(new LocalFile(this,a,null));this.editor.graph.setEnabled(!1);this.mode=urlParams.mode;var b=urlParams.title,b=null!=b?decodeURIComponent(b):this.defaultFilename;a=this.getServiceCount(!0);var c=4>=a?4:3,b=new CreateDialog(this,b,mxUtils.bind(this,function(a,b){if(null==b){this.hideDialog();var c=Editor.useLocalStorage;this.createFile(0<a.length?a:this.defaultFilename,this.getFileData(),null, +null,null,!0,null,!0);Editor.useLocalStorage=c}else this.pickFolder(b,mxUtils.bind(this,function(c){this.createFile(a,this.getFileData(!0),null,b,null,!0,c)}))}),null,null,null,null,"1"==urlParams.browser,null,null,!0,c);this.showDialog(b.container,380,a>c?390:270,!0,!1,mxUtils.bind(this,function(a){a&&null==this.getCurrentFile()&&this.showSplash()}));b.init()}}),c=decodeURIComponent(c);if("http://"!=c.substring(0,7)&&"https://"!=c.substring(0,8))try{null!=window.opener&&null!=window.opener[c]?e(window.opener[c]): +this.handleError(null,mxResources.get("errorLoadingFile"))}catch(k){this.handleError(k,mxResources.get("errorLoadingFile"))}else this.loadTemplate(c,function(a){e(a)},mxUtils.bind(this,function(){this.handleError(null,mxResources.get("errorLoadingFile"),a)}))}else(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.state&&null!=this.stateArg&&"open"==this.stateArg.action&&null!=this.stateArg.ids&&(window.location.hash="G"+this.stateArg.ids[0]),(null==window.location.hash|| +1>=window.location.hash.length)&&null!=this.drive&&null!=this.stateArg&&"create"==this.stateArg.action?(this.setMode(App.MODE_GOOGLE),this.actions.get("new").funct()):b()}}catch(k){this.handleError(k)}}; +App.prototype.showSplash=function(b){var c=this.getServiceCount(!0,!0),a=mxUtils.bind(this,function(){var a=new SplashDialog(this);this.showDialog(a.container,340,2>c||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?200:260,!0,!0,mxUtils.bind(this,function(a){a&&!mxClient.IS_CHROMEAPP&&(a=Editor.useLocalStorage,this.createFile(this.defaultFilename,null,null,null,null,null,null,"1"!=urlParams.local),Editor.useLocalStorage=a)}),!0)});if(this.editor.isChromelessView())this.handleError({message:mxResources.get("noFileSelected")}, +mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){this.showSplash()}));else if(mxClient.IS_CHROMEAPP||null!=this.mode&&!b)null==urlParams.create&&a();else{b=4==c?2:3;var e=new StorageDialog(this,mxUtils.bind(this,function(){this.hideDialog();a()}),b);this.showDialog(e.container,3>b?260:300,4<=c?420:300,!0,!1);e.init()}}; +App.prototype.addLanguageMenu=function(b,c){var a=null;if((!this.isOfflineApp()||mxClient.IS_CHROMEAPP)&&null!=this.menus.get("language")){a=document.createElement("div");a.setAttribute("title",mxResources.get("language"));a.className="geIcon geSprite geSprite-globe";a.style.position="absolute";a.style.cursor="pointer";a.style.bottom="20px";a.style.right="20px";if(c){a.style.direction="rtl";a.style.textAlign="right";a.style.right="24px";var e=document.createElement("span");e.style.display="inline-block"; +e.style.fontSize="12px";e.style.margin="5px 24px 0 0";e.style.color="gray";mxUtils.write(e,mxResources.get("language"));a.appendChild(e)}mxEvent.addListener(a,"click",mxUtils.bind(this,function(b){this.editor.graph.popupMenuHandler.hideMenu();var c=new mxPopupMenu(this.menus.get("language").funct);c.div.className+=" geMenubarMenu";c.smartSeparators=!0;c.showDisabled=!0;c.autoExpand=!0;c.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(c,arguments);c.destroy()});var e=mxUtils.getOffset(a); +c.popup(e.x,e.y+a.offsetHeight,null,b);this.setCurrentMenu(c)}));b.appendChild(a)}return a}; +App.prototype.pickFile=function(b){b=null!=b?b:this.mode;if(b==App.MODE_GOOGLE)null!=this.drive&&"undefined"!=typeof google&&"undefined"!=typeof google.picker?this.drive.pickFile():this.openLink("https://drive.google.com");else{var c=this.getPeerForMode(b);if(null!=c)c.pickFile();else if(b==App.MODE_DEVICE&&Graph.fileSupport&&(!mxClient.IS_IE&&!mxClient.IS_IE11||0>navigator.appVersion.indexOf("Windows NT 6.1"))){var a=document.createElement("input");a.setAttribute("type","file");mxEvent.addListener(a, +"change",mxUtils.bind(this,function(){null!=a.files&&this.openFiles(a.files)}));a.click()}else{this.hideDialog();window.openNew=null!=this.getCurrentFile()&&!this.isDiagramEmpty();window.baseUrl=this.getUrl();window.openKey="open";var e=Editor.useLocalStorage;Editor.useLocalStorage=b==App.MODE_BROWSER;this.openFile();window.openFile.setConsumer(mxUtils.bind(this,function(a,c){this.useCanvasForExport||".png"!=c.substring(c.length-4)||(c=c.substring(0,c.length-4)+".xml");this.fileLoaded(b==App.MODE_BROWSER? +new StorageFile(this,a,c):new LocalFile(this,a,c))}));var k=this.dialog,f=k.close;this.dialog.close=mxUtils.bind(this,function(a){Editor.useLocalStorage=e;f.apply(k,arguments);null==this.getCurrentFile()&&this.showSplash()})}}}; +App.prototype.pickLibrary=function(b){b=null!=b?b:this.mode;if(b==App.MODE_GOOGLE||b==App.MODE_DROPBOX||b==App.MODE_ONEDRIVE||b==App.MODE_GITHUB||b==App.MODE_TRELLO){var c=b==App.MODE_GOOGLE?this.drive:b==App.MODE_ONEDRIVE?this.oneDrive:b==App.MODE_GITHUB?this.gitHub:b==App.MODE_TRELLO?this.trello:this.dropbox;null!=c&&c.pickLibrary(mxUtils.bind(this,function(a,b){if(null!=b)try{this.loadLibrary(b)}catch(l){this.handleError(l,mxResources.get("errorLoadingFile"))}else this.spinner.spin(document.body, +mxResources.get("loading"))&&c.getLibrary(a,mxUtils.bind(this,function(a){this.spinner.stop();try{this.loadLibrary(a)}catch(q){this.handleError(q,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(a){this.handleError(a,null!=a?mxResources.get("errorLoadingFile"):null)}))}))}else if(b!=App.MODE_DEVICE||!Graph.fileSupport||mxClient.IS_IE||mxClient.IS_IE11){window.openNew=!1;window.openKey="open";var a=Editor.useLocalStorage;Editor.useLocalStorage=b==App.MODE_BROWSER;window.openFile= +new OpenFile(mxUtils.bind(this,function(a){this.hideDialog(a)}));window.openFile.setConsumer(mxUtils.bind(this,function(a,c){try{this.loadLibrary(b==App.MODE_BROWSER?new StorageLibrary(this,a,c):new LocalLibrary(this,a,c))}catch(l){this.handleError(l,mxResources.get("errorLoadingFile"))}}));this.showDialog((new OpenDialog(this)).container,Editor.useLocalStorage?640:360,Editor.useLocalStorage?480:220,!0,!0,function(){Editor.useLocalStorage=a;window.openFile=null})}else{var e=document.createElement("input"); +e.setAttribute("type","file");mxEvent.addListener(e,"change",mxUtils.bind(this,function(){if(null!=e.files)for(var a=0;a<e.files.length;a++)mxUtils.bind(this,function(a){var b=new FileReader;b.onload=mxUtils.bind(this,function(b){try{this.loadLibrary(new LocalLibrary(this,b.target.result,a.name))}catch(p){this.handleError(p,mxResources.get("errorLoadingFile"))}});b.readAsText(a)})(e.files[a])}));e.click()}}; +App.prototype.saveLibrary=function(b,c,a,e,k,f,l){e=null!=e?e:this.mode;k=null!=k?k:!1;f=null!=f?f:!1;var q=this.createLibraryDataFromImages(c),p=mxUtils.bind(this,function(a){this.spinner.stop();null!=l&&l();this.handleError(a,null!=a?mxResources.get("errorSavingFile"):null)});null==a&&e==App.MODE_DEVICE&&(a=new LocalLibrary(this,q,b));if(null==a)this.pickFolder(e,mxUtils.bind(this,function(a){e==App.MODE_GOOGLE&&null!=this.drive&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.drive.insertFile(b, +q,a,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),p,this.drive.libraryMimeType):e==App.MODE_GITHUB&&null!=this.gitHub&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.gitHub.insertLibrary(b,q,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),p,a):e==App.MODE_TRELLO&&null!=this.trello&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.trello.insertLibrary(b,q,mxUtils.bind(this, +function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),p,a):e==App.MODE_DROPBOX&&null!=this.dropbox&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.dropbox.insertLibrary(b,q,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),p,a):e==App.MODE_ONEDRIVE&&null!=this.oneDrive&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.oneDrive.insertLibrary(b,q,mxUtils.bind(this,function(a){this.spinner.stop(); +this.hideDialog(!0);this.libraryLoaded(a,c)}),p,a):e==App.MODE_BROWSER?(a=mxUtils.bind(this,function(){var a=new StorageLibrary(this,q,b);a.saveFile(b,!1,mxUtils.bind(this,function(){this.hideDialog(!0);this.libraryLoaded(a,c)}),p)}),null==localStorage.getItem(b)?a():this.confirm(mxResources.get("replaceIt",[b]),a)):this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})}));else if(k||this.spinner.spin(document.body,mxResources.get("saving"))){a.setData(q);var u=mxUtils.bind(this, +function(){a.save(!0,mxUtils.bind(this,function(b){this.spinner.stop();this.hideDialog(!0);f||this.libraryLoaded(a,c);null!=l&&l()}),p)});if(b!=a.getTitle()){var d=a.getHash();a.rename(b,mxUtils.bind(this,function(b){a.constructor!=LocalLibrary&&d!=a.getHash()&&(mxSettings.removeCustomLibrary(d),mxSettings.addCustomLibrary(a.getHash()));this.removeLibrarySidebar(d);u()}),p)}else u()}}; +App.prototype.saveFile=function(b,c){var a=this.getCurrentFile();if(null!=a){var e=mxUtils.bind(this,function(){this.removeDraft();this.getCurrentFile()==a||a.isModified()||(a.getMode()!=App.MODE_DEVICE?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("allChangesSaved"))):this.editor.setStatus(""));null!=c&&c()});if(b||null==a.getTitle()||null==this.mode){var k=null!=a.getTitle()?a.getTitle():this.defaultFilename,f=!mxClient.IS_IOS||!navigator.standalone,l=this.mode,q=this.getServiceCount(!0); +isLocalStorage&&q++;var p=4>=q?2:6<q?4:3,k=new CreateDialog(this,k,mxUtils.bind(this,function(a,b){null!=a&&0<a.length&&(null==l&&b==App.MODE_DEVICE?(this.setMode(App.MODE_DEVICE),this.save(a,e)):"download"==b?(new LocalFile(this,null,a)).save():"_blank"==b?(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(this.getFileData(!0)),this.openLink(this.getUrl(window.location.pathname),null,!0)):l!=b?this.pickFolder(b,mxUtils.bind(this,function(c){this.createFile(a, +this.getFileData(/(\.xml)$/i.test(a)||0>a.indexOf(".")||/(\.drawio)$/i.test(a),/(\.svg)$/i.test(a),/(\.html)$/i.test(a)),null,b,e,null==this.mode,c)})):null!=b&&this.save(a,e))}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),null,null,f,this.isOffline()?null:"https://desk.draw.io/support/solutions/articles/16000042485",!0,p);this.showDialog(k.container,460,q>p?390:270,!0,!0);k.init()}else this.save(a.getTitle(),e)}}; +App.prototype.loadTemplate=function(b,c,a){var e=b;this.isCorsEnabledForUrl(e)||(e="t="+(new Date).getTime(),e=PROXY_URL+"?url="+encodeURIComponent(b)+"&"+e);this.loadUrl(e,mxUtils.bind(this,function(e){/(\.vsdx)($|\?)/i.test(b)?this.importVisio(this.base64ToBlob(e.substring(e.indexOf(",")+1)),function(a){c(a)},a,b):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(e,b)?this.parseFile(new Blob([e],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&& +200<=a.status&&299>=a.status&&"<mxGraphModel"==a.responseText.substring(0,13)&&c(a.responseText)}),b):this.isLucidChartData(e)?this.convertLucidChart(e,mxUtils.bind(this,function(a){c(a)}),mxUtils.bind(this,function(b){a(b)})):(/(\.png)($|\?)/i.test(b)&&(e=this.extractGraphModelFromPng(e)),c(e))}),a,/(\.png)($|\?)/i.test(b)||/(\.vsdx)($|\?)/i.test(b))}; +App.prototype.getPeerForMode=function(b){return b==App.MODE_GOOGLE?this.drive:b==App.MODE_GITHUB?this.gitHub:b==App.MODE_DROPBOX?this.dropbox:b==App.MODE_ONEDRIVE?this.oneDrive:b==App.MODE_TRELLO?this.trello:null}; +App.prototype.createFile=function(b,c,a,e,k,f,l,q){e=q?null:null!=e?e:this.mode;if(null!=b&&this.spinner.spin(document.body,mxResources.get("inserting"))){c=null!=c?c:this.emptyDiagramXml;var p=mxUtils.bind(this,function(){this.spinner.stop()}),u=mxUtils.bind(this,function(a){p();null==a&&null==this.getCurrentFile()&&null==this.dialog?this.showSplash():null!=a&&this.handleError(a)});try{if(e==App.MODE_GOOGLE&&null!=this.drive)null==l&&null!=this.stateArg&&null!=this.stateArg.folderId&&(l=this.stateArg.folderId), +this.drive.insertFile(b,c,l,mxUtils.bind(this,function(b){p();this.fileCreated(b,a,f,k)}),u);else if(e==App.MODE_GITHUB&&null!=this.gitHub)this.gitHub.insertFile(b,c,mxUtils.bind(this,function(b){p();this.fileCreated(b,a,f,k)}),u,!1,l);else if(e==App.MODE_TRELLO&&null!=this.trello)this.trello.insertFile(b,c,mxUtils.bind(this,function(b){p();this.fileCreated(b,a,f,k)}),u,!1,l);else if(e==App.MODE_DROPBOX&&null!=this.dropbox)this.dropbox.insertFile(b,c,mxUtils.bind(this,function(b){p();this.fileCreated(b, +a,f,k)}),u);else if(e==App.MODE_ONEDRIVE&&null!=this.oneDrive)this.oneDrive.insertFile(b,c,mxUtils.bind(this,function(b){p();this.fileCreated(b,a,f,k)}),u,!1,l);else if(e==App.MODE_BROWSER){p();var d=mxUtils.bind(this,function(){var d=new StorageFile(this,c,b);d.saveFile(b,!1,mxUtils.bind(this,function(){this.fileCreated(d,a,f,k)}),u)});null==localStorage.getItem(b)?d():this.confirm(mxResources.get("replaceIt",[b]),d,mxUtils.bind(this,function(){null==this.getCurrentFile()&&null==this.dialog&&this.showSplash()}))}else p(), +this.fileCreated(new LocalFile(this,c,b,null==e),a,f,k)}catch(g){p(),this.handleError(g)}}}; +App.prototype.fileCreated=function(b,c,a,e){var k=window.location.pathname;null!=c&&0<c.length&&(k+="?libs="+c);k=this.getUrl(k);b.getMode()!=App.MODE_DEVICE&&(k+="#"+b.getHash());if(this.spinner.spin(document.body,mxResources.get("inserting"))){var f=b.getData(),f=0<f.length?this.editor.extractGraphModel(mxUtils.parseXml(f).documentElement,!0):null,l=window.location.protocol+"//"+window.location.hostname+k,q=f,p=null;null!=f&&/\.svg$/i.test(b.getTitle())&&(p=this.createTemporaryGraph(this.editor.graph.getStylesheet()), +document.body.appendChild(p.container),q=this.decodeNodeIntoGraph(q,p));b.setData(this.createFileData(f,p,b,l));null!=p&&p.container.parentNode.removeChild(p.container);var u=mxUtils.bind(this,function(){this.spinner.stop()}),d=mxUtils.bind(this,function(){u();var d=this.getCurrentFile();null==a&&null!=d&&(a=!d.isModified()&&null==d.getMode());var f=mxUtils.bind(this,function(){window.openFile=null;this.fileLoaded(b);a&&b.addAllSavedStatus();null!=c&&this.sidebar.showEntries(c)}),l=mxUtils.bind(this, +function(){a||null==d||!d.isModified()?f():this.confirm(mxResources.get("allChangesLost"),null,f,mxResources.get("cancel"),mxResources.get("discardChanges"))});null!=e&&e();null==a||a?l():(b.constructor==LocalFile&&(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(b.getData(),b.getTitle(),null==b.getMode())),null!=e&&e(),window.openWindow(k,null,l))});b.constructor==LocalFile?d():b.saveFile(b.getTitle(),!1,mxUtils.bind(this,function(){d()}),mxUtils.bind(this, +function(a){u();this.handleError(a)}))}}; +App.prototype.loadFile=function(b,c,a,e,k){this.hideDialog();var f=mxUtils.bind(this,function(){if(null==b||0==b.length)this.editor.setStatus(""),this.fileLoaded(null);else if(this.spinner.spin(document.body,mxResources.get("loading")))if("L"==b.charAt(0))if(this.spinner.stop(),isLocalStorage)try{b=decodeURIComponent(b.substring(1));var f=localStorage.getItem(b);if(null!=f)this.fileLoaded(new StorageFile(this,f,b)),null!=e&&e();else throw{message:mxResources.get("fileNotFound")};}catch(g){this.handleError(g, +mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){var a=this.getCurrentFile();window.location.hash=null!=a?a.getHash():""}))}else this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")},mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){var a=this.getCurrentFile();window.location.hash=null!=a?a.getHash():""}));else if(null!=a)this.spinner.stop(),this.fileLoaded(a),null!=e&&e();else if("S"==b.charAt(0)){this.spinner.stop();try{this.loadDescriptor(JSON.parse(this.editor.graph.decompress(b.substring(1))), +e,mxUtils.bind(this,function(a){this.handleError(a,mxResources.get("errorLoadingFile"))}))}catch(g){this.handleError(g,mxResources.get("errorLoadingFile"))}}else if("R"==b.charAt(0))this.spinner.stop(),f=decodeURIComponent(b.substring(1)),"<"!=f.charAt(0)&&(f=this.editor.graph.decompress(f)),f=new LocalFile(this,f,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0),f.getHash=function(){return b},this.fileLoaded(f),null!=e&&e();else if("U"==b.charAt(0)){var k=decodeURIComponent(b.substring(1)), +d=mxUtils.bind(this,function(){if("https://drive.google.com/uc?id="!=k.substring(0,31)||null==this.drive&&"function"!==typeof window.DriveClient)return!1;this.hideDialog();var a=mxUtils.bind(this,function(){this.spinner.stop();return null!=this.drive?(this.loadFile("G"+k.substring(31,k.lastIndexOf("&ex")),c,e),!0):!1});!a()&&this.spinner.spin(document.body,mxResources.get("loading"))&&this.addListener("clientLoaded",a);return!0});this.loadTemplate(k,mxUtils.bind(this,function(a){this.spinner.stop(); +if(null!=a&&0<a.length){var c=this.defaultFilename;if(null==urlParams.title&&"1"!=urlParams.notitle){var e=k,f=k.lastIndexOf("."),g=e.lastIndexOf("/");f>g&&0<g&&(e=e.substring(g+1,f),f=k.substring(f),this.useCanvasForExport||".png"!=f||(f=".xml"),".svg"===f||".xml"===f||".html"===f||".png"===f||".drawio"===f)&&(c=e+f)}a=new LocalFile(this,a,null!=urlParams.title?decodeURIComponent(urlParams.title):c,!0);a.getHash=function(){return b};this.fileLoaded(a)||d()}}),mxUtils.bind(this,function(){d()||(this.spinner.stop(), +this.handleError({message:mxResources.get("fileNotFound")},mxResources.get("errorLoadingFile")))}))}else f=null,"G"==b.charAt(0)?f=this.drive:"D"==b.charAt(0)?f=this.dropbox:"W"==b.charAt(0)?f=this.oneDrive:"H"==b.charAt(0)?f=this.gitHub:"T"==b.charAt(0)&&(f=this.trello),null==f?this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")},mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){var a=this.getCurrentFile();window.location.hash=null!=a?a.getHash():""})):(b=decodeURIComponent(b.substring(1)), +f.getFile(b,mxUtils.bind(this,function(a){this.spinner.stop();this.fileLoaded(a);null!=e&&e()}),mxUtils.bind(this,function(a){null!=window.console&&null!=a&&console.log("error in loadFile:",b,a);this.handleError(a,null!=a?mxResources.get("errorLoadingFile"):null,mxUtils.bind(this,function(){var a=this.getCurrentFile();null==a?(window.location.hash="",this.showSplash()):window.location.hash=a.getHash()}))})))}),l=this.getCurrentFile(),q=mxUtils.bind(this,function(){k||null==l||!l.isModified()?f(): +this.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){null!=l&&(window.location.hash=l.getHash())}),f,mxResources.get("cancel"),mxResources.get("discardChanges"))});null==b||0==b.length?q():null!=l&&l.isModified()&&!c?window.openWindow(this.getUrl()+"#"+b,null,q):q()}; +App.prototype.getLibraryStorageHint=function(b){var c=b.getTitle();b.constructor!=LocalLibrary&&(c+="\n"+b.getHash());b.constructor==DriveLibrary?c+=" ("+mxResources.get("googleDrive")+")":b.constructor==GitHubLibrary?c+=" ("+mxResources.get("github")+")":b.constructor==TrelloLibrary?c+=" ("+mxResources.get("trello")+")":b.constructor==DropboxLibrary?c+=" ("+mxResources.get("dropbox")+")":b.constructor==OneDriveLibrary?c+=" ("+mxResources.get("oneDrive")+")":b.constructor==StorageLibrary?c+=" ("+ +mxResources.get("browser")+")":b.constructor==LocalLibrary&&(c+=" ("+mxResources.get("device")+")");return c}; +App.prototype.restoreLibraries=function(){if(null!=this.sidebar){null==this.pendingLibraries&&(this.pendingLibraries={});var b=mxUtils.bind(this,function(a,b){b||mxSettings.removeCustomLibrary(a);delete this.pendingLibraries[a]}),c=mxUtils.bind(this,function(a,c){var e=0,f=[],l=mxUtils.bind(this,function(){if(0==e){if(null!=a)for(var b=a.length-1;0<=b;b--)null!=f[b]&&this.loadLibrary(f[b]);null!=c&&c()}});if(null!=a)for(var q=0;q<a.length;q++){var p=encodeURIComponent(decodeURIComponent(a[q]));mxUtils.bind(this, +function(a,c){if(null!=a&&0<a.length&&null==this.pendingLibraries[a]&&null==this.sidebar.palettes[a]){e++;var d=mxUtils.bind(this,function(b){delete this.pendingLibraries[a];f[c]=b;e--;l()}),k=mxUtils.bind(this,function(c){b(a,c);e--;l()});this.pendingLibraries[a]=!0;var q=a.substring(0,1);if("L"==q)(isLocalStorage||mxClient.IS_CHROMEAPP)&&window.setTimeout(mxUtils.bind(this,function(){try{var b=decodeURIComponent(a.substring(1));this.getLocalData(b,mxUtils.bind(this,function(a){".scratchpad"==b&& +null==a&&(a=this.emptyLibraryXml);null!=a?d(new StorageLibrary(this,a,b)):k()}))}catch(n){k()}}),0);else if("U"==q){var p=decodeURIComponent(a.substring(1));if(!this.isOffline()){q=p;this.isCorsEnabledForUrl(q)||(q="t="+(new Date).getTime(),q=PROXY_URL+"?url="+encodeURIComponent(p)+"&"+q);try{mxUtils.get(q,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus())try{d(new UrlLibrary(this,a.getText(),p))}catch(n){k()}else k()}),function(){k()})}catch(B){k()}}}else{var u=null;"G"==q? +null!=this.drive&&null!=this.drive.user&&(u=this.drive):"H"==q?null!=this.gitHub&&null!=this.gitHub.getUser()&&(u=this.gitHub):"T"==q?null!=this.trello&&this.trello.isAuthorized()&&(u=this.trello):"D"==q?null!=this.dropbox&&null!=this.dropbox.getUser()&&(u=this.dropbox):"W"==q&&null!=this.oneDrive&&null!=this.oneDrive.getUser()&&(u=this.oneDrive);null!=u?u.getLibrary(decodeURIComponent(a.substring(1)),mxUtils.bind(this,function(a){try{d(a)}catch(n){k()}}),function(a){k()}):k(!0)}}})(p,q)}l()});c(mxSettings.getCustomLibraries(), function(){c((urlParams.clibs||"").split(";"))})}}; -App.prototype.updateButtonContainer=function(){if(null!=this.buttonContainer){var a=this.getCurrentFile();if(null!=a&&("manual"==DrawioFile.SYNC||"auto"==DrawioFile.SYNC)){var c=("manual"==DrawioFile.SYNC||null!=a.sync&&!a.sync.enabled&&"min"!=uiTheme)&&(a.constructor==DriveFile||a.constructor==OneDriveFile)||a.constructor==GitHubFile||EditorUi.isElectronApp;null==this.syncButton&&c?(this.syncButton=document.createElement("div"),this.syncButton.className="geBtn gePrimaryBtn",this.syncButton.style.display= -"inline-block",this.syncButton.style.padding="0 10px 0 10px",this.syncButton.style.marginTop="-4px",this.syncButton.style.height="28px",this.syncButton.style.lineHeight="28px",this.syncButton.style.minWidth="0px",this.syncButton.style.cssFloat="left",this.syncButton.setAttribute("title",mxResources.get("synchronize")+" (Alt+Shift+S)"),mxUtils.write(this.syncButton,mxResources.get("synchronize")),mxEvent.addListener(this.syncButton,"click",mxUtils.bind(this,function(){this.actions.get("synchronize").funct()})), -this.buttonContainer.appendChild(this.syncButton)):null==this.syncButton||c||(this.syncButton.parentNode.removeChild(this.syncButton),this.syncButton=null)}null!=a&&a.constructor==DriveFile?null==this.shareButton&&(this.shareButton=document.createElement("div"),this.shareButton.className="geBtn gePrimaryBtn",this.shareButton.style.display="inline-block",this.shareButton.style.padding="0 10px 0 10px",this.shareButton.style.marginTop="-4px",this.shareButton.style.height="28px",this.shareButton.style.lineHeight= -"28px",this.shareButton.style.minWidth="0px",this.shareButton.style.cssFloat="right",this.shareButton.setAttribute("title",mxResources.get("share")),a=document.createElement("img"),a.setAttribute("src",this.shareImage),a.setAttribute("align","absmiddle"),a.style.marginRight="4px",a.style.marginTop="-3px",this.shareButton.appendChild(a),mxUtils.write(this.shareButton,mxResources.get("share")),mxEvent.addListener(this.shareButton,"click",mxUtils.bind(this,function(){this.actions.get("share").funct()})), -this.buttonContainer.appendChild(this.shareButton)):null!=this.shareButton&&(this.shareButton.parentNode.removeChild(this.shareButton),this.shareButton=null)}}; -App.prototype.save=function(a,c){var b=this.getCurrentFile(),f=mxResources.get("saving");if(null!=b&&this.spinner.spin(document.body,f)){this.editor.setStatus("");this.editor.graph.isEditing()&&this.editor.graph.stopEditing();var f=mxUtils.bind(this,function(){b.handleFileSuccess(!0);null!=c&&c()}),k=mxUtils.bind(this,function(a){b.handleFileError(a,!0)});try{a==b.getTitle()?b.save(!0,f,k):b.saveAs(a,f,k)}catch(h){b.handleFileError(h,!0)}}}; -App.prototype.pickFolder=function(a,c,b,f){b=null!=b?b:!0;var k=this.spinner.pause();b&&a==App.MODE_GOOGLE&&null!=this.drive?this.drive.pickFolder(mxUtils.bind(this,function(a){k();if(a.action==google.picker.Action.PICKED){var b=null;null!=a.docs&&0<a.docs.length&&"folder"==a.docs[0].type&&(b=a.docs[0].id);c(b)}})):b&&a==App.MODE_ONEDRIVE&&null!=this.oneDrive?this.oneDrive.pickFolder(mxUtils.bind(this,function(a){k();null!=a&&null!=a.value&&0<a.value.length&&(a=OneDriveFile.prototype.getIdOf(a.value[0]), -c(a))}),f):b&&a==App.MODE_GITHUB&&null!=this.gitHub?this.gitHub.pickFolder(mxUtils.bind(this,function(a){k();c(a)})):b&&a==App.MODE_TRELLO&&null!=this.trello?this.trello.pickFolder(mxUtils.bind(this,function(a){k();c(a)})):EditorUi.prototype.pickFolder.apply(this,arguments)}; -App.prototype.exportFile=function(a,c,b,f,k,h){k==App.MODE_DROPBOX?null!=this.dropbox&&this.spinner.spin(document.body,mxResources.get("saving"))&&this.dropbox.insertFile(c,f?this.base64ToBlob(a,b):a,mxUtils.bind(this,function(){this.spinner.stop()}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)})):k==App.MODE_GOOGLE?null!=this.drive&&this.spinner.spin(document.body,mxResources.get("saving"))&&this.drive.insertFile(c,a,h,mxUtils.bind(this,function(a){this.spinner.stop()}), -mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),b,f):k==App.MODE_ONEDRIVE?null!=this.oneDrive&&this.spinner.spin(document.body,mxResources.get("saving"))&&this.oneDrive.insertFile(c,f?this.base64ToBlob(a,b):a,mxUtils.bind(this,function(){this.spinner.stop()}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),!1,h):k==App.MODE_GITHUB?null!=this.gitHub&&this.spinner.spin(document.body,mxResources.get("saving"))&&this.gitHub.insertFile(c,a,mxUtils.bind(this, -function(){this.spinner.stop()}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),!0,h,f):k==App.MODE_TRELLO?null!=this.trello&&this.spinner.spin(document.body,mxResources.get("saving"))&&this.trello.insertFile(c,f?this.base64ToBlob(a,b):a,mxUtils.bind(this,function(){this.spinner.stop()}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),!1,h):k==App.MODE_BROWSER&&(b=mxUtils.bind(this,function(){localStorage.setItem(c,a)}),null==localStorage.getItem(c)? -b():this.confirm(mxResources.get("replaceIt",[c]),b))}; -App.prototype.descriptorChanged=function(){var a=this.getCurrentFile();if(null!=a){if(null!=this.fname){this.fnameWrapper.style.display="block";this.fname.innerHTML="";var c=null!=a.getTitle()?a.getTitle():this.defaultFilename;mxUtils.write(this.fname,c);this.fname.setAttribute("title",c+" - "+mxResources.get("rename"))}var c=this.editor.graph,b=a.isEditable()&&!a.invalidChecksum;c.isEnabled()&&!b&&c.reset();c.setEnabled(b);null==urlParams.rev&&(this.updateDocumentTitle(),a=a.getHash(),0<a.length? -window.location.hash=a:0<window.location.hash.length&&(window.location.hash=""))}this.updateUi();null!=this.format&&this.format.refresh()}; -App.prototype.showAuthDialog=function(a,c,b,f){var k=this.spinner.pause();this.showDialog((new AuthDialog(this,a,c,mxUtils.bind(this,function(a){try{null!=b&&b(a,mxUtils.bind(this,function(){this.hideDialog();k()}))}catch(l){this.editor.setStatus(mxUtils.htmlEntities(l.message))}}))).container,300,c?180:140,!0,!0,mxUtils.bind(this,function(a){null!=f&&f();a&&null==this.getCurrentFile()&&null==this.dialog&&this.showSplash()}))}; -App.prototype.convertFile=function(a,c,b,f,k,h){var l=c;/\.svg$/i.test(l)||(l=l.substring(0,c.lastIndexOf("."))+f);var t=!1;null!=this.gitHub&&a.substring(0,this.gitHub.baseUrl.length)==this.gitHub.baseUrl&&(t=!0);if(/\.v(dx|sdx?)$/i.test(c)&&Graph.fileSupport&&(new XMLHttpRequest).upload&&"string"===typeof(new XMLHttpRequest).responseType){var p=new XMLHttpRequest;p.open("GET",a,!0);t||(p.responseType="blob");p.onload=mxUtils.bind(this,function(){var a=null;t?(a=JSON.parse(p.responseText),a=this.base64ToBlob(a.content, -"application/octet-stream")):a=new Blob([p.response],{type:"application/octet-stream"});this.importVisio(a,mxUtils.bind(this,function(a){k(new LocalFile(this,a,l,!0))}),h,c)});p.send()}else{var d=mxUtils.bind(this,function(b){try{/\.png$/i.test(c)?(temp=this.extractGraphModelFromPng(b),null!=temp?k(new LocalFile(this,temp,l,!0)):k(new LocalFile(this,b,c,!0))):Graph.fileSupport&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b,a)?this.parseFile(new Blob([b],{type:"application/octet-stream"}), -mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?k(new LocalFile(this,a.responseText,l,!0)):null!=h&&h({message:mxResources.get("errorLoadingFile")}))}),c):k(new LocalFile(this,b,l,!0))}catch(n){null!=h&&h(n)}});b=/\.png$/i.test(c)||/\.jpe?g$/i.test(c)||null!=b&&"image/"==b.substring(0,6);t?mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=k){a=JSON.parse(a.getText());var b=a.content;"base64"===a.encoding&&(b=/\.png$/i.test(c)? -"data:image/png;base64,"+b:!window.atob||mxClient.IS_IE||mxClient.IS_IE11?Base64.decode(b):atob(b));d(b)}}else null!=h&&h({code:App.ERROR_UNKNOWN})}),function(){null!=h&&h({code:App.ERROR_UNKNOWN})},!1,this.timeout,function(){null!=h&&h({code:App.ERROR_TIMEOUT,retry:fn})}):this.loadUrl(a,d,h,b)}}; -App.prototype.updateHeader=function(){if(null!=this.menubar){this.appIcon=document.createElement("a");this.appIcon.style.display="block";this.appIcon.style.position="absolute";this.appIcon.style.width="40px";this.appIcon.style.backgroundColor="#f18808";this.appIcon.style.height=this.menubarHeight+"px";mxEvent.disableContextMenu(this.appIcon);mxEvent.addListener(this.appIcon,"click",mxUtils.bind(this,function(a){this.appIconClicked(a)}));var a=mxClient.IS_SVG?"url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMzA2LjE4NSAxMjAuMjk2IgogICB2aWV3Qm94PSIyNCAyNiA2OCA2OCIKICAgeT0iMHB4IgogICB4PSIwcHgiCiAgIHZlcnNpb249IjEuMSI+CiAgIAkgPGc+PGxpbmUKICAgICAgIHkyPSI3Mi4zOTQiCiAgICAgICB4Mj0iNDEuMDYxIgogICAgICAgeTE9IjQzLjM4NCIKICAgICAgIHgxPSI1OC4wNjkiCiAgICAgICBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiCiAgICAgICBzdHJva2Utd2lkdGg9IjMuNTUyOCIKICAgICAgIHN0cm9rZT0iI0ZGRkZGRiIKICAgICAgIGZpbGw9Im5vbmUiIC8+PGxpbmUKICAgICAgIHkyPSI3Mi4zOTQiCiAgICAgICB4Mj0iNzUuMDc2IgogICAgICAgeTE9IjQzLjM4NCIKICAgICAgIHgxPSI1OC4wNjgiCiAgICAgICBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiCiAgICAgICBzdHJva2Utd2lkdGg9IjMuNTAwOCIKICAgICAgIHN0cm9rZT0iI0ZGRkZGRiIKICAgICAgIGZpbGw9Im5vbmUiIC8+PGc+PHBhdGgKICAgICAgICAgZD0iTTUyLjc3Myw3Ny4wODRjMCwxLjk1NC0xLjU5OSwzLjU1My0zLjU1MywzLjU1M0gzNi45OTljLTEuOTU0LDAtMy41NTMtMS41OTktMy41NTMtMy41NTN2LTkuMzc5ICAgIGMwLTEuOTU0LDEuNTk5LTMuNTUzLDMuNTUzLTMuNTUzaDEyLjIyMmMxLjk1NCwwLDMuNTUzLDEuNTk5LDMuNTUzLDMuNTUzVjc3LjA4NHoiCiAgICAgICAgIGZpbGw9IiNGRkZGRkYiIC8+PC9nPjxnCiAgICAgICBpZD0iZzM0MTkiPjxwYXRoCiAgICAgICAgIGQ9Ik02Ny43NjIsNDguMDc0YzAsMS45NTQtMS41OTksMy41NTMtMy41NTMsMy41NTNINTEuOTg4Yy0xLjk1NCwwLTMuNTUzLTEuNTk5LTMuNTUzLTMuNTUzdi05LjM3OSAgICBjMC0xLjk1NCwxLjU5OS0zLjU1MywzLjU1My0zLjU1M0g2NC4yMWMxLjk1NCwwLDMuNTUzLDEuNTk5LDMuNTUzLDMuNTUzVjQ4LjA3NHoiCiAgICAgICAgIGZpbGw9IiNGRkZGRkYiIC8+PC9nPjxnPjxwYXRoCiAgICAgICAgIGQ9Ik04Mi43NTIsNzcuMDg0YzAsMS45NTQtMS41OTksMy41NTMtMy41NTMsMy41NTNINjYuOTc3Yy0xLjk1NCwwLTMuNTUzLTEuNTk5LTMuNTUzLTMuNTUzdi05LjM3OSAgICBjMC0xLjk1NCwxLjU5OS0zLjU1MywzLjU1My0zLjU1M2gxMi4yMjJjMS45NTQsMCwzLjU1MywxLjU5OSwzLjU1MywzLjU1M1Y3Ny4wODR6IgogICAgICAgICBmaWxsPSIjRkZGRkZGIiAvPjwvZz48L2c+PC9zdmc+)": -"url('"+IMAGE_PATH+"/logo-white.png')";this.appIcon.style.backgroundImage=a;this.appIcon.style.backgroundPosition="center center";this.appIcon.style.backgroundRepeat="no-repeat";mxUtils.setPrefixedStyle(this.appIcon.style,"transition","all 125ms linear");mxEvent.addListener(this.appIcon,"mouseover",mxUtils.bind(this,function(){var a=this.getCurrentFile();null!=a&&(a=a.getMode(),a==App.MODE_GOOGLE?this.appIcon.style.backgroundImage="url("+IMAGE_PATH+"/google-drive-logo-white.svg)":a==App.MODE_DROPBOX? -this.appIcon.style.backgroundImage="url("+IMAGE_PATH+"/dropbox-logo-white.svg)":a==App.MODE_ONEDRIVE?this.appIcon.style.backgroundImage="url("+IMAGE_PATH+"/onedrive-logo-white.svg)":a==App.MODE_GITHUB?this.appIcon.style.backgroundImage="url("+IMAGE_PATH+"/github-logo-white.svg)":a==App.MODE_TRELLO&&(this.appIcon.style.backgroundImage="url("+IMAGE_PATH+"/trello-logo-white-orange.svg)"))}));mxEvent.addListener(this.appIcon,"mouseout",mxUtils.bind(this,function(){this.appIcon.style.backgroundImage=a})); +App.prototype.updateButtonContainer=function(){if(null!=this.buttonContainer){var b=this.getCurrentFile();null!=b&&b.constructor==DriveFile?null==this.shareButton&&(this.shareButton=document.createElement("div"),this.shareButton.className="geBtn gePrimaryBtn",this.shareButton.style.display="inline-block",this.shareButton.style.padding="0 10px 0 10px",this.shareButton.style.marginTop="-4px",this.shareButton.style.height="28px",this.shareButton.style.lineHeight="28px",this.shareButton.style.minWidth= +"0px",this.shareButton.style.cssFloat="right",this.shareButton.setAttribute("title",mxResources.get("share")),b=document.createElement("img"),b.setAttribute("src",this.shareImage),b.setAttribute("align","absmiddle"),b.style.marginRight="4px",b.style.marginTop="-3px",this.shareButton.appendChild(b),mxUtils.write(this.shareButton,mxResources.get("share")),mxEvent.addListener(this.shareButton,"click",mxUtils.bind(this,function(){this.actions.get("share").funct()})),this.buttonContainer.appendChild(this.shareButton)): +null!=this.shareButton&&(this.shareButton.parentNode.removeChild(this.shareButton),this.shareButton=null)}}; +App.prototype.save=function(b,c){var a=this.getCurrentFile(),e=mxResources.get("saving");if(null!=a&&this.spinner.spin(document.body,e)){this.editor.setStatus("");this.editor.graph.isEditing()&&this.editor.graph.stopEditing();var e=mxUtils.bind(this,function(){a.handleFileSuccess(!0);null!=c&&c()}),k=mxUtils.bind(this,function(b){a.handleFileError(b,!0)});try{b==a.getTitle()?a.save(!0,e,k):a.saveAs(b,e,k)}catch(f){a.handleFileError(f,!0)}}}; +App.prototype.pickFolder=function(b,c,a,e){a=null!=a?a:!0;var k=this.spinner.pause();a&&b==App.MODE_GOOGLE&&null!=this.drive?this.drive.pickFolder(mxUtils.bind(this,function(a){k();if(a.action==google.picker.Action.PICKED){var b=null;null!=a.docs&&0<a.docs.length&&"folder"==a.docs[0].type&&(b=a.docs[0].id);c(b)}})):a&&b==App.MODE_ONEDRIVE&&null!=this.oneDrive?this.oneDrive.pickFolder(mxUtils.bind(this,function(a){k();null!=a&&null!=a.value&&0<a.value.length&&(a=OneDriveFile.prototype.getIdOf(a.value[0]), +c(a))}),e):a&&b==App.MODE_GITHUB&&null!=this.gitHub?this.gitHub.pickFolder(mxUtils.bind(this,function(a){k();c(a)})):a&&b==App.MODE_TRELLO&&null!=this.trello?this.trello.pickFolder(mxUtils.bind(this,function(a){k();c(a)})):EditorUi.prototype.pickFolder.apply(this,arguments)}; +App.prototype.exportFile=function(b,c,a,e,k,f){k==App.MODE_DROPBOX?null!=this.dropbox&&this.spinner.spin(document.body,mxResources.get("saving"))&&this.dropbox.insertFile(c,e?this.base64ToBlob(b,a):b,mxUtils.bind(this,function(){this.spinner.stop()}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)})):k==App.MODE_GOOGLE?null!=this.drive&&this.spinner.spin(document.body,mxResources.get("saving"))&&this.drive.insertFile(c,b,f,mxUtils.bind(this,function(a){this.spinner.stop()}), +mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),a,e):k==App.MODE_ONEDRIVE?null!=this.oneDrive&&this.spinner.spin(document.body,mxResources.get("saving"))&&this.oneDrive.insertFile(c,e?this.base64ToBlob(b,a):b,mxUtils.bind(this,function(){this.spinner.stop()}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),!1,f):k==App.MODE_GITHUB?null!=this.gitHub&&this.spinner.spin(document.body,mxResources.get("saving"))&&this.gitHub.insertFile(c,b,mxUtils.bind(this, +function(){this.spinner.stop()}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),!0,f,e):k==App.MODE_TRELLO?null!=this.trello&&this.spinner.spin(document.body,mxResources.get("saving"))&&this.trello.insertFile(c,e?this.base64ToBlob(b,a):b,mxUtils.bind(this,function(){this.spinner.stop()}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),!1,f):k==App.MODE_BROWSER&&(a=mxUtils.bind(this,function(){localStorage.setItem(c,b)}),null==localStorage.getItem(c)? +a():this.confirm(mxResources.get("replaceIt",[c]),a))}; +App.prototype.descriptorChanged=function(){var b=this.getCurrentFile();if(null!=b){if(null!=this.fname){this.fnameWrapper.style.display="block";this.fname.innerHTML="";var c=null!=b.getTitle()?b.getTitle():this.defaultFilename;mxUtils.write(this.fname,c);this.fname.setAttribute("title",c+" - "+mxResources.get("rename"))}var c=this.editor.graph,a=b.isEditable()&&!b.invalidChecksum;c.isEnabled()&&!a&&c.reset();c.setEnabled(a);null==urlParams.rev&&(this.updateDocumentTitle(),b=b.getHash(),0<b.length? +window.location.hash=b:0<window.location.hash.length&&(window.location.hash=""))}this.updateUi();null!=this.format&&this.format.refresh()}; +App.prototype.showAuthDialog=function(b,c,a,e){var k=this.spinner.pause();this.showDialog((new AuthDialog(this,b,c,mxUtils.bind(this,function(b){try{null!=a&&a(b,mxUtils.bind(this,function(){this.hideDialog();k()}))}catch(l){this.editor.setStatus(mxUtils.htmlEntities(l.message))}}))).container,300,c?180:140,!0,!0,mxUtils.bind(this,function(a){null!=e&&e();a&&null==this.getCurrentFile()&&null==this.dialog&&this.showSplash()}))}; +App.prototype.convertFile=function(b,c,a,e,k,f){var l=c;/\.svg$/i.test(l)||(l=l.substring(0,c.lastIndexOf("."))+e);var q=!1;null!=this.gitHub&&b.substring(0,this.gitHub.baseUrl.length)==this.gitHub.baseUrl&&(q=!0);if(/\.v(dx|sdx?)$/i.test(c)&&Graph.fileSupport&&(new XMLHttpRequest).upload&&"string"===typeof(new XMLHttpRequest).responseType){var p=new XMLHttpRequest;p.open("GET",b,!0);q||(p.responseType="blob");p.onload=mxUtils.bind(this,function(){var a=null;q?(a=JSON.parse(p.responseText),a=this.base64ToBlob(a.content, +"application/octet-stream")):a=new Blob([p.response],{type:"application/octet-stream"});this.importVisio(a,mxUtils.bind(this,function(a){k(new LocalFile(this,a,l,!0))}),f,c)});p.send()}else{var u=mxUtils.bind(this,function(a){try{/\.png$/i.test(c)?(temp=this.extractGraphModelFromPng(a),null!=temp?k(new LocalFile(this,temp,l,!0)):k(new LocalFile(this,a,c,!0))):Graph.fileSupport&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a,b)?this.parseFile(new Blob([a],{type:"application/octet-stream"}), +mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?k(new LocalFile(this,a.responseText,l,!0)):null!=f&&f({message:mxResources.get("errorLoadingFile")}))}),c):k(new LocalFile(this,a,l,!0))}catch(g){null!=f&&f(g)}});a=/\.png$/i.test(c)||/\.jpe?g$/i.test(c)||null!=a&&"image/"==a.substring(0,6);q?mxUtils.get(b,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=k){a=JSON.parse(a.getText());var b=a.content;"base64"===a.encoding&&(b=/\.png$/i.test(c)? +"data:image/png;base64,"+b:!window.atob||mxClient.IS_IE||mxClient.IS_IE11?Base64.decode(b):atob(b));u(b)}}else null!=f&&f({code:App.ERROR_UNKNOWN})}),function(){null!=f&&f({code:App.ERROR_UNKNOWN})},!1,this.timeout,function(){null!=f&&f({code:App.ERROR_TIMEOUT,retry:fn})}):this.loadUrl(b,u,f,a)}}; +App.prototype.updateHeader=function(){if(null!=this.menubar){this.appIcon=document.createElement("a");this.appIcon.style.display="block";this.appIcon.style.position="absolute";this.appIcon.style.width="40px";this.appIcon.style.backgroundColor="#f18808";this.appIcon.style.height=this.menubarHeight+"px";mxEvent.disableContextMenu(this.appIcon);mxEvent.addListener(this.appIcon,"click",mxUtils.bind(this,function(a){this.appIconClicked(a)}));var b=mxClient.IS_SVG?"url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMzA2LjE4NSAxMjAuMjk2IgogICB2aWV3Qm94PSIyNCAyNiA2OCA2OCIKICAgeT0iMHB4IgogICB4PSIwcHgiCiAgIHZlcnNpb249IjEuMSI+CiAgIAkgPGc+PGxpbmUKICAgICAgIHkyPSI3Mi4zOTQiCiAgICAgICB4Mj0iNDEuMDYxIgogICAgICAgeTE9IjQzLjM4NCIKICAgICAgIHgxPSI1OC4wNjkiCiAgICAgICBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiCiAgICAgICBzdHJva2Utd2lkdGg9IjMuNTUyOCIKICAgICAgIHN0cm9rZT0iI0ZGRkZGRiIKICAgICAgIGZpbGw9Im5vbmUiIC8+PGxpbmUKICAgICAgIHkyPSI3Mi4zOTQiCiAgICAgICB4Mj0iNzUuMDc2IgogICAgICAgeTE9IjQzLjM4NCIKICAgICAgIHgxPSI1OC4wNjgiCiAgICAgICBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiCiAgICAgICBzdHJva2Utd2lkdGg9IjMuNTAwOCIKICAgICAgIHN0cm9rZT0iI0ZGRkZGRiIKICAgICAgIGZpbGw9Im5vbmUiIC8+PGc+PHBhdGgKICAgICAgICAgZD0iTTUyLjc3Myw3Ny4wODRjMCwxLjk1NC0xLjU5OSwzLjU1My0zLjU1MywzLjU1M0gzNi45OTljLTEuOTU0LDAtMy41NTMtMS41OTktMy41NTMtMy41NTN2LTkuMzc5ICAgIGMwLTEuOTU0LDEuNTk5LTMuNTUzLDMuNTUzLTMuNTUzaDEyLjIyMmMxLjk1NCwwLDMuNTUzLDEuNTk5LDMuNTUzLDMuNTUzVjc3LjA4NHoiCiAgICAgICAgIGZpbGw9IiNGRkZGRkYiIC8+PC9nPjxnCiAgICAgICBpZD0iZzM0MTkiPjxwYXRoCiAgICAgICAgIGQ9Ik02Ny43NjIsNDguMDc0YzAsMS45NTQtMS41OTksMy41NTMtMy41NTMsMy41NTNINTEuOTg4Yy0xLjk1NCwwLTMuNTUzLTEuNTk5LTMuNTUzLTMuNTUzdi05LjM3OSAgICBjMC0xLjk1NCwxLjU5OS0zLjU1MywzLjU1My0zLjU1M0g2NC4yMWMxLjk1NCwwLDMuNTUzLDEuNTk5LDMuNTUzLDMuNTUzVjQ4LjA3NHoiCiAgICAgICAgIGZpbGw9IiNGRkZGRkYiIC8+PC9nPjxnPjxwYXRoCiAgICAgICAgIGQ9Ik04Mi43NTIsNzcuMDg0YzAsMS45NTQtMS41OTksMy41NTMtMy41NTMsMy41NTNINjYuOTc3Yy0xLjk1NCwwLTMuNTUzLTEuNTk5LTMuNTUzLTMuNTUzdi05LjM3OSAgICBjMC0xLjk1NCwxLjU5OS0zLjU1MywzLjU1My0zLjU1M2gxMi4yMjJjMS45NTQsMCwzLjU1MywxLjU5OSwzLjU1MywzLjU1M1Y3Ny4wODR6IgogICAgICAgICBmaWxsPSIjRkZGRkZGIiAvPjwvZz48L2c+PC9zdmc+)": +"url('"+IMAGE_PATH+"/logo-white.png')";this.appIcon.style.backgroundImage=b;this.appIcon.style.backgroundPosition="center center";this.appIcon.style.backgroundRepeat="no-repeat";mxUtils.setPrefixedStyle(this.appIcon.style,"transition","all 125ms linear");mxEvent.addListener(this.appIcon,"mouseover",mxUtils.bind(this,function(){var a=this.getCurrentFile();null!=a&&(a=a.getMode(),a==App.MODE_GOOGLE?this.appIcon.style.backgroundImage="url("+IMAGE_PATH+"/google-drive-logo-white.svg)":a==App.MODE_DROPBOX? +this.appIcon.style.backgroundImage="url("+IMAGE_PATH+"/dropbox-logo-white.svg)":a==App.MODE_ONEDRIVE?this.appIcon.style.backgroundImage="url("+IMAGE_PATH+"/onedrive-logo-white.svg)":a==App.MODE_GITHUB?this.appIcon.style.backgroundImage="url("+IMAGE_PATH+"/github-logo-white.svg)":a==App.MODE_TRELLO&&(this.appIcon.style.backgroundImage="url("+IMAGE_PATH+"/trello-logo-white-orange.svg)"))}));mxEvent.addListener(this.appIcon,"mouseout",mxUtils.bind(this,function(){this.appIcon.style.backgroundImage=b})); "1"!=urlParams.embed&&this.menubarContainer.appendChild(this.appIcon);this.fnameWrapper=document.createElement("div");this.fnameWrapper.style.position="absolute";this.fnameWrapper.style.right="120px";this.fnameWrapper.style.left="50px";this.fnameWrapper.style.top="6px";this.fnameWrapper.style.height="26px";this.fnameWrapper.style.display="none";this.fnameWrapper.style.overflow="hidden";this.fnameWrapper.style.textOverflow="ellipsis";this.fname=document.createElement("a");this.fname.setAttribute("title", mxResources.get("rename"));this.fname.className="geItem";this.fname.style.padding="2px 8px 2px 8px";this.fname.style.display="inline";this.fname.style.fontSize="18px";this.fname.style.whiteSpace="nowrap";mxEvent.addListener(this.fname,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(this.fname,"click",mxUtils.bind(this,function(a){var b=this.getCurrentFile();null!=b&&b.isRenamable()&&(this.editor.graph.isEditing()&&this.editor.graph.stopEditing(), this.actions.get("rename").funct());mxEvent.consume(a)}));this.fnameWrapper.appendChild(this.fname);"1"!=urlParams.embed&&(this.menubarContainer.appendChild(this.fnameWrapper),this.menubar.container.style.position="absolute",this.menubar.container.style.paddingLeft="52px",this.menubar.container.style.boxSizing="border-box",this.menubar.container.style.top="29px",this.toolbar.container.style.paddingLeft="56px");this.toggleFormatElement=document.createElement("a");this.toggleFormatElement.setAttribute("title", @@ -8454,293 +8458,294 @@ mxResources.get("formatPanel")+" ("+Editor.ctrlKey+"+Shift+P)");this.toggleForma this.toggleFormatElement.style.height="16px";this.toggleFormatElement.style.backgroundPosition="50% 50%";this.toggleFormatElement.style.backgroundRepeat="no-repeat";this.toolbarContainer.appendChild(this.toggleFormatElement);"dark"==uiTheme&&(this.toggleFormatElement.style.filter="invert(100%)");mxEvent.addListener(this.toggleFormatElement,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(this.toggleFormatElement,"click",mxUtils.bind(this, function(a){this.actions.get("formatPanel").funct();mxEvent.consume(a)}));var c=mxUtils.bind(this,function(){this.toggleFormatElement.style.backgroundImage=0<this.formatWidth?"url('"+this.formatShowImage+"')":"url('"+this.formatHideImage+"')"});this.addListener("formatWidthChanged",c);c();this.fullscreenElement=document.createElement("a");this.fullscreenElement.setAttribute("title",mxResources.get("fullscreen"));this.fullscreenElement.style.position="absolute";this.fullscreenElement.style.display= "inline-block";this.fullscreenElement.style.top="5px";this.fullscreenElement.style.right="atlas"!=uiTheme&&"1"!=urlParams.embed?"42px":"26px";this.fullscreenElement.style.padding="2px";this.fullscreenElement.style.fontSize="14px";this.fullscreenElement.className="atlas"!=uiTheme?"geButton":"";this.fullscreenElement.style.width="16px";this.fullscreenElement.style.height="16px";this.fullscreenElement.style.backgroundPosition="50% 50%";this.fullscreenElement.style.backgroundRepeat="no-repeat";this.fullscreenElement.style.backgroundImage= -"url('"+this.fullscreenImage+"')";this.toolbarContainer.appendChild(this.fullscreenElement);mxEvent.addListener(this.fullscreenElement,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));var b=this.hsplitPosition,f=!1;"dark"==uiTheme&&(this.fullscreenElement.style.filter="invert(100%)");mxEvent.addListener(this.fullscreenElement,"click",mxUtils.bind(this,function(a){"atlas"!=uiTheme&&"1"!=urlParams.embed&&this.toggleCompactMode(!f);this.toggleFormatPanel(!f); -this.hsplitPosition=f?b:0;this.hideFooter();f=!f;mxEvent.consume(a)}));"atlas"==uiTheme&&(mxUtils.setOpacity(this.toggleFormatElement,70),mxUtils.setOpacity(this.fullscreenElement,70),this.toggleFormatElement.style.right="6px",this.fullscreenElement.style.right="22px",this.toggleFormatElement.style.top="8px",this.fullscreenElement.style.top="8px");"1"!=urlParams.embed&&(this.toggleElement=document.createElement("a"),this.toggleElement.setAttribute("title",mxResources.get("collapseExpand")),this.toggleElement.className= +"url('"+this.fullscreenImage+"')";this.toolbarContainer.appendChild(this.fullscreenElement);mxEvent.addListener(this.fullscreenElement,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));var a=this.hsplitPosition,e=!1;"dark"==uiTheme&&(this.fullscreenElement.style.filter="invert(100%)");mxEvent.addListener(this.fullscreenElement,"click",mxUtils.bind(this,function(b){"atlas"!=uiTheme&&"1"!=urlParams.embed&&this.toggleCompactMode(!e);this.toggleFormatPanel(!e); +this.hsplitPosition=e?a:0;this.hideFooter();e=!e;mxEvent.consume(b)}));"atlas"==uiTheme&&(mxUtils.setOpacity(this.toggleFormatElement,70),mxUtils.setOpacity(this.fullscreenElement,70),this.toggleFormatElement.style.right="6px",this.fullscreenElement.style.right="22px",this.toggleFormatElement.style.top="8px",this.fullscreenElement.style.top="8px");"1"!=urlParams.embed&&(this.toggleElement=document.createElement("a"),this.toggleElement.setAttribute("title",mxResources.get("collapseExpand")),this.toggleElement.className= "geButton",this.toggleElement.style.position="absolute",this.toggleElement.style.display="inline-block",this.toggleElement.style.width="16px",this.toggleElement.style.height="16px",this.toggleElement.style.color="#666",this.toggleElement.style.top="5px",this.toggleElement.style.right="10px",this.toggleElement.style.padding="2px",this.toggleElement.style.fontSize="14px",this.toggleElement.style.textDecoration="none",this.toggleElement.style.backgroundImage="url('"+this.chevronUpImage+"')",this.toggleElement.style.backgroundPosition= "50% 50%",this.toggleElement.style.backgroundRepeat="no-repeat","dark"==uiTheme&&(this.toggleElement.style.filter="invert(100%)"),mxEvent.addListener(this.toggleElement,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()})),mxEvent.addListener(this.toggleElement,"click",mxUtils.bind(this,function(a){this.toggleCompactMode();mxEvent.consume(a)})),"atlas"!=uiTheme&&this.toolbarContainer.appendChild(this.toggleElement),740>=screen.height&&"undefined"!==typeof this.toggleElement.click&& window.setTimeout(mxUtils.bind(this,function(){this.toggleElement.click()}),0))}}; -App.prototype.toggleCompactMode=function(a){a||"none"!=this.appIcon.style.display?(this.menubar.container.style.position="relative",this.menubar.container.style.paddingLeft="4px",this.menubar.container.style.paddingTop="0px",this.menubar.container.style.paddingBottom="0px",this.menubar.container.style.top="0px",this.toolbar.container.style.paddingLeft="4px",this.buttonContainer.style.visibility="hidden",this.appIcon.style.display="none",this.fnameWrapper.style.display="none",this.fnameWrapper.style.visibility= +App.prototype.toggleCompactMode=function(b){b||"none"!=this.appIcon.style.display?(this.menubar.container.style.position="relative",this.menubar.container.style.paddingLeft="4px",this.menubar.container.style.paddingTop="0px",this.menubar.container.style.paddingBottom="0px",this.menubar.container.style.top="0px",this.toolbar.container.style.paddingLeft="4px",this.buttonContainer.style.visibility="hidden",this.appIcon.style.display="none",this.fnameWrapper.style.display="none",this.fnameWrapper.style.visibility= "hidden",this.menubarHeight=EditorUi.prototype.menubarHeight,this.refresh(),this.toggleElement.style.backgroundImage="url('"+this.chevronDownImage+"')"):(this.menubar.container.style.position="absolute",this.menubar.container.style.paddingLeft="52px",this.menubar.container.style.paddingTop="",this.menubar.container.style.paddingBottom="",this.menubar.container.style.top="29px",this.toolbar.container.style.paddingLeft="56px",this.buttonContainer.style.visibility="visible",this.appIcon.style.display= "block",this.fnameWrapper.style.display="block",this.fnameWrapper.style.visibility="visible",this.menubarHeight=App.prototype.menubarHeight,this.refresh(),this.toggleElement.style.backgroundImage="url('"+this.chevronUpImage+"')")}; App.prototype.updateUserElement=function(){if(null!=this.drive&&null!=this.drive.getUser()||null!=this.oneDrive&&null!=this.oneDrive.getUser()||null!=this.dropbox&&null!=this.dropbox.getUser()||null!=this.gitHub&&null!=this.gitHub.getUser()||null!=this.trello&&this.trello.isAuthorized()){null==this.userElement&&(this.userElement=document.createElement("a"),this.userElement.className="geItem",this.userElement.style.position="absolute",this.userElement.style.fontSize="8pt",this.userElement.style.top= "4px",this.userElement.style.right="30px",this.userElement.style.color="#666",this.userElement.style.margin="4px",this.userElement.style.padding="2px",this.userElement.style.paddingRight="16px",this.userElement.style.verticalAlign="middle",this.userElement.style.backgroundImage="url("+IMAGE_PATH+"/expanded.gif)",this.userElement.style.backgroundPosition="100% 60%",this.userElement.style.backgroundRepeat="no-repeat",this.menubarContainer.appendChild(this.userElement),mxEvent.addListener(this.userElement, -mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()})),mxEvent.addListener(this.userElement,"click",mxUtils.bind(this,function(a){if(null==this.userPanel){var b=document.createElement("div");b.className="geDialog";b.style.position="absolute";b.style.top=this.userElement.clientTop+this.userElement.clientHeight+6+"px";b.style.right="36px";b.style.padding="0px";b.style.cursor="default";this.userPanel=b}if(null!=this.userPanel.parentNode)this.userPanel.parentNode.removeChild(this.userPanel); -else{var c=!1;this.userPanel.innerHTML="";b=document.createElement("img");b.setAttribute("src",Dialog.prototype.closeImage);b.setAttribute("title",mxResources.get("close"));b.className="geDialogClose";b.style.top="8px";b.style.right="8px";mxEvent.addListener(b,"click",mxUtils.bind(this,function(){null!=this.userPanel.parentNode&&this.userPanel.parentNode.removeChild(this.userPanel)}));this.userPanel.appendChild(b);null!=this.drive&&(b=this.drive.getUser(),null!=b&&(c=!0,this.userPanel.innerHTML+= -'<table title="User ID: '+b.id+'" style="font-size:10pt;padding:20px 20px 10px 10px;"><tr><td valign="top">'+(null!=b.pictureUrl?'<img width="80" height="80" style="margin-right:10px;border-radius:50%;" src="'+b.pictureUrl+'"/>':'<img width="80" height="80" style="margin-right:4px;margin-top:2px;" src="'+this.defaultUserPicture+'"/>')+'</td><td valign="top" style="white-space:nowrap;'+(null!=b.pictureUrl?"padding-top:14px;":"")+'"><b>'+mxUtils.htmlEntities(b.displayName)+"</b><br><small>"+mxUtils.htmlEntities(b.email)+ -"</small><br><br><small>"+mxResources.get("googleDrive")+"</small></tr></table>",b=document.createElement("div"),b.style.textAlign="center",b.style.padding="12px",b.style.background="whiteSmoke",b.style.borderTop="1px solid #e0e0e0",b.style.whiteSpace="nowrap",b.appendChild(mxUtils.button(mxResources.get("signOut"),mxUtils.bind(this,function(){var a=this.getCurrentFile();null!=a&&a.constructor==DriveFile?this.confirm(mxResources.get("areYouSure"),mxUtils.bind(this,function(){this.spinner.spin(document.body, +mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(b){b.preventDefault()})),mxEvent.addListener(this.userElement,"click",mxUtils.bind(this,function(b){if(null==this.userPanel){var a=document.createElement("div");a.className="geDialog";a.style.position="absolute";a.style.top=this.userElement.clientTop+this.userElement.clientHeight+6+"px";a.style.right="36px";a.style.padding="0px";a.style.cursor="default";this.userPanel=a}if(null!=this.userPanel.parentNode)this.userPanel.parentNode.removeChild(this.userPanel); +else{var c=!1;this.userPanel.innerHTML="";a=document.createElement("img");a.setAttribute("src",Dialog.prototype.closeImage);a.setAttribute("title",mxResources.get("close"));a.className="geDialogClose";a.style.top="8px";a.style.right="8px";mxEvent.addListener(a,"click",mxUtils.bind(this,function(){null!=this.userPanel.parentNode&&this.userPanel.parentNode.removeChild(this.userPanel)}));this.userPanel.appendChild(a);null!=this.drive&&(a=this.drive.getUser(),null!=a&&(c=!0,this.userPanel.innerHTML+= +'<table title="User ID: '+a.id+'" style="font-size:10pt;padding:20px 20px 10px 10px;"><tr><td valign="top">'+(null!=a.pictureUrl?'<img width="80" height="80" style="margin-right:10px;border-radius:50%;" src="'+a.pictureUrl+'"/>':'<img width="80" height="80" style="margin-right:4px;margin-top:2px;" src="'+this.defaultUserPicture+'"/>')+'</td><td valign="top" style="white-space:nowrap;'+(null!=a.pictureUrl?"padding-top:14px;":"")+'"><b>'+mxUtils.htmlEntities(a.displayName)+"</b><br><small>"+mxUtils.htmlEntities(a.email)+ +"</small><br><br><small>"+mxResources.get("googleDrive")+"</small></tr></table>",a=document.createElement("div"),a.style.textAlign="center",a.style.padding="12px",a.style.background="whiteSmoke",a.style.borderTop="1px solid #e0e0e0",a.style.whiteSpace="nowrap",a.appendChild(mxUtils.button(mxResources.get("signOut"),mxUtils.bind(this,function(){var a=this.getCurrentFile();null!=a&&a.constructor==DriveFile?this.confirm(mxResources.get("areYouSure"),mxUtils.bind(this,function(){this.spinner.spin(document.body, mxResources.get("signOut"));this.diagramContainer.style.display="none";this.formatContainer.style.display="none";this.hsplit.style.display="none";this.sidebarContainer.style.display="none";this.sidebarFooterContainer.style.display="none";null!=this.tabContainer&&(this.tabContainer.style.display="none");a.close();window.setTimeout(mxUtils.bind(this,function(){this.showDialog=function(){};window.location.hash="";this.drive.clearUserId();gapi.auth.signOut();window.location.reload()}),null!=a&&a.constructor== -DriveFile?2E3:0)})):(this.drive.clearUserId(),this.drive.setUser(null),gapi.auth.signOut())}))),this.userPanel.appendChild(b)));b=mxUtils.bind(this,function(a,b,f,t){null!=a&&(c&&this.userPanel.appendChild(document.createElement("hr")),c=!0,this.userPanel.innerHTML+='<table style="font-size:10pt;padding:20px 20px 10px 10px;"><tr><td valign="top">'+(null!=b?'<img style="margin-right:10px;" src="'+b+'" width="40" height="40"/></td>':"")+'<td valign="middle" style="white-space:nowrap;"><b>'+mxUtils.htmlEntities(a.displayName)+ -"</b>"+(null!=a.email?'<br><font color="gray">'+mxUtils.htmlEntities(a.email)+"</font>":"")+(null!=t?"<br><br><small>"+mxUtils.htmlEntities(t)+"</small>":"")+"</td></tr></table>",a=document.createElement("div"),a.style.textAlign="center",a.style.padding="12px",a.style.background="whiteSmoke",a.style.borderTop="1px solid #e0e0e0",a.style.whiteSpace="nowrap",null!=f&&a.appendChild(mxUtils.button(mxResources.get("signOut"),f)),this.userPanel.appendChild(a))});null!=this.dropbox&&b(this.dropbox.getUser(), -IMAGE_PATH+"/dropbox-logo.svg",mxUtils.bind(this,function(){var a=this.getCurrentFile();if(null!=a&&a.constructor==DropboxFile){var b=mxUtils.bind(this,function(){this.dropbox.logout();window.location.hash=""});a.isModified()?this.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()}else this.dropbox.logout()}),mxResources.get("dropbox"));null!=this.oneDrive&&b(this.oneDrive.getUser(),IMAGE_PATH+"/onedrive-logo.svg",mxUtils.bind(this,function(){var a= -this.getCurrentFile();if(null!=a&&a.constructor==OneDriveFile){var b=mxUtils.bind(this,function(){this.oneDrive.logout();window.location.hash=""});a.isModified()?this.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()}else this.oneDrive.logout()}),mxResources.get("oneDrive"));null!=this.gitHub&&b(this.gitHub.getUser(),IMAGE_PATH+"/github-logo.svg",mxUtils.bind(this,function(){var a=this.getCurrentFile();if(null!=a&&a.constructor==GitHubFile){var b= -mxUtils.bind(this,function(){this.gitHub.logout();window.location.hash=""});a.isModified()?this.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()}else this.gitHub.logout()}),mxResources.get("github"));null!=this.trello&&b(this.trello.getUser(),IMAGE_PATH+"/trello-logo.svg",mxUtils.bind(this,function(){var a=this.getCurrentFile();if(null!=a&&a.constructor==TrelloFile){var b=mxUtils.bind(this,function(){this.trello.logout();window.location.hash= -""});a.isModified()?this.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()}else this.trello.logout()}),mxResources.get("trello"));c||(b=document.createElement("div"),b.style.textAlign="center",b.style.padding="20px 20px 10px 10px",b.innerHTML=mxResources.get("notConnected"),this.userPanel.appendChild(b));document.body.appendChild(this.userPanel)}mxEvent.consume(a)})),mxEvent.addListener(document.body,"click",mxUtils.bind(this,function(a){mxEvent.isConsumed(a)|| -null==this.userPanel||null==this.userPanel.parentNode||this.userPanel.parentNode.removeChild(this.userPanel)})));var a=null;null!=this.drive&&null!=this.drive.getUser()?a=this.drive.getUser():null!=this.oneDrive&&null!=this.oneDrive.getUser()?a=this.oneDrive.getUser():null!=this.dropbox&&null!=this.dropbox.getUser()?a=this.dropbox.getUser():null!=this.gitHub&&null!=this.gitHub.getUser()&&(a=this.gitHub.getUser());null!=a?(this.userElement.innerHTML="",560<screen.width&&(mxUtils.write(this.userElement, -a.displayName),this.userElement.style.display="block")):this.userElement.style.display="none"}else null!=this.userElement&&(this.userElement.parentNode.removeChild(this.userElement),this.userElement=null)};var editorResetGraph=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){editorResetGraph.apply(this,arguments);this.graph.pageFormat=mxSettings.getPageFormat()};(function(){var a=mxPopupMenu.prototype.showMenu;mxPopupMenu.prototype.showMenu=function(){a.apply(this,arguments);this.div.style.overflowY="auto";this.div.style.overflowX="hidden";this.div.style.maxHeight=Math.max(document.body.clientHeight,document.documentElement.clientHeight)-10+"px"};Menus.prototype.createHelpLink=function(a){var b=document.createElement("span");b.setAttribute("title",mxResources.get("help"));b.style.cssText="color:blue;text-decoration:underline;margin-left:8px;cursor:help;"; -var c=document.createElement("img");mxUtils.setOpacity(c,50);c.style.height="16px";c.style.width="16px";c.setAttribute("border","0");c.setAttribute("valign","bottom");c.setAttribute("src",Editor.helpImage);b.appendChild(c);mxEvent.addGestureListeners(b,mxUtils.bind(this,function(b){null!=this.editorUi.menubar&&this.editorUi.menubar.hideMenu();this.editorUi.openLink(a);mxEvent.consume(b)}));return b};Menus.prototype.addLinkToItem=function(a,c){null!=a&&a.firstChild.nextSibling.appendChild(this.createHelpLink(c))}; -var c=Menus.prototype.init;Menus.prototype.init=function(){c.apply(this,arguments);var a=this.editorUi,f=a.editor.graph,k=mxUtils.bind(f,f.isEnabled),h=("1"!=urlParams.embed&&"0"!=urlParams.gapi||"1"==urlParams.embed&&"1"==urlParams.gapi)&&mxClient.IS_SVG&&isLocalStorage&&(null==document.documentMode||10<=document.documentMode),l=("1"!=urlParams.embed&&"0"!=urlParams.db||"1"==urlParams.embed&&"1"==urlParams.db)&&mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode),t=("www.draw.io"== +DriveFile?2E3:0)})):(this.drive.clearUserId(),this.drive.setUser(null),gapi.auth.signOut())}))),this.userPanel.appendChild(a)));a=mxUtils.bind(this,function(a,b,e,q){null!=a&&(c&&this.userPanel.appendChild(document.createElement("hr")),c=!0,this.userPanel.innerHTML+='<table style="font-size:10pt;padding:20px 20px 10px 10px;"><tr><td valign="top">'+(null!=b?'<img style="margin-right:10px;" src="'+b+'" width="40" height="40"/></td>':"")+'<td valign="middle" style="white-space:nowrap;"><b>'+mxUtils.htmlEntities(a.displayName)+ +"</b>"+(null!=a.email?'<br><font color="gray">'+mxUtils.htmlEntities(a.email)+"</font>":"")+(null!=q?"<br><br><small>"+mxUtils.htmlEntities(q)+"</small>":"")+"</td></tr></table>",a=document.createElement("div"),a.style.textAlign="center",a.style.padding="12px",a.style.background="whiteSmoke",a.style.borderTop="1px solid #e0e0e0",a.style.whiteSpace="nowrap",null!=e&&a.appendChild(mxUtils.button(mxResources.get("signOut"),e)),this.userPanel.appendChild(a))});null!=this.dropbox&&a(this.dropbox.getUser(), +IMAGE_PATH+"/dropbox-logo.svg",mxUtils.bind(this,function(){var a=this.getCurrentFile();if(null!=a&&a.constructor==DropboxFile){var b=mxUtils.bind(this,function(){this.dropbox.logout();window.location.hash=""});a.isModified()?this.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()}else this.dropbox.logout()}),mxResources.get("dropbox"));null!=this.oneDrive&&a(this.oneDrive.getUser(),IMAGE_PATH+"/onedrive-logo.svg",mxUtils.bind(this,function(){var a= +this.getCurrentFile();if(null!=a&&a.constructor==OneDriveFile){var b=mxUtils.bind(this,function(){this.oneDrive.logout();window.location.hash=""});a.isModified()?this.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()}else this.oneDrive.logout()}),mxResources.get("oneDrive"));null!=this.gitHub&&a(this.gitHub.getUser(),IMAGE_PATH+"/github-logo.svg",mxUtils.bind(this,function(){var a=this.getCurrentFile();if(null!=a&&a.constructor==GitHubFile){var b= +mxUtils.bind(this,function(){this.gitHub.logout();window.location.hash=""});a.isModified()?this.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()}else this.gitHub.logout()}),mxResources.get("github"));null!=this.trello&&a(this.trello.getUser(),IMAGE_PATH+"/trello-logo.svg",mxUtils.bind(this,function(){var a=this.getCurrentFile();if(null!=a&&a.constructor==TrelloFile){var b=mxUtils.bind(this,function(){this.trello.logout();window.location.hash= +""});a.isModified()?this.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()}else this.trello.logout()}),mxResources.get("trello"));c||(a=document.createElement("div"),a.style.textAlign="center",a.style.padding="20px 20px 10px 10px",a.innerHTML=mxResources.get("notConnected"),this.userPanel.appendChild(a));document.body.appendChild(this.userPanel)}mxEvent.consume(b)})),mxEvent.addListener(document.body,"click",mxUtils.bind(this,function(b){mxEvent.isConsumed(b)|| +null==this.userPanel||null==this.userPanel.parentNode||this.userPanel.parentNode.removeChild(this.userPanel)})));var b=null;null!=this.drive&&null!=this.drive.getUser()?b=this.drive.getUser():null!=this.oneDrive&&null!=this.oneDrive.getUser()?b=this.oneDrive.getUser():null!=this.dropbox&&null!=this.dropbox.getUser()?b=this.dropbox.getUser():null!=this.gitHub&&null!=this.gitHub.getUser()&&(b=this.gitHub.getUser());null!=b?(this.userElement.innerHTML="",560<screen.width&&(mxUtils.write(this.userElement, +b.displayName),this.userElement.style.display="block")):this.userElement.style.display="none"}else null!=this.userElement&&(this.userElement.parentNode.removeChild(this.userElement),this.userElement=null)};var editorResetGraph=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){editorResetGraph.apply(this,arguments);this.graph.pageFormat=mxSettings.getPageFormat()};(function(){var b=mxPopupMenu.prototype.showMenu;mxPopupMenu.prototype.showMenu=function(){b.apply(this,arguments);this.div.style.overflowY="auto";this.div.style.overflowX="hidden";this.div.style.maxHeight=Math.max(document.body.clientHeight,document.documentElement.clientHeight)-10+"px"};Menus.prototype.createHelpLink=function(a){var b=document.createElement("span");b.setAttribute("title",mxResources.get("help"));b.style.cssText="color:blue;text-decoration:underline;margin-left:8px;cursor:help;"; +var c=document.createElement("img");mxUtils.setOpacity(c,50);c.style.height="16px";c.style.width="16px";c.setAttribute("border","0");c.setAttribute("valign","bottom");c.setAttribute("src",Editor.helpImage);b.appendChild(c);mxEvent.addGestureListeners(b,mxUtils.bind(this,function(b){null!=this.editorUi.menubar&&this.editorUi.menubar.hideMenu();this.editorUi.openLink(a);mxEvent.consume(b)}));return b};Menus.prototype.addLinkToItem=function(a,b){null!=a&&a.firstChild.nextSibling.appendChild(this.createHelpLink(b))}; +var c=Menus.prototype.init;Menus.prototype.init=function(){c.apply(this,arguments);var a=this.editorUi,b=a.editor.graph,k=mxUtils.bind(b,b.isEnabled),f=("1"!=urlParams.embed&&"0"!=urlParams.gapi||"1"==urlParams.embed&&"1"==urlParams.gapi)&&mxClient.IS_SVG&&isLocalStorage&&(null==document.documentMode||10<=document.documentMode),l=("1"!=urlParams.embed&&"0"!=urlParams.db||"1"==urlParams.embed&&"1"==urlParams.db)&&mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode),q=("www.draw.io"== window.location.hostname||"test.draw.io"==window.location.hostname||"drive.draw.io"==window.location.hostname||"legacy.draw.io"==window.location.hostname)&&("1"!=urlParams.embed&&"0"!=urlParams.od||"1"==urlParams.embed&&"1"==urlParams.od)&&!navigator.userAgent.match(/(iPad|iPhone|iPod)/g)&&(0>navigator.userAgent.indexOf("MSIE")||10<=document.documentMode),p=("1"!=urlParams.embed&&"0"!=urlParams.tr||"1"==urlParams.embed&&"1"==urlParams.tr)&&mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode); mxClient.IS_SVG||a.isOffline()||((new Image).src=IMAGE_PATH+"/help.png");a.actions.addAction("new...",function(){var b=a.isOffline(),c=new NewDialog(a,b);a.showDialog(c.container,b?350:620,b?70:440,!0,!0,function(b){b&&null==a.getCurrentFile()&&a.showSplash()});c.init()});a.actions.put("exportSvg",new Action(mxResources.get("formatSvg")+"...",function(){a.showExportDialog(mxResources.get("formatSvg"),!0,mxResources.get("export"),"https://support.draw.io/display/DO/Exporting+Files",mxUtils.bind(this, -function(b,c,d,f,g,h,k,l,n,p){b=parseInt(b);!isNaN(b)&&0<b&&a.exportSvg(b/100,c,d,f,g,h,k,!l,n,p)}),!0,null,"svg")}));a.actions.put("insertTemplate",new Action(mxResources.get("template")+"...",function(){var b=new NewDialog(a,null,!1,function(b){a.hideDialog();null!=b&&(f.setSelectionCells(a.importXml(b)),f.scrollCellToVisible(f.getSelectionCell()))},null,null,null,null,null,null,null,null,null,null,!1,mxResources.get("insert"));a.showDialog(b.container,620,440,!0,!0)}));a.actions.put("exportXml", -new Action(mxResources.get("formatXml")+"...",function(){var b=document.createElement("div");b.style.whiteSpace="nowrap";var c=null==a.pages||1>=a.pages.length,d=document.createElement("h3");mxUtils.write(d,mxResources.get("formatXml"));d.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";b.appendChild(d);var g=a.addCheckbox(b,mxResources.get("selectionOnly"),!1,f.isSelectionEmpty()),h=a.addCheckbox(b,mxResources.get(c?"compressed":"allPages"),!0);h.style.marginBottom="16px"; -mxEvent.addListener(g,"change",function(){g.checked?h.setAttribute("disabled","disabled"):h.removeAttribute("disabled")});b=new CustomDialog(a,b,mxUtils.bind(this,function(){a.downloadFile("xml",c?!h.checked:null,null,!g.checked,c?null:!h.checked)}),null,mxResources.get("export"));a.showDialog(b.container,300,146,!0,!0)}));a.actions.put("exportUrl",new Action(mxResources.get("url")+"...",function(){a.showPublishLinkDialog(mxResources.get("url"),!0,null,null,function(b,c,d,f,g,h){b=new EmbedDialog(a, -a.createLink(b,c,d,f,g,h,null,!0));a.showDialog(b.container,440,240,!0,!0);b.init()})}));a.actions.put("exportHtml",new Action(mxResources.get("formatHtmlEmbedded")+"...",function(){a.spinner.spin(document.body,mxResources.get("loading"))&&a.getPublicUrl(a.getCurrentFile(),function(b){a.spinner.stop();a.showHtmlDialog(mxResources.get("export"),null,b,function(b,c,d,f,g,m,h,k,l,n){a.createHtml(b,c,d,f,g,m,h,k,l,n,mxUtils.bind(this,function(b,c){var d=a.getBaseFilename(h),f='\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n<!DOCTYPE html>\n<html>\n<head>\n<title>'+ -mxUtils.htmlEntities(d)+'</title>\n<meta charset="utf-8"/>\n</head>\n<body>'+b+"\n"+c+"\n</body>\n</html>";a.saveData(d+".html","html",f,"text/html")}))})})}));a.actions.put("exportPdf",new Action(mxResources.get("formatPdf")+"...",function(){if(a.isOffline()||a.printPdfExport)a.showDialog((new PrintDialog(a,mxResources.get("formatPdf"))).container,360,null!=a.pages&&1<a.pages.length?420:360,!0,!0);else{var b=null==a.pages||1>=a.pages.length,c=document.createElement("div");c.style.whiteSpace="nowrap"; -var d=document.createElement("h3");mxUtils.write(d,mxResources.get("formatPdf"));d.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";c.appendChild(d);var d=function(){h!=this&&this.checked?l.removeAttribute("disabled"):(l.setAttribute("disabled","disabled"),l.checked=!1)},g=146;if(a.pdfPageExport&&!b){var h=a.addRadiobox(c,"pages",mxResources.get("allPages"),!0),g=a.addRadiobox(c,"pages",mxResources.get("currentPage",null,"Current Page"),!1),k=a.addRadiobox(c,"pages",mxResources.get("selectionOnly"), -!1,f.isSelectionEmpty()),l=a.addCheckbox(c,mxResources.get("crop"),!1,!0);mxEvent.addListener(h,"change",d);mxEvent.addListener(g,"change",d);mxEvent.addListener(k,"change",d);g=205}else k=a.addCheckbox(c,mxResources.get("selectionOnly"),!1,f.isSelectionEmpty()),l=a.addCheckbox(c,mxResources.get("crop"),!f.pageVisible||!a.pdfPageExport,!a.pdfPageExport),a.pdfPageExport||mxEvent.addListener(k,"change",d);c=new CustomDialog(a,c,mxUtils.bind(this,function(){a.downloadFile("pdf",null,null,!k.checked, -b?!0:!h.checked,!l.checked)}),null,mxResources.get("export"));a.showDialog(c.container,300,g,!0,!0)}}));a.actions.addAction("open...",function(){a.pickFile()});a.actions.addAction("close",function(){function b(){a.fileLoaded(null)}var c=a.getCurrentFile();null!=c&&c.isModified()?a.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()});a.actions.addAction("editShape...",mxUtils.bind(this,function(){f.getSelectionCells();if(1==f.getSelectionCount()){var b= -f.getSelectionCell(),c=f.view.getState(b);null!=c&&null!=c.shape&&null!=c.shape.stencil&&(b=new EditShapeDialog(a,b,mxResources.get("editShape")+":",630,400),a.showDialog(b.container,640,480,!0,!1),b.init())}}));a.actions.addAction("revisionHistory...",function(){var b=a.getCurrentFile();null!=b&&b.isRevisionHistorySupported()?a.spinner.spin(document.body,mxResources.get("loading"))&&b.getRevisions(mxUtils.bind(this,function(b){a.spinner.stop();b=new RevisionDialog(a,b);a.showDialog(b.container,640, -480,!0,!0);b.init()}),mxUtils.bind(this,function(b){a.handleError(b)})):a.showError(mxResources.get("error"),mxResources.get("notAvailable"),mxResources.get("ok"))});a.actions.addAction("createRevision",function(){a.actions.get("save").funct()},null,null,Editor.ctrlKey+"+S");var d=a.actions.addAction("synchronize",function(){a.synchronizeCurrentFile("none"==DrawioFile.SYNC)},null,null,"Alt+Shift+S");"none"==DrawioFile.SYNC&&(d.label=mxResources.get("refresh"));a.actions.addAction("upload...",function(){var b= -a.getCurrentFile();null!=b&&(window.drawdata=a.getFileData(),b=null!=b.getTitle()?b.getTitle():a.defaultFilename,a.openLink(window.location.protocol+"//"+window.location.host+"/?create=drawdata&"+(a.mode==App.MODE_DROPBOX?"mode=dropbox&":"")+"title="+encodeURIComponent(b),null,!0))});"undefined"!==typeof MathJax&&(d=a.actions.addAction("mathematicalTypesetting",function(){var b=new ChangePageSetup(a);b.ignoreColor=!0;b.ignoreImage=!0;b.mathEnabled=!a.isMathEnabled();f.model.execute(b)}),d.setToggleAction(!0), -d.setSelectedCallback(function(){return a.isMathEnabled()}),d.isEnabled=k);if(isLocalStorage||mxClient.IS_CHROMEAPP)d=a.actions.addAction("showStartScreen",function(){mxSettings.setShowStartScreen(!mxSettings.getShowStartScreen());mxSettings.save()}),d.setToggleAction(!0),d.setSelectedCallback(function(){return mxSettings.getShowStartScreen()});var g=a.actions.addAction("autosave",function(){a.editor.setAutosave(!a.editor.autosave)});g.setToggleAction(!0);g.setSelectedCallback(function(){return g.isEnabled()&& -a.editor.autosave});a.actions.addAction("editGeometry...",function(){for(var b=f.getSelectionCells(),c=[],d=0;d<b.length;d++)f.getModel().isVertex(b[d])&&c.push(b[d]);0<c.length&&(b=new EditGeometryDialog(a,c),a.showDialog(b.container,200,250,!0,!0),b.init())},null,null,Editor.ctrlKey+"+Shift+M");var n="rounded shadow dashed dashPattern fontFamily fontSize fontColor fontStyle align verticalAlign strokeColor strokeWidth fillColor gradientColor swimlaneFillColor textOpacity gradientDirection glass labelBackgroundColor labelBorderColor opacity spacing spacingTop spacingLeft spacingBottom spacingRight endFill endArrow endSize targetPerimeterSpacing startFill startArrow startSize sourcePerimeterSpacing arcSize".split(" "); -a.actions.addAction("copyStyle",function(){var b=f.view.getState(f.getSelectionCell());if(f.isEnabled()&&null!=b){a.copiedStyle=mxUtils.clone(b.style);for(var b=f.getModel().getStyle(b.cell),b=null!=b?b.split(";"):[],c=0;c<b.length;c++){var d=b[c],g=d.indexOf("=");if(0<=g){var h=d.substring(0,g),d=d.substring(g+1);null==a.copiedStyle[h]&&"none"==d&&(a.copiedStyle[h]="none")}}}},null,null,Editor.ctrlKey+"+Shift+C");a.actions.addAction("pasteStyle",function(){if(f.isEnabled()&&!f.isSelectionEmpty()&& -null!=a.copiedStyle){f.getModel().beginUpdate();try{for(var b=f.getSelectionCells(),c=0;c<b.length;c++)for(var d=f.view.getState(b[c]),g=0;g<n.length;g++){var h=n[g],k=a.copiedStyle[h];d.style[h]!=k&&f.setCellStyles(h,k,[b[c]])}}finally{f.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+V");a.actions.put("pageBackgroundImage",new Action(mxResources.get("backgroundImage")+"...",function(){if(!a.isOffline()){var b=new BackgroundImageDialog(a,function(b){a.setBackgroundImage(b)});a.showDialog(b.container, -320,170,!0,!0);b.init()}}));a.actions.put("exportPng",new Action(mxResources.get("formatPng")+"...",function(){a.isExportToCanvas()?a.showExportDialog(mxResources.get("image"),!1,mxResources.get("export"),"https://support.draw.io/display/DO/Exporting+Files",mxUtils.bind(this,function(b,c,d,f,g,h,k,l,n){b=parseInt(b);!isNaN(b)&&0<b&&a.exportImage(b/100,c,d,f,g,k,!l,n)}),!0,!1,"png"):a.isOffline()||mxClient.IS_IOS&&navigator.standalone||a.showRemoteExportDialog(mxResources.get("export"),null,mxUtils.bind(this, -function(b,c,d){a.downloadFile(c?"xmlpng":"png",null,null,b,null,null,d)}))}));a.actions.put("exportJpg",new Action(mxResources.get("formatJpg")+"...",function(){a.isExportToCanvas()?a.showExportDialog(mxResources.get("image"),!1,mxResources.get("export"),"https://support.draw.io/display/DO/Exporting+Files",mxUtils.bind(this,function(b,c,d,f,g,h,k,l,n){b=parseInt(b);!isNaN(b)&&0<b&&a.exportImage(b/100,!1,d,f,!1,k,!l,!1,"jpeg")}),!0,!1,"jpeg"):a.isOffline()||mxClient.IS_IOS&&navigator.standalone|| -a.showRemoteExportDialog(mxResources.get("export"),null,mxUtils.bind(this,function(b,c){a.downloadFile("jpeg",null,null,b)}),!0)}));d=a.actions.put("shadowVisible",new Action(mxResources.get("shadow"),function(){f.setShadowVisible(!f.shadowVisible)}));d.setToggleAction(!0);d.setSelectedCallback(function(){return f.shadowVisible});var q=!1;a.actions.put("about",new Action(mxResources.get("aboutDrawio")+"...",function(){q||(a.showDialog((new AboutDialog(a)).container,220,300,!0,!0,function(){q=!1}), -q=!0)},null,null,"F1"));a.actions.addAction("userManual...",function(){a.openLink("https://support.draw.io/display/DO/Draw.io+Online+User+Manual")});a.actions.addAction("support...",function(){a.openLink("https://about.draw.io/support/")});a.actions.addAction("exportOptionsDisabled...",function(){a.handleError({message:mxResources.get("exportOptionsDisabledDetails")},mxResources.get("exportOptionsDisabled"))});a.actions.addAction("keyboardShortcuts...",function(){mxClient.IS_CHROMEAPP||EditorUi.isElectronApp? -a.openLink("https://www.draw.io/shortcuts.svg"):mxClient.IS_SVG?a.openLink("shortcuts.svg"):a.openLink("https://www.draw.io/?lightbox=1#Uhttps%3A%2F%2Fwww.draw.io%2Fshortcuts.svg")});a.actions.addAction("feedback...",function(){var b=new FeedbackDialog(a);a.showDialog(b.container,610,360,!0,!0);b.init()});a.actions.addAction("quickStart...",function(){a.openLink("https://www.youtube.com/watch?v=Z0D96ZikMkc")});d=a.actions.addAction("tags...",mxUtils.bind(this,function(){null==this.tagsWindow?(this.tagsWindow= -new TagsWindow(a,document.body.offsetWidth-380,230,300,120),this.tagsWindow.window.addListener("show",function(){a.fireEvent(new mxEventObject("tags"))}),this.tagsWindow.window.addListener("hide",function(){a.fireEvent(new mxEventObject("tags"))}),this.tagsWindow.window.setVisible(!0),a.fireEvent(new mxEventObject("tags"))):this.tagsWindow.window.setVisible(!this.tagsWindow.window.isVisible())}));d.setToggleAction(!0);d.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.tagsWindow&& -this.tagsWindow.window.isVisible()}));d=a.actions.addAction("find...",mxUtils.bind(this,function(){null==this.findWindow?(this.findWindow=new FindWindow(a,document.body.offsetWidth-300,110,240,140),this.findWindow.window.addListener("show",function(){a.fireEvent(new mxEventObject("find"))}),this.findWindow.window.addListener("hide",function(){a.fireEvent(new mxEventObject("find"))}),this.findWindow.window.setVisible(!0),a.fireEvent(new mxEventObject("find"))):this.findWindow.window.setVisible(!this.findWindow.window.isVisible())})); -d.setToggleAction(!0);d.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.findWindow&&this.findWindow.window.isVisible()}));a.actions.put("exportVsdx",new Action(mxResources.get("formatVsdx")+" (beta)...",function(){a.exportVisio()}));if(mxClient.IS_CHROMEAPP||isLocalStorage&&"1"!=urlParams.offline)if(this.put("language",new Menu(mxUtils.bind(this,function(b,c){var d=mxUtils.bind(this,function(d){var f=""==d?mxResources.get("automatic"):mxLanguageMap[d],g=null;""!=f&&(g=b.addItem(f, -null,mxUtils.bind(this,function(){mxSettings.setLanguage(d);mxSettings.save();mxClient.language=d;mxResources.loadDefaultBundle=!1;mxResources.add(RESOURCE_BASE);a.alert(mxResources.get("restartForChangeRequired"))}),c),(d==mxLanguage||""==d&&null==mxLanguage)&&b.addCheckmark(g,Editor.checkmarkImage));return g});d("");b.addSeparator(c);for(var f in mxLanguageMap)d(f)}))),"atlas"!=uiTheme){var u=Menus.prototype.createMenubar;Menus.prototype.createMenubar=function(a){var b=u.apply(this,arguments);if(null!= +function(b,c,d,e,f,g,k,l,m,q){b=parseInt(b);!isNaN(b)&&0<b&&a.exportSvg(b/100,c,d,e,f,g,k,!l,m,q)}),!0,null,"svg")}));a.actions.put("insertTemplate",new Action(mxResources.get("template")+"...",function(){var c=new NewDialog(a,null,!1,function(c){a.hideDialog();null!=c&&(b.setSelectionCells(a.importXml(c,20,20,!0)),b.scrollCellToVisible(b.getSelectionCell()))},null,null,null,null,null,null,null,null,null,null,!1,mxResources.get("insert"));a.showDialog(c.container,620,440,!0,!0)}));a.actions.put("exportXml", +new Action(mxResources.get("formatXml")+"...",function(){var c=document.createElement("div");c.style.whiteSpace="nowrap";var d=null==a.pages||1>=a.pages.length,e=document.createElement("h3");mxUtils.write(e,mxResources.get("formatXml"));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";c.appendChild(e);var f=a.addCheckbox(c,mxResources.get("selectionOnly"),!1,b.isSelectionEmpty()),g=a.addCheckbox(c,mxResources.get(d?"compressed":"allPages"),!0);g.style.marginBottom="16px"; +mxEvent.addListener(f,"change",function(){f.checked?g.setAttribute("disabled","disabled"):g.removeAttribute("disabled")});c=new CustomDialog(a,c,mxUtils.bind(this,function(){a.downloadFile("xml",d?!g.checked:null,null,!f.checked,d?null:!g.checked)}),null,mxResources.get("export"));a.showDialog(c.container,300,146,!0,!0)}));a.actions.put("exportUrl",new Action(mxResources.get("url")+"...",function(){a.showPublishLinkDialog(mxResources.get("url"),!0,null,null,function(b,c,d,e,f,g){b=new EmbedDialog(a, +a.createLink(b,c,d,e,f,g,null,!0));a.showDialog(b.container,440,240,!0,!0);b.init()})}));a.actions.put("exportHtml",new Action(mxResources.get("formatHtmlEmbedded")+"...",function(){a.spinner.spin(document.body,mxResources.get("loading"))&&a.getPublicUrl(a.getCurrentFile(),function(b){a.spinner.stop();a.showHtmlDialog(mxResources.get("export"),null,b,function(b,c,d,e,f,g,n,k,l,m){a.createHtml(b,c,d,e,f,g,n,k,l,m,mxUtils.bind(this,function(b,c){var d=a.getBaseFilename(n),e='\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n<!DOCTYPE html>\n<html>\n<head>\n<title>'+ +mxUtils.htmlEntities(d)+'</title>\n<meta charset="utf-8"/>\n</head>\n<body>'+b+"\n"+c+"\n</body>\n</html>";a.saveData(d+".html","html",e,"text/html")}))})})}));a.actions.put("exportPdf",new Action(mxResources.get("formatPdf")+"...",function(){if(a.isOffline()||a.printPdfExport)a.showDialog((new PrintDialog(a,mxResources.get("formatPdf"))).container,360,null!=a.pages&&1<a.pages.length?420:360,!0,!0);else{var c=null==a.pages||1>=a.pages.length,d=document.createElement("div");d.style.whiteSpace="nowrap"; +var e=document.createElement("h3");mxUtils.write(e,mxResources.get("formatPdf"));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(e);var e=function(){g!=this&&this.checked?l.removeAttribute("disabled"):(l.setAttribute("disabled","disabled"),l.checked=!1)},f=146;if(a.pdfPageExport&&!c){var g=a.addRadiobox(d,"pages",mxResources.get("allPages"),!0),f=a.addRadiobox(d,"pages",mxResources.get("currentPage",null,"Current Page"),!1),k=a.addRadiobox(d,"pages",mxResources.get("selectionOnly"), +!1,b.isSelectionEmpty()),l=a.addCheckbox(d,mxResources.get("crop"),!1,!0);mxEvent.addListener(g,"change",e);mxEvent.addListener(f,"change",e);mxEvent.addListener(k,"change",e);f=205}else k=a.addCheckbox(d,mxResources.get("selectionOnly"),!1,b.isSelectionEmpty()),l=a.addCheckbox(d,mxResources.get("crop"),!b.pageVisible||!a.pdfPageExport,!a.pdfPageExport),a.pdfPageExport||mxEvent.addListener(k,"change",e);d=new CustomDialog(a,d,mxUtils.bind(this,function(){a.downloadFile("pdf",null,null,!k.checked, +c?!0:!g.checked,!l.checked)}),null,mxResources.get("export"));a.showDialog(d.container,300,f,!0,!0)}}));a.actions.addAction("open...",function(){a.pickFile()});a.actions.addAction("close",function(){function b(){a.fileLoaded(null)}var c=a.getCurrentFile();null!=c&&c.isModified()?a.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()});a.actions.addAction("editShape...",mxUtils.bind(this,function(){b.getSelectionCells();if(1==b.getSelectionCount()){var c= +b.getSelectionCell(),d=b.view.getState(c);null!=d&&null!=d.shape&&null!=d.shape.stencil&&(c=new EditShapeDialog(a,c,mxResources.get("editShape")+":",630,400),a.showDialog(c.container,640,480,!0,!1),c.init())}}));a.actions.addAction("revisionHistory...",function(){var b=a.getCurrentFile();null!=b&&b.isRevisionHistorySupported()?a.spinner.spin(document.body,mxResources.get("loading"))&&b.getRevisions(mxUtils.bind(this,function(b){a.spinner.stop();b=new RevisionDialog(a,b);a.showDialog(b.container,640, +480,!0,!0);b.init()}),mxUtils.bind(this,function(b){a.handleError(b)})):a.showError(mxResources.get("error"),mxResources.get("notAvailable"),mxResources.get("ok"))});a.actions.addAction("createRevision",function(){a.actions.get("save").funct()},null,null,Editor.ctrlKey+"+S");var u=a.actions.addAction("synchronize",function(){a.synchronizeCurrentFile("none"==DrawioFile.SYNC)},null,null,"Alt+Shift+S");"none"==DrawioFile.SYNC&&(u.label=mxResources.get("refresh"));a.actions.addAction("upload...",function(){var b= +a.getCurrentFile();null!=b&&(window.drawdata=a.getFileData(),b=null!=b.getTitle()?b.getTitle():a.defaultFilename,a.openLink(window.location.protocol+"//"+window.location.host+"/?create=drawdata&"+(a.mode==App.MODE_DROPBOX?"mode=dropbox&":"")+"title="+encodeURIComponent(b),null,!0))});"undefined"!==typeof MathJax&&(u=a.actions.addAction("mathematicalTypesetting",function(){var c=new ChangePageSetup(a);c.ignoreColor=!0;c.ignoreImage=!0;c.mathEnabled=!a.isMathEnabled();b.model.execute(c)}),u.setToggleAction(!0), +u.setSelectedCallback(function(){return a.isMathEnabled()}),u.isEnabled=k);if(isLocalStorage||mxClient.IS_CHROMEAPP)u=a.actions.addAction("showStartScreen",function(){mxSettings.setShowStartScreen(!mxSettings.getShowStartScreen());mxSettings.save()}),u.setToggleAction(!0),u.setSelectedCallback(function(){return mxSettings.getShowStartScreen()});var d=a.actions.addAction("autosave",function(){a.editor.setAutosave(!a.editor.autosave)});d.setToggleAction(!0);d.setSelectedCallback(function(){return d.isEnabled()&& +a.editor.autosave});a.actions.addAction("editGeometry...",function(){for(var c=b.getSelectionCells(),d=[],e=0;e<c.length;e++)b.getModel().isVertex(c[e])&&d.push(c[e]);0<d.length&&(c=new EditGeometryDialog(a,d),a.showDialog(c.container,200,250,!0,!0),c.init())},null,null,Editor.ctrlKey+"+Shift+M");var g="rounded shadow dashed dashPattern fontFamily fontSize fontColor fontStyle align verticalAlign strokeColor strokeWidth fillColor gradientColor swimlaneFillColor textOpacity gradientDirection glass labelBackgroundColor labelBorderColor opacity spacing spacingTop spacingLeft spacingBottom spacingRight endFill endArrow endSize targetPerimeterSpacing startFill startArrow startSize sourcePerimeterSpacing arcSize".split(" "); +a.actions.addAction("copyStyle",function(){var c=b.view.getState(b.getSelectionCell());if(b.isEnabled()&&null!=c){a.copiedStyle=mxUtils.clone(c.style);for(var c=b.getModel().getStyle(c.cell),c=null!=c?c.split(";"):[],d=0;d<c.length;d++){var e=c[d],f=e.indexOf("=");if(0<=f){var g=e.substring(0,f),e=e.substring(f+1);null==a.copiedStyle[g]&&"none"==e&&(a.copiedStyle[g]="none")}}}},null,null,Editor.ctrlKey+"+Shift+C");a.actions.addAction("pasteStyle",function(){if(b.isEnabled()&&!b.isSelectionEmpty()&& +null!=a.copiedStyle){b.getModel().beginUpdate();try{for(var c=b.getSelectionCells(),d=0;d<c.length;d++)for(var e=b.view.getState(c[d]),f=0;f<g.length;f++){var k=g[f],l=a.copiedStyle[k];e.style[k]!=l&&b.setCellStyles(k,l,[c[d]])}}finally{b.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+V");a.actions.put("pageBackgroundImage",new Action(mxResources.get("backgroundImage")+"...",function(){if(!a.isOffline()){var b=new BackgroundImageDialog(a,function(b){a.setBackgroundImage(b)});a.showDialog(b.container, +320,170,!0,!0);b.init()}}));a.actions.put("exportPng",new Action(mxResources.get("formatPng")+"...",function(){a.isExportToCanvas()?a.showExportDialog(mxResources.get("image"),!1,mxResources.get("export"),"https://support.draw.io/display/DO/Exporting+Files",mxUtils.bind(this,function(b,c,d,e,f,g,k,l,m){b=parseInt(b);!isNaN(b)&&0<b&&a.exportImage(b/100,c,d,e,f,k,!l,m)}),!0,!1,"png"):a.isOffline()||mxClient.IS_IOS&&navigator.standalone||a.showRemoteExportDialog(mxResources.get("export"),null,mxUtils.bind(this, +function(b,c,d){a.downloadFile(c?"xmlpng":"png",null,null,b,null,null,d)}))}));a.actions.put("exportJpg",new Action(mxResources.get("formatJpg")+"...",function(){a.isExportToCanvas()?a.showExportDialog(mxResources.get("image"),!1,mxResources.get("export"),"https://support.draw.io/display/DO/Exporting+Files",mxUtils.bind(this,function(b,c,d,e,f,g,k,l,m){b=parseInt(b);!isNaN(b)&&0<b&&a.exportImage(b/100,!1,d,e,!1,k,!l,!1,"jpeg")}),!0,!1,"jpeg"):a.isOffline()||mxClient.IS_IOS&&navigator.standalone|| +a.showRemoteExportDialog(mxResources.get("export"),null,mxUtils.bind(this,function(b,c){a.downloadFile("jpeg",null,null,b)}),!0)}));u=a.actions.put("shadowVisible",new Action(mxResources.get("shadow"),function(){b.setShadowVisible(!b.shadowVisible)}));u.setToggleAction(!0);u.setSelectedCallback(function(){return b.shadowVisible});var m=!1;a.actions.put("about",new Action(mxResources.get("aboutDrawio")+"...",function(){m||(a.showDialog((new AboutDialog(a)).container,220,300,!0,!0,function(){m=!1}), +m=!0)},null,null,"F1"));a.actions.addAction("userManual...",function(){a.openLink("https://support.draw.io/display/DO/Draw.io+Online+User+Manual")});a.actions.addAction("support...",function(){a.openLink("https://about.draw.io/support/")});a.actions.addAction("exportOptionsDisabled...",function(){a.handleError({message:mxResources.get("exportOptionsDisabledDetails")},mxResources.get("exportOptionsDisabled"))});a.actions.addAction("keyboardShortcuts...",function(){mxClient.IS_CHROMEAPP||EditorUi.isElectronApp? +a.openLink("https://www.draw.io/shortcuts.svg"):mxClient.IS_SVG?a.openLink("shortcuts.svg"):a.openLink("https://www.draw.io/?lightbox=1#Uhttps%3A%2F%2Fwww.draw.io%2Fshortcuts.svg")});a.actions.addAction("feedback...",function(){var b=new FeedbackDialog(a);a.showDialog(b.container,610,360,!0,!0);b.init()});a.actions.addAction("quickStart...",function(){a.openLink("https://www.youtube.com/watch?v=Z0D96ZikMkc")});u=a.actions.addAction("tags...",mxUtils.bind(this,function(){null==this.tagsWindow?(this.tagsWindow= +new TagsWindow(a,document.body.offsetWidth-380,230,300,120),this.tagsWindow.window.addListener("show",function(){a.fireEvent(new mxEventObject("tags"))}),this.tagsWindow.window.addListener("hide",function(){a.fireEvent(new mxEventObject("tags"))}),this.tagsWindow.window.setVisible(!0),a.fireEvent(new mxEventObject("tags"))):this.tagsWindow.window.setVisible(!this.tagsWindow.window.isVisible())}));u.setToggleAction(!0);u.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.tagsWindow&& +this.tagsWindow.window.isVisible()}));u=a.actions.addAction("find...",mxUtils.bind(this,function(){null==this.findWindow?(this.findWindow=new FindWindow(a,document.body.offsetWidth-300,110,240,140),this.findWindow.window.addListener("show",function(){a.fireEvent(new mxEventObject("find"))}),this.findWindow.window.addListener("hide",function(){a.fireEvent(new mxEventObject("find"))}),this.findWindow.window.setVisible(!0),a.fireEvent(new mxEventObject("find"))):this.findWindow.window.setVisible(!this.findWindow.window.isVisible())})); +u.setToggleAction(!0);u.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.findWindow&&this.findWindow.window.isVisible()}));a.actions.put("exportVsdx",new Action(mxResources.get("formatVsdx")+" (beta)...",function(){a.exportVisio()}));if(mxClient.IS_CHROMEAPP||isLocalStorage&&"1"!=urlParams.offline)if(this.put("language",new Menu(mxUtils.bind(this,function(b,c){var d=mxUtils.bind(this,function(d){var e=""==d?mxResources.get("automatic"):mxLanguageMap[d],f=null;""!=e&&(f=b.addItem(e, +null,mxUtils.bind(this,function(){mxSettings.setLanguage(d);mxSettings.save();mxClient.language=d;mxResources.loadDefaultBundle=!1;mxResources.add(RESOURCE_BASE);a.alert(mxResources.get("restartForChangeRequired"))}),c),(d==mxLanguage||""==d&&null==mxLanguage)&&b.addCheckmark(f,Editor.checkmarkImage));return f});d("");b.addSeparator(c);for(var e in mxLanguageMap)d(e)}))),"atlas"!=uiTheme){var v=Menus.prototype.createMenubar;Menus.prototype.createMenubar=function(a){var b=v.apply(this,arguments);if(null!= b){var c=this.get("language");if(null!=c){c=b.addMenu("",c.funct);c.setAttribute("title",mxResources.get("language"));c.style.width="16px";c.style.paddingTop="2px";c.style.paddingLeft="4px";c.style.zIndex="1";c.style.position="absolute";c.style.top="2px";c.style.right="17px";c.style.display="block";c.style.cursor="pointer";if(mxClient.IS_VML)c.innerHTML='<div class="geIcon geSprite geSprite-globe"/>';else{var d=document.createElement("div");d.style.backgroundImage="url("+Editor.globeImage+")";d.style.backgroundPosition= "center center";d.style.backgroundRepeat="no-repeat";d.style.backgroundSize="19px 19px";d.style.position="absolute";d.style.height="19px";d.style.width="19px";d.style.marginTop="2px";d.style.zIndex="1";c.appendChild(d);mxUtils.setOpacity(c,40);"dark"==uiTheme&&(c.style.filter="invert(100%)")}document.body.appendChild(c)}}return b}}this.put("help",new Menu(mxUtils.bind(this,function(b,c){if(!mxClient.IS_CHROMEAPP&&a.isOffline())this.addMenuItems(b,["about"],c);else{var d=b.addItem("Search:",null,null, -c,null,null,!1);d.style.backgroundColor="dark"==uiTheme?"#505759":"whiteSmoke";d.style.cursor="default";var f=document.createElement("input");f.setAttribute("type","text");f.setAttribute("size","25");f.style.marginLeft="8px";mxEvent.addListener(f,"keydown",mxUtils.bind(this,function(a){var b=mxUtils.trim(f.value);13==a.keyCode&&0<b.length?(this.editorUi.openLink("https://desk.draw.io/support/search/solutions?term="+encodeURIComponent(b)),f.value="",EditorUi.logEvent({category:"Help",action:"search", -label:b}),null!=this.editorUi.menubar&&window.setTimeout(mxUtils.bind(this,function(){this.editorUi.menubar.hideMenu()}),0)):27==a.keyCode&&(f.value="")}));d.firstChild.nextSibling.appendChild(f);mxEvent.addGestureListeners(f,function(a){document.activeElement!=f&&f.focus();mxEvent.consume(a)},function(a){mxEvent.consume(a)},function(a){mxEvent.consume(a)});window.setTimeout(function(){f.focus()},0);this.addMenuItems(b,["-","quickStart","userManual","keyboardShortcuts","-"],c);mxClient.IS_CHROMEAPP|| +c,null,null,!1);d.style.backgroundColor="dark"==uiTheme?"#505759":"whiteSmoke";d.style.cursor="default";var e=document.createElement("input");e.setAttribute("type","text");e.setAttribute("size","25");e.style.marginLeft="8px";mxEvent.addListener(e,"keydown",mxUtils.bind(this,function(a){var b=mxUtils.trim(e.value);13==a.keyCode&&0<b.length?(this.editorUi.openLink("https://desk.draw.io/support/search/solutions?term="+encodeURIComponent(b)),e.value="",EditorUi.logEvent({category:"Help",action:"search", +label:b}),null!=this.editorUi.menubar&&window.setTimeout(mxUtils.bind(this,function(){this.editorUi.menubar.hideMenu()}),0)):27==a.keyCode&&(e.value="")}));d.firstChild.nextSibling.appendChild(e);mxEvent.addGestureListeners(e,function(a){document.activeElement!=e&&e.focus();mxEvent.consume(a)},function(a){mxEvent.consume(a)},function(a){mxEvent.consume(a)});window.setTimeout(function(){e.focus()},0);this.addMenuItems(b,["-","quickStart","userManual","keyboardShortcuts","-"],c);mxClient.IS_CHROMEAPP|| this.addMenuItems(b,["feedback"],c);this.addMenuItems(b,["support","-"],c);a.isOffline()||EditorUi.isElectronApp||navigator.standalone||"1"==urlParams.embed||this.addMenuItems(b,["downloadDesktop"],c);navigator.standalone||"1"==urlParams.embed||this.addMenuItems(b,["useOffline"],c);this.addMenuItems(b,["-","about"],c)}"1"==urlParams.test&&(b.addSeparator(c),this.addSubmenu("testDevelop",b,c));"1"==urlParams.ruler&&(mxResources.parse("rulerInch=Ruler unit: Inches"),a.actions.addAction("rulerInch", mxUtils.bind(this,function(){a.vRuler.setUnit(mxRuler.prototype.INCHES);a.hRuler.setUnit(mxRuler.prototype.INCHES);a.vRuler.drawRuler(!0);a.hRuler.drawRuler(!0)})),mxResources.parse("rulerCM=Ruler unit: CMs"),a.actions.addAction("rulerCM",mxUtils.bind(this,function(){a.vRuler.setUnit(mxRuler.prototype.CENTIMETER);a.hRuler.setUnit(mxRuler.prototype.CENTIMETER);a.vRuler.drawRuler(!0);a.hRuler.drawRuler(!0)})),mxResources.parse("rulerPixel=Ruler unit: Pixels"),a.actions.addAction("rulerPixel",mxUtils.bind(this, function(){a.vRuler.setUnit(mxRuler.prototype.PIXELS);a.hRuler.setUnit(mxRuler.prototype.PIXELS);a.vRuler.drawRuler(!0);a.hRuler.drawRuler(!0)})),this.addMenuItems(b,["-","rulerInch","rulerCM","rulerPixel"],c))})));"1"==urlParams.test&&(mxResources.parse("testDevelop=Develop"),mxResources.parse("showBoundingBox=Show bounding box"),mxResources.parse("createSidebarEntry=Create Sidebar Entry"),mxResources.parse("testCheckFile=Check File"),mxResources.parse("testDiff=Diff"),mxResources.parse("testInspect=Inspect"), -mxResources.parse("testShowConsole=Show Console"),mxResources.parse("testXmlImageExport=XML Image Export"),mxResources.parse("testDownloadRtModel=Export RT model"),mxResources.parse("testImportRtModel=Import RT model"),a.actions.addAction("createSidebarEntry",mxUtils.bind(this,function(){f.isSelectionEmpty()||a.showTextDialog("Create Sidebar Entry","sb.createVertexTemplateFromData('"+f.compress(mxUtils.getXml(f.encodeCells(f.getSelectionCells())))+"', width, height, 'Title');")})),a.actions.addAction("showBoundingBox", -mxUtils.bind(this,function(){var a=f.getGraphBounds(),b=f.view.translate,c=f.view.scale;f.insertVertex(f.getDefaultParent(),null,"",a.x/c-b.x,a.y/c-b.y,a.width/c,a.height/c,"fillColor=none;strokeColor=red;")})),a.actions.addAction("testCheckFile",mxUtils.bind(this,function(){var b=null!=a.pages&&null!=a.getCurrentFile()?a.getCurrentFile().getAnonymizedXmlForPages(a.pages):"",b=new TextareaDialog(a,"Paste Data:",b,function(b){if(0<b.length)try{"<"!=b.charAt(0)&&(b=f.decompress(b),mxLog.debug("See console for uncompressed XML"), -console.log("xml",b));var c=mxUtils.parseXml(b),d=a.getPagesForNode(c.documentElement,"mxGraphModel");if(null!=d&&0<d.length)try{var g=a.getHashValueForPages(d);mxLog.debug("Checksum: ",g)}catch(E){mxLog.debug("Error: ",E.message)}else mxLog.debug("No pages found for checksum");var h=c.getElementsByTagName("*");b={};c={};for(d=0;d<h.length;d++){var m=h[d];null!=m.id&&0<m.id.length&&(null==b[m.id]?b[m.id]=m.id:c[m.id]=m.id)}if(0<Object.keys(c).length){var k=Object.keys(c).length+" Duplicates: "+Object.keys(c).join(", "); -mxLog.debug(k+" (see console)");console.log(k)}else mxLog.debug("No duplicates");mxLog.show()}catch(E){a.handleError(E),console.error(E)}});b.textarea.style.width="600px";b.textarea.style.height="380px";a.showDialog(b.container,620,460,!0,!0);b.init()})),a.actions.addAction("testDiff",mxUtils.bind(this,function(){if(null!=a.pages){var b=new TextareaDialog(a,"Paste Data:","",function(b){if(0<b.length)try{console.log(JSON.stringify(a.diffPages(a.pages,a.getPagesForNode(mxUtils.parseXml(b).documentElement)), -null,2))}catch(z){a.handleError(z),console.error(z)}});b.textarea.style.width="600px";b.textarea.style.height="380px";a.showDialog(b.container,620,460,!0,!0);b.init()}else a.alert("No pages")})),a.actions.addAction("testInspect",mxUtils.bind(this,function(){console.log(a,f.getModel())})),a.actions.addAction("testXmlImageExport",mxUtils.bind(this,function(){var a=new mxImageExport,b=f.getGraphBounds(),c=f.view.scale,d=mxUtils.createXmlDocument(),g=d.createElement("output");d.appendChild(g);d=new mxXmlCanvas2D(g); -d.translate(Math.floor((1-b.x)/c),Math.floor((1-b.y)/c));d.scale(1/c);var h=0,k=d.save;d.save=function(){h++;k.apply(this,arguments)};var l=d.restore;d.restore=function(){h--;l.apply(this,arguments)};var n=a.drawShape;a.drawShape=function(a){mxLog.debug("entering shape",a,h);n.apply(this,arguments);mxLog.debug("leaving shape",a,h)};a.drawState(f.getView().getState(f.model.root),d);mxLog.show();mxLog.debug(mxUtils.getXml(g));mxLog.debug("stateCounter",h)})),a.actions.addAction("testDownloadRtModel...", -mxUtils.bind(this,function(){null==a.drive?a.handleError({message:mxResources.get("serviceUnavailableOrBlocked")}):a.drive.execute(mxUtils.bind(this,function(){var b=prompt("File ID","");if(null!=b&&0<b.length&&a.spinner.spin(document.body,mxResources.get("export"))){var c=new mxXmlRequest("https://www.googleapis.com/drive/v2/files/"+b+"/realtime?supportsTeamDrives=true",null,"GET");c.setRequestHeaders=function(a){mxXmlRequest.prototype.setRequestHeaders.apply(this,arguments);var b=gapi.auth.getToken().access_token; -a.setRequestHeader("authorization","Bearer "+b)};c.send(function(c){a.spinner.stop();200<=c.getStatus()&&299>=c.getStatus()?a.saveLocalFile(c.getText(),"json-"+b+".txt","text/plain"):a.handleError({message:mxResources.get("fileNotFound")},mxResources.get("errorLoadingFile"))})}}))})),a.actions.addAction("testShowConsole",function(){mxLog.isVisible()?mxLog.window.fit():mxLog.show();mxLog.window.div.style.zIndex=mxPopupMenu.prototype.zIndex-1}),this.put("testDevelop",new Menu(mxUtils.bind(this,function(b, -c){this.addMenuItems(b,"createSidebarEntry showBoundingBox - testCheckFile testDiff - testInspect - testXmlImageExport - testDownloadRtModel".split(" "),c);b.addItem(mxResources.get("testImportRtModel")+"...",null,function(){var b=document.createElement("input");b.setAttribute("type","file");mxEvent.addListener(b,"change",mxUtils.bind(this,function(){if(null!=b.files){var c=new FileReader;c.onload=mxUtils.bind(this,function(c){try{a.openLocalFile(mxUtils.getXml(a.drive.convertJsonToXml(JSON.parse(c.target.result).data)), -b.files[0].name,!0)}catch(B){a.handleError(B,mxResources.get("errorLoadingFile"))}});c.readAsText(b.files[0])}}));b.click()},c);this.addMenuItems(b,["-","testShowConsole"],c)}))));a.actions.addAction("shapes...",function(){mxClient.IS_CHROMEAPP||!a.isOffline()?a.showDialog((new MoreShapesDialog(a,!0)).container,640,isLocalStorage?mxClient.IS_IOS?480:460:440,!0,!0):a.showDialog((new MoreShapesDialog(a,!1)).container,360,isLocalStorage?mxClient.IS_IOS?300:280:260,!0,!0)});a.actions.addAction("createShape...", -function(){a.getCurrentFile();if(f.isEnabled()){var b=new mxCell("",new mxGeometry(0,0,120,120),a.defaultCustomShapeStyle);b.vertex=!0;b=new EditShapeDialog(a,b,mxResources.get("editShape")+":",630,400);a.showDialog(b.container,640,480,!0,!1);b.init()}});a.actions.put("embedHtml",new Action(mxResources.get("html")+"...",function(){a.spinner.spin(document.body,mxResources.get("loading"))&&a.getPublicUrl(a.getCurrentFile(),function(b){a.spinner.stop();a.showHtmlDialog(mxResources.get("create"),"https://desk.draw.io/support/solutions/articles/16000042542", -b,function(b,c,d,f,g,h,m,k,l,n){a.createHtml(b,c,d,f,g,h,m,k,l,n,mxUtils.bind(this,function(b,c){var d=new EmbedDialog(a,b+"\n"+c,null,null,function(){var a=window.open(),d=a.document;"CSS1Compat"===document.compatMode&&d.writeln("<!DOCTYPE html>");d.writeln("<html>");d.writeln("<head><title>"+encodeURIComponent(mxResources.get("preview"))+'</title><meta charset="utf-8"></head>');d.writeln("<body>");d.writeln(b);var f=mxClient.IS_IE||mxClient.IS_EDGE||null!=document.documentMode;f&&d.writeln(c);d.writeln("</body>"); -d.writeln("</html>");d.close();if(!f){var g=a.document.createElement("div");g.marginLeft="26px";g.marginTop="26px";mxUtils.write(g,mxResources.get("updatingDocument"));f=a.document.createElement("img");f.setAttribute("src",window.location.protocol+"//"+window.location.hostname+"/"+IMAGE_PATH+"/spin.gif");f.style.marginLeft="6px";g.appendChild(f);a.document.body.insertBefore(g,a.document.body.firstChild);window.setTimeout(function(){var a=document.createElement("script");a.type="text/javascript";a.src= -/<script.*?src="(.*?)"/.exec(c)[1];d.body.appendChild(a);g.parentNode.removeChild(g)},20)}});a.showDialog(d.container,440,240,!0,!0);d.init()}))})})}));a.actions.put("liveImage",new Action("Live image...",function(){a.spinner.spin(document.body,mxResources.get("loading"))&&a.getPublicUrl(a.getCurrentFile(),function(b){a.spinner.stop();null!=b?(b=encodeURIComponent(b),b=new EmbedDialog(a,EXPORT_URL+"?format=png&url="+b,0),a.showDialog(b.container,440,240,!0,!0),b.init()):a.handleError({message:mxResources.get("invalidPublicUrl")})})})); -a.actions.put("embedImage",new Action(mxResources.get("image")+"...",function(){a.showEmbedImageDialog(function(b,c,d,f,g,h){a.spinner.spin(document.body,mxResources.get("loading"))&&a.createEmbedImage(b,c,d,f,g,h,function(b){a.spinner.stop();b=new EmbedDialog(a,b);a.showDialog(b.container,440,240,!0,!0);b.init()},function(b){a.spinner.stop();a.handleError(b)})},mxResources.get("image"),mxResources.get("retina"),a.isExportToCanvas())}));a.actions.put("embedSvg",new Action(mxResources.get("formatSvg")+ -"...",function(){a.showEmbedImageDialog(function(b,c,d,f,g,h){a.spinner.spin(document.body,mxResources.get("loading"))&&a.createEmbedSvg(b,c,d,f,g,h,function(b){a.spinner.stop();b=new EmbedDialog(a,b);a.showDialog(b.container,440,240,!0,!0);b.init()},function(b){a.spinner.stop();a.handleError(b)})},mxResources.get("formatSvg"),mxResources.get("image"),!0,"https://desk.draw.io/support/solutions/articles/16000042548")}));a.actions.put("embedIframe",new Action(mxResources.get("iframe")+"...",function(){var b= -f.getGraphBounds();a.showPublishLinkDialog(mxResources.get("iframe"),null,"100%",Math.ceil((b.y+b.height-f.view.translate.y)/f.view.scale)+2,function(b,c,d,f,g,h,m,k){a.spinner.spin(document.body,mxResources.get("loading"))&&a.getPublicUrl(a.getCurrentFile(),function(l){a.spinner.stop();l=new EmbedDialog(a,'<iframe frameborder="0" style="width:'+m+";height:"+k+';" src="'+a.createLink(b,c,d,f,g,h,l)+'"></iframe>');a.showDialog(l.container,440,240,!0,!0);l.init()})},!0)}));a.actions.put("publishLink", -new Action(mxResources.get("link")+"...",function(){a.showPublishLinkDialog(null,null,null,null,function(b,c,d,f,g,h){a.spinner.spin(document.body,mxResources.get("loading"))&&a.getPublicUrl(a.getCurrentFile(),function(m){a.spinner.stop();m=new EmbedDialog(a,a.createLink(b,c,d,f,g,h,m));a.showDialog(m.container,440,240,!0,!0);m.init()})})}));a.actions.addAction("googleDocs...",function(){a.openLink("http://docsaddon.draw.io")});a.actions.addAction("googleSlides...",function(){a.openLink("https://slidesaddon.draw.io")}); -a.actions.addAction("googleSites...",function(){a.spinner.spin(document.body,mxResources.get("loading"))&&a.getPublicUrl(a.getCurrentFile(),function(b){a.spinner.stop();b=new GoogleSitesDialog(a,b);a.showDialog(b.container,420,256,!0,!0);b.init()})});if(isLocalStorage||mxClient.IS_CHROMEAPP)d=a.actions.addAction("scratchpad",function(){a.toggleScratchpad()}),d.setToggleAction(!0),d.setSelectedCallback(function(){return null!=a.scratchpad}),a.actions.addAction("plugins...",function(){a.showDialog((new PluginsDialog(a)).container, -360,170,!0,!1)});d=a.actions.addAction("search",function(){var b=a.sidebar.isEntryVisible("search");a.sidebar.showPalette("search",!b);isLocalStorage&&(mxSettings.settings.search=!b,mxSettings.save())});d.setToggleAction(!0);d.setSelectedCallback(function(){return a.sidebar.isEntryVisible("search")});"1"==urlParams.embed&&(a.actions.get("save").funct=function(b){f.isEditing()&&f.stopEditing();var c="0"!=urlParams.pages||null!=a.pages&&1<a.pages.length?a.getFileData(!0):mxUtils.getXml(a.editor.getGraphXml()); -if("json"==urlParams.proto){var d=a.createLoadMessage("save");d.xml=c;b&&(d.exit=!0);c=JSON.stringify(d)}(window.opener||window.parent).postMessage(c,"*");"0"!=urlParams.modified&&"1"!=urlParams.keepmodified&&(a.editor.modified=!1,a.editor.setStatus(""));null!=a.getCurrentFile()&&a.saveFile()},a.actions.addAction("saveAndExit",function(){a.actions.get("save").funct(!0)}),a.actions.addAction("exit",function(){var b=function(){a.editor.modified=!1;var b="json"==urlParams.proto?JSON.stringify({event:"exit", -modified:a.editor.modified}):"";(window.opener||window.parent).postMessage(b,"*")};a.editor.modified?a.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()}));this.put("exportAs",new Menu(mxUtils.bind(this,function(b,c){a.isExportToCanvas()?(this.addMenuItems(b,["exportPng"],c),a.jpgSupported&&this.addMenuItems(b,["exportJpg"],c)):a.isOffline()||mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(b,["exportPng","exportJpg"],c);this.addMenuItems(b, -["exportSvg","-"],c);a.isOffline()||a.printPdfExport?this.addMenuItems(b,["exportPdf"],c):a.isOffline()||mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(b,["exportPdf"],c);mxClient.IS_IE||"undefined"===typeof VsdxExport&&a.isOffline()||this.addMenuItems(b,["exportVsdx"],c);this.addMenuItems(b,["-","exportHtml","exportXml","exportUrl"],c);a.isOffline()||(b.addSeparator(c),this.addMenuItem(b,"export",c).firstChild.nextSibling.innerHTML=mxResources.get("advanced")+"...")})));this.put("importFrom", -new Menu(mxUtils.bind(this,function(b,c){function d(b){b.pickFile(function(c){a.spinner.spin(document.body,mxResources.get("loading"))&&b.getFile(c,function(b){var c=m(b.getTitle());/\.svg$/i.test(b.getTitle())&&!a.editor.isDataSvg(b.getData())&&(b.setData(a.createSvgDataUri(b.getData())),c="image/svg+xml");g(b.getData(),c,b.getTitle())},function(b){a.handleError(b,null!=b?mxResources.get("errorLoadingFile"):null)},b==a.drive)},!0)}var g=mxUtils.bind(this,function(b,c,d){var g=f.view,h=f.getGraphBounds(), -m=f.snap(Math.ceil(Math.max(0,h.x/g.scale-g.translate.x)+4*f.gridSize)),k=f.snap(Math.ceil(Math.max(0,(h.y+h.height)/g.scale-g.translate.y)+4*f.gridSize));"data:image/"==b.substring(0,11)?a.loadImage(b,mxUtils.bind(this,function(g){var h=!0,l=mxUtils.bind(this,function(){a.resizeImage(g,b,mxUtils.bind(this,function(g,l,n){g=h?Math.min(1,Math.min(a.maxImageSize/l,a.maxImageSize/n)):1;a.importFile(b,c,m,k,Math.round(l*g),Math.round(n*g),d,function(b){a.spinner.stop();f.setSelectionCells(b);f.scrollCellToVisible(f.getSelectionCell())})}), -h)});b.length>a.resampleThreshold?a.confirmImageResize(function(a){h=a;l()}):l()}),mxUtils.bind(this,function(){a.handleError({message:mxResources.get("cannotOpenFile")})})):a.importFile(b,c,m,k,0,0,d,function(b){a.spinner.stop();f.setSelectionCells(b);f.scrollCellToVisible(f.getSelectionCell())})}),m=mxUtils.bind(this,function(a){var b="text/xml";/\.png$/i.test(a)?b="image/png":/\.jpe?g$/i.test(a)?b="image/jpg":/\.gif$/i.test(a)&&(b="image/gif");return b});"undefined"!=typeof google&&"undefined"!= -typeof google.picker&&(null!=a.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){d(a.drive)},c):h&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1));null!=a.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){d(a.oneDrive)},c):t&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){d(a.dropbox)}, -c):l&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){d(a.gitHub)},c);null!=a.trello?b.addItem(mxResources.get("trello")+"...",null,function(){d(a.trello)},c):p&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);b.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null, -function(){a.importLocalFile(!1)},c);b.addItem(mxResources.get("device")+"...",null,function(){a.importLocalFile(!0)},c);a.isOffline()||(b.addSeparator(c),b.addItem(mxResources.get("url")+"...",null,function(){var b=new FilenameDialog(a,"",mxResources.get("import"),function(b){if(null!=b&&0<b.length&&a.spinner.spin(document.body,mxResources.get("loading"))){var c=/(\.png)($|\?)/i.test(b)?"image/png":"text/xml";a.loadUrl(PROXY_URL+"?url="+encodeURIComponent(b),function(a){g(a,c,b)},function(){a.spinner.stop(); -a.handleError(null,mxResources.get("errorLoadingFile"))},"image/png"==c)}},mxResources.get("url"));a.showDialog(b.container,300,80,!0,!0);b.init()},c))}))).isEnabled=k;this.put("theme",new Menu(mxUtils.bind(this,function(b,c){var d=mxSettings.getUi(),f=b.addItem(mxResources.get("automatic"),null,function(){mxSettings.setUi("");mxSettings.save();a.alert(mxResources.get("restartForChangeRequired"))},c);"kennedy"!=d&&"atlas"!=d&&"dark"!=d&&"min"!=d&&b.addCheckmark(f,Editor.checkmarkImage);b.addSeparator(c); -f=b.addItem(mxResources.get("kennedy"),null,function(){mxSettings.setUi("kennedy");mxSettings.save();a.alert(mxResources.get("restartForChangeRequired"))},c);"kennedy"==d&&b.addCheckmark(f,Editor.checkmarkImage);f=b.addItem(mxResources.get("minimal"),null,function(){mxSettings.setUi("min");mxSettings.save();a.alert(mxResources.get("restartForChangeRequired"))},c);"min"==d&&b.addCheckmark(f,Editor.checkmarkImage);f=b.addItem(mxResources.get("atlas"),null,function(){mxSettings.setUi("atlas");mxSettings.save(); -a.alert(mxResources.get("restartForChangeRequired"))},c);"atlas"==d&&b.addCheckmark(f,Editor.checkmarkImage);f=b.addItem(mxResources.get("dark"),null,function(){mxSettings.setUi("dark");mxSettings.save();a.alert(mxResources.get("restartForChangeRequired"))},c);"dark"==d&&b.addCheckmark(f,Editor.checkmarkImage)})));d=this.editorUi.actions.addAction("rename...",mxUtils.bind(this,function(){var b=this.editorUi.getCurrentFile();if(null!=b){var c=null!=b.getTitle()?b.getTitle():this.editorUi.defaultFilename, -c=new FilenameDialog(this.editorUi,c,mxResources.get("rename"),mxUtils.bind(this,function(a){null!=a&&0<a.length&&null!=b&&this.editorUi.spinner.spin(document.body,mxResources.get("renaming"))&&b.rename(a,mxUtils.bind(this,function(a){this.editorUi.spinner.stop()}),mxUtils.bind(this,function(a){this.editorUi.handleError(a,null!=a?mxResources.get("errorRenamingFile"):null)}))}),b.constructor==DriveFile||b.constructor==StorageFile?mxResources.get("diagramName"):null,function(b){if(null!=b&&0<b.length)return!0; -a.showError(mxResources.get("error"),mxResources.get("invalidName"),mxResources.get("ok"));return!1});this.editorUi.showDialog(c.container,300,80,!0,!0);c.init()}}));d.isEnabled=function(){return this.enabled&&k.apply(this,arguments)};d.visible="1"!=urlParams.embed;a.actions.addAction("makeCopy...",mxUtils.bind(this,function(){var b=a.getCurrentFile();if(null!=b){var c=a.getCopyFilename(b);b.constructor==DriveFile?(c=new CreateDialog(a,c,mxUtils.bind(this,function(c,d){"download"==d&&(d=App.MODE_GOOGLE); -null!=c&&0<c.length&&(d==App.MODE_GOOGLE?a.spinner.spin(document.body,mxResources.get("saving"))&&b.saveAs(c,mxUtils.bind(this,function(c){b.desc=c;b.save(!1,mxUtils.bind(this,function(){a.spinner.stop();b.setModified(!1);b.addAllSavedStatus()}),mxUtils.bind(this,function(b){a.handleError(b)}))}),mxUtils.bind(this,function(b){a.handleError(b)})):a.createFile(c,a.getFileData(!0),null,d))}),mxUtils.bind(this,function(){a.hideDialog()}),mxResources.get("makeCopy"),mxResources.get("create"),null,null, -null,null,!0),a.showDialog(c.container,420,380,!0,!0),c.init()):a.editor.editAsNew(this.editorUi.getFileData(!0),c)}}));a.actions.addAction("moveToFolder...",mxUtils.bind(this,function(){var b=a.getCurrentFile();b.getMode()!=App.MODE_GOOGLE&&b.getMode()!=App.MODE_ONEDRIVE||a.pickFolder(b.getMode(),mxUtils.bind(this,function(c){a.spinner.spin(document.body,mxResources.get("moving"))&&b.move(c,mxUtils.bind(this,function(b){a.spinner.stop()}),mxUtils.bind(this,function(b){a.handleError(b)}))}),null, -!0)}));this.put("publish",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,["publishLink"],b)})));a.actions.put("useOffline",new Action(mxResources.get("useOffline")+"...",function(){a.openLink("https://app.draw.io/")}));a.actions.put("downloadDesktop",new Action(mxResources.get("downloadDesktop")+"...",function(){a.openLink("https://get.draw.io/")}));this.editorUi.actions.addAction("share...",mxUtils.bind(this,function(){var a=this.editorUi.getCurrentFile();null!=a&&this.editorUi.drive.showPermissions(a.getId())})); -this.put("embed",new Menu(mxUtils.bind(this,function(b,c){"1"==urlParams.test&&this.addMenuItems(b,["liveImage","-"],c);this.addMenuItems(b,["embedImage","embedSvg","-","embedHtml"],c);navigator.standalone||a.isOffline()||this.addMenuItems(b,["embedIframe"],c);a.isOffline()||this.addMenuItems(b,["-","googleDocs","googleSlides","googleSites"],c)})));var v=function(b,c,d,f){("plantUml"!=f||EditorUi.enablePlantUml&&!a.isOffline())&&b.addItem(d,null,mxUtils.bind(this,function(){if("fromText"==f||"formatSql"== -f||"plantUml"==f){var b=new ParseDialog(a,d,f);a.showDialog(b.container,620,420,!0,!1);a.dialog.container.style.overflow="auto"}else b=new CreateGraphDialog(a,d,f),a.showDialog(b.container,620,420,!0,!1);b.init()}),c)},w=function(a,b,c,d){var g=f.isMouseInsertPoint()?f.getInsertPoint():f.getFreeInsertPoint();a=new mxCell(a,new mxGeometry(g.x,g.y,b,c),d);a.vertex=!0;f.getModel().beginUpdate();try{a=f.addCell(a),f.fireEvent(new mxEventObject("cellsInserted","cells",[a]))}finally{f.getModel().endUpdate()}f.scrollCellToVisible(a); -f.setSelectionCell(a);f.container.focus();f.editAfterInsert&&f.startEditing(a);return a};a.actions.put("exportSvg",new Action(mxResources.get("formatSvg")+"...",function(){a.showExportDialog(mxResources.get("formatSvg"),!0,mxResources.get("export"),"https://support.draw.io/display/DO/Exporting+Files",mxUtils.bind(this,function(b,c,d,f,g,h,k,l,n,p){b=parseInt(b);!isNaN(b)&&0<b&&a.exportSvg(b/100,c,d,f,g,h,k,!l,n,p)}),!0,null,"svg")}));a.actions.put("insertText",new Action(mxResources.get("text"),function(){f.isEnabled()&& -!f.isCellLocked(f.getDefaultParent())&&f.startEditingAtCell(w("Text",40,20,"text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;rounded=0;"))}),null,null,Editor.ctrlKey+"+Shift+X").isEnabled=k;a.actions.put("insertRectangle",new Action(mxResources.get("rectangle"),function(){f.isEnabled()&&!f.isCellLocked(f.getDefaultParent())&&w("",120,60,"whiteSpace=wrap;html=1;")}),null,null,Editor.ctrlKey+"+K").isEnabled=k;a.actions.put("insertEllipse", -new Action(mxResources.get("ellipse"),function(){f.isEnabled()&&!f.isCellLocked(f.getDefaultParent())&&w("",80,80,"ellipse;whiteSpace=wrap;html=1;")}),null,null,Editor.ctrlKey+"+Shift+K").isEnabled=k;a.actions.put("insertRhombus",new Action(mxResources.get("rhombus"),function(){f.isEnabled()&&!f.isCellLocked(f.getDefaultParent())&&w("",80,80,"rhombus;whiteSpace=wrap;html=1;")})).isEnabled=k;var y=mxUtils.bind(this,function(a,b,c){for(var d=0;d<c.length;d++)"-"==c[d]?a.addSeparator(b):v(a,b,mxResources.get(c[d])+ -"...",c[d])});this.put("insert",new Menu(mxUtils.bind(this,function(b,c){this.addMenuItems(b,"insertRectangle insertEllipse insertRhombus - insertText insertLink - insertImage".split(" "),c);a.insertTemplateEnabled&&!a.isOffline()&&this.addMenuItems(b,["insertTemplate","-"],c);this.addSubmenu("insertLayout",b,c,mxResources.get("layout"));b.addSeparator(c);y(b,c,["fromText","plantUml","-","formatSql"]);b.addItem(mxResources.get("csv")+"...",null,function(){a.showImportCsvDialog()},c)})));this.put("insertLayout", -new Menu(mxUtils.bind(this,function(a,b){y(a,b,"horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "))})));this.put("openRecent",new Menu(function(b,c){var d=a.getRecent();if(null!=d){for(var f=0;f<d.length;f++)(function(d){var f=d.mode;f==App.MODE_GOOGLE?f="googleDrive":f==App.MODE_ONEDRIVE&&(f="oneDrive");b.addItem(d.title+" ("+mxResources.get(f)+")",null,function(){a.loadFile(d.id)},c)})(d[f]);b.addSeparator(c)}b.addItem(mxResources.get("reset"),null, -function(){a.resetRecent()},c)}));this.put("openFrom",new Menu(function(b,c){null!=a.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){a.pickFile(App.MODE_GOOGLE)},c):h&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){a.pickFile(App.MODE_ONEDRIVE)},c):t&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){}, -c,null,!1);null!=a.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){a.pickFile(App.MODE_DROPBOX)},c):l&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){a.pickFile(App.MODE_GITHUB)},c);null!=a.trello?b.addItem(mxResources.get("trello")+"...",null,function(){a.pickFile(App.MODE_TRELLO)},c):p&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+ -"...)",null,function(){},c,null,!1);b.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){a.pickFile(App.MODE_BROWSER)},c);b.addItem(mxResources.get("device")+"...",null,function(){a.pickFile(App.MODE_DEVICE)},c);a.isOffline()||(b.addSeparator(c),b.addItem(mxResources.get("url")+"...",null,function(){var b=new FilenameDialog(a,"",mxResources.get("open"),function(b){null!=b&&0<b.length&&(null==a.getCurrentFile()?window.location.hash="#U"+ -encodeURIComponent(b):window.openWindow((mxClient.IS_CHROMEAPP?"https://www.draw.io/":"https://"+location.host+"/")+window.location.search+"#U"+encodeURIComponent(b)))},mxResources.get("url"));a.showDialog(b.container,300,80,!0,!0);b.init()},c))}));Editor.enableCustomLibraries&&(this.put("newLibrary",new Menu(function(b,c){"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!=a.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){a.showLibraryDialog(null,null,null, -null,App.MODE_GOOGLE)},c):h&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1));null!=a.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_ONEDRIVE)},c):t&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){a.showLibraryDialog(null,null,null,null, -App.MODE_DROPBOX)},c):l&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_GITHUB)},c);null!=a.trello?b.addItem(mxResources.get("trello")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_TRELLO)},c):p&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null, -!1);b.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_BROWSER)},c);b.addItem(mxResources.get("device")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_DEVICE)},c)})),this.put("openLibraryFrom",new Menu(function(b,c){"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!=a.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){a.pickLibrary(App.MODE_GOOGLE)}, -c):h&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1));null!=a.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){a.pickLibrary(App.MODE_ONEDRIVE)},c):t&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){a.pickLibrary(App.MODE_DROPBOX)},c):l&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+ -"...)",null,function(){},c,null,!1);null!=a.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){a.pickLibrary(App.MODE_GITHUB)},c);null!=a.trello?b.addItem(mxResources.get("trello")+"...",null,function(){a.pickLibrary(App.MODE_TRELLO)},c):p&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);b.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){a.pickLibrary(App.MODE_BROWSER)}, -c);b.addItem(mxResources.get("device")+"...",null,function(){a.pickLibrary(App.MODE_DEVICE)},c);a.isOffline()||(b.addSeparator(c),b.addItem(mxResources.get("url")+"...",null,function(){var b=new FilenameDialog(a,"",mxResources.get("open"),function(b){if(null!=b&&0<b.length&&a.spinner.spin(document.body,mxResources.get("loading"))){var c=b;a.isCorsEnabledForUrl(b)||(c=PROXY_URL+"?url="+encodeURIComponent(b));mxUtils.get(c,function(c){if(200<=c.getStatus()&&299>=c.getStatus()){a.spinner.stop();try{a.loadLibrary(new UrlLibrary(this, -c.getText(),b))}catch(H){a.handleError(H,mxResources.get("errorLoadingFile"))}}else a.spinner.stop(),a.handleError(null,mxResources.get("errorLoadingFile"))},function(){a.spinner.stop();a.handleError(null,mxResources.get("errorLoadingFile"))})}},mxResources.get("url"));a.showDialog(b.container,300,80,!0,!0);b.init()},c))})));this.put("edit",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,"undo redo - cut copy paste delete - duplicate - find - editData editTooltip - editStyle editGeometry - edit - editLink openLink - selectVertices selectEdges selectAll selectNone - lockUnlock".split(" "))}))); -this.put("view",new Menu(mxUtils.bind(this,function(b,c){this.addMenuItems(b,(null!=this.editorUi.format?["formatPanel"]:[]).concat(["outline","layers","-"]));this.addMenuItems(b,["-","search"],c);if(isLocalStorage||mxClient.IS_CHROMEAPP){var d=this.addMenuItem(b,"scratchpad",c);a.isOffline()&&!mxClient.IS_CHROMEAPP||this.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000042367")}this.addMenuItems(b,"shapes - pageView pageScale - scrollbars tooltips - grid guides".split(" "),c); -mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode)&&this.addMenuItem(b,"shadowVisible",c);this.addMenuItems(b,"- connectionArrows connectionPoints - resetView zoomIn zoomOut".split(" "),c)})));this.put("extras",new Menu(mxUtils.bind(this,function(b,c){"1"!=urlParams.embed&&(this.addSubmenu("theme",b,c),b.addSeparator(c));this.addMenuItems(b,["copyConnect","collapseExpand","-"],c);if("undefined"!==typeof MathJax){var d=this.addMenuItem(b,"mathematicalTypesetting",c);this.addLinkToItem(d, -"https://desk.draw.io/support/solutions/articles/16000032875")}"1"!=urlParams.embed&&this.addMenuItems(b,["autosave"],c);this.addMenuItems(b,["-","createShape","editDiagram"],c);b.addSeparator(c);"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&this.addMenuItems(b,["showStartScreen"],c);!a.isOfflineApp()&&isLocalStorage&&this.addMenuItem(b,"plugins",c);b.addSeparator(c);this.addMenuItem(b,"tags",c);b.addSeparator(c);"1"==urlParams.newTempDlg&&(a.actions.addAction("templates",function(){var b= -new TemplatesDialog;a.showDialog(b.container,b.width,b.height,!0,!1,null,!1,!0);b.init(a,function(a){console.log(a)},null,null,null,"user",function(a,b){setTimeout(function(){b?a([{url:"123",title:"Test 1Test 1Test 1Test 1Test 1Test 1Test 11Test 1Test 11Test 1Test 1dgdsgdfg fdg dfgdfg dfg dfg"},{url:"123",title:"Test 2",imgUrl:"https://www.google.com.eg/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"},{url:"123",title:"Test 3",changedBy:"Ashraf Teleb",lastModifiedOn:"Yesterday"},{url:"123", -title:"Test 4"},{url:"123",title:"Test 5"},{url:"123",title:"Test 6"}]):a([{url:"123",title:"Test 4",imgUrl:"https://images.pexels.com/photos/459225/pexels-photo-459225.jpeg"},{url:"123",title:"Test 5"},{url:"123",title:"Test 6"},{url:"123",title:"Test 1Test 1Test 1Test 1Test 1Test 1Test 11Test 1Test 11Test 1Test 1dgdsgdfg fdg dfgdfg dfg dfg"},{url:"123",title:"Test 2",imgUrl:"https://www.google.com.eg/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"},{url:"123",title:"Test 3",changedBy:"Ashraf Teleb", -lastModifiedOn:"Yesterday"}]);console.log(b)},1E3)},function(a,b,c){setTimeout(function(){b(c?[{url:"123",title:a+"Test 1Test 1Test 1Test 1Test 1Test 1Test 1"},{url:"123",title:a+"Test 2"},{url:"123",title:a+"Test 3"},{url:"123",title:a+"Test 4"},{url:"123",title:a+"Test 5"},{url:"123",title:a+"Test 6"}]:[{url:"123",title:a+"Test 5"},{url:"123",title:a+"Test 6"},{url:"123",title:a+"Test 1Test 1Test 1Test 1Test 1Test 1Test 1"},{url:"123",title:a+"Test 2"},{url:"123",title:a+"Test 3"},{url:"123",title:a+ -"Test 4"}])},2E3)},null)}),this.addMenuItem(b,"templates",c))})));this.put("file",new Menu(mxUtils.bind(this,function(b,c){if("1"==urlParams.embed)this.addSubmenu("importFrom",b,c),this.addSubmenu("exportAs",b,c),this.addSubmenu("embed",b,c),"1"==urlParams.libraries&&(this.addMenuItems(b,["-"],c),this.addSubmenu("newLibrary",b,c),this.addSubmenu("openLibraryFrom",b,c)),this.addMenuItems(b,"- pageSetup print - rename save".split(" "),c),"1"==urlParams.saveAndExit&&this.addMenuItems(b,["saveAndExit"], -c),this.addMenuItems(b,["exit"],c);else{var d=this.editorUi.getCurrentFile();if(null!=d&&d.constructor==DriveFile){d.isRestricted()&&this.addMenuItems(b,["exportOptionsDisabled"],c);this.addMenuItems(b,["save","-","share"],c);var f=this.addMenuItem(b,"synchronize",c);a.isOffline()&&!mxClient.IS_CHROMEAPP||this.addLinkToItem(f,"https://desk.draw.io/support/solutions/articles/16000087947");b.addSeparator(c)}else this.addMenuItems(b,["new"],c);this.addSubmenu("openFrom",b,c);isLocalStorage&&this.addSubmenu("openRecent", -b,c);null!=d&&d.constructor==DriveFile?this.addMenuItems(b,["new","-","rename","makeCopy","moveToFolder"],c):(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null==d||d.constructor==LocalFile||(b.addSeparator(c),f=this.addMenuItem(b,"synchronize",c),a.isOffline()&&!mxClient.IS_CHROMEAPP||this.addLinkToItem(f,"https://desk.draw.io/support/solutions/articles/16000087947")),this.addMenuItems(b,["-","save","saveAs"],c),this.addMenuItems(b,["-","rename"],c),a.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&& -this.addMenuItems(b,["upload"],c):(this.addMenuItems(b,["makeCopy"],c),null!=d&&d.constructor==OneDriveFile&&this.addMenuItems(b,["moveToFolder"],c)));b.addSeparator(c);this.addSubmenu("importFrom",b,c);this.addSubmenu("exportAs",b,c);b.addSeparator(c);this.addSubmenu("embed",b,c);this.addSubmenu("publish",b,c);b.addSeparator(c);this.addSubmenu("newLibrary",b,c);this.addSubmenu("openLibraryFrom",b,c);null!=d&&d.isRevisionHistorySupported()&&this.addMenuItems(b,["-","revisionHistory"],c);this.addMenuItems(b, -["-","pageSetup"],c);mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(b,["print"],c);this.addMenuItems(b,["-","close"])}})))}})();function DiagramPage(a){this.node=a;null==this.getId()&&this.node.setAttribute("id",Editor.guid())}DiagramPage.prototype.node=null;DiagramPage.prototype.root=null;DiagramPage.prototype.viewState=null;DiagramPage.prototype.getId=function(){return this.node.getAttribute("id")};DiagramPage.prototype.getName=function(){return this.node.getAttribute("name")};DiagramPage.prototype.setName=function(a){null==a?this.node.removeAttribute("name"):this.node.setAttribute("name",a)}; -function RenamePage(a,c,b){this.ui=a;this.page=c;this.previous=this.name=b}RenamePage.prototype.execute=function(){var a=this.page.getName();this.page.setName(this.previous);this.name=this.previous;this.previous=a;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageRenamed"))};function MovePage(a,c,b){this.ui=a;this.oldIndex=c;this.newIndex=b} -MovePage.prototype.execute=function(){this.ui.pages.splice(this.newIndex,0,this.ui.pages.splice(this.oldIndex,1)[0]);var a=this.oldIndex;this.oldIndex=this.newIndex;this.newIndex=a;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageMoved"))};function SelectPage(a,c,b){this.ui=a;this.previousPage=this.page=c;this.neverShown=!0;null!=c&&(this.neverShown=null==c.viewState,this.ui.updatePageRoot(c),null!=b&&(c.viewState=b,this.neverShown=!1))} -SelectPage.prototype.execute=function(){var a=mxUtils.indexOf(this.ui.pages,this.previousPage);if(null!=this.page&&0<=a){var a=this.ui.currentPage,c=this.ui.editor,b=c.graph,f=c.graph.compress(b.zapGremlins(mxUtils.getXml(c.getGraphXml(!0))));mxUtils.setTextContent(a.node,f);a.viewState=b.getViewState();a.root=b.model.root;null!=a.model&&a.model.rootChanged(a.root);b.view.clear(a.root,!0);b.clearSelection();this.ui.currentPage=this.previousPage;this.previousPage=a;a=this.ui.currentPage;b.model.rootChanged(a.root); -b.setViewState(a.viewState);c.fireEvent(new mxEventObject("setViewState","change",this));b.gridEnabled=b.gridEnabled&&(!this.ui.editor.isChromelessView()||"1"==urlParams.grid);c.updateGraphComponents();b.view.validate();b.sizeDidChange();this.neverShown&&(this.neverShown=!1,b.selectUnlockedLayer());c.graph.fireEvent(new mxEventObject(mxEvent.ROOT));c.fireEvent(new mxEventObject("pageSelected","change",this))}}; -function ChangePage(a,c,b,f){SelectPage.call(this,a,b);this.relatedPage=c;this.index=f;this.previousIndex=null}mxUtils.extend(ChangePage,SelectPage); -ChangePage.prototype.execute=function(){this.ui.editor.fireEvent(new mxEventObject("beforePageChange","change",this));this.previousIndex=this.index;if(null==this.index){var a=mxUtils.indexOf(this.ui.pages,this.relatedPage);this.ui.pages.splice(a,1);this.index=a}else this.ui.pages.splice(this.index,0,this.relatedPage),this.index=null;SelectPage.prototype.execute.apply(this,arguments)}; -EditorUi.prototype.getSelectedPageIndex=function(){var a=null;if(null!=this.pages&&null!=this.currentPage)for(var c=0;c<this.pages.length;c++)if(this.pages[c]==this.currentPage){a=c;break}return a};EditorUi.prototype.getPageById=function(a){if(null!=this.pages)for(var c=0;c<this.pages.length;c++)if(this.pages[c].getId()==a)return this.pages[c];return null}; -EditorUi.prototype.initPages=function(){this.actions.addAction("previousPage",mxUtils.bind(this,function(){this.selectNextPage(!1)}));this.actions.addAction("nextPage",mxUtils.bind(this,function(){this.selectNextPage(!0)}));this.keyHandler.bindAction(33,!0,"previousPage",!0);this.keyHandler.bindAction(34,!0,"nextPage",!0);var a=this.editor.graph,c=a.view.validateBackground;a.view.validateBackground=mxUtils.bind(this,function(){if(null!=this.tabContainer){var b=this.tabContainer.style.height;this.tabContainer.style.height= -null==this.fileNode||null==this.pages||1==this.pages.length&&"0"==urlParams.pages?"0px":"30px";b!=this.tabContainer.style.height&&this.refresh(!1)}c.apply(a.view,arguments)});var b=null,f=mxUtils.bind(this,function(){this.updateTabContainer();var c=this.currentPage;null!=c&&c!=b&&(null==c.viewState||null==c.viewState.scrollLeft?(this.resetScrollbars(),a.isLightboxView()&&this.lightboxFit(),null!=this.chromelessResize&&(a.container.scrollLeft=0,a.container.scrollTop=0,this.chromelessResize())):(a.container.scrollLeft= -a.view.translate.x*a.view.scale+c.viewState.scrollLeft,a.container.scrollTop=a.view.translate.y*a.view.scale+c.viewState.scrollTop),b=c);null!=this.actions.layersWindow&&this.actions.layersWindow.refreshLayers();"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?1!=MathJax.Hub.queue.pending||null==this.editor||this.editor.graph.mathEnabled||MathJax.Hub.Queue(mxUtils.bind(this,function(){null!=this.editor&&this.editor.graph.refresh()})):"undefined"===typeof Editor.MathJaxClear||null!=this.editor&& -this.editor.graph.mathEnabled||Editor.MathJaxClear()});this.editor.graph.model.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(a,b){for(var c=b.getProperty("edit").changes,h=0;h<c.length;h++)if(c[h]instanceof SelectPage||c[h]instanceof RenamePage||c[h]instanceof MovePage||c[h]instanceof mxRootChange){f();break}}));null!=this.toolbar&&this.editor.addListener("pageSelected",this.toolbar.updateZoom)}; -EditorUi.prototype.restoreViewState=function(a,c,b){a=null!=a?this.getPageById(a.getId()):null;var f=this.editor.graph;null!=a&&null!=this.currentPage&&null!=this.pages&&(a!=this.currentPage?this.selectPage(a,!0,c):(f.setViewState(c),this.editor.updateGraphComponents(),f.view.revalidate(),f.sizeDidChange()),f.container.scrollLeft=f.view.translate.x*f.view.scale+c.scrollLeft,f.container.scrollTop=f.view.translate.y*f.view.scale+c.scrollTop,f.restoreSelection(b))}; -Graph.prototype.createViewState=function(a){var c=a.getAttribute("page"),b=parseFloat(a.getAttribute("pageScale")),f=parseFloat(a.getAttribute("pageWidth")),k=parseFloat(a.getAttribute("pageHeight")),h=a.getAttribute("background"),l=a.getAttribute("backgroundImage"),l=null!=l&&0<l.length?JSON.parse(l):null;return{gridEnabled:"0"!=a.getAttribute("grid"),gridSize:parseFloat(a.getAttribute("gridSize"))||mxGraph.prototype.gridSize,guidesEnabled:"0"!=a.getAttribute("guides"),foldingEnabled:"0"!=a.getAttribute("fold"), -shadowVisible:"1"==a.getAttribute("shadow"),pageVisible:this.isLightboxView()?!1:null!=c?"0"!=c:this.defaultPageVisible,background:null!=h&&0<h.length?h:null,backgroundImage:null!=l?new mxImage(l.src,l.width,l.height):null,pageScale:isNaN(b)?mxGraph.prototype.pageScale:b,pageFormat:isNaN(f)||isNaN(k)?mxSettings.getPageFormat():new mxRectangle(0,0,f,k),tooltips:"0"!=a.getAttribute("tooltips"),connect:"0"!=a.getAttribute("connect"),arrows:"0"!=a.getAttribute("arrows"),mathEnabled:"1"==a.getAttribute("math"), +mxResources.parse("testShowConsole=Show Console"),mxResources.parse("testXmlImageExport=XML Image Export"),mxResources.parse("testDownloadRtModel=Export RT model"),mxResources.parse("testImportRtModel=Import RT model"),a.actions.addAction("createSidebarEntry",mxUtils.bind(this,function(){b.isSelectionEmpty()||a.showTextDialog("Create Sidebar Entry","sb.createVertexTemplateFromData('"+b.compress(mxUtils.getXml(b.encodeCells(b.getSelectionCells())))+"', width, height, 'Title');")})),a.actions.addAction("showBoundingBox", +mxUtils.bind(this,function(){var a=b.getGraphBounds(),c=b.view.translate,d=b.view.scale;b.insertVertex(b.getDefaultParent(),null,"",a.x/d-c.x,a.y/d-c.y,a.width/d,a.height/d,"fillColor=none;strokeColor=red;")})),a.actions.addAction("testCheckFile",mxUtils.bind(this,function(){var c=null!=a.pages&&null!=a.getCurrentFile()?a.getCurrentFile().getAnonymizedXmlForPages(a.pages):"",c=new TextareaDialog(a,"Paste Data:",c,function(c){if(0<c.length)try{var d=function(a){function b(a){if(null==m[a]){if(m[a]= +!0,null!=e[a]){for(;0<e[a].length;){var d=e[a].pop();b(d)}delete e[a]}}else mxLog.debug(c+": Visited: "+a)}var c=a.parentNode.id,d=a.childNodes;a={};for(var e={},f=null,g={},n=0;n<d.length;n++){var k=d[n];if(null!=k.id&&0<k.id.length)if(null==a[k.id]){a[k.id]=k.id;var l=k.getAttribute("parent");null==l?null!=f?mxLog.debug(c+": Multiple roots: "+k.id):f=k.id:(null==e[l]&&(e[l]=[]),e[l].push(k.id))}else g[k.id]=k.id}0<Object.keys(g).length?(d=c+": "+Object.keys(g).length+" Duplicates: "+Object.keys(g).join(", "), +mxLog.debug(d+" (see console)")):mxLog.debug(c+": Checked");var m={};null==f?mxLog.debug(c+": No root"):(b(f),Object.keys(m).length!=Object.keys(a).length&&(mxLog.debug(c+": Invalid tree: (see console)"),console.log(c+": Invalid tree",e)))};"<"!=c.charAt(0)&&(c=b.decompress(c),mxLog.debug("See console for uncompressed XML"),console.log("xml",c));var e=mxUtils.parseXml(c),f=a.getPagesForNode(e.documentElement,"mxGraphModel");if(null!=f&&0<f.length)try{var g=a.getHashValueForPages(f);mxLog.debug("Checksum: ", +g)}catch(H){mxLog.debug("Error: ",H.message)}else mxLog.debug("No pages found for checksum");var n=e.getElementsByTagName("root");for(c=0;c<n.length;c++)d(n[c]);mxLog.show()}catch(H){a.handleError(H),console.error(H)}});c.textarea.style.width="600px";c.textarea.style.height="380px";a.showDialog(c.container,620,460,!0,!0);c.init()})),a.actions.addAction("testDiff",mxUtils.bind(this,function(){if(null!=a.pages){var b=new TextareaDialog(a,"Paste Data:","",function(b){if(0<b.length)try{console.log(JSON.stringify(a.diffPages(a.pages, +a.getPagesForNode(mxUtils.parseXml(b).documentElement)),null,2))}catch(z){a.handleError(z),console.error(z)}});b.textarea.style.width="600px";b.textarea.style.height="380px";a.showDialog(b.container,620,460,!0,!0);b.init()}else a.alert("No pages")})),a.actions.addAction("testInspect",mxUtils.bind(this,function(){console.log(a,b.getModel())})),a.actions.addAction("testXmlImageExport",mxUtils.bind(this,function(){var a=new mxImageExport,c=b.getGraphBounds(),d=b.view.scale,e=mxUtils.createXmlDocument(), +f=e.createElement("output");e.appendChild(f);e=new mxXmlCanvas2D(f);e.translate(Math.floor((1-c.x)/d),Math.floor((1-c.y)/d));e.scale(1/d);var g=0,k=e.save;e.save=function(){g++;k.apply(this,arguments)};var l=e.restore;e.restore=function(){g--;l.apply(this,arguments)};var m=a.drawShape;a.drawShape=function(a){mxLog.debug("entering shape",a,g);m.apply(this,arguments);mxLog.debug("leaving shape",a,g)};a.drawState(b.getView().getState(b.model.root),e);mxLog.show();mxLog.debug(mxUtils.getXml(f));mxLog.debug("stateCounter", +g)})),a.actions.addAction("testDownloadRtModel...",mxUtils.bind(this,function(){null==a.drive?a.handleError({message:mxResources.get("serviceUnavailableOrBlocked")}):a.drive.execute(mxUtils.bind(this,function(){var b=prompt("File ID","");if(null!=b&&0<b.length&&a.spinner.spin(document.body,mxResources.get("export"))){var c=new mxXmlRequest("https://www.googleapis.com/drive/v2/files/"+b+"/realtime?supportsTeamDrives=true",null,"GET");c.setRequestHeaders=function(a){mxXmlRequest.prototype.setRequestHeaders.apply(this, +arguments);var b=gapi.auth.getToken().access_token;a.setRequestHeader("authorization","Bearer "+b)};c.send(function(c){a.spinner.stop();200<=c.getStatus()&&299>=c.getStatus()?a.saveLocalFile(c.getText(),"json-"+b+".txt","text/plain"):a.handleError({message:mxResources.get("fileNotFound")},mxResources.get("errorLoadingFile"))})}}))})),a.actions.addAction("testShowConsole",function(){mxLog.isVisible()?mxLog.window.fit():mxLog.show();mxLog.window.div.style.zIndex=mxPopupMenu.prototype.zIndex-1}),this.put("testDevelop", +new Menu(mxUtils.bind(this,function(b,c){this.addMenuItems(b,"createSidebarEntry showBoundingBox - testCheckFile testDiff - testInspect - testXmlImageExport - testDownloadRtModel".split(" "),c);b.addItem(mxResources.get("testImportRtModel")+"...",null,function(){var b=document.createElement("input");b.setAttribute("type","file");mxEvent.addListener(b,"change",mxUtils.bind(this,function(){if(null!=b.files){var c=new FileReader;c.onload=mxUtils.bind(this,function(c){try{a.openLocalFile(mxUtils.getXml(a.drive.convertJsonToXml(JSON.parse(c.target.result).data)), +b.files[0].name,!0)}catch(E){a.handleError(E,mxResources.get("errorLoadingFile"))}});c.readAsText(b.files[0])}}));b.click()},c);this.addMenuItems(b,["-","testShowConsole"],c)}))));a.actions.addAction("shapes...",function(){mxClient.IS_CHROMEAPP||!a.isOffline()?a.showDialog((new MoreShapesDialog(a,!0)).container,640,isLocalStorage?mxClient.IS_IOS?480:460:440,!0,!0):a.showDialog((new MoreShapesDialog(a,!1)).container,360,isLocalStorage?mxClient.IS_IOS?300:280:260,!0,!0)});a.actions.addAction("createShape...", +function(){a.getCurrentFile();if(b.isEnabled()){var c=new mxCell("",new mxGeometry(0,0,120,120),a.defaultCustomShapeStyle);c.vertex=!0;c=new EditShapeDialog(a,c,mxResources.get("editShape")+":",630,400);a.showDialog(c.container,640,480,!0,!1);c.init()}});a.actions.put("embedHtml",new Action(mxResources.get("html")+"...",function(){a.spinner.spin(document.body,mxResources.get("loading"))&&a.getPublicUrl(a.getCurrentFile(),function(b){a.spinner.stop();a.showHtmlDialog(mxResources.get("create"),"https://desk.draw.io/support/solutions/articles/16000042542", +b,function(b,c,d,e,f,g,k,n,l,m){a.createHtml(b,c,d,e,f,g,k,n,l,m,mxUtils.bind(this,function(b,c){var d=new EmbedDialog(a,b+"\n"+c,null,null,function(){var d=window.open(),e=d.document;if(null!=e){"CSS1Compat"===document.compatMode&&e.writeln("<!DOCTYPE html>");e.writeln("<html>");e.writeln("<head><title>"+encodeURIComponent(mxResources.get("preview"))+'</title><meta charset="utf-8"></head>');e.writeln("<body>");e.writeln(b);var f=mxClient.IS_IE||mxClient.IS_EDGE||null!=document.documentMode;f&&e.writeln(c); +e.writeln("</body>");e.writeln("</html>");e.close();if(!f){var g=d.document.createElement("div");g.marginLeft="26px";g.marginTop="26px";mxUtils.write(g,mxResources.get("updatingDocument"));f=d.document.createElement("img");f.setAttribute("src",window.location.protocol+"//"+window.location.hostname+"/"+IMAGE_PATH+"/spin.gif");f.style.marginLeft="6px";g.appendChild(f);d.document.body.insertBefore(g,d.document.body.firstChild);window.setTimeout(function(){var a=document.createElement("script");a.type= +"text/javascript";a.src=/<script.*?src="(.*?)"/.exec(c)[1];e.body.appendChild(a);g.parentNode.removeChild(g)},20)}}else a.handleError({message:mxResources.get("errorUpdatingPreview")})});a.showDialog(d.container,440,240,!0,!0);d.init()}))})})}));a.actions.put("liveImage",new Action("Live image...",function(){a.spinner.spin(document.body,mxResources.get("loading"))&&a.getPublicUrl(a.getCurrentFile(),function(b){a.spinner.stop();null!=b?(b=encodeURIComponent(b),b=new EmbedDialog(a,EXPORT_URL+"?format=png&url="+ +b,0),a.showDialog(b.container,440,240,!0,!0),b.init()):a.handleError({message:mxResources.get("invalidPublicUrl")})})}));a.actions.put("embedImage",new Action(mxResources.get("image")+"...",function(){a.showEmbedImageDialog(function(b,c,d,e,f,g){a.spinner.spin(document.body,mxResources.get("loading"))&&a.createEmbedImage(b,c,d,e,f,g,function(b){a.spinner.stop();b=new EmbedDialog(a,b);a.showDialog(b.container,440,240,!0,!0);b.init()},function(b){a.spinner.stop();a.handleError(b)})},mxResources.get("image"), +mxResources.get("retina"),a.isExportToCanvas())}));a.actions.put("embedSvg",new Action(mxResources.get("formatSvg")+"...",function(){a.showEmbedImageDialog(function(b,c,d,e,f,g){a.spinner.spin(document.body,mxResources.get("loading"))&&a.createEmbedSvg(b,c,d,e,f,g,function(b){a.spinner.stop();b=new EmbedDialog(a,b);a.showDialog(b.container,440,240,!0,!0);b.init()},function(b){a.spinner.stop();a.handleError(b)})},mxResources.get("formatSvg"),mxResources.get("image"),!0,"https://desk.draw.io/support/solutions/articles/16000042548")})); +a.actions.put("embedIframe",new Action(mxResources.get("iframe")+"...",function(){var c=b.getGraphBounds();a.showPublishLinkDialog(mxResources.get("iframe"),null,"100%",Math.ceil((c.y+c.height-b.view.translate.y)/b.view.scale)+2,function(b,c,d,e,f,g,k,n){a.spinner.spin(document.body,mxResources.get("loading"))&&a.getPublicUrl(a.getCurrentFile(),function(l){a.spinner.stop();l=new EmbedDialog(a,'<iframe frameborder="0" style="width:'+k+";height:"+n+';" src="'+a.createLink(b,c,d,e,f,g,l)+'"></iframe>'); +a.showDialog(l.container,440,240,!0,!0);l.init()})},!0)}));a.actions.put("publishLink",new Action(mxResources.get("link")+"...",function(){a.showPublishLinkDialog(null,null,null,null,function(b,c,d,e,f,g){a.spinner.spin(document.body,mxResources.get("loading"))&&a.getPublicUrl(a.getCurrentFile(),function(k){a.spinner.stop();k=new EmbedDialog(a,a.createLink(b,c,d,e,f,g,k));a.showDialog(k.container,440,240,!0,!0);k.init()})})}));a.actions.addAction("googleDocs...",function(){a.openLink("http://docsaddon.draw.io")}); +a.actions.addAction("googleSlides...",function(){a.openLink("https://slidesaddon.draw.io")});a.actions.addAction("googleSites...",function(){a.spinner.spin(document.body,mxResources.get("loading"))&&a.getPublicUrl(a.getCurrentFile(),function(b){a.spinner.stop();b=new GoogleSitesDialog(a,b);a.showDialog(b.container,420,256,!0,!0);b.init()})});if(isLocalStorage||mxClient.IS_CHROMEAPP)u=a.actions.addAction("scratchpad",function(){a.toggleScratchpad()}),u.setToggleAction(!0),u.setSelectedCallback(function(){return null!= +a.scratchpad}),a.actions.addAction("plugins...",function(){a.showDialog((new PluginsDialog(a)).container,360,170,!0,!1)});u=a.actions.addAction("search",function(){var b=a.sidebar.isEntryVisible("search");a.sidebar.showPalette("search",!b);isLocalStorage&&(mxSettings.settings.search=!b,mxSettings.save())});u.setToggleAction(!0);u.setSelectedCallback(function(){return a.sidebar.isEntryVisible("search")});"1"==urlParams.embed&&(a.actions.get("save").funct=function(c){b.isEditing()&&b.stopEditing(); +var d="0"!=urlParams.pages||null!=a.pages&&1<a.pages.length?a.getFileData(!0):mxUtils.getXml(a.editor.getGraphXml());if("json"==urlParams.proto){var e=a.createLoadMessage("save");e.xml=d;c&&(e.exit=!0);d=JSON.stringify(e)}(window.opener||window.parent).postMessage(d,"*");"0"!=urlParams.modified&&"1"!=urlParams.keepmodified&&(a.editor.modified=!1,a.editor.setStatus(""));null!=a.getCurrentFile()&&a.saveFile()},a.actions.addAction("saveAndExit",function(){a.actions.get("save").funct(!0)}),a.actions.addAction("exit", +function(){var b=function(){a.editor.modified=!1;var b="json"==urlParams.proto?JSON.stringify({event:"exit",modified:a.editor.modified}):"";(window.opener||window.parent).postMessage(b,"*")};a.editor.modified?a.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()}));this.put("exportAs",new Menu(mxUtils.bind(this,function(b,c){a.isExportToCanvas()?(this.addMenuItems(b,["exportPng"],c),a.jpgSupported&&this.addMenuItems(b,["exportJpg"],c)): +a.isOffline()||mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(b,["exportPng","exportJpg"],c);this.addMenuItems(b,["exportSvg","-"],c);a.isOffline()||a.printPdfExport?this.addMenuItems(b,["exportPdf"],c):a.isOffline()||mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(b,["exportPdf"],c);mxClient.IS_IE||"undefined"===typeof VsdxExport&&a.isOffline()||this.addMenuItems(b,["exportVsdx"],c);this.addMenuItems(b,["-","exportHtml","exportXml","exportUrl"],c);a.isOffline()||(b.addSeparator(c), +this.addMenuItem(b,"export",c).firstChild.nextSibling.innerHTML=mxResources.get("advanced")+"...")})));this.put("importFrom",new Menu(mxUtils.bind(this,function(c,d){function e(b){b.pickFile(function(c){a.spinner.spin(document.body,mxResources.get("loading"))&&b.getFile(c,function(b){var c=k(b.getTitle());/\.svg$/i.test(b.getTitle())&&!a.editor.isDataSvg(b.getData())&&(b.setData(a.createSvgDataUri(b.getData())),c="image/svg+xml");g(b.getData(),c,b.getTitle())},function(b){a.handleError(b,null!=b? +mxResources.get("errorLoadingFile"):null)},b==a.drive)},!0)}var g=mxUtils.bind(this,function(c,d,e){var f=b.view,g=b.getGraphBounds(),k=b.snap(Math.ceil(Math.max(0,g.x/f.scale-f.translate.x)+4*b.gridSize)),n=b.snap(Math.ceil(Math.max(0,(g.y+g.height)/f.scale-f.translate.y)+4*b.gridSize));"data:image/"==c.substring(0,11)?a.loadImage(c,mxUtils.bind(this,function(f){var g=!0,l=mxUtils.bind(this,function(){a.resizeImage(f,c,mxUtils.bind(this,function(f,l,m){f=g?Math.min(1,Math.min(a.maxImageSize/l,a.maxImageSize/ +m)):1;a.importFile(c,d,k,n,Math.round(l*f),Math.round(m*f),e,function(c){a.spinner.stop();b.setSelectionCells(c);b.scrollCellToVisible(b.getSelectionCell())})}),g)});c.length>a.resampleThreshold?a.confirmImageResize(function(a){g=a;l()}):l()}),mxUtils.bind(this,function(){a.handleError({message:mxResources.get("cannotOpenFile")})})):a.importFile(c,d,k,n,0,0,e,function(c){a.spinner.stop();b.setSelectionCells(c);b.scrollCellToVisible(b.getSelectionCell())})}),k=mxUtils.bind(this,function(a){var b="text/xml"; +/\.png$/i.test(a)?b="image/png":/\.jpe?g$/i.test(a)?b="image/jpg":/\.gif$/i.test(a)&&(b="image/gif");return b});"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!=a.drive?c.addItem(mxResources.get("googleDrive")+"...",null,function(){e(a.drive)},d):f&&c.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1));null!=a.oneDrive?c.addItem(mxResources.get("oneDrive")+"...",null,function(){e(a.oneDrive)},d):q&&c.addItem(mxResources.get("oneDrive")+ +" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);null!=a.dropbox?c.addItem(mxResources.get("dropbox")+"...",null,function(){e(a.dropbox)},d):l&&c.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);null!=a.gitHub&&c.addItem(mxResources.get("github")+"...",null,function(){e(a.gitHub)},d);null!=a.trello?c.addItem(mxResources.get("trello")+"...",null,function(){e(a.trello)},d):p&&c.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+ +"...)",null,function(){},d,null,!1);c.addSeparator(d);isLocalStorage&&"0"!=urlParams.browser&&c.addItem(mxResources.get("browser")+"...",null,function(){a.importLocalFile(!1)},d);c.addItem(mxResources.get("device")+"...",null,function(){a.importLocalFile(!0)},d);a.isOffline()||(c.addSeparator(d),c.addItem(mxResources.get("url")+"...",null,function(){var b=new FilenameDialog(a,"",mxResources.get("import"),function(b){if(null!=b&&0<b.length&&a.spinner.spin(document.body,mxResources.get("loading"))){var c= +/(\.png)($|\?)/i.test(b)?"image/png":"text/xml";a.loadUrl(PROXY_URL+"?url="+encodeURIComponent(b),function(a){g(a,c,b)},function(){a.spinner.stop();a.handleError(null,mxResources.get("errorLoadingFile"))},"image/png"==c)}},mxResources.get("url"));a.showDialog(b.container,300,80,!0,!0);b.init()},d))}))).isEnabled=k;this.put("theme",new Menu(mxUtils.bind(this,function(b,c){var d=mxSettings.getUi(),e=b.addItem(mxResources.get("automatic"),null,function(){mxSettings.setUi("");mxSettings.save();a.alert(mxResources.get("restartForChangeRequired"))}, +c);"kennedy"!=d&&"atlas"!=d&&"dark"!=d&&"min"!=d&&b.addCheckmark(e,Editor.checkmarkImage);b.addSeparator(c);e=b.addItem(mxResources.get("kennedy"),null,function(){mxSettings.setUi("kennedy");mxSettings.save();a.alert(mxResources.get("restartForChangeRequired"))},c);"kennedy"==d&&b.addCheckmark(e,Editor.checkmarkImage);e=b.addItem(mxResources.get("minimal"),null,function(){mxSettings.setUi("min");mxSettings.save();a.alert(mxResources.get("restartForChangeRequired"))},c);"min"==d&&b.addCheckmark(e, +Editor.checkmarkImage);e=b.addItem(mxResources.get("atlas"),null,function(){mxSettings.setUi("atlas");mxSettings.save();a.alert(mxResources.get("restartForChangeRequired"))},c);"atlas"==d&&b.addCheckmark(e,Editor.checkmarkImage);e=b.addItem(mxResources.get("dark"),null,function(){mxSettings.setUi("dark");mxSettings.save();a.alert(mxResources.get("restartForChangeRequired"))},c);"dark"==d&&b.addCheckmark(e,Editor.checkmarkImage)})));u=this.editorUi.actions.addAction("rename...",mxUtils.bind(this,function(){var b= +this.editorUi.getCurrentFile();if(null!=b){var c=null!=b.getTitle()?b.getTitle():this.editorUi.defaultFilename,c=new FilenameDialog(this.editorUi,c,mxResources.get("rename"),mxUtils.bind(this,function(a){null!=a&&0<a.length&&null!=b&&this.editorUi.spinner.spin(document.body,mxResources.get("renaming"))&&b.rename(a,mxUtils.bind(this,function(a){this.editorUi.spinner.stop()}),mxUtils.bind(this,function(a){this.editorUi.handleError(a,null!=a?mxResources.get("errorRenamingFile"):null)}))}),b.constructor== +DriveFile||b.constructor==StorageFile?mxResources.get("diagramName"):null,function(b){if(null!=b&&0<b.length)return!0;a.showError(mxResources.get("error"),mxResources.get("invalidName"),mxResources.get("ok"));return!1});this.editorUi.showDialog(c.container,300,80,!0,!0);c.init()}}));u.isEnabled=function(){return this.enabled&&k.apply(this,arguments)};u.visible="1"!=urlParams.embed;a.actions.addAction("makeCopy...",mxUtils.bind(this,function(){var b=a.getCurrentFile();if(null!=b){var c=a.getCopyFilename(b); +b.constructor==DriveFile?(c=new CreateDialog(a,c,mxUtils.bind(this,function(c,d){"download"==d&&(d=App.MODE_GOOGLE);null!=c&&0<c.length&&(d==App.MODE_GOOGLE?a.spinner.spin(document.body,mxResources.get("saving"))&&b.saveAs(c,mxUtils.bind(this,function(c){b.desc=c;b.save(!1,mxUtils.bind(this,function(){a.spinner.stop();b.setModified(!1);b.addAllSavedStatus()}),mxUtils.bind(this,function(b){a.handleError(b)}))}),mxUtils.bind(this,function(b){a.handleError(b)})):a.createFile(c,a.getFileData(!0),null, +d))}),mxUtils.bind(this,function(){a.hideDialog()}),mxResources.get("makeCopy"),mxResources.get("create"),null,null,null,null,!0),a.showDialog(c.container,420,380,!0,!0),c.init()):a.editor.editAsNew(this.editorUi.getFileData(!0),c)}}));a.actions.addAction("moveToFolder...",mxUtils.bind(this,function(){var b=a.getCurrentFile();b.getMode()!=App.MODE_GOOGLE&&b.getMode()!=App.MODE_ONEDRIVE||a.pickFolder(b.getMode(),mxUtils.bind(this,function(c){a.spinner.spin(document.body,mxResources.get("moving"))&& +b.move(c,mxUtils.bind(this,function(b){a.spinner.stop()}),mxUtils.bind(this,function(b){a.handleError(b)}))}),null,!0)}));this.put("publish",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,["publishLink"],b)})));a.actions.put("useOffline",new Action(mxResources.get("useOffline")+"...",function(){a.openLink("https://app.draw.io/")}));a.actions.put("downloadDesktop",new Action(mxResources.get("downloadDesktop")+"...",function(){a.openLink("https://get.draw.io/")}));this.editorUi.actions.addAction("share...", +mxUtils.bind(this,function(){var a=this.editorUi.getCurrentFile();null!=a&&this.editorUi.drive.showPermissions(a.getId())}));this.put("embed",new Menu(mxUtils.bind(this,function(b,c){"1"==urlParams.test&&this.addMenuItems(b,["liveImage","-"],c);this.addMenuItems(b,["embedImage","embedSvg","-","embedHtml"],c);navigator.standalone||a.isOffline()||this.addMenuItems(b,["embedIframe"],c);"1"==urlParams.embed||a.isOffline()||this.addMenuItems(b,["-","googleDocs","googleSlides"],c)})));var t=function(b, +c,d,e){("plantUml"!=e||EditorUi.enablePlantUml&&!a.isOffline())&&b.addItem(d,null,mxUtils.bind(this,function(){if("fromText"==e||"formatSql"==e||"plantUml"==e){var b=new ParseDialog(a,d,e);a.showDialog(b.container,620,420,!0,!1);a.dialog.container.style.overflow="auto"}else b=new CreateGraphDialog(a,d,e),a.showDialog(b.container,620,420,!0,!1);b.init()}),c)},y=function(a,c,d,e){var f=b.isMouseInsertPoint()?b.getInsertPoint():b.getFreeInsertPoint();a=new mxCell(a,new mxGeometry(f.x,f.y,c,d),e);a.vertex= +!0;b.getModel().beginUpdate();try{a=b.addCell(a),b.fireEvent(new mxEventObject("cellsInserted","cells",[a]))}finally{b.getModel().endUpdate()}b.scrollCellToVisible(a);b.setSelectionCell(a);b.container.focus();b.editAfterInsert&&b.startEditing(a);return a};a.actions.put("exportSvg",new Action(mxResources.get("formatSvg")+"...",function(){a.showExportDialog(mxResources.get("formatSvg"),!0,mxResources.get("export"),"https://support.draw.io/display/DO/Exporting+Files",mxUtils.bind(this,function(b,c,d, +e,f,g,k,l,m,q){b=parseInt(b);!isNaN(b)&&0<b&&a.exportSvg(b/100,c,d,e,f,g,k,!l,m,q)}),!0,null,"svg")}));a.actions.put("insertText",new Action(mxResources.get("text"),function(){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&b.startEditingAtCell(y("Text",40,20,"text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;rounded=0;"))}),null,null,Editor.ctrlKey+"+Shift+X").isEnabled=k;a.actions.put("insertRectangle",new Action(mxResources.get("rectangle"), +function(){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&y("",120,60,"whiteSpace=wrap;html=1;")}),null,null,Editor.ctrlKey+"+K").isEnabled=k;a.actions.put("insertEllipse",new Action(mxResources.get("ellipse"),function(){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&y("",80,80,"ellipse;whiteSpace=wrap;html=1;")}),null,null,Editor.ctrlKey+"+Shift+K").isEnabled=k;a.actions.put("insertRhombus",new Action(mxResources.get("rhombus"),function(){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&& +y("",80,80,"rhombus;whiteSpace=wrap;html=1;")})).isEnabled=k;var B=mxUtils.bind(this,function(a,b,c){for(var d=0;d<c.length;d++)"-"==c[d]?a.addSeparator(b):t(a,b,mxResources.get(c[d])+"...",c[d])});this.put("insert",new Menu(mxUtils.bind(this,function(b,c){this.addMenuItems(b,"insertRectangle insertEllipse insertRhombus - insertText insertLink - insertImage".split(" "),c);a.insertTemplateEnabled&&!a.isOffline()&&this.addMenuItems(b,["insertTemplate","-"],c);this.addSubmenu("insertLayout",b,c,mxResources.get("layout")); +b.addSeparator(c);B(b,c,["fromText","plantUml","-","formatSql"]);b.addItem(mxResources.get("csv")+"...",null,function(){a.showImportCsvDialog()},c)})));this.put("insertLayout",new Menu(mxUtils.bind(this,function(a,b){B(a,b,"horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "))})));this.put("openRecent",new Menu(function(b,c){var d=a.getRecent();if(null!=d){for(var e=0;e<d.length;e++)(function(d){var e=d.mode;e==App.MODE_GOOGLE?e="googleDrive":e==App.MODE_ONEDRIVE&& +(e="oneDrive");b.addItem(d.title+" ("+mxResources.get(e)+")",null,function(){a.loadFile(d.id)},c)})(d[e]);b.addSeparator(c)}b.addItem(mxResources.get("reset"),null,function(){a.resetRecent()},c)}));this.put("openFrom",new Menu(function(b,c){null!=a.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){a.pickFile(App.MODE_GOOGLE)},c):f&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.oneDrive?b.addItem(mxResources.get("oneDrive")+ +"...",null,function(){a.pickFile(App.MODE_ONEDRIVE)},c):q&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){a.pickFile(App.MODE_DROPBOX)},c):l&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){a.pickFile(App.MODE_GITHUB)},c);null!=a.trello? +b.addItem(mxResources.get("trello")+"...",null,function(){a.pickFile(App.MODE_TRELLO)},c):p&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);b.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){a.pickFile(App.MODE_BROWSER)},c);b.addItem(mxResources.get("device")+"...",null,function(){a.pickFile(App.MODE_DEVICE)},c);a.isOffline()||(b.addSeparator(c),b.addItem(mxResources.get("url")+ +"...",null,function(){var b=new FilenameDialog(a,"",mxResources.get("open"),function(b){null!=b&&0<b.length&&(null==a.getCurrentFile()?window.location.hash="#U"+encodeURIComponent(b):window.openWindow((mxClient.IS_CHROMEAPP?"https://www.draw.io/":"https://"+location.host+"/")+window.location.search+"#U"+encodeURIComponent(b)))},mxResources.get("url"));a.showDialog(b.container,300,80,!0,!0);b.init()},c))}));Editor.enableCustomLibraries&&(this.put("newLibrary",new Menu(function(b,c){"undefined"!=typeof google&& +"undefined"!=typeof google.picker&&(null!=a.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_GOOGLE)},c):f&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1));null!=a.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_ONEDRIVE)},c):q&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)", +null,function(){},c,null,!1);null!=a.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_DROPBOX)},c):l&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_GITHUB)},c);null!=a.trello?b.addItem(mxResources.get("trello")+"...",null,function(){a.showLibraryDialog(null, +null,null,null,App.MODE_TRELLO)},c):p&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);b.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_BROWSER)},c);b.addItem(mxResources.get("device")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_DEVICE)},c)})),this.put("openLibraryFrom",new Menu(function(b,c){"undefined"!= +typeof google&&"undefined"!=typeof google.picker&&(null!=a.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){a.pickLibrary(App.MODE_GOOGLE)},c):f&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1));null!=a.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){a.pickLibrary(App.MODE_ONEDRIVE)},c):q&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!= +a.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){a.pickLibrary(App.MODE_DROPBOX)},c):l&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){a.pickLibrary(App.MODE_GITHUB)},c);null!=a.trello?b.addItem(mxResources.get("trello")+"...",null,function(){a.pickLibrary(App.MODE_TRELLO)},c):p&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+ +"...)",null,function(){},c,null,!1);b.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){a.pickLibrary(App.MODE_BROWSER)},c);b.addItem(mxResources.get("device")+"...",null,function(){a.pickLibrary(App.MODE_DEVICE)},c);a.isOffline()||(b.addSeparator(c),b.addItem(mxResources.get("url")+"...",null,function(){var b=new FilenameDialog(a,"",mxResources.get("open"),function(b){if(null!=b&&0<b.length&&a.spinner.spin(document.body,mxResources.get("loading"))){var c= +b;a.isCorsEnabledForUrl(b)||(c=PROXY_URL+"?url="+encodeURIComponent(b));mxUtils.get(c,function(c){if(200<=c.getStatus()&&299>=c.getStatus()){a.spinner.stop();try{a.loadLibrary(new UrlLibrary(this,c.getText(),b))}catch(G){a.handleError(G,mxResources.get("errorLoadingFile"))}}else a.spinner.stop(),a.handleError(null,mxResources.get("errorLoadingFile"))},function(){a.spinner.stop();a.handleError(null,mxResources.get("errorLoadingFile"))})}},mxResources.get("url"));a.showDialog(b.container,300,80,!0, +!0);b.init()},c))})));this.put("edit",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,"undo redo - cut copy paste delete - duplicate - find - editData editTooltip - editStyle editGeometry - edit - editLink openLink - selectVertices selectEdges selectAll selectNone - lockUnlock".split(" "))})));this.put("view",new Menu(mxUtils.bind(this,function(b,c){this.addMenuItems(b,(null!=this.editorUi.format?["formatPanel"]:[]).concat(["outline","layers","-"]));this.addMenuItems(b,["-","search"], +c);if(isLocalStorage||mxClient.IS_CHROMEAPP){var d=this.addMenuItem(b,"scratchpad",c);a.isOffline()&&!mxClient.IS_CHROMEAPP||this.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000042367")}this.addMenuItems(b,"shapes - pageView pageScale - scrollbars tooltips - grid guides".split(" "),c);mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode)&&this.addMenuItem(b,"shadowVisible",c);this.addMenuItems(b,"- connectionArrows connectionPoints - resetView zoomIn zoomOut".split(" "), +c)})));this.put("extras",new Menu(mxUtils.bind(this,function(b,c){"1"!=urlParams.embed&&(this.addSubmenu("theme",b,c),b.addSeparator(c));this.addMenuItems(b,["copyConnect","collapseExpand","-"],c);if("undefined"!==typeof MathJax){var d=this.addMenuItem(b,"mathematicalTypesetting",c);this.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000032875")}"1"!=urlParams.embed&&this.addMenuItems(b,["autosave"],c);this.addMenuItems(b,["-","createShape","editDiagram"],c);b.addSeparator(c); +"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&this.addMenuItems(b,["showStartScreen"],c);!a.isOfflineApp()&&isLocalStorage&&this.addMenuItem(b,"plugins",c);b.addSeparator(c);this.addMenuItem(b,"tags",c);b.addSeparator(c);"1"==urlParams.newTempDlg&&(a.actions.addAction("templates",function(){var b=new TemplatesDialog;a.showDialog(b.container,b.width,b.height,!0,!1,null,!1,!0);b.init(a,function(a){console.log(a)},null,null,null,"user",function(a,b){setTimeout(function(){b?a([{url:"123", +title:"Test 1Test 1Test 1Test 1Test 1Test 1Test 11Test 1Test 11Test 1Test 1dgdsgdfg fdg dfgdfg dfg dfg"},{url:"123",title:"Test 2",imgUrl:"https://www.google.com.eg/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"},{url:"123",title:"Test 3",changedBy:"Ashraf Teleb",lastModifiedOn:"Yesterday"},{url:"123",title:"Test 4"},{url:"123",title:"Test 5"},{url:"123",title:"Test 6"}]):a([{url:"123",title:"Test 4",imgUrl:"https://images.pexels.com/photos/459225/pexels-photo-459225.jpeg"},{url:"123", +title:"Test 5"},{url:"123",title:"Test 6"},{url:"123",title:"Test 1Test 1Test 1Test 1Test 1Test 1Test 11Test 1Test 11Test 1Test 1dgdsgdfg fdg dfgdfg dfg dfg"},{url:"123",title:"Test 2",imgUrl:"https://www.google.com.eg/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"},{url:"123",title:"Test 3",changedBy:"Ashraf Teleb",lastModifiedOn:"Yesterday"}]);console.log(b)},1E3)},function(a,b,c){setTimeout(function(){b(c?[{url:"123",title:a+"Test 1Test 1Test 1Test 1Test 1Test 1Test 1"},{url:"123", +title:a+"Test 2"},{url:"123",title:a+"Test 3"},{url:"123",title:a+"Test 4"},{url:"123",title:a+"Test 5"},{url:"123",title:a+"Test 6"}]:[{url:"123",title:a+"Test 5"},{url:"123",title:a+"Test 6"},{url:"123",title:a+"Test 1Test 1Test 1Test 1Test 1Test 1Test 1"},{url:"123",title:a+"Test 2"},{url:"123",title:a+"Test 3"},{url:"123",title:a+"Test 4"}])},2E3)},null)}),this.addMenuItem(b,"templates",c))})));this.put("file",new Menu(mxUtils.bind(this,function(b,c){if("1"==urlParams.embed)this.addSubmenu("importFrom", +b,c),this.addSubmenu("exportAs",b,c),this.addSubmenu("embed",b,c),"1"==urlParams.libraries&&(this.addMenuItems(b,["-"],c),this.addSubmenu("newLibrary",b,c),this.addSubmenu("openLibraryFrom",b,c)),this.addMenuItems(b,"- pageSetup print - rename save".split(" "),c),"1"==urlParams.saveAndExit&&this.addMenuItems(b,["saveAndExit"],c),this.addMenuItems(b,["exit"],c);else{var d=this.editorUi.getCurrentFile();if(null!=d&&d.constructor==DriveFile){d.isRestricted()&&this.addMenuItems(b,["exportOptionsDisabled"], +c);this.addMenuItems(b,["save","-","share"],c);var e=this.addMenuItem(b,"synchronize",c);a.isOffline()&&!mxClient.IS_CHROMEAPP||this.addLinkToItem(e,"https://desk.draw.io/support/solutions/articles/16000087947");b.addSeparator(c)}else this.addMenuItems(b,["new"],c);this.addSubmenu("openFrom",b,c);isLocalStorage&&this.addSubmenu("openRecent",b,c);null!=d&&d.constructor==DriveFile?this.addMenuItems(b,["new","-","rename","makeCopy","moveToFolder"],c):(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null== +d||d.constructor==LocalFile||(b.addSeparator(c),e=this.addMenuItem(b,"synchronize",c),a.isOffline()&&!mxClient.IS_CHROMEAPP||this.addLinkToItem(e,"https://desk.draw.io/support/solutions/articles/16000087947")),this.addMenuItems(b,["-","save","saveAs"],c),this.addMenuItems(b,["-","rename"],c),a.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&this.addMenuItems(b,["upload"],c):(this.addMenuItems(b,["makeCopy"],c),null!=d&&d.constructor==OneDriveFile&&this.addMenuItems(b,["moveToFolder"],c))); +b.addSeparator(c);this.addSubmenu("importFrom",b,c);this.addSubmenu("exportAs",b,c);b.addSeparator(c);this.addSubmenu("embed",b,c);this.addSubmenu("publish",b,c);b.addSeparator(c);this.addSubmenu("newLibrary",b,c);this.addSubmenu("openLibraryFrom",b,c);null!=d&&d.isRevisionHistorySupported()&&this.addMenuItems(b,["-","revisionHistory"],c);this.addMenuItems(b,["-","pageSetup"],c);mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(b,["print"],c);this.addMenuItems(b,["-","close"])}})))}})();function DiagramPage(b){this.node=b;null==this.getId()&&this.node.setAttribute("id",Editor.guid())}DiagramPage.prototype.node=null;DiagramPage.prototype.root=null;DiagramPage.prototype.viewState=null;DiagramPage.prototype.getId=function(){return this.node.getAttribute("id")};DiagramPage.prototype.getName=function(){return this.node.getAttribute("name")};DiagramPage.prototype.setName=function(b){null==b?this.node.removeAttribute("name"):this.node.setAttribute("name",b)}; +function RenamePage(b,c,a){this.ui=b;this.page=c;this.previous=this.name=a}RenamePage.prototype.execute=function(){var b=this.page.getName();this.page.setName(this.previous);this.name=this.previous;this.previous=b;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageRenamed"))};function MovePage(b,c,a){this.ui=b;this.oldIndex=c;this.newIndex=a} +MovePage.prototype.execute=function(){this.ui.pages.splice(this.newIndex,0,this.ui.pages.splice(this.oldIndex,1)[0]);var b=this.oldIndex;this.oldIndex=this.newIndex;this.newIndex=b;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageMoved"))};function SelectPage(b,c,a){this.ui=b;this.previousPage=this.page=c;this.neverShown=!0;null!=c&&(this.neverShown=null==c.viewState,this.ui.updatePageRoot(c),null!=a&&(c.viewState=a,this.neverShown=!1))} +SelectPage.prototype.execute=function(){var b=mxUtils.indexOf(this.ui.pages,this.previousPage);if(null!=this.page&&0<=b){var b=this.ui.currentPage,c=this.ui.editor,a=c.graph,e=c.graph.compress(a.zapGremlins(mxUtils.getXml(c.getGraphXml(!0))));mxUtils.setTextContent(b.node,e);b.viewState=a.getViewState();b.root=a.model.root;null!=b.model&&b.model.rootChanged(b.root);a.view.clear(b.root,!0);a.clearSelection();this.ui.currentPage=this.previousPage;this.previousPage=b;b=this.ui.currentPage;a.model.prefix= +Editor.guid()+"-";a.model.rootChanged(b.root);a.setViewState(b.viewState);a.gridEnabled=a.gridEnabled&&(!this.ui.editor.isChromelessView()||"1"==urlParams.grid);c.updateGraphComponents();a.view.validate();a.sizeDidChange();this.neverShown&&(this.neverShown=!1,a.selectUnlockedLayer());c.graph.fireEvent(new mxEventObject(mxEvent.ROOT));c.fireEvent(new mxEventObject("pageSelected","change",this))}}; +function ChangePage(b,c,a,e){SelectPage.call(this,b,a);this.relatedPage=c;this.index=e;this.previousIndex=null}mxUtils.extend(ChangePage,SelectPage); +ChangePage.prototype.execute=function(){this.ui.editor.fireEvent(new mxEventObject("beforePageChange","change",this));this.previousIndex=this.index;if(null==this.index){var b=mxUtils.indexOf(this.ui.pages,this.relatedPage);this.ui.pages.splice(b,1);this.index=b}else this.ui.pages.splice(this.index,0,this.relatedPage),this.index=null;SelectPage.prototype.execute.apply(this,arguments)}; +EditorUi.prototype.getSelectedPageIndex=function(){var b=null;if(null!=this.pages&&null!=this.currentPage)for(var c=0;c<this.pages.length;c++)if(this.pages[c]==this.currentPage){b=c;break}return b};EditorUi.prototype.getPageById=function(b){if(null!=this.pages)for(var c=0;c<this.pages.length;c++)if(this.pages[c].getId()==b)return this.pages[c];return null}; +EditorUi.prototype.initPages=function(){this.actions.addAction("previousPage",mxUtils.bind(this,function(){this.selectNextPage(!1)}));this.actions.addAction("nextPage",mxUtils.bind(this,function(){this.selectNextPage(!0)}));this.keyHandler.bindAction(33,!0,"previousPage",!0);this.keyHandler.bindAction(34,!0,"nextPage",!0);var b=this.editor.graph,c=b.view.validateBackground;b.view.validateBackground=mxUtils.bind(this,function(){if(null!=this.tabContainer){var a=this.tabContainer.style.height;this.tabContainer.style.height= +null==this.fileNode||null==this.pages||1==this.pages.length&&"0"==urlParams.pages?"0px":"30px";a!=this.tabContainer.style.height&&this.refresh(!1)}c.apply(b.view,arguments)});var a=null,e=mxUtils.bind(this,function(){this.updateTabContainer();var c=this.currentPage;null!=c&&c!=a&&(null==c.viewState||null==c.viewState.scrollLeft?(this.resetScrollbars(),b.isLightboxView()&&this.lightboxFit(),null!=this.chromelessResize&&(b.container.scrollLeft=0,b.container.scrollTop=0,this.chromelessResize())):(b.container.scrollLeft= +b.view.translate.x*b.view.scale+c.viewState.scrollLeft,b.container.scrollTop=b.view.translate.y*b.view.scale+c.viewState.scrollTop),a=c);null!=this.actions.layersWindow&&this.actions.layersWindow.refreshLayers();"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?1!=MathJax.Hub.queue.pending||null==this.editor||this.editor.graph.mathEnabled||MathJax.Hub.Queue(mxUtils.bind(this,function(){null!=this.editor&&this.editor.graph.refresh()})):"undefined"===typeof Editor.MathJaxClear||null!=this.editor&& +this.editor.graph.mathEnabled||Editor.MathJaxClear()});this.editor.graph.model.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(a,b){for(var c=b.getProperty("edit").changes,f=0;f<c.length;f++)if(c[f]instanceof SelectPage||c[f]instanceof RenamePage||c[f]instanceof MovePage||c[f]instanceof mxRootChange){e();break}}));null!=this.toolbar&&this.editor.addListener("pageSelected",this.toolbar.updateZoom)}; +EditorUi.prototype.restoreViewState=function(b,c,a){b=null!=b?this.getPageById(b.getId()):null;var e=this.editor.graph;null!=b&&null!=this.currentPage&&null!=this.pages&&(b!=this.currentPage?this.selectPage(b,!0,c):(e.setViewState(c),this.editor.updateGraphComponents(),e.view.revalidate(),e.sizeDidChange()),e.container.scrollLeft=e.view.translate.x*e.view.scale+c.scrollLeft,e.container.scrollTop=e.view.translate.y*e.view.scale+c.scrollTop,e.restoreSelection(a))}; +Graph.prototype.createViewState=function(b){var c=b.getAttribute("page"),a=parseFloat(b.getAttribute("pageScale")),e=parseFloat(b.getAttribute("pageWidth")),k=parseFloat(b.getAttribute("pageHeight")),f=b.getAttribute("background"),l=b.getAttribute("backgroundImage"),l=null!=l&&0<l.length?JSON.parse(l):null;return{gridEnabled:"0"!=b.getAttribute("grid"),gridSize:parseFloat(b.getAttribute("gridSize"))||mxGraph.prototype.gridSize,guidesEnabled:"0"!=b.getAttribute("guides"),foldingEnabled:"0"!=b.getAttribute("fold"), +shadowVisible:"1"==b.getAttribute("shadow"),pageVisible:this.isLightboxView()?!1:null!=c?"0"!=c:this.defaultPageVisible,background:null!=f&&0<f.length?f:null,backgroundImage:null!=l?new mxImage(l.src,l.width,l.height):null,pageScale:isNaN(a)?mxGraph.prototype.pageScale:a,pageFormat:isNaN(e)||isNaN(k)?mxSettings.getPageFormat():new mxRectangle(0,0,e,k),tooltips:"0"!=b.getAttribute("tooltips"),connect:"0"!=b.getAttribute("connect"),arrows:"0"!=b.getAttribute("arrows"),mathEnabled:"1"==b.getAttribute("math"), selectionCells:null,defaultParent:null,scrollbars:this.defaultScrollbars,scale:1}}; -Graph.prototype.saveViewState=function(a,c,b){b||(c.setAttribute("grid",null==a||a.gridEnabled?"1":"0"),c.setAttribute("gridSize",null!=a?a.gridSize:mxGraph.prototype.gridSize),c.setAttribute("guides",null==a||a.guidesEnabled?"1":"0"),c.setAttribute("tooltips",null==a||a.tooltips?"1":"0"),c.setAttribute("connect",null==a||a.connect?"1":"0"),c.setAttribute("arrows",null==a||a.arrows?"1":"0"),c.setAttribute("page",null==a&&this.defaultPageVisible||null!=a&&a.pageVisible?"1":"0"),c.setAttribute("fold", -null==a||a.foldingEnabled?"1":"0"));c.setAttribute("pageScale",null!=a&&null!=a.pageScale?a.pageScale:mxGraph.prototype.pageScale);b=null!=a?a.pageFormat:mxSettings.getPageFormat();null!=b&&(c.setAttribute("pageWidth",b.width),c.setAttribute("pageHeight",b.height));null!=a&&null!=a.background&&c.setAttribute("background",a.background);null!=a&&null!=a.backgroundImage&&c.setAttribute("backgroundImage",JSON.stringify(a.backgroundImage));c.setAttribute("math",null!=a&&a.mathEnabled?"1":"0");c.setAttribute("shadow", -null!=a&&a.shadowVisible?"1":"0")}; +Graph.prototype.saveViewState=function(b,c,a){a||(c.setAttribute("grid",null==b||b.gridEnabled?"1":"0"),c.setAttribute("gridSize",null!=b?b.gridSize:mxGraph.prototype.gridSize),c.setAttribute("guides",null==b||b.guidesEnabled?"1":"0"),c.setAttribute("tooltips",null==b||b.tooltips?"1":"0"),c.setAttribute("connect",null==b||b.connect?"1":"0"),c.setAttribute("arrows",null==b||b.arrows?"1":"0"),c.setAttribute("page",null==b&&this.defaultPageVisible||null!=b&&b.pageVisible?"1":"0"),c.setAttribute("fold", +null==b||b.foldingEnabled?"1":"0"));c.setAttribute("pageScale",null!=b&&null!=b.pageScale?b.pageScale:mxGraph.prototype.pageScale);a=null!=b?b.pageFormat:mxSettings.getPageFormat();null!=a&&(c.setAttribute("pageWidth",a.width),c.setAttribute("pageHeight",a.height));null!=b&&null!=b.background&&c.setAttribute("background",b.background);null!=b&&null!=b.backgroundImage&&c.setAttribute("backgroundImage",JSON.stringify(b.backgroundImage));c.setAttribute("math",null!=b&&b.mathEnabled?"1":"0");c.setAttribute("shadow", +null!=b&&b.shadowVisible?"1":"0")}; Graph.prototype.getViewState=function(){return{defaultParent:this.defaultParent,currentRoot:this.view.currentRoot,gridEnabled:this.gridEnabled,gridSize:this.gridSize,guidesEnabled:this.graphHandler.guidesEnabled,foldingEnabled:this.foldingEnabled,shadowVisible:this.shadowVisible,scrollbars:this.scrollbars,pageVisible:this.pageVisible,background:this.background,backgroundImage:this.backgroundImage,pageScale:this.pageScale,pageFormat:this.pageFormat,tooltips:this.tooltipHandler.isEnabled(),connect:this.connectionHandler.isEnabled(), arrows:this.connectionArrowsEnabled,scale:this.view.scale,scrollLeft:this.container.scrollLeft-this.view.translate.x*this.view.scale,scrollTop:this.container.scrollTop-this.view.translate.y*this.view.scale,translate:this.view.translate.clone(),lastPasteXml:this.lastPasteXml,pasteCounter:this.pasteCounter,mathEnabled:this.mathEnabled}}; -Graph.prototype.setViewState=function(a){null!=a?(this.lastPasteXml=a.lastPasteXml,this.pasteCounter=a.pasteCounter||0,this.mathEnabled=a.mathEnabled,this.gridEnabled=a.gridEnabled,this.gridSize=a.gridSize,this.graphHandler.guidesEnabled=a.guidesEnabled,this.foldingEnabled=a.foldingEnabled,this.setShadowVisible(a.shadowVisible,!1),this.scrollbars=a.scrollbars,this.pageVisible=a.pageVisible,this.background=a.background,this.backgroundImage=a.backgroundImage,this.pageScale=a.pageScale,this.pageFormat= -a.pageFormat,this.view.currentRoot=a.currentRoot,this.defaultParent=a.defaultParent,this.connectionArrowsEnabled=a.arrows,this.setTooltips(a.tooltips),this.setConnectable(a.connect),this.view.scale=null!=a.scale?a.scale:1,null==this.view.currentRoot||this.model.contains(this.view.currentRoot)||(this.view.currentRoot=null),null==this.defaultParent||this.model.contains(this.defaultParent)||(this.setDefaultParent(null),this.selectUnlockedLayer()),null!=a.translate&&(this.view.translate=a.translate)): +Graph.prototype.setViewState=function(b){null!=b?(this.lastPasteXml=b.lastPasteXml,this.pasteCounter=b.pasteCounter||0,this.mathEnabled=b.mathEnabled,this.gridEnabled=b.gridEnabled,this.gridSize=b.gridSize,this.graphHandler.guidesEnabled=b.guidesEnabled,this.foldingEnabled=b.foldingEnabled,this.setShadowVisible(b.shadowVisible,!1),this.scrollbars=b.scrollbars,this.pageVisible=b.pageVisible,this.background=b.background,this.backgroundImage=b.backgroundImage,this.pageScale=b.pageScale,this.pageFormat= +b.pageFormat,this.view.currentRoot=b.currentRoot,this.defaultParent=b.defaultParent,this.connectionArrowsEnabled=b.arrows,this.setTooltips(b.tooltips),this.setConnectable(b.connect),this.view.scale=null!=b.scale?b.scale:1,null==this.view.currentRoot||this.model.contains(this.view.currentRoot)||(this.view.currentRoot=null),null==this.defaultParent||this.model.contains(this.defaultParent)||(this.setDefaultParent(null),this.selectUnlockedLayer()),null!=b.translate&&(this.view.translate=b.translate)): (this.view.currentRoot=null,this.view.scale=1,this.gridEnabled=!0,this.gridSize=mxGraph.prototype.gridSize,this.pageScale=mxGraph.prototype.pageScale,this.pageFormat=mxSettings.getPageFormat(),this.pageVisible=this.defaultPageVisible,this.backgroundImage=this.background=null,this.scrollbars=this.defaultScrollbars,this.foldingEnabled=this.graphHandler.guidesEnabled=!0,this.setShadowVisible(!1,!1),this.defaultParent=null,this.setTooltips(!0),this.setConnectable(!0),this.lastPasteXml=null,this.pasteCounter= -0,this.mathEnabled=!1,this.connectionArrowsEnabled=!0);this.preferPageSize=this.pageBreaksVisible=this.pageVisible}; -EditorUi.prototype.updatePageRoot=function(a){if(null==a.root){var c=this.editor.extractGraphModel(a.node);if(null!=c){a.graphModelNode=c;a.viewState=this.editor.graph.createViewState(c);var b=new mxCodec(c.ownerDocument);a.root=b.decode(c).root}else a.root=this.editor.graph.model.createRoot()}else null==a.viewState&&(null==a.graphModelNode&&(c=this.editor.extractGraphModel(a.node),null!=c&&(a.graphModelNode=c)),null!=a.graphModelNode&&(a.viewState=this.editor.graph.createViewState(a.graphModelNode))); -return a};EditorUi.prototype.selectPage=function(a,c,b){try{this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);c=null!=c?c:!1;this.editor.graph.isMouseDown=!1;this.editor.graph.reset();var f=this.editor.graph.model.createUndoableEdit();f.ignoreEdit=!0;var k=new SelectPage(this,a,b);k.execute();f.add(k);f.notify();this.editor.graph.tooltipHandler.hide();c||this.editor.graph.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",f))}catch(h){this.handleError(h)}}; -EditorUi.prototype.selectNextPage=function(a){var c=this.currentPage;null!=c&&null!=this.pages&&(c=mxUtils.indexOf(this.pages,c),a?this.selectPage(this.pages[mxUtils.mod(c+1,this.pages.length)]):a||this.selectPage(this.pages[mxUtils.mod(c-1,this.pages.length)]))};EditorUi.prototype.insertPage=function(a,c){if(this.editor.graph.isEnabled()){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);a=null!=a?a:this.createPage();c=null!=c?c:this.pages.length;var b=new ChangePage(this,a,a,c);this.editor.graph.model.execute(b)}return a}; -EditorUi.prototype.createPage=function(a){var c=new DiagramPage(this.fileNode.ownerDocument.createElement("diagram"));c.setName(null!=a?a:this.createPageName());return c};EditorUi.prototype.createPageName=function(){for(var a={},c=0;c<this.pages.length;c++){var b=this.pages[c].getName();null!=b&&0<b.length&&(a[b]=b)}c=this.pages.length;do b=mxResources.get("pageWithNumber",[++c]);while(null!=a[b]);return b}; -EditorUi.prototype.removePage=function(a){try{var c=this.editor.graph,b=mxUtils.indexOf(this.pages,a);if(c.isEnabled()&&0<=b){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);c.model.beginUpdate();try{var f=this.currentPage;f==a&&1<this.pages.length?(b==this.pages.length-1?b--:b++,f=this.pages[b]):1>=this.pages.length&&(f=this.insertPage(),c.model.execute(new RenamePage(this,f,mxResources.get("pageWithNumber",[1]))));c.model.execute(new ChangePage(this,a,f))}finally{c.model.endUpdate()}}}catch(k){this.handleError(k)}return a}; -EditorUi.prototype.duplicatePage=function(a,c){var b=this.editor.graph,f=null;b.isEnabled()&&(b.isEditing()&&b.stopEditing(),f=a.node.cloneNode(!1),f.removeAttribute("id"),f=new DiagramPage(f),f.root=b.cloneCell(b.model.root),f.viewState=b.getViewState(),f.viewState.scale=1,f.viewState.scrollLeft=null,f.viewState.scrollTop=null,f.viewState.currentRoot=null,f.viewState.defaultParent=null,f.setName(c),f=this.insertPage(f,mxUtils.indexOf(this.pages,a)+1));return f}; -EditorUi.prototype.renamePage=function(a){if(this.editor.graph.isEnabled()){var c=new FilenameDialog(this,a.getName(),mxResources.get("rename"),mxUtils.bind(this,function(b){null!=b&&0<b.length&&this.editor.graph.model.execute(new RenamePage(this,a,b))}),mxResources.get("rename"));this.showDialog(c.container,300,80,!0,!0);c.init()}return a};EditorUi.prototype.movePage=function(a,c){this.editor.graph.model.execute(new MovePage(this,a,c))}; -EditorUi.prototype.createTabContainer=function(){var a=document.createElement("div");a.style.backgroundColor="dark"==uiTheme?"#2a2a2a":"#dcdcdc";a.style.position="absolute";a.style.whiteSpace="nowrap";a.style.overflow="hidden";a.style.height="0px";return a}; -EditorUi.prototype.updateTabContainer=function(){if(null!=this.tabContainer&&null!=this.pages){var a=this.editor.graph,c=document.createElement("div");c.style.position="relative";c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";c.style.verticalAlign="top";c.style.height=this.tabContainer.style.height;c.style.whiteSpace="nowrap";c.style.overflow="hidden";c.style.fontSize="12px";c.style.marginLeft="30px";for(var b=this.editor.isChromelessView()?29:59,f=Math.min(140,Math.max(20,(this.tabContainer.clientWidth- -b)/this.pages.length)+1),k=null,h=0;h<this.pages.length;h++)mxUtils.bind(this,function(b,f){this.pages[b]==this.currentPage?(f.className="geActivePage",f.style.backgroundColor="dark"==uiTheme?"#2a2a2a":"#eeeeee",f.style.fontWeight="bold",f.style.borderTopStyle="none"):f.className="geInactivePage";f.setAttribute("draggable","true");mxEvent.addListener(f,"dragstart",mxUtils.bind(this,function(c){a.isEnabled()?(mxClient.IS_FF&&c.dataTransfer.setData("Text","<diagram/>"),k=b):mxEvent.consume(c)}));mxEvent.addListener(f, -"dragend",mxUtils.bind(this,function(a){k=null;a.stopPropagation();a.preventDefault()}));mxEvent.addListener(f,"dragover",mxUtils.bind(this,function(a){null!=k&&(a.dataTransfer.dropEffect="move");a.stopPropagation();a.preventDefault()}));mxEvent.addListener(f,"drop",mxUtils.bind(this,function(a){null!=k&&b!=k&&this.movePage(k,b);a.stopPropagation();a.preventDefault()}));c.appendChild(f)})(h,this.createTabForPage(this.pages[h],f,this.pages[h]!=this.currentPage));this.tabContainer.innerHTML="";this.tabContainer.appendChild(c); -f=this.createPageMenuTab();this.tabContainer.appendChild(f);f=null;this.isPageInsertTabVisible()&&(f=this.createPageInsertTab(),this.tabContainer.appendChild(f));if(c.clientWidth>this.tabContainer.clientWidth-b){null!=f&&(f.style.position="absolute",f.style.right="0px",c.style.marginRight="30px");var l=this.createControlTab(4," ❮ ");l.style.position="absolute";l.style.right=this.editor.chromeless?"29px":"55px";l.style.fontSize="13pt";this.tabContainer.appendChild(l);var t=this.createControlTab(4, -" ❯");t.style.position="absolute";t.style.right=this.editor.chromeless?"0px":"29px";t.style.fontSize="13pt";this.tabContainer.appendChild(t);var p=Math.max(0,this.tabContainer.clientWidth-(this.editor.chromeless?86:116));c.style.width=p+"px";mxEvent.addListener(l,"click",mxUtils.bind(this,function(a){c.scrollLeft-=Math.max(20,p-20);mxUtils.setOpacity(l,0<c.scrollLeft?100:50);mxUtils.setOpacity(t,c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.consume(a)}));mxUtils.setOpacity(l, -0<c.scrollLeft?100:50);mxUtils.setOpacity(t,c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.addListener(t,"click",mxUtils.bind(this,function(a){c.scrollLeft+=Math.max(20,p-20);mxUtils.setOpacity(l,0<c.scrollLeft?100:50);mxUtils.setOpacity(t,c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.consume(a)}))}}};EditorUi.prototype.isPageInsertTabVisible=function(){return 1==urlParams.embed||null!=this.getCurrentFile()&&this.getCurrentFile().isEditable()}; -EditorUi.prototype.createTab=function(a){var c=document.createElement("div");c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";c.style.whiteSpace="nowrap";c.style.boxSizing="border-box";c.style.position="relative";c.style.overflow="hidden";c.style.marginLeft="-1px";c.style.height=this.tabContainer.clientHeight+"px";c.style.padding="8px 4px 8px 4px";c.style.border="dark"==uiTheme?"1px solid #505759":"1px solid #c0c0c0";c.style.borderBottomStyle="solid";c.style.backgroundColor=this.tabContainer.style.backgroundColor; -c.style.cursor="move";c.style.color="gray";a&&(mxEvent.addListener(c,"mouseenter",mxUtils.bind(this,function(a){this.editor.graph.isMouseDown||(c.style.backgroundColor="dark"==uiTheme?"black":"#d3d3d3",mxEvent.consume(a))})),mxEvent.addListener(c,"mouseleave",mxUtils.bind(this,function(a){c.style.backgroundColor=this.tabContainer.style.backgroundColor;mxEvent.consume(a)})));return c}; -EditorUi.prototype.createControlTab=function(a,c){var b=this.createTab(!0);b.style.paddingTop=a+"px";b.style.cursor="pointer";b.style.width="30px";b.style.lineHeight="30px";b.innerHTML=c;null!=b.firstChild&&null!=b.firstChild.style&&mxUtils.setOpacity(b.firstChild,40);return b}; -EditorUi.prototype.createPageMenuTab=function(){var a=this.createControlTab(3,'<div class="geSprite geSprite-dots" style="display:inline-block;width:21px;height:21px;"></div>');a.setAttribute("title",mxResources.get("pages"));a.style.position="absolute";a.style.top="0px";a.style.left="1px";mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){this.editor.graph.popupMenuHandler.hideMenu();var b=new mxPopupMenu(mxUtils.bind(this,function(a,b){for(var c=0;c<this.pages.length;c++)mxUtils.bind(this, -function(c){var d=a.addItem(this.pages[c].getName(),null,mxUtils.bind(this,function(){this.selectPage(this.pages[c])}),b);this.pages[c]==this.currentPage&&a.addCheckmark(d,Editor.checkmarkImage)})(c);if(this.editor.graph.isEnabled()){a.addSeparator(b);a.addItem(mxResources.get("insertPage"),null,mxUtils.bind(this,function(){this.insertPage()}),b);var f=this.currentPage;null!=f&&(a.addSeparator(b),a.addItem(mxResources.get("delete"),null,mxUtils.bind(this,function(){this.removePage(f)}),b),a.addItem(mxResources.get("rename"), -null,mxUtils.bind(this,function(){this.renamePage(f,f.getName())}),b),a.addSeparator(b),a.addItem(mxResources.get("duplicate"),null,mxUtils.bind(this,function(){this.duplicatePage(f,mxResources.get("copyOf",[f.getName()]))}),b))}}));b.div.className+=" geMenubarMenu";b.smartSeparators=!0;b.showDisabled=!0;b.autoExpand=!0;b.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(b,arguments);b.destroy()});var c=mxEvent.getClientX(a),k=mxEvent.getClientY(a);b.popup(c,k,null,a);this.setCurrentMenu(b); -mxEvent.consume(a)}));return a};EditorUi.prototype.createPageInsertTab=function(){var a=this.createControlTab(4,'<div class="geSprite geSprite-plus" style="display:inline-block;width:21px;height:21px;"></div>');a.setAttribute("title",mxResources.get("insertPage"));mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){this.insertPage();mxEvent.consume(a)}));return a}; -EditorUi.prototype.createTabForPage=function(a,c,b){b=this.createTab(b);var f=a.getName()||mxResources.get("untitled"),k=a.getId();b.setAttribute("title",f+(null!=k?" ("+k+")":""));mxUtils.write(b,f);b.style.maxWidth=c+"px";b.style.width=c+"px";this.addTabListeners(a,b);42<c&&(b.style.textOverflow="ellipsis");return b}; -EditorUi.prototype.addTabListeners=function(a,c){mxEvent.disableContextMenu(c);var b=this.editor.graph;mxEvent.addListener(c,"dblclick",mxUtils.bind(this,function(b){this.renamePage(a);mxEvent.consume(b)}));var f=!1,k=!1;mxEvent.addGestureListeners(c,mxUtils.bind(this,function(c){f=null!=this.currentMenu;k=a==this.currentPage;b.isMouseDown||k||this.selectPage(a)}),null,mxUtils.bind(this,function(h){if(b.isEnabled()&&!b.isMouseDown&&(mxEvent.isTouchEvent(h)&&k||mxEvent.isPopupTrigger(h))){b.popupMenuHandler.hideMenu(); -this.hideCurrentMenu();if(!mxEvent.isTouchEvent(h)||!f){var l=new mxPopupMenu(this.createPageMenu(a));l.div.className+=" geMenubarMenu";l.smartSeparators=!0;l.showDisabled=!0;l.autoExpand=!0;l.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(l,arguments);this.resetCurrentMenu();l.destroy()});var t=mxEvent.getClientX(h),p=mxEvent.getClientY(h);l.popup(t,p,null,h);this.setCurrentMenu(l,c)}mxEvent.consume(h)}}))}; -EditorUi.prototype.createPageMenu=function(a,c){return mxUtils.bind(this,function(b,f){b.addItem(mxResources.get("insert"),null,mxUtils.bind(this,function(){this.insertPage(null,mxUtils.indexOf(this.pages,a)+1)}),f);b.addItem(mxResources.get("delete"),null,mxUtils.bind(this,function(){this.removePage(a)}),f);b.addItem(mxResources.get("rename"),null,mxUtils.bind(this,function(){this.renamePage(a,c)}),f);b.addSeparator(f);b.addItem(mxResources.get("duplicate"),null,mxUtils.bind(this,function(){this.duplicatePage(a, -mxResources.get("copyOf",[a.getName()]))}),f)})};(function(){var a=EditorUi.prototype.refresh;EditorUi.prototype.refresh=function(c){a.apply(this,arguments);this.updateTabContainer()}})();(function(){mxCodecRegistry.getCodec(ChangePageSetup).exclude.push("page")})();(function(){var a=new mxObjectCodec(new MovePage,["ui"]);a.beforeDecode=function(a,b,f){f.ui=a.ui;return b};a.afterDecode=function(a,b,f){a=f.oldIndex;f.oldIndex=f.newIndex;f.newIndex=a;return f};mxCodecRegistry.register(a)})(); -(function(){var a=new mxObjectCodec(new RenamePage,["ui","page"]);a.beforeDecode=function(a,b,f){f.ui=a.ui;return b};a.afterDecode=function(a,b,f){a=f.previous;f.previous=f.name;f.name=a;return f};mxCodecRegistry.register(a)})(); -(function(){var a=new mxObjectCodec(new ChangePage,"ui relatedPage index neverShown page previousPage".split(" ")),c="defaultParent currentRoot scrollLeft scrollTop scale translate lastPasteXml pasteCounter".split(" ");a.afterEncode=function(a,f,k){k.setAttribute("relatedPage",f.relatedPage.getId());null==f.index&&(k.setAttribute("name",f.relatedPage.getName()),null!=f.relatedPage.viewState&&k.setAttribute("viewState",JSON.stringify(f.relatedPage.viewState,function(a,b){return 0>mxUtils.indexOf(c, -a)?b:void 0})),null!=f.relatedPage.root&&a.encodeCell(f.relatedPage.root,k));return k};a.beforeDecode=function(a,c,k){k.ui=a.ui;k.relatedPage=k.ui.getPageById(c.getAttribute("relatedPage"));if(null==k.relatedPage){var b=c.ownerDocument.createElement("diagram");b.setAttribute("id",c.getAttribute("relatedPage"));b.setAttribute("name",c.getAttribute("name"));k.relatedPage=new DiagramPage(b);b=c.getAttribute("viewState");null!=b&&(k.relatedPage.viewState=JSON.parse(b),c.removeAttribute("viewState")); -c=c.cloneNode(!0);b=c.firstChild;if(null!=b)for(k.relatedPage.root=a.decodeCell(b,!1),k=b.nextSibling,b.parentNode.removeChild(b),b=k;null!=b;){k=b.nextSibling;if(b.nodeType==mxConstants.NODETYPE_ELEMENT){var f=b.getAttribute("id");null==a.lookup(f)&&a.decodeCell(b)}b.parentNode.removeChild(b);b=k}}return c};a.afterDecode=function(a,c,k){k.index=k.previousIndex;return k};mxCodecRegistry.register(a)})();(function(){var a=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAASFBMVEUAAAAAAAB/f3/9/f319fUfHx/7+/s+Pj69vb0AAAAAAAAAAAAAAAAAAAAAAAAAAAB2dnZ1dXUAAAAAAAAVFRX///8ZGRkGBgbOcI1hAAAAE3RSTlMA+vr9/f38+fb1893Bo00u+/tFvPJUBQAAAIRJREFUGNM0jEcSxCAQAxlydGqD///TNWxZBx1aXVIrWysplbapL3sFxgDq/idXBnHgBPK1nIxwc55vCXl6dRFtrV6svs/A/UjsPcpzA5tqyByD92HqQlMFh45BG6ND1DiKSoPDdm96N77bg5F+wyaEqRGb8ZiOwHQqdg9hehszcLAEIQB2lQ4p/sEpnAAAAABJRU5ErkJggg==":IMAGE_PATH+"/move.png";EditorUi.prototype.altShiftActions[68]= -"selectDescendants";var c=Graph.prototype.foldCells;Graph.prototype.foldCells=function(a,b,f,t,p){b=null!=b?b:!1;null==f&&(f=this.getFoldableCells(this.getSelectionCells(),a));this.stopEditing();this.model.beginUpdate();try{for(var d=f.slice(),g=[],h=0;h<f.length;h++){var k=this.view.getState(f[h]),l=null!=k?k.style:this.getCellStyle(f[h]);"1"==mxUtils.getValue(l,"treeFolding","0")&&(this.traverse(f[h],!0,mxUtils.bind(this,function(a,b){null!=b&&g.push(b);a!=f[h]&&g.push(a);return a==f[h]||!this.model.isCollapsed(a)})), -this.model.setCollapsed(f[h],a))}for(h=0;h<g.length;h++)this.model.setVisible(g[h],!a);f=d;f=c.apply(this,arguments)}finally{this.model.endUpdate()}return f};var b=EditorUi.prototype.init;EditorUi.prototype.init=function(){b.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function b(a){return w.isVertex(a)&&c(a)}function c(a){var b=!1;null!=a&&(a=w.getParent(a),b=v.view.getState(a),v.view.getState(a),b="tree"==(null!= -b?b.style:v.getCellStyle(a)).containerType);return b}function f(a){var b=!1;null!=a&&(a=w.getParent(a),b=v.view.getState(a),v.view.getState(a),b=null!=(null!=b?b.style:v.getCellStyle(a)).childLayout);return b}function t(a){a=v.view.getState(a);if(null!=a){var b=v.getIncomingEdges(a.cell);if(0<b.length&&(b=v.view.getState(b[0]),null!=b&&(b=b.absolutePoints,null!=b&&0<b.length&&(b=b[b.length-1],null!=b)))){if(b.y==a.y&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_SOUTH;if(b.y== -a.y+a.height&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_NORTH;if(b.x>a.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function p(a,b){b=null!=b?b:!0;v.model.beginUpdate();try{var c=v.model.getParent(a),d=v.getIncomingEdges(a),f=v.cloneCells([d[0],a]);v.model.setTerminal(f[0],v.model.getTerminal(d[0],!0),!0);var g=t(a),h=c.geometry;g==mxConstants.DIRECTION_SOUTH||g==mxConstants.DIRECTION_NORTH?f[1].geometry.x+=b?a.geometry.width+10:-f[1].geometry.width- -10:f[1].geometry.y+=b?a.geometry.height+10:-f[1].geometry.height-10;v.view.currentRoot!=c&&(f[1].geometry.x-=h.x,f[1].geometry.y-=h.y);var k=v.view.getState(a),l=v.view.scale;if(null!=k){var m=mxRectangle.fromRectangle(k);g==mxConstants.DIRECTION_SOUTH||g==mxConstants.DIRECTION_NORTH?m.x+=(b?a.geometry.width+10:-f[1].geometry.width-10)*l:m.y+=(b?a.geometry.height+10:-f[1].geometry.height-10)*l;var n=v.getOutgoingEdges(v.model.getTerminal(d[0],!0));if(null!=n){for(var p=g==mxConstants.DIRECTION_SOUTH|| -g==mxConstants.DIRECTION_NORTH,q=h=d=0;q<n.length;q++){var u=v.model.getTerminal(n[q],!1);if(g==t(u)){var w=v.view.getState(u);u!=a&&null!=w&&(p&&b!=w.getCenterX()<k.getCenterX()||!p&&b!=w.getCenterY()<k.getCenterY())&&mxUtils.intersects(m,w)&&(d=10+Math.max(d,(Math.min(m.x+m.width,w.x+w.width)-Math.max(m.x,w.x))/l),h=10+Math.max(h,(Math.min(m.y+m.height,w.y+w.height)-Math.max(m.y,w.y))/l))}}p?h=0:d=0;for(q=0;q<n.length;q++)if(u=v.model.getTerminal(n[q],!1),g==t(u)&&(w=v.view.getState(u),u!=a&&null!= -w&&(p&&b!=w.getCenterX()<k.getCenterX()||!p&&b!=w.getCenterY()<k.getCenterY()))){var A=[];v.traverse(w.cell,!0,function(a,b){null!=b&&A.push(b);A.push(a);return!0});v.moveCells(A,(b?1:-1)*d,(b?1:-1)*h)}}}return v.addCells(f,c)}finally{v.model.endUpdate()}}function d(a){v.model.beginUpdate();try{var b=t(a),c=v.getIncomingEdges(a),d=v.cloneCells([c[0],a]);v.model.setTerminal(c[0],d[1],!1);v.model.setTerminal(d[0],d[1],!0);v.model.setTerminal(d[0],a,!1);var f=v.model.getParent(a),g=f.geometry,h=[];v.view.currentRoot!= -f&&(d[1].geometry.x-=g.x,d[1].geometry.y-=g.y);v.traverse(a,!0,function(a,b){null!=b&&h.push(b);h.push(a);return!0});var k=a.geometry.width+40,l=a.geometry.height+40;b==mxConstants.DIRECTION_SOUTH?k=0:b==mxConstants.DIRECTION_NORTH?(k=0,l=-40):b==mxConstants.DIRECTION_WEST?(k=-40,l=0):b==mxConstants.DIRECTION_EAST&&(l=0);v.moveCells(h,k,l);return v.addCells(d,f)}finally{v.model.endUpdate()}}function g(a){v.model.beginUpdate();try{var b=v.model.getParent(a),c=v.getIncomingEdges(a),d=v.cloneCells([c[0], -a]);v.model.setTerminal(d[0],a,!0);var c=v.getOutgoingEdges(a),f=b.geometry,g=[];v.view.currentRoot==b&&(f=new mxRectangle);for(var h=0;h<c.length;h++){var k=v.model.getTerminal(c[h],!1);null!=k&&g.push(k)}var l=v.view.getBounds(g),m=t(a),n=v.view.translate,p=v.view.scale;m==mxConstants.DIRECTION_SOUTH?(d[1].geometry.x=null==l?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(l.x+l.width)/p-n.x-f.x+10,d[1].geometry.y+=a.geometry.height-f.y+40):m==mxConstants.DIRECTION_NORTH?(d[1].geometry.x= -null==l?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(l.x+l.width)/p-n.x+-f.x+10,d[1].geometry.y-=d[1].geometry.height-f.y+40):(d[1].geometry.x=m==mxConstants.DIRECTION_WEST?d[1].geometry.x-(d[1].geometry.width-f.x+40):d[1].geometry.x+(a.geometry.width-f.x+40),d[1].geometry.y=null==l?a.geometry.y+(a.geometry.height-d[1].geometry.height)/2:(l.y+l.height)/p-n.y+-f.y+10);return v.addCells(d,b)}finally{v.model.endUpdate()}}function n(a,b,c){a=v.getOutgoingEdges(a);c=v.view.getState(c);var d= -[];if(null!=c&&null!=a){for(var f=0;f<a.length;f++){var g=v.view.getState(v.model.getTerminal(a[f],!1));null!=g&&(!b&&Math.min(g.x+g.width,c.x+c.width)>=Math.max(g.x,c.x)||b&&Math.min(g.y+g.height,c.y+c.height)>=Math.max(g.y,c.y))&&d.push(g)}d.sort(function(a,c){return b?a.x+a.width-c.x-c.width:a.y+a.height-c.y-c.height})}return d}function q(a,b){var c=t(a),d=b==mxConstants.DIRECTION_EAST||b==mxConstants.DIRECTION_WEST;(c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST)==d&&c!=b?u.actions.get("selectParent").funct(): -c==b?(d=v.getOutgoingEdges(a),null!=d&&0<d.length&&v.setSelectionCell(v.model.getTerminal(d[0],!1))):(c=v.getIncomingEdges(a),null!=c&&0<c.length&&(d=n(v.model.getTerminal(c[0],!0),d,a),c=v.view.getState(a),null!=c&&(c=mxUtils.indexOf(d,c),0<=c&&(c+=b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_WEST?-1:1,0<=c&&c<=d.length-1&&v.setSelectionCell(d[c].cell)))))}var u=this,v=u.editor.graph,w=v.getModel();mxResources.parse("selectChildren=Select Children");mxResources.parse("selectSiblings=Select Siblings"); -mxResources.parse("selectDescendants=Select Descendants");mxResources.parse("selectParent=Select Parent");var y=u.menus.createPopupMenu;u.menus.createPopupMenu=function(a,c,d){y.apply(this,arguments);if(1==v.getSelectionCount()){c=v.getSelectionCell();var f=v.getOutgoingEdges(c);a.addSeparator();null!=f&&0<f.length&&(b(v.getSelectionCell())&&this.addMenuItems(a,["selectChildren"],null,d),this.addMenuItems(a,["selectDescendants"],null,d));b(v.getSelectionCell())&&(a.addSeparator(),0<v.getIncomingEdges(c).length&& -this.addMenuItems(a,["selectSiblings","selectParent"],null,d))}};u.actions.addAction("selectChildren",function(){if(v.isEnabled()&&1==v.getSelectionCount()){var a=v.getSelectionCell(),a=v.getOutgoingEdges(a);if(null!=a){for(var b=[],c=0;c<a.length;c++)b.push(v.model.getTerminal(a[c],!1));v.setSelectionCells(b)}}},null,null,"Alt+Shift+X");u.actions.addAction("selectSiblings",function(){if(v.isEnabled()&&1==v.getSelectionCount()){var a=v.getSelectionCell(),a=v.getIncomingEdges(a);if(null!=a&&0<a.length&& -(a=v.getOutgoingEdges(v.model.getTerminal(a[0],!0)),null!=a)){for(var b=[],c=0;c<a.length;c++)b.push(v.model.getTerminal(a[c],!1));v.setSelectionCells(b)}}},null,null,"Alt+Shift+S");u.actions.addAction("selectParent",function(){if(v.isEnabled()&&1==v.getSelectionCount()){var a=v.getSelectionCell(),a=v.getIncomingEdges(a);null!=a&&0<a.length&&v.setSelectionCell(v.model.getTerminal(a[0],!0))}},null,null,"Alt+Shift+P");u.actions.addAction("selectDescendants",function(){if(v.isEnabled()&&1==v.getSelectionCount()){var a= -v.getSelectionCell(),b=[];v.traverse(a,!0,function(a,c){null!=c&&b.push(c);b.push(a);return!0});v.setSelectionCells(b)}},null,null,"Alt+Shift+D");var m=v.removeCells;v.removeCells=function(a,d){d=null!=d?d:!0;null==a&&(a=this.getDeletableCells(this.getSelectionCells()));d&&(a=this.getDeletableCells(this.addAllEdges(a)));for(var f=[],g=0;g<a.length;g++){var h=a[g];w.isEdge(h)&&c(h)&&(f.push(h),h=w.getTerminal(h,!1));b(h)?(v.traverse(h,!0,function(a,b){null!=b&&f.push(b);f.push(a);return!0}),h=v.getIncomingEdges(a[g]), -a=a.concat(h)):f.push(a[g])}a=f;return m.apply(this,arguments)};u.hoverIcons.getStateAt=function(a,c,d){return b(a.cell)?null:this.graph.view.getState(this.graph.getCellAt(c,d))};var x=v.duplicateCells;v.duplicateCells=function(a,c){a=null!=a?a:this.getSelectionCells();for(var d=a.slice(0),f=0;f<d.length;f++){var g=v.view.getState(d[f]);if(null!=g&&b(g.cell))for(var h=v.getIncomingEdges(g.cell),g=0;g<h.length;g++)mxUtils.remove(h[g],a)}this.model.beginUpdate();try{var k=x.call(this,a,c);if(k.length== -a.length)for(f=0;f<a.length;f++)if(b(a[f])){var l=v.getIncomingEdges(k[f]),h=v.getIncomingEdges(a[f]);if(0==l.length&&0<h.length){var m=this.cloneCell(h[0]);this.addEdge(m,v.getDefaultParent(),this.model.getTerminal(h[0],!0),k[f])}}}finally{this.model.endUpdate()}return k};var z=v.moveCells;v.moveCells=function(a,c,d,f,g,h,k){var l=null;this.model.beginUpdate();try{var m=g,n=this.view.getState(g),p=null!=n?n.style:this.getCellStyle(g);if(null!=a&&b(g)&&"1"==mxUtils.getValue(p,"treeFolding","0")){for(var t= -0;t<a.length;t++)if(b(a[t])||v.model.isEdge(a[t])&&null==v.model.getTerminal(a[t],!0)){g=v.model.getParent(a[t]);break}if(null!=m&&g!=m&&null!=this.view.getState(a[0])){var q=v.getIncomingEdges(a[0]);if(0<q.length){var u=v.view.getState(v.model.getTerminal(q[0],!0));if(null!=u){var w=v.view.getState(m);null!=w&&(c=(w.getCenterX()-u.getCenterX())/v.view.scale,d=(w.getCenterY()-u.getCenterY())/v.view.scale)}}}}l=z.apply(this,arguments);if(null!=l&&null!=a&&l.length==a.length)for(t=0;t<l.length;t++)if(this.model.isEdge(l[t]))b(m)&& -0>mxUtils.indexOf(l,this.model.getTerminal(l[t],!0))&&this.model.setTerminal(l[t],m,!0);else if(b(a[t])&&(q=v.getIncomingEdges(a[t]),0<q.length))if(!f)b(m)&&0>mxUtils.indexOf(a,this.model.getTerminal(q[0],!0))&&this.model.setTerminal(q[0],m,!0);else if(0==v.getIncomingEdges(l[t]).length){n=m;if(null==n||n==v.model.getParent(a[t]))n=v.model.getTerminal(q[0],!0);f=this.cloneCell(q[0]);this.addEdge(f,v.getDefaultParent(),n,l[t])}}finally{this.model.endUpdate()}return l};if(null!=u.sidebar){var F=u.sidebar.dropAndConnect; -u.sidebar.dropAndConnect=function(a,c,d,f){var g=v.model,h=null;g.beginUpdate();try{if(h=F.apply(this,arguments),b(a))for(var k=0;k<h.length;k++)if(g.isEdge(h[k])&&null==g.getTerminal(h[k],!0)){g.setTerminal(h[k],a,!0);var l=v.getCellGeometry(h[k]);l.points=null;null!=l.getTerminalPoint(!0)&&l.setTerminalPoint(null,!0)}}finally{g.endUpdate()}return h}}var C={88:u.actions.get("selectChildren"),84:u.actions.get("selectSubtree"),80:u.actions.get("selectParent"),83:u.actions.get("selectSiblings")},B= -u.onKeyDown;u.onKeyDown=function(a){try{if(v.isEnabled()&&!v.isEditing()&&b(v.getSelectionCell())&&1==v.getSelectionCount()){var c=null;0<v.getIncomingEdges(v.getSelectionCell()).length&&(9==a.which?c=mxEvent.isShiftDown(a)?d(v.getSelectionCell()):g(v.getSelectionCell()):13==a.which&&(c=p(v.getSelectionCell(),!mxEvent.isShiftDown(a))));if(null!=c&&0<c.length)1==c.length&&v.model.isEdge(c[0])?v.setSelectionCell(v.model.getTerminal(c[0],!1)):v.setSelectionCell(c[c.length-1]),null!=u.hoverIcons&&u.hoverIcons.update(v.view.getState(v.getSelectionCell())), -v.startEditingAtCell(v.getSelectionCell()),mxEvent.consume(a);else if(mxEvent.isAltDown(a)&&mxEvent.isShiftDown(a)){var f=C[a.keyCode];null!=f&&(f.funct(a),mxEvent.consume(a))}else 37==a.keyCode?(q(v.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(a)):38==a.keyCode?(q(v.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(a)):39==a.keyCode?(q(v.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(a)):40==a.keyCode&&(q(v.getSelectionCell(),mxConstants.DIRECTION_SOUTH), -mxEvent.consume(a))}}catch(M){console.log("error",M)}mxEvent.isConsumed(a)||B.apply(this,arguments)};var H=v.connectVertex;v.connectVertex=function(a,c,f,h,k,l){var m=v.getIncomingEdges(a);return b(a)&&0<m.length?(f=t(a),h=f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST,k=c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST,f==c?g(a):h==k?d(a):p(a,c!=mxConstants.DIRECTION_NORTH&&c!=mxConstants.DIRECTION_WEST)):H.call(this,a,c,f,h,k,l)};v.getSubtree=function(a){var c=[a];b(a)&& -!f(a)&&v.traverse(a,!0,function(a,b){null!=b&&0>mxUtils.indexOf(c,b)&&c.push(b);0>mxUtils.indexOf(c,a)&&c.push(a);return!0});return c};var D=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){D.apply(this,arguments);b(this.state.cell)&&0<this.graph.getOutgoingEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(a),this.moveHandle.setAttribute("title","Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width= +0,this.mathEnabled=!1,this.connectionArrowsEnabled=!0);this.preferPageSize=this.pageBreaksVisible=this.pageVisible;this.fireEvent(new mxEventObject("viewStateChanged","state",b))}; +EditorUi.prototype.updatePageRoot=function(b){if(null==b.root){var c=this.editor.extractGraphModel(b.node);if(null!=c){b.graphModelNode=c;b.viewState=this.editor.graph.createViewState(c);var a=new mxCodec(c.ownerDocument);b.root=a.decode(c).root}else b.root=this.editor.graph.model.createRoot()}else null==b.viewState&&(null==b.graphModelNode&&(c=this.editor.extractGraphModel(b.node),null!=c&&(b.graphModelNode=c)),null!=b.graphModelNode&&(b.viewState=this.editor.graph.createViewState(b.graphModelNode))); +return b};EditorUi.prototype.selectPage=function(b,c,a){try{this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);c=null!=c?c:!1;this.editor.graph.isMouseDown=!1;this.editor.graph.reset();var e=this.editor.graph.model.createUndoableEdit();e.ignoreEdit=!0;var k=new SelectPage(this,b,a);k.execute();e.add(k);e.notify();this.editor.graph.tooltipHandler.hide();c||this.editor.graph.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}catch(f){this.handleError(f)}}; +EditorUi.prototype.selectNextPage=function(b){var c=this.currentPage;null!=c&&null!=this.pages&&(c=mxUtils.indexOf(this.pages,c),b?this.selectPage(this.pages[mxUtils.mod(c+1,this.pages.length)]):b||this.selectPage(this.pages[mxUtils.mod(c-1,this.pages.length)]))};EditorUi.prototype.insertPage=function(b,c){if(this.editor.graph.isEnabled()){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);b=null!=b?b:this.createPage();c=null!=c?c:this.pages.length;var a=new ChangePage(this,b,b,c);this.editor.graph.model.execute(a)}return b}; +EditorUi.prototype.createPage=function(b){var c=new DiagramPage(this.fileNode.ownerDocument.createElement("diagram"));c.setName(null!=b?b:this.createPageName());return c};EditorUi.prototype.createPageName=function(){for(var b={},c=0;c<this.pages.length;c++){var a=this.pages[c].getName();null!=a&&0<a.length&&(b[a]=a)}c=this.pages.length;do a=mxResources.get("pageWithNumber",[++c]);while(null!=b[a]);return a}; +EditorUi.prototype.removePage=function(b){try{var c=this.editor.graph,a=mxUtils.indexOf(this.pages,b);if(c.isEnabled()&&0<=a){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);c.model.beginUpdate();try{var e=this.currentPage;e==b&&1<this.pages.length?(a==this.pages.length-1?a--:a++,e=this.pages[a]):1>=this.pages.length&&(e=this.insertPage(),c.model.execute(new RenamePage(this,e,mxResources.get("pageWithNumber",[1]))));c.model.execute(new ChangePage(this,b,e))}finally{c.model.endUpdate()}}}catch(k){this.handleError(k)}return b}; +EditorUi.prototype.duplicatePage=function(b,c){var a=null;try{var e=this.editor.graph;if(e.isEnabled()){e.isEditing()&&e.stopEditing();var k=b.node.cloneNode(!1);k.removeAttribute("id");a=new DiagramPage(k);a.root=e.cloneCell(e.model.root);a.viewState=e.getViewState();a.viewState.scale=1;a.viewState.scrollLeft=null;a.viewState.scrollTop=null;a.viewState.currentRoot=null;a.viewState.defaultParent=null;a.setName(c);a=this.insertPage(a,mxUtils.indexOf(this.pages,b)+1)}}catch(f){this.handleError(f)}return a}; +EditorUi.prototype.renamePage=function(b){if(this.editor.graph.isEnabled()){var c=new FilenameDialog(this,b.getName(),mxResources.get("rename"),mxUtils.bind(this,function(a){null!=a&&0<a.length&&this.editor.graph.model.execute(new RenamePage(this,b,a))}),mxResources.get("rename"));this.showDialog(c.container,300,80,!0,!0);c.init()}return b};EditorUi.prototype.movePage=function(b,c){this.editor.graph.model.execute(new MovePage(this,b,c))}; +EditorUi.prototype.createTabContainer=function(){var b=document.createElement("div");b.style.backgroundColor="dark"==uiTheme?"#2a2a2a":"#dcdcdc";b.style.position="absolute";b.style.whiteSpace="nowrap";b.style.overflow="hidden";b.style.height="0px";return b}; +EditorUi.prototype.updateTabContainer=function(){if(null!=this.tabContainer&&null!=this.pages){var b=this.editor.graph,c=document.createElement("div");c.style.position="relative";c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";c.style.verticalAlign="top";c.style.height=this.tabContainer.style.height;c.style.whiteSpace="nowrap";c.style.overflow="hidden";c.style.fontSize="12px";c.style.marginLeft="30px";for(var a=this.editor.isChromelessView()?29:59,e=Math.min(140,Math.max(20,(this.tabContainer.clientWidth- +a)/this.pages.length)+1),k=null,f=0;f<this.pages.length;f++)mxUtils.bind(this,function(a,d){this.pages[a]==this.currentPage?(d.className="geActivePage",d.style.backgroundColor="dark"==uiTheme?"#2a2a2a":"#eeeeee",d.style.fontWeight="bold",d.style.borderTopStyle="none"):d.className="geInactivePage";d.setAttribute("draggable","true");mxEvent.addListener(d,"dragstart",mxUtils.bind(this,function(c){b.isEnabled()?(mxClient.IS_FF&&c.dataTransfer.setData("Text","<diagram/>"),k=a):mxEvent.consume(c)}));mxEvent.addListener(d, +"dragend",mxUtils.bind(this,function(a){k=null;a.stopPropagation();a.preventDefault()}));mxEvent.addListener(d,"dragover",mxUtils.bind(this,function(a){null!=k&&(a.dataTransfer.dropEffect="move");a.stopPropagation();a.preventDefault()}));mxEvent.addListener(d,"drop",mxUtils.bind(this,function(b){null!=k&&a!=k&&this.movePage(k,a);b.stopPropagation();b.preventDefault()}));c.appendChild(d)})(f,this.createTabForPage(this.pages[f],e,this.pages[f]!=this.currentPage));this.tabContainer.innerHTML="";this.tabContainer.appendChild(c); +e=this.createPageMenuTab();this.tabContainer.appendChild(e);e=null;this.isPageInsertTabVisible()&&(e=this.createPageInsertTab(),this.tabContainer.appendChild(e));if(c.clientWidth>this.tabContainer.clientWidth-a){null!=e&&(e.style.position="absolute",e.style.right="0px",c.style.marginRight="30px");var l=this.createControlTab(4," ❮ ");l.style.position="absolute";l.style.right=this.editor.chromeless?"29px":"55px";l.style.fontSize="13pt";this.tabContainer.appendChild(l);var q=this.createControlTab(4, +" ❯");q.style.position="absolute";q.style.right=this.editor.chromeless?"0px":"29px";q.style.fontSize="13pt";this.tabContainer.appendChild(q);var p=Math.max(0,this.tabContainer.clientWidth-(this.editor.chromeless?86:116));c.style.width=p+"px";mxEvent.addListener(l,"click",mxUtils.bind(this,function(a){c.scrollLeft-=Math.max(20,p-20);mxUtils.setOpacity(l,0<c.scrollLeft?100:50);mxUtils.setOpacity(q,c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.consume(a)}));mxUtils.setOpacity(l, +0<c.scrollLeft?100:50);mxUtils.setOpacity(q,c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.addListener(q,"click",mxUtils.bind(this,function(a){c.scrollLeft+=Math.max(20,p-20);mxUtils.setOpacity(l,0<c.scrollLeft?100:50);mxUtils.setOpacity(q,c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.consume(a)}))}}};EditorUi.prototype.isPageInsertTabVisible=function(){return 1==urlParams.embed||null!=this.getCurrentFile()&&this.getCurrentFile().isEditable()}; +EditorUi.prototype.createTab=function(b){var c=document.createElement("div");c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";c.style.whiteSpace="nowrap";c.style.boxSizing="border-box";c.style.position="relative";c.style.overflow="hidden";c.style.marginLeft="-1px";c.style.height=this.tabContainer.clientHeight+"px";c.style.padding="8px 4px 8px 4px";c.style.border="dark"==uiTheme?"1px solid #505759":"1px solid #c0c0c0";c.style.borderBottomStyle="solid";c.style.backgroundColor=this.tabContainer.style.backgroundColor; +c.style.cursor="move";c.style.color="gray";b&&(mxEvent.addListener(c,"mouseenter",mxUtils.bind(this,function(a){this.editor.graph.isMouseDown||(c.style.backgroundColor="dark"==uiTheme?"black":"#d3d3d3",mxEvent.consume(a))})),mxEvent.addListener(c,"mouseleave",mxUtils.bind(this,function(a){c.style.backgroundColor=this.tabContainer.style.backgroundColor;mxEvent.consume(a)})));return c}; +EditorUi.prototype.createControlTab=function(b,c){var a=this.createTab(!0);a.style.paddingTop=b+"px";a.style.cursor="pointer";a.style.width="30px";a.style.lineHeight="30px";a.innerHTML=c;null!=a.firstChild&&null!=a.firstChild.style&&mxUtils.setOpacity(a.firstChild,40);return a}; +EditorUi.prototype.createPageMenuTab=function(){var b=this.createControlTab(3,'<div class="geSprite geSprite-dots" style="display:inline-block;width:21px;height:21px;"></div>');b.setAttribute("title",mxResources.get("pages"));b.style.position="absolute";b.style.top="0px";b.style.left="1px";mxEvent.addListener(b,"click",mxUtils.bind(this,function(b){this.editor.graph.popupMenuHandler.hideMenu();var a=new mxPopupMenu(mxUtils.bind(this,function(a,b){for(var c=0;c<this.pages.length;c++)mxUtils.bind(this, +function(c){var d=a.addItem(this.pages[c].getName(),null,mxUtils.bind(this,function(){this.selectPage(this.pages[c])}),b);this.pages[c]==this.currentPage&&a.addCheckmark(d,Editor.checkmarkImage)})(c);if(this.editor.graph.isEnabled()){a.addSeparator(b);a.addItem(mxResources.get("insertPage"),null,mxUtils.bind(this,function(){this.insertPage()}),b);var e=this.currentPage;null!=e&&(a.addSeparator(b),a.addItem(mxResources.get("delete"),null,mxUtils.bind(this,function(){this.removePage(e)}),b),a.addItem(mxResources.get("rename"), +null,mxUtils.bind(this,function(){this.renamePage(e,e.getName())}),b),a.addSeparator(b),a.addItem(mxResources.get("duplicate"),null,mxUtils.bind(this,function(){this.duplicatePage(e,mxResources.get("copyOf",[e.getName()]))}),b))}}));a.div.className+=" geMenubarMenu";a.smartSeparators=!0;a.showDisabled=!0;a.autoExpand=!0;a.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(a,arguments);a.destroy()});var c=mxEvent.getClientX(b),k=mxEvent.getClientY(b);a.popup(c,k,null,b);this.setCurrentMenu(a); +mxEvent.consume(b)}));return b};EditorUi.prototype.createPageInsertTab=function(){var b=this.createControlTab(4,'<div class="geSprite geSprite-plus" style="display:inline-block;width:21px;height:21px;"></div>');b.setAttribute("title",mxResources.get("insertPage"));mxEvent.addListener(b,"click",mxUtils.bind(this,function(b){this.insertPage();mxEvent.consume(b)}));return b}; +EditorUi.prototype.createTabForPage=function(b,c,a){a=this.createTab(a);var e=b.getName()||mxResources.get("untitled"),k=b.getId();a.setAttribute("title",e+(null!=k?" ("+k+")":""));mxUtils.write(a,e);a.style.maxWidth=c+"px";a.style.width=c+"px";this.addTabListeners(b,a);42<c&&(a.style.textOverflow="ellipsis");return a}; +EditorUi.prototype.addTabListeners=function(b,c){mxEvent.disableContextMenu(c);var a=this.editor.graph;mxEvent.addListener(c,"dblclick",mxUtils.bind(this,function(a){this.renamePage(b);mxEvent.consume(a)}));var e=!1,k=!1;mxEvent.addGestureListeners(c,mxUtils.bind(this,function(c){e=null!=this.currentMenu;k=b==this.currentPage;a.isMouseDown||k||this.selectPage(b)}),null,mxUtils.bind(this,function(f){if(a.isEnabled()&&!a.isMouseDown&&(mxEvent.isTouchEvent(f)&&k||mxEvent.isPopupTrigger(f))){a.popupMenuHandler.hideMenu(); +this.hideCurrentMenu();if(!mxEvent.isTouchEvent(f)||!e){var l=new mxPopupMenu(this.createPageMenu(b));l.div.className+=" geMenubarMenu";l.smartSeparators=!0;l.showDisabled=!0;l.autoExpand=!0;l.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(l,arguments);this.resetCurrentMenu();l.destroy()});var q=mxEvent.getClientX(f),p=mxEvent.getClientY(f);l.popup(q,p,null,f);this.setCurrentMenu(l,c)}mxEvent.consume(f)}}))}; +EditorUi.prototype.createPageMenu=function(b,c){return mxUtils.bind(this,function(a,e){a.addItem(mxResources.get("insert"),null,mxUtils.bind(this,function(){this.insertPage(null,mxUtils.indexOf(this.pages,b)+1)}),e);a.addItem(mxResources.get("delete"),null,mxUtils.bind(this,function(){this.removePage(b)}),e);a.addItem(mxResources.get("rename"),null,mxUtils.bind(this,function(){this.renamePage(b,c)}),e);a.addSeparator(e);a.addItem(mxResources.get("duplicate"),null,mxUtils.bind(this,function(){this.duplicatePage(b, +mxResources.get("copyOf",[b.getName()]))}),e)})};(function(){var b=EditorUi.prototype.refresh;EditorUi.prototype.refresh=function(c){b.apply(this,arguments);this.updateTabContainer()}})();(function(){mxCodecRegistry.getCodec(ChangePageSetup).exclude.push("page")})();(function(){var b=new mxObjectCodec(new MovePage,["ui"]);b.beforeDecode=function(b,a,e){e.ui=b.ui;return a};b.afterDecode=function(b,a,e){b=e.oldIndex;e.oldIndex=e.newIndex;e.newIndex=b;return e};mxCodecRegistry.register(b)})(); +(function(){var b=new mxObjectCodec(new RenamePage,["ui","page"]);b.beforeDecode=function(b,a,e){e.ui=b.ui;return a};b.afterDecode=function(b,a,e){b=e.previous;e.previous=e.name;e.name=b;return e};mxCodecRegistry.register(b)})(); +(function(){var b=new mxObjectCodec(new ChangePage,"ui relatedPage index neverShown page previousPage".split(" ")),c="defaultParent currentRoot scrollLeft scrollTop scale translate lastPasteXml pasteCounter".split(" ");b.afterEncode=function(a,b,k){k.setAttribute("relatedPage",b.relatedPage.getId());null==b.index&&(k.setAttribute("name",b.relatedPage.getName()),null!=b.relatedPage.viewState&&k.setAttribute("viewState",JSON.stringify(b.relatedPage.viewState,function(a,b){return 0>mxUtils.indexOf(c, +a)?b:void 0})),null!=b.relatedPage.root&&a.encodeCell(b.relatedPage.root,k));return k};b.beforeDecode=function(a,b,c){c.ui=a.ui;c.relatedPage=c.ui.getPageById(b.getAttribute("relatedPage"));if(null==c.relatedPage){var e=b.ownerDocument.createElement("diagram");e.setAttribute("id",b.getAttribute("relatedPage"));e.setAttribute("name",b.getAttribute("name"));c.relatedPage=new DiagramPage(e);e=b.getAttribute("viewState");null!=e&&(c.relatedPage.viewState=JSON.parse(e),b.removeAttribute("viewState")); +b=b.cloneNode(!0);e=b.firstChild;if(null!=e)for(c.relatedPage.root=a.decodeCell(e,!1),c=e.nextSibling,e.parentNode.removeChild(e),e=c;null!=e;){c=e.nextSibling;if(e.nodeType==mxConstants.NODETYPE_ELEMENT){var k=e.getAttribute("id");null==a.lookup(k)&&a.decodeCell(e)}e.parentNode.removeChild(e);e=c}}return b};b.afterDecode=function(a,b,c){c.index=c.previousIndex;return c};mxCodecRegistry.register(b)})();(function(){var b=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAASFBMVEUAAAAAAAB/f3/9/f319fUfHx/7+/s+Pj69vb0AAAAAAAAAAAAAAAAAAAAAAAAAAAB2dnZ1dXUAAAAAAAAVFRX///8ZGRkGBgbOcI1hAAAAE3RSTlMA+vr9/f38+fb1893Bo00u+/tFvPJUBQAAAIRJREFUGNM0jEcSxCAQAxlydGqD///TNWxZBx1aXVIrWysplbapL3sFxgDq/idXBnHgBPK1nIxwc55vCXl6dRFtrV6svs/A/UjsPcpzA5tqyByD92HqQlMFh45BG6ND1DiKSoPDdm96N77bg5F+wyaEqRGb8ZiOwHQqdg9hehszcLAEIQB2lQ4p/sEpnAAAAABJRU5ErkJggg==":IMAGE_PATH+"/move.png";EditorUi.prototype.altShiftActions[68]= +"selectDescendants";var c=Graph.prototype.foldCells;Graph.prototype.foldCells=function(a,b,e,q,p){b=null!=b?b:!1;null==e&&(e=this.getFoldableCells(this.getSelectionCells(),a));this.stopEditing();this.model.beginUpdate();try{for(var f=e.slice(),d=[],g=0;g<e.length;g++){var k=this.view.getState(e[g]),l=null!=k?k.style:this.getCellStyle(e[g]);"1"==mxUtils.getValue(l,"treeFolding","0")&&(this.traverse(e[g],!0,mxUtils.bind(this,function(a,b){null!=b&&d.push(b);a!=e[g]&&d.push(a);return a==e[g]||!this.model.isCollapsed(a)})), +this.model.setCollapsed(e[g],a))}for(g=0;g<d.length;g++)this.model.setVisible(d[g],!a);e=f;e=c.apply(this,arguments)}finally{this.model.endUpdate()}return e};var a=EditorUi.prototype.init;EditorUi.prototype.init=function(){a.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function a(a){return y.isVertex(a)&&c(a)}function c(a){var b=!1;null!=a&&(a=y.getParent(a),b=t.view.getState(a),t.view.getState(a),b="tree"==(null!= +b?b.style:t.getCellStyle(a)).containerType);return b}function e(a){var b=!1;null!=a&&(a=y.getParent(a),b=t.view.getState(a),t.view.getState(a),b=null!=(null!=b?b.style:t.getCellStyle(a)).childLayout);return b}function q(a){a=t.view.getState(a);if(null!=a){var b=t.getIncomingEdges(a.cell);if(0<b.length&&(b=t.view.getState(b[0]),null!=b&&(b=b.absolutePoints,null!=b&&0<b.length&&(b=b[b.length-1],null!=b)))){if(b.y==a.y&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_SOUTH;if(b.y== +a.y+a.height&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_NORTH;if(b.x>a.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function p(a,b){b=null!=b?b:!0;t.model.beginUpdate();try{var c=t.model.getParent(a),d=t.getIncomingEdges(a),e=t.cloneCells([d[0],a]);t.model.setTerminal(e[0],t.model.getTerminal(d[0],!0),!0);var f=q(a),g=c.geometry;f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH?e[1].geometry.x+=b?a.geometry.width+10:-e[1].geometry.width- +10:e[1].geometry.y+=b?a.geometry.height+10:-e[1].geometry.height-10;t.view.currentRoot!=c&&(e[1].geometry.x-=g.x,e[1].geometry.y-=g.y);var k=t.view.getState(a),l=t.view.scale;if(null!=k){var m=mxRectangle.fromRectangle(k);f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH?m.x+=(b?a.geometry.width+10:-e[1].geometry.width-10)*l:m.y+=(b?a.geometry.height+10:-e[1].geometry.height-10)*l;var n=t.getOutgoingEdges(t.model.getTerminal(d[0],!0));if(null!=n){for(var p=f==mxConstants.DIRECTION_SOUTH|| +f==mxConstants.DIRECTION_NORTH,u=g=d=0;u<n.length;u++){var y=t.model.getTerminal(n[u],!1);if(f==q(y)){var x=t.view.getState(y);y!=a&&null!=x&&(p&&b!=x.getCenterX()<k.getCenterX()||!p&&b!=x.getCenterY()<k.getCenterY())&&mxUtils.intersects(m,x)&&(d=10+Math.max(d,(Math.min(m.x+m.width,x.x+x.width)-Math.max(m.x,x.x))/l),g=10+Math.max(g,(Math.min(m.y+m.height,x.y+x.height)-Math.max(m.y,x.y))/l))}}p?g=0:d=0;for(u=0;u<n.length;u++)if(y=t.model.getTerminal(n[u],!1),f==q(y)&&(x=t.view.getState(y),y!=a&&null!= +x&&(p&&b!=x.getCenterX()<k.getCenterX()||!p&&b!=x.getCenterY()<k.getCenterY()))){var v=[];t.traverse(x.cell,!0,function(a,b){null!=b&&v.push(b);v.push(a);return!0});t.moveCells(v,(b?1:-1)*d,(b?1:-1)*g)}}}return t.addCells(e,c)}finally{t.model.endUpdate()}}function u(a){t.model.beginUpdate();try{var b=q(a),c=t.getIncomingEdges(a),d=t.cloneCells([c[0],a]);t.model.setTerminal(c[0],d[1],!1);t.model.setTerminal(d[0],d[1],!0);t.model.setTerminal(d[0],a,!1);var e=t.model.getParent(a),f=e.geometry,g=[];t.view.currentRoot!= +e&&(d[1].geometry.x-=f.x,d[1].geometry.y-=f.y);t.traverse(a,!0,function(a,b){null!=b&&g.push(b);g.push(a);return!0});var k=a.geometry.width+40,l=a.geometry.height+40;b==mxConstants.DIRECTION_SOUTH?k=0:b==mxConstants.DIRECTION_NORTH?(k=0,l=-40):b==mxConstants.DIRECTION_WEST?(k=-40,l=0):b==mxConstants.DIRECTION_EAST&&(l=0);t.moveCells(g,k,l);return t.addCells(d,e)}finally{t.model.endUpdate()}}function d(a){t.model.beginUpdate();try{var b=t.model.getParent(a),c=t.getIncomingEdges(a),d=t.cloneCells([c[0], +a]);t.model.setTerminal(d[0],a,!0);var c=t.getOutgoingEdges(a),e=b.geometry,f=[];t.view.currentRoot==b&&(e=new mxRectangle);for(var g=0;g<c.length;g++){var k=t.model.getTerminal(c[g],!1);null!=k&&f.push(k)}var l=t.view.getBounds(f),m=q(a),n=t.view.translate,p=t.view.scale;m==mxConstants.DIRECTION_SOUTH?(d[1].geometry.x=null==l?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(l.x+l.width)/p-n.x-e.x+10,d[1].geometry.y+=a.geometry.height-e.y+40):m==mxConstants.DIRECTION_NORTH?(d[1].geometry.x= +null==l?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(l.x+l.width)/p-n.x+-e.x+10,d[1].geometry.y-=d[1].geometry.height-e.y+40):(d[1].geometry.x=m==mxConstants.DIRECTION_WEST?d[1].geometry.x-(d[1].geometry.width-e.x+40):d[1].geometry.x+(a.geometry.width-e.x+40),d[1].geometry.y=null==l?a.geometry.y+(a.geometry.height-d[1].geometry.height)/2:(l.y+l.height)/p-n.y+-e.y+10);return t.addCells(d,b)}finally{t.model.endUpdate()}}function g(a,b,c){a=t.getOutgoingEdges(a);c=t.view.getState(c);var d= +[];if(null!=c&&null!=a){for(var e=0;e<a.length;e++){var f=t.view.getState(t.model.getTerminal(a[e],!1));null!=f&&(!b&&Math.min(f.x+f.width,c.x+c.width)>=Math.max(f.x,c.x)||b&&Math.min(f.y+f.height,c.y+c.height)>=Math.max(f.y,c.y))&&d.push(f)}d.sort(function(a,c){return b?a.x+a.width-c.x-c.width:a.y+a.height-c.y-c.height})}return d}function m(a,b){var c=q(a),d=b==mxConstants.DIRECTION_EAST||b==mxConstants.DIRECTION_WEST;(c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST)==d&&c!=b?v.actions.get("selectParent").funct(): +c==b?(d=t.getOutgoingEdges(a),null!=d&&0<d.length&&t.setSelectionCell(t.model.getTerminal(d[0],!1))):(c=t.getIncomingEdges(a),null!=c&&0<c.length&&(d=g(t.model.getTerminal(c[0],!0),d,a),c=t.view.getState(a),null!=c&&(c=mxUtils.indexOf(d,c),0<=c&&(c+=b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_WEST?-1:1,0<=c&&c<=d.length-1&&t.setSelectionCell(d[c].cell)))))}var v=this,t=v.editor.graph,y=t.getModel();mxResources.parse("selectChildren=Select Children");mxResources.parse("selectSiblings=Select Siblings"); +mxResources.parse("selectDescendants=Select Descendants");mxResources.parse("selectParent=Select Parent");var B=v.menus.createPopupMenu;v.menus.createPopupMenu=function(b,c,d){B.apply(this,arguments);if(1==t.getSelectionCount()){c=t.getSelectionCell();var e=t.getOutgoingEdges(c);b.addSeparator();null!=e&&0<e.length&&(a(t.getSelectionCell())&&this.addMenuItems(b,["selectChildren"],null,d),this.addMenuItems(b,["selectDescendants"],null,d));a(t.getSelectionCell())&&(b.addSeparator(),0<t.getIncomingEdges(c).length&& +this.addMenuItems(b,["selectSiblings","selectParent"],null,d))}};v.actions.addAction("selectChildren",function(){if(t.isEnabled()&&1==t.getSelectionCount()){var a=t.getSelectionCell(),a=t.getOutgoingEdges(a);if(null!=a){for(var b=[],c=0;c<a.length;c++)b.push(t.model.getTerminal(a[c],!1));t.setSelectionCells(b)}}},null,null,"Alt+Shift+X");v.actions.addAction("selectSiblings",function(){if(t.isEnabled()&&1==t.getSelectionCount()){var a=t.getSelectionCell(),a=t.getIncomingEdges(a);if(null!=a&&0<a.length&& +(a=t.getOutgoingEdges(t.model.getTerminal(a[0],!0)),null!=a)){for(var b=[],c=0;c<a.length;c++)b.push(t.model.getTerminal(a[c],!1));t.setSelectionCells(b)}}},null,null,"Alt+Shift+S");v.actions.addAction("selectParent",function(){if(t.isEnabled()&&1==t.getSelectionCount()){var a=t.getSelectionCell(),a=t.getIncomingEdges(a);null!=a&&0<a.length&&t.setSelectionCell(t.model.getTerminal(a[0],!0))}},null,null,"Alt+Shift+P");v.actions.addAction("selectDescendants",function(){if(t.isEnabled()&&1==t.getSelectionCount()){var a= +t.getSelectionCell(),b=[];t.traverse(a,!0,function(a,c){null!=c&&b.push(c);b.push(a);return!0});t.setSelectionCells(b)}},null,null,"Alt+Shift+D");var n=t.removeCells;t.removeCells=function(b,d){d=null!=d?d:!0;null==b&&(b=this.getDeletableCells(this.getSelectionCells()));d&&(b=this.getDeletableCells(this.addAllEdges(b)));for(var e=[],f=0;f<b.length;f++){var g=b[f];y.isEdge(g)&&c(g)&&(e.push(g),g=y.getTerminal(g,!1));a(g)?(t.traverse(g,!0,function(a,b){null!=b&&e.push(b);e.push(a);return!0}),g=t.getIncomingEdges(b[f]), +b=b.concat(g)):e.push(b[f])}b=e;return n.apply(this,arguments)};v.hoverIcons.getStateAt=function(b,c,d){return a(b.cell)?null:this.graph.view.getState(this.graph.getCellAt(c,d))};var x=t.duplicateCells;t.duplicateCells=function(b,c){b=null!=b?b:this.getSelectionCells();for(var d=b.slice(0),e=0;e<d.length;e++){var f=t.view.getState(d[e]);if(null!=f&&a(f.cell))for(var g=t.getIncomingEdges(f.cell),f=0;f<g.length;f++)mxUtils.remove(g[f],b)}this.model.beginUpdate();try{var k=x.call(this,b,c);if(k.length== +b.length)for(e=0;e<b.length;e++)if(a(b[e])){var l=t.getIncomingEdges(k[e]),g=t.getIncomingEdges(b[e]);if(0==l.length&&0<g.length){var m=this.cloneCell(g[0]);this.addEdge(m,t.getDefaultParent(),this.model.getTerminal(g[0],!0),k[e])}}}finally{this.model.endUpdate()}return k};var z=t.moveCells;t.moveCells=function(b,c,d,e,f,g,k){var l=null;this.model.beginUpdate();try{var m=f,n=this.view.getState(f),q=null!=n?n.style:this.getCellStyle(f);if(null!=b&&a(f)&&"1"==mxUtils.getValue(q,"treeFolding","0")){for(var p= +0;p<b.length;p++)if(a(b[p])||t.model.isEdge(b[p])&&null==t.model.getTerminal(b[p],!0)){f=t.model.getParent(b[p]);break}if(null!=m&&f!=m&&null!=this.view.getState(b[0])){var u=t.getIncomingEdges(b[0]);if(0<u.length){var y=t.view.getState(t.model.getTerminal(u[0],!0));if(null!=y){var x=t.view.getState(m);null!=x&&(c=(x.getCenterX()-y.getCenterX())/t.view.scale,d=(x.getCenterY()-y.getCenterY())/t.view.scale)}}}}l=z.apply(this,arguments);if(null!=l&&null!=b&&l.length==b.length)for(p=0;p<l.length;p++)if(this.model.isEdge(l[p]))a(m)&& +0>mxUtils.indexOf(l,this.model.getTerminal(l[p],!0))&&this.model.setTerminal(l[p],m,!0);else if(a(b[p])&&(u=t.getIncomingEdges(b[p]),0<u.length))if(!e)a(m)&&0>mxUtils.indexOf(b,this.model.getTerminal(u[0],!0))&&this.model.setTerminal(u[0],m,!0);else if(0==t.getIncomingEdges(l[p]).length){n=m;if(null==n||n==t.model.getParent(b[p]))n=t.model.getTerminal(u[0],!0);e=this.cloneCell(u[0]);this.addEdge(e,t.getDefaultParent(),n,l[p])}}finally{this.model.endUpdate()}return l};if(null!=v.sidebar){var A=v.sidebar.dropAndConnect; +v.sidebar.dropAndConnect=function(b,c,d,e){var f=t.model,g=null;f.beginUpdate();try{if(g=A.apply(this,arguments),a(b))for(var k=0;k<g.length;k++)if(f.isEdge(g[k])&&null==f.getTerminal(g[k],!0)){f.setTerminal(g[k],b,!0);var l=t.getCellGeometry(g[k]);l.points=null;null!=l.getTerminalPoint(!0)&&l.setTerminalPoint(null,!0)}}finally{f.endUpdate()}return g}}var F={88:v.actions.get("selectChildren"),84:v.actions.get("selectSubtree"),80:v.actions.get("selectParent"),83:v.actions.get("selectSiblings")},E= +v.onKeyDown;v.onKeyDown=function(b){try{if(t.isEnabled()&&!t.isEditing()&&a(t.getSelectionCell())&&1==t.getSelectionCount()){var c=null;0<t.getIncomingEdges(t.getSelectionCell()).length&&(9==b.which?c=mxEvent.isShiftDown(b)?u(t.getSelectionCell()):d(t.getSelectionCell()):13==b.which&&(c=p(t.getSelectionCell(),!mxEvent.isShiftDown(b))));if(null!=c&&0<c.length)1==c.length&&t.model.isEdge(c[0])?t.setSelectionCell(t.model.getTerminal(c[0],!1)):t.setSelectionCell(c[c.length-1]),null!=v.hoverIcons&&v.hoverIcons.update(t.view.getState(t.getSelectionCell())), +t.startEditingAtCell(t.getSelectionCell()),mxEvent.consume(b);else if(mxEvent.isAltDown(b)&&mxEvent.isShiftDown(b)){var e=F[b.keyCode];null!=e&&(e.funct(b),mxEvent.consume(b))}else 37==b.keyCode?(m(t.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(b)):38==b.keyCode?(m(t.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(b)):39==b.keyCode?(m(t.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(b)):40==b.keyCode&&(m(t.getSelectionCell(),mxConstants.DIRECTION_SOUTH), +mxEvent.consume(b))}}catch(M){console.log("error",M)}mxEvent.isConsumed(b)||E.apply(this,arguments)};var G=t.connectVertex;t.connectVertex=function(b,c,e,f,g,k){var l=t.getIncomingEdges(b);return a(b)&&0<l.length?(e=q(b),f=e==mxConstants.DIRECTION_EAST||e==mxConstants.DIRECTION_WEST,g=c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST,e==c?d(b):f==g?u(b):p(b,c!=mxConstants.DIRECTION_NORTH&&c!=mxConstants.DIRECTION_WEST)):G.call(this,b,c,e,f,g,k)};t.getSubtree=function(b){var c=[b];a(b)&& +!e(b)&&t.traverse(b,!0,function(a,b){null!=b&&0>mxUtils.indexOf(c,b)&&c.push(b);0>mxUtils.indexOf(c,a)&&c.push(a);return!0});return c};var H=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){H.apply(this,arguments);a(this.state.cell)&&0<this.graph.getOutgoingEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(b),this.moveHandle.setAttribute("title","Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width= "18px",this.moveHandle.style.height="18px",this.graph.container.appendChild(this.moveHandle),mxEvent.addGestureListeners(this.moveHandle,mxUtils.bind(this,function(a){this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(a),mxEvent.getClientY(a));this.graph.graphHandler.cells=this.graph.getSubtree(this.state.cell);this.graph.graphHandler.bounds=this.state.view.getBounds(this.graph.graphHandler.cells);this.graph.graphHandler.pBounds=this.graph.graphHandler.getPreviewBounds(this.graph.graphHandler.cells); -this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(a);this.graph.isMouseDown=!0;mxEvent.consume(a)})))};var E=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){E.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.left=this.state.x+this.state.width+(40>this.state.width?10:0)+2+"px",this.moveHandle.style.top=this.state.y+this.state.height+(40>this.state.height?10:0)+2+"px")};var I=mxVertexHandler.prototype.destroy; -mxVertexHandler.prototype.destroy=function(a,b){I.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.parentNode.removeChild(this.moveHandle),this.moveHandle=null)}};if("undefined"!==typeof Sidebar){var f=Sidebar.prototype.createAdvancedShapes;Sidebar.prototype.createAdvancedShapes=function(){var a=f.apply(this,arguments),b=this.graph;return a.concat([this.addEntry("tree container",function(){var a=new mxCell("Tree Container",new mxGeometry(0,0,220,160),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;"); +this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(a);this.graph.isMouseDown=!0;mxEvent.consume(a)})))};var D=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){D.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.left=this.state.x+this.state.width+(40>this.state.width?10:0)+2+"px",this.moveHandle.style.top=this.state.y+this.state.height+(40>this.state.height?10:0)+2+"px")};var K=mxVertexHandler.prototype.destroy; +mxVertexHandler.prototype.destroy=function(a,b){K.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.parentNode.removeChild(this.moveHandle),this.moveHandle=null)}};if("undefined"!==typeof Sidebar){var e=Sidebar.prototype.createAdvancedShapes;Sidebar.prototype.createAdvancedShapes=function(){var a=e.apply(this,arguments),b=this.graph;return a.concat([this.addEntry("tree container",function(){var a=new mxCell("Tree Container",new mxGeometry(0,0,220,160),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;"); a.vertex=!0;return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap central idea branch topic",function(){var a=new mxCell("Mindmap",new mxGeometry(0,0,420,126),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");a.vertex=!0;var b=new mxCell("Central Idea",new mxGeometry(160,60,100,40),"ellipse;whiteSpace=wrap;html=1;align=center;container=1;recursiveResize=0;treeFolding=1;");b.vertex=!0;var c=new mxCell("Topic",new mxGeometry(320, -40,80,20),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;");c.vertex=!0;var d=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");d.geometry.relative=!0;d.edge=!0;b.insertEdge(d,!0);c.insertEdge(d,!1);var f=new mxCell("Branch",new mxGeometry(320,80,72,26),"whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;"); -f.vertex=!0;var h=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");h.geometry.relative=!0;h.edge=!0;b.insertEdge(h,!0);f.insertEdge(h,!1);var k=new mxCell("Topic",new mxGeometry(20,40,80,20),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;");k.vertex=!0;var u=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;"); -u.geometry.relative=!0;u.edge=!0;b.insertEdge(u,!0);k.insertEdge(u,!1);var v=new mxCell("Branch",new mxGeometry(20,80,72,26),"whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;");v.vertex=!0;var w=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;"); -w.geometry.relative=!0;w.edge=!0;b.insertEdge(w,!0);v.insertEdge(w,!1);a.insert(d);a.insert(h);a.insert(u);a.insert(w);a.insert(b);a.insert(c);a.insert(f);a.insert(k);a.insert(v);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap central idea",function(){var a=new mxCell("Central Idea",new mxGeometry(0,0,100,40),"ellipse;whiteSpace=wrap;html=1;align=center;container=1;recursiveResize=0;treeFolding=1;");a.vertex=!0;return sb.createVertexTemplateFromCells([a], +40,80,20),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;");c.vertex=!0;var e=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");e.geometry.relative=!0;e.edge=!0;b.insertEdge(e,!0);c.insertEdge(e,!1);var d=new mxCell("Branch",new mxGeometry(320,80,72,26),"whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;"); +d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");f.geometry.relative=!0;f.edge=!0;b.insertEdge(f,!0);d.insertEdge(f,!1);var k=new mxCell("Topic",new mxGeometry(20,40,80,20),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;");k.vertex=!0;var v=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;"); +v.geometry.relative=!0;v.edge=!0;b.insertEdge(v,!0);k.insertEdge(v,!1);var t=new mxCell("Branch",new mxGeometry(20,80,72,26),"whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;");t.vertex=!0;var y=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;"); +y.geometry.relative=!0;y.edge=!0;b.insertEdge(y,!0);t.insertEdge(y,!1);a.insert(e);a.insert(f);a.insert(v);a.insert(y);a.insert(b);a.insert(c);a.insert(d);a.insert(k);a.insert(t);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap central idea",function(){var a=new mxCell("Central Idea",new mxGeometry(0,0,100,40),"ellipse;whiteSpace=wrap;html=1;align=center;container=1;recursiveResize=0;treeFolding=1;");a.vertex=!0;return sb.createVertexTemplateFromCells([a], a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap branch",function(){var a=new mxCell("Branch",new mxGeometry(0,0,80,20),"whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;");a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;"); b.geometry.setTerminalPoint(new mxPoint(-40,40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);return sb.createVertexTemplateFromCells([a,b],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap sub topic",function(){var a=new mxCell("Sub Topic",new mxGeometry(0,0,72,26),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;");a.vertex=!0;var b=new mxCell("",new mxGeometry(0, 0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");b.geometry.setTerminalPoint(new mxPoint(-40,40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);return sb.createVertexTemplateFromCells([a,b],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree orgchart organization division",function(){var a=new mxCell("Orgchart",new mxGeometry(0,0,280,220),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");a.vertex=!0;var c=new mxCell("Organization", -new mxGeometry(80,40,120,60),"whiteSpace=wrap;html=1;align=center;treeFolding=1;container=1;recursiveResize=0;");b.setAttributeForCell(c,"treeRoot","1");c.vertex=!0;var f=new mxCell("Division",new mxGeometry(20,140,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;");f.vertex=!0;var d=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");d.geometry.relative=!0;d.edge=!0; -c.insertEdge(d,!0);f.insertEdge(d,!1);var g=new mxCell("Division",new mxGeometry(160,140,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;");g.vertex=!0;var h=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");h.geometry.relative=!0;h.edge=!0;c.insertEdge(h,!0);g.insertEdge(h,!1);a.insert(d);a.insert(h);a.insert(c);a.insert(f);a.insert(g);return sb.createVertexTemplateFromCells([a], +new mxGeometry(80,40,120,60),"whiteSpace=wrap;html=1;align=center;treeFolding=1;container=1;recursiveResize=0;");b.setAttributeForCell(c,"treeRoot","1");c.vertex=!0;var e=new mxCell("Division",new mxGeometry(20,140,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;");e.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");f.geometry.relative=!0;f.edge=!0; +c.insertEdge(f,!0);e.insertEdge(f,!1);var d=new mxCell("Division",new mxGeometry(160,140,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;");d.vertex=!0;var g=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");g.geometry.relative=!0;g.edge=!0;c.insertEdge(g,!0);d.insertEdge(g,!1);a.insert(f);a.insert(g);a.insert(c);a.insert(e);a.insert(d);return sb.createVertexTemplateFromCells([a], a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree root",function(){var a=new mxCell("Organization",new mxGeometry(0,0,120,60),"whiteSpace=wrap;html=1;align=center;treeFolding=1;container=1;recursiveResize=0;");b.setAttributeForCell(a,"treeRoot","1");a.vertex=!0;return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree division",function(){var a=new mxCell("Division",new mxGeometry(20,40,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;"); a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");b.geometry.setTerminalPoint(new mxPoint(0,0),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);return sb.createVertexTemplateFromCells([a,b],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree sub sections",function(){var a=new mxCell("Sub Section",new mxGeometry(0,0,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;"); -a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");b.geometry.setTerminalPoint(new mxPoint(110,-40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);var c=new mxCell("Sub Section",new mxGeometry(120,0,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;");c.vertex=!0;var d=new mxCell("",new mxGeometry(0, -0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");d.geometry.setTerminalPoint(new mxPoint(110,-40),!0);d.geometry.relative=!0;d.edge=!0;c.insertEdge(d,!1);return sb.createVertexTemplateFromCells([b,d,a,c],220,60,"Sub Sections")})])}}})();EditorUi.initMinimalTheme=function(){function a(a){var b=a.editor.graph;b.popupMenuHandler.hideMenu();null==a.formatWindow?(a.formatWindow=new k(a,mxResources.get("format"),Math.max(20,a.diagramContainer.clientWidth-240-12),56,240,Math.min(566,b.container.clientHeight-10),function(b){b=a.createFormat(b);b.init();return b}),a.formatWindow.window.minimumSize=new mxRectangle(0,0,240,80),a.formatWindow.window.setVisible(!0)):a.formatWindow.window.setVisible(!a.formatWindow.window.isVisible());a.formatWindow.window.isVisible()&& -a.formatWindow.window.fit()}function c(a){var b=a.editor.graph;b.popupMenuHandler.hideMenu();new mxRectangle;if(null==a.sidebarWindow){var c=Math.min(b.container.clientWidth-10,266);a.sidebarWindow=new k(a,mxResources.get("shapes"),10,56,c-6,Math.min(650,b.container.clientHeight-30),function(b){function c(c,d){var g=a.menus.get(c),h=f.addMenu(d,mxUtils.bind(this,function(){g.funct.apply(this,arguments)}));h.style.cssText="position:absolute;border-top:1px solid lightgray;width:50%;height:24px;bottom:0px;text-align:center;cursor:pointer;padding:6px 0 0 0;cusor:pointer;"; -h.className="geTitle";b.appendChild(h);return h}var d=document.createElement("div");d.style.cssText="position:absolute;left:0;right:0;border-top:1px solid lightgray;height:24px;bottom:31px;text-align:center;cursor:pointer;padding:6px 0 0 0;";d.className="geTitle";d.innerHTML='<span style="font-size:18px;margin-right:5px;">+</span>';mxUtils.write(d,mxResources.get("moreShapes"));b.appendChild(d);mxEvent.addListener(d,"click",function(){a.actions.get("shapes").funct()});var f=new Menubar(a,b);if(!Editor.enableCustomLibraries|| -"1"==urlParams.embed&&"1"!=urlParams.libraries)d.style.bottom="0";else if(null!=a.actions.get("newLibrary")){d=document.createElement("div");d.style.cssText="position:absolute;left:0px;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;";d.className="geTitle";var g=document.createElement("span");g.style.cssText="position:relative;top:6px;";mxUtils.write(g,mxResources.get("newLibrary"));d.appendChild(g);b.appendChild(d);mxEvent.addListener(d, -"click",a.actions.get("newLibrary").funct);d=document.createElement("div");d.style.cssText="position:absolute;left:50%;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;border-left: 1px solid lightgray;";d.className="geTitle";g=document.createElement("span");g.style.cssText="position:relative;top:6px;";mxUtils.write(g,mxResources.get("openLibrary"));d.appendChild(g);b.appendChild(d);mxEvent.addListener(d,"click",a.actions.get("openLibrary").funct)}else d= +a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");b.geometry.setTerminalPoint(new mxPoint(110,-40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);var c=new mxCell("Sub Section",new mxGeometry(120,0,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;");c.vertex=!0;var e=new mxCell("",new mxGeometry(0, +0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");e.geometry.setTerminalPoint(new mxPoint(110,-40),!0);e.geometry.relative=!0;e.edge=!0;c.insertEdge(e,!1);return sb.createVertexTemplateFromCells([b,e,a,c],220,60,"Sub Sections")})])}}})();EditorUi.initMinimalTheme=function(){function b(a){var b=a.editor.graph;b.popupMenuHandler.hideMenu();null==a.formatWindow?(a.formatWindow=new k(a,mxResources.get("format"),Math.max(20,a.diagramContainer.clientWidth-240-12),56,240,Math.min(566,b.container.clientHeight-10),function(b){b=a.createFormat(b);b.init();return b}),a.formatWindow.window.minimumSize=new mxRectangle(0,0,240,80),a.formatWindow.window.setVisible(!0)):a.formatWindow.window.setVisible(!a.formatWindow.window.isVisible());a.formatWindow.window.isVisible()&& +a.formatWindow.window.fit()}function c(a){var b=a.editor.graph;b.popupMenuHandler.hideMenu();new mxRectangle;if(null==a.sidebarWindow){var c=Math.min(b.container.clientWidth-10,266);a.sidebarWindow=new k(a,mxResources.get("shapes"),10,56,c-6,Math.min(650,b.container.clientHeight-30),function(b){function c(c,d){var f=a.menus.get(c),g=e.addMenu(d,mxUtils.bind(this,function(){f.funct.apply(this,arguments)}));g.style.cssText="position:absolute;border-top:1px solid lightgray;width:50%;height:24px;bottom:0px;text-align:center;cursor:pointer;padding:6px 0 0 0;cusor:pointer;"; +g.className="geTitle";b.appendChild(g);return g}var d=document.createElement("div");d.style.cssText="position:absolute;left:0;right:0;border-top:1px solid lightgray;height:24px;bottom:31px;text-align:center;cursor:pointer;padding:6px 0 0 0;";d.className="geTitle";d.innerHTML='<span style="font-size:18px;margin-right:5px;">+</span>';mxUtils.write(d,mxResources.get("moreShapes"));b.appendChild(d);mxEvent.addListener(d,"click",function(){a.actions.get("shapes").funct()});var e=new Menubar(a,b);if(!Editor.enableCustomLibraries|| +"1"==urlParams.embed&&"1"!=urlParams.libraries)d.style.bottom="0";else if(null!=a.actions.get("newLibrary")){d=document.createElement("div");d.style.cssText="position:absolute;left:0px;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;";d.className="geTitle";var f=document.createElement("span");f.style.cssText="position:relative;top:6px;";mxUtils.write(f,mxResources.get("newLibrary"));d.appendChild(f);b.appendChild(d);mxEvent.addListener(d, +"click",a.actions.get("newLibrary").funct);d=document.createElement("div");d.style.cssText="position:absolute;left:50%;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;border-left: 1px solid lightgray;";d.className="geTitle";f=document.createElement("span");f.style.cssText="position:relative;top:6px;";mxUtils.write(f,mxResources.get("openLibrary"));d.appendChild(f);b.appendChild(d);mxEvent.addListener(d,"click",a.actions.get("openLibrary").funct)}else d= c("newLibrary",mxResources.get("newLibrary")),d.style.left="0",d=c("openLibraryFrom",mxResources.get("openLibraryFrom")),d.style.borderLeft="1px solid lightgray",d.style.left="50%";b.appendChild(a.sidebar.container);b.style.overflow="hidden";return b});a.sidebarWindow.window.minimumSize=new mxRectangle(0,0,90,90);a.sidebarWindow.window.setVisible(!0);a.getLocalData("sidebar",function(b){a.sidebar.showEntries(b,null,!0)});a.restoreLibraries()}else a.sidebarWindow.window.setVisible(!a.sidebarWindow.window.isVisible()); -a.sidebarWindow.window.isVisible()&&a.sidebarWindow.window.fit()}if("1"==urlParams.lightbox||"0"==urlParams.chrome||"undefined"===typeof window.Format||"undefined"===typeof window.Menus)window.uiTheme=null;else{var b=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;try{var f=document.createElement("style");f.type="text/css";f.innerHTML="* { -webkit-font-smoothing: antialiased; }html body .mxWindow button.geBtn { font-size:12px !important; margin-left: 0; }html body table.mxWindow td.mxWindowPane div.mxWindowPane * { font-size:9pt; }html body div.diagramContainer button, html body button.geBtn { font-size:14px; font-weight:700;border-radius: 5px; }html body button.geBtn:active { opacity: 0.6; }html body a.geMenuItem { opacity: 0.75; }html body a.geMenuItem[disabled] { opacity: 0.2; }html body a.geMenuItem[disabled]:active { opacity: 0.2; }html body div.geActivePage { opacity: 0.7; }html body a.geMenuItem:active { opacity: 0.2; }html body .geToolbarButton { opacity: 0.3; }html body .geToolbarButton:active { opacity: 0.15; }html body .geStatus:active { opacity: 0.5; }html table.mxPopupMenu tr.mxPopupMenuItemHover:active { opacity:0.7; }html body .geDialog input, html body .geToolbarContainer input, html body .mxWindow input {padding:2px;display:inline-block; }div.geDialog { border-radius: 5px; }html body div.geDialog button.geBigButton { color: #fff !important; }.mxWindow button, .geDialog select, .mxWindow select { display:inline-block; }html body .mxWindow .geColorBtn, html body .geDialog .geColorBtn { background: none; }html body div.diagramContainer button, html body .mxWindow button, html body .geDialog button { min-width: 0px; border-radius: 5px; color: #353535 !important; border-style: solid; border-width: 1px; border-color: rgb(216, 216, 216); }html body div.diagramContainer button:hover, html body .mxWindow button:hover, html body .geDialog button:hover { border-color: rgb(177, 177, 177); }html body div.diagramContainer button:active, html body .mxWindow button:active, html body .geDialog button:active { opacity: 0.6; }div.diagramContainer button.geBtn, .mxWindow button.geBtn, .geDialog button.geBtn { min-width:72px; font-weight: 600; background: none; }div.diagramContainer button.gePrimaryBtn, .mxWindow button.gePrimaryBtn, .geDialog button.gePrimaryBtn, html body .gePrimaryBtn { background: #29b6f2; color: #fff !important; border: none; box-shadow: none; }html body .gePrimaryBtn:hover { background: #29b6f2; border: none; box-shadow: inherit; }html body button.gePrimaryBtn:hover { background: #29b6f2; border: none; }.geBtn button { min-width:72px !important; }div.geToolbarContainer a.geButton { margin:2px; padding: 0 2px 4px 2px; } .geDialog, .mxWindow td.mxWindowPane *, div.geSprite, td.mxWindowTitle, .geDiagramContainer { box-sizing:content-box; }.mxWindow div button.geStyleButton { box-sizing: border-box; }table.mxWindow td.mxWindowPane button.geColorBtn { padding:0px; box-sizing: border-box; }td.mxWindowPane .geSidebarContainer button { padding:2px 0 2px 0; box-sizing: border-box; }html body .geMenuItem { font-size:14px; text-decoration: none; font-weight: normal; padding: 6px 10px 6px 10px; border: none; border-radius: 5px; color: #353535; box-shadow: inset 0 0 0 1px rgba(0,0,0,.11), inset 0 -1px 0 0 rgba(0,0,0,.08), 0 1px 2px 0 rgba(0,0,0,.04); }.geToolbarContainer { background:#fff !important; }div.mxWindow .geSidebarContainer .geTitle { background-color:#fdfdfd; }div.mxWindow .geSidebarContainer .geTitle:hover { background-color:#fafafa; }div.geSidebar { background-color: #fff !important;}div.mxWindow td.mxWindowPane button { background-image: none; float: none; }td.mxWindowTitle { height: 22px !important; background: none !important; font-size: 13px !important; text-align:center !important; border-bottom:1px solid lightgray; }div.mxWindow, div.mxWindowTitle { background-image: none !important; background-color:#fff !important; }div.mxWindow { border-radius:5px; box-shadow: 0px 0px 2px #C0C0C0 !important;}div.mxWindow * { font-family: inherit !important; }html div.geVerticalHandle { position:absolute;bottom:0px;left:50%;cursor:row-resize;width:11px;height:11px;background:white;margin-bottom:-6px; margin-left:-6px; border: none; border-radius: 6px; box-shadow: inset 0 0 0 1px rgba(0,0,0,.11), inset 0 -1px 0 0 rgba(0,0,0,.08), 0 1px 2px 0 rgba(0,0,0,.04); }html div.geInactivePage { background: rgb(249, 249, 249) !important; color:lightgray !important; } html div.geActivePage { background: white !important;color: #353535 !important; } html div.mxRubberband { border:1px solid; border-color: #29b6f2 !important; background:rgba(41,182,242,0.5) !important; } html body div.mxPopupMenu { border-radius:5px; border:1px solid #c0c0c0; padding:5px 0 5px 0; box-shadow: 0px 4px 17px -4px rgba(96,96,96,1); } html table.mxPopupMenu td.mxPopupMenuItem { color: #353535; font-size: 14px; padding-top: 4px; padding-bottom: 4px; }html table.mxPopupMenu tr.mxPopupMenuItemHover { background-color: #29b6f2; }html tr.mxPopupMenuItemHover td.mxPopupMenuItem, html tr.mxPopupMenuItemHover td.mxPopupMenuItem span { color: #fff !important; }html tr.mxPopupMenuItem, html td.mxPopupMenuItem { transition-property: none !important; }html table.mxPopupMenu hr { height: 2px; background-color: rgba(0,0,0,.07); margin: 5px 0; }"+ -(mxClient.IS_IOS?"html input[type=checkbox], html input[type=radio] { height:12px; }":"");document.getElementsByTagName("head")[0].appendChild(f)}catch(w){}var k=function(a,b,c,d,f,g,h){a=document.createElement("div");a.className="geSidebarContainer";a.style.position="absolute";a.style.width="100%";a.style.height="100%";a.style.border="1px solid whiteSmoke";a.style.overflowX="hidden";a.style.overflowY="auto";h(a);this.window=new mxWindow(b,a,c,d,f,g,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1); -this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.setLocation=function(a,b){var c=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)}};Editor.checkmarkImage= -Graph.createSvgImage(22,18,'<path transform="translate(4 0)" d="M7.181,15.007a1,1,0,0,1-.793-0.391L3.222,10.5A1,1,0,1,1,4.808,9.274L7.132,12.3l6.044-8.86A1,1,0,1,1,14.83,4.569l-6.823,10a1,1,0,0,1-.8.437H7.181Z" fill="#29b6f2"/>').src;mxWindow.prototype.closeImage=Graph.createSvgImage(18,10,'<path d="M 5 1 L 13 9 M 13 1 L 5 9" stroke="#C0C0C0" stroke-width="2"/>').src;mxWindow.prototype.minimizeImage=Graph.createSvgImage(14,10,'<path d="M 3 7 L 7 3 L 11 7" stroke="#C0C0C0" stroke-width="2" fill="#ffffff"/>').src; -mxWindow.prototype.normalizeImage=Graph.createSvgImage(14,10,'<path d="M 3 3 L 7 7 L 11 3" stroke="#C0C0C0" stroke-width="2" fill="#ffffff"/>').src;mxConstraintHandler.prototype.pointImage=Graph.createSvgImage(5,5,'<path d="m 0 0 L 5 5 M 0 5 L 5 0" stroke="#29b6f2"/>');mxOutline.prototype.sizerImage=null;mxConstants.VERTEX_SELECTION_COLOR="#C0C0C0";mxConstants.EDGE_SELECTION_COLOR="#C0C0C0";mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff";mxConstants.DEFAULT_VALID_COLOR="#29b6f2";mxConstants.GUIDE_COLOR= -"#C0C0C0";mxConstants.HIGHLIGHT_STROKEWIDTH=5;mxConstants.HIGHLIGHT_OPACITY=35;mxConstants.OUTLINE_COLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_FILLCOLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_STROKECOLOR="#fff";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity="0.4";Graph.prototype.svgShadowSize="0.6";Graph.prototype.svgShadowBlur="1.2";Format.prototype.inactiveTabBackgroundColor="#f0f0f0";mxGraphHandler.prototype.previewColor="#C0C0C0";mxRubberband.prototype.defaultOpacity=50; -HoverIcons.prototype.inactiveOpacity=25;Format.prototype.showCloseButton=!1;EditorUi.prototype.closableScratchpad=!1;EditorUi.prototype.toolbarHeight=46;EditorUi.prototype.footerHeight=0;Graph.prototype.editAfterInsert=!0;Editor.prototype.isChromelessView=function(){return!1};Graph.prototype.isLightboxView=function(){return!1};var h=EditorUi.prototype.updateTabContainer;EditorUi.prototype.updateTabContainer=function(){null!=this.tabContainer&&(this.tabContainer.style.right="70px",this.diagramContainer.style.bottom= -"30px");h.apply(this,arguments)};var l=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){l.apply(this,arguments);this.menus.get("save").setEnabled(null!=this.getCurrentFile()||"1"==urlParams.embed)};var t=Menus.prototype.addShortcut;Menus.prototype.addShortcut=function(a,c){null!=c.shortcut&&900>b&&!mxClient.IS_IOS?a.firstChild.nextSibling.setAttribute("title",c.shortcut):t.apply(this,arguments)};var p=App.prototype.updateUserElement;App.prototype.updateUserElement= -function(){p.apply(this,arguments);if(null!=this.userElement){var a=this.userElement;a.style.cssText="display:inline-block;position:relative;margin-right:4px;cursor:pointer;";a.className="geToolbarButton";a.innerHTML="";a.style.backgroundImage="url("+Editor.userImage+")";a.style.backgroundPosition="center center";a.style.backgroundRepeat="no-repeat";a.style.backgroundSize="24px 24px";a.style.height="24px";a.style.width="24px";a.style.cssFloat="right";a.setAttribute("title",mxResources.get("changeUser"))}}; -var d=App.prototype.updateButtonContainer;App.prototype.updateButtonContainer=function(){d.apply(this,arguments);if(null!=this.shareButton){var a=this.shareButton;a.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;cursor:pointer;";a.className="geToolbarButton";a.innerHTML="";a.style.backgroundImage="url("+Editor.shareImage+")";a.style.backgroundPosition="center center";a.style.backgroundRepeat="no-repeat";a.style.backgroundSize="24px 24px";a.style.height= -"24px";a.style.width="24px"}null!=this.syncButton&&(a=this.syncButton,a.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;cursor:pointer;",a.className="geToolbarButton",a.innerHTML="",a.style.backgroundImage="url("+Editor.syncImage+")",a.style.backgroundPosition="center center",a.style.backgroundRepeat="no-repeat",a.style.backgroundSize="24px 24px",a.style.height="24px",a.style.width="24px")};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.buttonContainer){var a= -document.createElement("div");a.style.display="inline-block";a.style.position="relative";a.style.marginTop="2px";var b=document.createElement("button");mxUtils.write(b,mxResources.get("save"));b.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)");b.className="1"==urlParams.saveAndExit?"geMenuItem":"geMenuItem gePrimaryBtn";b.style.fontSize="14px";b.style.padding="6px";b.style.borderRadius="3px";b.style.marginLeft="8px";b.style.cursor="pointer";mxEvent.addListener(b,"click",mxUtils.bind(this, -function(){this.actions.get("save").funct()}));a.appendChild(b);"1"==urlParams.saveAndExit&&(b=document.createElement("a"),mxUtils.write(b,mxResources.get("saveAndExit")),b.setAttribute("title",mxResources.get("saveAndExit")),b.className="geMenuItem gePrimaryBtn",b.style.fontSize="14px",b.style.marginLeft="6px",b.style.padding="6px",b.style.cursor="pointer",mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b));b=document.createElement("a"); -mxUtils.write(b,mxResources.get("exit"));b.setAttribute("title",mxResources.get("exit"));b.className="geMenuItem";b.style.fontSize="14px";b.style.marginLeft="6px";b.style.padding="6px";b.style.cursor="pointer";mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()}));a.appendChild(b);this.buttonContainer.appendChild(a);this.buttonContainer.style.top="6px"}};Sidebar.prototype.getTooltipOffset=function(){var a=mxUtils.getOffset(this.editorUi.sidebarWindow.window.div); -a.y+=40;return a};var g=Menus.prototype.createPopupMenu;Menus.prototype.createPopupMenu=function(a,b,c){var d=this.editorUi.editor.graph;a.smartSeparators=!0;g.apply(this,arguments);mxUtils.bind(this,function(a,b){var c=new FilenameDialog(this.editorUi,a,mxResources.get("apply"),function(a){b(parseFloat(a))},mxResources.get("spacing"));this.editorUi.showDialog(c.container,300,80,!0,!0);c.init()});1==d.getSelectionCount()?(this.addMenuItems(a,["editTooltip","-","editStyle","editGeometry","-"],null, -c),d.isCellFoldable(d.getSelectionCell())&&this.addMenuItems(a,d.isCellCollapsed(b)?["expand"]:["collapse"],null,c),this.addMenuItems(a,["collapsible","-","lockUnlock","enterGroup"],null,c),a.addSeparator(),this.addSubmenu("layout",a)):d.isSelectionEmpty()&&d.isEnabled()?(a.addSeparator(),this.addMenuItems(a,["editData"],null,c),a.addSeparator(),this.addSubmenu("layout",a),this.addSubmenu("view",a,null,mxResources.get("options")),this.addMenuItems(a,["-","exitGroup"],null,c)):d.isEnabled()&&this.addMenuItems(a, -["-","lockUnlock"],null,c)};EditorUi.prototype.toggleFormatPanel=function(b){null!=this.formatWindow?this.formatWindow.window.setVisible(b?!1:!this.formatWindow.window.isVisible()):a(this)};DiagramFormatPanel.prototype.isMathOptionVisible=function(){return!0};var n=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){null!=this.sidebarWindow&&(this.sidebarWindow.window.setVisible(!1),this.sidebarWindow.window.destroy(),this.sidebarWindow=null);null!=this.formatWindow&&(this.formatWindow.window.setVisible(!1), -this.formatWindow.window.destroy(),this.formatWindow=null);null!=this.actions.outlineWindow&&(this.actions.outlineWindow.window.setVisible(!1),this.actions.outlineWindow.window.destroy(),this.actions.outlineWindow=null);null!=this.actions.layersWindow&&(this.actions.layersWindow.window.setVisible(!1),this.actions.layersWindow.window.destroy(),this.actions.layersWindow=null);null!=this.menus.tagsWindow&&(this.menus.tagsWindow.window.setVisible(!1),this.menus.tagsWindow.window.destroy(),this.menus.tagsWindow= -null);null!=this.menus.findWindow&&(this.menus.findWindow.window.setVisible(!1),this.menus.findWindow.window.destroy(),this.menus.findWindow=null);n.apply(this,arguments)};var q=EditorUi.prototype.setGraphEnabled;EditorUi.prototype.setGraphEnabled=function(a){q.apply(this,arguments);a||(null!=this.sidebarWindow&&this.sidebarWindow.window.setVisible(!1),null!=this.formatWindow&&this.formatWindow.window.setVisible(!1))};EditorUi.prototype.chromelessWindowResize=function(){};var u=Menus.prototype.init; -Menus.prototype.init=function(){u.apply(this,arguments);var b=this.editorUi,d=b.editor.graph;b.actions.get("editDiagram").label=mxResources.get("formatXml")+"...";b.actions.get("createShape").label=mxResources.get("shape")+"...";b.actions.get("outline").label=mxResources.get("outline")+"...";b.actions.get("layers").label=mxResources.get("layers")+"...";b.actions.put("importFile",new Action("File...",function(){d.popupMenuHandler.hideMenu();var a=document.createElement("input");a.setAttribute("type", -"file");mxEvent.addListener(a,"change",function(){null!=a.files&&b.importFiles(a.files,null,null,b.maxImageSize)});a.click()}));b.actions.put("importCsv",new Action(mxResources.get("csv")+"...",function(){d.popupMenuHandler.hideMenu();b.showImportCsvDialog()}));b.actions.put("importText",new Action(mxResources.get("text")+"...",function(){var a=new ParseDialog(b,"Insert from Text");b.showDialog(a.container,620,420,!0,!1);a.init()}));b.actions.put("formatSql",new Action(mxResources.get("formatSql")+ -"...",function(){var a=new ParseDialog(b,"Insert from Text","formatSql");b.showDialog(a.container,620,420,!0,!1);a.init()}));b.actions.put("toggleShapes",new Action(mxResources.get("shapes")+"...",function(){c(b)}));b.actions.put("toggleFormat",new Action(mxResources.get("format")+"...",function(){a(b)}));EditorUi.enablePlantUml&&!b.isOffline()&&b.actions.put("plantUml",new Action(mxResources.get("plantUml")+"...",function(){var a=new ParseDialog(b,"Insert from Text","plantUml");b.showDialog(a.container, -620,420,!0,!1);a.init()}));this.put("diagram",new Menu(mxUtils.bind(this,function(a,c){var d=b.getCurrentFile();b.menus.addSubmenu("extras",a,c,mxResources.get("preferences"));a.addSeparator(c);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?(b.menus.addMenuItems(a,["new","open","-"],c),EditorUi.isElectronApp&&b.menus.addMenuItems(a,["synchronize","-"],c),b.menus.addMenuItems(a,["save","saveAs","-"],c)):"1"==urlParams.embed?(b.menus.addMenuItems(a,["-","save"],c),"1"==urlParams.saveAndExit&&b.menus.addMenuItems(a, -["saveAndExit"],c),a.addSeparator(c)):(b.menus.addMenuItems(a,["new"],c),b.menus.addSubmenu("openFrom",a,c),isLocalStorage&&this.addSubmenu("openRecent",a,c),a.addSeparator(c),null!=d&&d.constructor==DriveFile&&b.menus.addMenuItems(a,["share"],c),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null==d||d.constructor==LocalFile||b.menus.addMenuItems(a,["synchronize"],c),a.addSeparator(c),b.menus.addSubmenu("save",a,c));b.menus.addSubmenu("exportAs",a,c);b.menus.addMenuItems(a,"- outline layers - find tags".split(" "), -c);mxClient.IS_IOS&&navigator.standalone||b.menus.addMenuItems(a,["-","print","-"],c);b.menus.addSubmenu("help",a,c);"1"==urlParams.embed?b.menus.addMenuItems(a,["-","exit"],c):b.menus.addMenuItems(a,["-","close"])})));this.put("save",new Menu(mxUtils.bind(this,function(a,c){var d=b.getCurrentFile();null!=d&&d.constructor==DriveFile?b.menus.addMenuItems(a,["save","makeCopy","-","rename","moveToFolder"],c):(b.menus.addMenuItems(a,["save","saveAs","-","rename"],c),b.isOfflineApp()?navigator.onLine&& -"1"!=urlParams.stealth&&this.addMenuItems(a,["upload"],c):b.menus.addMenuItems(a,["makeCopy"],c));b.menus.addMenuItems(a,["-","autosave"],c);null!=d&&d.isRevisionHistorySupported()&&b.menus.addMenuItems(a,["-","revisionHistory"],c)})));var f=this.get("exportAs");this.put("exportAs",new Menu(mxUtils.bind(this,function(a,c){f.funct(a,c);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||b.menus.addMenuItems(a,["publishLink"],c);a.addSeparator(c);b.menus.addSubmenu("embed",a,c)})));var g=this.get("language"); -this.put("extras",new Menu(mxUtils.bind(this,function(a,c){"1"!=urlParams.embed&&b.menus.addSubmenu("theme",a,c);null!=g&&b.menus.addSubmenu("language",a,c);a.addSeparator(c);b.menus.addMenuItems(a,["scrollbars","tooltips"],c);"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&b.menus.addMenuItems(a,["-","search","scratchpad","-","showStartScreen"],c);!b.isOfflineApp()&&isLocalStorage&&(a.addSeparator(c),b.menus.addMenuItem(a,"plugins",c));a.addSeparator(c)})));this.put("insertAdvanced", -new Menu(mxUtils.bind(this,function(a,c){b.menus.addMenuItems(a,"importText plantUml - formatSql importCsv - createShape editDiagram".split(" "),c)})));mxResources.parse("insertLayout="+mxResources.get("layout"));mxResources.parse("insertAdvanced="+mxResources.get("advanced"));this.put("insert",new Menu(mxUtils.bind(this,function(a,c){b.menus.addMenuItems(a,"insertRectangle insertEllipse insertRhombus - insertText insertLink - insertImage".split(" "),c);b.insertTemplateEnabled&&!b.isOffline()&&b.menus.addMenuItems(a, -["insertTemplate"],c);a.addSeparator(c);b.menus.addSubmenu("insertLayout",a,c);b.menus.addSubmenu("insertAdvanced",a,c);a.addSeparator(c);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?b.menus.addMenuItems(a,["import"],c):b.menus.addSubmenu("importFrom",a,c)})));var h="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),k=function(a,c,d,f){a.addItem(d,null,mxUtils.bind(this,function(){var a=new CreateGraphDialog(b,d,f);b.showDialog(a.container,620,420, -!0,!1);a.init()}),c)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(a,b){for(var c=0;c<h.length;c++)"-"==h[c]?a.addSeparator(b):k(a,b,mxResources.get(h[c])+"...",h[c])})));this.put("view",new Menu(mxUtils.bind(this,function(a,c){b.menus.addMenuItems(a,"grid guides - connectionArrows connectionPoints -".split(" "),c);if("undefined"!==typeof MathJax){var d=b.menus.addMenuItem(a,"mathematicalTypesetting",c);b.menus.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000032875")}b.menus.addMenuItems(a, -["copyConnect","collapseExpand","-","pageScale"],c)})))};var v=EditorUi.prototype.init;EditorUi.prototype.init=function(){function a(a,b,c){var d=h.menus.get(a),f=p.addMenu(mxResources.get(a),mxUtils.bind(this,function(){d.funct.apply(this,arguments)}),n);f.className="geMenuItem";f.style.display="inline-block";f.style.boxSizing="border-box";f.style.top="6px";f.style.marginRight="6px";f.style.height="30px";f.style.paddingTop="6px";f.style.paddingBottom="6px";f.style.cursor="pointer";f.setAttribute("title", -mxResources.get(a));h.menus.menuCreated(d,f,"geMenuItem");null!=c?(f.style.backgroundImage="url("+c+")",f.style.backgroundPosition="center center",f.style.backgroundRepeat="no-repeat",f.style.backgroundSize="24px 24px",f.style.width="34px",f.innerHTML=""):b||(f.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",f.style.backgroundPosition="right 6px center",f.style.backgroundRepeat="no-repeat",f.style.paddingRight="22px");return f}function c(a,b,c,d,f,g){var k=document.createElement("a"); -k.className="geMenuItem";k.style.display="inline-block";k.style.boxSizing="border-box";k.style.height="30px";k.style.padding="6px";k.style.position="relative";k.style.verticalAlign="top";k.style.top="0px";null!=h.statusContainer?l.insertBefore(k,h.statusContainer):l.appendChild(k);null!=g?(k.style.backgroundImage="url("+g+")",k.style.backgroundPosition="center center",k.style.backgroundRepeat="no-repeat",k.style.backgroundSize="24px 24px",k.style.width="34px"):mxUtils.write(k,a);mxEvent.addListener(k, -mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(k,"click",function(a){"disabled"!=k.getAttribute("disabled")&&b(a);mxEvent.consume(a)});null==c&&(k.style.marginRight="4px");null!=d&&k.setAttribute("title",d);null!=f&&(a=function(){f.isEnabled()?(k.removeAttribute("disabled"),k.style.cursor="pointer"):(k.setAttribute("disabled","disabled"),k.style.cursor="default")},f.addListener("stateChanged",a),a());return k}function d(a,b){var c= -document.createElement("div");c.className="geMenuItem";c.style.display="inline-block";c.style.verticalAlign="top";c.style.marginRight="6px";c.style.padding="0 4px 0 4px";c.style.height="30px";c.style.position="relative";c.style.top="0px";for(var d=0;d<a.length;d++)null!=a[d]&&(a[d].style.margin="0px",a[d].style.boxShadow="none",c.appendChild(a[d]));null!=b&&mxUtils.setOpacity(c,b);null!=h.statusContainer?l.insertBefore(c,h.statusContainer):l.appendChild(c);return c}function f(){for(var f=l.firstChild;null!= -f;){var g=f.nextSibling;"geMenuItem"!=f.className&&"geItem"!=f.className||f.parentNode.removeChild(f);f=g}n=l.firstChild;b=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;(f=1E3>b)||a("diagram");d([f?a("diagram",null,IMAGE_PATH+"/drawlogo.svg"):null,c(mxResources.get("shapes"),h.actions.get("toggleShapes").funct,null,mxResources.get("shapes"),h.actions.get("image"),f?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTMgMTN2OGg4di04aC04ek0zIDIxaDh2LThIM3Y4ek0zIDN2OGg4VjNIM3ptMTMuNjYtMS4zMUwxMSA3LjM0IDE2LjY2IDEzbDUuNjYtNS42Ni01LjY2LTUuNjV6Ii8+PC9zdmc+": -null),c(mxResources.get("format"),h.actions.get("toggleFormat").funct,null,mxResources.get("format")+" ("+h.actions.get("formatPanel").shortcut+")",h.actions.get("image"),f?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIgM2MtNC45NyAwLTkgNC4wMy05IDlzNC4wMyA5IDkgOWMuODMgMCAxLjUtLjY3IDEuNS0xLjUgMC0uMzktLjE1LS43NC0uMzktMS4wMS0uMjMtLjI2LS4zOC0uNjEtLjM4LS45OSAwLS44My42Ny0xLjUgMS41LTEuNUgxNmMyLjc2IDAgNS0yLjI0IDUtNSAwLTQuNDItNC4wMy04LTktOHptLTUuNSA5Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNS42NyA5IDYuNSA5IDggOS42NyA4IDEwLjUgNy4zMyAxMiA2LjUgMTJ6bTMtNEM4LjY3IDggOCA3LjMzIDggNi41UzguNjcgNSA5LjUgNXMxLjUuNjcgMS41IDEuNVMxMC4zMyA4IDkuNSA4em01IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxMy42NyA1IDE0LjUgNXMxLjUuNjcgMS41IDEuNVMxNS4zMyA4IDE0LjUgOHptMyA0Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTYuNjcgOSAxNy41IDlzMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41eiIvPjwvc3ZnPg==": -null)],f?60:null);g=a("insert",!0,f?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgMTNoLTZ2NmgtMnYtNkg1di0yaDZWNWgydjZoNnYyeiIvPjwvc3ZnPg==":null);d([g,c(mxResources.get("delete"),h.actions.get("delete").funct,null,mxResources.get("delete"),h.actions.get("delete"),f?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek0xOSA0aC0zLjVsLTEtMWgtNWwtMSAxSDV2MmgxNFY0eiIvPjwvc3ZnPg==": -null)],f?60:null);if(411<=b&&(g=h.actions.get("undo"),f=h.actions.get("redo"),g=c("",g.funct,null,mxResources.get("undo")+" ("+g.shortcut+")",g,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIuNSA4Yy0yLjY1IDAtNS4wNS45OS02LjkgMi42TDIgN3Y5aDlsLTMuNjItMy42MmMxLjM5LTEuMTYgMy4xNi0xLjg4IDUuMTItMS44OCAzLjU0IDAgNi41NSAyLjMxIDcuNiA1LjVsMi4zNy0uNzhDMjEuMDggMTEuMDMgMTcuMTUgOCAxMi41IDh6Ii8+PC9zdmc+"),f=c("", -f.funct,null,mxResources.get("redo")+" ("+f.shortcut+")",f,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTguNCAxMC42QzE2LjU1IDguOTkgMTQuMTUgOCAxMS41IDhjLTQuNjUgMC04LjU4IDMuMDMtOS45NiA3LjIyTDMuOSAxNmMxLjA1LTMuMTkgNC4wNS01LjUgNy42LTUuNSAxLjk1IDAgMy43My43MiA1LjEyIDEuODhMMTMgMTZoOVY3bC0zLjYgMy42eiIvPjwvc3ZnPg=="),d([g,f],60),480<=b)){var f=h.actions.get("zoomIn"),g=h.actions.get("zoomOut"),m=h.actions.get("resetView"); -d([c("",function(){k.popupMenuHandler.hideMenu();var a=k.view.scale,b=k.view.translate.x,c=k.view.translate.y;h.actions.get("resetView").funct();1E-5>Math.abs(a-k.view.scale)&&b==k.view.translate.x&&c==k.view.translate.y&&h.actions.get(k.pageVisible?"fitPage":"fitWindow").funct()},!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",m,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMyA1djRoMlY1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnptMiAxMEgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6bTE0IDRoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6bTAtMTZoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yeiIvPjwvc3ZnPg=="), -640<=b?c("",f.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",f,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHptMi41LTRoLTJ2Mkg5di0ySDdWOWgyVjdoMXYyaDJ2MXoiLz48L3N2Zz4="): -null,640<=b?c("",g.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",g,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpNNyA5aDV2MUg3eiIvPjwvc3ZnPg=="): -null],60)}f=h.menus.get("language");null!=f&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=b?(null==M&&(g=p.addMenu("",f.funct),g.setAttribute("title",mxResources.get("language")),g.className="geToolbarButton",g.style.backgroundImage="url("+Editor.globeImage+")",g.style.backgroundPosition="center center",g.style.backgroundRepeat="no-repeat",g.style.backgroundSize="24px 24px",g.style.position="absolute",g.style.height="24px",g.style.width="24px",g.style.zIndex="1",g.style.top="11px",g.style.right= -"8px",g.style.cursor="pointer",l.appendChild(g),M=g),h.buttonContainer.style.paddingRight="34px"):(h.buttonContainer.style.paddingRight="4px",null!=M&&(M.parentNode.removeChild(M),M=null))}v.apply(this,arguments);var g=document.createElement("div");g.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";g.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(g);var h=this,k=h.editor.graph;h.toolbar=this.createToolbar(h.createDiv("geToolbar")); -h.defaultLibraryName=mxResources.get("untitledLibrary");var l=document.createElement("div");l.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;border-bottom:1px solid lightgray;background-color:#ffffff;text-align:left;white-space:nowrap;";var n=null,p=new Menubar(h,l);h.statusContainer=h.createStatusContainer();h.statusContainer.style.position="relative";h.statusContainer.style.maxWidth="";h.statusContainer.style.marginTop="7px";h.statusContainer.style.marginLeft= -"6px";h.statusContainer.style.color="gray";h.statusContainer.style.cursor="default";h.editor.addListener("statusChanged",mxUtils.bind(this,function(){h.setStatusText(h.editor.getStatus())}));var q=h.descriptorChanged;h.descriptorChanged=function(){q.apply(this,arguments);var a=h.getCurrentFile();if(null!=a&&null!=a.getTitle()){var b=a.getMode();"google"==b?b="googleDrive":"github"==b?b="gitHub":"onedrive"==b&&(b="oneDrive");b=mxResources.get(b);l.setAttribute("title",a.getTitle()+(null!=b?" ("+b+ -")":""))}else l.removeAttribute("title")};h.setStatusText(h.editor.getStatus());l.appendChild(h.statusContainer);h.buttonContainer=document.createElement("div");h.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";l.appendChild(h.buttonContainer);h.menubarContainer=h.buttonContainer;h.tabContainer=document.createElement("div");h.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;border-bottom:1px solid lightgray;background-color:#ffffff;border-top:1px solid lightgray;margin-bottom:-2px;visibility:hidden;"; -var g=h.diagramContainer.parentNode,t=document.createElement("div");t.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";h.diagramContainer.style.top="47px";var u=h.menus.get("viewZoom");if(null!=u){this.tabContainer.style.right="70px";var G=p.addMenu("100%",u.funct);G.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");G.style.whiteSpace="nowrap";G.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";G.style.backgroundPosition="right 6px center"; -G.style.backgroundRepeat="no-repeat";G.style.backgroundColor="#ffffff";G.style.paddingRight="10px";G.style.display="block";G.style.position="absolute";G.style.textDecoration="none";G.style.textDecoration="none";G.style.right="0px";G.style.bottom="0px";G.style.overflow="hidden";G.style.visibility="hidden";G.style.textAlign="center";G.style.color="#000";G.style.fontSize="12px";G.style.color="#707070";G.style.width="59px";G.style.borderTop="1px solid lightgray";G.style.borderLeft="1px solid lightgray"; -G.style.height=parseInt(h.tabContainer.style.height)-1+"px";G.style.lineHeight=parseInt(h.tabContainer.style.height)+1+"px";t.appendChild(G);u=mxUtils.bind(this,function(){G.innerHTML=Math.round(100*h.editor.graph.view.scale)+"%"});h.editor.graph.view.addListener(mxEvent.EVENT_SCALE,u);h.editor.addListener("resetGraphView",u);h.editor.addListener("pageSelected",u);var J=h.setGraphEnabled;h.setGraphEnabled=function(){J.apply(this,arguments);null!=this.tabContainer&&(G.style.visibility=this.tabContainer.style.visibility, -this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?"30px":"0px")}}t.appendChild(h.tabContainer);t.appendChild(l);t.appendChild(h.diagramContainer);g.appendChild(t);h.updateTabContainer();var M=null;f();mxEvent.addListener(window,"resize",function(){f();null!=h.sidebarWindow&&h.sidebarWindow.window.fit();null!=h.formatWindow&&h.formatWindow.window.fit();null!=h.actions.outlineWindow&&h.actions.outlineWindow.window.fit();null!=h.actions.layersWindow&&h.actions.layersWindow.window.fit(); -null!=h.menus.tagsWindow&&h.menus.tagsWindow.window.fit();null!=h.menus.findWindow&&h.menus.findWindow.window.fit()})}}};(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var c=EditorUi.initTheme;EditorUi.initTheme=function(){c.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();(function(){var a=mxGuide.prototype.move;mxGuide.prototype.move=function(b,c,h,l){var f=c.y,k=c.x,d=!1,g=!1;if(null!=this.states&&null!=b&&null!=c){var n=this,q=new mxCellState,u=this.graph.getView().scale,v=Math.max(2,this.getGuideTolerance()/2);q.x=b.x+k;q.y=b.y+f;q.width=b.width;q.height=b.height;for(var w=[],y=[],m=0;m<this.states.length;m++){var x=this.states[m];x instanceof mxCellState&&(l||!this.graph.isCellSelected(x.cell))&&((q.x>=x.x&&q.x<=x.x+x.width||x.x>=q.x&&x.x<=q.x+q.width)&&(q.y> -x.y+x.height+4||q.y+q.height+4<x.y)?w.push(x):(q.y>=x.y&&q.y<=x.y+x.height||x.y>=q.y&&x.y<=q.y+q.height)&&(q.x>x.x+x.width+4||q.x+q.width+4<x.x)&&y.push(x))}var z=0,F=0,C=x=0,B=0,H=0,D=0,E=0,I=5*u;if(1<w.length){w.push(q);w.sort(function(a,b){return a.y-b.y});var A=!1,m=q==w[0],u=q==w[w.length-1];if(!m&&!u)for(m=1;m<w.length-1;m++)if(q==w[m]){u=w[m-1];m=w[m+1];x=F=C=(m.y-u.y-u.height-q.height)/2;break}for(m=0;m<w.length-1;m++){var u=w[m],G=w[m+1],J=q==u||q==G,G=G.y-u.y-u.height,A=A|q==u;if(0==F&& -0==z)F=G,z=1;else if(Math.abs(F-G)<=(J||1==m&&A?v:0))z+=1;else if(1<z&&A){w=w.slice(0,m+1);break}else if(3<=w.length-m&&!A)z=0,x=F=0!=C?C:0,w.splice(0,0==m?1:m),m=-1;else break;0!=x||J||(F=x=G)}3==w.length&&w[1]==q&&(x=0)}if(1<y.length){y.push(q);y.sort(function(a,b){return a.x-b.x});A=!1;m=q==y[0];u=q==y[y.length-1];if(!m&&!u)for(m=1;m<y.length-1;m++)if(q==y[m]){u=y[m-1];m=y[m+1];D=H=E=(m.x-u.x-u.width-q.width)/2;break}for(m=0;m<y.length-1;m++){u=y[m];G=y[m+1];J=q==u||q==G;G=G.x-u.x-u.width;A|=q== -u;if(0==H&&0==B)H=G,B=1;else if(Math.abs(H-G)<=(J||1==m&&A?v:0))B+=1;else if(1<B&&A){y=y.slice(0,m+1);break}else if(3<=y.length-m&&!A)B=0,D=H=0!=E?E:0,y.splice(0,0==m?1:m),m=-1;else break;0!=D||J||(H=D=G)}3==y.length&&y[1]==q&&(D=0)}v=function(a,b,c,d){var f=[],g;d?(d=I,g=0):(d=0,g=I);f.push(new mxPoint(a.x-d,a.y-g));f.push(new mxPoint(a.x+d,a.y+g));f.push(a);f.push(b);f.push(new mxPoint(b.x-d,b.y-g));f.push(new mxPoint(b.x+d,b.y+g));if(null!=c)return c.points=f,c;a=new mxPolyline(f,mxConstants.GUIDE_COLOR, -mxConstants.GUIDE_STROKEWIDTH);a.dialect=mxConstants.DIALECT_SVG;a.pointerEvents=!1;a.init(n.graph.getView().getOverlayPane());return a};H=function(a,b){if(a&&null!=n.guidesArrHor)for(var c=0;c<n.guidesArrHor.length;c++)n.guidesArrHor[c].node.style.visibility="hidden";if(b&&null!=n.guidesArrVer)for(c=0;c<n.guidesArrVer.length;c++)n.guidesArrVer[c].node.style.visibility="hidden"};if(1<B&&B==y.length-1){B=[];E=n.guidesArrHor;d=[];k=0;m=y[0]==q?1:0;A=y[m].y+y[m].height;if(0<D)for(m=0;m<y.length-1;m++)u= -y[m],G=y[m+1],q==u?(k=G.x-u.width-D,d.push(new mxPoint(k+u.width+I,A)),d.push(new mxPoint(G.x-I,A))):q==G?(d.push(new mxPoint(u.x+u.width+I,A)),k=u.x+u.width+D,d.push(new mxPoint(k-I,A))):(d.push(new mxPoint(u.x+u.width+I,A)),d.push(new mxPoint(G.x-I,A)));else u=y[0],m=y[2],k=u.x+u.width+(m.x-u.x-u.width-q.width)/2,d.push(new mxPoint(u.x+u.width+I,A)),d.push(new mxPoint(k-I,A)),d.push(new mxPoint(k+q.width+I,A)),d.push(new mxPoint(m.x-I,A));for(m=0;m<d.length;m+=2)y=d[m],D=d[m+1],y=v(y,D,null!=E? -E[m/2]:null),y.node.style.visibility="visible",y.redraw(),B.push(y);for(m=d.length/2;null!=E&&m<E.length;m++)E[m].destroy();n.guidesArrHor=B;k-=b.x;d=!0}else H(!0);if(1<z&&z==w.length-1){B=[];E=n.guidesArrVer;g=[];f=0;m=w[0]==q?1:0;z=w[m].x+w[m].width;if(0<x)for(m=0;m<w.length-1;m++)u=w[m],G=w[m+1],q==u?(f=G.y-u.height-x,g.push(new mxPoint(z,f+u.height+I)),g.push(new mxPoint(z,G.y-I))):q==G?(g.push(new mxPoint(z,u.y+u.height+I)),f=u.y+u.height+x,g.push(new mxPoint(z,f-I))):(g.push(new mxPoint(z,u.y+ -u.height+I)),g.push(new mxPoint(z,G.y-I)));else u=w[0],m=w[2],f=u.y+u.height+(m.y-u.y-u.height-q.height)/2,g.push(new mxPoint(z,u.y+u.height+I)),g.push(new mxPoint(z,f-I)),g.push(new mxPoint(z,f+q.height+I)),g.push(new mxPoint(z,m.y-I));for(m=0;m<g.length;m+=2)y=g[m],D=g[m+1],y=v(y,D,null!=E?E[m/2]:null,!0),y.node.style.visibility="visible",y.redraw(),B.push(y);for(m=g.length/2;null!=E&&m<E.length;m++)E[m].destroy();n.guidesArrVer=B;f-=b.y;g=!0}else H(!1,!0)}if(d||g)return q=new mxPoint(k,f),w=a.call(this, -b,q,h,l),d&&!g?q.y=w.y:g&&!d&&(q.x=w.x),w.y!=q.y&&null!=this.guideY&&null!=this.guideY.node&&(this.guideY.node.style.visibility="hidden"),w.x!=q.x&&null!=this.guideX&&null!=this.guideX.node&&(this.guideX.node.style.visibility="hidden"),q;H(!0,!0);return a.apply(this,arguments)};var c=mxGuide.prototype.setVisible;mxGuide.prototype.setVisible=function(a){c.call(this,a);var b=this.guidesArrVer,f=this.guidesArrHor;if(null!=b)for(var l=0;l<b.length;l++)b[l].node.style.visibility=a?"visible":"hidden";if(null!= -f)for(l=0;l<f.length;l++)f[l].node.style.visibility=a?"visible":"hidden"};var b=mxGuide.prototype.destroy;mxGuide.prototype.destroy=function(){b.call(this);var a=this.guidesArrVer,c=this.guidesArrHor;if(null!=a){for(var h=0;h<a.length;h++)a[h].destroy();this.guidesArrVer=null}if(null!=c){for(h=0;h<c.length;h++)c[h].destroy();this.guidesArrHor=null}}})();Graph.prototype.defaultThemes[Graph.prototype.defaultThemeName]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="#ffffff"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#ffffff"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="white"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="#ffffff"/></add></mxStylesheet>').documentElement; +a.sidebarWindow.window.isVisible()&&a.sidebarWindow.window.fit()}if("1"==urlParams.lightbox||"0"==urlParams.chrome||"undefined"===typeof window.Format||"undefined"===typeof window.Menus)window.uiTheme=null;else{var a=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;try{var e=document.createElement("style");e.type="text/css";e.innerHTML="* { -webkit-font-smoothing: antialiased; }html body .mxWindow button.geBtn { font-size:12px !important; margin-left: 0; }html body table.mxWindow td.mxWindowPane div.mxWindowPane *:not(svg *) { font-size:9pt; }html body div.diagramContainer button, html body button.geBtn { font-size:14px; font-weight:700;border-radius: 5px; }html body button.geBtn:active { opacity: 0.6; }html body a.geMenuItem { opacity: 0.75; }html body a.geMenuItem[disabled] { opacity: 0.2; }html body a.geMenuItem[disabled]:active { opacity: 0.2; }html body div.geActivePage { opacity: 0.7; }html body a.geMenuItem:active { opacity: 0.2; }html body .geToolbarButton { opacity: 0.3; }html body .geToolbarButton:active { opacity: 0.15; }html body .geStatus:active { opacity: 0.5; }html table.mxPopupMenu tr.mxPopupMenuItemHover:active { opacity:0.7; }html body .geDialog input, html body .geToolbarContainer input, html body .mxWindow input {padding:2px;display:inline-block; }div.geDialog { border-radius: 5px; }html body div.geDialog button.geBigButton { color: #fff !important; }.mxWindow button, .geDialog select, .mxWindow select { display:inline-block; }html body .mxWindow .geColorBtn, html body .geDialog .geColorBtn { background: none; }html body div.diagramContainer button, html body .mxWindow button, html body .geDialog button { min-width: 0px; border-radius: 5px; color: #353535 !important; border-style: solid; border-width: 1px; border-color: rgb(216, 216, 216); }html body div.diagramContainer button:hover, html body .mxWindow button:hover, html body .geDialog button:hover { border-color: rgb(177, 177, 177); }html body div.diagramContainer button:active, html body .mxWindow button:active, html body .geDialog button:active { opacity: 0.6; }div.diagramContainer button.geBtn, .mxWindow button.geBtn, .geDialog button.geBtn { min-width:72px; font-weight: 600; background: none; }div.diagramContainer button.gePrimaryBtn, .mxWindow button.gePrimaryBtn, .geDialog button.gePrimaryBtn, html body .gePrimaryBtn { background: #29b6f2; color: #fff !important; border: none; box-shadow: none; }html body .gePrimaryBtn:hover { background: #29b6f2; border: none; box-shadow: inherit; }html body button.gePrimaryBtn:hover { background: #29b6f2; border: none; }.geBtn button { min-width:72px !important; }div.geToolbarContainer a.geButton { margin:2px; padding: 0 2px 4px 2px; } .geDialog, .mxWindow td.mxWindowPane *, div.geSprite, td.mxWindowTitle, .geDiagramContainer { box-sizing:content-box; }.mxWindow div button.geStyleButton { box-sizing: border-box; }table.mxWindow td.mxWindowPane button.geColorBtn { padding:0px; box-sizing: border-box; }td.mxWindowPane .geSidebarContainer button { padding:2px 0 2px 0; box-sizing: border-box; }html body .geMenuItem { font-size:14px; text-decoration: none; font-weight: normal; padding: 6px 10px 6px 10px; border: none; border-radius: 5px; color: #353535; box-shadow: inset 0 0 0 1px rgba(0,0,0,.11), inset 0 -1px 0 0 rgba(0,0,0,.08), 0 1px 2px 0 rgba(0,0,0,.04); }.geToolbarContainer { background:#fff !important; }div.mxWindow .geSidebarContainer .geTitle { background-color:#fdfdfd; }div.mxWindow .geSidebarContainer .geTitle:hover { background-color:#fafafa; }div.geSidebar { background-color: #fff !important;}div.mxWindow td.mxWindowPane button { background-image: none; float: none; }td.mxWindowTitle { height: 22px !important; background: none !important; font-size: 13px !important; text-align:center !important; border-bottom:1px solid lightgray; }div.mxWindow, div.mxWindowTitle { background-image: none !important; background-color:#fff !important; }div.mxWindow { border-radius:5px; box-shadow: 0px 0px 2px #C0C0C0 !important;}div.mxWindow * { font-family: inherit !important; }html div.geVerticalHandle { position:absolute;bottom:0px;left:50%;cursor:row-resize;width:11px;height:11px;background:white;margin-bottom:-6px; margin-left:-6px; border: none; border-radius: 6px; box-shadow: inset 0 0 0 1px rgba(0,0,0,.11), inset 0 -1px 0 0 rgba(0,0,0,.08), 0 1px 2px 0 rgba(0,0,0,.04); }html div.geInactivePage { background: rgb(249, 249, 249) !important; color:lightgray !important; } html div.geActivePage { background: white !important;color: #353535 !important; } html div.mxRubberband { border:1px solid; border-color: #29b6f2 !important; background:rgba(41,182,242,0.5) !important; } html body div.mxPopupMenu { border-radius:5px; border:1px solid #c0c0c0; padding:5px 0 5px 0; box-shadow: 0px 4px 17px -4px rgba(96,96,96,1); } html table.mxPopupMenu td.mxPopupMenuItem { color: #353535; font-size: 14px; padding-top: 4px; padding-bottom: 4px; }html table.mxPopupMenu tr.mxPopupMenuItemHover { background-color: #29b6f2; }html tr.mxPopupMenuItemHover td.mxPopupMenuItem, html tr.mxPopupMenuItemHover td.mxPopupMenuItem span { color: #fff !important; }html tr.mxPopupMenuItem, html td.mxPopupMenuItem { transition-property: none !important; }html table.mxPopupMenu hr { height: 2px; background-color: rgba(0,0,0,.07); margin: 5px 0; }"+ +(mxClient.IS_IOS?"html input[type=checkbox], html input[type=radio] { height:12px; }":"");document.getElementsByTagName("head")[0].appendChild(e)}catch(y){}var k=function(a,b,c,d,e,f,g){var k=document.createElement("div");k.className="geSidebarContainer";k.style.position="absolute";k.style.width="100%";k.style.height="100%";k.style.border="1px solid whiteSmoke";k.style.overflowX="hidden";k.style.overflowY="auto";g(k);this.window=new mxWindow(b,k,c,d,e,f,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1); +this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.setLocation=function(a,b){var c=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};mxClient.IS_SF&& +(this.window.div.onselectstart=mxUtils.bind(this,function(b){null==b&&(b=window.event);return null!=b&&a.isSelectionAllowed(b)}))};Editor.checkmarkImage=Graph.createSvgImage(22,18,'<path transform="translate(4 0)" d="M7.181,15.007a1,1,0,0,1-.793-0.391L3.222,10.5A1,1,0,1,1,4.808,9.274L7.132,12.3l6.044-8.86A1,1,0,1,1,14.83,4.569l-6.823,10a1,1,0,0,1-.8.437H7.181Z" fill="#29b6f2"/>').src;mxWindow.prototype.closeImage=Graph.createSvgImage(18,10,'<path d="M 5 1 L 13 9 M 13 1 L 5 9" stroke="#C0C0C0" stroke-width="2"/>').src; +mxWindow.prototype.minimizeImage=Graph.createSvgImage(14,10,'<path d="M 3 7 L 7 3 L 11 7" stroke="#C0C0C0" stroke-width="2" fill="#ffffff"/>').src;mxWindow.prototype.normalizeImage=Graph.createSvgImage(14,10,'<path d="M 3 3 L 7 7 L 11 3" stroke="#C0C0C0" stroke-width="2" fill="#ffffff"/>').src;mxConstraintHandler.prototype.pointImage=Graph.createSvgImage(5,5,'<path d="m 0 0 L 5 5 M 0 5 L 5 0" stroke="#29b6f2"/>');mxOutline.prototype.sizerImage=null;mxConstants.VERTEX_SELECTION_COLOR="#C0C0C0";mxConstants.EDGE_SELECTION_COLOR= +"#C0C0C0";mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff";mxConstants.DEFAULT_VALID_COLOR="#29b6f2";mxConstants.GUIDE_COLOR="#C0C0C0";mxConstants.HIGHLIGHT_STROKEWIDTH=5;mxConstants.HIGHLIGHT_OPACITY=35;mxConstants.OUTLINE_COLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_FILLCOLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_STROKECOLOR="#fff";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity="0.4";Graph.prototype.svgShadowSize="0.6";Graph.prototype.svgShadowBlur="1.2";Format.prototype.inactiveTabBackgroundColor= +"#f0f0f0";mxGraphHandler.prototype.previewColor="#C0C0C0";mxRubberband.prototype.defaultOpacity=50;HoverIcons.prototype.inactiveOpacity=25;Format.prototype.showCloseButton=!1;EditorUi.prototype.closableScratchpad=!1;EditorUi.prototype.toolbarHeight=46;EditorUi.prototype.footerHeight=0;Graph.prototype.editAfterInsert=!0;Editor.prototype.isChromelessView=function(){return!1};Graph.prototype.isLightboxView=function(){return!1};var f=EditorUi.prototype.updateTabContainer;EditorUi.prototype.updateTabContainer= +function(){null!=this.tabContainer&&(this.tabContainer.style.right="70px",this.diagramContainer.style.bottom="30px");f.apply(this,arguments)};var l=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){l.apply(this,arguments);this.menus.get("save").setEnabled(null!=this.getCurrentFile()||"1"==urlParams.embed)};var q=Menus.prototype.addShortcut;Menus.prototype.addShortcut=function(b,c){null!=c.shortcut&&900>a&&!mxClient.IS_IOS?b.firstChild.nextSibling.setAttribute("title", +c.shortcut):q.apply(this,arguments)};var p=App.prototype.updateUserElement;App.prototype.updateUserElement=function(){p.apply(this,arguments);if(null!=this.userElement){var a=this.userElement;a.style.cssText="display:inline-block;position:relative;margin-right:4px;cursor:pointer;";a.className="geToolbarButton";a.innerHTML="";a.style.backgroundImage="url("+Editor.userImage+")";a.style.backgroundPosition="center center";a.style.backgroundRepeat="no-repeat";a.style.backgroundSize="24px 24px";a.style.height= +"24px";a.style.width="24px";a.style.cssFloat="right";a.setAttribute("title",mxResources.get("changeUser"))}};var u=App.prototype.updateButtonContainer;App.prototype.updateButtonContainer=function(){u.apply(this,arguments);if(null!=this.shareButton){var a=this.shareButton;a.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;cursor:pointer;";a.className="geToolbarButton";a.innerHTML="";a.style.backgroundImage="url("+Editor.shareImage+")";a.style.backgroundPosition= +"center center";a.style.backgroundRepeat="no-repeat";a.style.backgroundSize="24px 24px";a.style.height="24px";a.style.width="24px"}};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.buttonContainer){var a=document.createElement("div");a.style.display="inline-block";a.style.position="relative";a.style.marginTop="2px";var b=document.createElement("button");mxUtils.write(b,mxResources.get("save"));b.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)");b.className="1"==urlParams.saveAndExit? +"geMenuItem":"geMenuItem gePrimaryBtn";b.style.fontSize="14px";b.style.padding="6px";b.style.borderRadius="3px";b.style.marginLeft="8px";b.style.cursor="pointer";mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()}));a.appendChild(b);"1"==urlParams.saveAndExit&&(b=document.createElement("a"),mxUtils.write(b,mxResources.get("saveAndExit")),b.setAttribute("title",mxResources.get("saveAndExit")),b.className="geMenuItem gePrimaryBtn",b.style.fontSize="14px",b.style.marginLeft= +"6px",b.style.padding="6px",b.style.cursor="pointer",mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b));b=document.createElement("a");mxUtils.write(b,mxResources.get("exit"));b.setAttribute("title",mxResources.get("exit"));b.className="geMenuItem";b.style.fontSize="14px";b.style.marginLeft="6px";b.style.padding="6px";b.style.cursor="pointer";mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})); +a.appendChild(b);this.buttonContainer.appendChild(a);this.buttonContainer.style.top="6px"}};Sidebar.prototype.getTooltipOffset=function(){var a=mxUtils.getOffset(this.editorUi.sidebarWindow.window.div);a.y+=40;return a};var d=Menus.prototype.createPopupMenu;Menus.prototype.createPopupMenu=function(a,b,c){var e=this.editorUi.editor.graph;a.smartSeparators=!0;d.apply(this,arguments);mxUtils.bind(this,function(a,b){var c=new FilenameDialog(this.editorUi,a,mxResources.get("apply"),function(a){b(parseFloat(a))}, +mxResources.get("spacing"));this.editorUi.showDialog(c.container,300,80,!0,!0);c.init()});1==e.getSelectionCount()?(this.addMenuItems(a,["editTooltip","-","editStyle","editGeometry","-"],null,c),e.isCellFoldable(e.getSelectionCell())&&this.addMenuItems(a,e.isCellCollapsed(b)?["expand"]:["collapse"],null,c),this.addMenuItems(a,["collapsible","-","lockUnlock","enterGroup"],null,c),a.addSeparator(),this.addSubmenu("layout",a)):e.isSelectionEmpty()&&e.isEnabled()?(a.addSeparator(),this.addMenuItems(a, +["editData"],null,c),a.addSeparator(),this.addSubmenu("layout",a),this.addSubmenu("view",a,null,mxResources.get("options")),this.addMenuItems(a,["-","exitGroup"],null,c)):e.isEnabled()&&this.addMenuItems(a,["-","lockUnlock"],null,c)};EditorUi.prototype.toggleFormatPanel=function(a){null!=this.formatWindow?this.formatWindow.window.setVisible(a?!1:!this.formatWindow.window.isVisible()):b(this)};DiagramFormatPanel.prototype.isMathOptionVisible=function(){return!0};var g=EditorUi.prototype.destroy;EditorUi.prototype.destroy= +function(){null!=this.sidebarWindow&&(this.sidebarWindow.window.setVisible(!1),this.sidebarWindow.window.destroy(),this.sidebarWindow=null);null!=this.formatWindow&&(this.formatWindow.window.setVisible(!1),this.formatWindow.window.destroy(),this.formatWindow=null);null!=this.actions.outlineWindow&&(this.actions.outlineWindow.window.setVisible(!1),this.actions.outlineWindow.window.destroy(),this.actions.outlineWindow=null);null!=this.actions.layersWindow&&(this.actions.layersWindow.window.setVisible(!1), +this.actions.layersWindow.window.destroy(),this.actions.layersWindow=null);null!=this.menus.tagsWindow&&(this.menus.tagsWindow.window.setVisible(!1),this.menus.tagsWindow.window.destroy(),this.menus.tagsWindow=null);null!=this.menus.findWindow&&(this.menus.findWindow.window.setVisible(!1),this.menus.findWindow.window.destroy(),this.menus.findWindow=null);g.apply(this,arguments)};var m=EditorUi.prototype.setGraphEnabled;EditorUi.prototype.setGraphEnabled=function(a){m.apply(this,arguments);a||(null!= +this.sidebarWindow&&this.sidebarWindow.window.setVisible(!1),null!=this.formatWindow&&this.formatWindow.window.setVisible(!1))};EditorUi.prototype.chromelessWindowResize=function(){};var v=Menus.prototype.init;Menus.prototype.init=function(){v.apply(this,arguments);var a=this.editorUi,d=a.editor.graph;a.actions.get("editDiagram").label=mxResources.get("formatXml")+"...";a.actions.get("createShape").label=mxResources.get("shape")+"...";a.actions.get("outline").label=mxResources.get("outline")+"..."; +a.actions.get("layers").label=mxResources.get("layers")+"...";a.actions.put("importFile",new Action("File...",function(){d.popupMenuHandler.hideMenu();var b=document.createElement("input");b.setAttribute("type","file");mxEvent.addListener(b,"change",function(){null!=b.files&&a.importFiles(b.files,null,null,a.maxImageSize)});b.click()}));a.actions.put("importCsv",new Action(mxResources.get("csv")+"...",function(){d.popupMenuHandler.hideMenu();a.showImportCsvDialog()}));a.actions.put("importText",new Action(mxResources.get("text")+ +"...",function(){var b=new ParseDialog(a,"Insert from Text");a.showDialog(b.container,620,420,!0,!1);b.init()}));a.actions.put("formatSql",new Action(mxResources.get("formatSql")+"...",function(){var b=new ParseDialog(a,"Insert from Text","formatSql");a.showDialog(b.container,620,420,!0,!1);b.init()}));a.actions.put("toggleShapes",new Action(mxResources.get("shapes")+"...",function(){c(a)}));a.actions.put("toggleFormat",new Action(mxResources.get("format")+"...",function(){b(a)}));EditorUi.enablePlantUml&& +!a.isOffline()&&a.actions.put("plantUml",new Action(mxResources.get("plantUml")+"...",function(){var b=new ParseDialog(a,"Insert from Text","plantUml");a.showDialog(b.container,620,420,!0,!1);b.init()}));this.put("diagram",new Menu(mxUtils.bind(this,function(b,c){var d=a.getCurrentFile();a.menus.addSubmenu("extras",b,c,mxResources.get("preferences"));b.addSeparator(c);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?(a.menus.addMenuItems(b,["new","open","-"],c),EditorUi.isElectronApp&&a.menus.addMenuItems(b, +["synchronize","-"],c),a.menus.addMenuItems(b,["save","saveAs","-"],c)):"1"==urlParams.embed?(a.menus.addMenuItems(b,["-","save"],c),"1"==urlParams.saveAndExit&&a.menus.addMenuItems(b,["saveAndExit"],c),b.addSeparator(c)):(a.menus.addMenuItems(b,["new"],c),a.menus.addSubmenu("openFrom",b,c),isLocalStorage&&this.addSubmenu("openRecent",b,c),b.addSeparator(c),null!=d&&d.constructor==DriveFile&&a.menus.addMenuItems(b,["share"],c),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null==d||d.constructor== +LocalFile||a.menus.addMenuItems(b,["synchronize"],c),b.addSeparator(c),a.menus.addSubmenu("save",b,c));a.menus.addSubmenu("exportAs",b,c);a.menus.addMenuItems(b,"- outline layers - find tags".split(" "),c);mxClient.IS_IOS&&navigator.standalone||a.menus.addMenuItems(b,["-","print","-"],c);a.menus.addSubmenu("help",b,c);"1"==urlParams.embed?a.menus.addMenuItems(b,["-","exit"],c):a.menus.addMenuItems(b,["-","close"])})));this.put("save",new Menu(mxUtils.bind(this,function(b,c){var d=a.getCurrentFile(); +null!=d&&d.constructor==DriveFile?a.menus.addMenuItems(b,["save","makeCopy","-","rename","moveToFolder"],c):(a.menus.addMenuItems(b,["save","saveAs","-","rename"],c),a.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&this.addMenuItems(b,["upload"],c):a.menus.addMenuItems(b,["makeCopy"],c));a.menus.addMenuItems(b,["-","autosave"],c);null!=d&&d.isRevisionHistorySupported()&&a.menus.addMenuItems(b,["-","revisionHistory"],c)})));var e=this.get("exportAs");this.put("exportAs",new Menu(mxUtils.bind(this, +function(b,c){e.funct(b,c);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||a.menus.addMenuItems(b,["publishLink"],c);b.addSeparator(c);a.menus.addSubmenu("embed",b,c)})));var f=this.get("language");this.put("extras",new Menu(mxUtils.bind(this,function(b,c){"1"!=urlParams.embed&&a.menus.addSubmenu("theme",b,c);null!=f&&a.menus.addSubmenu("language",b,c);b.addSeparator(c);a.menus.addMenuItems(b,["scrollbars","tooltips"],c);"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&a.menus.addMenuItems(b, +["-","search","scratchpad","-","showStartScreen"],c);!a.isOfflineApp()&&isLocalStorage&&(b.addSeparator(c),a.menus.addMenuItem(b,"plugins",c));b.addSeparator(c)})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,function(b,c){a.menus.addMenuItems(b,"importText plantUml - formatSql importCsv - createShape editDiagram".split(" "),c)})));mxResources.parse("insertLayout="+mxResources.get("layout"));mxResources.parse("insertAdvanced="+mxResources.get("advanced"));this.put("insert",new Menu(mxUtils.bind(this, +function(b,c){a.menus.addMenuItems(b,"insertRectangle insertEllipse insertRhombus - insertText insertLink - insertImage".split(" "),c);a.insertTemplateEnabled&&!a.isOffline()&&a.menus.addMenuItems(b,["insertTemplate"],c);b.addSeparator(c);a.menus.addSubmenu("insertLayout",b,c);a.menus.addSubmenu("insertAdvanced",b,c);b.addSeparator(c);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?a.menus.addMenuItems(b,["import"],c):a.menus.addSubmenu("importFrom",b,c)})));var g="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "), +k=function(b,c,d,e){b.addItem(d,null,mxUtils.bind(this,function(){var b=new CreateGraphDialog(a,d,e);a.showDialog(b.container,620,420,!0,!1);b.init()}),c)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(a,b){for(var c=0;c<g.length;c++)"-"==g[c]?a.addSeparator(b):k(a,b,mxResources.get(g[c])+"...",g[c])})));this.put("view",new Menu(mxUtils.bind(this,function(b,c){a.menus.addMenuItems(b,"grid guides - connectionArrows connectionPoints -".split(" "),c);if("undefined"!==typeof MathJax){var d= +a.menus.addMenuItem(b,"mathematicalTypesetting",c);a.menus.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000032875")}a.menus.addMenuItems(b,["copyConnect","collapseExpand","-","pageScale"],c)})))};var t=EditorUi.prototype.init;EditorUi.prototype.init=function(){function b(a,b,c){var d=k.menus.get(a),e=q.addMenu(mxResources.get(a),mxUtils.bind(this,function(){d.funct.apply(this,arguments)}),p);e.className="geMenuItem";e.style.display="inline-block";e.style.boxSizing="border-box"; +e.style.top="6px";e.style.marginRight="6px";e.style.height="30px";e.style.paddingTop="6px";e.style.paddingBottom="6px";e.style.cursor="pointer";e.setAttribute("title",mxResources.get(a));k.menus.menuCreated(d,e,"geMenuItem");null!=c?(e.style.backgroundImage="url("+c+")",e.style.backgroundPosition="center center",e.style.backgroundRepeat="no-repeat",e.style.backgroundSize="24px 24px",e.style.width="34px",e.innerHTML=""):b||(e.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",e.style.backgroundPosition= +"right 6px center",e.style.backgroundRepeat="no-repeat",e.style.paddingRight="22px");return e}function d(a,b,c,d,e,f){var g=document.createElement("a");g.className="geMenuItem";g.style.display="inline-block";g.style.boxSizing="border-box";g.style.height="30px";g.style.padding="6px";g.style.position="relative";g.style.verticalAlign="top";g.style.top="0px";null!=k.statusContainer?m.insertBefore(g,k.statusContainer):m.appendChild(g);null!=f?(g.style.backgroundImage="url("+f+")",g.style.backgroundPosition= +"center center",g.style.backgroundRepeat="no-repeat",g.style.backgroundSize="24px 24px",g.style.width="34px"):mxUtils.write(g,a);mxEvent.addListener(g,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(g,"click",function(a){"disabled"!=g.getAttribute("disabled")&&b(a);mxEvent.consume(a)});null==c&&(g.style.marginRight="4px");null!=d&&g.setAttribute("title",d);null!=e&&(a=function(){e.isEnabled()?(g.removeAttribute("disabled"),g.style.cursor= +"pointer"):(g.setAttribute("disabled","disabled"),g.style.cursor="default")},e.addListener("stateChanged",a),a());return g}function e(a,b){var c=document.createElement("div");c.className="geMenuItem";c.style.display="inline-block";c.style.verticalAlign="top";c.style.marginRight="6px";c.style.padding="0 4px 0 4px";c.style.height="30px";c.style.position="relative";c.style.top="0px";for(var d=0;d<a.length;d++)null!=a[d]&&(a[d].style.margin="0px",a[d].style.boxShadow="none",c.appendChild(a[d]));null!= +b&&mxUtils.setOpacity(c,b);null!=k.statusContainer?m.insertBefore(c,k.statusContainer):m.appendChild(c);return c}function f(){for(var c=m.firstChild;null!=c;){var f=c.nextSibling;"geMenuItem"!=c.className&&"geItem"!=c.className||c.parentNode.removeChild(c);c=f}p=m.firstChild;a=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;(c=1E3>a)||b("diagram");e([c?b("diagram",null,IMAGE_PATH+"/drawlogo.svg"):null,d(mxResources.get("shapes"),k.actions.get("toggleShapes").funct, +null,mxResources.get("shapes"),k.actions.get("image"),c?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTMgMTN2OGg4di04aC04ek0zIDIxaDh2LThIM3Y4ek0zIDN2OGg4VjNIM3ptMTMuNjYtMS4zMUwxMSA3LjM0IDE2LjY2IDEzbDUuNjYtNS42Ni01LjY2LTUuNjV6Ii8+PC9zdmc+":null),d(mxResources.get("format"),k.actions.get("toggleFormat").funct,null,mxResources.get("format")+" ("+k.actions.get("formatPanel").shortcut+")",k.actions.get("image"), +c?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIgM2MtNC45NyAwLTkgNC4wMy05IDlzNC4wMyA5IDkgOWMuODMgMCAxLjUtLjY3IDEuNS0xLjUgMC0uMzktLjE1LS43NC0uMzktMS4wMS0uMjMtLjI2LS4zOC0uNjEtLjM4LS45OSAwLS44My42Ny0xLjUgMS41LTEuNUgxNmMyLjc2IDAgNS0yLjI0IDUtNSAwLTQuNDItNC4wMy04LTktOHptLTUuNSA5Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNS42NyA5IDYuNSA5IDggOS42NyA4IDEwLjUgNy4zMyAxMiA2LjUgMTJ6bTMtNEM4LjY3IDggOCA3LjMzIDggNi41UzguNjcgNSA5LjUgNXMxLjUuNjcgMS41IDEuNVMxMC4zMyA4IDkuNSA4em01IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxMy42NyA1IDE0LjUgNXMxLjUuNjcgMS41IDEuNVMxNS4zMyA4IDE0LjUgOHptMyA0Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTYuNjcgOSAxNy41IDlzMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41eiIvPjwvc3ZnPg==": +null)],c?60:null);f=b("insert",!0,c?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgMTNoLTZ2NmgtMnYtNkg1di0yaDZWNWgydjZoNnYyeiIvPjwvc3ZnPg==":null);e([f,d(mxResources.get("delete"),k.actions.get("delete").funct,null,mxResources.get("delete"),k.actions.get("delete"),c?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek0xOSA0aC0zLjVsLTEtMWgtNWwtMSAxSDV2MmgxNFY0eiIvPjwvc3ZnPg==": +null)],c?60:null);if(411<=a&&(f=k.actions.get("undo"),c=k.actions.get("redo"),f=d("",f.funct,null,mxResources.get("undo")+" ("+f.shortcut+")",f,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIuNSA4Yy0yLjY1IDAtNS4wNS45OS02LjkgMi42TDIgN3Y5aDlsLTMuNjItMy42MmMxLjM5LTEuMTYgMy4xNi0xLjg4IDUuMTItMS44OCAzLjU0IDAgNi41NSAyLjMxIDcuNiA1LjVsMi4zNy0uNzhDMjEuMDggMTEuMDMgMTcuMTUgOCAxMi41IDh6Ii8+PC9zdmc+"),c=d("", +c.funct,null,mxResources.get("redo")+" ("+c.shortcut+")",c,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTguNCAxMC42QzE2LjU1IDguOTkgMTQuMTUgOCAxMS41IDhjLTQuNjUgMC04LjU4IDMuMDMtOS45NiA3LjIyTDMuOSAxNmMxLjA1LTMuMTkgNC4wNS01LjUgNy42LTUuNSAxLjk1IDAgMy43My43MiA1LjEyIDEuODhMMTMgMTZoOVY3bC0zLjYgMy42eiIvPjwvc3ZnPg=="),e([f,c],60),480<=a)){var c=k.actions.get("zoomIn"),f=k.actions.get("zoomOut"),g=k.actions.get("resetView"); +e([d("",function(){l.popupMenuHandler.hideMenu();var a=l.view.scale,b=l.view.translate.x,c=l.view.translate.y;k.actions.get("resetView").funct();1E-5>Math.abs(a-l.view.scale)&&b==l.view.translate.x&&c==l.view.translate.y&&k.actions.get(l.pageVisible?"fitPage":"fitWindow").funct()},!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",g,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMyA1djRoMlY1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnptMiAxMEgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6bTE0IDRoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6bTAtMTZoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yeiIvPjwvc3ZnPg=="), +640<=a?d("",c.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",c,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHptMi41LTRoLTJ2Mkg5di0ySDdWOWgyVjdoMXYyaDJ2MXoiLz48L3N2Zz4="): +null,640<=a?d("",f.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",f,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpNNyA5aDV2MUg3eiIvPjwvc3ZnPg=="): +null],60)}c=k.menus.get("language");null!=c&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=a?(null==M&&(f=q.addMenu("",c.funct),f.setAttribute("title",mxResources.get("language")),f.className="geToolbarButton",f.style.backgroundImage="url("+Editor.globeImage+")",f.style.backgroundPosition="center center",f.style.backgroundRepeat="no-repeat",f.style.backgroundSize="24px 24px",f.style.position="absolute",f.style.height="24px",f.style.width="24px",f.style.zIndex="1",f.style.top="11px",f.style.right= +"8px",f.style.cursor="pointer",m.appendChild(f),M=f),k.buttonContainer.style.paddingRight="34px"):(k.buttonContainer.style.paddingRight="4px",null!=M&&(M.parentNode.removeChild(M),M=null))}t.apply(this,arguments);var g=document.createElement("div");g.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";g.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(g);urlParams.clibs&&c(this);var k=this,l=k.editor.graph; +k.toolbar=this.createToolbar(k.createDiv("geToolbar"));k.defaultLibraryName=mxResources.get("untitledLibrary");var m=document.createElement("div");m.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;border-bottom:1px solid lightgray;background-color:#ffffff;text-align:left;white-space:nowrap;";var p=null,q=new Menubar(k,m);k.statusContainer=k.createStatusContainer();k.statusContainer.style.position="relative";k.statusContainer.style.maxWidth="";k.statusContainer.style.marginTop= +"7px";k.statusContainer.style.marginLeft="6px";k.statusContainer.style.color="gray";k.statusContainer.style.cursor="default";k.editor.addListener("statusChanged",mxUtils.bind(this,function(){k.setStatusText(k.editor.getStatus())}));var u=k.descriptorChanged;k.descriptorChanged=function(){u.apply(this,arguments);var a=k.getCurrentFile();if(null!=a&&null!=a.getTitle()){var b=a.getMode();"google"==b?b="googleDrive":"github"==b?b="gitHub":"onedrive"==b&&(b="oneDrive");b=mxResources.get(b);m.setAttribute("title", +a.getTitle()+(null!=b?" ("+b+")":""))}else m.removeAttribute("title")};k.setStatusText(k.editor.getStatus());m.appendChild(k.statusContainer);k.buttonContainer=document.createElement("div");k.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";m.appendChild(k.buttonContainer);k.menubarContainer=k.buttonContainer;k.tabContainer=document.createElement("div");k.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;border-bottom:1px solid lightgray;background-color:#ffffff;border-top:1px solid lightgray;margin-bottom:-2px;visibility:hidden;"; +var g=k.diagramContainer.parentNode,v=document.createElement("div");v.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";k.diagramContainer.style.top="47px";var I=k.menus.get("viewZoom");if(null!=I){this.tabContainer.style.right="70px";var C=q.addMenu("100%",I.funct);C.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");C.style.whiteSpace="nowrap";C.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";C.style.backgroundPosition="right 6px center"; +C.style.backgroundRepeat="no-repeat";C.style.backgroundColor="#ffffff";C.style.paddingRight="10px";C.style.display="block";C.style.position="absolute";C.style.textDecoration="none";C.style.textDecoration="none";C.style.right="0px";C.style.bottom="0px";C.style.overflow="hidden";C.style.visibility="hidden";C.style.textAlign="center";C.style.color="#000";C.style.fontSize="12px";C.style.color="#707070";C.style.width="59px";C.style.borderTop="1px solid lightgray";C.style.borderLeft="1px solid lightgray"; +C.style.height=parseInt(k.tabContainer.style.height)-1+"px";C.style.lineHeight=parseInt(k.tabContainer.style.height)+1+"px";v.appendChild(C);I=mxUtils.bind(this,function(){C.innerHTML=Math.round(100*k.editor.graph.view.scale)+"%"});k.editor.graph.view.addListener(mxEvent.EVENT_SCALE,I);k.editor.addListener("resetGraphView",I);k.editor.addListener("pageSelected",I);var J=k.setGraphEnabled;k.setGraphEnabled=function(){J.apply(this,arguments);null!=this.tabContainer&&(C.style.visibility=this.tabContainer.style.visibility, +this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?"30px":"0px")}}v.appendChild(k.tabContainer);v.appendChild(m);v.appendChild(k.diagramContainer);g.appendChild(v);k.updateTabContainer();var M=null;f();mxEvent.addListener(window,"resize",function(){f();null!=k.sidebarWindow&&k.sidebarWindow.window.fit();null!=k.formatWindow&&k.formatWindow.window.fit();null!=k.actions.outlineWindow&&k.actions.outlineWindow.window.fit();null!=k.actions.layersWindow&&k.actions.layersWindow.window.fit(); +null!=k.menus.tagsWindow&&k.menus.tagsWindow.window.fit();null!=k.menus.findWindow&&k.menus.findWindow.window.fit()})}}};(function(){var b=!1;"min"!=uiTheme||b||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),b=!0);var c=EditorUi.initTheme;EditorUi.initTheme=function(){c.apply(this,arguments);"min"!=uiTheme||b||(this.initMinimalTheme(),b=!0)}})();(function(){var b=mxGuide.prototype.move;mxGuide.prototype.move=function(a,c,f,l){var e=c.y,k=c.x,u=!1,d=!1;if(null!=this.states&&null!=a&&null!=c){var g=this,m=new mxCellState,v=this.graph.getView().scale,t=Math.max(2,this.getGuideTolerance()/2);m.x=a.x+k;m.y=a.y+e;m.width=a.width;m.height=a.height;for(var y=[],B=[],n=0;n<this.states.length;n++){var x=this.states[n];x instanceof mxCellState&&(l||!this.graph.isCellSelected(x.cell))&&((m.x>=x.x&&m.x<=x.x+x.width||x.x>=m.x&&x.x<=m.x+m.width)&&(m.y> +x.y+x.height+4||m.y+m.height+4<x.y)?y.push(x):(m.y>=x.y&&m.y<=x.y+x.height||x.y>=m.y&&x.y<=m.y+m.height)&&(m.x>x.x+x.width+4||m.x+m.width+4<x.x)&&B.push(x))}var z=0,A=0,F=x=0,E=0,G=0,H=0,D=0,K=5*v;if(1<y.length){y.push(m);y.sort(function(a,b){return a.y-b.y});var I=!1,n=m==y[0],v=m==y[y.length-1];if(!n&&!v)for(n=1;n<y.length-1;n++)if(m==y[n]){v=y[n-1];n=y[n+1];x=A=F=(n.y-v.y-v.height-m.height)/2;break}for(n=0;n<y.length-1;n++){var v=y[n],C=y[n+1],J=m==v||m==C,C=C.y-v.y-v.height,I=I|m==v;if(0==A&& +0==z)A=C,z=1;else if(Math.abs(A-C)<=(J||1==n&&I?t:0))z+=1;else if(1<z&&I){y=y.slice(0,n+1);break}else if(3<=y.length-n&&!I)z=0,x=A=0!=F?F:0,y.splice(0,0==n?1:n),n=-1;else break;0!=x||J||(A=x=C)}3==y.length&&y[1]==m&&(x=0)}if(1<B.length){B.push(m);B.sort(function(a,b){return a.x-b.x});I=!1;n=m==B[0];v=m==B[B.length-1];if(!n&&!v)for(n=1;n<B.length-1;n++)if(m==B[n]){v=B[n-1];n=B[n+1];H=G=D=(n.x-v.x-v.width-m.width)/2;break}for(n=0;n<B.length-1;n++){v=B[n];C=B[n+1];J=m==v||m==C;C=C.x-v.x-v.width;I|=m== +v;if(0==G&&0==E)G=C,E=1;else if(Math.abs(G-C)<=(J||1==n&&I?t:0))E+=1;else if(1<E&&I){B=B.slice(0,n+1);break}else if(3<=B.length-n&&!I)E=0,H=G=0!=D?D:0,B.splice(0,0==n?1:n),n=-1;else break;0!=H||J||(G=H=C)}3==B.length&&B[1]==m&&(H=0)}t=function(a,b,c,d){var e=[],f;d?(d=K,f=0):(d=0,f=K);e.push(new mxPoint(a.x-d,a.y-f));e.push(new mxPoint(a.x+d,a.y+f));e.push(a);e.push(b);e.push(new mxPoint(b.x-d,b.y-f));e.push(new mxPoint(b.x+d,b.y+f));if(null!=c)return c.points=e,c;a=new mxPolyline(e,mxConstants.GUIDE_COLOR, +mxConstants.GUIDE_STROKEWIDTH);a.dialect=mxConstants.DIALECT_SVG;a.pointerEvents=!1;a.init(g.graph.getView().getOverlayPane());return a};G=function(a,b){if(a&&null!=g.guidesArrHor)for(var c=0;c<g.guidesArrHor.length;c++)g.guidesArrHor[c].node.style.visibility="hidden";if(b&&null!=g.guidesArrVer)for(c=0;c<g.guidesArrVer.length;c++)g.guidesArrVer[c].node.style.visibility="hidden"};if(1<E&&E==B.length-1){E=[];D=g.guidesArrHor;u=[];k=0;n=B[0]==m?1:0;I=B[n].y+B[n].height;if(0<H)for(n=0;n<B.length-1;n++)v= +B[n],C=B[n+1],m==v?(k=C.x-v.width-H,u.push(new mxPoint(k+v.width+K,I)),u.push(new mxPoint(C.x-K,I))):m==C?(u.push(new mxPoint(v.x+v.width+K,I)),k=v.x+v.width+H,u.push(new mxPoint(k-K,I))):(u.push(new mxPoint(v.x+v.width+K,I)),u.push(new mxPoint(C.x-K,I)));else v=B[0],n=B[2],k=v.x+v.width+(n.x-v.x-v.width-m.width)/2,u.push(new mxPoint(v.x+v.width+K,I)),u.push(new mxPoint(k-K,I)),u.push(new mxPoint(k+m.width+K,I)),u.push(new mxPoint(n.x-K,I));for(n=0;n<u.length;n+=2)B=u[n],H=u[n+1],B=t(B,H,null!=D? +D[n/2]:null),B.node.style.visibility="visible",B.redraw(),E.push(B);for(n=u.length/2;null!=D&&n<D.length;n++)D[n].destroy();g.guidesArrHor=E;k-=a.x;u=!0}else G(!0);if(1<z&&z==y.length-1){E=[];D=g.guidesArrVer;d=[];e=0;n=y[0]==m?1:0;z=y[n].x+y[n].width;if(0<x)for(n=0;n<y.length-1;n++)v=y[n],C=y[n+1],m==v?(e=C.y-v.height-x,d.push(new mxPoint(z,e+v.height+K)),d.push(new mxPoint(z,C.y-K))):m==C?(d.push(new mxPoint(z,v.y+v.height+K)),e=v.y+v.height+x,d.push(new mxPoint(z,e-K))):(d.push(new mxPoint(z,v.y+ +v.height+K)),d.push(new mxPoint(z,C.y-K)));else v=y[0],n=y[2],e=v.y+v.height+(n.y-v.y-v.height-m.height)/2,d.push(new mxPoint(z,v.y+v.height+K)),d.push(new mxPoint(z,e-K)),d.push(new mxPoint(z,e+m.height+K)),d.push(new mxPoint(z,n.y-K));for(n=0;n<d.length;n+=2)B=d[n],H=d[n+1],B=t(B,H,null!=D?D[n/2]:null,!0),B.node.style.visibility="visible",B.redraw(),E.push(B);for(n=d.length/2;null!=D&&n<D.length;n++)D[n].destroy();g.guidesArrVer=E;e-=a.y;d=!0}else G(!1,!0)}if(u||d)return m=new mxPoint(k,e),y=b.call(this, +a,m,f,l),u&&!d?m.y=y.y:d&&!u&&(m.x=y.x),y.y!=m.y&&null!=this.guideY&&null!=this.guideY.node&&(this.guideY.node.style.visibility="hidden"),y.x!=m.x&&null!=this.guideX&&null!=this.guideX.node&&(this.guideX.node.style.visibility="hidden"),m;G(!0,!0);return b.apply(this,arguments)};var c=mxGuide.prototype.setVisible;mxGuide.prototype.setVisible=function(a){c.call(this,a);var b=this.guidesArrVer,e=this.guidesArrHor;if(null!=b)for(var l=0;l<b.length;l++)b[l].node.style.visibility=a?"visible":"hidden";if(null!= +e)for(l=0;l<e.length;l++)e[l].node.style.visibility=a?"visible":"hidden"};var a=mxGuide.prototype.destroy;mxGuide.prototype.destroy=function(){a.call(this);var b=this.guidesArrVer,c=this.guidesArrHor;if(null!=b){for(var f=0;f<b.length;f++)b[f].destroy();this.guidesArrVer=null}if(null!=c){for(f=0;f<c.length;f++)c[f].destroy();this.guidesArrHor=null}}})();Graph.prototype.defaultThemes[Graph.prototype.defaultThemeName]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="#ffffff"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#ffffff"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="white"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="#ffffff"/></add></mxStylesheet>').documentElement; Graph.prototype.defaultThemes.darkTheme=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="#2a2a2a"/><add as="strokeColor" value="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="#2a2a2a"/></add></mxStylesheet>').documentElement; LucidImporter={}; (function(){function c(a){var b=null!=a.Text?a.Text:null!=a.Value?a.Value:a.Lane_0;null==b&&null!=a.State?null!=a.State.t&&(b=a.State):null==b&&null!=a.Note?null!=a.Note.t&&(b=a.Note):null==b&&null!=a.Title?null!=a.Title.t&&(b=a.Title):null!=a.t&&(b=a);null==b&&null!=a.TextAreas&&null!=a.TextAreas.Text&&null!=a.TextAreas.Text.Value&&null!=a.TextAreas.Text.Value.t&&(b=a.TextAreas.Text.Value);if(null!=b){if(null!=b.t)return b.t=b.t.replace(/</g,"<"),b.t=b.t.replace(/>/g,">"),b.t;if(null!=b.Value&& diff --git a/src/main/webapp/js/diagramly/App.js b/src/main/webapp/js/diagramly/App.js index 85d4e097..664ed98d 100644 --- a/src/main/webapp/js/diagramly/App.js +++ b/src/main/webapp/js/diagramly/App.js @@ -669,15 +669,20 @@ App.main = function(callback, createUi) } }, function(xhr) { - document.getElementById('geStatus').innerHTML = 'Error loading page. <a>Please try refreshing.</a>'; + var st = document.getElementById('geStatus'); - // Tries reload with default resources in case any language resources were not available - document.getElementById('geStatus').getElementsByTagName('a')[0].onclick = function() + if (st != null) { - mxLanguage = 'en'; - doLoad(mxResources.getDefaultBundle(RESOURCE_BASE, mxLanguage) || - mxResources.getSpecialBundle(RESOURCE_BASE, mxLanguage)); - }; + st.innerHTML = 'Error loading page. <a>Please try refreshing.</a>'; + + // Tries reload with default resources in case any language resources were not available + st.getElementsByTagName('a')[0].onclick = function() + { + mxLanguage = 'en'; + doLoad(mxResources.getDefaultBundle(RESOURCE_BASE, mxLanguage) || + mxResources.getSpecialBundle(RESOURCE_BASE, mxLanguage)); + }; + } }); }; @@ -1062,6 +1067,28 @@ App.prototype.init = function() { this.mode = App.mode; } + + // Checks if the cache is alive + var acceptResponse = true; + + var timeoutThread = window.setTimeout(mxUtils.bind(this, function() + { + acceptResponse = false; + EditorUi.logEvent({category: 'Cache', action: 'alive', label: 408}); + }), this.timeout); + + var t0 = new Date().getTime(); + + mxUtils.get(EditorUi.cacheUrl + '?alive', mxUtils.bind(this, function(req) + { + window.clearTimeout(timeoutThread); + + if (acceptResponse) + { + EditorUi.logEvent({category: 'Cache', action: 'alive', label: + req.getStatus() + '.' + (new Date().getTime() - t0)}); + } + })); } else if (this.menubar != null) { @@ -1103,7 +1130,6 @@ App.prototype.init = function() this.menubar.container.insertBefore(this.icon, this.menubar.container.firstChild); } - }; /** @@ -1711,25 +1737,11 @@ App.prototype.createBackground = function() { Editor.useLocalStorage = this.mode == App.MODE_BROWSER; } - - if (remember) - { - if (isLocalStorage) - { - localStorage.setItem('.mode', mode); - } - else if (typeof(Storage) != 'undefined') - { - var expiry = new Date(); - expiry.setYear(expiry.getFullYear() + 1); - document.cookie = 'MODE=' + mode + '; expires=' + expiry.toUTCString(); - } - } - + if (this.appIcon != null) { var file = this.getCurrentFile(); - var mode = (file != null) ? file.getMode() : null; + mode = (file != null) ? file.getMode() : mode; if (mode == App.MODE_GOOGLE) { @@ -1752,6 +1764,27 @@ App.prototype.createBackground = function() this.appIcon.style.cursor = 'default'; } } + + if (remember) + { + try + { + if (isLocalStorage) + { + localStorage.setItem('.mode', mode); + } + else if (typeof(Storage) != 'undefined') + { + var expiry = new Date(); + expiry.setYear(expiry.getFullYear() + 1); + document.cookie = 'MODE=' + mode + '; expires=' + expiry.toUTCString(); + } + } + catch (e) + { + // ignore possible access denied + } + } }; })(); @@ -3036,9 +3069,9 @@ App.prototype.saveFile = function(forceDialog, success) this.pickFolder(mode, mxUtils.bind(this, function(folderId) { this.createFile(name, this.getFileData(/(\.xml)$/i.test(name) || - name.indexOf('.') < 0, /(\.svg)$/i.test(name), - /(\.html)$/i.test(name)), null, mode, done, - this.mode == null, folderId); + name.indexOf('.') < 0 || /(\.drawio)$/i.test(name), + /(\.svg)$/i.test(name), /(\.html)$/i.test(name)), + null, mode, done, this.mode == null, folderId); })); } else if (mode != null) @@ -3604,7 +3637,8 @@ App.prototype.loadFile = function(id, sameWindow, file, success, force) } if (ext === '.svg' || ext === '.xml' || - ext === '.html' || ext === '.png') + ext === '.html' || ext === '.png' || + ext === '.drawio') { filename = tmp + ext; } @@ -4045,47 +4079,6 @@ App.prototype.updateButtonContainer = function() { var file = this.getCurrentFile(); - // Synchronize - if (file != null && (DrawioFile.SYNC == 'manual' || - DrawioFile.SYNC == 'auto')) - { - var visible = ((DrawioFile.SYNC == 'manual' || - (file.sync != null && !file.sync.enabled && - uiTheme != 'min')) && - (file.constructor == DriveFile || - file.constructor == OneDriveFile)) || - file.constructor == GitHubFile || - EditorUi.isElectronApp; - - if (this.syncButton == null && visible) - { - this.syncButton = document.createElement('div'); - this.syncButton.className = 'geBtn gePrimaryBtn'; - this.syncButton.style.display = 'inline-block'; - this.syncButton.style.padding = '0 10px 0 10px'; - this.syncButton.style.marginTop = '-4px'; - this.syncButton.style.height = '28px'; - this.syncButton.style.lineHeight = '28px'; - this.syncButton.style.minWidth = '0px'; - this.syncButton.style.cssFloat = 'left'; - this.syncButton.setAttribute('title', mxResources.get('synchronize') + ' (Alt+Shift+S)'); - - mxUtils.write(this.syncButton, mxResources.get('synchronize')); - - mxEvent.addListener(this.syncButton, 'click', mxUtils.bind(this, function() - { - this.actions.get('synchronize').funct(); - })); - - this.buttonContainer.appendChild(this.syncButton); - } - else if (this.syncButton != null && !visible) - { - this.syncButton.parentNode.removeChild(this.syncButton); - this.syncButton = null; - } - } - // Share if (file != null && file.constructor == DriveFile) { diff --git a/src/main/webapp/js/diagramly/Dialogs.js b/src/main/webapp/js/diagramly/Dialogs.js index 4a9c0492..0dc422f3 100644 --- a/src/main/webapp/js/diagramly/Dialogs.js +++ b/src/main/webapp/js/diagramly/Dialogs.js @@ -17,7 +17,7 @@ var StorageDialog = function(editorUi, fn, rowLimit) if (elt != null) { - elt.style.bottom = parseInt(bottom) - 2 + 'px'; + elt.style.bottom = parseInt(bottom) - 3 + 'px'; } if (!editorUi.isOffline() && editorUi.getServiceCount() > 1) @@ -444,7 +444,13 @@ var SplashDialog = function(editorUi) var div = document.createElement('div'); div.style.textAlign = 'center'; - editorUi.addLanguageMenu(div, true); + var elt = editorUi.addLanguageMenu(div, true); + + if (elt != null) + { + elt.style.bottom = '19px'; + } + var help = null; var serviceCount = editorUi.getServiceCount(); @@ -739,7 +745,7 @@ var SplashDialog = function(editorUi) link.setAttribute('href', 'javascript:void(0)'); link.style.display = 'inline-block'; link.style.marginTop = '8px'; - mxUtils.write(link, mxResources.get('notUsingService', [storage])); + mxUtils.write(link, mxResources.get('changeStorage')); mxEvent.addListener(link, 'click', function() { @@ -993,11 +999,19 @@ var EmbedDialog = function(editorUi, result, timeout, ignoreSize, previewFn, tit else { var wnd = window.open(); - var doc = wnd.document; - doc.writeln('<html><head><title>' + encodeURIComponent(mxResources.get('preview')) + + var doc = (wnd != null) ? wnd.document : null; + + if (doc != null) + { + doc.writeln('<html><head><title>' + encodeURIComponent(mxResources.get('preview')) + '</title><meta charset="utf-8"></head>' + '<body>' + result + '</body></html>'); - doc.close(); + doc.close(); + } + else + { + editorUi.handleError({message: mxResources.get('errorUpdatingPreview')}); + } } } }); @@ -3412,7 +3426,7 @@ var NewDialog = function(editorUi, compact, showName, callback, createOnly, canc * Constructs a dialog for creating new files from a template URL. */ var CreateDialog = function(editorUi, title, createFn, cancelFn, dlgTitle, btnLabel, overrideExtension, - allowBrowser, allowTab, helpLink, showDeviceButton, rowLimit, data, mimeType, base64Encoded) + allowBrowser, allowTab, helpLink, showDeviceButton, rowLimit, data, mimeType, base64Encoded) { overrideExtension = (overrideExtension != null) ? overrideExtension : true; allowBrowser = (allowBrowser != null) ? allowBrowser : true; @@ -3842,6 +3856,17 @@ var CreateDialog = function(editorUi, title, createFn, cancelFn, dlgTitle, btnLa btns.appendChild(openBtn); } + if (CreateDialog.showDownloadButton) + { + var downloadButton = mxUtils.button(mxResources.get('download'), function() + { + create('download'); + }); + + downloadButton.className = 'geBtn'; + btns.appendChild(downloadButton); + } + if (/*!mxClient.IS_IOS || */!showButtons) { var createBtn = mxUtils.button(btnLabel || mxResources.get('create'), function() @@ -3878,6 +3903,11 @@ var CreateDialog = function(editorUi, title, createFn, cancelFn, dlgTitle, btnLa }; /** + * + */ +CreateDialog.showDownloadButton = true; + +/** * Constructs a new popup dialog. */ var PopupDialog = function(editorUi, url, pre, fallback, hideDialog) diff --git a/src/main/webapp/js/diagramly/DiffSync.js b/src/main/webapp/js/diagramly/DiffSync.js index c147f1b7..6955b033 100644 --- a/src/main/webapp/js/diagramly/DiffSync.js +++ b/src/main/webapp/js/diagramly/DiffSync.js @@ -454,11 +454,22 @@ EditorUi.prototype.patchCellRecursive = function(page, model, cell, parentLookup prev = cellId; } - - var addCell = mxUtils.bind(this, function(child) + + var addCell = mxUtils.bind(this, function(child, insert) { var id = (child != null) ? child.getId() : ''; + // Ignores the insert if the cell is already in the model + if (child != null && insert) + { + var ex = model.getCell(id); + + if (ex != null && ex != child) + { + child = null; + } + } + if (child != null) { if (model.getChildAt(cell, index) != child) @@ -470,13 +481,30 @@ EditorUi.prototype.patchCellRecursive = function(page, model, cell, parentLookup child, parentLookup, diff); index++; } - + + return id; + }); + + // Uses stack to avoid recursion for children + var children = [null]; + + while (children.length > 0) + { + var entry = children.shift(); + var child = (entry != null) ? entry.child : null; + var insert = (entry != null) ? entry.insert : false; + var id = addCell(child, insert); + + // Move and insert are mutually exclusive per predecessor + // since an insert changes the predecessor of existing cells + // and is therefore ignored in the loop above where the order + // for existing cells is added to the moved object var mov = moved[id]; if (mov != null) { delete moved[id]; - addCell(model.getCell(mov)); + children.push({child: model.getCell(mov)}); } var ins = inserted[id]; @@ -484,24 +512,29 @@ EditorUi.prototype.patchCellRecursive = function(page, model, cell, parentLookup if (ins != null) { delete inserted[id]; - addCell(this.getCellForJson(ins)); + children.push({child: this.getCellForJson(ins), insert: true}); + } + + // Orphaned moves and inserts are operations where the previous cell vanished + // in the local model so their position in the child array cannot be determined. + // In this case those cells are appended. Dependencies between orphans are + // maintained because for-in loops enumerate the IDs in order of insertion. + if (children.length == 0) + { + // Handles orphaned moved pages + for (var id in moved) + { + children.push({child: model.getCell(moved[id])}); + delete moved[id]; + } + + // Handles orphaned inserted pages + for (var id in inserted) + { + children.push({child: this.getCellForJson(inserted[id]), insert: true}); + delete inserted[id]; + } } - }); - - addCell(); - - // Handles orphaned moved pages - for (var id in moved) - { - addCell(model.getCell(moved[id])); - delete moved[id]; - } - - // Handles orphaned inserted pages - for (var id in inserted) - { - addCell(this.getCellForJson(inserted[id])); - delete inserted[id]; } } }; @@ -1068,7 +1101,12 @@ EditorUi.prototype.diffCell = function(oldCell, newCell) // FIXME: Proto only needed because source.geometry has no constructor (wrong type?) if (!this.isObjectEqual(oldCell.geometry, newCell.geometry, new mxGeometry())) { - diff.geometry = mxUtils.getXml(this.codec.encode(newCell.geometry)); + var node = this.codec.encode(newCell.geometry); + + if (node != null) + { + diff.geometry = mxUtils.getXml(node); + } } // Compares all keys from oldCell to newCell and uses null in the diff diff --git a/src/main/webapp/js/diagramly/DrawioFile.js b/src/main/webapp/js/diagramly/DrawioFile.js index 4f596781..1306e6a2 100644 --- a/src/main/webapp/js/diagramly/DrawioFile.js +++ b/src/main/webapp/js/diagramly/DrawioFile.js @@ -20,22 +20,20 @@ DrawioFile = function(ui, data) */ this.data = data || ''; this.shadowData = this.data; + this.shadowPages = null; // Creates the stats object this.stats = { - joined: 0, /* number of join messages received */ - merged: 0, /* number of calls to merge */ - lastMerge: 0, /* details of the last successful merge */ - lastMergeTime: 0, /* timestamp of the last call to merge */ - lastOpenTime: 0, /* timestamp of the last call to open */ - emptyPrefix: false, /* timestamp of the last call to open */ - shadowState: 0, /* current etag hash for shadow */ opened: 0, /* number of calls to open */ + merged: 0, /* number of calls to merge */ + fileMerged: 0, /* number of calls to mergeFile */ + fileReloaded: 0, /* number of calls to mergeFile */ + conflicts: 0, /* number of write conflicts when saving a file */ + timeouts: 0, /* number of time we have given up to retry after a write conflict */ + saved: 0, /* number of calls to fileSaved */ closed: 0, /* number of calls to close */ destroyed: 0, /* number of calls to close */ - fileMerged: 0, /* number of calls to mergeFile */ - fileSaved: 0, /* number of calls to fileSaved */ - reload: 0, /* number of times the file was reloaded */ + joined: 0, /* number of join messages received */ checksumErrors: 0, /* number of checksum errors */ bytesSent: 0, /* number of bytes send in messages */ bytesReceived: 0, /* number of bytes received in messages */ @@ -43,9 +41,7 @@ DrawioFile = function(ui, data) msgReceived: 0, /* number of messages received */ cacheHits: 0, /* number of times the cache returned patches */ cacheMiss: 0, /* number of times we have missed a cache entry */ - cacheFail: 0, /* number of times we have failed to read the cache */ - conflicts: 0, /* number of write conflicts when saving a file */ - timeouts: 0 /* number of time we have given up to retry after a write conflict */ + cacheFail: 0 /* number of times we have failed to read the cache */ }; }; @@ -139,7 +135,12 @@ DrawioFile.prototype.inConflictState = false; DrawioFile.prototype.invalidChecksum = false; /** - * Specifies if notify events should be ignored. + * Specifies if error reports should be sent. + */ +DrawioFile.prototype.errorReportsEnabled = false; + +/** + * Specifies if stats should be sent. */ DrawioFile.prototype.reportEnabled = true; @@ -187,7 +188,7 @@ DrawioFile.prototype.updateFile = function(success, error, abort, shadow) { if (error != null) { - error(e); + error(); } } else @@ -202,7 +203,7 @@ DrawioFile.prototype.updateFile = function(success, error, abort, shadow) { if (error != null) { - error(e); + error(); } } else @@ -235,6 +236,8 @@ DrawioFile.prototype.updateFile = function(success, error, abort, shadow) */ DrawioFile.prototype.mergeFile = function(file, success, error, diffShadow) { + var reportError = true; + try { this.stats.fileMerged++; @@ -261,12 +264,12 @@ DrawioFile.prototype.mergeFile = function(file, success, error, diffShadow) // Patches the current document var patches = [this.ui.diffPages((diffShadow != null) ? diffShadow : shadow, this.shadowPages)]; - - if (!this.ignorePatches(patches)) + var ignored = this.ignorePatches(patches); + + if (!ignored) { // Patching previous shadow to verify checksum var patched = this.ui.patchPages(shadow, patches[0]); - this.stats.shadowState = this.ui.hashValue(file.getCurrentEtag()); var patchedDetails = {}; var checksum = this.ui.getHashValueForPages(patched, patchedDetails); @@ -283,34 +286,36 @@ DrawioFile.prototype.mergeFile = function(file, success, error, diffShadow) if (checksum != null && checksum != current) { + var fileData = this.compressReportData(this.getAnonymizedXmlForPages(pages)); var data = this.compressReportData(this.getAnonymizedXmlForPages(patched)); + var from = this.ui.hashValue(file.getCurrentEtag()); + var to = this.ui.hashValue(this.getCurrentEtag()); this.checksumError(error, patches, - ((patchedDetails != null) ? ('Details: ' + - JSON.stringify(patchedDetails)) : '') + + 'Shadow Details: ' + JSON.stringify(patchedDetails) + '\nChecksum: ' + checksum + '\nCurrent: ' + current + - ((currentDetails != null) ? ('\nCurrent Details: ' + - JSON.stringify(currentDetails)) : '') + - '\nPatched:\n' + data); + '\nCurrent Details: ' + JSON.stringify(currentDetails) + + '\nFrom: ' + from + + '\nTo: ' + to + + '\n\nFile Data:\n' + fileData + + '\nPatched Shadow:\n' + data, null, 'mergeFile'); // Abnormal termination return; } else { + // Patches the current document this.patch(patches, (DrawioFile.LAST_WRITE_WINS) ? this.backupPatch : null); } } - else - { - this.stats.shadowState = this.ui.hashValue(file.getCurrentEtag()); - } } else { + reportError = false; throw new Error(mxResources.get('notADiagramFile')); } @@ -338,7 +343,10 @@ DrawioFile.prototype.mergeFile = function(file, success, error, diffShadow) try { - this.sendErrorReport('Error in mergeFile', null, e); + if (this.errorReportsEnabled && reportError) + { + this.sendErrorReport('Error in mergeFile', null, e); + } } catch (e2) { @@ -387,23 +395,22 @@ DrawioFile.prototype.compressReportData = function(data, limit, max) { limit = (limit != null) ? limit : 10000; - if (data != null && data.length > limit) - { - data = this.ui.editor.graph.compress(data) + '\n'; - } - if (max != null && data != null && data.length > max) { data = data.substring(0, max) + '[...]'; } - + else if (data != null && data.length > limit) + { + data = this.ui.editor.graph.compress(data) + '\n'; + } + return data; }; /** * Adds the listener for automatically saving the diagram for local changes. */ -DrawioFile.prototype.checksumError = function(error, patches, details, etag) +DrawioFile.prototype.checksumError = function(error, patches, details, etag, functionName) { this.stats.checksumErrors++; this.inConflictState = true; @@ -422,51 +429,51 @@ DrawioFile.prototype.checksumError = function(error, patches, details, etag) try { - if (patches != null) + if (this.errorReportsEnabled) { - for (var i = 0; i < patches.length; i++) + if (patches != null) { - this.ui.anonymizePatch(patches[i]); + for (var i = 0; i < patches.length; i++) + { + this.ui.anonymizePatch(patches[i]); + } } - } - - // To avoid async stack - var err = new Error(); - - var fn = mxUtils.bind(this, function(file) - { - var json = this.compressReportData( - JSON.stringify(patches, null, 2)); - var remote = (file != null) ? this.compressReportData( - this.getAnonymizedXmlForPages( - this.ui.getPagesForNode( - mxUtils.parseXml(file.data).documentElement)), 25000) : 'n/a'; - this.sendErrorReport( - 'Checksum Error', - ((details != null) ? (details) : '') + - '\n\nPatches:\n' + json + - ((remote != null) ? ('\n\nMaster:\n' + remote) : ''), - err, 70000); - }); - - if (etag == null) - { - fn(null); - } - else - { - this.getLatestVersion(mxUtils.bind(this, function(file) + var fn = mxUtils.bind(this, function(file) { - if (file != null && file.getCurrentEtag() == etag) - { - fn(file); - } - else + var json = this.compressReportData( + JSON.stringify(patches, null, 2)); + var remote = (file != null) ? this.compressReportData( + this.getAnonymizedXmlForPages( + this.ui.getPagesForNode( + mxUtils.parseXml(file.data).documentElement)), 25000) : 'n/a'; + + this.sendErrorReport( + 'Checksum Error in ' + functionName, + ((details != null) ? (details) : '') + + '\n\nPatches:\n' + json + + ((remote != null) ? ('\n\nRemote:\n' + remote) : ''), + null, 70000); + }); + + if (etag == null) + { + fn(null); + } + else + { + this.getLatestVersion(mxUtils.bind(this, function(file) { - fn(null); - } - }), function() {}); + if (file != null && file.getCurrentEtag() == etag) + { + fn(file); + } + else + { + fn(null); + } + }), function() {}); + } } } catch (e) @@ -482,19 +489,15 @@ DrawioFile.prototype.sendErrorReport = function(title, details, error, max) { try { - var data = this.compressReportData( + var shadow = this.compressReportData( this.getAnonymizedXmlForPages( this.shadowPages), 25000); + var data = this.compressReportData( + this.getAnonymizedXmlForPages( + this.ui.pages), 25000); var user = this.getCurrentUser(); var uid = (user != null) ? this.ui.hashValue(user.id) : 'unknown'; var cid = (this.sync != null) ? this.sync.clientId : 'no sync'; - - if (this.stats.start != null) - { - this.stats.uptime = Math.round((new Date().getTime() - - new Date(this.stats.start).getTime()) / 1000); - } - var filename = this.getTitle(); var dot = filename.lastIndexOf('.'); var ext = 'xml'; @@ -512,13 +515,17 @@ DrawioFile.prototype.sendErrorReport = function(title, details, error, max) ((this.isModified()) ? ' modified' : '') + '\nSize/Type=' + this.getSize() + ' (' + ext + ')' + '\nUser=' + uid + ' (' + cid + ')' + - '\nPlugins=' + ((mxSettings.settings != null) ? mxSettings.getPlugins() : 'null') + + '\nPrefix=' + this.ui.editor.graph.model.prefix + '\nSync=' + DrawioFile.SYNC + - ((error != null) ? ('\nError=' + error) : '') + + ((this.sync != null) ? (((this.sync.enabled) ? ' enabled' : '') + + ((this.sync.isConnected()) ? ' connected' : '')) : '') + + '\nPlugins=' + ((mxSettings.settings != null) ? mxSettings.getPlugins() : 'null') + '\n\nStats:\n' + JSON.stringify(this.stats, null, 2) + ((details != null) ? ('\n\n' + details) : '') + - '\n\nShadow:\n' + data + - '\n\nStack:\n' + stack, max); + ((error != null) ? ('\n\nError: ' + error.message) : '') + + '\n\nStack:\n' + stack + + '\n\nShadow:\n' + shadow + + '\n\nData:\n' + data, max); } catch (e) { @@ -537,7 +544,7 @@ DrawioFile.prototype.reloadFile = function(success, error) var fn = mxUtils.bind(this, function() { - this.stats.reload++; + this.stats.fileReloaded++; this.reportEnabled = false; // Restores view state and current page @@ -677,10 +684,11 @@ DrawioFile.prototype.patch = function(patches, resolver) } finally { + // Changes visibility before action states are updated via model event + graph.container.style.visibility = ''; graph.model.endUpdate(); // Restores previous state - graph.container.style.visibility = ''; graph.cellRenderer.redraw = redraw; this.changeListenerEnabled = prev; @@ -711,12 +719,6 @@ DrawioFile.prototype.patch = function(patches, resolver) graph.sizeDidChange(); } - - // Updates view state in format panel if nothing is selected - if (this.ui.format != null && graph.isSelectionEmpty()) - { - this.ui.format.refresh(); - } } this.ui.updateTabContainer(); @@ -944,7 +946,6 @@ DrawioFile.prototype.getData = function() DrawioFile.prototype.open = function() { this.stats.opened++; - this.stats.lastOpenTime = new Date().toISOString(); var data = this.getData(); if (data != null) @@ -959,10 +960,6 @@ DrawioFile.prototype.open = function() this.shadowPages = null; } } - else - { - this.sendErrorReport('Error in open', 'Data was null'); - } this.installListeners(); @@ -1638,7 +1635,7 @@ DrawioFile.prototype.fileSaved = function(savedData, lastDesc, success, error) { try { - this.stats.fileSaved++; + this.stats.saved++; this.inConflictState = false; this.invalidChecksum = false; @@ -1656,7 +1653,7 @@ DrawioFile.prototype.fileSaved = function(savedData, lastDesc, success, error) { this.sync.fileSaved(this.ui.getPagesForNode( mxUtils.parseXml(savedData).documentElement), - lastDesc, success, error); + lastDesc, success, error, savedData); } } catch (e) @@ -1672,9 +1669,10 @@ DrawioFile.prototype.fileSaved = function(savedData, lastDesc, success, error) try { - this.sendErrorReport('Error in fileSaved', - 'Saved Data:\n' + this.compressReportData( - this.ui.anonymizeString(savedData), null, 1000), e); + if (this.errorReportsEnabled) + { + this.sendErrorReport('Error in fileSaved', null, e); + } } catch (e2) { @@ -1870,14 +1868,7 @@ DrawioFile.prototype.destroy = function() DrawioFile.SYNC == 'manual')) { var user = this.getCurrentUser(); - var uid = (user != null) ? this.ui.hashValue(user.id) : 'unknown'; - this.stats.end = new Date().toISOString(); - - if (this.stats.start != null) - { - this.stats.uptime = Math.round((new Date().getTime() - - new Date(this.stats.start).getTime()) / 1000); - } + var uid = (user != null) ? user.id : 'unknown'; EditorUi.logEvent({category: 'RT-END-' + DrawioFile.SYNC, action: 'file-' + this.getId() + diff --git a/src/main/webapp/js/diagramly/DrawioFileSync.js b/src/main/webapp/js/diagramly/DrawioFileSync.js index 2cf27162..a784a646 100644 --- a/src/main/webapp/js/diagramly/DrawioFileSync.js +++ b/src/main/webapp/js/diagramly/DrawioFileSync.js @@ -90,7 +90,7 @@ DrawioFileSync = function(file) join.uid = user.id; } - mxUtils.post(this.cacheUrl, this.getIdParameters() + + mxUtils.post(EditorUi.cacheUrl, this.getIdParameters() + '&msg=' + encodeURIComponent(this.objectToString( this.createMessage(join)))); this.file.stats.msgSent++; @@ -171,11 +171,6 @@ DrawioFileSync.prototype.enabled = true; DrawioFileSync.prototype.updateStatusInterval = 10000; /** - * True if a change event is fired for a remote change. - */ -DrawioFileSync.prototype.cacheUrl = (urlParams['dev'] == '1') ? '/cache' : 'https://rt.draw.io/cache'; - -/** * Holds the channel ID for sending and receiving change notifications. */ DrawioFileSync.prototype.channelId = null; @@ -206,9 +201,9 @@ DrawioFileSync.prototype.maxCacheReadyRetries = 2; DrawioFileSync.prototype.cacheReadyDelay = 500; /** - * Inactivity timeout is 1 hour. + * Inactivity timeout is 30 minutes. */ -DrawioFileSync.prototype.inactivityTimeoutSeconds = 3600; +DrawioFileSync.prototype.inactivityTimeoutSeconds = 1800; /** * Specifies if notifications should be sent and received for changes. @@ -254,27 +249,7 @@ DrawioFileSync.prototype.start = function() { this.pusher.connect(); this.channel = this.pusher.subscribe(this.channelId); - EditorUi.debug('Sync.start', [this]); - - if (this.file.stats.start == null) - { - this.file.stats.start = new Date().toISOString(); - - if (!this.ui.isOffline()) - { - var user = this.file.getCurrentUser(); - var uid = (user != null) ? this.ui.hashValue(user.id) : 'unknown'; - - EditorUi.logEvent({category: 'RT-START-' + DrawioFile.SYNC, - action: 'file-' + this.file.getId() + - '-mode-' + this.file.getMode() + - '-size-' +this.file.getSize() + - '-user-' + uid + - '-client-' + this.clientId, - label: this.file.stats.start}); - } - } } catch (e) { @@ -757,14 +732,23 @@ DrawioFileSync.prototype.catchup = function(etag, secret, success, error, abort) } else { - mxUtils.get(this.cacheUrl + '?id=' + encodeURIComponent(this.channelId) + + var acceptResponse = true; + + var timeoutThread = window.setTimeout(mxUtils.bind(this, function() + { + acceptResponse = false; + this.reload(success, error, abort); + }), this.ui.timeout); + + mxUtils.get(EditorUi.cacheUrl + '?id=' + encodeURIComponent(this.channelId) + '&from=' + encodeURIComponent(current) + '&to=' + encodeURIComponent(etag) + ((secret != null) ? '&secret=' + encodeURIComponent(secret) : ''), mxUtils.bind(this, function(req) { this.file.stats.bytesReceived += req.getText().length; + window.clearTimeout(timeoutThread); - if (abort == null || !abort()) + if (acceptResponse && (abort == null || !abort())) { // Ignores patch if shadow has changed if (current != this.file.getCurrentEtag()) @@ -784,7 +768,6 @@ DrawioFileSync.prototype.catchup = function(etag, secret, success, error, abort) else { var checksum = null; - var details = []; var temp = []; if (req.getStatus() >= 200 && req.getStatus() <= 299 && @@ -811,12 +794,6 @@ DrawioFileSync.prototype.catchup = function(etag, secret, success, error, abort) { checksum = value.d.checksum; temp.push(value.d.patch); - - if (value.d.details != null) - { - value.d.details.checksum = checksum; - details.push(JSON.stringify(value.d.details)); - } } else { @@ -843,7 +820,7 @@ DrawioFileSync.prototype.catchup = function(etag, secret, success, error, abort) if (temp.length > 0) { this.file.stats.cacheHits++; - this.merge(temp, checksum, etag, success, error, abort, details); + this.merge(temp, checksum, etag, success, error, abort); } // Retries if cache entry was not yet there else if (cacheReadyRetryCount <= this.maxCacheReadyRetries && @@ -905,7 +882,7 @@ DrawioFileSync.prototype.reload = function(success, error, abort, shadow) /** * Adds the listener for automatically saving the diagram for local changes. */ -DrawioFileSync.prototype.merge = function(patches, checksum, etag, success, error, abort, details) +DrawioFileSync.prototype.merge = function(patches, checksum, etag, success, error, abort) { try { @@ -919,8 +896,9 @@ DrawioFileSync.prototype.merge = function(patches, checksum, etag, success, erro this.file.backupPatch = (this.file.isModified()) ? this.ui.diffPages(this.file.shadowPages, this.ui.pages) : null; + var ignored = this.file.ignorePatches(patches); - if (!this.file.ignorePatches(patches)) + if (!ignored) { // Patches the shadow document for (var i = 0; i < patches.length; i++) @@ -928,10 +906,7 @@ DrawioFileSync.prototype.merge = function(patches, checksum, etag, success, erro this.file.shadowPages = this.ui.patchPages(this.file.shadowPages, patches[i]); } - this.file.stats.shadowState = this.ui.hashValue(etag); - var currentDetails = {}; - var current = (checksum != null) ? this.ui.getHashValueForPages( - this.file.shadowPages, currentDetails) : null; + var current = (checksum != null) ? this.ui.getHashValueForPages(this.file.shadowPages) : null; if (urlParams['test'] == '1') { @@ -939,7 +914,6 @@ DrawioFileSync.prototype.merge = function(patches, checksum, etag, success, erro 'from', this.file.getCurrentEtag(), 'to', etag, 'backup', this.file.backupPatch, 'attempt', this.catchupRetryCount, - 'details', details, currentDetails, 'patches', patches, 'checksum', checksum == current, checksum); } @@ -950,18 +924,8 @@ DrawioFileSync.prototype.merge = function(patches, checksum, etag, success, erro var from = this.ui.hashValue(this.file.getCurrentEtag()); var to = this.ui.hashValue(etag); - currentDetails.inConflictState = this.file.inConflictState; - currentDetails.invalidChecksum = this.file.invalidChecksum; - - this.file.checksumError(error, patches, - 'From: ' + from + - '\nTo: ' + to + - ((details != null && details.length > 0) ? ('\nDetails: ' + - details.join(', ')) : '') + - '\nChecksum: ' + checksum + - '\nCurrent: ' + current + - ((currentDetails != null) ? ('\nCurrent Details: ' + - JSON.stringify(currentDetails)) : ''), etag); + this.file.checksumError(error, patches, 'From: ' + from + '\nTo: ' + to + + '\nChecksum: ' + checksum + '\nCurrent: ' + current, etag, 'merge'); // Uses current state as shadow to compute diff since // shadowPages has been modified in-place above @@ -979,13 +943,7 @@ DrawioFileSync.prototype.merge = function(patches, checksum, etag, success, erro this.file.backupPatch : null); } } - else - { - this.file.stats.shadowState = this.ui.hashValue(etag); - } - this.file.stats.lastMergeTime = new Date().toISOString(); - this.file.stats.lastMerge = details; this.file.invalidChecksum = false; this.file.inConflictState = false; this.file.setCurrentEtag(etag); @@ -1009,17 +967,18 @@ DrawioFileSync.prototype.merge = function(patches, checksum, etag, success, erro try { - var from = this.ui.hashValue(this.file.getCurrentEtag()); - var to = this.ui.hashValue(etag); - - this.file.sendErrorReport('Error in merge', - 'From: ' + from + - '\nTo: ' + to + - ((details != null && details.length > 0) ? ('\nDetails: ' + - details.join(', ')) : '') + - '\nChecksum: ' + checksum + - '\nPatches:\n' + this.file.compressReportData( - JSON.stringify(patches, null, 2)), e); + if (this.file.errorReportsEnabled) + { + var from = this.ui.hashValue(this.file.getCurrentEtag()); + var to = this.ui.hashValue(etag); + + this.file.sendErrorReport('Error in merge', + 'From: ' + from + + '\nTo: ' + to + + '\nChecksum: ' + checksum + + '\nPatches:\n' + this.file.compressReportData( + JSON.stringify(patches, null, 2)), e); + } } catch (e2) { @@ -1043,7 +1002,7 @@ DrawioFileSync.prototype.descriptorChanged = function(etag) var current = this.file.getCurrentEtag(); var data = this.objectToString({}); - mxUtils.post(this.cacheUrl, this.getIdParameters() + + mxUtils.post(EditorUi.cacheUrl, this.getIdParameters() + '&from=' + encodeURIComponent(etag) + '&to=' + encodeURIComponent(current) + '&msg=' + encodeURIComponent(msg) + '&data=' + encodeURIComponent(data)); this.file.stats.bytesSent += data.length; @@ -1103,25 +1062,21 @@ DrawioFileSync.prototype.fileSaved = function(pages, lastDesc, success, error) var shadow = (this.file.shadowPages != null) ? this.file.shadowPages : this.ui.getPagesForNode( mxUtils.parseXml(this.file.shadowData).documentElement) - var details = {v: EditorUi.VERSION, t: new Date().toISOString(), ua: navigator.userAgent}; - var checksum = this.ui.getHashValueForPages(pages, details); + var checksum = this.ui.getHashValueForPages(pages); var diff = this.ui.diffPages(shadow, pages); // Data is stored in cache and message is sent to all listeners var etag = this.file.getDescriptorEtag(lastDesc); var current = this.file.getCurrentEtag(); - details.from = this.ui.hashValue(etag); - details.to = this.ui.hashValue(current); - - var data = this.objectToString(this.createMessage({patch: diff, checksum: checksum, details: details})); + var data = this.objectToString(this.createMessage({patch: diff, checksum: checksum})); var msg = this.objectToString(this.createMessage({m: this.lastModified.getTime()})); var secret = this.file.getDescriptorSecret(this.file.getDescriptor()); this.file.stats.bytesSent += data.length; this.file.stats.msgSent++; - mxUtils.post(this.cacheUrl, this.getIdParameters() + + mxUtils.post(EditorUi.cacheUrl, this.getIdParameters() + '&from=' + encodeURIComponent(etag) + '&to=' + encodeURIComponent(current) + '&msg=' + encodeURIComponent(msg) + ((secret != null) ? '&secret=' + encodeURIComponent(secret) : '') + ((data.length < this.maxCacheEntrySize) ? '&data=' + encodeURIComponent(data) : ''), @@ -1140,8 +1095,6 @@ DrawioFileSync.prototype.fileSaved = function(pages, lastDesc, success, error) } this.file.shadowPages = pages; - this.file.stats.emptyPrefix = this.file.stats.emptyPrefix || - this.ui.editor.graph.model.prefix.length == 0; if (success != null) { @@ -1196,8 +1149,8 @@ DrawioFileSync.prototype.fileConflict = function(desc, success, error) } else { - this.catchupRetryCount = 0; this.file.stats.timeouts++; + this.catchupRetryCount = 0; if (error != null) { @@ -1254,7 +1207,7 @@ DrawioFileSync.prototype.destroy = function() leave.uid = user.id; } - mxUtils.post(this.cacheUrl, this.getIdParameters() + + mxUtils.post(EditorUi.cacheUrl, this.getIdParameters() + '&msg=' + encodeURIComponent(this.objectToString( this.createMessage(leave)))); this.file.stats.msgSent++; diff --git a/src/main/webapp/js/diagramly/DriveClient.js b/src/main/webapp/js/diagramly/DriveClient.js index a1752ab8..4e68907f 100644 --- a/src/main/webapp/js/diagramly/DriveClient.js +++ b/src/main/webapp/js/diagramly/DriveClient.js @@ -828,74 +828,88 @@ DriveClient.prototype.getXmlFile = function(resp, success, error, ignoreMime, re // Loads XML to initialize realtime document if realtime is empty this.ui.loadUrl(url, mxUtils.bind(this, function(data) { - if (data == null) - { - // TODO: Optional redirect to legacy if link is for old file - error({message: mxResources.get('invalidOrMissingFile')}); - } - else if (resp.mimeType == this.libraryMimeType || readLibrary) + try { - if (resp.mimeType == this.libraryMimeType && !readLibrary) + if (data == null) { - error({message: mxResources.get('notADiagramFile')}); + // TODO: Optional redirect to legacy if link is for old file + error({message: mxResources.get('invalidOrMissingFile')}); } - else + else if (resp.mimeType == this.libraryMimeType || readLibrary) { - success(new DriveLibrary(this.ui, data, resp)); + if (resp.mimeType == this.libraryMimeType && !readLibrary) + { + error({message: mxResources.get('notADiagramFile')}); + } + else + { + success(new DriveLibrary(this.ui, data, resp)); + } } - } - else - { - if (/\.png$/i.test(resp.title)) + else { - var index = data.lastIndexOf(','); - - if (index > 0) + if (/\.png$/i.test(resp.title)) { - var xml = this.ui.extractGraphModelFromPng(data.substring(index + 1)); - - if (xml != null && xml.length > 0) - { - data = xml; - } - else + var index = data.lastIndexOf(','); + + if (index > 0) { - // Checks if the file contains XML data which can happen when we insert - // the file and then don't post-process it when loaded into the UI which - // is required for creating the images for .PNG and .SVG files. - try + var xml = this.ui.extractGraphModelFromPng(data.substring(index + 1)); + + if (xml != null && xml.length > 0) { - var temp = atob(data.substring(index + 1)); - - if (temp != null && (temp.substring(0, 8) === '<mxfile ' || - temp.substring(0, 14) === '<mxGraphModel ' || - temp.substring(0, 14) === '<mxGraphModel>')) - { - data = temp; - } - else - { - // TODO: Import as PNG - } + data = xml; } - catch (e) + else { - // ignore + // Checks if the file contains XML data which can happen when we insert + // the file and then don't post-process it when loaded into the UI which + // is required for creating the images for .PNG and .SVG files. + try + { + var temp = atob(data.substring(index + 1)); + + if (temp != null && (temp.substring(0, 8) === '<mxfile ' || + temp.substring(0, 14) === '<mxGraphModel ' || + temp.substring(0, 14) === '<mxGraphModel>')) + { + data = temp; + } + else + { + // TODO: Import as PNG + } + } + catch (e) + { + // ignore + } } } } + // Checks for base64 encoded mxfile + else if (data.substring(0, 32) == 'data:image/png;base64,PG14ZmlsZS') + { + var temp = data.substring(22); + data = (window.atob && !mxClient.IS_SF) ? atob(temp) : Base64.decode(temp); + } + + success(new DriveFile(this.ui, data, resp)); + } + } + catch (e) + { + if (error != null) + { + error(e); } - // Checks for base64 encoded mxfile - else if (data.substring(0, 32) == 'data:image/png;base64,PG14ZmlsZS') + else { - var temp = data.substring(22); - data = (window.atob && !mxClient.IS_SF) ? atob(temp) : Base64.decode(temp); + throw e; } - - success(new DriveFile(this.ui, data, resp)); } - }), error, (resp.mimeType != null && resp.mimeType.substring(0, 6) == 'image/' && - resp.mimeType.substring(0, 9) != 'image/svg') || /\.png$/i.test(resp.title) || + }), error, ((resp.mimeType != null && resp.mimeType.substring(0, 6) == 'image/' && + resp.mimeType.substring(0, 9) != 'image/svg')) || /\.png$/i.test(resp.title) || /\.jpe?g$/i.test(resp.title)); }; @@ -989,11 +1003,13 @@ DriveClient.prototype.saveFile = function(file, revision, success, error, noChec } } + var savedData = file.getData(); + // Updates saveDelay on drive file - var wrapper = mxUtils.bind(this, function() + var wrapper = mxUtils.bind(this, function(resp) { file.saveDelay = new Date().getTime() - t0; - success.apply(this, arguments); + success(resp, savedData); if (prevDesc != null) { @@ -1022,7 +1038,7 @@ DriveClient.prototype.saveFile = function(file, revision, success, error, noChec label: (this.user != null) ? this.user.id : 'unknown-user'}); } }); - + var doExecuteRequest = mxUtils.bind(this, function(data, binary) { if (properties != null) @@ -1078,9 +1094,8 @@ DriveClient.prototype.saveFile = function(file, revision, success, error, noChec EditorUi.sendReport('Warning: Stale Etag Overwrite ' + new Date().toISOString() + ':' + '\n\nBrowser=' + navigator.userAgent + - '\nFile=' + this.ui.hashValue(file.getId()) + - '\nUser=' + ((this.user != null) ? - this.ui.hashValue(this.user.id) : 'unknown')); + '\nFile=' + file.desc.id + '.' + file.desc.headRevisionId + + '\nUser=' + ((this.user != null) ? this.user.id : 'unknown')); EditorUi.logError('Warning: Stale Etag Overwrite', null, file.desc.id + '.' + file.desc.headRevisionId, (this.user != null) ? this.user.id : 'unknown'); @@ -1108,17 +1123,17 @@ DriveClient.prototype.saveFile = function(file, revision, success, error, noChec executeSave(false); }); - + if (this.ui.useCanvasForExport && /(\.png)$/i.test(file.getTitle())) { this.ui.getEmbeddedPng(mxUtils.bind(this, function(data) { doExecuteRequest(data, true); - }), error, (this.ui.getCurrentFile() != file) ? file.getData() : null); + }), error, (this.ui.getCurrentFile() != file) ? savedData : null); } else { - doExecuteRequest(file.getData(), false); + doExecuteRequest(savedData, false); } }); diff --git a/src/main/webapp/js/diagramly/DriveFile.js b/src/main/webapp/js/diagramly/DriveFile.js index 817e5085..7c29f7f3 100644 --- a/src/main/webapp/js/diagramly/DriveFile.js +++ b/src/main/webapp/js/diagramly/DriveFile.js @@ -157,7 +157,6 @@ DriveFile.prototype.saveFile = function(title, revision, success, error, unloadi { var doSave = mxUtils.bind(this, function(realOverwrite, realRevision) { - var savedData = this.data; var lastDesc = this.desc; // Makes sure no changes get lost while the file is saved @@ -173,7 +172,7 @@ DriveFile.prototype.saveFile = function(title, revision, success, error, unloadi return true; }; - this.ui.drive.saveFile(this, realRevision, mxUtils.bind(this, function(resp) + this.ui.drive.saveFile(this, realRevision, mxUtils.bind(this, function(resp, savedData) { this.isModified = prevModified; this.savingFile = false; diff --git a/src/main/webapp/js/diagramly/Editor.js b/src/main/webapp/js/diagramly/Editor.js index 558c31f2..a2444fed 100644 --- a/src/main/webapp/js/diagramly/Editor.js +++ b/src/main/webapp/js/diagramly/Editor.js @@ -3205,12 +3205,33 @@ if (!createOnly) { - (group || svgRoot.getElementsByTagName('g')[0]).setAttribute('filter', 'url(#' + this.shadowId + ')'); + group = (group != null) ? group : svgRoot.getElementsByTagName('g')[0]; - if (!isNaN(parseInt(svgRoot.getAttribute('width')))) + if (group != null) { - svgRoot.setAttribute('width', parseInt(svgRoot.getAttribute('width')) + 6); - svgRoot.setAttribute('height', parseInt(svgRoot.getAttribute('height')) + 6); + group.setAttribute('filter', 'url(#' + this.shadowId + ')'); + + if (!isNaN(parseInt(svgRoot.getAttribute('width')))) + { + svgRoot.setAttribute('width', parseInt(svgRoot.getAttribute('width')) + 6); + svgRoot.setAttribute('height', parseInt(svgRoot.getAttribute('height')) + 6); + + // Updates viewbox if one exists + var vb = svgRoot.getAttribute('viewBox'); + + if (vb != null && vb.length > 0) + { + var tokens = vb.split(' '); + + if (tokens.length > 3) + { + w = parseFloat(tokens[2]) + 6; + h = parseFloat(tokens[3]) + 6; + + svgRoot.setAttribute('viewBox', tokens[0] + ' ' + tokens[1] + ' ' + w + ' ' + h); + } + } + } } } @@ -3844,47 +3865,54 @@ pv = printGraph(graph); } - if (pv.mathEnabled) + if (pv == null) { - var doc = pv.wnd.document; - - doc.writeln('<script type="text/x-mathjax-config">'); - doc.writeln('MathJax.Hub.Config({'); - doc.writeln('showMathMenu: false,'); - doc.writeln('messageStyle: "none",'); - doc.writeln('jax: ["input/TeX", "input/MathML", "input/AsciiMath", "output/HTML-CSS"],'); - doc.writeln('extensions: ["tex2jax.js", "mml2jax.js", "asciimath2jax.js"],'); - doc.writeln('"HTML-CSS": {'); - doc.writeln('imageFont: null'); - doc.writeln('},'); - doc.writeln('TeX: {'); - doc.writeln('extensions: ["AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js"]'); - doc.writeln('},'); - doc.writeln('tex2jax: {'); - doc.writeln(' ignoreClass: "geDisableMathJax"'); - doc.writeln('},'); - doc.writeln('asciimath2jax: {'); - doc.writeln(' ignoreClass: "geDisableMathJax"'); - doc.writeln('}'); - doc.writeln('});'); - - // Adds asynchronous printing when MathJax finished rendering - if (print) + editorUi.handleError({message: mxResources.get('errorUpdatingPreview')}); + } + else + { + if (pv.mathEnabled) { - doc.writeln('MathJax.Hub.Queue(function () {'); - doc.writeln('window.print();'); + var doc = pv.wnd.document; + + doc.writeln('<script type="text/x-mathjax-config">'); + doc.writeln('MathJax.Hub.Config({'); + doc.writeln('showMathMenu: false,'); + doc.writeln('messageStyle: "none",'); + doc.writeln('jax: ["input/TeX", "input/MathML", "input/AsciiMath", "output/HTML-CSS"],'); + doc.writeln('extensions: ["tex2jax.js", "mml2jax.js", "asciimath2jax.js"],'); + doc.writeln('"HTML-CSS": {'); + doc.writeln('imageFont: null'); + doc.writeln('},'); + doc.writeln('TeX: {'); + doc.writeln('extensions: ["AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js"]'); + doc.writeln('},'); + doc.writeln('tex2jax: {'); + doc.writeln(' ignoreClass: "geDisableMathJax"'); + doc.writeln('},'); + doc.writeln('asciimath2jax: {'); + doc.writeln(' ignoreClass: "geDisableMathJax"'); + doc.writeln('}'); doc.writeln('});'); + + // Adds asynchronous printing when MathJax finished rendering + if (print) + { + doc.writeln('MathJax.Hub.Queue(function () {'); + doc.writeln('window.print();'); + doc.writeln('});'); + } + + doc.writeln('</script>'); + doc.writeln('<script type="text/javascript" src="https://math.draw.io/current/MathJax.js"></script>'); } - doc.writeln('</script>'); - doc.writeln('<script type="text/javascript" src="https://math.draw.io/current/MathJax.js"></script>'); - } - - pv.closeDocument(); - - if (!pv.mathEnabled && print) - { - PrintDialog.printPreview(pv); + pv.closeDocument(); + + if (!pv.mathEnabled && print) + { + PrintDialog.printPreview(pv); + } } }; diff --git a/src/main/webapp/js/diagramly/EditorUi.js b/src/main/webapp/js/diagramly/EditorUi.js index c2b117aa..ff61e948 100644 --- a/src/main/webapp/js/diagramly/EditorUi.js +++ b/src/main/webapp/js/diagramly/EditorUi.js @@ -22,6 +22,11 @@ window.location.hostname != 'support.draw.io'; /** + * Protocol and hostname to use for embedded files. Default is https://www.draw.io + */ + EditorUi.drawHost = 'https://www.draw.io'; + + /** * Switch to disable logging for mode and search terms. */ EditorUi.lastErrorMessage = null; @@ -153,7 +158,12 @@ * Specifies the URL for the templates index file. */ EditorUi.templateFile = TEMPLATE_PATH + '/index.xml'; - + + /** + * Specifies the URL for the diffsync cache. + */ + EditorUi.cacheUrl = (urlParams['dev'] == '1') ? '/cache' : 'https://rt.draw.io/cache'; + /** * Switch to enable PlantUML in the insert from text dialog. * NOTE: This must also be enabled on the server-side. @@ -1030,6 +1040,12 @@ cellDiffs[cellId].value = '[' + cellDiffs[cellId].value.length + ']'; } + + if (cellDiffs[cellId].xmlValue != null) + { + cellDiffs[cellId].xmlValue = '[' + + cellDiffs[cellId].xmlValue.length + ']'; + } if (cellDiffs[cellId].style != null) { @@ -1037,12 +1053,6 @@ cellDiffs[cellId].style.length + ']'; } - if (cellDiffs[cellId].geometry != null) - { - cellDiffs[cellId].geometry = '[' + - cellDiffs[cellId].geometry.length + ']'; - } - if (Object.keys(cellDiffs[cellId]).length == 0) { delete cellDiffs[cellId]; @@ -1119,6 +1129,11 @@ { nodes[i].setAttribute('value', '[' + nodes[i].getAttribute('value').length + ']'); } + + if (nodes[i].getAttribute('xmlValue') != null) + { + nodes[i].setAttribute('xmlValue', '[' + nodes[i].getAttribute('xmlValue').length + ']'); + } if (nodes[i].getAttribute('style') != null) { @@ -1133,13 +1148,6 @@ } } - var geos = node.getElementsByTagName('mxGeometry'); - - for (var i = 0; i < geos.length; i++) - { - this.anonymizeAttributes(geos[i], zeros); - } - return node; }; @@ -1253,7 +1261,7 @@ { ignoreSelection = (ignoreSelection != null) ? ignoreSelection : true; var bg = null; - var js = 'https://www.draw.io/js/embed-static.min.js'; + var js = EditorUi.drawHost + '/js/embed-static.min.js'; // LATER: Merge common code with EmbedDialog if (graph != null) @@ -1271,7 +1279,7 @@ if (s.length > 0) { - js = 'https://www.draw.io/embed.js?s=' + s; + js = EditorUi.drawHost + '/embed.js?s=' + s; } } @@ -1330,7 +1338,7 @@ ((redirect == null) ? '<script type="text/javascript" src="' + js + '"></script>' : '<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" ' + 'href="' + redirect + '" target="_blank"><img border="0" ' + - 'src="https://www.draw.io/images/drawlogo128.png"/></a>') + + 'src="' + EditorUi.drawHost + '/images/drawlogo128.png"/></a>') + '\n</body>\n</html>\n'; }; @@ -1340,7 +1348,7 @@ EditorUi.prototype.getHtml2 = function(xml, graph, title, editLink, redirect) { var bg = null; - var js = 'https://www.draw.io/js/viewer.min.js'; + var js = EditorUi.drawHost + '/js/viewer.min.js'; var s = ''; // Makes XHTML compatible @@ -1369,7 +1377,7 @@ ((redirect == null) ? '<script type="text/javascript" src="' + js + '"></script>' : '<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" ' + 'href="' + redirect + '" target="_blank"><img border="0" ' + - 'src="https://www.draw.io/images/drawlogo128.png"/></a>') + + 'src="' + EditorUi.drawHost + '/images/drawlogo128.png"/></a>') + '\n</body>\n</html>\n'; }; @@ -1479,7 +1487,8 @@ var basename = (file != null && file.getTitle() != null) ? file.getTitle() : this.defaultFilename; if (/(\.xml)$/i.test(basename) || /(\.html)$/i.test(basename) || - /(\.svg)$/i.test(basename) || /(\.png)$/i.test(basename)) + /(\.svg)$/i.test(basename) || /(\.png)$/i.test(basename) || + /(\.drawio)$/i.test(basename)) { basename = basename.substring(0, basename.lastIndexOf('.')); } @@ -2177,10 +2186,12 @@ // Order is significant, current file needed for correct // file format for initial save after starting realtime + this.openingFile = true; this.setCurrentFile(file); file.addListener('descriptorChanged', this.descriptorChangedListener); file.addListener('contentChanged', this.descriptorChangedListener); file.open(); + delete this.openingFile; // DescriptorChanged updates the enabled state of the graph this.setGraphEnabled(true); @@ -2319,65 +2330,7 @@ return result; }; - - /** - * Returns true if there is an ongoing interaction with the user, such as text editing, resizing, - * moving, connecting, drag and drop from sidebar, rubberband selection or when a dialog is showing. - */ - EditorUi.prototype.isActive = function() - { - return this.editor.graph.isEditing() || this.editor.graph.isMouseDown || this.dialog != null; - }; - - /** - * Invokes the given function when <isActive> returns false. - */ - EditorUi.prototype.runWhenIdle = function(fn) - { - var runIt = function() - { - if (window.requestAnimationFrame != null) - { - window.requestAnimationFrame(fn); - } - else - { - fn(); - } - }; - - if (!this.isActive()) - { - runIt(); - } - else - { - var invoke = mxUtils.bind(this, function() - { - if (!this.isActive()) - { - this.editor.graph.removeMouseListener(mouseListener); - this.editor.removeListener('hideDialog', invoke); - this.editor.graph.removeListener(invoke); - - runIt(); - } - }); - - var mouseListener = - { - mouseDown: function() {}, - mouseMove: function() {}, - mouseUp: invoke - }; - - this.editor.graph.addListener(mxEvent.EDITING_STOPPED, invoke); - this.editor.graph.addListener(mxEvent.ESCAPE, invoke); - this.editor.graph.addMouseListener(mouseListener); - this.editor.addListener('hideDialog', invoke); - } - }; - + /** * Creates a hash value for the current file. */ @@ -3503,7 +3456,7 @@ { var dlg = new LibraryDialog(this, name, sidebar, images, file, mode); - this.showDialog(dlg.container, 620, 440, true, false, mxUtils.bind(this, function(cancel) + this.showDialog(dlg.container, 640, 440, true, false, mxUtils.bind(this, function(cancel) { if (cancel && this.getCurrentFile() == null && urlParams['embed'] != '1') { @@ -3515,6 +3468,26 @@ }; /** + * Overridden to update after view state changes. + */ + var editorUiCreateFormat = EditorUi.prototype.createFormat; + + EditorUi.prototype.createFormat = function(container) + { + var format = editorUiCreateFormat.apply(this, arguments); + + this.editor.graph.addListener('viewStateChanged', mxUtils.bind(this, function(evt) + { + if (this.editor.graph.isSelectionEmpty()) + { + format.refresh(); + } + })); + + return format; + }; + + /** * Hook for sidebar footer container. */ EditorUi.prototype.createSidebarFooterContainer = function() @@ -4033,7 +4006,7 @@ { var win = window.open('about:blank'); - if (win == null) + if (win == null || win.document == null) { mxUtils.popup(data, true); } @@ -4062,7 +4035,7 @@ var win = window.open('data:' + mimeType + ((base64Encoded) ? ';base64,' + data : ';charset=utf8,' + encodeURIComponent(data))); - if (win == null) + if (win == null || win.document == null) { mxUtils.popup(data, true); } @@ -4348,7 +4321,7 @@ if (addShadow) { - this.editor.graph.addSvgShadow(svgRoot, svgRoot); + this.editor.graph.addSvgShadow(svgRoot); } var filename = this.getBaseFilename() + '.svg'; @@ -4717,7 +4690,7 @@ } return ((mxClient.IS_CHROMEAPP || EditorUi.isElectronApp || !(/.*\.draw\.io$/.test(window.location.hostname))) ? - 'https://www.draw.io/' : 'https://' + window.location.host + '/') + + EditorUi.drawHost : 'https://' + window.location.host + '/') + ((params.length > 0) ? '?' + params.join('&') : '') + data; }; @@ -4810,10 +4783,10 @@ var s2 = (fetchParam.length > 0) ? (((urlParams['dev'] == '1') ? 'https://test.draw.io/embed2.js?dev=1' : - 'https://www.draw.io/embed2.js?')) + fetchParam : + EditorUi.drawHost + '/embed2.js?')) + fetchParam : (((urlParams['dev'] == '1') ? 'https://test.draw.io/js/viewer.min.js' : - 'https://www.draw.io/js/viewer.min.js')); + window.VIEWER_URL ? window.VIEWER_URL : EditorUi.drawHost + '/js/viewer.min.js')); var scr = '<script type="text/javascript" src="' + s2 + '"></script>'; fn(value, scr); @@ -5402,7 +5375,7 @@ { // KNOWN: Message passing does not seem to work in IE11 onclick = " onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(" + - "img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('https://www.draw.io/?client=1&lightbox=1" + + "img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('" + EditorUi.drawHost + "/?client=1&lightbox=1" + ((edit) ? "&edit=_blank" : "") + ((layers) ? '&layers=1' : '') + "');}})(this);\""; css += 'cursor:pointer;'; @@ -5525,7 +5498,7 @@ { // KNOWN: Message passing does not seem to work in IE11 onclick = "onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(" + - "img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('https://www.draw.io/?client=1&lightbox=1" + + "img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('" + EditorUi.drawHost + "/?client=1&lightbox=1" + ((edit) ? "&edit=_blank" : "") + ((layers) ? '&layers=1' : '') + "');}})(this);\""; css += 'cursor:pointer;'; } @@ -5560,7 +5533,7 @@ "svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};" + "window.addEventListener('message',r);" + // Opens lightbox window - "svg.wnd=window.open('https://www.draw.io/?client=1&lightbox=1" + + "svg.wnd=window.open('" + EditorUi.drawHost + "/?client=1&lightbox=1" + ((edit) ? "&edit=_blank" : "") + ((layers) ? '&layers=1' : '') + "');}}})(this);"; svgRoot.setAttribute('onclick', js); css += 'cursor:pointer;'; @@ -5571,7 +5544,7 @@ { var w = parseInt(svgRoot.getAttribute('width')); var h = parseInt(svgRoot.getAttribute('height')); - svgRoot.setAttribute('viewBox', '0 0 ' + w + ' ' + h); + svgRoot.setAttribute('viewBox', '-0.5 -0.5 ' + w + ' ' + h); css += 'max-width:100%;max-height:' + h + 'px;'; svgRoot.removeAttribute('height'); } @@ -5833,6 +5806,11 @@ // Sets or disables alternate text for foreignObjects. Disabling is needed // because PhantomJS seems to ignore switch statements and paint all text. var svgRoot = graph.getSvg(bg, null, null, null, null, ignoreSelection); + + if (graph.shadowVisible) + { + graph.addSvgShadow(svgRoot); + } if (xml != null) { @@ -6147,7 +6125,7 @@ { if (addShadow) { - this.editor.graph.addSvgShadow(svgRoot, svgRoot); + this.editor.graph.addSvgShadow(svgRoot); } var done = mxUtils.bind(this, function() @@ -7070,12 +7048,12 @@ this.importVisio(file, mxUtils.bind(this, function(xml) { - this.importXml(xml); + this.importXml(xml, 0, 0, true); }), null, filename); } else { - this.editor.graph.setSelectionCells(this.importXml(xml)); + this.editor.graph.setSelectionCells(this.importXml(xml, 0, 0, true)); } })); @@ -7342,15 +7320,15 @@ graph.getModel().beginUpdate(); try { - for (var j = 0; j < queue.length; j++) - { - var tmp = queue[j](); - - if (tmp != null) - { - cells = cells.concat(tmp); - } - } + for (var j = 0; j < queue.length; j++) + { + var tmp = queue[j](); + + if (tmp != null) + { + cells = cells.concat(tmp); + } + } } finally { @@ -7367,246 +7345,250 @@ (mxUtils.bind(this, function(index) { var file = files[index]; - var reader = new FileReader(); - reader.onload = mxUtils.bind(this, function(e) + if (file != null) { - if (filterFn == null || filterFn(file)) + var reader = new FileReader(); + + reader.onload = mxUtils.bind(this, function(e) { - if (file.type.substring(0, 6) == 'image/') - { - if (file.type.substring(0, 9) == 'image/svg') - { - // Checks if SVG contains content attribute - var data = e.target.result; - var comma = data.indexOf(','); - var svgText = decodeURIComponent(escape(atob(data.substring(comma + 1)))); - var root = mxUtils.parseXml(svgText); - var svgs = root.getElementsByTagName('svg'); - - if (svgs.length > 0) - { - var svgRoot = svgs[0]; - var cont = (ignoreEmbeddedXml) ? null : svgRoot.getAttribute('content'); - - if (cont != null && cont.charAt(0) != '<' && cont.charAt(0) != '%') - { - cont = unescape((window.atob) ? atob(cont) : Base64.decode(cont, true)); - } - - if (cont != null && cont.charAt(0) == '%') - { - cont = decodeURIComponent(cont); - } - - if (cont != null && (cont.substring(0, 8) === '<mxfile ' || - cont.substring(0, 14) === '<mxGraphModel ')) - { - barrier(index, mxUtils.bind(this, function() - { - return fn(cont, 'text/xml', x + index * gs, y + index * gs, 0, 0, file.name); - })); - } - else + if (filterFn == null || filterFn(file)) + { + if (file.type.substring(0, 6) == 'image/') + { + if (file.type.substring(0, 9) == 'image/svg') + { + // Checks if SVG contains content attribute + var data = e.target.result; + var comma = data.indexOf(','); + var svgText = decodeURIComponent(escape(atob(data.substring(comma + 1)))); + var root = mxUtils.parseXml(svgText); + var svgs = root.getElementsByTagName('svg'); + + if (svgs.length > 0) { - // SVG needs special handling to add viewbox if missing and - // find initial size from SVG attributes (only for IE11) - barrier(index, mxUtils.bind(this, function() - { - try - { - var prefix = data.substring(0, comma + 1); - - // Parses SVG and find width and height - if (root != null) - { - var svgs = root.getElementsByTagName('svg'); - - if (svgs.length > 0) + var svgRoot = svgs[0]; + var cont = (ignoreEmbeddedXml) ? null : svgRoot.getAttribute('content'); + + if (cont != null && cont.charAt(0) != '<' && cont.charAt(0) != '%') + { + cont = unescape((window.atob) ? atob(cont) : Base64.decode(cont, true)); + } + + if (cont != null && cont.charAt(0) == '%') + { + cont = decodeURIComponent(cont); + } + + if (cont != null && (cont.substring(0, 8) === '<mxfile ' || + cont.substring(0, 14) === '<mxGraphModel ')) + { + barrier(index, mxUtils.bind(this, function() + { + return fn(cont, 'text/xml', x + index * gs, y + index * gs, 0, 0, file.name); + })); + } + else + { + // SVG needs special handling to add viewbox if missing and + // find initial size from SVG attributes (only for IE11) + barrier(index, mxUtils.bind(this, function() + { + try + { + var prefix = data.substring(0, comma + 1); + + // Parses SVG and find width and height + if (root != null) { - var svgRoot = svgs[0]; - var w = parseFloat(svgRoot.getAttribute('width')); - var h = parseFloat(svgRoot.getAttribute('height')); - - // Check if viewBox attribute already exists - var vb = svgRoot.getAttribute('viewBox'); + var svgs = root.getElementsByTagName('svg'); - if (vb == null || vb.length == 0) - { - svgRoot.setAttribute('viewBox', '0 0 ' + w + ' ' + h); - } - // Uses width and height from viewbox for - // missing width and height attributes - else if (isNaN(w) || isNaN(h)) - { - var tokens = vb.split(' '); - - if (tokens.length > 3) - { - w = parseFloat(tokens[2]); - h = parseFloat(tokens[3]); - } - } - - data = this.createSvgDataUri(mxUtils.getXml(svgRoot)); - var s = Math.min(1, Math.min(maxSize / Math.max(1, w)), maxSize / Math.max(1, h)); - var cells = fn(data, file.type, x + index * gs, y + index * gs, Math.max( - 1, Math.round(w * s)), Math.max(1, Math.round(h * s)), file.name); - - // Hack to fix width and height asynchronously - if (isNaN(w) || isNaN(h)) - { - var img = new Image(); - - img.onload = mxUtils.bind(this, function() - { - w = Math.max(1, img.width); - h = Math.max(1, img.height); - - cells[0].geometry.width = w; - cells[0].geometry.height = h; - - svgRoot.setAttribute('viewBox', '0 0 ' + w + ' ' + h); - data = this.createSvgDataUri(mxUtils.getXml(svgRoot)); - - var semi = data.indexOf(';'); - - if (semi > 0) - { - data = data.substring(0, semi) + data.substring(data.indexOf(',', semi + 1)); - } - - graph.setCellStyles('image', data, [cells[0]]); - }); - - img.src = this.createSvgDataUri(mxUtils.getXml(svgRoot)); - } - - return cells; + if (svgs.length > 0) + { + var svgRoot = svgs[0]; + var w = parseFloat(svgRoot.getAttribute('width')); + var h = parseFloat(svgRoot.getAttribute('height')); + + // Check if viewBox attribute already exists + var vb = svgRoot.getAttribute('viewBox'); + + if (vb == null || vb.length == 0) + { + svgRoot.setAttribute('viewBox', '0 0 ' + w + ' ' + h); + } + // Uses width and height from viewbox for + // missing width and height attributes + else if (isNaN(w) || isNaN(h)) + { + var tokens = vb.split(' '); + + if (tokens.length > 3) + { + w = parseFloat(tokens[2]); + h = parseFloat(tokens[3]); + } + } + + data = this.createSvgDataUri(mxUtils.getXml(svgRoot)); + var s = Math.min(1, Math.min(maxSize / Math.max(1, w)), maxSize / Math.max(1, h)); + var cells = fn(data, file.type, x + index * gs, y + index * gs, Math.max( + 1, Math.round(w * s)), Math.max(1, Math.round(h * s)), file.name); + + // Hack to fix width and height asynchronously + if (isNaN(w) || isNaN(h)) + { + var img = new Image(); + + img.onload = mxUtils.bind(this, function() + { + w = Math.max(1, img.width); + h = Math.max(1, img.height); + + cells[0].geometry.width = w; + cells[0].geometry.height = h; + + svgRoot.setAttribute('viewBox', '0 0 ' + w + ' ' + h); + data = this.createSvgDataUri(mxUtils.getXml(svgRoot)); + + var semi = data.indexOf(';'); + + if (semi > 0) + { + data = data.substring(0, semi) + data.substring(data.indexOf(',', semi + 1)); + } + + graph.setCellStyles('image', data, [cells[0]]); + }); + + img.src = this.createSvgDataUri(mxUtils.getXml(svgRoot)); + } + + return cells; + } } - } - } - catch (e) - { - // ignores any SVG parsing errors - } - - return null; - })); + } + catch (e) + { + // ignores any SVG parsing errors + } + + return null; + })); + } } - } - else - { - barrier(index, mxUtils.bind(this, function() - { - return null; - })); - } - } - else - { - // Checks if PNG+XML is available to bypass code below - var containsModel = false; - - if (file.type == 'image/png') - { - var xml = (ignoreEmbeddedXml) ? null : this.extractGraphModelFromPng(e.target.result); - - if (xml != null && xml.length > 0) - { - var img = new Image(); - img.src = e.target.result; - - barrier(index, mxUtils.bind(this, function() + else + { + barrier(index, mxUtils.bind(this, function() { - return fn(xml, 'text/xml', x + index * gs, y + index * gs, - img.width, img.height, file.name); + return null; })); - - containsModel = true; - } - } - - // Additional asynchronous step for finding image size - if (!containsModel) - { - // Cannot load local files in Chrome App - if (mxClient.IS_CHROMEAPP) - { - this.spinner.stop(); - this.showError(mxResources.get('error'), mxResources.get('dragAndDropNotSupported'), - mxResources.get('cancel'), mxUtils.bind(this, function() - { - // Hides the dialog - }), null, mxResources.get('ok'), mxUtils.bind(this, function() - { - // Redirects to import function - this.actions.get('import').funct(); - }) - ); - } - else - { - this.loadImage(e.target.result, mxUtils.bind(this, function(img) - { - this.resizeImage(img, e.target.result, mxUtils.bind(this, function(data2, w2, h2) + } + } + else + { + // Checks if PNG+XML is available to bypass code below + var containsModel = false; + + if (file.type == 'image/png') + { + var xml = (ignoreEmbeddedXml) ? null : this.extractGraphModelFromPng(e.target.result); + + if (xml != null && xml.length > 0) + { + var img = new Image(); + img.src = e.target.result; + + barrier(index, mxUtils.bind(this, function() { - barrier(index, mxUtils.bind(this, function() - { - // Refuses to insert images above a certain size as they kill the app - if (data2 != null && data2.length < maxBytes) - { - var s = (!resizeImages || !this.isResampleImage(e.target.result, resampleThreshold)) ? 1 : Math.min(1, Math.min(maxSize / w2, maxSize / h2)); - - return fn(data2, file.type, x + index * gs, y + index * gs, Math.round(w2 * s), Math.round(h2 * s), file.name); - } - else - { - this.handleError({message: mxResources.get('imageTooBig')}); - - return null; - } - })); - }), resizeImages, maxSize, resampleThreshold); - }), mxUtils.bind(this, function() - { - this.handleError({message: mxResources.get('invalidOrMissingFile')}); - })); - } - } - } - } - else - { - fn(e.target.result, file.type, x + index * gs, y + index * gs, 240, 160, file.name, function(cells) - { - barrier(index, function() - { - return cells; - }); - }); - } + return fn(xml, 'text/xml', x + index * gs, y + index * gs, + img.width, img.height, file.name); + })); + + containsModel = true; + } + } + + // Additional asynchronous step for finding image size + if (!containsModel) + { + // Cannot load local files in Chrome App + if (mxClient.IS_CHROMEAPP) + { + this.spinner.stop(); + this.showError(mxResources.get('error'), mxResources.get('dragAndDropNotSupported'), + mxResources.get('cancel'), mxUtils.bind(this, function() + { + // Hides the dialog + }), null, mxResources.get('ok'), mxUtils.bind(this, function() + { + // Redirects to import function + this.actions.get('import').funct(); + }) + ); + } + else + { + this.loadImage(e.target.result, mxUtils.bind(this, function(img) + { + this.resizeImage(img, e.target.result, mxUtils.bind(this, function(data2, w2, h2) + { + barrier(index, mxUtils.bind(this, function() + { + // Refuses to insert images above a certain size as they kill the app + if (data2 != null && data2.length < maxBytes) + { + var s = (!resizeImages || !this.isResampleImage(e.target.result, resampleThreshold)) ? 1 : Math.min(1, Math.min(maxSize / w2, maxSize / h2)); + + return fn(data2, file.type, x + index * gs, y + index * gs, Math.round(w2 * s), Math.round(h2 * s), file.name); + } + else + { + this.handleError({message: mxResources.get('imageTooBig')}); + + return null; + } + })); + }), resizeImages, maxSize, resampleThreshold); + }), mxUtils.bind(this, function() + { + this.handleError({message: mxResources.get('invalidOrMissingFile')}); + })); + } + } + } + } + else + { + fn(e.target.result, file.type, x + index * gs, y + index * gs, 240, 160, file.name, function(cells) + { + barrier(index, function() + { + return cells; + }); + }); + } + } + }); + + // Handles special cases + if (/(\.v(dx|sdx?))($|\?)/i.test(file.name) || /(\.vs(x|sx?))($|\?)/i.test(file.name)) + { + fn(null, file.type, x + index * gs, y + index * gs, 240, 160, file.name, function(cells) + { + barrier(index, function() + { + return cells; + }); + }, file); } - }); - - // Handles special cases - if (/(\.v(dx|sdx?))($|\?)/i.test(file.name) || /(\.vs(x|sx?))($|\?)/i.test(file.name)) - { - fn(null, file.type, x + index * gs, y + index * gs, 240, 160, file.name, function(cells) + else if (file.type.substring(0, 5) == 'image') { - barrier(index, function() - { - return cells; - }); - }, file); - } - else if (file.type.substring(0, 5) == 'image') - { - reader.readAsDataURL(file); - } - else - { - reader.readAsText(file); + reader.readAsDataURL(file); + } + else + { + reader.readAsText(file); + } } }))(i); } @@ -9314,7 +9296,7 @@ else { window.openWindow(((mxClient.IS_CHROMEAPP) ? - 'https://www.draw.io/' : 'https://' + location.host + '/') + + (EditorUi.drawHost + '/') : 'https://' + location.host + '/') + window.location.search + '#U' + encodeURIComponent(data)); } } @@ -10327,22 +10309,22 @@ { this.getEmbeddedSvg(msg.xml, this.editor.graph, null, true, mxUtils.bind(this, function(svg) { - this.editor.graph.setEnabled(true); - this.spinner.stop(); - - msg.data = this.createSvgDataUri(svg); - parent.postMessage(JSON.stringify(msg), '*'); + this.editor.graph.setEnabled(true); + this.spinner.stop(); + + msg.data = this.createSvgDataUri(svg); + parent.postMessage(JSON.stringify(msg), '*'); })); } else { this.convertImages(this.editor.graph.getSvg(bg), mxUtils.bind(this, function(svgRoot) { - this.editor.graph.setEnabled(true); - this.spinner.stop(); - - msg.data = this.createSvgDataUri(mxUtils.getXml(svgRoot)); - parent.postMessage(JSON.stringify(msg), '*'); + this.editor.graph.setEnabled(true); + this.spinner.stop(); + + msg.data = this.createSvgDataUri(mxUtils.getXml(svgRoot)); + parent.postMessage(JSON.stringify(msg), '*'); })); } } diff --git a/src/main/webapp/js/diagramly/ElectronApp.js b/src/main/webapp/js/diagramly/ElectronApp.js index 1dce13b8..27ada5e0 100644 --- a/src/main/webapp/js/diagramly/ElectronApp.js +++ b/src/main/webapp/js/diagramly/ElectronApp.js @@ -828,7 +828,7 @@ FeedbackDialog.feedbackUrl = 'https://log.draw.io/email'; // Adds default extension if (filename.length > 0 && (!/(\.xml)$/i.test(filename) && !/(\.html)$/i.test(filename) && - !/(\.svg)$/i.test(filename) && !/(\.png)$/i.test(filename))) + !/(\.svg)$/i.test(filename) && !/(\.png)$/i.test(filename) && !/(\.drawio)$/i.test(filename))) { filename += '.xml'; } @@ -973,11 +973,6 @@ FeedbackDialog.feedbackUrl = 'https://log.draw.io/email'; var file = this.getCurrentFile(); var syncEnabled = file != null && file.fileObject != null; this.actions.get('synchronize').setEnabled(syncEnabled); - - if (this.syncButton != null) - { - this.syncButton.style.display = (syncEnabled) ? '' : 'none'; - } }; EditorUi.prototype.saveLocalFile = function(data, filename, mimeType, base64Encoded, format, allowBrowser) diff --git a/src/main/webapp/js/diagramly/GitHubClient.js b/src/main/webapp/js/diagramly/GitHubClient.js index 0ddec643..eaa48d18 100644 --- a/src/main/webapp/js/diagramly/GitHubClient.js +++ b/src/main/webapp/js/diagramly/GitHubClient.js @@ -209,7 +209,29 @@ GitHubClient.prototype.authenticate = function(success, error) /** * Authorizes the client, gets the userId and calls <open>. */ -GitHubClient.prototype.executeRequest = function(req, success, error) +GitHubClient.prototype.getErrorMessage = function(req, defaultText) +{ + try + { + var temp = JSON.parse(req.getText()); + + if (temp != null && temp.message != null) + { + defaultText = temp.message; + } + } + catch (e) + { + // ignore + } + + return defaultText; +}; + +/** + * Authorizes the client, gets the userId and calls <open>. + */ +GitHubClient.prototype.executeRequest = function(req, success, error, ignoreNotFound) { var doExecute = mxUtils.bind(this, function(failOnAuth) { @@ -234,7 +256,8 @@ GitHubClient.prototype.executeRequest = function(req, success, error) if (acceptResponse) { - if (req.getStatus() >= 200 && req.getStatus() <= 299) + if ((req.getStatus() >= 200 && req.getStatus() <= 299) || + (ignoreNotFound && req.getStatus() == 404)) { success(req); } @@ -280,7 +303,7 @@ GitHubClient.prototype.executeRequest = function(req, success, error) } else if (req.getStatus() === 404) { - error({message: mxResources.get('fileNotFound')}); + error({message: this.getErrorMessage(req, mxResources.get('fileNotFound'))}); } else if (req.getStatus() === 409) { @@ -289,7 +312,7 @@ GitHubClient.prototype.executeRequest = function(req, success, error) } else { - error({message: mxResources.get('error') + ' ' + req.getStatus()}); + error({message: this.getErrorMessage(req, mxResources.get('error') + ' ' + req.getStatus())}); } } }), error); @@ -874,7 +897,7 @@ GitHubClient.prototype.showGitHubDialog = function(showFiles, fn) listFiles(false); } } - }), error); + }), error, true); }); // Adds paging for repos and branches (files limited to 1000 by API) diff --git a/src/main/webapp/js/diagramly/GraphViewer.js b/src/main/webapp/js/diagramly/GraphViewer.js index 91eb56ba..63a1c13a 100644 --- a/src/main/webapp/js/diagramly/GraphViewer.js +++ b/src/main/webapp/js/diagramly/GraphViewer.js @@ -66,6 +66,16 @@ GraphViewer.prototype.showTitleAsTooltip = false; GraphViewer.prototype.checkVisibleState = true; /** + * Defines the minimum height of the container. Default is 28. + */ +GraphViewer.prototype.minHeight = 28; + +/** + * Defines the minimum width of the container. Default is 100. + */ +GraphViewer.prototype.minWidth = 100; + +/** * Initializes the viewer. */ GraphViewer.prototype.init = function(container, xmlNode, graphConfig) @@ -88,6 +98,11 @@ GraphViewer.prototype.init = function(container, xmlNode, graphConfig) this.currentPage = parseInt(this.graphConfig.page) || 0; this.editor = null; + if (this.graphConfig['toolbar-position'] == 'inline') + { + this.minHeight += this.toolbarHeight; + } + if (xmlNode != null) { this.xmlDocument = xmlNode.ownerDocument; @@ -124,6 +139,14 @@ GraphViewer.prototype.init = function(container, xmlNode, graphConfig) this.graph.autoScroll = false; this.graph.setEnabled(false); + if (this.graphConfig['toolbar-nohide'] == true) + { + this.editor.defaultGraphOverflow = 'visible'; + } + + //Extract graph model from html & svg formats + this.xmlNode = this.editor.extractGraphModel(this.xmlNode, true); + // Handles relative images var self = this; @@ -426,7 +449,15 @@ GraphViewer.prototype.addSizeHandler = function() var container = this.graph.container; var bounds = this.graph.getGraphBounds(); var updatingOverflow = false; - container.style.overflow = 'hidden'; + + if (this.graphConfig['toolbar-nohide'] != true) + { + container.style.overflow = 'hidden'; + } + else + { + container.style.overflow = 'visible'; + } var updateOverflow = mxUtils.bind(this, function() { @@ -435,16 +466,23 @@ GraphViewer.prototype.addSizeHandler = function() updatingOverflow = true; var tmp = this.graph.getGraphBounds(); - if (container.offsetWidth <= tmp.width + 2 * this.graph.border * this.graph.view.scale) + if (this.graphConfig['toolbar-nohide'] != true) { - container.style.overflow = 'auto'; + if (container.offsetWidth <= tmp.width + 2 * this.graph.border * this.graph.view.scale) + { + container.style.overflow = 'auto'; + } + else + { + container.style.overflow = 'hidden'; + } } else { - container.style.overflow = 'hidden'; + container.style.overflow = 'visible'; } - - if (this.toolbar != null) + + if (this.toolbar != null && this.graphConfig['toolbar-nohide'] != true) { var r = container.getBoundingClientRect(); @@ -499,7 +537,7 @@ GraphViewer.prototype.addSizeHandler = function() this.graph.maxFitScale = null; var tmp = this.graph.getGraphBounds(); - this.updateContainerHeight(container, tmp.height + 2 * this.graph.border + 1); + this.updateContainerHeight(container, Math.max(this.minHeight, tmp.height + 2 * this.graph.border + 1)); this.graph.initialViewState = { translate: this.graph.view.translate.clone(), @@ -533,7 +571,7 @@ GraphViewer.prototype.addSizeHandler = function() if (this.graphConfig.resize || ((this.zoomEnabled || !this.autoFit) && this.graphConfig.resize != false)) { - this.graph.minimumContainerSize = new mxRectangle(0, 0, 100, 1); + this.graph.minimumContainerSize = new mxRectangle(0, 0, this.minWidth, this.minHeight); this.graph.resizeContainer = true; } else @@ -544,7 +582,7 @@ GraphViewer.prototype.addSizeHandler = function() this.updateContainerWidth(container, bounds.width + 2 * this.graph.border); } - this.updateContainerHeight(container, bounds.height + 2 * this.graph.border + 1); + this.updateContainerHeight(container, Math.max(this.minHeight, bounds.height + 2 * this.graph.border + 1)); if (!this.zoomEnabled && this.autoFit) { @@ -720,6 +758,7 @@ GraphViewer.prototype.addToolbar = function() toolbar.style.overflow = 'hidden'; toolbar.style.boxSizing = 'border-box'; toolbar.style.whiteSpace = 'nowrap'; + toolbar.style.textAlign = 'left'; toolbar.style.zIndex = this.toolbarZIndex; toolbar.style.backgroundColor = '#eee'; toolbar.style.height = this.toolbarHeight + 'px'; @@ -1072,46 +1111,47 @@ GraphViewer.prototype.addToolbar = function() var enter = mxUtils.bind(this, function() { - var r = container.getBoundingClientRect(); - - // Workaround for position:relative set in ResizeSensor - var origin = mxUtils.getScrollOrigin(document.body) - var b = (document.body.style.position === 'relative') ? document.body.getBoundingClientRect() : - {left: -origin.x, top: -origin.y}; - r = {left: r.left - b.left, top: r.top - b.top, bottom: r.bottom - b.top, right: r.right - b.left}; - - toolbar.style.left = r.left + 'px'; toolbar.style.width = (this.graphConfig['toolbar-position'] == 'inline') ? 'auto' : Math.max(this.minToolbarWidth, container.offsetWidth) + 'px'; toolbar.style.border = '1px solid #d0d0d0'; - - if (this.graphConfig['toolbar-position'] == 'bottom') - { - toolbar.style.top = r.bottom - 1 + 'px'; - } - else + + if (this.graphConfig['toolbar-nohide'] != true) { - if (this.graphConfig['toolbar-position'] != 'inline') + var r = container.getBoundingClientRect(); + + // Workaround for position:relative set in ResizeSensor + var origin = mxUtils.getScrollOrigin(document.body) + var b = (document.body.style.position === 'relative') ? document.body.getBoundingClientRect() : + {left: -origin.x, top: -origin.y}; + r = {left: r.left - b.left, top: r.top - b.top, bottom: r.bottom - b.top, right: r.right - b.left}; + + toolbar.style.left = r.left + 'px'; + + if (this.graphConfig['toolbar-position'] == 'bottom') { - toolbar.style.marginTop = -this.toolbarHeight + 'px'; - toolbar.style.top = r.top + 1 + 'px'; + toolbar.style.top = r.bottom - 1 + 'px'; } else { - toolbar.style.top = r.top + 'px'; + if (this.graphConfig['toolbar-position'] != 'inline') + { + toolbar.style.marginTop = -this.toolbarHeight + 'px'; + toolbar.style.top = r.top + 1 + 'px'; + } + else + { + toolbar.style.top = r.top + 'px'; + } } - } - - if (prevBorder == '1px solid transparent') - { - container.style.border = '1px solid #d0d0d0'; - } - - document.body.appendChild(toolbar); - - var hideToolbar = mxUtils.bind(this, function() - { - if (this.graphConfig['toolbar-nohide'] != true) + + if (prevBorder == '1px solid transparent') + { + container.style.border = '1px solid #d0d0d0'; + } + + document.body.appendChild(toolbar); + + var hideToolbar = mxUtils.bind(this, function() { if (toolbar.parentNode != null) { @@ -1125,33 +1165,45 @@ GraphViewer.prototype.addToolbar = function() } container.style.border = prevBorder; - } - }); - - mxEvent.addListener(document, 'mousemove', function(evt) - { - var source = mxEvent.getSource(evt); + }); - while (source != null) + mxEvent.addListener(document, 'mousemove', function(evt) { - if (source == container || source == toolbar || source == layersDialog) + var source = mxEvent.getSource(evt); + + while (source != null) { - return; + if (source == container || source == toolbar || source == layersDialog) + { + return; + } + + source = source.parentNode; } - source = source.parentNode; - } + hideToolbar(); + }); - hideToolbar(); - }); - - mxEvent.addListener(document, 'mouseleave', function(evt) + mxEvent.addListener(document, 'mouseleave', function(evt) + { + hideToolbar(); + }); + } + else { - hideToolbar(); - }); + toolbar.style.top = -this.toolbarHeight + 'px'; + container.appendChild(toolbar); + } }); - - mxEvent.addListener(container, 'mouseenter', enter); + + if (this.graphConfig['toolbar-nohide'] != true) + { + mxEvent.addListener(container, 'mouseenter', enter); + } + else + { + enter(); + } }; /** diff --git a/src/main/webapp/js/diagramly/Init.js b/src/main/webapp/js/diagramly/Init.js index 00cd5c2b..3298f1a1 100644 --- a/src/main/webapp/js/diagramly/Init.js +++ b/src/main/webapp/js/diagramly/Init.js @@ -18,6 +18,7 @@ window.EMF_CONVERT_URL = window.EMF_CONVERT_URL || "https://convert.draw.io/emf2 window.SAVE_URL = window.SAVE_URL || 'save'; window.OPEN_URL = window.OPEN_URL || 'open'; window.PROXY_URL = window.PROXY_URL || 'proxy'; +window.VIEWER_URL = null; // Paths and files window.SHAPES_PATH = window.SHAPES_PATH || 'shapes'; diff --git a/src/main/webapp/js/diagramly/Menus.js b/src/main/webapp/js/diagramly/Menus.js index 4c61ae3e..24651195 100644 --- a/src/main/webapp/js/diagramly/Menus.js +++ b/src/main/webapp/js/diagramly/Menus.js @@ -120,7 +120,7 @@ if (xml != null) { - graph.setSelectionCells(editorUi.importXml(xml)); + graph.setSelectionCells(editorUi.importXml(xml, 20, 20, true)); graph.scrollCellToVisible(graph.getSelectionCell()); } }, null, null, null, null, null, null, null, null, null, null, @@ -1005,36 +1005,111 @@ } // Checks for duplicates - var all = doc.getElementsByTagName('*'); - var allIds = {}; - var dups = {}; - - for (var i = 0; i < all.length; i++) + function checkModel(node) { - var el = all[i]; + var pageId = node.parentNode.id; + var all = node.childNodes; + var allIds = {}; + var childs = {}; + var root = null; + var dups = {}; + + for (var i = 0; i < all.length; i++) + { + var el = all[i]; + + if (el.id != null && el.id.length > 0) + { + if (allIds[el.id] == null) + { + allIds[el.id] = el.id; + var pid = el.getAttribute('parent'); + + if (pid == null) + { + if (root != null) + { + mxLog.debug(pageId + ': Multiple roots: ' + el.id); + } + else + { + root = el.id; + } + } + else + { + if (childs[pid] == null) + { + childs[pid] = []; + } + + childs[pid].push(el.id); + } + } + else + { + dups[el.id] = el.id; + } + } + } + + if (Object.keys(dups).length > 0) + { + var log = pageId + ': ' + Object.keys(dups).length + ' Duplicates: ' + Object.keys(dups).join(', '); + mxLog.debug(log + ' (see console)'); + } + else + { + mxLog.debug(pageId + ': Checked'); + } + + // Checks tree for cycles + var visited = {}; - if (el.id != null && el.id.length > 0) + function visit(id) { - if (allIds[el.id] == null) + if (visited[id] == null) { - allIds[el.id] = el.id; + visited[id] = true; + + if (childs[id] != null) + { + while (childs[id].length > 0) + { + var temp = childs[id].pop(); + visit(temp); + } + + delete childs[id]; + } } else { - dups[el.id] = el.id; + mxLog.debug(pageId + ': Visited: ' + id); } + }; + + if (root == null) + { + mxLog.debug(pageId + ': No root'); } - } + else + { + visit(root); + + if (Object.keys(visited).length != Object.keys(allIds).length) + { + mxLog.debug(pageId + ': Invalid tree: (see console)'); + console.log(pageId + ': Invalid tree', childs); + } + } + }; - if (Object.keys(dups).length > 0) - { - var log = Object.keys(dups).length + ' Duplicates: ' + Object.keys(dups).join(', '); - mxLog.debug(log + ' (see console)'); - console.log(log); - } - else + var roots = doc.getElementsByTagName('root'); + + for (var i = 0; i < roots.length; i++) { - mxLog.debug('No duplicates'); + checkModel(roots[i]); } mxLog.show(); @@ -1296,54 +1371,61 @@ { var wnd = window.open(); var doc = wnd.document; - - if (document.compatMode === 'CSS1Compat') - { - doc.writeln('<!DOCTYPE html>'); - } - - doc.writeln('<html>'); - doc.writeln('<head><title>' + encodeURIComponent(mxResources.get('preview')) + - '</title><meta charset="utf-8"></head>'); - doc.writeln('<body>'); - doc.writeln(html); - - var direct = mxClient.IS_IE || mxClient.IS_EDGE || document.documentMode != null; - - if (direct) - { - doc.writeln(scriptTag); - } - doc.writeln('</body>'); - doc.writeln('</html>'); - doc.close(); - - // Adds script tag after closing page and delay to fix timing issues - if (!direct) + if (doc != null) { - var info = wnd.document.createElement('div'); - info.marginLeft = '26px'; - info.marginTop = '26px'; - mxUtils.write(info, mxResources.get('updatingDocument')); - - var img = wnd.document.createElement('img'); - img.setAttribute('src', window.location.protocol + '//' + window.location.hostname + - '/' + IMAGE_PATH + '/spin.gif'); - img.style.marginLeft = '6px'; - info.appendChild(img); + if (document.compatMode === 'CSS1Compat') + { + doc.writeln('<!DOCTYPE html>'); + } + + doc.writeln('<html>'); + doc.writeln('<head><title>' + encodeURIComponent(mxResources.get('preview')) + + '</title><meta charset="utf-8"></head>'); + doc.writeln('<body>'); + doc.writeln(html); + + var direct = mxClient.IS_IE || mxClient.IS_EDGE || document.documentMode != null; + + if (direct) + { + doc.writeln(scriptTag); + } - wnd.document.body.insertBefore(info, wnd.document.body.firstChild); + doc.writeln('</body>'); + doc.writeln('</html>'); + doc.close(); - window.setTimeout(function() + // Adds script tag after closing page and delay to fix timing issues + if (!direct) { - var script = document.createElement('script'); - script.type = 'text/javascript'; - script.src = /<script.*?src="(.*?)"/.exec(scriptTag)[1]; - doc.body.appendChild(script); + var info = wnd.document.createElement('div'); + info.marginLeft = '26px'; + info.marginTop = '26px'; + mxUtils.write(info, mxResources.get('updatingDocument')); + + var img = wnd.document.createElement('img'); + img.setAttribute('src', window.location.protocol + '//' + window.location.hostname + + '/' + IMAGE_PATH + '/spin.gif'); + img.style.marginLeft = '6px'; + info.appendChild(img); + + wnd.document.body.insertBefore(info, wnd.document.body.firstChild); - info.parentNode.removeChild(info); - }, 20); + window.setTimeout(function() + { + var script = document.createElement('script'); + script.type = 'text/javascript'; + script.src = /<script.*?src="(.*?)"/.exec(scriptTag)[1]; + doc.body.appendChild(script); + + info.parentNode.removeChild(info); + }, 20); + } + } + else + { + editorUi.handleError({message: mxResources.get('errorUpdatingPreview')}); } }); editorUi.showDialog(dlg.container, 440, 240, true, true); @@ -2105,9 +2187,9 @@ this.addMenuItems(menu, ['embedIframe'], parent); } - if (!editorUi.isOffline()) + if (urlParams['embed'] != '1' && !editorUi.isOffline()) { - this.addMenuItems(menu, ['-', 'googleDocs', 'googleSlides', 'googleSites'], parent); + this.addMenuItems(menu, ['-', 'googleDocs', 'googleSlides'], parent); } }))); diff --git a/src/main/webapp/js/diagramly/Minimal.js b/src/main/webapp/js/diagramly/Minimal.js index 9450335c..44dfa104 100644 --- a/src/main/webapp/js/diagramly/Minimal.js +++ b/src/main/webapp/js/diagramly/Minimal.js @@ -19,7 +19,7 @@ EditorUi.initMinimalTheme = function() style.type = 'text/css'; style.innerHTML = '* { -webkit-font-smoothing: antialiased; }' + 'html body .mxWindow button.geBtn { font-size:12px !important; margin-left: 0; }' + - 'html body table.mxWindow td.mxWindowPane div.mxWindowPane * { font-size:9pt; }' + + 'html body table.mxWindow td.mxWindowPane div.mxWindowPane *:not(svg *) { font-size:9pt; }' + 'html body div.diagramContainer button, html body button.geBtn { font-size:14px; font-weight:700;border-radius: 5px; }' + 'html body button.geBtn:active { opacity: 0.6; }' + 'html body a.geMenuItem { opacity: 0.75; }' + @@ -118,6 +118,21 @@ EditorUi.initMinimalTheme = function() mxWindow.prototype.setLocation.apply(this, arguments); } }; + + // Workaround for text selection starting in Safari + // when dragging shapes outside of window + if (mxClient.IS_SF) + { + this.window.div.onselectstart = mxUtils.bind(this, function(evt) + { + if (evt == null) + { + evt = window.event; + } + + return (evt != null && editorUi.isSelectionAllowed(evt)); + }); + } }; function toggleFormat(ui) @@ -410,20 +425,6 @@ EditorUi.initMinimalTheme = function() elt.style.height = '24px'; elt.style.width = '24px'; } - - if (this.syncButton != null) - { - var elt = this.syncButton; - elt.style.cssText = 'display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;cursor:pointer;'; - elt.className = 'geToolbarButton'; - elt.innerHTML = ''; - elt.style.backgroundImage = 'url(' + Editor.syncImage + ')'; - elt.style.backgroundPosition = 'center center'; - elt.style.backgroundRepeat = 'no-repeat'; - elt.style.backgroundSize = '24px 24px'; - elt.style.height = '24px'; - elt.style.width = '24px'; - } }; EditorUi.prototype.addEmbedButtons = function() @@ -956,7 +957,12 @@ EditorUi.initMinimalTheme = function() div.style.cssText = 'position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;'; div.style.bottom = (urlParams['embed'] != '1' || urlParams['libraries'] == '1') ? '63px' : '32px'; this.sidebar = this.createSidebar(div); - + + if (urlParams['clibs']) + { + toggleShapes(this); + } + // Needed for creating elements in Format panel var ui = this; var graph = ui.editor.graph; @@ -1091,7 +1097,7 @@ EditorUi.initMinimalTheme = function() action.addListener('stateChanged', updateState); updateState(); } - + return btn; }; diff --git a/src/main/webapp/js/diagramly/OneDriveClient.js b/src/main/webapp/js/diagramly/OneDriveClient.js index 79906dbe..81bb7e07 100644 --- a/src/main/webapp/js/diagramly/OneDriveClient.js +++ b/src/main/webapp/js/diagramly/OneDriveClient.js @@ -355,7 +355,7 @@ OneDriveClient.prototype.executeRequest = function(url, success, error) var timeoutThread = window.setTimeout(mxUtils.bind(this, function() { acceptResponse = false; - error({code: App.ERROR_TIMEOUT, retry: fn}); + error({code: App.ERROR_TIMEOUT, retry: doExecute}); }), this.ui.timeout); this.get(url, mxUtils.bind(this, function(req) @@ -710,10 +710,15 @@ OneDriveClient.prototype.checkExists = function(parentId, filename, askReplace, */ OneDriveClient.prototype.saveFile = function(file, success, error, etag) { + var savedData = file.getData(); + var fn = mxUtils.bind(this, function(data) { var url = this.getItemURL(file.getId()) + '/content/'; - this.writeFile(url, data, 'PUT', null, success, error, etag); + this.writeFile(url, data, 'PUT', null, mxUtils.bind(this, function(resp) + { + success(resp, savedData); + }), error, etag); }); if (this.ui.useCanvasForExport && /(\.png)$/i.test(file.meta.name)) @@ -721,11 +726,11 @@ OneDriveClient.prototype.saveFile = function(file, success, error, etag) this.ui.getEmbeddedPng(mxUtils.bind(this, function(data) { fn(this.ui.base64ToBlob(data, 'image/png')); - }), error, (this.ui.getCurrentFile() != file) ? file.getData() : null); + }), error, (this.ui.getCurrentFile() != file) ? savedData : null); } else { - fn(file.getData()); + fn(savedData); } }; @@ -907,7 +912,7 @@ OneDriveClient.prototype.pickFolder = function(fn, direct) { fn({value: [{id: 'root', name: 'root', parentReference: {driveId: 'me'}}]}); - }), openSaveDlg, mxResources.get('yes'), mxResources.get('no')); + }), openSaveDlg, mxResources.get('yes'), mxResources.get('noPickFolder') + '...', true); } if (this.user == null) diff --git a/src/main/webapp/js/diagramly/OneDriveFile.js b/src/main/webapp/js/diagramly/OneDriveFile.js index ad166dbb..85450285 100644 --- a/src/main/webapp/js/diagramly/OneDriveFile.js +++ b/src/main/webapp/js/diagramly/OneDriveFile.js @@ -319,7 +319,6 @@ OneDriveFile.prototype.saveFile = function(title, revision, success, error, unlo var etag = (!overwrite && this.constructor == OneDriveFile && (DrawioFile.SYNC == 'manual' || DrawioFile.SYNC == 'auto')) ? this.getCurrentEtag() : null; - var savedData = this.data; var lastDesc = this.meta; // Makes sure no changes get lost while the file is saved @@ -339,7 +338,7 @@ OneDriveFile.prototype.saveFile = function(title, revision, success, error, unlo prepare(); - this.ui.oneDrive.saveFile(this, mxUtils.bind(this, function(meta) + this.ui.oneDrive.saveFile(this, mxUtils.bind(this, function(meta, savedData) { this.isModified = prevModified; this.savingFile = false; diff --git a/src/main/webapp/js/diagramly/Pages.js b/src/main/webapp/js/diagramly/Pages.js index c272945f..9897aea0 100644 --- a/src/main/webapp/js/diagramly/Pages.js +++ b/src/main/webapp/js/diagramly/Pages.js @@ -190,12 +190,10 @@ SelectPage.prototype.execute = function() page = this.ui.currentPage; // Switches the root cell and sets the view state + graph.model.prefix = Editor.guid() + '-'; graph.model.rootChanged(page.root); graph.setViewState(page.viewState); - - // Fires event to setting view state from realtime - editor.fireEvent(new mxEventObject('setViewState', 'change', this)); - + // Handles grid state in chromeless mode which is stored in Editor instance graph.gridEnabled = graph.gridEnabled && (!this.ui.editor.isChromelessView() || urlParams['grid'] == '1'); @@ -665,6 +663,7 @@ Graph.prototype.setViewState = function(state) // Implicit settings this.pageBreaksVisible = this.pageVisible; this.preferPageSize = this.pageVisible; + this.fireEvent(new mxEventObject('viewStateChanged', 'state', state)); }; /** @@ -904,33 +903,41 @@ EditorUi.prototype.removePage = function(page) */ EditorUi.prototype.duplicatePage = function(page, name) { - var graph = this.editor.graph; var newPage = null; - if (graph.isEnabled()) + try { - if (graph.isEditing()) + var graph = this.editor.graph; + + if (graph.isEnabled()) { - graph.stopEditing(); + if (graph.isEditing()) + { + graph.stopEditing(); + } + + // Clones the current page and takes a snapshot of the graph model and view state + var node = page.node.cloneNode(false); + node.removeAttribute('id'); + + var newPage = new DiagramPage(node); + newPage.root = graph.cloneCell(graph.model.root); + newPage.viewState = graph.getViewState(); + + // Resets zoom and scrollbar positions + newPage.viewState.scale = 1; + newPage.viewState.scrollLeft = null; + newPage.viewState.scrollTop = null; + newPage.viewState.currentRoot = null; + newPage.viewState.defaultParent = null; + newPage.setName(name); + + newPage = this.insertPage(newPage, mxUtils.indexOf(this.pages, page) + 1); } - - // Clones the current page and takes a snapshot of the graph model and view state - var node = page.node.cloneNode(false); - node.removeAttribute('id'); - - var newPage = new DiagramPage(node); - newPage.root = graph.cloneCell(graph.model.root); - newPage.viewState = graph.getViewState(); - - // Resets zoom and scrollbar positions - newPage.viewState.scale = 1; - newPage.viewState.scrollLeft = null; - newPage.viewState.scrollTop = null; - newPage.viewState.currentRoot = null; - newPage.viewState.defaultParent = null; - newPage.setName(name); - - newPage = this.insertPage(newPage, mxUtils.indexOf(this.pages, page) + 1); + } + catch (e) + { + this.handleError(e); } return newPage; diff --git a/src/main/webapp/js/diagramly/sidebar/Sidebar-AWS4.js b/src/main/webapp/js/diagramly/sidebar/Sidebar-AWS4.js index bc061934..eb1a1686 100644 --- a/src/main/webapp/js/diagramly/sidebar/Sidebar-AWS4.js +++ b/src/main/webapp/js/diagramly/sidebar/Sidebar-AWS4.js @@ -7,10 +7,11 @@ var w = 80 * s; var h = 100 * s; var w2 = 60 * s; - var n = 'outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=#ffffff;fillColor=#232F3E;dashed=0;verticalLabelPosition=middle;verticalAlign=bottom;align=center;html=1;whiteSpace=wrap;fontSize=10;fontStyle=1;spacing=3;' + mxConstants.STYLE_SHAPE + "=mxgraph.aws4."; - var n2 = 'outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=#232F3E;fillColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;' + mxConstants.STYLE_SHAPE + "=mxgraph.aws4."; + var pts = 'points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];'; + var n = pts + 'outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=#ffffff;fillColor=#232F3E;dashed=0;verticalLabelPosition=middle;verticalAlign=bottom;align=center;html=1;whiteSpace=wrap;fontSize=10;fontStyle=1;spacing=3;' + mxConstants.STYLE_SHAPE + "=mxgraph.aws4."; + var n2 = pts + 'outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=#232F3E;fillColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;' + mxConstants.STYLE_SHAPE + "=mxgraph.aws4."; var n3 = 'outlineConnect=0;gradientColor=none;fontColor=#545B64;strokeColor=none;fillColor=#879196;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;' + mxConstants.STYLE_SHAPE + "=mxgraph.aws4."; - var n4 = 'outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;' + mxConstants.STYLE_SHAPE + "=mxgraph.aws4."; + var n4 = pts + 'outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;' + mxConstants.STYLE_SHAPE + "=mxgraph.aws4."; var gn = 'mxgraph.aws4'; var sb = this; diff --git a/src/main/webapp/js/diagramly/sidebar/Sidebar-AlliedTelesis.js b/src/main/webapp/js/diagramly/sidebar/Sidebar-AlliedTelesis.js index 055c338f..56348939 100644 --- a/src/main/webapp/js/diagramly/sidebar/Sidebar-AlliedTelesis.js +++ b/src/main/webapp/js/diagramly/sidebar/Sidebar-AlliedTelesis.js @@ -5,7 +5,7 @@ var d = 60; var dt = 'allied telesis'; var sb = this; - var s = 'aspect=fixed;perimeter=ellipsePerimeter;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/'; + var s = 'points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/'; // Adds Allied Telesis shapes this.addAlliedTelesisBuildingsPalette(d, dt, sb, s); diff --git a/src/main/webapp/js/diagramly/sidebar/Sidebar-ArchiMate3.js b/src/main/webapp/js/diagramly/sidebar/Sidebar-ArchiMate3.js index 5aaf3868..15b579c2 100644 --- a/src/main/webapp/js/diagramly/sidebar/Sidebar-ArchiMate3.js +++ b/src/main/webapp/js/diagramly/sidebar/Sidebar-ArchiMate3.js @@ -232,7 +232,7 @@ w * 150, h * 75, '', 'Driver', null, null, this.getTagsForStencil(gn, '', dt + 'driver').join(' ')), this.createVertexTemplateEntry(am2 + 'application;appType=assess;archiType=oct;', w * 150, h * 75, '', 'Assesment', null, null, this.getTagsForStencil(gn, '', dt + 'assessment').join(' ')), - this.createVertexTemplateEntry('shape=ellipse;html=1;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;', + this.createVertexTemplateEntry('shape=ellipse;html=1;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;perimeter=ellipsePerimeter;', w * 150, h * 75, '', 'Value', null, null, this.getTagsForStencil(gn, '', dt + 'value').join(' ')), this.createVertexTemplateEntry('shape=cloud;html=1;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;', w * 150, h * 75, '', 'Meaning', null, null, this.getTagsForStencil(gn, '', dt + 'meaning').join(' ')), diff --git a/src/main/webapp/js/diagramly/sidebar/Sidebar-CiscoSafe.js b/src/main/webapp/js/diagramly/sidebar/Sidebar-CiscoSafe.js index 5d0b2788..907a76c2 100644 --- a/src/main/webapp/js/diagramly/sidebar/Sidebar-CiscoSafe.js +++ b/src/main/webapp/js/diagramly/sidebar/Sidebar-CiscoSafe.js @@ -13,7 +13,8 @@ { var w = 50; var h = 50; - var s = mxConstants.STYLE_VERTICAL_LABEL_POSITION + '=bottom;html=1;fillColor=#6ABD46;' + mxConstants.STYLE_VERTICAL_ALIGN + '=top;align=center;shape=mxgraph.cisco_safe.architecture.'; + var s = mxConstants.STYLE_VERTICAL_LABEL_POSITION + '=bottom;html=1;fillColor=#6ABD46;' + mxConstants.STYLE_VERTICAL_ALIGN + '=top;align=center;' + + 'points=[[0.06,0.06,0],[0.94,0.06,0],[0.94,0.94,0],[0.06,0.94,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0.25,0],[1,0.5,0],[1,0.75,0],[0.75,1,0],[0.5,1,0],[0.25,1,0],[0,0.75,0],[0,0.5,0],[0,0.25,0]];shape=mxgraph.cisco_safe.architecture.'; var gn = 'mxgraph.cisco_safe.architecture'; var dt = 'cisco safe architecture'; @@ -94,7 +95,8 @@ { var w = 50; var h = 50; - var s = mxConstants.STYLE_VERTICAL_LABEL_POSITION + '=bottom;html=1;fillColor=#28A8E0;' + mxConstants.STYLE_VERTICAL_ALIGN + '=top;align=center;shape=mxgraph.cisco_safe.capability.'; + var s = mxConstants.STYLE_VERTICAL_LABEL_POSITION + '=bottom;html=1;fillColor=#28A8E0;' + mxConstants.STYLE_VERTICAL_ALIGN + '=top;' + + 'points=[[0.145,0.145,0],[0.8555,0.145,0],[0.855,0.855,0],[0.145,0.855,0],[0.5,0,0], [1,0.5,0], [0.5,1,0],[0,0.5,0]];align=center;shape=mxgraph.cisco_safe.capability.'; var gn = 'mxgraph.cisco_safe.capability'; var dt = 'cisco safe capability'; @@ -219,7 +221,9 @@ { var w = 50; var h = 50; - var s = mxConstants.STYLE_VERTICAL_LABEL_POSITION + '=bottom;html=1;fillColor=#A153A0;' + mxConstants.STYLE_VERTICAL_ALIGN + '=top;align=center;shape=mxgraph.cisco_safe.design.'; + var s = mxConstants.STYLE_VERTICAL_LABEL_POSITION + '=bottom;html=1;fillColor=#A153A0;' + mxConstants.STYLE_VERTICAL_ALIGN + '=top;align=center;' + + 'points=[[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0.5,0],[0.75,1,0],[0.5,1,0],[0.25,1,0],[0,0.5,0],[0.125,0.25,0],[0.125,0.75,0],[0.875,0.25,0],[0.875,0.75,0]];shape=mxgraph.cisco_safe.design.'; + var s2 = mxConstants.STYLE_VERTICAL_LABEL_POSITION + '=bottom;html=1;fillColor=#A153A0;' + mxConstants.STYLE_VERTICAL_ALIGN + '=top;align=center;shape=mxgraph.cisco_safe.design.'; var gn = 'mxgraph.cisco_safe.design'; var dt = 'cisco safe design'; @@ -233,9 +237,9 @@ w, h * 0.9, '', 'ACI Leaf Switch', null, null, this.getTagsForStencil(gn, 'aci leaf switch', dt).join(' ')), this.createVertexTemplateEntry(s + 'aci_spine_switch;', w, h * 0.9, '', 'ACI Spine Switch', null, null, this.getTagsForStencil(gn, 'aci spine switch', dt).join(' ')), - this.createVertexTemplateEntry(s + 'actor_1;', + this.createVertexTemplateEntry(s2 + 'actor_1;', w * 0.47, h, '', 'Actor (female)', null, null, this.getTagsForStencil(gn, 'actor female', dt).join(' ')), - this.createVertexTemplateEntry(s + 'actor_2;', + this.createVertexTemplateEntry(s2 + 'actor_2;', w * 0.38, h, '', 'Actor (male)', null, null, this.getTagsForStencil(gn, 'actor male', dt).join(' ')), this.createVertexTemplateEntry(s + 'adaptive_security_appliance;', w, h * 0.9, '', 'Adaptive Security Appliance', null, null, this.getTagsForStencil(gn, 'adaptive security appliance', dt).join(' ')), diff --git a/src/main/webapp/js/diagramly/sidebar/Sidebar-DFD.js b/src/main/webapp/js/diagramly/sidebar/Sidebar-DFD.js index e36e9268..63f985f8 100644 --- a/src/main/webapp/js/diagramly/sidebar/Sidebar-DFD.js +++ b/src/main/webapp/js/diagramly/sidebar/Sidebar-DFD.js @@ -14,8 +14,8 @@ [ this.createVertexTemplateEntry(s + 'start', w * 0.8, h * 0.3, '', 'Start / End', null, null, this.getTagsForStencil(gn, 'start end', dt).join(' ')), this.createVertexTemplateEntry('html=1;dashed=0;whitespace=wrap;', w, h * 0.5, '', 'Activity / Process / Entity / External Interactor', null, null, this.getTagsForStencil(gn, 'activity process entity external interactor', dt).join(' ')), - this.createVertexTemplateEntry('shape=rhombus;html=1;dashed=0;whitespace=wrap;', w * 0.6, h * 0.5, '', 'Decision / Entity Relationship', null, null, this.getTagsForStencil(gn, 'decision entity relationship', dt).join(' ')), - this.createVertexTemplateEntry('shape=ellipse;html=1;dashed=0;whitespace=wrap;aspect=fixed;', w * 0.3, h * 0.3, '', 'Reference', null, null, this.getTagsForStencil(gn, 'reference', dt).join(' ')), + this.createVertexTemplateEntry('shape=rhombus;html=1;dashed=0;whitespace=wrap;perimeter=rhombusPerimeter;', w * 0.6, h * 0.5, '', 'Decision / Entity Relationship', null, null, this.getTagsForStencil(gn, 'decision entity relationship', dt).join(' ')), + this.createVertexTemplateEntry('shape=ellipse;html=1;dashed=0;whitespace=wrap;aspect=fixed;perimeter=ellipsePerimeter;', w * 0.3, h * 0.3, '', 'Reference', null, null, this.getTagsForStencil(gn, 'reference', dt).join(' ')), this.createVertexTemplateEntry('shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;dashed=0;', w, h * 0.5, '', 'Product / Result', null, null, this.getTagsForStencil(gn, 'product result', dt).join(' ')), this.createVertexTemplateEntry('shape=manualInput;whiteSpace=wrap;html=1;dashed=0;size=15;', w, h * 0.5, '', 'Order / Command', null, null, this.getTagsForStencil(gn, 'order command', dt).join(' ')), this.createVertexTemplateEntry('shape=document;whiteSpace=wrap;html=1;boundedLbl=1;dashed=0;flipH=1;', w, h * 0.7, '', 'Information / Data Carrier / SOP', null, null, this.getTagsForStencil(gn, 'information data carrier sop', dt).join(' ')), @@ -23,16 +23,16 @@ this.createVertexTemplateEntry(s + 'archive', w * 0.6, h * 0.6, '', 'Final Report / Archive', null, null, this.getTagsForStencil(gn, 'final report archive', dt).join(' ')), this.createVertexTemplateEntry('shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;size=0.25', w, h * 0.5, '', 'Check', null, null, this.getTagsForStencil(gn, 'check', dt).join(' ')), this.createVertexTemplateEntry(s + 'check2', w, h * 0.5, '', 'Check 2', null, null, this.getTagsForStencil(gn, 'check', dt).join(' ')), - this.createVertexTemplateEntry('shape=ellipse;html=1;dashed=0;whitespace=wrap;', w * 0.3, h * 0.3, '', 'Data Process', null, null, this.getTagsForStencil(gn, 'data process', dt).join(' ')), - this.createVertexTemplateEntry('shape=ellipse;html=1;dashed=0;whitespace=wrap;aspect=fixed;', w * 0.6, h * 0.6, '', 'Data Process / State', null, null, this.getTagsForStencil(gn, 'data process', dt).join(' ')), + this.createVertexTemplateEntry('shape=ellipse;html=1;dashed=0;whitespace=wrap;perimeter=ellipsePerimeter;', w * 0.3, h * 0.3, '', 'Data Process', null, null, this.getTagsForStencil(gn, 'data process', dt).join(' ')), + this.createVertexTemplateEntry('shape=ellipse;html=1;dashed=0;whitespace=wrap;aspect=fixed;perimeter=ellipsePerimeter;', w * 0.6, h * 0.6, '', 'Data Process / State', null, null, this.getTagsForStencil(gn, 'data process', dt).join(' ')), this.createVertexTemplateEntry('ellipse;shape=doubleEllipse;html=1;dashed=0;whitespace=wrap;aspect=fixed;', w * 0.6, h * 0.6, '', 'Multiple Process / Start State / Multi State', null, null, this.getTagsForStencil(gn, 'multiple process start state multi', dt).join(' ')), - this.createVertexTemplateEntry('shape=ellipse;html=1;dashed=0;whitespace=wrap;aspect=fixed;strokeWidth=5;', w * 0.6, h * 0.6, '', 'Stop State', null, null, this.getTagsForStencil(gn, 'stop state', dt).join(' ')), + this.createVertexTemplateEntry('shape=ellipse;html=1;dashed=0;whitespace=wrap;aspect=fixed;strokeWidth=5;perimeter=ellipsePerimeter;', w * 0.6, h * 0.6, '', 'Stop State', null, null, this.getTagsForStencil(gn, 'stop state', dt).join(' ')), this.createVertexTemplateEntry('html=1;dashed=0;whitespace=wrap;shape=partialRectangle;right=0;left=0;fillColor=none;', w, h * 0.3, '', 'Data Store', null, null, this.getTagsForStencil(gn, 'data store', dt).join(' ')), this.createVertexTemplateEntry('html=1;dashed=0;whitespace=wrap;shape=partialRectangle;right=0;fillColor=none;', w, h * 0.3, '', 'Data Store', null, null, this.getTagsForStencil(gn, 'data store', dt).join(' ')), - this.createVertexTemplateEntry(s + 'dataStoreID;align=left;spacingLeft=3;', w, h * 0.3, '', 'Data Store with ID', null, null, this.getTagsForStencil(gn, 'data store with id identification', dt).join(' ')), + this.createVertexTemplateEntry(s + 'dataStoreID;align=left;spacingLeft=3;points=[[0,0],[0.5,0],[1,0],[0,0.5],[1,0.5],[0,1],[0.5,1],[1,1]];', w, h * 0.3, '', 'Data Store with ID', null, null, this.getTagsForStencil(gn, 'data store with id identification', dt).join(' ')), this.createVertexTemplateEntry('swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=20;fillColor=#ffffff;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;swimlaneFillColor=#ffffff;', w, h * 0.5, '', 'Entity', null, null, this.getTagsForStencil(gn, 'entity', dt).join(' ')), this.createVertexTemplateEntry('shape=cloud;whiteSpace=wrap;html=1;', w * 1.2, h * 1.2, '', 'Object', null, null, this.getTagsForStencil(gn, 'object', dt).join(' ')), - this.createVertexTemplateEntry('shape=ellipse;html=1;dashed=0;whitespace=wrap;', w, h * 0.5, '', 'Oval Process', null, null, this.getTagsForStencil(gn, 'oval process', dt).join(' ')), + this.createVertexTemplateEntry('shape=ellipse;html=1;dashed=0;whitespace=wrap;perimeter=ellipsePerimeter;', w, h * 0.5, '', 'Oval Process', null, null, this.getTagsForStencil(gn, 'oval process', dt).join(' ')), this.createVertexTemplateEntry('shape=cylinder;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;', w * 0.6, h * 0.8, '', 'Data Store', null, null, this.getTagsForStencil(gn, 'data store', dt).join(' ')), this.addEntry(dt + 'external entity', function() diff --git a/src/main/webapp/js/diagramly/sidebar/Sidebar-GCP2.js b/src/main/webapp/js/diagramly/sidebar/Sidebar-GCP2.js index a073d0c8..3903eaba 100644 --- a/src/main/webapp/js/diagramly/sidebar/Sidebar-GCP2.js +++ b/src/main/webapp/js/diagramly/sidebar/Sidebar-GCP2.js @@ -48,7 +48,7 @@ Sidebar.prototype.addGCP2ZonesPalette = function() { var sb = this; - var s = 'rounded=1;absoluteArcSize=1;arcSize=2;html=1;strokeColor=none;gradientColor=none;shadow=0;dashed=0;fontSize=12;fontColor=#9E9E9E;align=left;verticalAlign=top;spacing=10;spacingTop=-4;'; + var s = 'points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[1,0.25,0],[1,0.5,0],[1,0.75,0],[1,1,0],[0.75,1,0],[0.5,1,0],[0.25,1,0],[0,1,0],[0,0.75,0],[0,0.5,0],[0,0.25,0]];rounded=1;absoluteArcSize=1;arcSize=2;html=1;strokeColor=none;gradientColor=none;shadow=0;dashed=0;fontSize=12;fontColor=#9E9E9E;align=left;verticalAlign=top;spacing=10;spacingTop=-4;'; var dt = 'gcp google cloud platform zone '; var gn = 'mxgraph.gcp2.zones'; var fns = []; @@ -188,7 +188,7 @@ this.addEntry(dt + 'markers', function() { - s = 'shape=ellipse;fillColor=#ffffff;strokeColor=#BDBDBD;strokeWidth=2;shadow=0;gradientColor=none;fontColor=#757575;align=center;html=1;fontStyle=1;spacingTop=-1;'; + s = 'shape=ellipse;perimeter=ellipsePerimeter;fillColor=#ffffff;strokeColor=#BDBDBD;strokeWidth=2;shadow=0;gradientColor=none;fontColor=#757575;align=center;html=1;fontStyle=1;spacingTop=-1;'; var icon1 = new mxCell('1', new mxGeometry(0, 0, 20, 20), s); icon1.vertex = true; diff --git a/src/main/webapp/js/diagramly/sidebar/Sidebar-IBM.js b/src/main/webapp/js/diagramly/sidebar/Sidebar-IBM.js index 158cb857..ac9dea55 100644 --- a/src/main/webapp/js/diagramly/sidebar/Sidebar-IBM.js +++ b/src/main/webapp/js/diagramly/sidebar/Sidebar-IBM.js @@ -476,7 +476,6 @@ Sidebar.prototype.addIBMVPCPalette = function(d, dt, sb, s) { s += 'vpc/'; -// var n = 'dashed=0;html=1;' + mxConstants.STYLE_SHAPE + "=mxgraph.aws3."; var gn = 'vpc virtual private cloud '; var fns = [ @@ -520,62 +519,58 @@ d, d, '', 'Security Group Rules', false, null, this.getTagsForStencil(gn, 'security group rules', dt).join(' ')), this.createVertexTemplateEntry(s + 'VPN.svg;', d, d, '', 'VPN', false, null, this.getTagsForStencil(gn, 'vpn virtual private network', dt).join(' ')), - this.createVertexTemplateEntry('rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#417CB9;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=0;strokeWidth=2;', + this.createVertexTemplateEntry('swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=12;strokeColor=#417CB9;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=0;strokeWidth=2;', 200, 200, 'CLOUD UNIVERSE', 'Cloud Universe', true, null, this.getTagsForStencil(gn, '', dt).join(' ')), - this.createEdgeTemplateEntry('edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=none;endFill=0;rounded=0;strokeColor=#EEBC25;strokeWidth=2;', d, d, '', 'Data Connector', null, dt + 'data connector'), this.createEdgeTemplateEntry('edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=classicThin;endFill=1;rounded=0;strokeColor=#0076BE;strokeWidth=2;', d, d, '', 'Directional Private Connector', null, dt + 'directional private connector'), this.createEdgeTemplateEntry('edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=classicThin;endFill=1;rounded=0;strokeColor=#FD0000;strokeWidth=2;', d, d, '', 'Directional Public Connector', null, dt + 'directional public connector'), - this.addEntry(dt + 'ibm cloud', function() { - var bg1 = new mxCell('IBM CLOUD', new mxGeometry(0, 11, 200, 200), 'rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#417CB9;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;spacingTop=5;dashed=0;strokeWidth=2;'); + var bg1 = new mxCell('IBM CLOUD', new mxGeometry(0, 11, 200, 200), 'swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=12;strokeColor=#417CB9;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;spacingTop=5;dashed=0;strokeWidth=2;'); bg1.vertex = true; - var bg2 = new mxCell('', new mxGeometry(20, 0, 30, 22), s + 'IBMCloud.svg;'); + var bg2 = new mxCell('', new mxGeometry(20, -11, 30, 22), s + 'IBMCloud.svg;part=1;'); bg2.vertex = true; + bg1.insert(bg2); - return sb.createVertexTemplateFromCells([bg1, bg2], 200, 211, 'IBM Cloud'); + return sb.createVertexTemplateFromCells([bg1], 200, 211, 'IBM Cloud'); }), - - this.createVertexTemplateEntry('rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#417CB9;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=0;strokeWidth=2;', + this.createVertexTemplateEntry('swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=12;strokeColor=#417CB9;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=0;strokeWidth=2;', 200, 200, 'OTHER NETWORK', 'Cloud Universe', true, null, this.getTagsForStencil(gn, '', dt).join(' ')), this.createEdgeTemplateEntry('edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=classicThin;endFill=1;rounded=0;strokeColor=#0076BE;strokeWidth=2;startArrow=classicThin;startFill=1;', d, d, '', 'Private Connector', null, dt + 'directional private connector'), this.createEdgeTemplateEntry('edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=classicThin;endFill=1;rounded=0;strokeColor=#FD0000;strokeWidth=2;startArrow=classicThin;startFill=1;', d, d, '', 'Public Connector', null, dt + 'directional private connector'), - - this.createVertexTemplateEntry('rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#417CB9;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=1;strokeWidth=2;', + this.createVertexTemplateEntry('swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=12;strokeColor=#417CB9;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=1;strokeWidth=2;', 200, 200, 'REGION', 'Region', true, null, this.getTagsForStencil(gn, '', dt).join(' ')), this.createVertexTemplateEntry( 'rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#FD0000;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=center;spacingLeft=5;dashed=1;dashPattern=5 2;labelPosition=center;verticalLabelPosition=bottom;strokeWidth=2;', 200, 200, 'SECURITY GROUP', 'Security Group', true, null, this.getTagsForStencil(gn, '', dt).join(' ')), - this.createVertexTemplateEntry('rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#417CB9;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=0;strokeWidth=2;', + this.createVertexTemplateEntry('swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=12;strokeColor=#417CB9;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=0;strokeWidth=2;', 200, 200, 'SERVICES', 'Services', true, null, this.getTagsForStencil(gn, '', dt).join(' ')), - this.addEntry(dt + 'subnet', function() { - var bg1 = new mxCell('SUBNET', new mxGeometry(0, 11, 200, 200), 'rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#FD0000;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;spacingTop=8;dashed=0;strokeWidth=2;'); + var bg1 = new mxCell('SUBNET', new mxGeometry(0, 11, 200, 200), 'swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=12;strokeColor=#FD0000;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;spacingTop=8;dashed=0;strokeWidth=2;'); bg1.vertex = true; - var bg2 = new mxCell('', new mxGeometry(20, 0, 19, 26), s + 'Subnet.svg;'); + var bg2 = new mxCell('', new mxGeometry(20, -11, 19, 26), s + 'Subnet.svg;part=1;'); bg2.vertex = true; + bg1.insert(bg2); - return sb.createVertexTemplateFromCells([bg1, bg2], 200, 211, 'Subnet'); + return sb.createVertexTemplateFromCells([bg1], 200, 211, 'Subnet'); }), - this.addEntry(dt + 'virtual private cloud', function() { - var bg1 = new mxCell('VIRTUAL PRIVATE CLOUD', new mxGeometry(0, 11, 200, 200), 'rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#417CB9;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;spacingTop=5;dashed=0;strokeWidth=2;'); + var bg1 = new mxCell('VIRTUAL PRIVATE CLOUD', new mxGeometry(0, 11, 200, 200), 'swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=12;strokeColor=#417CB9;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;spacingTop=5;dashed=0;strokeWidth=2;'); bg1.vertex = true; - var bg2 = new mxCell('', new mxGeometry(20, 0, 30, 22), s + 'VirtualPrivateCloud.svg;'); + var bg2 = new mxCell('', new mxGeometry(20, -11, 30, 22), s + 'VirtualPrivateCloud.svg;part=1;'); bg2.vertex = true; + bg1.insert(bg2); - return sb.createVertexTemplateFromCells([bg1, bg2], 200, 211, 'Virtual Private Cloud'); + return sb.createVertexTemplateFromCells([bg1], 200, 211, 'Virtual Private Cloud'); }), - - this.createVertexTemplateEntry('rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=20;strokeColor=#417CB9;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=1;strokeWidth=2;', + this.createVertexTemplateEntry('swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=12;strokeColor=#417CB9;fillColor=none;fontColor=#417CB9;verticalAlign=top;align=left;spacingLeft=5;dashed=1;strokeWidth=2;', 200, 200, 'ZONE', 'Zone', true, null, this.getTagsForStencil(gn, '', dt).join(' ')) ]; diff --git a/src/main/webapp/js/diagramly/sidebar/Sidebar-Sysml.js b/src/main/webapp/js/diagramly/sidebar/Sidebar-Sysml.js index 24c22e81..64d8719a 100644 --- a/src/main/webapp/js/diagramly/sidebar/Sidebar-Sysml.js +++ b/src/main/webapp/js/diagramly/sidebar/Sidebar-Sysml.js @@ -689,16 +689,14 @@ this.addEntry(dt + 'port', function() { var s = 'html=1;shape=mxgraph.sysml.'; - var cardCell = new mxCell('Transmission', new mxGeometry(0, 0, 160, 60), s + 'port1;fontStyle=1;whiteSpace=wrap;align=center;'); + var cardCell = new mxCell('Transmission', new mxGeometry(0, 0, 160, 60), s + 'port1;fontStyle=1;whiteSpace=wrap;align=center;points=[[0,0.5,0],[1,0.5,0]];'); cardCell.vertex = true; - var label1 = new mxCell('p1', new mxGeometry(0, 20, 20, 20), inh + 'shape=rect;html=1;resizable=1;align=right;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10;'); + var label1 = new mxCell('p1', new mxGeometry(0, 20, 20, 20), inh + 'shape=rect;points=[[0,0.5,0]];html=1;resizable=1;align=right;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10;part=1;'); label1.geometry.relative = false; - label1.setConnectable(false); label1.vertex = true; cardCell.insert(label1); - var label2 = new mxCell('p2', new mxGeometry(140, 20, 20, 20), inh + 'shape=rect;html=1;resizable=1;labelBackgroundColor=none;fontSize=10;'); + var label2 = new mxCell('p2', new mxGeometry(140, 20, 20, 20), inh + 'shape=rect;points=[[1,0.5,0]];html=1;resizable=1;labelBackgroundColor=none;fontSize=10;part=1;'); label2.geometry.relative = false; - label2.setConnectable(false); label2.vertex = true; cardCell.insert(label2); @@ -709,14 +707,12 @@ { var cardCell = new mxCell('Transmission', new mxGeometry(0, 0, 200, 60), s + 'port2;fontStyle=1;spacingRight=20;whiteSpace=wrap;align=center;'); cardCell.vertex = true; - var label1 = new mxCell('p1 : ~T1', new mxGeometry(0, 20, 20, 20), inh + 'shape=rect;html=1;resizable=1;align=right;verticalAlign=bottom;labelPositin=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10'); + var label1 = new mxCell('p1 : ~T1', new mxGeometry(0, 20, 20, 20), inh + 'shape=rect;points=[[0,0.5,0]];html=1;resizable=1;align=right;verticalAlign=bottom;labelPositin=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10;part=1;'); label1.geometry.relative = false; - label1.setConnectable(false); label1.vertex = true; cardCell.insert(label1); - var label2 = new mxCell('p2 : ~T2', new mxGeometry(140, 20, 60, 20), inh + 'shape=rect;html=1;resizable=1;labelBackgroundColor=none;fontSize=10'); + var label2 = new mxCell('p2 : ~T2', new mxGeometry(140, 20, 60, 20), inh + 'shape=rect;points=[[1,0.5,0]];html=1;resizable=1;labelBackgroundColor=none;fontSize=10;part=1;'); label2.geometry.relative = false; - label2.setConnectable(false); label2.vertex = true; cardCell.insert(label2); @@ -741,9 +737,8 @@ { var cardCell = new mxCell('Transmission', new mxGeometry(0, 0, 160, 60), s + 'port1;fontStyle=1;whiteSpace=wrap;align=center;'); cardCell.vertex = true; - var label1 = new mxCell('<<proxy>>\np1', new mxGeometry(0, 20, 20, 20), inh + 'shape=rect;html=1;resizable=1;align=right;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10'); + var label1 = new mxCell('<<proxy>>\np1', new mxGeometry(0, 20, 20, 20), inh + 'shape=rect;points=[[0,0.5,0]];html=1;resizable=1;align=right;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10;part=1;'); label1.geometry.relative = false; - label1.setConnectable(false); label1.vertex = true; cardCell.insert(label1); @@ -754,9 +749,8 @@ { var cardCell = new mxCell('Transmission', new mxGeometry(0, 0, 160, 60), s + 'port1;fontStyle=1;whiteSpace=wrap;align=center;'); cardCell.vertex = true; - var label1 = new mxCell('<<full>>\np1', new mxGeometry(0, 20, 20, 20), inh + 'shape=rect;html=1;resizable=1;align=right;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10'); + var label1 = new mxCell('<<full>>\np1', new mxGeometry(0, 20, 20, 20), inh + 'shape=rect;points=[[0,0.5,0]];html=1;resizable=1;align=right;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10;paart=1;'); label1.geometry.relative = false; - label1.setConnectable(false); label1.vertex = true; cardCell.insert(label1); @@ -1090,7 +1084,7 @@ this.addDataEntry(dt + 'fork node', 200, 80, 'Fork Node', '7ZZNb4JAEIZ/DXdYrPZq0XppExMPPa8yhU2XHbKMn7++Czt+QDQ1RpMeJCHZfeeD2feBhCBOis3EyjL/xBR0EI+DOLGI5FfFJgGtAxGqNIhHgRChuwPxfiEaNdGwlBYMXVMgfMFK6iV4xQsVbTULVS7Lemlh4Vq+5VS4KUeRW34rrRPUaJvEOGwup6/AklpI/SHnoKdYKVJoXM4cibA4SRhqlZnCj0pYugiP4+KwuXikRuLzTAALILt1KVzQ9ycO1yql3Es9r+Sgspx7vHKWrPw+O/Q5uuUWbNh58+K/zYM0gxlvQc9xPT4Kp1Y2MbfO0aodGpK6Fk06tLbRDZq6wuLSpFA/vva5Imlpn4ElmEaz+ANffPZ4nzVTu3qESBw8ridrOVzh0i6g9VpcYboFLUmt2q3OmcqlU1Suowi3TKaDwc2aAXFSh8ThqVfB6d0fzv61baNh47touhhcxb+DwF+MCJkCQ4keBuXlCeVWKPHDoPSfUG6F8vIwKIMnlFuhDO4FxW2Pf2I+/fRH7Rc='), - this.createVertexTemplateEntry('shape=ellipse;html=1;illColor=#000000;strokeWidth=2;verticalLabelPosition=bottom;verticalAlignment=top;', + this.createVertexTemplateEntry('shape=ellipse;html=1;illColor=#000000;strokeWidth=2;verticalLabelPosition=bottom;verticalAlignment=top;perimeter=ellipsePerimeter;', 40, 40, '', 'Initial Node', null, null, this.getTagsForStencil(gn, '', dt + 'initial node').join(' ')), this.addDataEntry(dt + 'join node', 200, 80, 'Join Node', '7ZZNb8IwDIZ/Ta6oNBvsugLjskmTdtg5tKbNltZVahjs189NMigfk5AAaQcqVXLs1076PjlUyFG5mlpVFy+YgRFyIuTIIpKPytUIjBFxpDMhxyKOI35F/PRHte+qUa0sVHRKQ+wblsoswGfEMPlAXTU1pJzo9XpiOPaihtYmiJpC1W1oIeVtkoJKPvm4z+FcGzNCg9YJZeQezi/Bkk6VeVYzMK/YaNJYsWaGRFiywLSFRKWfucVFlXVmzN3TmfFodN72EtacDV/ANVj96YJLBQumgCWQXbPkt0EOfMuXzqjwuTufKUDnRRjy4L2MVOPX+WbQ1mEOgsnHDZeHhu+bC1kOb2EJZoZfk22ia7WrcVyg1d9YkeJC4syDdrPWdaiyR2udCmtgz5KGLH7Ce/hO6TVv+rvdrB9v7GzPsGNmgwubws6lOcFfC0aRXu6OOmZfaH3lm0dbLnEUHF8HJnsASNkcKDTtMdic4iQsd5fH8ntbnenK0h6IDpoKKzhAdwjKTfl3qAKa/tXQ3N/QnIdGXg3N4IbmPDT3V0MzvKE5D83wUmh4uf2f8/Lu794P'), @@ -1594,7 +1588,7 @@ var sb = this; var fns = [ - this.createVertexTemplateEntry('shape=ellipse;html=1;strokeWidth=3;fontStyle=1;whiteSpace=wrap;align=center;', + this.createVertexTemplateEntry('shape=ellipse;html=1;strokeWidth=3;fontStyle=1;whiteSpace=wrap;align=center;perimeter=ellipsePerimeter;', 120, 60, 'UseCaseName', 'Use Case', null, null, this.getTagsForStencil(gn, '', dt + 'use case').join(' ')), this.addEntry(dt + '', function() diff --git a/src/main/webapp/js/embed-static.min.js b/src/main/webapp/js/embed-static.min.js index ff8c0b7f..e5f65ad3 100644 --- a/src/main/webapp/js/embed-static.min.js +++ b/src/main/webapp/js/embed-static.min.js @@ -35,19 +35,19 @@ this.l&&a.push("?",this.l);null!==this.o&&a.push("#",this.o);return a.join("")}; function(){return null!==this.k};f.prototype.V=function(){return this.h&&decodeURIComponent(this.h)};f.prototype.ca=function(a){if(a){a=Number(a);if(a!==(a&65535))throw Error("Bad port number "+a);this.h=""+a}else this.h=null};f.prototype.$=function(){return null!==this.h};f.prototype.U=function(){return this.g&&decodeURIComponent(this.g)};f.prototype.G=function(a){a?(a=""+a,this.g=!this.k||/^\//.test(a)?a:"/"+a):this.g=null};f.prototype.O=function(a){this.l=a?a:null};f.prototype.aa=function(){return null!== this.l};f.prototype.ba=function(a){if("object"===typeof a&&!(a instanceof Array)&&(a instanceof Object||"[object Array]"!==Object.prototype.toString.call(a))){var b=[],c=-1,d;for(d in a){var e=a[d];"string"===typeof e&&(b[++c]=d,b[++c]=e)}a=b}for(var b=[],c="",f=0;f<a.length;)d=a[f++],e=a[f++],b.push(c,encodeURIComponent(d.toString())),c="&",e&&b.push("=",encodeURIComponent(e.toString()));this.l=b.join("")};f.prototype.fa=function(a){this.o=a?a:null};f.prototype.Z=function(){return null!==this.o}; var l=/^(?:([^:/?#]+):)?(?:\/\/(?:([^/?#]*)@)?([^/?#:@]*)(?::([0-9]+))?)?([^?#]+)?(?:\?([^#]*))?(?:#(.*))?$/,m=/[#\/\?@]/g,n=/[\#\?]/g;f.parse=a;f.create=function(a,d,e,g,h,k,l){a=new f(b(a,m),b(d,m),"string"==typeof e?encodeURIComponent(e):null,0<g?g.toString():null,b(h,n),null,"string"==typeof l?encodeURIComponent(l):null);k&&("string"===typeof k?a.O(k.replace(/[^?&=0-9A-Za-z_\-~.%]/g,c)):a.ba(k));return a};f.N=e;f.ma=d;f.ha={ua:function(b){return/\.html$/.test(a(b).U())?"text/html":"application/javascript"}, -N:function(b,c){return b?e(a(b),a(c)).toString():""+c}};return f}();"undefined"!==typeof window&&(window.URI=f);var g=void 0,h=void 0,k=void 0,l=void 0;(function(){function a(a){return"string"===typeof a?'url("'+a.replace(x,c)+'")':'url("about:blank")'}function c(a){return y[a]}function d(a,b){return a?f.ha.N(a,b):b}function n(a,b,c){if(!c)return null;var d=(""+a).match(u);return!d||d[1]&&!D.test(d[1])?null:c(a,b)}function w(a){return a.replace(/^-(?:apple|css|epub|khtml|moz|mso?|o|rim|wap|webkit|xv)-(?=[a-z])/, -"")}var x=/[\n\f\r\"\'()*<>]/g,y={"\n":"%0a","\f":"%0c","\r":"%0d",'"':"%22","'":"%27","(":"%28",")":"%29","*":"%2a","<":"%3c",">":"%3e"},u=/^(?:([^:/?# ]+):)?/,D=/^(?:https?|mailto|data)$/i;g=function(){var c={};return function C(f,g,h,k,l){f=w(f);var m=b[f];if(m&&"object"===typeof m){for(var p=m.cssPropBits,v=p&80,r=p&1536,q=NaN,B=0,u=0;B<g.length;++B){var t=g[B].toLowerCase(),z=t.charCodeAt(0),x,L,y,D,H,E;if(32===z)t="";else if(34===z)t=16===v?h?a(n(d(k,e(g[B].substring(1,t.length-1))),f,h)):"": -p&8&&!(v&v-1)?t:"";else if("inherit"!==t){if(H=m.cssLitGroup){var F;if(!(F=m.cssLitMap)){F={};for(var K=H.length;0<=--K;)for(var R=H[K],fa=R.length;0<=--fa;)F[R[fa]]=c;F=m.cssLitMap=F}H=F}else H=c;if(E=H,E[w(t)]!==c)if(35===z&&/^#(?:[0-9a-f]{3}){1,2}$/.test(t))t=p&2?t:"";else if(48<=z&&57>=z)t=p&1?t:"";else if(x=t.charCodeAt(1),L=t.charCodeAt(2),y=48<=x&&57>=x,D=48<=L&&57>=L,43===z&&(y||46===x&&D))t=p&1?(y?"":"0")+t.substring(1):"";else if(45===z&&(y||46===x&&D))t=p&4?(y?"-":"-0")+t.substring(1): -p&1?"0":"";else if(46===z&&y)t=p&1?"0"+t:"";else if('url("'===t.substring(0,5))t=h&&p&16?a(n(d(k,g[B].substring(5,t.length-2)),f,h)):"";else if("("===t.charAt(t.length-1))a:{H=g;F=B;t=1;K=F+1;for(z=H.length;K<z&&t;)R=H[K++],t+=")"===R?-1:/^[^"']*\($/.test(R);if(!t)for(t=H[F].toLowerCase(),z=w(t),H=H.splice(F,K-F,""),F=m.cssFns,K=0,R=F.length;K<R;++K)if(F[K].substring(0,z.length)==z){H[0]=H[H.length-1]="";C(F[K],H,h,k);t=t+H.join(" ")+")";break a}t=""}else t=r&&/^-?[a-z_][\w\-]*$/.test(t)&&!/__$/.test(t)? +N:function(b,c){return b?e(a(b),a(c)).toString():""+c}};return f}();"undefined"!==typeof window&&(window.URI=f);var g=void 0,h=void 0,k=void 0,l=void 0;(function(){function a(a){return"string"===typeof a?'url("'+a.replace(w,c)+'")':'url("about:blank")'}function c(a){return y[a]}function d(a,b){return a?f.ha.N(a,b):b}function n(a,b,c){if(!c)return null;var d=(""+a).match(u);return!d||d[1]&&!D.test(d[1])?null:c(a,b)}function x(a){return a.replace(/^-(?:apple|css|epub|khtml|moz|mso?|o|rim|wap|webkit|xv)-(?=[a-z])/, +"")}var w=/[\n\f\r\"\'()*<>]/g,y={"\n":"%0a","\f":"%0c","\r":"%0d",'"':"%22","'":"%27","(":"%28",")":"%29","*":"%2a","<":"%3c",">":"%3e"},u=/^(?:([^:/?# ]+):)?/,D=/^(?:https?|mailto|data)$/i;g=function(){var c={};return function C(f,g,h,k,l){f=x(f);var m=b[f];if(m&&"object"===typeof m){for(var p=m.cssPropBits,v=p&80,r=p&1536,q=NaN,B=0,u=0;B<g.length;++B){var t=g[B].toLowerCase(),z=t.charCodeAt(0),w,L,y,D,I,E;if(32===z)t="";else if(34===z)t=16===v?h?a(n(d(k,e(g[B].substring(1,t.length-1))),f,h)):"": +p&8&&!(v&v-1)?t:"";else if("inherit"!==t){if(I=m.cssLitGroup){var F;if(!(F=m.cssLitMap)){F={};for(var K=I.length;0<=--K;)for(var R=I[K],fa=R.length;0<=--fa;)F[R[fa]]=c;F=m.cssLitMap=F}I=F}else I=c;if(E=I,E[x(t)]!==c)if(35===z&&/^#(?:[0-9a-f]{3}){1,2}$/.test(t))t=p&2?t:"";else if(48<=z&&57>=z)t=p&1?t:"";else if(w=t.charCodeAt(1),L=t.charCodeAt(2),y=48<=w&&57>=w,D=48<=L&&57>=L,43===z&&(y||46===w&&D))t=p&1?(y?"":"0")+t.substring(1):"";else if(45===z&&(y||46===w&&D))t=p&4?(y?"-":"-0")+t.substring(1): +p&1?"0":"";else if(46===z&&y)t=p&1?"0"+t:"";else if('url("'===t.substring(0,5))t=h&&p&16?a(n(d(k,g[B].substring(5,t.length-2)),f,h)):"";else if("("===t.charAt(t.length-1))a:{I=g;F=B;t=1;K=F+1;for(z=I.length;K<z&&t;)R=I[K++],t+=")"===R?-1:/^[^"']*\($/.test(R);if(!t)for(t=I[F].toLowerCase(),z=x(t),I=I.splice(F,K-F,""),F=m.cssFns,K=0,R=F.length;K<R;++K)if(F[K].substring(0,z.length)==z){I[0]=I[I.length-1]="";C(F[K],I,h,k);t=t+I.join(" ")+")";break a}t=""}else t=r&&/^-?[a-z_][\w\-]*$/.test(t)&&!/__$/.test(t)? l&&512===r?g[B]+l:1024===r&&b[t]&&"number"===typeof b[t].oa?t:"":/^\w+$/.test(t)&&64===v&&p&8?q+1===u?(g[q]=g[q].substring(0,g[q].length-1)+" "+t+'"',""):(q=u,'"'+t+'"'):""}t&&(g[u++]=t)}1===u&&'url("about:blank")'===g[0]&&(u=0);g.length=u}else g.length=0}}();var F=/^(active|after|before|blank|checked|default|disabled|drop|empty|enabled|first|first-child|first-letter|first-line|first-of-type|fullscreen|focus|hover|in-range|indeterminate|invalid|last-child|last-of-type|left|link|only-child|only-of-type|optional|out-of-range|placeholder-shown|read-only|read-write|required|right|root|scope|user-error|valid|visited)$/, -E={};E[">"]=E["+"]=E["~"]=E;h=function(a,b,c){function d(d,k){function l(c,d,e){var h,k,l,n,v,Z=!0;h="";c<d&&((v=a[c],"*"===v)?(++c,h=v):/^[a-zA-Z]/.test(v)&&(k=g(v.toLowerCase(),[]))&&("tagName"in k&&(v=k.tagName),++c,h=v));for(n=l=k="";Z&&c<d;++c)if(v=a[c],"#"===v.charAt(0))/^#_|__$|[^\w#:\-]/.test(v)?Z=!1:k+=v+f;else if("."===v)++c<d&&/^[0-9A-Za-z:_\-]+$/.test(v=a[c])&&!/^_|__$/.test(v)?k+="."+v:Z=!1;else if(c+1<d&&"["===a[c]){++c;var C=a[c++].toLowerCase();v=p.m[h+"::"+C];v!==+v&&(v=p.m["*::"+ -C]);var r;b.ia?(r=b.ia(h,C),"string"!==typeof r&&(Z=!1,r=C),Z&&v!==+v&&(v=p.d.NONE)):(r=C,v!==+v&&(Z=!1));var q=C="",B=!1;/^[~^$*|]?=$/.test(a[c])&&(C=a[c++],q=a[c++],/^[0-9A-Za-z:_\-]+$/.test(q)?q='"'+q+'"':"]"===q&&(q='""',--c),/^"([^\"\\]|\\.)*"$/.test(q)||(Z=!1),(B="i"===a[c])&&++c);"]"!==a[c]&&(++c,Z=!1);switch(v){case p.d.CLASSES:case p.d.LOCAL_NAME:case p.d.NONE:break;case p.d.GLOBAL_NAME:case p.d.ID:case p.d.IDREF:"="!==C&&"~="!==C&&"$="!==C||'""'==q||B?"|="===C||""===C||(Z=!1):q='"'+q.substring(1, -q.length-1)+f+'"';break;case p.d.URI:case p.d.URI_FRAGMENT:""!==C&&(Z=!1);break;default:Z=!1}Z&&(l+="["+r.replace(/[^\w-]/g,"\\$&")+C+q+(B?" i]":"]"))}else if(c<d&&":"===a[c])if(v=a[++c],F.test(v))n+=":"+v;else break;else break;c!==d&&(Z=!1);Z&&(c=(h+k).replace(/[^ .*#\w-]/g,"\\$&")+l+n+e)&&m.push(c);return Z}" "===a[d]&&++d;k-1!==d&&" "===a[k]&&--k;for(var m=[],n=d,v=!0,C=d;v&&C<k;++C){var r=a[C];if(E[r]===E||" "===r)l(n,C,r)?n=C+1:v=!1}l(n,k,"")||(v=!1);return v?(m.length&&(n=m.join(""),null!== +E={};E[">"]=E["+"]=E["~"]=E;h=function(a,b,c){function d(d,k){function l(c,d,e){var h,k,l,n,v,Y=!0;h="";c<d&&((v=a[c],"*"===v)?(++c,h=v):/^[a-zA-Z]/.test(v)&&(k=g(v.toLowerCase(),[]))&&("tagName"in k&&(v=k.tagName),++c,h=v));for(n=l=k="";Y&&c<d;++c)if(v=a[c],"#"===v.charAt(0))/^#_|__$|[^\w#:\-]/.test(v)?Y=!1:k+=v+f;else if("."===v)++c<d&&/^[0-9A-Za-z:_\-]+$/.test(v=a[c])&&!/^_|__$/.test(v)?k+="."+v:Y=!1;else if(c+1<d&&"["===a[c]){++c;var C=a[c++].toLowerCase();v=p.m[h+"::"+C];v!==+v&&(v=p.m["*::"+ +C]);var r;b.ia?(r=b.ia(h,C),"string"!==typeof r&&(Y=!1,r=C),Y&&v!==+v&&(v=p.d.NONE)):(r=C,v!==+v&&(Y=!1));var q=C="",B=!1;/^[~^$*|]?=$/.test(a[c])&&(C=a[c++],q=a[c++],/^[0-9A-Za-z:_\-]+$/.test(q)?q='"'+q+'"':"]"===q&&(q='""',--c),/^"([^\"\\]|\\.)*"$/.test(q)||(Y=!1),(B="i"===a[c])&&++c);"]"!==a[c]&&(++c,Y=!1);switch(v){case p.d.CLASSES:case p.d.LOCAL_NAME:case p.d.NONE:break;case p.d.GLOBAL_NAME:case p.d.ID:case p.d.IDREF:"="!==C&&"~="!==C&&"$="!==C||'""'==q||B?"|="===C||""===C||(Y=!1):q='"'+q.substring(1, +q.length-1)+f+'"';break;case p.d.URI:case p.d.URI_FRAGMENT:""!==C&&(Y=!1);break;default:Y=!1}Y&&(l+="["+r.replace(/[^\w-]/g,"\\$&")+C+q+(B?" i]":"]"))}else if(c<d&&":"===a[c])if(v=a[++c],F.test(v))n+=":"+v;else break;else break;c!==d&&(Y=!1);Y&&(c=(h+k).replace(/[^ .*#\w-]/g,"\\$&")+l+n+e)&&m.push(c);return Y}" "===a[d]&&++d;k-1!==d&&" "===a[k]&&--k;for(var m=[],n=d,v=!0,C=d;v&&C<k;++C){var r=a[C];if(E[r]===E||" "===r)l(n,C,r)?n=C+1:v=!1}l(n,k,"")||(v=!1);return v?(m.length&&(n=m.join(""),null!== e&&(n="."+e+" "+n),h.push(n)),!0):!c||c(a.slice(d,k))}var e=b.na,f=b.L,g=b.Aa,h=[],k=0,l,m=0,n;for(l=0;l<a.length;++l)(n=a[l],"("==n||"["==n?(++m,0):")"==n||"]"==n?(m&&--m,0):" "==a[l]&&(m||E[a[l-1]]===E||E[a[l+1]]===E))||(a[k++]=a[l]);a.length=k;k=a.length;for(l=m=0;l<k;++l)if(","===a[l]){if(!d(m,l))return null;m=l+1}return d(m,k)?h:null};(function(){var a=/^\w/,b=/^(?:(?:(?:(?:only|not) )?(?:all|aural|braille|embossed|handheld|print|projection|screen|speech|tty|tv)|\( (?:(?:min-|max-)?(?:(?:device-)?(?:aspect-ratio|height|width)|color(?:-index)?|monochrome|orientation|resolution)|grid|hover|luminosity|pointer|scan|script) (?:: -?(?:[a-z]\w+(?:-\w+)*|\d+(?: \/ \d+|(?:\.\d+)?(?:p[cxt]|[cem]m|in|dpi|dppx|dpcm|%)?)) )?\))(?: and ?\( (?:(?:min-|max-)?(?:(?:device-)?(?:aspect-ratio|height|width)|color(?:-index)?|monochrome|orientation|resolution)|grid|hover|luminosity|pointer|scan|script) (?:: -?(?:[a-z]\w+(?:-\w+)*|\d+(?: \/ \d+|(?:\.\d+)?(?:p[cxt]|[cem]m|in|dpi|dppx|dpcm|%)?)) )?\))*)(?: , (?:(?:(?:(?:only|not) )?(?:all|aural|braille|embossed|handheld|print|projection|screen|speech|tty|tv)|\( (?:(?:min-|max-)?(?:(?:device-)?(?:aspect-ratio|height|width)|color(?:-index)?|monochrome|orientation|resolution)|grid|hover|luminosity|pointer|scan|script) (?:: -?(?:[a-z]\w+(?:-\w+)*|\d+(?: \/ \d+|(?:\.\d+)?(?:p[cxt]|[cem]m|in|dpi|dppx|dpcm|%)?)) )?\))(?: and ?\( (?:(?:min-|max-)?(?:(?:device-)?(?:aspect-ratio|height|width)|color(?:-index)?|monochrome|orientation|resolution)|grid|hover|luminosity|pointer|scan|script) (?:: -?(?:[a-z]\w+(?:-\w+)*|\d+(?: \/ \d+|(?:\.\d+)?(?:p[cxt]|[cem]m|in|dpi|dppx|dpcm|%)?)) )?\))*))*$/i; l=function(c){c=c.slice();for(var d=c.length,e=0,f=0;f<d;++f){var g=c[f];" "!=g&&(c[e++]=g)}c.length=e;c=c.join(" ");return c.length?b.test(c)?a.test(c)?c:"not all , "+c:"not all":""}})();(function(){function a(a){var b=/^\s*[']([^']*)[']\s*$/,c=/^\s*url\s*[(]["]([^"]*)["][)]\s*$/,d=/^\s*url\s*[(][']([^']*)['][)]\s*$/,e=/^\s*url\s*[(]([^)]*)[)]\s*$/,f;return(f=/^\s*["]([^"]*)["]\s*$/.exec(a))||(f=b.exec(a))||(f=c.exec(a))||(f=d.exec(a))||(f=e.exec(a))?f[1]:null}function b(c,e,f,k,p,r,q){function C(){t= -J.length&&null===J[J.length-1]}var v=void 0,B=q||[0],J=[],t=!1;m(e,{startStylesheet:function(){v=[]},endStylesheet:function(){},startAtrule:function(e,g){if(t)e=null;else if("@media"===e)v.push("@media"," ",l(g));else if("@keyframes"===e||"@-webkit-keyframes"===e){var h=g[0];1!==g.length||/__$|[^\w\-]/.test(h)?e=null:(v.push(e," ",h+f.L),e="@keyframes")}else if("@import"===e&&0<g.length)if(e=null,"function"===typeof r){var m=l(g.slice(1));if("not all"!==m){++B[0];var C=[];v.push(C);var q=n(d(c,a(g[0])), -function(a){var c=b(q,a.qa,f,k,p,r,B);--B[0];a=m?{toString:function(){return"@media "+m+" {"+c.result+"}"}}:c.result;C[0]=a;r(a,!!B[0])},p)}}else window.console&&window.console.log("@import "+g.join(" ")+" elided");t=!e;J.push(e)},endAtrule:function(){J.pop();t||v.push(";");C()},startBlock:function(){t||v.push("{")},endBlock:function(){t||(v.push("}"),t=!0)},startRuleset:function(a){if(!t){var b=void 0;"@keyframes"===J[J.length-1]?(b=a.join(" ").match(/^ *(?:from|to|\d+(?:\.\d+)?%) *(?:, *(?:from|to|\d+(?:\.\d+)?%) *)*$/i), -t=!b,b&&(b=b[0].replace(/ +/g,""))):(a=h(a,f),a&&a.length?b=a.join(", "):t=!0);t||v.push(b,"{")}J.push(null)},endRuleset:function(){J.pop();t||v.push("}");C()},declaration:function(a,b){if(!t){var d=!1,e=b.length;2<=e&&"!"===b[e-2]&&"important"===b[e-1].toLowerCase()&&(d=!0,b.length-=2);g(a,b,k,c,f.L);b.length&&v.push(a,":",b.join(" "),d?" !important;":";")}}});return{result:{toString:function(){return v.join("")}},va:!!B[0]}}k=function(a,c,d,e){return b(a,c,d,e,void 0,void 0).result.toString()}})()})(); +G.length&&null===G[G.length-1]}var v=void 0,B=q||[0],G=[],t=!1;m(e,{startStylesheet:function(){v=[]},endStylesheet:function(){},startAtrule:function(e,g){if(t)e=null;else if("@media"===e)v.push("@media"," ",l(g));else if("@keyframes"===e||"@-webkit-keyframes"===e){var h=g[0];1!==g.length||/__$|[^\w\-]/.test(h)?e=null:(v.push(e," ",h+f.L),e="@keyframes")}else if("@import"===e&&0<g.length)if(e=null,"function"===typeof r){var m=l(g.slice(1));if("not all"!==m){++B[0];var C=[];v.push(C);var q=n(d(c,a(g[0])), +function(a){var c=b(q,a.qa,f,k,p,r,B);--B[0];a=m?{toString:function(){return"@media "+m+" {"+c.result+"}"}}:c.result;C[0]=a;r(a,!!B[0])},p)}}else window.console&&window.console.log("@import "+g.join(" ")+" elided");t=!e;G.push(e)},endAtrule:function(){G.pop();t||v.push(";");C()},startBlock:function(){t||v.push("{")},endBlock:function(){t||(v.push("}"),t=!0)},startRuleset:function(a){if(!t){var b=void 0;"@keyframes"===G[G.length-1]?(b=a.join(" ").match(/^ *(?:from|to|\d+(?:\.\d+)?%) *(?:, *(?:from|to|\d+(?:\.\d+)?%) *)*$/i), +t=!b,b&&(b=b[0].replace(/ +/g,""))):(a=h(a,f),a&&a.length?b=a.join(", "):t=!0);t||v.push(b,"{")}G.push(null)},endRuleset:function(){G.pop();t||v.push("}");C()},declaration:function(a,b){if(!t){var d=!1,e=b.length;2<=e&&"!"===b[e-2]&&"important"===b[e-1].toLowerCase()&&(d=!0,b.length-=2);g(a,b,k,c,f.L);b.length&&v.push(a,":",b.join(" "),d?" !important;":";")}}});return{result:{toString:function(){return v.join("")}},va:!!B[0]}}k=function(a,c,d,e){return b(a,c,d,e,void 0,void 0).result.toString()}})()})(); "undefined"!==typeof window&&(window.sanitizeCssProperty=g,window.sanitizeCssSelectorList=h,window.sanitizeStylesheet=k,window.sanitizeMediaQuery=l);var m,n;(function(){function a(a,c,d,e,f){for(var g=c++;c<d&&"{"!==a[c]&&";"!==a[c];)++c;if(c<d&&(f||";"===a[c])){f=g+1;var h=c;f<d&&" "===a[f]&&++f;h>f&&" "===a[h-1]&&--h;e.startAtrule&&e.startAtrule(a[g].toLowerCase(),a.slice(f,h));c="{"===a[c]?b(a,c,d,e):c+1;e.endAtrule&&e.endAtrule()}return c}function b(d,e,f,g){++e;for(g.startBlock&&g.startBlock();e< f;){var h=d[e].charAt(0);if("}"==h){++e;break}e=" "===h||";"===h?e+1:"@"===h?a(d,e,f,g,!1):"{"===h?b(d,e,f,g):c(d,e,f,g)}g.endBlock&&g.endBlock();return e}function c(a,b,c,d){var f=b,h=e(a,b,c,!0);if(0>h)return h=~h,h===f?h+1:h;var k=a[h];if("{"!==k)return h===f?h+1:h;b=h+1;h>f&&" "===a[h-1]&&--h;for(d.startRuleset&&d.startRuleset(a.slice(f,h));b<c;){k=a[b];if("}"===k){++b;break}b=" "===k?b+1:g(a,b,c,d)}d.endRuleset&&d.endRuleset();return b}function e(a,b,c,d){for(var e,f=[],g=-1;b<c;++b)if(e=a[b].charAt(0), "["===e||"("===e)f[++g]=e;else if("]"===e&&"["===f[g]||")"===e&&"("===f[g])--g;else if("{"===e||"}"===e||";"===e||"@"===e||":"===e&&!d)break;0<=g&&(b=~(b+1));return b}function f(a,b,c){for(;b<c&&";"!==a[b]&&"}"!==a[b];)++b;return b<c&&";"===a[b]?b+1:b}function g(a,b,c,d){var g=a[b++];if(!h.test(g))return f(a,b,c);b<c&&" "===a[b]&&++b;if(b==c||":"!==a[b])return f(a,b,c);++b;b<c&&" "===a[b]&&++b;var k=e(a,b,c,!1);if(0>k)k=~k;else{for(var l=[],m=0,n=b;n<k;++n)b=a[n]," "!==b&&(l[m++]=b);if(k<c){do{b= @@ -72,20 +72,20 @@ li:"HTMLLIElement",link:"HTMLLinkElement",map:"HTMLMapElement",mark:"HTMLElement s:"HTMLElement",samp:"HTMLElement",script:"HTMLScriptElement",section:"HTMLElement",select:"HTMLSelectElement",small:"HTMLElement",source:"HTMLSourceElement",span:"HTMLSpanElement",strike:"HTMLElement",strong:"HTMLElement",style:"HTMLStyleElement",sub:"HTMLElement",summary:"HTMLElement",sup:"HTMLElement",table:"HTMLTableElement",tbody:"HTMLTableSectionElement",td:"HTMLTableDataCellElement",textarea:"HTMLTextAreaElement",tfoot:"HTMLTableSectionElement",th:"HTMLTableHeaderCellElement",thead:"HTMLTableSectionElement", time:"HTMLTimeElement",title:"HTMLTitleElement",tr:"HTMLTableRowElement",track:"HTMLTrackElement",tt:"HTMLElement",u:"HTMLElement",ul:"HTMLUListElement","var":"HTMLElement",video:"HTMLVideoElement",wbr:"HTMLElement"};p.ELEMENT_DOM_INTERFACES=p.Q;p.P={NOT_LOADED:0,SAME_DOCUMENT:1,NEW_DOCUMENT:2};p.ueffects=p.P;p.J={"a::href":2,"area::href":2,"audio::src":1,"blockquote::cite":0,"command::icon":1,"del::cite":0,"form::action":2,"img::src":1,"input::src":1,"ins::cite":0,"q::cite":0,"video::poster":1,"video::src":1}; p.URIEFFECTS=p.J;p.M={UNSANDBOXED:2,SANDBOXED:1,DATA:0};p.ltypes=p.M;p.I={"a::href":2,"area::href":2,"audio::src":2,"blockquote::cite":2,"command::icon":1,"del::cite":2,"form::action":2,"img::src":1,"input::src":1,"ins::cite":2,"q::cite":2,"video::poster":1,"video::src":2};p.LOADERTYPES=p.I;"undefined"!==typeof window&&(window.html4=p);a=function(a){function b(a,b){var c;if(ca.hasOwnProperty(b))c=ca[b];else{var d=b.match(W);c=d?String.fromCharCode(parseInt(d[1],10)):(d=b.match(v))?String.fromCharCode(parseInt(d[1], -16)):J&&P.test(b)?(J.innerHTML="&"+b+";",d=J.textContent,ca[b]=d):"&"+b+";"}return c}function c(a){return a.replace(da,b)}function d(a){return(""+a).replace(I,"&").replace(aa,"<").replace(ea,">").replace(S,""")}function e(a){return a.replace(M,"&$1").replace(aa,"<").replace(ea,">")}function g(a){var b={z:a.z||a.cdata,A:a.A||a.comment,B:a.B||a.endDoc,t:a.t||a.endTag,e:a.e||a.pcdata,F:a.F||a.rcdata,H:a.H||a.startDoc,w:a.w||a.startTag};return function(a,c){var d,e=/(<\/|<\!--|<[!?]|[&<>])/g; +16)):G&&Q.test(b)?(G.innerHTML="&"+b+";",d=G.textContent,ca[b]=d):"&"+b+";"}return c}function c(a){return a.replace(da,b)}function d(a){return(""+a).replace(J,"&").replace(aa,"<").replace(ea,">").replace(S,""")}function e(a){return a.replace(M,"&$1").replace(aa,"<").replace(ea,">")}function g(a){var b={z:a.z||a.cdata,A:a.A||a.comment,B:a.B||a.endDoc,t:a.t||a.endTag,e:a.e||a.pcdata,F:a.F||a.rcdata,H:a.H||a.startDoc,w:a.w||a.startTag};return function(a,c){var d,e=/(<\/|<\!--|<[!?]|[&<>])/g; d=a+"";if(T)d=d.split(e);else{for(var f=[],g=0,h;null!==(h=e.exec(d));)f.push(d.substring(g,h.index)),f.push(h[0]),g=h.index+h[0].length;f.push(d.substring(g));d=f}k(b,d,0,{r:!1,C:!1},c)}}function h(a,b,c,d,e){return function(){k(a,b,c,d,e)}}function k(b,c,d,e,f){try{b.H&&0==d&&b.H(f);for(var g,k,n,v=c.length;d<v;){var p=c[d++],C=c[d];switch(p){case "&":N.test(C)?(b.e&&b.e("&"+C,f,O,h(b,c,d,e,f)),d++):b.e&&b.e("&",f,O,h(b,c,d,e,f));break;case "</":if(g=/^([-\w:]+)[^\'\"]*/.exec(C))if(g[0].length=== -C.length&&">"===c[d+1])d+=2,n=g[1].toLowerCase(),b.t&&b.t(n,f,O,h(b,c,d,e,f));else{var R=c,Z=d,q=b,r=f,X=O,J=e,P=m(R,Z);P?(q.t&&q.t(P.name,r,X,h(q,R,Z,J,r)),d=P.next):d=R.length}else b.e&&b.e("</",f,O,h(b,c,d,e,f));break;case "<":if(g=/^([-\w:]+)\s*\/?/.exec(C))if(g[0].length===C.length&&">"===c[d+1]){d+=2;n=g[1].toLowerCase();b.w&&b.w(n,[],f,O,h(b,c,d,e,f));var t=a.f[n];t&Y&&(d=l(c,{name:n,next:d,c:t},b,f,O,e))}else{var R=c,Z=b,q=f,r=O,X=e,B=m(R,d);B?(Z.w&&Z.w(B.name,B.R,q,r,h(Z,R,B.next,X,q)), -d=B.c&Y?l(R,B,Z,q,r,X):B.next):d=R.length}else b.e&&b.e("<",f,O,h(b,c,d,e,f));break;case "\x3c!--":if(!e.C){for(k=d+1;k<v&&(">"!==c[k]||!/--$/.test(c[k-1]));k++);if(k<v){if(b.A){var G=c.slice(d,k).join("");b.A(G.substr(0,G.length-2),f,O,h(b,c,k+1,e,f))}d=k+1}else e.C=!0}e.C&&b.e&&b.e("<!--",f,O,h(b,c,d,e,f));break;case "<!":if(/^\w/.test(C)){if(!e.r){for(k=d+1;k<v&&">"!==c[k];k++);k<v?d=k+1:e.r=!0}e.r&&b.e&&b.e("<!",f,O,h(b,c,d,e,f))}else b.e&&b.e("<!",f,O,h(b,c,d,e,f));break;case "<?":if(!e.r){for(k= -d+1;k<v&&">"!==c[k];k++);k<v?d=k+1:e.r=!0}e.r&&b.e&&b.e("<?",f,O,h(b,c,d,e,f));break;case ">":b.e&&b.e(">",f,O,h(b,c,d,e,f));break;case "":break;default:b.e&&b.e(p,f,O,h(b,c,d,e,f))}}b.B&&b.B(f)}catch(ha){if(ha!==O)throw ha;}}function l(b,c,d,f,g,k){var l=b.length;R.hasOwnProperty(c.name)||(R[c.name]=RegExp("^"+c.name+"(?:[\\s\\/]|$)","i"));for(var m=R[c.name],n=c.next,v=c.next+1;v<l&&("</"!==b[v-1]||!m.test(b[v]));v++);v<l&&--v;l=b.slice(n,v).join("");if(c.c&a.c.CDATA)d.z&&d.z(l,f,g,h(d,b, -v,k,f));else if(c.c&a.c.RCDATA)d.F&&d.F(e(l),f,g,h(d,b,v,k,f));else throw Error("bug");return v}function m(b,d){var e=/^([-\w:]+)/.exec(b[d]),f={};f.name=e[1].toLowerCase();f.c=a.f[f.name];for(var g=b[d].substr(e[0].length),h=d+1,k=b.length;h<k&&">"!==b[h];h++)g+=b[h];if(!(k<=h)){for(var l=[];""!==g;)if(e=Q.exec(g))if(e[4]&&!e[5]||e[6]&&!e[7]){for(var e=e[4]||e[6],m=!1,g=[g,b[h++]];h<k;h++){if(m){if(">"===b[h])break}else 0<=b[h].indexOf(e)&&(m=!0);g.push(b[h])}if(k<=h)break;g=g.join("")}else{var m= -e[1].toLowerCase(),n;if(e[2]){n=e[3];var v=n.charCodeAt(0);if(34===v||39===v)n=n.substr(1,n.length-2);n=c(n.replace(G,""))}else n="";l.push(m,n);g=g.substr(e[0].length)}else g=g.replace(/^[\s\S][^a-z\s]*/,"");f.R=l;f.next=h+1;return f}}function n(b){function c(a,b){f||b.push(a)}var e,f;return g({startDoc:function(){e=[];f=!1},startTag:function(c,g,h){if(!f&&a.f.hasOwnProperty(c)){var k=a.f[c];if(!(k&a.c.FOLDABLE)){var l=b(c,g);if(l){if("object"!==typeof l)throw Error("tagPolicy did not return object (old API?)"); +C.length&&">"===c[d+1])d+=2,n=g[1].toLowerCase(),b.t&&b.t(n,f,O,h(b,c,d,e,f));else{var Y=c,R=d,q=b,r=f,X=O,G=e,Q=m(Y,R);Q?(q.t&&q.t(Q.name,r,X,h(q,Y,R,G,r)),d=Q.next):d=Y.length}else b.e&&b.e("</",f,O,h(b,c,d,e,f));break;case "<":if(g=/^([-\w:]+)\s*\/?/.exec(C))if(g[0].length===C.length&&">"===c[d+1]){d+=2;n=g[1].toLowerCase();b.w&&b.w(n,[],f,O,h(b,c,d,e,f));var t=a.f[n];t&Z&&(d=l(c,{name:n,next:d,c:t},b,f,O,e))}else{var Y=c,R=b,q=f,r=O,X=e,B=m(Y,d);B?(R.w&&R.w(B.name,B.R,q,r,h(R,Y,B.next,X,q)), +d=B.c&Z?l(Y,B,R,q,r,X):B.next):d=Y.length}else b.e&&b.e("<",f,O,h(b,c,d,e,f));break;case "\x3c!--":if(!e.C){for(k=d+1;k<v&&(">"!==c[k]||!/--$/.test(c[k-1]));k++);if(k<v){if(b.A){var H=c.slice(d,k).join("");b.A(H.substr(0,H.length-2),f,O,h(b,c,k+1,e,f))}d=k+1}else e.C=!0}e.C&&b.e&&b.e("<!--",f,O,h(b,c,d,e,f));break;case "<!":if(/^\w/.test(C)){if(!e.r){for(k=d+1;k<v&&">"!==c[k];k++);k<v?d=k+1:e.r=!0}e.r&&b.e&&b.e("<!",f,O,h(b,c,d,e,f))}else b.e&&b.e("<!",f,O,h(b,c,d,e,f));break;case "<?":if(!e.r){for(k= +d+1;k<v&&">"!==c[k];k++);k<v?d=k+1:e.r=!0}e.r&&b.e&&b.e("<?",f,O,h(b,c,d,e,f));break;case ">":b.e&&b.e(">",f,O,h(b,c,d,e,f));break;case "":break;default:b.e&&b.e(p,f,O,h(b,c,d,e,f))}}b.B&&b.B(f)}catch(ka){if(ka!==O)throw ka;}}function l(b,c,d,f,g,k){var l=b.length;R.hasOwnProperty(c.name)||(R[c.name]=RegExp("^"+c.name+"(?:[\\s\\/]|$)","i"));for(var m=R[c.name],n=c.next,v=c.next+1;v<l&&("</"!==b[v-1]||!m.test(b[v]));v++);v<l&&--v;l=b.slice(n,v).join("");if(c.c&a.c.CDATA)d.z&&d.z(l,f,g,h(d,b, +v,k,f));else if(c.c&a.c.RCDATA)d.F&&d.F(e(l),f,g,h(d,b,v,k,f));else throw Error("bug");return v}function m(b,d){var e=/^([-\w:]+)/.exec(b[d]),f={};f.name=e[1].toLowerCase();f.c=a.f[f.name];for(var g=b[d].substr(e[0].length),h=d+1,k=b.length;h<k&&">"!==b[h];h++)g+=b[h];if(!(k<=h)){for(var l=[];""!==g;)if(e=P.exec(g))if(e[4]&&!e[5]||e[6]&&!e[7]){for(var e=e[4]||e[6],m=!1,g=[g,b[h++]];h<k;h++){if(m){if(">"===b[h])break}else 0<=b[h].indexOf(e)&&(m=!0);g.push(b[h])}if(k<=h)break;g=g.join("")}else{var m= +e[1].toLowerCase(),n;if(e[2]){n=e[3];var v=n.charCodeAt(0);if(34===v||39===v)n=n.substr(1,n.length-2);n=c(n.replace(H,""))}else n="";l.push(m,n);g=g.substr(e[0].length)}else g=g.replace(/^[\s\S][^a-z\s]*/,"");f.R=l;f.next=h+1;return f}}function n(b){function c(a,b){f||b.push(a)}var e,f;return g({startDoc:function(){e=[];f=!1},startTag:function(c,g,h){if(!f&&a.f.hasOwnProperty(c)){var k=a.f[c];if(!(k&a.c.FOLDABLE)){var l=b(c,g);if(l){if("object"!==typeof l)throw Error("tagPolicy did not return object (old API?)"); if("attribs"in l)g=l.attribs;else throw Error("tagPolicy gave no attribs");var m;"tagName"in l?(m=l.tagName,l=a.f[m]):(m=c,l=k);if(k&a.c.OPTIONAL_ENDTAG){var n=e[e.length-1];n&&n.D===c&&(n.v!==m||c!==m)&&h.push("</",n.v,">")}k&a.c.EMPTY||e.push({D:c,v:m});h.push("<",m);c=0;for(n=g.length;c<n;c+=2){var v=g[c],p=g[c+1];null!==p&&void 0!==p&&h.push(" ",v,'="',d(p),'"')}h.push(">");k&a.c.EMPTY&&!(l&a.c.EMPTY)&&h.push("</",m,">")}else f=!(k&a.c.EMPTY)}}},endTag:function(b,c){if(f)f=!1;else if(a.f.hasOwnProperty(b)){var d= a.f[b];if(!(d&(a.c.EMPTY|a.c.FOLDABLE))){if(d&a.c.OPTIONAL_ENDTAG)for(d=e.length;0<=--d;){var g=e[d].D;if(g===b)break;if(!(a.f[g]&a.c.OPTIONAL_ENDTAG))return}else for(d=e.length;0<=--d&&e[d].D!==b;);if(!(0>d)){for(g=e.length;--g>d;){var h=e[g].v;a.f[h]&a.c.OPTIONAL_ENDTAG||c.push("</",h,">")}d<e.length&&(b=e[d].v);e.length=d;c.push("</",b,">")}}}},pcdata:c,rcdata:c,cdata:c,endDoc:function(a){for(;e.length;e.length--)a.push("</",e[e.length-1].v,">")}})}function p(a,b,c,d,e){if(!e)return null;try{var g= f.parse(""+a);if(g&&(!g.K()||fa.test(g.W()))){var h=e(g,b,c,d);return h?h.toString():null}}catch(pa){}return null}function r(a,b,c,d,e){c||a(b+" removed",{S:"removed",tagName:b});if(d!==e){var f="changed";d&&!e?f="removed":!d&&e&&(f="added");a(b+"."+c+" "+f,{S:f,tagName:b,la:c,oldValue:d,newValue:e})}}function C(a,b,c){b=b+"::"+c;if(a.hasOwnProperty(b))return a[b];b="*::"+c;if(a.hasOwnProperty(b))return a[b]}function L(b,c,d,e,f){for(var g=0;g<c.length;g+=2){var h=c[g],k=c[g+1],l=k,m=null,n;if((n= b+"::"+h,a.m.hasOwnProperty(n))||(n="*::"+h,a.m.hasOwnProperty(n)))m=a.m[n];if(null!==m)switch(m){case a.d.NONE:break;case a.d.SCRIPT:k=null;f&&r(f,b,h,l,k);break;case a.d.STYLE:if("undefined"===typeof V){k=null;f&&r(f,b,h,l,k);break}var v=[];V(k,{declaration:function(b,c){var e=b.toLowerCase();U(e,c,d?function(b){return p(b,a.P.ja,a.M.ka,{TYPE:"CSS",CSS_PROP:e},d)}:null);c.length&&v.push(e+": "+c.join(" "))}});k=0<v.length?v.join(" ; "):null;f&&r(f,b,h,l,k);break;case a.d.ID:case a.d.IDREF:case a.d.IDREFS:case a.d.GLOBAL_NAME:case a.d.LOCAL_NAME:case a.d.CLASSES:k= -e?e(k):k;f&&r(f,b,h,l,k);break;case a.d.URI:k=p(k,C(a.J,b,h),C(a.I,b,h),{TYPE:"MARKUP",XML_ATTR:h,XML_TAG:b},d);f&&r(f,b,h,l,k);break;case a.d.URI_FRAGMENT:k&&"#"===k.charAt(0)?(k=k.substring(1),k=e?e(k):k,null!==k&&void 0!==k&&(k="#"+k)):k=null;f&&r(f,b,h,l,k);break;default:k=null,f&&r(f,b,h,l,k)}else k=null,f&&r(f,b,h,l,k);c[g+1]=k}return c}function K(b,c,d){return function(e,f){if(a.f[e]&a.c.UNSAFE)d&&r(d,e,void 0,void 0,void 0);else return{attribs:L(e,f,b,c,d)}}}function H(a,b){var c=[];n(b)(a, -c);return c.join("")}var V,U;"undefined"!==typeof window&&(V=window.parseCssDeclarations,U=window.sanitizeCssProperty);var ca={lt:"<",LT:"<",gt:">",GT:">",amp:"&",AMP:"&",quot:'"',apos:"'",nbsp:" "},W=/^#(\d+)$/,v=/^#x([0-9A-Fa-f]+)$/,P=/^[A-Za-z][A-za-z0-9]+$/,J="undefined"!==typeof window&&window.document?window.document.createElement("textarea"):null,G=/\0/g,da=/&(#[0-9]+|#[xX][0-9A-Fa-f]+|\w+);/g,N=/^(#[0-9]+|#[xX][0-9A-Fa-f]+|\w+);/,I=/&/g,M=/&([^a-z#]|#(?:[^0-9x]|x(?:[^0-9a-f]|$)|$)|$)/gi,aa= -/[<]/g,ea=/>/g,S=/\"/g,Q=/^\s*([-.:\w]+)(?:\s*(=)\s*((")[^"]*("|$)|(')[^']*('|$)|(?=[a-z][-\w]*\s*=)|[^"'\s]*))?/i,T=3==="a,b".split(/(,)/).length,Y=a.c.CDATA|a.c.RCDATA,O={},R={},fa=/^(?:https?|mailto|data)$/i,X={};X.pa=X.escapeAttrib=d;X.ra=X.makeHtmlSanitizer=n;X.sa=X.makeSaxParser=g;X.ta=X.makeTagPolicy=K;X.wa=X.normalizeRCData=e;X.xa=X.sanitize=function(a,b,c,d){return H(a,K(b,c,d))};X.ya=X.sanitizeAttribs=L;X.za=X.sanitizeWithPolicy=H;X.Ba=X.unescapeEntities=c;return X}(p);c=a.sanitize;"undefined"!== +e?e(k):k;f&&r(f,b,h,l,k);break;case a.d.URI:k=p(k,C(a.J,b,h),C(a.I,b,h),{TYPE:"MARKUP",XML_ATTR:h,XML_TAG:b},d);f&&r(f,b,h,l,k);break;case a.d.URI_FRAGMENT:k&&"#"===k.charAt(0)?(k=k.substring(1),k=e?e(k):k,null!==k&&void 0!==k&&(k="#"+k)):k=null;f&&r(f,b,h,l,k);break;default:k=null,f&&r(f,b,h,l,k)}else k=null,f&&r(f,b,h,l,k);c[g+1]=k}return c}function K(b,c,d){return function(e,f){if(a.f[e]&a.c.UNSAFE)d&&r(d,e,void 0,void 0,void 0);else return{attribs:L(e,f,b,c,d)}}}function I(a,b){var c=[];n(b)(a, +c);return c.join("")}var V,U;"undefined"!==typeof window&&(V=window.parseCssDeclarations,U=window.sanitizeCssProperty);var ca={lt:"<",LT:"<",gt:">",GT:">",amp:"&",AMP:"&",quot:'"',apos:"'",nbsp:" "},W=/^#(\d+)$/,v=/^#x([0-9A-Fa-f]+)$/,Q=/^[A-Za-z][A-za-z0-9]+$/,G="undefined"!==typeof window&&window.document?window.document.createElement("textarea"):null,H=/\0/g,da=/&(#[0-9]+|#[xX][0-9A-Fa-f]+|\w+);/g,N=/^(#[0-9]+|#[xX][0-9A-Fa-f]+|\w+);/,J=/&/g,M=/&([^a-z#]|#(?:[^0-9x]|x(?:[^0-9a-f]|$)|$)|$)/gi,aa= +/[<]/g,ea=/>/g,S=/\"/g,P=/^\s*([-.:\w]+)(?:\s*(=)\s*((")[^"]*("|$)|(')[^']*('|$)|(?=[a-z][-\w]*\s*=)|[^"'\s]*))?/i,T=3==="a,b".split(/(,)/).length,Z=a.c.CDATA|a.c.RCDATA,O={},R={},fa=/^(?:https?|mailto|data)$/i,X={};X.pa=X.escapeAttrib=d;X.ra=X.makeHtmlSanitizer=n;X.sa=X.makeSaxParser=g;X.ta=X.makeTagPolicy=K;X.wa=X.normalizeRCData=e;X.xa=X.sanitize=function(a,b,c,d){return I(a,K(b,c,d))};X.ya=X.sanitizeAttribs=L;X.za=X.sanitizeWithPolicy=I;X.Ba=X.unescapeEntities=c;return X}(p);c=a.sanitize;"undefined"!== typeof window&&(window.html=a,window.html_sanitize=c)})();var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(a,b){var c="",d,e,f,g,h,k,l=0;for(null!=b&&b||(a=Base64._utf8_encode(a));l<a.length;)d=a.charCodeAt(l++),e=a.charCodeAt(l++),f=a.charCodeAt(l++),g=d>>2,d=(d&3)<<4|e>>4,h=(e&15)<<2|f>>6,k=f&63,isNaN(e)?h=k=64:isNaN(f)&&(k=64),c=c+this._keyStr.charAt(g)+this._keyStr.charAt(d)+this._keyStr.charAt(h)+this._keyStr.charAt(k);return c},decode:function(a,b){b=null!=b?b:!1;var c="",d,e,f,g,h,k=0;for(a=a.replace(/[^A-Za-z0-9\+\/\=]/g, "");k<a.length;)d=this._keyStr.indexOf(a.charAt(k++)),e=this._keyStr.indexOf(a.charAt(k++)),g=this._keyStr.indexOf(a.charAt(k++)),h=this._keyStr.indexOf(a.charAt(k++)),d=d<<2|e>>4,e=(e&15)<<4|g>>2,f=(g&3)<<6|h,c+=String.fromCharCode(d),64!=g&&(c+=String.fromCharCode(e)),64!=h&&(c+=String.fromCharCode(f));b||(c=Base64._utf8_decode(c));return c},_utf8_encode:function(a){a=a.replace(/\r\n/g,"\n");for(var b="",c=0;c<a.length;c++){var d=a.charCodeAt(c);128>d?b+=String.fromCharCode(d):(127<d&&2048>d?b+= String.fromCharCode(d>>6|192):(b+=String.fromCharCode(d>>12|224),b+=String.fromCharCode(d>>6&63|128)),b+=String.fromCharCode(d&63|128))}return b},_utf8_decode:function(a){var b="",c=0,d;for(c1=c2=0;c<a.length;)d=a.charCodeAt(c),128>d?(b+=String.fromCharCode(d),c++):191<d&&224>d?(c2=a.charCodeAt(c+1),b+=String.fromCharCode((d&31)<<6|c2&63),c+=2):(c2=a.charCodeAt(c+1),c3=a.charCodeAt(c+2),b+=String.fromCharCode((d&15)<<12|(c2&63)<<6|c3&63),c+=3);return b}};!function(a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a():"function"==typeof define&&define.amd?define([],a):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).pako=a()}(function(){return function b(c,d,e){function f(h,l){if(!d[h]){if(!c[h]){var k="function"==typeof require&&require;if(!l&&k)return k(h,!0);if(g)return g(h,!0);k=Error("Cannot find module '"+h+"'");throw k.code="MODULE_NOT_FOUND",k;}k=d[h]={exports:{}}; @@ -110,81 +110,81 @@ d?(c[h++]=192|d>>>6,c[h++]=128|63&d):65536>d?(c[h++]=224|d>>>12,c[h++]=128|d>>>6 function h(b,c){D._tr_flush_block(b,0<=b.block_start?b.block_start:-1,b.strstart-b.block_start,c);b.block_start=b.strstart;g(b.strm)}function k(b,c){b.pending_buf[b.pending++]=c}function l(b,c){b.pending_buf[b.pending++]=c>>>8&255;b.pending_buf[b.pending++]=255&c}function m(b,c){var d,e,f=b.max_chain_length,g=b.strstart,h=b.prev_length,k=b.nice_match,l=b.strstart>b.w_size-aa?b.strstart-(b.w_size-aa):0,m=b.window,v=b.w_mask,n=b.prev,C=b.strstart+M,p=m[g+h-1],q=m[g+h];b.prev_length>=b.good_match&&(f>>= 2);k>b.lookahead&&(k=b.lookahead);do if(d=c,m[d+h]===q&&m[d+h-1]===p&&m[d]===m[g]&&m[++d]===m[g+1]){g+=2;for(d++;m[++g]===m[++d]&&m[++g]===m[++d]&&m[++g]===m[++d]&&m[++g]===m[++d]&&m[++g]===m[++d]&&m[++g]===m[++d]&&m[++g]===m[++d]&&m[++g]===m[++d]&&g<C;);if(e=M-(C-g),g=C-M,e>h){if(b.match_start=c,h=e,e>=k)break;p=m[g+h-1];q=m[g+h]}}while((c=n[c&v])>l&&0!==--f);return h<=b.lookahead?h:b.lookahead}function n(b){var c,d,e,f,g=b.w_size;do{if(f=b.window_size-b.lookahead-b.strstart,b.strstart>=g+(g-aa)){u.arraySet(b.window, b.window,g,g,0);b.match_start-=g;b.strstart-=g;b.block_start-=g;c=d=b.hash_size;do e=b.head[--c],b.head[c]=e>=g?e-g:0;while(--d);c=d=g;do e=b.prev[--c],b.prev[c]=e>=g?e-g:0;while(--d);f+=g}if(0===b.strm.avail_in)break;c=b.strm;e=b.window;var h=b.strstart+b.lookahead,k=c.avail_in;if(d=(k>f&&(k=f),0===k?0:(c.avail_in-=k,u.arraySet(e,c.input,c.next_in,k,h),1===c.state.wrap?c.adler=F(c.adler,e,k,h):2===c.state.wrap&&(c.adler=E(c.adler,e,k,h)),c.next_in+=k,c.total_in+=k,k)),b.lookahead+=d,b.lookahead+ -b.insert>=I)for(f=b.strstart-b.insert,b.ins_h=b.window[f],b.ins_h=(b.ins_h<<b.hash_shift^b.window[f+1])&b.hash_mask;b.insert&&(b.ins_h=(b.ins_h<<b.hash_shift^b.window[f+I-1])&b.hash_mask,b.prev[f&b.w_mask]=b.head[b.ins_h],b.head[b.ins_h]=f,f++,b.insert--,!(b.lookahead+b.insert<I)););}while(b.lookahead<aa&&0!==b.strm.avail_in)}function p(b,c){for(var d,e;;){if(b.lookahead<aa){if(n(b),b.lookahead<aa&&c===A)return Q;if(0===b.lookahead)break}if(d=0,b.lookahead>=I&&(b.ins_h=(b.ins_h<<b.hash_shift^b.window[b.strstart+ -I-1])&b.hash_mask,d=b.prev[b.strstart&b.w_mask]=b.head[b.ins_h],b.head[b.ins_h]=b.strstart),0!==d&&b.strstart-d<=b.w_size-aa&&(b.match_length=m(b,d)),b.match_length>=I)if(e=D._tr_tally(b,b.strstart-b.match_start,b.match_length-I),b.lookahead-=b.match_length,b.match_length<=b.max_lazy_match&&b.lookahead>=I){b.match_length--;do b.strstart++,b.ins_h=(b.ins_h<<b.hash_shift^b.window[b.strstart+I-1])&b.hash_mask,d=b.prev[b.strstart&b.w_mask]=b.head[b.ins_h],b.head[b.ins_h]=b.strstart;while(0!==--b.match_length); -b.strstart++}else b.strstart+=b.match_length,b.match_length=0,b.ins_h=b.window[b.strstart],b.ins_h=(b.ins_h<<b.hash_shift^b.window[b.strstart+1])&b.hash_mask;else e=D._tr_tally(b,0,b.window[b.strstart]),b.lookahead--,b.strstart++;if(e&&(h(b,!1),0===b.strm.avail_out))return Q}return b.insert=b.strstart<I-1?b.strstart:I-1,c===C?(h(b,!0),0===b.strm.avail_out?Y:O):b.last_lit&&(h(b,!1),0===b.strm.avail_out)?Q:T}function r(b,c){for(var d,e,f;;){if(b.lookahead<aa){if(n(b),b.lookahead<aa&&c===A)return Q; -if(0===b.lookahead)break}if(d=0,b.lookahead>=I&&(b.ins_h=(b.ins_h<<b.hash_shift^b.window[b.strstart+I-1])&b.hash_mask,d=b.prev[b.strstart&b.w_mask]=b.head[b.ins_h],b.head[b.ins_h]=b.strstart),b.prev_length=b.match_length,b.prev_match=b.match_start,b.match_length=I-1,0!==d&&b.prev_length<b.max_lazy_match&&b.strstart-d<=b.w_size-aa&&(b.match_length=m(b,d),5>=b.match_length&&(b.strategy===V||b.match_length===I&&4096<b.strstart-b.match_start)&&(b.match_length=I-1)),b.prev_length>=I&&b.match_length<=b.prev_length){f= -b.strstart+b.lookahead-I;e=D._tr_tally(b,b.strstart-1-b.prev_match,b.prev_length-I);b.lookahead-=b.prev_length-1;b.prev_length-=2;do++b.strstart<=f&&(b.ins_h=(b.ins_h<<b.hash_shift^b.window[b.strstart+I-1])&b.hash_mask,d=b.prev[b.strstart&b.w_mask]=b.head[b.ins_h],b.head[b.ins_h]=b.strstart);while(0!==--b.prev_length);if(b.match_available=0,b.match_length=I-1,b.strstart++,e&&(h(b,!1),0===b.strm.avail_out))return Q}else if(b.match_available){if(e=D._tr_tally(b,0,b.window[b.strstart-1]),e&&h(b,!1), -b.strstart++,b.lookahead--,0===b.strm.avail_out)return Q}else b.match_available=1,b.strstart++,b.lookahead--}return b.match_available&&(D._tr_tally(b,0,b.window[b.strstart-1]),b.match_available=0),b.insert=b.strstart<I-1?b.strstart:I-1,c===C?(h(b,!0),0===b.strm.avail_out?Y:O):b.last_lit&&(h(b,!1),0===b.strm.avail_out)?Q:T}function q(b,c,d,e,f){this.good_length=b;this.max_lazy=c;this.nice_length=d;this.max_chain=e;this.func=f}function t(){this.strm=null;this.status=0;this.pending_buf=null;this.wrap= +b.insert>=J)for(f=b.strstart-b.insert,b.ins_h=b.window[f],b.ins_h=(b.ins_h<<b.hash_shift^b.window[f+1])&b.hash_mask;b.insert&&(b.ins_h=(b.ins_h<<b.hash_shift^b.window[f+J-1])&b.hash_mask,b.prev[f&b.w_mask]=b.head[b.ins_h],b.head[b.ins_h]=f,f++,b.insert--,!(b.lookahead+b.insert<J)););}while(b.lookahead<aa&&0!==b.strm.avail_in)}function p(b,c){for(var d,e;;){if(b.lookahead<aa){if(n(b),b.lookahead<aa&&c===A)return P;if(0===b.lookahead)break}if(d=0,b.lookahead>=J&&(b.ins_h=(b.ins_h<<b.hash_shift^b.window[b.strstart+ +J-1])&b.hash_mask,d=b.prev[b.strstart&b.w_mask]=b.head[b.ins_h],b.head[b.ins_h]=b.strstart),0!==d&&b.strstart-d<=b.w_size-aa&&(b.match_length=m(b,d)),b.match_length>=J)if(e=D._tr_tally(b,b.strstart-b.match_start,b.match_length-J),b.lookahead-=b.match_length,b.match_length<=b.max_lazy_match&&b.lookahead>=J){b.match_length--;do b.strstart++,b.ins_h=(b.ins_h<<b.hash_shift^b.window[b.strstart+J-1])&b.hash_mask,d=b.prev[b.strstart&b.w_mask]=b.head[b.ins_h],b.head[b.ins_h]=b.strstart;while(0!==--b.match_length); +b.strstart++}else b.strstart+=b.match_length,b.match_length=0,b.ins_h=b.window[b.strstart],b.ins_h=(b.ins_h<<b.hash_shift^b.window[b.strstart+1])&b.hash_mask;else e=D._tr_tally(b,0,b.window[b.strstart]),b.lookahead--,b.strstart++;if(e&&(h(b,!1),0===b.strm.avail_out))return P}return b.insert=b.strstart<J-1?b.strstart:J-1,c===C?(h(b,!0),0===b.strm.avail_out?Z:O):b.last_lit&&(h(b,!1),0===b.strm.avail_out)?P:T}function r(b,c){for(var d,e,f;;){if(b.lookahead<aa){if(n(b),b.lookahead<aa&&c===A)return P; +if(0===b.lookahead)break}if(d=0,b.lookahead>=J&&(b.ins_h=(b.ins_h<<b.hash_shift^b.window[b.strstart+J-1])&b.hash_mask,d=b.prev[b.strstart&b.w_mask]=b.head[b.ins_h],b.head[b.ins_h]=b.strstart),b.prev_length=b.match_length,b.prev_match=b.match_start,b.match_length=J-1,0!==d&&b.prev_length<b.max_lazy_match&&b.strstart-d<=b.w_size-aa&&(b.match_length=m(b,d),5>=b.match_length&&(b.strategy===V||b.match_length===J&&4096<b.strstart-b.match_start)&&(b.match_length=J-1)),b.prev_length>=J&&b.match_length<=b.prev_length){f= +b.strstart+b.lookahead-J;e=D._tr_tally(b,b.strstart-1-b.prev_match,b.prev_length-J);b.lookahead-=b.prev_length-1;b.prev_length-=2;do++b.strstart<=f&&(b.ins_h=(b.ins_h<<b.hash_shift^b.window[b.strstart+J-1])&b.hash_mask,d=b.prev[b.strstart&b.w_mask]=b.head[b.ins_h],b.head[b.ins_h]=b.strstart);while(0!==--b.prev_length);if(b.match_available=0,b.match_length=J-1,b.strstart++,e&&(h(b,!1),0===b.strm.avail_out))return P}else if(b.match_available){if(e=D._tr_tally(b,0,b.window[b.strstart-1]),e&&h(b,!1), +b.strstart++,b.lookahead--,0===b.strm.avail_out)return P}else b.match_available=1,b.strstart++,b.lookahead--}return b.match_available&&(D._tr_tally(b,0,b.window[b.strstart-1]),b.match_available=0),b.insert=b.strstart<J-1?b.strstart:J-1,c===C?(h(b,!0),0===b.strm.avail_out?Z:O):b.last_lit&&(h(b,!1),0===b.strm.avail_out)?P:T}function q(b,c,d,e,f){this.good_length=b;this.max_lazy=c;this.nice_length=d;this.max_chain=e;this.func=f}function t(){this.strm=null;this.status=0;this.pending_buf=null;this.wrap= this.pending=this.pending_out=this.pending_buf_size=0;this.gzhead=null;this.gzindex=0;this.method=W;this.last_flush=-1;this.w_mask=this.w_bits=this.w_size=0;this.window=null;this.window_size=0;this.head=this.prev=null;this.nice_match=this.good_match=this.strategy=this.level=this.max_lazy_match=this.max_chain_length=this.prev_length=this.lookahead=this.match_start=this.strstart=this.match_available=this.prev_match=this.match_length=this.block_start=this.hash_shift=this.hash_mask=this.hash_bits=this.hash_size= -this.ins_h=0;this.dyn_ltree=new u.Buf16(2*da);this.dyn_dtree=new u.Buf16(2*(2*J+1));this.bl_tree=new u.Buf16(2*(2*G+1));f(this.dyn_ltree);f(this.dyn_dtree);f(this.bl_tree);this.bl_desc=this.d_desc=this.l_desc=null;this.bl_count=new u.Buf16(N+1);this.heap=new u.Buf16(2*P+1);f(this.heap);this.heap_max=this.heap_len=0;this.depth=new u.Buf16(2*P+1);f(this.depth);this.bi_valid=this.bi_buf=this.insert=this.matches=this.static_len=this.opt_len=this.d_buf=this.last_lit=this.lit_bufsize=this.l_buf=0}function z(b){var c; -return b&&b.state?(b.total_in=b.total_out=0,b.data_type=ca,c=b.state,c.pending=0,c.pending_out=0,0>c.wrap&&(c.wrap=-c.wrap),c.status=c.wrap?ea:S,b.adler=2===c.wrap?0:1,c.last_flush=A,D._tr_init(c),L):e(b,K)}function w(b){var c=z(b);c===L&&(b=b.state,b.window_size=2*b.w_size,f(b.head),b.max_lazy_match=y[b.level].max_lazy,b.good_match=y[b.level].good_length,b.nice_match=y[b.level].nice_length,b.max_chain_length=y[b.level].max_chain,b.strstart=0,b.block_start=0,b.lookahead=0,b.insert=0,b.match_length= -b.prev_length=I-1,b.match_available=0,b.ins_h=0);return c}function x(b,c,d,f,g,h){if(!b)return K;var k=1;if(c===H&&(c=6),0>f?(k=0,f=-f):15<f&&(k=2,f-=16),1>g||g>v||d!==W||8>f||15<f||0>c||9<c||0>h||h>U)return e(b,K);8===f&&(f=9);var l=new t;return b.state=l,l.strm=b,l.wrap=k,l.gzhead=null,l.w_bits=f,l.w_size=1<<l.w_bits,l.w_mask=l.w_size-1,l.hash_bits=g+7,l.hash_size=1<<l.hash_bits,l.hash_mask=l.hash_size-1,l.hash_shift=~~((l.hash_bits+I-1)/I),l.window=new u.Buf8(2*l.w_size),l.head=new u.Buf16(l.hash_size), -l.prev=new u.Buf16(l.w_size),l.lit_bufsize=1<<g+6,l.pending_buf_size=4*l.lit_bufsize,l.pending_buf=new u.Buf8(l.pending_buf_size),l.d_buf=1*l.lit_bufsize,l.l_buf=3*l.lit_bufsize,l.level=c,l.strategy=h,l.method=d,w(b)}var y,u=b("../utils/common"),D=b("./trees"),F=b("./adler32"),E=b("./crc32"),B=b("./messages"),A=0,C=4,L=0,K=-2,H=-1,V=1,U=4,ca=2,W=8,v=9,P=286,J=30,G=19,da=2*P+1,N=15,I=3,M=258,aa=M+I+1,ea=42,S=113,Q=1,T=2,Y=3,O=4;y=[new q(0,0,0,0,function(b,c){var d=65535;for(d>b.pending_buf_size-5&& -(d=b.pending_buf_size-5);;){if(1>=b.lookahead){if(n(b),0===b.lookahead&&c===A)return Q;if(0===b.lookahead)break}b.strstart+=b.lookahead;b.lookahead=0;var e=b.block_start+d;if((0===b.strstart||b.strstart>=e)&&(b.lookahead=b.strstart-e,b.strstart=e,h(b,!1),0===b.strm.avail_out)||b.strstart-b.block_start>=b.w_size-aa&&(h(b,!1),0===b.strm.avail_out))return Q}return b.insert=0,c===C?(h(b,!0),0===b.strm.avail_out?Y:O):(b.strstart>b.block_start&&h(b,!1),Q)}),new q(4,4,8,4,p),new q(4,5,16,8,p),new q(4,6, -32,32,p),new q(4,4,16,16,r),new q(8,16,32,32,r),new q(8,16,128,128,r),new q(8,32,128,256,r),new q(32,128,258,1024,r),new q(32,258,258,4096,r)];d.deflateInit=function(b,c){return x(b,c,W,15,8,0)};d.deflateInit2=x;d.deflateReset=w;d.deflateResetKeep=z;d.deflateSetHeader=function(b,c){return b&&b.state?2!==b.state.wrap?K:(b.state.gzhead=c,L):K};d.deflate=function(b,c){var d,m,v,p;if(!b||!b.state||5<c||0>c)return b?e(b,K):K;if(m=b.state,!b.output||!b.input&&0!==b.avail_in||666===m.status&&c!==C)return e(b, +this.ins_h=0;this.dyn_ltree=new u.Buf16(2*da);this.dyn_dtree=new u.Buf16(2*(2*G+1));this.bl_tree=new u.Buf16(2*(2*H+1));f(this.dyn_ltree);f(this.dyn_dtree);f(this.bl_tree);this.bl_desc=this.d_desc=this.l_desc=null;this.bl_count=new u.Buf16(N+1);this.heap=new u.Buf16(2*Q+1);f(this.heap);this.heap_max=this.heap_len=0;this.depth=new u.Buf16(2*Q+1);f(this.depth);this.bi_valid=this.bi_buf=this.insert=this.matches=this.static_len=this.opt_len=this.d_buf=this.last_lit=this.lit_bufsize=this.l_buf=0}function z(b){var c; +return b&&b.state?(b.total_in=b.total_out=0,b.data_type=ca,c=b.state,c.pending=0,c.pending_out=0,0>c.wrap&&(c.wrap=-c.wrap),c.status=c.wrap?ea:S,b.adler=2===c.wrap?0:1,c.last_flush=A,D._tr_init(c),L):e(b,K)}function x(b){var c=z(b);c===L&&(b=b.state,b.window_size=2*b.w_size,f(b.head),b.max_lazy_match=y[b.level].max_lazy,b.good_match=y[b.level].good_length,b.nice_match=y[b.level].nice_length,b.max_chain_length=y[b.level].max_chain,b.strstart=0,b.block_start=0,b.lookahead=0,b.insert=0,b.match_length= +b.prev_length=J-1,b.match_available=0,b.ins_h=0);return c}function w(b,c,d,f,g,h){if(!b)return K;var k=1;if(c===I&&(c=6),0>f?(k=0,f=-f):15<f&&(k=2,f-=16),1>g||g>v||d!==W||8>f||15<f||0>c||9<c||0>h||h>U)return e(b,K);8===f&&(f=9);var l=new t;return b.state=l,l.strm=b,l.wrap=k,l.gzhead=null,l.w_bits=f,l.w_size=1<<l.w_bits,l.w_mask=l.w_size-1,l.hash_bits=g+7,l.hash_size=1<<l.hash_bits,l.hash_mask=l.hash_size-1,l.hash_shift=~~((l.hash_bits+J-1)/J),l.window=new u.Buf8(2*l.w_size),l.head=new u.Buf16(l.hash_size), +l.prev=new u.Buf16(l.w_size),l.lit_bufsize=1<<g+6,l.pending_buf_size=4*l.lit_bufsize,l.pending_buf=new u.Buf8(l.pending_buf_size),l.d_buf=1*l.lit_bufsize,l.l_buf=3*l.lit_bufsize,l.level=c,l.strategy=h,l.method=d,x(b)}var y,u=b("../utils/common"),D=b("./trees"),F=b("./adler32"),E=b("./crc32"),B=b("./messages"),A=0,C=4,L=0,K=-2,I=-1,V=1,U=4,ca=2,W=8,v=9,Q=286,G=30,H=19,da=2*Q+1,N=15,J=3,M=258,aa=M+J+1,ea=42,S=113,P=1,T=2,Z=3,O=4;y=[new q(0,0,0,0,function(b,c){var d=65535;for(d>b.pending_buf_size-5&& +(d=b.pending_buf_size-5);;){if(1>=b.lookahead){if(n(b),0===b.lookahead&&c===A)return P;if(0===b.lookahead)break}b.strstart+=b.lookahead;b.lookahead=0;var e=b.block_start+d;if((0===b.strstart||b.strstart>=e)&&(b.lookahead=b.strstart-e,b.strstart=e,h(b,!1),0===b.strm.avail_out)||b.strstart-b.block_start>=b.w_size-aa&&(h(b,!1),0===b.strm.avail_out))return P}return b.insert=0,c===C?(h(b,!0),0===b.strm.avail_out?Z:O):(b.strstart>b.block_start&&h(b,!1),P)}),new q(4,4,8,4,p),new q(4,5,16,8,p),new q(4,6, +32,32,p),new q(4,4,16,16,r),new q(8,16,32,32,r),new q(8,16,128,128,r),new q(8,32,128,256,r),new q(32,128,258,1024,r),new q(32,258,258,4096,r)];d.deflateInit=function(b,c){return w(b,c,W,15,8,0)};d.deflateInit2=w;d.deflateReset=x;d.deflateResetKeep=z;d.deflateSetHeader=function(b,c){return b&&b.state?2!==b.state.wrap?K:(b.state.gzhead=c,L):K};d.deflate=function(b,c){var d,m,v,p;if(!b||!b.state||5<c||0>c)return b?e(b,K):K;if(m=b.state,!b.output||!b.input&&0!==b.avail_in||666===m.status&&c!==C)return e(b, 0===b.avail_out?-5:K);if(m.strm=b,d=m.last_flush,m.last_flush=c,m.status===ea)2===m.wrap?(b.adler=0,k(m,31),k(m,139),k(m,8),m.gzhead?(k(m,(m.gzhead.text?1:0)+(m.gzhead.hcrc?2:0)+(m.gzhead.extra?4:0)+(m.gzhead.name?8:0)+(m.gzhead.comment?16:0)),k(m,255&m.gzhead.time),k(m,m.gzhead.time>>8&255),k(m,m.gzhead.time>>16&255),k(m,m.gzhead.time>>24&255),k(m,9===m.level?2:2<=m.strategy||2>m.level?4:0),k(m,255&m.gzhead.os),m.gzhead.extra&&m.gzhead.extra.length&&(k(m,255&m.gzhead.extra.length),k(m,m.gzhead.extra.length>> 8&255)),m.gzhead.hcrc&&(b.adler=E(b.adler,m.pending_buf,m.pending,0)),m.gzindex=0,m.status=69):(k(m,0),k(m,0),k(m,0),k(m,0),k(m,0),k(m,9===m.level?2:2<=m.strategy||2>m.level?4:0),k(m,3),m.status=S)):(v=W+(m.w_bits-8<<4)<<8,v|=(2<=m.strategy||2>m.level?0:6>m.level?1:6===m.level?2:3)<<6,0!==m.strstart&&(v|=32),m.status=S,l(m,v+(31-v%31)),0!==m.strstart&&(l(m,b.adler>>>16),l(m,65535&b.adler)),b.adler=1);if(69===m.status)if(m.gzhead.extra){for(v=m.pending;m.gzindex<(65535&m.gzhead.extra.length)&&(m.pending!== m.pending_buf_size||(m.gzhead.hcrc&&m.pending>v&&(b.adler=E(b.adler,m.pending_buf,m.pending-v,v)),g(b),v=m.pending,m.pending!==m.pending_buf_size));)k(m,255&m.gzhead.extra[m.gzindex]),m.gzindex++;m.gzhead.hcrc&&m.pending>v&&(b.adler=E(b.adler,m.pending_buf,m.pending-v,v));m.gzindex===m.gzhead.extra.length&&(m.gzindex=0,m.status=73)}else m.status=73;if(73===m.status)if(m.gzhead.name){v=m.pending;do{if(m.pending===m.pending_buf_size&&(m.gzhead.hcrc&&m.pending>v&&(b.adler=E(b.adler,m.pending_buf,m.pending- v,v)),g(b),v=m.pending,m.pending===m.pending_buf_size)){p=1;break}p=m.gzindex<m.gzhead.name.length?255&m.gzhead.name.charCodeAt(m.gzindex++):0;k(m,p)}while(0!==p);m.gzhead.hcrc&&m.pending>v&&(b.adler=E(b.adler,m.pending_buf,m.pending-v,v));0===p&&(m.gzindex=0,m.status=91)}else m.status=91;if(91===m.status)if(m.gzhead.comment){v=m.pending;do{if(m.pending===m.pending_buf_size&&(m.gzhead.hcrc&&m.pending>v&&(b.adler=E(b.adler,m.pending_buf,m.pending-v,v)),g(b),v=m.pending,m.pending===m.pending_buf_size)){p= 1;break}p=m.gzindex<m.gzhead.comment.length?255&m.gzhead.comment.charCodeAt(m.gzindex++):0;k(m,p)}while(0!==p);m.gzhead.hcrc&&m.pending>v&&(b.adler=E(b.adler,m.pending_buf,m.pending-v,v));0===p&&(m.status=103)}else m.status=103;if(103===m.status&&(m.gzhead.hcrc?(m.pending+2>m.pending_buf_size&&g(b),m.pending+2<=m.pending_buf_size&&(k(m,255&b.adler),k(m,b.adler>>8&255),b.adler=0,m.status=S)):m.status=S),0!==m.pending){if(g(b),0===b.avail_out)return m.last_flush=-1,L}else if(0===b.avail_in&&(c<<1)- -(4<c?9:0)<=(d<<1)-(4<d?9:0)&&c!==C)return e(b,-5);if(666===m.status&&0!==b.avail_in)return e(b,-5);if(0!==b.avail_in||0!==m.lookahead||c!==A&&666!==m.status){var q;if(2===m.strategy)a:{for(var r;;){if(0===m.lookahead&&(n(m),0===m.lookahead)){if(c===A){q=Q;break a}break}if(m.match_length=0,r=D._tr_tally(m,0,m.window[m.strstart]),m.lookahead--,m.strstart++,r&&(h(m,!1),0===m.strm.avail_out)){q=Q;break a}}q=(m.insert=0,c===C?(h(m,!0),0===m.strm.avail_out?Y:O):m.last_lit&&(h(m,!1),0===m.strm.avail_out)? -Q:T)}else if(3===m.strategy)a:{var J,P;for(r=m.window;;){if(m.lookahead<=M){if(n(m),m.lookahead<=M&&c===A){q=Q;break a}if(0===m.lookahead)break}if(m.match_length=0,m.lookahead>=I&&0<m.strstart&&(P=m.strstart-1,J=r[P],J===r[++P]&&J===r[++P]&&J===r[++P])){for(d=m.strstart+M;J===r[++P]&&J===r[++P]&&J===r[++P]&&J===r[++P]&&J===r[++P]&&J===r[++P]&&J===r[++P]&&J===r[++P]&&P<d;);m.match_length=M-(d-P);m.match_length>m.lookahead&&(m.match_length=m.lookahead)}if(m.match_length>=I?(q=D._tr_tally(m,1,m.match_length- -I),m.lookahead-=m.match_length,m.strstart+=m.match_length,m.match_length=0):(q=D._tr_tally(m,0,m.window[m.strstart]),m.lookahead--,m.strstart++),q&&(h(m,!1),0===m.strm.avail_out)){q=Q;break a}}q=(m.insert=0,c===C?(h(m,!0),0===m.strm.avail_out?Y:O):m.last_lit&&(h(m,!1),0===m.strm.avail_out)?Q:T)}else q=y[m.level].func(m,c);if(q!==Y&&q!==O||(m.status=666),q===Q||q===Y)return 0===b.avail_out&&(m.last_flush=-1),L;if(q===T&&(1===c?D._tr_align(m):5!==c&&(D._tr_stored_block(m,0,0,!1),3===c&&(f(m.head),0=== +(4<c?9:0)<=(d<<1)-(4<d?9:0)&&c!==C)return e(b,-5);if(666===m.status&&0!==b.avail_in)return e(b,-5);if(0!==b.avail_in||0!==m.lookahead||c!==A&&666!==m.status){var q;if(2===m.strategy)a:{for(var r;;){if(0===m.lookahead&&(n(m),0===m.lookahead)){if(c===A){q=P;break a}break}if(m.match_length=0,r=D._tr_tally(m,0,m.window[m.strstart]),m.lookahead--,m.strstart++,r&&(h(m,!1),0===m.strm.avail_out)){q=P;break a}}q=(m.insert=0,c===C?(h(m,!0),0===m.strm.avail_out?Z:O):m.last_lit&&(h(m,!1),0===m.strm.avail_out)? +P:T)}else if(3===m.strategy)a:{var G,Q;for(r=m.window;;){if(m.lookahead<=M){if(n(m),m.lookahead<=M&&c===A){q=P;break a}if(0===m.lookahead)break}if(m.match_length=0,m.lookahead>=J&&0<m.strstart&&(Q=m.strstart-1,G=r[Q],G===r[++Q]&&G===r[++Q]&&G===r[++Q])){for(d=m.strstart+M;G===r[++Q]&&G===r[++Q]&&G===r[++Q]&&G===r[++Q]&&G===r[++Q]&&G===r[++Q]&&G===r[++Q]&&G===r[++Q]&&Q<d;);m.match_length=M-(d-Q);m.match_length>m.lookahead&&(m.match_length=m.lookahead)}if(m.match_length>=J?(q=D._tr_tally(m,1,m.match_length- +J),m.lookahead-=m.match_length,m.strstart+=m.match_length,m.match_length=0):(q=D._tr_tally(m,0,m.window[m.strstart]),m.lookahead--,m.strstart++),q&&(h(m,!1),0===m.strm.avail_out)){q=P;break a}}q=(m.insert=0,c===C?(h(m,!0),0===m.strm.avail_out?Z:O):m.last_lit&&(h(m,!1),0===m.strm.avail_out)?P:T)}else q=y[m.level].func(m,c);if(q!==Z&&q!==O||(m.status=666),q===P||q===Z)return 0===b.avail_out&&(m.last_flush=-1),L;if(q===T&&(1===c?D._tr_align(m):5!==c&&(D._tr_stored_block(m,0,0,!1),3===c&&(f(m.head),0=== m.lookahead&&(m.strstart=0,m.block_start=0,m.insert=0))),g(b),0===b.avail_out))return m.last_flush=-1,L}return c!==C?L:0>=m.wrap?1:(2===m.wrap?(k(m,255&b.adler),k(m,b.adler>>8&255),k(m,b.adler>>16&255),k(m,b.adler>>24&255),k(m,255&b.total_in),k(m,b.total_in>>8&255),k(m,b.total_in>>16&255),k(m,b.total_in>>24&255)):(l(m,b.adler>>>16),l(m,65535&b.adler)),g(b),0<m.wrap&&(m.wrap=-m.wrap),0!==m.pending?L:1)};d.deflateEnd=function(b){var c;return b&&b.state?(c=b.state.status,c!==ea&&69!==c&&73!==c&&91!== c&&103!==c&&c!==S&&666!==c?e(b,K):(b.state=null,c===S?e(b,-3):L)):K};d.deflateSetDictionary=function(b,c){var d,e,g,h,k,m,l;e=c.length;if(!b||!b.state||(d=b.state,h=d.wrap,2===h||1===h&&d.status!==ea||d.lookahead))return K;1===h&&(b.adler=F(b.adler,c,e,0));d.wrap=0;e>=d.w_size&&(0===h&&(f(d.head),d.strstart=0,d.block_start=0,d.insert=0),k=new u.Buf8(d.w_size),u.arraySet(k,c,e-d.w_size,d.w_size,0),c=k,e=d.w_size);k=b.avail_in;m=b.next_in;l=b.input;b.avail_in=e;b.next_in=0;b.input=c;for(n(d);d.lookahead>= -I;){e=d.strstart;g=d.lookahead-(I-1);do d.ins_h=(d.ins_h<<d.hash_shift^d.window[e+I-1])&d.hash_mask,d.prev[e&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=e,e++;while(--g);d.strstart=e;d.lookahead=I-1;n(d)}return d.strstart+=d.lookahead,d.block_start=d.strstart,d.insert=d.lookahead,d.lookahead=0,d.match_length=d.prev_length=I-1,d.match_available=0,b.next_in=m,b.input=l,b.avail_in=k,d.wrap=h,L};d.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":3,"./adler32":5,"./crc32":7,"./messages":13, -"./trees":14}],9:[function(b,c,d){c.exports=function(){this.os=this.xflags=this.time=this.text=0;this.extra=null;this.extra_len=0;this.comment=this.name="";this.hcrc=0;this.done=!1}},{}],10:[function(b,c,d){c.exports=function(b,c){var d,e,f,l,m,n,p,r,q,t,z,w,x,y,u,D,F,E,B,A,C,L,K,H;d=b.state;e=b.next_in;K=b.input;f=e+(b.avail_in-5);l=b.next_out;H=b.output;m=l-(c-b.avail_out);n=l+(b.avail_out-257);p=d.dmax;r=d.wsize;q=d.whave;t=d.wnext;z=d.window;w=d.hold;x=d.bits;y=d.lencode;u=d.distcode;D=(1<<d.lenbits)- -1;F=(1<<d.distbits)-1;a:do b:for(15>x&&(w+=K[e++]<<x,x+=8,w+=K[e++]<<x,x+=8),E=y[w&D];;){if(B=E>>>24,w>>>=B,x-=B,B=E>>>16&255,0===B)H[l++]=65535&E;else{if(!(16&B)){if(0===(64&B)){E=y[(65535&E)+(w&(1<<B)-1)];continue b}if(32&B){d.mode=12;break a}b.msg="invalid literal/length code";d.mode=30;break a}A=65535&E;(B&=15)&&(x<B&&(w+=K[e++]<<x,x+=8),A+=w&(1<<B)-1,w>>>=B,x-=B);15>x&&(w+=K[e++]<<x,x+=8,w+=K[e++]<<x,x+=8);E=u[w&F];c:for(;;){if(B=E>>>24,w>>>=B,x-=B,B=E>>>16&255,!(16&B)){if(0===(64&B)){E=u[(65535& -E)+(w&(1<<B)-1)];continue c}b.msg="invalid distance code";d.mode=30;break a}if(C=65535&E,B&=15,x<B&&(w+=K[e++]<<x,x+=8,x<B&&(w+=K[e++]<<x,x+=8)),C+=w&(1<<B)-1,C>p){b.msg="invalid distance too far back";d.mode=30;break a}if(w>>>=B,x-=B,B=l-m,C>B){if(B=C-B,B>q&&d.sane){b.msg="invalid distance too far back";d.mode=30;break a}if(E=0,L=z,0===t){if(E+=r-B,B<A){A-=B;do H[l++]=z[E++];while(--B);E=l-C;L=H}}else if(t<B){if(E+=r+t-B,B-=t,B<A){A-=B;do H[l++]=z[E++];while(--B);if(E=0,t<A){B=t;A-=B;do H[l++]=z[E++]; -while(--B);E=l-C;L=H}}}else if(E+=t-B,B<A){A-=B;do H[l++]=z[E++];while(--B);E=l-C;L=H}for(;2<A;)H[l++]=L[E++],H[l++]=L[E++],H[l++]=L[E++],A-=3;A&&(H[l++]=L[E++],1<A&&(H[l++]=L[E++]))}else{E=l-C;do H[l++]=H[E++],H[l++]=H[E++],H[l++]=H[E++],A-=3;while(2<A);A&&(H[l++]=H[E++],1<A&&(H[l++]=H[E++]))}break}}break}while(e<f&&l<n);A=x>>3;e-=A;x-=A<<3;b.next_in=e;b.next_out=l;b.avail_in=e<f?5+(f-e):5-(e-f);b.avail_out=l<n?257+(n-l):257-(l-n);d.hold=w&(1<<x)-1;d.bits=x}},{}],11:[function(b,c,d){function e(b){return(b>>> +J;){e=d.strstart;g=d.lookahead-(J-1);do d.ins_h=(d.ins_h<<d.hash_shift^d.window[e+J-1])&d.hash_mask,d.prev[e&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=e,e++;while(--g);d.strstart=e;d.lookahead=J-1;n(d)}return d.strstart+=d.lookahead,d.block_start=d.strstart,d.insert=d.lookahead,d.lookahead=0,d.match_length=d.prev_length=J-1,d.match_available=0,b.next_in=m,b.input=l,b.avail_in=k,d.wrap=h,L};d.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":3,"./adler32":5,"./crc32":7,"./messages":13, +"./trees":14}],9:[function(b,c,d){c.exports=function(){this.os=this.xflags=this.time=this.text=0;this.extra=null;this.extra_len=0;this.comment=this.name="";this.hcrc=0;this.done=!1}},{}],10:[function(b,c,d){c.exports=function(b,c){var d,e,f,l,m,n,p,r,q,t,z,x,w,y,u,D,F,E,B,A,C,L,K,I;d=b.state;e=b.next_in;K=b.input;f=e+(b.avail_in-5);l=b.next_out;I=b.output;m=l-(c-b.avail_out);n=l+(b.avail_out-257);p=d.dmax;r=d.wsize;q=d.whave;t=d.wnext;z=d.window;x=d.hold;w=d.bits;y=d.lencode;u=d.distcode;D=(1<<d.lenbits)- +1;F=(1<<d.distbits)-1;a:do b:for(15>w&&(x+=K[e++]<<w,w+=8,x+=K[e++]<<w,w+=8),E=y[x&D];;){if(B=E>>>24,x>>>=B,w-=B,B=E>>>16&255,0===B)I[l++]=65535&E;else{if(!(16&B)){if(0===(64&B)){E=y[(65535&E)+(x&(1<<B)-1)];continue b}if(32&B){d.mode=12;break a}b.msg="invalid literal/length code";d.mode=30;break a}A=65535&E;(B&=15)&&(w<B&&(x+=K[e++]<<w,w+=8),A+=x&(1<<B)-1,x>>>=B,w-=B);15>w&&(x+=K[e++]<<w,w+=8,x+=K[e++]<<w,w+=8);E=u[x&F];c:for(;;){if(B=E>>>24,x>>>=B,w-=B,B=E>>>16&255,!(16&B)){if(0===(64&B)){E=u[(65535& +E)+(x&(1<<B)-1)];continue c}b.msg="invalid distance code";d.mode=30;break a}if(C=65535&E,B&=15,w<B&&(x+=K[e++]<<w,w+=8,w<B&&(x+=K[e++]<<w,w+=8)),C+=x&(1<<B)-1,C>p){b.msg="invalid distance too far back";d.mode=30;break a}if(x>>>=B,w-=B,B=l-m,C>B){if(B=C-B,B>q&&d.sane){b.msg="invalid distance too far back";d.mode=30;break a}if(E=0,L=z,0===t){if(E+=r-B,B<A){A-=B;do I[l++]=z[E++];while(--B);E=l-C;L=I}}else if(t<B){if(E+=r+t-B,B-=t,B<A){A-=B;do I[l++]=z[E++];while(--B);if(E=0,t<A){B=t;A-=B;do I[l++]=z[E++]; +while(--B);E=l-C;L=I}}}else if(E+=t-B,B<A){A-=B;do I[l++]=z[E++];while(--B);E=l-C;L=I}for(;2<A;)I[l++]=L[E++],I[l++]=L[E++],I[l++]=L[E++],A-=3;A&&(I[l++]=L[E++],1<A&&(I[l++]=L[E++]))}else{E=l-C;do I[l++]=I[E++],I[l++]=I[E++],I[l++]=I[E++],A-=3;while(2<A);A&&(I[l++]=I[E++],1<A&&(I[l++]=I[E++]))}break}}break}while(e<f&&l<n);A=w>>3;e-=A;w-=A<<3;b.next_in=e;b.next_out=l;b.avail_in=e<f?5+(f-e):5-(e-f);b.avail_out=l<n?257+(n-l):257-(l-n);d.hold=x&(1<<w)-1;d.bits=w}},{}],11:[function(b,c,d){function e(b){return(b>>> 24&255)+(b>>>8&65280)+((65280&b)<<8)+((255&b)<<24)}function f(){this.mode=0;this.last=!1;this.wrap=0;this.havedict=!1;this.total=this.check=this.dmax=this.flags=0;this.head=null;this.wnext=this.whave=this.wsize=this.wbits=0;this.window=null;this.extra=this.offset=this.length=this.bits=this.hold=0;this.distcode=this.lencode=null;this.have=this.ndist=this.nlen=this.ncode=this.distbits=this.lenbits=0;this.next=null;this.lens=new r.Buf16(320);this.work=new r.Buf16(288);this.distdyn=this.lendyn=null;this.was= -this.back=this.sane=0}function g(b){var c;return b&&b.state?(c=b.state,b.total_in=b.total_out=c.total=0,b.msg="",c.wrap&&(b.adler=1&c.wrap),c.mode=u,c.last=0,c.havedict=0,c.dmax=32768,c.head=null,c.hold=0,c.bits=0,c.lencode=c.lendyn=new r.Buf32(D),c.distcode=c.distdyn=new r.Buf32(F),c.sane=1,c.back=-1,x):y}function h(b){var c;return b&&b.state?(c=b.state,c.wsize=0,c.whave=0,c.wnext=0,g(b)):y}function k(b,c){var d,e;return b&&b.state?(e=b.state,0>c?(d=0,c=-c):(d=(c>>4)+1,48>c&&(c&=15)),c&&(8>c||15< -c)?y:(null!==e.window&&e.wbits!==c&&(e.window=null),e.wrap=d,e.wbits=c,h(b))):y}function l(b,c){var d,e;return b?(e=new f,b.state=e,e.window=null,d=k(b,c),d!==x&&(b.state=null),d):y}function m(b,c,d,e){var f;b=b.state;return null===b.window&&(b.wsize=1<<b.wbits,b.wnext=0,b.whave=0,b.window=new r.Buf8(b.wsize)),e>=b.wsize?(r.arraySet(b.window,c,d-b.wsize,b.wsize,0),b.wnext=0,b.whave=b.wsize):(f=b.wsize-b.wnext,f>e&&(f=e),r.arraySet(b.window,c,d-e,f,b.wnext),e-=f,e?(r.arraySet(b.window,c,d-e,e,0),b.wnext= -e,b.whave=b.wsize):(b.wnext+=f,b.wnext===b.wsize&&(b.wnext=0),b.whave<b.wsize&&(b.whave+=f))),0}var n,p,r=b("../utils/common"),q=b("./adler32"),t=b("./crc32"),z=b("./inffast"),w=b("./inftrees"),x=0,y=-2,u=1,D=852,F=592,E=!0;d.inflateReset=h;d.inflateReset2=k;d.inflateResetKeep=g;d.inflateInit=function(b){return l(b,15)};d.inflateInit2=l;d.inflate=function(b,c){var d,f,g,h,k,l,B,A,v,P,J,G,da,N,I,M,D,F,S,Q,T,Y,O=0,R=new r.Buf8(4),fa=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!b||!b.state|| -!b.output||!b.input&&0!==b.avail_in)return y;d=b.state;12===d.mode&&(d.mode=13);k=b.next_out;g=b.output;B=b.avail_out;h=b.next_in;f=b.input;l=b.avail_in;A=d.hold;v=d.bits;P=l;J=B;T=x;a:for(;;)switch(d.mode){case u:if(0===d.wrap){d.mode=13;break}for(;16>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(2&d.wrap&&35615===A){d.check=0;R[0]=255&A;R[1]=A>>>8&255;d.check=t(d.check,R,2,0);v=A=0;d.mode=2;break}if(d.flags=0,d.head&&(d.head.done=!1),!(1&d.wrap)||(((255&A)<<8)+(A>>8))%31){b.msg="incorrect header check"; -d.mode=30;break}if(8!==(15&A)){b.msg="unknown compression method";d.mode=30;break}if(A>>>=4,v-=4,Q=(15&A)+8,0===d.wbits)d.wbits=Q;else if(Q>d.wbits){b.msg="invalid window size";d.mode=30;break}d.dmax=1<<Q;b.adler=d.check=1;d.mode=512&A?10:12;v=A=0;break;case 2:for(;16>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(d.flags=A,8!==(255&d.flags)){b.msg="unknown compression method";d.mode=30;break}if(57344&d.flags){b.msg="unknown header flags set";d.mode=30;break}d.head&&(d.head.text=A>>8&1);512&d.flags&& +this.back=this.sane=0}function g(b){var c;return b&&b.state?(c=b.state,b.total_in=b.total_out=c.total=0,b.msg="",c.wrap&&(b.adler=1&c.wrap),c.mode=u,c.last=0,c.havedict=0,c.dmax=32768,c.head=null,c.hold=0,c.bits=0,c.lencode=c.lendyn=new r.Buf32(D),c.distcode=c.distdyn=new r.Buf32(F),c.sane=1,c.back=-1,w):y}function h(b){var c;return b&&b.state?(c=b.state,c.wsize=0,c.whave=0,c.wnext=0,g(b)):y}function k(b,c){var d,e;return b&&b.state?(e=b.state,0>c?(d=0,c=-c):(d=(c>>4)+1,48>c&&(c&=15)),c&&(8>c||15< +c)?y:(null!==e.window&&e.wbits!==c&&(e.window=null),e.wrap=d,e.wbits=c,h(b))):y}function l(b,c){var d,e;return b?(e=new f,b.state=e,e.window=null,d=k(b,c),d!==w&&(b.state=null),d):y}function m(b,c,d,e){var f;b=b.state;return null===b.window&&(b.wsize=1<<b.wbits,b.wnext=0,b.whave=0,b.window=new r.Buf8(b.wsize)),e>=b.wsize?(r.arraySet(b.window,c,d-b.wsize,b.wsize,0),b.wnext=0,b.whave=b.wsize):(f=b.wsize-b.wnext,f>e&&(f=e),r.arraySet(b.window,c,d-e,f,b.wnext),e-=f,e?(r.arraySet(b.window,c,d-e,e,0),b.wnext= +e,b.whave=b.wsize):(b.wnext+=f,b.wnext===b.wsize&&(b.wnext=0),b.whave<b.wsize&&(b.whave+=f))),0}var n,p,r=b("../utils/common"),q=b("./adler32"),t=b("./crc32"),z=b("./inffast"),x=b("./inftrees"),w=0,y=-2,u=1,D=852,F=592,E=!0;d.inflateReset=h;d.inflateReset2=k;d.inflateResetKeep=g;d.inflateInit=function(b){return l(b,15)};d.inflateInit2=l;d.inflate=function(b,c){var d,f,g,h,k,l,B,A,v,Q,G,H,da,N,J,M,D,F,S,P,T,Z,O=0,R=new r.Buf8(4),fa=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!b||!b.state|| +!b.output||!b.input&&0!==b.avail_in)return y;d=b.state;12===d.mode&&(d.mode=13);k=b.next_out;g=b.output;B=b.avail_out;h=b.next_in;f=b.input;l=b.avail_in;A=d.hold;v=d.bits;Q=l;G=B;T=w;a:for(;;)switch(d.mode){case u:if(0===d.wrap){d.mode=13;break}for(;16>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(2&d.wrap&&35615===A){d.check=0;R[0]=255&A;R[1]=A>>>8&255;d.check=t(d.check,R,2,0);v=A=0;d.mode=2;break}if(d.flags=0,d.head&&(d.head.done=!1),!(1&d.wrap)||(((255&A)<<8)+(A>>8))%31){b.msg="incorrect header check"; +d.mode=30;break}if(8!==(15&A)){b.msg="unknown compression method";d.mode=30;break}if(A>>>=4,v-=4,P=(15&A)+8,0===d.wbits)d.wbits=P;else if(P>d.wbits){b.msg="invalid window size";d.mode=30;break}d.dmax=1<<P;b.adler=d.check=1;d.mode=512&A?10:12;v=A=0;break;case 2:for(;16>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(d.flags=A,8!==(255&d.flags)){b.msg="unknown compression method";d.mode=30;break}if(57344&d.flags){b.msg="unknown header flags set";d.mode=30;break}d.head&&(d.head.text=A>>8&1);512&d.flags&& (R[0]=255&A,R[1]=A>>>8&255,d.check=t(d.check,R,2,0));v=A=0;d.mode=3;case 3:for(;32>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}d.head&&(d.head.time=A);512&d.flags&&(R[0]=255&A,R[1]=A>>>8&255,R[2]=A>>>16&255,R[3]=A>>>24&255,d.check=t(d.check,R,4,0));v=A=0;d.mode=4;case 4:for(;16>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}d.head&&(d.head.xflags=255&A,d.head.os=A>>8);512&d.flags&&(R[0]=255&A,R[1]=A>>>8&255,d.check=t(d.check,R,2,0));v=A=0;d.mode=5;case 5:if(1024&d.flags){for(;16>v;){if(0===l)break a;l--; -A+=f[h++]<<v;v+=8}d.length=A;d.head&&(d.head.extra_len=A);512&d.flags&&(R[0]=255&A,R[1]=A>>>8&255,d.check=t(d.check,R,2,0));v=A=0}else d.head&&(d.head.extra=null);d.mode=6;case 6:if(1024&d.flags&&(G=d.length,G>l&&(G=l),G&&(d.head&&(Q=d.head.extra_len-d.length,d.head.extra||(d.head.extra=Array(d.head.extra_len)),r.arraySet(d.head.extra,f,h,G,Q)),512&d.flags&&(d.check=t(d.check,f,G,h)),l-=G,h+=G,d.length-=G),d.length))break a;d.length=0;d.mode=7;case 7:if(2048&d.flags){if(0===l)break a;G=0;do Q=f[h+ -G++],d.head&&Q&&65536>d.length&&(d.head.name+=String.fromCharCode(Q));while(Q&&G<l);if(512&d.flags&&(d.check=t(d.check,f,G,h)),l-=G,h+=G,Q)break a}else d.head&&(d.head.name=null);d.length=0;d.mode=8;case 8:if(4096&d.flags){if(0===l)break a;G=0;do Q=f[h+G++],d.head&&Q&&65536>d.length&&(d.head.comment+=String.fromCharCode(Q));while(Q&&G<l);if(512&d.flags&&(d.check=t(d.check,f,G,h)),l-=G,h+=G,Q)break a}else d.head&&(d.head.comment=null);d.mode=9;case 9:if(512&d.flags){for(;16>v;){if(0===l)break a;l--; +A+=f[h++]<<v;v+=8}d.length=A;d.head&&(d.head.extra_len=A);512&d.flags&&(R[0]=255&A,R[1]=A>>>8&255,d.check=t(d.check,R,2,0));v=A=0}else d.head&&(d.head.extra=null);d.mode=6;case 6:if(1024&d.flags&&(H=d.length,H>l&&(H=l),H&&(d.head&&(P=d.head.extra_len-d.length,d.head.extra||(d.head.extra=Array(d.head.extra_len)),r.arraySet(d.head.extra,f,h,H,P)),512&d.flags&&(d.check=t(d.check,f,H,h)),l-=H,h+=H,d.length-=H),d.length))break a;d.length=0;d.mode=7;case 7:if(2048&d.flags){if(0===l)break a;H=0;do P=f[h+ +H++],d.head&&P&&65536>d.length&&(d.head.name+=String.fromCharCode(P));while(P&&H<l);if(512&d.flags&&(d.check=t(d.check,f,H,h)),l-=H,h+=H,P)break a}else d.head&&(d.head.name=null);d.length=0;d.mode=8;case 8:if(4096&d.flags){if(0===l)break a;H=0;do P=f[h+H++],d.head&&P&&65536>d.length&&(d.head.comment+=String.fromCharCode(P));while(P&&H<l);if(512&d.flags&&(d.check=t(d.check,f,H,h)),l-=H,h+=H,P)break a}else d.head&&(d.head.comment=null);d.mode=9;case 9:if(512&d.flags){for(;16>v;){if(0===l)break a;l--; A+=f[h++]<<v;v+=8}if(A!==(65535&d.check)){b.msg="header crc mismatch";d.mode=30;break}v=A=0}d.head&&(d.head.hcrc=d.flags>>9&1,d.head.done=!0);b.adler=d.check=0;d.mode=12;break;case 10:for(;32>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}b.adler=d.check=e(A);v=A=0;d.mode=11;case 11:if(0===d.havedict)return b.next_out=k,b.avail_out=B,b.next_in=h,b.avail_in=l,d.hold=A,d.bits=v,2;b.adler=d.check=1;d.mode=12;case 12:if(5===c||6===c)break a;case 13:if(d.last){A>>>=7&v;v-=7&v;d.mode=27;break}for(;3>v;){if(0=== -l)break a;l--;A+=f[h++]<<v;v+=8}switch(d.last=1&A,A>>>=1,--v,3&A){case 0:d.mode=14;break;case 1:M=d;if(E){n=new r.Buf32(512);p=new r.Buf32(32);for(N=0;144>N;)M.lens[N++]=8;for(;256>N;)M.lens[N++]=9;for(;280>N;)M.lens[N++]=7;for(;288>N;)M.lens[N++]=8;w(1,M.lens,0,288,n,0,M.work,{bits:9});for(N=0;32>N;)M.lens[N++]=5;w(2,M.lens,0,32,p,0,M.work,{bits:5});E=!1}M.lencode=n;M.lenbits=9;M.distcode=p;M.distbits=5;if(d.mode=20,6===c){A>>>=2;v-=2;break a}break;case 2:d.mode=17;break;case 3:b.msg="invalid block type", -d.mode=30}A>>>=2;v-=2;break;case 14:A>>>=7&v;for(v-=7&v;32>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if((65535&A)!==(A>>>16^65535)){b.msg="invalid stored block lengths";d.mode=30;break}if(d.length=65535&A,A=0,v=0,d.mode=15,6===c)break a;case 15:d.mode=16;case 16:if(G=d.length){if(G>l&&(G=l),G>B&&(G=B),0===G)break a;r.arraySet(g,f,h,G,k);l-=G;h+=G;B-=G;k+=G;d.length-=G;break}d.mode=12;break;case 17:for(;14>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(d.nlen=(31&A)+257,A>>>=5,v-=5,d.ndist=(31&A)+ -1,A>>>=5,v-=5,d.ncode=(15&A)+4,A>>>=4,v-=4,286<d.nlen||30<d.ndist){b.msg="too many length or distance symbols";d.mode=30;break}d.have=0;d.mode=18;case 18:for(;d.have<d.ncode;){for(;3>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}d.lens[fa[d.have++]]=7&A;A>>>=3;v-=3}for(;19>d.have;)d.lens[fa[d.have++]]=0;if(d.lencode=d.lendyn,d.lenbits=7,Y={bits:d.lenbits},T=w(0,d.lens,0,19,d.lencode,0,d.work,Y),d.lenbits=Y.bits,T){b.msg="invalid code lengths set";d.mode=30;break}d.have=0;d.mode=19;case 19:for(;d.have< -d.nlen+d.ndist;){for(;O=d.lencode[A&(1<<d.lenbits)-1],I=O>>>24,M=65535&O,!(I<=v);){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(16>M)A>>>=I,v-=I,d.lens[d.have++]=M;else{if(16===M){for(N=I+2;v<N;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(A>>>=I,v-=I,0===d.have){b.msg="invalid bit length repeat";d.mode=30;break}Q=d.lens[d.have-1];G=3+(3&A);A>>>=2;v-=2}else if(17===M){for(N=I+3;v<N;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}A>>>=I;v-=I;Q=0;G=3+(7&A);A>>>=3;v-=3}else{for(N=I+7;v<N;){if(0===l)break a;l--; -A+=f[h++]<<v;v+=8}A>>>=I;v-=I;Q=0;G=11+(127&A);A>>>=7;v-=7}if(d.have+G>d.nlen+d.ndist){b.msg="invalid bit length repeat";d.mode=30;break}for(;G--;)d.lens[d.have++]=Q}}if(30===d.mode)break;if(0===d.lens[256]){b.msg="invalid code -- missing end-of-block";d.mode=30;break}if(d.lenbits=9,Y={bits:d.lenbits},T=w(1,d.lens,0,d.nlen,d.lencode,0,d.work,Y),d.lenbits=Y.bits,T){b.msg="invalid literal/lengths set";d.mode=30;break}if(d.distbits=6,d.distcode=d.distdyn,Y={bits:d.distbits},T=w(2,d.lens,d.nlen,d.ndist, -d.distcode,0,d.work,Y),d.distbits=Y.bits,T){b.msg="invalid distances set";d.mode=30;break}if(d.mode=20,6===c)break a;case 20:d.mode=21;case 21:if(6<=l&&258<=B){b.next_out=k;b.avail_out=B;b.next_in=h;b.avail_in=l;d.hold=A;d.bits=v;z(b,J);k=b.next_out;g=b.output;B=b.avail_out;h=b.next_in;f=b.input;l=b.avail_in;A=d.hold;v=d.bits;12===d.mode&&(d.back=-1);break}for(d.back=0;O=d.lencode[A&(1<<d.lenbits)-1],I=O>>>24,N=O>>>16&255,M=65535&O,!(I<=v);){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(N&&0===(240&N)){D= -I;F=N;for(S=M;O=d.lencode[S+((A&(1<<D+F)-1)>>D)],I=O>>>24,N=O>>>16&255,M=65535&O,!(D+I<=v);){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}A>>>=D;v-=D;d.back+=D}if(A>>>=I,v-=I,d.back+=I,d.length=M,0===N){d.mode=26;break}if(32&N){d.back=-1;d.mode=12;break}if(64&N){b.msg="invalid literal/length code";d.mode=30;break}d.extra=15&N;d.mode=22;case 22:if(d.extra){for(N=d.extra;v<N;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}d.length+=A&(1<<d.extra)-1;A>>>=d.extra;v-=d.extra;d.back+=d.extra}d.was=d.length;d.mode=23; -case 23:for(;O=d.distcode[A&(1<<d.distbits)-1],I=O>>>24,N=O>>>16&255,M=65535&O,!(I<=v);){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(0===(240&N)){D=I;F=N;for(S=M;O=d.distcode[S+((A&(1<<D+F)-1)>>D)],I=O>>>24,N=O>>>16&255,M=65535&O,!(D+I<=v);){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}A>>>=D;v-=D;d.back+=D}if(A>>>=I,v-=I,d.back+=I,64&N){b.msg="invalid distance code";d.mode=30;break}d.offset=M;d.extra=15&N;d.mode=24;case 24:if(d.extra){for(N=d.extra;v<N;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}d.offset+= -A&(1<<d.extra)-1;A>>>=d.extra;v-=d.extra;d.back+=d.extra}if(d.offset>d.dmax){b.msg="invalid distance too far back";d.mode=30;break}d.mode=25;case 25:if(0===B)break a;if(G=J-B,d.offset>G){if(G=d.offset-G,G>d.whave&&d.sane){b.msg="invalid distance too far back";d.mode=30;break}G>d.wnext?(G-=d.wnext,da=d.wsize-G):da=d.wnext-G;G>d.length&&(G=d.length);N=d.window}else N=g,da=k-d.offset,G=d.length;G>B&&(G=B);B-=G;d.length-=G;do g[k++]=N[da++];while(--G);0===d.length&&(d.mode=21);break;case 26:if(0===B)break a; -g[k++]=d.length;B--;d.mode=21;break;case 27:if(d.wrap){for(;32>v;){if(0===l)break a;l--;A|=f[h++]<<v;v+=8}if(J-=B,b.total_out+=J,d.total+=J,J&&(b.adler=d.check=d.flags?t(d.check,g,J,k-J):q(d.check,g,J,k-J)),J=B,(d.flags?A:e(A))!==d.check){b.msg="incorrect data check";d.mode=30;break}v=A=0}d.mode=28;case 28:if(d.wrap&&d.flags){for(;32>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(A!==(4294967295&d.total)){b.msg="incorrect length check";d.mode=30;break}v=A=0}d.mode=29;case 29:T=1;break a;case 30:T= --3;break a;case 31:return-4;default:return y}return b.next_out=k,b.avail_out=B,b.next_in=h,b.avail_in=l,d.hold=A,d.bits=v,(d.wsize||J!==b.avail_out&&30>d.mode&&(27>d.mode||4!==c))&&m(b,b.output,b.next_out,J-b.avail_out)?(d.mode=31,-4):(P-=b.avail_in,J-=b.avail_out,b.total_in+=P,b.total_out+=J,d.total+=J,d.wrap&&J&&(b.adler=d.check=d.flags?t(d.check,g,J,b.next_out-J):q(d.check,g,J,b.next_out-J)),b.data_type=d.bits+(d.last?64:0)+(12===d.mode?128:0)+(20===d.mode||15===d.mode?256:0),(0===P&&0===J||4=== -c)&&T===x&&(T=-5),T)};d.inflateEnd=function(b){if(!b||!b.state)return y;var c=b.state;return c.window&&(c.window=null),b.state=null,x};d.inflateGetHeader=function(b,c){var d;return b&&b.state?(d=b.state,0===(2&d.wrap)?y:(d.head=c,c.done=!1,x)):y};d.inflateSetDictionary=function(b,c){var d,e,f=c.length;return b&&b.state?(d=b.state,0!==d.wrap&&11!==d.mode?y:11===d.mode&&(e=1,e=q(e,c,f,0),e!==d.check)?-3:m(b,c,f,f)?(d.mode=31,-4):(d.havedict=1,x)):y};d.inflateInfo="pako inflate (from Nodeca project)"}, +l)break a;l--;A+=f[h++]<<v;v+=8}switch(d.last=1&A,A>>>=1,--v,3&A){case 0:d.mode=14;break;case 1:M=d;if(E){n=new r.Buf32(512);p=new r.Buf32(32);for(N=0;144>N;)M.lens[N++]=8;for(;256>N;)M.lens[N++]=9;for(;280>N;)M.lens[N++]=7;for(;288>N;)M.lens[N++]=8;x(1,M.lens,0,288,n,0,M.work,{bits:9});for(N=0;32>N;)M.lens[N++]=5;x(2,M.lens,0,32,p,0,M.work,{bits:5});E=!1}M.lencode=n;M.lenbits=9;M.distcode=p;M.distbits=5;if(d.mode=20,6===c){A>>>=2;v-=2;break a}break;case 2:d.mode=17;break;case 3:b.msg="invalid block type", +d.mode=30}A>>>=2;v-=2;break;case 14:A>>>=7&v;for(v-=7&v;32>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if((65535&A)!==(A>>>16^65535)){b.msg="invalid stored block lengths";d.mode=30;break}if(d.length=65535&A,A=0,v=0,d.mode=15,6===c)break a;case 15:d.mode=16;case 16:if(H=d.length){if(H>l&&(H=l),H>B&&(H=B),0===H)break a;r.arraySet(g,f,h,H,k);l-=H;h+=H;B-=H;k+=H;d.length-=H;break}d.mode=12;break;case 17:for(;14>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(d.nlen=(31&A)+257,A>>>=5,v-=5,d.ndist=(31&A)+ +1,A>>>=5,v-=5,d.ncode=(15&A)+4,A>>>=4,v-=4,286<d.nlen||30<d.ndist){b.msg="too many length or distance symbols";d.mode=30;break}d.have=0;d.mode=18;case 18:for(;d.have<d.ncode;){for(;3>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}d.lens[fa[d.have++]]=7&A;A>>>=3;v-=3}for(;19>d.have;)d.lens[fa[d.have++]]=0;if(d.lencode=d.lendyn,d.lenbits=7,Z={bits:d.lenbits},T=x(0,d.lens,0,19,d.lencode,0,d.work,Z),d.lenbits=Z.bits,T){b.msg="invalid code lengths set";d.mode=30;break}d.have=0;d.mode=19;case 19:for(;d.have< +d.nlen+d.ndist;){for(;O=d.lencode[A&(1<<d.lenbits)-1],J=O>>>24,M=65535&O,!(J<=v);){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(16>M)A>>>=J,v-=J,d.lens[d.have++]=M;else{if(16===M){for(N=J+2;v<N;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(A>>>=J,v-=J,0===d.have){b.msg="invalid bit length repeat";d.mode=30;break}P=d.lens[d.have-1];H=3+(3&A);A>>>=2;v-=2}else if(17===M){for(N=J+3;v<N;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}A>>>=J;v-=J;P=0;H=3+(7&A);A>>>=3;v-=3}else{for(N=J+7;v<N;){if(0===l)break a;l--; +A+=f[h++]<<v;v+=8}A>>>=J;v-=J;P=0;H=11+(127&A);A>>>=7;v-=7}if(d.have+H>d.nlen+d.ndist){b.msg="invalid bit length repeat";d.mode=30;break}for(;H--;)d.lens[d.have++]=P}}if(30===d.mode)break;if(0===d.lens[256]){b.msg="invalid code -- missing end-of-block";d.mode=30;break}if(d.lenbits=9,Z={bits:d.lenbits},T=x(1,d.lens,0,d.nlen,d.lencode,0,d.work,Z),d.lenbits=Z.bits,T){b.msg="invalid literal/lengths set";d.mode=30;break}if(d.distbits=6,d.distcode=d.distdyn,Z={bits:d.distbits},T=x(2,d.lens,d.nlen,d.ndist, +d.distcode,0,d.work,Z),d.distbits=Z.bits,T){b.msg="invalid distances set";d.mode=30;break}if(d.mode=20,6===c)break a;case 20:d.mode=21;case 21:if(6<=l&&258<=B){b.next_out=k;b.avail_out=B;b.next_in=h;b.avail_in=l;d.hold=A;d.bits=v;z(b,G);k=b.next_out;g=b.output;B=b.avail_out;h=b.next_in;f=b.input;l=b.avail_in;A=d.hold;v=d.bits;12===d.mode&&(d.back=-1);break}for(d.back=0;O=d.lencode[A&(1<<d.lenbits)-1],J=O>>>24,N=O>>>16&255,M=65535&O,!(J<=v);){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(N&&0===(240&N)){D= +J;F=N;for(S=M;O=d.lencode[S+((A&(1<<D+F)-1)>>D)],J=O>>>24,N=O>>>16&255,M=65535&O,!(D+J<=v);){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}A>>>=D;v-=D;d.back+=D}if(A>>>=J,v-=J,d.back+=J,d.length=M,0===N){d.mode=26;break}if(32&N){d.back=-1;d.mode=12;break}if(64&N){b.msg="invalid literal/length code";d.mode=30;break}d.extra=15&N;d.mode=22;case 22:if(d.extra){for(N=d.extra;v<N;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}d.length+=A&(1<<d.extra)-1;A>>>=d.extra;v-=d.extra;d.back+=d.extra}d.was=d.length;d.mode=23; +case 23:for(;O=d.distcode[A&(1<<d.distbits)-1],J=O>>>24,N=O>>>16&255,M=65535&O,!(J<=v);){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(0===(240&N)){D=J;F=N;for(S=M;O=d.distcode[S+((A&(1<<D+F)-1)>>D)],J=O>>>24,N=O>>>16&255,M=65535&O,!(D+J<=v);){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}A>>>=D;v-=D;d.back+=D}if(A>>>=J,v-=J,d.back+=J,64&N){b.msg="invalid distance code";d.mode=30;break}d.offset=M;d.extra=15&N;d.mode=24;case 24:if(d.extra){for(N=d.extra;v<N;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}d.offset+= +A&(1<<d.extra)-1;A>>>=d.extra;v-=d.extra;d.back+=d.extra}if(d.offset>d.dmax){b.msg="invalid distance too far back";d.mode=30;break}d.mode=25;case 25:if(0===B)break a;if(H=G-B,d.offset>H){if(H=d.offset-H,H>d.whave&&d.sane){b.msg="invalid distance too far back";d.mode=30;break}H>d.wnext?(H-=d.wnext,da=d.wsize-H):da=d.wnext-H;H>d.length&&(H=d.length);N=d.window}else N=g,da=k-d.offset,H=d.length;H>B&&(H=B);B-=H;d.length-=H;do g[k++]=N[da++];while(--H);0===d.length&&(d.mode=21);break;case 26:if(0===B)break a; +g[k++]=d.length;B--;d.mode=21;break;case 27:if(d.wrap){for(;32>v;){if(0===l)break a;l--;A|=f[h++]<<v;v+=8}if(G-=B,b.total_out+=G,d.total+=G,G&&(b.adler=d.check=d.flags?t(d.check,g,G,k-G):q(d.check,g,G,k-G)),G=B,(d.flags?A:e(A))!==d.check){b.msg="incorrect data check";d.mode=30;break}v=A=0}d.mode=28;case 28:if(d.wrap&&d.flags){for(;32>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(A!==(4294967295&d.total)){b.msg="incorrect length check";d.mode=30;break}v=A=0}d.mode=29;case 29:T=1;break a;case 30:T= +-3;break a;case 31:return-4;default:return y}return b.next_out=k,b.avail_out=B,b.next_in=h,b.avail_in=l,d.hold=A,d.bits=v,(d.wsize||G!==b.avail_out&&30>d.mode&&(27>d.mode||4!==c))&&m(b,b.output,b.next_out,G-b.avail_out)?(d.mode=31,-4):(Q-=b.avail_in,G-=b.avail_out,b.total_in+=Q,b.total_out+=G,d.total+=G,d.wrap&&G&&(b.adler=d.check=d.flags?t(d.check,g,G,b.next_out-G):q(d.check,g,G,b.next_out-G)),b.data_type=d.bits+(d.last?64:0)+(12===d.mode?128:0)+(20===d.mode||15===d.mode?256:0),(0===Q&&0===G||4=== +c)&&T===w&&(T=-5),T)};d.inflateEnd=function(b){if(!b||!b.state)return y;var c=b.state;return c.window&&(c.window=null),b.state=null,w};d.inflateGetHeader=function(b,c){var d;return b&&b.state?(d=b.state,0===(2&d.wrap)?y:(d.head=c,c.done=!1,w)):y};d.inflateSetDictionary=function(b,c){var d,e,f=c.length;return b&&b.state?(d=b.state,0!==d.wrap&&11!==d.mode?y:11===d.mode&&(e=1,e=q(e,c,f,0),e!==d.check)?-3:m(b,c,f,f)?(d.mode=31,-4):(d.havedict=1,w)):y};d.inflateInfo="pako inflate (from Nodeca project)"}, {"../utils/common":3,"./adler32":5,"./crc32":7,"./inffast":10,"./inftrees":12}],12:[function(b,c,d){var e=b("../utils/common"),f=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],g=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],h=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],k=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24, -25,25,26,26,27,27,28,28,29,29,64,64];c.exports=function(b,c,d,p,r,q,t,z){var l,m,n,u,D,F,E,B,A=z.bits,C,L,K,H,V,U,ca=0,W,v=null,P=0,J=new e.Buf16(16);u=new e.Buf16(16);var G=null,da=0;for(C=0;15>=C;C++)J[C]=0;for(L=0;L<p;L++)J[c[d+L]]++;H=A;for(K=15;1<=K&&0===J[K];K--);if(H>K&&(H=K),0===K)return r[q++]=20971520,r[q++]=20971520,z.bits=1,0;for(A=1;A<K&&0===J[A];A++);H<A&&(H=A);for(C=l=1;15>=C;C++)if(l<<=1,l-=J[C],0>l)return-1;if(0<l&&(0===b||1!==K))return-1;u[1]=0;for(C=1;15>C;C++)u[C+1]=u[C]+J[C]; -for(L=0;L<p;L++)0!==c[d+L]&&(t[u[c[d+L]]++]=L);if(0===b?(v=G=t,D=19):1===b?(v=f,P-=257,G=g,da-=257,D=256):(v=h,G=k,D=-1),W=0,L=0,C=A,u=q,V=H,U=0,n=-1,ca=1<<H,p=ca-1,1===b&&852<ca||2===b&&592<ca)return 1;for(var N=0;;){N++;F=C-U;t[L]<D?(E=0,B=t[L]):t[L]>D?(E=G[da+t[L]],B=v[P+t[L]]):(E=96,B=0);l=1<<C-U;A=m=1<<V;do m-=l,r[u+(W>>U)+m]=F<<24|E<<16|B|0;while(0!==m);for(l=1<<C-1;W&l;)l>>=1;if(0!==l?(W&=l-1,W+=l):W=0,L++,0===--J[C]){if(C===K)break;C=c[d+t[L]]}if(C>H&&(W&p)!==n){0===U&&(U=H);u+=A;V=C-U;for(l= -1<<V;V+U<K&&(l-=J[V+U],!(0>=l));)V++,l<<=1;if(ca+=1<<V,1===b&&852<ca||2===b&&592<ca)return 1;n=W&p;r[n]=H<<24|V<<16|u-q|0}}return 0!==W&&(r[u+W]=C-U<<24|4194304),z.bits=H,0}},{"../utils/common":3}],13:[function(b,c,d){c.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],14:[function(b,c,d){function e(b){for(var c=b.length;0<=--c;)b[c]=0}function f(b,c,d,e,f){this.static_tree= +25,25,26,26,27,27,28,28,29,29,64,64];c.exports=function(b,c,d,p,r,q,t,z){var l,m,n,u,D,F,E,B,A=z.bits,C,L,K,I,V,U,ca=0,W,v=null,Q=0,G=new e.Buf16(16);u=new e.Buf16(16);var H=null,da=0;for(C=0;15>=C;C++)G[C]=0;for(L=0;L<p;L++)G[c[d+L]]++;I=A;for(K=15;1<=K&&0===G[K];K--);if(I>K&&(I=K),0===K)return r[q++]=20971520,r[q++]=20971520,z.bits=1,0;for(A=1;A<K&&0===G[A];A++);I<A&&(I=A);for(C=l=1;15>=C;C++)if(l<<=1,l-=G[C],0>l)return-1;if(0<l&&(0===b||1!==K))return-1;u[1]=0;for(C=1;15>C;C++)u[C+1]=u[C]+G[C]; +for(L=0;L<p;L++)0!==c[d+L]&&(t[u[c[d+L]]++]=L);if(0===b?(v=H=t,D=19):1===b?(v=f,Q-=257,H=g,da-=257,D=256):(v=h,H=k,D=-1),W=0,L=0,C=A,u=q,V=I,U=0,n=-1,ca=1<<I,p=ca-1,1===b&&852<ca||2===b&&592<ca)return 1;for(var N=0;;){N++;F=C-U;t[L]<D?(E=0,B=t[L]):t[L]>D?(E=H[da+t[L]],B=v[Q+t[L]]):(E=96,B=0);l=1<<C-U;A=m=1<<V;do m-=l,r[u+(W>>U)+m]=F<<24|E<<16|B|0;while(0!==m);for(l=1<<C-1;W&l;)l>>=1;if(0!==l?(W&=l-1,W+=l):W=0,L++,0===--G[C]){if(C===K)break;C=c[d+t[L]]}if(C>I&&(W&p)!==n){0===U&&(U=I);u+=A;V=C-U;for(l= +1<<V;V+U<K&&(l-=G[V+U],!(0>=l));)V++,l<<=1;if(ca+=1<<V,1===b&&852<ca||2===b&&592<ca)return 1;n=W&p;r[n]=I<<24|V<<16|u-q|0}}return 0!==W&&(r[u+W]=C-U<<24|4194304),z.bits=I,0}},{"../utils/common":3}],13:[function(b,c,d){c.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],14:[function(b,c,d){function e(b){for(var c=b.length;0<=--c;)b[c]=0}function f(b,c,d,e,f){this.static_tree= b;this.extra_bits=c;this.extra_base=d;this.elems=e;this.max_length=f;this.has_stree=b&&b.length}function g(b,c){this.dyn_tree=b;this.max_code=0;this.stat_desc=c}function h(b,c){b.pending_buf[b.pending++]=255&c;b.pending_buf[b.pending++]=c>>>8&255}function k(b,c,d){b.bi_valid>ca-d?(b.bi_buf|=c<<b.bi_valid&65535,h(b,b.bi_buf),b.bi_buf=c>>ca-b.bi_valid,b.bi_valid+=d-ca):(b.bi_buf|=c<<b.bi_valid&65535,b.bi_valid+=d)}function l(b,c,d){k(b,d[2*c],d[2*c+1])}function m(b,c){var d=0;do d|=1&b,b>>>=1,d<<=1; -while(0<--c);return d>>>1}function n(b,c,d){var e,f=Array(U+1),g=0;for(e=1;e<=U;e++)f[e]=g=g+d[e-1]<<1;for(d=0;d<=c;d++)e=b[2*d+1],0!==e&&(b[2*d]=m(f[e]++,e))}function p(b){var c;for(c=0;c<L;c++)b.dyn_ltree[2*c]=0;for(c=0;c<K;c++)b.dyn_dtree[2*c]=0;for(c=0;c<H;c++)b.bl_tree[2*c]=0;b.dyn_ltree[2*W]=1;b.opt_len=b.static_len=0;b.last_lit=b.matches=0}function r(b){8<b.bi_valid?h(b,b.bi_buf):0<b.bi_valid&&(b.pending_buf[b.pending++]=b.bi_buf);b.bi_buf=0;b.bi_valid=0}function q(b,c,d,e){var f=2*c,g=2*d; -return b[f]<b[g]||b[f]===b[g]&&e[c]<=e[d]}function t(b,c,d){for(var e=b.heap[d],f=d<<1;f<=b.heap_len&&(f<b.heap_len&&q(c,b.heap[f+1],b.heap[f],b.depth)&&f++,!q(c,e,b.heap[f],b.depth));)b.heap[d]=b.heap[f],d=f,f<<=1;b.heap[d]=e}function z(b,c,d){var e,f,g,h,m=0;if(0!==b.last_lit){do e=b.pending_buf[b.d_buf+2*m]<<8|b.pending_buf[b.d_buf+2*m+1],f=b.pending_buf[b.l_buf+m],m++,0===e?l(b,f,c):(g=S[f],l(b,g+C+1,c),h=G[g],0!==h&&(f-=Q[g],k(b,f,h)),e--,g=256>e?ea[e]:ea[256+(e>>>7)],l(b,g,d),h=da[g],0!==h&& -(e-=T[g],k(b,e,h)));while(m<b.last_lit)}l(b,W,c)}function w(b,c){var d,e,f,g=c.dyn_tree;e=c.stat_desc.static_tree;var h=c.stat_desc.has_stree,k=c.stat_desc.elems,l=-1;b.heap_len=0;b.heap_max=V;for(d=0;d<k;d++)0!==g[2*d]?(b.heap[++b.heap_len]=l=d,b.depth[d]=0):g[2*d+1]=0;for(;2>b.heap_len;)f=b.heap[++b.heap_len]=2>l?++l:0,g[2*f]=1,b.depth[f]=0,b.opt_len--,h&&(b.static_len-=e[2*f+1]);c.max_code=l;for(d=b.heap_len>>1;1<=d;d--)t(b,g,d);f=k;do d=b.heap[1],b.heap[1]=b.heap[b.heap_len--],t(b,g,1),e=b.heap[1], -b.heap[--b.heap_max]=d,b.heap[--b.heap_max]=e,g[2*f]=g[2*d]+g[2*e],b.depth[f]=(b.depth[d]>=b.depth[e]?b.depth[d]:b.depth[e])+1,g[2*d+1]=g[2*e+1]=f,b.heap[1]=f++,t(b,g,1);while(2<=b.heap_len);b.heap[--b.heap_max]=b.heap[1];var m,v,h=c.dyn_tree,k=c.max_code,p=c.stat_desc.static_tree,q=c.stat_desc.has_stree,r=c.stat_desc.extra_bits,J=c.stat_desc.extra_base,P=c.stat_desc.max_length,G=0;for(e=0;e<=U;e++)b.bl_count[e]=0;h[2*b.heap[b.heap_max]+1]=0;for(d=b.heap_max+1;d<V;d++)f=b.heap[d],e=h[2*h[2*f+1]+1]+ -1,e>P&&(e=P,G++),h[2*f+1]=e,f>k||(b.bl_count[e]++,m=0,f>=J&&(m=r[f-J]),v=h[2*f],b.opt_len+=v*(e+m),q&&(b.static_len+=v*(p[2*f+1]+m)));if(0!==G){do{for(e=P-1;0===b.bl_count[e];)e--;b.bl_count[e]--;b.bl_count[e+1]+=2;b.bl_count[P]--;G-=2}while(0<G);for(e=P;0!==e;e--)for(f=b.bl_count[e];0!==f;)m=b.heap[--d],m>k||(h[2*m+1]!==e&&(b.opt_len+=(e-h[2*m+1])*h[2*m],h[2*m+1]=e),f--)}n(g,l,b.bl_count)}function x(b,c,d){var e,f,g=-1,h=c[1],k=0,l=7,m=4;0===h&&(l=138,m=3);c[2*(d+1)+1]=65535;for(e=0;e<=d;e++)f=h, -h=c[2*(e+1)+1],++k<l&&f===h||(k<m?b.bl_tree[2*f]+=k:0!==f?(f!==g&&b.bl_tree[2*f]++,b.bl_tree[2*v]++):10>=k?b.bl_tree[2*P]++:b.bl_tree[2*J]++,k=0,g=f,0===h?(l=138,m=3):f===h?(l=6,m=3):(l=7,m=4))}function y(b,c,d){var e,f,g=-1,h=c[1],m=0,n=7,p=4;0===h&&(n=138,p=3);for(e=0;e<=d;e++)if(f=h,h=c[2*(e+1)+1],!(++m<n&&f===h)){if(m<p){do l(b,f,b.bl_tree);while(0!==--m)}else 0!==f?(f!==g&&(l(b,f,b.bl_tree),m--),l(b,v,b.bl_tree),k(b,m-3,2)):10>=m?(l(b,P,b.bl_tree),k(b,m-3,3)):(l(b,J,b.bl_tree),k(b,m-11,7));m= -0;g=f;0===h?(n=138,p=3):f===h?(n=6,p=3):(n=7,p=4)}}function u(b){var c,d=4093624447;for(c=0;31>=c;c++,d>>>=1)if(1&d&&0!==b.dyn_ltree[2*c])return E;if(0!==b.dyn_ltree[18]||0!==b.dyn_ltree[20]||0!==b.dyn_ltree[26])return B;for(c=32;c<C;c++)if(0!==b.dyn_ltree[2*c])return B;return E}function D(b,c,d,e){k(b,(A<<1)+(e?1:0),3);r(b);h(b,d);h(b,~d);F.arraySet(b.pending_buf,b.window,c,d,b.pending);b.pending+=d}var F=b("../utils/common"),E=0,B=1,A=0,C=256,L=C+1+29,K=30,H=19,V=2*L+1,U=15,ca=16,W=256,v=16,P=17, -J=18,G=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],da=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],N=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],I=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],M=Array(2*(L+2));e(M);var aa=Array(2*K);e(aa);var ea=Array(512);e(ea);var S=Array(256);e(S);var Q=Array(29);e(Q);var T=Array(K);e(T);var Y,O,R,fa=!1;d._tr_init=function(b){if(!fa){var c,d,e,h=Array(U+1);for(e=d=0;28>e;e++)for(Q[e]=d,c=0;c<1<<G[e];c++)S[d++]=e;S[d-1]=e; -for(e=d=0;16>e;e++)for(T[e]=d,c=0;c<1<<da[e];c++)ea[d++]=e;for(d>>=7;e<K;e++)for(T[e]=d<<7,c=0;c<1<<da[e]-7;c++)ea[256+d++]=e;for(c=0;c<=U;c++)h[c]=0;for(c=0;143>=c;)M[2*c+1]=8,c++,h[8]++;for(;255>=c;)M[2*c+1]=9,c++,h[9]++;for(;279>=c;)M[2*c+1]=7,c++,h[7]++;for(;287>=c;)M[2*c+1]=8,c++,h[8]++;n(M,L+1,h);for(c=0;c<K;c++)aa[2*c+1]=5,aa[2*c]=m(c,5);Y=new f(M,G,C+1,L,U);O=new f(aa,da,0,K,U);R=new f([],N,0,H,7);fa=!0}b.l_desc=new g(b.dyn_ltree,Y);b.d_desc=new g(b.dyn_dtree,O);b.bl_desc=new g(b.bl_tree, -R);b.bi_buf=0;b.bi_valid=0;p(b)};d._tr_stored_block=D;d._tr_flush_block=function(b,c,d,e){var f,g,h=0;if(0<b.level){2===b.strm.data_type&&(b.strm.data_type=u(b));w(b,b.l_desc);w(b,b.d_desc);x(b,b.dyn_ltree,b.l_desc.max_code);x(b,b.dyn_dtree,b.d_desc.max_code);w(b,b.bl_desc);for(h=H-1;3<=h&&0===b.bl_tree[2*I[h]+1];h--);h=(b.opt_len+=3*(h+1)+14,h);f=b.opt_len+3+7>>>3;g=b.static_len+3+7>>>3;g<=f&&(f=g)}else f=g=d+5;if(d+4<=f&&-1!==c)D(b,c,d,e);else if(4===b.strategy||g===f)k(b,2+(e?1:0),3),z(b,M,aa); -else{k(b,4+(e?1:0),3);c=b.l_desc.max_code+1;d=b.d_desc.max_code+1;h+=1;k(b,c-257,5);k(b,d-1,5);k(b,h-4,4);for(f=0;f<h;f++)k(b,b.bl_tree[2*I[f]+1],3);y(b,b.dyn_ltree,c-1);y(b,b.dyn_dtree,d-1);z(b,b.dyn_ltree,b.dyn_dtree)}p(b);e&&r(b)};d._tr_tally=function(b,c,d){return b.pending_buf[b.d_buf+2*b.last_lit]=c>>>8&255,b.pending_buf[b.d_buf+2*b.last_lit+1]=255&c,b.pending_buf[b.l_buf+b.last_lit]=255&d,b.last_lit++,0===c?b.dyn_ltree[2*d]++:(b.matches++,c--,b.dyn_ltree[2*(S[d]+C+1)]++,b.dyn_dtree[2*(256> +while(0<--c);return d>>>1}function n(b,c,d){var e,f=Array(U+1),g=0;for(e=1;e<=U;e++)f[e]=g=g+d[e-1]<<1;for(d=0;d<=c;d++)e=b[2*d+1],0!==e&&(b[2*d]=m(f[e]++,e))}function p(b){var c;for(c=0;c<L;c++)b.dyn_ltree[2*c]=0;for(c=0;c<K;c++)b.dyn_dtree[2*c]=0;for(c=0;c<I;c++)b.bl_tree[2*c]=0;b.dyn_ltree[2*W]=1;b.opt_len=b.static_len=0;b.last_lit=b.matches=0}function r(b){8<b.bi_valid?h(b,b.bi_buf):0<b.bi_valid&&(b.pending_buf[b.pending++]=b.bi_buf);b.bi_buf=0;b.bi_valid=0}function q(b,c,d,e){var f=2*c,g=2*d; +return b[f]<b[g]||b[f]===b[g]&&e[c]<=e[d]}function t(b,c,d){for(var e=b.heap[d],f=d<<1;f<=b.heap_len&&(f<b.heap_len&&q(c,b.heap[f+1],b.heap[f],b.depth)&&f++,!q(c,e,b.heap[f],b.depth));)b.heap[d]=b.heap[f],d=f,f<<=1;b.heap[d]=e}function z(b,c,d){var e,f,g,h,m=0;if(0!==b.last_lit){do e=b.pending_buf[b.d_buf+2*m]<<8|b.pending_buf[b.d_buf+2*m+1],f=b.pending_buf[b.l_buf+m],m++,0===e?l(b,f,c):(g=S[f],l(b,g+C+1,c),h=H[g],0!==h&&(f-=P[g],k(b,f,h)),e--,g=256>e?ea[e]:ea[256+(e>>>7)],l(b,g,d),h=da[g],0!==h&& +(e-=T[g],k(b,e,h)));while(m<b.last_lit)}l(b,W,c)}function x(b,c){var d,e,f,g=c.dyn_tree;e=c.stat_desc.static_tree;var h=c.stat_desc.has_stree,k=c.stat_desc.elems,l=-1;b.heap_len=0;b.heap_max=V;for(d=0;d<k;d++)0!==g[2*d]?(b.heap[++b.heap_len]=l=d,b.depth[d]=0):g[2*d+1]=0;for(;2>b.heap_len;)f=b.heap[++b.heap_len]=2>l?++l:0,g[2*f]=1,b.depth[f]=0,b.opt_len--,h&&(b.static_len-=e[2*f+1]);c.max_code=l;for(d=b.heap_len>>1;1<=d;d--)t(b,g,d);f=k;do d=b.heap[1],b.heap[1]=b.heap[b.heap_len--],t(b,g,1),e=b.heap[1], +b.heap[--b.heap_max]=d,b.heap[--b.heap_max]=e,g[2*f]=g[2*d]+g[2*e],b.depth[f]=(b.depth[d]>=b.depth[e]?b.depth[d]:b.depth[e])+1,g[2*d+1]=g[2*e+1]=f,b.heap[1]=f++,t(b,g,1);while(2<=b.heap_len);b.heap[--b.heap_max]=b.heap[1];var m,v,h=c.dyn_tree,k=c.max_code,p=c.stat_desc.static_tree,q=c.stat_desc.has_stree,r=c.stat_desc.extra_bits,Q=c.stat_desc.extra_base,G=c.stat_desc.max_length,H=0;for(e=0;e<=U;e++)b.bl_count[e]=0;h[2*b.heap[b.heap_max]+1]=0;for(d=b.heap_max+1;d<V;d++)f=b.heap[d],e=h[2*h[2*f+1]+1]+ +1,e>G&&(e=G,H++),h[2*f+1]=e,f>k||(b.bl_count[e]++,m=0,f>=Q&&(m=r[f-Q]),v=h[2*f],b.opt_len+=v*(e+m),q&&(b.static_len+=v*(p[2*f+1]+m)));if(0!==H){do{for(e=G-1;0===b.bl_count[e];)e--;b.bl_count[e]--;b.bl_count[e+1]+=2;b.bl_count[G]--;H-=2}while(0<H);for(e=G;0!==e;e--)for(f=b.bl_count[e];0!==f;)m=b.heap[--d],m>k||(h[2*m+1]!==e&&(b.opt_len+=(e-h[2*m+1])*h[2*m],h[2*m+1]=e),f--)}n(g,l,b.bl_count)}function w(b,c,d){var e,f,g=-1,h=c[1],k=0,l=7,m=4;0===h&&(l=138,m=3);c[2*(d+1)+1]=65535;for(e=0;e<=d;e++)f=h, +h=c[2*(e+1)+1],++k<l&&f===h||(k<m?b.bl_tree[2*f]+=k:0!==f?(f!==g&&b.bl_tree[2*f]++,b.bl_tree[2*v]++):10>=k?b.bl_tree[2*Q]++:b.bl_tree[2*G]++,k=0,g=f,0===h?(l=138,m=3):f===h?(l=6,m=3):(l=7,m=4))}function y(b,c,d){var e,f,g=-1,h=c[1],m=0,n=7,p=4;0===h&&(n=138,p=3);for(e=0;e<=d;e++)if(f=h,h=c[2*(e+1)+1],!(++m<n&&f===h)){if(m<p){do l(b,f,b.bl_tree);while(0!==--m)}else 0!==f?(f!==g&&(l(b,f,b.bl_tree),m--),l(b,v,b.bl_tree),k(b,m-3,2)):10>=m?(l(b,Q,b.bl_tree),k(b,m-3,3)):(l(b,G,b.bl_tree),k(b,m-11,7));m= +0;g=f;0===h?(n=138,p=3):f===h?(n=6,p=3):(n=7,p=4)}}function u(b){var c,d=4093624447;for(c=0;31>=c;c++,d>>>=1)if(1&d&&0!==b.dyn_ltree[2*c])return E;if(0!==b.dyn_ltree[18]||0!==b.dyn_ltree[20]||0!==b.dyn_ltree[26])return B;for(c=32;c<C;c++)if(0!==b.dyn_ltree[2*c])return B;return E}function D(b,c,d,e){k(b,(A<<1)+(e?1:0),3);r(b);h(b,d);h(b,~d);F.arraySet(b.pending_buf,b.window,c,d,b.pending);b.pending+=d}var F=b("../utils/common"),E=0,B=1,A=0,C=256,L=C+1+29,K=30,I=19,V=2*L+1,U=15,ca=16,W=256,v=16,Q=17, +G=18,H=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],da=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],N=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],J=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],M=Array(2*(L+2));e(M);var aa=Array(2*K);e(aa);var ea=Array(512);e(ea);var S=Array(256);e(S);var P=Array(29);e(P);var T=Array(K);e(T);var Z,O,R,fa=!1;d._tr_init=function(b){if(!fa){var c,d,e,h=Array(U+1);for(e=d=0;28>e;e++)for(P[e]=d,c=0;c<1<<H[e];c++)S[d++]=e;S[d-1]=e; +for(e=d=0;16>e;e++)for(T[e]=d,c=0;c<1<<da[e];c++)ea[d++]=e;for(d>>=7;e<K;e++)for(T[e]=d<<7,c=0;c<1<<da[e]-7;c++)ea[256+d++]=e;for(c=0;c<=U;c++)h[c]=0;for(c=0;143>=c;)M[2*c+1]=8,c++,h[8]++;for(;255>=c;)M[2*c+1]=9,c++,h[9]++;for(;279>=c;)M[2*c+1]=7,c++,h[7]++;for(;287>=c;)M[2*c+1]=8,c++,h[8]++;n(M,L+1,h);for(c=0;c<K;c++)aa[2*c+1]=5,aa[2*c]=m(c,5);Z=new f(M,H,C+1,L,U);O=new f(aa,da,0,K,U);R=new f([],N,0,I,7);fa=!0}b.l_desc=new g(b.dyn_ltree,Z);b.d_desc=new g(b.dyn_dtree,O);b.bl_desc=new g(b.bl_tree, +R);b.bi_buf=0;b.bi_valid=0;p(b)};d._tr_stored_block=D;d._tr_flush_block=function(b,c,d,e){var f,g,h=0;if(0<b.level){2===b.strm.data_type&&(b.strm.data_type=u(b));x(b,b.l_desc);x(b,b.d_desc);w(b,b.dyn_ltree,b.l_desc.max_code);w(b,b.dyn_dtree,b.d_desc.max_code);x(b,b.bl_desc);for(h=I-1;3<=h&&0===b.bl_tree[2*J[h]+1];h--);h=(b.opt_len+=3*(h+1)+14,h);f=b.opt_len+3+7>>>3;g=b.static_len+3+7>>>3;g<=f&&(f=g)}else f=g=d+5;if(d+4<=f&&-1!==c)D(b,c,d,e);else if(4===b.strategy||g===f)k(b,2+(e?1:0),3),z(b,M,aa); +else{k(b,4+(e?1:0),3);c=b.l_desc.max_code+1;d=b.d_desc.max_code+1;h+=1;k(b,c-257,5);k(b,d-1,5);k(b,h-4,4);for(f=0;f<h;f++)k(b,b.bl_tree[2*J[f]+1],3);y(b,b.dyn_ltree,c-1);y(b,b.dyn_dtree,d-1);z(b,b.dyn_ltree,b.dyn_dtree)}p(b);e&&r(b)};d._tr_tally=function(b,c,d){return b.pending_buf[b.d_buf+2*b.last_lit]=c>>>8&255,b.pending_buf[b.d_buf+2*b.last_lit+1]=255&c,b.pending_buf[b.l_buf+b.last_lit]=255&d,b.last_lit++,0===c?b.dyn_ltree[2*d]++:(b.matches++,c--,b.dyn_ltree[2*(S[d]+C+1)]++,b.dyn_dtree[2*(256> c?ea[c]:ea[256+(c>>>7)])]++),b.last_lit===b.lit_bufsize-1};d._tr_align=function(b){k(b,2,3);l(b,W,M);16===b.bi_valid?(h(b,b.bi_buf),b.bi_buf=0,b.bi_valid=0):8<=b.bi_valid&&(b.pending_buf[b.pending++]=255&b.bi_buf,b.bi_buf>>=8,b.bi_valid-=8)}},{"../utils/common":3}],15:[function(b,c,d){c.exports=function(){this.input=null;this.total_in=this.avail_in=this.next_in=0;this.output=null;this.total_out=this.avail_out=this.next_out=0;this.msg="";this.state=null;this.data_type=2;this.adler=0}},{}],"/":[function(b, c,d){d=b("./lib/utils/common").assign;var e=b("./lib/deflate"),f=b("./lib/inflate");b=b("./lib/zlib/constants");var g={};d(g,e,f,b);c.exports=g},{"./lib/deflate":1,"./lib/inflate":2,"./lib/utils/common":3,"./lib/zlib/constants":6}]},{},[])("/")});var JSON;JSON||(JSON={}); -(function(){function a(a){return 10>a?"0"+a:a}function b(a){e.lastIndex=0;return e.test(a)?'"'+a.replace(e,function(a){var b=h[a];return"string"===typeof b?b:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function c(a,d){var e,h,l,m,t=f,z,w=d[a];w&&"object"===typeof w&&"function"===typeof w.toJSON&&(w=w.toJSON(a));"function"===typeof k&&(w=k.call(d,a,w));switch(typeof w){case "string":return b(w);case "number":return isFinite(w)?""+w:"null";case "boolean":case "null":return""+w; -case "object":if(!w)return"null";f+=g;z=[];if("[object Array]"===Object.prototype.toString.apply(w)){m=w.length;for(e=0;e<m;e+=1)z[e]=c(e,w)||"null";l=0===z.length?"[]":f?"[\n"+f+z.join(",\n"+f)+"\n"+t+"]":"["+z.join(",")+"]";f=t;return l}if(k&&"object"===typeof k)for(m=k.length,e=0;e<m;e+=1)"string"===typeof k[e]&&(h=k[e],(l=c(h,w))&&z.push(b(h)+(f?": ":":")+l));else for(h in w)Object.prototype.hasOwnProperty.call(w,h)&&(l=c(h,w))&&z.push(b(h)+(f?": ":":")+l);l=0===z.length?"{}":f?"{\n"+f+z.join(",\n"+ +(function(){function a(a){return 10>a?"0"+a:a}function b(a){e.lastIndex=0;return e.test(a)?'"'+a.replace(e,function(a){var b=h[a];return"string"===typeof b?b:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function c(a,d){var e,h,l,m,t=f,z,x=d[a];x&&"object"===typeof x&&"function"===typeof x.toJSON&&(x=x.toJSON(a));"function"===typeof k&&(x=k.call(d,a,x));switch(typeof x){case "string":return b(x);case "number":return isFinite(x)?""+x:"null";case "boolean":case "null":return""+x; +case "object":if(!x)return"null";f+=g;z=[];if("[object Array]"===Object.prototype.toString.apply(x)){m=x.length;for(e=0;e<m;e+=1)z[e]=c(e,x)||"null";l=0===z.length?"[]":f?"[\n"+f+z.join(",\n"+f)+"\n"+t+"]":"["+z.join(",")+"]";f=t;return l}if(k&&"object"===typeof k)for(m=k.length,e=0;e<m;e+=1)"string"===typeof k[e]&&(h=k[e],(l=c(h,x))&&z.push(b(h)+(f?": ":":")+l));else for(h in x)Object.prototype.hasOwnProperty.call(x,h)&&(l=c(h,x))&&z.push(b(h)+(f?": ":":")+l);l=0===z.length?"{}":f?"{\n"+f+z.join(",\n"+ f)+"\n"+t+"}":"{"+z.join(",")+"}";f=t;return l}}"function"!==typeof Date.prototype.toJSON&&(Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+a(this.getUTCMonth()+1)+"-"+a(this.getUTCDate())+"T"+a(this.getUTCHours())+":"+a(this.getUTCMinutes())+":"+a(this.getUTCSeconds())+"Z":null},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()});var d=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, e=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,f,g,h={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},k;"function"!==typeof JSON.stringify&&(JSON.stringify=function(a,b,d){var e;g=f="";if("number"===typeof d)for(e=0;e<d;e+=1)g+=" ";else"string"===typeof d&&(g=d);if((k=b)&&"function"!==typeof b&&("object"!==typeof b||"number"!==typeof b.length))throw Error("JSON.stringify");return c("",{"":a})}); "function"!==typeof JSON.parse&&(JSON.parse=function(a,b){function c(a,d){var e,f,g=a[d];if(g&&"object"===typeof g)for(e in g)Object.prototype.hasOwnProperty.call(g,e)&&(f=c(g,e),void 0!==f?g[e]=f:delete g[e]);return b.call(a,d,g)}var e;a=""+a;d.lastIndex=0;d.test(a)&&(a=a.replace(d,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)}));if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return e=eval("("+a+")"),"function"===typeof b?c({"":e},""):e;throw new SyntaxError("JSON.parse");})})();"undefined"===typeof window.mxBasePath&&(window.mxBasePath="https://www.draw.io/mxgraph/");window.mxLoadStylesheets=window.mxLoadStylesheets||!1;window.mxLoadResources=window.mxLoadResources||!1;window.mxLanguage=window.mxLanguage||"en";window.urlParams=window.urlParams||{};window.MAX_REQUEST_SIZE=window.MAX_REQUEST_SIZE||10485760;window.MAX_AREA=window.MAX_AREA||225E6;window.EXPORT_URL=window.EXPORT_URL||"/export";window.SAVE_URL=window.SAVE_URL||"/save";window.OPEN_URL=window.OPEN_URL||"/open";window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";window.RESOURCE_BASE=window.RESOURCE_BASE||window.RESOURCES_PATH+"/grapheditor";window.STENCIL_PATH=window.STENCIL_PATH||"stencils";window.IMAGE_PATH=window.IMAGE_PATH||"images"; -window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"../../../src";window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de"];var mxClient={VERSION:"10.1.2",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_IE11:!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:!!navigator.userAgent.match(/Edge\//),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&& +window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"../../../src";window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de"];var mxClient={VERSION:"10.1.7",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_IE11:!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:!!navigator.userAgent.match(/Edge\//),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&& 0>navigator.userAgent.indexOf("Edge/"),IS_OP:0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("OPR/"),IS_OT:0<=navigator.userAgent.indexOf("Presto/")&&0>navigator.userAgent.indexOf("Presto/2.4.")&&0>navigator.userAgent.indexOf("Presto/2.3.")&&0>navigator.userAgent.indexOf("Presto/2.2.")&&0>navigator.userAgent.indexOf("Presto/2.1.")&&0>navigator.userAgent.indexOf("Presto/2.0.")&&0>navigator.userAgent.indexOf("Presto/1."),IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&& 0>navigator.userAgent.indexOf("Chrome/")&&0>navigator.userAgent.indexOf("Edge/"),IS_IOS:navigator.userAgent.match(/(iPad|iPhone|iPod)/g)?!0:!1,IS_GC:0<=navigator.userAgent.indexOf("Chrome/")&&0>navigator.userAgent.indexOf("Edge/"),IS_CHROMEAPP:null!=window.chrome&&null!=chrome.app&&null!=chrome.app.runtime,IS_FF:0<=navigator.userAgent.indexOf("Firefox/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&0>navigator.userAgent.indexOf("Firefox/1.")&&0>navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/")&& 0>navigator.userAgent.indexOf("Iceweasel/1.")&&0>navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/")&&0>navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/")&&0>navigator.userAgent.indexOf("Iceape/1."),IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")|| @@ -230,50 +230,50 @@ b(g.childNodes),e<a.length-1&&0<=mxUtils.indexOf(c,a[e+1].nodeName)&&d.push("\n" a.innerText=b:a[void 0===a.textContent?"text":"textContent"]=b},getInnerHtml:function(){return mxClient.IS_IE?function(a){return null!=a?a.innerHTML:""}:function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),getOuterHtml:function(){return mxClient.IS_IE?function(a){if(null!=a){if(null!=a.outerHTML)return a.outerHTML;var b=[];b.push("<"+a.nodeName);var c=a.attributes;if(null!=c)for(var d=0;d<c.length;d++){var e=c[d].value;null!=e&&0<e.length&&(b.push(" "),b.push(c[d].nodeName), b.push('="'),b.push(e),b.push('"'))}0==a.innerHTML.length?b.push("/>"):(b.push(">"),b.push(a.innerHTML),b.push("</"+a.nodeName+">"));return b.join("")}return""}:function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),write:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&a.appendChild(c);return c},writeln:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&(a.appendChild(c),a.appendChild(document.createElement("br")));return c},br:function(a,b){b=b||1;for(var c= null,d=0;d<b;d++)null!=a&&(c=a.ownerDocument.createElement("br"),a.appendChild(c));return c},button:function(a,b,c){c=null!=c?c:document;c=c.createElement("button");mxUtils.write(c,a);mxEvent.addListener(c,"click",function(a){b(a)});return c},para:function(a,b){var c=document.createElement("p");mxUtils.write(c,b);null!=a&&a.appendChild(c);return c},addTransparentBackgroundFilter:function(a){a.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"}, -linkAction:function(a,b,c,d,e){return mxUtils.link(a,b,function(){c.execute(d)},e)},linkInvoke:function(a,b,c,d,e,f){return mxUtils.link(a,b,function(){c[d](e)},f)},link:function(a,b,c,d){var e=document.createElement("span");e.style.color="blue";e.style.textDecoration="underline";e.style.cursor="pointer";null!=d&&(e.style.paddingLeft=d+"px");mxEvent.addListener(e,"click",c);mxUtils.write(e,b);null!=a&&a.appendChild(e);return e},fit:function(a){var b=parseInt(a.offsetLeft),c=parseInt(a.offsetWidth), -d=mxUtils.getDocumentScrollOrigin(a.ownerDocument),e=d.x,d=d.y,f=document.body,g=document.documentElement,h=e+(f.clientWidth||g.clientWidth);b+c>h&&(a.style.left=Math.max(e,h-c)+"px");b=parseInt(a.offsetTop);c=parseInt(a.offsetHeight);f=d+Math.max(f.clientHeight||0,g.clientHeight);b+c>f&&(a.style.top=Math.max(d,f-c)+"px")},load:function(a){a=new mxXmlRequest(a,null,"GET",!1);a.send();return a},get:function(a,b,c,d,e,f){a=new mxXmlRequest(a,null,"GET");null!=d&&a.setBinary(d);a.send(b,c,e,f);return a}, -getAll:function(a,b,c){for(var d=a.length,e=[],f=0,g=function(){0==f&&null!=c&&c();f++},h=0;h<a.length;h++)(function(a,c){mxUtils.get(a,function(a){var f=a.getStatus();200>f||299<f?g():(e[c]=a,d--,0==d&&b(e))},g)})(a[h],h);0==d&&b(e)},post:function(a,b,c,d){return(new mxXmlRequest(a,b)).send(c,d)},submit:function(a,b,c,d){return(new mxXmlRequest(a,b)).simulate(c,d)},loadInto:function(a,b,c){mxClient.IS_IE?b.onreadystatechange=function(){4==b.readyState&&c()}:b.addEventListener("load",c,!1);b.load(a)}, -getValue:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c);return a},getNumber:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c||0);return Number(a)},getColor:function(a,b,c){a=null!=a?a[b]:null;null==a?a=c:a==mxConstants.NONE&&(a=null);return a},clone:function(a,b,c){c=null!=c?c:!1;var d=null;if(null!=a&&"function"==typeof a.constructor){var d=new a.constructor,e;for(e in a)e!=mxObjectIdentity.FIELD_NAME&&(null==b||0>mxUtils.indexOf(b,e))&&(d[e]=c||"object"!=typeof a[e]?a[e]:mxUtils.clone(a[e]))}return d}, -equalPoints:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b)for(var c=0;c<a.length;c++)if(a[c]==b[c]||null!=a[c]&&!a[c].equals(b[c]))return!1;return!0},equalEntries:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b){var c=0,d;for(d in b)c++;for(d in a)if(c--,!(mxUtils.isNaN(a[d])&&mxUtils.isNaN(b[d])||a[d]==b[d]))return!1}return 0==c},removeDuplicates:function(a){for(var b= -new mxDictionary,c=[],d=0;d<a.length;d++)b.get(a[d])||(c.push(a[d]),b.put(a[d],!0));return c},isNaN:function(a){return"number"==typeof a&&isNaN(a)},extend:function(a,b){var c=function(){};c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a},toString:function(a){var b="",c;for(c in a)try{if(null==a[c])b+=c+" = [null]\n";else if("function"==typeof a[c])b+=c+" => [Function]\n";else if("object"==typeof a[c])var d=mxUtils.getFunctionName(a[c].constructor),b=b+(c+" => ["+d+"]\n");else b+= -c+" = "+a[c]+"\n"}catch(e){b+=c+"="+e.message}return b},toRadians:function(a){return Math.PI*a/180},toDegree:function(a){return 180*a/Math.PI},arcToCurves:function(a,b,c,d,e,f,g,h,k){h-=a;k-=b;if(0===c||0===d)return p;c=Math.abs(c);d=Math.abs(d);var l=-h/2,m=-k/2,n=Math.cos(e*Math.PI/180),p=Math.sin(e*Math.PI/180);e=n*l+p*m;var l=-1*p*l+n*m,m=e*e,r=l*l,q=c*c,t=d*d,z=m/q+r/t;1<z?(c*=Math.sqrt(z),d*=Math.sqrt(z),f=0):(z=1,f===g&&(z=-1),f=z*Math.sqrt((q*t-q*r-t*m)/(q*r+t*m)));m=f*c*l/d;r=-1*f*d*e/c; -h=n*m-p*r+h/2;k=p*m+n*r+k/2;q=Math.atan2((l-r)/d,(e-m)/c)-Math.atan2(0,1);f=0<=q?q:2*Math.PI+q;q=Math.atan2((-l-r)/d,(-e-m)/c)-Math.atan2((l-r)/d,(e-m)/c);e=0<=q?q:2*Math.PI+q;0==g&&0<e?e-=2*Math.PI:0!=g&&0>e&&(e+=2*Math.PI);g=2*e/Math.PI;g=Math.ceil(0>g?-1*g:g);e/=g;l=8/3*Math.sin(e/4)*Math.sin(e/4)/Math.sin(e/2);m=n*c;n*=d;c*=p;d*=p;for(var w=Math.cos(f),x=Math.sin(f),r=-l*(m*x+d*w),q=-l*(c*x-n*w),p=[],y=0;y<g;++y){f+=e;var w=Math.cos(f),x=Math.sin(f),t=m*w-d*x+h,z=c*w+n*x+k,u=-l*(m*x+d*w),w=-l* -(c*x-n*w),x=6*y;p[x]=Number(r+a);p[x+1]=Number(q+b);p[x+2]=Number(t-u+a);p[x+3]=Number(z-w+b);p[x+4]=Number(t+a);p[x+5]=Number(z+b);r=t+u;q=z+w}return p},getBoundingBox:function(a,b,c){var d=null;if(null!=a&&null!=b&&0!=b){b=mxUtils.toRadians(b);var d=Math.cos(b),e=Math.sin(b);c=null!=c?c:new mxPoint(a.x+a.width/2,a.y+a.height/2);var f=new mxPoint(a.x,a.y);b=new mxPoint(a.x+a.width,a.y);var g=new mxPoint(b.x,a.y+a.height);a=new mxPoint(a.x,g.y);f=mxUtils.getRotatedPoint(f,d,e,c);b=mxUtils.getRotatedPoint(b, -d,e,c);g=mxUtils.getRotatedPoint(g,d,e,c);a=mxUtils.getRotatedPoint(a,d,e,c);d=new mxRectangle(f.x,f.y,0,0);d.add(new mxRectangle(b.x,b.y,0,0));d.add(new mxRectangle(g.x,g.y,0,0));d.add(new mxRectangle(a.x,a.y,0,0))}return d},getRotatedPoint:function(a,b,c,d){d=null!=d?d:new mxPoint;var e=a.x-d.x;a=a.y-d.y;return new mxPoint(e*b-a*c+d.x,a*b+e*c+d.y)},getPortConstraints:function(a,b,c,d){b=mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT,mxUtils.getValue(b.style,c?mxConstants.STYLE_SOURCE_PORT_CONSTRAINT: -mxConstants.STYLE_TARGET_PORT_CONSTRAINT,null));if(null==b)return d;d=b.toString();b=mxConstants.DIRECTION_MASK_NONE;c=0;1==mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT_ROTATION,0)&&(c=mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION,0));a=0;45<c?(a=1,135<=c&&(a=2)):-45>c&&(a=3,-135>=c&&(a=2));if(0<=d.indexOf(mxConstants.DIRECTION_NORTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 1:b|=mxConstants.DIRECTION_MASK_EAST;break;case 2:b|=mxConstants.DIRECTION_MASK_SOUTH; -break;case 3:b|=mxConstants.DIRECTION_MASK_WEST}if(0<=d.indexOf(mxConstants.DIRECTION_WEST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_WEST;break;case 1:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 2:b|=mxConstants.DIRECTION_MASK_EAST;break;case 3:b|=mxConstants.DIRECTION_MASK_SOUTH}if(0<=d.indexOf(mxConstants.DIRECTION_SOUTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 1:b|=mxConstants.DIRECTION_MASK_WEST;break;case 2:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 3:b|= -mxConstants.DIRECTION_MASK_EAST}if(0<=d.indexOf(mxConstants.DIRECTION_EAST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_EAST;break;case 1:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 2:b|=mxConstants.DIRECTION_MASK_WEST;break;case 3:b|=mxConstants.DIRECTION_MASK_NORTH}return b},reversePortConstraints:function(a){var b;b=(a&mxConstants.DIRECTION_MASK_WEST)<<3;b|=(a&mxConstants.DIRECTION_MASK_NORTH)<<1;b|=(a&mxConstants.DIRECTION_MASK_SOUTH)>>1;return b|=(a&mxConstants.DIRECTION_MASK_EAST)>>3}, -findNearestSegment:function(a,b,c){var d=-1;if(0<a.absolutePoints.length)for(var e=a.absolutePoints[0],f=null,g=1;g<a.absolutePoints.length;g++){var h=a.absolutePoints[g],e=mxUtils.ptSegDistSq(e.x,e.y,h.x,h.y,b,c);if(null==f||e<f)f=e,d=g-1;e=h}return d},getDirectedBounds:function(a,b,c,d,e){var f=mxUtils.getValue(c,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);d=null!=d?d:mxUtils.getValue(c,mxConstants.STYLE_FLIPH,!1);e=null!=e?e:mxUtils.getValue(c,mxConstants.STYLE_FLIPV,!1);b.x=Math.round(Math.max(0, -Math.min(a.width,b.x)));b.y=Math.round(Math.max(0,Math.min(a.height,b.y)));b.width=Math.round(Math.max(0,Math.min(a.width,b.width)));b.height=Math.round(Math.max(0,Math.min(a.height,b.height)));if(e&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||d&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.x,b.x=b.width,b.width=c;if(d&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||e&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.y, -b.y=b.height,b.height=c;d=mxRectangle.fromRectangle(b);f==mxConstants.DIRECTION_SOUTH?(d.y=b.x,d.x=b.height,d.width=b.y,d.height=b.width):f==mxConstants.DIRECTION_WEST?(d.y=b.height,d.x=b.width,d.width=b.x,d.height=b.y):f==mxConstants.DIRECTION_NORTH&&(d.y=b.width,d.x=b.y,d.width=b.height,d.height=b.x);return new mxRectangle(a.x+d.x,a.y+d.y,a.width-d.width-d.x,a.height-d.height-d.y)},getPerimeterPoint:function(a,b,c){for(var d=null,e=0;e<a.length-1;e++){var f=mxUtils.intersection(a[e].x,a[e].y,a[e+ -1].x,a[e+1].y,b.x,b.y,c.x,c.y);if(null!=f){var g=c.x-f.x,h=c.y-f.y,f={p:f,distSq:h*h+g*g};null!=f&&(null==d||d.distSq>f.distSq)&&(d=f)}}return null!=d?d.p:null},rectangleIntersectsSegment:function(a,b,c){var d=a.y,e=a.x,f=d+a.height,g=e+a.width;a=b.x;var h=c.x;b.x>c.x&&(a=c.x,h=b.x);h>g&&(h=g);a<e&&(a=e);if(a>h)return!1;var e=b.y,g=c.y,k=c.x-b.x;1E-7<Math.abs(k)&&(c=(c.y-b.y)/k,b=b.y-c*b.x,e=c*a+b,g=c*h+b);e>g&&(b=g,g=e,e=b);g>f&&(g=f);e<d&&(e=d);return e>g?!1:!0},contains:function(a,b,c){return a.x<= -b&&a.x+a.width>=b&&a.y<=c&&a.y+a.height>=c},intersects:function(a,b){var c=a.width,d=a.height,e=b.width,f=b.height;if(0>=e||0>=f||0>=c||0>=d)return!1;var g=a.x,h=a.y,k=b.x,l=b.y,e=e+k,f=f+l,c=c+g,d=d+h;return(e<k||e>g)&&(f<l||f>h)&&(c<g||c>k)&&(d<h||d>l)},intersectsHotspot:function(a,b,c,d,e,f){d=null!=d?d:1;e=null!=e?e:0;f=null!=f?f:0;if(0<d){var g=a.getCenterX(),h=a.getCenterY(),k=a.width,l=a.height,m=mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE)*a.view.scale;0<m&&(mxUtils.getValue(a.style, -mxConstants.STYLE_HORIZONTAL,!0)?(h=a.y+m/2,l=m):(g=a.x+m/2,k=m));k=Math.max(e,k*d);l=Math.max(e,l*d);0<f&&(k=Math.min(k,f),l=Math.min(l,f));d=new mxRectangle(g-k/2,h-l/2,k,l);g=mxUtils.toRadians(mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION)||0);0!=g&&(e=Math.cos(-g),f=Math.sin(-g),g=new mxPoint(a.getCenterX(),a.getCenterY()),a=mxUtils.getRotatedPoint(new mxPoint(b,c),e,f,g),b=a.x,c=a.y);return mxUtils.contains(d,b,c)}return!0},getOffset:function(a,b){for(var c=0,d=0,e=!1,f=a,g=document.body, -h=document.documentElement;null!=f&&f!=g&&f!=h&&!e;){var k=mxUtils.getCurrentStyle(f);null!=k&&(e=e||"fixed"==k.position);f=f.parentNode}b||e||(e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),c+=e.x,d+=e.y);e=a.getBoundingClientRect();null!=e&&(c+=e.left,d+=e.top);return new mxPoint(c,d)},getDocumentScrollOrigin:function(a){if(mxClient.IS_QUIRKS)return new mxPoint(a.body.scrollLeft,a.body.scrollTop);a=a.defaultView||a.parentWindow;return new mxPoint(null!=a&&void 0!==window.pageXOffset?window.pageXOffset: -(document.documentElement||document.body.parentNode||document.body).scrollLeft,null!=a&&void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop)},getScrollOrigin:function(a,b,c){b=null!=b?b:!1;c=null!=c?c:!0;for(var d=null!=a?a.ownerDocument:document,e=d.body,f=d.documentElement,g=new mxPoint,h=!1;null!=a&&a!=e&&a!=f;){isNaN(a.scrollLeft)||isNaN(a.scrollTop)||(g.x+=a.scrollLeft,g.y+=a.scrollTop);var k=mxUtils.getCurrentStyle(a); -null!=k&&(h=h||"fixed"==k.position);a=b?a.parentNode:null}!h&&c&&(a=mxUtils.getDocumentScrollOrigin(d),g.x+=a.x,g.y+=a.y);return g},convertPoint:function(a,b,c){var d=mxUtils.getScrollOrigin(a,!1);a=mxUtils.getOffset(a);a.x-=d.x;a.y-=d.y;return new mxPoint(b-a.x,c-a.y)},ltrim:function(a,b){return null!=a?a.replace(new RegExp("^["+(b||"\\s")+"]+","g"),""):null},rtrim:function(a,b){return null!=a?a.replace(new RegExp("["+(b||"\\s")+"]+$","g"),""):null},trim:function(a,b){return mxUtils.ltrim(mxUtils.rtrim(a, -b),b)},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)&&("string"!=typeof a||0>a.toLowerCase().indexOf("0x"))},isInteger:function(a){return String(parseInt(a))===String(a)},mod:function(a,b){return(a%b+b)%b},intersection:function(a,b,c,d,e,f,g,h){var k=(h-f)*(c-a)-(g-e)*(d-b);g=((g-e)*(b-f)-(h-f)*(a-e))/k;e=((c-a)*(b-f)-(d-b)*(a-e))/k;return 0<=g&&1>=g&&0<=e&&1>=e?new mxPoint(a+g*(c-a),b+g*(d-b)):null},ptSegDistSq:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;0>=e*c+f*d?c=0:(e=c-e,f=d- -f,a=e*c+f*d,c=0>=a?0:a*a/(c*c+d*d));e=e*e+f*f-c;0>e&&(e=0);return e},ptLineDist:function(a,b,c,d,e,f){return Math.abs((d-b)*e-(c-a)*f+c*b-d*a)/Math.sqrt((d-b)*(d-b)+(c-a)*(c-a))},relativeCcw:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;a=e*d-f*c;0==a&&(a=e*c+f*d,0<a&&(a=(e-c)*c+(f-d)*d,0>a&&(a=0)));return 0>a?-1:0<a?1:0},animateChanges:function(a,b){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(a,b,c){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(a,b,c,d, -e,f){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(a,b){mxUtils.isVml(a)?a.style.filter=100<=b?"":"alpha(opacity="+b/5+")":mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?a.style.filter=100<=b?"":"alpha(opacity="+b+")":a.style.opacity=b/100},createImage:function(a){var b;mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?(b=document.createElement(mxClient.VML_PREFIX+":image"),b.setAttribute("src",a),b.style.borderStyle="none"):(b=document.createElement("img"), -b.setAttribute("src",a),b.setAttribute("border","0"));return b},sortCells:function(a,b){b=null!=b?b:!0;var c=new mxDictionary;a.sort(function(a,e){var d=c.get(a);null==d&&(d=mxCellPath.create(a).split(mxCellPath.PATH_SEPARATOR),c.put(a,d));var g=c.get(e);null==g&&(g=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),c.put(e,g));d=mxCellPath.compare(d,g);return 0==d?0:0<d==b?1:-1});return a},getStylename:function(a){return null!=a&&(a=a.split(";")[0],0>a.indexOf("="))?a:""},getStylenames:function(a){var b= -[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0>a[c].indexOf("=")&&b.push(a[c])}return b},indexOfStylename:function(a,b){if(null!=a&&null!=b)for(var c=a.split(";"),d=0,e=0;e<c.length;e++){if(c[e]==b)return d;d+=c[e].length+1}return-1},addStylename:function(a,b){0>mxUtils.indexOfStylename(a,b)&&(null==a?a="":0<a.length&&";"!=a.charAt(a.length-1)&&(a+=";"),a+=b);return a},removeStylename:function(a,b){var c=[];if(null!=a)for(var d=a.split(";"),e=0;e<d.length;e++)d[e]!=b&&c.push(d[e]);return c.join(";")}, -removeAllStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0<=a[c].indexOf("=")&&b.push(a[c])}return b.join(";")},setCellStyles:function(a,b,c,d){if(null!=b&&0<b.length){a.beginUpdate();try{for(var e=0;e<b.length;e++)if(null!=b[e]){var f=mxUtils.setStyle(a.getStyle(b[e]),c,d);a.setStyle(b[e],f)}}finally{a.endUpdate()}}},setStyle:function(a,b,c){var d=null!=c&&("undefined"==typeof c.length||0<c.length);if(null==a||0==a.length)d&&(a=b+"="+c+";");else if(a.substring(0, -b.length+1)==b+"="){var e=a.indexOf(";");a=d?b+"="+c+(0>e?";":a.substring(e)):0>e||e==a.length-1?"":a.substring(e+1)}else{var f=a.indexOf(";"+b+"=");0>f?d&&(d=";"==a.charAt(a.length-1)?"":";",a=a+d+b+"="+c+";"):(e=a.indexOf(";",f+1),a=d?a.substring(0,f+1)+b+"="+c+(0>e?";":a.substring(e)):a.substring(0,f)+(0>e?";":a.substring(e)))}return a},setCellStyleFlags:function(a,b,c,d,e){if(null!=b&&0<b.length){a.beginUpdate();try{for(var f=0;f<b.length;f++)if(null!=b[f]){var g=mxUtils.setStyleFlag(a.getStyle(b[f]), -c,d,e);a.setStyle(b[f],g)}}finally{a.endUpdate()}}},setStyleFlag:function(a,b,c,d){if(null==a||0==a.length)a=d||null==d?b+"="+c:b+"=0";else{var e=a.indexOf(b+"=");if(0>e)e=";"==a.charAt(a.length-1)?"":";",a=d||null==d?a+e+b+"="+c:a+e+b+"=0";else{var f=a.indexOf(";",e),g;g=0>f?a.substring(e+b.length+1):a.substring(e+b.length+1,f);g=null==d?parseInt(g)^c:d?parseInt(g)|c:parseInt(g)&~c;a=a.substring(0,e)+b+"="+g+(0<=f?a.substring(f):"")}}return a},getAlignmentAsPoint:function(a,b){var c=0,d=0;a==mxConstants.ALIGN_CENTER? -c=-.5:a==mxConstants.ALIGN_RIGHT&&(c=-1);b==mxConstants.ALIGN_MIDDLE?d=-.5:b==mxConstants.ALIGN_BOTTOM&&(d=-1);return new mxPoint(c,d)},getSizeForString:function(a,b,c,d){b=null!=b?b:mxConstants.DEFAULT_FONTSIZE;c=null!=c?c:mxConstants.DEFAULT_FONTFAMILY;var e=document.createElement("div");e.style.fontFamily=c;e.style.fontSize=Math.round(b)+"px";e.style.lineHeight=Math.round(b*mxConstants.LINE_HEIGHT)+"px";e.style.position="absolute";e.style.visibility="hidden";e.style.display=mxClient.IS_QUIRKS? -"inline":"inline-block";e.style.zoom="1";null!=d?(e.style.width=d+"px",e.style.whiteSpace="normal"):e.style.whiteSpace="nowrap";e.innerHTML=a;document.body.appendChild(e);a=new mxRectangle(0,0,e.offsetWidth,e.offsetHeight);document.body.removeChild(e);return a},getViewXml:function(a,b,c,d,e){d=null!=d?d:0;e=null!=e?e:0;b=null!=b?b:1;null==c&&(c=[a.getModel().getRoot()]);var f=a.getView(),g=null,h=f.isEventsEnabled();f.setEventsEnabled(!1);var k=f.drawPane,l=f.overlayPane;a.dialect==mxConstants.DIALECT_SVG? -(f.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),f.canvas.appendChild(f.drawPane),f.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(f.drawPane=f.drawPane.cloneNode(!1),f.canvas.appendChild(f.drawPane),f.overlayPane=f.overlayPane.cloneNode(!1));f.canvas.appendChild(f.overlayPane);var m=f.getTranslate();f.translate=new mxPoint(d,e);b=new mxTemporaryCellStates(a.getView(),b,c);try{g=(new mxCodec).encode(a.getView())}finally{b.destroy(),f.translate=m,f.canvas.removeChild(f.drawPane), -f.canvas.removeChild(f.overlayPane),f.drawPane=k,f.overlayPane=l,f.setEventsEnabled(h)}return g},getScaleForPageCount:function(a,b,c,d){if(1>a)return 1;c=null!=c?c:mxConstants.PAGE_FORMAT_A4_PORTRAIT;d=null!=d?d:0;var e=c.width-2*d;c=c.height-2*d;d=b.getGraphBounds().clone();b=b.getView().getScale();d.width/=b;d.height/=b;b=d.width;var f=Math.sqrt(a);d=Math.sqrt(b/d.height/(e/c));c=f*d;d=f/d;if(1>c&&d>a){var g=d/a;d=a;c/=g}1>d&&c>a&&(g=c/a,c=a,d/=g);g=Math.ceil(c)*Math.ceil(d);for(f=0;g>a;){var g= -Math.floor(c)/c,h=Math.floor(d)/d;1==g&&(g=Math.floor(c-1)/c);1==h&&(h=Math.floor(d-1)/d);g=g>h?g:h;c*=g;d*=g;g=Math.ceil(c)*Math.ceil(d);f++;if(10<f)break}return e*c/b*.99999},show:function(a,b,c,d,e,f){c=null!=c?c:0;d=null!=d?d:0;null==b?b=window.open().document:b.open();9==document.documentMode&&b.writeln('\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=9"><![endif]--\x3e');var g=a.getGraphBounds(),h=Math.ceil(c-g.x),k=Math.ceil(d-g.y);null==e&&(e=Math.ceil(g.width+c)+Math.ceil(Math.ceil(g.x)- -g.x));null==f&&(f=Math.ceil(g.height+d)+Math.ceil(Math.ceil(g.y)-g.y));if(mxClient.IS_IE||11==document.documentMode){d="<html><head>";g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)d+=g[c].outerHTML;d+="<style>";for(c=0;c<document.styleSheets.length;c++)try{d+=document.styleSheets[c].cssText}catch(l){}d=d+'</style></head><body style="margin:0px;">'+('<div style="position:absolute;overflow:hidden;width:'+e+"px;height:"+f+'px;"><div style="position:relative;left:'+h+"px;top:"+k+'px;">')+ -a.container.innerHTML;b.writeln(d+"</div></div></body><html>");b.close()}else{b.writeln("<html><head>");g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)b.writeln(mxUtils.getOuterHtml(g[c]));d=document.getElementsByTagName("link");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));d=document.getElementsByTagName("style");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));b.writeln('</head><body style="margin:0px;"></body></html>');b.close();c=b.createElement("div"); -c.position="absolute";c.overflow="hidden";c.style.width=e+"px";c.style.height=f+"px";e=b.createElement("div");e.style.position="absolute";e.style.left=h+"px";e.style.top=k+"px";f=a.container.firstChild;for(d=null;null!=f;)g=f.cloneNode(!0),f==a.view.drawPane.ownerSVGElement?(c.appendChild(g),d=g):e.appendChild(g),f=f.nextSibling;b.body.appendChild(c);null!=e.firstChild&&b.body.appendChild(e);null!=d&&(d.style.minWidth="",d.style.minHeight="",d.firstChild.setAttribute("transform","translate("+h+","+ -k+")"))}mxUtils.removeCursors(b.body);return b},printScreen:function(a){var b=window.open();a.getGraphBounds();mxUtils.show(a,b.document);a=function(){b.focus();b.print();b.close()};mxClient.IS_GC?b.setTimeout(a,500):a()},popup:function(a,b){if(b){var c=document.createElement("div");c.style.overflow="scroll";c.style.width="636px";c.style.height="460px";var d=document.createElement("pre");d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g," ");c.appendChild(d);c=new mxWindow("Popup Window", -c,document.body.clientWidth/2-320,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight)/2-240,640,480,!1,!0);c.setClosable(!0);c.setVisible(!0)}else mxClient.IS_NS?(c=window.open(),c.document.writeln("<pre>"+mxUtils.htmlEntities(a)+"</pre"),c.document.close()):(c=window.open(),d=c.document.createElement("pre"),d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g," "),c.document.body.appendChild(d))},alert:function(a){alert(a)},prompt:function(a,b){return prompt(a, -null!=b?b:"")},confirm:function(a){return confirm(a)},error:function(a,b,c,d){var e=document.createElement("div");e.style.padding="20px";var f=document.createElement("img");f.setAttribute("src",d||mxUtils.errorImage);f.setAttribute("valign","bottom");f.style.verticalAlign="middle";e.appendChild(f);e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));mxUtils.write(e,a);a=document.body.clientWidth;d=document.body.clientHeight|| -document.documentElement.clientHeight;var g=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,e,(a-b)/2,d/4,b,null,!1,!0);c&&(mxUtils.br(e),b=document.createElement("p"),c=document.createElement("button"),mxClient.IS_IE?c.style.cssText="float:right":c.setAttribute("style","float:right"),mxEvent.addListener(c,"click",function(a){g.destroy()}),mxUtils.write(c,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),b.appendChild(c),e.appendChild(b),mxUtils.br(e),g.setClosable(!0)); -g.setVisible(!0);return g},makeDraggable:function(a,b,c,d,e,f,g,h,k,l){a=new mxDragSource(a,c);a.dragOffset=new mxPoint(null!=e?e:0,null!=f?f:mxConstants.TOOLTIP_VERTICAL_OFFSET);a.autoscroll=g;a.setGuidesEnabled(!1);null!=k&&(a.highlightDropTargets=k);null!=l&&(a.getDropTarget=l);a.getGraphForEvent=function(a){return"function"==typeof b?b(a):b};null!=d&&(a.createDragElement=function(){return d.cloneNode(!0)},h&&(a.createPreviewElement=function(a){var b=d.cloneNode(!0),c=parseInt(b.style.width),e= -parseInt(b.style.height);b.style.width=Math.round(c*a.view.scale)+"px";b.style.height=Math.round(e*a.view.scale)+"px";return b}));return a}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml", +linkAction:function(a,b,c,d,e){return mxUtils.link(a,b,function(){c.execute(d)},e)},linkInvoke:function(a,b,c,d,e,f){return mxUtils.link(a,b,function(){c[d](e)},f)},link:function(a,b,c,d){var e=document.createElement("span");e.style.color="blue";e.style.textDecoration="underline";e.style.cursor="pointer";null!=d&&(e.style.paddingLeft=d+"px");mxEvent.addListener(e,"click",c);mxUtils.write(e,b);null!=a&&a.appendChild(e);return e},getDocumentSize:function(){var a=document.body,b=document.documentElement; +try{return new mxRectangle(0,0,a.clientWidth||b.clientWidth,Math.max(a.clientHeight||0,b.clientHeight))}catch(c){return new mxRectangle}},fit:function(a){var b=mxUtils.getDocumentSize(),c=parseInt(a.offsetLeft),d=parseInt(a.offsetWidth),e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),f=e.x,e=e.y,g=f+b.width;c+d>g&&(a.style.left=Math.max(f,g-d)+"px");c=parseInt(a.offsetTop);d=parseInt(a.offsetHeight);b=e+b.height;c+d>b&&(a.style.top=Math.max(e,b-d)+"px")},load:function(a){a=new mxXmlRequest(a,null, +"GET",!1);a.send();return a},get:function(a,b,c,d,e,f){a=new mxXmlRequest(a,null,"GET");null!=d&&a.setBinary(d);a.send(b,c,e,f);return a},getAll:function(a,b,c){for(var d=a.length,e=[],f=0,g=function(){0==f&&null!=c&&c();f++},h=0;h<a.length;h++)(function(a,c){mxUtils.get(a,function(a){var f=a.getStatus();200>f||299<f?g():(e[c]=a,d--,0==d&&b(e))},g)})(a[h],h);0==d&&b(e)},post:function(a,b,c,d){return(new mxXmlRequest(a,b)).send(c,d)},submit:function(a,b,c,d){return(new mxXmlRequest(a,b)).simulate(c, +d)},loadInto:function(a,b,c){mxClient.IS_IE?b.onreadystatechange=function(){4==b.readyState&&c()}:b.addEventListener("load",c,!1);b.load(a)},getValue:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c);return a},getNumber:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c||0);return Number(a)},getColor:function(a,b,c){a=null!=a?a[b]:null;null==a?a=c:a==mxConstants.NONE&&(a=null);return a},clone:function(a,b,c){c=null!=c?c:!1;var d=null;if(null!=a&&"function"==typeof a.constructor){var d=new a.constructor, +e;for(e in a)e!=mxObjectIdentity.FIELD_NAME&&(null==b||0>mxUtils.indexOf(b,e))&&(d[e]=c||"object"!=typeof a[e]?a[e]:mxUtils.clone(a[e]))}return d},equalPoints:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b)for(var c=0;c<a.length;c++)if(a[c]==b[c]||null!=a[c]&&!a[c].equals(b[c]))return!1;return!0},equalEntries:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b){var c= +0,d;for(d in b)c++;for(d in a)if(c--,!(mxUtils.isNaN(a[d])&&mxUtils.isNaN(b[d])||a[d]==b[d]))return!1}return 0==c},removeDuplicates:function(a){for(var b=new mxDictionary,c=[],d=0;d<a.length;d++)b.get(a[d])||(c.push(a[d]),b.put(a[d],!0));return c},isNaN:function(a){return"number"==typeof a&&isNaN(a)},extend:function(a,b){var c=function(){};c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a},toString:function(a){var b="",c;for(c in a)try{if(null==a[c])b+=c+" = [null]\n";else if("function"== +typeof a[c])b+=c+" => [Function]\n";else if("object"==typeof a[c])var d=mxUtils.getFunctionName(a[c].constructor),b=b+(c+" => ["+d+"]\n");else b+=c+" = "+a[c]+"\n"}catch(e){b+=c+"="+e.message}return b},toRadians:function(a){return Math.PI*a/180},toDegree:function(a){return 180*a/Math.PI},arcToCurves:function(a,b,c,d,e,f,g,h,k){h-=a;k-=b;if(0===c||0===d)return p;c=Math.abs(c);d=Math.abs(d);var l=-h/2,m=-k/2,n=Math.cos(e*Math.PI/180),p=Math.sin(e*Math.PI/180);e=n*l+p*m;var l=-1*p*l+n*m,m=e*e,r=l*l, +q=c*c,t=d*d,z=m/q+r/t;1<z?(c*=Math.sqrt(z),d*=Math.sqrt(z),f=0):(z=1,f===g&&(z=-1),f=z*Math.sqrt((q*t-q*r-t*m)/(q*r+t*m)));m=f*c*l/d;r=-1*f*d*e/c;h=n*m-p*r+h/2;k=p*m+n*r+k/2;q=Math.atan2((l-r)/d,(e-m)/c)-Math.atan2(0,1);f=0<=q?q:2*Math.PI+q;q=Math.atan2((-l-r)/d,(-e-m)/c)-Math.atan2((l-r)/d,(e-m)/c);e=0<=q?q:2*Math.PI+q;0==g&&0<e?e-=2*Math.PI:0!=g&&0>e&&(e+=2*Math.PI);g=2*e/Math.PI;g=Math.ceil(0>g?-1*g:g);e/=g;l=8/3*Math.sin(e/4)*Math.sin(e/4)/Math.sin(e/2);m=n*c;n*=d;c*=p;d*=p;for(var x=Math.cos(f), +w=Math.sin(f),r=-l*(m*w+d*x),q=-l*(c*w-n*x),p=[],y=0;y<g;++y){f+=e;var x=Math.cos(f),w=Math.sin(f),t=m*x-d*w+h,z=c*x+n*w+k,u=-l*(m*w+d*x),x=-l*(c*w-n*x),w=6*y;p[w]=Number(r+a);p[w+1]=Number(q+b);p[w+2]=Number(t-u+a);p[w+3]=Number(z-x+b);p[w+4]=Number(t+a);p[w+5]=Number(z+b);r=t+u;q=z+x}return p},getBoundingBox:function(a,b,c){var d=null;if(null!=a&&null!=b&&0!=b){b=mxUtils.toRadians(b);var d=Math.cos(b),e=Math.sin(b);c=null!=c?c:new mxPoint(a.x+a.width/2,a.y+a.height/2);var f=new mxPoint(a.x,a.y); +b=new mxPoint(a.x+a.width,a.y);var g=new mxPoint(b.x,a.y+a.height);a=new mxPoint(a.x,g.y);f=mxUtils.getRotatedPoint(f,d,e,c);b=mxUtils.getRotatedPoint(b,d,e,c);g=mxUtils.getRotatedPoint(g,d,e,c);a=mxUtils.getRotatedPoint(a,d,e,c);d=new mxRectangle(f.x,f.y,0,0);d.add(new mxRectangle(b.x,b.y,0,0));d.add(new mxRectangle(g.x,g.y,0,0));d.add(new mxRectangle(a.x,a.y,0,0))}return d},getRotatedPoint:function(a,b,c,d){d=null!=d?d:new mxPoint;var e=a.x-d.x;a=a.y-d.y;return new mxPoint(e*b-a*c+d.x,a*b+e*c+d.y)}, +getPortConstraints:function(a,b,c,d){b=mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT,mxUtils.getValue(b.style,c?mxConstants.STYLE_SOURCE_PORT_CONSTRAINT:mxConstants.STYLE_TARGET_PORT_CONSTRAINT,null));if(null==b)return d;d=b.toString();b=mxConstants.DIRECTION_MASK_NONE;c=0;1==mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT_ROTATION,0)&&(c=mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION,0));a=0;45<c?(a=1,135<=c&&(a=2)):-45>c&&(a=3,-135>=c&&(a=2));if(0<=d.indexOf(mxConstants.DIRECTION_NORTH))switch(a){case 0:b|= +mxConstants.DIRECTION_MASK_NORTH;break;case 1:b|=mxConstants.DIRECTION_MASK_EAST;break;case 2:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 3:b|=mxConstants.DIRECTION_MASK_WEST}if(0<=d.indexOf(mxConstants.DIRECTION_WEST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_WEST;break;case 1:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 2:b|=mxConstants.DIRECTION_MASK_EAST;break;case 3:b|=mxConstants.DIRECTION_MASK_SOUTH}if(0<=d.indexOf(mxConstants.DIRECTION_SOUTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_SOUTH; +break;case 1:b|=mxConstants.DIRECTION_MASK_WEST;break;case 2:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 3:b|=mxConstants.DIRECTION_MASK_EAST}if(0<=d.indexOf(mxConstants.DIRECTION_EAST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_EAST;break;case 1:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 2:b|=mxConstants.DIRECTION_MASK_WEST;break;case 3:b|=mxConstants.DIRECTION_MASK_NORTH}return b},reversePortConstraints:function(a){var b;b=(a&mxConstants.DIRECTION_MASK_WEST)<<3;b|=(a&mxConstants.DIRECTION_MASK_NORTH)<< +1;b|=(a&mxConstants.DIRECTION_MASK_SOUTH)>>1;return b|=(a&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(a,b,c){var d=-1;if(0<a.absolutePoints.length)for(var e=a.absolutePoints[0],f=null,g=1;g<a.absolutePoints.length;g++){var h=a.absolutePoints[g],e=mxUtils.ptSegDistSq(e.x,e.y,h.x,h.y,b,c);if(null==f||e<f)f=e,d=g-1;e=h}return d},getDirectedBounds:function(a,b,c,d,e){var f=mxUtils.getValue(c,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);d=null!=d?d:mxUtils.getValue(c,mxConstants.STYLE_FLIPH, +!1);e=null!=e?e:mxUtils.getValue(c,mxConstants.STYLE_FLIPV,!1);b.x=Math.round(Math.max(0,Math.min(a.width,b.x)));b.y=Math.round(Math.max(0,Math.min(a.height,b.y)));b.width=Math.round(Math.max(0,Math.min(a.width,b.width)));b.height=Math.round(Math.max(0,Math.min(a.height,b.height)));if(e&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||d&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.x,b.x=b.width,b.width=c;if(d&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)|| +e&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.y,b.y=b.height,b.height=c;d=mxRectangle.fromRectangle(b);f==mxConstants.DIRECTION_SOUTH?(d.y=b.x,d.x=b.height,d.width=b.y,d.height=b.width):f==mxConstants.DIRECTION_WEST?(d.y=b.height,d.x=b.width,d.width=b.x,d.height=b.y):f==mxConstants.DIRECTION_NORTH&&(d.y=b.width,d.x=b.y,d.width=b.height,d.height=b.x);return new mxRectangle(a.x+d.x,a.y+d.y,a.width-d.width-d.x,a.height-d.height-d.y)},getPerimeterPoint:function(a,b,c){for(var d= +null,e=0;e<a.length-1;e++){var f=mxUtils.intersection(a[e].x,a[e].y,a[e+1].x,a[e+1].y,b.x,b.y,c.x,c.y);if(null!=f){var g=c.x-f.x,h=c.y-f.y,f={p:f,distSq:h*h+g*g};null!=f&&(null==d||d.distSq>f.distSq)&&(d=f)}}return null!=d?d.p:null},rectangleIntersectsSegment:function(a,b,c){var d=a.y,e=a.x,f=d+a.height,g=e+a.width;a=b.x;var h=c.x;b.x>c.x&&(a=c.x,h=b.x);h>g&&(h=g);a<e&&(a=e);if(a>h)return!1;var e=b.y,g=c.y,k=c.x-b.x;1E-7<Math.abs(k)&&(c=(c.y-b.y)/k,b=b.y-c*b.x,e=c*a+b,g=c*h+b);e>g&&(b=g,g=e,e=b); +g>f&&(g=f);e<d&&(e=d);return e>g?!1:!0},contains:function(a,b,c){return a.x<=b&&a.x+a.width>=b&&a.y<=c&&a.y+a.height>=c},intersects:function(a,b){var c=a.width,d=a.height,e=b.width,f=b.height;if(0>=e||0>=f||0>=c||0>=d)return!1;var g=a.x,h=a.y,k=b.x,l=b.y,e=e+k,f=f+l,c=c+g,d=d+h;return(e<k||e>g)&&(f<l||f>h)&&(c<g||c>k)&&(d<h||d>l)},intersectsHotspot:function(a,b,c,d,e,f){d=null!=d?d:1;e=null!=e?e:0;f=null!=f?f:0;if(0<d){var g=a.getCenterX(),h=a.getCenterY(),k=a.width,l=a.height,m=mxUtils.getValue(a.style, +mxConstants.STYLE_STARTSIZE)*a.view.scale;0<m&&(mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,!0)?(h=a.y+m/2,l=m):(g=a.x+m/2,k=m));k=Math.max(e,k*d);l=Math.max(e,l*d);0<f&&(k=Math.min(k,f),l=Math.min(l,f));d=new mxRectangle(g-k/2,h-l/2,k,l);g=mxUtils.toRadians(mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION)||0);0!=g&&(e=Math.cos(-g),f=Math.sin(-g),g=new mxPoint(a.getCenterX(),a.getCenterY()),a=mxUtils.getRotatedPoint(new mxPoint(b,c),e,f,g),b=a.x,c=a.y);return mxUtils.contains(d,b,c)}return!0}, +getOffset:function(a,b){for(var c=0,d=0,e=!1,f=a,g=document.body,h=document.documentElement;null!=f&&f!=g&&f!=h&&!e;){var k=mxUtils.getCurrentStyle(f);null!=k&&(e=e||"fixed"==k.position);f=f.parentNode}b||e||(e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),c+=e.x,d+=e.y);e=a.getBoundingClientRect();null!=e&&(c+=e.left,d+=e.top);return new mxPoint(c,d)},getDocumentScrollOrigin:function(a){if(mxClient.IS_QUIRKS)return new mxPoint(a.body.scrollLeft,a.body.scrollTop);a=a.defaultView||a.parentWindow; +return new mxPoint(null!=a&&void 0!==window.pageXOffset?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft,null!=a&&void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop)},getScrollOrigin:function(a,b,c){b=null!=b?b:!1;c=null!=c?c:!0;for(var d=null!=a?a.ownerDocument:document,e=d.body,f=d.documentElement,g=new mxPoint,h=!1;null!=a&&a!=e&&a!=f;){isNaN(a.scrollLeft)||isNaN(a.scrollTop)|| +(g.x+=a.scrollLeft,g.y+=a.scrollTop);var k=mxUtils.getCurrentStyle(a);null!=k&&(h=h||"fixed"==k.position);a=b?a.parentNode:null}!h&&c&&(a=mxUtils.getDocumentScrollOrigin(d),g.x+=a.x,g.y+=a.y);return g},convertPoint:function(a,b,c){var d=mxUtils.getScrollOrigin(a,!1);a=mxUtils.getOffset(a);a.x-=d.x;a.y-=d.y;return new mxPoint(b-a.x,c-a.y)},ltrim:function(a,b){return null!=a?a.replace(new RegExp("^["+(b||"\\s")+"]+","g"),""):null},rtrim:function(a,b){return null!=a?a.replace(new RegExp("["+(b||"\\s")+ +"]+$","g"),""):null},trim:function(a,b){return mxUtils.ltrim(mxUtils.rtrim(a,b),b)},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)&&("string"!=typeof a||0>a.toLowerCase().indexOf("0x"))},isInteger:function(a){return String(parseInt(a))===String(a)},mod:function(a,b){return(a%b+b)%b},intersection:function(a,b,c,d,e,f,g,h){var k=(h-f)*(c-a)-(g-e)*(d-b);g=((g-e)*(b-f)-(h-f)*(a-e))/k;e=((c-a)*(b-f)-(d-b)*(a-e))/k;return 0<=g&&1>=g&&0<=e&&1>=e?new mxPoint(a+g*(c-a),b+g*(d-b)):null},ptSegDistSq:function(a, +b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;0>=e*c+f*d?c=0:(e=c-e,f=d-f,a=e*c+f*d,c=0>=a?0:a*a/(c*c+d*d));e=e*e+f*f-c;0>e&&(e=0);return e},ptLineDist:function(a,b,c,d,e,f){return Math.abs((d-b)*e-(c-a)*f+c*b-d*a)/Math.sqrt((d-b)*(d-b)+(c-a)*(c-a))},relativeCcw:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;a=e*d-f*c;0==a&&(a=e*c+f*d,0<a&&(a=(e-c)*c+(f-d)*d,0>a&&(a=0)));return 0>a?-1:0<a?1:0},animateChanges:function(a,b){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(a,b,c){mxEffects.cascadeOpacity.apply(this, +arguments)},fadeOut:function(a,b,c,d,e,f){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(a,b){mxUtils.isVml(a)?a.style.filter=100<=b?"":"alpha(opacity="+b/5+")":mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?a.style.filter=100<=b?"":"alpha(opacity="+b+")":a.style.opacity=b/100},createImage:function(a){var b;mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?(b=document.createElement(mxClient.VML_PREFIX+":image"),b.setAttribute("src",a),b.style.borderStyle= +"none"):(b=document.createElement("img"),b.setAttribute("src",a),b.setAttribute("border","0"));return b},sortCells:function(a,b){b=null!=b?b:!0;var c=new mxDictionary;a.sort(function(a,e){var d=c.get(a);null==d&&(d=mxCellPath.create(a).split(mxCellPath.PATH_SEPARATOR),c.put(a,d));var g=c.get(e);null==g&&(g=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),c.put(e,g));d=mxCellPath.compare(d,g);return 0==d?0:0<d==b?1:-1});return a},getStylename:function(a){return null!=a&&(a=a.split(";")[0],0>a.indexOf("="))? +a:""},getStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0>a[c].indexOf("=")&&b.push(a[c])}return b},indexOfStylename:function(a,b){if(null!=a&&null!=b)for(var c=a.split(";"),d=0,e=0;e<c.length;e++){if(c[e]==b)return d;d+=c[e].length+1}return-1},addStylename:function(a,b){0>mxUtils.indexOfStylename(a,b)&&(null==a?a="":0<a.length&&";"!=a.charAt(a.length-1)&&(a+=";"),a+=b);return a},removeStylename:function(a,b){var c=[];if(null!=a)for(var d=a.split(";"),e=0;e< +d.length;e++)d[e]!=b&&c.push(d[e]);return c.join(";")},removeAllStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0<=a[c].indexOf("=")&&b.push(a[c])}return b.join(";")},setCellStyles:function(a,b,c,d){if(null!=b&&0<b.length){a.beginUpdate();try{for(var e=0;e<b.length;e++)if(null!=b[e]){var f=mxUtils.setStyle(a.getStyle(b[e]),c,d);a.setStyle(b[e],f)}}finally{a.endUpdate()}}},setStyle:function(a,b,c){var d=null!=c&&("undefined"==typeof c.length||0<c.length);if(null== +a||0==a.length)d&&(a=b+"="+c+";");else if(a.substring(0,b.length+1)==b+"="){var e=a.indexOf(";");a=d?b+"="+c+(0>e?";":a.substring(e)):0>e||e==a.length-1?"":a.substring(e+1)}else{var f=a.indexOf(";"+b+"=");0>f?d&&(d=";"==a.charAt(a.length-1)?"":";",a=a+d+b+"="+c+";"):(e=a.indexOf(";",f+1),a=d?a.substring(0,f+1)+b+"="+c+(0>e?";":a.substring(e)):a.substring(0,f)+(0>e?";":a.substring(e)))}return a},setCellStyleFlags:function(a,b,c,d,e){if(null!=b&&0<b.length){a.beginUpdate();try{for(var f=0;f<b.length;f++)if(null!= +b[f]){var g=mxUtils.setStyleFlag(a.getStyle(b[f]),c,d,e);a.setStyle(b[f],g)}}finally{a.endUpdate()}}},setStyleFlag:function(a,b,c,d){if(null==a||0==a.length)a=d||null==d?b+"="+c:b+"=0";else{var e=a.indexOf(b+"=");if(0>e)e=";"==a.charAt(a.length-1)?"":";",a=d||null==d?a+e+b+"="+c:a+e+b+"=0";else{var f=a.indexOf(";",e),g;g=0>f?a.substring(e+b.length+1):a.substring(e+b.length+1,f);g=null==d?parseInt(g)^c:d?parseInt(g)|c:parseInt(g)&~c;a=a.substring(0,e)+b+"="+g+(0<=f?a.substring(f):"")}}return a},getAlignmentAsPoint:function(a, +b){var c=0,d=0;a==mxConstants.ALIGN_CENTER?c=-.5:a==mxConstants.ALIGN_RIGHT&&(c=-1);b==mxConstants.ALIGN_MIDDLE?d=-.5:b==mxConstants.ALIGN_BOTTOM&&(d=-1);return new mxPoint(c,d)},getSizeForString:function(a,b,c,d){b=null!=b?b:mxConstants.DEFAULT_FONTSIZE;c=null!=c?c:mxConstants.DEFAULT_FONTFAMILY;var e=document.createElement("div");e.style.fontFamily=c;e.style.fontSize=Math.round(b)+"px";e.style.lineHeight=Math.round(b*mxConstants.LINE_HEIGHT)+"px";e.style.position="absolute";e.style.visibility="hidden"; +e.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";e.style.zoom="1";null!=d?(e.style.width=d+"px",e.style.whiteSpace="normal"):e.style.whiteSpace="nowrap";e.innerHTML=a;document.body.appendChild(e);a=new mxRectangle(0,0,e.offsetWidth,e.offsetHeight);document.body.removeChild(e);return a},getViewXml:function(a,b,c,d,e){d=null!=d?d:0;e=null!=e?e:0;b=null!=b?b:1;null==c&&(c=[a.getModel().getRoot()]);var f=a.getView(),g=null,h=f.isEventsEnabled();f.setEventsEnabled(!1);var k=f.drawPane,l=f.overlayPane; +a.dialect==mxConstants.DIALECT_SVG?(f.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),f.canvas.appendChild(f.drawPane),f.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(f.drawPane=f.drawPane.cloneNode(!1),f.canvas.appendChild(f.drawPane),f.overlayPane=f.overlayPane.cloneNode(!1));f.canvas.appendChild(f.overlayPane);var m=f.getTranslate();f.translate=new mxPoint(d,e);b=new mxTemporaryCellStates(a.getView(),b,c);try{g=(new mxCodec).encode(a.getView())}finally{b.destroy(),f.translate= +m,f.canvas.removeChild(f.drawPane),f.canvas.removeChild(f.overlayPane),f.drawPane=k,f.overlayPane=l,f.setEventsEnabled(h)}return g},getScaleForPageCount:function(a,b,c,d){if(1>a)return 1;c=null!=c?c:mxConstants.PAGE_FORMAT_A4_PORTRAIT;d=null!=d?d:0;var e=c.width-2*d;c=c.height-2*d;d=b.getGraphBounds().clone();b=b.getView().getScale();d.width/=b;d.height/=b;b=d.width;var f=Math.sqrt(a);d=Math.sqrt(b/d.height/(e/c));c=f*d;d=f/d;if(1>c&&d>a){var g=d/a;d=a;c/=g}1>d&&c>a&&(g=c/a,c=a,d/=g);g=Math.ceil(c)* +Math.ceil(d);for(f=0;g>a;){var g=Math.floor(c)/c,h=Math.floor(d)/d;1==g&&(g=Math.floor(c-1)/c);1==h&&(h=Math.floor(d-1)/d);g=g>h?g:h;c*=g;d*=g;g=Math.ceil(c)*Math.ceil(d);f++;if(10<f)break}return e*c/b*.99999},show:function(a,b,c,d,e,f){c=null!=c?c:0;d=null!=d?d:0;null==b?b=window.open().document:b.open();9==document.documentMode&&b.writeln('\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=9"><![endif]--\x3e');var g=a.getGraphBounds(),h=Math.ceil(c-g.x),k=Math.ceil(d-g.y);null==e&&(e= +Math.ceil(g.width+c)+Math.ceil(Math.ceil(g.x)-g.x));null==f&&(f=Math.ceil(g.height+d)+Math.ceil(Math.ceil(g.y)-g.y));if(mxClient.IS_IE||11==document.documentMode){d="<html><head>";g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)d+=g[c].outerHTML;d+="<style>";for(c=0;c<document.styleSheets.length;c++)try{d+=document.styleSheets[c].cssText}catch(l){}d=d+'</style></head><body style="margin:0px;">'+('<div style="position:absolute;overflow:hidden;width:'+e+"px;height:"+f+'px;"><div style="position:relative;left:'+ +h+"px;top:"+k+'px;">')+a.container.innerHTML;b.writeln(d+"</div></div></body><html>");b.close()}else{b.writeln("<html><head>");g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)b.writeln(mxUtils.getOuterHtml(g[c]));d=document.getElementsByTagName("link");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));d=document.getElementsByTagName("style");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));b.writeln('</head><body style="margin:0px;"></body></html>');b.close(); +c=b.createElement("div");c.position="absolute";c.overflow="hidden";c.style.width=e+"px";c.style.height=f+"px";e=b.createElement("div");e.style.position="absolute";e.style.left=h+"px";e.style.top=k+"px";f=a.container.firstChild;for(d=null;null!=f;)g=f.cloneNode(!0),f==a.view.drawPane.ownerSVGElement?(c.appendChild(g),d=g):e.appendChild(g),f=f.nextSibling;b.body.appendChild(c);null!=e.firstChild&&b.body.appendChild(e);null!=d&&(d.style.minWidth="",d.style.minHeight="",d.firstChild.setAttribute("transform", +"translate("+h+","+k+")"))}mxUtils.removeCursors(b.body);return b},printScreen:function(a){var b=window.open();a.getGraphBounds();mxUtils.show(a,b.document);a=function(){b.focus();b.print();b.close()};mxClient.IS_GC?b.setTimeout(a,500):a()},popup:function(a,b){if(b){var c=document.createElement("div");c.style.overflow="scroll";c.style.width="636px";c.style.height="460px";var d=document.createElement("pre");d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g," ");c.appendChild(d); +c=new mxWindow("Popup Window",c,document.body.clientWidth/2-320,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight)/2-240,640,480,!1,!0);c.setClosable(!0);c.setVisible(!0)}else mxClient.IS_NS?(c=window.open(),c.document.writeln("<pre>"+mxUtils.htmlEntities(a)+"</pre"),c.document.close()):(c=window.open(),d=c.document.createElement("pre"),d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g," "),c.document.body.appendChild(d))},alert:function(a){alert(a)}, +prompt:function(a,b){return prompt(a,null!=b?b:"")},confirm:function(a){return confirm(a)},error:function(a,b,c,d){var e=document.createElement("div");e.style.padding="20px";var f=document.createElement("img");f.setAttribute("src",d||mxUtils.errorImage);f.setAttribute("valign","bottom");f.style.verticalAlign="middle";e.appendChild(f);e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));mxUtils.write(e,a);a=document.body.clientWidth; +d=document.body.clientHeight||document.documentElement.clientHeight;var g=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,e,(a-b)/2,d/4,b,null,!1,!0);c&&(mxUtils.br(e),b=document.createElement("p"),c=document.createElement("button"),mxClient.IS_IE?c.style.cssText="float:right":c.setAttribute("style","float:right"),mxEvent.addListener(c,"click",function(a){g.destroy()}),mxUtils.write(c,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),b.appendChild(c),e.appendChild(b), +mxUtils.br(e),g.setClosable(!0));g.setVisible(!0);return g},makeDraggable:function(a,b,c,d,e,f,g,h,k,l){a=new mxDragSource(a,c);a.dragOffset=new mxPoint(null!=e?e:0,null!=f?f:mxConstants.TOOLTIP_VERTICAL_OFFSET);a.autoscroll=g;a.setGuidesEnabled(!1);null!=k&&(a.highlightDropTargets=k);null!=l&&(a.getDropTarget=l);a.getGraphForEvent=function(a){return"function"==typeof b?b(a):b};null!=d&&(a.createDragElement=function(){return d.cloneNode(!0)},h&&(a.createPreviewElement=function(a){var b=d.cloneNode(!0), +c=parseInt(b.style.width),e=parseInt(b.style.height);b.style.width=Math.round(c*a.view.scale)+"px";b.style.height=Math.round(e*a.view.scale)+"px";return b}));return a}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml", NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",VML_SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",OUTLINE_HIGHLIGHT_COLOR:"#00FF00", OUTLINE_HIGHLIGHT_STROKEWIDTH:5,HIGHLIGHT_STROKEWIDTH:3,HIGHLIGHT_SIZE:2,HIGHLIGHT_OPACITY:100,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_TERMINAL_HANDLE:"pointer",CURSOR_BEND_HANDLE:"crosshair",CURSOR_VIRTUAL_BEND_HANDLE:"crosshair",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00", VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:6,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF", @@ -400,11 +400,11 @@ mxSvgCanvas2D.prototype.updateText=function(a,b,c,d,e,f,g,h,k,l,m){if(null!=m&&n q,m.mxCachedFinalOffsetHeight=g);q+=0;g-=2;k&&(g=Math.min(g,d),q=Math.min(q,c));"width"==h?d=g:"fill"!=h&&(c=q,d=g);g=k=0;e==mxConstants.ALIGN_CENTER?k-=c/2:e==mxConstants.ALIGN_RIGHT&&(k-=c);a+=k;f==mxConstants.ALIGN_MIDDLE?g-=d/2:f==mxConstants.ALIGN_BOTTOM&&(g-=d);"fill"!=h&&mxClient.IS_FF&&mxClient.IS_WIN&&(g-=2);b+=g;e=1!=r.scale?"scale("+r.scale+")":"";0!=r.rotation&&this.rotateHtml?(e+="rotate("+r.rotation+","+c/2+","+d/2+")",b=this.rotatePoint((a+c/2)*r.scale,(b+d/2)*r.scale,r.rotation,r.rotationCx, r.rotationCy),a=b.x-c*r.scale/2,b=b.y-d*r.scale/2):(a*=r.scale,b*=r.scale);0!=l&&(e+="rotate("+l+","+-k+","+-g+")");m.setAttribute("transform","translate("+Math.round(a)+","+Math.round(b)+")"+e);n.setAttribute("width",Math.round(Math.max(1,c)));n.setAttribute("height",Math.round(Math.max(1,d)))}}; mxSvgCanvas2D.prototype.text=function(a,b,c,d,e,f,g,h,k,l,m,n,p){if(this.textEnabled&&null!=e){n=null!=n?n:0;var r=this.state;a+=r.dx;b+=r.dy;if(this.foEnabled&&"html"==k){var q="vertical-align:top;";m?q+="overflow:hidden;max-height:"+Math.round(d)+"px;max-width:"+Math.round(c)+"px;":"fill"==l?q+="width:"+Math.round(c+1)+"px;height:"+Math.round(d+1)+"px;overflow:hidden;":"width"==l&&(q+="width:"+Math.round(c+1)+"px;",0<d&&(q+="max-height:"+Math.round(d)+"px;overflow:hidden;"));var q=h&&0<c?q+("width:"+ -Math.round(c+1)+"px;white-space:normal;word-wrap:"+mxConstants.WORD_WRAP+";"):q+"white-space:nowrap;",t=this.createElement("g");1>r.alpha&&t.setAttribute("opacity",r.alpha);var z=this.createElement("foreignObject");z.setAttribute("style","overflow:visible;");z.setAttribute("pointer-events","all");q=this.createDiv(e,f,g,q,l);if(null!=q){null!=p&&q.setAttribute("dir",p);t.appendChild(z);this.root.appendChild(t);var w,x;p=w=2;if(!mxClient.IS_IE||9!=document.documentMode&&mxClient.IS_SVG){this.root.ownerDocument!= +Math.round(c+1)+"px;white-space:normal;word-wrap:"+mxConstants.WORD_WRAP+";"):q+"white-space:nowrap;",t=this.createElement("g");1>r.alpha&&t.setAttribute("opacity",r.alpha);var z=this.createElement("foreignObject");z.setAttribute("style","overflow:visible;");z.setAttribute("pointer-events","all");q=this.createDiv(e,f,g,q,l);if(null!=q){null!=p&&q.setAttribute("dir",p);t.appendChild(z);this.root.appendChild(t);var x,w;p=x=2;if(!mxClient.IS_IE||9!=document.documentMode&&mxClient.IS_SVG){this.root.ownerDocument!= document?(q.style.visibility="hidden",document.body.appendChild(q)):z.appendChild(q);var y=q;null!=y.firstChild&&"DIV"==y.firstChild.nodeName&&(y=y.firstChild,h&&"break-word"==q.style.wordWrap&&(y.style.width="100%"));u=y.offsetWidth;0==u&&q.parentNode==z&&(q.style.visibility="hidden",document.body.appendChild(q),u=y.offsetWidth);this.cacheOffsetSize&&(t.mxCachedOffsetWidth=u);!m&&h&&0<c&&this.root.ownerDocument!=document&&"fill"!=l&&"width"!=l&&(D=q.style.whiteSpace,q.style.whiteSpace="nowrap",u< -y.offsetWidth&&(q.style.whiteSpace=D));w=u+w-1;h&&"fill"!=l&&"width"!=l&&(m&&(w=Math.min(w,c)),q.style.width=w+"px");w=y.offsetWidth;x=y.offsetHeight;this.cacheOffsetSize&&(t.mxCachedFinalOffsetWidth=w,t.mxCachedFinalOffsetHeight=x);x-=p;q.parentNode!=z&&(z.appendChild(q),q.style.visibility="")}else{y=document.createElement("div");y.style.cssText=q.getAttribute("style");y.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";y.style.position="absolute";y.style.visibility="hidden";x=document.createElement("div"); -x.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";x.style.wordWrap=mxConstants.WORD_WRAP;x.innerHTML=mxUtils.isNode(e)?e.outerHTML:e;y.appendChild(x);document.body.appendChild(y);8!=document.documentMode&&9!=document.documentMode&&null!=r.fontBorderColor&&(w+=2,p+=2);if(h&&0<c){var u=x.offsetWidth;padDx=0;if(!m&&h&&0<c&&this.root.ownerDocument!=document&&"fill"!=l){var D=y.style.whiteSpace;x.style.whiteSpace="nowrap";u<x.offsetWidth&&(y.style.whiteSpace=D)}m&&(u=Math.min(u,c));y.style.width= -u+"px";w=x.offsetWidth+w+padDx;x=x.offsetHeight+p;y.style.display="inline-block";y.style.position="";y.style.visibility="";y.style.width=w+"px";q.setAttribute("style",y.style.cssText)}else w=x.offsetWidth+w,x=x.offsetHeight+p;y.parentNode.removeChild(y);z.appendChild(q)}m&&(x=Math.min(x,d),w=Math.min(w,c));"width"==l?d=x:"fill"!=l&&(c=w,d=x);1>r.alpha&&t.setAttribute("opacity",r.alpha);p=q=0;f==mxConstants.ALIGN_CENTER?q-=c/2:f==mxConstants.ALIGN_RIGHT&&(q-=c);a+=q;g==mxConstants.ALIGN_MIDDLE?p-= +y.offsetWidth&&(q.style.whiteSpace=D));x=u+x-1;h&&"fill"!=l&&"width"!=l&&(m&&(x=Math.min(x,c)),q.style.width=x+"px");x=y.offsetWidth;w=y.offsetHeight;this.cacheOffsetSize&&(t.mxCachedFinalOffsetWidth=x,t.mxCachedFinalOffsetHeight=w);w-=p;q.parentNode!=z&&(z.appendChild(q),q.style.visibility="")}else{y=document.createElement("div");y.style.cssText=q.getAttribute("style");y.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";y.style.position="absolute";y.style.visibility="hidden";w=document.createElement("div"); +w.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";w.style.wordWrap=mxConstants.WORD_WRAP;w.innerHTML=mxUtils.isNode(e)?e.outerHTML:e;y.appendChild(w);document.body.appendChild(y);8!=document.documentMode&&9!=document.documentMode&&null!=r.fontBorderColor&&(x+=2,p+=2);if(h&&0<c){var u=w.offsetWidth;padDx=0;if(!m&&h&&0<c&&this.root.ownerDocument!=document&&"fill"!=l){var D=y.style.whiteSpace;w.style.whiteSpace="nowrap";u<w.offsetWidth&&(y.style.whiteSpace=D)}m&&(u=Math.min(u,c));y.style.width= +u+"px";x=w.offsetWidth+x+padDx;w=w.offsetHeight+p;y.style.display="inline-block";y.style.position="";y.style.visibility="";y.style.width=x+"px";q.setAttribute("style",y.style.cssText)}else x=w.offsetWidth+x,w=w.offsetHeight+p;y.parentNode.removeChild(y);z.appendChild(q)}m&&(w=Math.min(w,d),x=Math.min(x,c));"width"==l?d=w:"fill"!=l&&(c=x,d=w);1>r.alpha&&t.setAttribute("opacity",r.alpha);p=q=0;f==mxConstants.ALIGN_CENTER?q-=c/2:f==mxConstants.ALIGN_RIGHT&&(q-=c);a+=q;g==mxConstants.ALIGN_MIDDLE?p-= d/2:g==mxConstants.ALIGN_BOTTOM&&(p-=d);"fill"!=l&&mxClient.IS_FF&&mxClient.IS_WIN&&(p-=2);b+=p;y=1!=r.scale?"scale("+r.scale+")":"";0!=r.rotation&&this.rotateHtml?(y+="rotate("+r.rotation+","+c/2+","+d/2+")",b=this.rotatePoint((a+c/2)*r.scale,(b+d/2)*r.scale,r.rotation,r.rotationCx,r.rotationCy),a=b.x-c*r.scale/2,b=b.y-d*r.scale/2):(a*=r.scale,b*=r.scale);0!=n&&(y+="rotate("+n+","+-q+","+-p+")");t.setAttribute("transform","translate("+(Math.round(a)+this.foOffset)+","+(Math.round(b)+this.foOffset)+ ")"+y);z.setAttribute("width",Math.round(Math.max(1,c)));z.setAttribute("height",Math.round(Math.max(1,d)));this.root.ownerDocument!=document&&(a=this.createAlternateContent(z,a,b,c,d,e,f,g,h,k,l,m,n),null!=a&&(z.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility"),c=this.createElement("switch"),c.appendChild(z),c.appendChild(a),t.appendChild(c)))}}else this.plainText(a,b,c,d,e,f,g,h,l,m,n,p)}}; mxSvgCanvas2D.prototype.createClip=function(a,b,c,d){a=Math.round(a);b=Math.round(b);c=Math.round(c);d=Math.round(d);for(var e="mx-clip-"+a+"-"+b+"-"+c+"-"+d,f=0,g=e+"-"+f;null!=document.getElementById(g);)g=e+"-"+ ++f;clip=this.createElement("clipPath");clip.setAttribute("id",g);e=this.createElement("rect");e.setAttribute("x",a);e.setAttribute("y",b);e.setAttribute("width",c);e.setAttribute("height",d);clip.appendChild(e);return clip}; @@ -438,11 +438,11 @@ mxVmlCanvas2D.prototype.createDiv=function(a,b,c,d){c=this.createElement("div"); f,c.innerHTML=a);a=c.style;a.fontSize=e.fontSize/this.vmlScale+"px";a.fontFamily=e.fontFamily;a.color=e.fontColor;a.verticalAlign="top";a.textAlign=b||"left";a.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?e.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale+"px":mxConstants.LINE_HEIGHT;(e.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a.fontWeight="bold");(e.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a.fontStyle="italic");(e.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&& (a.textDecoration="underline");return c}; mxVmlCanvas2D.prototype.text=function(a,b,c,d,e,f,g,h,k,l,m,n,p){if(this.textEnabled&&null!=e){var r=this.state;if("html"==k){null!=r.rotation&&(b=this.rotatePoint(a,b,r.rotation,r.rotationCx,r.rotationCy),a=b.x,b=b.y);8!=document.documentMode||mxClient.IS_EM?(a*=r.scale,b*=r.scale):(a+=r.dx,b+=r.dy,"fill"!=l&&g==mxConstants.ALIGN_TOP&&--b);k=8!=document.documentMode||mxClient.IS_EM?this.createElement("div"):this.createVmlElement("group");k.style.position="absolute";k.style.display="inline";k.style.left= -this.format(a)+"px";k.style.top=this.format(b)+"px";k.style.zoom=r.scale;var q=this.createElement("div");q.style.position="relative";q.style.display="inline";var t=mxUtils.getAlignmentAsPoint(f,g),z=t.x,t=t.y;e=this.createDiv(e,f,g,l);f=this.createElement("div");null!=p&&e.setAttribute("dir",p);if(h&&0<c){if(m||(e.style.width=Math.round(c)+"px"),e.style.wordWrap=mxConstants.WORD_WRAP,e.style.whiteSpace="normal","break-word"==e.style.wordWrap){var w=e;null!=w.firstChild&&"DIV"==w.firstChild.nodeName&& -(w.firstChild.style.width="100%")}}else e.style.whiteSpace="nowrap";n=r.rotation+(n||0);this.rotateHtml&&0!=n?(f.style.display="inline",f.style.zoom="1",f.appendChild(e),8!=document.documentMode||mxClient.IS_EM||"DIV"==this.root.nodeName?k.appendChild(f):(q.appendChild(f),k.appendChild(q))):8!=document.documentMode||mxClient.IS_EM?(e.style.display="inline",k.appendChild(e)):(q.appendChild(e),k.appendChild(q));"DIV"!=this.root.nodeName?(p=this.createVmlElement("rect"),p.stroked="false",p.filled="false", -p.appendChild(k),this.root.appendChild(p)):this.root.appendChild(k);m?(e.style.overflow="hidden",e.style.width=Math.round(c)+"px",mxClient.IS_QUIRKS||(e.style.maxHeight=Math.round(d)+"px")):"fill"==l?(e.style.overflow="hidden",e.style.width=Math.max(0,c)+1+"px",e.style.height=Math.max(0,d)+1+"px"):"width"==l&&(e.style.overflow="hidden",e.style.width=Math.max(0,c)+1+"px",e.style.maxHeight=Math.max(0,d)+1+"px");if(this.rotateHtml&&0!=n){w=Math.PI/180*n;n=parseFloat(parseFloat(Math.cos(w)).toFixed(8)); -p=parseFloat(parseFloat(Math.sin(-w)).toFixed(8));w%=2*Math.PI;0>w&&(w+=2*Math.PI);w%=Math.PI;w>Math.PI/2&&(w=Math.PI-w);g=Math.cos(w);var x=Math.sin(w);8!=document.documentMode||mxClient.IS_EM||(e.style.display="inline-block",f.style.display="inline-block",q.style.display="inline-block");e.style.visibility="hidden";e.style.position="absolute";document.body.appendChild(e);q=e;null!=q.firstChild&&"DIV"==q.firstChild.nodeName&&(q=q.firstChild);w=q.offsetWidth+3;q=q.offsetHeight;m?(c=Math.min(c,w),q= -Math.min(q,d)):c=w;h&&(e.style.width=c+"px");mxClient.IS_QUIRKS&&(m||"width"==l)&&q>d&&(q=d,e.style.height=q+"px");d=q;m=(d-d*g+c*-x)/2-p*c*(z+.5)+n*d*(t+.5);h=(c-c*g+d*-x)/2+n*c*(z+.5)+p*d*(t+.5);"group"==k.nodeName&&"DIV"==this.root.nodeName?(l=this.createElement("div"),l.style.display="inline-block",l.style.position="absolute",l.style.left=this.format(a+(h-c/2)*r.scale)+"px",l.style.top=this.format(b+(m-d/2)*r.scale)+"px",k.parentNode.appendChild(l),l.appendChild(k)):(r=8!=document.documentMode|| +this.format(a)+"px";k.style.top=this.format(b)+"px";k.style.zoom=r.scale;var q=this.createElement("div");q.style.position="relative";q.style.display="inline";var t=mxUtils.getAlignmentAsPoint(f,g),z=t.x,t=t.y;e=this.createDiv(e,f,g,l);f=this.createElement("div");null!=p&&e.setAttribute("dir",p);if(h&&0<c){if(m||(e.style.width=Math.round(c)+"px"),e.style.wordWrap=mxConstants.WORD_WRAP,e.style.whiteSpace="normal","break-word"==e.style.wordWrap){var x=e;null!=x.firstChild&&"DIV"==x.firstChild.nodeName&& +(x.firstChild.style.width="100%")}}else e.style.whiteSpace="nowrap";n=r.rotation+(n||0);this.rotateHtml&&0!=n?(f.style.display="inline",f.style.zoom="1",f.appendChild(e),8!=document.documentMode||mxClient.IS_EM||"DIV"==this.root.nodeName?k.appendChild(f):(q.appendChild(f),k.appendChild(q))):8!=document.documentMode||mxClient.IS_EM?(e.style.display="inline",k.appendChild(e)):(q.appendChild(e),k.appendChild(q));"DIV"!=this.root.nodeName?(p=this.createVmlElement("rect"),p.stroked="false",p.filled="false", +p.appendChild(k),this.root.appendChild(p)):this.root.appendChild(k);m?(e.style.overflow="hidden",e.style.width=Math.round(c)+"px",mxClient.IS_QUIRKS||(e.style.maxHeight=Math.round(d)+"px")):"fill"==l?(e.style.overflow="hidden",e.style.width=Math.max(0,c)+1+"px",e.style.height=Math.max(0,d)+1+"px"):"width"==l&&(e.style.overflow="hidden",e.style.width=Math.max(0,c)+1+"px",e.style.maxHeight=Math.max(0,d)+1+"px");if(this.rotateHtml&&0!=n){x=Math.PI/180*n;n=parseFloat(parseFloat(Math.cos(x)).toFixed(8)); +p=parseFloat(parseFloat(Math.sin(-x)).toFixed(8));x%=2*Math.PI;0>x&&(x+=2*Math.PI);x%=Math.PI;x>Math.PI/2&&(x=Math.PI-x);g=Math.cos(x);var w=Math.sin(x);8!=document.documentMode||mxClient.IS_EM||(e.style.display="inline-block",f.style.display="inline-block",q.style.display="inline-block");e.style.visibility="hidden";e.style.position="absolute";document.body.appendChild(e);q=e;null!=q.firstChild&&"DIV"==q.firstChild.nodeName&&(q=q.firstChild);x=q.offsetWidth+3;q=q.offsetHeight;m?(c=Math.min(c,x),q= +Math.min(q,d)):c=x;h&&(e.style.width=c+"px");mxClient.IS_QUIRKS&&(m||"width"==l)&&q>d&&(q=d,e.style.height=q+"px");d=q;m=(d-d*g+c*-w)/2-p*c*(z+.5)+n*d*(t+.5);h=(c-c*g+d*-w)/2+n*c*(z+.5)+p*d*(t+.5);"group"==k.nodeName&&"DIV"==this.root.nodeName?(l=this.createElement("div"),l.style.display="inline-block",l.style.position="absolute",l.style.left=this.format(a+(h-c/2)*r.scale)+"px",l.style.top=this.format(b+(m-d/2)*r.scale)+"px",k.parentNode.appendChild(l),l.appendChild(k)):(r=8!=document.documentMode|| mxClient.IS_EM?r.scale:1,k.style.left=this.format(a+(h-c/2)*r)+"px",k.style.top=this.format(b+(m-d/2)*r)+"px");f.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+n+", M12="+p+", M21="+-p+", M22="+n+", sizingMethod='auto expand')";f.style.backgroundColor=this.rotatedHtmlBackground;1>this.state.alpha&&(f.style.filter+="alpha(opacity="+100*this.state.alpha+")");f.appendChild(e);e.style.position="";e.style.visibility=""}else 8!=document.documentMode||mxClient.IS_EM?(e.style.verticalAlign= "top",1>this.state.alpha&&(k.style.filter="alpha(opacity="+100*this.state.alpha+")"),r=e.parentNode,e.style.visibility="hidden",document.body.appendChild(e),c=e.offsetWidth,q=e.offsetHeight,mxClient.IS_QUIRKS&&m&&q>d&&(q=d,e.style.height=q+"px"),d=q,e.style.visibility="",r.appendChild(e),k.style.left=this.format(a+c*z*this.state.scale)+"px",k.style.top=this.format(b+d*t*this.state.scale)+"px"):(1>this.state.alpha&&(e.style.filter="alpha(opacity="+100*this.state.alpha+")"),q.style.left=100*z+"%",q.style.top= 100*t+"%")}else this.plainText(a,b,c,d,mxUtils.htmlEntities(e,!1),f,g,h,k,l,m,n,p)}}; @@ -524,19 +524,19 @@ mxRhombus.prototype.paintVertexShape=function(a,b,c,d,e){var f=d/2,g=e/2,h=mxUti mxPolyline.prototype.getShapeRotation=function(){return 0};mxPolyline.prototype.isPaintBoundsInverted=function(){return!1};mxPolyline.prototype.paintEdgeShape=function(a,b){null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(a,b,this.isRounded):this.paintCurvedLine(a,b)};mxPolyline.prototype.paintLine=function(a,b,c){var d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;a.begin();this.addPoints(a,b,c,d,!1);a.stroke()}; mxPolyline.prototype.paintCurvedLine=function(a,b){a.begin();var c=b[0],d=b.length;a.moveTo(c.x,c.y);for(c=1;c<d-2;c++){var e=b[c],f=b[c+1];a.quadTo(e.x,e.y,(e.x+f.x)/2,(e.y+f.y)/2)}e=b[d-2];f=b[d-1];a.quadTo(e.x,e.y,f.x,f.y);a.stroke()}; function mxArrow(a,b,c,d,e,f,g){mxShape.call(this);this.points=a;this.fill=b;this.stroke=c;this.strokewidth=null!=d?d:1;this.arrowWidth=null!=e?e:mxConstants.ARROW_WIDTH;this.spacing=null!=f?f:mxConstants.ARROW_SPACING;this.endSize=null!=g?g:mxConstants.ARROW_SIZE}mxUtils.extend(mxArrow,mxShape);mxArrow.prototype.augmentBoundingBox=function(a){mxShape.prototype.augmentBoundingBox.apply(this,arguments);a.grow((Math.max(this.arrowWidth,this.endSize)/2+this.strokewidth)*this.scale)}; -mxArrow.prototype.paintEdgeShape=function(a,b){var c=mxConstants.ARROW_SPACING,d=mxConstants.ARROW_WIDTH,e=b[0],f=b[b.length-1],g=f.x-e.x,h=f.y-e.y,k=Math.sqrt(g*g+h*h),l=k-2*c-mxConstants.ARROW_SIZE,g=g/k,h=h/k,k=d*h/3,d=-d*g/3,m=e.x-k/2+c*g,e=e.y-d/2+c*h,n=m+k,p=e+d,r=n+l*g,l=p+l*h,q=r+k,t=l+d,z=q-3*k,w=t-3*d;a.begin();a.moveTo(m,e);a.lineTo(n,p);a.lineTo(r,l);a.lineTo(q,t);a.lineTo(f.x-c*g,f.y-c*h);a.lineTo(z,w);a.lineTo(z+k,w+d);a.close();a.fillAndStroke()}; +mxArrow.prototype.paintEdgeShape=function(a,b){var c=mxConstants.ARROW_SPACING,d=mxConstants.ARROW_WIDTH,e=b[0],f=b[b.length-1],g=f.x-e.x,h=f.y-e.y,k=Math.sqrt(g*g+h*h),l=k-2*c-mxConstants.ARROW_SIZE,g=g/k,h=h/k,k=d*h/3,d=-d*g/3,m=e.x-k/2+c*g,e=e.y-d/2+c*h,n=m+k,p=e+d,r=n+l*g,l=p+l*h,q=r+k,t=l+d,z=q-3*k,x=t-3*d;a.begin();a.moveTo(m,e);a.lineTo(n,p);a.lineTo(r,l);a.lineTo(q,t);a.lineTo(f.x-c*g,f.y-c*h);a.lineTo(z,x);a.lineTo(z+k,x+d);a.close();a.fillAndStroke()}; function mxArrowConnector(a,b,c,d,e,f,g){mxShape.call(this);this.points=a;this.fill=b;this.stroke=c;this.strokewidth=null!=d?d:1;this.arrowWidth=null!=e?e:mxConstants.ARROW_WIDTH;this.arrowSpacing=null!=f?f:mxConstants.ARROW_SPACING;this.startSize=mxConstants.ARROW_SIZE/5;this.endSize=mxConstants.ARROW_SIZE/5}mxUtils.extend(mxArrowConnector,mxShape);mxArrowConnector.prototype.useSvgBoundingBox=!0; mxArrowConnector.prototype.resetStyles=function(){mxShape.prototype.resetStyles.apply(this,arguments);this.arrowSpacing=mxConstants.ARROW_SPACING};mxArrowConnector.prototype.apply=function(a){mxShape.prototype.apply.apply(this,arguments);null!=this.style&&(this.startSize=3*mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5),this.endSize=3*mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5))}; mxArrowConnector.prototype.augmentBoundingBox=function(a){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var b=this.getEdgeWidth();this.isMarkerStart()&&(b=Math.max(b,this.getStartArrowWidth()));this.isMarkerEnd()&&(b=Math.max(b,this.getEndArrowWidth()));a.grow((b/2+this.strokewidth)*this.scale)}; mxArrowConnector.prototype.paintEdgeShape=function(a,b){var c=this.strokewidth;this.outline&&(c=Math.max(1,mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth)));for(var d=this.getStartArrowWidth()+c,e=this.getEndArrowWidth()+c,f=this.outline?this.getEdgeWidth()+c:this.getEdgeWidth(),g=this.isOpenEnded(),h=this.isMarkerStart(),k=this.isMarkerEnd(),l=g?0:this.arrowSpacing+c/2,m=this.startSize+c,c=this.endSize+c,n=this.isArrowRounded(),p=b[b.length-1],r=1;r<b.length-1&&b[r].x== -b[0].x&&b[r].y==b[0].y;)r++;var q=b[r].x-b[0].x,r=b[r].y-b[0].y,t=Math.sqrt(q*q+r*r);if(0!=t){var z=q/t,w,x=z,y=r/t,u,D=y,t=f*y,F=-f*z,E=[];n?a.setLineJoin("round"):2<b.length&&a.setMiterLimit(1.42);a.begin();q=z;r=y;if(h&&!g)this.paintMarker(a,b[0].x,b[0].y,z,y,m,d,f,l,!0);else{w=b[0].x+t/2+l*z;u=b[0].y+F/2+l*y;var B=b[0].x-t/2+l*z,A=b[0].y-F/2+l*y;g?(a.moveTo(w,u),E.push(function(){a.lineTo(B,A)})):(a.moveTo(B,A),a.lineTo(w,u))}for(var C=u=w=0,t=0;t<b.length-2;t++)if(F=mxUtils.relativeCcw(b[t].x, -b[t].y,b[t+1].x,b[t+1].y,b[t+2].x,b[t+2].y),w=b[t+2].x-b[t+1].x,u=b[t+2].y-b[t+1].y,C=Math.sqrt(w*w+u*u),0!=C&&(x=w/C,D=u/C,tmp=Math.max(Math.sqrt((z*x+y*D+1)/2),.04),w=z+x,u=y+D,C=Math.sqrt(w*w+u*u),0!=C)){w/=C;u/=C;var C=Math.max(tmp,Math.min(this.strokewidth/200+.04,.35)),C=0!=F&&n?Math.max(.1,C):Math.max(tmp,.06),L=b[t+1].x+u*f/2/C,K=b[t+1].y-w*f/2/C;u=b[t+1].x-u*f/2/C;w=b[t+1].y+w*f/2/C;0!=F&&n?-1==F?(F=u+D*f,C=w-x*f,a.lineTo(u+y*f,w-z*f),a.quadTo(L,K,F,C),function(b,c){E.push(function(){a.lineTo(b, -c)})}(u,w)):(a.lineTo(L,K),function(b,c){var d=L-y*f,e=K+z*f,g=L-D*f,h=K+x*f;E.push(function(){a.quadTo(b,c,d,e)});E.push(function(){a.lineTo(g,h)})}(u,w)):(a.lineTo(L,K),function(b,c){E.push(function(){a.lineTo(b,c)})}(u,w));z=x;y=D}t=f*D;F=-f*x;if(k&&!g)this.paintMarker(a,p.x,p.y,-z,-y,c,e,f,l,!1);else{a.lineTo(p.x-l*x+t/2,p.y-l*D+F/2);var H=p.x-l*x-t/2,V=p.y-l*D-F/2;g?(a.moveTo(H,V),E.splice(0,0,function(){a.moveTo(H,V)})):a.lineTo(H,V)}for(t=E.length-1;0<=t;t--)E[t]();g?(a.end(),a.stroke()):(a.close(), +b[0].x&&b[r].y==b[0].y;)r++;var q=b[r].x-b[0].x,r=b[r].y-b[0].y,t=Math.sqrt(q*q+r*r);if(0!=t){var z=q/t,x,w=z,y=r/t,u,D=y,t=f*y,F=-f*z,E=[];n?a.setLineJoin("round"):2<b.length&&a.setMiterLimit(1.42);a.begin();q=z;r=y;if(h&&!g)this.paintMarker(a,b[0].x,b[0].y,z,y,m,d,f,l,!0);else{x=b[0].x+t/2+l*z;u=b[0].y+F/2+l*y;var B=b[0].x-t/2+l*z,A=b[0].y-F/2+l*y;g?(a.moveTo(x,u),E.push(function(){a.lineTo(B,A)})):(a.moveTo(B,A),a.lineTo(x,u))}for(var C=u=x=0,t=0;t<b.length-2;t++)if(F=mxUtils.relativeCcw(b[t].x, +b[t].y,b[t+1].x,b[t+1].y,b[t+2].x,b[t+2].y),x=b[t+2].x-b[t+1].x,u=b[t+2].y-b[t+1].y,C=Math.sqrt(x*x+u*u),0!=C&&(w=x/C,D=u/C,tmp=Math.max(Math.sqrt((z*w+y*D+1)/2),.04),x=z+w,u=y+D,C=Math.sqrt(x*x+u*u),0!=C)){x/=C;u/=C;var C=Math.max(tmp,Math.min(this.strokewidth/200+.04,.35)),C=0!=F&&n?Math.max(.1,C):Math.max(tmp,.06),L=b[t+1].x+u*f/2/C,K=b[t+1].y-x*f/2/C;u=b[t+1].x-u*f/2/C;x=b[t+1].y+x*f/2/C;0!=F&&n?-1==F?(F=u+D*f,C=x-w*f,a.lineTo(u+y*f,x-z*f),a.quadTo(L,K,F,C),function(b,c){E.push(function(){a.lineTo(b, +c)})}(u,x)):(a.lineTo(L,K),function(b,c){var d=L-y*f,e=K+z*f,g=L-D*f,h=K+w*f;E.push(function(){a.quadTo(b,c,d,e)});E.push(function(){a.lineTo(g,h)})}(u,x)):(a.lineTo(L,K),function(b,c){E.push(function(){a.lineTo(b,c)})}(u,x));z=w;y=D}t=f*D;F=-f*w;if(k&&!g)this.paintMarker(a,p.x,p.y,-z,-y,c,e,f,l,!1);else{a.lineTo(p.x-l*w+t/2,p.y-l*D+F/2);var I=p.x-l*w-t/2,V=p.y-l*D-F/2;g?(a.moveTo(I,V),E.splice(0,0,function(){a.moveTo(I,V)})):a.lineTo(I,V)}for(t=E.length-1;0<=t;t--)E[t]();g?(a.end(),a.stroke()):(a.close(), a.fillAndStroke());a.setShadow(!1);a.setMiterLimit(4);n&&a.setLineJoin("flat");2<b.length&&(a.setMiterLimit(4),h&&!g&&(a.begin(),this.paintMarker(a,b[0].x,b[0].y,q,r,m,d,f,l,!0),a.stroke(),a.end()),k&&!g&&(a.begin(),this.paintMarker(a,p.x,p.y,-z,-y,c,e,f,l,!0),a.stroke(),a.end()))}}; mxArrowConnector.prototype.paintMarker=function(a,b,c,d,e,f,g,h,k,l){g=h/g;var m=h*e/2;h=-h*d/2;var n=(k+f)*d;f=(k+f)*e;l?a.moveTo(b-m+n,c-h+f):a.lineTo(b-m+n,c-h+f);a.lineTo(b-m/g+n,c-h/g+f);a.lineTo(b+k*d,c+k*e);a.lineTo(b+m/g+n,c+h/g+f);a.lineTo(b+m+n,c+h+f)};mxArrowConnector.prototype.isArrowRounded=function(){return this.isRounded};mxArrowConnector.prototype.getStartArrowWidth=function(){return mxConstants.ARROW_WIDTH};mxArrowConnector.prototype.getEndArrowWidth=function(){return mxConstants.ARROW_WIDTH}; mxArrowConnector.prototype.getEdgeWidth=function(){return mxConstants.ARROW_WIDTH/3};mxArrowConnector.prototype.isOpenEnded=function(){return!1};mxArrowConnector.prototype.isMarkerStart=function(){return mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE};mxArrowConnector.prototype.isMarkerEnd=function(){return mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE}; -function mxText(a,b,c,d,e,f,g,h,k,l,m,n,p,r,q,t,z,w,x,y,u){mxShape.call(this);this.value=a;this.bounds=b;this.color=null!=e?e:"black";this.align=null!=c?c:mxConstants.ALIGN_CENTER;this.valign=null!=d?d:mxConstants.ALIGN_MIDDLE;this.family=null!=f?f:mxConstants.DEFAULT_FONTFAMILY;this.size=null!=g?g:mxConstants.DEFAULT_FONTSIZE;this.fontStyle=null!=h?h:mxConstants.DEFAULT_FONTSTYLE;this.spacing=parseInt(k||2);this.spacingTop=this.spacing+parseInt(l||0);this.spacingRight=this.spacing+parseInt(m||0); -this.spacingBottom=this.spacing+parseInt(n||0);this.spacingLeft=this.spacing+parseInt(p||0);this.horizontal=null!=r?r:!0;this.background=q;this.border=t;this.wrap=null!=z?z:!1;this.clipped=null!=w?w:!1;this.overflow=null!=x?x:"visible";this.labelPadding=null!=y?y:0;this.textDirection=u;this.rotation=0;this.updateMargin()}mxUtils.extend(mxText,mxShape);mxText.prototype.baseSpacingTop=0;mxText.prototype.baseSpacingBottom=0;mxText.prototype.baseSpacingLeft=0;mxText.prototype.baseSpacingRight=0; +function mxText(a,b,c,d,e,f,g,h,k,l,m,n,p,r,q,t,z,x,w,y,u){mxShape.call(this);this.value=a;this.bounds=b;this.color=null!=e?e:"black";this.align=null!=c?c:mxConstants.ALIGN_CENTER;this.valign=null!=d?d:mxConstants.ALIGN_MIDDLE;this.family=null!=f?f:mxConstants.DEFAULT_FONTFAMILY;this.size=null!=g?g:mxConstants.DEFAULT_FONTSIZE;this.fontStyle=null!=h?h:mxConstants.DEFAULT_FONTSTYLE;this.spacing=parseInt(k||2);this.spacingTop=this.spacing+parseInt(l||0);this.spacingRight=this.spacing+parseInt(m||0); +this.spacingBottom=this.spacing+parseInt(n||0);this.spacingLeft=this.spacing+parseInt(p||0);this.horizontal=null!=r?r:!0;this.background=q;this.border=t;this.wrap=null!=z?z:!1;this.clipped=null!=x?x:!1;this.overflow=null!=w?w:"visible";this.labelPadding=null!=y?y:0;this.textDirection=u;this.rotation=0;this.updateMargin()}mxUtils.extend(mxText,mxShape);mxText.prototype.baseSpacingTop=0;mxText.prototype.baseSpacingBottom=0;mxText.prototype.baseSpacingLeft=0;mxText.prototype.baseSpacingRight=0; mxText.prototype.replaceLinefeeds=!0;mxText.prototype.verticalTextRotation=-90;mxText.prototype.ignoreClippedStringSize=!0;mxText.prototype.ignoreStringSize=!1;mxText.prototype.textWidthPadding=8!=document.documentMode||mxClient.IS_EM?3:4;mxText.prototype.lastValue=null;mxText.prototype.cacheEnabled=!0;mxText.prototype.isParseVml=function(){return!1};mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode||mxClient.IS_EM};mxText.prototype.getSvgScreenOffset=function(){return 0}; mxText.prototype.checkBounds=function(){return!isNaN(this.scale)&&isFinite(this.scale)&&0<this.scale&&null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)}; mxText.prototype.paint=function(a,b){var c=this.scale,d=this.bounds.x/c,e=this.bounds.y/c,f=this.bounds.width/c,c=this.bounds.height/c;this.updateTransform(a,d,e,f,c);this.configureCanvas(a,d,e,f,c);var g=null!=this.state?this.state.unscaledWidth:null;if(b)null==this.node.firstChild||null!=g&&this.lastUnscaledWidth==g||a.invalidateCachedOffsetSize(this.node),a.updateText(d,e,f,c,this.align,this.valign,this.wrap,this.overflow,this.clipped,this.getTextRotation(),this.node);else{var h=mxUtils.isNode(this.value)|| @@ -732,9 +732,9 @@ mxMedianHybridCrossingReduction.prototype.execute=function(a){a=this.layout.getM h}else for(c++,e=0;e<this.nestedBestRanks.length;e++)for(f=a.ranks[e],g=0;g<f.length;g++)h=f[g],h.setGeneralPurposeVariable(e,g);if(0==d)break}c=[];d=[];for(b=0;b<a.maxRank+1;b++)d[b]=[],c[b]=d[b];for(b=0;b<this.nestedBestRanks.length;b++)for(e=0;e<this.nestedBestRanks[b].length;e++)d[b].push(this.nestedBestRanks[b][e]);a.ranks=c};mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(a){for(var b=a.ranks.length,c=0,d=1;d<b;d++)c+=this.calculateRankCrossing(d,a);return c}; mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(a,b){for(var c=0,d=b.ranks[a],e=b.ranks[a-1],f=[],g=0;g<d.length;g++){for(var h=d[g],k=h.getGeneralPurposeVariable(a),h=h.getPreviousLayerConnectedCells(a),l=[],m=0;m<h.length;m++){var n=h[m].getGeneralPurposeVariable(a-1);l.push(n)}l.sort(function(a,b){return a-b});f[k]=l}d=[];for(g=0;g<f.length;g++)d=d.concat(f[g]);for(f=1;f<e.length;)f<<=1;k=2*f-1;--f;e=[];for(g=0;g<k;++g)e[g]=0;for(g=0;g<d.length;g++)for(k=d[g]+f,++e[k];0< k;)k%2&&(c+=e[k+1]),k=k-1>>1,++e[k];return c}; -mxMedianHybridCrossingReduction.prototype.transpose=function(a,b){for(var c=!0,d=0;c&&10>d++;)for(var e=1==a%2&&1==d%2,c=!1,f=0;f<b.ranks.length;f++){for(var g=b.ranks[f],h=[],k=0;k<g.length;k++){var l=g[k],m=l.getGeneralPurposeVariable(f);0>m&&(m=k);h[m]=l}for(var n=null,p=null,r,q,t=null,z=null,w,x=null,k=0;k<g.length-1;k++){if(0==k){w=h[k];l=w.getNextLayerConnectedCells(f);m=w.getPreviousLayerConnectedCells(f);r=[];q=[];for(var y=0;y<l.length;y++)r[y]=l[y].getGeneralPurposeVariable(f+1);for(y= -0;y<m.length;y++)q[y]=m[y].getGeneralPurposeVariable(f-1)}else l=n,m=p,r=t,q=z,w=x;x=h[k+1];n=x.getNextLayerConnectedCells(f);p=x.getPreviousLayerConnectedCells(f);t=[];z=[];for(y=0;y<n.length;y++)t[y]=n[y].getGeneralPurposeVariable(f+1);for(y=0;y<p.length;y++)z[y]=p[y].getGeneralPurposeVariable(f-1);for(var u=0,D=0,y=0;y<r.length;y++)for(var F=0;F<t.length;F++)r[y]>t[F]&&u++,r[y]<t[F]&&D++;for(y=0;y<q.length;y++)for(F=0;F<z.length;F++)q[y]>z[F]&&u++,q[y]<z[F]&&D++;if(D<u||D==u&&e)n=w.getGeneralPurposeVariable(f), -w.setGeneralPurposeVariable(f,x.getGeneralPurposeVariable(f)),x.setGeneralPurposeVariable(f,n),n=l,p=m,t=r,z=q,x=w,e||(c=!0)}}};mxMedianHybridCrossingReduction.prototype.weightedMedian=function(a,b){var c=0==a%2;if(c)for(var d=b.maxRank-1;0<=d;d--)this.medianRank(d,c);else for(d=1;d<b.maxRank;d++)this.medianRank(d,c)}; +mxMedianHybridCrossingReduction.prototype.transpose=function(a,b){for(var c=!0,d=0;c&&10>d++;)for(var e=1==a%2&&1==d%2,c=!1,f=0;f<b.ranks.length;f++){for(var g=b.ranks[f],h=[],k=0;k<g.length;k++){var l=g[k],m=l.getGeneralPurposeVariable(f);0>m&&(m=k);h[m]=l}for(var n=null,p=null,r,q,t=null,z=null,x,w=null,k=0;k<g.length-1;k++){if(0==k){x=h[k];l=x.getNextLayerConnectedCells(f);m=x.getPreviousLayerConnectedCells(f);r=[];q=[];for(var y=0;y<l.length;y++)r[y]=l[y].getGeneralPurposeVariable(f+1);for(y= +0;y<m.length;y++)q[y]=m[y].getGeneralPurposeVariable(f-1)}else l=n,m=p,r=t,q=z,x=w;w=h[k+1];n=w.getNextLayerConnectedCells(f);p=w.getPreviousLayerConnectedCells(f);t=[];z=[];for(y=0;y<n.length;y++)t[y]=n[y].getGeneralPurposeVariable(f+1);for(y=0;y<p.length;y++)z[y]=p[y].getGeneralPurposeVariable(f-1);for(var u=0,D=0,y=0;y<r.length;y++)for(var F=0;F<t.length;F++)r[y]>t[F]&&u++,r[y]<t[F]&&D++;for(y=0;y<q.length;y++)for(F=0;F<z.length;F++)q[y]>z[F]&&u++,q[y]<z[F]&&D++;if(D<u||D==u&&e)n=x.getGeneralPurposeVariable(f), +x.setGeneralPurposeVariable(f,w.getGeneralPurposeVariable(f)),w.setGeneralPurposeVariable(f,n),n=l,p=m,t=r,z=q,w=x,e||(c=!0)}}};mxMedianHybridCrossingReduction.prototype.weightedMedian=function(a,b){var c=0==a%2;if(c)for(var d=b.maxRank-1;0<=d;d--)this.medianRank(d,c);else for(d=1;d<b.maxRank;d++)this.medianRank(d,c)}; mxMedianHybridCrossingReduction.prototype.medianRank=function(a,b){for(var c=this.nestedBestRanks[a].length,d=[],e=[],f=0;f<c;f++){var g=this.nestedBestRanks[a][f],h=new MedianCellSorter;h.cell=g;var k;k=b?g.getNextLayerConnectedCells(a):g.getPreviousLayerConnectedCells(a);var l;l=b?a+1:a-1;null!=k&&0!=k.length?(h.medianValue=this.medianValue(k,l),d.push(h)):e[g.getGeneralPurposeVariable(a)]=!0}d.sort(MedianCellSorter.prototype.compare);for(f=0;f<c;f++)null==e[f]&&(g=d.shift().cell,g.setGeneralPurposeVariable(a, f))};mxMedianHybridCrossingReduction.prototype.medianValue=function(a,b){for(var c=[],d=0,e=0;e<a.length;e++){var f=a[e];c[d++]=f.getGeneralPurposeVariable(b)}c.sort(function(a,b){return a-b});if(1==d%2)return c[Math.floor(d/2)];if(2==d)return(c[0]+c[1])/2;e=d/2;f=c[e-1]-c[0];d=c[d-1]-c[e];return(c[e-1]*d+c[e]*f)/(f+d)};function MedianCellSorter(){}MedianCellSorter.prototype.medianValue=0;MedianCellSorter.prototype.cell=!1; MedianCellSorter.prototype.compare=function(a,b){return null!=a&&null!=b?b.medianValue>a.medianValue?-1:b.medianValue<a.medianValue?1:0:0};function mxMinimumCycleRemover(a){this.layout=a}mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage;mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover;mxMinimumCycleRemover.prototype.layout=null; @@ -747,8 +747,8 @@ mxCoordinateAssignment.prototype.printStatus=function(){var a=this.layout.getMod mxCoordinateAssignment.prototype.execute=function(a){this.jettyPositions={};a=this.layout.getModel();this.currentXDelta=0;this.initialCoords(this.layout.getGraph(),a);this.fineTuning&&this.minNode(a);var b=1E8;if(this.fineTuning)for(var c=0;c<this.maxIterations;c++){0!=c&&(this.medianPos(c,a),this.minNode(a));if(this.currentXDelta<b){for(var d=0;d<a.ranks.length;d++)for(var e=a.ranks[d],f=0;f<e.length;f++){var g=e[f];g.setX(d,g.getGeneralPurposeVariable(d))}b=this.currentXDelta}else for(d=0;d<a.ranks.length;d++)for(e= a.ranks[d],f=0;f<e.length;f++)g=e[f],g.setGeneralPurposeVariable(d,g.getX(d));this.minPath(this.layout.getGraph(),a);this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),a)}; mxCoordinateAssignment.prototype.minNode=function(a){for(var b=[],c=new mxDictionary,d=[],e=0;e<=a.maxRank;e++){d[e]=a.ranks[e];for(var f=0;f<d[e].length;f++){var g=d[e][f],h=new WeightedCellSorter(g,e);h.rankIndex=f;h.visited=!0;b.push(h);c.put(g,h)}}a=10*b.length;for(f=0;0<b.length&&f<=a;){var g=b.shift(),e=g.cell,k=g.weightedValue,l=parseInt(g.rankIndex),h=e.getNextLayerConnectedCells(k),m=e.getPreviousLayerConnectedCells(k),n=h.length,p=m.length,r=this.medianXValue(h,k+1),q=this.medianXValue(m, -k-1),t=n+p,z=e.getGeneralPurposeVariable(k),w=z;0<t&&(w=(r*n+q*p)/t);n=!1;w<z-1?0==l?(e.setGeneralPurposeVariable(k,w),n=!0):(l=d[k][l-1],z=l.getGeneralPurposeVariable(k),z=z+l.width/2+this.intraCellSpacing+e.width/2,z<w?(e.setGeneralPurposeVariable(k,w),n=!0):z<e.getGeneralPurposeVariable(k)-1&&(e.setGeneralPurposeVariable(k,z),n=!0)):w>z+1&&(l==d[k].length-1?(e.setGeneralPurposeVariable(k,w),n=!0):(l=d[k][l+1],z=l.getGeneralPurposeVariable(k),z=z-l.width/2-this.intraCellSpacing-e.width/2,z>w?(e.setGeneralPurposeVariable(k, -w),n=!0):z>e.getGeneralPurposeVariable(k)+1&&(e.setGeneralPurposeVariable(k,z),n=!0)));if(n){for(e=0;e<h.length;e++)k=h[e],k=c.get(k),null!=k&&0==k.visited&&(k.visited=!0,b.push(k));for(e=0;e<m.length;e++)k=m[e],k=c.get(k),null!=k&&0==k.visited&&(k.visited=!0,b.push(k))}g.visited=!1;f++}};mxCoordinateAssignment.prototype.medianPos=function(a,b){if(0==a%2)for(var c=b.maxRank;0<c;c--)this.rankMedianPosition(c-1,b,c);else for(c=0;c<b.maxRank-1;c++)this.rankMedianPosition(c+1,b,c)}; +k-1),t=n+p,z=e.getGeneralPurposeVariable(k),x=z;0<t&&(x=(r*n+q*p)/t);n=!1;x<z-1?0==l?(e.setGeneralPurposeVariable(k,x),n=!0):(l=d[k][l-1],z=l.getGeneralPurposeVariable(k),z=z+l.width/2+this.intraCellSpacing+e.width/2,z<x?(e.setGeneralPurposeVariable(k,x),n=!0):z<e.getGeneralPurposeVariable(k)-1&&(e.setGeneralPurposeVariable(k,z),n=!0)):x>z+1&&(l==d[k].length-1?(e.setGeneralPurposeVariable(k,x),n=!0):(l=d[k][l+1],z=l.getGeneralPurposeVariable(k),z=z-l.width/2-this.intraCellSpacing-e.width/2,z>x?(e.setGeneralPurposeVariable(k, +x),n=!0):z>e.getGeneralPurposeVariable(k)+1&&(e.setGeneralPurposeVariable(k,z),n=!0)));if(n){for(e=0;e<h.length;e++)k=h[e],k=c.get(k),null!=k&&0==k.visited&&(k.visited=!0,b.push(k));for(e=0;e<m.length;e++)k=m[e],k=c.get(k),null!=k&&0==k.visited&&(k.visited=!0,b.push(k))}g.visited=!1;f++}};mxCoordinateAssignment.prototype.medianPos=function(a,b){if(0==a%2)for(var c=b.maxRank;0<c;c--)this.rankMedianPosition(c-1,b,c);else for(c=0;c<b.maxRank-1;c++)this.rankMedianPosition(c+1,b,c)}; mxCoordinateAssignment.prototype.rankMedianPosition=function(a,b,c){b=b.ranks[a];for(var d=[],e={},f=0;f<b.length;f++){var g=b[f];d[f]=new WeightedCellSorter;d[f].cell=g;d[f].rankIndex=f;e[g.id]=d[f];var h;h=c<a?g.getPreviousLayerConnectedCells(a):g.getNextLayerConnectedCells(a);d[f].weightedValue=this.calculatedWeightedValue(g,h)}d.sort(WeightedCellSorter.prototype.compare);for(f=0;f<d.length;f++){var k,g=d[f].cell;k=0;h=c<a?g.getPreviousLayerConnectedCells(a).slice():g.getNextLayerConnectedCells(a).slice(); null!=h&&(k=h.length,k=0<k?this.medianXValue(h,c):g.getGeneralPurposeVariable(a));var l=0;h=-1E8;for(var m=d[f].rankIndex-1;0<=m;){var n=e[b[m].id];if(null!=n){var p=n.cell;n.visited?(h=p.getGeneralPurposeVariable(a)+p.width/2+this.intraCellSpacing+l+g.width/2,m=-1):(l+=p.width+this.intraCellSpacing,m--)}}l=0;p=1E8;for(m=d[f].rankIndex+1;m<d.length;)if(n=e[b[m].id],null!=n){var r=n.cell;n.visited?(p=r.getGeneralPurposeVariable(a)-r.width/2-this.intraCellSpacing-l-g.width/2,m=d.length):(l+=r.width+ this.intraCellSpacing,m++)}k>=h&&k<=p?g.setGeneralPurposeVariable(a,k):k<h?(g.setGeneralPurposeVariable(a,h),this.currentXDelta+=h-k):k>p&&(g.setGeneralPurposeVariable(a,p),this.currentXDelta+=k-p);d[f].visited=!0}};mxCoordinateAssignment.prototype.calculatedWeightedValue=function(a,b){for(var c=0,d=0;d<b.length;d++){var e=b[d];a.isVertex()&&e.isVertex()?c++:c=a.isEdge()&&e.isEdge()?c+8:c+2}return c}; @@ -768,9 +768,9 @@ mxCoordinateAssignment.prototype.localEdgeProcessing=function(a){for(var b=0;b<a q;if(r.isVertex()){q=0==h?e.connectsAsSource:e.connectsAsTarget;for(var t=0;t<q.length;t++)if(q[t].source==r||q[t].target==r)f+=q[t].edges.length,p++,g.push(q[t])}else f+=r.edges.length,p++,g.push(r)}e.width>(f+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(m+=this.prefHozEdgeSep,n-=this.prefHozEdgeSep);k=(n-m)/f;m+=k/2;n=this.minEdgeJetty-this.prefVertEdgeOff;for(l=0;l<g.length;l++)for(p=g[l].edges.length,r=this.jettyPositions[g[l].ids[0]],null==r&&(r=[],this.jettyPositions[g[l].ids[0]]=r),l<f/2? n+=this.prefVertEdgeOff:l>f/2&&(n-=this.prefVertEdgeOff),q=0;q<p;q++)r[4*q+2*h]=m,m+=k,r[4*q+2*h+1]=n}f=e.getNextLayerConnectedCells(b);g=b+1}}}; mxCoordinateAssignment.prototype.setEdgePosition=function(a){var b=0;if(101207!=a.temp[0]){var c=a.maxRank,d=a.minRank;c==d&&(c=a.source.maxRank,d=a.target.minRank);for(var e=0,f=this.jettyPositions[a.ids[0]],g=a.isReversed?a.target.cell:a.source.cell,h=this.layout.graph,k=this.orientation==mxConstants.DIRECTION_EAST||this.orientation==mxConstants.DIRECTION_SOUTH,l=0;l<a.edges.length;l++){var m=a.edges[l],n=this.layout.getVisibleTerminal(m,!0),p=[],r=a.isReversed;n!=g&&(r=!r);if(null!=f){var q=r? -2:0,t=r?k?this.rankBottomY[d]:this.rankTopY[d]:k?this.rankTopY[c]:this.rankBottomY[c],z=f[4*e+1+q];r!=k&&(z=-z);var t=t+z,q=f[4*e+q],w=h.model.getTerminal(m,!0);this.layout.isPort(w)&&h.model.getParent(w)==n&&(q=h.view.getState(w),q=null!=q?q.x:n.geometry.x+a.source.width*w.geometry.x);this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(p.push(new mxPoint(q,t)),this.layout.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&p.push(new mxPoint(q,t+z))):(p.push(new mxPoint(t, -q)),this.layout.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&p.push(new mxPoint(t+z,q)))}q=a.x.length-1;t=z=-1;n=a.maxRank-1;r&&(q=0,z=a.x.length,t=1,n=a.minRank+1);for(;a.maxRank!=a.minRank&&q!=z;q+=t){var w=a.x[q]+b,x=(this.rankTopY[n]+this.rankBottomY[n+1])/2,y=(this.rankTopY[n-1]+this.rankBottomY[n])/2;if(r)var u=x,x=y,y=u;this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(p.push(new mxPoint(w,x)),p.push(new mxPoint(w,y))):(p.push(new mxPoint(x,w)),p.push(new mxPoint(y, -w)));this.limitX=Math.max(this.limitX,w);n+=t}null!=f&&(q=r?2:0,t=r?k?this.rankTopY[c]:this.rankBottomY[c]:k?this.rankBottomY[d]:this.rankTopY[d],z=f[4*e+3-q],r!=k&&(z=-z),t-=z,q=f[4*e+2-q],r=h.model.getTerminal(m,!1),n=this.layout.getVisibleTerminal(m,!1),this.layout.isPort(r)&&h.model.getParent(r)==n&&(q=h.view.getState(r),q=null!=q?q.x:n.geometry.x+a.target.width*r.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.layout.edgeStyle==mxHierarchicalEdgeStyle.CURVE&& +2:0,t=r?k?this.rankBottomY[d]:this.rankTopY[d]:k?this.rankTopY[c]:this.rankBottomY[c],z=f[4*e+1+q];r!=k&&(z=-z);var t=t+z,q=f[4*e+q],x=h.model.getTerminal(m,!0);this.layout.isPort(x)&&h.model.getParent(x)==n&&(q=h.view.getState(x),q=null!=q?q.x:n.geometry.x+a.source.width*x.geometry.x);this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(p.push(new mxPoint(q,t)),this.layout.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&p.push(new mxPoint(q,t+z))):(p.push(new mxPoint(t, +q)),this.layout.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&p.push(new mxPoint(t+z,q)))}q=a.x.length-1;t=z=-1;n=a.maxRank-1;r&&(q=0,z=a.x.length,t=1,n=a.minRank+1);for(;a.maxRank!=a.minRank&&q!=z;q+=t){var x=a.x[q]+b,w=(this.rankTopY[n]+this.rankBottomY[n+1])/2,y=(this.rankTopY[n-1]+this.rankBottomY[n])/2;if(r)var u=w,w=y,y=u;this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(p.push(new mxPoint(x,w)),p.push(new mxPoint(x,y))):(p.push(new mxPoint(w,x)),p.push(new mxPoint(y, +x)));this.limitX=Math.max(this.limitX,x);n+=t}null!=f&&(q=r?2:0,t=r?k?this.rankTopY[c]:this.rankBottomY[c]:k?this.rankBottomY[d]:this.rankTopY[d],z=f[4*e+3-q],r!=k&&(z=-z),t-=z,q=f[4*e+2-q],r=h.model.getTerminal(m,!1),n=this.layout.getVisibleTerminal(m,!1),this.layout.isPort(r)&&h.model.getParent(r)==n&&(q=h.view.getState(r),q=null!=q?q.x:n.geometry.x+a.target.width*r.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.layout.edgeStyle==mxHierarchicalEdgeStyle.CURVE&& p.push(new mxPoint(q,t-z)),p.push(new mxPoint(q,t))):(this.layout.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&p.push(new mxPoint(t-z,q)),p.push(new mxPoint(t,q))));a.isReversed&&this.processReversedEdge(a,m);this.layout.setEdgePoints(m,p);b=0==b?this.parallelEdgeSpacing:0<b?-b:-b+this.parallelEdgeSpacing;e++}a.temp[0]=101207}}; mxCoordinateAssignment.prototype.setVertexLocation=function(a){var b=a.cell,c=a.x[0]-a.width/2,d=a.y[0]-a.height/2;this.rankTopY[a.minRank]=Math.min(this.rankTopY[a.minRank],d);this.rankBottomY[a.minRank]=Math.max(this.rankBottomY[a.minRank],d+a.height);this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(b,c,d):this.layout.setVertexLocation(b,d,c);this.limitX=Math.max(this.limitX,c+a.width)}; mxCoordinateAssignment.prototype.processReversedEdge=function(a,b){};function mxSwimlaneOrdering(a){this.layout=a}mxSwimlaneOrdering.prototype=new mxHierarchicalLayoutStage;mxSwimlaneOrdering.prototype.constructor=mxSwimlaneOrdering;mxSwimlaneOrdering.prototype.layout=null; @@ -1002,23 +1002,23 @@ b.x=h.x,b.y=h.y);null!=g&&(c=new mxCellState,c.x=g.x,c.y=g.y);null!=b&&null!=c&& d.y)||mxUtils.contains(b,a,d.y)||e.push(new mxPoint(a,d.y)):(f=Math.max(b.y,c.y),e.push(new mxPoint(a,f+(Math.min(b.y+b.height,c.y+c.height)-f)/2)))))},TopToBottom:function(a,b,c,d,e){var f=a.view;d=null!=d&&0<d.length?d[0]:null;var g=a.absolutePoints,h=g[0],g=g[g.length-1];null!=d&&(d=f.transformControlPoint(a,d));null!=h&&(b=new mxCellState,b.x=h.x,b.y=h.y);null!=g&&(c=new mxCellState,c.x=g.x,c.y=g.y);null!=b&&null!=c&&(h=Math.max(b.y,c.y),g=Math.min(b.y+b.height,c.y+c.height),a=f.getRoutingCenterX(b), null!=d&&d.x>=b.x&&d.x<=b.x+b.width&&(a=d.x),h=null!=d?d.y:Math.round(g+(h-g)/2),mxUtils.contains(c,a,h)||mxUtils.contains(b,a,h)||e.push(new mxPoint(a,h)),a=null!=d&&d.x>=c.x&&d.x<=c.x+c.width?d.x:f.getRoutingCenterX(c),mxUtils.contains(c,a,h)||mxUtils.contains(b,a,h)||e.push(new mxPoint(a,h)),1==e.length&&(null!=d&&1==e.length?mxUtils.contains(c,d.x,h)||mxUtils.contains(b,d.x,h)||e.push(new mxPoint(d.x,h)):(f=Math.max(b.x,c.x),e.push(new mxPoint(f+(Math.min(b.x+b.width,c.x+c.width)-f)/2,h)))))}, SegmentConnector:function(a,b,c,d,e){function f(a){if(null==k||Math.abs(k.x-a.x)>=h||Math.abs(k.y-a.y)>=h)e.push(a),k=a;return k}var g=a.absolutePoints,h=Math.max(1,a.view.scale),k=0<e.length?e[0]:null,l=!0,m=null,n=g[0];null==n&&null!=b?n=new mxPoint(a.view.getRoutingCenterX(b),a.view.getRoutingCenterY(b)):null!=n&&(n=n.clone());n.x=Math.round(n.x);n.y=Math.round(n.y);var p=g.length-1;if(null!=d&&0<d.length){for(var m=[],r=0;r<d.length;r++){var q=a.view.transformControlPoint(a,d[r]);null!=q&&(q.x= -Math.round(q.x),q.y=Math.round(q.y),m.push(q))}if(0==m.length)return;d=m;null!=n&&null!=d[0]&&(Math.abs(d[0].x-n.x)<h&&(d[0].x=n.x),Math.abs(d[0].y-n.y)<h&&(d[0].y=n.y));q=g[p];null!=q&&null!=d[d.length-1]&&(Math.abs(d[d.length-1].x-q.x)<h&&(d[d.length-1].x=q.x),Math.abs(d[d.length-1].y-q.y)<h&&(d[d.length-1].y=q.y));var m=d[0],t=b,z=g[0],w=!1,x=!1,w=m;null!=z&&(z.x=Math.round(z.x),z.y=Math.round(z.y),t=null);for(r=0;2>r;r++){var y=null!=z&&z.x==w.x,u=null!=z&&z.y==w.y,D=null!=t&&w.y>=t.y&&w.y<=t.y+ -t.height,t=null!=t&&w.x>=t.x&&w.x<=t.x+t.width,w=u||null==z&&D,x=y||null==z&&t;if(0!=r||!(w&&x||y&&u)){if(null!=z&&!u&&!y&&(D||t)){l=D?!1:!0;break}if(x||w){l=w;1==r&&(l=0==d.length%2?w:x);break}}t=c;z=g[p];null!=z&&(z.x=Math.round(z.x),z.y=Math.round(z.y),t=null);w=d[d.length-1];y&&u&&(d=d.slice(1))}l&&(null!=g[0]&&g[0].y!=m.y||null==g[0]&&null!=b&&(m.y<b.y||m.y>b.y+b.height))?f(new mxPoint(n.x,m.y)):!l&&(null!=g[0]&&g[0].x!=m.x||null==g[0]&&null!=b&&(m.x<b.x||m.x>b.x+b.width))&&f(new mxPoint(m.x, +Math.round(q.x),q.y=Math.round(q.y),m.push(q))}if(0==m.length)return;d=m;null!=n&&null!=d[0]&&(Math.abs(d[0].x-n.x)<h&&(d[0].x=n.x),Math.abs(d[0].y-n.y)<h&&(d[0].y=n.y));q=g[p];null!=q&&null!=d[d.length-1]&&(Math.abs(d[d.length-1].x-q.x)<h&&(d[d.length-1].x=q.x),Math.abs(d[d.length-1].y-q.y)<h&&(d[d.length-1].y=q.y));var m=d[0],t=b,z=g[0],x=!1,w=!1,x=m;null!=z&&(z.x=Math.round(z.x),z.y=Math.round(z.y),t=null);for(r=0;2>r;r++){var y=null!=z&&z.x==x.x,u=null!=z&&z.y==x.y,D=null!=t&&x.y>=t.y&&x.y<=t.y+ +t.height,t=null!=t&&x.x>=t.x&&x.x<=t.x+t.width,x=u||null==z&&D,w=y||null==z&&t;if(0!=r||!(x&&w||y&&u)){if(null!=z&&!u&&!y&&(D||t)){l=D?!1:!0;break}if(w||x){l=x;1==r&&(l=0==d.length%2?x:w);break}}t=c;z=g[p];null!=z&&(z.x=Math.round(z.x),z.y=Math.round(z.y),t=null);x=d[d.length-1];y&&u&&(d=d.slice(1))}l&&(null!=g[0]&&g[0].y!=m.y||null==g[0]&&null!=b&&(m.y<b.y||m.y>b.y+b.height))?f(new mxPoint(n.x,m.y)):!l&&(null!=g[0]&&g[0].x!=m.x||null==g[0]&&null!=b&&(m.x<b.x||m.x>b.x+b.width))&&f(new mxPoint(m.x, n.y));l?n.y=m.y:n.x=m.x;for(r=0;r<d.length;r++)l=!l,m=d[r],l?n.y=m.y:n.x=m.x,f(n.clone())}else m=n,l=!0;n=g[p];null==n&&null!=c&&(n=new mxPoint(a.view.getRoutingCenterX(c),a.view.getRoutingCenterY(c)));null!=n&&(n.x=Math.round(n.x),n.y=Math.round(n.y),null!=m&&(l&&(null!=g[p]&&g[p].y!=m.y||null==g[p]&&null!=c&&(m.y<c.y||m.y>c.y+c.height))?f(new mxPoint(n.x,m.y)):!l&&(null!=g[p]&&g[p].x!=m.x||null==g[p]&&null!=c&&(m.x<c.x||m.x>c.x+c.width))&&f(new mxPoint(m.x,n.y))));if(null==g[0]&&null!=b)for(;1< e.length&&null!=e[1]&&mxUtils.contains(b,e[1].x,e[1].y);)e.splice(1,1);if(null==g[p]&&null!=c)for(;1<e.length&&null!=e[e.length-1]&&mxUtils.contains(c,e[e.length-1].x,e[e.length-1].y);)e.splice(e.length-1,1);null!=q&&null!=e[e.length-1]&&Math.abs(q.x-e[e.length-1].x)<h&&Math.abs(q.y-e[e.length-1].y)<h&&(e.splice(e.length-1,1),null!=e[e.length-1]&&(Math.abs(e[e.length-1].x-q.x)<h&&(e[e.length-1].x=q.x),Math.abs(e[e.length-1].y-q.y)<h&&(e[e.length-1].y=q.y)))},orthBuffer:10,orthPointsFallback:!0,dirVectors:[[-1, 0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081, 2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072, getJettySize:function(a,b,c,d,e){b=mxUtils.getValue(a.style,e?mxConstants.STYLE_SOURCE_JETTY_SIZE:mxConstants.STYLE_TARGET_JETTY_SIZE,mxUtils.getValue(a.style,mxConstants.STYLE_JETTY_SIZE,mxEdgeStyle.orthBuffer));"auto"==b&&(mxUtils.getValue(a.style,e?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE?(a=mxUtils.getNumber(a.style,e?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),b=Math.max(2,Math.ceil((a+mxEdgeStyle.orthBuffer)/ -mxEdgeStyle.orthBuffer))*mxEdgeStyle.orthBuffer):b=2*mxEdgeStyle.orthBuffer);return b},OrthConnector:function(a,b,c,d,e){var f=a.view.graph,g=null==b?!1:f.getModel().isEdge(b.cell),h=null==c?!1:f.getModel().isEdge(c.cell),f=a.absolutePoints,k=f[0],l=f[f.length-1],m=null!=b?b.x:k.x,n=null!=b?b.y:k.y,p=null!=b?b.width:0,r=null!=b?b.height:0,q=null!=c?c.x:l.x,t=null!=c?c.y:l.y,z=null!=c?c.width:0,w=null!=c?c.height:0,f=a.view.scale*mxEdgeStyle.getJettySize(a,b,c,d,!0),x=a.view.scale*mxEdgeStyle.getJettySize(a, -b,c,d,!1);null!=b&&c==b&&(f=x=Math.max(f,x));var y=x+f,u=!1;if(null!=k&&null!=l)var u=l.x-k.x,D=l.y-k.y,u=u*u+D*D<y*y;if(u||mxEdgeStyle.orthPointsFallback&&null!=d&&0<d.length||g||h)mxEdgeStyle.SegmentConnector(a,b,c,d,e);else{d=[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL];null!=b&&(d[0]=mxUtils.getPortConstraints(b,a,!0,mxConstants.DIRECTION_MASK_ALL),u=mxUtils.getValue(b.style,mxConstants.STYLE_ROTATION,0),0!=u&&(u=mxUtils.getBoundingBox(new mxRectangle(m,n,p,r),u),m=u.x,n=u.y, -p=u.width,r=u.height));null!=c&&(d[1]=mxUtils.getPortConstraints(c,a,!1,mxConstants.DIRECTION_MASK_ALL),u=mxUtils.getValue(c.style,mxConstants.STYLE_ROTATION,0),0!=u&&(u=mxUtils.getBoundingBox(new mxRectangle(q,t,z,w),u),q=u.x,t=u.y,z=u.width,w=u.height));m=Math.round(10*m)/10;n=Math.round(10*n)/10;p=Math.round(10*p)/10;r=Math.round(10*r)/10;q=Math.round(10*q)/10;t=Math.round(10*t)/10;z=Math.round(10*z)/10;w=Math.round(10*w)/10;a=[0,0];m=[[m,n,p,r],[q,t,z,w]];x=[f,x];for(u=0;2>u;u++)mxEdgeStyle.limits[u][1]= -m[u][0]-x[u],mxEdgeStyle.limits[u][2]=m[u][1]-x[u],mxEdgeStyle.limits[u][4]=m[u][0]+m[u][2]+x[u],mxEdgeStyle.limits[u][8]=m[u][1]+m[u][3]+x[u];x=m[0][1]+m[0][3]/2;n=m[1][1]+m[1][3]/2;u=m[0][0]+m[0][2]/2-(m[1][0]+m[1][2]/2);D=x-n;x=0;0>u?x=0>D?2:1:0>=D&&(x=3,0==u&&(x=2));n=null;null!=b&&(n=k);b=[[.5,.5],[.5,.5]];for(u=0;2>u;u++)null!=n&&(b[u][0]=(n.x-m[u][0])/m[u][2],1>=Math.abs(n.x-m[u][0])?a[u]=mxConstants.DIRECTION_MASK_WEST:1>=Math.abs(n.x-m[u][0]-m[u][2])&&(a[u]=mxConstants.DIRECTION_MASK_EAST), +mxEdgeStyle.orthBuffer))*mxEdgeStyle.orthBuffer):b=2*mxEdgeStyle.orthBuffer);return b},OrthConnector:function(a,b,c,d,e){var f=a.view.graph,g=null==b?!1:f.getModel().isEdge(b.cell),h=null==c?!1:f.getModel().isEdge(c.cell),f=a.absolutePoints,k=f[0],l=f[f.length-1],m=null!=b?b.x:k.x,n=null!=b?b.y:k.y,p=null!=b?b.width:0,r=null!=b?b.height:0,q=null!=c?c.x:l.x,t=null!=c?c.y:l.y,z=null!=c?c.width:0,x=null!=c?c.height:0,f=a.view.scale*mxEdgeStyle.getJettySize(a,b,c,d,!0),w=a.view.scale*mxEdgeStyle.getJettySize(a, +b,c,d,!1);null!=b&&c==b&&(f=w=Math.max(f,w));var y=w+f,u=!1;if(null!=k&&null!=l)var u=l.x-k.x,D=l.y-k.y,u=u*u+D*D<y*y;if(u||mxEdgeStyle.orthPointsFallback&&null!=d&&0<d.length||g||h)mxEdgeStyle.SegmentConnector(a,b,c,d,e);else{d=[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL];null!=b&&(d[0]=mxUtils.getPortConstraints(b,a,!0,mxConstants.DIRECTION_MASK_ALL),u=mxUtils.getValue(b.style,mxConstants.STYLE_ROTATION,0),0!=u&&(u=mxUtils.getBoundingBox(new mxRectangle(m,n,p,r),u),m=u.x,n=u.y, +p=u.width,r=u.height));null!=c&&(d[1]=mxUtils.getPortConstraints(c,a,!1,mxConstants.DIRECTION_MASK_ALL),u=mxUtils.getValue(c.style,mxConstants.STYLE_ROTATION,0),0!=u&&(u=mxUtils.getBoundingBox(new mxRectangle(q,t,z,x),u),q=u.x,t=u.y,z=u.width,x=u.height));m=Math.round(10*m)/10;n=Math.round(10*n)/10;p=Math.round(10*p)/10;r=Math.round(10*r)/10;q=Math.round(10*q)/10;t=Math.round(10*t)/10;z=Math.round(10*z)/10;x=Math.round(10*x)/10;a=[0,0];m=[[m,n,p,r],[q,t,z,x]];w=[f,w];for(u=0;2>u;u++)mxEdgeStyle.limits[u][1]= +m[u][0]-w[u],mxEdgeStyle.limits[u][2]=m[u][1]-w[u],mxEdgeStyle.limits[u][4]=m[u][0]+m[u][2]+w[u],mxEdgeStyle.limits[u][8]=m[u][1]+m[u][3]+w[u];w=m[0][1]+m[0][3]/2;n=m[1][1]+m[1][3]/2;u=m[0][0]+m[0][2]/2-(m[1][0]+m[1][2]/2);D=w-n;w=0;0>u?w=0>D?2:1:0>=D&&(w=3,0==u&&(w=2));n=null;null!=b&&(n=k);b=[[.5,.5],[.5,.5]];for(u=0;2>u;u++)null!=n&&(b[u][0]=(n.x-m[u][0])/m[u][2],1>=Math.abs(n.x-m[u][0])?a[u]=mxConstants.DIRECTION_MASK_WEST:1>=Math.abs(n.x-m[u][0]-m[u][2])&&(a[u]=mxConstants.DIRECTION_MASK_EAST), b[u][1]=(n.y-m[u][1])/m[u][3],1>=Math.abs(n.y-m[u][1])?a[u]=mxConstants.DIRECTION_MASK_NORTH:1>=Math.abs(n.y-m[u][1]-m[u][3])&&(a[u]=mxConstants.DIRECTION_MASK_SOUTH)),n=null,null!=c&&(n=l);u=m[0][1]-(m[1][1]+m[1][3]);l=m[0][0]-(m[1][0]+m[1][2]);n=m[1][1]-(m[0][1]+m[0][3]);p=m[1][0]-(m[0][0]+m[0][2]);mxEdgeStyle.vertexSeperations[1]=Math.max(l-y,0);mxEdgeStyle.vertexSeperations[2]=Math.max(u-y,0);mxEdgeStyle.vertexSeperations[4]=Math.max(n-y,0);mxEdgeStyle.vertexSeperations[3]=Math.max(p-y,0);y=[]; c=[];k=[];c[0]=l>=p?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST;k[0]=u>=n?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH;c[1]=mxUtils.reversePortConstraints(c[0]);k[1]=mxUtils.reversePortConstraints(k[0]);l=l>=p?l:p;n=u>=n?u:n;p=[[0,0],[0,0]];r=!1;for(u=0;2>u;u++)0==a[u]&&(0==(c[u]&d[u])&&(c[u]=mxUtils.reversePortConstraints(c[u])),0==(k[u]&d[u])&&(k[u]=mxUtils.reversePortConstraints(k[u])),p[u][0]=k[u],p[u][1]=c[u]);0<n&&0<l&&(0<(c[0]&d[0])&&0<(k[1]&d[1])?(p[0][0]= c[0],p[0][1]=k[0],p[1][0]=k[1],p[1][1]=c[1],r=!0):0<(k[0]&d[0])&&0<(c[1]&d[1])&&(p[0][0]=k[0],p[0][1]=c[0],p[1][0]=c[1],p[1][1]=k[1],r=!0));0<n&&!r&&(p[0][0]=k[0],p[0][1]=c[0],p[1][0]=k[1],p[1][1]=c[1],r=!0);0<l&&!r&&(p[0][0]=c[0],p[0][1]=k[0],p[1][0]=c[1],p[1][1]=k[1]);for(u=0;2>u;u++)0==a[u]&&(0==(p[u][0]&d[u])&&(p[u][0]=p[u][1]),y[u]=p[u][0]&d[u],y[u]|=(p[u][1]&d[u])<<8,y[u]|=(p[1-u][u]&d[u])<<16,y[u]|=(p[1-u][1-u]&d[u])<<24,0==(y[u]&15)&&(y[u]<<=8),0==(y[u]&3840)&&(y[u]=y[u]&15|y[u]>>8),0==(y[u]& -983040)&&(y[u]=y[u]&65535|(y[u]&251658240)>>8),a[u]=y[u]&15,d[u]==mxConstants.DIRECTION_MASK_WEST||d[u]==mxConstants.DIRECTION_MASK_NORTH||d[u]==mxConstants.DIRECTION_MASK_EAST||d[u]==mxConstants.DIRECTION_MASK_SOUTH)&&(a[u]=d[u]);d=a[0]==mxConstants.DIRECTION_MASK_EAST?3:a[0];y=a[1]==mxConstants.DIRECTION_MASK_EAST?3:a[1];d-=x;y-=x;1>d&&(d+=4);1>y&&(y+=4);d=mxEdgeStyle.routePatterns[d-1][y-1];mxEdgeStyle.wayPoints1[0][0]=m[0][0];mxEdgeStyle.wayPoints1[0][1]=m[0][1];switch(a[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-= +983040)&&(y[u]=y[u]&65535|(y[u]&251658240)>>8),a[u]=y[u]&15,d[u]==mxConstants.DIRECTION_MASK_WEST||d[u]==mxConstants.DIRECTION_MASK_NORTH||d[u]==mxConstants.DIRECTION_MASK_EAST||d[u]==mxConstants.DIRECTION_MASK_SOUTH)&&(a[u]=d[u]);d=a[0]==mxConstants.DIRECTION_MASK_EAST?3:a[0];y=a[1]==mxConstants.DIRECTION_MASK_EAST?3:a[1];d-=w;y-=w;1>d&&(d+=4);1>y&&(y+=4);d=mxEdgeStyle.routePatterns[d-1][y-1];mxEdgeStyle.wayPoints1[0][0]=m[0][0];mxEdgeStyle.wayPoints1[0][1]=m[0][1];switch(a[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-= f;mxEdgeStyle.wayPoints1[0][1]+=b[0][1]*m[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=b[0][0]*m[0][2];mxEdgeStyle.wayPoints1[0][1]+=m[0][3]+f;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=m[0][2]+f;mxEdgeStyle.wayPoints1[0][1]+=b[0][1]*m[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=b[0][0]*m[0][2],mxEdgeStyle.wayPoints1[0][1]-=f}f=0;c=y=0<(a[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))? -0:1;for(u=0;u<d.length;u++)k=d[u]&15,r=k==mxConstants.DIRECTION_MASK_EAST?3:k,r+=x,4<r&&(r-=4),l=mxEdgeStyle.dirVectors[r-1],k=0<r%2?0:1,k!=y&&(f++,mxEdgeStyle.wayPoints1[f][0]=mxEdgeStyle.wayPoints1[f-1][0],mxEdgeStyle.wayPoints1[f][1]=mxEdgeStyle.wayPoints1[f-1][1]),q=0<(d[u]&mxEdgeStyle.TARGET_MASK),t=0<(d[u]&mxEdgeStyle.SOURCE_MASK),n=(d[u]&mxEdgeStyle.SIDE_MASK)>>5,n<<=x,15<n&&(n>>=4),p=0<(d[u]&mxEdgeStyle.CENTER_MASK),(t||q)&&9>n?(r=t?0:1,n=p&&0==k?m[r][0]+b[r][0]*m[r][2]:p?m[r][1]+b[r][1]* +0:1;for(u=0;u<d.length;u++)k=d[u]&15,r=k==mxConstants.DIRECTION_MASK_EAST?3:k,r+=w,4<r&&(r-=4),l=mxEdgeStyle.dirVectors[r-1],k=0<r%2?0:1,k!=y&&(f++,mxEdgeStyle.wayPoints1[f][0]=mxEdgeStyle.wayPoints1[f-1][0],mxEdgeStyle.wayPoints1[f][1]=mxEdgeStyle.wayPoints1[f-1][1]),q=0<(d[u]&mxEdgeStyle.TARGET_MASK),t=0<(d[u]&mxEdgeStyle.SOURCE_MASK),n=(d[u]&mxEdgeStyle.SIDE_MASK)>>5,n<<=w,15<n&&(n>>=4),p=0<(d[u]&mxEdgeStyle.CENTER_MASK),(t||q)&&9>n?(r=t?0:1,n=p&&0==k?m[r][0]+b[r][0]*m[r][2]:p?m[r][1]+b[r][1]* m[r][3]:mxEdgeStyle.limits[r][n],0==k?(n=(n-mxEdgeStyle.wayPoints1[f][0])*l[0],0<n&&(mxEdgeStyle.wayPoints1[f][0]+=l[0]*n)):(n=(n-mxEdgeStyle.wayPoints1[f][1])*l[1],0<n&&(mxEdgeStyle.wayPoints1[f][1]+=l[1]*n))):p&&(mxEdgeStyle.wayPoints1[f][0]+=l[0]*Math.abs(mxEdgeStyle.vertexSeperations[r]/2),mxEdgeStyle.wayPoints1[f][1]+=l[1]*Math.abs(mxEdgeStyle.vertexSeperations[r]/2)),0<f&&mxEdgeStyle.wayPoints1[f][k]==mxEdgeStyle.wayPoints1[f-1][k]?f--:y=k;for(u=0;u<=f&&(u!=f||((0<(a[1]&(mxConstants.DIRECTION_MASK_EAST| mxConstants.DIRECTION_MASK_WEST))?0:1)==c?0:1)==(f+1)%2);u++)e.push(new mxPoint(Math.round(mxEdgeStyle.wayPoints1[u][0]),Math.round(mxEdgeStyle.wayPoints1[u][1])));for(a=1;a<e.length;)null==e[a-1]||null==e[a]||e[a-1].x!=e[a].x||e[a-1].y!=e[a].y?a++:e.splice(a,1)}},getRoutePattern:function(a,b,c,d){var e=a[0]==mxConstants.DIRECTION_MASK_EAST?3:a[0];a=a[1]==mxConstants.DIRECTION_MASK_EAST?3:a[1];e-=b;a-=b;1>e&&(e+=4);1>a&&(a+=4);b=routePatterns[e-1][a-1];0!=c&&0!=d||null==inlineRoutePatterns[e-1][a- 1]||(b=inlineRoutePatterns[e-1][a-1]);return b}},mxStyleRegistry={values:[],putValue:function(a,b){mxStyleRegistry.values[a]=b},getValue:function(a){return mxStyleRegistry.values[a]},getName:function(a){for(var b in mxStyleRegistry.values)if(mxStyleRegistry.values[b]==a)return b;return null}};mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector);mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation); @@ -1118,7 +1118,8 @@ mxGraph.prototype.createTooltipHandler=function(){return new mxTooltipHandler(th mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)};mxGraph.prototype.createStylesheet=function(){return new mxStylesheet};mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)};mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer};mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)};mxGraph.prototype.getModel=function(){return this.model};mxGraph.prototype.getView=function(){return this.view}; mxGraph.prototype.getStylesheet=function(){return this.stylesheet};mxGraph.prototype.setStylesheet=function(a){this.stylesheet=a};mxGraph.prototype.getSelectionModel=function(){return this.selectionModel};mxGraph.prototype.setSelectionModel=function(a){this.selectionModel=a}; mxGraph.prototype.getSelectionCellsForChanges=function(a){for(var b=new mxDictionary,c=[],d=mxUtils.bind(this,function(a){if(!b.get(a)&&this.model.contains(a))if(this.model.isEdge(a)||this.model.isVertex(a))b.put(a,!0),c.push(a);else for(var e=this.model.getChildCount(a),f=0;f<e;f++)d(this.model.getChildAt(a,f))}),e=0;e<a.length;e++){var f=a[e];if(f.constructor!=mxRootChange){var g=null;f instanceof mxChildChange?g=f.child:null!=f.cell&&f.cell instanceof mxCell&&(g=f.cell);null!=g&&d(g)}}return c}; -mxGraph.prototype.graphModelChanged=function(a){for(var b=0;b<a.length;b++)this.processChange(a[b]);this.updateSelection();this.view.validate();this.sizeDidChange()};mxGraph.prototype.updateSelection=function(){for(var a=this.getSelectionCells(),b=[],c=0;c<a.length;c++)if(this.model.contains(a[c]))for(var d=this.model.getParent(a[c]);null!=d&&d!=this.view.currentRoot;){if(this.isCellCollapsed(d)||!this.isCellVisible(d)){b.push(a[c]);break}d=this.model.getParent(d)}else b.push(a[c]);this.removeSelectionCells(b)}; +mxGraph.prototype.graphModelChanged=function(a){for(var b=0;b<a.length;b++)this.processChange(a[b]);this.updateSelection();this.view.validate();this.sizeDidChange()}; +mxGraph.prototype.updateSelection=function(){for(var a=this.getSelectionCells(),b=[],c=0;c<a.length;c++)if(this.model.contains(a[c])&&this.isCellVisible(a[c]))for(var d=this.model.getParent(a[c]);null!=d&&d!=this.view.currentRoot;){if(this.isCellCollapsed(d)||!this.isCellVisible(d)){b.push(a[c]);break}d=this.model.getParent(d)}else b.push(a[c]);this.removeSelectionCells(b)}; mxGraph.prototype.processChange=function(a){if(a instanceof mxRootChange)this.clearSelection(),this.setDefaultParent(null),this.removeStateForCell(a.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(a instanceof mxChildChange){var b=this.model.getParent(a.child);this.view.invalidate(a.child,!0,!0);if(!this.model.contains(b)||this.isCellCollapsed(b))this.view.invalidate(a.child,!0,!0),this.removeStateForCell(a.child), this.view.currentRoot==a.child&&this.home();b!=a.previous&&(null!=b&&this.view.invalidate(b,!1,!1),null!=a.previous&&this.view.invalidate(a.previous,!1,!1))}else a instanceof mxTerminalChange||a instanceof mxGeometryChange?(a instanceof mxTerminalChange||null==a.previous&&null!=a.geometry||null!=a.previous&&!a.previous.equals(a.geometry))&&this.view.invalidate(a.cell):a instanceof mxValueChange?this.view.invalidate(a.cell,!1,!1):a instanceof mxStyleChange?(this.view.invalidate(a.cell,!0,!0),a=this.view.getState(a.cell), null!=a&&(a.style=null)):null!=a.cell&&a.cell instanceof mxCell&&this.removeStateForCell(a.cell)};mxGraph.prototype.removeStateForCell=function(a){for(var b=this.model.getChildCount(a),c=0;c<b;c++)this.removeStateForCell(this.model.getChildAt(a,c));this.view.invalidate(a,!1,!0);this.view.removeState(a)}; @@ -1168,17 +1169,17 @@ mxGraph.prototype.updateGroupBounds=function(a,b,c,d,e,f,g){null==a&&(a=this.get r.height;k=k.clone();c&&(k.x=Math.round(k.x+m.x-b-n-g),k.y=Math.round(k.y+m.y-b-p-d));k.width=Math.round(m.width+2*b+n+g+e);k.height=Math.round(m.height+2*b+p+d+f);this.model.setGeometry(a[h],k);this.moveCells(l,b+n-m.x+g,b+p-m.y+d)}}}}}finally{this.model.endUpdate()}return a}; mxGraph.prototype.getBoundingBox=function(a){var b=null;if(null!=a&&0<a.length)for(var c=0;c<a.length;c++)if(this.model.isVertex(a[c])||this.model.isEdge(a[c])){var d=this.view.getBoundingBox(this.view.getState(a[c]),!0);null!=d&&(null==b?b=mxRectangle.fromRectangle(d):b.add(d))}return b};mxGraph.prototype.cloneCell=function(a,b,c,d){return this.cloneCells([a],b,c,d)[0]}; mxGraph.prototype.cloneCells=function(a,b,c,d){b=null!=b?b:!0;var e=null;if(null!=a){for(var f=new mxDictionary,e=[],g=0;g<a.length;g++)f.put(a[g],!0),e.push(a[g]);if(0<e.length)for(var h=this.view.scale,k=this.view.translate,e=this.model.cloneCells(a,!0,c),g=0;g<a.length;g++)if(!b&&this.model.isEdge(e[g])&&null!=this.getEdgeValidationError(e[g],this.model.getTerminal(e[g],!0),this.model.getTerminal(e[g],!1)))e[g]=null;else{var l=this.model.getGeometry(e[g]);if(null!=l){var m=this.view.getState(a[g]), -n=this.view.getState(this.model.getParent(a[g]));if(null!=m&&null!=n)if(c=d?0:n.origin.x,n=d?0:n.origin.y,this.model.isEdge(e[g])){for(var m=m.absolutePoints,p=this.model.getTerminal(a[g],!0);null!=p&&!f.get(p);)p=this.model.getParent(p);null==p&&l.setTerminalPoint(new mxPoint(m[0].x/h-k.x,m[0].y/h-k.y),!0);for(p=this.model.getTerminal(a[g],!1);null!=p&&!f.get(p);)p=this.model.getParent(p);null==p&&(p=m.length-1,l.setTerminalPoint(new mxPoint(m[p].x/h-k.x,m[p].y/h-k.y),!1));l=l.points;if(null!=l)for(m= -0;m<l.length;m++)l[m].x+=c,l[m].y+=n}else l.translate(c,n)}}else e=[]}return e};mxGraph.prototype.insertVertex=function(a,b,c,d,e,f,g,h,k){b=this.createVertex(a,b,c,d,e,f,g,h,k);return this.addCell(b,a)};mxGraph.prototype.createVertex=function(a,b,c,d,e,f,g,h,k){a=new mxGeometry(d,e,f,g);a.relative=null!=k?k:!1;c=new mxCell(c,a,h);c.setId(b);c.setVertex(!0);c.setConnectable(!0);return c};mxGraph.prototype.insertEdge=function(a,b,c,d,e,f){b=this.createEdge(a,b,c,d,e,f);return this.addEdge(b,a,d,e)}; -mxGraph.prototype.createEdge=function(a,b,c,d,e,f){a=new mxCell(c,new mxGeometry,f);a.setId(b);a.setEdge(!0);a.geometry.relative=!0;return a};mxGraph.prototype.addEdge=function(a,b,c,d,e){return this.addCell(a,b,e,c,d)};mxGraph.prototype.addCell=function(a,b,c,d,e){return this.addCells([a],b,c,d,e)[0]}; +n=this.view.getState(this.model.getParent(a[g]));if(null!=m&&null!=n)if(c=d?0:n.origin.x,n=d?0:n.origin.y,this.model.isEdge(e[g])){if(m=m.absolutePoints,null!=m){for(var p=this.model.getTerminal(a[g],!0);null!=p&&!f.get(p);)p=this.model.getParent(p);null==p&&l.setTerminalPoint(new mxPoint(m[0].x/h-k.x,m[0].y/h-k.y),!0);for(p=this.model.getTerminal(a[g],!1);null!=p&&!f.get(p);)p=this.model.getParent(p);null==p&&(p=m.length-1,l.setTerminalPoint(new mxPoint(m[p].x/h-k.x,m[p].y/h-k.y),!1));l=l.points; +if(null!=l)for(m=0;m<l.length;m++)l[m].x+=c,l[m].y+=n}}else l.translate(c,n)}}else e=[]}return e};mxGraph.prototype.insertVertex=function(a,b,c,d,e,f,g,h,k){b=this.createVertex(a,b,c,d,e,f,g,h,k);return this.addCell(b,a)};mxGraph.prototype.createVertex=function(a,b,c,d,e,f,g,h,k){a=new mxGeometry(d,e,f,g);a.relative=null!=k?k:!1;c=new mxCell(c,a,h);c.setId(b);c.setVertex(!0);c.setConnectable(!0);return c}; +mxGraph.prototype.insertEdge=function(a,b,c,d,e,f){b=this.createEdge(a,b,c,d,e,f);return this.addEdge(b,a,d,e)};mxGraph.prototype.createEdge=function(a,b,c,d,e,f){a=new mxCell(c,new mxGeometry,f);a.setId(b);a.setEdge(!0);a.geometry.relative=!0;return a};mxGraph.prototype.addEdge=function(a,b,c,d,e){return this.addCell(a,b,e,c,d)};mxGraph.prototype.addCell=function(a,b,c,d,e){return this.addCells([a],b,c,d,e)[0]}; mxGraph.prototype.addCells=function(a,b,c,d,e){null==b&&(b=this.getDefaultParent());null==c&&(c=this.model.getChildCount(b));this.model.beginUpdate();try{this.cellsAdded(a,b,c,d,e,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",a,"parent",b,"index",c,"source",d,"target",e))}finally{this.model.endUpdate()}return a}; mxGraph.prototype.cellsAdded=function(a,b,c,d,e,f,g,h){if(null!=a&&null!=b&&null!=c){this.model.beginUpdate();try{for(var k=f?this.view.getState(b):null,l=null!=k?k.origin:null,m=new mxPoint(0,0),k=0;k<a.length;k++)if(null==a[k])c--;else{var n=this.model.getParent(a[k]);if(null!=l&&a[k]!=b&&b!=n){var p=this.view.getState(n),r=null!=p?p.origin:m,q=this.model.getGeometry(a[k]);if(null!=q){var t=r.x-l.x,z=r.y-l.y,q=q.clone();q.translate(t,z);q.relative||!this.model.isVertex(a[k])||this.isAllowNegativeCoordinates()|| (q.x=Math.max(0,q.x),q.y=Math.max(0,q.y));this.model.setGeometry(a[k],q)}}b==n&&c+k>this.model.getChildCount(b)&&c--;this.model.add(b,a[k],c+k);this.autoSizeCellsOnAdd&&this.autoSizeCell(a[k],!0);(null==h||h)&&this.isExtendParentsOnAdd(a[k])&&this.isExtendParent(a[k])&&this.extendParent(a[k]);(null==g||g)&&this.constrainChild(a[k]);null!=d&&this.cellConnected(a[k],d,!0);null!=e&&this.cellConnected(a[k],e,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",a,"parent",b,"index",c,"source", d,"target",e,"absolute",f))}finally{this.model.endUpdate()}}};mxGraph.prototype.autoSizeCell=function(a,b){if(null!=b?b:1)for(var c=this.model.getChildCount(a),d=0;d<c;d++)this.autoSizeCell(this.model.getChildAt(a,d));this.getModel().isVertex(a)&&this.isAutoSizeCell(a)&&this.updateCellSize(a)}; mxGraph.prototype.removeCells=function(a,b){b=null!=b?b:!0;null==a&&(a=this.getDeletableCells(this.getSelectionCells()));if(b)a=this.getDeletableCells(this.addAllEdges(a));else{a=a.slice();for(var c=this.getDeletableCells(this.getAllEdges(a)),d=new mxDictionary,e=0;e<a.length;e++)d.put(a[e],!0);for(e=0;e<c.length;e++)null!=this.view.getState(c[e])||d.get(c[e])||(d.put(c[e],!0),a.push(c[e]))}this.model.beginUpdate();try{this.cellsRemoved(a),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells", a,"includeEdges",b))}finally{this.model.endUpdate()}return a}; -mxGraph.prototype.cellsRemoved=function(a){if(null!=a&&0<a.length){var b=this.view.scale,c=this.view.translate;this.model.beginUpdate();try{for(var d=new mxDictionary,e=0;e<a.length;e++)d.put(a[e],!0);for(e=0;e<a.length;e++){for(var f=this.getAllEdges([a[e]]),g=mxUtils.bind(this,function(d,f){var g=this.model.getGeometry(d);if(null!=g){for(var h=this.model.getTerminal(d,f),k=!1,l=h;null!=l;){if(a[e]==l){k=!0;break}l=this.model.getParent(l)}k&&(g=g.clone(),k=this.view.getState(d),null!=k?(h=k.absolutePoints, -l=f?0:h.length-1,g.setTerminalPoint(new mxPoint(h[l].x/b-c.x-k.origin.x,h[l].y/b-c.y-k.origin.y),f)):(h=this.view.getState(h),null!=h&&g.setTerminalPoint(new mxPoint(h.getCenterX()/b-c.x,h.getCenterY()/b-c.y),f)),this.model.setGeometry(d,g),this.model.setTerminal(d,null,f))}}),h=0;h<f.length;h++)d.get(f[h])||(d.put(f[h],!0),g(f[h],!0),g(f[h],!1));this.model.remove(a[e])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",a))}finally{this.model.endUpdate()}}}; +mxGraph.prototype.cellsRemoved=function(a){if(null!=a&&0<a.length){var b=this.view.scale,c=this.view.translate;this.model.beginUpdate();try{for(var d=new mxDictionary,e=0;e<a.length;e++)d.put(a[e],!0);for(e=0;e<a.length;e++){for(var f=this.getAllEdges([a[e]]),g=mxUtils.bind(this,function(d,f){var g=this.model.getGeometry(d);if(null!=g){for(var h=this.model.getTerminal(d,f),k=!1,l=h;null!=l;){if(a[e]==l){k=!0;break}l=this.model.getParent(l)}k&&(g=g.clone(),k=this.view.getState(d),null!=k&&null!=k.absolutePoints? +(h=k.absolutePoints,l=f?0:h.length-1,g.setTerminalPoint(new mxPoint(h[l].x/b-c.x-k.origin.x,h[l].y/b-c.y-k.origin.y),f)):(h=this.view.getState(h),null!=h&&g.setTerminalPoint(new mxPoint(h.getCenterX()/b-c.x,h.getCenterY()/b-c.y),f)),this.model.setGeometry(d,g),this.model.setTerminal(d,null,f))}}),h=0;h<f.length;h++)d.get(f[h])||(d.put(f[h],!0),g(f[h],!0),g(f[h],!1));this.model.remove(a[e])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",a))}finally{this.model.endUpdate()}}}; mxGraph.prototype.splitEdge=function(a,b,c,d,e){d=d||0;e=e||0;var f=this.model.getParent(a),g=this.model.getTerminal(a,!0);this.model.beginUpdate();try{if(null==c){c=this.cloneCell(a);var h=this.view.getState(a),k=this.getCellGeometry(c);if(null!=k&&null!=k.points&&null!=h){var l=this.view.translate,m=this.view.scale,n=mxUtils.findNearestSegment(h,(d+l.x)*m,(e+l.y)*m);k.points=k.points.slice(0,n);k=this.getCellGeometry(a);null!=k&&null!=k.points&&(k=k.clone(),k.points=k.points.slice(n),this.model.setGeometry(a, k))}}this.cellsMoved(b,d,e,!1,!1);this.cellsAdded(b,f,this.model.getChildCount(f),null,null,!0);this.cellsAdded([c],f,this.model.getChildCount(f),g,b[0],!1);this.cellConnected(a,b[0],!0);this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",a,"cells",b,"newEdge",c,"dx",d,"dy",e))}finally{this.model.endUpdate()}return c}; mxGraph.prototype.toggleCells=function(a,b,c){null==b&&(b=this.getSelectionCells());c&&(b=this.addAllEdges(b));this.model.beginUpdate();try{this.cellsToggled(b,a),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",a,"cells",b,"includeEdges",c))}finally{this.model.endUpdate()}return b};mxGraph.prototype.cellsToggled=function(a,b){if(null!=a&&0<a.length){this.model.beginUpdate();try{for(var c=0;c<a.length;c++)this.model.setVisible(a[c],b)}finally{this.model.endUpdate()}}}; @@ -1522,8 +1523,9 @@ mxObjectCodec.prototype.afterEncode=function(a,b,c){return c};mxObjectCodec.prot mxObjectCodec.prototype.decodeAttributes=function(a,b,c){b=b.attributes;if(null!=b)for(var d=0;d<b.length;d++)this.decodeAttribute(a,b[d],c)};mxObjectCodec.prototype.isIgnoredAttribute=function(a,b,c){return"as"==b.nodeName||"id"==b.nodeName}; mxObjectCodec.prototype.decodeAttribute=function(a,b,c){if(!this.isIgnoredAttribute(a,b,c)){var d=b.nodeName;b=this.convertAttributeFromXml(a,b,c);var e=this.getFieldName(d);if(this.isReference(c,e,b,!1)){a=a.getObject(b);if(null==a){mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+d+"="+b);return}b=a}this.isExcluded(c,d,b,!1)||(c[d]=b)}}; mxObjectCodec.prototype.decodeChildren=function(a,b,c){for(b=b.firstChild;null!=b;){var d=b.nextSibling;b.nodeType!=mxConstants.NODETYPE_ELEMENT||this.processInclude(a,b,c)||this.decodeChild(a,b,c);b=d}}; -mxObjectCodec.prototype.decodeChild=function(a,b,c){var d=this.getFieldName(b.getAttribute("as"));if(null==d||!this.isExcluded(c,d,b,!1)){var e=this.getFieldTemplate(c,d,b);"add"==b.nodeName?(a=b.getAttribute("value"),null==a&&mxObjectCodec.allowEval&&(a=mxUtils.eval(mxUtils.getTextContent(b)))):a=a.decode(b,e);this.addObjectValue(c,d,a,e)}};mxObjectCodec.prototype.getFieldTemplate=function(a,b,c){a=a[b];a instanceof Array&&0<a.length&&(a=null);return a}; -mxObjectCodec.prototype.addObjectValue=function(a,b,c,d){null!=c&&c!=d&&(null!=b&&0<b.length?a[b]=c:a.push(c))};mxObjectCodec.prototype.processInclude=function(a,b,c){if("include"==b.nodeName){b=b.getAttribute("name");if(null!=b)try{var d=mxUtils.load(b).getDocumentElement();null!=d&&a.decode(d,c)}catch(e){}return!0}return!1};mxObjectCodec.prototype.beforeDecode=function(a,b,c){return b};mxObjectCodec.prototype.afterDecode=function(a,b,c){return c}; +mxObjectCodec.prototype.decodeChild=function(a,b,c){var d=this.getFieldName(b.getAttribute("as"));if(null==d||!this.isExcluded(c,d,b,!1)){var e=this.getFieldTemplate(c,d,b);"add"==b.nodeName?(a=b.getAttribute("value"),null==a&&mxObjectCodec.allowEval&&(a=mxUtils.eval(mxUtils.getTextContent(b)))):a=a.decode(b,e);try{this.addObjectValue(c,d,a,e)}catch(f){throw Error(f.message+" for "+b.nodeName);}}}; +mxObjectCodec.prototype.getFieldTemplate=function(a,b,c){a=a[b];a instanceof Array&&0<a.length&&(a=null);return a};mxObjectCodec.prototype.addObjectValue=function(a,b,c,d){null!=c&&c!=d&&(null!=b&&0<b.length?a[b]=c:a.push(c))};mxObjectCodec.prototype.processInclude=function(a,b,c){if("include"==b.nodeName){b=b.getAttribute("name");if(null!=b)try{var d=mxUtils.load(b).getDocumentElement();null!=d&&a.decode(d,c)}catch(e){}return!0}return!1};mxObjectCodec.prototype.beforeDecode=function(a,b,c){return b}; +mxObjectCodec.prototype.afterDecode=function(a,b,c){return c}; mxCodecRegistry.register(function(){var a=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);a.isCellCodec=function(){return!0};a.isNumericAttribute=function(a,c,d){return"value"!==c.nodeName&&mxObjectCodec.prototype.isNumericAttribute.apply(this,arguments)};a.isExcluded=function(a,c,d,e){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||e&&"value"==c&&d.nodeType==mxConstants.NODETYPE_ELEMENT};a.afterEncode=function(a,c,d){if(null!= c.value&&c.value.nodeType==mxConstants.NODETYPE_ELEMENT){var b=d;d=mxUtils.importNode(a.document,c.value,!0);d.appendChild(b);a=b.getAttribute("id");d.setAttribute("id",a);b.removeAttribute("id")}return d};a.beforeDecode=function(a,c,d){var b=c.cloneNode(!0),f=this.getName();c.nodeName!=f?(b=c.getElementsByTagName(f)[0],null!=b&&b.parentNode==c?(mxUtils.removeWhitespace(b,!0),mxUtils.removeWhitespace(b,!1),b.parentNode.removeChild(b)):b=null,d.value=c.cloneNode(!0),c=d.value.getAttribute("id"),null!= c&&(d.setId(c),d.value.removeAttribute("id"))):d.setId(c.getAttribute("id"));if(null!=b)for(c=0;c<this.idrefs.length;c++){var f=this.idrefs[c],g=b.getAttribute(f);if(null!=g){b.removeAttribute(f);var h=a.objects[g]||a.lookup(g);null==h&&(g=a.getElementById(g),null!=g&&(h=(mxCodecRegistry.codecs[g.nodeName]||this).decode(a,g)));d[f]=h}}return b};return a}()); @@ -1534,8 +1536,8 @@ g={});for(f=c.firstChild;null!=f;){if(f.nodeType==mxConstants.NODETYPE_ELEMENT){ (function(){try{if(null!=navigator&&null!=navigator.language){var a=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===a||"en-ca"===a||"es-mx"===a?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(b){}})();mxText.prototype.baseSpacingTop=5;mxText.prototype.baseSpacingBottom=1;mxGraphModel.prototype.ignoreRelativeEdgeParent=!1; mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif";mxGraphView.prototype.gridSteps=4;mxGraphView.prototype.minGridSize=4;mxGraphView.prototype.gridColor="#e0e0e0";mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(a,b,c){return null}; Graph=function(a,b,c,d,e){mxGraph.call(this,a,b,c,d);this.themes=e||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);a=this.baseUrl;b=a.indexOf("//");this.domainPathUrl=this.domainUrl="";0<b&&(b=a.indexOf("/",b+2),0<b&&(this.domainUrl=a.substring(0,b)),b=a.lastIndexOf("/"),0<b&&(this.domainPathUrl=a.substring(0,b+1)));this.isHtmlLabel=function(a){var b=this.view.getState(a);a=null!=b?b.style:this.getCellStyle(a); -return"1"==a.html||"wrap"==a[mxConstants.STYLE_WHITE_SPACE]};if(this.edgeMode){var f=null,g=null,h=null,k=null,l=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,b){if("mouseDown"==b.getProperty("eventName")&&this.isEnabled()){var c=b.getProperty("event");if(!mxEvent.isControlDown(c.getEvent())&&!mxEvent.isShiftDown(c.getEvent())){var d=c.getState();null!=d&&this.model.isEdge(d.cell)&&(f=new mxPoint(c.getGraphX(),c.getGraphY()),l=this.isCellSelected(d.cell),h=d,g=c,null!= -d.text&&null!=d.text.boundingBox&&mxUtils.contains(d.text.boundingBox,c.getGraphX(),c.getGraphY())?k=mxEvent.LABEL_HANDLE:(d=this.selectionCellsHandler.getHandler(d.cell),null!=d&&null!=d.bends&&0<d.bends.length&&(k=d.getHandleForEvent(c))))}}}));this.addMouseListener({mouseDown:function(a,b){},mouseMove:mxUtils.bind(this,function(a,b){var c=this.selectionCellsHandler.handlers.map,d;for(d in c)if(null!=c[d].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isControlDown(b.getEvent())&& +return null!=a?"1"==a.html||"wrap"==a[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var f=null,g=null,h=null,k=null,l=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,b){if("mouseDown"==b.getProperty("eventName")&&this.isEnabled()){var c=b.getProperty("event");if(!mxEvent.isControlDown(c.getEvent())&&!mxEvent.isShiftDown(c.getEvent())){var d=c.getState();null!=d&&this.model.isEdge(d.cell)&&(f=new mxPoint(c.getGraphX(),c.getGraphY()),l=this.isCellSelected(d.cell),h= +d,g=c,null!=d.text&&null!=d.text.boundingBox&&mxUtils.contains(d.text.boundingBox,c.getGraphX(),c.getGraphY())?k=mxEvent.LABEL_HANDLE:(d=this.selectionCellsHandler.getHandler(d.cell),null!=d&&null!=d.bends&&0<d.bends.length&&(k=d.getHandleForEvent(c))))}}}));this.addMouseListener({mouseDown:function(a,b){},mouseMove:mxUtils.bind(this,function(a,b){var c=this.selectionCellsHandler.handlers.map,d;for(d in c)if(null!=c[d].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isControlDown(b.getEvent())&& !mxEvent.isShiftDown(b.getEvent())&&!mxEvent.isAltDown(b.getEvent()))if(d=this.tolerance,null!=f&&null!=h&&null!=g){if(c=h,Math.abs(f.x-b.getGraphX())>d||Math.abs(f.y-b.getGraphY())>d){this.isCellSelected(c.cell)||this.setSelectionCell(c.cell);var e=this.selectionCellsHandler.getHandler(c.cell);if(null!=e&&null!=e.bends&&0<e.bends.length){var m=e.getHandleForEvent(g),n=this.view.getEdgeStyle(c);d=n==mxEdgeStyle.EntityRelation;l||k!=mxEvent.LABEL_HANDLE||(m=k);if(d&&0!=m&&m!=e.bends.length-1&&m!=mxEvent.LABEL_HANDLE)!d|| null==c.visibleSourceState&&null==c.visibleTargetState||(this.graphHandler.reset(),b.consume());else if(m==mxEvent.LABEL_HANDLE||0==m||null!=c.visibleSourceState||m==e.bends.length-1||null!=c.visibleTargetState)d||m==mxEvent.LABEL_HANDLE||(d=c.absolutePoints,null!=d&&(null==n&&null==m||n==mxEdgeStyle.OrthConnector)&&(m=k,null==m&&(m=new mxRectangle(f.x,f.y),m.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(m,d[0].x,d[0].y)?m=0:mxUtils.contains(m,d[d.length-1].x,d[d.length-1].y)? m=e.bends.length-1:null!=n&&(2==d.length||3==d.length&&(0==Math.round(d[0].x-d[1].x)&&0==Math.round(d[1].x-d[2].x)||0==Math.round(d[0].y-d[1].y)&&0==Math.round(d[1].y-d[2].y)))?m=2:(m=mxUtils.findNearestSegment(c,f.x,f.y),m=null==n?mxEvent.VIRTUAL_HANDLE-m:m+1))),null==m&&(m=mxEvent.VIRTUAL_HANDLE)),e.start(b.getGraphX(),b.getGraphX(),m),k=f=g=h=null,l=!1,b.consume(),this.graphHandler.reset()}}}else if(c=b.getState(),null!=c&&this.model.isEdge(c.cell)){e=null;d=c.absolutePoints;if(null!=d)if(m=new mxRectangle(b.getGraphX(), @@ -1546,8 +1548,8 @@ function(){var a=m.apply(this,arguments);if(this.graph.pageVisible){for(var b=[] function(a,b){return null==a.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(a){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};this.graphHandler.getCells=function(a){for(var b=mxGraphHandler.prototype.getCells.apply(this,arguments),c=[],d=0;d<b.length;d++){var e=this.graph.view.getState(b[d]),e=null!=e?e.style:this.graph.getCellStyle(b[d]); "1"==mxUtils.getValue(e,"part","0")?(e=this.graph.model.getParent(b[d]),this.graph.model.isVertex(e)&&0>mxUtils.indexOf(b,e)&&c.push(e)):c.push(b[d])}return c};this.connectionHandler.createTargetVertex=function(a,b){var c=this.graph.view.getState(b),c=null!=c?c.style:this.graph.getCellStyle(b);mxUtils.getValue(c,"part",!1)&&(c=this.graph.model.getParent(b),this.graph.model.isVertex(c)&&(b=c));return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var n=new mxRubberband(this); this.getRubberband=function(){return n};var p=(new Date).getTime(),r=0,q=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var a=this.currentState;q.apply(this,arguments);a!=this.currentState?(p=(new Date).getTime(),r=0):r=(new Date).getTime()-p};var t=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(a){return null!=this.currentState&&a.getState()==this.currentState&&2E3<r||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style, -"outlineConnect","1"))&&t.apply(this,arguments)};var z=this.isToggleEvent;this.isToggleEvent=function(a){return z.apply(this,arguments)||mxEvent.isShiftDown(a)};var w=n.isForceRubberbandEvent;n.isForceRubberbandEvent=function(a){return w.apply(this,arguments)||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==a.getState()&&mxEvent.isTouchEvent(a.getEvent())};var x=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&& -(x=this.container.style.cursor,this.container.style.cursor="move")}));this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.isEnabled()&&(this.container.style.cursor=x)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(a){return mxEvent.isMouseEvent(a.getEvent())};var y=this.click;this.click=function(a){var b=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);if(this.isEnabled()&&!b||a.isConsumed())return y.apply(this, +"outlineConnect","1"))&&t.apply(this,arguments)};var z=this.isToggleEvent;this.isToggleEvent=function(a){return z.apply(this,arguments)||mxEvent.isShiftDown(a)};var x=n.isForceRubberbandEvent;n.isForceRubberbandEvent=function(a){return x.apply(this,arguments)||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==a.getState()&&mxEvent.isTouchEvent(a.getEvent())};var w=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&& +(w=this.container.style.cursor,this.container.style.cursor="move")}));this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.isEnabled()&&(this.container.style.cursor=w)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(a){return mxEvent.isMouseEvent(a.getEvent())};var y=this.click;this.click=function(a){var b=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);if(this.isEnabled()&&!b||a.isConsumed())return y.apply(this, arguments);b=b?a.sourceState.cell:a.getCell();null!=b&&(b=this.getLinkForCell(b),null!=b&&(this.isCustomLink(b)?this.customLinkClicked(b):this.openLink(b)))};this.tooltipHandler.getStateForEvent=function(a){return a.sourceState};this.getCursorForMouseEvent=function(a){var b=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);return this.getCursorForCell(b?a.sourceState.cell:a.getCell())};var u=this.getCursorForCell;this.getCursorForCell=function(a){if(!this.isEnabled()||this.isCellLocked(a)){if(null!= this.getLinkForCell(a))return"pointer";if(this.isCellLocked(a))return"default"}return u.apply(this,arguments)};this.selectRegion=function(a,b){var c=this.getAllCells(a.x,a.y,a.width,a.height);this.selectCellsForEvent(c,b);return c};this.getAllCells=function(a,b,c,d,e,f){f=null!=f?f:[];if(0<c||0<d){var g=this.getModel(),h=a+c,k=b+d;null==e&&(e=this.getCurrentRoot(),null==e&&(e=g.getRoot()));if(null!=e)for(var l=g.getChildCount(e),m=0;m<l;m++){var n=g.getChildAt(e,m),p=this.view.getState(n);if(null!= p&&this.isCellVisible(n)&&"1"!=mxUtils.getValue(p.style,"locked","0")){var q=mxUtils.getValue(p.style,mxConstants.STYLE_ROTATION)||0;0!=q&&(p=mxUtils.getBoundingBox(p,q));(g.isEdge(n)||g.isVertex(n))&&p.x>=a&&p.y+p.height<=k&&p.y>=b&&p.x+p.width<=h&&f.push(n);this.getAllCells(a,b,c,d,n,f)}}}return f};var D=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,b,c){return this.graph.isCellSelected(a)?!1:D.apply(this,arguments)};this.isCellLocked=function(a){for(a= @@ -1568,7 +1570,7 @@ function(b){this.graph.useCssTransforms&&(this.graph.currentScale=this.scale,thi if(null!=a)if(a=a.parentNode,this.useCssTransforms){var b=a.getAttribute("transform");a.setAttribute("transformOrigin","0 0");a.setAttribute("transform","scale("+this.currentScale+","+this.currentScale+")translate("+this.currentTranslate.x+","+this.currentTranslate.y+")");if(b!=a.getAttribute("transform"))try{if(mxClient.IS_EDGE){var c=a.style.display;a.style.display="none";a.getBBox();a.style.display=c}}catch(g){}}else a.removeAttribute("transformOrigin"),a.removeAttribute("transform")};var b=mxGraphView.prototype.validateBackgroundPage; mxGraphView.prototype.validateBackgroundPage=function(){var a=this.graph.useCssTransforms,c=this.scale,f=this.translate;a&&(this.scale=this.graph.currentScale,this.translate=this.graph.currentTranslate);b.apply(this,arguments);a&&(this.scale=c,this.translate=f)};var c=mxGraph.prototype.updatePageBreaks;mxGraph.prototype.updatePageBreaks=function(a,b,f){var d=this.useCssTransforms,e=this.view.scale,k=this.view.translate;d&&(this.view.scale=1,this.view.translate=new mxPoint(0,0),this.useCssTransforms= !1);c.apply(this,arguments);d&&(this.view.scale=e,this.view.translate=k,this.useCssTransforms=!0)}})();Graph.prototype.isLightboxView=function(){return this.lightbox};Graph.prototype.labelLinkClicked=function(a,b,c){b=b.getAttribute("href");if(null!=b&&!this.isCustomLink(b)&&mxEvent.isLeftMouseButton(c)&&!mxEvent.isPopupTrigger(c)||mxEvent.isTouchEvent(c)){if(!this.isEnabled()||this.isCellLocked(a.cell))a=this.isBlankLink(b)?this.linkTarget:"_top",this.openLink(this.getAbsoluteUrl(b),a);mxEvent.consume(c)}}; -Graph.prototype.openLink=function(a,b,c){var d=window;"_self"==b&&window!=window.top?window.location.href=a:a.substring(0,this.baseUrl.length)==this.baseUrl&&"#"==a.charAt(this.baseUrl.length)&&"_top"==b&&window==window.top?(a=a.split("#")[1],window.location.hash=="#"+a&&(window.location.hash=""),window.location.hash=a):(d=window.open(a,b),null==d||c||(d.opener=null));return d};Graph.prototype.getLinkTitle=function(a){return a.substring(a.lastIndexOf("/")+1)}; +Graph.prototype.openLink=function(a,b,c){var d=window;if("_self"==b&&window!=window.top)window.location.href=a;else if(a.substring(0,this.baseUrl.length)==this.baseUrl&&"#"==a.charAt(this.baseUrl.length)&&"_top"==b&&window==window.top)a=a.split("#")[1],window.location.hash=="#"+a&&(window.location.hash=""),window.location.hash=a;else{d=window.open(a,b);try{null==d||c||(d.opener=null)}catch(e){}}return d};Graph.prototype.getLinkTitle=function(a){return a.substring(a.lastIndexOf("/")+1)}; Graph.prototype.isCustomLink=function(a){return"data:"==a.substring(0,5)};Graph.prototype.customLinkClicked=function(a){return!1};Graph.prototype.isExternalProtocol=function(a){return"mailto:"===a.substring(0,7)};Graph.prototype.isBlankLink=function(a){return!this.isExternalProtocol(a)&&("blank"===this.linkPolicy||"self"!==this.linkPolicy&&!this.isRelativeUrl(a)&&a.substring(0,this.domainUrl.length)!==this.domainUrl)}; Graph.prototype.isRelativeUrl=function(a){return null!=a&&!this.absoluteUrlPattern.test(a)&&"data:"!==a.substring(0,5)&&!this.isExternalProtocol(a)}; Graph.prototype.initLayoutManager=function(){this.layoutManager=new mxLayoutManager(this);this.layoutManager.getLayout=function(a){var b=this.graph.view.getState(a);a=null!=b?b.style:this.graph.getCellStyle(a);if(null!=a){if("stackLayout"==a.childLayout)return b=new mxStackLayout(this.graph,!0),b.resizeParentMax="1"==mxUtils.getValue(a,"resizeParentMax","1"),b.horizontal="1"==mxUtils.getValue(a,"horizontalStack","1"),b.resizeParent="1"==mxUtils.getValue(a,"resizeParent","1"),b.resizeLast="1"==mxUtils.getValue(a, @@ -1592,11 +1594,11 @@ Graph.prototype.replacePlaceholders=function(a,b){var c=[];if(null!=b){for(var d match.index)+(null!=f?f:e));d=match.index+e.length}}c.push(b.substring(d))}return c.join("")};Graph.prototype.restoreSelection=function(a){if(null!=a&&0<a.length){for(var b=[],c=0;c<a.length;c++){var d=this.model.getCell(a[c].id);null!=d&&b.push(d)}this.setSelectionCells(b)}else this.clearSelection()}; Graph.prototype.selectCellsForConnectVertex=function(a,b,c){2==a.length&&this.model.isVertex(a[1])?(this.setSelectionCell(a[1]),null!=c&&(mxEvent.isTouchEvent(b)?c.update(c.getState(this.view.getState(a[1]))):c.reset()),this.scrollCellToVisible(a[1])):this.setSelectionCells(a)}; Graph.prototype.connectVertex=function(a,b,c,d,e,f){f=f?f:!1;var g=a.geometry.relative&&null!=a.parent.geometry?new mxPoint(a.parent.geometry.width*a.geometry.x,a.parent.geometry.height*a.geometry.y):new mxPoint(a.geometry.x,a.geometry.y);b==mxConstants.DIRECTION_NORTH?(g.x+=a.geometry.width/2,g.y-=c):b==mxConstants.DIRECTION_SOUTH?(g.x+=a.geometry.width/2,g.y+=a.geometry.height+c):(g.x=b==mxConstants.DIRECTION_WEST?g.x-c:g.x+(a.geometry.width+c),g.y+=a.geometry.height/2);c=this.view.getState(this.model.getParent(a)); -var h=this.view.scale,k=this.view.translate,l=k.x*h,k=k.y*h;this.model.isVertex(c.cell)&&(l=c.x,k=c.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(g.x+=a.parent.geometry.x,g.y+=a.parent.geometry.y);f=f||mxEvent.isControlDown(d)&&!e?null:this.getCellAt(l+g.x*h,k+g.y*h);this.model.isAncestor(f,a)&&(f=null);for(c=f;null!=c;){if(this.isCellLocked(c)){f=null;break}c=this.model.getParent(c)}null!=f&&(c=this.view.getState(a),h=this.view.getState(f),null!=c&&null!=h&&mxUtils.intersects(c,h)&&(f= -null));if(e=!mxEvent.isShiftDown(d)||e)b==mxConstants.DIRECTION_NORTH?g.y-=a.geometry.height/2:b==mxConstants.DIRECTION_SOUTH?g.y+=a.geometry.height/2:g.x=b==mxConstants.DIRECTION_WEST?g.x-a.geometry.width/2:g.x+a.geometry.width/2;null==f||this.isCellConnectable(f)||(c=this.getModel().getParent(f),this.getModel().isVertex(c)&&this.isCellConnectable(c)&&(f=c));if(f==a||this.model.isEdge(f)||!this.isCellConnectable(f))f=null;c=[];this.model.beginUpdate();try{h=f;if(null==h&&e){for(var l=a,m=this.getCellGeometry(a);null!= -m&&m.relative;)l=this.getModel().getParent(l),m=this.getCellGeometry(l);var n=this.view.getState(l),p=null!=n?n.style:this.getCellStyle(l);if(mxUtils.getValue(p,"part",!1)){var r=this.model.getParent(l);this.model.isVertex(r)&&(l=r)}h=this.duplicateCells([l],!1)[0];m=this.getCellGeometry(h);null!=m&&(m.x=g.x-m.width/2,m.y=g.y-m.height/2)}m=null;null!=this.layoutManager&&(m=this.layoutManager.getLayout(this.model.getParent(a)));var q=mxEvent.isControlDown(d)&&e||null==f&&null!=m&&m.constructor==mxStackLayout? -null:this.insertEdge(this.model.getParent(a),null,"",a,h,this.createCurrentEdgeStyle());if(null!=q&&this.connectionHandler.insertBeforeSource){var t=null;for(d=a;null!=d.parent&&null!=d.geometry&&d.geometry.relative&&d.parent!=q.parent;)d=this.model.getParent(d);null!=d&&null!=d.parent&&d.parent==q.parent&&(t=d.parent.getIndex(d),this.model.add(d.parent,q,t))}null==f&&null!=h&&null!=m&&null!=a.parent&&m.constructor==mxStackLayout&&b==mxConstants.DIRECTION_WEST&&(t=a.parent.getIndex(a),this.model.add(a.parent, -h,t));null!=q&&c.push(q);null==f&&null!=h&&c.push(h);null==h&&null!=q&&q.geometry.setTerminalPoint(g,!1);null!=q&&this.fireEvent(new mxEventObject("cellsInserted","cells",[q]))}finally{this.model.endUpdate()}return c}; +var h=this.view.scale,k=this.view.translate,l=k.x*h,k=k.y*h;null!=c&&this.model.isVertex(c.cell)&&(l=c.x,k=c.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(g.x+=a.parent.geometry.x,g.y+=a.parent.geometry.y);f=f||mxEvent.isControlDown(d)&&!e?null:this.getCellAt(l+g.x*h,k+g.y*h);this.model.isAncestor(f,a)&&(f=null);for(c=f;null!=c;){if(this.isCellLocked(c)){f=null;break}c=this.model.getParent(c)}null!=f&&(c=this.view.getState(a),h=this.view.getState(f),null!=c&&null!=h&&mxUtils.intersects(c, +h)&&(f=null));if(e=!mxEvent.isShiftDown(d)||e)b==mxConstants.DIRECTION_NORTH?g.y-=a.geometry.height/2:b==mxConstants.DIRECTION_SOUTH?g.y+=a.geometry.height/2:g.x=b==mxConstants.DIRECTION_WEST?g.x-a.geometry.width/2:g.x+a.geometry.width/2;null==f||this.isCellConnectable(f)||(c=this.getModel().getParent(f),this.getModel().isVertex(c)&&this.isCellConnectable(c)&&(f=c));if(f==a||this.model.isEdge(f)||!this.isCellConnectable(f))f=null;c=[];this.model.beginUpdate();try{h=f;if(null==h&&e){for(var l=a,m= +this.getCellGeometry(a);null!=m&&m.relative;)l=this.getModel().getParent(l),m=this.getCellGeometry(l);var n=this.view.getState(l),p=null!=n?n.style:this.getCellStyle(l);if(mxUtils.getValue(p,"part",!1)){var r=this.model.getParent(l);this.model.isVertex(r)&&(l=r)}h=this.duplicateCells([l],!1)[0];m=this.getCellGeometry(h);null!=m&&(m.x=g.x-m.width/2,m.y=g.y-m.height/2)}m=null;null!=this.layoutManager&&(m=this.layoutManager.getLayout(this.model.getParent(a)));var q=mxEvent.isControlDown(d)&&e||null== +f&&null!=m&&m.constructor==mxStackLayout?null:this.insertEdge(this.model.getParent(a),null,"",a,h,this.createCurrentEdgeStyle());if(null!=q&&this.connectionHandler.insertBeforeSource){var t=null;for(d=a;null!=d.parent&&null!=d.geometry&&d.geometry.relative&&d.parent!=q.parent;)d=this.model.getParent(d);null!=d&&null!=d.parent&&d.parent==q.parent&&(t=d.parent.getIndex(d),this.model.add(d.parent,q,t))}null==f&&null!=h&&null!=m&&null!=a.parent&&m.constructor==mxStackLayout&&b==mxConstants.DIRECTION_WEST&& +(t=a.parent.getIndex(a),this.model.add(a.parent,h,t));null!=q&&c.push(q);null==f&&null!=h&&c.push(h);null==h&&null!=q&&q.geometry.setTerminalPoint(g,!1);null!=q&&this.fireEvent(new mxEventObject("cellsInserted","cells",[q]))}finally{this.model.endUpdate()}return c}; Graph.prototype.getIndexableText=function(){var a=document.createElement("div"),b=[],c,d;for(d in this.model.cells)if(c=this.model.cells[d],this.model.isVertex(c)||this.model.isEdge(c))this.isHtmlLabel(c)?(a.innerHTML=this.getLabel(c),c=mxUtils.extractTextWithWhitespace([a])):c=this.getLabel(c),c=mxUtils.trim(c.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<c.length&&b.push(c);return b.join(" ")}; Graph.prototype.convertValueToString=function(a){if(null!=a.value&&"object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder")){for(var b=a.getAttribute("placeholder"),c=a,d=null;null==d&&null!=c;)null!=c.value&&"object"==typeof c.value&&(d=c.hasAttribute(b)?null!=c.getAttribute(b)?c.getAttribute(b):"":null),c=this.model.getParent(c);return d||""}return a.value.getAttribute("label")||""}return mxGraph.prototype.convertValueToString.apply(this,arguments)}; Graph.prototype.getLinksForState=function(a){return null!=a&&null!=a.text&&null!=a.text.node?a.text.node.getElementsByTagName("a"):null};Graph.prototype.getLinkForCell=function(a){return null!=a.value&&"object"==typeof a.value?(a=a.value.getAttribute("link"),null!=a&&"javascript:"===a.toLowerCase().substring(0,11)&&(a=a.substring(11)),a):null}; @@ -1606,7 +1608,7 @@ Graph.prototype.foldCells=function(a,b,c,d,e){b=null!=b?b:!1;null==c&&(c=this.ge null==n?null!=e&&this.isMoveCellsEvent(e)&&this.moveSiblings(g,m,k,l):null!=e&&mxEvent.isAltDown(e)||n.constructor!=mxStackLayout||n.resizeLast||this.resizeParentStacks(m,n,k,l)}}}}finally{this.model.endUpdate()}this.isEnabled()&&this.setSelectionCells(c)}}; Graph.prototype.moveSiblings=function(a,b,c,d){this.model.beginUpdate();try{var e=this.getCellsBeyond(a.x,a.y,b,!0,!0);for(b=0;b<e.length;b++)if(e[b]!=a.cell){var f=this.view.getState(e[b]),g=this.getCellGeometry(e[b]);null!=f&&null!=g&&(g=g.clone(),g.translate(Math.round(c*Math.max(0,Math.min(1,(f.x-a.x)/a.width))),Math.round(d*Math.max(0,Math.min(1,(f.y-a.y)/a.height)))),this.model.setGeometry(e[b],g))}}finally{this.model.endUpdate()}}; Graph.prototype.resizeParentStacks=function(a,b,c,d){if(null!=this.layoutManager&&null!=b&&b.constructor==mxStackLayout&&!b.resizeLast){this.model.beginUpdate();try{for(var e=b.horizontal;null!=a&&null!=b&&b.constructor==mxStackLayout&&b.horizontal==e&&!b.resizeLast;){var f=this.getCellGeometry(a),g=this.view.getState(a);null!=g&&null!=f&&(f=f.clone(),b.horizontal?f.width+=c+Math.min(0,g.width/this.view.scale-f.width):f.height+=d+Math.min(0,g.height/this.view.scale-f.height),this.model.setGeometry(a, -f));a=this.model.getParent(a);b=this.layoutManager.getLayout(a)}}finally{this.model.endUpdate()}}};Graph.prototype.isContainer=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return this.isSwimlane(a)?"0"!=b.container:"1"==b.container};Graph.prototype.isCellConnectable=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return null!=b.connectable?"0"!=b.connectable:mxGraph.prototype.isCellConnectable.apply(this,arguments)}; +f));a=this.model.getParent(a);b=this.layoutManager.getLayout(a)}}finally{this.model.endUpdate()}}};Graph.prototype.isContainer=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return this.isSwimlane(a)?"0"!=b.container:"1"==b.container};Graph.prototype.isCellConnectable=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return null!=b&&null!=b.connectable?"0"!=b.connectable:mxGraph.prototype.isCellConnectable.apply(this,arguments)}; Graph.prototype.selectAll=function(a){a=a||this.getDefaultParent();this.isCellLocked(a)||mxGraph.prototype.selectAll.apply(this,arguments)};Graph.prototype.selectCells=function(a,b,c){c=c||this.getDefaultParent();this.isCellLocked(c)||mxGraph.prototype.selectCells.apply(this,arguments)};Graph.prototype.getSwimlaneAt=function(a,b,c){c=c||this.getDefaultParent();return this.isCellLocked(c)?null:mxGraph.prototype.getSwimlaneAt.apply(this,arguments)}; Graph.prototype.isCellFoldable=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return this.foldingEnabled&&!this.isCellLocked(a)&&(this.isContainer(a)&&"0"!=b.collapsible||!this.isContainer(a)&&"1"==b.collapsible)};Graph.prototype.reset=function(){this.isEditing()&&this.stopEditing(!0);this.escape();this.isSelectionEmpty()||this.clearSelection()}; Graph.prototype.zoom=function(a,b){a=Math.max(.01,Math.min(this.view.scale*a,160))/this.view.scale;mxGraph.prototype.zoom.apply(this,arguments)};Graph.prototype.zoomIn=function(){.15>this.view.scale?this.zoom((this.view.scale+.01)/this.view.scale):this.zoom(Math.round(this.view.scale*this.zoomFactor*20)/20/this.view.scale)};Graph.prototype.zoomOut=function(){.15>=this.view.scale?this.zoom((this.view.scale-.01)/this.view.scale):this.zoom(Math.round(1/this.zoomFactor*this.view.scale*20)/20/this.view.scale)}; @@ -1643,22 +1645,22 @@ a.y-this.triangleUp.height/2),a=this.graph.getCellAt(this.currentState.getCenter f(b,this.arrowRight);f(c,this.arrowLeft);f(d,this.arrowUp);f(a,this.arrowDown)}else this.arrowLeft.style.visibility="visible",this.arrowRight.style.visibility="visible",this.arrowUp.style.visibility="visible",this.arrowDown.style.visibility="visible";this.graph.tooltipHandler.isEnabled()?(this.arrowLeft.setAttribute("title",mxResources.get("plusTooltip")),this.arrowRight.setAttribute("title",mxResources.get("plusTooltip")),this.arrowUp.setAttribute("title",mxResources.get("plusTooltip")),this.arrowDown.setAttribute("title", mxResources.get("plusTooltip"))):(this.arrowLeft.removeAttribute("title"),this.arrowRight.removeAttribute("title"),this.arrowUp.removeAttribute("title"),this.arrowDown.removeAttribute("title"))}else this.reset();null!=this.currentState&&(this.bbox=this.computeBoundingBox(),null!=this.bbox&&this.bbox.grow(10))}}; HoverIcons.prototype.computeBoundingBox=function(){var a=this.graph.model.isEdge(this.currentState.cell)?null:mxRectangle.fromRectangle(this.currentState);this.visitNodes(function(b){null!=b.parentNode&&(b=new mxRectangle(b.offsetLeft,b.offsetTop,b.offsetWidth,b.offsetHeight),null==a?a=b:a.add(b))});return a}; -HoverIcons.prototype.getState=function(a){if(null!=a){a=a.cell;if(this.graph.getModel().isVertex(a)&&!this.graph.isCellConnectable(a)){var b=this.graph.getModel().getParent(a);this.graph.getModel().isVertex(b)&&this.graph.isCellConnectable(b)&&(a=b)}if(this.graph.isCellLocked(a)||this.graph.model.isEdge(a))a=null;a=this.graph.view.getState(a)}return a}; +HoverIcons.prototype.getState=function(a){if(null!=a)if(a=a.cell,this.graph.getModel().contains(a)){if(this.graph.getModel().isVertex(a)&&!this.graph.isCellConnectable(a)){var b=this.graph.getModel().getParent(a);this.graph.getModel().isVertex(b)&&this.graph.isCellConnectable(b)&&(a=b)}if(this.graph.isCellLocked(a)||this.graph.model.isEdge(a))a=null;a=this.graph.view.getState(a);null!=a&&null==a.style&&(a=null)}else a=null;return a}; HoverIcons.prototype.update=function(a,b,c){if(this.graph.connectionArrowsEnabled){var d=null;this.prev!=a||this.isActive()?(this.startTime=(new Date).getTime(),this.prev=a,d=0,null!=this.updateThread&&window.clearTimeout(this.updateThread),null!=a&&(this.updateThread=window.setTimeout(mxUtils.bind(this,function(){this.isActive()||this.graph.isMouseDown||this.graph.panningHandler.isActive()||(this.prev=a,this.update(a,b,c))}),this.updateDelay+10))):null!=this.startTime&&(d=(new Date).getTime()-this.startTime); this.setDisplay("");null!=this.currentState&&this.currentState!=a&&d<this.activationDelay&&null!=this.bbox&&!mxUtils.contains(this.bbox,b,c)?this.reset(!1):(null!=this.currentState||d>this.activationDelay)&&this.currentState!=a&&(d>this.updateDelay&&null!=a||null==this.bbox||null==b||null==c||!mxUtils.contains(this.bbox,b,c))&&(null!=a&&this.graph.isEnabled()?(this.removeNodes(),this.setCurrentState(a),this.repaint(),this.graph.connectionHandler.constraintHandler.currentFocus!=a&&this.graph.connectionHandler.constraintHandler.reset()): this.reset())}else this.reset()};HoverIcons.prototype.setCurrentState=function(a){"eastwest"!=a.style.portConstraint&&(this.graph.container.appendChild(this.arrowUp),this.graph.container.appendChild(this.arrowDown));this.graph.container.appendChild(this.arrowRight);this.graph.container.appendChild(this.arrowLeft);this.currentState=a}; (function(){var a=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){a.apply(this,arguments);this.validEdges=[]};var b=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(a,c){var d=this.getState(a);null!=d&&this.graph.model.isEdge(d.cell)&&null!=d.style&&1!=d.style[mxConstants.STYLE_CURVED]&&!d.invalid&&this.updateLineJumps(d)&&this.graph.cellRenderer.redraw(d,!1,this.isRendering());d=b.apply(this,arguments);null!= -d&&this.graph.model.isEdge(d.cell)&&1!=d.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(d);return d};var c=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(a,b){return c.apply(this,arguments)||null!=a.routedPoints&&null!=b.routedPoints&&!mxUtils.equalPoints(b.routedPoints,a.routedPoints)};var d=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=function(a){d.apply(this,arguments);this.graph.model.isEdge(a.cell)&&1!=a.style[mxConstants.STYLE_CURVED]&& -this.updateLineJumps(a)};mxGraphView.prototype.updateLineJumps=function(a){var b=a.absolutePoints;if(Graph.lineJumpsEnabled){var c=null!=a.routedPoints,d=null;if(null!=b&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var e=function(b,c,e){var f=new mxPoint(c,e);f.type=b;d.push(f);f=null!=a.routedPoints?a.routedPoints[d.length-1]:null;return null==f||f.type!=b||f.x!=c||f.y!=e},f=.5*this.scale,c=!1,d=[],g=0;g<b.length-1;g++){for(var h=b[g+1],k=b[g],w=[],x=b[g+2];g< -b.length-2&&mxUtils.ptSegDistSq(k.x,k.y,x.x,x.y,h.x,h.y)<1*this.scale*this.scale;)h=x,g++,x=b[g+2];for(var c=e(0,k.x,k.y)||c,y=0;y<this.validEdges.length;y++){var u=this.validEdges[y],D=u.absolutePoints;if(null!=D&&mxUtils.intersects(a,u)&&"1"!=u.style.noJump)for(u=0;u<D.length-1;u++){for(var F=D[u+1],E=D[u],x=D[u+2];u<D.length-2&&mxUtils.ptSegDistSq(E.x,E.y,x.x,x.y,F.x,F.y)<1*this.scale*this.scale;)F=x,u++,x=D[u+2];x=mxUtils.intersection(k.x,k.y,h.x,h.y,E.x,E.y,F.x,F.y);if(null!=x&&(Math.abs(x.x- -E.x)>f||Math.abs(x.y-E.y)>f)&&(Math.abs(x.x-F.x)>f||Math.abs(x.y-F.y)>f)){F=x.x-k.x;E=x.y-k.y;x={distSq:F*F+E*E,x:x.x,y:x.y};for(F=0;F<w.length;F++)if(w[F].distSq>x.distSq){w.splice(F,0,x);x=null;break}null==x||0!=w.length&&w[w.length-1].x===x.x&&w[w.length-1].y===x.y||w.push(x)}}}for(u=0;u<w.length;u++)c=e(1,w[u].x,w[u].y)||c}x=b[b.length-1];c=e(0,x.x,x.y)||c}a.routedPoints=d;return c}return!1};var e=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(a,b,c){this.routedPoints= -null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)e.apply(this,arguments);else{var d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,f=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,g=mxUtils.getValue(this.style,"jumpStyle","none"),h,k=!0,l=null,m=null;h=[];var x=null;a.begin();for(var y=0;y<this.state.routedPoints.length;y++){var u= -this.state.routedPoints[y],D=new mxPoint(u.x/this.scale,u.y/this.scale);0==y?D=b[0]:y==this.state.routedPoints.length-1&&(D=b[b.length-1]);var F=!1;if(null!=l&&1==u.type){var E=this.state.routedPoints[y+1],u=E.x/this.scale-D.x,E=E.y/this.scale-D.y,u=u*u+E*E;null==x&&(x=new mxPoint(D.x-l.x,D.y-l.y),m=Math.sqrt(x.x*x.x+x.y*x.y),x.x=x.x*f/m,x.y=x.y*f/m);u>f*f&&0<m&&(u=l.x-D.x,E=l.y-D.y,u=u*u+E*E,u>f*f&&(F=new mxPoint(D.x-x.x,D.y-x.y),u=new mxPoint(D.x+x.x,D.y+x.y),h.push(F),this.addPoints(a,h,c,d,!1, -null,k),h=0>Math.round(x.x)||0==Math.round(x.x)&&0>=Math.round(x.y)?1:-1,k=!1,"sharp"==g?(a.lineTo(F.x-x.y*h,F.y+x.x*h),a.lineTo(u.x-x.y*h,u.y+x.x*h),a.lineTo(u.x,u.y)):"arc"==g?(h*=1.3,a.curveTo(F.x-x.y*h,F.y+x.x*h,u.x-x.y*h,u.y+x.x*h,u.x,u.y)):(a.moveTo(u.x,u.y),k=!0),h=[u],F=!0))}else x=null;F||(h.push(D),l=D)}this.addPoints(a,h,c,d,!1,null,k);a.stroke()}};var f=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint=function(a,b,c,d){if(null==b||null== -a||"1"!=b.style.snapToPoint&&"1"!=a.style.snapToPoint)f.apply(this,arguments);else{b=this.getTerminalPort(a,b,d);var e=this.getNextPoint(a,c,d),g=this.graph.isOrthogonal(a),h=mxUtils.toRadians(Number(b.style[mxConstants.STYLE_ROTATION]||"0")),k=new mxPoint(b.getCenterX(),b.getCenterY());if(0!=h)var l=Math.cos(-h),m=Math.sin(-h),e=mxUtils.getRotatedPoint(e,l,m,k);l=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||0);l+=parseFloat(a.style[d?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]|| -0);e=this.getPerimeterPoint(b,e,0==h&&g,l);0!=h&&(l=Math.cos(h),m=Math.sin(h),e=mxUtils.getRotatedPoint(e,l,m,k));a.setAbsoluteTerminalPoint(this.snapToAnchorPoint(a,b,c,d,e),d)}};mxGraphView.prototype.snapToAnchorPoint=function(a,b,c,d,e){if(null!=b&&null!=a){a=this.graph.getAllConnectionConstraints(b);d=c=null;if(null!=a)for(var f=0;f<a.length;f++){var g=this.graph.getConnectionPoint(b,a[f]);if(null!=g){var h=(g.x-e.x)*(g.x-e.x)+(g.y-e.y)*(g.y-e.y);if(null==d||h<d)c=g,d=h}}null!=c&&(e=c)}return e}; -var g=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(a,b,c){var d=g.apply(this,arguments);"1"==a.getAttribute("placeholders")&&null!=c.state&&(d=c.state.view.graph.replacePlaceholders(c.state.cell,d));return d};var h=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(a){if(null!=a.style&&"undefined"!==typeof pako){var b=mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null);if(null!=b&&"stencil("==b.substring(0,8))try{var c= -b.substring(8,b.length-1),d=mxUtils.parseXml(a.view.graph.decompress(c));return new mxShape(new mxStencil(d.documentElement))}catch(p){null!=window.console&&console.log("Error in shape: "+p)}}return h.apply(this,arguments)}})();mxStencilRegistry.libraries={};mxStencilRegistry.dynamicLoading=!0;mxStencilRegistry.allowEval=!0;mxStencilRegistry.packages=[]; +d&&this.graph.model.isEdge(d.cell)&&null!=d.style&&1!=d.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(d);return d};var c=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(a,b){return c.apply(this,arguments)||null!=a.routedPoints&&null!=b.routedPoints&&!mxUtils.equalPoints(b.routedPoints,a.routedPoints)};var d=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=function(a){d.apply(this,arguments);this.graph.model.isEdge(a.cell)&& +1!=a.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(a)};mxGraphView.prototype.updateLineJumps=function(a){var b=a.absolutePoints;if(Graph.lineJumpsEnabled){var c=null!=a.routedPoints,d=null;if(null!=b&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var e=function(b,c,e){var f=new mxPoint(c,e);f.type=b;d.push(f);f=null!=a.routedPoints?a.routedPoints[d.length-1]:null;return null==f||f.type!=b||f.x!=c||f.y!=e},f=.5*this.scale,c=!1,d=[],g=0;g<b.length-1;g++){for(var h= +b[g+1],k=b[g],x=[],w=b[g+2];g<b.length-2&&mxUtils.ptSegDistSq(k.x,k.y,w.x,w.y,h.x,h.y)<1*this.scale*this.scale;)h=w,g++,w=b[g+2];for(var c=e(0,k.x,k.y)||c,y=0;y<this.validEdges.length;y++){var u=this.validEdges[y],D=u.absolutePoints;if(null!=D&&mxUtils.intersects(a,u)&&"1"!=u.style.noJump)for(u=0;u<D.length-1;u++){for(var F=D[u+1],E=D[u],w=D[u+2];u<D.length-2&&mxUtils.ptSegDistSq(E.x,E.y,w.x,w.y,F.x,F.y)<1*this.scale*this.scale;)F=w,u++,w=D[u+2];w=mxUtils.intersection(k.x,k.y,h.x,h.y,E.x,E.y,F.x, +F.y);if(null!=w&&(Math.abs(w.x-E.x)>f||Math.abs(w.y-E.y)>f)&&(Math.abs(w.x-F.x)>f||Math.abs(w.y-F.y)>f)){F=w.x-k.x;E=w.y-k.y;w={distSq:F*F+E*E,x:w.x,y:w.y};for(F=0;F<x.length;F++)if(x[F].distSq>w.distSq){x.splice(F,0,w);w=null;break}null==w||0!=x.length&&x[x.length-1].x===w.x&&x[x.length-1].y===w.y||x.push(w)}}}for(u=0;u<x.length;u++)c=e(1,x[u].x,x[u].y)||c}w=b[b.length-1];c=e(0,w.x,w.y)||c}a.routedPoints=d;return c}return!1};var e=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(a, +b,c){this.routedPoints=null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)e.apply(this,arguments);else{var d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,f=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,g=mxUtils.getValue(this.style,"jumpStyle","none"),h,k=!0,l=null,m=null;h=[];var w=null;a.begin();for(var y= +0;y<this.state.routedPoints.length;y++){var u=this.state.routedPoints[y],D=new mxPoint(u.x/this.scale,u.y/this.scale);0==y?D=b[0]:y==this.state.routedPoints.length-1&&(D=b[b.length-1]);var F=!1;if(null!=l&&1==u.type){var E=this.state.routedPoints[y+1],u=E.x/this.scale-D.x,E=E.y/this.scale-D.y,u=u*u+E*E;null==w&&(w=new mxPoint(D.x-l.x,D.y-l.y),m=Math.sqrt(w.x*w.x+w.y*w.y),w.x=w.x*f/m,w.y=w.y*f/m);u>f*f&&0<m&&(u=l.x-D.x,E=l.y-D.y,u=u*u+E*E,u>f*f&&(F=new mxPoint(D.x-w.x,D.y-w.y),u=new mxPoint(D.x+w.x, +D.y+w.y),h.push(F),this.addPoints(a,h,c,d,!1,null,k),h=0>Math.round(w.x)||0==Math.round(w.x)&&0>=Math.round(w.y)?1:-1,k=!1,"sharp"==g?(a.lineTo(F.x-w.y*h,F.y+w.x*h),a.lineTo(u.x-w.y*h,u.y+w.x*h),a.lineTo(u.x,u.y)):"arc"==g?(h*=1.3,a.curveTo(F.x-w.y*h,F.y+w.x*h,u.x-w.y*h,u.y+w.x*h,u.x,u.y)):(a.moveTo(u.x,u.y),k=!0),h=[u],F=!0))}else w=null;F||(h.push(D),l=D)}this.addPoints(a,h,c,d,!1,null,k);a.stroke()}};var f=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint= +function(a,b,c,d){if(null==b||null==a||"1"!=b.style.snapToPoint&&"1"!=a.style.snapToPoint)f.apply(this,arguments);else{b=this.getTerminalPort(a,b,d);var e=this.getNextPoint(a,c,d),g=this.graph.isOrthogonal(a),h=mxUtils.toRadians(Number(b.style[mxConstants.STYLE_ROTATION]||"0")),k=new mxPoint(b.getCenterX(),b.getCenterY());if(0!=h)var l=Math.cos(-h),m=Math.sin(-h),e=mxUtils.getRotatedPoint(e,l,m,k);l=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||0);l+=parseFloat(a.style[d?mxConstants.STYLE_SOURCE_PERIMETER_SPACING: +mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);e=this.getPerimeterPoint(b,e,0==h&&g,l);0!=h&&(l=Math.cos(h),m=Math.sin(h),e=mxUtils.getRotatedPoint(e,l,m,k));a.setAbsoluteTerminalPoint(this.snapToAnchorPoint(a,b,c,d,e),d)}};mxGraphView.prototype.snapToAnchorPoint=function(a,b,c,d,e){if(null!=b&&null!=a){a=this.graph.getAllConnectionConstraints(b);d=c=null;if(null!=a)for(var f=0;f<a.length;f++){var g=this.graph.getConnectionPoint(b,a[f]);if(null!=g){var h=(g.x-e.x)*(g.x-e.x)+(g.y-e.y)*(g.y-e.y);if(null== +d||h<d)c=g,d=h}}null!=c&&(e=c)}return e};var g=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(a,b,c){var d=g.apply(this,arguments);"1"==a.getAttribute("placeholders")&&null!=c.state&&(d=c.state.view.graph.replacePlaceholders(c.state.cell,d));return d};var h=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(a){if(null!=a.style&&"undefined"!==typeof pako){var b=mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null);if(null!= +b&&"stencil("==b.substring(0,8))try{var c=b.substring(8,b.length-1),d=mxUtils.parseXml(a.view.graph.decompress(c));return new mxShape(new mxStencil(d.documentElement))}catch(p){null!=window.console&&console.log("Error in shape: "+p)}}return h.apply(this,arguments)}})();mxStencilRegistry.libraries={};mxStencilRegistry.dynamicLoading=!0;mxStencilRegistry.allowEval=!0;mxStencilRegistry.packages=[]; mxStencilRegistry.getStencil=function(a){var b=mxStencilRegistry.stencils[a];if(null==b&&null==mxCellRenderer.defaultShapes[a]&&mxStencilRegistry.dynamicLoading){var c=mxStencilRegistry.getBasenameForStencil(a);if(null!=c){b=mxStencilRegistry.libraries[c];if(null!=b){if(null==mxStencilRegistry.packages[c]){for(var d=0;d<b.length;d++){var e=b[d];if(".xml"==e.toLowerCase().substring(e.length-4,e.length))mxStencilRegistry.loadStencilSet(e,null);else if(".js"==e.toLowerCase().substring(e.length-3,e.length))try{if(mxStencilRegistry.allowEval){var f= mxUtils.load(e);null!=f&&200<=f.getStatus()&&299>=f.getStatus()&&eval.call(window,f.getText())}}catch(g){null!=window.console&&console.log("error in getStencil:",e,g)}}mxStencilRegistry.packages[c]=1}}else c=c.replace("_-_","_"),mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+c+".xml",null);b=mxStencilRegistry.stencils[a]}}return b}; mxStencilRegistry.getBasenameForStencil=function(a){var b=null;if(null!=a&&(a=a.split("."),0<a.length&&"mxgraph"==a[0]))for(var b=a[1],c=2;c<a.length-1;c++)b+="/"+a[c];return b}; @@ -1674,13 +1676,13 @@ a.getCell=mxUtils.bind(this,function(a){var c=b.apply(this,arguments);this.error (a+="shape="+this.currentEdgeStyle.shape+";");null!=this.currentEdgeStyle.curved&&(a+="curved="+this.currentEdgeStyle.curved+";");null!=this.currentEdgeStyle.rounded&&(a+="rounded="+this.currentEdgeStyle.rounded+";");null!=this.currentEdgeStyle.comic&&(a+="comic="+this.currentEdgeStyle.comic+";");null!=this.currentEdgeStyle.jumpStyle&&(a+="jumpStyle="+this.currentEdgeStyle.jumpStyle+";");null!=this.currentEdgeStyle.jumpSize&&(a+="jumpSize="+this.currentEdgeStyle.jumpSize+";");"elbowEdgeStyle"==this.currentEdgeStyle.edgeStyle&& null!=this.currentEdgeStyle.elbow&&(a+="elbow="+this.currentEdgeStyle.elbow+";");return a=null!=this.currentEdgeStyle.html?a+("html="+this.currentEdgeStyle.html+";"):a+"html=1;"};Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var a=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement():null;null!=a&&(new mxCodec(a.ownerDocument)).decode(a,this.getStylesheet())}; Graph.prototype.importGraphModel=function(a,b,c,d){b=null!=b?b:0;c=null!=c?c:0;var e=new mxCodec(a.ownerDocument),f=new mxGraphModel;e.decode(a,f);a=[];e=f.getChildren(this.cloneCell(f.root,this.isCloneInvalidEdges()));if(null!=e){e=e.slice();this.model.beginUpdate();try{if(1!=e.length||this.isCellLocked(this.getDefaultParent()))for(f=0;f<e.length;f++)a=a.concat(this.model.getChildren(this.moveCells([e[f]],b,c,!1,this.model.getRoot())[0]));else a=this.moveCells(f.getChildren(e[0]),b,c,!1,this.getDefaultParent()); -if(d){this.isGridEnabled()&&(b=this.snap(b),c=this.snap(c));var g=this.getBoundingBoxFromGeometry(a,!0);null!=g&&this.moveCells(a,b-g.x,c-g.y)}}finally{this.model.endUpdate()}}return a};Graph.prototype.getAllConnectionConstraints=function(a,b){if(null!=a){var c=null;if(null!=a.shape){var d=a.shape.direction,e=a.shape.bounds,f=a.shape.scale,c=e.width/f,e=e.height/f;if(d==mxConstants.DIRECTION_NORTH||d==mxConstants.DIRECTION_SOUTH)var g=c,c=e,e=g;c=a.shape.getConstraints(a.style,c,e)}if(null!=c)return c; -c=mxUtils.getValue(a.style,"points",null);if(null!=c){d=[];try{for(var h=JSON.parse(c),c=0;c<h.length;c++)g=h[c],d.push(new mxConnectionConstraint(new mxPoint(g[0],g[1]),2<g.length?"0"!=g[2]:!0,null,3<g.length?g[3]:0,4<g.length?g[4]:0))}catch(aa){}return d}if(null!=a.shape)if(null!=a.shape.stencil){if(null!=a.shape.stencil)return a.shape.stencil.constraints}else if(null!=a.shape.constraints)return a.shape.constraints}return null};Graph.prototype.flipEdge=function(a){if(null!=a){var b=this.view.getState(a), -b=null!=b?b.style:this.getCellStyle(a);null!=b&&(b=mxUtils.getValue(b,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL,this.setCellStyles(mxConstants.STYLE_ELBOW,b,[a]))}};Graph.prototype.isValidRoot=function(a){for(var b=this.model.getChildCount(a),c=0,d=0;d<b;d++){var e=this.model.getChildAt(a,d);this.model.isVertex(e)&&(e=this.getCellGeometry(e),null==e||e.relative||c++)}return 0<c||this.isContainer(a)}; -Graph.prototype.isValidDropTarget=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return"1"!=mxUtils.getValue(b,"part","0")&&(this.isContainer(a)||mxGraph.prototype.isValidDropTarget.apply(this,arguments)&&"0"!=mxUtils.getValue(b,"dropTarget","1"))};Graph.prototype.createGroupCell=function(){var a=mxGraph.prototype.createGroupCell.apply(this,arguments);a.setStyle("group");return a};Graph.prototype.isExtendParentsOnAdd=function(a){var b=mxGraph.prototype.isExtendParentsOnAdd.apply(this, -arguments);if(b&&null!=a&&null!=this.layoutManager){var c=this.model.getParent(a);null!=c&&(c=this.layoutManager.getLayout(c),null!=c&&c.constructor==mxStackLayout&&(b=!1))}return b};Graph.prototype.getPreferredSizeForCell=function(a){var b=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=b&&(b.width+=10,b.height+=4,this.gridEnabled&&(b.width=this.snap(b.width),b.height=this.snap(b.height)));return b};Graph.prototype.turnShapes=function(a){var b=this.getModel(),c=[];b.beginUpdate(); -try{for(var d=0;d<a.length;d++){var e=a[d];if(b.isEdge(e)){var f=b.getTerminal(e,!0),g=b.getTerminal(e,!1);b.setTerminal(e,g,!0);b.setTerminal(e,f,!1);var h=b.getGeometry(e);if(null!=h){h=h.clone();null!=h.points&&h.points.reverse();var k=h.getTerminalPoint(!0),l=h.getTerminalPoint(!1);h.setTerminalPoint(k,!1);h.setTerminalPoint(l,!0);b.setGeometry(e,h);var m=this.view.getState(e),v=this.view.getState(f),n=this.view.getState(g);if(null!=m){var p=null!=v?this.getConnectionConstraint(m,v,!0):null,q= -null!=n?this.getConnectionConstraint(m,n,!1):null;this.setConnectionConstraint(e,f,!0,q);this.setConnectionConstraint(e,g,!1,p)}c.push(e)}}else if(b.isVertex(e)&&(h=this.getCellGeometry(e),null!=h)){h=h.clone();h.x+=h.width/2-h.height/2;h.y+=h.height/2-h.width/2;var r=h.width;h.width=h.height;h.height=r;b.setGeometry(e,h);var t=this.view.getState(e);if(null!=t){var u=t.style[mxConstants.STYLE_DIRECTION]||"east";"east"==u?u="south":"south"==u?u="west":"west"==u?u="north":"north"==u&&(u="east");this.setCellStyles(mxConstants.STYLE_DIRECTION, +if(d){this.isGridEnabled()&&(b=this.snap(b),c=this.snap(c));var g=this.getBoundingBoxFromGeometry(a,!0);null!=g&&this.moveCells(a,b-g.x,c-g.y)}}finally{this.model.endUpdate()}}return a};Graph.prototype.getAllConnectionConstraints=function(a,b){if(null!=a){var c=mxUtils.getValue(a.style,"points",null);if(null!=c){var d=[];try{for(var e=JSON.parse(c),c=0;c<e.length;c++){var f=e[c];d.push(new mxConnectionConstraint(new mxPoint(f[0],f[1]),2<f.length?"0"!=f[2]:!0,null,3<f.length?f[3]:0,4<f.length?f[4]: +0))}}catch(J){}return d}if(null!=a.shape){f=a.shape.direction;e=a.shape.bounds;c=a.shape.scale;d=e.width/c;e=e.height/c;if(f==mxConstants.DIRECTION_NORTH||f==mxConstants.DIRECTION_SOUTH)f=d,d=e,e=f;c=a.shape.getConstraints(a.style,d,e);if(null!=c)return c;if(null!=a.shape.stencil&&null!=a.shape.stencil.constraints)return a.shape.stencil.constraints;if(null!=a.shape.constraints)return a.shape.constraints}}return null};Graph.prototype.flipEdge=function(a){if(null!=a){var b=this.view.getState(a),b=null!= +b?b.style:this.getCellStyle(a);null!=b&&(b=mxUtils.getValue(b,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL,this.setCellStyles(mxConstants.STYLE_ELBOW,b,[a]))}};Graph.prototype.isValidRoot=function(a){for(var b=this.model.getChildCount(a),c=0,d=0;d<b;d++){var e=this.model.getChildAt(a,d);this.model.isVertex(e)&&(e=this.getCellGeometry(e),null==e||e.relative||c++)}return 0<c||this.isContainer(a)};Graph.prototype.isValidDropTarget= +function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return"1"!=mxUtils.getValue(b,"part","0")&&(this.isContainer(a)||mxGraph.prototype.isValidDropTarget.apply(this,arguments)&&"0"!=mxUtils.getValue(b,"dropTarget","1"))};Graph.prototype.createGroupCell=function(){var a=mxGraph.prototype.createGroupCell.apply(this,arguments);a.setStyle("group");return a};Graph.prototype.isExtendParentsOnAdd=function(a){var b=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(b&& +null!=a&&null!=this.layoutManager){var c=this.model.getParent(a);null!=c&&(c=this.layoutManager.getLayout(c),null!=c&&c.constructor==mxStackLayout&&(b=!1))}return b};Graph.prototype.getPreferredSizeForCell=function(a){var b=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=b&&(b.width+=10,b.height+=4,this.gridEnabled&&(b.width=this.snap(b.width),b.height=this.snap(b.height)));return b};Graph.prototype.turnShapes=function(a){var b=this.getModel(),c=[];b.beginUpdate();try{for(var d= +0;d<a.length;d++){var e=a[d];if(b.isEdge(e)){var f=b.getTerminal(e,!0),g=b.getTerminal(e,!1);b.setTerminal(e,g,!0);b.setTerminal(e,f,!1);var h=b.getGeometry(e);if(null!=h){h=h.clone();null!=h.points&&h.points.reverse();var k=h.getTerminalPoint(!0),l=h.getTerminalPoint(!1);h.setTerminalPoint(k,!1);h.setTerminalPoint(l,!0);b.setGeometry(e,h);var m=this.view.getState(e),v=this.view.getState(f),n=this.view.getState(g);if(null!=m){var p=null!=v?this.getConnectionConstraint(m,v,!0):null,q=null!=n?this.getConnectionConstraint(m, +n,!1):null;this.setConnectionConstraint(e,f,!0,q);this.setConnectionConstraint(e,g,!1,p)}c.push(e)}}else if(b.isVertex(e)&&(h=this.getCellGeometry(e),null!=h)){h=h.clone();h.x+=h.width/2-h.height/2;h.y+=h.height/2-h.width/2;var r=h.width;h.width=h.height;h.height=r;b.setGeometry(e,h);var t=this.view.getState(e);if(null!=t){var u=t.style[mxConstants.STYLE_DIRECTION]||"east";"east"==u?u="south":"south"==u?u="west":"west"==u?u="north":"north"==u&&(u="east");this.setCellStyles(mxConstants.STYLE_DIRECTION, u,[e])}c.push(e)}}}finally{b.endUpdate()}return c};Graph.prototype.stencilHasPlaceholders=function(a){if(null!=a&&null!=a.fgNode)for(a=a.fgNode.firstChild;null!=a;){if("text"==a.nodeName&&"1"==a.getAttribute("placeholders"))return!0;a=a.nextSibling}return!1};Graph.prototype.processChange=function(a){mxGraph.prototype.processChange.apply(this,arguments);if(a instanceof mxValueChange&&null!=a.cell&&null!=a.cell.value&&"object"==typeof a.cell.value){var b=this.model.getDescendants(a.cell);if(0<b.length)for(var c= 0;c<b.length;c++){var d=this.view.getState(b[c]);null!=d&&null!=d.shape&&null!=d.shape.stencil&&this.stencilHasPlaceholders(d.shape.stencil)?this.removeStateForCell(b[c]):this.isReplacePlaceholders(b[c])&&this.view.invalidate(b[c],!1,!1)}}};Graph.prototype.replaceElement=function(a,b){for(var c=a.ownerDocument.createElement(null!=b?b:"span"),d=Array.prototype.slice.call(a.attributes);attr=d.pop();)c.setAttribute(attr.nodeName,attr.nodeValue);c.innerHTML=a.innerHTML;a.parentNode.replaceChild(c,a)}; Graph.prototype.updateLabelElements=function(a,b,c){a=null!=a?a:this.getSelectionCells();for(var d=document.createElement("div"),e=0;e<a.length;e++)if(this.isHtmlLabel(a[e])){var f=this.convertValueToString(a[e]);if(null!=f&&0<f.length){d.innerHTML=f;for(var g=d.getElementsByTagName(null!=c?c:"*"),h=0;h<g.length;h++)b(g[h]);d.innerHTML!=f&&this.cellLabelChanged(a[e],d.innerHTML)}}};Graph.prototype.cellLabelChanged=function(a,b,c){b=this.zapGremlins(b);this.model.beginUpdate();try{if(null!=a.value&& @@ -1701,55 +1703,55 @@ b.getSource();null!=c&&"a"!=c.nodeName.toLowerCase();)c=c.parentNode;null!=c?thi e&&Math.abs(this.scrollLeft-g.container.scrollLeft)<f&&Math.abs(this.scrollTop-g.container.scrollTop)<f&&(null==d.sourceState||!d.isSource(d.sourceState.control))&&((mxEvent.isLeftMouseButton(h)||mxEvent.isMiddleMouseButton(h))&&!mxEvent.isPopupTrigger(h)||mxEvent.isTouchEvent(h))&&(null!=this.currentLink?(e=g.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&e||null==b||b(h,this.currentLink),mxEvent.isConsumed(h)||(h=mxEvent.isMiddleMouseButton(h)?"_blank":e?g.linkTarget:"_top", g.openLink(this.currentLink,h),d.consume())):null!=c&&!d.isConsumed()&&Math.abs(this.scrollLeft-g.container.scrollLeft)<f&&Math.abs(this.scrollTop-g.container.scrollTop)<f&&Math.abs(this.startX-d.getGraphX())<f&&Math.abs(this.startY-d.getGraphY())<f&&c(d.getEvent()));this.clear()},activate:function(a){this.currentLink=g.getAbsoluteUrl(g.getLinkForCell(a.cell));null!=this.currentLink&&(g.container.style.cursor="pointer",null!=this.highlight&&this.highlight.highlight(a))},clear:function(){null!=g.container&& (g.container.style.cursor=e);this.currentLink=this.currentState=null;null!=this.highlight&&this.highlight.hide();null!=g.tooltipHandler&&g.tooltipHandler.hide()}};g.click=function(a){};g.addMouseListener(h);mxEvent.addListener(document,"mouseleave",function(a){h.clear()})};Graph.prototype.duplicateCells=function(a,b){a=null!=a?a:this.getSelectionCells();b=null!=b?b:!0;a=this.model.getTopmostCells(a);var c=this.getModel(),d=this.gridSize,e=[];c.beginUpdate();try{for(var f=this.cloneCells(a,!1,null, -!0),g=0;g<a.length;g++){var h=c.getParent(a[g]),k=this.moveCells([f[g]],d,d,!1)[0];e.push(k);if(b)c.add(h,f[g]);else{var l=h.getIndex(a[g]);c.add(h,f[g],l+1)}}}finally{c.endUpdate()}return e};Graph.prototype.insertImage=function(a,b,c){if(null!=a){for(var d=this.cellEditor.textarea.getElementsByTagName("img"),e=[],f=0;f<d.length;f++)e.push(d[f]);document.execCommand("insertimage",!1,a);a=this.cellEditor.textarea.getElementsByTagName("img");if(a.length==e.length+1)for(f=a.length-1;0<=f;f--)if(0==f|| -a[f]!=e[f-1]){a[f].setAttribute("width",b);a[f].setAttribute("height",c);break}}};Graph.prototype.insertLink=function(a){if(0==a.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var b=this.cellEditor.textarea.getElementsByTagName("a"),c=[],d=0;d<b.length;d++)c.push(b[d]);document.execCommand("createlink",!1,mxUtils.trim(a));b=this.cellEditor.textarea.getElementsByTagName("a");if(b.length==c.length+1)for(d=b.length-1;0<=d;d--)if(b[d]!=c[d-1]){for(b=b[d].getElementsByTagName("a");0< -b.length;){for(c=b[0].parentNode;null!=b[0].firstChild;)c.insertBefore(b[0].firstChild,b[0]);c.removeChild(b[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(a))};Graph.prototype.isCellResizable=function(a){var b=mxGraph.prototype.isCellResizable.apply(this,arguments),c=this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);return b||"0"!=mxUtils.getValue(c,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==c[mxConstants.STYLE_WHITE_SPACE]};Graph.prototype.distributeCells=function(a, -b){null==b&&(b=this.getSelectionCells());if(null!=b&&1<b.length){for(var c=[],d=null,e=null,f=0;f<b.length;f++)if(this.getModel().isVertex(b[f])){var g=this.view.getState(b[f]);if(null!=g){var h=a?g.getCenterX():g.getCenterY(),d=null!=d?Math.max(d,h):h,e=null!=e?Math.min(e,h):h;c.push(g)}}if(2<c.length){c.sort(function(b,c){return a?b.x-c.x:b.y-c.y});g=this.view.translate;h=this.view.scale;e=e/h-(a?g.x:g.y);d=d/h-(a?g.x:g.y);this.getModel().beginUpdate();try{for(var k=(d-e)/(c.length-1),d=e,f=1;f< -c.length-1;f++){var l=this.view.getState(this.model.getParent(c[f].cell)),m=this.getCellGeometry(c[f].cell),d=d+k;null!=m&&null!=l&&(m=m.clone(),a?m.x=Math.round(d-m.width/2)-l.origin.x:m.y=Math.round(d-m.height/2)-l.origin.y,this.getModel().setGeometry(c[f].cell,m))}}finally{this.getModel().endUpdate()}}}return b};Graph.prototype.isCloneEvent=function(a){return mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxEvent.isControlDown(a)};Graph.prototype.encodeCells=function(a){for(var b=this.cloneCells(a),c= -new mxDictionary,d=0;d<a.length;d++)c.put(a[d],!0);for(d=0;d<b.length;d++){var e=this.view.getState(a[d]);if(null!=e){var f=this.getCellGeometry(b[d]);null==f||!f.relative||this.model.isEdge(a[d])||c.get(this.model.getParent(a[d]))||(f.relative=!1,f.x=e.x/e.view.scale-e.view.translate.x,f.y=e.y/e.view.scale-e.view.translate.y)}}c=new mxCodec;e=new mxGraphModel;f=e.getChildAt(e.getRoot(),0);for(d=0;d<a.length;d++)e.add(f,b[d]);return c.encode(e)};Graph.prototype.createSvgImageExport=function(){var a= -new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,b){return this.getLinkForCell(a.cell)});return a};Graph.prototype.getSvg=function(a,b,c,d,e,f,g,h,k,l){var m=this.useCssTransforms;m&&(this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange());try{b=null!=b?b:1;c=null!=c?c:0;e=null!=e?e:!0;f=null!=f?f:!0;g=null!=g?g:!0;var n=f||d?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells());if(null==n)throw Error(mxResources.get("drawingEmpty"));var p=this.view.scale, -v=mxUtils.createXmlDocument(),q=null!=v.createElementNS?v.createElementNS(mxConstants.NS_SVG,"svg"):v.createElement("svg");null!=a&&(null!=q.style?q.style.backgroundColor=a:q.setAttribute("style","background-color:"+a));null==v.createElementNS?(q.setAttribute("xmlns",mxConstants.NS_SVG),q.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):q.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=b/p;var r=Math.max(1,Math.ceil(n.width*a)+2*c)+(l?5:0),t=Math.max(1,Math.ceil(n.height* -a)+2*c)+(l?5:0);q.setAttribute("version","1.1");q.setAttribute("width",r+"px");q.setAttribute("height",t+"px");q.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+r+" "+t);v.appendChild(q);var u=this.createSvgCanvas(q);u.foOffset=e?-.5:0;u.textOffset=e?-.5:0;u.imageOffset=e?-.5:0;u.translate(Math.floor((c/b-n.x)/p),Math.floor((c/b-n.y)/p));var J=document.createElement("textarea"),P=u.createAlternateContent;u.createAlternateContent=function(a,b,c,d,e,f,g,h,k,l,m,n,p){var v=this.state;if(null!=this.foAltText&& -(0==d||0!=v.fontSize&&f.length<5*d/v.fontSize)){var q=this.createElement("text");q.setAttribute("x",Math.round(d/2));q.setAttribute("y",Math.round((e+v.fontSize)/2));q.setAttribute("fill",v.fontColor||"black");q.setAttribute("text-anchor","middle");q.setAttribute("font-size",Math.round(v.fontSize)+"px");q.setAttribute("font-family",v.fontFamily);(v.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&q.setAttribute("font-weight","bold");(v.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&& -q.setAttribute("font-style","italic");(v.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&q.setAttribute("text-decoration","underline");try{return J.innerHTML=f,q.textContent=J.value,q}catch(ha){return P.apply(this,arguments)}}else return P.apply(this,arguments)};var w=this.backgroundImage;if(null!=w){b=p/b;var x=this.view.translate,y=new mxRectangle(x.x*b,x.y*b,w.width*b,w.height*b);mxUtils.intersects(n,y)&&u.image(x.x,x.y,w.width,w.height,w.src,!0)}u.scale(a);u.textEnabled=g;h= -null!=h?h:this.createSvgImageExport();var G=h.drawCellState;h.drawCellState=function(a,b){for(var c=a.view.graph,d=c.isCellSelected(a.cell),e=c.model.getParent(a.cell);!f&&!d&&null!=e;)d=c.isCellSelected(e),e=c.model.getParent(e);(f||d)&&G.apply(this,arguments)};h.drawState(this.getView().getState(this.model.root),u);this.updateSvgLinks(q,k,!0);return q}finally{m&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.updateSvgLinks=function(a,b,c){a=a.getElementsByTagName("a"); -for(var d=0;d<a.length;d++){var e=a[d].getAttribute("href");null==e&&(e=a[d].getAttribute("xlink:href"));null!=e&&(null!=b&&/^https?:\/\//.test(e)?a[d].setAttribute("target",b):c&&this.isCustomLink(e)&&a[d].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(a){return new mxSvgCanvas2D(a)};Graph.prototype.getSelectedElement=function(){var a=null;if(window.getSelection){var b=window.getSelection();b.getRangeAt&&b.rangeCount&&(a=b.getRangeAt(0).commonAncestorContainer)}else document.selection&& -(a=document.selection.createRange().parentElement());return a};Graph.prototype.getParentByName=function(a,b,c){for(;null!=a&&a.nodeName!=b;){if(a==c)return null;a=a.parentNode}return a};Graph.prototype.selectNode=function(a){var b=null;if(window.getSelection){if(b=window.getSelection(),b.getRangeAt&&b.rangeCount){var c=document.createRange();c.selectNode(a);b.removeAllRanges();b.addRange(c)}}else(b=document.selection)&&"Control"!=b.type&&(a=b.createRange(),a.collapse(!0),c=b.createRange(),c.setEndPoint("StartToStart", -a),c.select())};Graph.prototype.insertRow=function(a,b){for(var c=a.tBodies[0],d=c.rows[0].cells,e=0,f=0;f<d.length;f++)var g=d[f].getAttribute("colspan"),e=e+(null!=g?parseInt(g):1);c=c.insertRow(b);for(f=0;f<e;f++)mxUtils.br(c.insertCell(-1));return c.cells[0]};Graph.prototype.deleteRow=function(a,b){a.tBodies[0].deleteRow(b)};Graph.prototype.insertColumn=function(a,b){var c=a.tHead;if(null!=c)for(var d=0;d<c.rows.length;d++){var e=document.createElement("th");c.rows[d].appendChild(e);mxUtils.br(e)}c= -a.tBodies[0];for(d=0;d<c.rows.length;d++)e=c.rows[d].insertCell(b),mxUtils.br(e);return c.rows[0].cells[0<=b?b:c.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(a,b){if(0<=b)for(var c=a.tBodies[0].rows,d=0;d<c.length;d++)c[d].cells.length>b&&c[d].deleteCell(b)};Graph.prototype.pasteHtmlAtCaret=function(a){var b;if(window.getSelection){if(b=window.getSelection(),b.getRangeAt&&b.rangeCount){b=b.getRangeAt(0);b.deleteContents();var c=document.createElement("div");c.innerHTML=a;a=document.createDocumentFragment(); -for(var d;d=c.firstChild;)lastNode=a.appendChild(d);b.insertNode(a)}}else(b=document.selection)&&"Control"!=b.type&&b.createRange().pasteHTML(a)};Graph.prototype.createLinkForHint=function(a,b){function c(a,b){a.length>b&&(a=a.substring(0,Math.round(b/2))+"..."+a.substring(a.length-Math.round(b/4)));return a}a=null!=a?a:"javascript:void(0);";if(null==b||0==b.length)b=this.isCustomLink(a)?this.getLinkTitle(a):a;var d=document.createElement("a");d.setAttribute("rel",this.linkRelation);d.setAttribute("href", -this.getAbsoluteUrl(a));d.setAttribute("title",c(this.isCustomLink(a)?this.getLinkTitle(a):a,80));null!=this.linkTarget&&d.setAttribute("target",this.linkTarget);mxUtils.write(d,c(b,40));this.isCustomLink(a)&&mxEvent.addListener(d,"click",mxUtils.bind(this,function(b){this.customLinkClicked(a);mxEvent.consume(b)}));return d};Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING, -function(a,b){this.popupMenuHandler.hideMenu()});var a=this.updateMouseEvent;this.updateMouseEvent=function(b){b=a.apply(this,arguments);if(mxEvent.isTouchEvent(b.getEvent())&&null==b.getState()){var c=this.getCellAt(b.graphX,b.graphY);null!=c&&this.isSwimlane(c)&&this.hitsSwimlaneContent(c,b.graphX,b.graphY)||(b.state=this.view.getState(c),null!=b.state&&null!=b.state.shape&&(this.container.style.cursor=b.state.shape.node.style.cursor))}null==b.getState()&&this.isEnabled()&&(this.container.style.cursor= -"default");return b};var b=!1,c=!1,d=!1,e=this.fireMouseEvent;this.fireMouseEvent=function(a,f,g){a==mxEvent.MOUSE_DOWN&&(f=this.updateMouseEvent(f),b=this.isCellSelected(f.getCell()),c=this.isSelectionEmpty(),d=this.popupMenuHandler.isMenuShowing());e.apply(this,arguments)};this.popupMenuHandler.mouseUp=mxUtils.bind(this,function(a,e){this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==e.getState()||!e.isSource(e.getState().control))&&(this.popupMenuHandler.popupTrigger|| -!d&&!mxEvent.isMouseEvent(e.getEvent())&&(c&&null==e.getCell()&&this.isSelectionEmpty()||b&&this.isCellSelected(e.getCell())));mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,arguments)})};mxCellEditor.prototype.isContentEditing=function(){var a=this.graph.view.getState(this.editingCell);return null!=a&&1==a.style.html};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var a=window.getSelection();if(a.getRangeAt&&a.rangeCount){for(var b=[],c=0,d=a.rangeCount;c< -d;++c)b.push(a.getRangeAt(c));return b}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(a){try{if(a)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var b=0,c=a.length;b<c;++b)sel.addRange(a[b])}else document.selection&&a.select&&a.select()}catch(G){}};var e=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=function(a){null!=a.text&& -(a.text.replaceLinefeeds="0"!=mxUtils.getValue(a.style,"nl2Br","1"));e.apply(this,arguments)};var f=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(a,b){this.isKeepFocusEvent(a)||!mxEvent.isAltDown(a.getEvent())?f.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(a){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=!1;var g=mxCellEditor.prototype.startEditing; -mxCellEditor.prototype.startEditing=function(a,b){g.apply(this,arguments);var c=this.graph.view.getState(a);this.textarea.className=null!=c&&1==c.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(a);var c=this.graph.getModel().getParent(a),d=this.graph.getCellGeometry(a);this.graph.getModel().isEdge(c)&&null!=d&&d.relative||this.graph.getModel().isEdge(a)?mxClient.IS_QUIRKS?this.textarea.style.border= -"gray dotted 1px":this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":"":mxClient.IS_QUIRKS&&(this.textarea.style.outline="none",this.textarea.style.border="")};var h=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(a){function b(a,c){c.originalNode=a;a=a.firstChild;for(var d=c.firstChild;null!=a&&null!=d;)b(a,d),a=a.nextSibling,d=d.nextSibling;return c}function c(a,b){if(null!=a)if(b.originalNode!= -a)d(a);else for(a=a.firstChild,b=b.firstChild;null!=a;){var e=a.nextSibling;null==b?d(a):(c(a,b),b=b.nextSibling);a=e}}function d(a){for(var b=a.firstChild;null!=b;){var c=b.nextSibling;d(b);b=c}1==a.nodeType&&("BR"===a.nodeName||null!=a.firstChild)||3==a.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(a)).length?(3==a.nodeType&&mxUtils.setTextContent(a,mxUtils.getTextContent(a).replace(/\n|\r/g,"")),1==a.nodeType&&(a.removeAttribute("style"),a.removeAttribute("class"),a.removeAttribute("width"), -a.removeAttribute("cellpadding"),a.removeAttribute("cellspacing"),a.removeAttribute("border"))):a.parentNode.removeChild(a)}h.apply(this,arguments);mxClient.IS_QUIRKS||7===document.documentMode||8===document.documentMode||mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(a){var d=b(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){c(this.textarea,d)}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var a=this.graph.view.getState(this.editingCell), -b=null!=a&&"0"!=mxUtils.getValue(a.style,"nl2Br","1"),c=this.saveSelection();if(this.codeViewMode){h=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<h.length&&"\n"==h.charAt(h.length-1)&&(h=h.substring(0,h.length-1));h=this.graph.sanitizeHtml(b?h.replace(/\n/g,"<br/>"):h,!0);this.textarea.className="mxCellEditor geContentEditable";var d=mxUtils.getValue(a.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),b=mxUtils.getValue(a.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY), -e=mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),f=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,g=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,a=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(d*mxConstants.LINE_HEIGHT)+ -"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(d)+"px";this.textarea.style.textDecoration=a?"underline":"";this.textarea.style.fontWeight=f?"bold":"normal";this.textarea.style.fontStyle=g?"italic":"";this.textarea.style.fontFamily=b;this.textarea.style.textAlign=e;this.textarea.style.padding="0px";this.textarea.innerHTML!=h&&(this.textarea.innerHTML=h,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length)); -this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerHTML="");var h=mxUtils.htmlEntities(this.textarea.innerHTML);mxClient.IS_QUIRKS||8==document.documentMode||(h=mxUtils.replaceTrailingNewlines(h,"<div><br></div>"));h=this.graph.sanitizeHtml(b?h.replace(/\n/g,"").replace(/<br\s*.?>/g,"<br>"):h,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var d=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight= -mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(d*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(d)+"px";this.textarea.style.textDecoration="";this.textarea.style.fontWeight="normal";this.textarea.style.fontStyle="";this.textarea.style.fontFamily=mxConstants.DEFAULT_FONTFAMILY;this.textarea.style.textAlign="left";this.textarea.style.padding="2px";this.textarea.innerHTML!=h&&(this.textarea.innerHTML=h);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&& -this.restoreSelection(this.switchSelectionState);this.switchSelectionState=c;this.resize()};var k=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(a,b){if(null!=this.textarea)if(a=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=a){var c=a.view.scale;this.bounds=mxRectangle.fromRectangle(a);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=160*c;this.bounds.height=60*c;var d=null!=a.text?a.text.margin:null;null==d&&(d=mxUtils.getAlignmentAsPoint(mxUtils.getValue(a.style, -mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(a.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=d.x*this.bounds.width;this.bounds.y+=d.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-4)/c)+"px";this.textarea.style.height=Math.round((this.bounds.height-4)/c)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/c)+(this.textarea.offsetHeight- -this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*c);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/c)+(this.textarea.offsetWidth-this.textarea.clientWidth)+"px",this.bounds.width=parseInt(this.textarea.style.width)*c);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxClient.IS_VML?this.textarea.style.zoom=c:mxUtils.setPrefixedStyle(this.textarea.style, -"transform","scale("+c+","+c+")")}else this.textarea.style.height="",this.textarea.style.overflow="",k.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(a,b){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetInitialValue.apply(this,arguments);var c=this.graph.getEditingValue(a.cell,b);"1"==mxUtils.getValue(a.style,"nl2Br","1")&&(c=c.replace(/\n/g,"<br/>"));return c=this.graph.sanitizeHtml(c,!0)}; -mxCellEditorGetCurrentValue=mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(a){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var b=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return b="1"==mxUtils.getValue(a.style,"nl2Br","1")?b.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):b.replace(/\r\n/g,"").replace(/\n/g,"")};var l=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(a){this.codeViewMode&& -this.toggleViewMode();l.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(v){}};var m=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(a,b){this.graph.getModel().beginUpdate();try{if(m.apply(this,arguments),this.graph.isCellDeletable(a.cell)&&0==this.graph.model.getChildCount(a.cell)){var c=mxUtils.getValue(a.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),d=mxUtils.getValue(a.style, -mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);""==b&&c==mxConstants.NONE&&d==mxConstants.NONE&&this.graph.removeCells([a.cell],!1)}}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=function(a){var b=null;if(this.graph.getModel().isEdge(a.cell)||this.graph.getModel().isEdge(this.graph.getModel().getParent(a.cell)))b=mxUtils.getValue(a.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null),b==mxConstants.NONE&&(b=null);return b};mxCellEditor.prototype.getMinimumSize= -function(a){var b=this.graph.getView().scale;return new mxRectangle(0,0,null==a.text?30:a.text.size*b+20,30)};var n=mxGraphHandler.prototype.moveCells;mxGraphHandler.prototype.moveCells=function(a,b,c,d,e,f){mxEvent.isAltDown(f)&&(e=null);n.apply(this,arguments)};mxGraphHandler.prototype.updateHint=function(b){if(null!=this.shape){null==this.hint&&(this.hint=a(),this.graph.container.appendChild(this.hint));var c=this.graph.view.translate,d=this.graph.view.scale;b=this.roundLength((this.bounds.x+this.currentDx)/ -d-c.x);c=this.roundLength((this.bounds.y+this.currentDy)/d-c.y);this.hint.innerHTML=b+", "+c;this.hint.style.left=this.shape.bounds.x+Math.round((this.shape.bounds.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=this.shape.bounds.y+this.shape.bounds.height+12+"px"}};mxGraphHandler.prototype.removeHint=function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint),this.hint=null)};mxVertexHandler.prototype.isRecursiveResize=function(a,b){return!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&& -!mxEvent.isControlDown(b.getEvent())&&!this.graph.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null)};mxVertexHandler.prototype.isCenteredEvent=function(a,b){return!(!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&&!this.graph.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null))&&mxEvent.isControlDown(b.getEvent())||mxEvent.isMetaDown(b.getEvent())}; -var p=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var a=new mxPoint(0,0),b=this.tolerance;this.graph.cellEditor.getEditingCell()==this.state.cell&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(b/=2,a.x=this.sizers[0].bounds.width+b,a.y=this.sizers[0].bounds.height+b):a=p.apply(this,arguments);return a};mxVertexHandler.prototype.updateHint=function(b){this.index!=mxEvent.LABEL_HANDLE&&(null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint)), -this.index==mxEvent.ROTATION_HANDLE?this.hint.innerHTML=this.currentAlpha+"°":(b=this.state.view.scale,this.hint.innerHTML=this.roundLength(this.bounds.width/b)+" x "+this.roundLength(this.bounds.height/b)),b=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||"0"),null==b&&(b=this.bounds),this.hint.style.left=b.x+Math.round((b.width-this.hint.clientWidth)/2)+"px",this.hint.style.top=b.y+b.height+12+"px",null!=this.linkHint&& -(this.linkHint.style.display="none"))};mxVertexHandler.prototype.removeHint=function(){mxGraphHandler.prototype.removeHint.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(b,c){null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));var d=this.graph.view.translate,e=this.graph.view.scale,f=this.roundLength(c.x/e-d.x),d=this.roundLength(c.y/e-d.y);this.hint.innerHTML=f+", "+d;this.hint.style.visibility= -"visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(f=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*f.x)+"%, "+Math.round(100*f.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility="hidden");this.hint.style.left=Math.round(b.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(b.getGraphY(),c.y)+this.state.view.graph.gridSize+"px";null!=this.linkHint&& -(this.linkHint.style.display="none")};mxEdgeHandler.prototype.removeHint=mxVertexHandler.prototype.removeHint;HoverIcons.prototype.mainHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/>'):new mxImage(IMAGE_PATH+"/handle-main.png",17,17);HoverIcons.prototype.secondaryHandle=mxClient.IS_SVG?Graph.createSvgImage(16,16,'<path d="m 8 3 L 13 8 L 8 13 L 3 8 z" stroke="#fff" fill="#fca000"/>'):new mxImage(IMAGE_PATH+ -"/handle-secondary.png",17,17);HoverIcons.prototype.fixedHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/><path d="m 7 7 L 11 11 M 7 11 L 11 7" stroke="#fff"/>'):new mxImage(IMAGE_PATH+"/handle-fixed.png",17,17);HoverIcons.prototype.terminalHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/><circle cx="9" cy="9" r="2" stroke="#fff" fill="transparent"/>'): -new mxImage(IMAGE_PATH+"/handle-terminal.png",17,17);HoverIcons.prototype.rotationHandle=new mxImage(mxClient.IS_SVG?"data:image/png;base64,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": +!0),g=0;g<a.length;g++){var h=c.getParent(a[g]),k=this.moveCells([f[g]],d,d,!1)[0];e.push(k);if(b)c.add(h,f[g]);else{var l=h.getIndex(a[g]);c.add(h,f[g],l+1)}}}finally{c.endUpdate()}return e};Graph.prototype.insertImage=function(a,b,c){if(null!=a&&null!=this.cellEditor.textarea){for(var d=this.cellEditor.textarea.getElementsByTagName("img"),e=[],f=0;f<d.length;f++)e.push(d[f]);document.execCommand("insertimage",!1,a);a=this.cellEditor.textarea.getElementsByTagName("img");if(a.length==e.length+1)for(f= +a.length-1;0<=f;f--)if(0==f||a[f]!=e[f-1]){a[f].setAttribute("width",b);a[f].setAttribute("height",c);break}}};Graph.prototype.insertLink=function(a){if(null!=this.cellEditor.textarea)if(0==a.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var b=this.cellEditor.textarea.getElementsByTagName("a"),c=[],d=0;d<b.length;d++)c.push(b[d]);document.execCommand("createlink",!1,mxUtils.trim(a));b=this.cellEditor.textarea.getElementsByTagName("a");if(b.length==c.length+1)for(d=b.length- +1;0<=d;d--)if(b[d]!=c[d-1]){for(b=b[d].getElementsByTagName("a");0<b.length;){for(c=b[0].parentNode;null!=b[0].firstChild;)c.insertBefore(b[0].firstChild,b[0]);c.removeChild(b[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(a))};Graph.prototype.isCellResizable=function(a){var b=mxGraph.prototype.isCellResizable.apply(this,arguments),c=this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);return b||"0"!=mxUtils.getValue(c,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==c[mxConstants.STYLE_WHITE_SPACE]}; +Graph.prototype.distributeCells=function(a,b){null==b&&(b=this.getSelectionCells());if(null!=b&&1<b.length){for(var c=[],d=null,e=null,f=0;f<b.length;f++)if(this.getModel().isVertex(b[f])){var g=this.view.getState(b[f]);if(null!=g){var h=a?g.getCenterX():g.getCenterY(),d=null!=d?Math.max(d,h):h,e=null!=e?Math.min(e,h):h;c.push(g)}}if(2<c.length){c.sort(function(b,c){return a?b.x-c.x:b.y-c.y});g=this.view.translate;h=this.view.scale;e=e/h-(a?g.x:g.y);d=d/h-(a?g.x:g.y);this.getModel().beginUpdate(); +try{for(var k=(d-e)/(c.length-1),d=e,f=1;f<c.length-1;f++){var l=this.view.getState(this.model.getParent(c[f].cell)),m=this.getCellGeometry(c[f].cell),d=d+k;null!=m&&null!=l&&(m=m.clone(),a?m.x=Math.round(d-m.width/2)-l.origin.x:m.y=Math.round(d-m.height/2)-l.origin.y,this.getModel().setGeometry(c[f].cell,m))}}finally{this.getModel().endUpdate()}}}return b};Graph.prototype.isCloneEvent=function(a){return mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxEvent.isControlDown(a)};Graph.prototype.encodeCells= +function(a){for(var b=this.cloneCells(a),c=new mxDictionary,d=0;d<a.length;d++)c.put(a[d],!0);for(d=0;d<b.length;d++){var e=this.view.getState(a[d]);if(null!=e){var f=this.getCellGeometry(b[d]);null==f||!f.relative||this.model.isEdge(a[d])||c.get(this.model.getParent(a[d]))||(f.relative=!1,f.x=e.x/e.view.scale-e.view.translate.x,f.y=e.y/e.view.scale-e.view.translate.y)}}c=new mxCodec;e=new mxGraphModel;f=e.getChildAt(e.getRoot(),0);for(d=0;d<a.length;d++)e.add(f,b[d]);return c.encode(e)};Graph.prototype.createSvgImageExport= +function(){var a=new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,b){return this.getLinkForCell(a.cell)});return a};Graph.prototype.getSvg=function(a,b,c,d,e,f,g,h,k,l){var m=this.useCssTransforms;m&&(this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange());try{b=null!=b?b:1;c=null!=c?c:0;e=null!=e?e:!0;f=null!=f?f:!0;g=null!=g?g:!0;var n=f||d?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells());if(null==n)throw Error(mxResources.get("drawingEmpty")); +var p=this.view.scale,v=mxUtils.createXmlDocument(),q=null!=v.createElementNS?v.createElementNS(mxConstants.NS_SVG,"svg"):v.createElement("svg");null!=a&&(null!=q.style?q.style.backgroundColor=a:q.setAttribute("style","background-color:"+a));null==v.createElementNS?(q.setAttribute("xmlns",mxConstants.NS_SVG),q.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):q.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=b/p;var r=Math.max(1,Math.ceil(n.width*a)+2*c)+(l?5: +0),t=Math.max(1,Math.ceil(n.height*a)+2*c)+(l?5:0);q.setAttribute("version","1.1");q.setAttribute("width",r+"px");q.setAttribute("height",t+"px");q.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+r+" "+t);v.appendChild(q);var u=null!=v.createElementNS?v.createElementNS(mxConstants.NS_SVG,"g"):v.createElement("g");q.appendChild(u);var G=this.createSvgCanvas(u);G.foOffset=e?-.5:0;G.textOffset=e?-.5:0;G.imageOffset=e?-.5:0;G.translate(Math.floor((c/b-n.x)/p),Math.floor((c/b-n.y)/p));var Q=document.createElement("textarea"), +x=G.createAlternateContent;G.createAlternateContent=function(a,b,c,d,e,f,g,h,k,l,m,n,v){var p=this.state;if(null!=this.foAltText&&(0==d||0!=p.fontSize&&f.length<5*d/p.fontSize)){var q=this.createElement("text");q.setAttribute("x",Math.round(d/2));q.setAttribute("y",Math.round((e+p.fontSize)/2));q.setAttribute("fill",p.fontColor||"black");q.setAttribute("text-anchor","middle");q.setAttribute("font-size",Math.round(p.fontSize)+"px");q.setAttribute("font-family",p.fontFamily);(p.fontStyle&mxConstants.FONT_BOLD)== +mxConstants.FONT_BOLD&&q.setAttribute("font-weight","bold");(p.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&q.setAttribute("font-style","italic");(p.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&q.setAttribute("text-decoration","underline");try{return Q.innerHTML=f,q.textContent=Q.value,q}catch(ia){return x.apply(this,arguments)}}else return x.apply(this,arguments)};var w=this.backgroundImage;if(null!=w){b=p/b;var y=this.view.translate,H=new mxRectangle(y.x*b, +y.y*b,w.width*b,w.height*b);mxUtils.intersects(n,H)&&G.image(y.x,y.y,w.width,w.height,w.src,!0)}G.scale(a);G.textEnabled=g;h=null!=h?h:this.createSvgImageExport();var z=h.drawCellState;h.drawCellState=function(a,b){for(var c=a.view.graph,d=c.isCellSelected(a.cell),e=c.model.getParent(a.cell);!f&&!d&&null!=e;)d=c.isCellSelected(e),e=c.model.getParent(e);(f||d)&&z.apply(this,arguments)};h.drawState(this.getView().getState(this.model.root),G);this.updateSvgLinks(q,k,!0);return q}finally{m&&(this.useCssTransforms= +!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.updateSvgLinks=function(a,b,c){a=a.getElementsByTagName("a");for(var d=0;d<a.length;d++){var e=a[d].getAttribute("href");null==e&&(e=a[d].getAttribute("xlink:href"));null!=e&&(null!=b&&/^https?:\/\//.test(e)?a[d].setAttribute("target",b):c&&this.isCustomLink(e)&&a[d].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(a){return new mxSvgCanvas2D(a)};Graph.prototype.getSelectedElement=function(){var a= +null;if(window.getSelection){var b=window.getSelection();b.getRangeAt&&b.rangeCount&&(a=b.getRangeAt(0).commonAncestorContainer)}else document.selection&&(a=document.selection.createRange().parentElement());return a};Graph.prototype.getParentByName=function(a,b,c){for(;null!=a&&a.nodeName!=b;){if(a==c)return null;a=a.parentNode}return a};Graph.prototype.selectNode=function(a){var b=null;if(window.getSelection){if(b=window.getSelection(),b.getRangeAt&&b.rangeCount){var c=document.createRange();c.selectNode(a); +b.removeAllRanges();b.addRange(c)}}else(b=document.selection)&&"Control"!=b.type&&(a=b.createRange(),a.collapse(!0),c=b.createRange(),c.setEndPoint("StartToStart",a),c.select())};Graph.prototype.insertRow=function(a,b){for(var c=a.tBodies[0],d=c.rows[0].cells,e=0,f=0;f<d.length;f++)var g=d[f].getAttribute("colspan"),e=e+(null!=g?parseInt(g):1);c=c.insertRow(b);for(f=0;f<e;f++)mxUtils.br(c.insertCell(-1));return c.cells[0]};Graph.prototype.deleteRow=function(a,b){a.tBodies[0].deleteRow(b)};Graph.prototype.insertColumn= +function(a,b){var c=a.tHead;if(null!=c)for(var d=0;d<c.rows.length;d++){var e=document.createElement("th");c.rows[d].appendChild(e);mxUtils.br(e)}c=a.tBodies[0];for(d=0;d<c.rows.length;d++)e=c.rows[d].insertCell(b),mxUtils.br(e);return c.rows[0].cells[0<=b?b:c.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(a,b){if(0<=b)for(var c=a.tBodies[0].rows,d=0;d<c.length;d++)c[d].cells.length>b&&c[d].deleteCell(b)};Graph.prototype.pasteHtmlAtCaret=function(a){var b;if(window.getSelection){if(b= +window.getSelection(),b.getRangeAt&&b.rangeCount){b=b.getRangeAt(0);b.deleteContents();var c=document.createElement("div");c.innerHTML=a;a=document.createDocumentFragment();for(var d;d=c.firstChild;)lastNode=a.appendChild(d);b.insertNode(a)}}else(b=document.selection)&&"Control"!=b.type&&b.createRange().pasteHTML(a)};Graph.prototype.createLinkForHint=function(a,b){function c(a,b){a.length>b&&(a=a.substring(0,Math.round(b/2))+"..."+a.substring(a.length-Math.round(b/4)));return a}a=null!=a?a:"javascript:void(0);"; +if(null==b||0==b.length)b=this.isCustomLink(a)?this.getLinkTitle(a):a;var d=document.createElement("a");d.setAttribute("rel",this.linkRelation);d.setAttribute("href",this.getAbsoluteUrl(a));d.setAttribute("title",c(this.isCustomLink(a)?this.getLinkTitle(a):a,80));null!=this.linkTarget&&d.setAttribute("target",this.linkTarget);mxUtils.write(d,c(b,40));this.isCustomLink(a)&&mxEvent.addListener(d,"click",mxUtils.bind(this,function(b){this.customLinkClicked(a);mxEvent.consume(b)}));return d};Graph.prototype.initTouch= +function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(a,b){this.popupMenuHandler.hideMenu()});var a=this.updateMouseEvent;this.updateMouseEvent=function(b){b=a.apply(this,arguments);if(mxEvent.isTouchEvent(b.getEvent())&&null==b.getState()){var c=this.getCellAt(b.graphX,b.graphY);null!=c&&this.isSwimlane(c)&&this.hitsSwimlaneContent(c,b.graphX,b.graphY)||(b.state=this.view.getState(c),null!=b.state&& +null!=b.state.shape&&(this.container.style.cursor=b.state.shape.node.style.cursor))}null==b.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return b};var b=!1,c=!1,d=!1,e=this.fireMouseEvent;this.fireMouseEvent=function(a,f,g){a==mxEvent.MOUSE_DOWN&&(f=this.updateMouseEvent(f),b=this.isCellSelected(f.getCell()),c=this.isSelectionEmpty(),d=this.popupMenuHandler.isMenuShowing());e.apply(this,arguments)};this.popupMenuHandler.mouseUp=mxUtils.bind(this,function(a,e){this.popupMenuHandler.popupTrigger= +!this.isEditing()&&this.isEnabled()&&(null==e.getState()||!e.isSource(e.getState().control))&&(this.popupMenuHandler.popupTrigger||!d&&!mxEvent.isMouseEvent(e.getEvent())&&(c&&null==e.getCell()&&this.isSelectionEmpty()||b&&this.isCellSelected(e.getCell())));mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,arguments)})};mxCellEditor.prototype.isContentEditing=function(){var a=this.graph.view.getState(this.editingCell);return null!=a&&1==a.style.html};mxCellEditor.prototype.saveSelection= +function(){if(window.getSelection){var a=window.getSelection();if(a.getRangeAt&&a.rangeCount){for(var b=[],c=0,d=a.rangeCount;c<d;++c)b.push(a.getRangeAt(c));return b}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(a){try{if(a)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var b=0,c=a.length;b<c;++b)sel.addRange(a[b])}else document.selection&&a.select&&a.select()}catch(H){}}; +var e=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=function(a){null!=a.text&&(a.text.replaceLinefeeds="0"!=mxUtils.getValue(a.style,"nl2Br","1"));e.apply(this,arguments)};var f=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(a,b){this.isKeepFocusEvent(a)||!mxEvent.isAltDown(a.getEvent())?f.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(a){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)}; +mxCellEditor.prototype.escapeCancelsEditing=!1;var g=mxCellEditor.prototype.startEditing;mxCellEditor.prototype.startEditing=function(a,b){g.apply(this,arguments);var c=this.graph.view.getState(a);this.textarea.className=null!=c&&1==c.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(a);var c=this.graph.getModel().getParent(a),d=this.graph.getCellGeometry(a);this.graph.getModel().isEdge(c)&& +null!=d&&d.relative||this.graph.getModel().isEdge(a)?mxClient.IS_QUIRKS?this.textarea.style.border="gray dotted 1px":this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":"":mxClient.IS_QUIRKS&&(this.textarea.style.outline="none",this.textarea.style.border="")};var h=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(a){function b(a,c){c.originalNode=a;a=a.firstChild;for(var d=c.firstChild;null!=a&&null!= +d;)b(a,d),a=a.nextSibling,d=d.nextSibling;return c}function c(a,b){if(null!=a)if(b.originalNode!=a)d(a);else for(a=a.firstChild,b=b.firstChild;null!=a;){var e=a.nextSibling;null==b?d(a):(c(a,b),b=b.nextSibling);a=e}}function d(a){for(var b=a.firstChild;null!=b;){var c=b.nextSibling;d(b);b=c}1==a.nodeType&&("BR"===a.nodeName||null!=a.firstChild)||3==a.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(a)).length?(3==a.nodeType&&mxUtils.setTextContent(a,mxUtils.getTextContent(a).replace(/\n|\r/g,"")), +1==a.nodeType&&(a.removeAttribute("style"),a.removeAttribute("class"),a.removeAttribute("width"),a.removeAttribute("cellpadding"),a.removeAttribute("cellspacing"),a.removeAttribute("border"))):a.parentNode.removeChild(a)}h.apply(this,arguments);mxClient.IS_QUIRKS||7===document.documentMode||8===document.documentMode||mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(a){var d=b(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){c(this.textarea, +d)}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var a=this.graph.view.getState(this.editingCell);if(null!=a){var b=null!=a&&"0"!=mxUtils.getValue(a.style,"nl2Br","1"),c=this.saveSelection();if(this.codeViewMode){h=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<h.length&&"\n"==h.charAt(h.length-1)&&(h=h.substring(0,h.length-1));h=this.graph.sanitizeHtml(b?h.replace(/\n/g,"<br/>"):h,!0);this.textarea.className="mxCellEditor geContentEditable";var d=mxUtils.getValue(a.style, +mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),b=mxUtils.getValue(a.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY),e=mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),f=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,g=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,a=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)== +mxConstants.FONT_UNDERLINE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(d*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(d)+"px";this.textarea.style.textDecoration=a?"underline":"";this.textarea.style.fontWeight=f?"bold":"normal";this.textarea.style.fontStyle=g?"italic":"";this.textarea.style.fontFamily=b;this.textarea.style.textAlign=e;this.textarea.style.padding="0px";this.textarea.innerHTML!=h&&(this.textarea.innerHTML= +h,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length));this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerHTML="");var h=mxUtils.htmlEntities(this.textarea.innerHTML);mxClient.IS_QUIRKS||8==document.documentMode||(h=mxUtils.replaceTrailingNewlines(h,"<div><br></div>"));h=this.graph.sanitizeHtml(b?h.replace(/\n/g,"").replace(/<br\s*.?>/g, +"<br>"):h,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var d=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(d*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(d)+"px";this.textarea.style.textDecoration="";this.textarea.style.fontWeight="normal";this.textarea.style.fontStyle="";this.textarea.style.fontFamily=mxConstants.DEFAULT_FONTFAMILY;this.textarea.style.textAlign="left";this.textarea.style.padding= +"2px";this.textarea.innerHTML!=h&&(this.textarea.innerHTML=h);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);this.switchSelectionState=c;this.resize()}};var k=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(a,b){if(null!=this.textarea)if(a=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=a){var c=a.view.scale;this.bounds=mxRectangle.fromRectangle(a);if(0==this.bounds.width&&0== +this.bounds.height){this.bounds.width=160*c;this.bounds.height=60*c;var d=null!=a.text?a.text.margin:null;null==d&&(d=mxUtils.getAlignmentAsPoint(mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(a.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=d.x*this.bounds.width;this.bounds.y+=d.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-4)/c)+"px";this.textarea.style.height=Math.round((this.bounds.height- +4)/c)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/c)+(this.textarea.offsetHeight-this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*c);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/c)+(this.textarea.offsetWidth-this.textarea.clientWidth)+"px",this.bounds.width=parseInt(this.textarea.style.width)* +c);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxClient.IS_VML?this.textarea.style.zoom=c:mxUtils.setPrefixedStyle(this.textarea.style,"transform","scale("+c+","+c+")")}else this.textarea.style.height="",this.textarea.style.overflow="",k.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(a,b){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetInitialValue.apply(this, +arguments);var c=this.graph.getEditingValue(a.cell,b);"1"==mxUtils.getValue(a.style,"nl2Br","1")&&(c=c.replace(/\n/g,"<br/>"));return c=this.graph.sanitizeHtml(c,!0)};mxCellEditorGetCurrentValue=mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(a){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var b=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return b="1"==mxUtils.getValue(a.style,"nl2Br","1")?b.replace(/\r\n/g, +"<br/>").replace(/\n/g,"<br/>"):b.replace(/\r\n/g,"").replace(/\n/g,"")};var l=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(a){this.codeViewMode&&this.toggleViewMode();l.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(v){}};var m=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(a,b){this.graph.getModel().beginUpdate();try{if(m.apply(this,arguments),this.graph.isCellDeletable(a.cell)&& +0==this.graph.model.getChildCount(a.cell)){var c=mxUtils.getValue(a.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),d=mxUtils.getValue(a.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);""==b&&c==mxConstants.NONE&&d==mxConstants.NONE&&this.graph.removeCells([a.cell],!1)}}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=function(a){var b=null;if(this.graph.getModel().isEdge(a.cell)||this.graph.getModel().isEdge(this.graph.getModel().getParent(a.cell)))b= +mxUtils.getValue(a.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null),b==mxConstants.NONE&&(b=null);return b};mxCellEditor.prototype.getMinimumSize=function(a){var b=this.graph.getView().scale;return new mxRectangle(0,0,null==a.text?30:a.text.size*b+20,30)};var n=mxGraphHandler.prototype.moveCells;mxGraphHandler.prototype.moveCells=function(a,b,c,d,e,f){mxEvent.isAltDown(f)&&(e=null);n.apply(this,arguments)};mxGraphHandler.prototype.updateHint=function(b){if(null!=this.shape){null==this.hint&&(this.hint= +a(),this.graph.container.appendChild(this.hint));var c=this.graph.view.translate,d=this.graph.view.scale;b=this.roundLength((this.bounds.x+this.currentDx)/d-c.x);c=this.roundLength((this.bounds.y+this.currentDy)/d-c.y);this.hint.innerHTML=b+", "+c;this.hint.style.left=this.shape.bounds.x+Math.round((this.shape.bounds.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=this.shape.bounds.y+this.shape.bounds.height+12+"px"}};mxGraphHandler.prototype.removeHint=function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint), +this.hint=null)};mxVertexHandler.prototype.isRecursiveResize=function(a,b){return!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&&!mxEvent.isControlDown(b.getEvent())&&!this.graph.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null)};mxVertexHandler.prototype.isCenteredEvent=function(a,b){return!(!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&&!this.graph.isCellCollapsed(a.cell)&& +"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null))&&mxEvent.isControlDown(b.getEvent())||mxEvent.isMetaDown(b.getEvent())};var p=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var a=new mxPoint(0,0),b=this.tolerance;this.graph.cellEditor.getEditingCell()==this.state.cell&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(b/=2,a.x=this.sizers[0].bounds.width+b,a.y=this.sizers[0].bounds.height+ +b):a=p.apply(this,arguments);return a};mxVertexHandler.prototype.updateHint=function(b){this.index!=mxEvent.LABEL_HANDLE&&(null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint)),this.index==mxEvent.ROTATION_HANDLE?this.hint.innerHTML=this.currentAlpha+"°":(b=this.state.view.scale,this.hint.innerHTML=this.roundLength(this.bounds.width/b)+" x "+this.roundLength(this.bounds.height/b)),b=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha: +this.state.style[mxConstants.STYLE_ROTATION]||"0"),null==b&&(b=this.bounds),this.hint.style.left=b.x+Math.round((b.width-this.hint.clientWidth)/2)+"px",this.hint.style.top=b.y+b.height+12+"px",null!=this.linkHint&&(this.linkHint.style.display="none"))};mxVertexHandler.prototype.removeHint=function(){mxGraphHandler.prototype.removeHint.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(b,c){null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint)); +var d=this.graph.view.translate,e=this.graph.view.scale,f=this.roundLength(c.x/e-d.x),d=this.roundLength(c.y/e-d.y);this.hint.innerHTML=f+", "+d;this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(f=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*f.x)+"%, "+Math.round(100*f.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility="hidden");this.hint.style.left= +Math.round(b.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(b.getGraphY(),c.y)+this.state.view.graph.gridSize+"px";null!=this.linkHint&&(this.linkHint.style.display="none")};mxEdgeHandler.prototype.removeHint=mxVertexHandler.prototype.removeHint;HoverIcons.prototype.mainHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/>'):new mxImage(IMAGE_PATH+"/handle-main.png",17,17);HoverIcons.prototype.secondaryHandle= +mxClient.IS_SVG?Graph.createSvgImage(16,16,'<path d="m 8 3 L 13 8 L 8 13 L 3 8 z" stroke="#fff" fill="#fca000"/>'):new mxImage(IMAGE_PATH+"/handle-secondary.png",17,17);HoverIcons.prototype.fixedHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/><path d="m 7 7 L 11 11 M 7 11 L 11 7" stroke="#fff"/>'):new mxImage(IMAGE_PATH+"/handle-fixed.png",17,17);HoverIcons.prototype.terminalHandle=mxClient.IS_SVG? +Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/><circle cx="9" cy="9" r="2" stroke="#fff" fill="transparent"/>'):new mxImage(IMAGE_PATH+"/handle-terminal.png",17,17);HoverIcons.prototype.rotationHandle=new mxImage(mxClient.IS_SVG?"data:image/png;base64,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": IMAGE_PATH+"/handle-rotate.png",19,21);mxClient.IS_SVG&&(mxConstraintHandler.prototype.pointImage=Graph.createSvgImage(5,5,'<path d="m 0 0 L 5 5 M 0 5 L 5 0" stroke="'+HoverIcons.prototype.arrowFill+'"/>'));mxVertexHandler.prototype.handleImage=HoverIcons.prototype.mainHandle;mxVertexHandler.prototype.secondaryHandleImage=HoverIcons.prototype.secondaryHandle;mxEdgeHandler.prototype.handleImage=HoverIcons.prototype.mainHandle;mxEdgeHandler.prototype.terminalHandleImage=HoverIcons.prototype.terminalHandle; mxEdgeHandler.prototype.fixedHandleImage=HoverIcons.prototype.fixedHandle;mxEdgeHandler.prototype.labelHandleImage=HoverIcons.prototype.secondaryHandle;mxOutline.prototype.sizerImage=HoverIcons.prototype.mainHandle;null!=window.Sidebar&&(Sidebar.prototype.triangleUp=HoverIcons.prototype.triangleUp,Sidebar.prototype.triangleRight=HoverIcons.prototype.triangleRight,Sidebar.prototype.triangleDown=HoverIcons.prototype.triangleDown,Sidebar.prototype.triangleLeft=HoverIcons.prototype.triangleLeft,Sidebar.prototype.refreshTarget= HoverIcons.prototype.refreshTarget,Sidebar.prototype.roundDrop=HoverIcons.prototype.roundDrop);mxClient.IS_SVG||((new Image).src=HoverIcons.prototype.mainHandle.src,(new Image).src=HoverIcons.prototype.fixedHandle.src,(new Image).src=HoverIcons.prototype.terminalHandle.src,(new Image).src=HoverIcons.prototype.secondaryHandle.src,(new Image).src=HoverIcons.prototype.rotationHandle.src,(new Image).src=HoverIcons.prototype.triangleUp.src,(new Image).src=HoverIcons.prototype.triangleRight.src,(new Image).src= @@ -1764,8 +1766,8 @@ new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(f, this.update(d,c),this.isSpaceEvent(b)?(d=this.x+this.width,c=this.y+this.height,e=this.graph.view.scale,mxEvent.isAltDown(b.getEvent())||(this.width=this.graph.snap(this.width/e)*e,this.height=this.graph.snap(this.height/e)*e,this.graph.isGridEnabled()||(this.width<this.graph.tolerance&&(this.width=0),this.height<this.graph.tolerance&&(this.height=0)),this.x<this.first.x&&(this.x=d-this.width),this.y<this.first.y&&(this.y=c-this.height)),this.div.style.borderStyle="dashed",this.div.style.backgroundColor= "white",this.div.style.left=this.x+"px",this.div.style.top=this.y+"px",this.div.style.width=Math.max(0,this.width)+"px",this.div.style.height=this.graph.container.clientHeight+"px",this.div.style.borderWidth=0>=this.width?"0px 1px 0px 0px":"0px 1px 0px 1px",null==this.secondDiv&&(this.secondDiv=this.div.cloneNode(!0),this.div.parentNode.appendChild(this.secondDiv)),this.secondDiv.style.left=this.x+"px",this.secondDiv.style.top=this.y+"px",this.secondDiv.style.width=this.graph.container.clientWidth+ "px",this.secondDiv.style.height=Math.max(0,this.height)+"px",this.secondDiv.style.borderWidth=0>=this.height?"1px 0px 0px 0px":"1px 0px 1px 0px"):(this.div.style.backgroundColor="",this.div.style.borderWidth="",this.div.style.borderStyle="",null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null)),b.consume()}};var q=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv), -this.secondDiv=null);q.apply(this,arguments)};var t=(new Date).getTime(),z=0,w=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(a,b,c,d){w.apply(this,arguments);c!=this.currentTerminalState?(t=(new Date).getTime(),z=0):z=(new Date).getTime()-t;this.currentTerminalState=c};var x=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(a){return null!=this.currentTerminalState&&a.getState()==this.currentTerminalState&& -2E3<z||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&x.apply(this,arguments)};mxVertexHandler.prototype.isCustomHandleEvent=function(a){return!mxEvent.isShiftDown(a.getEvent())};mxEdgeHandler.prototype.createHandleShape=function(a,b){var c=null!=a&&0==a,d=this.state.getVisibleTerminalState(c),e=null!=a&&(0==a||a>=this.state.absolutePoints.length-1||this.constructor==mxElbowEdgeHandler&&2==a)?this.graph.getConnectionConstraint(this.state, +this.secondDiv=null);q.apply(this,arguments)};var t=(new Date).getTime(),z=0,x=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(a,b,c,d){x.apply(this,arguments);c!=this.currentTerminalState?(t=(new Date).getTime(),z=0):z=(new Date).getTime()-t;this.currentTerminalState=c};var w=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(a){return null!=this.currentTerminalState&&a.getState()==this.currentTerminalState&& +2E3<z||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&w.apply(this,arguments)};mxVertexHandler.prototype.isCustomHandleEvent=function(a){return!mxEvent.isShiftDown(a.getEvent())};mxEdgeHandler.prototype.createHandleShape=function(a,b){var c=null!=a&&0==a,d=this.state.getVisibleTerminalState(c),e=null!=a&&(0==a||a>=this.state.absolutePoints.length-1||this.constructor==mxElbowEdgeHandler&&2==a)?this.graph.getConnectionConstraint(this.state, d,c):null,c=null!=(null!=e?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(c),e):null)?this.fixedHandleImage:null!=e&&null!=d?this.terminalHandleImage:this.handleImage;if(null!=c)return c=new mxImageShape(new mxRectangle(0,0,c.width,c.height),c.src),c.preserveImageAspect=!1,c;c=mxConstants.HANDLE_SIZE;this.preferHtml&&--c;return new mxRectangleShape(new mxRectangle(0,0,c,c),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var y=mxVertexHandler.prototype.createSizerShape; mxVertexHandler.prototype.createSizerShape=function(a,b,c){this.handleImage=b==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:b==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;return y.apply(this,arguments)};var u=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(a){if(null!=a&&1==a.length){var b=this.graph.getModel(),c=b.getParent(a[0]),d=this.graph.getCellGeometry(a[0]);if(b.isEdge(c)&&null!=d&&d.relative&&(b=this.graph.view.getState(a[0]), null!=b&&2>b.width&&2>b.height&&null!=b.text&&null!=b.text.boundingBox))return mxRectangle.fromRectangle(b.text.boundingBox)}return u.apply(this,arguments)};var D=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(a){var b=this.graph.getModel(),c=b.getParent(a.cell),d=this.graph.getCellGeometry(a.cell);return b.isEdge(c)&&null!=d&&d.relative&&2>a.width&&2>a.height&&null!=a.text&&null!=a.text.boundingBox?(b=a.text.unrotatedBoundingBox||a.text.boundingBox, @@ -1781,20 +1783,20 @@ null);mxEvent.consume(a)}))}if(null!=c)for(d=0;d<c.length;d++){var e=document.cr function(){return this.state.view.graph.connectionHandler.isEnabled()});var a=mxUtils.bind(this,function(){null!=this.linkHint&&(this.linkHint.style.display=1==this.graph.getSelectionCount()?"":"none");null!=this.labelShape&&(this.labelShape.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none")});this.selectionHandler=mxUtils.bind(this,function(b,c){a()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.selectionHandler); this.changeHandler=mxUtils.bind(this,function(b,c){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));a();this.redrawHandles()});this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var b=this.graph.getLinkForCell(this.state.cell),c=this.graph.getLinksForState(this.state);if(null!=b||null!=c&&0<c.length)this.updateLinkHint(b,c),this.redrawHandles()};var L=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){L.apply(this, arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var K=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){K.apply(this);if(null!=this.state&&null!=this.linkHint){var a=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),b=new mxRectangle(this.state.x,this.state.y-22,this.state.width+24,this.state.height+22),c=mxUtils.getBoundingBox(b,this.state.style[mxConstants.STYLE_ROTATION]|| -"0",a),a=null!=c?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,b=null!=this.state.text?this.state.text.boundingBox:null;null==c&&(c=this.state);c=c.y+c.height;null!=b&&(c=Math.max(c,b.y+b.height));this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(c+this.verticalOffset/2+6+this.state.view.graph.tolerance)+"px"}};var H=mxVertexHandler.prototype.reset;mxVertexHandler.prototype.reset= -function(){H.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none")};var V=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){V.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.selectionHandler&&(this.graph.getSelectionModel().removeListener(this.selectionHandler),this.selectionHandler= +"0",a),a=null!=c?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,b=null!=this.state.text?this.state.text.boundingBox:null;null==c&&(c=this.state);c=c.y+c.height;null!=b&&(c=Math.max(c,b.y+b.height));this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(c+this.verticalOffset/2+6+this.state.view.graph.tolerance)+"px"}};var I=mxVertexHandler.prototype.reset;mxVertexHandler.prototype.reset= +function(){I.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none")};var V=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){V.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.selectionHandler&&(this.graph.getSelectionModel().removeListener(this.selectionHandler),this.selectionHandler= null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null);null!=this.editingHandler&&(this.graph.removeListener(this.editingHandler),this.editingHandler=null)};var U=mxEdgeHandler.prototype.redrawHandles;mxEdgeHandler.prototype.redrawHandles=function(){if(null!=this.marker&&(U.apply(this),null!=this.state&&null!=this.linkHint)){var a=this.state;null!=this.state.text&&null!=this.state.text.bounds&&(a=new mxRectangle(a.x,a.y,a.width,a.height), a.add(this.state.text.bounds));this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(a.y+a.height+6+this.state.view.graph.tolerance)+"px"}};var ca=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){ca.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var W=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){W.apply(this,arguments);null!=this.linkHint&& (this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.selectionHandler&&(this.graph.getSelectionModel().removeListener(this.selectionHandler),this.selectionHandler=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null)}}();(function(){function a(){mxCylinder.call(this)}function b(){mxActor.call(this)}function c(){mxCylinder.call(this)}function d(){mxCylinder.call(this)}function e(){mxCylinder.call(this)}function f(){mxActor.call(this)}function g(){mxCylinder.call(this)}function h(){mxActor.call(this)}function k(){mxActor.call(this)}function l(){mxActor.call(this)}function m(){mxActor.call(this)}function n(){mxActor.call(this)}function p(){mxActor.call(this)}function r(){mxActor.call(this)}function q(a,b){this.canvas= a;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.defaultVariation=b;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,q.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,q.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,q.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,q.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo; -this.canvas.curveTo=mxUtils.bind(this,q.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,q.prototype.arcTo)}function t(){mxRectangleShape.call(this)}function z(){mxRectangleShape.call(this)}function w(){mxActor.call(this)}function x(){mxActor.call(this)}function y(){mxActor.call(this)}function u(){mxRectangleShape.call(this)}function D(){mxRectangleShape.call(this)}function F(){mxCylinder.call(this)}function E(){mxShape.call(this)}function B(){mxShape.call(this)} -function A(){mxEllipse.call(this)}function C(){mxShape.call(this)}function L(){mxShape.call(this)}function K(){mxRectangleShape.call(this)}function H(){mxShape.call(this)}function V(){mxShape.call(this)}function U(){mxShape.call(this)}function ca(){mxShape.call(this)}function W(){mxShape.call(this)}function v(){mxCylinder.call(this)}function P(){mxDoubleEllipse.call(this)}function J(){mxDoubleEllipse.call(this)}function G(){mxArrowConnector.call(this);this.spacing=0}function da(){mxArrowConnector.call(this); -this.spacing=0}function N(){mxActor.call(this)}function I(){mxRectangleShape.call(this)}function M(){mxActor.call(this)}function aa(){mxActor.call(this)}function ea(){mxActor.call(this)}function S(){mxActor.call(this)}function Q(){mxActor.call(this)}function T(){mxActor.call(this)}function Y(){mxActor.call(this)}function O(){mxActor.call(this)}function R(){mxActor.call(this)}function fa(){mxActor.call(this)}function X(){mxEllipse.call(this)}function Z(){mxEllipse.call(this)}function ra(){mxEllipse.call(this)} -function xa(){mxRhombus.call(this)}function ya(){mxEllipse.call(this)}function za(){mxEllipse.call(this)}function Aa(){mxEllipse.call(this)}function sa(){mxEllipse.call(this)}function pa(){mxActor.call(this)}function na(){mxActor.call(this)}function oa(){mxActor.call(this)}function ka(){mxConnector.call(this)}function Da(a,b,c,d,e,f,g,h,k,l){g+=k;var ma=d.clone();d.x-=e*(2*g+k);d.y-=f*(2*g+k);e*=g+k;f*=g+k;return function(){a.ellipse(ma.x-e-g,ma.y-f-g,2*g,2*g);l?a.fillAndStroke():a.stroke()}}mxUtils.extend(a, +this.canvas.curveTo=mxUtils.bind(this,q.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,q.prototype.arcTo)}function t(){mxRectangleShape.call(this)}function z(){mxRectangleShape.call(this)}function x(){mxActor.call(this)}function w(){mxActor.call(this)}function y(){mxActor.call(this)}function u(){mxRectangleShape.call(this)}function D(){mxRectangleShape.call(this)}function F(){mxCylinder.call(this)}function E(){mxShape.call(this)}function B(){mxShape.call(this)} +function A(){mxEllipse.call(this)}function C(){mxShape.call(this)}function L(){mxShape.call(this)}function K(){mxRectangleShape.call(this)}function I(){mxShape.call(this)}function V(){mxShape.call(this)}function U(){mxShape.call(this)}function ca(){mxShape.call(this)}function W(){mxShape.call(this)}function v(){mxCylinder.call(this)}function Q(){mxDoubleEllipse.call(this)}function G(){mxDoubleEllipse.call(this)}function H(){mxArrowConnector.call(this);this.spacing=0}function da(){mxArrowConnector.call(this); +this.spacing=0}function N(){mxActor.call(this)}function J(){mxRectangleShape.call(this)}function M(){mxActor.call(this)}function aa(){mxActor.call(this)}function ea(){mxActor.call(this)}function S(){mxActor.call(this)}function P(){mxActor.call(this)}function T(){mxActor.call(this)}function Z(){mxActor.call(this)}function O(){mxActor.call(this)}function R(){mxActor.call(this)}function fa(){mxActor.call(this)}function X(){mxEllipse.call(this)}function Y(){mxEllipse.call(this)}function ra(){mxEllipse.call(this)} +function xa(){mxRhombus.call(this)}function ya(){mxEllipse.call(this)}function za(){mxEllipse.call(this)}function Aa(){mxEllipse.call(this)}function sa(){mxEllipse.call(this)}function pa(){mxActor.call(this)}function na(){mxActor.call(this)}function oa(){mxActor.call(this)}function la(){mxConnector.call(this)}function Da(a,b,c,d,e,f,g,h,k,l){g+=k;var ga=d.clone();d.x-=e*(2*g+k);d.y-=f*(2*g+k);e*=g+k;f*=g+k;return function(){a.ellipse(ga.x-e-g,ga.y-f-g,2*g,2*g);l?a.fillAndStroke():a.stroke()}}mxUtils.extend(a, mxCylinder);a.prototype.size=20;a.prototype.darkOpacity=0;a.prototype.darkOpacity2=0;a.prototype.paintVertexShape=function(a,b,c,d,e){var f=Math.max(0,Math.min(d,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),g=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),h=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));a.translate(b,c);a.begin();a.moveTo(0,0);a.lineTo(d-f,0);a.lineTo(d, f);a.lineTo(d,e);a.lineTo(f,e);a.lineTo(0,e-f);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=g&&(a.setFillAlpha(Math.abs(g)),a.setFillColor(0>g?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(d-f,0),a.lineTo(d,f),a.lineTo(f,f),a.close(),a.fill()),0!=h&&(a.setFillAlpha(Math.abs(h)),a.setFillColor(0>h?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(f,f),a.lineTo(f,e),a.lineTo(0,e-f),a.close(),a.fill()),a.begin(),a.moveTo(f,e),a.lineTo(f,f),a.lineTo(0, -0),a.moveTo(f,f),a.lineTo(d,f),a.end(),a.stroke())};a.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?(a=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(a,a,0,0)):null};mxCellRenderer.registerShape("cube",a);var Ba=Math.tan(mxUtils.toRadians(30)),la=(.5-Ba)/2;mxUtils.extend(b,mxActor);b.prototype.size=20;b.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/Ba);a.translate((d-b)/2,(e-b)/2+b/4);a.moveTo(0,.25*b);a.lineTo(.5* -b,b*la);a.lineTo(b,.25*b);a.lineTo(.5*b,(.5-la)*b);a.lineTo(0,.25*b);a.close();a.end()};mxCellRenderer.registerShape("isoRectangle",b);mxUtils.extend(c,mxCylinder);c.prototype.size=20;c.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.min(d,e/(.5+Ba));f?(a.moveTo(0,.25*b),a.lineTo(.5*b,(.5-la)*b),a.lineTo(b,.25*b),a.moveTo(.5*b,(.5-la)*b),a.lineTo(.5*b,(1-la)*b)):(a.translate((d-b)/2,(e-b)/2),a.moveTo(0,.25*b),a.lineTo(.5*b,b*la),a.lineTo(b,.25*b),a.lineTo(b,.75*b),a.lineTo(.5*b,(1-la)*b),a.lineTo(0, +0),a.moveTo(f,f),a.lineTo(d,f),a.end(),a.stroke())};a.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?(a=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(a,a,0,0)):null};mxCellRenderer.registerShape("cube",a);var Ba=Math.tan(mxUtils.toRadians(30)),ma=(.5-Ba)/2;mxUtils.extend(b,mxActor);b.prototype.size=20;b.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/Ba);a.translate((d-b)/2,(e-b)/2+b/4);a.moveTo(0,.25*b);a.lineTo(.5* +b,b*ma);a.lineTo(b,.25*b);a.lineTo(.5*b,(.5-ma)*b);a.lineTo(0,.25*b);a.close();a.end()};mxCellRenderer.registerShape("isoRectangle",b);mxUtils.extend(c,mxCylinder);c.prototype.size=20;c.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.min(d,e/(.5+Ba));f?(a.moveTo(0,.25*b),a.lineTo(.5*b,(.5-ma)*b),a.lineTo(b,.25*b),a.moveTo(.5*b,(.5-ma)*b),a.lineTo(.5*b,(1-ma)*b)):(a.translate((d-b)/2,(e-b)/2),a.moveTo(0,.25*b),a.lineTo(.5*b,b*ma),a.lineTo(b,.25*b),a.lineTo(b,.75*b),a.lineTo(.5*b,(1-ma)*b),a.lineTo(0, .75*b),a.close());a.end()};mxCellRenderer.registerShape("isoCube",c);mxUtils.extend(d,mxCylinder);d.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.min(e/2,Math.round(e/8)+this.strokewidth-1);if(f&&null!=this.fill||!f&&null==this.fill)a.moveTo(0,b),a.curveTo(0,2*b,d,2*b,d,b),f||(a.stroke(),a.begin()),a.translate(0,b/2),a.moveTo(0,b),a.curveTo(0,2*b,d,2*b,d,b),f||(a.stroke(),a.begin()),a.translate(0,b/2),a.moveTo(0,b),a.curveTo(0,2*b,d,2*b,d,b),f||(a.stroke(),a.begin()),a.translate(0,-b);f||(a.moveTo(0, b),a.curveTo(0,-b/3,d,-b/3,d,b),a.lineTo(d,e-b),a.curveTo(d,e+b/3,0,e+b/3,0,e-b),a.close())};d.prototype.getLabelMargins=function(a){return new mxRectangle(0,2.5*Math.min(a.height/2,Math.round(a.height/8)+this.strokewidth-1)*this.scale,0,0)};mxCellRenderer.registerShape("datastore",d);mxUtils.extend(e,mxCylinder);e.prototype.size=30;e.prototype.darkOpacity=0;e.prototype.paintVertexShape=function(a,b,c,d,e){var f=Math.max(0,Math.min(d,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))))), g=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));a.translate(b,c);a.begin();a.moveTo(0,0);a.lineTo(d-f,0);a.lineTo(d,f);a.lineTo(d,e);a.lineTo(0,e);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=g&&(a.setFillAlpha(Math.abs(g)),a.setFillColor(0>g?"#FFFFFF":"#000000"),a.begin(),a.moveTo(d-f,0),a.lineTo(d-f,f),a.lineTo(d,f),a.close(),a.fill()),a.begin(),a.moveTo(d-f,0),a.lineTo(d-f,f),a.lineTo(d,f),a.end(),a.stroke())}; @@ -1817,31 +1819,31 @@ this.style||"0"==mxUtils.getValue(this.style,"comic","0"))&&Ja.apply(this,argume a.lineTo(b,c+f),a.quadTo(b,c,b+f,c)):(a.moveTo(b,c),a.lineTo(b+d,c),a.lineTo(b+d,c+e),a.lineTo(b,c+e),a.lineTo(b,c)),a.close(),a.end(),a.fillAndStroke()}};var La=mxRectangleShape.prototype.paintForeground;mxRectangleShape.prototype.paintForeground=function(a,b,c,d,e){null==a.handJiggle&&La.apply(this,arguments)};mxUtils.extend(t,mxRectangleShape);t.prototype.size=.1;t.prototype.isHtmlAllowed=function(){return!1};t.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL, !0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var b=a.width,c=a.height;a=new mxRectangle(a.x,a.y,b,c);var d=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,d=Math.max(d,Math.min(b*e,c*e));a.x+=Math.round(d);a.width-=Math.round(2*d)}return a};t.prototype.paintForeground= function(a,b,c,d,e){var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(d*g,e*g));f=Math.round(f);a.begin();a.moveTo(b+f,c);a.lineTo(b+f,c+e);a.moveTo(b+d-f,c);a.lineTo(b+d-f,c+e);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("process",t);mxUtils.extend(z, -mxRectangleShape);z.prototype.paintBackground=function(a,b,c,d,e){a.setFillColor(mxConstants.NONE);a.rect(b,c,d,e);a.fill()};z.prototype.paintForeground=function(a,b,c,d,e){};mxCellRenderer.registerShape("transparent",z);mxUtils.extend(w,mxHexagon);w.prototype.size=30;w.prototype.position=.5;w.prototype.position2=.5;w.prototype.base=20;w.prototype.getLabelMargins=function(){return new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};w.prototype.isRoundable= -function(){return!0};w.prototype.redrawPath=function(a,b,c,d,e){b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),g=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2)))),h=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"base",this.base)))); -this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,e-c),new mxPoint(Math.min(d,f+h),e-c),new mxPoint(g,e),new mxPoint(Math.max(0,f),e-c),new mxPoint(0,e-c)],this.isRounded,b,!0,[4])};mxCellRenderer.registerShape("callout",w);mxUtils.extend(x,mxActor);x.prototype.size=.2;x.prototype.fixedSize=20;x.prototype.isRoundable=function(){return!0};x.prototype.redrawPath=function(a,b,c,d,e){b="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style, -"size",this.fixedSize)))):d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(0,e),new mxPoint(b,e/2)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("step",x);mxUtils.extend(y,mxHexagon);y.prototype.size=.25;y.prototype.isRoundable=function(){return!0};y.prototype.redrawPath= +mxRectangleShape);z.prototype.paintBackground=function(a,b,c,d,e){a.setFillColor(mxConstants.NONE);a.rect(b,c,d,e);a.fill()};z.prototype.paintForeground=function(a,b,c,d,e){};mxCellRenderer.registerShape("transparent",z);mxUtils.extend(x,mxHexagon);x.prototype.size=30;x.prototype.position=.5;x.prototype.position2=.5;x.prototype.base=20;x.prototype.getLabelMargins=function(){return new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};x.prototype.isRoundable= +function(){return!0};x.prototype.redrawPath=function(a,b,c,d,e){b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),g=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2)))),h=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"base",this.base)))); +this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,e-c),new mxPoint(Math.min(d,f+h),e-c),new mxPoint(g,e),new mxPoint(Math.max(0,f),e-c),new mxPoint(0,e-c)],this.isRounded,b,!0,[4])};mxCellRenderer.registerShape("callout",x);mxUtils.extend(w,mxActor);w.prototype.size=.2;w.prototype.fixedSize=20;w.prototype.isRoundable=function(){return!0};w.prototype.redrawPath=function(a,b,c,d,e){b="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style, +"size",this.fixedSize)))):d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(0,e),new mxPoint(b,e/2)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("step",w);mxUtils.extend(y,mxHexagon);y.prototype.size=.25;y.prototype.isRoundable=function(){return!0};y.prototype.redrawPath= function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,.5*e),new mxPoint(d-b,e),new mxPoint(b,e),new mxPoint(0,.5*e)],this.isRounded,c,!0)};mxCellRenderer.registerShape("hexagon",y);mxUtils.extend(u,mxRectangleShape);u.prototype.isHtmlAllowed=function(){return!1};u.prototype.paintForeground=function(a, b,c,d,e){var f=Math.min(d/5,e/5)+1;a.begin();a.moveTo(b+d/2,c+f);a.lineTo(b+d/2,c+e-f);a.moveTo(b+f,c+e/2);a.lineTo(b+d-f,c+e/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",u);var Ea=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+ b,a.y+b,a.width-2*b,a.height-2*b)}return a};mxRhombus.prototype.paintVertexShape=function(a,b,c,d,e){Ea.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var f=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=f;c+=f;d-=2*f;e-=2*f;0<d&&0<e&&(a.setShadow(!1),Ea.apply(this,[a,b,c,d,e]))}};mxUtils.extend(D,mxRectangleShape);D.prototype.isHtmlAllowed=function(){return!1};D.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(Math.max(2, this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};D.prototype.paintForeground=function(a,b,c,d,e){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var f=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=f;c+=f;d-=2*f;e-=2*f;0<d&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var f=0,g;do{g=mxCellRenderer.defaultShapes[this.style["symbol"+ -f]];if(null!=g){var h=this.style["symbol"+f+"Align"],k=this.style["symbol"+f+"VerticalAlign"],l=this.style["symbol"+f+"Width"],m=this.style["symbol"+f+"Height"],ma=this.style["symbol"+f+"Spacing"]||0,n=this.style["symbol"+f+"VSpacing"]||ma,ga=this.style["symbol"+f+"ArcSpacing"];null!=ga&&(ga*=this.getArcSize(d+this.strokewidth,e+this.strokewidth),ma+=ga,n+=ga);var ga=b,p=c,ga=h==mxConstants.ALIGN_CENTER?ga+(d-l)/2:h==mxConstants.ALIGN_RIGHT?ga+(d-l-ma):ga+ma,p=k==mxConstants.ALIGN_MIDDLE?p+(e-m)/ -2:k==mxConstants.ALIGN_BOTTOM?p+(e-m-n):p+n;a.save();h=new g;h.style=this.style;g.prototype.paintVertexShape.call(h,a,ga,p,l,m);a.restore()}f++}while(null!=g)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",D);mxUtils.extend(F,mxCylinder);F.prototype.redrawPath=function(a,b,c,d,e,f){f?(a.moveTo(0,0),a.lineTo(d/2,e/2),a.lineTo(d,0),a.end()):(a.moveTo(0,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(0,e),a.close())};mxCellRenderer.registerShape("message", +f]];if(null!=g){var h=this.style["symbol"+f+"Align"],k=this.style["symbol"+f+"VerticalAlign"],l=this.style["symbol"+f+"Width"],m=this.style["symbol"+f+"Height"],ga=this.style["symbol"+f+"Spacing"]||0,n=this.style["symbol"+f+"VSpacing"]||ga,ha=this.style["symbol"+f+"ArcSpacing"];null!=ha&&(ha*=this.getArcSize(d+this.strokewidth,e+this.strokewidth),ga+=ha,n+=ha);var ha=b,p=c,ha=h==mxConstants.ALIGN_CENTER?ha+(d-l)/2:h==mxConstants.ALIGN_RIGHT?ha+(d-l-ga):ha+ga,p=k==mxConstants.ALIGN_MIDDLE?p+(e-m)/ +2:k==mxConstants.ALIGN_BOTTOM?p+(e-m-n):p+n;a.save();h=new g;h.style=this.style;g.prototype.paintVertexShape.call(h,a,ha,p,l,m);a.restore()}f++}while(null!=g)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",D);mxUtils.extend(F,mxCylinder);F.prototype.redrawPath=function(a,b,c,d,e,f){f?(a.moveTo(0,0),a.lineTo(d/2,e/2),a.lineTo(d,0),a.end()):(a.moveTo(0,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(0,e),a.close())};mxCellRenderer.registerShape("message", F);mxUtils.extend(E,mxShape);E.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.ellipse(d/4,0,d/2,e/4);a.fillAndStroke();a.begin();a.moveTo(d/2,e/4);a.lineTo(d/2,2*e/3);a.moveTo(d/2,e/3);a.lineTo(0,e/3);a.moveTo(d/2,e/3);a.lineTo(d,e/3);a.moveTo(d/2,2*e/3);a.lineTo(0,e);a.moveTo(d/2,2*e/3);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlActor",E);mxUtils.extend(B,mxShape);B.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};B.prototype.paintBackground= function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(0,e/4);a.lineTo(0,3*e/4);a.end();a.stroke();a.begin();a.moveTo(0,e/2);a.lineTo(d/6,e/2);a.end();a.stroke();a.ellipse(d/6,0,5*d/6,e);a.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",B);mxUtils.extend(A,mxEllipse);A.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/8,c+e);a.lineTo(b+7*d/8,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("umlEntity", A);mxUtils.extend(C,mxShape);C.prototype.paintVertexShape=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(d,0);a.lineTo(0,e);a.moveTo(0,0);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlDestroy",C);mxUtils.extend(L,mxShape);L.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+a.height/8,a.width,7*a.height/8)};L.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(3*d/8,e/8*1.1);a.lineTo(5*d/8,0);a.end();a.stroke();a.ellipse(0, e/8,d,7*e/8);a.fillAndStroke()};L.prototype.paintForeground=function(a,b,c,d,e){a.begin();a.moveTo(3*d/8,e/8*1.1);a.lineTo(5*d/8,e/4);a.end();a.stroke()};mxCellRenderer.registerShape("umlControl",L);mxUtils.extend(K,mxRectangleShape);K.prototype.size=40;K.prototype.isHtmlAllowed=function(){return!1};K.prototype.getLabelBounds=function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(a.x,a.y,a.width,b)};K.prototype.paintBackground= function(a,b,c,d,e){var f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),g=mxUtils.getValue(this.style,"participant");null==g||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,a,b,c,d,f):(g=this.state.view.graph.cellRenderer.getShape(g),null!=g&&g!=K&&(g=new g,g.apply(this.state),a.save(),g.paintVertexShape(a,b,c,d,f),a.restore()));f<e&&(a.setDashed(!0),a.begin(),a.moveTo(b+d/2,c+f),a.lineTo(b+d/2,c+e),a.end(),a.stroke())};K.prototype.paintForeground= -function(a,b,c,d,e){var f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,a,b,c,d,Math.min(e,f))};mxCellRenderer.registerShape("umlLifeline",K);mxUtils.extend(H,mxShape);H.prototype.width=60;H.prototype.height=30;H.prototype.corner=10;H.prototype.getLabelMargins=function(a){return new mxRectangle(0,0,a.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),a.height-parseFloat(mxUtils.getValue(this.style, -"height",this.height)*this.scale))};H.prototype.paintBackground=function(a,b,c,d,e){var f=this.corner,g=Math.min(d,Math.max(f,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),h=Math.min(e,Math.max(1.5*f,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),k=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);k!=mxConstants.NONE&&(a.setFillColor(k),a.rect(b,c,d,e),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!= -mxConstants.NONE?(this.getGradientBounds(a,b,c,d,e),a.setGradient(this.fill,this.gradient,b,c,d,e,this.gradientDirection)):a.setFillColor(this.fill);a.begin();a.moveTo(b,c);a.lineTo(b+g,c);a.lineTo(b+g,c+Math.max(0,h-1.5*f));a.lineTo(b+Math.max(0,g-f),c+h);a.lineTo(b,c+h);a.close();a.fillAndStroke();a.begin();a.moveTo(b+g,c);a.lineTo(b+d,c);a.lineTo(b+d,c+e);a.lineTo(b,c+e);a.lineTo(b,c+h);a.stroke()};mxCellRenderer.registerShape("umlFrame",H);mxPerimeter.LifelinePerimeter=function(a,b,c,d){d=K.prototype.size; +function(a,b,c,d,e){var f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,a,b,c,d,Math.min(e,f))};mxCellRenderer.registerShape("umlLifeline",K);mxUtils.extend(I,mxShape);I.prototype.width=60;I.prototype.height=30;I.prototype.corner=10;I.prototype.getLabelMargins=function(a){return new mxRectangle(0,0,a.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),a.height-parseFloat(mxUtils.getValue(this.style, +"height",this.height)*this.scale))};I.prototype.paintBackground=function(a,b,c,d,e){var f=this.corner,g=Math.min(d,Math.max(f,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),h=Math.min(e,Math.max(1.5*f,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),k=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);k!=mxConstants.NONE&&(a.setFillColor(k),a.rect(b,c,d,e),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!= +mxConstants.NONE?(this.getGradientBounds(a,b,c,d,e),a.setGradient(this.fill,this.gradient,b,c,d,e,this.gradientDirection)):a.setFillColor(this.fill);a.begin();a.moveTo(b,c);a.lineTo(b+g,c);a.lineTo(b+g,c+Math.max(0,h-1.5*f));a.lineTo(b+Math.max(0,g-f),c+h);a.lineTo(b,c+h);a.close();a.fillAndStroke();a.begin();a.moveTo(b+g,c);a.lineTo(b+d,c);a.lineTo(b+d,c+e);a.lineTo(b,c+e);a.lineTo(b,c+h);a.stroke()};mxCellRenderer.registerShape("umlFrame",I);mxPerimeter.LifelinePerimeter=function(a,b,c,d){d=K.prototype.size; null!=b&&(d=mxUtils.getValue(b.style,"size",d)*b.view.scale);b=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;c.x<a.getCenterX()&&(b=-1*(b+1));return new mxPoint(a.getCenterX()+b,Math.min(a.y+a.height,Math.max(a.y+d,c.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(a,b,c,d){d=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",mxPerimeter.OrthogonalPerimeter); mxPerimeter.BackbonePerimeter=function(a,b,c,d){d=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;null!=b.style.backboneSize&&(d+=parseFloat(b.style.backboneSize)*b.view.scale/2-1);if("south"==b.style[mxConstants.STYLE_DIRECTION]||"north"==b.style[mxConstants.STYLE_DIRECTION])return c.x<a.getCenterX()&&(d=-1*(d+1)),new mxPoint(a.getCenterX()+d,Math.min(a.y+a.height,Math.max(a.y,c.y)));c.y<a.getCenterY()&&(d=-1*(d+1));return new mxPoint(Math.min(a.x+a.width,Math.max(a.x,c.x)), -a.getCenterY()+d)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(a,b,c,d){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(a,new mxRectangle(0,0,0,Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(b.style,"size",w.prototype.size))*b.view.scale))),b.style),b,c,d)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(a,b,c,d){var e=m.prototype.size; +a.getCenterY()+d)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(a,b,c,d){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(a,new mxRectangle(0,0,0,Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(b.style,"size",x.prototype.size))*b.view.scale))),b.style),b,c,d)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(a,b,c,d){var e=m.prototype.size; null!=b&&(e=mxUtils.getValue(b.style,"size",e));var f=a.x,g=a.y,h=a.width,k=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(e=k*Math.max(0,Math.min(1,e)),g=[new mxPoint(f,g),new mxPoint(f+h,g+e),new mxPoint(f+h,g+k),new mxPoint(f,g+k-e),new mxPoint(f,g)]):(e=h*Math.max(0,Math.min(1,e)),g=[new mxPoint(f+e,g),new mxPoint(f+h,g),new mxPoint(f+h-e,g+k),new mxPoint(f, g+k),new mxPoint(f+e,g)]);k=a.getCenterX();a=a.getCenterY();a=new mxPoint(k,a);d&&(c.x<f||c.x>f+h?a.y=c.y:a.x=c.x);return mxUtils.getPerimeterPoint(g,a,c)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(a,b,c,d){var e=n.prototype.size;null!=b&&(e=mxUtils.getValue(b.style,"size",e));var f=a.x,g=a.y,h=a.width,k=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST; b==mxConstants.DIRECTION_EAST?(e=h*Math.max(0,Math.min(1,e)),g=[new mxPoint(f+e,g),new mxPoint(f+h-e,g),new mxPoint(f+h,g+k),new mxPoint(f,g+k),new mxPoint(f+e,g)]):b==mxConstants.DIRECTION_WEST?(e=h*Math.max(0,Math.min(1,e)),g=[new mxPoint(f,g),new mxPoint(f+h,g),new mxPoint(f+h-e,g+k),new mxPoint(f+e,g+k),new mxPoint(f,g)]):b==mxConstants.DIRECTION_NORTH?(e=k*Math.max(0,Math.min(1,e)),g=[new mxPoint(f,g+e),new mxPoint(f+h,g),new mxPoint(f+h,g+k),new mxPoint(f,g+k-e),new mxPoint(f,g+e)]):(e=k*Math.max(0, -Math.min(1,e)),g=[new mxPoint(f,g),new mxPoint(f+h,g+e),new mxPoint(f+h,g+k-e),new mxPoint(f,g+k),new mxPoint(f,g)]);k=a.getCenterX();a=a.getCenterY();a=new mxPoint(k,a);d&&(c.x<f||c.x>f+h?a.y=c.y:a.x=c.x);return mxUtils.getPerimeterPoint(g,a,c)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(a,b,c,d){var e="0"!=mxUtils.getValue(b.style,"fixedSize","0"),f=e?x.prototype.fixedSize:x.prototype.size;null!=b&&(f=mxUtils.getValue(b.style, +Math.min(1,e)),g=[new mxPoint(f,g),new mxPoint(f+h,g+e),new mxPoint(f+h,g+k-e),new mxPoint(f,g+k),new mxPoint(f,g)]);k=a.getCenterX();a=a.getCenterY();a=new mxPoint(k,a);d&&(c.x<f||c.x>f+h?a.y=c.y:a.x=c.x);return mxUtils.getPerimeterPoint(g,a,c)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(a,b,c,d){var e="0"!=mxUtils.getValue(b.style,"fixedSize","0"),f=e?w.prototype.fixedSize:w.prototype.size;null!=b&&(f=mxUtils.getValue(b.style, "size",f));var g=a.x,h=a.y,k=a.width,l=a.height,m=a.getCenterX();a=a.getCenterY();b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_EAST?(e=e?Math.max(0,Math.min(k,f)):k*Math.max(0,Math.min(1,f)),h=[new mxPoint(g,h),new mxPoint(g+k-e,h),new mxPoint(g+k,a),new mxPoint(g+k-e,h+l),new mxPoint(g,h+l),new mxPoint(g+e,a),new mxPoint(g,h)]):b==mxConstants.DIRECTION_WEST?(e=e?Math.max(0,Math.min(k,f)):k*Math.max(0, Math.min(1,f)),h=[new mxPoint(g+e,h),new mxPoint(g+k,h),new mxPoint(g+k-e,a),new mxPoint(g+k,h+l),new mxPoint(g+e,h+l),new mxPoint(g,a),new mxPoint(g+e,h)]):b==mxConstants.DIRECTION_NORTH?(e=e?Math.max(0,Math.min(l,f)):l*Math.max(0,Math.min(1,f)),h=[new mxPoint(g,h+e),new mxPoint(m,h),new mxPoint(g+k,h+e),new mxPoint(g+k,h+l),new mxPoint(m,h+l-e),new mxPoint(g,h+l),new mxPoint(g,h+e)]):(e=e?Math.max(0,Math.min(l,f)):l*Math.max(0,Math.min(1,f)),h=[new mxPoint(g,h),new mxPoint(m,h+e),new mxPoint(g+ k,h),new mxPoint(g+k,h+l-e),new mxPoint(m,h+l),new mxPoint(g,h+l-e),new mxPoint(g,h)]);m=new mxPoint(m,a);d&&(c.x<g||c.x>g+k?m.y=c.y:m.x=c.x);return mxUtils.getPerimeterPoint(h,m,c)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(a,b,c,d){var e=y.prototype.size;null!=b&&(e=mxUtils.getValue(b.style,"size",e));var f=a.x,g=a.y,h=a.width,k=a.height,l=a.getCenterX();a=a.getCenterY();b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION, @@ -1850,72 +1852,72 @@ h?l.y=c.y:l.x=c.x);return mxUtils.getPerimeterPoint(g,l,c)};mxStyleRegistry.putV 10;U.prototype.inset=2;U.prototype.paintBackground=function(a,b,c,d,e){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size)),g=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(b,c);a.begin();a.moveTo(d/2,f+g);a.lineTo(d/2,e);a.end();a.stroke();a.begin();a.moveTo((d-f)/2-g,f/2);a.quadTo((d-f)/2-g,f+g,d/2,f+g);a.quadTo((d+f)/2+g,f+g,(d+f)/2+g,f/2);a.end();a.stroke()};mxCellRenderer.registerShape("requires",U);mxUtils.extend(ca,mxShape);ca.prototype.paintBackground= function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.end();a.stroke()};mxCellRenderer.registerShape("requiredInterface",ca);mxUtils.extend(W,mxShape);W.prototype.inset=2;W.prototype.paintBackground=function(a,b,c,d,e){var f=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(b,c);a.ellipse(0,f,d-2*f,e-2*f);a.fillAndStroke();a.begin();a.moveTo(d/2,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d/2,e);a.end();a.stroke()};mxCellRenderer.registerShape("providedRequiredInterface", W);mxUtils.extend(v,mxCylinder);v.prototype.jettyWidth=32;v.prototype.jettyHeight=12;v.prototype.redrawPath=function(a,b,c,d,e,f){var g=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));b=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));c=g/2;var g=c+g/2,h=.3*e-b/2,k=.7*e-b/2;f?(a.moveTo(c,h),a.lineTo(g,h),a.lineTo(g,h+b),a.lineTo(c,h+b),a.moveTo(c,k),a.lineTo(g,k),a.lineTo(g,k+b),a.lineTo(c,k+b)):(a.moveTo(c,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(c,e), -a.lineTo(c,k+b),a.lineTo(0,k+b),a.lineTo(0,k),a.lineTo(c,k),a.lineTo(c,h+b),a.lineTo(0,h+b),a.lineTo(0,h),a.lineTo(c,h),a.close());a.end()};mxCellRenderer.registerShape("component",v);mxUtils.extend(P,mxDoubleEllipse);P.prototype.outerStroke=!0;P.prototype.paintVertexShape=function(a,b,c,d,e){var f=Math.min(4,Math.min(d/5,e/5));0<d&&0<e&&(a.ellipse(b+f,c+f,d-2*f,e-2*f),a.fillAndStroke());a.setShadow(!1);this.outerStroke&&(a.ellipse(b,c,d,e),a.stroke())};mxCellRenderer.registerShape("endState",P); -mxUtils.extend(J,P);J.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",J);mxUtils.extend(G,mxArrowConnector);G.prototype.defaultWidth=4;G.prototype.isOpenEnded=function(){return!0};G.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};G.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",G);mxUtils.extend(da,mxArrowConnector);da.prototype.defaultWidth=10;da.prototype.defaultArrowWidth= +a.lineTo(c,k+b),a.lineTo(0,k+b),a.lineTo(0,k),a.lineTo(c,k),a.lineTo(c,h+b),a.lineTo(0,h+b),a.lineTo(0,h),a.lineTo(c,h),a.close());a.end()};mxCellRenderer.registerShape("component",v);mxUtils.extend(Q,mxDoubleEllipse);Q.prototype.outerStroke=!0;Q.prototype.paintVertexShape=function(a,b,c,d,e){var f=Math.min(4,Math.min(d/5,e/5));0<d&&0<e&&(a.ellipse(b+f,c+f,d-2*f,e-2*f),a.fillAndStroke());a.setShadow(!1);this.outerStroke&&(a.ellipse(b,c,d,e),a.stroke())};mxCellRenderer.registerShape("endState",Q); +mxUtils.extend(G,Q);G.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",G);mxUtils.extend(H,mxArrowConnector);H.prototype.defaultWidth=4;H.prototype.isOpenEnded=function(){return!0};H.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};H.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",H);mxUtils.extend(da,mxArrowConnector);da.prototype.defaultWidth=10;da.prototype.defaultArrowWidth= 20;da.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};da.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};da.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",da);mxUtils.extend(N,mxActor);N.prototype.size=30;N.prototype.isRoundable= -function(){return!0};N.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(0,b),new mxPoint(d,0),new mxPoint(d,e)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("manualInput",N);mxUtils.extend(I,mxRectangleShape);I.prototype.dx=20;I.prototype.dy=20;I.prototype.isHtmlAllowed=function(){return!1}; -I.prototype.paintForeground=function(a,b,c,d,e){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var f=0;if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(d*g,e*g));g=Math.max(f,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));f=Math.max(f,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(b,c+f);a.lineTo(b+d,c+f);a.end();a.stroke(); -a.begin();a.moveTo(b+g,c);a.lineTo(b+g,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("internalStorage",I);mxUtils.extend(M,mxActor);M.prototype.dx=20;M.prototype.dy=20;M.prototype.redrawPath=function(a,b,c,d,e){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/ +function(){return!0};N.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(0,b),new mxPoint(d,0),new mxPoint(d,e)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("manualInput",N);mxUtils.extend(J,mxRectangleShape);J.prototype.dx=20;J.prototype.dy=20;J.prototype.isHtmlAllowed=function(){return!1}; +J.prototype.paintForeground=function(a,b,c,d,e){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var f=0;if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(d*g,e*g));g=Math.max(f,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));f=Math.max(f,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(b,c+f);a.lineTo(b+d,c+f);a.end();a.stroke(); +a.begin();a.moveTo(b+g,c);a.lineTo(b+g,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("internalStorage",J);mxUtils.extend(M,mxActor);M.prototype.dx=20;M.prototype.dy=20;M.prototype.redrawPath=function(a,b,c,d,e){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/ 2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,c),new mxPoint(b,c),new mxPoint(b,e),new mxPoint(0,e)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("corner",M);mxUtils.extend(aa,mxActor);aa.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.lineTo(0,e);a.end();a.moveTo(d,0);a.lineTo(d,e);a.end();a.moveTo(0,e/2);a.lineTo(d,e/2);a.end()};mxCellRenderer.registerShape("crossbar",aa);mxUtils.extend(ea,mxActor);ea.prototype.dx=20;ea.prototype.dy=20;ea.prototype.redrawPath= function(a,b,c,d,e){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,c),new mxPoint((d+b)/2,c),new mxPoint((d+b)/2,e),new mxPoint((d-b)/2,e),new mxPoint((d-b)/2,c),new mxPoint(0, c)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("tee",ea);mxUtils.extend(S,mxActor);S.prototype.arrowWidth=.3;S.prototype.arrowSize=.2;S.prototype.redrawPath=function(a,b,c,d,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth))));b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));c=(e-f)/2;var f=c+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a, -[new mxPoint(0,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,f),new mxPoint(0,f)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("singleArrow",S);mxUtils.extend(Q,mxActor);Q.prototype.redrawPath=function(a,b,c,d,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",S.prototype.arrowWidth))));b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",S.prototype.arrowSize))));c=(e-f)/2;var f= -c+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e/2),new mxPoint(b,0),new mxPoint(b,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,f),new mxPoint(b,f),new mxPoint(b,e)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("doubleArrow",Q);mxUtils.extend(T,mxActor);T.prototype.size=.1;T.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style, -"size",this.size))));a.moveTo(b,0);a.lineTo(d,0);a.quadTo(d-2*b,e/2,d,e);a.lineTo(b,e);a.quadTo(b-2*b,e/2,b,0);a.close();a.end()};mxCellRenderer.registerShape("dataStorage",T);mxUtils.extend(Y,mxActor);Y.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.close();a.end()};mxCellRenderer.registerShape("or",Y);mxUtils.extend(O,mxActor);O.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.quadTo(d/2,e/2,0,0);a.close(); +[new mxPoint(0,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,f),new mxPoint(0,f)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("singleArrow",S);mxUtils.extend(P,mxActor);P.prototype.redrawPath=function(a,b,c,d,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",S.prototype.arrowWidth))));b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",S.prototype.arrowSize))));c=(e-f)/2;var f= +c+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e/2),new mxPoint(b,0),new mxPoint(b,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,f),new mxPoint(b,f),new mxPoint(b,e)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("doubleArrow",P);mxUtils.extend(T,mxActor);T.prototype.size=.1;T.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style, +"size",this.size))));a.moveTo(b,0);a.lineTo(d,0);a.quadTo(d-2*b,e/2,d,e);a.lineTo(b,e);a.quadTo(b-2*b,e/2,b,0);a.close();a.end()};mxCellRenderer.registerShape("dataStorage",T);mxUtils.extend(Z,mxActor);Z.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.close();a.end()};mxCellRenderer.registerShape("or",Z);mxUtils.extend(O,mxActor);O.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.quadTo(d/2,e/2,0,0);a.close(); a.end()};mxCellRenderer.registerShape("xor",O);mxUtils.extend(R,mxActor);R.prototype.size=20;R.prototype.isRoundable=function(){return!0};R.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d/2,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,.8*b),new mxPoint(d,e),new mxPoint(0,e),new mxPoint(0,.8*b)],this.isRounded,c,!0); a.end()};mxCellRenderer.registerShape("loopLimit",R);mxUtils.extend(fa,mxActor);fa.prototype.size=.375;fa.prototype.isRoundable=function(){return!0};fa.prototype.redrawPath=function(a,b,c,d,e){b=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,e-b),new mxPoint(d/2,e),new mxPoint(0,e-b)],this.isRounded,c,!0);a.end()}; -mxCellRenderer.registerShape("offPageConnector",fa);mxUtils.extend(X,mxEllipse);X.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/2,c+e);a.lineTo(b+d,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("tapeData",X);mxUtils.extend(Z,mxEllipse);Z.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+d,c+e/2);a.end(); -a.stroke();a.begin();a.moveTo(b+d/2,c);a.lineTo(b+d/2,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("orEllipse",Z);mxUtils.extend(ra,mxEllipse);ra.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b+.145*d,c+.145*e);a.lineTo(b+.855*d,c+.855*e);a.end();a.stroke();a.begin();a.moveTo(b+.855*d,c+.145*e);a.lineTo(b+.145*d,c+.855*e);a.end();a.stroke()};mxCellRenderer.registerShape("sumEllipse",ra);mxUtils.extend(xa, +mxCellRenderer.registerShape("offPageConnector",fa);mxUtils.extend(X,mxEllipse);X.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/2,c+e);a.lineTo(b+d,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("tapeData",X);mxUtils.extend(Y,mxEllipse);Y.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+d,c+e/2);a.end(); +a.stroke();a.begin();a.moveTo(b+d/2,c);a.lineTo(b+d/2,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("orEllipse",Y);mxUtils.extend(ra,mxEllipse);ra.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b+.145*d,c+.145*e);a.lineTo(b+.855*d,c+.855*e);a.end();a.stroke();a.begin();a.moveTo(b+.855*d,c+.145*e);a.lineTo(b+.145*d,c+.855*e);a.end();a.stroke()};mxCellRenderer.registerShape("sumEllipse",ra);mxUtils.extend(xa, mxRhombus);xa.prototype.paintVertexShape=function(a,b,c,d,e){mxRhombus.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+d,c+e/2);a.end();a.stroke()};mxCellRenderer.registerShape("sortShape",xa);mxUtils.extend(ya,mxEllipse);ya.prototype.paintVertexShape=function(a,b,c,d,e){a.begin();a.moveTo(b,c);a.lineTo(b+d,c);a.lineTo(b+d/2,c+e/2);a.close();a.fillAndStroke();a.begin();a.moveTo(b,c+e);a.lineTo(b+d,c+e);a.lineTo(b+d/2,c+e/2);a.close();a.fillAndStroke()}; mxCellRenderer.registerShape("collate",ya);mxUtils.extend(za,mxEllipse);za.prototype.paintVertexShape=function(a,b,c,d,e){var f=c+e-5;a.begin();a.moveTo(b,c);a.lineTo(b,c+e);a.moveTo(b,f);a.lineTo(b+10,f-5);a.moveTo(b,f);a.lineTo(b+10,f+5);a.moveTo(b,f);a.lineTo(b+d,f);a.moveTo(b+d,c);a.lineTo(b+d,c+e);a.moveTo(b+d,f);a.lineTo(b+d-10,f-5);a.moveTo(b+d,f);a.lineTo(b+d-10,f+5);a.end();a.stroke()};mxCellRenderer.registerShape("dimension",za);mxUtils.extend(Aa,mxEllipse);Aa.prototype.paintVertexShape= function(a,b,c,d,e){this.outline||a.setStrokeColor(null);mxRectangleShape.prototype.paintBackground.apply(this,arguments);null!=this.style&&(a.setStrokeColor(this.stroke),a.rect(b,c,d,e),a.fill(),a.begin(),a.moveTo(b,c),"1"==mxUtils.getValue(this.style,"top","1")?a.lineTo(b+d,c):a.moveTo(b+d,c),"1"==mxUtils.getValue(this.style,"right","1")?a.lineTo(b+d,c+e):a.moveTo(b+d,c+e),"1"==mxUtils.getValue(this.style,"bottom","1")?a.lineTo(b,c+e):a.moveTo(b,c+e),"1"==mxUtils.getValue(this.style,"left","1")&& a.lineTo(b,c-this.strokewidth/2),a.end(),a.stroke())};mxCellRenderer.registerShape("partialRectangle",Aa);mxUtils.extend(sa,mxEllipse);sa.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();"vertical"==mxUtils.getValue(this.style,"line")?(a.moveTo(b+d/2,c),a.lineTo(b+d/2,c+e)):(a.moveTo(b,c+e/2),a.lineTo(b+d,c+e/2));a.end();a.stroke()};mxCellRenderer.registerShape("lineEllipse",sa);mxUtils.extend(pa,mxActor);pa.prototype.redrawPath= function(a,b,c,d,e){b=Math.min(d,e/2);a.moveTo(0,0);a.lineTo(d-b,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(0,e);a.close();a.end()};mxCellRenderer.registerShape("delay",pa);mxUtils.extend(na,mxActor);na.prototype.size=.2;na.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,d);var f=Math.max(0,Math.min(b,b*parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=(e-f)/2;c=b+f;var g=(d-f)/2,f=g+f;a.moveTo(0,b);a.lineTo(g,b);a.lineTo(g,0);a.lineTo(f,0);a.lineTo(f,b);a.lineTo(d,b);a.lineTo(d, -c);a.lineTo(f,c);a.lineTo(f,e);a.lineTo(g,e);a.lineTo(g,c);a.lineTo(0,c);a.close();a.end()};mxCellRenderer.registerShape("cross",na);mxUtils.extend(oa,mxActor);oa.prototype.size=.25;oa.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/2);c=Math.min(d-b,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*d);a.moveTo(0,e/2);a.lineTo(c,0);a.lineTo(d-b,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(c,e);a.close();a.end()};mxCellRenderer.registerShape("display",oa);mxUtils.extend(ka, -mxConnector);ka.prototype.origPaintEdgeShape=ka.prototype.paintEdgeShape;ka.prototype.paintEdgeShape=function(a,b,c){for(var d=[],e=0;e<b.length;e++)d.push(mxUtils.clone(b[e]));var e=a.state.dashed,f=a.state.fixDash;ka.prototype.origPaintEdgeShape.apply(this,[a,d,c]);3<=a.state.strokeWidth&&(d=mxUtils.getValue(this.style,"fillColor",null),null!=d&&(a.setStrokeColor(d),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(e,f),ka.prototype.origPaintEdgeShape.apply(this,[a,b,c])))};mxCellRenderer.registerShape("filledEdge", -ka);"undefined"!==typeof StyleFormatPanel&&function(){var a=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var b=this.format.getSelectionState(),c=a.apply(this,arguments);"umlFrame"==b.style.shape&&c.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});return c}}();mxMarker.addMarker("dash",function(a,b,c,d,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1);return function(){a.begin();a.moveTo(d.x-m/2-n/2,d.y-n/2+m/2);a.lineTo(d.x+ -n/2-3*m/2,d.y-3*n/2-m/2);a.stroke()}});mxMarker.addMarker("cross",function(a,b,c,d,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1);return function(){a.begin();a.moveTo(d.x-m/2-n/2,d.y-n/2+m/2);a.lineTo(d.x+n/2-3*m/2,d.y-3*n/2-m/2);a.moveTo(d.x-m/2+n/2,d.y-n/2-m/2);a.lineTo(d.x-n/2-3*m/2,d.y-3*n/2+m/2);a.stroke()}});mxMarker.addMarker("circle",Da);mxMarker.addMarker("circlePlus",function(a,b,c,d,e,f,g,h,k,l){var m=d.clone(),n=Da.apply(this,arguments),p=e*(g+2*k),q=f*(g+2*k);return function(){n.apply(this, -arguments);a.begin();a.moveTo(m.x-e*k,m.y-f*k);a.lineTo(m.x-2*p+e*k,m.y-2*q+f*k);a.moveTo(m.x-p-q+f*k,m.y-q+p-e*k);a.lineTo(m.x+q-p-f*k,m.y-q-p+e*k);a.stroke()}});mxMarker.addMarker("async",function(a,b,c,d,e,f,g,h,k,l){b=e*k*1.118;c=f*k*1.118;e*=g+k;f*=g+k;var m=d.clone();m.x-=b;m.y-=c;d.x+=1*-e-b;d.y+=1*-f-c;return function(){a.begin();a.moveTo(m.x,m.y);h?a.lineTo(m.x-e-f/2,m.y-f+e/2):a.lineTo(m.x+f/2-e,m.y-f-e/2);a.lineTo(m.x-e,m.y-f);a.close();l?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync", -function(a){a=null!=a?a:2;return function(b,c,d,e,f,g,h,k,l,m){f*=h+l;g*=h+l;var n=e.clone();return function(){b.begin();b.moveTo(n.x,n.y);k?b.lineTo(n.x-f-g/a,n.y-g+f/a):b.lineTo(n.x+g/a-f,n.y-g-f/a);b.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Fa=function(a,b,c){return ha(a,["width"],b,function(b,d,e,f,g){g=a.shape.getEdgeWidth()*a.view.scale+c;return new mxPoint(f.x+d*b/4+e*g/2,f.y+e*b/4-d*g/2)},function(b,d,e,f,g,h){b=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));a.style.width= -Math.round(2*b)/a.view.scale-c})},ha=function(a,b,c,d,e){return ba(a,b,function(b){var e=a.absolutePoints,f=e.length-1;b=a.view.translate;var g=a.view.scale,h=c?e[0]:e[f],e=c?e[1]:e[f-1],f=e.x-h.x,k=e.y-h.y,l=Math.sqrt(f*f+k*k),h=d.call(this,l,f/l,k/l,h,e);return new mxPoint(h.x/g-b.x,h.y/g-b.y)},function(b,d,f){var g=a.absolutePoints,h=g.length-1;b=a.view.translate;var k=a.view.scale,l=c?g[0]:g[h],g=c?g[1]:g[h-1],h=g.x-l.x,m=g.y-l.y,n=Math.sqrt(h*h+m*m);d.x=(d.x+b.x)*k;d.y=(d.y+b.y)*k;e.call(this, -n,h/n,m/n,l,g,d,f)})},ja=function(a){return function(b){return[ba(b,["arrowWidth","arrowSize"],function(b){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",S.prototype.arrowWidth))),d=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",S.prototype.arrowSize)));return new mxPoint(b.x+(1-d)*b.width,b.y+(1-c)*b.height/2)},function(b,c){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(b.y+b.height/2-c.y)/b.height*2));this.state.style.arrowSize=Math.max(0, -Math.min(a,(b.x+b.width-c.x)/b.width))})]}},Ca=function(a,b,c){return function(d){var e=[ba(d,["size"],function(c){var d=Math.max(0,Math.min(c.width,Math.min(c.height,parseFloat(mxUtils.getValue(this.state.style,"size",b)))))*a;return new mxPoint(c.x+d,c.y+d)},function(b,c){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,c.x-b.x),Math.min(b.height,c.y-b.y)))/a)})];c&&mxUtils.getValue(d.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(ia(d));return e}},ta=function(a,b,c,d,e){c=null!= +c);a.lineTo(f,c);a.lineTo(f,e);a.lineTo(g,e);a.lineTo(g,c);a.lineTo(0,c);a.close();a.end()};mxCellRenderer.registerShape("cross",na);mxUtils.extend(oa,mxActor);oa.prototype.size=.25;oa.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/2);c=Math.min(d-b,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*d);a.moveTo(0,e/2);a.lineTo(c,0);a.lineTo(d-b,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(c,e);a.close();a.end()};mxCellRenderer.registerShape("display",oa);mxUtils.extend(la, +mxConnector);la.prototype.origPaintEdgeShape=la.prototype.paintEdgeShape;la.prototype.paintEdgeShape=function(a,b,c){for(var d=[],e=0;e<b.length;e++)d.push(mxUtils.clone(b[e]));var e=a.state.dashed,f=a.state.fixDash;la.prototype.origPaintEdgeShape.apply(this,[a,d,c]);3<=a.state.strokeWidth&&(d=mxUtils.getValue(this.style,"fillColor",null),null!=d&&(a.setStrokeColor(d),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(e,f),la.prototype.origPaintEdgeShape.apply(this,[a,b,c])))};mxCellRenderer.registerShape("filledEdge", +la);"undefined"!==typeof StyleFormatPanel&&function(){var a=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var b=this.format.getSelectionState(),c=a.apply(this,arguments);"umlFrame"==b.style.shape&&c.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});return c}}();mxMarker.addMarker("dash",function(a,b,c,d,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1);return function(){a.begin();a.moveTo(d.x-m/2-n/2,d.y-n/2+m/2);a.lineTo(d.x+ +n/2-3*m/2,d.y-3*n/2-m/2);a.stroke()}});mxMarker.addMarker("cross",function(a,b,c,d,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1);return function(){a.begin();a.moveTo(d.x-m/2-n/2,d.y-n/2+m/2);a.lineTo(d.x+n/2-3*m/2,d.y-3*n/2-m/2);a.moveTo(d.x-m/2+n/2,d.y-n/2-m/2);a.lineTo(d.x-n/2-3*m/2,d.y-3*n/2+m/2);a.stroke()}});mxMarker.addMarker("circle",Da);mxMarker.addMarker("circlePlus",function(a,b,c,d,e,f,g,h,k,l){var m=d.clone(),n=Da.apply(this,arguments),p=e*(g+2*k),ga=f*(g+2*k);return function(){n.apply(this, +arguments);a.begin();a.moveTo(m.x-e*k,m.y-f*k);a.lineTo(m.x-2*p+e*k,m.y-2*ga+f*k);a.moveTo(m.x-p-ga+f*k,m.y-ga+p-e*k);a.lineTo(m.x+ga-p-f*k,m.y-ga-p+e*k);a.stroke()}});mxMarker.addMarker("async",function(a,b,c,d,e,f,g,h,k,l){b=e*k*1.118;c=f*k*1.118;e*=g+k;f*=g+k;var m=d.clone();m.x-=b;m.y-=c;d.x+=1*-e-b;d.y+=1*-f-c;return function(){a.begin();a.moveTo(m.x,m.y);h?a.lineTo(m.x-e-f/2,m.y-f+e/2):a.lineTo(m.x+f/2-e,m.y-f-e/2);a.lineTo(m.x-e,m.y-f);a.close();l?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync", +function(a){a=null!=a?a:2;return function(b,c,d,e,f,g,h,k,l,m){f*=h+l;g*=h+l;var n=e.clone();return function(){b.begin();b.moveTo(n.x,n.y);k?b.lineTo(n.x-f-g/a,n.y-g+f/a):b.lineTo(n.x+g/a-f,n.y-g-f/a);b.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Fa=function(a,b,c){return ka(a,["width"],b,function(b,d,e,f,g){g=a.shape.getEdgeWidth()*a.view.scale+c;return new mxPoint(f.x+d*b/4+e*g/2,f.y+e*b/4-d*g/2)},function(b,d,e,f,g,h){b=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));a.style.width= +Math.round(2*b)/a.view.scale-c})},ka=function(a,b,c,d,e){return ba(a,b,function(b){var e=a.absolutePoints,f=e.length-1;b=a.view.translate;var g=a.view.scale,h=c?e[0]:e[f],e=c?e[1]:e[f-1],f=e.x-h.x,k=e.y-h.y,l=Math.sqrt(f*f+k*k),h=d.call(this,l,f/l,k/l,h,e);return new mxPoint(h.x/g-b.x,h.y/g-b.y)},function(b,d,f){var g=a.absolutePoints,h=g.length-1;b=a.view.translate;var k=a.view.scale,l=c?g[0]:g[h],g=c?g[1]:g[h-1],h=g.x-l.x,m=g.y-l.y,n=Math.sqrt(h*h+m*m);d.x=(d.x+b.x)*k;d.y=(d.y+b.y)*k;e.call(this, +n,h/n,m/n,l,g,d,f)})},ia=function(a){return function(b){return[ba(b,["arrowWidth","arrowSize"],function(b){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",S.prototype.arrowWidth))),d=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",S.prototype.arrowSize)));return new mxPoint(b.x+(1-d)*b.width,b.y+(1-c)*b.height/2)},function(b,c){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(b.y+b.height/2-c.y)/b.height*2));this.state.style.arrowSize=Math.max(0, +Math.min(a,(b.x+b.width-c.x)/b.width))})]}},Ca=function(a,b,c){return function(d){var e=[ba(d,["size"],function(c){var d=Math.max(0,Math.min(c.width,Math.min(c.height,parseFloat(mxUtils.getValue(this.state.style,"size",b)))))*a;return new mxPoint(c.x+d,c.y+d)},function(b,c){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,c.x-b.x),Math.min(b.height,c.y-b.y)))/a)})];c&&mxUtils.getValue(d.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(ja(d));return e}},ta=function(a,b,c,d,e){c=null!= c?c:1;return function(f){var g=[ba(f,["size"],function(b){var c=null!=e?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,d=parseFloat(mxUtils.getValue(this.state.style,"size",c?e:a));return new mxPoint(b.x+Math.max(0,Math.min(b.width,d*(c?1:b.width))),b.getCenterY())},function(a,b,d){var g=null!=e?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null;a=g?b.x-a.x:Math.max(0,Math.min(c,(b.x-a.x)/a.width));g&&!mxEvent.isAltDown(d.getEvent())&&(a=f.view.graph.snap(a));this.state.style.size= -a},null,d)];b&&mxUtils.getValue(f.style,mxConstants.STYLE_ROUNDED,!1)&&g.push(ia(f));return g}},Ga=function(a){return function(b){var c=[ba(b,["size"],function(b){var c=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.state.style,"size",n.prototype.size))));return new mxPoint(b.x+c*b.width*.75,b.y+b.height/4)},function(b,c){this.state.style.size=Math.max(0,Math.min(a,(c.x-b.x)/(.75*b.width)))},null,!0)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&c.push(ia(b));return c}},qa=function(){return function(a){var b= -[];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ia(a));return b}},ia=function(a,b){return ba(a,[mxConstants.STYLE_ARCSIZE],function(c){var d=null!=b?b:c.height/8;if("1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var e=mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(c.x+c.width-Math.min(c.width/2,e),c.y+d)}e=Math.max(0,parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/ +a},null,d)];b&&mxUtils.getValue(f.style,mxConstants.STYLE_ROUNDED,!1)&&g.push(ja(f));return g}},Ga=function(a){return function(b){var c=[ba(b,["size"],function(b){var c=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.state.style,"size",n.prototype.size))));return new mxPoint(b.x+c*b.width*.75,b.y+b.height/4)},function(b,c){this.state.style.size=Math.max(0,Math.min(a,(c.x-b.x)/(.75*b.width)))},null,!0)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&c.push(ja(b));return c}},qa=function(){return function(a){var b= +[];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ja(a));return b}},ja=function(a,b){return ba(a,[mxConstants.STYLE_ARCSIZE],function(c){var d=null!=b?b:c.height/8;if("1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var e=mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(c.x+c.width-Math.min(c.width/2,e),c.y+d)}e=Math.max(0,parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/ 100;return new mxPoint(c.x+c.width-Math.min(Math.max(c.width/2,c.height/2),Math.min(c.width,c.height)*e),c.y+d)},function(b,c,d){"1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(b.width,2*(b.x+b.width-c.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(b.width-c.x+b.x)/Math.min(b.width,b.height))))})},ba=function(a,b,c,d,e,f){var g=new mxHandle(a,null,mxVertexHandler.prototype.secondaryHandleImage); -g.execute=function(){for(var a=0;a<b.length;a++)this.copyStyle(b[a])};g.getPosition=c;g.setPosition=d;g.ignoreGrid=null!=e?e:!0;if(f){var h=g.positionChanged;g.positionChanged=function(){h.apply(this,arguments);a.view.invalidate(this.state.cell);a.view.validate()}}return g},ua={link:function(a){return[Fa(a,!0,10),Fa(a,!1,10)]},flexArrow:function(a){var b=a.view.graph.gridSize/a.view.scale,c=[];mxUtils.getValue(a.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(ha(a, +g.execute=function(){for(var a=0;a<b.length;a++)this.copyStyle(b[a])};g.getPosition=c;g.setPosition=d;g.ignoreGrid=null!=e?e:!0;if(f){var h=g.positionChanged;g.positionChanged=function(){h.apply(this,arguments);a.view.invalidate(this.state.cell);a.view.validate()}}return g},ua={link:function(a){return[Fa(a,!0,10),Fa(a,!1,10)]},flexArrow:function(a){var b=a.view.graph.gridSize/a.view.scale,c=[];mxUtils.getValue(a.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(ka(a, ["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(b,c,d,e,f){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)+d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)-c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_STARTSIZE]= -Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*c)/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE])})),c.push(ha(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE], +Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*c)/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE])})),c.push(ka(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE], !0,function(b,c,d,e,f){b=(a.shape.getStartArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)+d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)-c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(d-a.shape.strokewidth)/ 3)/100/a.view.scale;a.style.startWidth=Math.max(0,Math.round(2*c)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE],a.style.endWidth=a.style.startWidth);mxEvent.isAltDown(k.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(a.style.startWidth)- -parseFloat(a.style.endWidth))<b&&(a.style.startWidth=a.style.endWidth))})));mxUtils.getValue(a.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(ha(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,f){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(f+a.shape.strokewidth* +parseFloat(a.style.endWidth))<b&&(a.style.startWidth=a.style.endWidth))})));mxUtils.getValue(a.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(ka(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,f){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(f+a.shape.strokewidth* a.view.scale)+c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*c)/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))< -b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE])})),c.push(ha(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,f){b=(a.shape.getEndArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)+c*b/2)},function(c,d,e,f,g,h,k){c= +b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE])})),c.push(ka(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,f){b=(a.shape.getEndArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)+c*b/2)},function(c,d,e,f,g,h,k){c= Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.endWidth=Math.max(0,Math.round(2*c)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE],a.style.startWidth=a.style.endWidth);mxEvent.isAltDown(k.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])- parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(a.style.endWidth)-parseFloat(a.style.startWidth))<b&&(a.style.endWidth=a.style.startWidth))})));return c},swimlane:function(a){var b=[ba(a,[mxConstants.STYLE_STARTSIZE],function(b){var c=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(b.getCenterX(), -b.y+Math.max(0,Math.min(b.height,c))):new mxPoint(b.x+Math.max(0,Math.min(b.width,c)),b.getCenterY())},function(b,c){a.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(b.height,c.y-b.y))):Math.round(Math.max(0,Math.min(b.width,c.x-b.x)))})];if(mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED)){var c=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));b.push(ia(a,c/2))}return b}, -label:qa(),ext:qa(),rectangle:qa(),triangle:qa(),rhombus:qa(),umlLifeline:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",K.prototype.size))));return new mxPoint(a.getCenterX(),a.y+b)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},umlFrame:function(a){return[ba(a,["width","height"],function(a){var b=Math.max(H.prototype.corner,Math.min(a.width,mxUtils.getValue(this.state.style, -"width",H.prototype.width))),c=Math.max(1.5*H.prototype.corner,Math.min(a.height,mxUtils.getValue(this.state.style,"height",H.prototype.height)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.width=Math.round(Math.max(H.prototype.corner,Math.min(a.width,b.x-a.x)));this.state.style.height=Math.round(Math.max(1.5*H.prototype.corner,Math.min(a.height,b.y-a.y)))},!1)]},process:function(a){var b=[ba(a,["size"],function(a){var b=Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.state.style, -"size",t.prototype.size))));return new mxPoint(a.x+a.width*b,a.y+a.height/4)},function(a,b){this.state.style.size=Math.max(0,Math.min(.5,(b.x-a.x)/a.width))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ia(a));return b},cross:function(a){return[ba(a,["size"],function(a){var b=Math.min(a.width,a.height),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",na.prototype.size)))*b/2;return new mxPoint(a.getCenterX()-b,a.getCenterY()-b)},function(a,b){var c=Math.min(a.width, +b.y+Math.max(0,Math.min(b.height,c))):new mxPoint(b.x+Math.max(0,Math.min(b.width,c)),b.getCenterY())},function(b,c){a.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(b.height,c.y-b.y))):Math.round(Math.max(0,Math.min(b.width,c.x-b.x)))})];if(mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED)){var c=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));b.push(ja(a,c/2))}return b}, +label:qa(),ext:qa(),rectangle:qa(),triangle:qa(),rhombus:qa(),umlLifeline:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",K.prototype.size))));return new mxPoint(a.getCenterX(),a.y+b)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},umlFrame:function(a){return[ba(a,["width","height"],function(a){var b=Math.max(I.prototype.corner,Math.min(a.width,mxUtils.getValue(this.state.style, +"width",I.prototype.width))),c=Math.max(1.5*I.prototype.corner,Math.min(a.height,mxUtils.getValue(this.state.style,"height",I.prototype.height)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.width=Math.round(Math.max(I.prototype.corner,Math.min(a.width,b.x-a.x)));this.state.style.height=Math.round(Math.max(1.5*I.prototype.corner,Math.min(a.height,b.y-a.y)))},!1)]},process:function(a){var b=[ba(a,["size"],function(a){var b=Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.state.style, +"size",t.prototype.size))));return new mxPoint(a.x+a.width*b,a.y+a.height/4)},function(a,b){this.state.style.size=Math.max(0,Math.min(.5,(b.x-a.x)/a.width))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ja(a));return b},cross:function(a){return[ba(a,["size"],function(a){var b=Math.min(a.width,a.height),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",na.prototype.size)))*b/2;return new mxPoint(a.getCenterX()-b,a.getCenterY()-b)},function(a,b){var c=Math.min(a.width, a.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,a.getCenterY()-b.y)/c*2,Math.max(0,a.getCenterX()-b.x)/c*2)))})]},note:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(a.width,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",e.prototype.size)))));return new mxPoint(a.x+a.width-b,a.y+b)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(a.width,a.x+a.width-b.x),Math.min(a.height,b.y-a.y))))})]},manualInput:function(a){var b= -[ba(a,["size"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",N.prototype.size)));return new mxPoint(a.x+a.width/4,a.y+3*b/4)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,4*(b.y-a.y)/3)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ia(a));return b},dataStorage:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",T.prototype.size)))); -return new mxPoint(a.x+(1-b)*a.width,a.getCenterY())},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.x+a.width-b.x)/a.width))})]},callout:function(a){var b=[ba(a,["size","position"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",w.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",w.prototype.position)));mxUtils.getValue(this.state.style,"base",w.prototype.base);return new mxPoint(a.x+c*a.width,a.y+a.height- -b)},function(a,b){mxUtils.getValue(this.state.style,"base",w.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(a.height,a.y+a.height-b.y)));this.state.style.position=Math.round(100*Math.max(0,Math.min(1,(b.x-a.x)/a.width)))/100}),ba(a,["position2"],function(a){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",w.prototype.position2)));return new mxPoint(a.x+b*a.width,a.y+a.height)},function(a,b){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1, -(b.x-a.x)/a.width)))/100}),ba(a,["base"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",w.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",w.prototype.position))),d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"base",w.prototype.base)));return new mxPoint(a.x+Math.min(a.width,c*a.width+d),a.y+a.height-b)},function(a,b){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",w.prototype.position))); -this.state.style.base=Math.round(Math.max(0,Math.min(a.width,b.x-a.x-c*a.width)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ia(a));return b},internalStorage:function(a){var b=[ba(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",I.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",I.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width, -b.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ia(a));return b},corner:function(a){return[ba(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",M.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",M.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width, +[ba(a,["size"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",N.prototype.size)));return new mxPoint(a.x+a.width/4,a.y+3*b/4)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,4*(b.y-a.y)/3)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ja(a));return b},dataStorage:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",T.prototype.size)))); +return new mxPoint(a.x+(1-b)*a.width,a.getCenterY())},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.x+a.width-b.x)/a.width))})]},callout:function(a){var b=[ba(a,["size","position"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",x.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",x.prototype.position)));mxUtils.getValue(this.state.style,"base",x.prototype.base);return new mxPoint(a.x+c*a.width,a.y+a.height- +b)},function(a,b){mxUtils.getValue(this.state.style,"base",x.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(a.height,a.y+a.height-b.y)));this.state.style.position=Math.round(100*Math.max(0,Math.min(1,(b.x-a.x)/a.width)))/100}),ba(a,["position2"],function(a){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",x.prototype.position2)));return new mxPoint(a.x+b*a.width,a.y+a.height)},function(a,b){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1, +(b.x-a.x)/a.width)))/100}),ba(a,["base"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",x.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",x.prototype.position))),d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"base",x.prototype.base)));return new mxPoint(a.x+Math.min(a.width,c*a.width+d),a.y+a.height-b)},function(a,b){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",x.prototype.position))); +this.state.style.base=Math.round(Math.max(0,Math.min(a.width,b.x-a.x-c*a.width)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ja(a));return b},internalStorage:function(a){var b=[ba(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",J.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",J.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width, +b.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ja(a));return b},corner:function(a){return[ba(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",M.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",M.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width, b.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})]},tee:function(a){return[ba(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",ea.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",ea.prototype.dy)));return new mxPoint(a.x+(a.width+b)/2,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,2*Math.min(a.width/2,b.x-a.x-a.width/2)));this.state.style.dy=Math.round(Math.max(0, -Math.min(a.height,b.y-a.y)))})]},singleArrow:ja(1),doubleArrow:ja(.5),folder:function(a){return[ba(a,["tabWidth","tabHeight"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"tabWidth",g.prototype.tabWidth))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"tabHeight",g.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",g.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(b=a.width-b);return new mxPoint(a.x+b,a.y+c)},function(a,b){var c= +Math.min(a.height,b.y-a.y)))})]},singleArrow:ia(1),doubleArrow:ia(.5),folder:function(a){return[ba(a,["tabWidth","tabHeight"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"tabWidth",g.prototype.tabWidth))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"tabHeight",g.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",g.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(b=a.width-b);return new mxPoint(a.x+b,a.y+c)},function(a,b){var c= Math.max(0,Math.min(a.width,b.x-a.x));mxUtils.getValue(this.state.style,"tabPosition",g.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(c=a.width-c);this.state.style.tabWidth=Math.round(c);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})]},document:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",l.prototype.size))));return new mxPoint(a.x+3*a.width/4,a.y+(1-b)*a.height)},function(a,b){this.state.style.size= Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))})]},tape:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",k.prototype.size))));return new mxPoint(a.getCenterX(),a.y+b*a.height/2)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(b.y-a.y)/a.height*2))})]},offPageConnector:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",fa.prototype.size)))); -return new mxPoint(a.getCenterX(),a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))})]},step:ta(x.prototype.size,!0,null,!0,x.prototype.fixedSize),hexagon:ta(y.prototype.size,!0,.5,!0),curlyBracket:ta(p.prototype.size,!1),display:ta(oa.prototype.size,!1),cube:Ca(1,a.prototype.size,!1),card:Ca(.5,h.prototype.size,!0),loopLimit:Ca(.5,R.prototype.size,!0),trapezoid:Ga(.5),parallelogram:Ga(1)};Graph.createHandle=ba;Graph.handleFactory=ua;mxVertexHandler.prototype.createCustomHandles= +return new mxPoint(a.getCenterX(),a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))})]},step:ta(w.prototype.size,!0,null,!0,w.prototype.fixedSize),hexagon:ta(y.prototype.size,!0,.5,!0),curlyBracket:ta(p.prototype.size,!1),display:ta(oa.prototype.size,!1),cube:Ca(1,a.prototype.size,!1),card:Ca(.5,h.prototype.size,!0),loopLimit:Ca(.5,R.prototype.size,!0),trapezoid:Ga(.5),parallelogram:Ga(1)};Graph.createHandle=ba;Graph.handleFactory=ua;mxVertexHandler.prototype.createCustomHandles= function(){if(1==this.state.view.graph.getSelectionCount()&&this.graph.isCellRotatable(this.state.cell)){var a=this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_RECTANGLE);a=ua[a];null==a&&null!=this.state.shape&&this.state.shape.isRoundable()&&(a=ua[mxConstants.SHAPE_RECTANGLE]);if(null!=a)return a(this.state)}return null};mxEdgeHandler.prototype.createCustomHandles=function(){if(1==this.state.view.graph.getSelectionCount()){var a= -this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_CONNECTOR);a=ua[a];if(null!=a)return a(this.state)}return null}}else Graph.createHandle=function(){},Graph.handleFactory={};var va=new mxPoint(1,0),wa=new mxPoint(1,0),ja=mxUtils.toRadians(-30),va=mxUtils.getRotatedPoint(va,Math.cos(ja),Math.sin(ja)),ja=mxUtils.toRadians(-150),wa=mxUtils.getRotatedPoint(wa,Math.cos(ja),Math.sin(ja));mxEdgeStyle.IsometricConnector=function(a,b, +this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_CONNECTOR);a=ua[a];if(null!=a)return a(this.state)}return null}}else Graph.createHandle=function(){},Graph.handleFactory={};var va=new mxPoint(1,0),wa=new mxPoint(1,0),ia=mxUtils.toRadians(-30),va=mxUtils.getRotatedPoint(va,Math.cos(ia),Math.sin(ia)),ia=mxUtils.toRadians(-150),wa=mxUtils.getRotatedPoint(wa,Math.cos(ia),Math.sin(ia));mxEdgeStyle.IsometricConnector=function(a,b, c,d,e){var f=a.view;d=null!=d&&0<d.length?d[0]:null;var g=a.absolutePoints,h=g[0],g=g[g.length-1];null!=d&&(d=f.transformControlPoint(a,d));null==h&&null!=b&&(h=new mxPoint(b.getCenterX(),b.getCenterY()));null==g&&null!=c&&(g=new mxPoint(c.getCenterX(),c.getCenterY()));var k=va.x,l=va.y,m=wa.x,n=wa.y,p="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!=g&&null!=h){a=function(a,b,c){a-=q.x;var d=b-q.y;b=(n*a-m*d)/(k*n-l*m);a=(l*a-k*d)/(l*m-k*n);p?(c&&(q=new mxPoint(q.x+k*b,q.y+l* b),e.push(q)),q=new mxPoint(q.x+m*a,q.y+n*a)):(c&&(q=new mxPoint(q.x+m*a,q.y+n*a),e.push(q)),q=new mxPoint(q.x+k*b,q.y+l*b));e.push(q)};var q=h;null==d&&(d=new mxPoint(h.x+(g.x-h.x)/2,h.y+(g.y-h.y)/2));a(d.x,d.y,!0);a(g.x,g.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var Ma=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(a,b){if(b==mxEdgeStyle.IsometricConnector){var c=new mxElbowEdgeHandler(a);c.snapToTerminals=!1;return c}return Ma.apply(this, arguments)};b.prototype.constraints=[];c.prototype.getConstraints=function(a,b,c){a=[];var d=Math.tan(mxUtils.toRadians(30)),e=(.5-d)/2,d=Math.min(b,c/(.5+d));b=(b-d)/2;c=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,c+.25*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+.5*d,c+d*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+d,c+.25*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+d,c+.75*d));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,b+.5*d,c+(1-e)*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,c+.75*d));return a};w.prototype.getConstraints=function(a,b,c){a=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",this.position));var e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2))));parseFloat(mxUtils.getValue(this.style, +0),!1,null,b+.5*d,c+(1-e)*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,c+.75*d));return a};x.prototype.getConstraints=function(a,b,c){a=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",this.position));var e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2))));parseFloat(mxUtils.getValue(this.style, "base",this.base));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*(c-d)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null, e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(c-d)));b>=2*d&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5), !0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxEllipse.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(0, @@ -1925,35 +1927,38 @@ e.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,Math 0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(c+d)));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(1, 1),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b>=2*d&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};a.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0));a.push(new mxConnectionConstraint(new mxPoint(0, 0),!1,null,b-.5*d,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*(c+d)));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,c-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-d));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,0,.5*(c-d)));return a};g.prototype.constraints=mxRectangleShape.prototype.constraints;I.prototype.constraints=mxRectangleShape.prototype.constraints;T.prototype.constraints=mxRectangleShape.prototype.constraints;X.prototype.constraints=mxEllipse.prototype.constraints;Z.prototype.constraints=mxEllipse.prototype.constraints;ra.prototype.constraints=mxEllipse.prototype.constraints;sa.prototype.constraints=mxEllipse.prototype.constraints;N.prototype.constraints=mxRectangleShape.prototype.constraints; -pa.prototype.constraints=mxRectangleShape.prototype.constraints;oa.prototype.getConstraints=function(a,b,c){a=[];var d=Math.min(b,c/2),e=Math.min(b-d,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*b);a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+b-d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0));a.push(new mxConnectionConstraint(new mxPoint(1, -.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+b-d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));return a};R.prototype.constraints=mxRectangleShape.prototype.constraints;fa.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85, -.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];E.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25, -.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,.1),!1),new mxConnectionConstraint(new mxPoint(0,1/3),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(1,1/3),!1),new mxConnectionConstraint(new mxPoint(1,1),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1)];v.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75, -0),!0),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxActor.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.25, -.2),!1),new mxConnectionConstraint(new mxPoint(.1,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.75,.25),!1),new mxConnectionConstraint(new mxPoint(.9,.5),!1),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];f.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(.5, -.25),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5,.75),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];k.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.35),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.65),!1),new mxConnectionConstraint(new mxPoint(1, -.35),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,.65),!1),new mxConnectionConstraint(new mxPoint(.25,1),!1),new mxConnectionConstraint(new mxPoint(.75,0),!1)];x.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75, -1),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxLine.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1, -.5),!1)];V.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1)];mxDoubleEllipse.prototype.constraints=mxEllipse.prototype.constraints;mxRhombus.prototype.constraints=mxEllipse.prototype.constraints;mxTriangle.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5, -1),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0)];mxHexagon.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.375,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.625,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1, -.75),!0),new mxConnectionConstraint(new mxPoint(.375,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.625,1),!0)];mxCloud.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.25),!1),new mxConnectionConstraint(new mxPoint(.4,.1),!1),new mxConnectionConstraint(new mxPoint(.16,.55),!1),new mxConnectionConstraint(new mxPoint(.07,.4),!1),new mxConnectionConstraint(new mxPoint(.31,.8),!1),new mxConnectionConstraint(new mxPoint(.13,.77),!1),new mxConnectionConstraint(new mxPoint(.8, -.8),!1),new mxConnectionConstraint(new mxPoint(.55,.95),!1),new mxConnectionConstraint(new mxPoint(.875,.5),!1),new mxConnectionConstraint(new mxPoint(.96,.7),!1),new mxConnectionConstraint(new mxPoint(.625,.2),!1),new mxConnectionConstraint(new mxPoint(.88,.25),!1)];m.prototype.constraints=mxRectangleShape.prototype.constraints;n.prototype.constraints=mxRectangleShape.prototype.constraints;l.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5, -0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;ea.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style, -"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*b+.25*d,e));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,.5*(b+d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),c));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),e));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,.25*b-.25*d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*e));return a};M.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1, -0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,c));a.push(new mxConnectionConstraint(new mxPoint(0, -.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));return a};aa.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1, -1),!1)];S.prototype.getConstraints=function(a,b,c){a=[];var d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize)))),d=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-e),d));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,b-e,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-e),c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-d));return a};Q.prototype.getConstraints=function(a,b,c){a=[];var d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",S.prototype.arrowWidth)))),e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style, -"arrowSize",S.prototype.arrowSize)))),d=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*b,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*b,c-d));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,e,c));return a};na.prototype.getConstraints=function(a,b,c){a=[];var d=Math.min(c,b),e=Math.max(0,Math.min(d,d*parseFloat(mxUtils.getValue(this.style,"size",this.size)))),d=(c-e)/2,f=d+e,g=(b-e)/2,e=g+e;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,0));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,e,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,c-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,c));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,f));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,.5*(b+e),d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,d));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+e),f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0, -.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,d));return a};K.prototype.constraints=null;Y.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7, -.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];O.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.175,.25),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.175,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];ca.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1, -.5),!1)];W.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)]})(); +0),!1,null,0,.5*(c-d)));return a};g.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(a.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,0)),a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,d,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),e))):(a.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-.5*d,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,e)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),e)));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.25*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.75*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null, +0,.5*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.75*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return a};J.prototype.constraints=mxRectangleShape.prototype.constraints;T.prototype.constraints=mxRectangleShape.prototype.constraints;X.prototype.constraints=mxEllipse.prototype.constraints; +Y.prototype.constraints=mxEllipse.prototype.constraints;ra.prototype.constraints=mxEllipse.prototype.constraints;sa.prototype.constraints=mxEllipse.prototype.constraints;N.prototype.constraints=mxRectangleShape.prototype.constraints;pa.prototype.constraints=mxRectangleShape.prototype.constraints;oa.prototype.getConstraints=function(a,b,c){a=[];var d=Math.min(b,c/2),e=Math.min(b-d,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*b);a.push(new mxConnectionConstraint(new mxPoint(0, +.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+b-d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+b-d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));return a};R.prototype.constraints= +mxRectangleShape.prototype.constraints;fa.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1, +.5),!0),new mxConnectionConstraint(new mxPoint(1,.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];E.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,.1),!1),new mxConnectionConstraint(new mxPoint(0,1/3),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(1, +1/3),!1),new mxConnectionConstraint(new mxPoint(1,1),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1)];v.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1, +.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxActor.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.25,.2),!1),new mxConnectionConstraint(new mxPoint(.1,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.75,.25),!1),new mxConnectionConstraint(new mxPoint(.9,.5),!1),new mxConnectionConstraint(new mxPoint(1, +.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];f.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(.5,.25),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5, +.75),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];k.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.35),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.65),!1),new mxConnectionConstraint(new mxPoint(1,.35),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,.65),!1),new mxConnectionConstraint(new mxPoint(.25,1),!1),new mxConnectionConstraint(new mxPoint(.75,0),!1)];w.prototype.constraints= +[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1, +.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxLine.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];V.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1)];mxDoubleEllipse.prototype.constraints=mxEllipse.prototype.constraints;mxRhombus.prototype.constraints= +mxEllipse.prototype.constraints;mxTriangle.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0)];mxHexagon.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.375,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.625, +0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.375,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.625,1),!0)];mxCloud.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25, +.25),!1),new mxConnectionConstraint(new mxPoint(.4,.1),!1),new mxConnectionConstraint(new mxPoint(.16,.55),!1),new mxConnectionConstraint(new mxPoint(.07,.4),!1),new mxConnectionConstraint(new mxPoint(.31,.8),!1),new mxConnectionConstraint(new mxPoint(.13,.77),!1),new mxConnectionConstraint(new mxPoint(.8,.8),!1),new mxConnectionConstraint(new mxPoint(.55,.95),!1),new mxConnectionConstraint(new mxPoint(.875,.5),!1),new mxConnectionConstraint(new mxPoint(.96,.7),!1),new mxConnectionConstraint(new mxPoint(.625, +.2),!1),new mxConnectionConstraint(new mxPoint(.88,.25),!1)];m.prototype.constraints=mxRectangleShape.prototype.constraints;n.prototype.constraints=mxRectangleShape.prototype.constraints;l.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0, +.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;ea.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5, +0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*b+.25*d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),c));a.push(new mxConnectionConstraint(new mxPoint(.5, +1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*b-.25*d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*e));return a};M.prototype.getConstraints=function(a,b,c){a=[];var d= +Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,.5*(b+d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,c));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));return a};aa.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0, +.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];S.prototype.getConstraints=function(a,b,c){a=[];var d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))), +e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize)))),d=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-e),d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,c));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,.5*(b-e),c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-d));return a};P.prototype.getConstraints=function(a,b,c){a=[];var d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",S.prototype.arrowWidth)))),e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",S.prototype.arrowSize)))),d=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,.5*b,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*b,c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));return a};na.prototype.getConstraints=function(a,b,c){a=[];var d=Math.min(c,b),e=Math.max(0,Math.min(d,d*parseFloat(mxUtils.getValue(this.style,"size",this.size)))), +d=(c-e)/2,f=d+e,g=(b-e)/2,e=g+e;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,0));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,c-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,g,c));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+e),d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,d));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,b,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+e),f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,f));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,g,d));return a};K.prototype.constraints=null;Z.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];O.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.175,.25),!1),new mxConnectionConstraint(new mxPoint(.25, +.5),!1),new mxConnectionConstraint(new mxPoint(.175,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];ca.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];W.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)]})(); (function(x,r){function N(){if(!t){t=!0;window.MathJax={skipStartupTypeset:!0,showMathMenu:!1,messageStyle:"none",AuthorInit:function(){MathJax.Hub.Config({jax:["input/TeX","input/MathML","input/AsciiMath","output/HTML-CSS"],extensions:["tex2jax.js","mml2jax.js","asciimath2jax.js"],"HTML-CSS":{imageFont:null},TeX:{extensions:["AMSmath.js","AMSsymbols.js","noErrors.js","noUndefined.js"]}});MathJax.Hub.Register.StartupHook("Begin",function(){for(var a=0;a<p.length;a++)MathJax.Hub.Queue(["Typeset",MathJax.Hub, p[a]])})}};var a=document.createElement("script");a.type="text/javascript";a.src="https://math.draw.io/current/MathJax.js?config=TeX-MML-AM_HTMLorMML";document.getElementsByTagName("head")[0].appendChild(a)}}function O(a){"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?MathJax.Hub.Queue(["Typeset",MathJax.Hub,a.container]):p.push(a.container);a.addListener(mxEvent.SIZE,function(e,m){"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub&&MathJax.Hub.Queue(["Typeset",MathJax.Hub, a.container])})}mxStencilRegistry.dynamicLoading=!1;try{var e=document.createElement("style");e.type="text/css";e.innerHTML="div.mxTooltip {\n-webkit-box-shadow: 3px 3px 12px #C0C0C0;\n-moz-box-shadow: 3px 3px 12px #C0C0C0;\nbox-shadow: 3px 3px 12px #C0C0C0;\nbackground: #FFFFCC;\nborder-style: solid;\nborder-width: 1px;\nborder-color: black;\nfont-family: Arial;\nfont-size: 8pt;\nposition: absolute;\ncursor: default;\npadding: 4px;\ncolor: black;}";document.getElementsByTagName("head")[0].appendChild(e)}catch(a){}var G= diff --git a/src/main/webapp/js/mxgraph/Actions.js b/src/main/webapp/js/mxgraph/Actions.js index 70a4766e..aaef6d2a 100644 --- a/src/main/webapp/js/mxgraph/Actions.js +++ b/src/main/webapp/js/mxgraph/Actions.js @@ -444,7 +444,6 @@ Actions.prototype.init = function() { if (links[i].textContent == elt.textContent) { - graph.selectNode(links[i]); link = links[i]; } } @@ -453,6 +452,7 @@ Actions.prototype.init = function() if (link != null && link.nodeName == 'A') { oldValue = link.getAttribute('href') || ''; + graph.selectNode(link); } var selState = graph.cellEditor.saveSelection(); diff --git a/src/main/webapp/js/mxgraph/Dialogs.js b/src/main/webapp/js/mxgraph/Dialogs.js index 49becf91..a17a1529 100644 --- a/src/main/webapp/js/mxgraph/Dialogs.js +++ b/src/main/webapp/js/mxgraph/Dialogs.js @@ -426,51 +426,55 @@ var FilenameDialog = function(editorUi, filename, buttonText, fn, label, validat { // Setup the dnd listeners var dlg = table.parentNode; - var graph = editorUi.editor.graph; - var dropElt = null; - - mxEvent.addListener(dlg, 'dragleave', function(evt) - { - if (dropElt != null) - { - dropElt.style.backgroundColor = ''; - dropElt = null; - } - - evt.stopPropagation(); - evt.preventDefault(); - }); - mxEvent.addListener(dlg, 'dragover', mxUtils.bind(this, function(evt) + if (dlg != null) { - // IE 10 does not implement pointer-events so it can't have a drop highlight - if (dropElt == null && (!mxClient.IS_IE || document.documentMode > 10)) + var graph = editorUi.editor.graph; + var dropElt = null; + + mxEvent.addListener(dlg, 'dragleave', function(evt) { - dropElt = nameInput; - dropElt.style.backgroundColor = '#ebf2f9'; - } + if (dropElt != null) + { + dropElt.style.backgroundColor = ''; + dropElt = null; + } + + evt.stopPropagation(); + evt.preventDefault(); + }); - evt.stopPropagation(); - evt.preventDefault(); - })); + mxEvent.addListener(dlg, 'dragover', mxUtils.bind(this, function(evt) + { + // IE 10 does not implement pointer-events so it can't have a drop highlight + if (dropElt == null && (!mxClient.IS_IE || document.documentMode > 10)) + { + dropElt = nameInput; + dropElt.style.backgroundColor = '#ebf2f9'; + } - mxEvent.addListener(dlg, 'drop', mxUtils.bind(this, function(evt) - { - if (dropElt != null) - { - dropElt.style.backgroundColor = ''; - dropElt = null; - } - - if (mxUtils.indexOf(evt.dataTransfer.types, 'text/uri-list') >= 0) - { - nameInput.value = decodeURIComponent(evt.dataTransfer.getData('text/uri-list')); - genericBtn.click(); - } - - evt.stopPropagation(); - evt.preventDefault(); - })); + evt.stopPropagation(); + evt.preventDefault(); + })); + + mxEvent.addListener(dlg, 'drop', mxUtils.bind(this, function(evt) + { + if (dropElt != null) + { + dropElt.style.backgroundColor = ''; + dropElt = null; + } + + if (mxUtils.indexOf(evt.dataTransfer.types, 'text/uri-list') >= 0) + { + nameInput.value = decodeURIComponent(evt.dataTransfer.getData('text/uri-list')); + genericBtn.click(); + } + + evt.stopPropagation(); + evt.preventDefault(); + })); + } } }; @@ -1330,7 +1334,8 @@ var EditDataDialog = function(ui, cell) var texts = []; var count = 0; - var id = EditDataDialog.getDisplayIdForCell(ui, cell); + var id = (EditDataDialog.getDisplayIdForCell != null) ? + EditDataDialog.getDisplayIdForCell(ui, cell) : null; // FIXME: Fix remove button for quirks mode var addRemoveButton = function(text, name) @@ -1822,8 +1827,8 @@ var OutlineWindow = function(editorUi, x, y, w, h) this.window.setLocation = function(x, y) { - var iw = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; - var ih = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; + var iw = window.innerWidth || document.body.clientWidth || document.documentElement.clientWidth; + var ih = window.innerHeight || document.body.clientHeight || document.documentElement.clientHeight; x = Math.max(0, Math.min(x, iw - this.table.clientWidth)); y = Math.max(0, Math.min(y, ih - this.table.clientHeight - 48)); @@ -1971,7 +1976,6 @@ var OutlineWindow = function(editorUi, x, y, w, h) */ var LayersWindow = function(editorUi, x, y, w, h) { - console.log('dialog.bg', Dialog.backdropColor); var graph = editorUi.editor.graph; var div = document.createElement('div'); @@ -2510,8 +2514,8 @@ var LayersWindow = function(editorUi, x, y, w, h) this.window.setLocation = function(x, y) { - var iw = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; - var ih = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; + var iw = window.innerWidth || document.body.clientWidth || document.documentElement.clientWidth; + var ih = window.innerHeight || document.body.clientHeight || document.documentElement.clientHeight; x = Math.max(0, Math.min(x, iw - this.table.clientWidth)); y = Math.max(0, Math.min(y, ih - this.table.clientHeight - 48)); diff --git a/src/main/webapp/js/mxgraph/Editor.js b/src/main/webapp/js/mxgraph/Editor.js index 2951f79a..5e1f96f2 100644 --- a/src/main/webapp/js/mxgraph/Editor.js +++ b/src/main/webapp/js/mxgraph/Editor.js @@ -276,6 +276,11 @@ Editor.prototype.appName = document.title; Editor.prototype.editBlankUrl = window.location.protocol + '//' + window.location.host + '/'; /** + * Default value for the graph container overflow style. + */ +Editor.prototype.defaultGraphOverflow = 'hidden'; + +/** * Initializes the environment. */ Editor.prototype.init = function() { }; @@ -575,7 +580,7 @@ Editor.prototype.updateGraphComponents = function() if (graph.container != null) { graph.view.validateBackground(); - graph.container.style.overflow = (graph.scrollbars) ? 'auto' : 'hidden'; + graph.container.style.overflow = (graph.scrollbars) ? 'auto' : this.defaultGraphOverflow; this.fireEvent(new mxEventObject('updateGraphComponents')); } @@ -743,9 +748,9 @@ function Dialog(editorUi, elt, w, h, modal, closable, onClose, noScroll, transpa var h0 = h; // clientHeight check is attempted fix for print dialog offset in viewer lightbox - var dh = (document.documentElement.clientHeight > 0) ? document.documentElement.clientHeight : - Math.max(document.body.clientHeight || 0, document.documentElement.clientHeight); - var left = Math.max(1, Math.round((document.body.clientWidth - w - 64) / 2)); + var ds = mxUtils.getDocumentSize(); + var dh = ds.height; + var left = Math.max(1, Math.round((ds.width - w - 64) / 2)); var top = Math.max(1, Math.round((dh - h - editorUi.footerHeight) / 3)); // Keeps window size inside available space @@ -754,7 +759,7 @@ function Dialog(editorUi, elt, w, h, modal, closable, onClose, noScroll, transpa elt.style.maxHeight = '100%'; } - w = Math.min(w, document.body.scrollWidth - 64); + w = (document.body != null) ? Math.min(w, document.body.scrollWidth - 64) : w; h = Math.min(h, dh - 64); // Increments zIndex to put subdialogs and background over existing dialogs and background @@ -849,12 +854,13 @@ function Dialog(editorUi, elt, w, h, modal, closable, onClose, noScroll, transpa } } - dh = Math.max(document.body.clientHeight, document.documentElement.clientHeight); + var ds = mxUtils.getDocumentSize(); + dh = ds.height; this.bg.style.height = dh + 'px'; - left = Math.max(1, Math.round((document.body.clientWidth - w - 64) / 2)); + left = Math.max(1, Math.round((ds.width - w - 64) / 2)); top = Math.max(1, Math.round((dh - h - editorUi.footerHeight) / 3)); - w = Math.min(w0, document.body.scrollWidth - 64); + w = (document.body != null) ? Math.min(w0, document.body.scrollWidth - 64) : w0; h = Math.min(h0, dh - 64); var pos = this.getPosition(left, top, w, h); diff --git a/src/main/webapp/js/mxgraph/EditorUi.js b/src/main/webapp/js/mxgraph/EditorUi.js index cdb66d19..28237291 100644 --- a/src/main/webapp/js/mxgraph/EditorUi.js +++ b/src/main/webapp/js/mxgraph/EditorUi.js @@ -63,7 +63,7 @@ EditorUi = function(editor, container, lightbox) evt = window.event; } - return (this.isSelectionAllowed(evt) || graph.isEditing()); + return graph.isEditing() || (evt != null && this.isSelectionAllowed(evt)); }); // Disables text selection while not editing and no dialog visible @@ -95,18 +95,21 @@ EditorUi = function(editor, container, lightbox) // Allows context menu for links in hints var linkHandler = function(evt) { - var source = mxEvent.getSource(evt); - - if (source.nodeName == 'A') + if (evt != null) { - while (source != null) + var source = mxEvent.getSource(evt); + + if (source.nodeName == 'A') { - if (source.className == 'geHint') + while (source != null) { - return true; + if (source.className == 'geHint') + { + return true; + } + + source = source.parentNode; } - - source = source.parentNode; } } @@ -2114,11 +2117,14 @@ EditorUi.prototype.addChromelessClickHandler = function() */ EditorUi.prototype.toggleFormatPanel = function(forceHide) { - this.formatWidth = (forceHide || this.formatWidth > 0) ? 0 : 240; - this.formatContainer.style.display = (forceHide || this.formatWidth > 0) ? '' : 'none'; - this.refresh(); - this.format.refresh(); - this.fireEvent(new mxEventObject('formatWidthChanged')); + if (this.format != null) + { + this.formatWidth = (forceHide || this.formatWidth > 0) ? 0 : 240; + this.formatContainer.style.display = (forceHide || this.formatWidth > 0) ? '' : 'none'; + this.refresh(); + this.format.refresh(); + this.fireEvent(new mxEventObject('formatWidthChanged')); + } }; /** diff --git a/src/main/webapp/js/mxgraph/Format.js b/src/main/webapp/js/mxgraph/Format.js index 8f3bf023..3150a7eb 100644 --- a/src/main/webapp/js/mxgraph/Format.js +++ b/src/main/webapp/js/mxgraph/Format.js @@ -2563,7 +2563,7 @@ TextFormatPanel.prototype.addFont = function(container) // TODO: Add translations and toggle state if (graph.cellEditor.isContentEditing()) { - var strike = this.editorUi.toolbar.addButton('geSprite-removeformat', null, + var strike = this.editorUi.toolbar.addButton('geSprite-removeformat', mxResources.get('strikethrough'), function() { document.execCommand('strikeThrough', false, null); @@ -2604,7 +2604,7 @@ TextFormatPanel.prototype.addFont = function(container) bottom.style.display = 'none'; verticalItem.style.display = 'none'; - full = this.editorUi.toolbar.addButton('geSprite-justifyfull', null, + full = this.editorUi.toolbar.addButton('geSprite-justifyfull', mxResources.get('block'), function() { document.execCommand('justifyfull', false, null); @@ -2854,7 +2854,7 @@ TextFormatPanel.prototype.addFont = function(container) container = container.parentNode; } - if (container.nodeType == mxConstants.NODETYPE_ELEMENT) + if (container != null && container.nodeType == mxConstants.NODETYPE_ELEMENT) { var elts = container.getElementsByTagName('*'); updateSize(container); diff --git a/src/main/webapp/js/mxgraph/Graph.js b/src/main/webapp/js/mxgraph/Graph.js index 73142115..ec9d5f81 100644 --- a/src/main/webapp/js/mxgraph/Graph.js +++ b/src/main/webapp/js/mxgraph/Graph.js @@ -115,7 +115,7 @@ Graph = function(container, model, renderHint, stylesheet, themes) var state = this.view.getState(cell); var style = (state != null) ? state.style : this.getCellStyle(cell); - return style['html'] == '1' || style[mxConstants.STYLE_WHITE_SPACE] == 'wrap'; + return (style != null) ? (style['html'] == '1' || style[mxConstants.STYLE_WHITE_SPACE] == 'wrap') : false; }; // Implements a listener for hover and click handling on edges @@ -1493,9 +1493,16 @@ Graph.prototype.openLink = function(href, target, allowOpener) { result = window.open(href, target); - if (result != null && !allowOpener) + try + { + if (result != null && !allowOpener) + { + result.opener = null; + } + } + catch (e) { - result.opener = null; + // ignores permission denied } } } @@ -2153,7 +2160,7 @@ Graph.prototype.connectVertex = function(source, direction, length, evt, forceCl var dx = t.x * s; var dy = t.y * s; - if (this.model.isVertex(parentState.cell)) + if (parentState != null && this.model.isVertex(parentState.cell)) { dx = parentState.x; dy = parentState.y; @@ -2687,7 +2694,7 @@ Graph.prototype.isCellConnectable = function(cell) var state = this.view.getState(cell); var style = (state != null) ? state.style : this.getCellStyle(cell); - return (style['connectable'] != null) ? style['connectable'] != '0' : + return (style != null && style['connectable'] != null) ? style['connectable'] != '0' : mxGraph.prototype.isCellConnectable.apply(this, arguments); }; @@ -3750,24 +3757,36 @@ HoverIcons.prototype.getState = function(state) { var cell = state.cell; - // Uses connectable parent vertex if child is not connectable - if (this.graph.getModel().isVertex(cell) && !this.graph.isCellConnectable(cell)) + if (!this.graph.getModel().contains(cell)) { - var parent = this.graph.getModel().getParent(cell); + state = null; + } + else + { + // Uses connectable parent vertex if child is not connectable + if (this.graph.getModel().isVertex(cell) && !this.graph.isCellConnectable(cell)) + { + var parent = this.graph.getModel().getParent(cell); + + if (this.graph.getModel().isVertex(parent) && this.graph.isCellConnectable(parent)) + { + cell = parent; + } + } - if (this.graph.getModel().isVertex(parent) && this.graph.isCellConnectable(parent)) + // Ignores locked cells and edges + if (this.graph.isCellLocked(cell) || this.graph.model.isEdge(cell)) { - cell = parent; + cell = null; + } + + state = this.graph.view.getState(cell); + + if (state != null && state.style == null) + { + state = null; } } - - // Ignores locked cells and edges - if (this.graph.isCellLocked(cell) || this.graph.model.isEdge(cell)) - { - cell = null; - } - - state = this.graph.view.getState(cell); } return state; @@ -3902,7 +3921,7 @@ HoverIcons.prototype.setCurrentState = function(state) // Adds to the list of edges that may intersect with later edges if (state != null && this.graph.model.isEdge(state.cell) && - state.style[mxConstants.STYLE_CURVED] != 1) + state.style != null && state.style[mxConstants.STYLE_CURVED] != 1) { // LATER: Reuse jumps for valid edges this.validEdges.push(state); @@ -4885,9 +4904,33 @@ if (typeof mxVertexHandler != 'undefined') { if (terminal != null) { - var constraints = null; + var constraints = mxUtils.getValue(terminal.style, 'points', null); - if (terminal.shape != null) + if (constraints != null) + { + // Requires an array of arrays with x, y (0..1), an optional + // [perimeter (0 or 1), dx, and dy] eg. points=[[0,0,1,-10,10],[0,1,0],[1,1]] + var result = []; + + try + { + var c = JSON.parse(constraints); + + for (var i = 0; i < c.length; i++) + { + var tmp = c[i]; + result.push(new mxConnectionConstraint(new mxPoint(tmp[0], tmp[1]), (tmp.length > 2) ? tmp[2] != '0' : true, + null, (tmp.length > 3) ? tmp[3] : 0, (tmp.length > 4) ? tmp[4] : 0)); + } + } + catch (e) + { + // ignore + } + + return result; + } + else if (terminal.shape != null) { var dir = terminal.shape.direction; var bounds = terminal.shape.bounds; @@ -4902,53 +4945,18 @@ if (typeof mxVertexHandler != 'undefined') } constraints = terminal.shape.getConstraints(terminal.style, w, h); - } - - if (constraints != null) - { - return constraints; - } - else - { - constraints = mxUtils.getValue(terminal.style, 'points', null); if (constraints != null) { - // Requires an array of arrays with x, y (0..1), an optional - // [perimeter (0 or 1), dx, and dy] eg. points=[[0,0,1,-10,10],[0,1,0],[1,1]] - var result = []; - - try - { - var c = JSON.parse(constraints); - - for (var i = 0; i < c.length; i++) - { - var tmp = c[i]; - result.push(new mxConnectionConstraint(new mxPoint(tmp[0], tmp[1]), (tmp.length > 2) ? tmp[2] != '0' : true, - null, (tmp.length > 3) ? tmp[3] : 0, (tmp.length > 4) ? tmp[4] : 0)); - } - } - catch (e) - { - // ignore - } - - return result; + return constraints; } - else if (terminal.shape != null) + else if (terminal.shape.stencil != null && terminal.shape.stencil.constraints != null) { - if (terminal.shape.stencil != null) - { - if (terminal.shape.stencil != null) - { - return terminal.shape.stencil.constraints; - } - } - else if (terminal.shape.constraints != null) - { - return terminal.shape.constraints; - } + return terminal.shape.stencil.constraints; + } + else if (terminal.shape.constraints != null) + { + return terminal.shape.constraints; } } } @@ -5975,7 +5983,7 @@ if (typeof mxVertexHandler != 'undefined') Graph.prototype.insertImage = function(newValue, w, h) { // To find the new image, we create a list of all existing links first - if (newValue != null) + if (newValue != null && this.cellEditor.textarea != null) { var tmp = this.cellEditor.textarea.getElementsByTagName('img'); var oldImages = []; @@ -6015,60 +6023,63 @@ if (typeof mxVertexHandler != 'undefined') */ Graph.prototype.insertLink = function(value) { - if (value.length == 0) - { - document.execCommand('unlink', false); - } - else if (mxClient.IS_FF) + if (this.cellEditor.textarea != null) { - // Workaround for Firefox that adds a new link and removes - // the href from the inner link if its parent is a span is - // to remove all inner links inside the new outer link - var tmp = this.cellEditor.textarea.getElementsByTagName('a'); - var oldLinks = []; - - for (var i = 0; i < tmp.length; i++) + if (value.length == 0) { - oldLinks.push(tmp[i]); + document.execCommand('unlink', false); } - - document.execCommand('createlink', false, mxUtils.trim(value)); - - // Finds the new link element - var newLinks = this.cellEditor.textarea.getElementsByTagName('a'); - - if (newLinks.length == oldLinks.length + 1) + else if (mxClient.IS_FF) { - // Inverse order in favor of appended links - for (var i = newLinks.length - 1; i >= 0; i--) + // Workaround for Firefox that adds a new link and removes + // the href from the inner link if its parent is a span is + // to remove all inner links inside the new outer link + var tmp = this.cellEditor.textarea.getElementsByTagName('a'); + var oldLinks = []; + + for (var i = 0; i < tmp.length; i++) { - if (newLinks[i] != oldLinks[i - 1]) + oldLinks.push(tmp[i]); + } + + document.execCommand('createlink', false, mxUtils.trim(value)); + + // Finds the new link element + var newLinks = this.cellEditor.textarea.getElementsByTagName('a'); + + if (newLinks.length == oldLinks.length + 1) + { + // Inverse order in favor of appended links + for (var i = newLinks.length - 1; i >= 0; i--) { - // Removes all inner links from the new link and - // moves the children to the inner link parent - var tmp = newLinks[i].getElementsByTagName('a'); - - while (tmp.length > 0) + if (newLinks[i] != oldLinks[i - 1]) { - var parent = tmp[0].parentNode; + // Removes all inner links from the new link and + // moves the children to the inner link parent + var tmp = newLinks[i].getElementsByTagName('a'); - while (tmp[0].firstChild != null) + while (tmp.length > 0) { - parent.insertBefore(tmp[0].firstChild, tmp[0]); + var parent = tmp[0].parentNode; + + while (tmp[0].firstChild != null) + { + parent.insertBefore(tmp[0].firstChild, tmp[0]); + } + + parent.removeChild(tmp[0]); } - parent.removeChild(tmp[0]); + break; } - - break; } } } - } - else - { - // LATER: Fix inserting link/image in IE8/quirks after focus lost - document.execCommand('createlink', false, mxUtils.trim(value)); + else + { + // LATER: Fix inserting link/image in IE8/quirks after focus lost + document.execCommand('createlink', false, mxUtils.trim(value)); + } } }; @@ -6299,7 +6310,7 @@ if (typeof mxVertexHandler != 'undefined') // Prepares SVG document that holds the output var svgDoc = mxUtils.createXmlDocument(); var root = (svgDoc.createElementNS != null) ? - svgDoc.createElementNS(mxConstants.NS_SVG, 'svg') : svgDoc.createElement('svg'); + svgDoc.createElementNS(mxConstants.NS_SVG, 'svg') : svgDoc.createElement('svg'); if (background != null) { @@ -6336,7 +6347,11 @@ if (typeof mxVertexHandler != 'undefined') // Renders graph. Offset will be multiplied with state's scale when painting state. // TextOffset only seems to affect FF output but used everywhere for consistency. - var svgCanvas = this.createSvgCanvas(root); + var group = (svgDoc.createElementNS != null) ? + svgDoc.createElementNS(mxConstants.NS_SVG, 'g') : svgDoc.createElement('g'); + root.appendChild(group); + + var svgCanvas = this.createSvgCanvas(group); svgCanvas.foOffset = (crisp) ? -0.5 : 0; svgCanvas.textOffset = (crisp) ? -0.5 : 0; svgCanvas.imageOffset = (crisp) ? -0.5 : 0; @@ -7127,106 +7142,110 @@ if (typeof mxVertexHandler != 'undefined') mxCellEditor.prototype.toggleViewMode = function() { var state = this.graph.view.getState(this.editingCell); - var nl2Br = state != null && mxUtils.getValue(state.style, 'nl2Br', '1') != '0'; - var tmp = this.saveSelection(); - if (!this.codeViewMode) + if (state != null) { - // Clears the initial empty label on the first keystroke - if (this.clearOnChange && this.textarea.innerHTML == this.getEmptyLabelText()) - { - this.clearOnChange = false; - this.textarea.innerHTML = ''; - } + var nl2Br = state != null && mxUtils.getValue(state.style, 'nl2Br', '1') != '0'; + var tmp = this.saveSelection(); - // Removes newlines from HTML and converts breaks to newlines - // to match the HTML output in plain text - var content = mxUtils.htmlEntities(this.textarea.innerHTML); - - // Workaround for trailing line breaks being ignored in the editor - if (!mxClient.IS_QUIRKS && document.documentMode != 8) + if (!this.codeViewMode) { - content = mxUtils.replaceTrailingNewlines(content, '<div><br></div>'); - } - - content = this.graph.sanitizeHtml((nl2Br) ? content.replace(/\n/g, '').replace(/<br\s*.?>/g, '<br>') : content, true); - this.textarea.className = 'mxCellEditor mxPlainTextEditor'; - - var size = mxConstants.DEFAULT_FONTSIZE; - - this.textarea.style.lineHeight = (mxConstants.ABSOLUTE_LINE_HEIGHT) ? Math.round(size * mxConstants.LINE_HEIGHT) + 'px' : mxConstants.LINE_HEIGHT; - this.textarea.style.fontSize = Math.round(size) + 'px'; - this.textarea.style.textDecoration = ''; - this.textarea.style.fontWeight = 'normal'; - this.textarea.style.fontStyle = ''; - this.textarea.style.fontFamily = mxConstants.DEFAULT_FONTFAMILY; - this.textarea.style.textAlign = 'left'; - - // Adds padding to make cursor visible with borders - this.textarea.style.padding = '2px'; - - if (this.textarea.innerHTML != content) - { - this.textarea.innerHTML = content; + // Clears the initial empty label on the first keystroke + if (this.clearOnChange && this.textarea.innerHTML == this.getEmptyLabelText()) + { + this.clearOnChange = false; + this.textarea.innerHTML = ''; + } + + // Removes newlines from HTML and converts breaks to newlines + // to match the HTML output in plain text + var content = mxUtils.htmlEntities(this.textarea.innerHTML); + + // Workaround for trailing line breaks being ignored in the editor + if (!mxClient.IS_QUIRKS && document.documentMode != 8) + { + content = mxUtils.replaceTrailingNewlines(content, '<div><br></div>'); + } + + content = this.graph.sanitizeHtml((nl2Br) ? content.replace(/\n/g, '').replace(/<br\s*.?>/g, '<br>') : content, true); + this.textarea.className = 'mxCellEditor mxPlainTextEditor'; + + var size = mxConstants.DEFAULT_FONTSIZE; + + this.textarea.style.lineHeight = (mxConstants.ABSOLUTE_LINE_HEIGHT) ? Math.round(size * mxConstants.LINE_HEIGHT) + 'px' : mxConstants.LINE_HEIGHT; + this.textarea.style.fontSize = Math.round(size) + 'px'; + this.textarea.style.textDecoration = ''; + this.textarea.style.fontWeight = 'normal'; + this.textarea.style.fontStyle = ''; + this.textarea.style.fontFamily = mxConstants.DEFAULT_FONTFAMILY; + this.textarea.style.textAlign = 'left'; + + // Adds padding to make cursor visible with borders + this.textarea.style.padding = '2px'; + + if (this.textarea.innerHTML != content) + { + this.textarea.innerHTML = content; + } + + this.codeViewMode = true; } - - this.codeViewMode = true; - } - else - { - var content = mxUtils.extractTextWithWhitespace(this.textarea.childNodes); - - // Strips trailing line break - if (content.length > 0 && content.charAt(content.length - 1) == '\n') - { - content = content.substring(0, content.length - 1); - } - - content = this.graph.sanitizeHtml((nl2Br) ? content.replace(/\n/g, '<br/>') : content, true) - this.textarea.className = 'mxCellEditor geContentEditable'; - - var size = mxUtils.getValue(state.style, mxConstants.STYLE_FONTSIZE, mxConstants.DEFAULT_FONTSIZE); - var family = mxUtils.getValue(state.style, mxConstants.STYLE_FONTFAMILY, mxConstants.DEFAULT_FONTFAMILY); - var align = mxUtils.getValue(state.style, mxConstants.STYLE_ALIGN, mxConstants.ALIGN_LEFT); - var bold = (mxUtils.getValue(state.style, mxConstants.STYLE_FONTSTYLE, 0) & - mxConstants.FONT_BOLD) == mxConstants.FONT_BOLD; - var italic = (mxUtils.getValue(state.style, mxConstants.STYLE_FONTSTYLE, 0) & - mxConstants.FONT_ITALIC) == mxConstants.FONT_ITALIC; - var uline = (mxUtils.getValue(state.style, mxConstants.STYLE_FONTSTYLE, 0) & - mxConstants.FONT_UNDERLINE) == mxConstants.FONT_UNDERLINE; - - this.textarea.style.lineHeight = (mxConstants.ABSOLUTE_LINE_HEIGHT) ? Math.round(size * mxConstants.LINE_HEIGHT) + 'px' : mxConstants.LINE_HEIGHT; - this.textarea.style.fontSize = Math.round(size) + 'px'; - this.textarea.style.textDecoration = (uline) ? 'underline' : ''; - this.textarea.style.fontWeight = (bold) ? 'bold' : 'normal'; - this.textarea.style.fontStyle = (italic) ? 'italic' : ''; - this.textarea.style.fontFamily = family; - this.textarea.style.textAlign = align; - this.textarea.style.padding = '0px'; - - if (this.textarea.innerHTML != content) + else { - this.textarea.innerHTML = content; + var content = mxUtils.extractTextWithWhitespace(this.textarea.childNodes); + + // Strips trailing line break + if (content.length > 0 && content.charAt(content.length - 1) == '\n') + { + content = content.substring(0, content.length - 1); + } + + content = this.graph.sanitizeHtml((nl2Br) ? content.replace(/\n/g, '<br/>') : content, true) + this.textarea.className = 'mxCellEditor geContentEditable'; + + var size = mxUtils.getValue(state.style, mxConstants.STYLE_FONTSIZE, mxConstants.DEFAULT_FONTSIZE); + var family = mxUtils.getValue(state.style, mxConstants.STYLE_FONTFAMILY, mxConstants.DEFAULT_FONTFAMILY); + var align = mxUtils.getValue(state.style, mxConstants.STYLE_ALIGN, mxConstants.ALIGN_LEFT); + var bold = (mxUtils.getValue(state.style, mxConstants.STYLE_FONTSTYLE, 0) & + mxConstants.FONT_BOLD) == mxConstants.FONT_BOLD; + var italic = (mxUtils.getValue(state.style, mxConstants.STYLE_FONTSTYLE, 0) & + mxConstants.FONT_ITALIC) == mxConstants.FONT_ITALIC; + var uline = (mxUtils.getValue(state.style, mxConstants.STYLE_FONTSTYLE, 0) & + mxConstants.FONT_UNDERLINE) == mxConstants.FONT_UNDERLINE; + + this.textarea.style.lineHeight = (mxConstants.ABSOLUTE_LINE_HEIGHT) ? Math.round(size * mxConstants.LINE_HEIGHT) + 'px' : mxConstants.LINE_HEIGHT; + this.textarea.style.fontSize = Math.round(size) + 'px'; + this.textarea.style.textDecoration = (uline) ? 'underline' : ''; + this.textarea.style.fontWeight = (bold) ? 'bold' : 'normal'; + this.textarea.style.fontStyle = (italic) ? 'italic' : ''; + this.textarea.style.fontFamily = family; + this.textarea.style.textAlign = align; + this.textarea.style.padding = '0px'; - if (this.textarea.innerHTML.length == 0) + if (this.textarea.innerHTML != content) { - this.textarea.innerHTML = this.getEmptyLabelText(); - this.clearOnChange = this.textarea.innerHTML.length > 0; + this.textarea.innerHTML = content; + + if (this.textarea.innerHTML.length == 0) + { + this.textarea.innerHTML = this.getEmptyLabelText(); + this.clearOnChange = this.textarea.innerHTML.length > 0; + } } + + this.codeViewMode = false; } - - this.codeViewMode = false; - } + + this.textarea.focus(); - this.textarea.focus(); - - if (this.switchSelectionState != null) - { - this.restoreSelection(this.switchSelectionState); + if (this.switchSelectionState != null) + { + this.restoreSelection(this.switchSelectionState); + } + + this.switchSelectionState = tmp; + this.resize(); } - - this.switchSelectionState = tmp; - this.resize(); }; var mxCellEditorResize = mxCellEditor.prototype.resize; diff --git a/src/main/webapp/js/mxgraph/Menus.js b/src/main/webapp/js/mxgraph/Menus.js index 434e10ee..1b2d64a1 100644 --- a/src/main/webapp/js/mxgraph/Menus.js +++ b/src/main/webapp/js/mxgraph/Menus.js @@ -136,22 +136,25 @@ Menus.prototype.init = function() { this.styleChange(menu, fontsize, [mxConstants.STYLE_FONTSIZE], [fontsize], null, parent, function() { - // Creates an element with arbitrary size 3 - document.execCommand('fontSize', false, '3'); - - // Changes the css font size of the first font element inside the in-place editor with size 3 - // hopefully the above element that we've just created. LATER: Check for new element using - // previous result of getElementsByTagName (see other actions) - var elts = graph.cellEditor.textarea.getElementsByTagName('font'); - - for (var i = 0; i < elts.length; i++) + if (graph.cellEditor.textarea != null) { - if (elts[i].getAttribute('size') == '3') + // Creates an element with arbitrary size 3 + document.execCommand('fontSize', false, '3'); + + // Changes the css font size of the first font element inside the in-place editor with size 3 + // hopefully the above element that we've just created. LATER: Check for new element using + // previous result of getElementsByTagName (see other actions) + var elts = graph.cellEditor.textarea.getElementsByTagName('font'); + + for (var i = 0; i < elts.length; i++) { - elts[i].removeAttribute('size'); - elts[i].style.fontSize = fontsize + 'px'; - - break; + if (elts[i].getAttribute('size') == '3') + { + elts[i].removeAttribute('size'); + elts[i].style.fontSize = fontsize + 'px'; + + break; + } } } }); @@ -576,7 +579,7 @@ Menus.prototype.addInsertTableItem = function(menu) { var td = graph.getParentByName(mxEvent.getSource(evt), 'TD'); - if (td != null) + if (td != null && graph.cellEditor.textarea != null) { var row2 = graph.getParentByName(td, 'TR'); diff --git a/src/main/webapp/js/mxgraph/Shapes.js b/src/main/webapp/js/mxgraph/Shapes.js index 40a56b86..5fe49a12 100644 --- a/src/main/webapp/js/mxgraph/Shapes.js +++ b/src/main/webapp/js/mxgraph/Shapes.js @@ -3963,7 +3963,47 @@ return (constr); }; - FolderShape.prototype.constraints = mxRectangleShape.prototype.constraints; + FolderShape.prototype.getConstraints = function(style, w, h) + { + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'tabWidth', this.tabWidth)))); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'tabHeight', this.tabHeight)))); + var tp = mxUtils.getValue(this.style, 'tabPosition', this.tabPosition); + + if (tp == 'left') + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w + dx) * 0.5, dy)); + } + else + { + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.5, dy)); + } + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dy) * 0.25 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dy) * 0.5 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dy) * 0.75 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dy) * 0.25 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dy) * 0.5 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dy) * 0.75 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + + return (constr); + } + InternalStorageShape.prototype.constraints = mxRectangleShape.prototype.constraints; DataStorageShape.prototype.constraints = mxRectangleShape.prototype.constraints; TapeDataShape.prototype.constraints = mxEllipse.prototype.constraints; diff --git a/src/main/webapp/js/mxgraph/Sidebar.js b/src/main/webapp/js/mxgraph/Sidebar.js index 064110ab..398f7970 100644 --- a/src/main/webapp/js/mxgraph/Sidebar.js +++ b/src/main/webapp/js/mxgraph/Sidebar.js @@ -449,7 +449,7 @@ Sidebar.prototype.addEntry = function(tags, fn) var doAddEntry = mxUtils.bind(this, function(tag) { - if (tag.length > 1) + if (tag != null && tag.length > 1) { var entry = this.taglist[tag]; @@ -755,9 +755,13 @@ Sidebar.prototype.addSearchPalette = function(expand) results = (results != null) ? results : []; active = false; page++; - center.parentNode.removeChild(center); this.insertSearchHint(div, searchTerm, count, page, results, len, more, terms); + if (center.parentNode != null) + { + center.parentNode.removeChild(center); + } + for (var i = 0; i < results.length; i++) { var elt = results[i](); @@ -2082,7 +2086,7 @@ Sidebar.prototype.createDropHandler = function(cells, allowSplit, allowCellsInse } } - if (allowCellsInserted) + if (allowCellsInserted && (evt == null || !mxEvent.isShiftDown(evt))) { graph.fireEvent(new mxEventObject('cellsInserted', 'cells', select)); } @@ -2244,7 +2248,10 @@ Sidebar.prototype.dropAndConnect = function(source, targets, direction, dropCell graph.createCurrentEdgeStyle())); } - graph.fireEvent(new mxEventObject('cellsInserted', 'cells', targets)); + if (evt == null || !mxEvent.isShiftDown(evt)) + { + graph.fireEvent(new mxEventObject('cellsInserted', 'cells', targets)); + } } catch (e) { @@ -3118,29 +3125,26 @@ Sidebar.prototype.itemClicked = function(cells, ds, evt, elt) graph.container.focus(); // Alt+Click inserts and connects - if (mxEvent.isAltDown(evt)) + if (mxEvent.isAltDown(evt) && graph.getSelectionCount() == 1 && graph.model.isVertex(graph.getSelectionCell())) { - if (graph.getSelectionCount() == 1 && graph.model.isVertex(graph.getSelectionCell())) + var firstVertex = null; + + for (var i = 0; i < cells.length && firstVertex == null; i++) { - var firstVertex = null; - - for (var i = 0; i < cells.length && firstVertex == null; i++) + if (graph.model.isVertex(cells[i])) { - if (graph.model.isVertex(cells[i])) - { - firstVertex = i; - } - } - - if (firstVertex != null) - { - graph.setSelectionCells(this.dropAndConnect(graph.getSelectionCell(), cells, (mxEvent.isMetaDown(evt) || mxEvent.isControlDown(evt)) ? - (mxEvent.isShiftDown(evt) ? mxConstants.DIRECTION_WEST : mxConstants.DIRECTION_NORTH) : - (mxEvent.isShiftDown(evt) ? mxConstants.DIRECTION_EAST : mxConstants.DIRECTION_SOUTH), - firstVertex, evt)); - graph.scrollCellToVisible(graph.getSelectionCell()); + firstVertex = i; } } + + if (firstVertex != null) + { + graph.setSelectionCells(this.dropAndConnect(graph.getSelectionCell(), cells, (mxEvent.isMetaDown(evt) || mxEvent.isControlDown(evt)) ? + (mxEvent.isShiftDown(evt) ? mxConstants.DIRECTION_WEST : mxConstants.DIRECTION_NORTH) : + (mxEvent.isShiftDown(evt) ? mxConstants.DIRECTION_EAST : mxConstants.DIRECTION_SOUTH), + firstVertex, evt)); + graph.scrollCellToVisible(graph.getSelectionCell()); + } } // Shift+Click updates shape else if (mxEvent.isShiftDown(evt) && !graph.isSelectionEmpty()) @@ -3152,7 +3156,7 @@ Sidebar.prototype.itemClicked = function(cells, ds, evt, elt) { var pt = graph.getFreeInsertPoint(); - if (mxEvent.isShiftDown(evt)) + if (mxEvent.isAltDown(evt)) { var bounds = graph.getGraphBounds(); var tr = graph.view.translate; diff --git a/src/main/webapp/js/reader.min.js b/src/main/webapp/js/reader.min.js index 8f90f5c0..db88c333 100644 --- a/src/main/webapp/js/reader.min.js +++ b/src/main/webapp/js/reader.min.js @@ -35,19 +35,19 @@ this.l&&a.push("?",this.l);null!==this.o&&a.push("#",this.o);return a.join("")}; function(){return null!==this.k};f.prototype.V=function(){return this.h&&decodeURIComponent(this.h)};f.prototype.ca=function(a){if(a){a=Number(a);if(a!==(a&65535))throw Error("Bad port number "+a);this.h=""+a}else this.h=null};f.prototype.$=function(){return null!==this.h};f.prototype.U=function(){return this.g&&decodeURIComponent(this.g)};f.prototype.G=function(a){a?(a=""+a,this.g=!this.k||/^\//.test(a)?a:"/"+a):this.g=null};f.prototype.O=function(a){this.l=a?a:null};f.prototype.aa=function(){return null!== this.l};f.prototype.ba=function(a){if("object"===typeof a&&!(a instanceof Array)&&(a instanceof Object||"[object Array]"!==Object.prototype.toString.call(a))){var b=[],c=-1,d;for(d in a){var e=a[d];"string"===typeof e&&(b[++c]=d,b[++c]=e)}a=b}for(var b=[],c="",f=0;f<a.length;)d=a[f++],e=a[f++],b.push(c,encodeURIComponent(d.toString())),c="&",e&&b.push("=",encodeURIComponent(e.toString()));this.l=b.join("")};f.prototype.fa=function(a){this.o=a?a:null};f.prototype.Z=function(){return null!==this.o}; var l=/^(?:([^:/?#]+):)?(?:\/\/(?:([^/?#]*)@)?([^/?#:@]*)(?::([0-9]+))?)?([^?#]+)?(?:\?([^#]*))?(?:#(.*))?$/,m=/[#\/\?@]/g,n=/[\#\?]/g;f.parse=a;f.create=function(a,d,e,g,h,k,l){a=new f(b(a,m),b(d,m),"string"==typeof e?encodeURIComponent(e):null,0<g?g.toString():null,b(h,n),null,"string"==typeof l?encodeURIComponent(l):null);k&&("string"===typeof k?a.O(k.replace(/[^?&=0-9A-Za-z_\-~.%]/g,c)):a.ba(k));return a};f.N=e;f.ma=d;f.ha={ua:function(b){return/\.html$/.test(a(b).U())?"text/html":"application/javascript"}, -N:function(b,c){return b?e(a(b),a(c)).toString():""+c}};return f}();"undefined"!==typeof window&&(window.URI=f);var g=void 0,h=void 0,k=void 0,l=void 0;(function(){function a(a){return"string"===typeof a?'url("'+a.replace(x,c)+'")':'url("about:blank")'}function c(a){return y[a]}function d(a,b){return a?f.ha.N(a,b):b}function n(a,b,c){if(!c)return null;var d=(""+a).match(u);return!d||d[1]&&!D.test(d[1])?null:c(a,b)}function w(a){return a.replace(/^-(?:apple|css|epub|khtml|moz|mso?|o|rim|wap|webkit|xv)-(?=[a-z])/, -"")}var x=/[\n\f\r\"\'()*<>]/g,y={"\n":"%0a","\f":"%0c","\r":"%0d",'"':"%22","'":"%27","(":"%28",")":"%29","*":"%2a","<":"%3c",">":"%3e"},u=/^(?:([^:/?# ]+):)?/,D=/^(?:https?|mailto|data)$/i;g=function(){var c={};return function C(f,g,h,k,l){f=w(f);var m=b[f];if(m&&"object"===typeof m){for(var p=m.cssPropBits,v=p&80,r=p&1536,q=NaN,B=0,u=0;B<g.length;++B){var t=g[B].toLowerCase(),z=t.charCodeAt(0),x,L,y,D,H,E;if(32===z)t="";else if(34===z)t=16===v?h?a(n(d(k,e(g[B].substring(1,t.length-1))),f,h)):"": -p&8&&!(v&v-1)?t:"";else if("inherit"!==t){if(H=m.cssLitGroup){var F;if(!(F=m.cssLitMap)){F={};for(var K=H.length;0<=--K;)for(var R=H[K],fa=R.length;0<=--fa;)F[R[fa]]=c;F=m.cssLitMap=F}H=F}else H=c;if(E=H,E[w(t)]!==c)if(35===z&&/^#(?:[0-9a-f]{3}){1,2}$/.test(t))t=p&2?t:"";else if(48<=z&&57>=z)t=p&1?t:"";else if(x=t.charCodeAt(1),L=t.charCodeAt(2),y=48<=x&&57>=x,D=48<=L&&57>=L,43===z&&(y||46===x&&D))t=p&1?(y?"":"0")+t.substring(1):"";else if(45===z&&(y||46===x&&D))t=p&4?(y?"-":"-0")+t.substring(1): -p&1?"0":"";else if(46===z&&y)t=p&1?"0"+t:"";else if('url("'===t.substring(0,5))t=h&&p&16?a(n(d(k,g[B].substring(5,t.length-2)),f,h)):"";else if("("===t.charAt(t.length-1))a:{H=g;F=B;t=1;K=F+1;for(z=H.length;K<z&&t;)R=H[K++],t+=")"===R?-1:/^[^"']*\($/.test(R);if(!t)for(t=H[F].toLowerCase(),z=w(t),H=H.splice(F,K-F,""),F=m.cssFns,K=0,R=F.length;K<R;++K)if(F[K].substring(0,z.length)==z){H[0]=H[H.length-1]="";C(F[K],H,h,k);t=t+H.join(" ")+")";break a}t=""}else t=r&&/^-?[a-z_][\w\-]*$/.test(t)&&!/__$/.test(t)? +N:function(b,c){return b?e(a(b),a(c)).toString():""+c}};return f}();"undefined"!==typeof window&&(window.URI=f);var g=void 0,h=void 0,k=void 0,l=void 0;(function(){function a(a){return"string"===typeof a?'url("'+a.replace(w,c)+'")':'url("about:blank")'}function c(a){return y[a]}function d(a,b){return a?f.ha.N(a,b):b}function n(a,b,c){if(!c)return null;var d=(""+a).match(u);return!d||d[1]&&!D.test(d[1])?null:c(a,b)}function x(a){return a.replace(/^-(?:apple|css|epub|khtml|moz|mso?|o|rim|wap|webkit|xv)-(?=[a-z])/, +"")}var w=/[\n\f\r\"\'()*<>]/g,y={"\n":"%0a","\f":"%0c","\r":"%0d",'"':"%22","'":"%27","(":"%28",")":"%29","*":"%2a","<":"%3c",">":"%3e"},u=/^(?:([^:/?# ]+):)?/,D=/^(?:https?|mailto|data)$/i;g=function(){var c={};return function C(f,g,h,k,l){f=x(f);var m=b[f];if(m&&"object"===typeof m){for(var p=m.cssPropBits,v=p&80,r=p&1536,q=NaN,B=0,u=0;B<g.length;++B){var t=g[B].toLowerCase(),z=t.charCodeAt(0),w,L,y,D,I,E;if(32===z)t="";else if(34===z)t=16===v?h?a(n(d(k,e(g[B].substring(1,t.length-1))),f,h)):"": +p&8&&!(v&v-1)?t:"";else if("inherit"!==t){if(I=m.cssLitGroup){var F;if(!(F=m.cssLitMap)){F={};for(var K=I.length;0<=--K;)for(var R=I[K],fa=R.length;0<=--fa;)F[R[fa]]=c;F=m.cssLitMap=F}I=F}else I=c;if(E=I,E[x(t)]!==c)if(35===z&&/^#(?:[0-9a-f]{3}){1,2}$/.test(t))t=p&2?t:"";else if(48<=z&&57>=z)t=p&1?t:"";else if(w=t.charCodeAt(1),L=t.charCodeAt(2),y=48<=w&&57>=w,D=48<=L&&57>=L,43===z&&(y||46===w&&D))t=p&1?(y?"":"0")+t.substring(1):"";else if(45===z&&(y||46===w&&D))t=p&4?(y?"-":"-0")+t.substring(1): +p&1?"0":"";else if(46===z&&y)t=p&1?"0"+t:"";else if('url("'===t.substring(0,5))t=h&&p&16?a(n(d(k,g[B].substring(5,t.length-2)),f,h)):"";else if("("===t.charAt(t.length-1))a:{I=g;F=B;t=1;K=F+1;for(z=I.length;K<z&&t;)R=I[K++],t+=")"===R?-1:/^[^"']*\($/.test(R);if(!t)for(t=I[F].toLowerCase(),z=x(t),I=I.splice(F,K-F,""),F=m.cssFns,K=0,R=F.length;K<R;++K)if(F[K].substring(0,z.length)==z){I[0]=I[I.length-1]="";C(F[K],I,h,k);t=t+I.join(" ")+")";break a}t=""}else t=r&&/^-?[a-z_][\w\-]*$/.test(t)&&!/__$/.test(t)? l&&512===r?g[B]+l:1024===r&&b[t]&&"number"===typeof b[t].oa?t:"":/^\w+$/.test(t)&&64===v&&p&8?q+1===u?(g[q]=g[q].substring(0,g[q].length-1)+" "+t+'"',""):(q=u,'"'+t+'"'):""}t&&(g[u++]=t)}1===u&&'url("about:blank")'===g[0]&&(u=0);g.length=u}else g.length=0}}();var F=/^(active|after|before|blank|checked|default|disabled|drop|empty|enabled|first|first-child|first-letter|first-line|first-of-type|fullscreen|focus|hover|in-range|indeterminate|invalid|last-child|last-of-type|left|link|only-child|only-of-type|optional|out-of-range|placeholder-shown|read-only|read-write|required|right|root|scope|user-error|valid|visited)$/, -E={};E[">"]=E["+"]=E["~"]=E;h=function(a,b,c){function d(d,k){function l(c,d,e){var h,k,l,n,v,Z=!0;h="";c<d&&((v=a[c],"*"===v)?(++c,h=v):/^[a-zA-Z]/.test(v)&&(k=g(v.toLowerCase(),[]))&&("tagName"in k&&(v=k.tagName),++c,h=v));for(n=l=k="";Z&&c<d;++c)if(v=a[c],"#"===v.charAt(0))/^#_|__$|[^\w#:\-]/.test(v)?Z=!1:k+=v+f;else if("."===v)++c<d&&/^[0-9A-Za-z:_\-]+$/.test(v=a[c])&&!/^_|__$/.test(v)?k+="."+v:Z=!1;else if(c+1<d&&"["===a[c]){++c;var C=a[c++].toLowerCase();v=p.m[h+"::"+C];v!==+v&&(v=p.m["*::"+ -C]);var r;b.ia?(r=b.ia(h,C),"string"!==typeof r&&(Z=!1,r=C),Z&&v!==+v&&(v=p.d.NONE)):(r=C,v!==+v&&(Z=!1));var q=C="",B=!1;/^[~^$*|]?=$/.test(a[c])&&(C=a[c++],q=a[c++],/^[0-9A-Za-z:_\-]+$/.test(q)?q='"'+q+'"':"]"===q&&(q='""',--c),/^"([^\"\\]|\\.)*"$/.test(q)||(Z=!1),(B="i"===a[c])&&++c);"]"!==a[c]&&(++c,Z=!1);switch(v){case p.d.CLASSES:case p.d.LOCAL_NAME:case p.d.NONE:break;case p.d.GLOBAL_NAME:case p.d.ID:case p.d.IDREF:"="!==C&&"~="!==C&&"$="!==C||'""'==q||B?"|="===C||""===C||(Z=!1):q='"'+q.substring(1, -q.length-1)+f+'"';break;case p.d.URI:case p.d.URI_FRAGMENT:""!==C&&(Z=!1);break;default:Z=!1}Z&&(l+="["+r.replace(/[^\w-]/g,"\\$&")+C+q+(B?" i]":"]"))}else if(c<d&&":"===a[c])if(v=a[++c],F.test(v))n+=":"+v;else break;else break;c!==d&&(Z=!1);Z&&(c=(h+k).replace(/[^ .*#\w-]/g,"\\$&")+l+n+e)&&m.push(c);return Z}" "===a[d]&&++d;k-1!==d&&" "===a[k]&&--k;for(var m=[],n=d,v=!0,C=d;v&&C<k;++C){var r=a[C];if(E[r]===E||" "===r)l(n,C,r)?n=C+1:v=!1}l(n,k,"")||(v=!1);return v?(m.length&&(n=m.join(""),null!== +E={};E[">"]=E["+"]=E["~"]=E;h=function(a,b,c){function d(d,k){function l(c,d,e){var h,k,l,n,v,Y=!0;h="";c<d&&((v=a[c],"*"===v)?(++c,h=v):/^[a-zA-Z]/.test(v)&&(k=g(v.toLowerCase(),[]))&&("tagName"in k&&(v=k.tagName),++c,h=v));for(n=l=k="";Y&&c<d;++c)if(v=a[c],"#"===v.charAt(0))/^#_|__$|[^\w#:\-]/.test(v)?Y=!1:k+=v+f;else if("."===v)++c<d&&/^[0-9A-Za-z:_\-]+$/.test(v=a[c])&&!/^_|__$/.test(v)?k+="."+v:Y=!1;else if(c+1<d&&"["===a[c]){++c;var C=a[c++].toLowerCase();v=p.m[h+"::"+C];v!==+v&&(v=p.m["*::"+ +C]);var r;b.ia?(r=b.ia(h,C),"string"!==typeof r&&(Y=!1,r=C),Y&&v!==+v&&(v=p.d.NONE)):(r=C,v!==+v&&(Y=!1));var q=C="",B=!1;/^[~^$*|]?=$/.test(a[c])&&(C=a[c++],q=a[c++],/^[0-9A-Za-z:_\-]+$/.test(q)?q='"'+q+'"':"]"===q&&(q='""',--c),/^"([^\"\\]|\\.)*"$/.test(q)||(Y=!1),(B="i"===a[c])&&++c);"]"!==a[c]&&(++c,Y=!1);switch(v){case p.d.CLASSES:case p.d.LOCAL_NAME:case p.d.NONE:break;case p.d.GLOBAL_NAME:case p.d.ID:case p.d.IDREF:"="!==C&&"~="!==C&&"$="!==C||'""'==q||B?"|="===C||""===C||(Y=!1):q='"'+q.substring(1, +q.length-1)+f+'"';break;case p.d.URI:case p.d.URI_FRAGMENT:""!==C&&(Y=!1);break;default:Y=!1}Y&&(l+="["+r.replace(/[^\w-]/g,"\\$&")+C+q+(B?" i]":"]"))}else if(c<d&&":"===a[c])if(v=a[++c],F.test(v))n+=":"+v;else break;else break;c!==d&&(Y=!1);Y&&(c=(h+k).replace(/[^ .*#\w-]/g,"\\$&")+l+n+e)&&m.push(c);return Y}" "===a[d]&&++d;k-1!==d&&" "===a[k]&&--k;for(var m=[],n=d,v=!0,C=d;v&&C<k;++C){var r=a[C];if(E[r]===E||" "===r)l(n,C,r)?n=C+1:v=!1}l(n,k,"")||(v=!1);return v?(m.length&&(n=m.join(""),null!== e&&(n="."+e+" "+n),h.push(n)),!0):!c||c(a.slice(d,k))}var e=b.na,f=b.L,g=b.Aa,h=[],k=0,l,m=0,n;for(l=0;l<a.length;++l)(n=a[l],"("==n||"["==n?(++m,0):")"==n||"]"==n?(m&&--m,0):" "==a[l]&&(m||E[a[l-1]]===E||E[a[l+1]]===E))||(a[k++]=a[l]);a.length=k;k=a.length;for(l=m=0;l<k;++l)if(","===a[l]){if(!d(m,l))return null;m=l+1}return d(m,k)?h:null};(function(){var a=/^\w/,b=/^(?:(?:(?:(?:only|not) )?(?:all|aural|braille|embossed|handheld|print|projection|screen|speech|tty|tv)|\( (?:(?:min-|max-)?(?:(?:device-)?(?:aspect-ratio|height|width)|color(?:-index)?|monochrome|orientation|resolution)|grid|hover|luminosity|pointer|scan|script) (?:: -?(?:[a-z]\w+(?:-\w+)*|\d+(?: \/ \d+|(?:\.\d+)?(?:p[cxt]|[cem]m|in|dpi|dppx|dpcm|%)?)) )?\))(?: and ?\( (?:(?:min-|max-)?(?:(?:device-)?(?:aspect-ratio|height|width)|color(?:-index)?|monochrome|orientation|resolution)|grid|hover|luminosity|pointer|scan|script) (?:: -?(?:[a-z]\w+(?:-\w+)*|\d+(?: \/ \d+|(?:\.\d+)?(?:p[cxt]|[cem]m|in|dpi|dppx|dpcm|%)?)) )?\))*)(?: , (?:(?:(?:(?:only|not) )?(?:all|aural|braille|embossed|handheld|print|projection|screen|speech|tty|tv)|\( (?:(?:min-|max-)?(?:(?:device-)?(?:aspect-ratio|height|width)|color(?:-index)?|monochrome|orientation|resolution)|grid|hover|luminosity|pointer|scan|script) (?:: -?(?:[a-z]\w+(?:-\w+)*|\d+(?: \/ \d+|(?:\.\d+)?(?:p[cxt]|[cem]m|in|dpi|dppx|dpcm|%)?)) )?\))(?: and ?\( (?:(?:min-|max-)?(?:(?:device-)?(?:aspect-ratio|height|width)|color(?:-index)?|monochrome|orientation|resolution)|grid|hover|luminosity|pointer|scan|script) (?:: -?(?:[a-z]\w+(?:-\w+)*|\d+(?: \/ \d+|(?:\.\d+)?(?:p[cxt]|[cem]m|in|dpi|dppx|dpcm|%)?)) )?\))*))*$/i; l=function(c){c=c.slice();for(var d=c.length,e=0,f=0;f<d;++f){var g=c[f];" "!=g&&(c[e++]=g)}c.length=e;c=c.join(" ");return c.length?b.test(c)?a.test(c)?c:"not all , "+c:"not all":""}})();(function(){function a(a){var b=/^\s*[']([^']*)[']\s*$/,c=/^\s*url\s*[(]["]([^"]*)["][)]\s*$/,d=/^\s*url\s*[(][']([^']*)['][)]\s*$/,e=/^\s*url\s*[(]([^)]*)[)]\s*$/,f;return(f=/^\s*["]([^"]*)["]\s*$/.exec(a))||(f=b.exec(a))||(f=c.exec(a))||(f=d.exec(a))||(f=e.exec(a))?f[1]:null}function b(c,e,f,k,p,r,q){function C(){t= -J.length&&null===J[J.length-1]}var v=void 0,B=q||[0],J=[],t=!1;m(e,{startStylesheet:function(){v=[]},endStylesheet:function(){},startAtrule:function(e,g){if(t)e=null;else if("@media"===e)v.push("@media"," ",l(g));else if("@keyframes"===e||"@-webkit-keyframes"===e){var h=g[0];1!==g.length||/__$|[^\w\-]/.test(h)?e=null:(v.push(e," ",h+f.L),e="@keyframes")}else if("@import"===e&&0<g.length)if(e=null,"function"===typeof r){var m=l(g.slice(1));if("not all"!==m){++B[0];var C=[];v.push(C);var q=n(d(c,a(g[0])), -function(a){var c=b(q,a.qa,f,k,p,r,B);--B[0];a=m?{toString:function(){return"@media "+m+" {"+c.result+"}"}}:c.result;C[0]=a;r(a,!!B[0])},p)}}else window.console&&window.console.log("@import "+g.join(" ")+" elided");t=!e;J.push(e)},endAtrule:function(){J.pop();t||v.push(";");C()},startBlock:function(){t||v.push("{")},endBlock:function(){t||(v.push("}"),t=!0)},startRuleset:function(a){if(!t){var b=void 0;"@keyframes"===J[J.length-1]?(b=a.join(" ").match(/^ *(?:from|to|\d+(?:\.\d+)?%) *(?:, *(?:from|to|\d+(?:\.\d+)?%) *)*$/i), -t=!b,b&&(b=b[0].replace(/ +/g,""))):(a=h(a,f),a&&a.length?b=a.join(", "):t=!0);t||v.push(b,"{")}J.push(null)},endRuleset:function(){J.pop();t||v.push("}");C()},declaration:function(a,b){if(!t){var d=!1,e=b.length;2<=e&&"!"===b[e-2]&&"important"===b[e-1].toLowerCase()&&(d=!0,b.length-=2);g(a,b,k,c,f.L);b.length&&v.push(a,":",b.join(" "),d?" !important;":";")}}});return{result:{toString:function(){return v.join("")}},va:!!B[0]}}k=function(a,c,d,e){return b(a,c,d,e,void 0,void 0).result.toString()}})()})(); +G.length&&null===G[G.length-1]}var v=void 0,B=q||[0],G=[],t=!1;m(e,{startStylesheet:function(){v=[]},endStylesheet:function(){},startAtrule:function(e,g){if(t)e=null;else if("@media"===e)v.push("@media"," ",l(g));else if("@keyframes"===e||"@-webkit-keyframes"===e){var h=g[0];1!==g.length||/__$|[^\w\-]/.test(h)?e=null:(v.push(e," ",h+f.L),e="@keyframes")}else if("@import"===e&&0<g.length)if(e=null,"function"===typeof r){var m=l(g.slice(1));if("not all"!==m){++B[0];var C=[];v.push(C);var q=n(d(c,a(g[0])), +function(a){var c=b(q,a.qa,f,k,p,r,B);--B[0];a=m?{toString:function(){return"@media "+m+" {"+c.result+"}"}}:c.result;C[0]=a;r(a,!!B[0])},p)}}else window.console&&window.console.log("@import "+g.join(" ")+" elided");t=!e;G.push(e)},endAtrule:function(){G.pop();t||v.push(";");C()},startBlock:function(){t||v.push("{")},endBlock:function(){t||(v.push("}"),t=!0)},startRuleset:function(a){if(!t){var b=void 0;"@keyframes"===G[G.length-1]?(b=a.join(" ").match(/^ *(?:from|to|\d+(?:\.\d+)?%) *(?:, *(?:from|to|\d+(?:\.\d+)?%) *)*$/i), +t=!b,b&&(b=b[0].replace(/ +/g,""))):(a=h(a,f),a&&a.length?b=a.join(", "):t=!0);t||v.push(b,"{")}G.push(null)},endRuleset:function(){G.pop();t||v.push("}");C()},declaration:function(a,b){if(!t){var d=!1,e=b.length;2<=e&&"!"===b[e-2]&&"important"===b[e-1].toLowerCase()&&(d=!0,b.length-=2);g(a,b,k,c,f.L);b.length&&v.push(a,":",b.join(" "),d?" !important;":";")}}});return{result:{toString:function(){return v.join("")}},va:!!B[0]}}k=function(a,c,d,e){return b(a,c,d,e,void 0,void 0).result.toString()}})()})(); "undefined"!==typeof window&&(window.sanitizeCssProperty=g,window.sanitizeCssSelectorList=h,window.sanitizeStylesheet=k,window.sanitizeMediaQuery=l);var m,n;(function(){function a(a,c,d,e,f){for(var g=c++;c<d&&"{"!==a[c]&&";"!==a[c];)++c;if(c<d&&(f||";"===a[c])){f=g+1;var h=c;f<d&&" "===a[f]&&++f;h>f&&" "===a[h-1]&&--h;e.startAtrule&&e.startAtrule(a[g].toLowerCase(),a.slice(f,h));c="{"===a[c]?b(a,c,d,e):c+1;e.endAtrule&&e.endAtrule()}return c}function b(d,e,f,g){++e;for(g.startBlock&&g.startBlock();e< f;){var h=d[e].charAt(0);if("}"==h){++e;break}e=" "===h||";"===h?e+1:"@"===h?a(d,e,f,g,!1):"{"===h?b(d,e,f,g):c(d,e,f,g)}g.endBlock&&g.endBlock();return e}function c(a,b,c,d){var f=b,h=e(a,b,c,!0);if(0>h)return h=~h,h===f?h+1:h;var k=a[h];if("{"!==k)return h===f?h+1:h;b=h+1;h>f&&" "===a[h-1]&&--h;for(d.startRuleset&&d.startRuleset(a.slice(f,h));b<c;){k=a[b];if("}"===k){++b;break}b=" "===k?b+1:g(a,b,c,d)}d.endRuleset&&d.endRuleset();return b}function e(a,b,c,d){for(var e,f=[],g=-1;b<c;++b)if(e=a[b].charAt(0), "["===e||"("===e)f[++g]=e;else if("]"===e&&"["===f[g]||")"===e&&"("===f[g])--g;else if("{"===e||"}"===e||";"===e||"@"===e||":"===e&&!d)break;0<=g&&(b=~(b+1));return b}function f(a,b,c){for(;b<c&&";"!==a[b]&&"}"!==a[b];)++b;return b<c&&";"===a[b]?b+1:b}function g(a,b,c,d){var g=a[b++];if(!h.test(g))return f(a,b,c);b<c&&" "===a[b]&&++b;if(b==c||":"!==a[b])return f(a,b,c);++b;b<c&&" "===a[b]&&++b;var k=e(a,b,c,!1);if(0>k)k=~k;else{for(var l=[],m=0,n=b;n<k;++n)b=a[n]," "!==b&&(l[m++]=b);if(k<c){do{b= @@ -72,20 +72,20 @@ li:"HTMLLIElement",link:"HTMLLinkElement",map:"HTMLMapElement",mark:"HTMLElement s:"HTMLElement",samp:"HTMLElement",script:"HTMLScriptElement",section:"HTMLElement",select:"HTMLSelectElement",small:"HTMLElement",source:"HTMLSourceElement",span:"HTMLSpanElement",strike:"HTMLElement",strong:"HTMLElement",style:"HTMLStyleElement",sub:"HTMLElement",summary:"HTMLElement",sup:"HTMLElement",table:"HTMLTableElement",tbody:"HTMLTableSectionElement",td:"HTMLTableDataCellElement",textarea:"HTMLTextAreaElement",tfoot:"HTMLTableSectionElement",th:"HTMLTableHeaderCellElement",thead:"HTMLTableSectionElement", time:"HTMLTimeElement",title:"HTMLTitleElement",tr:"HTMLTableRowElement",track:"HTMLTrackElement",tt:"HTMLElement",u:"HTMLElement",ul:"HTMLUListElement","var":"HTMLElement",video:"HTMLVideoElement",wbr:"HTMLElement"};p.ELEMENT_DOM_INTERFACES=p.Q;p.P={NOT_LOADED:0,SAME_DOCUMENT:1,NEW_DOCUMENT:2};p.ueffects=p.P;p.J={"a::href":2,"area::href":2,"audio::src":1,"blockquote::cite":0,"command::icon":1,"del::cite":0,"form::action":2,"img::src":1,"input::src":1,"ins::cite":0,"q::cite":0,"video::poster":1,"video::src":1}; p.URIEFFECTS=p.J;p.M={UNSANDBOXED:2,SANDBOXED:1,DATA:0};p.ltypes=p.M;p.I={"a::href":2,"area::href":2,"audio::src":2,"blockquote::cite":2,"command::icon":1,"del::cite":2,"form::action":2,"img::src":1,"input::src":1,"ins::cite":2,"q::cite":2,"video::poster":1,"video::src":2};p.LOADERTYPES=p.I;"undefined"!==typeof window&&(window.html4=p);a=function(a){function b(a,b){var c;if(ca.hasOwnProperty(b))c=ca[b];else{var d=b.match(W);c=d?String.fromCharCode(parseInt(d[1],10)):(d=b.match(v))?String.fromCharCode(parseInt(d[1], -16)):J&&P.test(b)?(J.innerHTML="&"+b+";",d=J.textContent,ca[b]=d):"&"+b+";"}return c}function c(a){return a.replace(da,b)}function d(a){return(""+a).replace(I,"&").replace(aa,"<").replace(ea,">").replace(S,""")}function e(a){return a.replace(M,"&$1").replace(aa,"<").replace(ea,">")}function g(a){var b={z:a.z||a.cdata,A:a.A||a.comment,B:a.B||a.endDoc,t:a.t||a.endTag,e:a.e||a.pcdata,F:a.F||a.rcdata,H:a.H||a.startDoc,w:a.w||a.startTag};return function(a,c){var d,e=/(<\/|<\!--|<[!?]|[&<>])/g; +16)):G&&Q.test(b)?(G.innerHTML="&"+b+";",d=G.textContent,ca[b]=d):"&"+b+";"}return c}function c(a){return a.replace(da,b)}function d(a){return(""+a).replace(J,"&").replace(aa,"<").replace(ea,">").replace(S,""")}function e(a){return a.replace(M,"&$1").replace(aa,"<").replace(ea,">")}function g(a){var b={z:a.z||a.cdata,A:a.A||a.comment,B:a.B||a.endDoc,t:a.t||a.endTag,e:a.e||a.pcdata,F:a.F||a.rcdata,H:a.H||a.startDoc,w:a.w||a.startTag};return function(a,c){var d,e=/(<\/|<\!--|<[!?]|[&<>])/g; d=a+"";if(T)d=d.split(e);else{for(var f=[],g=0,h;null!==(h=e.exec(d));)f.push(d.substring(g,h.index)),f.push(h[0]),g=h.index+h[0].length;f.push(d.substring(g));d=f}k(b,d,0,{r:!1,C:!1},c)}}function h(a,b,c,d,e){return function(){k(a,b,c,d,e)}}function k(b,c,d,e,f){try{b.H&&0==d&&b.H(f);for(var g,k,n,v=c.length;d<v;){var p=c[d++],C=c[d];switch(p){case "&":N.test(C)?(b.e&&b.e("&"+C,f,O,h(b,c,d,e,f)),d++):b.e&&b.e("&",f,O,h(b,c,d,e,f));break;case "</":if(g=/^([-\w:]+)[^\'\"]*/.exec(C))if(g[0].length=== -C.length&&">"===c[d+1])d+=2,n=g[1].toLowerCase(),b.t&&b.t(n,f,O,h(b,c,d,e,f));else{var R=c,Z=d,q=b,r=f,X=O,J=e,P=m(R,Z);P?(q.t&&q.t(P.name,r,X,h(q,R,Z,J,r)),d=P.next):d=R.length}else b.e&&b.e("</",f,O,h(b,c,d,e,f));break;case "<":if(g=/^([-\w:]+)\s*\/?/.exec(C))if(g[0].length===C.length&&">"===c[d+1]){d+=2;n=g[1].toLowerCase();b.w&&b.w(n,[],f,O,h(b,c,d,e,f));var t=a.f[n];t&Y&&(d=l(c,{name:n,next:d,c:t},b,f,O,e))}else{var R=c,Z=b,q=f,r=O,X=e,B=m(R,d);B?(Z.w&&Z.w(B.name,B.R,q,r,h(Z,R,B.next,X,q)), -d=B.c&Y?l(R,B,Z,q,r,X):B.next):d=R.length}else b.e&&b.e("<",f,O,h(b,c,d,e,f));break;case "\x3c!--":if(!e.C){for(k=d+1;k<v&&(">"!==c[k]||!/--$/.test(c[k-1]));k++);if(k<v){if(b.A){var G=c.slice(d,k).join("");b.A(G.substr(0,G.length-2),f,O,h(b,c,k+1,e,f))}d=k+1}else e.C=!0}e.C&&b.e&&b.e("<!--",f,O,h(b,c,d,e,f));break;case "<!":if(/^\w/.test(C)){if(!e.r){for(k=d+1;k<v&&">"!==c[k];k++);k<v?d=k+1:e.r=!0}e.r&&b.e&&b.e("<!",f,O,h(b,c,d,e,f))}else b.e&&b.e("<!",f,O,h(b,c,d,e,f));break;case "<?":if(!e.r){for(k= -d+1;k<v&&">"!==c[k];k++);k<v?d=k+1:e.r=!0}e.r&&b.e&&b.e("<?",f,O,h(b,c,d,e,f));break;case ">":b.e&&b.e(">",f,O,h(b,c,d,e,f));break;case "":break;default:b.e&&b.e(p,f,O,h(b,c,d,e,f))}}b.B&&b.B(f)}catch(ha){if(ha!==O)throw ha;}}function l(b,c,d,f,g,k){var l=b.length;R.hasOwnProperty(c.name)||(R[c.name]=RegExp("^"+c.name+"(?:[\\s\\/]|$)","i"));for(var m=R[c.name],n=c.next,v=c.next+1;v<l&&("</"!==b[v-1]||!m.test(b[v]));v++);v<l&&--v;l=b.slice(n,v).join("");if(c.c&a.c.CDATA)d.z&&d.z(l,f,g,h(d,b, -v,k,f));else if(c.c&a.c.RCDATA)d.F&&d.F(e(l),f,g,h(d,b,v,k,f));else throw Error("bug");return v}function m(b,d){var e=/^([-\w:]+)/.exec(b[d]),f={};f.name=e[1].toLowerCase();f.c=a.f[f.name];for(var g=b[d].substr(e[0].length),h=d+1,k=b.length;h<k&&">"!==b[h];h++)g+=b[h];if(!(k<=h)){for(var l=[];""!==g;)if(e=Q.exec(g))if(e[4]&&!e[5]||e[6]&&!e[7]){for(var e=e[4]||e[6],m=!1,g=[g,b[h++]];h<k;h++){if(m){if(">"===b[h])break}else 0<=b[h].indexOf(e)&&(m=!0);g.push(b[h])}if(k<=h)break;g=g.join("")}else{var m= -e[1].toLowerCase(),n;if(e[2]){n=e[3];var v=n.charCodeAt(0);if(34===v||39===v)n=n.substr(1,n.length-2);n=c(n.replace(G,""))}else n="";l.push(m,n);g=g.substr(e[0].length)}else g=g.replace(/^[\s\S][^a-z\s]*/,"");f.R=l;f.next=h+1;return f}}function n(b){function c(a,b){f||b.push(a)}var e,f;return g({startDoc:function(){e=[];f=!1},startTag:function(c,g,h){if(!f&&a.f.hasOwnProperty(c)){var k=a.f[c];if(!(k&a.c.FOLDABLE)){var l=b(c,g);if(l){if("object"!==typeof l)throw Error("tagPolicy did not return object (old API?)"); +C.length&&">"===c[d+1])d+=2,n=g[1].toLowerCase(),b.t&&b.t(n,f,O,h(b,c,d,e,f));else{var Y=c,R=d,q=b,r=f,X=O,G=e,Q=m(Y,R);Q?(q.t&&q.t(Q.name,r,X,h(q,Y,R,G,r)),d=Q.next):d=Y.length}else b.e&&b.e("</",f,O,h(b,c,d,e,f));break;case "<":if(g=/^([-\w:]+)\s*\/?/.exec(C))if(g[0].length===C.length&&">"===c[d+1]){d+=2;n=g[1].toLowerCase();b.w&&b.w(n,[],f,O,h(b,c,d,e,f));var t=a.f[n];t&Z&&(d=l(c,{name:n,next:d,c:t},b,f,O,e))}else{var Y=c,R=b,q=f,r=O,X=e,B=m(Y,d);B?(R.w&&R.w(B.name,B.R,q,r,h(R,Y,B.next,X,q)), +d=B.c&Z?l(Y,B,R,q,r,X):B.next):d=Y.length}else b.e&&b.e("<",f,O,h(b,c,d,e,f));break;case "\x3c!--":if(!e.C){for(k=d+1;k<v&&(">"!==c[k]||!/--$/.test(c[k-1]));k++);if(k<v){if(b.A){var H=c.slice(d,k).join("");b.A(H.substr(0,H.length-2),f,O,h(b,c,k+1,e,f))}d=k+1}else e.C=!0}e.C&&b.e&&b.e("<!--",f,O,h(b,c,d,e,f));break;case "<!":if(/^\w/.test(C)){if(!e.r){for(k=d+1;k<v&&">"!==c[k];k++);k<v?d=k+1:e.r=!0}e.r&&b.e&&b.e("<!",f,O,h(b,c,d,e,f))}else b.e&&b.e("<!",f,O,h(b,c,d,e,f));break;case "<?":if(!e.r){for(k= +d+1;k<v&&">"!==c[k];k++);k<v?d=k+1:e.r=!0}e.r&&b.e&&b.e("<?",f,O,h(b,c,d,e,f));break;case ">":b.e&&b.e(">",f,O,h(b,c,d,e,f));break;case "":break;default:b.e&&b.e(p,f,O,h(b,c,d,e,f))}}b.B&&b.B(f)}catch(ka){if(ka!==O)throw ka;}}function l(b,c,d,f,g,k){var l=b.length;R.hasOwnProperty(c.name)||(R[c.name]=RegExp("^"+c.name+"(?:[\\s\\/]|$)","i"));for(var m=R[c.name],n=c.next,v=c.next+1;v<l&&("</"!==b[v-1]||!m.test(b[v]));v++);v<l&&--v;l=b.slice(n,v).join("");if(c.c&a.c.CDATA)d.z&&d.z(l,f,g,h(d,b, +v,k,f));else if(c.c&a.c.RCDATA)d.F&&d.F(e(l),f,g,h(d,b,v,k,f));else throw Error("bug");return v}function m(b,d){var e=/^([-\w:]+)/.exec(b[d]),f={};f.name=e[1].toLowerCase();f.c=a.f[f.name];for(var g=b[d].substr(e[0].length),h=d+1,k=b.length;h<k&&">"!==b[h];h++)g+=b[h];if(!(k<=h)){for(var l=[];""!==g;)if(e=P.exec(g))if(e[4]&&!e[5]||e[6]&&!e[7]){for(var e=e[4]||e[6],m=!1,g=[g,b[h++]];h<k;h++){if(m){if(">"===b[h])break}else 0<=b[h].indexOf(e)&&(m=!0);g.push(b[h])}if(k<=h)break;g=g.join("")}else{var m= +e[1].toLowerCase(),n;if(e[2]){n=e[3];var v=n.charCodeAt(0);if(34===v||39===v)n=n.substr(1,n.length-2);n=c(n.replace(H,""))}else n="";l.push(m,n);g=g.substr(e[0].length)}else g=g.replace(/^[\s\S][^a-z\s]*/,"");f.R=l;f.next=h+1;return f}}function n(b){function c(a,b){f||b.push(a)}var e,f;return g({startDoc:function(){e=[];f=!1},startTag:function(c,g,h){if(!f&&a.f.hasOwnProperty(c)){var k=a.f[c];if(!(k&a.c.FOLDABLE)){var l=b(c,g);if(l){if("object"!==typeof l)throw Error("tagPolicy did not return object (old API?)"); if("attribs"in l)g=l.attribs;else throw Error("tagPolicy gave no attribs");var m;"tagName"in l?(m=l.tagName,l=a.f[m]):(m=c,l=k);if(k&a.c.OPTIONAL_ENDTAG){var n=e[e.length-1];n&&n.D===c&&(n.v!==m||c!==m)&&h.push("</",n.v,">")}k&a.c.EMPTY||e.push({D:c,v:m});h.push("<",m);c=0;for(n=g.length;c<n;c+=2){var v=g[c],p=g[c+1];null!==p&&void 0!==p&&h.push(" ",v,'="',d(p),'"')}h.push(">");k&a.c.EMPTY&&!(l&a.c.EMPTY)&&h.push("</",m,">")}else f=!(k&a.c.EMPTY)}}},endTag:function(b,c){if(f)f=!1;else if(a.f.hasOwnProperty(b)){var d= a.f[b];if(!(d&(a.c.EMPTY|a.c.FOLDABLE))){if(d&a.c.OPTIONAL_ENDTAG)for(d=e.length;0<=--d;){var g=e[d].D;if(g===b)break;if(!(a.f[g]&a.c.OPTIONAL_ENDTAG))return}else for(d=e.length;0<=--d&&e[d].D!==b;);if(!(0>d)){for(g=e.length;--g>d;){var h=e[g].v;a.f[h]&a.c.OPTIONAL_ENDTAG||c.push("</",h,">")}d<e.length&&(b=e[d].v);e.length=d;c.push("</",b,">")}}}},pcdata:c,rcdata:c,cdata:c,endDoc:function(a){for(;e.length;e.length--)a.push("</",e[e.length-1].v,">")}})}function p(a,b,c,d,e){if(!e)return null;try{var g= f.parse(""+a);if(g&&(!g.K()||fa.test(g.W()))){var h=e(g,b,c,d);return h?h.toString():null}}catch(pa){}return null}function r(a,b,c,d,e){c||a(b+" removed",{S:"removed",tagName:b});if(d!==e){var f="changed";d&&!e?f="removed":!d&&e&&(f="added");a(b+"."+c+" "+f,{S:f,tagName:b,la:c,oldValue:d,newValue:e})}}function C(a,b,c){b=b+"::"+c;if(a.hasOwnProperty(b))return a[b];b="*::"+c;if(a.hasOwnProperty(b))return a[b]}function L(b,c,d,e,f){for(var g=0;g<c.length;g+=2){var h=c[g],k=c[g+1],l=k,m=null,n;if((n= b+"::"+h,a.m.hasOwnProperty(n))||(n="*::"+h,a.m.hasOwnProperty(n)))m=a.m[n];if(null!==m)switch(m){case a.d.NONE:break;case a.d.SCRIPT:k=null;f&&r(f,b,h,l,k);break;case a.d.STYLE:if("undefined"===typeof V){k=null;f&&r(f,b,h,l,k);break}var v=[];V(k,{declaration:function(b,c){var e=b.toLowerCase();U(e,c,d?function(b){return p(b,a.P.ja,a.M.ka,{TYPE:"CSS",CSS_PROP:e},d)}:null);c.length&&v.push(e+": "+c.join(" "))}});k=0<v.length?v.join(" ; "):null;f&&r(f,b,h,l,k);break;case a.d.ID:case a.d.IDREF:case a.d.IDREFS:case a.d.GLOBAL_NAME:case a.d.LOCAL_NAME:case a.d.CLASSES:k= -e?e(k):k;f&&r(f,b,h,l,k);break;case a.d.URI:k=p(k,C(a.J,b,h),C(a.I,b,h),{TYPE:"MARKUP",XML_ATTR:h,XML_TAG:b},d);f&&r(f,b,h,l,k);break;case a.d.URI_FRAGMENT:k&&"#"===k.charAt(0)?(k=k.substring(1),k=e?e(k):k,null!==k&&void 0!==k&&(k="#"+k)):k=null;f&&r(f,b,h,l,k);break;default:k=null,f&&r(f,b,h,l,k)}else k=null,f&&r(f,b,h,l,k);c[g+1]=k}return c}function K(b,c,d){return function(e,f){if(a.f[e]&a.c.UNSAFE)d&&r(d,e,void 0,void 0,void 0);else return{attribs:L(e,f,b,c,d)}}}function H(a,b){var c=[];n(b)(a, -c);return c.join("")}var V,U;"undefined"!==typeof window&&(V=window.parseCssDeclarations,U=window.sanitizeCssProperty);var ca={lt:"<",LT:"<",gt:">",GT:">",amp:"&",AMP:"&",quot:'"',apos:"'",nbsp:" "},W=/^#(\d+)$/,v=/^#x([0-9A-Fa-f]+)$/,P=/^[A-Za-z][A-za-z0-9]+$/,J="undefined"!==typeof window&&window.document?window.document.createElement("textarea"):null,G=/\0/g,da=/&(#[0-9]+|#[xX][0-9A-Fa-f]+|\w+);/g,N=/^(#[0-9]+|#[xX][0-9A-Fa-f]+|\w+);/,I=/&/g,M=/&([^a-z#]|#(?:[^0-9x]|x(?:[^0-9a-f]|$)|$)|$)/gi,aa= -/[<]/g,ea=/>/g,S=/\"/g,Q=/^\s*([-.:\w]+)(?:\s*(=)\s*((")[^"]*("|$)|(')[^']*('|$)|(?=[a-z][-\w]*\s*=)|[^"'\s]*))?/i,T=3==="a,b".split(/(,)/).length,Y=a.c.CDATA|a.c.RCDATA,O={},R={},fa=/^(?:https?|mailto|data)$/i,X={};X.pa=X.escapeAttrib=d;X.ra=X.makeHtmlSanitizer=n;X.sa=X.makeSaxParser=g;X.ta=X.makeTagPolicy=K;X.wa=X.normalizeRCData=e;X.xa=X.sanitize=function(a,b,c,d){return H(a,K(b,c,d))};X.ya=X.sanitizeAttribs=L;X.za=X.sanitizeWithPolicy=H;X.Ba=X.unescapeEntities=c;return X}(p);c=a.sanitize;"undefined"!== +e?e(k):k;f&&r(f,b,h,l,k);break;case a.d.URI:k=p(k,C(a.J,b,h),C(a.I,b,h),{TYPE:"MARKUP",XML_ATTR:h,XML_TAG:b},d);f&&r(f,b,h,l,k);break;case a.d.URI_FRAGMENT:k&&"#"===k.charAt(0)?(k=k.substring(1),k=e?e(k):k,null!==k&&void 0!==k&&(k="#"+k)):k=null;f&&r(f,b,h,l,k);break;default:k=null,f&&r(f,b,h,l,k)}else k=null,f&&r(f,b,h,l,k);c[g+1]=k}return c}function K(b,c,d){return function(e,f){if(a.f[e]&a.c.UNSAFE)d&&r(d,e,void 0,void 0,void 0);else return{attribs:L(e,f,b,c,d)}}}function I(a,b){var c=[];n(b)(a, +c);return c.join("")}var V,U;"undefined"!==typeof window&&(V=window.parseCssDeclarations,U=window.sanitizeCssProperty);var ca={lt:"<",LT:"<",gt:">",GT:">",amp:"&",AMP:"&",quot:'"',apos:"'",nbsp:" "},W=/^#(\d+)$/,v=/^#x([0-9A-Fa-f]+)$/,Q=/^[A-Za-z][A-za-z0-9]+$/,G="undefined"!==typeof window&&window.document?window.document.createElement("textarea"):null,H=/\0/g,da=/&(#[0-9]+|#[xX][0-9A-Fa-f]+|\w+);/g,N=/^(#[0-9]+|#[xX][0-9A-Fa-f]+|\w+);/,J=/&/g,M=/&([^a-z#]|#(?:[^0-9x]|x(?:[^0-9a-f]|$)|$)|$)/gi,aa= +/[<]/g,ea=/>/g,S=/\"/g,P=/^\s*([-.:\w]+)(?:\s*(=)\s*((")[^"]*("|$)|(')[^']*('|$)|(?=[a-z][-\w]*\s*=)|[^"'\s]*))?/i,T=3==="a,b".split(/(,)/).length,Z=a.c.CDATA|a.c.RCDATA,O={},R={},fa=/^(?:https?|mailto|data)$/i,X={};X.pa=X.escapeAttrib=d;X.ra=X.makeHtmlSanitizer=n;X.sa=X.makeSaxParser=g;X.ta=X.makeTagPolicy=K;X.wa=X.normalizeRCData=e;X.xa=X.sanitize=function(a,b,c,d){return I(a,K(b,c,d))};X.ya=X.sanitizeAttribs=L;X.za=X.sanitizeWithPolicy=I;X.Ba=X.unescapeEntities=c;return X}(p);c=a.sanitize;"undefined"!== typeof window&&(window.html=a,window.html_sanitize=c)})();var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(a,b){var c="",d,e,f,g,h,k,l=0;for(null!=b&&b||(a=Base64._utf8_encode(a));l<a.length;)d=a.charCodeAt(l++),e=a.charCodeAt(l++),f=a.charCodeAt(l++),g=d>>2,d=(d&3)<<4|e>>4,h=(e&15)<<2|f>>6,k=f&63,isNaN(e)?h=k=64:isNaN(f)&&(k=64),c=c+this._keyStr.charAt(g)+this._keyStr.charAt(d)+this._keyStr.charAt(h)+this._keyStr.charAt(k);return c},decode:function(a,b){b=null!=b?b:!1;var c="",d,e,f,g,h,k=0;for(a=a.replace(/[^A-Za-z0-9\+\/\=]/g, "");k<a.length;)d=this._keyStr.indexOf(a.charAt(k++)),e=this._keyStr.indexOf(a.charAt(k++)),g=this._keyStr.indexOf(a.charAt(k++)),h=this._keyStr.indexOf(a.charAt(k++)),d=d<<2|e>>4,e=(e&15)<<4|g>>2,f=(g&3)<<6|h,c+=String.fromCharCode(d),64!=g&&(c+=String.fromCharCode(e)),64!=h&&(c+=String.fromCharCode(f));b||(c=Base64._utf8_decode(c));return c},_utf8_encode:function(a){a=a.replace(/\r\n/g,"\n");for(var b="",c=0;c<a.length;c++){var d=a.charCodeAt(c);128>d?b+=String.fromCharCode(d):(127<d&&2048>d?b+= String.fromCharCode(d>>6|192):(b+=String.fromCharCode(d>>12|224),b+=String.fromCharCode(d>>6&63|128)),b+=String.fromCharCode(d&63|128))}return b},_utf8_decode:function(a){var b="",c=0,d;for(c1=c2=0;c<a.length;)d=a.charCodeAt(c),128>d?(b+=String.fromCharCode(d),c++):191<d&&224>d?(c2=a.charCodeAt(c+1),b+=String.fromCharCode((d&31)<<6|c2&63),c+=2):(c2=a.charCodeAt(c+1),c3=a.charCodeAt(c+2),b+=String.fromCharCode((d&15)<<12|(c2&63)<<6|c3&63),c+=3);return b}};!function(a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a():"function"==typeof define&&define.amd?define([],a):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).pako=a()}(function(){return function b(c,d,e){function f(h,l){if(!d[h]){if(!c[h]){var k="function"==typeof require&&require;if(!l&&k)return k(h,!0);if(g)return g(h,!0);k=Error("Cannot find module '"+h+"'");throw k.code="MODULE_NOT_FOUND",k;}k=d[h]={exports:{}}; @@ -110,81 +110,81 @@ d?(c[h++]=192|d>>>6,c[h++]=128|63&d):65536>d?(c[h++]=224|d>>>12,c[h++]=128|d>>>6 function h(b,c){D._tr_flush_block(b,0<=b.block_start?b.block_start:-1,b.strstart-b.block_start,c);b.block_start=b.strstart;g(b.strm)}function k(b,c){b.pending_buf[b.pending++]=c}function l(b,c){b.pending_buf[b.pending++]=c>>>8&255;b.pending_buf[b.pending++]=255&c}function m(b,c){var d,e,f=b.max_chain_length,g=b.strstart,h=b.prev_length,k=b.nice_match,l=b.strstart>b.w_size-aa?b.strstart-(b.w_size-aa):0,m=b.window,v=b.w_mask,n=b.prev,C=b.strstart+M,p=m[g+h-1],q=m[g+h];b.prev_length>=b.good_match&&(f>>= 2);k>b.lookahead&&(k=b.lookahead);do if(d=c,m[d+h]===q&&m[d+h-1]===p&&m[d]===m[g]&&m[++d]===m[g+1]){g+=2;for(d++;m[++g]===m[++d]&&m[++g]===m[++d]&&m[++g]===m[++d]&&m[++g]===m[++d]&&m[++g]===m[++d]&&m[++g]===m[++d]&&m[++g]===m[++d]&&m[++g]===m[++d]&&g<C;);if(e=M-(C-g),g=C-M,e>h){if(b.match_start=c,h=e,e>=k)break;p=m[g+h-1];q=m[g+h]}}while((c=n[c&v])>l&&0!==--f);return h<=b.lookahead?h:b.lookahead}function n(b){var c,d,e,f,g=b.w_size;do{if(f=b.window_size-b.lookahead-b.strstart,b.strstart>=g+(g-aa)){u.arraySet(b.window, b.window,g,g,0);b.match_start-=g;b.strstart-=g;b.block_start-=g;c=d=b.hash_size;do e=b.head[--c],b.head[c]=e>=g?e-g:0;while(--d);c=d=g;do e=b.prev[--c],b.prev[c]=e>=g?e-g:0;while(--d);f+=g}if(0===b.strm.avail_in)break;c=b.strm;e=b.window;var h=b.strstart+b.lookahead,k=c.avail_in;if(d=(k>f&&(k=f),0===k?0:(c.avail_in-=k,u.arraySet(e,c.input,c.next_in,k,h),1===c.state.wrap?c.adler=F(c.adler,e,k,h):2===c.state.wrap&&(c.adler=E(c.adler,e,k,h)),c.next_in+=k,c.total_in+=k,k)),b.lookahead+=d,b.lookahead+ -b.insert>=I)for(f=b.strstart-b.insert,b.ins_h=b.window[f],b.ins_h=(b.ins_h<<b.hash_shift^b.window[f+1])&b.hash_mask;b.insert&&(b.ins_h=(b.ins_h<<b.hash_shift^b.window[f+I-1])&b.hash_mask,b.prev[f&b.w_mask]=b.head[b.ins_h],b.head[b.ins_h]=f,f++,b.insert--,!(b.lookahead+b.insert<I)););}while(b.lookahead<aa&&0!==b.strm.avail_in)}function p(b,c){for(var d,e;;){if(b.lookahead<aa){if(n(b),b.lookahead<aa&&c===A)return Q;if(0===b.lookahead)break}if(d=0,b.lookahead>=I&&(b.ins_h=(b.ins_h<<b.hash_shift^b.window[b.strstart+ -I-1])&b.hash_mask,d=b.prev[b.strstart&b.w_mask]=b.head[b.ins_h],b.head[b.ins_h]=b.strstart),0!==d&&b.strstart-d<=b.w_size-aa&&(b.match_length=m(b,d)),b.match_length>=I)if(e=D._tr_tally(b,b.strstart-b.match_start,b.match_length-I),b.lookahead-=b.match_length,b.match_length<=b.max_lazy_match&&b.lookahead>=I){b.match_length--;do b.strstart++,b.ins_h=(b.ins_h<<b.hash_shift^b.window[b.strstart+I-1])&b.hash_mask,d=b.prev[b.strstart&b.w_mask]=b.head[b.ins_h],b.head[b.ins_h]=b.strstart;while(0!==--b.match_length); -b.strstart++}else b.strstart+=b.match_length,b.match_length=0,b.ins_h=b.window[b.strstart],b.ins_h=(b.ins_h<<b.hash_shift^b.window[b.strstart+1])&b.hash_mask;else e=D._tr_tally(b,0,b.window[b.strstart]),b.lookahead--,b.strstart++;if(e&&(h(b,!1),0===b.strm.avail_out))return Q}return b.insert=b.strstart<I-1?b.strstart:I-1,c===C?(h(b,!0),0===b.strm.avail_out?Y:O):b.last_lit&&(h(b,!1),0===b.strm.avail_out)?Q:T}function r(b,c){for(var d,e,f;;){if(b.lookahead<aa){if(n(b),b.lookahead<aa&&c===A)return Q; -if(0===b.lookahead)break}if(d=0,b.lookahead>=I&&(b.ins_h=(b.ins_h<<b.hash_shift^b.window[b.strstart+I-1])&b.hash_mask,d=b.prev[b.strstart&b.w_mask]=b.head[b.ins_h],b.head[b.ins_h]=b.strstart),b.prev_length=b.match_length,b.prev_match=b.match_start,b.match_length=I-1,0!==d&&b.prev_length<b.max_lazy_match&&b.strstart-d<=b.w_size-aa&&(b.match_length=m(b,d),5>=b.match_length&&(b.strategy===V||b.match_length===I&&4096<b.strstart-b.match_start)&&(b.match_length=I-1)),b.prev_length>=I&&b.match_length<=b.prev_length){f= -b.strstart+b.lookahead-I;e=D._tr_tally(b,b.strstart-1-b.prev_match,b.prev_length-I);b.lookahead-=b.prev_length-1;b.prev_length-=2;do++b.strstart<=f&&(b.ins_h=(b.ins_h<<b.hash_shift^b.window[b.strstart+I-1])&b.hash_mask,d=b.prev[b.strstart&b.w_mask]=b.head[b.ins_h],b.head[b.ins_h]=b.strstart);while(0!==--b.prev_length);if(b.match_available=0,b.match_length=I-1,b.strstart++,e&&(h(b,!1),0===b.strm.avail_out))return Q}else if(b.match_available){if(e=D._tr_tally(b,0,b.window[b.strstart-1]),e&&h(b,!1), -b.strstart++,b.lookahead--,0===b.strm.avail_out)return Q}else b.match_available=1,b.strstart++,b.lookahead--}return b.match_available&&(D._tr_tally(b,0,b.window[b.strstart-1]),b.match_available=0),b.insert=b.strstart<I-1?b.strstart:I-1,c===C?(h(b,!0),0===b.strm.avail_out?Y:O):b.last_lit&&(h(b,!1),0===b.strm.avail_out)?Q:T}function q(b,c,d,e,f){this.good_length=b;this.max_lazy=c;this.nice_length=d;this.max_chain=e;this.func=f}function t(){this.strm=null;this.status=0;this.pending_buf=null;this.wrap= +b.insert>=J)for(f=b.strstart-b.insert,b.ins_h=b.window[f],b.ins_h=(b.ins_h<<b.hash_shift^b.window[f+1])&b.hash_mask;b.insert&&(b.ins_h=(b.ins_h<<b.hash_shift^b.window[f+J-1])&b.hash_mask,b.prev[f&b.w_mask]=b.head[b.ins_h],b.head[b.ins_h]=f,f++,b.insert--,!(b.lookahead+b.insert<J)););}while(b.lookahead<aa&&0!==b.strm.avail_in)}function p(b,c){for(var d,e;;){if(b.lookahead<aa){if(n(b),b.lookahead<aa&&c===A)return P;if(0===b.lookahead)break}if(d=0,b.lookahead>=J&&(b.ins_h=(b.ins_h<<b.hash_shift^b.window[b.strstart+ +J-1])&b.hash_mask,d=b.prev[b.strstart&b.w_mask]=b.head[b.ins_h],b.head[b.ins_h]=b.strstart),0!==d&&b.strstart-d<=b.w_size-aa&&(b.match_length=m(b,d)),b.match_length>=J)if(e=D._tr_tally(b,b.strstart-b.match_start,b.match_length-J),b.lookahead-=b.match_length,b.match_length<=b.max_lazy_match&&b.lookahead>=J){b.match_length--;do b.strstart++,b.ins_h=(b.ins_h<<b.hash_shift^b.window[b.strstart+J-1])&b.hash_mask,d=b.prev[b.strstart&b.w_mask]=b.head[b.ins_h],b.head[b.ins_h]=b.strstart;while(0!==--b.match_length); +b.strstart++}else b.strstart+=b.match_length,b.match_length=0,b.ins_h=b.window[b.strstart],b.ins_h=(b.ins_h<<b.hash_shift^b.window[b.strstart+1])&b.hash_mask;else e=D._tr_tally(b,0,b.window[b.strstart]),b.lookahead--,b.strstart++;if(e&&(h(b,!1),0===b.strm.avail_out))return P}return b.insert=b.strstart<J-1?b.strstart:J-1,c===C?(h(b,!0),0===b.strm.avail_out?Z:O):b.last_lit&&(h(b,!1),0===b.strm.avail_out)?P:T}function r(b,c){for(var d,e,f;;){if(b.lookahead<aa){if(n(b),b.lookahead<aa&&c===A)return P; +if(0===b.lookahead)break}if(d=0,b.lookahead>=J&&(b.ins_h=(b.ins_h<<b.hash_shift^b.window[b.strstart+J-1])&b.hash_mask,d=b.prev[b.strstart&b.w_mask]=b.head[b.ins_h],b.head[b.ins_h]=b.strstart),b.prev_length=b.match_length,b.prev_match=b.match_start,b.match_length=J-1,0!==d&&b.prev_length<b.max_lazy_match&&b.strstart-d<=b.w_size-aa&&(b.match_length=m(b,d),5>=b.match_length&&(b.strategy===V||b.match_length===J&&4096<b.strstart-b.match_start)&&(b.match_length=J-1)),b.prev_length>=J&&b.match_length<=b.prev_length){f= +b.strstart+b.lookahead-J;e=D._tr_tally(b,b.strstart-1-b.prev_match,b.prev_length-J);b.lookahead-=b.prev_length-1;b.prev_length-=2;do++b.strstart<=f&&(b.ins_h=(b.ins_h<<b.hash_shift^b.window[b.strstart+J-1])&b.hash_mask,d=b.prev[b.strstart&b.w_mask]=b.head[b.ins_h],b.head[b.ins_h]=b.strstart);while(0!==--b.prev_length);if(b.match_available=0,b.match_length=J-1,b.strstart++,e&&(h(b,!1),0===b.strm.avail_out))return P}else if(b.match_available){if(e=D._tr_tally(b,0,b.window[b.strstart-1]),e&&h(b,!1), +b.strstart++,b.lookahead--,0===b.strm.avail_out)return P}else b.match_available=1,b.strstart++,b.lookahead--}return b.match_available&&(D._tr_tally(b,0,b.window[b.strstart-1]),b.match_available=0),b.insert=b.strstart<J-1?b.strstart:J-1,c===C?(h(b,!0),0===b.strm.avail_out?Z:O):b.last_lit&&(h(b,!1),0===b.strm.avail_out)?P:T}function q(b,c,d,e,f){this.good_length=b;this.max_lazy=c;this.nice_length=d;this.max_chain=e;this.func=f}function t(){this.strm=null;this.status=0;this.pending_buf=null;this.wrap= this.pending=this.pending_out=this.pending_buf_size=0;this.gzhead=null;this.gzindex=0;this.method=W;this.last_flush=-1;this.w_mask=this.w_bits=this.w_size=0;this.window=null;this.window_size=0;this.head=this.prev=null;this.nice_match=this.good_match=this.strategy=this.level=this.max_lazy_match=this.max_chain_length=this.prev_length=this.lookahead=this.match_start=this.strstart=this.match_available=this.prev_match=this.match_length=this.block_start=this.hash_shift=this.hash_mask=this.hash_bits=this.hash_size= -this.ins_h=0;this.dyn_ltree=new u.Buf16(2*da);this.dyn_dtree=new u.Buf16(2*(2*J+1));this.bl_tree=new u.Buf16(2*(2*G+1));f(this.dyn_ltree);f(this.dyn_dtree);f(this.bl_tree);this.bl_desc=this.d_desc=this.l_desc=null;this.bl_count=new u.Buf16(N+1);this.heap=new u.Buf16(2*P+1);f(this.heap);this.heap_max=this.heap_len=0;this.depth=new u.Buf16(2*P+1);f(this.depth);this.bi_valid=this.bi_buf=this.insert=this.matches=this.static_len=this.opt_len=this.d_buf=this.last_lit=this.lit_bufsize=this.l_buf=0}function z(b){var c; -return b&&b.state?(b.total_in=b.total_out=0,b.data_type=ca,c=b.state,c.pending=0,c.pending_out=0,0>c.wrap&&(c.wrap=-c.wrap),c.status=c.wrap?ea:S,b.adler=2===c.wrap?0:1,c.last_flush=A,D._tr_init(c),L):e(b,K)}function w(b){var c=z(b);c===L&&(b=b.state,b.window_size=2*b.w_size,f(b.head),b.max_lazy_match=y[b.level].max_lazy,b.good_match=y[b.level].good_length,b.nice_match=y[b.level].nice_length,b.max_chain_length=y[b.level].max_chain,b.strstart=0,b.block_start=0,b.lookahead=0,b.insert=0,b.match_length= -b.prev_length=I-1,b.match_available=0,b.ins_h=0);return c}function x(b,c,d,f,g,h){if(!b)return K;var k=1;if(c===H&&(c=6),0>f?(k=0,f=-f):15<f&&(k=2,f-=16),1>g||g>v||d!==W||8>f||15<f||0>c||9<c||0>h||h>U)return e(b,K);8===f&&(f=9);var l=new t;return b.state=l,l.strm=b,l.wrap=k,l.gzhead=null,l.w_bits=f,l.w_size=1<<l.w_bits,l.w_mask=l.w_size-1,l.hash_bits=g+7,l.hash_size=1<<l.hash_bits,l.hash_mask=l.hash_size-1,l.hash_shift=~~((l.hash_bits+I-1)/I),l.window=new u.Buf8(2*l.w_size),l.head=new u.Buf16(l.hash_size), -l.prev=new u.Buf16(l.w_size),l.lit_bufsize=1<<g+6,l.pending_buf_size=4*l.lit_bufsize,l.pending_buf=new u.Buf8(l.pending_buf_size),l.d_buf=1*l.lit_bufsize,l.l_buf=3*l.lit_bufsize,l.level=c,l.strategy=h,l.method=d,w(b)}var y,u=b("../utils/common"),D=b("./trees"),F=b("./adler32"),E=b("./crc32"),B=b("./messages"),A=0,C=4,L=0,K=-2,H=-1,V=1,U=4,ca=2,W=8,v=9,P=286,J=30,G=19,da=2*P+1,N=15,I=3,M=258,aa=M+I+1,ea=42,S=113,Q=1,T=2,Y=3,O=4;y=[new q(0,0,0,0,function(b,c){var d=65535;for(d>b.pending_buf_size-5&& -(d=b.pending_buf_size-5);;){if(1>=b.lookahead){if(n(b),0===b.lookahead&&c===A)return Q;if(0===b.lookahead)break}b.strstart+=b.lookahead;b.lookahead=0;var e=b.block_start+d;if((0===b.strstart||b.strstart>=e)&&(b.lookahead=b.strstart-e,b.strstart=e,h(b,!1),0===b.strm.avail_out)||b.strstart-b.block_start>=b.w_size-aa&&(h(b,!1),0===b.strm.avail_out))return Q}return b.insert=0,c===C?(h(b,!0),0===b.strm.avail_out?Y:O):(b.strstart>b.block_start&&h(b,!1),Q)}),new q(4,4,8,4,p),new q(4,5,16,8,p),new q(4,6, -32,32,p),new q(4,4,16,16,r),new q(8,16,32,32,r),new q(8,16,128,128,r),new q(8,32,128,256,r),new q(32,128,258,1024,r),new q(32,258,258,4096,r)];d.deflateInit=function(b,c){return x(b,c,W,15,8,0)};d.deflateInit2=x;d.deflateReset=w;d.deflateResetKeep=z;d.deflateSetHeader=function(b,c){return b&&b.state?2!==b.state.wrap?K:(b.state.gzhead=c,L):K};d.deflate=function(b,c){var d,m,v,p;if(!b||!b.state||5<c||0>c)return b?e(b,K):K;if(m=b.state,!b.output||!b.input&&0!==b.avail_in||666===m.status&&c!==C)return e(b, +this.ins_h=0;this.dyn_ltree=new u.Buf16(2*da);this.dyn_dtree=new u.Buf16(2*(2*G+1));this.bl_tree=new u.Buf16(2*(2*H+1));f(this.dyn_ltree);f(this.dyn_dtree);f(this.bl_tree);this.bl_desc=this.d_desc=this.l_desc=null;this.bl_count=new u.Buf16(N+1);this.heap=new u.Buf16(2*Q+1);f(this.heap);this.heap_max=this.heap_len=0;this.depth=new u.Buf16(2*Q+1);f(this.depth);this.bi_valid=this.bi_buf=this.insert=this.matches=this.static_len=this.opt_len=this.d_buf=this.last_lit=this.lit_bufsize=this.l_buf=0}function z(b){var c; +return b&&b.state?(b.total_in=b.total_out=0,b.data_type=ca,c=b.state,c.pending=0,c.pending_out=0,0>c.wrap&&(c.wrap=-c.wrap),c.status=c.wrap?ea:S,b.adler=2===c.wrap?0:1,c.last_flush=A,D._tr_init(c),L):e(b,K)}function x(b){var c=z(b);c===L&&(b=b.state,b.window_size=2*b.w_size,f(b.head),b.max_lazy_match=y[b.level].max_lazy,b.good_match=y[b.level].good_length,b.nice_match=y[b.level].nice_length,b.max_chain_length=y[b.level].max_chain,b.strstart=0,b.block_start=0,b.lookahead=0,b.insert=0,b.match_length= +b.prev_length=J-1,b.match_available=0,b.ins_h=0);return c}function w(b,c,d,f,g,h){if(!b)return K;var k=1;if(c===I&&(c=6),0>f?(k=0,f=-f):15<f&&(k=2,f-=16),1>g||g>v||d!==W||8>f||15<f||0>c||9<c||0>h||h>U)return e(b,K);8===f&&(f=9);var l=new t;return b.state=l,l.strm=b,l.wrap=k,l.gzhead=null,l.w_bits=f,l.w_size=1<<l.w_bits,l.w_mask=l.w_size-1,l.hash_bits=g+7,l.hash_size=1<<l.hash_bits,l.hash_mask=l.hash_size-1,l.hash_shift=~~((l.hash_bits+J-1)/J),l.window=new u.Buf8(2*l.w_size),l.head=new u.Buf16(l.hash_size), +l.prev=new u.Buf16(l.w_size),l.lit_bufsize=1<<g+6,l.pending_buf_size=4*l.lit_bufsize,l.pending_buf=new u.Buf8(l.pending_buf_size),l.d_buf=1*l.lit_bufsize,l.l_buf=3*l.lit_bufsize,l.level=c,l.strategy=h,l.method=d,x(b)}var y,u=b("../utils/common"),D=b("./trees"),F=b("./adler32"),E=b("./crc32"),B=b("./messages"),A=0,C=4,L=0,K=-2,I=-1,V=1,U=4,ca=2,W=8,v=9,Q=286,G=30,H=19,da=2*Q+1,N=15,J=3,M=258,aa=M+J+1,ea=42,S=113,P=1,T=2,Z=3,O=4;y=[new q(0,0,0,0,function(b,c){var d=65535;for(d>b.pending_buf_size-5&& +(d=b.pending_buf_size-5);;){if(1>=b.lookahead){if(n(b),0===b.lookahead&&c===A)return P;if(0===b.lookahead)break}b.strstart+=b.lookahead;b.lookahead=0;var e=b.block_start+d;if((0===b.strstart||b.strstart>=e)&&(b.lookahead=b.strstart-e,b.strstart=e,h(b,!1),0===b.strm.avail_out)||b.strstart-b.block_start>=b.w_size-aa&&(h(b,!1),0===b.strm.avail_out))return P}return b.insert=0,c===C?(h(b,!0),0===b.strm.avail_out?Z:O):(b.strstart>b.block_start&&h(b,!1),P)}),new q(4,4,8,4,p),new q(4,5,16,8,p),new q(4,6, +32,32,p),new q(4,4,16,16,r),new q(8,16,32,32,r),new q(8,16,128,128,r),new q(8,32,128,256,r),new q(32,128,258,1024,r),new q(32,258,258,4096,r)];d.deflateInit=function(b,c){return w(b,c,W,15,8,0)};d.deflateInit2=w;d.deflateReset=x;d.deflateResetKeep=z;d.deflateSetHeader=function(b,c){return b&&b.state?2!==b.state.wrap?K:(b.state.gzhead=c,L):K};d.deflate=function(b,c){var d,m,v,p;if(!b||!b.state||5<c||0>c)return b?e(b,K):K;if(m=b.state,!b.output||!b.input&&0!==b.avail_in||666===m.status&&c!==C)return e(b, 0===b.avail_out?-5:K);if(m.strm=b,d=m.last_flush,m.last_flush=c,m.status===ea)2===m.wrap?(b.adler=0,k(m,31),k(m,139),k(m,8),m.gzhead?(k(m,(m.gzhead.text?1:0)+(m.gzhead.hcrc?2:0)+(m.gzhead.extra?4:0)+(m.gzhead.name?8:0)+(m.gzhead.comment?16:0)),k(m,255&m.gzhead.time),k(m,m.gzhead.time>>8&255),k(m,m.gzhead.time>>16&255),k(m,m.gzhead.time>>24&255),k(m,9===m.level?2:2<=m.strategy||2>m.level?4:0),k(m,255&m.gzhead.os),m.gzhead.extra&&m.gzhead.extra.length&&(k(m,255&m.gzhead.extra.length),k(m,m.gzhead.extra.length>> 8&255)),m.gzhead.hcrc&&(b.adler=E(b.adler,m.pending_buf,m.pending,0)),m.gzindex=0,m.status=69):(k(m,0),k(m,0),k(m,0),k(m,0),k(m,0),k(m,9===m.level?2:2<=m.strategy||2>m.level?4:0),k(m,3),m.status=S)):(v=W+(m.w_bits-8<<4)<<8,v|=(2<=m.strategy||2>m.level?0:6>m.level?1:6===m.level?2:3)<<6,0!==m.strstart&&(v|=32),m.status=S,l(m,v+(31-v%31)),0!==m.strstart&&(l(m,b.adler>>>16),l(m,65535&b.adler)),b.adler=1);if(69===m.status)if(m.gzhead.extra){for(v=m.pending;m.gzindex<(65535&m.gzhead.extra.length)&&(m.pending!== m.pending_buf_size||(m.gzhead.hcrc&&m.pending>v&&(b.adler=E(b.adler,m.pending_buf,m.pending-v,v)),g(b),v=m.pending,m.pending!==m.pending_buf_size));)k(m,255&m.gzhead.extra[m.gzindex]),m.gzindex++;m.gzhead.hcrc&&m.pending>v&&(b.adler=E(b.adler,m.pending_buf,m.pending-v,v));m.gzindex===m.gzhead.extra.length&&(m.gzindex=0,m.status=73)}else m.status=73;if(73===m.status)if(m.gzhead.name){v=m.pending;do{if(m.pending===m.pending_buf_size&&(m.gzhead.hcrc&&m.pending>v&&(b.adler=E(b.adler,m.pending_buf,m.pending- v,v)),g(b),v=m.pending,m.pending===m.pending_buf_size)){p=1;break}p=m.gzindex<m.gzhead.name.length?255&m.gzhead.name.charCodeAt(m.gzindex++):0;k(m,p)}while(0!==p);m.gzhead.hcrc&&m.pending>v&&(b.adler=E(b.adler,m.pending_buf,m.pending-v,v));0===p&&(m.gzindex=0,m.status=91)}else m.status=91;if(91===m.status)if(m.gzhead.comment){v=m.pending;do{if(m.pending===m.pending_buf_size&&(m.gzhead.hcrc&&m.pending>v&&(b.adler=E(b.adler,m.pending_buf,m.pending-v,v)),g(b),v=m.pending,m.pending===m.pending_buf_size)){p= 1;break}p=m.gzindex<m.gzhead.comment.length?255&m.gzhead.comment.charCodeAt(m.gzindex++):0;k(m,p)}while(0!==p);m.gzhead.hcrc&&m.pending>v&&(b.adler=E(b.adler,m.pending_buf,m.pending-v,v));0===p&&(m.status=103)}else m.status=103;if(103===m.status&&(m.gzhead.hcrc?(m.pending+2>m.pending_buf_size&&g(b),m.pending+2<=m.pending_buf_size&&(k(m,255&b.adler),k(m,b.adler>>8&255),b.adler=0,m.status=S)):m.status=S),0!==m.pending){if(g(b),0===b.avail_out)return m.last_flush=-1,L}else if(0===b.avail_in&&(c<<1)- -(4<c?9:0)<=(d<<1)-(4<d?9:0)&&c!==C)return e(b,-5);if(666===m.status&&0!==b.avail_in)return e(b,-5);if(0!==b.avail_in||0!==m.lookahead||c!==A&&666!==m.status){var q;if(2===m.strategy)a:{for(var r;;){if(0===m.lookahead&&(n(m),0===m.lookahead)){if(c===A){q=Q;break a}break}if(m.match_length=0,r=D._tr_tally(m,0,m.window[m.strstart]),m.lookahead--,m.strstart++,r&&(h(m,!1),0===m.strm.avail_out)){q=Q;break a}}q=(m.insert=0,c===C?(h(m,!0),0===m.strm.avail_out?Y:O):m.last_lit&&(h(m,!1),0===m.strm.avail_out)? -Q:T)}else if(3===m.strategy)a:{var J,P;for(r=m.window;;){if(m.lookahead<=M){if(n(m),m.lookahead<=M&&c===A){q=Q;break a}if(0===m.lookahead)break}if(m.match_length=0,m.lookahead>=I&&0<m.strstart&&(P=m.strstart-1,J=r[P],J===r[++P]&&J===r[++P]&&J===r[++P])){for(d=m.strstart+M;J===r[++P]&&J===r[++P]&&J===r[++P]&&J===r[++P]&&J===r[++P]&&J===r[++P]&&J===r[++P]&&J===r[++P]&&P<d;);m.match_length=M-(d-P);m.match_length>m.lookahead&&(m.match_length=m.lookahead)}if(m.match_length>=I?(q=D._tr_tally(m,1,m.match_length- -I),m.lookahead-=m.match_length,m.strstart+=m.match_length,m.match_length=0):(q=D._tr_tally(m,0,m.window[m.strstart]),m.lookahead--,m.strstart++),q&&(h(m,!1),0===m.strm.avail_out)){q=Q;break a}}q=(m.insert=0,c===C?(h(m,!0),0===m.strm.avail_out?Y:O):m.last_lit&&(h(m,!1),0===m.strm.avail_out)?Q:T)}else q=y[m.level].func(m,c);if(q!==Y&&q!==O||(m.status=666),q===Q||q===Y)return 0===b.avail_out&&(m.last_flush=-1),L;if(q===T&&(1===c?D._tr_align(m):5!==c&&(D._tr_stored_block(m,0,0,!1),3===c&&(f(m.head),0=== +(4<c?9:0)<=(d<<1)-(4<d?9:0)&&c!==C)return e(b,-5);if(666===m.status&&0!==b.avail_in)return e(b,-5);if(0!==b.avail_in||0!==m.lookahead||c!==A&&666!==m.status){var q;if(2===m.strategy)a:{for(var r;;){if(0===m.lookahead&&(n(m),0===m.lookahead)){if(c===A){q=P;break a}break}if(m.match_length=0,r=D._tr_tally(m,0,m.window[m.strstart]),m.lookahead--,m.strstart++,r&&(h(m,!1),0===m.strm.avail_out)){q=P;break a}}q=(m.insert=0,c===C?(h(m,!0),0===m.strm.avail_out?Z:O):m.last_lit&&(h(m,!1),0===m.strm.avail_out)? +P:T)}else if(3===m.strategy)a:{var G,Q;for(r=m.window;;){if(m.lookahead<=M){if(n(m),m.lookahead<=M&&c===A){q=P;break a}if(0===m.lookahead)break}if(m.match_length=0,m.lookahead>=J&&0<m.strstart&&(Q=m.strstart-1,G=r[Q],G===r[++Q]&&G===r[++Q]&&G===r[++Q])){for(d=m.strstart+M;G===r[++Q]&&G===r[++Q]&&G===r[++Q]&&G===r[++Q]&&G===r[++Q]&&G===r[++Q]&&G===r[++Q]&&G===r[++Q]&&Q<d;);m.match_length=M-(d-Q);m.match_length>m.lookahead&&(m.match_length=m.lookahead)}if(m.match_length>=J?(q=D._tr_tally(m,1,m.match_length- +J),m.lookahead-=m.match_length,m.strstart+=m.match_length,m.match_length=0):(q=D._tr_tally(m,0,m.window[m.strstart]),m.lookahead--,m.strstart++),q&&(h(m,!1),0===m.strm.avail_out)){q=P;break a}}q=(m.insert=0,c===C?(h(m,!0),0===m.strm.avail_out?Z:O):m.last_lit&&(h(m,!1),0===m.strm.avail_out)?P:T)}else q=y[m.level].func(m,c);if(q!==Z&&q!==O||(m.status=666),q===P||q===Z)return 0===b.avail_out&&(m.last_flush=-1),L;if(q===T&&(1===c?D._tr_align(m):5!==c&&(D._tr_stored_block(m,0,0,!1),3===c&&(f(m.head),0=== m.lookahead&&(m.strstart=0,m.block_start=0,m.insert=0))),g(b),0===b.avail_out))return m.last_flush=-1,L}return c!==C?L:0>=m.wrap?1:(2===m.wrap?(k(m,255&b.adler),k(m,b.adler>>8&255),k(m,b.adler>>16&255),k(m,b.adler>>24&255),k(m,255&b.total_in),k(m,b.total_in>>8&255),k(m,b.total_in>>16&255),k(m,b.total_in>>24&255)):(l(m,b.adler>>>16),l(m,65535&b.adler)),g(b),0<m.wrap&&(m.wrap=-m.wrap),0!==m.pending?L:1)};d.deflateEnd=function(b){var c;return b&&b.state?(c=b.state.status,c!==ea&&69!==c&&73!==c&&91!== c&&103!==c&&c!==S&&666!==c?e(b,K):(b.state=null,c===S?e(b,-3):L)):K};d.deflateSetDictionary=function(b,c){var d,e,g,h,k,m,l;e=c.length;if(!b||!b.state||(d=b.state,h=d.wrap,2===h||1===h&&d.status!==ea||d.lookahead))return K;1===h&&(b.adler=F(b.adler,c,e,0));d.wrap=0;e>=d.w_size&&(0===h&&(f(d.head),d.strstart=0,d.block_start=0,d.insert=0),k=new u.Buf8(d.w_size),u.arraySet(k,c,e-d.w_size,d.w_size,0),c=k,e=d.w_size);k=b.avail_in;m=b.next_in;l=b.input;b.avail_in=e;b.next_in=0;b.input=c;for(n(d);d.lookahead>= -I;){e=d.strstart;g=d.lookahead-(I-1);do d.ins_h=(d.ins_h<<d.hash_shift^d.window[e+I-1])&d.hash_mask,d.prev[e&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=e,e++;while(--g);d.strstart=e;d.lookahead=I-1;n(d)}return d.strstart+=d.lookahead,d.block_start=d.strstart,d.insert=d.lookahead,d.lookahead=0,d.match_length=d.prev_length=I-1,d.match_available=0,b.next_in=m,b.input=l,b.avail_in=k,d.wrap=h,L};d.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":3,"./adler32":5,"./crc32":7,"./messages":13, -"./trees":14}],9:[function(b,c,d){c.exports=function(){this.os=this.xflags=this.time=this.text=0;this.extra=null;this.extra_len=0;this.comment=this.name="";this.hcrc=0;this.done=!1}},{}],10:[function(b,c,d){c.exports=function(b,c){var d,e,f,l,m,n,p,r,q,t,z,w,x,y,u,D,F,E,B,A,C,L,K,H;d=b.state;e=b.next_in;K=b.input;f=e+(b.avail_in-5);l=b.next_out;H=b.output;m=l-(c-b.avail_out);n=l+(b.avail_out-257);p=d.dmax;r=d.wsize;q=d.whave;t=d.wnext;z=d.window;w=d.hold;x=d.bits;y=d.lencode;u=d.distcode;D=(1<<d.lenbits)- -1;F=(1<<d.distbits)-1;a:do b:for(15>x&&(w+=K[e++]<<x,x+=8,w+=K[e++]<<x,x+=8),E=y[w&D];;){if(B=E>>>24,w>>>=B,x-=B,B=E>>>16&255,0===B)H[l++]=65535&E;else{if(!(16&B)){if(0===(64&B)){E=y[(65535&E)+(w&(1<<B)-1)];continue b}if(32&B){d.mode=12;break a}b.msg="invalid literal/length code";d.mode=30;break a}A=65535&E;(B&=15)&&(x<B&&(w+=K[e++]<<x,x+=8),A+=w&(1<<B)-1,w>>>=B,x-=B);15>x&&(w+=K[e++]<<x,x+=8,w+=K[e++]<<x,x+=8);E=u[w&F];c:for(;;){if(B=E>>>24,w>>>=B,x-=B,B=E>>>16&255,!(16&B)){if(0===(64&B)){E=u[(65535& -E)+(w&(1<<B)-1)];continue c}b.msg="invalid distance code";d.mode=30;break a}if(C=65535&E,B&=15,x<B&&(w+=K[e++]<<x,x+=8,x<B&&(w+=K[e++]<<x,x+=8)),C+=w&(1<<B)-1,C>p){b.msg="invalid distance too far back";d.mode=30;break a}if(w>>>=B,x-=B,B=l-m,C>B){if(B=C-B,B>q&&d.sane){b.msg="invalid distance too far back";d.mode=30;break a}if(E=0,L=z,0===t){if(E+=r-B,B<A){A-=B;do H[l++]=z[E++];while(--B);E=l-C;L=H}}else if(t<B){if(E+=r+t-B,B-=t,B<A){A-=B;do H[l++]=z[E++];while(--B);if(E=0,t<A){B=t;A-=B;do H[l++]=z[E++]; -while(--B);E=l-C;L=H}}}else if(E+=t-B,B<A){A-=B;do H[l++]=z[E++];while(--B);E=l-C;L=H}for(;2<A;)H[l++]=L[E++],H[l++]=L[E++],H[l++]=L[E++],A-=3;A&&(H[l++]=L[E++],1<A&&(H[l++]=L[E++]))}else{E=l-C;do H[l++]=H[E++],H[l++]=H[E++],H[l++]=H[E++],A-=3;while(2<A);A&&(H[l++]=H[E++],1<A&&(H[l++]=H[E++]))}break}}break}while(e<f&&l<n);A=x>>3;e-=A;x-=A<<3;b.next_in=e;b.next_out=l;b.avail_in=e<f?5+(f-e):5-(e-f);b.avail_out=l<n?257+(n-l):257-(l-n);d.hold=w&(1<<x)-1;d.bits=x}},{}],11:[function(b,c,d){function e(b){return(b>>> +J;){e=d.strstart;g=d.lookahead-(J-1);do d.ins_h=(d.ins_h<<d.hash_shift^d.window[e+J-1])&d.hash_mask,d.prev[e&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=e,e++;while(--g);d.strstart=e;d.lookahead=J-1;n(d)}return d.strstart+=d.lookahead,d.block_start=d.strstart,d.insert=d.lookahead,d.lookahead=0,d.match_length=d.prev_length=J-1,d.match_available=0,b.next_in=m,b.input=l,b.avail_in=k,d.wrap=h,L};d.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":3,"./adler32":5,"./crc32":7,"./messages":13, +"./trees":14}],9:[function(b,c,d){c.exports=function(){this.os=this.xflags=this.time=this.text=0;this.extra=null;this.extra_len=0;this.comment=this.name="";this.hcrc=0;this.done=!1}},{}],10:[function(b,c,d){c.exports=function(b,c){var d,e,f,l,m,n,p,r,q,t,z,x,w,y,u,D,F,E,B,A,C,L,K,I;d=b.state;e=b.next_in;K=b.input;f=e+(b.avail_in-5);l=b.next_out;I=b.output;m=l-(c-b.avail_out);n=l+(b.avail_out-257);p=d.dmax;r=d.wsize;q=d.whave;t=d.wnext;z=d.window;x=d.hold;w=d.bits;y=d.lencode;u=d.distcode;D=(1<<d.lenbits)- +1;F=(1<<d.distbits)-1;a:do b:for(15>w&&(x+=K[e++]<<w,w+=8,x+=K[e++]<<w,w+=8),E=y[x&D];;){if(B=E>>>24,x>>>=B,w-=B,B=E>>>16&255,0===B)I[l++]=65535&E;else{if(!(16&B)){if(0===(64&B)){E=y[(65535&E)+(x&(1<<B)-1)];continue b}if(32&B){d.mode=12;break a}b.msg="invalid literal/length code";d.mode=30;break a}A=65535&E;(B&=15)&&(w<B&&(x+=K[e++]<<w,w+=8),A+=x&(1<<B)-1,x>>>=B,w-=B);15>w&&(x+=K[e++]<<w,w+=8,x+=K[e++]<<w,w+=8);E=u[x&F];c:for(;;){if(B=E>>>24,x>>>=B,w-=B,B=E>>>16&255,!(16&B)){if(0===(64&B)){E=u[(65535& +E)+(x&(1<<B)-1)];continue c}b.msg="invalid distance code";d.mode=30;break a}if(C=65535&E,B&=15,w<B&&(x+=K[e++]<<w,w+=8,w<B&&(x+=K[e++]<<w,w+=8)),C+=x&(1<<B)-1,C>p){b.msg="invalid distance too far back";d.mode=30;break a}if(x>>>=B,w-=B,B=l-m,C>B){if(B=C-B,B>q&&d.sane){b.msg="invalid distance too far back";d.mode=30;break a}if(E=0,L=z,0===t){if(E+=r-B,B<A){A-=B;do I[l++]=z[E++];while(--B);E=l-C;L=I}}else if(t<B){if(E+=r+t-B,B-=t,B<A){A-=B;do I[l++]=z[E++];while(--B);if(E=0,t<A){B=t;A-=B;do I[l++]=z[E++]; +while(--B);E=l-C;L=I}}}else if(E+=t-B,B<A){A-=B;do I[l++]=z[E++];while(--B);E=l-C;L=I}for(;2<A;)I[l++]=L[E++],I[l++]=L[E++],I[l++]=L[E++],A-=3;A&&(I[l++]=L[E++],1<A&&(I[l++]=L[E++]))}else{E=l-C;do I[l++]=I[E++],I[l++]=I[E++],I[l++]=I[E++],A-=3;while(2<A);A&&(I[l++]=I[E++],1<A&&(I[l++]=I[E++]))}break}}break}while(e<f&&l<n);A=w>>3;e-=A;w-=A<<3;b.next_in=e;b.next_out=l;b.avail_in=e<f?5+(f-e):5-(e-f);b.avail_out=l<n?257+(n-l):257-(l-n);d.hold=x&(1<<w)-1;d.bits=w}},{}],11:[function(b,c,d){function e(b){return(b>>> 24&255)+(b>>>8&65280)+((65280&b)<<8)+((255&b)<<24)}function f(){this.mode=0;this.last=!1;this.wrap=0;this.havedict=!1;this.total=this.check=this.dmax=this.flags=0;this.head=null;this.wnext=this.whave=this.wsize=this.wbits=0;this.window=null;this.extra=this.offset=this.length=this.bits=this.hold=0;this.distcode=this.lencode=null;this.have=this.ndist=this.nlen=this.ncode=this.distbits=this.lenbits=0;this.next=null;this.lens=new r.Buf16(320);this.work=new r.Buf16(288);this.distdyn=this.lendyn=null;this.was= -this.back=this.sane=0}function g(b){var c;return b&&b.state?(c=b.state,b.total_in=b.total_out=c.total=0,b.msg="",c.wrap&&(b.adler=1&c.wrap),c.mode=u,c.last=0,c.havedict=0,c.dmax=32768,c.head=null,c.hold=0,c.bits=0,c.lencode=c.lendyn=new r.Buf32(D),c.distcode=c.distdyn=new r.Buf32(F),c.sane=1,c.back=-1,x):y}function h(b){var c;return b&&b.state?(c=b.state,c.wsize=0,c.whave=0,c.wnext=0,g(b)):y}function k(b,c){var d,e;return b&&b.state?(e=b.state,0>c?(d=0,c=-c):(d=(c>>4)+1,48>c&&(c&=15)),c&&(8>c||15< -c)?y:(null!==e.window&&e.wbits!==c&&(e.window=null),e.wrap=d,e.wbits=c,h(b))):y}function l(b,c){var d,e;return b?(e=new f,b.state=e,e.window=null,d=k(b,c),d!==x&&(b.state=null),d):y}function m(b,c,d,e){var f;b=b.state;return null===b.window&&(b.wsize=1<<b.wbits,b.wnext=0,b.whave=0,b.window=new r.Buf8(b.wsize)),e>=b.wsize?(r.arraySet(b.window,c,d-b.wsize,b.wsize,0),b.wnext=0,b.whave=b.wsize):(f=b.wsize-b.wnext,f>e&&(f=e),r.arraySet(b.window,c,d-e,f,b.wnext),e-=f,e?(r.arraySet(b.window,c,d-e,e,0),b.wnext= -e,b.whave=b.wsize):(b.wnext+=f,b.wnext===b.wsize&&(b.wnext=0),b.whave<b.wsize&&(b.whave+=f))),0}var n,p,r=b("../utils/common"),q=b("./adler32"),t=b("./crc32"),z=b("./inffast"),w=b("./inftrees"),x=0,y=-2,u=1,D=852,F=592,E=!0;d.inflateReset=h;d.inflateReset2=k;d.inflateResetKeep=g;d.inflateInit=function(b){return l(b,15)};d.inflateInit2=l;d.inflate=function(b,c){var d,f,g,h,k,l,B,A,v,P,J,G,da,N,I,M,D,F,S,Q,T,Y,O=0,R=new r.Buf8(4),fa=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!b||!b.state|| -!b.output||!b.input&&0!==b.avail_in)return y;d=b.state;12===d.mode&&(d.mode=13);k=b.next_out;g=b.output;B=b.avail_out;h=b.next_in;f=b.input;l=b.avail_in;A=d.hold;v=d.bits;P=l;J=B;T=x;a:for(;;)switch(d.mode){case u:if(0===d.wrap){d.mode=13;break}for(;16>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(2&d.wrap&&35615===A){d.check=0;R[0]=255&A;R[1]=A>>>8&255;d.check=t(d.check,R,2,0);v=A=0;d.mode=2;break}if(d.flags=0,d.head&&(d.head.done=!1),!(1&d.wrap)||(((255&A)<<8)+(A>>8))%31){b.msg="incorrect header check"; -d.mode=30;break}if(8!==(15&A)){b.msg="unknown compression method";d.mode=30;break}if(A>>>=4,v-=4,Q=(15&A)+8,0===d.wbits)d.wbits=Q;else if(Q>d.wbits){b.msg="invalid window size";d.mode=30;break}d.dmax=1<<Q;b.adler=d.check=1;d.mode=512&A?10:12;v=A=0;break;case 2:for(;16>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(d.flags=A,8!==(255&d.flags)){b.msg="unknown compression method";d.mode=30;break}if(57344&d.flags){b.msg="unknown header flags set";d.mode=30;break}d.head&&(d.head.text=A>>8&1);512&d.flags&& +this.back=this.sane=0}function g(b){var c;return b&&b.state?(c=b.state,b.total_in=b.total_out=c.total=0,b.msg="",c.wrap&&(b.adler=1&c.wrap),c.mode=u,c.last=0,c.havedict=0,c.dmax=32768,c.head=null,c.hold=0,c.bits=0,c.lencode=c.lendyn=new r.Buf32(D),c.distcode=c.distdyn=new r.Buf32(F),c.sane=1,c.back=-1,w):y}function h(b){var c;return b&&b.state?(c=b.state,c.wsize=0,c.whave=0,c.wnext=0,g(b)):y}function k(b,c){var d,e;return b&&b.state?(e=b.state,0>c?(d=0,c=-c):(d=(c>>4)+1,48>c&&(c&=15)),c&&(8>c||15< +c)?y:(null!==e.window&&e.wbits!==c&&(e.window=null),e.wrap=d,e.wbits=c,h(b))):y}function l(b,c){var d,e;return b?(e=new f,b.state=e,e.window=null,d=k(b,c),d!==w&&(b.state=null),d):y}function m(b,c,d,e){var f;b=b.state;return null===b.window&&(b.wsize=1<<b.wbits,b.wnext=0,b.whave=0,b.window=new r.Buf8(b.wsize)),e>=b.wsize?(r.arraySet(b.window,c,d-b.wsize,b.wsize,0),b.wnext=0,b.whave=b.wsize):(f=b.wsize-b.wnext,f>e&&(f=e),r.arraySet(b.window,c,d-e,f,b.wnext),e-=f,e?(r.arraySet(b.window,c,d-e,e,0),b.wnext= +e,b.whave=b.wsize):(b.wnext+=f,b.wnext===b.wsize&&(b.wnext=0),b.whave<b.wsize&&(b.whave+=f))),0}var n,p,r=b("../utils/common"),q=b("./adler32"),t=b("./crc32"),z=b("./inffast"),x=b("./inftrees"),w=0,y=-2,u=1,D=852,F=592,E=!0;d.inflateReset=h;d.inflateReset2=k;d.inflateResetKeep=g;d.inflateInit=function(b){return l(b,15)};d.inflateInit2=l;d.inflate=function(b,c){var d,f,g,h,k,l,B,A,v,Q,G,H,da,N,J,M,D,F,S,P,T,Z,O=0,R=new r.Buf8(4),fa=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!b||!b.state|| +!b.output||!b.input&&0!==b.avail_in)return y;d=b.state;12===d.mode&&(d.mode=13);k=b.next_out;g=b.output;B=b.avail_out;h=b.next_in;f=b.input;l=b.avail_in;A=d.hold;v=d.bits;Q=l;G=B;T=w;a:for(;;)switch(d.mode){case u:if(0===d.wrap){d.mode=13;break}for(;16>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(2&d.wrap&&35615===A){d.check=0;R[0]=255&A;R[1]=A>>>8&255;d.check=t(d.check,R,2,0);v=A=0;d.mode=2;break}if(d.flags=0,d.head&&(d.head.done=!1),!(1&d.wrap)||(((255&A)<<8)+(A>>8))%31){b.msg="incorrect header check"; +d.mode=30;break}if(8!==(15&A)){b.msg="unknown compression method";d.mode=30;break}if(A>>>=4,v-=4,P=(15&A)+8,0===d.wbits)d.wbits=P;else if(P>d.wbits){b.msg="invalid window size";d.mode=30;break}d.dmax=1<<P;b.adler=d.check=1;d.mode=512&A?10:12;v=A=0;break;case 2:for(;16>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(d.flags=A,8!==(255&d.flags)){b.msg="unknown compression method";d.mode=30;break}if(57344&d.flags){b.msg="unknown header flags set";d.mode=30;break}d.head&&(d.head.text=A>>8&1);512&d.flags&& (R[0]=255&A,R[1]=A>>>8&255,d.check=t(d.check,R,2,0));v=A=0;d.mode=3;case 3:for(;32>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}d.head&&(d.head.time=A);512&d.flags&&(R[0]=255&A,R[1]=A>>>8&255,R[2]=A>>>16&255,R[3]=A>>>24&255,d.check=t(d.check,R,4,0));v=A=0;d.mode=4;case 4:for(;16>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}d.head&&(d.head.xflags=255&A,d.head.os=A>>8);512&d.flags&&(R[0]=255&A,R[1]=A>>>8&255,d.check=t(d.check,R,2,0));v=A=0;d.mode=5;case 5:if(1024&d.flags){for(;16>v;){if(0===l)break a;l--; -A+=f[h++]<<v;v+=8}d.length=A;d.head&&(d.head.extra_len=A);512&d.flags&&(R[0]=255&A,R[1]=A>>>8&255,d.check=t(d.check,R,2,0));v=A=0}else d.head&&(d.head.extra=null);d.mode=6;case 6:if(1024&d.flags&&(G=d.length,G>l&&(G=l),G&&(d.head&&(Q=d.head.extra_len-d.length,d.head.extra||(d.head.extra=Array(d.head.extra_len)),r.arraySet(d.head.extra,f,h,G,Q)),512&d.flags&&(d.check=t(d.check,f,G,h)),l-=G,h+=G,d.length-=G),d.length))break a;d.length=0;d.mode=7;case 7:if(2048&d.flags){if(0===l)break a;G=0;do Q=f[h+ -G++],d.head&&Q&&65536>d.length&&(d.head.name+=String.fromCharCode(Q));while(Q&&G<l);if(512&d.flags&&(d.check=t(d.check,f,G,h)),l-=G,h+=G,Q)break a}else d.head&&(d.head.name=null);d.length=0;d.mode=8;case 8:if(4096&d.flags){if(0===l)break a;G=0;do Q=f[h+G++],d.head&&Q&&65536>d.length&&(d.head.comment+=String.fromCharCode(Q));while(Q&&G<l);if(512&d.flags&&(d.check=t(d.check,f,G,h)),l-=G,h+=G,Q)break a}else d.head&&(d.head.comment=null);d.mode=9;case 9:if(512&d.flags){for(;16>v;){if(0===l)break a;l--; +A+=f[h++]<<v;v+=8}d.length=A;d.head&&(d.head.extra_len=A);512&d.flags&&(R[0]=255&A,R[1]=A>>>8&255,d.check=t(d.check,R,2,0));v=A=0}else d.head&&(d.head.extra=null);d.mode=6;case 6:if(1024&d.flags&&(H=d.length,H>l&&(H=l),H&&(d.head&&(P=d.head.extra_len-d.length,d.head.extra||(d.head.extra=Array(d.head.extra_len)),r.arraySet(d.head.extra,f,h,H,P)),512&d.flags&&(d.check=t(d.check,f,H,h)),l-=H,h+=H,d.length-=H),d.length))break a;d.length=0;d.mode=7;case 7:if(2048&d.flags){if(0===l)break a;H=0;do P=f[h+ +H++],d.head&&P&&65536>d.length&&(d.head.name+=String.fromCharCode(P));while(P&&H<l);if(512&d.flags&&(d.check=t(d.check,f,H,h)),l-=H,h+=H,P)break a}else d.head&&(d.head.name=null);d.length=0;d.mode=8;case 8:if(4096&d.flags){if(0===l)break a;H=0;do P=f[h+H++],d.head&&P&&65536>d.length&&(d.head.comment+=String.fromCharCode(P));while(P&&H<l);if(512&d.flags&&(d.check=t(d.check,f,H,h)),l-=H,h+=H,P)break a}else d.head&&(d.head.comment=null);d.mode=9;case 9:if(512&d.flags){for(;16>v;){if(0===l)break a;l--; A+=f[h++]<<v;v+=8}if(A!==(65535&d.check)){b.msg="header crc mismatch";d.mode=30;break}v=A=0}d.head&&(d.head.hcrc=d.flags>>9&1,d.head.done=!0);b.adler=d.check=0;d.mode=12;break;case 10:for(;32>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}b.adler=d.check=e(A);v=A=0;d.mode=11;case 11:if(0===d.havedict)return b.next_out=k,b.avail_out=B,b.next_in=h,b.avail_in=l,d.hold=A,d.bits=v,2;b.adler=d.check=1;d.mode=12;case 12:if(5===c||6===c)break a;case 13:if(d.last){A>>>=7&v;v-=7&v;d.mode=27;break}for(;3>v;){if(0=== -l)break a;l--;A+=f[h++]<<v;v+=8}switch(d.last=1&A,A>>>=1,--v,3&A){case 0:d.mode=14;break;case 1:M=d;if(E){n=new r.Buf32(512);p=new r.Buf32(32);for(N=0;144>N;)M.lens[N++]=8;for(;256>N;)M.lens[N++]=9;for(;280>N;)M.lens[N++]=7;for(;288>N;)M.lens[N++]=8;w(1,M.lens,0,288,n,0,M.work,{bits:9});for(N=0;32>N;)M.lens[N++]=5;w(2,M.lens,0,32,p,0,M.work,{bits:5});E=!1}M.lencode=n;M.lenbits=9;M.distcode=p;M.distbits=5;if(d.mode=20,6===c){A>>>=2;v-=2;break a}break;case 2:d.mode=17;break;case 3:b.msg="invalid block type", -d.mode=30}A>>>=2;v-=2;break;case 14:A>>>=7&v;for(v-=7&v;32>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if((65535&A)!==(A>>>16^65535)){b.msg="invalid stored block lengths";d.mode=30;break}if(d.length=65535&A,A=0,v=0,d.mode=15,6===c)break a;case 15:d.mode=16;case 16:if(G=d.length){if(G>l&&(G=l),G>B&&(G=B),0===G)break a;r.arraySet(g,f,h,G,k);l-=G;h+=G;B-=G;k+=G;d.length-=G;break}d.mode=12;break;case 17:for(;14>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(d.nlen=(31&A)+257,A>>>=5,v-=5,d.ndist=(31&A)+ -1,A>>>=5,v-=5,d.ncode=(15&A)+4,A>>>=4,v-=4,286<d.nlen||30<d.ndist){b.msg="too many length or distance symbols";d.mode=30;break}d.have=0;d.mode=18;case 18:for(;d.have<d.ncode;){for(;3>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}d.lens[fa[d.have++]]=7&A;A>>>=3;v-=3}for(;19>d.have;)d.lens[fa[d.have++]]=0;if(d.lencode=d.lendyn,d.lenbits=7,Y={bits:d.lenbits},T=w(0,d.lens,0,19,d.lencode,0,d.work,Y),d.lenbits=Y.bits,T){b.msg="invalid code lengths set";d.mode=30;break}d.have=0;d.mode=19;case 19:for(;d.have< -d.nlen+d.ndist;){for(;O=d.lencode[A&(1<<d.lenbits)-1],I=O>>>24,M=65535&O,!(I<=v);){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(16>M)A>>>=I,v-=I,d.lens[d.have++]=M;else{if(16===M){for(N=I+2;v<N;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(A>>>=I,v-=I,0===d.have){b.msg="invalid bit length repeat";d.mode=30;break}Q=d.lens[d.have-1];G=3+(3&A);A>>>=2;v-=2}else if(17===M){for(N=I+3;v<N;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}A>>>=I;v-=I;Q=0;G=3+(7&A);A>>>=3;v-=3}else{for(N=I+7;v<N;){if(0===l)break a;l--; -A+=f[h++]<<v;v+=8}A>>>=I;v-=I;Q=0;G=11+(127&A);A>>>=7;v-=7}if(d.have+G>d.nlen+d.ndist){b.msg="invalid bit length repeat";d.mode=30;break}for(;G--;)d.lens[d.have++]=Q}}if(30===d.mode)break;if(0===d.lens[256]){b.msg="invalid code -- missing end-of-block";d.mode=30;break}if(d.lenbits=9,Y={bits:d.lenbits},T=w(1,d.lens,0,d.nlen,d.lencode,0,d.work,Y),d.lenbits=Y.bits,T){b.msg="invalid literal/lengths set";d.mode=30;break}if(d.distbits=6,d.distcode=d.distdyn,Y={bits:d.distbits},T=w(2,d.lens,d.nlen,d.ndist, -d.distcode,0,d.work,Y),d.distbits=Y.bits,T){b.msg="invalid distances set";d.mode=30;break}if(d.mode=20,6===c)break a;case 20:d.mode=21;case 21:if(6<=l&&258<=B){b.next_out=k;b.avail_out=B;b.next_in=h;b.avail_in=l;d.hold=A;d.bits=v;z(b,J);k=b.next_out;g=b.output;B=b.avail_out;h=b.next_in;f=b.input;l=b.avail_in;A=d.hold;v=d.bits;12===d.mode&&(d.back=-1);break}for(d.back=0;O=d.lencode[A&(1<<d.lenbits)-1],I=O>>>24,N=O>>>16&255,M=65535&O,!(I<=v);){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(N&&0===(240&N)){D= -I;F=N;for(S=M;O=d.lencode[S+((A&(1<<D+F)-1)>>D)],I=O>>>24,N=O>>>16&255,M=65535&O,!(D+I<=v);){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}A>>>=D;v-=D;d.back+=D}if(A>>>=I,v-=I,d.back+=I,d.length=M,0===N){d.mode=26;break}if(32&N){d.back=-1;d.mode=12;break}if(64&N){b.msg="invalid literal/length code";d.mode=30;break}d.extra=15&N;d.mode=22;case 22:if(d.extra){for(N=d.extra;v<N;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}d.length+=A&(1<<d.extra)-1;A>>>=d.extra;v-=d.extra;d.back+=d.extra}d.was=d.length;d.mode=23; -case 23:for(;O=d.distcode[A&(1<<d.distbits)-1],I=O>>>24,N=O>>>16&255,M=65535&O,!(I<=v);){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(0===(240&N)){D=I;F=N;for(S=M;O=d.distcode[S+((A&(1<<D+F)-1)>>D)],I=O>>>24,N=O>>>16&255,M=65535&O,!(D+I<=v);){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}A>>>=D;v-=D;d.back+=D}if(A>>>=I,v-=I,d.back+=I,64&N){b.msg="invalid distance code";d.mode=30;break}d.offset=M;d.extra=15&N;d.mode=24;case 24:if(d.extra){for(N=d.extra;v<N;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}d.offset+= -A&(1<<d.extra)-1;A>>>=d.extra;v-=d.extra;d.back+=d.extra}if(d.offset>d.dmax){b.msg="invalid distance too far back";d.mode=30;break}d.mode=25;case 25:if(0===B)break a;if(G=J-B,d.offset>G){if(G=d.offset-G,G>d.whave&&d.sane){b.msg="invalid distance too far back";d.mode=30;break}G>d.wnext?(G-=d.wnext,da=d.wsize-G):da=d.wnext-G;G>d.length&&(G=d.length);N=d.window}else N=g,da=k-d.offset,G=d.length;G>B&&(G=B);B-=G;d.length-=G;do g[k++]=N[da++];while(--G);0===d.length&&(d.mode=21);break;case 26:if(0===B)break a; -g[k++]=d.length;B--;d.mode=21;break;case 27:if(d.wrap){for(;32>v;){if(0===l)break a;l--;A|=f[h++]<<v;v+=8}if(J-=B,b.total_out+=J,d.total+=J,J&&(b.adler=d.check=d.flags?t(d.check,g,J,k-J):q(d.check,g,J,k-J)),J=B,(d.flags?A:e(A))!==d.check){b.msg="incorrect data check";d.mode=30;break}v=A=0}d.mode=28;case 28:if(d.wrap&&d.flags){for(;32>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(A!==(4294967295&d.total)){b.msg="incorrect length check";d.mode=30;break}v=A=0}d.mode=29;case 29:T=1;break a;case 30:T= --3;break a;case 31:return-4;default:return y}return b.next_out=k,b.avail_out=B,b.next_in=h,b.avail_in=l,d.hold=A,d.bits=v,(d.wsize||J!==b.avail_out&&30>d.mode&&(27>d.mode||4!==c))&&m(b,b.output,b.next_out,J-b.avail_out)?(d.mode=31,-4):(P-=b.avail_in,J-=b.avail_out,b.total_in+=P,b.total_out+=J,d.total+=J,d.wrap&&J&&(b.adler=d.check=d.flags?t(d.check,g,J,b.next_out-J):q(d.check,g,J,b.next_out-J)),b.data_type=d.bits+(d.last?64:0)+(12===d.mode?128:0)+(20===d.mode||15===d.mode?256:0),(0===P&&0===J||4=== -c)&&T===x&&(T=-5),T)};d.inflateEnd=function(b){if(!b||!b.state)return y;var c=b.state;return c.window&&(c.window=null),b.state=null,x};d.inflateGetHeader=function(b,c){var d;return b&&b.state?(d=b.state,0===(2&d.wrap)?y:(d.head=c,c.done=!1,x)):y};d.inflateSetDictionary=function(b,c){var d,e,f=c.length;return b&&b.state?(d=b.state,0!==d.wrap&&11!==d.mode?y:11===d.mode&&(e=1,e=q(e,c,f,0),e!==d.check)?-3:m(b,c,f,f)?(d.mode=31,-4):(d.havedict=1,x)):y};d.inflateInfo="pako inflate (from Nodeca project)"}, +l)break a;l--;A+=f[h++]<<v;v+=8}switch(d.last=1&A,A>>>=1,--v,3&A){case 0:d.mode=14;break;case 1:M=d;if(E){n=new r.Buf32(512);p=new r.Buf32(32);for(N=0;144>N;)M.lens[N++]=8;for(;256>N;)M.lens[N++]=9;for(;280>N;)M.lens[N++]=7;for(;288>N;)M.lens[N++]=8;x(1,M.lens,0,288,n,0,M.work,{bits:9});for(N=0;32>N;)M.lens[N++]=5;x(2,M.lens,0,32,p,0,M.work,{bits:5});E=!1}M.lencode=n;M.lenbits=9;M.distcode=p;M.distbits=5;if(d.mode=20,6===c){A>>>=2;v-=2;break a}break;case 2:d.mode=17;break;case 3:b.msg="invalid block type", +d.mode=30}A>>>=2;v-=2;break;case 14:A>>>=7&v;for(v-=7&v;32>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if((65535&A)!==(A>>>16^65535)){b.msg="invalid stored block lengths";d.mode=30;break}if(d.length=65535&A,A=0,v=0,d.mode=15,6===c)break a;case 15:d.mode=16;case 16:if(H=d.length){if(H>l&&(H=l),H>B&&(H=B),0===H)break a;r.arraySet(g,f,h,H,k);l-=H;h+=H;B-=H;k+=H;d.length-=H;break}d.mode=12;break;case 17:for(;14>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(d.nlen=(31&A)+257,A>>>=5,v-=5,d.ndist=(31&A)+ +1,A>>>=5,v-=5,d.ncode=(15&A)+4,A>>>=4,v-=4,286<d.nlen||30<d.ndist){b.msg="too many length or distance symbols";d.mode=30;break}d.have=0;d.mode=18;case 18:for(;d.have<d.ncode;){for(;3>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}d.lens[fa[d.have++]]=7&A;A>>>=3;v-=3}for(;19>d.have;)d.lens[fa[d.have++]]=0;if(d.lencode=d.lendyn,d.lenbits=7,Z={bits:d.lenbits},T=x(0,d.lens,0,19,d.lencode,0,d.work,Z),d.lenbits=Z.bits,T){b.msg="invalid code lengths set";d.mode=30;break}d.have=0;d.mode=19;case 19:for(;d.have< +d.nlen+d.ndist;){for(;O=d.lencode[A&(1<<d.lenbits)-1],J=O>>>24,M=65535&O,!(J<=v);){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(16>M)A>>>=J,v-=J,d.lens[d.have++]=M;else{if(16===M){for(N=J+2;v<N;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(A>>>=J,v-=J,0===d.have){b.msg="invalid bit length repeat";d.mode=30;break}P=d.lens[d.have-1];H=3+(3&A);A>>>=2;v-=2}else if(17===M){for(N=J+3;v<N;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}A>>>=J;v-=J;P=0;H=3+(7&A);A>>>=3;v-=3}else{for(N=J+7;v<N;){if(0===l)break a;l--; +A+=f[h++]<<v;v+=8}A>>>=J;v-=J;P=0;H=11+(127&A);A>>>=7;v-=7}if(d.have+H>d.nlen+d.ndist){b.msg="invalid bit length repeat";d.mode=30;break}for(;H--;)d.lens[d.have++]=P}}if(30===d.mode)break;if(0===d.lens[256]){b.msg="invalid code -- missing end-of-block";d.mode=30;break}if(d.lenbits=9,Z={bits:d.lenbits},T=x(1,d.lens,0,d.nlen,d.lencode,0,d.work,Z),d.lenbits=Z.bits,T){b.msg="invalid literal/lengths set";d.mode=30;break}if(d.distbits=6,d.distcode=d.distdyn,Z={bits:d.distbits},T=x(2,d.lens,d.nlen,d.ndist, +d.distcode,0,d.work,Z),d.distbits=Z.bits,T){b.msg="invalid distances set";d.mode=30;break}if(d.mode=20,6===c)break a;case 20:d.mode=21;case 21:if(6<=l&&258<=B){b.next_out=k;b.avail_out=B;b.next_in=h;b.avail_in=l;d.hold=A;d.bits=v;z(b,G);k=b.next_out;g=b.output;B=b.avail_out;h=b.next_in;f=b.input;l=b.avail_in;A=d.hold;v=d.bits;12===d.mode&&(d.back=-1);break}for(d.back=0;O=d.lencode[A&(1<<d.lenbits)-1],J=O>>>24,N=O>>>16&255,M=65535&O,!(J<=v);){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(N&&0===(240&N)){D= +J;F=N;for(S=M;O=d.lencode[S+((A&(1<<D+F)-1)>>D)],J=O>>>24,N=O>>>16&255,M=65535&O,!(D+J<=v);){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}A>>>=D;v-=D;d.back+=D}if(A>>>=J,v-=J,d.back+=J,d.length=M,0===N){d.mode=26;break}if(32&N){d.back=-1;d.mode=12;break}if(64&N){b.msg="invalid literal/length code";d.mode=30;break}d.extra=15&N;d.mode=22;case 22:if(d.extra){for(N=d.extra;v<N;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}d.length+=A&(1<<d.extra)-1;A>>>=d.extra;v-=d.extra;d.back+=d.extra}d.was=d.length;d.mode=23; +case 23:for(;O=d.distcode[A&(1<<d.distbits)-1],J=O>>>24,N=O>>>16&255,M=65535&O,!(J<=v);){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(0===(240&N)){D=J;F=N;for(S=M;O=d.distcode[S+((A&(1<<D+F)-1)>>D)],J=O>>>24,N=O>>>16&255,M=65535&O,!(D+J<=v);){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}A>>>=D;v-=D;d.back+=D}if(A>>>=J,v-=J,d.back+=J,64&N){b.msg="invalid distance code";d.mode=30;break}d.offset=M;d.extra=15&N;d.mode=24;case 24:if(d.extra){for(N=d.extra;v<N;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}d.offset+= +A&(1<<d.extra)-1;A>>>=d.extra;v-=d.extra;d.back+=d.extra}if(d.offset>d.dmax){b.msg="invalid distance too far back";d.mode=30;break}d.mode=25;case 25:if(0===B)break a;if(H=G-B,d.offset>H){if(H=d.offset-H,H>d.whave&&d.sane){b.msg="invalid distance too far back";d.mode=30;break}H>d.wnext?(H-=d.wnext,da=d.wsize-H):da=d.wnext-H;H>d.length&&(H=d.length);N=d.window}else N=g,da=k-d.offset,H=d.length;H>B&&(H=B);B-=H;d.length-=H;do g[k++]=N[da++];while(--H);0===d.length&&(d.mode=21);break;case 26:if(0===B)break a; +g[k++]=d.length;B--;d.mode=21;break;case 27:if(d.wrap){for(;32>v;){if(0===l)break a;l--;A|=f[h++]<<v;v+=8}if(G-=B,b.total_out+=G,d.total+=G,G&&(b.adler=d.check=d.flags?t(d.check,g,G,k-G):q(d.check,g,G,k-G)),G=B,(d.flags?A:e(A))!==d.check){b.msg="incorrect data check";d.mode=30;break}v=A=0}d.mode=28;case 28:if(d.wrap&&d.flags){for(;32>v;){if(0===l)break a;l--;A+=f[h++]<<v;v+=8}if(A!==(4294967295&d.total)){b.msg="incorrect length check";d.mode=30;break}v=A=0}d.mode=29;case 29:T=1;break a;case 30:T= +-3;break a;case 31:return-4;default:return y}return b.next_out=k,b.avail_out=B,b.next_in=h,b.avail_in=l,d.hold=A,d.bits=v,(d.wsize||G!==b.avail_out&&30>d.mode&&(27>d.mode||4!==c))&&m(b,b.output,b.next_out,G-b.avail_out)?(d.mode=31,-4):(Q-=b.avail_in,G-=b.avail_out,b.total_in+=Q,b.total_out+=G,d.total+=G,d.wrap&&G&&(b.adler=d.check=d.flags?t(d.check,g,G,b.next_out-G):q(d.check,g,G,b.next_out-G)),b.data_type=d.bits+(d.last?64:0)+(12===d.mode?128:0)+(20===d.mode||15===d.mode?256:0),(0===Q&&0===G||4=== +c)&&T===w&&(T=-5),T)};d.inflateEnd=function(b){if(!b||!b.state)return y;var c=b.state;return c.window&&(c.window=null),b.state=null,w};d.inflateGetHeader=function(b,c){var d;return b&&b.state?(d=b.state,0===(2&d.wrap)?y:(d.head=c,c.done=!1,w)):y};d.inflateSetDictionary=function(b,c){var d,e,f=c.length;return b&&b.state?(d=b.state,0!==d.wrap&&11!==d.mode?y:11===d.mode&&(e=1,e=q(e,c,f,0),e!==d.check)?-3:m(b,c,f,f)?(d.mode=31,-4):(d.havedict=1,w)):y};d.inflateInfo="pako inflate (from Nodeca project)"}, {"../utils/common":3,"./adler32":5,"./crc32":7,"./inffast":10,"./inftrees":12}],12:[function(b,c,d){var e=b("../utils/common"),f=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],g=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],h=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],k=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24, -25,25,26,26,27,27,28,28,29,29,64,64];c.exports=function(b,c,d,p,r,q,t,z){var l,m,n,u,D,F,E,B,A=z.bits,C,L,K,H,V,U,ca=0,W,v=null,P=0,J=new e.Buf16(16);u=new e.Buf16(16);var G=null,da=0;for(C=0;15>=C;C++)J[C]=0;for(L=0;L<p;L++)J[c[d+L]]++;H=A;for(K=15;1<=K&&0===J[K];K--);if(H>K&&(H=K),0===K)return r[q++]=20971520,r[q++]=20971520,z.bits=1,0;for(A=1;A<K&&0===J[A];A++);H<A&&(H=A);for(C=l=1;15>=C;C++)if(l<<=1,l-=J[C],0>l)return-1;if(0<l&&(0===b||1!==K))return-1;u[1]=0;for(C=1;15>C;C++)u[C+1]=u[C]+J[C]; -for(L=0;L<p;L++)0!==c[d+L]&&(t[u[c[d+L]]++]=L);if(0===b?(v=G=t,D=19):1===b?(v=f,P-=257,G=g,da-=257,D=256):(v=h,G=k,D=-1),W=0,L=0,C=A,u=q,V=H,U=0,n=-1,ca=1<<H,p=ca-1,1===b&&852<ca||2===b&&592<ca)return 1;for(var N=0;;){N++;F=C-U;t[L]<D?(E=0,B=t[L]):t[L]>D?(E=G[da+t[L]],B=v[P+t[L]]):(E=96,B=0);l=1<<C-U;A=m=1<<V;do m-=l,r[u+(W>>U)+m]=F<<24|E<<16|B|0;while(0!==m);for(l=1<<C-1;W&l;)l>>=1;if(0!==l?(W&=l-1,W+=l):W=0,L++,0===--J[C]){if(C===K)break;C=c[d+t[L]]}if(C>H&&(W&p)!==n){0===U&&(U=H);u+=A;V=C-U;for(l= -1<<V;V+U<K&&(l-=J[V+U],!(0>=l));)V++,l<<=1;if(ca+=1<<V,1===b&&852<ca||2===b&&592<ca)return 1;n=W&p;r[n]=H<<24|V<<16|u-q|0}}return 0!==W&&(r[u+W]=C-U<<24|4194304),z.bits=H,0}},{"../utils/common":3}],13:[function(b,c,d){c.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],14:[function(b,c,d){function e(b){for(var c=b.length;0<=--c;)b[c]=0}function f(b,c,d,e,f){this.static_tree= +25,25,26,26,27,27,28,28,29,29,64,64];c.exports=function(b,c,d,p,r,q,t,z){var l,m,n,u,D,F,E,B,A=z.bits,C,L,K,I,V,U,ca=0,W,v=null,Q=0,G=new e.Buf16(16);u=new e.Buf16(16);var H=null,da=0;for(C=0;15>=C;C++)G[C]=0;for(L=0;L<p;L++)G[c[d+L]]++;I=A;for(K=15;1<=K&&0===G[K];K--);if(I>K&&(I=K),0===K)return r[q++]=20971520,r[q++]=20971520,z.bits=1,0;for(A=1;A<K&&0===G[A];A++);I<A&&(I=A);for(C=l=1;15>=C;C++)if(l<<=1,l-=G[C],0>l)return-1;if(0<l&&(0===b||1!==K))return-1;u[1]=0;for(C=1;15>C;C++)u[C+1]=u[C]+G[C]; +for(L=0;L<p;L++)0!==c[d+L]&&(t[u[c[d+L]]++]=L);if(0===b?(v=H=t,D=19):1===b?(v=f,Q-=257,H=g,da-=257,D=256):(v=h,H=k,D=-1),W=0,L=0,C=A,u=q,V=I,U=0,n=-1,ca=1<<I,p=ca-1,1===b&&852<ca||2===b&&592<ca)return 1;for(var N=0;;){N++;F=C-U;t[L]<D?(E=0,B=t[L]):t[L]>D?(E=H[da+t[L]],B=v[Q+t[L]]):(E=96,B=0);l=1<<C-U;A=m=1<<V;do m-=l,r[u+(W>>U)+m]=F<<24|E<<16|B|0;while(0!==m);for(l=1<<C-1;W&l;)l>>=1;if(0!==l?(W&=l-1,W+=l):W=0,L++,0===--G[C]){if(C===K)break;C=c[d+t[L]]}if(C>I&&(W&p)!==n){0===U&&(U=I);u+=A;V=C-U;for(l= +1<<V;V+U<K&&(l-=G[V+U],!(0>=l));)V++,l<<=1;if(ca+=1<<V,1===b&&852<ca||2===b&&592<ca)return 1;n=W&p;r[n]=I<<24|V<<16|u-q|0}}return 0!==W&&(r[u+W]=C-U<<24|4194304),z.bits=I,0}},{"../utils/common":3}],13:[function(b,c,d){c.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],14:[function(b,c,d){function e(b){for(var c=b.length;0<=--c;)b[c]=0}function f(b,c,d,e,f){this.static_tree= b;this.extra_bits=c;this.extra_base=d;this.elems=e;this.max_length=f;this.has_stree=b&&b.length}function g(b,c){this.dyn_tree=b;this.max_code=0;this.stat_desc=c}function h(b,c){b.pending_buf[b.pending++]=255&c;b.pending_buf[b.pending++]=c>>>8&255}function k(b,c,d){b.bi_valid>ca-d?(b.bi_buf|=c<<b.bi_valid&65535,h(b,b.bi_buf),b.bi_buf=c>>ca-b.bi_valid,b.bi_valid+=d-ca):(b.bi_buf|=c<<b.bi_valid&65535,b.bi_valid+=d)}function l(b,c,d){k(b,d[2*c],d[2*c+1])}function m(b,c){var d=0;do d|=1&b,b>>>=1,d<<=1; -while(0<--c);return d>>>1}function n(b,c,d){var e,f=Array(U+1),g=0;for(e=1;e<=U;e++)f[e]=g=g+d[e-1]<<1;for(d=0;d<=c;d++)e=b[2*d+1],0!==e&&(b[2*d]=m(f[e]++,e))}function p(b){var c;for(c=0;c<L;c++)b.dyn_ltree[2*c]=0;for(c=0;c<K;c++)b.dyn_dtree[2*c]=0;for(c=0;c<H;c++)b.bl_tree[2*c]=0;b.dyn_ltree[2*W]=1;b.opt_len=b.static_len=0;b.last_lit=b.matches=0}function r(b){8<b.bi_valid?h(b,b.bi_buf):0<b.bi_valid&&(b.pending_buf[b.pending++]=b.bi_buf);b.bi_buf=0;b.bi_valid=0}function q(b,c,d,e){var f=2*c,g=2*d; -return b[f]<b[g]||b[f]===b[g]&&e[c]<=e[d]}function t(b,c,d){for(var e=b.heap[d],f=d<<1;f<=b.heap_len&&(f<b.heap_len&&q(c,b.heap[f+1],b.heap[f],b.depth)&&f++,!q(c,e,b.heap[f],b.depth));)b.heap[d]=b.heap[f],d=f,f<<=1;b.heap[d]=e}function z(b,c,d){var e,f,g,h,m=0;if(0!==b.last_lit){do e=b.pending_buf[b.d_buf+2*m]<<8|b.pending_buf[b.d_buf+2*m+1],f=b.pending_buf[b.l_buf+m],m++,0===e?l(b,f,c):(g=S[f],l(b,g+C+1,c),h=G[g],0!==h&&(f-=Q[g],k(b,f,h)),e--,g=256>e?ea[e]:ea[256+(e>>>7)],l(b,g,d),h=da[g],0!==h&& -(e-=T[g],k(b,e,h)));while(m<b.last_lit)}l(b,W,c)}function w(b,c){var d,e,f,g=c.dyn_tree;e=c.stat_desc.static_tree;var h=c.stat_desc.has_stree,k=c.stat_desc.elems,l=-1;b.heap_len=0;b.heap_max=V;for(d=0;d<k;d++)0!==g[2*d]?(b.heap[++b.heap_len]=l=d,b.depth[d]=0):g[2*d+1]=0;for(;2>b.heap_len;)f=b.heap[++b.heap_len]=2>l?++l:0,g[2*f]=1,b.depth[f]=0,b.opt_len--,h&&(b.static_len-=e[2*f+1]);c.max_code=l;for(d=b.heap_len>>1;1<=d;d--)t(b,g,d);f=k;do d=b.heap[1],b.heap[1]=b.heap[b.heap_len--],t(b,g,1),e=b.heap[1], -b.heap[--b.heap_max]=d,b.heap[--b.heap_max]=e,g[2*f]=g[2*d]+g[2*e],b.depth[f]=(b.depth[d]>=b.depth[e]?b.depth[d]:b.depth[e])+1,g[2*d+1]=g[2*e+1]=f,b.heap[1]=f++,t(b,g,1);while(2<=b.heap_len);b.heap[--b.heap_max]=b.heap[1];var m,v,h=c.dyn_tree,k=c.max_code,p=c.stat_desc.static_tree,q=c.stat_desc.has_stree,r=c.stat_desc.extra_bits,J=c.stat_desc.extra_base,P=c.stat_desc.max_length,G=0;for(e=0;e<=U;e++)b.bl_count[e]=0;h[2*b.heap[b.heap_max]+1]=0;for(d=b.heap_max+1;d<V;d++)f=b.heap[d],e=h[2*h[2*f+1]+1]+ -1,e>P&&(e=P,G++),h[2*f+1]=e,f>k||(b.bl_count[e]++,m=0,f>=J&&(m=r[f-J]),v=h[2*f],b.opt_len+=v*(e+m),q&&(b.static_len+=v*(p[2*f+1]+m)));if(0!==G){do{for(e=P-1;0===b.bl_count[e];)e--;b.bl_count[e]--;b.bl_count[e+1]+=2;b.bl_count[P]--;G-=2}while(0<G);for(e=P;0!==e;e--)for(f=b.bl_count[e];0!==f;)m=b.heap[--d],m>k||(h[2*m+1]!==e&&(b.opt_len+=(e-h[2*m+1])*h[2*m],h[2*m+1]=e),f--)}n(g,l,b.bl_count)}function x(b,c,d){var e,f,g=-1,h=c[1],k=0,l=7,m=4;0===h&&(l=138,m=3);c[2*(d+1)+1]=65535;for(e=0;e<=d;e++)f=h, -h=c[2*(e+1)+1],++k<l&&f===h||(k<m?b.bl_tree[2*f]+=k:0!==f?(f!==g&&b.bl_tree[2*f]++,b.bl_tree[2*v]++):10>=k?b.bl_tree[2*P]++:b.bl_tree[2*J]++,k=0,g=f,0===h?(l=138,m=3):f===h?(l=6,m=3):(l=7,m=4))}function y(b,c,d){var e,f,g=-1,h=c[1],m=0,n=7,p=4;0===h&&(n=138,p=3);for(e=0;e<=d;e++)if(f=h,h=c[2*(e+1)+1],!(++m<n&&f===h)){if(m<p){do l(b,f,b.bl_tree);while(0!==--m)}else 0!==f?(f!==g&&(l(b,f,b.bl_tree),m--),l(b,v,b.bl_tree),k(b,m-3,2)):10>=m?(l(b,P,b.bl_tree),k(b,m-3,3)):(l(b,J,b.bl_tree),k(b,m-11,7));m= -0;g=f;0===h?(n=138,p=3):f===h?(n=6,p=3):(n=7,p=4)}}function u(b){var c,d=4093624447;for(c=0;31>=c;c++,d>>>=1)if(1&d&&0!==b.dyn_ltree[2*c])return E;if(0!==b.dyn_ltree[18]||0!==b.dyn_ltree[20]||0!==b.dyn_ltree[26])return B;for(c=32;c<C;c++)if(0!==b.dyn_ltree[2*c])return B;return E}function D(b,c,d,e){k(b,(A<<1)+(e?1:0),3);r(b);h(b,d);h(b,~d);F.arraySet(b.pending_buf,b.window,c,d,b.pending);b.pending+=d}var F=b("../utils/common"),E=0,B=1,A=0,C=256,L=C+1+29,K=30,H=19,V=2*L+1,U=15,ca=16,W=256,v=16,P=17, -J=18,G=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],da=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],N=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],I=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],M=Array(2*(L+2));e(M);var aa=Array(2*K);e(aa);var ea=Array(512);e(ea);var S=Array(256);e(S);var Q=Array(29);e(Q);var T=Array(K);e(T);var Y,O,R,fa=!1;d._tr_init=function(b){if(!fa){var c,d,e,h=Array(U+1);for(e=d=0;28>e;e++)for(Q[e]=d,c=0;c<1<<G[e];c++)S[d++]=e;S[d-1]=e; -for(e=d=0;16>e;e++)for(T[e]=d,c=0;c<1<<da[e];c++)ea[d++]=e;for(d>>=7;e<K;e++)for(T[e]=d<<7,c=0;c<1<<da[e]-7;c++)ea[256+d++]=e;for(c=0;c<=U;c++)h[c]=0;for(c=0;143>=c;)M[2*c+1]=8,c++,h[8]++;for(;255>=c;)M[2*c+1]=9,c++,h[9]++;for(;279>=c;)M[2*c+1]=7,c++,h[7]++;for(;287>=c;)M[2*c+1]=8,c++,h[8]++;n(M,L+1,h);for(c=0;c<K;c++)aa[2*c+1]=5,aa[2*c]=m(c,5);Y=new f(M,G,C+1,L,U);O=new f(aa,da,0,K,U);R=new f([],N,0,H,7);fa=!0}b.l_desc=new g(b.dyn_ltree,Y);b.d_desc=new g(b.dyn_dtree,O);b.bl_desc=new g(b.bl_tree, -R);b.bi_buf=0;b.bi_valid=0;p(b)};d._tr_stored_block=D;d._tr_flush_block=function(b,c,d,e){var f,g,h=0;if(0<b.level){2===b.strm.data_type&&(b.strm.data_type=u(b));w(b,b.l_desc);w(b,b.d_desc);x(b,b.dyn_ltree,b.l_desc.max_code);x(b,b.dyn_dtree,b.d_desc.max_code);w(b,b.bl_desc);for(h=H-1;3<=h&&0===b.bl_tree[2*I[h]+1];h--);h=(b.opt_len+=3*(h+1)+14,h);f=b.opt_len+3+7>>>3;g=b.static_len+3+7>>>3;g<=f&&(f=g)}else f=g=d+5;if(d+4<=f&&-1!==c)D(b,c,d,e);else if(4===b.strategy||g===f)k(b,2+(e?1:0),3),z(b,M,aa); -else{k(b,4+(e?1:0),3);c=b.l_desc.max_code+1;d=b.d_desc.max_code+1;h+=1;k(b,c-257,5);k(b,d-1,5);k(b,h-4,4);for(f=0;f<h;f++)k(b,b.bl_tree[2*I[f]+1],3);y(b,b.dyn_ltree,c-1);y(b,b.dyn_dtree,d-1);z(b,b.dyn_ltree,b.dyn_dtree)}p(b);e&&r(b)};d._tr_tally=function(b,c,d){return b.pending_buf[b.d_buf+2*b.last_lit]=c>>>8&255,b.pending_buf[b.d_buf+2*b.last_lit+1]=255&c,b.pending_buf[b.l_buf+b.last_lit]=255&d,b.last_lit++,0===c?b.dyn_ltree[2*d]++:(b.matches++,c--,b.dyn_ltree[2*(S[d]+C+1)]++,b.dyn_dtree[2*(256> +while(0<--c);return d>>>1}function n(b,c,d){var e,f=Array(U+1),g=0;for(e=1;e<=U;e++)f[e]=g=g+d[e-1]<<1;for(d=0;d<=c;d++)e=b[2*d+1],0!==e&&(b[2*d]=m(f[e]++,e))}function p(b){var c;for(c=0;c<L;c++)b.dyn_ltree[2*c]=0;for(c=0;c<K;c++)b.dyn_dtree[2*c]=0;for(c=0;c<I;c++)b.bl_tree[2*c]=0;b.dyn_ltree[2*W]=1;b.opt_len=b.static_len=0;b.last_lit=b.matches=0}function r(b){8<b.bi_valid?h(b,b.bi_buf):0<b.bi_valid&&(b.pending_buf[b.pending++]=b.bi_buf);b.bi_buf=0;b.bi_valid=0}function q(b,c,d,e){var f=2*c,g=2*d; +return b[f]<b[g]||b[f]===b[g]&&e[c]<=e[d]}function t(b,c,d){for(var e=b.heap[d],f=d<<1;f<=b.heap_len&&(f<b.heap_len&&q(c,b.heap[f+1],b.heap[f],b.depth)&&f++,!q(c,e,b.heap[f],b.depth));)b.heap[d]=b.heap[f],d=f,f<<=1;b.heap[d]=e}function z(b,c,d){var e,f,g,h,m=0;if(0!==b.last_lit){do e=b.pending_buf[b.d_buf+2*m]<<8|b.pending_buf[b.d_buf+2*m+1],f=b.pending_buf[b.l_buf+m],m++,0===e?l(b,f,c):(g=S[f],l(b,g+C+1,c),h=H[g],0!==h&&(f-=P[g],k(b,f,h)),e--,g=256>e?ea[e]:ea[256+(e>>>7)],l(b,g,d),h=da[g],0!==h&& +(e-=T[g],k(b,e,h)));while(m<b.last_lit)}l(b,W,c)}function x(b,c){var d,e,f,g=c.dyn_tree;e=c.stat_desc.static_tree;var h=c.stat_desc.has_stree,k=c.stat_desc.elems,l=-1;b.heap_len=0;b.heap_max=V;for(d=0;d<k;d++)0!==g[2*d]?(b.heap[++b.heap_len]=l=d,b.depth[d]=0):g[2*d+1]=0;for(;2>b.heap_len;)f=b.heap[++b.heap_len]=2>l?++l:0,g[2*f]=1,b.depth[f]=0,b.opt_len--,h&&(b.static_len-=e[2*f+1]);c.max_code=l;for(d=b.heap_len>>1;1<=d;d--)t(b,g,d);f=k;do d=b.heap[1],b.heap[1]=b.heap[b.heap_len--],t(b,g,1),e=b.heap[1], +b.heap[--b.heap_max]=d,b.heap[--b.heap_max]=e,g[2*f]=g[2*d]+g[2*e],b.depth[f]=(b.depth[d]>=b.depth[e]?b.depth[d]:b.depth[e])+1,g[2*d+1]=g[2*e+1]=f,b.heap[1]=f++,t(b,g,1);while(2<=b.heap_len);b.heap[--b.heap_max]=b.heap[1];var m,v,h=c.dyn_tree,k=c.max_code,p=c.stat_desc.static_tree,q=c.stat_desc.has_stree,r=c.stat_desc.extra_bits,Q=c.stat_desc.extra_base,G=c.stat_desc.max_length,H=0;for(e=0;e<=U;e++)b.bl_count[e]=0;h[2*b.heap[b.heap_max]+1]=0;for(d=b.heap_max+1;d<V;d++)f=b.heap[d],e=h[2*h[2*f+1]+1]+ +1,e>G&&(e=G,H++),h[2*f+1]=e,f>k||(b.bl_count[e]++,m=0,f>=Q&&(m=r[f-Q]),v=h[2*f],b.opt_len+=v*(e+m),q&&(b.static_len+=v*(p[2*f+1]+m)));if(0!==H){do{for(e=G-1;0===b.bl_count[e];)e--;b.bl_count[e]--;b.bl_count[e+1]+=2;b.bl_count[G]--;H-=2}while(0<H);for(e=G;0!==e;e--)for(f=b.bl_count[e];0!==f;)m=b.heap[--d],m>k||(h[2*m+1]!==e&&(b.opt_len+=(e-h[2*m+1])*h[2*m],h[2*m+1]=e),f--)}n(g,l,b.bl_count)}function w(b,c,d){var e,f,g=-1,h=c[1],k=0,l=7,m=4;0===h&&(l=138,m=3);c[2*(d+1)+1]=65535;for(e=0;e<=d;e++)f=h, +h=c[2*(e+1)+1],++k<l&&f===h||(k<m?b.bl_tree[2*f]+=k:0!==f?(f!==g&&b.bl_tree[2*f]++,b.bl_tree[2*v]++):10>=k?b.bl_tree[2*Q]++:b.bl_tree[2*G]++,k=0,g=f,0===h?(l=138,m=3):f===h?(l=6,m=3):(l=7,m=4))}function y(b,c,d){var e,f,g=-1,h=c[1],m=0,n=7,p=4;0===h&&(n=138,p=3);for(e=0;e<=d;e++)if(f=h,h=c[2*(e+1)+1],!(++m<n&&f===h)){if(m<p){do l(b,f,b.bl_tree);while(0!==--m)}else 0!==f?(f!==g&&(l(b,f,b.bl_tree),m--),l(b,v,b.bl_tree),k(b,m-3,2)):10>=m?(l(b,Q,b.bl_tree),k(b,m-3,3)):(l(b,G,b.bl_tree),k(b,m-11,7));m= +0;g=f;0===h?(n=138,p=3):f===h?(n=6,p=3):(n=7,p=4)}}function u(b){var c,d=4093624447;for(c=0;31>=c;c++,d>>>=1)if(1&d&&0!==b.dyn_ltree[2*c])return E;if(0!==b.dyn_ltree[18]||0!==b.dyn_ltree[20]||0!==b.dyn_ltree[26])return B;for(c=32;c<C;c++)if(0!==b.dyn_ltree[2*c])return B;return E}function D(b,c,d,e){k(b,(A<<1)+(e?1:0),3);r(b);h(b,d);h(b,~d);F.arraySet(b.pending_buf,b.window,c,d,b.pending);b.pending+=d}var F=b("../utils/common"),E=0,B=1,A=0,C=256,L=C+1+29,K=30,I=19,V=2*L+1,U=15,ca=16,W=256,v=16,Q=17, +G=18,H=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],da=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],N=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],J=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],M=Array(2*(L+2));e(M);var aa=Array(2*K);e(aa);var ea=Array(512);e(ea);var S=Array(256);e(S);var P=Array(29);e(P);var T=Array(K);e(T);var Z,O,R,fa=!1;d._tr_init=function(b){if(!fa){var c,d,e,h=Array(U+1);for(e=d=0;28>e;e++)for(P[e]=d,c=0;c<1<<H[e];c++)S[d++]=e;S[d-1]=e; +for(e=d=0;16>e;e++)for(T[e]=d,c=0;c<1<<da[e];c++)ea[d++]=e;for(d>>=7;e<K;e++)for(T[e]=d<<7,c=0;c<1<<da[e]-7;c++)ea[256+d++]=e;for(c=0;c<=U;c++)h[c]=0;for(c=0;143>=c;)M[2*c+1]=8,c++,h[8]++;for(;255>=c;)M[2*c+1]=9,c++,h[9]++;for(;279>=c;)M[2*c+1]=7,c++,h[7]++;for(;287>=c;)M[2*c+1]=8,c++,h[8]++;n(M,L+1,h);for(c=0;c<K;c++)aa[2*c+1]=5,aa[2*c]=m(c,5);Z=new f(M,H,C+1,L,U);O=new f(aa,da,0,K,U);R=new f([],N,0,I,7);fa=!0}b.l_desc=new g(b.dyn_ltree,Z);b.d_desc=new g(b.dyn_dtree,O);b.bl_desc=new g(b.bl_tree, +R);b.bi_buf=0;b.bi_valid=0;p(b)};d._tr_stored_block=D;d._tr_flush_block=function(b,c,d,e){var f,g,h=0;if(0<b.level){2===b.strm.data_type&&(b.strm.data_type=u(b));x(b,b.l_desc);x(b,b.d_desc);w(b,b.dyn_ltree,b.l_desc.max_code);w(b,b.dyn_dtree,b.d_desc.max_code);x(b,b.bl_desc);for(h=I-1;3<=h&&0===b.bl_tree[2*J[h]+1];h--);h=(b.opt_len+=3*(h+1)+14,h);f=b.opt_len+3+7>>>3;g=b.static_len+3+7>>>3;g<=f&&(f=g)}else f=g=d+5;if(d+4<=f&&-1!==c)D(b,c,d,e);else if(4===b.strategy||g===f)k(b,2+(e?1:0),3),z(b,M,aa); +else{k(b,4+(e?1:0),3);c=b.l_desc.max_code+1;d=b.d_desc.max_code+1;h+=1;k(b,c-257,5);k(b,d-1,5);k(b,h-4,4);for(f=0;f<h;f++)k(b,b.bl_tree[2*J[f]+1],3);y(b,b.dyn_ltree,c-1);y(b,b.dyn_dtree,d-1);z(b,b.dyn_ltree,b.dyn_dtree)}p(b);e&&r(b)};d._tr_tally=function(b,c,d){return b.pending_buf[b.d_buf+2*b.last_lit]=c>>>8&255,b.pending_buf[b.d_buf+2*b.last_lit+1]=255&c,b.pending_buf[b.l_buf+b.last_lit]=255&d,b.last_lit++,0===c?b.dyn_ltree[2*d]++:(b.matches++,c--,b.dyn_ltree[2*(S[d]+C+1)]++,b.dyn_dtree[2*(256> c?ea[c]:ea[256+(c>>>7)])]++),b.last_lit===b.lit_bufsize-1};d._tr_align=function(b){k(b,2,3);l(b,W,M);16===b.bi_valid?(h(b,b.bi_buf),b.bi_buf=0,b.bi_valid=0):8<=b.bi_valid&&(b.pending_buf[b.pending++]=255&b.bi_buf,b.bi_buf>>=8,b.bi_valid-=8)}},{"../utils/common":3}],15:[function(b,c,d){c.exports=function(){this.input=null;this.total_in=this.avail_in=this.next_in=0;this.output=null;this.total_out=this.avail_out=this.next_out=0;this.msg="";this.state=null;this.data_type=2;this.adler=0}},{}],"/":[function(b, c,d){d=b("./lib/utils/common").assign;var e=b("./lib/deflate"),f=b("./lib/inflate");b=b("./lib/zlib/constants");var g={};d(g,e,f,b);c.exports=g},{"./lib/deflate":1,"./lib/inflate":2,"./lib/utils/common":3,"./lib/zlib/constants":6}]},{},[])("/")});var JSON;JSON||(JSON={}); -(function(){function a(a){return 10>a?"0"+a:a}function b(a){e.lastIndex=0;return e.test(a)?'"'+a.replace(e,function(a){var b=h[a];return"string"===typeof b?b:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function c(a,d){var e,h,l,m,t=f,z,w=d[a];w&&"object"===typeof w&&"function"===typeof w.toJSON&&(w=w.toJSON(a));"function"===typeof k&&(w=k.call(d,a,w));switch(typeof w){case "string":return b(w);case "number":return isFinite(w)?""+w:"null";case "boolean":case "null":return""+w; -case "object":if(!w)return"null";f+=g;z=[];if("[object Array]"===Object.prototype.toString.apply(w)){m=w.length;for(e=0;e<m;e+=1)z[e]=c(e,w)||"null";l=0===z.length?"[]":f?"[\n"+f+z.join(",\n"+f)+"\n"+t+"]":"["+z.join(",")+"]";f=t;return l}if(k&&"object"===typeof k)for(m=k.length,e=0;e<m;e+=1)"string"===typeof k[e]&&(h=k[e],(l=c(h,w))&&z.push(b(h)+(f?": ":":")+l));else for(h in w)Object.prototype.hasOwnProperty.call(w,h)&&(l=c(h,w))&&z.push(b(h)+(f?": ":":")+l);l=0===z.length?"{}":f?"{\n"+f+z.join(",\n"+ +(function(){function a(a){return 10>a?"0"+a:a}function b(a){e.lastIndex=0;return e.test(a)?'"'+a.replace(e,function(a){var b=h[a];return"string"===typeof b?b:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function c(a,d){var e,h,l,m,t=f,z,x=d[a];x&&"object"===typeof x&&"function"===typeof x.toJSON&&(x=x.toJSON(a));"function"===typeof k&&(x=k.call(d,a,x));switch(typeof x){case "string":return b(x);case "number":return isFinite(x)?""+x:"null";case "boolean":case "null":return""+x; +case "object":if(!x)return"null";f+=g;z=[];if("[object Array]"===Object.prototype.toString.apply(x)){m=x.length;for(e=0;e<m;e+=1)z[e]=c(e,x)||"null";l=0===z.length?"[]":f?"[\n"+f+z.join(",\n"+f)+"\n"+t+"]":"["+z.join(",")+"]";f=t;return l}if(k&&"object"===typeof k)for(m=k.length,e=0;e<m;e+=1)"string"===typeof k[e]&&(h=k[e],(l=c(h,x))&&z.push(b(h)+(f?": ":":")+l));else for(h in x)Object.prototype.hasOwnProperty.call(x,h)&&(l=c(h,x))&&z.push(b(h)+(f?": ":":")+l);l=0===z.length?"{}":f?"{\n"+f+z.join(",\n"+ f)+"\n"+t+"}":"{"+z.join(",")+"}";f=t;return l}}"function"!==typeof Date.prototype.toJSON&&(Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+a(this.getUTCMonth()+1)+"-"+a(this.getUTCDate())+"T"+a(this.getUTCHours())+":"+a(this.getUTCMinutes())+":"+a(this.getUTCSeconds())+"Z":null},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()});var d=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, e=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,f,g,h={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},k;"function"!==typeof JSON.stringify&&(JSON.stringify=function(a,b,d){var e;g=f="";if("number"===typeof d)for(e=0;e<d;e+=1)g+=" ";else"string"===typeof d&&(g=d);if((k=b)&&"function"!==typeof b&&("object"!==typeof b||"number"!==typeof b.length))throw Error("JSON.stringify");return c("",{"":a})}); "function"!==typeof JSON.parse&&(JSON.parse=function(a,b){function c(a,d){var e,f,g=a[d];if(g&&"object"===typeof g)for(e in g)Object.prototype.hasOwnProperty.call(g,e)&&(f=c(g,e),void 0!==f?g[e]=f:delete g[e]);return b.call(a,d,g)}var e;a=""+a;d.lastIndex=0;d.test(a)&&(a=a.replace(d,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)}));if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return e=eval("("+a+")"),"function"===typeof b?c({"":e},""):e;throw new SyntaxError("JSON.parse");})})();"undefined"===typeof window.mxBasePath&&(window.mxBasePath="https://www.draw.io/mxgraph/");window.mxLoadStylesheets=window.mxLoadStylesheets||!1;window.mxLoadResources=window.mxLoadResources||!1;window.mxLanguage=window.mxLanguage||"en";window.urlParams=window.urlParams||{};window.MAX_REQUEST_SIZE=window.MAX_REQUEST_SIZE||10485760;window.MAX_AREA=window.MAX_AREA||225E6;window.EXPORT_URL=window.EXPORT_URL||"/export";window.SAVE_URL=window.SAVE_URL||"/save";window.OPEN_URL=window.OPEN_URL||"/open";window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";window.RESOURCE_BASE=window.RESOURCE_BASE||window.RESOURCES_PATH+"/grapheditor";window.STENCIL_PATH=window.STENCIL_PATH||"stencils";window.IMAGE_PATH=window.IMAGE_PATH||"images"; -window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"../../../src";window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de"];var mxClient={VERSION:"10.1.2",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_IE11:!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:!!navigator.userAgent.match(/Edge\//),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&& +window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"../../../src";window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de"];var mxClient={VERSION:"10.1.7",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_IE11:!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:!!navigator.userAgent.match(/Edge\//),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&& 0>navigator.userAgent.indexOf("Edge/"),IS_OP:0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("OPR/"),IS_OT:0<=navigator.userAgent.indexOf("Presto/")&&0>navigator.userAgent.indexOf("Presto/2.4.")&&0>navigator.userAgent.indexOf("Presto/2.3.")&&0>navigator.userAgent.indexOf("Presto/2.2.")&&0>navigator.userAgent.indexOf("Presto/2.1.")&&0>navigator.userAgent.indexOf("Presto/2.0.")&&0>navigator.userAgent.indexOf("Presto/1."),IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&& 0>navigator.userAgent.indexOf("Chrome/")&&0>navigator.userAgent.indexOf("Edge/"),IS_IOS:navigator.userAgent.match(/(iPad|iPhone|iPod)/g)?!0:!1,IS_GC:0<=navigator.userAgent.indexOf("Chrome/")&&0>navigator.userAgent.indexOf("Edge/"),IS_CHROMEAPP:null!=window.chrome&&null!=chrome.app&&null!=chrome.app.runtime,IS_FF:0<=navigator.userAgent.indexOf("Firefox/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&0>navigator.userAgent.indexOf("Firefox/1.")&&0>navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/")&& 0>navigator.userAgent.indexOf("Iceweasel/1.")&&0>navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/")&&0>navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/")&&0>navigator.userAgent.indexOf("Iceape/1."),IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")|| @@ -230,50 +230,50 @@ b(g.childNodes),e<a.length-1&&0<=mxUtils.indexOf(c,a[e+1].nodeName)&&d.push("\n" a.innerText=b:a[void 0===a.textContent?"text":"textContent"]=b},getInnerHtml:function(){return mxClient.IS_IE?function(a){return null!=a?a.innerHTML:""}:function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),getOuterHtml:function(){return mxClient.IS_IE?function(a){if(null!=a){if(null!=a.outerHTML)return a.outerHTML;var b=[];b.push("<"+a.nodeName);var c=a.attributes;if(null!=c)for(var d=0;d<c.length;d++){var e=c[d].value;null!=e&&0<e.length&&(b.push(" "),b.push(c[d].nodeName), b.push('="'),b.push(e),b.push('"'))}0==a.innerHTML.length?b.push("/>"):(b.push(">"),b.push(a.innerHTML),b.push("</"+a.nodeName+">"));return b.join("")}return""}:function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),write:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&a.appendChild(c);return c},writeln:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&(a.appendChild(c),a.appendChild(document.createElement("br")));return c},br:function(a,b){b=b||1;for(var c= null,d=0;d<b;d++)null!=a&&(c=a.ownerDocument.createElement("br"),a.appendChild(c));return c},button:function(a,b,c){c=null!=c?c:document;c=c.createElement("button");mxUtils.write(c,a);mxEvent.addListener(c,"click",function(a){b(a)});return c},para:function(a,b){var c=document.createElement("p");mxUtils.write(c,b);null!=a&&a.appendChild(c);return c},addTransparentBackgroundFilter:function(a){a.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"}, -linkAction:function(a,b,c,d,e){return mxUtils.link(a,b,function(){c.execute(d)},e)},linkInvoke:function(a,b,c,d,e,f){return mxUtils.link(a,b,function(){c[d](e)},f)},link:function(a,b,c,d){var e=document.createElement("span");e.style.color="blue";e.style.textDecoration="underline";e.style.cursor="pointer";null!=d&&(e.style.paddingLeft=d+"px");mxEvent.addListener(e,"click",c);mxUtils.write(e,b);null!=a&&a.appendChild(e);return e},fit:function(a){var b=parseInt(a.offsetLeft),c=parseInt(a.offsetWidth), -d=mxUtils.getDocumentScrollOrigin(a.ownerDocument),e=d.x,d=d.y,f=document.body,g=document.documentElement,h=e+(f.clientWidth||g.clientWidth);b+c>h&&(a.style.left=Math.max(e,h-c)+"px");b=parseInt(a.offsetTop);c=parseInt(a.offsetHeight);f=d+Math.max(f.clientHeight||0,g.clientHeight);b+c>f&&(a.style.top=Math.max(d,f-c)+"px")},load:function(a){a=new mxXmlRequest(a,null,"GET",!1);a.send();return a},get:function(a,b,c,d,e,f){a=new mxXmlRequest(a,null,"GET");null!=d&&a.setBinary(d);a.send(b,c,e,f);return a}, -getAll:function(a,b,c){for(var d=a.length,e=[],f=0,g=function(){0==f&&null!=c&&c();f++},h=0;h<a.length;h++)(function(a,c){mxUtils.get(a,function(a){var f=a.getStatus();200>f||299<f?g():(e[c]=a,d--,0==d&&b(e))},g)})(a[h],h);0==d&&b(e)},post:function(a,b,c,d){return(new mxXmlRequest(a,b)).send(c,d)},submit:function(a,b,c,d){return(new mxXmlRequest(a,b)).simulate(c,d)},loadInto:function(a,b,c){mxClient.IS_IE?b.onreadystatechange=function(){4==b.readyState&&c()}:b.addEventListener("load",c,!1);b.load(a)}, -getValue:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c);return a},getNumber:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c||0);return Number(a)},getColor:function(a,b,c){a=null!=a?a[b]:null;null==a?a=c:a==mxConstants.NONE&&(a=null);return a},clone:function(a,b,c){c=null!=c?c:!1;var d=null;if(null!=a&&"function"==typeof a.constructor){var d=new a.constructor,e;for(e in a)e!=mxObjectIdentity.FIELD_NAME&&(null==b||0>mxUtils.indexOf(b,e))&&(d[e]=c||"object"!=typeof a[e]?a[e]:mxUtils.clone(a[e]))}return d}, -equalPoints:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b)for(var c=0;c<a.length;c++)if(a[c]==b[c]||null!=a[c]&&!a[c].equals(b[c]))return!1;return!0},equalEntries:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b){var c=0,d;for(d in b)c++;for(d in a)if(c--,!(mxUtils.isNaN(a[d])&&mxUtils.isNaN(b[d])||a[d]==b[d]))return!1}return 0==c},removeDuplicates:function(a){for(var b= -new mxDictionary,c=[],d=0;d<a.length;d++)b.get(a[d])||(c.push(a[d]),b.put(a[d],!0));return c},isNaN:function(a){return"number"==typeof a&&isNaN(a)},extend:function(a,b){var c=function(){};c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a},toString:function(a){var b="",c;for(c in a)try{if(null==a[c])b+=c+" = [null]\n";else if("function"==typeof a[c])b+=c+" => [Function]\n";else if("object"==typeof a[c])var d=mxUtils.getFunctionName(a[c].constructor),b=b+(c+" => ["+d+"]\n");else b+= -c+" = "+a[c]+"\n"}catch(e){b+=c+"="+e.message}return b},toRadians:function(a){return Math.PI*a/180},toDegree:function(a){return 180*a/Math.PI},arcToCurves:function(a,b,c,d,e,f,g,h,k){h-=a;k-=b;if(0===c||0===d)return p;c=Math.abs(c);d=Math.abs(d);var l=-h/2,m=-k/2,n=Math.cos(e*Math.PI/180),p=Math.sin(e*Math.PI/180);e=n*l+p*m;var l=-1*p*l+n*m,m=e*e,r=l*l,q=c*c,t=d*d,z=m/q+r/t;1<z?(c*=Math.sqrt(z),d*=Math.sqrt(z),f=0):(z=1,f===g&&(z=-1),f=z*Math.sqrt((q*t-q*r-t*m)/(q*r+t*m)));m=f*c*l/d;r=-1*f*d*e/c; -h=n*m-p*r+h/2;k=p*m+n*r+k/2;q=Math.atan2((l-r)/d,(e-m)/c)-Math.atan2(0,1);f=0<=q?q:2*Math.PI+q;q=Math.atan2((-l-r)/d,(-e-m)/c)-Math.atan2((l-r)/d,(e-m)/c);e=0<=q?q:2*Math.PI+q;0==g&&0<e?e-=2*Math.PI:0!=g&&0>e&&(e+=2*Math.PI);g=2*e/Math.PI;g=Math.ceil(0>g?-1*g:g);e/=g;l=8/3*Math.sin(e/4)*Math.sin(e/4)/Math.sin(e/2);m=n*c;n*=d;c*=p;d*=p;for(var w=Math.cos(f),x=Math.sin(f),r=-l*(m*x+d*w),q=-l*(c*x-n*w),p=[],y=0;y<g;++y){f+=e;var w=Math.cos(f),x=Math.sin(f),t=m*w-d*x+h,z=c*w+n*x+k,u=-l*(m*x+d*w),w=-l* -(c*x-n*w),x=6*y;p[x]=Number(r+a);p[x+1]=Number(q+b);p[x+2]=Number(t-u+a);p[x+3]=Number(z-w+b);p[x+4]=Number(t+a);p[x+5]=Number(z+b);r=t+u;q=z+w}return p},getBoundingBox:function(a,b,c){var d=null;if(null!=a&&null!=b&&0!=b){b=mxUtils.toRadians(b);var d=Math.cos(b),e=Math.sin(b);c=null!=c?c:new mxPoint(a.x+a.width/2,a.y+a.height/2);var f=new mxPoint(a.x,a.y);b=new mxPoint(a.x+a.width,a.y);var g=new mxPoint(b.x,a.y+a.height);a=new mxPoint(a.x,g.y);f=mxUtils.getRotatedPoint(f,d,e,c);b=mxUtils.getRotatedPoint(b, -d,e,c);g=mxUtils.getRotatedPoint(g,d,e,c);a=mxUtils.getRotatedPoint(a,d,e,c);d=new mxRectangle(f.x,f.y,0,0);d.add(new mxRectangle(b.x,b.y,0,0));d.add(new mxRectangle(g.x,g.y,0,0));d.add(new mxRectangle(a.x,a.y,0,0))}return d},getRotatedPoint:function(a,b,c,d){d=null!=d?d:new mxPoint;var e=a.x-d.x;a=a.y-d.y;return new mxPoint(e*b-a*c+d.x,a*b+e*c+d.y)},getPortConstraints:function(a,b,c,d){b=mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT,mxUtils.getValue(b.style,c?mxConstants.STYLE_SOURCE_PORT_CONSTRAINT: -mxConstants.STYLE_TARGET_PORT_CONSTRAINT,null));if(null==b)return d;d=b.toString();b=mxConstants.DIRECTION_MASK_NONE;c=0;1==mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT_ROTATION,0)&&(c=mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION,0));a=0;45<c?(a=1,135<=c&&(a=2)):-45>c&&(a=3,-135>=c&&(a=2));if(0<=d.indexOf(mxConstants.DIRECTION_NORTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 1:b|=mxConstants.DIRECTION_MASK_EAST;break;case 2:b|=mxConstants.DIRECTION_MASK_SOUTH; -break;case 3:b|=mxConstants.DIRECTION_MASK_WEST}if(0<=d.indexOf(mxConstants.DIRECTION_WEST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_WEST;break;case 1:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 2:b|=mxConstants.DIRECTION_MASK_EAST;break;case 3:b|=mxConstants.DIRECTION_MASK_SOUTH}if(0<=d.indexOf(mxConstants.DIRECTION_SOUTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 1:b|=mxConstants.DIRECTION_MASK_WEST;break;case 2:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 3:b|= -mxConstants.DIRECTION_MASK_EAST}if(0<=d.indexOf(mxConstants.DIRECTION_EAST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_EAST;break;case 1:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 2:b|=mxConstants.DIRECTION_MASK_WEST;break;case 3:b|=mxConstants.DIRECTION_MASK_NORTH}return b},reversePortConstraints:function(a){var b;b=(a&mxConstants.DIRECTION_MASK_WEST)<<3;b|=(a&mxConstants.DIRECTION_MASK_NORTH)<<1;b|=(a&mxConstants.DIRECTION_MASK_SOUTH)>>1;return b|=(a&mxConstants.DIRECTION_MASK_EAST)>>3}, -findNearestSegment:function(a,b,c){var d=-1;if(0<a.absolutePoints.length)for(var e=a.absolutePoints[0],f=null,g=1;g<a.absolutePoints.length;g++){var h=a.absolutePoints[g],e=mxUtils.ptSegDistSq(e.x,e.y,h.x,h.y,b,c);if(null==f||e<f)f=e,d=g-1;e=h}return d},getDirectedBounds:function(a,b,c,d,e){var f=mxUtils.getValue(c,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);d=null!=d?d:mxUtils.getValue(c,mxConstants.STYLE_FLIPH,!1);e=null!=e?e:mxUtils.getValue(c,mxConstants.STYLE_FLIPV,!1);b.x=Math.round(Math.max(0, -Math.min(a.width,b.x)));b.y=Math.round(Math.max(0,Math.min(a.height,b.y)));b.width=Math.round(Math.max(0,Math.min(a.width,b.width)));b.height=Math.round(Math.max(0,Math.min(a.height,b.height)));if(e&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||d&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.x,b.x=b.width,b.width=c;if(d&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||e&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.y, -b.y=b.height,b.height=c;d=mxRectangle.fromRectangle(b);f==mxConstants.DIRECTION_SOUTH?(d.y=b.x,d.x=b.height,d.width=b.y,d.height=b.width):f==mxConstants.DIRECTION_WEST?(d.y=b.height,d.x=b.width,d.width=b.x,d.height=b.y):f==mxConstants.DIRECTION_NORTH&&(d.y=b.width,d.x=b.y,d.width=b.height,d.height=b.x);return new mxRectangle(a.x+d.x,a.y+d.y,a.width-d.width-d.x,a.height-d.height-d.y)},getPerimeterPoint:function(a,b,c){for(var d=null,e=0;e<a.length-1;e++){var f=mxUtils.intersection(a[e].x,a[e].y,a[e+ -1].x,a[e+1].y,b.x,b.y,c.x,c.y);if(null!=f){var g=c.x-f.x,h=c.y-f.y,f={p:f,distSq:h*h+g*g};null!=f&&(null==d||d.distSq>f.distSq)&&(d=f)}}return null!=d?d.p:null},rectangleIntersectsSegment:function(a,b,c){var d=a.y,e=a.x,f=d+a.height,g=e+a.width;a=b.x;var h=c.x;b.x>c.x&&(a=c.x,h=b.x);h>g&&(h=g);a<e&&(a=e);if(a>h)return!1;var e=b.y,g=c.y,k=c.x-b.x;1E-7<Math.abs(k)&&(c=(c.y-b.y)/k,b=b.y-c*b.x,e=c*a+b,g=c*h+b);e>g&&(b=g,g=e,e=b);g>f&&(g=f);e<d&&(e=d);return e>g?!1:!0},contains:function(a,b,c){return a.x<= -b&&a.x+a.width>=b&&a.y<=c&&a.y+a.height>=c},intersects:function(a,b){var c=a.width,d=a.height,e=b.width,f=b.height;if(0>=e||0>=f||0>=c||0>=d)return!1;var g=a.x,h=a.y,k=b.x,l=b.y,e=e+k,f=f+l,c=c+g,d=d+h;return(e<k||e>g)&&(f<l||f>h)&&(c<g||c>k)&&(d<h||d>l)},intersectsHotspot:function(a,b,c,d,e,f){d=null!=d?d:1;e=null!=e?e:0;f=null!=f?f:0;if(0<d){var g=a.getCenterX(),h=a.getCenterY(),k=a.width,l=a.height,m=mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE)*a.view.scale;0<m&&(mxUtils.getValue(a.style, -mxConstants.STYLE_HORIZONTAL,!0)?(h=a.y+m/2,l=m):(g=a.x+m/2,k=m));k=Math.max(e,k*d);l=Math.max(e,l*d);0<f&&(k=Math.min(k,f),l=Math.min(l,f));d=new mxRectangle(g-k/2,h-l/2,k,l);g=mxUtils.toRadians(mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION)||0);0!=g&&(e=Math.cos(-g),f=Math.sin(-g),g=new mxPoint(a.getCenterX(),a.getCenterY()),a=mxUtils.getRotatedPoint(new mxPoint(b,c),e,f,g),b=a.x,c=a.y);return mxUtils.contains(d,b,c)}return!0},getOffset:function(a,b){for(var c=0,d=0,e=!1,f=a,g=document.body, -h=document.documentElement;null!=f&&f!=g&&f!=h&&!e;){var k=mxUtils.getCurrentStyle(f);null!=k&&(e=e||"fixed"==k.position);f=f.parentNode}b||e||(e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),c+=e.x,d+=e.y);e=a.getBoundingClientRect();null!=e&&(c+=e.left,d+=e.top);return new mxPoint(c,d)},getDocumentScrollOrigin:function(a){if(mxClient.IS_QUIRKS)return new mxPoint(a.body.scrollLeft,a.body.scrollTop);a=a.defaultView||a.parentWindow;return new mxPoint(null!=a&&void 0!==window.pageXOffset?window.pageXOffset: -(document.documentElement||document.body.parentNode||document.body).scrollLeft,null!=a&&void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop)},getScrollOrigin:function(a,b,c){b=null!=b?b:!1;c=null!=c?c:!0;for(var d=null!=a?a.ownerDocument:document,e=d.body,f=d.documentElement,g=new mxPoint,h=!1;null!=a&&a!=e&&a!=f;){isNaN(a.scrollLeft)||isNaN(a.scrollTop)||(g.x+=a.scrollLeft,g.y+=a.scrollTop);var k=mxUtils.getCurrentStyle(a); -null!=k&&(h=h||"fixed"==k.position);a=b?a.parentNode:null}!h&&c&&(a=mxUtils.getDocumentScrollOrigin(d),g.x+=a.x,g.y+=a.y);return g},convertPoint:function(a,b,c){var d=mxUtils.getScrollOrigin(a,!1);a=mxUtils.getOffset(a);a.x-=d.x;a.y-=d.y;return new mxPoint(b-a.x,c-a.y)},ltrim:function(a,b){return null!=a?a.replace(new RegExp("^["+(b||"\\s")+"]+","g"),""):null},rtrim:function(a,b){return null!=a?a.replace(new RegExp("["+(b||"\\s")+"]+$","g"),""):null},trim:function(a,b){return mxUtils.ltrim(mxUtils.rtrim(a, -b),b)},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)&&("string"!=typeof a||0>a.toLowerCase().indexOf("0x"))},isInteger:function(a){return String(parseInt(a))===String(a)},mod:function(a,b){return(a%b+b)%b},intersection:function(a,b,c,d,e,f,g,h){var k=(h-f)*(c-a)-(g-e)*(d-b);g=((g-e)*(b-f)-(h-f)*(a-e))/k;e=((c-a)*(b-f)-(d-b)*(a-e))/k;return 0<=g&&1>=g&&0<=e&&1>=e?new mxPoint(a+g*(c-a),b+g*(d-b)):null},ptSegDistSq:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;0>=e*c+f*d?c=0:(e=c-e,f=d- -f,a=e*c+f*d,c=0>=a?0:a*a/(c*c+d*d));e=e*e+f*f-c;0>e&&(e=0);return e},ptLineDist:function(a,b,c,d,e,f){return Math.abs((d-b)*e-(c-a)*f+c*b-d*a)/Math.sqrt((d-b)*(d-b)+(c-a)*(c-a))},relativeCcw:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;a=e*d-f*c;0==a&&(a=e*c+f*d,0<a&&(a=(e-c)*c+(f-d)*d,0>a&&(a=0)));return 0>a?-1:0<a?1:0},animateChanges:function(a,b){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(a,b,c){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(a,b,c,d, -e,f){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(a,b){mxUtils.isVml(a)?a.style.filter=100<=b?"":"alpha(opacity="+b/5+")":mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?a.style.filter=100<=b?"":"alpha(opacity="+b+")":a.style.opacity=b/100},createImage:function(a){var b;mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?(b=document.createElement(mxClient.VML_PREFIX+":image"),b.setAttribute("src",a),b.style.borderStyle="none"):(b=document.createElement("img"), -b.setAttribute("src",a),b.setAttribute("border","0"));return b},sortCells:function(a,b){b=null!=b?b:!0;var c=new mxDictionary;a.sort(function(a,e){var d=c.get(a);null==d&&(d=mxCellPath.create(a).split(mxCellPath.PATH_SEPARATOR),c.put(a,d));var g=c.get(e);null==g&&(g=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),c.put(e,g));d=mxCellPath.compare(d,g);return 0==d?0:0<d==b?1:-1});return a},getStylename:function(a){return null!=a&&(a=a.split(";")[0],0>a.indexOf("="))?a:""},getStylenames:function(a){var b= -[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0>a[c].indexOf("=")&&b.push(a[c])}return b},indexOfStylename:function(a,b){if(null!=a&&null!=b)for(var c=a.split(";"),d=0,e=0;e<c.length;e++){if(c[e]==b)return d;d+=c[e].length+1}return-1},addStylename:function(a,b){0>mxUtils.indexOfStylename(a,b)&&(null==a?a="":0<a.length&&";"!=a.charAt(a.length-1)&&(a+=";"),a+=b);return a},removeStylename:function(a,b){var c=[];if(null!=a)for(var d=a.split(";"),e=0;e<d.length;e++)d[e]!=b&&c.push(d[e]);return c.join(";")}, -removeAllStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0<=a[c].indexOf("=")&&b.push(a[c])}return b.join(";")},setCellStyles:function(a,b,c,d){if(null!=b&&0<b.length){a.beginUpdate();try{for(var e=0;e<b.length;e++)if(null!=b[e]){var f=mxUtils.setStyle(a.getStyle(b[e]),c,d);a.setStyle(b[e],f)}}finally{a.endUpdate()}}},setStyle:function(a,b,c){var d=null!=c&&("undefined"==typeof c.length||0<c.length);if(null==a||0==a.length)d&&(a=b+"="+c+";");else if(a.substring(0, -b.length+1)==b+"="){var e=a.indexOf(";");a=d?b+"="+c+(0>e?";":a.substring(e)):0>e||e==a.length-1?"":a.substring(e+1)}else{var f=a.indexOf(";"+b+"=");0>f?d&&(d=";"==a.charAt(a.length-1)?"":";",a=a+d+b+"="+c+";"):(e=a.indexOf(";",f+1),a=d?a.substring(0,f+1)+b+"="+c+(0>e?";":a.substring(e)):a.substring(0,f)+(0>e?";":a.substring(e)))}return a},setCellStyleFlags:function(a,b,c,d,e){if(null!=b&&0<b.length){a.beginUpdate();try{for(var f=0;f<b.length;f++)if(null!=b[f]){var g=mxUtils.setStyleFlag(a.getStyle(b[f]), -c,d,e);a.setStyle(b[f],g)}}finally{a.endUpdate()}}},setStyleFlag:function(a,b,c,d){if(null==a||0==a.length)a=d||null==d?b+"="+c:b+"=0";else{var e=a.indexOf(b+"=");if(0>e)e=";"==a.charAt(a.length-1)?"":";",a=d||null==d?a+e+b+"="+c:a+e+b+"=0";else{var f=a.indexOf(";",e),g;g=0>f?a.substring(e+b.length+1):a.substring(e+b.length+1,f);g=null==d?parseInt(g)^c:d?parseInt(g)|c:parseInt(g)&~c;a=a.substring(0,e)+b+"="+g+(0<=f?a.substring(f):"")}}return a},getAlignmentAsPoint:function(a,b){var c=0,d=0;a==mxConstants.ALIGN_CENTER? -c=-.5:a==mxConstants.ALIGN_RIGHT&&(c=-1);b==mxConstants.ALIGN_MIDDLE?d=-.5:b==mxConstants.ALIGN_BOTTOM&&(d=-1);return new mxPoint(c,d)},getSizeForString:function(a,b,c,d){b=null!=b?b:mxConstants.DEFAULT_FONTSIZE;c=null!=c?c:mxConstants.DEFAULT_FONTFAMILY;var e=document.createElement("div");e.style.fontFamily=c;e.style.fontSize=Math.round(b)+"px";e.style.lineHeight=Math.round(b*mxConstants.LINE_HEIGHT)+"px";e.style.position="absolute";e.style.visibility="hidden";e.style.display=mxClient.IS_QUIRKS? -"inline":"inline-block";e.style.zoom="1";null!=d?(e.style.width=d+"px",e.style.whiteSpace="normal"):e.style.whiteSpace="nowrap";e.innerHTML=a;document.body.appendChild(e);a=new mxRectangle(0,0,e.offsetWidth,e.offsetHeight);document.body.removeChild(e);return a},getViewXml:function(a,b,c,d,e){d=null!=d?d:0;e=null!=e?e:0;b=null!=b?b:1;null==c&&(c=[a.getModel().getRoot()]);var f=a.getView(),g=null,h=f.isEventsEnabled();f.setEventsEnabled(!1);var k=f.drawPane,l=f.overlayPane;a.dialect==mxConstants.DIALECT_SVG? -(f.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),f.canvas.appendChild(f.drawPane),f.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(f.drawPane=f.drawPane.cloneNode(!1),f.canvas.appendChild(f.drawPane),f.overlayPane=f.overlayPane.cloneNode(!1));f.canvas.appendChild(f.overlayPane);var m=f.getTranslate();f.translate=new mxPoint(d,e);b=new mxTemporaryCellStates(a.getView(),b,c);try{g=(new mxCodec).encode(a.getView())}finally{b.destroy(),f.translate=m,f.canvas.removeChild(f.drawPane), -f.canvas.removeChild(f.overlayPane),f.drawPane=k,f.overlayPane=l,f.setEventsEnabled(h)}return g},getScaleForPageCount:function(a,b,c,d){if(1>a)return 1;c=null!=c?c:mxConstants.PAGE_FORMAT_A4_PORTRAIT;d=null!=d?d:0;var e=c.width-2*d;c=c.height-2*d;d=b.getGraphBounds().clone();b=b.getView().getScale();d.width/=b;d.height/=b;b=d.width;var f=Math.sqrt(a);d=Math.sqrt(b/d.height/(e/c));c=f*d;d=f/d;if(1>c&&d>a){var g=d/a;d=a;c/=g}1>d&&c>a&&(g=c/a,c=a,d/=g);g=Math.ceil(c)*Math.ceil(d);for(f=0;g>a;){var g= -Math.floor(c)/c,h=Math.floor(d)/d;1==g&&(g=Math.floor(c-1)/c);1==h&&(h=Math.floor(d-1)/d);g=g>h?g:h;c*=g;d*=g;g=Math.ceil(c)*Math.ceil(d);f++;if(10<f)break}return e*c/b*.99999},show:function(a,b,c,d,e,f){c=null!=c?c:0;d=null!=d?d:0;null==b?b=window.open().document:b.open();9==document.documentMode&&b.writeln('\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=9"><![endif]--\x3e');var g=a.getGraphBounds(),h=Math.ceil(c-g.x),k=Math.ceil(d-g.y);null==e&&(e=Math.ceil(g.width+c)+Math.ceil(Math.ceil(g.x)- -g.x));null==f&&(f=Math.ceil(g.height+d)+Math.ceil(Math.ceil(g.y)-g.y));if(mxClient.IS_IE||11==document.documentMode){d="<html><head>";g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)d+=g[c].outerHTML;d+="<style>";for(c=0;c<document.styleSheets.length;c++)try{d+=document.styleSheets[c].cssText}catch(l){}d=d+'</style></head><body style="margin:0px;">'+('<div style="position:absolute;overflow:hidden;width:'+e+"px;height:"+f+'px;"><div style="position:relative;left:'+h+"px;top:"+k+'px;">')+ -a.container.innerHTML;b.writeln(d+"</div></div></body><html>");b.close()}else{b.writeln("<html><head>");g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)b.writeln(mxUtils.getOuterHtml(g[c]));d=document.getElementsByTagName("link");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));d=document.getElementsByTagName("style");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));b.writeln('</head><body style="margin:0px;"></body></html>');b.close();c=b.createElement("div"); -c.position="absolute";c.overflow="hidden";c.style.width=e+"px";c.style.height=f+"px";e=b.createElement("div");e.style.position="absolute";e.style.left=h+"px";e.style.top=k+"px";f=a.container.firstChild;for(d=null;null!=f;)g=f.cloneNode(!0),f==a.view.drawPane.ownerSVGElement?(c.appendChild(g),d=g):e.appendChild(g),f=f.nextSibling;b.body.appendChild(c);null!=e.firstChild&&b.body.appendChild(e);null!=d&&(d.style.minWidth="",d.style.minHeight="",d.firstChild.setAttribute("transform","translate("+h+","+ -k+")"))}mxUtils.removeCursors(b.body);return b},printScreen:function(a){var b=window.open();a.getGraphBounds();mxUtils.show(a,b.document);a=function(){b.focus();b.print();b.close()};mxClient.IS_GC?b.setTimeout(a,500):a()},popup:function(a,b){if(b){var c=document.createElement("div");c.style.overflow="scroll";c.style.width="636px";c.style.height="460px";var d=document.createElement("pre");d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g," ");c.appendChild(d);c=new mxWindow("Popup Window", -c,document.body.clientWidth/2-320,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight)/2-240,640,480,!1,!0);c.setClosable(!0);c.setVisible(!0)}else mxClient.IS_NS?(c=window.open(),c.document.writeln("<pre>"+mxUtils.htmlEntities(a)+"</pre"),c.document.close()):(c=window.open(),d=c.document.createElement("pre"),d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g," "),c.document.body.appendChild(d))},alert:function(a){alert(a)},prompt:function(a,b){return prompt(a, -null!=b?b:"")},confirm:function(a){return confirm(a)},error:function(a,b,c,d){var e=document.createElement("div");e.style.padding="20px";var f=document.createElement("img");f.setAttribute("src",d||mxUtils.errorImage);f.setAttribute("valign","bottom");f.style.verticalAlign="middle";e.appendChild(f);e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));mxUtils.write(e,a);a=document.body.clientWidth;d=document.body.clientHeight|| -document.documentElement.clientHeight;var g=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,e,(a-b)/2,d/4,b,null,!1,!0);c&&(mxUtils.br(e),b=document.createElement("p"),c=document.createElement("button"),mxClient.IS_IE?c.style.cssText="float:right":c.setAttribute("style","float:right"),mxEvent.addListener(c,"click",function(a){g.destroy()}),mxUtils.write(c,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),b.appendChild(c),e.appendChild(b),mxUtils.br(e),g.setClosable(!0)); -g.setVisible(!0);return g},makeDraggable:function(a,b,c,d,e,f,g,h,k,l){a=new mxDragSource(a,c);a.dragOffset=new mxPoint(null!=e?e:0,null!=f?f:mxConstants.TOOLTIP_VERTICAL_OFFSET);a.autoscroll=g;a.setGuidesEnabled(!1);null!=k&&(a.highlightDropTargets=k);null!=l&&(a.getDropTarget=l);a.getGraphForEvent=function(a){return"function"==typeof b?b(a):b};null!=d&&(a.createDragElement=function(){return d.cloneNode(!0)},h&&(a.createPreviewElement=function(a){var b=d.cloneNode(!0),c=parseInt(b.style.width),e= -parseInt(b.style.height);b.style.width=Math.round(c*a.view.scale)+"px";b.style.height=Math.round(e*a.view.scale)+"px";return b}));return a}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml", +linkAction:function(a,b,c,d,e){return mxUtils.link(a,b,function(){c.execute(d)},e)},linkInvoke:function(a,b,c,d,e,f){return mxUtils.link(a,b,function(){c[d](e)},f)},link:function(a,b,c,d){var e=document.createElement("span");e.style.color="blue";e.style.textDecoration="underline";e.style.cursor="pointer";null!=d&&(e.style.paddingLeft=d+"px");mxEvent.addListener(e,"click",c);mxUtils.write(e,b);null!=a&&a.appendChild(e);return e},getDocumentSize:function(){var a=document.body,b=document.documentElement; +try{return new mxRectangle(0,0,a.clientWidth||b.clientWidth,Math.max(a.clientHeight||0,b.clientHeight))}catch(c){return new mxRectangle}},fit:function(a){var b=mxUtils.getDocumentSize(),c=parseInt(a.offsetLeft),d=parseInt(a.offsetWidth),e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),f=e.x,e=e.y,g=f+b.width;c+d>g&&(a.style.left=Math.max(f,g-d)+"px");c=parseInt(a.offsetTop);d=parseInt(a.offsetHeight);b=e+b.height;c+d>b&&(a.style.top=Math.max(e,b-d)+"px")},load:function(a){a=new mxXmlRequest(a,null, +"GET",!1);a.send();return a},get:function(a,b,c,d,e,f){a=new mxXmlRequest(a,null,"GET");null!=d&&a.setBinary(d);a.send(b,c,e,f);return a},getAll:function(a,b,c){for(var d=a.length,e=[],f=0,g=function(){0==f&&null!=c&&c();f++},h=0;h<a.length;h++)(function(a,c){mxUtils.get(a,function(a){var f=a.getStatus();200>f||299<f?g():(e[c]=a,d--,0==d&&b(e))},g)})(a[h],h);0==d&&b(e)},post:function(a,b,c,d){return(new mxXmlRequest(a,b)).send(c,d)},submit:function(a,b,c,d){return(new mxXmlRequest(a,b)).simulate(c, +d)},loadInto:function(a,b,c){mxClient.IS_IE?b.onreadystatechange=function(){4==b.readyState&&c()}:b.addEventListener("load",c,!1);b.load(a)},getValue:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c);return a},getNumber:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c||0);return Number(a)},getColor:function(a,b,c){a=null!=a?a[b]:null;null==a?a=c:a==mxConstants.NONE&&(a=null);return a},clone:function(a,b,c){c=null!=c?c:!1;var d=null;if(null!=a&&"function"==typeof a.constructor){var d=new a.constructor, +e;for(e in a)e!=mxObjectIdentity.FIELD_NAME&&(null==b||0>mxUtils.indexOf(b,e))&&(d[e]=c||"object"!=typeof a[e]?a[e]:mxUtils.clone(a[e]))}return d},equalPoints:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b)for(var c=0;c<a.length;c++)if(a[c]==b[c]||null!=a[c]&&!a[c].equals(b[c]))return!1;return!0},equalEntries:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b){var c= +0,d;for(d in b)c++;for(d in a)if(c--,!(mxUtils.isNaN(a[d])&&mxUtils.isNaN(b[d])||a[d]==b[d]))return!1}return 0==c},removeDuplicates:function(a){for(var b=new mxDictionary,c=[],d=0;d<a.length;d++)b.get(a[d])||(c.push(a[d]),b.put(a[d],!0));return c},isNaN:function(a){return"number"==typeof a&&isNaN(a)},extend:function(a,b){var c=function(){};c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a},toString:function(a){var b="",c;for(c in a)try{if(null==a[c])b+=c+" = [null]\n";else if("function"== +typeof a[c])b+=c+" => [Function]\n";else if("object"==typeof a[c])var d=mxUtils.getFunctionName(a[c].constructor),b=b+(c+" => ["+d+"]\n");else b+=c+" = "+a[c]+"\n"}catch(e){b+=c+"="+e.message}return b},toRadians:function(a){return Math.PI*a/180},toDegree:function(a){return 180*a/Math.PI},arcToCurves:function(a,b,c,d,e,f,g,h,k){h-=a;k-=b;if(0===c||0===d)return p;c=Math.abs(c);d=Math.abs(d);var l=-h/2,m=-k/2,n=Math.cos(e*Math.PI/180),p=Math.sin(e*Math.PI/180);e=n*l+p*m;var l=-1*p*l+n*m,m=e*e,r=l*l, +q=c*c,t=d*d,z=m/q+r/t;1<z?(c*=Math.sqrt(z),d*=Math.sqrt(z),f=0):(z=1,f===g&&(z=-1),f=z*Math.sqrt((q*t-q*r-t*m)/(q*r+t*m)));m=f*c*l/d;r=-1*f*d*e/c;h=n*m-p*r+h/2;k=p*m+n*r+k/2;q=Math.atan2((l-r)/d,(e-m)/c)-Math.atan2(0,1);f=0<=q?q:2*Math.PI+q;q=Math.atan2((-l-r)/d,(-e-m)/c)-Math.atan2((l-r)/d,(e-m)/c);e=0<=q?q:2*Math.PI+q;0==g&&0<e?e-=2*Math.PI:0!=g&&0>e&&(e+=2*Math.PI);g=2*e/Math.PI;g=Math.ceil(0>g?-1*g:g);e/=g;l=8/3*Math.sin(e/4)*Math.sin(e/4)/Math.sin(e/2);m=n*c;n*=d;c*=p;d*=p;for(var x=Math.cos(f), +w=Math.sin(f),r=-l*(m*w+d*x),q=-l*(c*w-n*x),p=[],y=0;y<g;++y){f+=e;var x=Math.cos(f),w=Math.sin(f),t=m*x-d*w+h,z=c*x+n*w+k,u=-l*(m*w+d*x),x=-l*(c*w-n*x),w=6*y;p[w]=Number(r+a);p[w+1]=Number(q+b);p[w+2]=Number(t-u+a);p[w+3]=Number(z-x+b);p[w+4]=Number(t+a);p[w+5]=Number(z+b);r=t+u;q=z+x}return p},getBoundingBox:function(a,b,c){var d=null;if(null!=a&&null!=b&&0!=b){b=mxUtils.toRadians(b);var d=Math.cos(b),e=Math.sin(b);c=null!=c?c:new mxPoint(a.x+a.width/2,a.y+a.height/2);var f=new mxPoint(a.x,a.y); +b=new mxPoint(a.x+a.width,a.y);var g=new mxPoint(b.x,a.y+a.height);a=new mxPoint(a.x,g.y);f=mxUtils.getRotatedPoint(f,d,e,c);b=mxUtils.getRotatedPoint(b,d,e,c);g=mxUtils.getRotatedPoint(g,d,e,c);a=mxUtils.getRotatedPoint(a,d,e,c);d=new mxRectangle(f.x,f.y,0,0);d.add(new mxRectangle(b.x,b.y,0,0));d.add(new mxRectangle(g.x,g.y,0,0));d.add(new mxRectangle(a.x,a.y,0,0))}return d},getRotatedPoint:function(a,b,c,d){d=null!=d?d:new mxPoint;var e=a.x-d.x;a=a.y-d.y;return new mxPoint(e*b-a*c+d.x,a*b+e*c+d.y)}, +getPortConstraints:function(a,b,c,d){b=mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT,mxUtils.getValue(b.style,c?mxConstants.STYLE_SOURCE_PORT_CONSTRAINT:mxConstants.STYLE_TARGET_PORT_CONSTRAINT,null));if(null==b)return d;d=b.toString();b=mxConstants.DIRECTION_MASK_NONE;c=0;1==mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT_ROTATION,0)&&(c=mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION,0));a=0;45<c?(a=1,135<=c&&(a=2)):-45>c&&(a=3,-135>=c&&(a=2));if(0<=d.indexOf(mxConstants.DIRECTION_NORTH))switch(a){case 0:b|= +mxConstants.DIRECTION_MASK_NORTH;break;case 1:b|=mxConstants.DIRECTION_MASK_EAST;break;case 2:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 3:b|=mxConstants.DIRECTION_MASK_WEST}if(0<=d.indexOf(mxConstants.DIRECTION_WEST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_WEST;break;case 1:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 2:b|=mxConstants.DIRECTION_MASK_EAST;break;case 3:b|=mxConstants.DIRECTION_MASK_SOUTH}if(0<=d.indexOf(mxConstants.DIRECTION_SOUTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_SOUTH; +break;case 1:b|=mxConstants.DIRECTION_MASK_WEST;break;case 2:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 3:b|=mxConstants.DIRECTION_MASK_EAST}if(0<=d.indexOf(mxConstants.DIRECTION_EAST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_EAST;break;case 1:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 2:b|=mxConstants.DIRECTION_MASK_WEST;break;case 3:b|=mxConstants.DIRECTION_MASK_NORTH}return b},reversePortConstraints:function(a){var b;b=(a&mxConstants.DIRECTION_MASK_WEST)<<3;b|=(a&mxConstants.DIRECTION_MASK_NORTH)<< +1;b|=(a&mxConstants.DIRECTION_MASK_SOUTH)>>1;return b|=(a&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(a,b,c){var d=-1;if(0<a.absolutePoints.length)for(var e=a.absolutePoints[0],f=null,g=1;g<a.absolutePoints.length;g++){var h=a.absolutePoints[g],e=mxUtils.ptSegDistSq(e.x,e.y,h.x,h.y,b,c);if(null==f||e<f)f=e,d=g-1;e=h}return d},getDirectedBounds:function(a,b,c,d,e){var f=mxUtils.getValue(c,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);d=null!=d?d:mxUtils.getValue(c,mxConstants.STYLE_FLIPH, +!1);e=null!=e?e:mxUtils.getValue(c,mxConstants.STYLE_FLIPV,!1);b.x=Math.round(Math.max(0,Math.min(a.width,b.x)));b.y=Math.round(Math.max(0,Math.min(a.height,b.y)));b.width=Math.round(Math.max(0,Math.min(a.width,b.width)));b.height=Math.round(Math.max(0,Math.min(a.height,b.height)));if(e&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||d&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.x,b.x=b.width,b.width=c;if(d&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)|| +e&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.y,b.y=b.height,b.height=c;d=mxRectangle.fromRectangle(b);f==mxConstants.DIRECTION_SOUTH?(d.y=b.x,d.x=b.height,d.width=b.y,d.height=b.width):f==mxConstants.DIRECTION_WEST?(d.y=b.height,d.x=b.width,d.width=b.x,d.height=b.y):f==mxConstants.DIRECTION_NORTH&&(d.y=b.width,d.x=b.y,d.width=b.height,d.height=b.x);return new mxRectangle(a.x+d.x,a.y+d.y,a.width-d.width-d.x,a.height-d.height-d.y)},getPerimeterPoint:function(a,b,c){for(var d= +null,e=0;e<a.length-1;e++){var f=mxUtils.intersection(a[e].x,a[e].y,a[e+1].x,a[e+1].y,b.x,b.y,c.x,c.y);if(null!=f){var g=c.x-f.x,h=c.y-f.y,f={p:f,distSq:h*h+g*g};null!=f&&(null==d||d.distSq>f.distSq)&&(d=f)}}return null!=d?d.p:null},rectangleIntersectsSegment:function(a,b,c){var d=a.y,e=a.x,f=d+a.height,g=e+a.width;a=b.x;var h=c.x;b.x>c.x&&(a=c.x,h=b.x);h>g&&(h=g);a<e&&(a=e);if(a>h)return!1;var e=b.y,g=c.y,k=c.x-b.x;1E-7<Math.abs(k)&&(c=(c.y-b.y)/k,b=b.y-c*b.x,e=c*a+b,g=c*h+b);e>g&&(b=g,g=e,e=b); +g>f&&(g=f);e<d&&(e=d);return e>g?!1:!0},contains:function(a,b,c){return a.x<=b&&a.x+a.width>=b&&a.y<=c&&a.y+a.height>=c},intersects:function(a,b){var c=a.width,d=a.height,e=b.width,f=b.height;if(0>=e||0>=f||0>=c||0>=d)return!1;var g=a.x,h=a.y,k=b.x,l=b.y,e=e+k,f=f+l,c=c+g,d=d+h;return(e<k||e>g)&&(f<l||f>h)&&(c<g||c>k)&&(d<h||d>l)},intersectsHotspot:function(a,b,c,d,e,f){d=null!=d?d:1;e=null!=e?e:0;f=null!=f?f:0;if(0<d){var g=a.getCenterX(),h=a.getCenterY(),k=a.width,l=a.height,m=mxUtils.getValue(a.style, +mxConstants.STYLE_STARTSIZE)*a.view.scale;0<m&&(mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,!0)?(h=a.y+m/2,l=m):(g=a.x+m/2,k=m));k=Math.max(e,k*d);l=Math.max(e,l*d);0<f&&(k=Math.min(k,f),l=Math.min(l,f));d=new mxRectangle(g-k/2,h-l/2,k,l);g=mxUtils.toRadians(mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION)||0);0!=g&&(e=Math.cos(-g),f=Math.sin(-g),g=new mxPoint(a.getCenterX(),a.getCenterY()),a=mxUtils.getRotatedPoint(new mxPoint(b,c),e,f,g),b=a.x,c=a.y);return mxUtils.contains(d,b,c)}return!0}, +getOffset:function(a,b){for(var c=0,d=0,e=!1,f=a,g=document.body,h=document.documentElement;null!=f&&f!=g&&f!=h&&!e;){var k=mxUtils.getCurrentStyle(f);null!=k&&(e=e||"fixed"==k.position);f=f.parentNode}b||e||(e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),c+=e.x,d+=e.y);e=a.getBoundingClientRect();null!=e&&(c+=e.left,d+=e.top);return new mxPoint(c,d)},getDocumentScrollOrigin:function(a){if(mxClient.IS_QUIRKS)return new mxPoint(a.body.scrollLeft,a.body.scrollTop);a=a.defaultView||a.parentWindow; +return new mxPoint(null!=a&&void 0!==window.pageXOffset?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft,null!=a&&void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop)},getScrollOrigin:function(a,b,c){b=null!=b?b:!1;c=null!=c?c:!0;for(var d=null!=a?a.ownerDocument:document,e=d.body,f=d.documentElement,g=new mxPoint,h=!1;null!=a&&a!=e&&a!=f;){isNaN(a.scrollLeft)||isNaN(a.scrollTop)|| +(g.x+=a.scrollLeft,g.y+=a.scrollTop);var k=mxUtils.getCurrentStyle(a);null!=k&&(h=h||"fixed"==k.position);a=b?a.parentNode:null}!h&&c&&(a=mxUtils.getDocumentScrollOrigin(d),g.x+=a.x,g.y+=a.y);return g},convertPoint:function(a,b,c){var d=mxUtils.getScrollOrigin(a,!1);a=mxUtils.getOffset(a);a.x-=d.x;a.y-=d.y;return new mxPoint(b-a.x,c-a.y)},ltrim:function(a,b){return null!=a?a.replace(new RegExp("^["+(b||"\\s")+"]+","g"),""):null},rtrim:function(a,b){return null!=a?a.replace(new RegExp("["+(b||"\\s")+ +"]+$","g"),""):null},trim:function(a,b){return mxUtils.ltrim(mxUtils.rtrim(a,b),b)},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)&&("string"!=typeof a||0>a.toLowerCase().indexOf("0x"))},isInteger:function(a){return String(parseInt(a))===String(a)},mod:function(a,b){return(a%b+b)%b},intersection:function(a,b,c,d,e,f,g,h){var k=(h-f)*(c-a)-(g-e)*(d-b);g=((g-e)*(b-f)-(h-f)*(a-e))/k;e=((c-a)*(b-f)-(d-b)*(a-e))/k;return 0<=g&&1>=g&&0<=e&&1>=e?new mxPoint(a+g*(c-a),b+g*(d-b)):null},ptSegDistSq:function(a, +b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;0>=e*c+f*d?c=0:(e=c-e,f=d-f,a=e*c+f*d,c=0>=a?0:a*a/(c*c+d*d));e=e*e+f*f-c;0>e&&(e=0);return e},ptLineDist:function(a,b,c,d,e,f){return Math.abs((d-b)*e-(c-a)*f+c*b-d*a)/Math.sqrt((d-b)*(d-b)+(c-a)*(c-a))},relativeCcw:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;a=e*d-f*c;0==a&&(a=e*c+f*d,0<a&&(a=(e-c)*c+(f-d)*d,0>a&&(a=0)));return 0>a?-1:0<a?1:0},animateChanges:function(a,b){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(a,b,c){mxEffects.cascadeOpacity.apply(this, +arguments)},fadeOut:function(a,b,c,d,e,f){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(a,b){mxUtils.isVml(a)?a.style.filter=100<=b?"":"alpha(opacity="+b/5+")":mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?a.style.filter=100<=b?"":"alpha(opacity="+b+")":a.style.opacity=b/100},createImage:function(a){var b;mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?(b=document.createElement(mxClient.VML_PREFIX+":image"),b.setAttribute("src",a),b.style.borderStyle= +"none"):(b=document.createElement("img"),b.setAttribute("src",a),b.setAttribute("border","0"));return b},sortCells:function(a,b){b=null!=b?b:!0;var c=new mxDictionary;a.sort(function(a,e){var d=c.get(a);null==d&&(d=mxCellPath.create(a).split(mxCellPath.PATH_SEPARATOR),c.put(a,d));var g=c.get(e);null==g&&(g=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),c.put(e,g));d=mxCellPath.compare(d,g);return 0==d?0:0<d==b?1:-1});return a},getStylename:function(a){return null!=a&&(a=a.split(";")[0],0>a.indexOf("="))? +a:""},getStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0>a[c].indexOf("=")&&b.push(a[c])}return b},indexOfStylename:function(a,b){if(null!=a&&null!=b)for(var c=a.split(";"),d=0,e=0;e<c.length;e++){if(c[e]==b)return d;d+=c[e].length+1}return-1},addStylename:function(a,b){0>mxUtils.indexOfStylename(a,b)&&(null==a?a="":0<a.length&&";"!=a.charAt(a.length-1)&&(a+=";"),a+=b);return a},removeStylename:function(a,b){var c=[];if(null!=a)for(var d=a.split(";"),e=0;e< +d.length;e++)d[e]!=b&&c.push(d[e]);return c.join(";")},removeAllStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0<=a[c].indexOf("=")&&b.push(a[c])}return b.join(";")},setCellStyles:function(a,b,c,d){if(null!=b&&0<b.length){a.beginUpdate();try{for(var e=0;e<b.length;e++)if(null!=b[e]){var f=mxUtils.setStyle(a.getStyle(b[e]),c,d);a.setStyle(b[e],f)}}finally{a.endUpdate()}}},setStyle:function(a,b,c){var d=null!=c&&("undefined"==typeof c.length||0<c.length);if(null== +a||0==a.length)d&&(a=b+"="+c+";");else if(a.substring(0,b.length+1)==b+"="){var e=a.indexOf(";");a=d?b+"="+c+(0>e?";":a.substring(e)):0>e||e==a.length-1?"":a.substring(e+1)}else{var f=a.indexOf(";"+b+"=");0>f?d&&(d=";"==a.charAt(a.length-1)?"":";",a=a+d+b+"="+c+";"):(e=a.indexOf(";",f+1),a=d?a.substring(0,f+1)+b+"="+c+(0>e?";":a.substring(e)):a.substring(0,f)+(0>e?";":a.substring(e)))}return a},setCellStyleFlags:function(a,b,c,d,e){if(null!=b&&0<b.length){a.beginUpdate();try{for(var f=0;f<b.length;f++)if(null!= +b[f]){var g=mxUtils.setStyleFlag(a.getStyle(b[f]),c,d,e);a.setStyle(b[f],g)}}finally{a.endUpdate()}}},setStyleFlag:function(a,b,c,d){if(null==a||0==a.length)a=d||null==d?b+"="+c:b+"=0";else{var e=a.indexOf(b+"=");if(0>e)e=";"==a.charAt(a.length-1)?"":";",a=d||null==d?a+e+b+"="+c:a+e+b+"=0";else{var f=a.indexOf(";",e),g;g=0>f?a.substring(e+b.length+1):a.substring(e+b.length+1,f);g=null==d?parseInt(g)^c:d?parseInt(g)|c:parseInt(g)&~c;a=a.substring(0,e)+b+"="+g+(0<=f?a.substring(f):"")}}return a},getAlignmentAsPoint:function(a, +b){var c=0,d=0;a==mxConstants.ALIGN_CENTER?c=-.5:a==mxConstants.ALIGN_RIGHT&&(c=-1);b==mxConstants.ALIGN_MIDDLE?d=-.5:b==mxConstants.ALIGN_BOTTOM&&(d=-1);return new mxPoint(c,d)},getSizeForString:function(a,b,c,d){b=null!=b?b:mxConstants.DEFAULT_FONTSIZE;c=null!=c?c:mxConstants.DEFAULT_FONTFAMILY;var e=document.createElement("div");e.style.fontFamily=c;e.style.fontSize=Math.round(b)+"px";e.style.lineHeight=Math.round(b*mxConstants.LINE_HEIGHT)+"px";e.style.position="absolute";e.style.visibility="hidden"; +e.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";e.style.zoom="1";null!=d?(e.style.width=d+"px",e.style.whiteSpace="normal"):e.style.whiteSpace="nowrap";e.innerHTML=a;document.body.appendChild(e);a=new mxRectangle(0,0,e.offsetWidth,e.offsetHeight);document.body.removeChild(e);return a},getViewXml:function(a,b,c,d,e){d=null!=d?d:0;e=null!=e?e:0;b=null!=b?b:1;null==c&&(c=[a.getModel().getRoot()]);var f=a.getView(),g=null,h=f.isEventsEnabled();f.setEventsEnabled(!1);var k=f.drawPane,l=f.overlayPane; +a.dialect==mxConstants.DIALECT_SVG?(f.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),f.canvas.appendChild(f.drawPane),f.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(f.drawPane=f.drawPane.cloneNode(!1),f.canvas.appendChild(f.drawPane),f.overlayPane=f.overlayPane.cloneNode(!1));f.canvas.appendChild(f.overlayPane);var m=f.getTranslate();f.translate=new mxPoint(d,e);b=new mxTemporaryCellStates(a.getView(),b,c);try{g=(new mxCodec).encode(a.getView())}finally{b.destroy(),f.translate= +m,f.canvas.removeChild(f.drawPane),f.canvas.removeChild(f.overlayPane),f.drawPane=k,f.overlayPane=l,f.setEventsEnabled(h)}return g},getScaleForPageCount:function(a,b,c,d){if(1>a)return 1;c=null!=c?c:mxConstants.PAGE_FORMAT_A4_PORTRAIT;d=null!=d?d:0;var e=c.width-2*d;c=c.height-2*d;d=b.getGraphBounds().clone();b=b.getView().getScale();d.width/=b;d.height/=b;b=d.width;var f=Math.sqrt(a);d=Math.sqrt(b/d.height/(e/c));c=f*d;d=f/d;if(1>c&&d>a){var g=d/a;d=a;c/=g}1>d&&c>a&&(g=c/a,c=a,d/=g);g=Math.ceil(c)* +Math.ceil(d);for(f=0;g>a;){var g=Math.floor(c)/c,h=Math.floor(d)/d;1==g&&(g=Math.floor(c-1)/c);1==h&&(h=Math.floor(d-1)/d);g=g>h?g:h;c*=g;d*=g;g=Math.ceil(c)*Math.ceil(d);f++;if(10<f)break}return e*c/b*.99999},show:function(a,b,c,d,e,f){c=null!=c?c:0;d=null!=d?d:0;null==b?b=window.open().document:b.open();9==document.documentMode&&b.writeln('\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=9"><![endif]--\x3e');var g=a.getGraphBounds(),h=Math.ceil(c-g.x),k=Math.ceil(d-g.y);null==e&&(e= +Math.ceil(g.width+c)+Math.ceil(Math.ceil(g.x)-g.x));null==f&&(f=Math.ceil(g.height+d)+Math.ceil(Math.ceil(g.y)-g.y));if(mxClient.IS_IE||11==document.documentMode){d="<html><head>";g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)d+=g[c].outerHTML;d+="<style>";for(c=0;c<document.styleSheets.length;c++)try{d+=document.styleSheets[c].cssText}catch(l){}d=d+'</style></head><body style="margin:0px;">'+('<div style="position:absolute;overflow:hidden;width:'+e+"px;height:"+f+'px;"><div style="position:relative;left:'+ +h+"px;top:"+k+'px;">')+a.container.innerHTML;b.writeln(d+"</div></div></body><html>");b.close()}else{b.writeln("<html><head>");g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)b.writeln(mxUtils.getOuterHtml(g[c]));d=document.getElementsByTagName("link");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));d=document.getElementsByTagName("style");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));b.writeln('</head><body style="margin:0px;"></body></html>');b.close(); +c=b.createElement("div");c.position="absolute";c.overflow="hidden";c.style.width=e+"px";c.style.height=f+"px";e=b.createElement("div");e.style.position="absolute";e.style.left=h+"px";e.style.top=k+"px";f=a.container.firstChild;for(d=null;null!=f;)g=f.cloneNode(!0),f==a.view.drawPane.ownerSVGElement?(c.appendChild(g),d=g):e.appendChild(g),f=f.nextSibling;b.body.appendChild(c);null!=e.firstChild&&b.body.appendChild(e);null!=d&&(d.style.minWidth="",d.style.minHeight="",d.firstChild.setAttribute("transform", +"translate("+h+","+k+")"))}mxUtils.removeCursors(b.body);return b},printScreen:function(a){var b=window.open();a.getGraphBounds();mxUtils.show(a,b.document);a=function(){b.focus();b.print();b.close()};mxClient.IS_GC?b.setTimeout(a,500):a()},popup:function(a,b){if(b){var c=document.createElement("div");c.style.overflow="scroll";c.style.width="636px";c.style.height="460px";var d=document.createElement("pre");d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g," ");c.appendChild(d); +c=new mxWindow("Popup Window",c,document.body.clientWidth/2-320,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight)/2-240,640,480,!1,!0);c.setClosable(!0);c.setVisible(!0)}else mxClient.IS_NS?(c=window.open(),c.document.writeln("<pre>"+mxUtils.htmlEntities(a)+"</pre"),c.document.close()):(c=window.open(),d=c.document.createElement("pre"),d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g," "),c.document.body.appendChild(d))},alert:function(a){alert(a)}, +prompt:function(a,b){return prompt(a,null!=b?b:"")},confirm:function(a){return confirm(a)},error:function(a,b,c,d){var e=document.createElement("div");e.style.padding="20px";var f=document.createElement("img");f.setAttribute("src",d||mxUtils.errorImage);f.setAttribute("valign","bottom");f.style.verticalAlign="middle";e.appendChild(f);e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));mxUtils.write(e,a);a=document.body.clientWidth; +d=document.body.clientHeight||document.documentElement.clientHeight;var g=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,e,(a-b)/2,d/4,b,null,!1,!0);c&&(mxUtils.br(e),b=document.createElement("p"),c=document.createElement("button"),mxClient.IS_IE?c.style.cssText="float:right":c.setAttribute("style","float:right"),mxEvent.addListener(c,"click",function(a){g.destroy()}),mxUtils.write(c,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),b.appendChild(c),e.appendChild(b), +mxUtils.br(e),g.setClosable(!0));g.setVisible(!0);return g},makeDraggable:function(a,b,c,d,e,f,g,h,k,l){a=new mxDragSource(a,c);a.dragOffset=new mxPoint(null!=e?e:0,null!=f?f:mxConstants.TOOLTIP_VERTICAL_OFFSET);a.autoscroll=g;a.setGuidesEnabled(!1);null!=k&&(a.highlightDropTargets=k);null!=l&&(a.getDropTarget=l);a.getGraphForEvent=function(a){return"function"==typeof b?b(a):b};null!=d&&(a.createDragElement=function(){return d.cloneNode(!0)},h&&(a.createPreviewElement=function(a){var b=d.cloneNode(!0), +c=parseInt(b.style.width),e=parseInt(b.style.height);b.style.width=Math.round(c*a.view.scale)+"px";b.style.height=Math.round(e*a.view.scale)+"px";return b}));return a}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml", NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",VML_SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",OUTLINE_HIGHLIGHT_COLOR:"#00FF00", OUTLINE_HIGHLIGHT_STROKEWIDTH:5,HIGHLIGHT_STROKEWIDTH:3,HIGHLIGHT_SIZE:2,HIGHLIGHT_OPACITY:100,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_TERMINAL_HANDLE:"pointer",CURSOR_BEND_HANDLE:"crosshair",CURSOR_VIRTUAL_BEND_HANDLE:"crosshair",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00", VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:6,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF", @@ -400,11 +400,11 @@ mxSvgCanvas2D.prototype.updateText=function(a,b,c,d,e,f,g,h,k,l,m){if(null!=m&&n q,m.mxCachedFinalOffsetHeight=g);q+=0;g-=2;k&&(g=Math.min(g,d),q=Math.min(q,c));"width"==h?d=g:"fill"!=h&&(c=q,d=g);g=k=0;e==mxConstants.ALIGN_CENTER?k-=c/2:e==mxConstants.ALIGN_RIGHT&&(k-=c);a+=k;f==mxConstants.ALIGN_MIDDLE?g-=d/2:f==mxConstants.ALIGN_BOTTOM&&(g-=d);"fill"!=h&&mxClient.IS_FF&&mxClient.IS_WIN&&(g-=2);b+=g;e=1!=r.scale?"scale("+r.scale+")":"";0!=r.rotation&&this.rotateHtml?(e+="rotate("+r.rotation+","+c/2+","+d/2+")",b=this.rotatePoint((a+c/2)*r.scale,(b+d/2)*r.scale,r.rotation,r.rotationCx, r.rotationCy),a=b.x-c*r.scale/2,b=b.y-d*r.scale/2):(a*=r.scale,b*=r.scale);0!=l&&(e+="rotate("+l+","+-k+","+-g+")");m.setAttribute("transform","translate("+Math.round(a)+","+Math.round(b)+")"+e);n.setAttribute("width",Math.round(Math.max(1,c)));n.setAttribute("height",Math.round(Math.max(1,d)))}}; mxSvgCanvas2D.prototype.text=function(a,b,c,d,e,f,g,h,k,l,m,n,p){if(this.textEnabled&&null!=e){n=null!=n?n:0;var r=this.state;a+=r.dx;b+=r.dy;if(this.foEnabled&&"html"==k){var q="vertical-align:top;";m?q+="overflow:hidden;max-height:"+Math.round(d)+"px;max-width:"+Math.round(c)+"px;":"fill"==l?q+="width:"+Math.round(c+1)+"px;height:"+Math.round(d+1)+"px;overflow:hidden;":"width"==l&&(q+="width:"+Math.round(c+1)+"px;",0<d&&(q+="max-height:"+Math.round(d)+"px;overflow:hidden;"));var q=h&&0<c?q+("width:"+ -Math.round(c+1)+"px;white-space:normal;word-wrap:"+mxConstants.WORD_WRAP+";"):q+"white-space:nowrap;",t=this.createElement("g");1>r.alpha&&t.setAttribute("opacity",r.alpha);var z=this.createElement("foreignObject");z.setAttribute("style","overflow:visible;");z.setAttribute("pointer-events","all");q=this.createDiv(e,f,g,q,l);if(null!=q){null!=p&&q.setAttribute("dir",p);t.appendChild(z);this.root.appendChild(t);var w,x;p=w=2;if(!mxClient.IS_IE||9!=document.documentMode&&mxClient.IS_SVG){this.root.ownerDocument!= +Math.round(c+1)+"px;white-space:normal;word-wrap:"+mxConstants.WORD_WRAP+";"):q+"white-space:nowrap;",t=this.createElement("g");1>r.alpha&&t.setAttribute("opacity",r.alpha);var z=this.createElement("foreignObject");z.setAttribute("style","overflow:visible;");z.setAttribute("pointer-events","all");q=this.createDiv(e,f,g,q,l);if(null!=q){null!=p&&q.setAttribute("dir",p);t.appendChild(z);this.root.appendChild(t);var x,w;p=x=2;if(!mxClient.IS_IE||9!=document.documentMode&&mxClient.IS_SVG){this.root.ownerDocument!= document?(q.style.visibility="hidden",document.body.appendChild(q)):z.appendChild(q);var y=q;null!=y.firstChild&&"DIV"==y.firstChild.nodeName&&(y=y.firstChild,h&&"break-word"==q.style.wordWrap&&(y.style.width="100%"));u=y.offsetWidth;0==u&&q.parentNode==z&&(q.style.visibility="hidden",document.body.appendChild(q),u=y.offsetWidth);this.cacheOffsetSize&&(t.mxCachedOffsetWidth=u);!m&&h&&0<c&&this.root.ownerDocument!=document&&"fill"!=l&&"width"!=l&&(D=q.style.whiteSpace,q.style.whiteSpace="nowrap",u< -y.offsetWidth&&(q.style.whiteSpace=D));w=u+w-1;h&&"fill"!=l&&"width"!=l&&(m&&(w=Math.min(w,c)),q.style.width=w+"px");w=y.offsetWidth;x=y.offsetHeight;this.cacheOffsetSize&&(t.mxCachedFinalOffsetWidth=w,t.mxCachedFinalOffsetHeight=x);x-=p;q.parentNode!=z&&(z.appendChild(q),q.style.visibility="")}else{y=document.createElement("div");y.style.cssText=q.getAttribute("style");y.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";y.style.position="absolute";y.style.visibility="hidden";x=document.createElement("div"); -x.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";x.style.wordWrap=mxConstants.WORD_WRAP;x.innerHTML=mxUtils.isNode(e)?e.outerHTML:e;y.appendChild(x);document.body.appendChild(y);8!=document.documentMode&&9!=document.documentMode&&null!=r.fontBorderColor&&(w+=2,p+=2);if(h&&0<c){var u=x.offsetWidth;padDx=0;if(!m&&h&&0<c&&this.root.ownerDocument!=document&&"fill"!=l){var D=y.style.whiteSpace;x.style.whiteSpace="nowrap";u<x.offsetWidth&&(y.style.whiteSpace=D)}m&&(u=Math.min(u,c));y.style.width= -u+"px";w=x.offsetWidth+w+padDx;x=x.offsetHeight+p;y.style.display="inline-block";y.style.position="";y.style.visibility="";y.style.width=w+"px";q.setAttribute("style",y.style.cssText)}else w=x.offsetWidth+w,x=x.offsetHeight+p;y.parentNode.removeChild(y);z.appendChild(q)}m&&(x=Math.min(x,d),w=Math.min(w,c));"width"==l?d=x:"fill"!=l&&(c=w,d=x);1>r.alpha&&t.setAttribute("opacity",r.alpha);p=q=0;f==mxConstants.ALIGN_CENTER?q-=c/2:f==mxConstants.ALIGN_RIGHT&&(q-=c);a+=q;g==mxConstants.ALIGN_MIDDLE?p-= +y.offsetWidth&&(q.style.whiteSpace=D));x=u+x-1;h&&"fill"!=l&&"width"!=l&&(m&&(x=Math.min(x,c)),q.style.width=x+"px");x=y.offsetWidth;w=y.offsetHeight;this.cacheOffsetSize&&(t.mxCachedFinalOffsetWidth=x,t.mxCachedFinalOffsetHeight=w);w-=p;q.parentNode!=z&&(z.appendChild(q),q.style.visibility="")}else{y=document.createElement("div");y.style.cssText=q.getAttribute("style");y.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";y.style.position="absolute";y.style.visibility="hidden";w=document.createElement("div"); +w.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";w.style.wordWrap=mxConstants.WORD_WRAP;w.innerHTML=mxUtils.isNode(e)?e.outerHTML:e;y.appendChild(w);document.body.appendChild(y);8!=document.documentMode&&9!=document.documentMode&&null!=r.fontBorderColor&&(x+=2,p+=2);if(h&&0<c){var u=w.offsetWidth;padDx=0;if(!m&&h&&0<c&&this.root.ownerDocument!=document&&"fill"!=l){var D=y.style.whiteSpace;w.style.whiteSpace="nowrap";u<w.offsetWidth&&(y.style.whiteSpace=D)}m&&(u=Math.min(u,c));y.style.width= +u+"px";x=w.offsetWidth+x+padDx;w=w.offsetHeight+p;y.style.display="inline-block";y.style.position="";y.style.visibility="";y.style.width=x+"px";q.setAttribute("style",y.style.cssText)}else x=w.offsetWidth+x,w=w.offsetHeight+p;y.parentNode.removeChild(y);z.appendChild(q)}m&&(w=Math.min(w,d),x=Math.min(x,c));"width"==l?d=w:"fill"!=l&&(c=x,d=w);1>r.alpha&&t.setAttribute("opacity",r.alpha);p=q=0;f==mxConstants.ALIGN_CENTER?q-=c/2:f==mxConstants.ALIGN_RIGHT&&(q-=c);a+=q;g==mxConstants.ALIGN_MIDDLE?p-= d/2:g==mxConstants.ALIGN_BOTTOM&&(p-=d);"fill"!=l&&mxClient.IS_FF&&mxClient.IS_WIN&&(p-=2);b+=p;y=1!=r.scale?"scale("+r.scale+")":"";0!=r.rotation&&this.rotateHtml?(y+="rotate("+r.rotation+","+c/2+","+d/2+")",b=this.rotatePoint((a+c/2)*r.scale,(b+d/2)*r.scale,r.rotation,r.rotationCx,r.rotationCy),a=b.x-c*r.scale/2,b=b.y-d*r.scale/2):(a*=r.scale,b*=r.scale);0!=n&&(y+="rotate("+n+","+-q+","+-p+")");t.setAttribute("transform","translate("+(Math.round(a)+this.foOffset)+","+(Math.round(b)+this.foOffset)+ ")"+y);z.setAttribute("width",Math.round(Math.max(1,c)));z.setAttribute("height",Math.round(Math.max(1,d)));this.root.ownerDocument!=document&&(a=this.createAlternateContent(z,a,b,c,d,e,f,g,h,k,l,m,n),null!=a&&(z.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility"),c=this.createElement("switch"),c.appendChild(z),c.appendChild(a),t.appendChild(c)))}}else this.plainText(a,b,c,d,e,f,g,h,l,m,n,p)}}; mxSvgCanvas2D.prototype.createClip=function(a,b,c,d){a=Math.round(a);b=Math.round(b);c=Math.round(c);d=Math.round(d);for(var e="mx-clip-"+a+"-"+b+"-"+c+"-"+d,f=0,g=e+"-"+f;null!=document.getElementById(g);)g=e+"-"+ ++f;clip=this.createElement("clipPath");clip.setAttribute("id",g);e=this.createElement("rect");e.setAttribute("x",a);e.setAttribute("y",b);e.setAttribute("width",c);e.setAttribute("height",d);clip.appendChild(e);return clip}; @@ -438,11 +438,11 @@ mxVmlCanvas2D.prototype.createDiv=function(a,b,c,d){c=this.createElement("div"); f,c.innerHTML=a);a=c.style;a.fontSize=e.fontSize/this.vmlScale+"px";a.fontFamily=e.fontFamily;a.color=e.fontColor;a.verticalAlign="top";a.textAlign=b||"left";a.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?e.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale+"px":mxConstants.LINE_HEIGHT;(e.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a.fontWeight="bold");(e.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a.fontStyle="italic");(e.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&& (a.textDecoration="underline");return c}; mxVmlCanvas2D.prototype.text=function(a,b,c,d,e,f,g,h,k,l,m,n,p){if(this.textEnabled&&null!=e){var r=this.state;if("html"==k){null!=r.rotation&&(b=this.rotatePoint(a,b,r.rotation,r.rotationCx,r.rotationCy),a=b.x,b=b.y);8!=document.documentMode||mxClient.IS_EM?(a*=r.scale,b*=r.scale):(a+=r.dx,b+=r.dy,"fill"!=l&&g==mxConstants.ALIGN_TOP&&--b);k=8!=document.documentMode||mxClient.IS_EM?this.createElement("div"):this.createVmlElement("group");k.style.position="absolute";k.style.display="inline";k.style.left= -this.format(a)+"px";k.style.top=this.format(b)+"px";k.style.zoom=r.scale;var q=this.createElement("div");q.style.position="relative";q.style.display="inline";var t=mxUtils.getAlignmentAsPoint(f,g),z=t.x,t=t.y;e=this.createDiv(e,f,g,l);f=this.createElement("div");null!=p&&e.setAttribute("dir",p);if(h&&0<c){if(m||(e.style.width=Math.round(c)+"px"),e.style.wordWrap=mxConstants.WORD_WRAP,e.style.whiteSpace="normal","break-word"==e.style.wordWrap){var w=e;null!=w.firstChild&&"DIV"==w.firstChild.nodeName&& -(w.firstChild.style.width="100%")}}else e.style.whiteSpace="nowrap";n=r.rotation+(n||0);this.rotateHtml&&0!=n?(f.style.display="inline",f.style.zoom="1",f.appendChild(e),8!=document.documentMode||mxClient.IS_EM||"DIV"==this.root.nodeName?k.appendChild(f):(q.appendChild(f),k.appendChild(q))):8!=document.documentMode||mxClient.IS_EM?(e.style.display="inline",k.appendChild(e)):(q.appendChild(e),k.appendChild(q));"DIV"!=this.root.nodeName?(p=this.createVmlElement("rect"),p.stroked="false",p.filled="false", -p.appendChild(k),this.root.appendChild(p)):this.root.appendChild(k);m?(e.style.overflow="hidden",e.style.width=Math.round(c)+"px",mxClient.IS_QUIRKS||(e.style.maxHeight=Math.round(d)+"px")):"fill"==l?(e.style.overflow="hidden",e.style.width=Math.max(0,c)+1+"px",e.style.height=Math.max(0,d)+1+"px"):"width"==l&&(e.style.overflow="hidden",e.style.width=Math.max(0,c)+1+"px",e.style.maxHeight=Math.max(0,d)+1+"px");if(this.rotateHtml&&0!=n){w=Math.PI/180*n;n=parseFloat(parseFloat(Math.cos(w)).toFixed(8)); -p=parseFloat(parseFloat(Math.sin(-w)).toFixed(8));w%=2*Math.PI;0>w&&(w+=2*Math.PI);w%=Math.PI;w>Math.PI/2&&(w=Math.PI-w);g=Math.cos(w);var x=Math.sin(w);8!=document.documentMode||mxClient.IS_EM||(e.style.display="inline-block",f.style.display="inline-block",q.style.display="inline-block");e.style.visibility="hidden";e.style.position="absolute";document.body.appendChild(e);q=e;null!=q.firstChild&&"DIV"==q.firstChild.nodeName&&(q=q.firstChild);w=q.offsetWidth+3;q=q.offsetHeight;m?(c=Math.min(c,w),q= -Math.min(q,d)):c=w;h&&(e.style.width=c+"px");mxClient.IS_QUIRKS&&(m||"width"==l)&&q>d&&(q=d,e.style.height=q+"px");d=q;m=(d-d*g+c*-x)/2-p*c*(z+.5)+n*d*(t+.5);h=(c-c*g+d*-x)/2+n*c*(z+.5)+p*d*(t+.5);"group"==k.nodeName&&"DIV"==this.root.nodeName?(l=this.createElement("div"),l.style.display="inline-block",l.style.position="absolute",l.style.left=this.format(a+(h-c/2)*r.scale)+"px",l.style.top=this.format(b+(m-d/2)*r.scale)+"px",k.parentNode.appendChild(l),l.appendChild(k)):(r=8!=document.documentMode|| +this.format(a)+"px";k.style.top=this.format(b)+"px";k.style.zoom=r.scale;var q=this.createElement("div");q.style.position="relative";q.style.display="inline";var t=mxUtils.getAlignmentAsPoint(f,g),z=t.x,t=t.y;e=this.createDiv(e,f,g,l);f=this.createElement("div");null!=p&&e.setAttribute("dir",p);if(h&&0<c){if(m||(e.style.width=Math.round(c)+"px"),e.style.wordWrap=mxConstants.WORD_WRAP,e.style.whiteSpace="normal","break-word"==e.style.wordWrap){var x=e;null!=x.firstChild&&"DIV"==x.firstChild.nodeName&& +(x.firstChild.style.width="100%")}}else e.style.whiteSpace="nowrap";n=r.rotation+(n||0);this.rotateHtml&&0!=n?(f.style.display="inline",f.style.zoom="1",f.appendChild(e),8!=document.documentMode||mxClient.IS_EM||"DIV"==this.root.nodeName?k.appendChild(f):(q.appendChild(f),k.appendChild(q))):8!=document.documentMode||mxClient.IS_EM?(e.style.display="inline",k.appendChild(e)):(q.appendChild(e),k.appendChild(q));"DIV"!=this.root.nodeName?(p=this.createVmlElement("rect"),p.stroked="false",p.filled="false", +p.appendChild(k),this.root.appendChild(p)):this.root.appendChild(k);m?(e.style.overflow="hidden",e.style.width=Math.round(c)+"px",mxClient.IS_QUIRKS||(e.style.maxHeight=Math.round(d)+"px")):"fill"==l?(e.style.overflow="hidden",e.style.width=Math.max(0,c)+1+"px",e.style.height=Math.max(0,d)+1+"px"):"width"==l&&(e.style.overflow="hidden",e.style.width=Math.max(0,c)+1+"px",e.style.maxHeight=Math.max(0,d)+1+"px");if(this.rotateHtml&&0!=n){x=Math.PI/180*n;n=parseFloat(parseFloat(Math.cos(x)).toFixed(8)); +p=parseFloat(parseFloat(Math.sin(-x)).toFixed(8));x%=2*Math.PI;0>x&&(x+=2*Math.PI);x%=Math.PI;x>Math.PI/2&&(x=Math.PI-x);g=Math.cos(x);var w=Math.sin(x);8!=document.documentMode||mxClient.IS_EM||(e.style.display="inline-block",f.style.display="inline-block",q.style.display="inline-block");e.style.visibility="hidden";e.style.position="absolute";document.body.appendChild(e);q=e;null!=q.firstChild&&"DIV"==q.firstChild.nodeName&&(q=q.firstChild);x=q.offsetWidth+3;q=q.offsetHeight;m?(c=Math.min(c,x),q= +Math.min(q,d)):c=x;h&&(e.style.width=c+"px");mxClient.IS_QUIRKS&&(m||"width"==l)&&q>d&&(q=d,e.style.height=q+"px");d=q;m=(d-d*g+c*-w)/2-p*c*(z+.5)+n*d*(t+.5);h=(c-c*g+d*-w)/2+n*c*(z+.5)+p*d*(t+.5);"group"==k.nodeName&&"DIV"==this.root.nodeName?(l=this.createElement("div"),l.style.display="inline-block",l.style.position="absolute",l.style.left=this.format(a+(h-c/2)*r.scale)+"px",l.style.top=this.format(b+(m-d/2)*r.scale)+"px",k.parentNode.appendChild(l),l.appendChild(k)):(r=8!=document.documentMode|| mxClient.IS_EM?r.scale:1,k.style.left=this.format(a+(h-c/2)*r)+"px",k.style.top=this.format(b+(m-d/2)*r)+"px");f.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+n+", M12="+p+", M21="+-p+", M22="+n+", sizingMethod='auto expand')";f.style.backgroundColor=this.rotatedHtmlBackground;1>this.state.alpha&&(f.style.filter+="alpha(opacity="+100*this.state.alpha+")");f.appendChild(e);e.style.position="";e.style.visibility=""}else 8!=document.documentMode||mxClient.IS_EM?(e.style.verticalAlign= "top",1>this.state.alpha&&(k.style.filter="alpha(opacity="+100*this.state.alpha+")"),r=e.parentNode,e.style.visibility="hidden",document.body.appendChild(e),c=e.offsetWidth,q=e.offsetHeight,mxClient.IS_QUIRKS&&m&&q>d&&(q=d,e.style.height=q+"px"),d=q,e.style.visibility="",r.appendChild(e),k.style.left=this.format(a+c*z*this.state.scale)+"px",k.style.top=this.format(b+d*t*this.state.scale)+"px"):(1>this.state.alpha&&(e.style.filter="alpha(opacity="+100*this.state.alpha+")"),q.style.left=100*z+"%",q.style.top= 100*t+"%")}else this.plainText(a,b,c,d,mxUtils.htmlEntities(e,!1),f,g,h,k,l,m,n,p)}}; @@ -524,19 +524,19 @@ mxRhombus.prototype.paintVertexShape=function(a,b,c,d,e){var f=d/2,g=e/2,h=mxUti mxPolyline.prototype.getShapeRotation=function(){return 0};mxPolyline.prototype.isPaintBoundsInverted=function(){return!1};mxPolyline.prototype.paintEdgeShape=function(a,b){null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(a,b,this.isRounded):this.paintCurvedLine(a,b)};mxPolyline.prototype.paintLine=function(a,b,c){var d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;a.begin();this.addPoints(a,b,c,d,!1);a.stroke()}; mxPolyline.prototype.paintCurvedLine=function(a,b){a.begin();var c=b[0],d=b.length;a.moveTo(c.x,c.y);for(c=1;c<d-2;c++){var e=b[c],f=b[c+1];a.quadTo(e.x,e.y,(e.x+f.x)/2,(e.y+f.y)/2)}e=b[d-2];f=b[d-1];a.quadTo(e.x,e.y,f.x,f.y);a.stroke()}; function mxArrow(a,b,c,d,e,f,g){mxShape.call(this);this.points=a;this.fill=b;this.stroke=c;this.strokewidth=null!=d?d:1;this.arrowWidth=null!=e?e:mxConstants.ARROW_WIDTH;this.spacing=null!=f?f:mxConstants.ARROW_SPACING;this.endSize=null!=g?g:mxConstants.ARROW_SIZE}mxUtils.extend(mxArrow,mxShape);mxArrow.prototype.augmentBoundingBox=function(a){mxShape.prototype.augmentBoundingBox.apply(this,arguments);a.grow((Math.max(this.arrowWidth,this.endSize)/2+this.strokewidth)*this.scale)}; -mxArrow.prototype.paintEdgeShape=function(a,b){var c=mxConstants.ARROW_SPACING,d=mxConstants.ARROW_WIDTH,e=b[0],f=b[b.length-1],g=f.x-e.x,h=f.y-e.y,k=Math.sqrt(g*g+h*h),l=k-2*c-mxConstants.ARROW_SIZE,g=g/k,h=h/k,k=d*h/3,d=-d*g/3,m=e.x-k/2+c*g,e=e.y-d/2+c*h,n=m+k,p=e+d,r=n+l*g,l=p+l*h,q=r+k,t=l+d,z=q-3*k,w=t-3*d;a.begin();a.moveTo(m,e);a.lineTo(n,p);a.lineTo(r,l);a.lineTo(q,t);a.lineTo(f.x-c*g,f.y-c*h);a.lineTo(z,w);a.lineTo(z+k,w+d);a.close();a.fillAndStroke()}; +mxArrow.prototype.paintEdgeShape=function(a,b){var c=mxConstants.ARROW_SPACING,d=mxConstants.ARROW_WIDTH,e=b[0],f=b[b.length-1],g=f.x-e.x,h=f.y-e.y,k=Math.sqrt(g*g+h*h),l=k-2*c-mxConstants.ARROW_SIZE,g=g/k,h=h/k,k=d*h/3,d=-d*g/3,m=e.x-k/2+c*g,e=e.y-d/2+c*h,n=m+k,p=e+d,r=n+l*g,l=p+l*h,q=r+k,t=l+d,z=q-3*k,x=t-3*d;a.begin();a.moveTo(m,e);a.lineTo(n,p);a.lineTo(r,l);a.lineTo(q,t);a.lineTo(f.x-c*g,f.y-c*h);a.lineTo(z,x);a.lineTo(z+k,x+d);a.close();a.fillAndStroke()}; function mxArrowConnector(a,b,c,d,e,f,g){mxShape.call(this);this.points=a;this.fill=b;this.stroke=c;this.strokewidth=null!=d?d:1;this.arrowWidth=null!=e?e:mxConstants.ARROW_WIDTH;this.arrowSpacing=null!=f?f:mxConstants.ARROW_SPACING;this.startSize=mxConstants.ARROW_SIZE/5;this.endSize=mxConstants.ARROW_SIZE/5}mxUtils.extend(mxArrowConnector,mxShape);mxArrowConnector.prototype.useSvgBoundingBox=!0; mxArrowConnector.prototype.resetStyles=function(){mxShape.prototype.resetStyles.apply(this,arguments);this.arrowSpacing=mxConstants.ARROW_SPACING};mxArrowConnector.prototype.apply=function(a){mxShape.prototype.apply.apply(this,arguments);null!=this.style&&(this.startSize=3*mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5),this.endSize=3*mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5))}; mxArrowConnector.prototype.augmentBoundingBox=function(a){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var b=this.getEdgeWidth();this.isMarkerStart()&&(b=Math.max(b,this.getStartArrowWidth()));this.isMarkerEnd()&&(b=Math.max(b,this.getEndArrowWidth()));a.grow((b/2+this.strokewidth)*this.scale)}; mxArrowConnector.prototype.paintEdgeShape=function(a,b){var c=this.strokewidth;this.outline&&(c=Math.max(1,mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth)));for(var d=this.getStartArrowWidth()+c,e=this.getEndArrowWidth()+c,f=this.outline?this.getEdgeWidth()+c:this.getEdgeWidth(),g=this.isOpenEnded(),h=this.isMarkerStart(),k=this.isMarkerEnd(),l=g?0:this.arrowSpacing+c/2,m=this.startSize+c,c=this.endSize+c,n=this.isArrowRounded(),p=b[b.length-1],r=1;r<b.length-1&&b[r].x== -b[0].x&&b[r].y==b[0].y;)r++;var q=b[r].x-b[0].x,r=b[r].y-b[0].y,t=Math.sqrt(q*q+r*r);if(0!=t){var z=q/t,w,x=z,y=r/t,u,D=y,t=f*y,F=-f*z,E=[];n?a.setLineJoin("round"):2<b.length&&a.setMiterLimit(1.42);a.begin();q=z;r=y;if(h&&!g)this.paintMarker(a,b[0].x,b[0].y,z,y,m,d,f,l,!0);else{w=b[0].x+t/2+l*z;u=b[0].y+F/2+l*y;var B=b[0].x-t/2+l*z,A=b[0].y-F/2+l*y;g?(a.moveTo(w,u),E.push(function(){a.lineTo(B,A)})):(a.moveTo(B,A),a.lineTo(w,u))}for(var C=u=w=0,t=0;t<b.length-2;t++)if(F=mxUtils.relativeCcw(b[t].x, -b[t].y,b[t+1].x,b[t+1].y,b[t+2].x,b[t+2].y),w=b[t+2].x-b[t+1].x,u=b[t+2].y-b[t+1].y,C=Math.sqrt(w*w+u*u),0!=C&&(x=w/C,D=u/C,tmp=Math.max(Math.sqrt((z*x+y*D+1)/2),.04),w=z+x,u=y+D,C=Math.sqrt(w*w+u*u),0!=C)){w/=C;u/=C;var C=Math.max(tmp,Math.min(this.strokewidth/200+.04,.35)),C=0!=F&&n?Math.max(.1,C):Math.max(tmp,.06),L=b[t+1].x+u*f/2/C,K=b[t+1].y-w*f/2/C;u=b[t+1].x-u*f/2/C;w=b[t+1].y+w*f/2/C;0!=F&&n?-1==F?(F=u+D*f,C=w-x*f,a.lineTo(u+y*f,w-z*f),a.quadTo(L,K,F,C),function(b,c){E.push(function(){a.lineTo(b, -c)})}(u,w)):(a.lineTo(L,K),function(b,c){var d=L-y*f,e=K+z*f,g=L-D*f,h=K+x*f;E.push(function(){a.quadTo(b,c,d,e)});E.push(function(){a.lineTo(g,h)})}(u,w)):(a.lineTo(L,K),function(b,c){E.push(function(){a.lineTo(b,c)})}(u,w));z=x;y=D}t=f*D;F=-f*x;if(k&&!g)this.paintMarker(a,p.x,p.y,-z,-y,c,e,f,l,!1);else{a.lineTo(p.x-l*x+t/2,p.y-l*D+F/2);var H=p.x-l*x-t/2,V=p.y-l*D-F/2;g?(a.moveTo(H,V),E.splice(0,0,function(){a.moveTo(H,V)})):a.lineTo(H,V)}for(t=E.length-1;0<=t;t--)E[t]();g?(a.end(),a.stroke()):(a.close(), +b[0].x&&b[r].y==b[0].y;)r++;var q=b[r].x-b[0].x,r=b[r].y-b[0].y,t=Math.sqrt(q*q+r*r);if(0!=t){var z=q/t,x,w=z,y=r/t,u,D=y,t=f*y,F=-f*z,E=[];n?a.setLineJoin("round"):2<b.length&&a.setMiterLimit(1.42);a.begin();q=z;r=y;if(h&&!g)this.paintMarker(a,b[0].x,b[0].y,z,y,m,d,f,l,!0);else{x=b[0].x+t/2+l*z;u=b[0].y+F/2+l*y;var B=b[0].x-t/2+l*z,A=b[0].y-F/2+l*y;g?(a.moveTo(x,u),E.push(function(){a.lineTo(B,A)})):(a.moveTo(B,A),a.lineTo(x,u))}for(var C=u=x=0,t=0;t<b.length-2;t++)if(F=mxUtils.relativeCcw(b[t].x, +b[t].y,b[t+1].x,b[t+1].y,b[t+2].x,b[t+2].y),x=b[t+2].x-b[t+1].x,u=b[t+2].y-b[t+1].y,C=Math.sqrt(x*x+u*u),0!=C&&(w=x/C,D=u/C,tmp=Math.max(Math.sqrt((z*w+y*D+1)/2),.04),x=z+w,u=y+D,C=Math.sqrt(x*x+u*u),0!=C)){x/=C;u/=C;var C=Math.max(tmp,Math.min(this.strokewidth/200+.04,.35)),C=0!=F&&n?Math.max(.1,C):Math.max(tmp,.06),L=b[t+1].x+u*f/2/C,K=b[t+1].y-x*f/2/C;u=b[t+1].x-u*f/2/C;x=b[t+1].y+x*f/2/C;0!=F&&n?-1==F?(F=u+D*f,C=x-w*f,a.lineTo(u+y*f,x-z*f),a.quadTo(L,K,F,C),function(b,c){E.push(function(){a.lineTo(b, +c)})}(u,x)):(a.lineTo(L,K),function(b,c){var d=L-y*f,e=K+z*f,g=L-D*f,h=K+w*f;E.push(function(){a.quadTo(b,c,d,e)});E.push(function(){a.lineTo(g,h)})}(u,x)):(a.lineTo(L,K),function(b,c){E.push(function(){a.lineTo(b,c)})}(u,x));z=w;y=D}t=f*D;F=-f*w;if(k&&!g)this.paintMarker(a,p.x,p.y,-z,-y,c,e,f,l,!1);else{a.lineTo(p.x-l*w+t/2,p.y-l*D+F/2);var I=p.x-l*w-t/2,V=p.y-l*D-F/2;g?(a.moveTo(I,V),E.splice(0,0,function(){a.moveTo(I,V)})):a.lineTo(I,V)}for(t=E.length-1;0<=t;t--)E[t]();g?(a.end(),a.stroke()):(a.close(), a.fillAndStroke());a.setShadow(!1);a.setMiterLimit(4);n&&a.setLineJoin("flat");2<b.length&&(a.setMiterLimit(4),h&&!g&&(a.begin(),this.paintMarker(a,b[0].x,b[0].y,q,r,m,d,f,l,!0),a.stroke(),a.end()),k&&!g&&(a.begin(),this.paintMarker(a,p.x,p.y,-z,-y,c,e,f,l,!0),a.stroke(),a.end()))}}; mxArrowConnector.prototype.paintMarker=function(a,b,c,d,e,f,g,h,k,l){g=h/g;var m=h*e/2;h=-h*d/2;var n=(k+f)*d;f=(k+f)*e;l?a.moveTo(b-m+n,c-h+f):a.lineTo(b-m+n,c-h+f);a.lineTo(b-m/g+n,c-h/g+f);a.lineTo(b+k*d,c+k*e);a.lineTo(b+m/g+n,c+h/g+f);a.lineTo(b+m+n,c+h+f)};mxArrowConnector.prototype.isArrowRounded=function(){return this.isRounded};mxArrowConnector.prototype.getStartArrowWidth=function(){return mxConstants.ARROW_WIDTH};mxArrowConnector.prototype.getEndArrowWidth=function(){return mxConstants.ARROW_WIDTH}; mxArrowConnector.prototype.getEdgeWidth=function(){return mxConstants.ARROW_WIDTH/3};mxArrowConnector.prototype.isOpenEnded=function(){return!1};mxArrowConnector.prototype.isMarkerStart=function(){return mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE};mxArrowConnector.prototype.isMarkerEnd=function(){return mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE}; -function mxText(a,b,c,d,e,f,g,h,k,l,m,n,p,r,q,t,z,w,x,y,u){mxShape.call(this);this.value=a;this.bounds=b;this.color=null!=e?e:"black";this.align=null!=c?c:mxConstants.ALIGN_CENTER;this.valign=null!=d?d:mxConstants.ALIGN_MIDDLE;this.family=null!=f?f:mxConstants.DEFAULT_FONTFAMILY;this.size=null!=g?g:mxConstants.DEFAULT_FONTSIZE;this.fontStyle=null!=h?h:mxConstants.DEFAULT_FONTSTYLE;this.spacing=parseInt(k||2);this.spacingTop=this.spacing+parseInt(l||0);this.spacingRight=this.spacing+parseInt(m||0); -this.spacingBottom=this.spacing+parseInt(n||0);this.spacingLeft=this.spacing+parseInt(p||0);this.horizontal=null!=r?r:!0;this.background=q;this.border=t;this.wrap=null!=z?z:!1;this.clipped=null!=w?w:!1;this.overflow=null!=x?x:"visible";this.labelPadding=null!=y?y:0;this.textDirection=u;this.rotation=0;this.updateMargin()}mxUtils.extend(mxText,mxShape);mxText.prototype.baseSpacingTop=0;mxText.prototype.baseSpacingBottom=0;mxText.prototype.baseSpacingLeft=0;mxText.prototype.baseSpacingRight=0; +function mxText(a,b,c,d,e,f,g,h,k,l,m,n,p,r,q,t,z,x,w,y,u){mxShape.call(this);this.value=a;this.bounds=b;this.color=null!=e?e:"black";this.align=null!=c?c:mxConstants.ALIGN_CENTER;this.valign=null!=d?d:mxConstants.ALIGN_MIDDLE;this.family=null!=f?f:mxConstants.DEFAULT_FONTFAMILY;this.size=null!=g?g:mxConstants.DEFAULT_FONTSIZE;this.fontStyle=null!=h?h:mxConstants.DEFAULT_FONTSTYLE;this.spacing=parseInt(k||2);this.spacingTop=this.spacing+parseInt(l||0);this.spacingRight=this.spacing+parseInt(m||0); +this.spacingBottom=this.spacing+parseInt(n||0);this.spacingLeft=this.spacing+parseInt(p||0);this.horizontal=null!=r?r:!0;this.background=q;this.border=t;this.wrap=null!=z?z:!1;this.clipped=null!=x?x:!1;this.overflow=null!=w?w:"visible";this.labelPadding=null!=y?y:0;this.textDirection=u;this.rotation=0;this.updateMargin()}mxUtils.extend(mxText,mxShape);mxText.prototype.baseSpacingTop=0;mxText.prototype.baseSpacingBottom=0;mxText.prototype.baseSpacingLeft=0;mxText.prototype.baseSpacingRight=0; mxText.prototype.replaceLinefeeds=!0;mxText.prototype.verticalTextRotation=-90;mxText.prototype.ignoreClippedStringSize=!0;mxText.prototype.ignoreStringSize=!1;mxText.prototype.textWidthPadding=8!=document.documentMode||mxClient.IS_EM?3:4;mxText.prototype.lastValue=null;mxText.prototype.cacheEnabled=!0;mxText.prototype.isParseVml=function(){return!1};mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode||mxClient.IS_EM};mxText.prototype.getSvgScreenOffset=function(){return 0}; mxText.prototype.checkBounds=function(){return!isNaN(this.scale)&&isFinite(this.scale)&&0<this.scale&&null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)}; mxText.prototype.paint=function(a,b){var c=this.scale,d=this.bounds.x/c,e=this.bounds.y/c,f=this.bounds.width/c,c=this.bounds.height/c;this.updateTransform(a,d,e,f,c);this.configureCanvas(a,d,e,f,c);var g=null!=this.state?this.state.unscaledWidth:null;if(b)null==this.node.firstChild||null!=g&&this.lastUnscaledWidth==g||a.invalidateCachedOffsetSize(this.node),a.updateText(d,e,f,c,this.align,this.valign,this.wrap,this.overflow,this.clipped,this.getTextRotation(),this.node);else{var h=mxUtils.isNode(this.value)|| @@ -732,9 +732,9 @@ mxMedianHybridCrossingReduction.prototype.execute=function(a){a=this.layout.getM h}else for(c++,e=0;e<this.nestedBestRanks.length;e++)for(f=a.ranks[e],g=0;g<f.length;g++)h=f[g],h.setGeneralPurposeVariable(e,g);if(0==d)break}c=[];d=[];for(b=0;b<a.maxRank+1;b++)d[b]=[],c[b]=d[b];for(b=0;b<this.nestedBestRanks.length;b++)for(e=0;e<this.nestedBestRanks[b].length;e++)d[b].push(this.nestedBestRanks[b][e]);a.ranks=c};mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(a){for(var b=a.ranks.length,c=0,d=1;d<b;d++)c+=this.calculateRankCrossing(d,a);return c}; mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(a,b){for(var c=0,d=b.ranks[a],e=b.ranks[a-1],f=[],g=0;g<d.length;g++){for(var h=d[g],k=h.getGeneralPurposeVariable(a),h=h.getPreviousLayerConnectedCells(a),l=[],m=0;m<h.length;m++){var n=h[m].getGeneralPurposeVariable(a-1);l.push(n)}l.sort(function(a,b){return a-b});f[k]=l}d=[];for(g=0;g<f.length;g++)d=d.concat(f[g]);for(f=1;f<e.length;)f<<=1;k=2*f-1;--f;e=[];for(g=0;g<k;++g)e[g]=0;for(g=0;g<d.length;g++)for(k=d[g]+f,++e[k];0< k;)k%2&&(c+=e[k+1]),k=k-1>>1,++e[k];return c}; -mxMedianHybridCrossingReduction.prototype.transpose=function(a,b){for(var c=!0,d=0;c&&10>d++;)for(var e=1==a%2&&1==d%2,c=!1,f=0;f<b.ranks.length;f++){for(var g=b.ranks[f],h=[],k=0;k<g.length;k++){var l=g[k],m=l.getGeneralPurposeVariable(f);0>m&&(m=k);h[m]=l}for(var n=null,p=null,r,q,t=null,z=null,w,x=null,k=0;k<g.length-1;k++){if(0==k){w=h[k];l=w.getNextLayerConnectedCells(f);m=w.getPreviousLayerConnectedCells(f);r=[];q=[];for(var y=0;y<l.length;y++)r[y]=l[y].getGeneralPurposeVariable(f+1);for(y= -0;y<m.length;y++)q[y]=m[y].getGeneralPurposeVariable(f-1)}else l=n,m=p,r=t,q=z,w=x;x=h[k+1];n=x.getNextLayerConnectedCells(f);p=x.getPreviousLayerConnectedCells(f);t=[];z=[];for(y=0;y<n.length;y++)t[y]=n[y].getGeneralPurposeVariable(f+1);for(y=0;y<p.length;y++)z[y]=p[y].getGeneralPurposeVariable(f-1);for(var u=0,D=0,y=0;y<r.length;y++)for(var F=0;F<t.length;F++)r[y]>t[F]&&u++,r[y]<t[F]&&D++;for(y=0;y<q.length;y++)for(F=0;F<z.length;F++)q[y]>z[F]&&u++,q[y]<z[F]&&D++;if(D<u||D==u&&e)n=w.getGeneralPurposeVariable(f), -w.setGeneralPurposeVariable(f,x.getGeneralPurposeVariable(f)),x.setGeneralPurposeVariable(f,n),n=l,p=m,t=r,z=q,x=w,e||(c=!0)}}};mxMedianHybridCrossingReduction.prototype.weightedMedian=function(a,b){var c=0==a%2;if(c)for(var d=b.maxRank-1;0<=d;d--)this.medianRank(d,c);else for(d=1;d<b.maxRank;d++)this.medianRank(d,c)}; +mxMedianHybridCrossingReduction.prototype.transpose=function(a,b){for(var c=!0,d=0;c&&10>d++;)for(var e=1==a%2&&1==d%2,c=!1,f=0;f<b.ranks.length;f++){for(var g=b.ranks[f],h=[],k=0;k<g.length;k++){var l=g[k],m=l.getGeneralPurposeVariable(f);0>m&&(m=k);h[m]=l}for(var n=null,p=null,r,q,t=null,z=null,x,w=null,k=0;k<g.length-1;k++){if(0==k){x=h[k];l=x.getNextLayerConnectedCells(f);m=x.getPreviousLayerConnectedCells(f);r=[];q=[];for(var y=0;y<l.length;y++)r[y]=l[y].getGeneralPurposeVariable(f+1);for(y= +0;y<m.length;y++)q[y]=m[y].getGeneralPurposeVariable(f-1)}else l=n,m=p,r=t,q=z,x=w;w=h[k+1];n=w.getNextLayerConnectedCells(f);p=w.getPreviousLayerConnectedCells(f);t=[];z=[];for(y=0;y<n.length;y++)t[y]=n[y].getGeneralPurposeVariable(f+1);for(y=0;y<p.length;y++)z[y]=p[y].getGeneralPurposeVariable(f-1);for(var u=0,D=0,y=0;y<r.length;y++)for(var F=0;F<t.length;F++)r[y]>t[F]&&u++,r[y]<t[F]&&D++;for(y=0;y<q.length;y++)for(F=0;F<z.length;F++)q[y]>z[F]&&u++,q[y]<z[F]&&D++;if(D<u||D==u&&e)n=x.getGeneralPurposeVariable(f), +x.setGeneralPurposeVariable(f,w.getGeneralPurposeVariable(f)),w.setGeneralPurposeVariable(f,n),n=l,p=m,t=r,z=q,w=x,e||(c=!0)}}};mxMedianHybridCrossingReduction.prototype.weightedMedian=function(a,b){var c=0==a%2;if(c)for(var d=b.maxRank-1;0<=d;d--)this.medianRank(d,c);else for(d=1;d<b.maxRank;d++)this.medianRank(d,c)}; mxMedianHybridCrossingReduction.prototype.medianRank=function(a,b){for(var c=this.nestedBestRanks[a].length,d=[],e=[],f=0;f<c;f++){var g=this.nestedBestRanks[a][f],h=new MedianCellSorter;h.cell=g;var k;k=b?g.getNextLayerConnectedCells(a):g.getPreviousLayerConnectedCells(a);var l;l=b?a+1:a-1;null!=k&&0!=k.length?(h.medianValue=this.medianValue(k,l),d.push(h)):e[g.getGeneralPurposeVariable(a)]=!0}d.sort(MedianCellSorter.prototype.compare);for(f=0;f<c;f++)null==e[f]&&(g=d.shift().cell,g.setGeneralPurposeVariable(a, f))};mxMedianHybridCrossingReduction.prototype.medianValue=function(a,b){for(var c=[],d=0,e=0;e<a.length;e++){var f=a[e];c[d++]=f.getGeneralPurposeVariable(b)}c.sort(function(a,b){return a-b});if(1==d%2)return c[Math.floor(d/2)];if(2==d)return(c[0]+c[1])/2;e=d/2;f=c[e-1]-c[0];d=c[d-1]-c[e];return(c[e-1]*d+c[e]*f)/(f+d)};function MedianCellSorter(){}MedianCellSorter.prototype.medianValue=0;MedianCellSorter.prototype.cell=!1; MedianCellSorter.prototype.compare=function(a,b){return null!=a&&null!=b?b.medianValue>a.medianValue?-1:b.medianValue<a.medianValue?1:0:0};function mxMinimumCycleRemover(a){this.layout=a}mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage;mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover;mxMinimumCycleRemover.prototype.layout=null; @@ -747,8 +747,8 @@ mxCoordinateAssignment.prototype.printStatus=function(){var a=this.layout.getMod mxCoordinateAssignment.prototype.execute=function(a){this.jettyPositions={};a=this.layout.getModel();this.currentXDelta=0;this.initialCoords(this.layout.getGraph(),a);this.fineTuning&&this.minNode(a);var b=1E8;if(this.fineTuning)for(var c=0;c<this.maxIterations;c++){0!=c&&(this.medianPos(c,a),this.minNode(a));if(this.currentXDelta<b){for(var d=0;d<a.ranks.length;d++)for(var e=a.ranks[d],f=0;f<e.length;f++){var g=e[f];g.setX(d,g.getGeneralPurposeVariable(d))}b=this.currentXDelta}else for(d=0;d<a.ranks.length;d++)for(e= a.ranks[d],f=0;f<e.length;f++)g=e[f],g.setGeneralPurposeVariable(d,g.getX(d));this.minPath(this.layout.getGraph(),a);this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),a)}; mxCoordinateAssignment.prototype.minNode=function(a){for(var b=[],c=new mxDictionary,d=[],e=0;e<=a.maxRank;e++){d[e]=a.ranks[e];for(var f=0;f<d[e].length;f++){var g=d[e][f],h=new WeightedCellSorter(g,e);h.rankIndex=f;h.visited=!0;b.push(h);c.put(g,h)}}a=10*b.length;for(f=0;0<b.length&&f<=a;){var g=b.shift(),e=g.cell,k=g.weightedValue,l=parseInt(g.rankIndex),h=e.getNextLayerConnectedCells(k),m=e.getPreviousLayerConnectedCells(k),n=h.length,p=m.length,r=this.medianXValue(h,k+1),q=this.medianXValue(m, -k-1),t=n+p,z=e.getGeneralPurposeVariable(k),w=z;0<t&&(w=(r*n+q*p)/t);n=!1;w<z-1?0==l?(e.setGeneralPurposeVariable(k,w),n=!0):(l=d[k][l-1],z=l.getGeneralPurposeVariable(k),z=z+l.width/2+this.intraCellSpacing+e.width/2,z<w?(e.setGeneralPurposeVariable(k,w),n=!0):z<e.getGeneralPurposeVariable(k)-1&&(e.setGeneralPurposeVariable(k,z),n=!0)):w>z+1&&(l==d[k].length-1?(e.setGeneralPurposeVariable(k,w),n=!0):(l=d[k][l+1],z=l.getGeneralPurposeVariable(k),z=z-l.width/2-this.intraCellSpacing-e.width/2,z>w?(e.setGeneralPurposeVariable(k, -w),n=!0):z>e.getGeneralPurposeVariable(k)+1&&(e.setGeneralPurposeVariable(k,z),n=!0)));if(n){for(e=0;e<h.length;e++)k=h[e],k=c.get(k),null!=k&&0==k.visited&&(k.visited=!0,b.push(k));for(e=0;e<m.length;e++)k=m[e],k=c.get(k),null!=k&&0==k.visited&&(k.visited=!0,b.push(k))}g.visited=!1;f++}};mxCoordinateAssignment.prototype.medianPos=function(a,b){if(0==a%2)for(var c=b.maxRank;0<c;c--)this.rankMedianPosition(c-1,b,c);else for(c=0;c<b.maxRank-1;c++)this.rankMedianPosition(c+1,b,c)}; +k-1),t=n+p,z=e.getGeneralPurposeVariable(k),x=z;0<t&&(x=(r*n+q*p)/t);n=!1;x<z-1?0==l?(e.setGeneralPurposeVariable(k,x),n=!0):(l=d[k][l-1],z=l.getGeneralPurposeVariable(k),z=z+l.width/2+this.intraCellSpacing+e.width/2,z<x?(e.setGeneralPurposeVariable(k,x),n=!0):z<e.getGeneralPurposeVariable(k)-1&&(e.setGeneralPurposeVariable(k,z),n=!0)):x>z+1&&(l==d[k].length-1?(e.setGeneralPurposeVariable(k,x),n=!0):(l=d[k][l+1],z=l.getGeneralPurposeVariable(k),z=z-l.width/2-this.intraCellSpacing-e.width/2,z>x?(e.setGeneralPurposeVariable(k, +x),n=!0):z>e.getGeneralPurposeVariable(k)+1&&(e.setGeneralPurposeVariable(k,z),n=!0)));if(n){for(e=0;e<h.length;e++)k=h[e],k=c.get(k),null!=k&&0==k.visited&&(k.visited=!0,b.push(k));for(e=0;e<m.length;e++)k=m[e],k=c.get(k),null!=k&&0==k.visited&&(k.visited=!0,b.push(k))}g.visited=!1;f++}};mxCoordinateAssignment.prototype.medianPos=function(a,b){if(0==a%2)for(var c=b.maxRank;0<c;c--)this.rankMedianPosition(c-1,b,c);else for(c=0;c<b.maxRank-1;c++)this.rankMedianPosition(c+1,b,c)}; mxCoordinateAssignment.prototype.rankMedianPosition=function(a,b,c){b=b.ranks[a];for(var d=[],e={},f=0;f<b.length;f++){var g=b[f];d[f]=new WeightedCellSorter;d[f].cell=g;d[f].rankIndex=f;e[g.id]=d[f];var h;h=c<a?g.getPreviousLayerConnectedCells(a):g.getNextLayerConnectedCells(a);d[f].weightedValue=this.calculatedWeightedValue(g,h)}d.sort(WeightedCellSorter.prototype.compare);for(f=0;f<d.length;f++){var k,g=d[f].cell;k=0;h=c<a?g.getPreviousLayerConnectedCells(a).slice():g.getNextLayerConnectedCells(a).slice(); null!=h&&(k=h.length,k=0<k?this.medianXValue(h,c):g.getGeneralPurposeVariable(a));var l=0;h=-1E8;for(var m=d[f].rankIndex-1;0<=m;){var n=e[b[m].id];if(null!=n){var p=n.cell;n.visited?(h=p.getGeneralPurposeVariable(a)+p.width/2+this.intraCellSpacing+l+g.width/2,m=-1):(l+=p.width+this.intraCellSpacing,m--)}}l=0;p=1E8;for(m=d[f].rankIndex+1;m<d.length;)if(n=e[b[m].id],null!=n){var r=n.cell;n.visited?(p=r.getGeneralPurposeVariable(a)-r.width/2-this.intraCellSpacing-l-g.width/2,m=d.length):(l+=r.width+ this.intraCellSpacing,m++)}k>=h&&k<=p?g.setGeneralPurposeVariable(a,k):k<h?(g.setGeneralPurposeVariable(a,h),this.currentXDelta+=h-k):k>p&&(g.setGeneralPurposeVariable(a,p),this.currentXDelta+=k-p);d[f].visited=!0}};mxCoordinateAssignment.prototype.calculatedWeightedValue=function(a,b){for(var c=0,d=0;d<b.length;d++){var e=b[d];a.isVertex()&&e.isVertex()?c++:c=a.isEdge()&&e.isEdge()?c+8:c+2}return c}; @@ -768,9 +768,9 @@ mxCoordinateAssignment.prototype.localEdgeProcessing=function(a){for(var b=0;b<a q;if(r.isVertex()){q=0==h?e.connectsAsSource:e.connectsAsTarget;for(var t=0;t<q.length;t++)if(q[t].source==r||q[t].target==r)f+=q[t].edges.length,p++,g.push(q[t])}else f+=r.edges.length,p++,g.push(r)}e.width>(f+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(m+=this.prefHozEdgeSep,n-=this.prefHozEdgeSep);k=(n-m)/f;m+=k/2;n=this.minEdgeJetty-this.prefVertEdgeOff;for(l=0;l<g.length;l++)for(p=g[l].edges.length,r=this.jettyPositions[g[l].ids[0]],null==r&&(r=[],this.jettyPositions[g[l].ids[0]]=r),l<f/2? n+=this.prefVertEdgeOff:l>f/2&&(n-=this.prefVertEdgeOff),q=0;q<p;q++)r[4*q+2*h]=m,m+=k,r[4*q+2*h+1]=n}f=e.getNextLayerConnectedCells(b);g=b+1}}}; mxCoordinateAssignment.prototype.setEdgePosition=function(a){var b=0;if(101207!=a.temp[0]){var c=a.maxRank,d=a.minRank;c==d&&(c=a.source.maxRank,d=a.target.minRank);for(var e=0,f=this.jettyPositions[a.ids[0]],g=a.isReversed?a.target.cell:a.source.cell,h=this.layout.graph,k=this.orientation==mxConstants.DIRECTION_EAST||this.orientation==mxConstants.DIRECTION_SOUTH,l=0;l<a.edges.length;l++){var m=a.edges[l],n=this.layout.getVisibleTerminal(m,!0),p=[],r=a.isReversed;n!=g&&(r=!r);if(null!=f){var q=r? -2:0,t=r?k?this.rankBottomY[d]:this.rankTopY[d]:k?this.rankTopY[c]:this.rankBottomY[c],z=f[4*e+1+q];r!=k&&(z=-z);var t=t+z,q=f[4*e+q],w=h.model.getTerminal(m,!0);this.layout.isPort(w)&&h.model.getParent(w)==n&&(q=h.view.getState(w),q=null!=q?q.x:n.geometry.x+a.source.width*w.geometry.x);this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(p.push(new mxPoint(q,t)),this.layout.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&p.push(new mxPoint(q,t+z))):(p.push(new mxPoint(t, -q)),this.layout.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&p.push(new mxPoint(t+z,q)))}q=a.x.length-1;t=z=-1;n=a.maxRank-1;r&&(q=0,z=a.x.length,t=1,n=a.minRank+1);for(;a.maxRank!=a.minRank&&q!=z;q+=t){var w=a.x[q]+b,x=(this.rankTopY[n]+this.rankBottomY[n+1])/2,y=(this.rankTopY[n-1]+this.rankBottomY[n])/2;if(r)var u=x,x=y,y=u;this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(p.push(new mxPoint(w,x)),p.push(new mxPoint(w,y))):(p.push(new mxPoint(x,w)),p.push(new mxPoint(y, -w)));this.limitX=Math.max(this.limitX,w);n+=t}null!=f&&(q=r?2:0,t=r?k?this.rankTopY[c]:this.rankBottomY[c]:k?this.rankBottomY[d]:this.rankTopY[d],z=f[4*e+3-q],r!=k&&(z=-z),t-=z,q=f[4*e+2-q],r=h.model.getTerminal(m,!1),n=this.layout.getVisibleTerminal(m,!1),this.layout.isPort(r)&&h.model.getParent(r)==n&&(q=h.view.getState(r),q=null!=q?q.x:n.geometry.x+a.target.width*r.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.layout.edgeStyle==mxHierarchicalEdgeStyle.CURVE&& +2:0,t=r?k?this.rankBottomY[d]:this.rankTopY[d]:k?this.rankTopY[c]:this.rankBottomY[c],z=f[4*e+1+q];r!=k&&(z=-z);var t=t+z,q=f[4*e+q],x=h.model.getTerminal(m,!0);this.layout.isPort(x)&&h.model.getParent(x)==n&&(q=h.view.getState(x),q=null!=q?q.x:n.geometry.x+a.source.width*x.geometry.x);this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(p.push(new mxPoint(q,t)),this.layout.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&p.push(new mxPoint(q,t+z))):(p.push(new mxPoint(t, +q)),this.layout.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&p.push(new mxPoint(t+z,q)))}q=a.x.length-1;t=z=-1;n=a.maxRank-1;r&&(q=0,z=a.x.length,t=1,n=a.minRank+1);for(;a.maxRank!=a.minRank&&q!=z;q+=t){var x=a.x[q]+b,w=(this.rankTopY[n]+this.rankBottomY[n+1])/2,y=(this.rankTopY[n-1]+this.rankBottomY[n])/2;if(r)var u=w,w=y,y=u;this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(p.push(new mxPoint(x,w)),p.push(new mxPoint(x,y))):(p.push(new mxPoint(w,x)),p.push(new mxPoint(y, +x)));this.limitX=Math.max(this.limitX,x);n+=t}null!=f&&(q=r?2:0,t=r?k?this.rankTopY[c]:this.rankBottomY[c]:k?this.rankBottomY[d]:this.rankTopY[d],z=f[4*e+3-q],r!=k&&(z=-z),t-=z,q=f[4*e+2-q],r=h.model.getTerminal(m,!1),n=this.layout.getVisibleTerminal(m,!1),this.layout.isPort(r)&&h.model.getParent(r)==n&&(q=h.view.getState(r),q=null!=q?q.x:n.geometry.x+a.target.width*r.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.layout.edgeStyle==mxHierarchicalEdgeStyle.CURVE&& p.push(new mxPoint(q,t-z)),p.push(new mxPoint(q,t))):(this.layout.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&p.push(new mxPoint(t-z,q)),p.push(new mxPoint(t,q))));a.isReversed&&this.processReversedEdge(a,m);this.layout.setEdgePoints(m,p);b=0==b?this.parallelEdgeSpacing:0<b?-b:-b+this.parallelEdgeSpacing;e++}a.temp[0]=101207}}; mxCoordinateAssignment.prototype.setVertexLocation=function(a){var b=a.cell,c=a.x[0]-a.width/2,d=a.y[0]-a.height/2;this.rankTopY[a.minRank]=Math.min(this.rankTopY[a.minRank],d);this.rankBottomY[a.minRank]=Math.max(this.rankBottomY[a.minRank],d+a.height);this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(b,c,d):this.layout.setVertexLocation(b,d,c);this.limitX=Math.max(this.limitX,c+a.width)}; mxCoordinateAssignment.prototype.processReversedEdge=function(a,b){};function mxSwimlaneOrdering(a){this.layout=a}mxSwimlaneOrdering.prototype=new mxHierarchicalLayoutStage;mxSwimlaneOrdering.prototype.constructor=mxSwimlaneOrdering;mxSwimlaneOrdering.prototype.layout=null; @@ -1002,23 +1002,23 @@ b.x=h.x,b.y=h.y);null!=g&&(c=new mxCellState,c.x=g.x,c.y=g.y);null!=b&&null!=c&& d.y)||mxUtils.contains(b,a,d.y)||e.push(new mxPoint(a,d.y)):(f=Math.max(b.y,c.y),e.push(new mxPoint(a,f+(Math.min(b.y+b.height,c.y+c.height)-f)/2)))))},TopToBottom:function(a,b,c,d,e){var f=a.view;d=null!=d&&0<d.length?d[0]:null;var g=a.absolutePoints,h=g[0],g=g[g.length-1];null!=d&&(d=f.transformControlPoint(a,d));null!=h&&(b=new mxCellState,b.x=h.x,b.y=h.y);null!=g&&(c=new mxCellState,c.x=g.x,c.y=g.y);null!=b&&null!=c&&(h=Math.max(b.y,c.y),g=Math.min(b.y+b.height,c.y+c.height),a=f.getRoutingCenterX(b), null!=d&&d.x>=b.x&&d.x<=b.x+b.width&&(a=d.x),h=null!=d?d.y:Math.round(g+(h-g)/2),mxUtils.contains(c,a,h)||mxUtils.contains(b,a,h)||e.push(new mxPoint(a,h)),a=null!=d&&d.x>=c.x&&d.x<=c.x+c.width?d.x:f.getRoutingCenterX(c),mxUtils.contains(c,a,h)||mxUtils.contains(b,a,h)||e.push(new mxPoint(a,h)),1==e.length&&(null!=d&&1==e.length?mxUtils.contains(c,d.x,h)||mxUtils.contains(b,d.x,h)||e.push(new mxPoint(d.x,h)):(f=Math.max(b.x,c.x),e.push(new mxPoint(f+(Math.min(b.x+b.width,c.x+c.width)-f)/2,h)))))}, SegmentConnector:function(a,b,c,d,e){function f(a){if(null==k||Math.abs(k.x-a.x)>=h||Math.abs(k.y-a.y)>=h)e.push(a),k=a;return k}var g=a.absolutePoints,h=Math.max(1,a.view.scale),k=0<e.length?e[0]:null,l=!0,m=null,n=g[0];null==n&&null!=b?n=new mxPoint(a.view.getRoutingCenterX(b),a.view.getRoutingCenterY(b)):null!=n&&(n=n.clone());n.x=Math.round(n.x);n.y=Math.round(n.y);var p=g.length-1;if(null!=d&&0<d.length){for(var m=[],r=0;r<d.length;r++){var q=a.view.transformControlPoint(a,d[r]);null!=q&&(q.x= -Math.round(q.x),q.y=Math.round(q.y),m.push(q))}if(0==m.length)return;d=m;null!=n&&null!=d[0]&&(Math.abs(d[0].x-n.x)<h&&(d[0].x=n.x),Math.abs(d[0].y-n.y)<h&&(d[0].y=n.y));q=g[p];null!=q&&null!=d[d.length-1]&&(Math.abs(d[d.length-1].x-q.x)<h&&(d[d.length-1].x=q.x),Math.abs(d[d.length-1].y-q.y)<h&&(d[d.length-1].y=q.y));var m=d[0],t=b,z=g[0],w=!1,x=!1,w=m;null!=z&&(z.x=Math.round(z.x),z.y=Math.round(z.y),t=null);for(r=0;2>r;r++){var y=null!=z&&z.x==w.x,u=null!=z&&z.y==w.y,D=null!=t&&w.y>=t.y&&w.y<=t.y+ -t.height,t=null!=t&&w.x>=t.x&&w.x<=t.x+t.width,w=u||null==z&&D,x=y||null==z&&t;if(0!=r||!(w&&x||y&&u)){if(null!=z&&!u&&!y&&(D||t)){l=D?!1:!0;break}if(x||w){l=w;1==r&&(l=0==d.length%2?w:x);break}}t=c;z=g[p];null!=z&&(z.x=Math.round(z.x),z.y=Math.round(z.y),t=null);w=d[d.length-1];y&&u&&(d=d.slice(1))}l&&(null!=g[0]&&g[0].y!=m.y||null==g[0]&&null!=b&&(m.y<b.y||m.y>b.y+b.height))?f(new mxPoint(n.x,m.y)):!l&&(null!=g[0]&&g[0].x!=m.x||null==g[0]&&null!=b&&(m.x<b.x||m.x>b.x+b.width))&&f(new mxPoint(m.x, +Math.round(q.x),q.y=Math.round(q.y),m.push(q))}if(0==m.length)return;d=m;null!=n&&null!=d[0]&&(Math.abs(d[0].x-n.x)<h&&(d[0].x=n.x),Math.abs(d[0].y-n.y)<h&&(d[0].y=n.y));q=g[p];null!=q&&null!=d[d.length-1]&&(Math.abs(d[d.length-1].x-q.x)<h&&(d[d.length-1].x=q.x),Math.abs(d[d.length-1].y-q.y)<h&&(d[d.length-1].y=q.y));var m=d[0],t=b,z=g[0],x=!1,w=!1,x=m;null!=z&&(z.x=Math.round(z.x),z.y=Math.round(z.y),t=null);for(r=0;2>r;r++){var y=null!=z&&z.x==x.x,u=null!=z&&z.y==x.y,D=null!=t&&x.y>=t.y&&x.y<=t.y+ +t.height,t=null!=t&&x.x>=t.x&&x.x<=t.x+t.width,x=u||null==z&&D,w=y||null==z&&t;if(0!=r||!(x&&w||y&&u)){if(null!=z&&!u&&!y&&(D||t)){l=D?!1:!0;break}if(w||x){l=x;1==r&&(l=0==d.length%2?x:w);break}}t=c;z=g[p];null!=z&&(z.x=Math.round(z.x),z.y=Math.round(z.y),t=null);x=d[d.length-1];y&&u&&(d=d.slice(1))}l&&(null!=g[0]&&g[0].y!=m.y||null==g[0]&&null!=b&&(m.y<b.y||m.y>b.y+b.height))?f(new mxPoint(n.x,m.y)):!l&&(null!=g[0]&&g[0].x!=m.x||null==g[0]&&null!=b&&(m.x<b.x||m.x>b.x+b.width))&&f(new mxPoint(m.x, n.y));l?n.y=m.y:n.x=m.x;for(r=0;r<d.length;r++)l=!l,m=d[r],l?n.y=m.y:n.x=m.x,f(n.clone())}else m=n,l=!0;n=g[p];null==n&&null!=c&&(n=new mxPoint(a.view.getRoutingCenterX(c),a.view.getRoutingCenterY(c)));null!=n&&(n.x=Math.round(n.x),n.y=Math.round(n.y),null!=m&&(l&&(null!=g[p]&&g[p].y!=m.y||null==g[p]&&null!=c&&(m.y<c.y||m.y>c.y+c.height))?f(new mxPoint(n.x,m.y)):!l&&(null!=g[p]&&g[p].x!=m.x||null==g[p]&&null!=c&&(m.x<c.x||m.x>c.x+c.width))&&f(new mxPoint(m.x,n.y))));if(null==g[0]&&null!=b)for(;1< e.length&&null!=e[1]&&mxUtils.contains(b,e[1].x,e[1].y);)e.splice(1,1);if(null==g[p]&&null!=c)for(;1<e.length&&null!=e[e.length-1]&&mxUtils.contains(c,e[e.length-1].x,e[e.length-1].y);)e.splice(e.length-1,1);null!=q&&null!=e[e.length-1]&&Math.abs(q.x-e[e.length-1].x)<h&&Math.abs(q.y-e[e.length-1].y)<h&&(e.splice(e.length-1,1),null!=e[e.length-1]&&(Math.abs(e[e.length-1].x-q.x)<h&&(e[e.length-1].x=q.x),Math.abs(e[e.length-1].y-q.y)<h&&(e[e.length-1].y=q.y)))},orthBuffer:10,orthPointsFallback:!0,dirVectors:[[-1, 0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081, 2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072, getJettySize:function(a,b,c,d,e){b=mxUtils.getValue(a.style,e?mxConstants.STYLE_SOURCE_JETTY_SIZE:mxConstants.STYLE_TARGET_JETTY_SIZE,mxUtils.getValue(a.style,mxConstants.STYLE_JETTY_SIZE,mxEdgeStyle.orthBuffer));"auto"==b&&(mxUtils.getValue(a.style,e?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE?(a=mxUtils.getNumber(a.style,e?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),b=Math.max(2,Math.ceil((a+mxEdgeStyle.orthBuffer)/ -mxEdgeStyle.orthBuffer))*mxEdgeStyle.orthBuffer):b=2*mxEdgeStyle.orthBuffer);return b},OrthConnector:function(a,b,c,d,e){var f=a.view.graph,g=null==b?!1:f.getModel().isEdge(b.cell),h=null==c?!1:f.getModel().isEdge(c.cell),f=a.absolutePoints,k=f[0],l=f[f.length-1],m=null!=b?b.x:k.x,n=null!=b?b.y:k.y,p=null!=b?b.width:0,r=null!=b?b.height:0,q=null!=c?c.x:l.x,t=null!=c?c.y:l.y,z=null!=c?c.width:0,w=null!=c?c.height:0,f=a.view.scale*mxEdgeStyle.getJettySize(a,b,c,d,!0),x=a.view.scale*mxEdgeStyle.getJettySize(a, -b,c,d,!1);null!=b&&c==b&&(f=x=Math.max(f,x));var y=x+f,u=!1;if(null!=k&&null!=l)var u=l.x-k.x,D=l.y-k.y,u=u*u+D*D<y*y;if(u||mxEdgeStyle.orthPointsFallback&&null!=d&&0<d.length||g||h)mxEdgeStyle.SegmentConnector(a,b,c,d,e);else{d=[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL];null!=b&&(d[0]=mxUtils.getPortConstraints(b,a,!0,mxConstants.DIRECTION_MASK_ALL),u=mxUtils.getValue(b.style,mxConstants.STYLE_ROTATION,0),0!=u&&(u=mxUtils.getBoundingBox(new mxRectangle(m,n,p,r),u),m=u.x,n=u.y, -p=u.width,r=u.height));null!=c&&(d[1]=mxUtils.getPortConstraints(c,a,!1,mxConstants.DIRECTION_MASK_ALL),u=mxUtils.getValue(c.style,mxConstants.STYLE_ROTATION,0),0!=u&&(u=mxUtils.getBoundingBox(new mxRectangle(q,t,z,w),u),q=u.x,t=u.y,z=u.width,w=u.height));m=Math.round(10*m)/10;n=Math.round(10*n)/10;p=Math.round(10*p)/10;r=Math.round(10*r)/10;q=Math.round(10*q)/10;t=Math.round(10*t)/10;z=Math.round(10*z)/10;w=Math.round(10*w)/10;a=[0,0];m=[[m,n,p,r],[q,t,z,w]];x=[f,x];for(u=0;2>u;u++)mxEdgeStyle.limits[u][1]= -m[u][0]-x[u],mxEdgeStyle.limits[u][2]=m[u][1]-x[u],mxEdgeStyle.limits[u][4]=m[u][0]+m[u][2]+x[u],mxEdgeStyle.limits[u][8]=m[u][1]+m[u][3]+x[u];x=m[0][1]+m[0][3]/2;n=m[1][1]+m[1][3]/2;u=m[0][0]+m[0][2]/2-(m[1][0]+m[1][2]/2);D=x-n;x=0;0>u?x=0>D?2:1:0>=D&&(x=3,0==u&&(x=2));n=null;null!=b&&(n=k);b=[[.5,.5],[.5,.5]];for(u=0;2>u;u++)null!=n&&(b[u][0]=(n.x-m[u][0])/m[u][2],1>=Math.abs(n.x-m[u][0])?a[u]=mxConstants.DIRECTION_MASK_WEST:1>=Math.abs(n.x-m[u][0]-m[u][2])&&(a[u]=mxConstants.DIRECTION_MASK_EAST), +mxEdgeStyle.orthBuffer))*mxEdgeStyle.orthBuffer):b=2*mxEdgeStyle.orthBuffer);return b},OrthConnector:function(a,b,c,d,e){var f=a.view.graph,g=null==b?!1:f.getModel().isEdge(b.cell),h=null==c?!1:f.getModel().isEdge(c.cell),f=a.absolutePoints,k=f[0],l=f[f.length-1],m=null!=b?b.x:k.x,n=null!=b?b.y:k.y,p=null!=b?b.width:0,r=null!=b?b.height:0,q=null!=c?c.x:l.x,t=null!=c?c.y:l.y,z=null!=c?c.width:0,x=null!=c?c.height:0,f=a.view.scale*mxEdgeStyle.getJettySize(a,b,c,d,!0),w=a.view.scale*mxEdgeStyle.getJettySize(a, +b,c,d,!1);null!=b&&c==b&&(f=w=Math.max(f,w));var y=w+f,u=!1;if(null!=k&&null!=l)var u=l.x-k.x,D=l.y-k.y,u=u*u+D*D<y*y;if(u||mxEdgeStyle.orthPointsFallback&&null!=d&&0<d.length||g||h)mxEdgeStyle.SegmentConnector(a,b,c,d,e);else{d=[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL];null!=b&&(d[0]=mxUtils.getPortConstraints(b,a,!0,mxConstants.DIRECTION_MASK_ALL),u=mxUtils.getValue(b.style,mxConstants.STYLE_ROTATION,0),0!=u&&(u=mxUtils.getBoundingBox(new mxRectangle(m,n,p,r),u),m=u.x,n=u.y, +p=u.width,r=u.height));null!=c&&(d[1]=mxUtils.getPortConstraints(c,a,!1,mxConstants.DIRECTION_MASK_ALL),u=mxUtils.getValue(c.style,mxConstants.STYLE_ROTATION,0),0!=u&&(u=mxUtils.getBoundingBox(new mxRectangle(q,t,z,x),u),q=u.x,t=u.y,z=u.width,x=u.height));m=Math.round(10*m)/10;n=Math.round(10*n)/10;p=Math.round(10*p)/10;r=Math.round(10*r)/10;q=Math.round(10*q)/10;t=Math.round(10*t)/10;z=Math.round(10*z)/10;x=Math.round(10*x)/10;a=[0,0];m=[[m,n,p,r],[q,t,z,x]];w=[f,w];for(u=0;2>u;u++)mxEdgeStyle.limits[u][1]= +m[u][0]-w[u],mxEdgeStyle.limits[u][2]=m[u][1]-w[u],mxEdgeStyle.limits[u][4]=m[u][0]+m[u][2]+w[u],mxEdgeStyle.limits[u][8]=m[u][1]+m[u][3]+w[u];w=m[0][1]+m[0][3]/2;n=m[1][1]+m[1][3]/2;u=m[0][0]+m[0][2]/2-(m[1][0]+m[1][2]/2);D=w-n;w=0;0>u?w=0>D?2:1:0>=D&&(w=3,0==u&&(w=2));n=null;null!=b&&(n=k);b=[[.5,.5],[.5,.5]];for(u=0;2>u;u++)null!=n&&(b[u][0]=(n.x-m[u][0])/m[u][2],1>=Math.abs(n.x-m[u][0])?a[u]=mxConstants.DIRECTION_MASK_WEST:1>=Math.abs(n.x-m[u][0]-m[u][2])&&(a[u]=mxConstants.DIRECTION_MASK_EAST), b[u][1]=(n.y-m[u][1])/m[u][3],1>=Math.abs(n.y-m[u][1])?a[u]=mxConstants.DIRECTION_MASK_NORTH:1>=Math.abs(n.y-m[u][1]-m[u][3])&&(a[u]=mxConstants.DIRECTION_MASK_SOUTH)),n=null,null!=c&&(n=l);u=m[0][1]-(m[1][1]+m[1][3]);l=m[0][0]-(m[1][0]+m[1][2]);n=m[1][1]-(m[0][1]+m[0][3]);p=m[1][0]-(m[0][0]+m[0][2]);mxEdgeStyle.vertexSeperations[1]=Math.max(l-y,0);mxEdgeStyle.vertexSeperations[2]=Math.max(u-y,0);mxEdgeStyle.vertexSeperations[4]=Math.max(n-y,0);mxEdgeStyle.vertexSeperations[3]=Math.max(p-y,0);y=[]; c=[];k=[];c[0]=l>=p?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST;k[0]=u>=n?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH;c[1]=mxUtils.reversePortConstraints(c[0]);k[1]=mxUtils.reversePortConstraints(k[0]);l=l>=p?l:p;n=u>=n?u:n;p=[[0,0],[0,0]];r=!1;for(u=0;2>u;u++)0==a[u]&&(0==(c[u]&d[u])&&(c[u]=mxUtils.reversePortConstraints(c[u])),0==(k[u]&d[u])&&(k[u]=mxUtils.reversePortConstraints(k[u])),p[u][0]=k[u],p[u][1]=c[u]);0<n&&0<l&&(0<(c[0]&d[0])&&0<(k[1]&d[1])?(p[0][0]= c[0],p[0][1]=k[0],p[1][0]=k[1],p[1][1]=c[1],r=!0):0<(k[0]&d[0])&&0<(c[1]&d[1])&&(p[0][0]=k[0],p[0][1]=c[0],p[1][0]=c[1],p[1][1]=k[1],r=!0));0<n&&!r&&(p[0][0]=k[0],p[0][1]=c[0],p[1][0]=k[1],p[1][1]=c[1],r=!0);0<l&&!r&&(p[0][0]=c[0],p[0][1]=k[0],p[1][0]=c[1],p[1][1]=k[1]);for(u=0;2>u;u++)0==a[u]&&(0==(p[u][0]&d[u])&&(p[u][0]=p[u][1]),y[u]=p[u][0]&d[u],y[u]|=(p[u][1]&d[u])<<8,y[u]|=(p[1-u][u]&d[u])<<16,y[u]|=(p[1-u][1-u]&d[u])<<24,0==(y[u]&15)&&(y[u]<<=8),0==(y[u]&3840)&&(y[u]=y[u]&15|y[u]>>8),0==(y[u]& -983040)&&(y[u]=y[u]&65535|(y[u]&251658240)>>8),a[u]=y[u]&15,d[u]==mxConstants.DIRECTION_MASK_WEST||d[u]==mxConstants.DIRECTION_MASK_NORTH||d[u]==mxConstants.DIRECTION_MASK_EAST||d[u]==mxConstants.DIRECTION_MASK_SOUTH)&&(a[u]=d[u]);d=a[0]==mxConstants.DIRECTION_MASK_EAST?3:a[0];y=a[1]==mxConstants.DIRECTION_MASK_EAST?3:a[1];d-=x;y-=x;1>d&&(d+=4);1>y&&(y+=4);d=mxEdgeStyle.routePatterns[d-1][y-1];mxEdgeStyle.wayPoints1[0][0]=m[0][0];mxEdgeStyle.wayPoints1[0][1]=m[0][1];switch(a[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-= +983040)&&(y[u]=y[u]&65535|(y[u]&251658240)>>8),a[u]=y[u]&15,d[u]==mxConstants.DIRECTION_MASK_WEST||d[u]==mxConstants.DIRECTION_MASK_NORTH||d[u]==mxConstants.DIRECTION_MASK_EAST||d[u]==mxConstants.DIRECTION_MASK_SOUTH)&&(a[u]=d[u]);d=a[0]==mxConstants.DIRECTION_MASK_EAST?3:a[0];y=a[1]==mxConstants.DIRECTION_MASK_EAST?3:a[1];d-=w;y-=w;1>d&&(d+=4);1>y&&(y+=4);d=mxEdgeStyle.routePatterns[d-1][y-1];mxEdgeStyle.wayPoints1[0][0]=m[0][0];mxEdgeStyle.wayPoints1[0][1]=m[0][1];switch(a[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-= f;mxEdgeStyle.wayPoints1[0][1]+=b[0][1]*m[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=b[0][0]*m[0][2];mxEdgeStyle.wayPoints1[0][1]+=m[0][3]+f;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=m[0][2]+f;mxEdgeStyle.wayPoints1[0][1]+=b[0][1]*m[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=b[0][0]*m[0][2],mxEdgeStyle.wayPoints1[0][1]-=f}f=0;c=y=0<(a[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))? -0:1;for(u=0;u<d.length;u++)k=d[u]&15,r=k==mxConstants.DIRECTION_MASK_EAST?3:k,r+=x,4<r&&(r-=4),l=mxEdgeStyle.dirVectors[r-1],k=0<r%2?0:1,k!=y&&(f++,mxEdgeStyle.wayPoints1[f][0]=mxEdgeStyle.wayPoints1[f-1][0],mxEdgeStyle.wayPoints1[f][1]=mxEdgeStyle.wayPoints1[f-1][1]),q=0<(d[u]&mxEdgeStyle.TARGET_MASK),t=0<(d[u]&mxEdgeStyle.SOURCE_MASK),n=(d[u]&mxEdgeStyle.SIDE_MASK)>>5,n<<=x,15<n&&(n>>=4),p=0<(d[u]&mxEdgeStyle.CENTER_MASK),(t||q)&&9>n?(r=t?0:1,n=p&&0==k?m[r][0]+b[r][0]*m[r][2]:p?m[r][1]+b[r][1]* +0:1;for(u=0;u<d.length;u++)k=d[u]&15,r=k==mxConstants.DIRECTION_MASK_EAST?3:k,r+=w,4<r&&(r-=4),l=mxEdgeStyle.dirVectors[r-1],k=0<r%2?0:1,k!=y&&(f++,mxEdgeStyle.wayPoints1[f][0]=mxEdgeStyle.wayPoints1[f-1][0],mxEdgeStyle.wayPoints1[f][1]=mxEdgeStyle.wayPoints1[f-1][1]),q=0<(d[u]&mxEdgeStyle.TARGET_MASK),t=0<(d[u]&mxEdgeStyle.SOURCE_MASK),n=(d[u]&mxEdgeStyle.SIDE_MASK)>>5,n<<=w,15<n&&(n>>=4),p=0<(d[u]&mxEdgeStyle.CENTER_MASK),(t||q)&&9>n?(r=t?0:1,n=p&&0==k?m[r][0]+b[r][0]*m[r][2]:p?m[r][1]+b[r][1]* m[r][3]:mxEdgeStyle.limits[r][n],0==k?(n=(n-mxEdgeStyle.wayPoints1[f][0])*l[0],0<n&&(mxEdgeStyle.wayPoints1[f][0]+=l[0]*n)):(n=(n-mxEdgeStyle.wayPoints1[f][1])*l[1],0<n&&(mxEdgeStyle.wayPoints1[f][1]+=l[1]*n))):p&&(mxEdgeStyle.wayPoints1[f][0]+=l[0]*Math.abs(mxEdgeStyle.vertexSeperations[r]/2),mxEdgeStyle.wayPoints1[f][1]+=l[1]*Math.abs(mxEdgeStyle.vertexSeperations[r]/2)),0<f&&mxEdgeStyle.wayPoints1[f][k]==mxEdgeStyle.wayPoints1[f-1][k]?f--:y=k;for(u=0;u<=f&&(u!=f||((0<(a[1]&(mxConstants.DIRECTION_MASK_EAST| mxConstants.DIRECTION_MASK_WEST))?0:1)==c?0:1)==(f+1)%2);u++)e.push(new mxPoint(Math.round(mxEdgeStyle.wayPoints1[u][0]),Math.round(mxEdgeStyle.wayPoints1[u][1])));for(a=1;a<e.length;)null==e[a-1]||null==e[a]||e[a-1].x!=e[a].x||e[a-1].y!=e[a].y?a++:e.splice(a,1)}},getRoutePattern:function(a,b,c,d){var e=a[0]==mxConstants.DIRECTION_MASK_EAST?3:a[0];a=a[1]==mxConstants.DIRECTION_MASK_EAST?3:a[1];e-=b;a-=b;1>e&&(e+=4);1>a&&(a+=4);b=routePatterns[e-1][a-1];0!=c&&0!=d||null==inlineRoutePatterns[e-1][a- 1]||(b=inlineRoutePatterns[e-1][a-1]);return b}},mxStyleRegistry={values:[],putValue:function(a,b){mxStyleRegistry.values[a]=b},getValue:function(a){return mxStyleRegistry.values[a]},getName:function(a){for(var b in mxStyleRegistry.values)if(mxStyleRegistry.values[b]==a)return b;return null}};mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector);mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation); @@ -1118,7 +1118,8 @@ mxGraph.prototype.createTooltipHandler=function(){return new mxTooltipHandler(th mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)};mxGraph.prototype.createStylesheet=function(){return new mxStylesheet};mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)};mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer};mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)};mxGraph.prototype.getModel=function(){return this.model};mxGraph.prototype.getView=function(){return this.view}; mxGraph.prototype.getStylesheet=function(){return this.stylesheet};mxGraph.prototype.setStylesheet=function(a){this.stylesheet=a};mxGraph.prototype.getSelectionModel=function(){return this.selectionModel};mxGraph.prototype.setSelectionModel=function(a){this.selectionModel=a}; mxGraph.prototype.getSelectionCellsForChanges=function(a){for(var b=new mxDictionary,c=[],d=mxUtils.bind(this,function(a){if(!b.get(a)&&this.model.contains(a))if(this.model.isEdge(a)||this.model.isVertex(a))b.put(a,!0),c.push(a);else for(var e=this.model.getChildCount(a),f=0;f<e;f++)d(this.model.getChildAt(a,f))}),e=0;e<a.length;e++){var f=a[e];if(f.constructor!=mxRootChange){var g=null;f instanceof mxChildChange?g=f.child:null!=f.cell&&f.cell instanceof mxCell&&(g=f.cell);null!=g&&d(g)}}return c}; -mxGraph.prototype.graphModelChanged=function(a){for(var b=0;b<a.length;b++)this.processChange(a[b]);this.updateSelection();this.view.validate();this.sizeDidChange()};mxGraph.prototype.updateSelection=function(){for(var a=this.getSelectionCells(),b=[],c=0;c<a.length;c++)if(this.model.contains(a[c]))for(var d=this.model.getParent(a[c]);null!=d&&d!=this.view.currentRoot;){if(this.isCellCollapsed(d)||!this.isCellVisible(d)){b.push(a[c]);break}d=this.model.getParent(d)}else b.push(a[c]);this.removeSelectionCells(b)}; +mxGraph.prototype.graphModelChanged=function(a){for(var b=0;b<a.length;b++)this.processChange(a[b]);this.updateSelection();this.view.validate();this.sizeDidChange()}; +mxGraph.prototype.updateSelection=function(){for(var a=this.getSelectionCells(),b=[],c=0;c<a.length;c++)if(this.model.contains(a[c])&&this.isCellVisible(a[c]))for(var d=this.model.getParent(a[c]);null!=d&&d!=this.view.currentRoot;){if(this.isCellCollapsed(d)||!this.isCellVisible(d)){b.push(a[c]);break}d=this.model.getParent(d)}else b.push(a[c]);this.removeSelectionCells(b)}; mxGraph.prototype.processChange=function(a){if(a instanceof mxRootChange)this.clearSelection(),this.setDefaultParent(null),this.removeStateForCell(a.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(a instanceof mxChildChange){var b=this.model.getParent(a.child);this.view.invalidate(a.child,!0,!0);if(!this.model.contains(b)||this.isCellCollapsed(b))this.view.invalidate(a.child,!0,!0),this.removeStateForCell(a.child), this.view.currentRoot==a.child&&this.home();b!=a.previous&&(null!=b&&this.view.invalidate(b,!1,!1),null!=a.previous&&this.view.invalidate(a.previous,!1,!1))}else a instanceof mxTerminalChange||a instanceof mxGeometryChange?(a instanceof mxTerminalChange||null==a.previous&&null!=a.geometry||null!=a.previous&&!a.previous.equals(a.geometry))&&this.view.invalidate(a.cell):a instanceof mxValueChange?this.view.invalidate(a.cell,!1,!1):a instanceof mxStyleChange?(this.view.invalidate(a.cell,!0,!0),a=this.view.getState(a.cell), null!=a&&(a.style=null)):null!=a.cell&&a.cell instanceof mxCell&&this.removeStateForCell(a.cell)};mxGraph.prototype.removeStateForCell=function(a){for(var b=this.model.getChildCount(a),c=0;c<b;c++)this.removeStateForCell(this.model.getChildAt(a,c));this.view.invalidate(a,!1,!0);this.view.removeState(a)}; @@ -1168,17 +1169,17 @@ mxGraph.prototype.updateGroupBounds=function(a,b,c,d,e,f,g){null==a&&(a=this.get r.height;k=k.clone();c&&(k.x=Math.round(k.x+m.x-b-n-g),k.y=Math.round(k.y+m.y-b-p-d));k.width=Math.round(m.width+2*b+n+g+e);k.height=Math.round(m.height+2*b+p+d+f);this.model.setGeometry(a[h],k);this.moveCells(l,b+n-m.x+g,b+p-m.y+d)}}}}}finally{this.model.endUpdate()}return a}; mxGraph.prototype.getBoundingBox=function(a){var b=null;if(null!=a&&0<a.length)for(var c=0;c<a.length;c++)if(this.model.isVertex(a[c])||this.model.isEdge(a[c])){var d=this.view.getBoundingBox(this.view.getState(a[c]),!0);null!=d&&(null==b?b=mxRectangle.fromRectangle(d):b.add(d))}return b};mxGraph.prototype.cloneCell=function(a,b,c,d){return this.cloneCells([a],b,c,d)[0]}; mxGraph.prototype.cloneCells=function(a,b,c,d){b=null!=b?b:!0;var e=null;if(null!=a){for(var f=new mxDictionary,e=[],g=0;g<a.length;g++)f.put(a[g],!0),e.push(a[g]);if(0<e.length)for(var h=this.view.scale,k=this.view.translate,e=this.model.cloneCells(a,!0,c),g=0;g<a.length;g++)if(!b&&this.model.isEdge(e[g])&&null!=this.getEdgeValidationError(e[g],this.model.getTerminal(e[g],!0),this.model.getTerminal(e[g],!1)))e[g]=null;else{var l=this.model.getGeometry(e[g]);if(null!=l){var m=this.view.getState(a[g]), -n=this.view.getState(this.model.getParent(a[g]));if(null!=m&&null!=n)if(c=d?0:n.origin.x,n=d?0:n.origin.y,this.model.isEdge(e[g])){for(var m=m.absolutePoints,p=this.model.getTerminal(a[g],!0);null!=p&&!f.get(p);)p=this.model.getParent(p);null==p&&l.setTerminalPoint(new mxPoint(m[0].x/h-k.x,m[0].y/h-k.y),!0);for(p=this.model.getTerminal(a[g],!1);null!=p&&!f.get(p);)p=this.model.getParent(p);null==p&&(p=m.length-1,l.setTerminalPoint(new mxPoint(m[p].x/h-k.x,m[p].y/h-k.y),!1));l=l.points;if(null!=l)for(m= -0;m<l.length;m++)l[m].x+=c,l[m].y+=n}else l.translate(c,n)}}else e=[]}return e};mxGraph.prototype.insertVertex=function(a,b,c,d,e,f,g,h,k){b=this.createVertex(a,b,c,d,e,f,g,h,k);return this.addCell(b,a)};mxGraph.prototype.createVertex=function(a,b,c,d,e,f,g,h,k){a=new mxGeometry(d,e,f,g);a.relative=null!=k?k:!1;c=new mxCell(c,a,h);c.setId(b);c.setVertex(!0);c.setConnectable(!0);return c};mxGraph.prototype.insertEdge=function(a,b,c,d,e,f){b=this.createEdge(a,b,c,d,e,f);return this.addEdge(b,a,d,e)}; -mxGraph.prototype.createEdge=function(a,b,c,d,e,f){a=new mxCell(c,new mxGeometry,f);a.setId(b);a.setEdge(!0);a.geometry.relative=!0;return a};mxGraph.prototype.addEdge=function(a,b,c,d,e){return this.addCell(a,b,e,c,d)};mxGraph.prototype.addCell=function(a,b,c,d,e){return this.addCells([a],b,c,d,e)[0]}; +n=this.view.getState(this.model.getParent(a[g]));if(null!=m&&null!=n)if(c=d?0:n.origin.x,n=d?0:n.origin.y,this.model.isEdge(e[g])){if(m=m.absolutePoints,null!=m){for(var p=this.model.getTerminal(a[g],!0);null!=p&&!f.get(p);)p=this.model.getParent(p);null==p&&l.setTerminalPoint(new mxPoint(m[0].x/h-k.x,m[0].y/h-k.y),!0);for(p=this.model.getTerminal(a[g],!1);null!=p&&!f.get(p);)p=this.model.getParent(p);null==p&&(p=m.length-1,l.setTerminalPoint(new mxPoint(m[p].x/h-k.x,m[p].y/h-k.y),!1));l=l.points; +if(null!=l)for(m=0;m<l.length;m++)l[m].x+=c,l[m].y+=n}}else l.translate(c,n)}}else e=[]}return e};mxGraph.prototype.insertVertex=function(a,b,c,d,e,f,g,h,k){b=this.createVertex(a,b,c,d,e,f,g,h,k);return this.addCell(b,a)};mxGraph.prototype.createVertex=function(a,b,c,d,e,f,g,h,k){a=new mxGeometry(d,e,f,g);a.relative=null!=k?k:!1;c=new mxCell(c,a,h);c.setId(b);c.setVertex(!0);c.setConnectable(!0);return c}; +mxGraph.prototype.insertEdge=function(a,b,c,d,e,f){b=this.createEdge(a,b,c,d,e,f);return this.addEdge(b,a,d,e)};mxGraph.prototype.createEdge=function(a,b,c,d,e,f){a=new mxCell(c,new mxGeometry,f);a.setId(b);a.setEdge(!0);a.geometry.relative=!0;return a};mxGraph.prototype.addEdge=function(a,b,c,d,e){return this.addCell(a,b,e,c,d)};mxGraph.prototype.addCell=function(a,b,c,d,e){return this.addCells([a],b,c,d,e)[0]}; mxGraph.prototype.addCells=function(a,b,c,d,e){null==b&&(b=this.getDefaultParent());null==c&&(c=this.model.getChildCount(b));this.model.beginUpdate();try{this.cellsAdded(a,b,c,d,e,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",a,"parent",b,"index",c,"source",d,"target",e))}finally{this.model.endUpdate()}return a}; mxGraph.prototype.cellsAdded=function(a,b,c,d,e,f,g,h){if(null!=a&&null!=b&&null!=c){this.model.beginUpdate();try{for(var k=f?this.view.getState(b):null,l=null!=k?k.origin:null,m=new mxPoint(0,0),k=0;k<a.length;k++)if(null==a[k])c--;else{var n=this.model.getParent(a[k]);if(null!=l&&a[k]!=b&&b!=n){var p=this.view.getState(n),r=null!=p?p.origin:m,q=this.model.getGeometry(a[k]);if(null!=q){var t=r.x-l.x,z=r.y-l.y,q=q.clone();q.translate(t,z);q.relative||!this.model.isVertex(a[k])||this.isAllowNegativeCoordinates()|| (q.x=Math.max(0,q.x),q.y=Math.max(0,q.y));this.model.setGeometry(a[k],q)}}b==n&&c+k>this.model.getChildCount(b)&&c--;this.model.add(b,a[k],c+k);this.autoSizeCellsOnAdd&&this.autoSizeCell(a[k],!0);(null==h||h)&&this.isExtendParentsOnAdd(a[k])&&this.isExtendParent(a[k])&&this.extendParent(a[k]);(null==g||g)&&this.constrainChild(a[k]);null!=d&&this.cellConnected(a[k],d,!0);null!=e&&this.cellConnected(a[k],e,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",a,"parent",b,"index",c,"source", d,"target",e,"absolute",f))}finally{this.model.endUpdate()}}};mxGraph.prototype.autoSizeCell=function(a,b){if(null!=b?b:1)for(var c=this.model.getChildCount(a),d=0;d<c;d++)this.autoSizeCell(this.model.getChildAt(a,d));this.getModel().isVertex(a)&&this.isAutoSizeCell(a)&&this.updateCellSize(a)}; mxGraph.prototype.removeCells=function(a,b){b=null!=b?b:!0;null==a&&(a=this.getDeletableCells(this.getSelectionCells()));if(b)a=this.getDeletableCells(this.addAllEdges(a));else{a=a.slice();for(var c=this.getDeletableCells(this.getAllEdges(a)),d=new mxDictionary,e=0;e<a.length;e++)d.put(a[e],!0);for(e=0;e<c.length;e++)null!=this.view.getState(c[e])||d.get(c[e])||(d.put(c[e],!0),a.push(c[e]))}this.model.beginUpdate();try{this.cellsRemoved(a),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells", a,"includeEdges",b))}finally{this.model.endUpdate()}return a}; -mxGraph.prototype.cellsRemoved=function(a){if(null!=a&&0<a.length){var b=this.view.scale,c=this.view.translate;this.model.beginUpdate();try{for(var d=new mxDictionary,e=0;e<a.length;e++)d.put(a[e],!0);for(e=0;e<a.length;e++){for(var f=this.getAllEdges([a[e]]),g=mxUtils.bind(this,function(d,f){var g=this.model.getGeometry(d);if(null!=g){for(var h=this.model.getTerminal(d,f),k=!1,l=h;null!=l;){if(a[e]==l){k=!0;break}l=this.model.getParent(l)}k&&(g=g.clone(),k=this.view.getState(d),null!=k?(h=k.absolutePoints, -l=f?0:h.length-1,g.setTerminalPoint(new mxPoint(h[l].x/b-c.x-k.origin.x,h[l].y/b-c.y-k.origin.y),f)):(h=this.view.getState(h),null!=h&&g.setTerminalPoint(new mxPoint(h.getCenterX()/b-c.x,h.getCenterY()/b-c.y),f)),this.model.setGeometry(d,g),this.model.setTerminal(d,null,f))}}),h=0;h<f.length;h++)d.get(f[h])||(d.put(f[h],!0),g(f[h],!0),g(f[h],!1));this.model.remove(a[e])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",a))}finally{this.model.endUpdate()}}}; +mxGraph.prototype.cellsRemoved=function(a){if(null!=a&&0<a.length){var b=this.view.scale,c=this.view.translate;this.model.beginUpdate();try{for(var d=new mxDictionary,e=0;e<a.length;e++)d.put(a[e],!0);for(e=0;e<a.length;e++){for(var f=this.getAllEdges([a[e]]),g=mxUtils.bind(this,function(d,f){var g=this.model.getGeometry(d);if(null!=g){for(var h=this.model.getTerminal(d,f),k=!1,l=h;null!=l;){if(a[e]==l){k=!0;break}l=this.model.getParent(l)}k&&(g=g.clone(),k=this.view.getState(d),null!=k&&null!=k.absolutePoints? +(h=k.absolutePoints,l=f?0:h.length-1,g.setTerminalPoint(new mxPoint(h[l].x/b-c.x-k.origin.x,h[l].y/b-c.y-k.origin.y),f)):(h=this.view.getState(h),null!=h&&g.setTerminalPoint(new mxPoint(h.getCenterX()/b-c.x,h.getCenterY()/b-c.y),f)),this.model.setGeometry(d,g),this.model.setTerminal(d,null,f))}}),h=0;h<f.length;h++)d.get(f[h])||(d.put(f[h],!0),g(f[h],!0),g(f[h],!1));this.model.remove(a[e])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",a))}finally{this.model.endUpdate()}}}; mxGraph.prototype.splitEdge=function(a,b,c,d,e){d=d||0;e=e||0;var f=this.model.getParent(a),g=this.model.getTerminal(a,!0);this.model.beginUpdate();try{if(null==c){c=this.cloneCell(a);var h=this.view.getState(a),k=this.getCellGeometry(c);if(null!=k&&null!=k.points&&null!=h){var l=this.view.translate,m=this.view.scale,n=mxUtils.findNearestSegment(h,(d+l.x)*m,(e+l.y)*m);k.points=k.points.slice(0,n);k=this.getCellGeometry(a);null!=k&&null!=k.points&&(k=k.clone(),k.points=k.points.slice(n),this.model.setGeometry(a, k))}}this.cellsMoved(b,d,e,!1,!1);this.cellsAdded(b,f,this.model.getChildCount(f),null,null,!0);this.cellsAdded([c],f,this.model.getChildCount(f),g,b[0],!1);this.cellConnected(a,b[0],!0);this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",a,"cells",b,"newEdge",c,"dx",d,"dy",e))}finally{this.model.endUpdate()}return c}; mxGraph.prototype.toggleCells=function(a,b,c){null==b&&(b=this.getSelectionCells());c&&(b=this.addAllEdges(b));this.model.beginUpdate();try{this.cellsToggled(b,a),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",a,"cells",b,"includeEdges",c))}finally{this.model.endUpdate()}return b};mxGraph.prototype.cellsToggled=function(a,b){if(null!=a&&0<a.length){this.model.beginUpdate();try{for(var c=0;c<a.length;c++)this.model.setVisible(a[c],b)}finally{this.model.endUpdate()}}}; @@ -1522,8 +1523,9 @@ mxObjectCodec.prototype.afterEncode=function(a,b,c){return c};mxObjectCodec.prot mxObjectCodec.prototype.decodeAttributes=function(a,b,c){b=b.attributes;if(null!=b)for(var d=0;d<b.length;d++)this.decodeAttribute(a,b[d],c)};mxObjectCodec.prototype.isIgnoredAttribute=function(a,b,c){return"as"==b.nodeName||"id"==b.nodeName}; mxObjectCodec.prototype.decodeAttribute=function(a,b,c){if(!this.isIgnoredAttribute(a,b,c)){var d=b.nodeName;b=this.convertAttributeFromXml(a,b,c);var e=this.getFieldName(d);if(this.isReference(c,e,b,!1)){a=a.getObject(b);if(null==a){mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+d+"="+b);return}b=a}this.isExcluded(c,d,b,!1)||(c[d]=b)}}; mxObjectCodec.prototype.decodeChildren=function(a,b,c){for(b=b.firstChild;null!=b;){var d=b.nextSibling;b.nodeType!=mxConstants.NODETYPE_ELEMENT||this.processInclude(a,b,c)||this.decodeChild(a,b,c);b=d}}; -mxObjectCodec.prototype.decodeChild=function(a,b,c){var d=this.getFieldName(b.getAttribute("as"));if(null==d||!this.isExcluded(c,d,b,!1)){var e=this.getFieldTemplate(c,d,b);"add"==b.nodeName?(a=b.getAttribute("value"),null==a&&mxObjectCodec.allowEval&&(a=mxUtils.eval(mxUtils.getTextContent(b)))):a=a.decode(b,e);this.addObjectValue(c,d,a,e)}};mxObjectCodec.prototype.getFieldTemplate=function(a,b,c){a=a[b];a instanceof Array&&0<a.length&&(a=null);return a}; -mxObjectCodec.prototype.addObjectValue=function(a,b,c,d){null!=c&&c!=d&&(null!=b&&0<b.length?a[b]=c:a.push(c))};mxObjectCodec.prototype.processInclude=function(a,b,c){if("include"==b.nodeName){b=b.getAttribute("name");if(null!=b)try{var d=mxUtils.load(b).getDocumentElement();null!=d&&a.decode(d,c)}catch(e){}return!0}return!1};mxObjectCodec.prototype.beforeDecode=function(a,b,c){return b};mxObjectCodec.prototype.afterDecode=function(a,b,c){return c}; +mxObjectCodec.prototype.decodeChild=function(a,b,c){var d=this.getFieldName(b.getAttribute("as"));if(null==d||!this.isExcluded(c,d,b,!1)){var e=this.getFieldTemplate(c,d,b);"add"==b.nodeName?(a=b.getAttribute("value"),null==a&&mxObjectCodec.allowEval&&(a=mxUtils.eval(mxUtils.getTextContent(b)))):a=a.decode(b,e);try{this.addObjectValue(c,d,a,e)}catch(f){throw Error(f.message+" for "+b.nodeName);}}}; +mxObjectCodec.prototype.getFieldTemplate=function(a,b,c){a=a[b];a instanceof Array&&0<a.length&&(a=null);return a};mxObjectCodec.prototype.addObjectValue=function(a,b,c,d){null!=c&&c!=d&&(null!=b&&0<b.length?a[b]=c:a.push(c))};mxObjectCodec.prototype.processInclude=function(a,b,c){if("include"==b.nodeName){b=b.getAttribute("name");if(null!=b)try{var d=mxUtils.load(b).getDocumentElement();null!=d&&a.decode(d,c)}catch(e){}return!0}return!1};mxObjectCodec.prototype.beforeDecode=function(a,b,c){return b}; +mxObjectCodec.prototype.afterDecode=function(a,b,c){return c}; mxCodecRegistry.register(function(){var a=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);a.isCellCodec=function(){return!0};a.isNumericAttribute=function(a,c,d){return"value"!==c.nodeName&&mxObjectCodec.prototype.isNumericAttribute.apply(this,arguments)};a.isExcluded=function(a,c,d,e){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||e&&"value"==c&&d.nodeType==mxConstants.NODETYPE_ELEMENT};a.afterEncode=function(a,c,d){if(null!= c.value&&c.value.nodeType==mxConstants.NODETYPE_ELEMENT){var b=d;d=mxUtils.importNode(a.document,c.value,!0);d.appendChild(b);a=b.getAttribute("id");d.setAttribute("id",a);b.removeAttribute("id")}return d};a.beforeDecode=function(a,c,d){var b=c.cloneNode(!0),f=this.getName();c.nodeName!=f?(b=c.getElementsByTagName(f)[0],null!=b&&b.parentNode==c?(mxUtils.removeWhitespace(b,!0),mxUtils.removeWhitespace(b,!1),b.parentNode.removeChild(b)):b=null,d.value=c.cloneNode(!0),c=d.value.getAttribute("id"),null!= c&&(d.setId(c),d.value.removeAttribute("id"))):d.setId(c.getAttribute("id"));if(null!=b)for(c=0;c<this.idrefs.length;c++){var f=this.idrefs[c],g=b.getAttribute(f);if(null!=g){b.removeAttribute(f);var h=a.objects[g]||a.lookup(g);null==h&&(g=a.getElementById(g),null!=g&&(h=(mxCodecRegistry.codecs[g.nodeName]||this).decode(a,g)));d[f]=h}}return b};return a}()); @@ -1534,8 +1536,8 @@ g={});for(f=c.firstChild;null!=f;){if(f.nodeType==mxConstants.NODETYPE_ELEMENT){ (function(){try{if(null!=navigator&&null!=navigator.language){var a=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===a||"en-ca"===a||"es-mx"===a?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(b){}})();mxText.prototype.baseSpacingTop=5;mxText.prototype.baseSpacingBottom=1;mxGraphModel.prototype.ignoreRelativeEdgeParent=!1; mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif";mxGraphView.prototype.gridSteps=4;mxGraphView.prototype.minGridSize=4;mxGraphView.prototype.gridColor="#e0e0e0";mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(a,b,c){return null}; Graph=function(a,b,c,d,e){mxGraph.call(this,a,b,c,d);this.themes=e||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);a=this.baseUrl;b=a.indexOf("//");this.domainPathUrl=this.domainUrl="";0<b&&(b=a.indexOf("/",b+2),0<b&&(this.domainUrl=a.substring(0,b)),b=a.lastIndexOf("/"),0<b&&(this.domainPathUrl=a.substring(0,b+1)));this.isHtmlLabel=function(a){var b=this.view.getState(a);a=null!=b?b.style:this.getCellStyle(a); -return"1"==a.html||"wrap"==a[mxConstants.STYLE_WHITE_SPACE]};if(this.edgeMode){var f=null,g=null,h=null,k=null,l=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,b){if("mouseDown"==b.getProperty("eventName")&&this.isEnabled()){var c=b.getProperty("event");if(!mxEvent.isControlDown(c.getEvent())&&!mxEvent.isShiftDown(c.getEvent())){var d=c.getState();null!=d&&this.model.isEdge(d.cell)&&(f=new mxPoint(c.getGraphX(),c.getGraphY()),l=this.isCellSelected(d.cell),h=d,g=c,null!= -d.text&&null!=d.text.boundingBox&&mxUtils.contains(d.text.boundingBox,c.getGraphX(),c.getGraphY())?k=mxEvent.LABEL_HANDLE:(d=this.selectionCellsHandler.getHandler(d.cell),null!=d&&null!=d.bends&&0<d.bends.length&&(k=d.getHandleForEvent(c))))}}}));this.addMouseListener({mouseDown:function(a,b){},mouseMove:mxUtils.bind(this,function(a,b){var c=this.selectionCellsHandler.handlers.map,d;for(d in c)if(null!=c[d].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isControlDown(b.getEvent())&& +return null!=a?"1"==a.html||"wrap"==a[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var f=null,g=null,h=null,k=null,l=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,b){if("mouseDown"==b.getProperty("eventName")&&this.isEnabled()){var c=b.getProperty("event");if(!mxEvent.isControlDown(c.getEvent())&&!mxEvent.isShiftDown(c.getEvent())){var d=c.getState();null!=d&&this.model.isEdge(d.cell)&&(f=new mxPoint(c.getGraphX(),c.getGraphY()),l=this.isCellSelected(d.cell),h= +d,g=c,null!=d.text&&null!=d.text.boundingBox&&mxUtils.contains(d.text.boundingBox,c.getGraphX(),c.getGraphY())?k=mxEvent.LABEL_HANDLE:(d=this.selectionCellsHandler.getHandler(d.cell),null!=d&&null!=d.bends&&0<d.bends.length&&(k=d.getHandleForEvent(c))))}}}));this.addMouseListener({mouseDown:function(a,b){},mouseMove:mxUtils.bind(this,function(a,b){var c=this.selectionCellsHandler.handlers.map,d;for(d in c)if(null!=c[d].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isControlDown(b.getEvent())&& !mxEvent.isShiftDown(b.getEvent())&&!mxEvent.isAltDown(b.getEvent()))if(d=this.tolerance,null!=f&&null!=h&&null!=g){if(c=h,Math.abs(f.x-b.getGraphX())>d||Math.abs(f.y-b.getGraphY())>d){this.isCellSelected(c.cell)||this.setSelectionCell(c.cell);var e=this.selectionCellsHandler.getHandler(c.cell);if(null!=e&&null!=e.bends&&0<e.bends.length){var m=e.getHandleForEvent(g),n=this.view.getEdgeStyle(c);d=n==mxEdgeStyle.EntityRelation;l||k!=mxEvent.LABEL_HANDLE||(m=k);if(d&&0!=m&&m!=e.bends.length-1&&m!=mxEvent.LABEL_HANDLE)!d|| null==c.visibleSourceState&&null==c.visibleTargetState||(this.graphHandler.reset(),b.consume());else if(m==mxEvent.LABEL_HANDLE||0==m||null!=c.visibleSourceState||m==e.bends.length-1||null!=c.visibleTargetState)d||m==mxEvent.LABEL_HANDLE||(d=c.absolutePoints,null!=d&&(null==n&&null==m||n==mxEdgeStyle.OrthConnector)&&(m=k,null==m&&(m=new mxRectangle(f.x,f.y),m.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(m,d[0].x,d[0].y)?m=0:mxUtils.contains(m,d[d.length-1].x,d[d.length-1].y)? m=e.bends.length-1:null!=n&&(2==d.length||3==d.length&&(0==Math.round(d[0].x-d[1].x)&&0==Math.round(d[1].x-d[2].x)||0==Math.round(d[0].y-d[1].y)&&0==Math.round(d[1].y-d[2].y)))?m=2:(m=mxUtils.findNearestSegment(c,f.x,f.y),m=null==n?mxEvent.VIRTUAL_HANDLE-m:m+1))),null==m&&(m=mxEvent.VIRTUAL_HANDLE)),e.start(b.getGraphX(),b.getGraphX(),m),k=f=g=h=null,l=!1,b.consume(),this.graphHandler.reset()}}}else if(c=b.getState(),null!=c&&this.model.isEdge(c.cell)){e=null;d=c.absolutePoints;if(null!=d)if(m=new mxRectangle(b.getGraphX(), @@ -1546,8 +1548,8 @@ function(){var a=m.apply(this,arguments);if(this.graph.pageVisible){for(var b=[] function(a,b){return null==a.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(a){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};this.graphHandler.getCells=function(a){for(var b=mxGraphHandler.prototype.getCells.apply(this,arguments),c=[],d=0;d<b.length;d++){var e=this.graph.view.getState(b[d]),e=null!=e?e.style:this.graph.getCellStyle(b[d]); "1"==mxUtils.getValue(e,"part","0")?(e=this.graph.model.getParent(b[d]),this.graph.model.isVertex(e)&&0>mxUtils.indexOf(b,e)&&c.push(e)):c.push(b[d])}return c};this.connectionHandler.createTargetVertex=function(a,b){var c=this.graph.view.getState(b),c=null!=c?c.style:this.graph.getCellStyle(b);mxUtils.getValue(c,"part",!1)&&(c=this.graph.model.getParent(b),this.graph.model.isVertex(c)&&(b=c));return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var n=new mxRubberband(this); this.getRubberband=function(){return n};var p=(new Date).getTime(),r=0,q=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var a=this.currentState;q.apply(this,arguments);a!=this.currentState?(p=(new Date).getTime(),r=0):r=(new Date).getTime()-p};var t=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(a){return null!=this.currentState&&a.getState()==this.currentState&&2E3<r||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style, -"outlineConnect","1"))&&t.apply(this,arguments)};var z=this.isToggleEvent;this.isToggleEvent=function(a){return z.apply(this,arguments)||mxEvent.isShiftDown(a)};var w=n.isForceRubberbandEvent;n.isForceRubberbandEvent=function(a){return w.apply(this,arguments)||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==a.getState()&&mxEvent.isTouchEvent(a.getEvent())};var x=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&& -(x=this.container.style.cursor,this.container.style.cursor="move")}));this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.isEnabled()&&(this.container.style.cursor=x)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(a){return mxEvent.isMouseEvent(a.getEvent())};var y=this.click;this.click=function(a){var b=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);if(this.isEnabled()&&!b||a.isConsumed())return y.apply(this, +"outlineConnect","1"))&&t.apply(this,arguments)};var z=this.isToggleEvent;this.isToggleEvent=function(a){return z.apply(this,arguments)||mxEvent.isShiftDown(a)};var x=n.isForceRubberbandEvent;n.isForceRubberbandEvent=function(a){return x.apply(this,arguments)||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==a.getState()&&mxEvent.isTouchEvent(a.getEvent())};var w=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&& +(w=this.container.style.cursor,this.container.style.cursor="move")}));this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.isEnabled()&&(this.container.style.cursor=w)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(a){return mxEvent.isMouseEvent(a.getEvent())};var y=this.click;this.click=function(a){var b=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);if(this.isEnabled()&&!b||a.isConsumed())return y.apply(this, arguments);b=b?a.sourceState.cell:a.getCell();null!=b&&(b=this.getLinkForCell(b),null!=b&&(this.isCustomLink(b)?this.customLinkClicked(b):this.openLink(b)))};this.tooltipHandler.getStateForEvent=function(a){return a.sourceState};this.getCursorForMouseEvent=function(a){var b=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);return this.getCursorForCell(b?a.sourceState.cell:a.getCell())};var u=this.getCursorForCell;this.getCursorForCell=function(a){if(!this.isEnabled()||this.isCellLocked(a)){if(null!= this.getLinkForCell(a))return"pointer";if(this.isCellLocked(a))return"default"}return u.apply(this,arguments)};this.selectRegion=function(a,b){var c=this.getAllCells(a.x,a.y,a.width,a.height);this.selectCellsForEvent(c,b);return c};this.getAllCells=function(a,b,c,d,e,f){f=null!=f?f:[];if(0<c||0<d){var g=this.getModel(),h=a+c,k=b+d;null==e&&(e=this.getCurrentRoot(),null==e&&(e=g.getRoot()));if(null!=e)for(var l=g.getChildCount(e),m=0;m<l;m++){var n=g.getChildAt(e,m),p=this.view.getState(n);if(null!= p&&this.isCellVisible(n)&&"1"!=mxUtils.getValue(p.style,"locked","0")){var q=mxUtils.getValue(p.style,mxConstants.STYLE_ROTATION)||0;0!=q&&(p=mxUtils.getBoundingBox(p,q));(g.isEdge(n)||g.isVertex(n))&&p.x>=a&&p.y+p.height<=k&&p.y>=b&&p.x+p.width<=h&&f.push(n);this.getAllCells(a,b,c,d,n,f)}}}return f};var D=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,b,c){return this.graph.isCellSelected(a)?!1:D.apply(this,arguments)};this.isCellLocked=function(a){for(a= @@ -1568,7 +1570,7 @@ function(b){this.graph.useCssTransforms&&(this.graph.currentScale=this.scale,thi if(null!=a)if(a=a.parentNode,this.useCssTransforms){var b=a.getAttribute("transform");a.setAttribute("transformOrigin","0 0");a.setAttribute("transform","scale("+this.currentScale+","+this.currentScale+")translate("+this.currentTranslate.x+","+this.currentTranslate.y+")");if(b!=a.getAttribute("transform"))try{if(mxClient.IS_EDGE){var c=a.style.display;a.style.display="none";a.getBBox();a.style.display=c}}catch(g){}}else a.removeAttribute("transformOrigin"),a.removeAttribute("transform")};var b=mxGraphView.prototype.validateBackgroundPage; mxGraphView.prototype.validateBackgroundPage=function(){var a=this.graph.useCssTransforms,c=this.scale,f=this.translate;a&&(this.scale=this.graph.currentScale,this.translate=this.graph.currentTranslate);b.apply(this,arguments);a&&(this.scale=c,this.translate=f)};var c=mxGraph.prototype.updatePageBreaks;mxGraph.prototype.updatePageBreaks=function(a,b,f){var d=this.useCssTransforms,e=this.view.scale,k=this.view.translate;d&&(this.view.scale=1,this.view.translate=new mxPoint(0,0),this.useCssTransforms= !1);c.apply(this,arguments);d&&(this.view.scale=e,this.view.translate=k,this.useCssTransforms=!0)}})();Graph.prototype.isLightboxView=function(){return this.lightbox};Graph.prototype.labelLinkClicked=function(a,b,c){b=b.getAttribute("href");if(null!=b&&!this.isCustomLink(b)&&mxEvent.isLeftMouseButton(c)&&!mxEvent.isPopupTrigger(c)||mxEvent.isTouchEvent(c)){if(!this.isEnabled()||this.isCellLocked(a.cell))a=this.isBlankLink(b)?this.linkTarget:"_top",this.openLink(this.getAbsoluteUrl(b),a);mxEvent.consume(c)}}; -Graph.prototype.openLink=function(a,b,c){var d=window;"_self"==b&&window!=window.top?window.location.href=a:a.substring(0,this.baseUrl.length)==this.baseUrl&&"#"==a.charAt(this.baseUrl.length)&&"_top"==b&&window==window.top?(a=a.split("#")[1],window.location.hash=="#"+a&&(window.location.hash=""),window.location.hash=a):(d=window.open(a,b),null==d||c||(d.opener=null));return d};Graph.prototype.getLinkTitle=function(a){return a.substring(a.lastIndexOf("/")+1)}; +Graph.prototype.openLink=function(a,b,c){var d=window;if("_self"==b&&window!=window.top)window.location.href=a;else if(a.substring(0,this.baseUrl.length)==this.baseUrl&&"#"==a.charAt(this.baseUrl.length)&&"_top"==b&&window==window.top)a=a.split("#")[1],window.location.hash=="#"+a&&(window.location.hash=""),window.location.hash=a;else{d=window.open(a,b);try{null==d||c||(d.opener=null)}catch(e){}}return d};Graph.prototype.getLinkTitle=function(a){return a.substring(a.lastIndexOf("/")+1)}; Graph.prototype.isCustomLink=function(a){return"data:"==a.substring(0,5)};Graph.prototype.customLinkClicked=function(a){return!1};Graph.prototype.isExternalProtocol=function(a){return"mailto:"===a.substring(0,7)};Graph.prototype.isBlankLink=function(a){return!this.isExternalProtocol(a)&&("blank"===this.linkPolicy||"self"!==this.linkPolicy&&!this.isRelativeUrl(a)&&a.substring(0,this.domainUrl.length)!==this.domainUrl)}; Graph.prototype.isRelativeUrl=function(a){return null!=a&&!this.absoluteUrlPattern.test(a)&&"data:"!==a.substring(0,5)&&!this.isExternalProtocol(a)}; Graph.prototype.initLayoutManager=function(){this.layoutManager=new mxLayoutManager(this);this.layoutManager.getLayout=function(a){var b=this.graph.view.getState(a);a=null!=b?b.style:this.graph.getCellStyle(a);if(null!=a){if("stackLayout"==a.childLayout)return b=new mxStackLayout(this.graph,!0),b.resizeParentMax="1"==mxUtils.getValue(a,"resizeParentMax","1"),b.horizontal="1"==mxUtils.getValue(a,"horizontalStack","1"),b.resizeParent="1"==mxUtils.getValue(a,"resizeParent","1"),b.resizeLast="1"==mxUtils.getValue(a, @@ -1592,11 +1594,11 @@ Graph.prototype.replacePlaceholders=function(a,b){var c=[];if(null!=b){for(var d match.index)+(null!=f?f:e));d=match.index+e.length}}c.push(b.substring(d))}return c.join("")};Graph.prototype.restoreSelection=function(a){if(null!=a&&0<a.length){for(var b=[],c=0;c<a.length;c++){var d=this.model.getCell(a[c].id);null!=d&&b.push(d)}this.setSelectionCells(b)}else this.clearSelection()}; Graph.prototype.selectCellsForConnectVertex=function(a,b,c){2==a.length&&this.model.isVertex(a[1])?(this.setSelectionCell(a[1]),null!=c&&(mxEvent.isTouchEvent(b)?c.update(c.getState(this.view.getState(a[1]))):c.reset()),this.scrollCellToVisible(a[1])):this.setSelectionCells(a)}; Graph.prototype.connectVertex=function(a,b,c,d,e,f){f=f?f:!1;var g=a.geometry.relative&&null!=a.parent.geometry?new mxPoint(a.parent.geometry.width*a.geometry.x,a.parent.geometry.height*a.geometry.y):new mxPoint(a.geometry.x,a.geometry.y);b==mxConstants.DIRECTION_NORTH?(g.x+=a.geometry.width/2,g.y-=c):b==mxConstants.DIRECTION_SOUTH?(g.x+=a.geometry.width/2,g.y+=a.geometry.height+c):(g.x=b==mxConstants.DIRECTION_WEST?g.x-c:g.x+(a.geometry.width+c),g.y+=a.geometry.height/2);c=this.view.getState(this.model.getParent(a)); -var h=this.view.scale,k=this.view.translate,l=k.x*h,k=k.y*h;this.model.isVertex(c.cell)&&(l=c.x,k=c.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(g.x+=a.parent.geometry.x,g.y+=a.parent.geometry.y);f=f||mxEvent.isControlDown(d)&&!e?null:this.getCellAt(l+g.x*h,k+g.y*h);this.model.isAncestor(f,a)&&(f=null);for(c=f;null!=c;){if(this.isCellLocked(c)){f=null;break}c=this.model.getParent(c)}null!=f&&(c=this.view.getState(a),h=this.view.getState(f),null!=c&&null!=h&&mxUtils.intersects(c,h)&&(f= -null));if(e=!mxEvent.isShiftDown(d)||e)b==mxConstants.DIRECTION_NORTH?g.y-=a.geometry.height/2:b==mxConstants.DIRECTION_SOUTH?g.y+=a.geometry.height/2:g.x=b==mxConstants.DIRECTION_WEST?g.x-a.geometry.width/2:g.x+a.geometry.width/2;null==f||this.isCellConnectable(f)||(c=this.getModel().getParent(f),this.getModel().isVertex(c)&&this.isCellConnectable(c)&&(f=c));if(f==a||this.model.isEdge(f)||!this.isCellConnectable(f))f=null;c=[];this.model.beginUpdate();try{h=f;if(null==h&&e){for(var l=a,m=this.getCellGeometry(a);null!= -m&&m.relative;)l=this.getModel().getParent(l),m=this.getCellGeometry(l);var n=this.view.getState(l),p=null!=n?n.style:this.getCellStyle(l);if(mxUtils.getValue(p,"part",!1)){var r=this.model.getParent(l);this.model.isVertex(r)&&(l=r)}h=this.duplicateCells([l],!1)[0];m=this.getCellGeometry(h);null!=m&&(m.x=g.x-m.width/2,m.y=g.y-m.height/2)}m=null;null!=this.layoutManager&&(m=this.layoutManager.getLayout(this.model.getParent(a)));var q=mxEvent.isControlDown(d)&&e||null==f&&null!=m&&m.constructor==mxStackLayout? -null:this.insertEdge(this.model.getParent(a),null,"",a,h,this.createCurrentEdgeStyle());if(null!=q&&this.connectionHandler.insertBeforeSource){var t=null;for(d=a;null!=d.parent&&null!=d.geometry&&d.geometry.relative&&d.parent!=q.parent;)d=this.model.getParent(d);null!=d&&null!=d.parent&&d.parent==q.parent&&(t=d.parent.getIndex(d),this.model.add(d.parent,q,t))}null==f&&null!=h&&null!=m&&null!=a.parent&&m.constructor==mxStackLayout&&b==mxConstants.DIRECTION_WEST&&(t=a.parent.getIndex(a),this.model.add(a.parent, -h,t));null!=q&&c.push(q);null==f&&null!=h&&c.push(h);null==h&&null!=q&&q.geometry.setTerminalPoint(g,!1);null!=q&&this.fireEvent(new mxEventObject("cellsInserted","cells",[q]))}finally{this.model.endUpdate()}return c}; +var h=this.view.scale,k=this.view.translate,l=k.x*h,k=k.y*h;null!=c&&this.model.isVertex(c.cell)&&(l=c.x,k=c.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(g.x+=a.parent.geometry.x,g.y+=a.parent.geometry.y);f=f||mxEvent.isControlDown(d)&&!e?null:this.getCellAt(l+g.x*h,k+g.y*h);this.model.isAncestor(f,a)&&(f=null);for(c=f;null!=c;){if(this.isCellLocked(c)){f=null;break}c=this.model.getParent(c)}null!=f&&(c=this.view.getState(a),h=this.view.getState(f),null!=c&&null!=h&&mxUtils.intersects(c, +h)&&(f=null));if(e=!mxEvent.isShiftDown(d)||e)b==mxConstants.DIRECTION_NORTH?g.y-=a.geometry.height/2:b==mxConstants.DIRECTION_SOUTH?g.y+=a.geometry.height/2:g.x=b==mxConstants.DIRECTION_WEST?g.x-a.geometry.width/2:g.x+a.geometry.width/2;null==f||this.isCellConnectable(f)||(c=this.getModel().getParent(f),this.getModel().isVertex(c)&&this.isCellConnectable(c)&&(f=c));if(f==a||this.model.isEdge(f)||!this.isCellConnectable(f))f=null;c=[];this.model.beginUpdate();try{h=f;if(null==h&&e){for(var l=a,m= +this.getCellGeometry(a);null!=m&&m.relative;)l=this.getModel().getParent(l),m=this.getCellGeometry(l);var n=this.view.getState(l),p=null!=n?n.style:this.getCellStyle(l);if(mxUtils.getValue(p,"part",!1)){var r=this.model.getParent(l);this.model.isVertex(r)&&(l=r)}h=this.duplicateCells([l],!1)[0];m=this.getCellGeometry(h);null!=m&&(m.x=g.x-m.width/2,m.y=g.y-m.height/2)}m=null;null!=this.layoutManager&&(m=this.layoutManager.getLayout(this.model.getParent(a)));var q=mxEvent.isControlDown(d)&&e||null== +f&&null!=m&&m.constructor==mxStackLayout?null:this.insertEdge(this.model.getParent(a),null,"",a,h,this.createCurrentEdgeStyle());if(null!=q&&this.connectionHandler.insertBeforeSource){var t=null;for(d=a;null!=d.parent&&null!=d.geometry&&d.geometry.relative&&d.parent!=q.parent;)d=this.model.getParent(d);null!=d&&null!=d.parent&&d.parent==q.parent&&(t=d.parent.getIndex(d),this.model.add(d.parent,q,t))}null==f&&null!=h&&null!=m&&null!=a.parent&&m.constructor==mxStackLayout&&b==mxConstants.DIRECTION_WEST&& +(t=a.parent.getIndex(a),this.model.add(a.parent,h,t));null!=q&&c.push(q);null==f&&null!=h&&c.push(h);null==h&&null!=q&&q.geometry.setTerminalPoint(g,!1);null!=q&&this.fireEvent(new mxEventObject("cellsInserted","cells",[q]))}finally{this.model.endUpdate()}return c}; Graph.prototype.getIndexableText=function(){var a=document.createElement("div"),b=[],c,d;for(d in this.model.cells)if(c=this.model.cells[d],this.model.isVertex(c)||this.model.isEdge(c))this.isHtmlLabel(c)?(a.innerHTML=this.getLabel(c),c=mxUtils.extractTextWithWhitespace([a])):c=this.getLabel(c),c=mxUtils.trim(c.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<c.length&&b.push(c);return b.join(" ")}; Graph.prototype.convertValueToString=function(a){if(null!=a.value&&"object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder")){for(var b=a.getAttribute("placeholder"),c=a,d=null;null==d&&null!=c;)null!=c.value&&"object"==typeof c.value&&(d=c.hasAttribute(b)?null!=c.getAttribute(b)?c.getAttribute(b):"":null),c=this.model.getParent(c);return d||""}return a.value.getAttribute("label")||""}return mxGraph.prototype.convertValueToString.apply(this,arguments)}; Graph.prototype.getLinksForState=function(a){return null!=a&&null!=a.text&&null!=a.text.node?a.text.node.getElementsByTagName("a"):null};Graph.prototype.getLinkForCell=function(a){return null!=a.value&&"object"==typeof a.value?(a=a.value.getAttribute("link"),null!=a&&"javascript:"===a.toLowerCase().substring(0,11)&&(a=a.substring(11)),a):null}; @@ -1606,7 +1608,7 @@ Graph.prototype.foldCells=function(a,b,c,d,e){b=null!=b?b:!1;null==c&&(c=this.ge null==n?null!=e&&this.isMoveCellsEvent(e)&&this.moveSiblings(g,m,k,l):null!=e&&mxEvent.isAltDown(e)||n.constructor!=mxStackLayout||n.resizeLast||this.resizeParentStacks(m,n,k,l)}}}}finally{this.model.endUpdate()}this.isEnabled()&&this.setSelectionCells(c)}}; Graph.prototype.moveSiblings=function(a,b,c,d){this.model.beginUpdate();try{var e=this.getCellsBeyond(a.x,a.y,b,!0,!0);for(b=0;b<e.length;b++)if(e[b]!=a.cell){var f=this.view.getState(e[b]),g=this.getCellGeometry(e[b]);null!=f&&null!=g&&(g=g.clone(),g.translate(Math.round(c*Math.max(0,Math.min(1,(f.x-a.x)/a.width))),Math.round(d*Math.max(0,Math.min(1,(f.y-a.y)/a.height)))),this.model.setGeometry(e[b],g))}}finally{this.model.endUpdate()}}; Graph.prototype.resizeParentStacks=function(a,b,c,d){if(null!=this.layoutManager&&null!=b&&b.constructor==mxStackLayout&&!b.resizeLast){this.model.beginUpdate();try{for(var e=b.horizontal;null!=a&&null!=b&&b.constructor==mxStackLayout&&b.horizontal==e&&!b.resizeLast;){var f=this.getCellGeometry(a),g=this.view.getState(a);null!=g&&null!=f&&(f=f.clone(),b.horizontal?f.width+=c+Math.min(0,g.width/this.view.scale-f.width):f.height+=d+Math.min(0,g.height/this.view.scale-f.height),this.model.setGeometry(a, -f));a=this.model.getParent(a);b=this.layoutManager.getLayout(a)}}finally{this.model.endUpdate()}}};Graph.prototype.isContainer=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return this.isSwimlane(a)?"0"!=b.container:"1"==b.container};Graph.prototype.isCellConnectable=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return null!=b.connectable?"0"!=b.connectable:mxGraph.prototype.isCellConnectable.apply(this,arguments)}; +f));a=this.model.getParent(a);b=this.layoutManager.getLayout(a)}}finally{this.model.endUpdate()}}};Graph.prototype.isContainer=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return this.isSwimlane(a)?"0"!=b.container:"1"==b.container};Graph.prototype.isCellConnectable=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return null!=b&&null!=b.connectable?"0"!=b.connectable:mxGraph.prototype.isCellConnectable.apply(this,arguments)}; Graph.prototype.selectAll=function(a){a=a||this.getDefaultParent();this.isCellLocked(a)||mxGraph.prototype.selectAll.apply(this,arguments)};Graph.prototype.selectCells=function(a,b,c){c=c||this.getDefaultParent();this.isCellLocked(c)||mxGraph.prototype.selectCells.apply(this,arguments)};Graph.prototype.getSwimlaneAt=function(a,b,c){c=c||this.getDefaultParent();return this.isCellLocked(c)?null:mxGraph.prototype.getSwimlaneAt.apply(this,arguments)}; Graph.prototype.isCellFoldable=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return this.foldingEnabled&&!this.isCellLocked(a)&&(this.isContainer(a)&&"0"!=b.collapsible||!this.isContainer(a)&&"1"==b.collapsible)};Graph.prototype.reset=function(){this.isEditing()&&this.stopEditing(!0);this.escape();this.isSelectionEmpty()||this.clearSelection()}; Graph.prototype.zoom=function(a,b){a=Math.max(.01,Math.min(this.view.scale*a,160))/this.view.scale;mxGraph.prototype.zoom.apply(this,arguments)};Graph.prototype.zoomIn=function(){.15>this.view.scale?this.zoom((this.view.scale+.01)/this.view.scale):this.zoom(Math.round(this.view.scale*this.zoomFactor*20)/20/this.view.scale)};Graph.prototype.zoomOut=function(){.15>=this.view.scale?this.zoom((this.view.scale-.01)/this.view.scale):this.zoom(Math.round(1/this.zoomFactor*this.view.scale*20)/20/this.view.scale)}; @@ -1643,22 +1645,22 @@ a.y-this.triangleUp.height/2),a=this.graph.getCellAt(this.currentState.getCenter f(b,this.arrowRight);f(c,this.arrowLeft);f(d,this.arrowUp);f(a,this.arrowDown)}else this.arrowLeft.style.visibility="visible",this.arrowRight.style.visibility="visible",this.arrowUp.style.visibility="visible",this.arrowDown.style.visibility="visible";this.graph.tooltipHandler.isEnabled()?(this.arrowLeft.setAttribute("title",mxResources.get("plusTooltip")),this.arrowRight.setAttribute("title",mxResources.get("plusTooltip")),this.arrowUp.setAttribute("title",mxResources.get("plusTooltip")),this.arrowDown.setAttribute("title", mxResources.get("plusTooltip"))):(this.arrowLeft.removeAttribute("title"),this.arrowRight.removeAttribute("title"),this.arrowUp.removeAttribute("title"),this.arrowDown.removeAttribute("title"))}else this.reset();null!=this.currentState&&(this.bbox=this.computeBoundingBox(),null!=this.bbox&&this.bbox.grow(10))}}; HoverIcons.prototype.computeBoundingBox=function(){var a=this.graph.model.isEdge(this.currentState.cell)?null:mxRectangle.fromRectangle(this.currentState);this.visitNodes(function(b){null!=b.parentNode&&(b=new mxRectangle(b.offsetLeft,b.offsetTop,b.offsetWidth,b.offsetHeight),null==a?a=b:a.add(b))});return a}; -HoverIcons.prototype.getState=function(a){if(null!=a){a=a.cell;if(this.graph.getModel().isVertex(a)&&!this.graph.isCellConnectable(a)){var b=this.graph.getModel().getParent(a);this.graph.getModel().isVertex(b)&&this.graph.isCellConnectable(b)&&(a=b)}if(this.graph.isCellLocked(a)||this.graph.model.isEdge(a))a=null;a=this.graph.view.getState(a)}return a}; +HoverIcons.prototype.getState=function(a){if(null!=a)if(a=a.cell,this.graph.getModel().contains(a)){if(this.graph.getModel().isVertex(a)&&!this.graph.isCellConnectable(a)){var b=this.graph.getModel().getParent(a);this.graph.getModel().isVertex(b)&&this.graph.isCellConnectable(b)&&(a=b)}if(this.graph.isCellLocked(a)||this.graph.model.isEdge(a))a=null;a=this.graph.view.getState(a);null!=a&&null==a.style&&(a=null)}else a=null;return a}; HoverIcons.prototype.update=function(a,b,c){if(this.graph.connectionArrowsEnabled){var d=null;this.prev!=a||this.isActive()?(this.startTime=(new Date).getTime(),this.prev=a,d=0,null!=this.updateThread&&window.clearTimeout(this.updateThread),null!=a&&(this.updateThread=window.setTimeout(mxUtils.bind(this,function(){this.isActive()||this.graph.isMouseDown||this.graph.panningHandler.isActive()||(this.prev=a,this.update(a,b,c))}),this.updateDelay+10))):null!=this.startTime&&(d=(new Date).getTime()-this.startTime); this.setDisplay("");null!=this.currentState&&this.currentState!=a&&d<this.activationDelay&&null!=this.bbox&&!mxUtils.contains(this.bbox,b,c)?this.reset(!1):(null!=this.currentState||d>this.activationDelay)&&this.currentState!=a&&(d>this.updateDelay&&null!=a||null==this.bbox||null==b||null==c||!mxUtils.contains(this.bbox,b,c))&&(null!=a&&this.graph.isEnabled()?(this.removeNodes(),this.setCurrentState(a),this.repaint(),this.graph.connectionHandler.constraintHandler.currentFocus!=a&&this.graph.connectionHandler.constraintHandler.reset()): this.reset())}else this.reset()};HoverIcons.prototype.setCurrentState=function(a){"eastwest"!=a.style.portConstraint&&(this.graph.container.appendChild(this.arrowUp),this.graph.container.appendChild(this.arrowDown));this.graph.container.appendChild(this.arrowRight);this.graph.container.appendChild(this.arrowLeft);this.currentState=a}; (function(){var a=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){a.apply(this,arguments);this.validEdges=[]};var b=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(a,c){var d=this.getState(a);null!=d&&this.graph.model.isEdge(d.cell)&&null!=d.style&&1!=d.style[mxConstants.STYLE_CURVED]&&!d.invalid&&this.updateLineJumps(d)&&this.graph.cellRenderer.redraw(d,!1,this.isRendering());d=b.apply(this,arguments);null!= -d&&this.graph.model.isEdge(d.cell)&&1!=d.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(d);return d};var c=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(a,b){return c.apply(this,arguments)||null!=a.routedPoints&&null!=b.routedPoints&&!mxUtils.equalPoints(b.routedPoints,a.routedPoints)};var d=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=function(a){d.apply(this,arguments);this.graph.model.isEdge(a.cell)&&1!=a.style[mxConstants.STYLE_CURVED]&& -this.updateLineJumps(a)};mxGraphView.prototype.updateLineJumps=function(a){var b=a.absolutePoints;if(Graph.lineJumpsEnabled){var c=null!=a.routedPoints,d=null;if(null!=b&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var e=function(b,c,e){var f=new mxPoint(c,e);f.type=b;d.push(f);f=null!=a.routedPoints?a.routedPoints[d.length-1]:null;return null==f||f.type!=b||f.x!=c||f.y!=e},f=.5*this.scale,c=!1,d=[],g=0;g<b.length-1;g++){for(var h=b[g+1],k=b[g],w=[],x=b[g+2];g< -b.length-2&&mxUtils.ptSegDistSq(k.x,k.y,x.x,x.y,h.x,h.y)<1*this.scale*this.scale;)h=x,g++,x=b[g+2];for(var c=e(0,k.x,k.y)||c,y=0;y<this.validEdges.length;y++){var u=this.validEdges[y],D=u.absolutePoints;if(null!=D&&mxUtils.intersects(a,u)&&"1"!=u.style.noJump)for(u=0;u<D.length-1;u++){for(var F=D[u+1],E=D[u],x=D[u+2];u<D.length-2&&mxUtils.ptSegDistSq(E.x,E.y,x.x,x.y,F.x,F.y)<1*this.scale*this.scale;)F=x,u++,x=D[u+2];x=mxUtils.intersection(k.x,k.y,h.x,h.y,E.x,E.y,F.x,F.y);if(null!=x&&(Math.abs(x.x- -E.x)>f||Math.abs(x.y-E.y)>f)&&(Math.abs(x.x-F.x)>f||Math.abs(x.y-F.y)>f)){F=x.x-k.x;E=x.y-k.y;x={distSq:F*F+E*E,x:x.x,y:x.y};for(F=0;F<w.length;F++)if(w[F].distSq>x.distSq){w.splice(F,0,x);x=null;break}null==x||0!=w.length&&w[w.length-1].x===x.x&&w[w.length-1].y===x.y||w.push(x)}}}for(u=0;u<w.length;u++)c=e(1,w[u].x,w[u].y)||c}x=b[b.length-1];c=e(0,x.x,x.y)||c}a.routedPoints=d;return c}return!1};var e=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(a,b,c){this.routedPoints= -null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)e.apply(this,arguments);else{var d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,f=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,g=mxUtils.getValue(this.style,"jumpStyle","none"),h,k=!0,l=null,m=null;h=[];var x=null;a.begin();for(var y=0;y<this.state.routedPoints.length;y++){var u= -this.state.routedPoints[y],D=new mxPoint(u.x/this.scale,u.y/this.scale);0==y?D=b[0]:y==this.state.routedPoints.length-1&&(D=b[b.length-1]);var F=!1;if(null!=l&&1==u.type){var E=this.state.routedPoints[y+1],u=E.x/this.scale-D.x,E=E.y/this.scale-D.y,u=u*u+E*E;null==x&&(x=new mxPoint(D.x-l.x,D.y-l.y),m=Math.sqrt(x.x*x.x+x.y*x.y),x.x=x.x*f/m,x.y=x.y*f/m);u>f*f&&0<m&&(u=l.x-D.x,E=l.y-D.y,u=u*u+E*E,u>f*f&&(F=new mxPoint(D.x-x.x,D.y-x.y),u=new mxPoint(D.x+x.x,D.y+x.y),h.push(F),this.addPoints(a,h,c,d,!1, -null,k),h=0>Math.round(x.x)||0==Math.round(x.x)&&0>=Math.round(x.y)?1:-1,k=!1,"sharp"==g?(a.lineTo(F.x-x.y*h,F.y+x.x*h),a.lineTo(u.x-x.y*h,u.y+x.x*h),a.lineTo(u.x,u.y)):"arc"==g?(h*=1.3,a.curveTo(F.x-x.y*h,F.y+x.x*h,u.x-x.y*h,u.y+x.x*h,u.x,u.y)):(a.moveTo(u.x,u.y),k=!0),h=[u],F=!0))}else x=null;F||(h.push(D),l=D)}this.addPoints(a,h,c,d,!1,null,k);a.stroke()}};var f=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint=function(a,b,c,d){if(null==b||null== -a||"1"!=b.style.snapToPoint&&"1"!=a.style.snapToPoint)f.apply(this,arguments);else{b=this.getTerminalPort(a,b,d);var e=this.getNextPoint(a,c,d),g=this.graph.isOrthogonal(a),h=mxUtils.toRadians(Number(b.style[mxConstants.STYLE_ROTATION]||"0")),k=new mxPoint(b.getCenterX(),b.getCenterY());if(0!=h)var l=Math.cos(-h),m=Math.sin(-h),e=mxUtils.getRotatedPoint(e,l,m,k);l=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||0);l+=parseFloat(a.style[d?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]|| -0);e=this.getPerimeterPoint(b,e,0==h&&g,l);0!=h&&(l=Math.cos(h),m=Math.sin(h),e=mxUtils.getRotatedPoint(e,l,m,k));a.setAbsoluteTerminalPoint(this.snapToAnchorPoint(a,b,c,d,e),d)}};mxGraphView.prototype.snapToAnchorPoint=function(a,b,c,d,e){if(null!=b&&null!=a){a=this.graph.getAllConnectionConstraints(b);d=c=null;if(null!=a)for(var f=0;f<a.length;f++){var g=this.graph.getConnectionPoint(b,a[f]);if(null!=g){var h=(g.x-e.x)*(g.x-e.x)+(g.y-e.y)*(g.y-e.y);if(null==d||h<d)c=g,d=h}}null!=c&&(e=c)}return e}; -var g=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(a,b,c){var d=g.apply(this,arguments);"1"==a.getAttribute("placeholders")&&null!=c.state&&(d=c.state.view.graph.replacePlaceholders(c.state.cell,d));return d};var h=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(a){if(null!=a.style&&"undefined"!==typeof pako){var b=mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null);if(null!=b&&"stencil("==b.substring(0,8))try{var c= -b.substring(8,b.length-1),d=mxUtils.parseXml(a.view.graph.decompress(c));return new mxShape(new mxStencil(d.documentElement))}catch(p){null!=window.console&&console.log("Error in shape: "+p)}}return h.apply(this,arguments)}})();mxStencilRegistry.libraries={};mxStencilRegistry.dynamicLoading=!0;mxStencilRegistry.allowEval=!0;mxStencilRegistry.packages=[]; +d&&this.graph.model.isEdge(d.cell)&&null!=d.style&&1!=d.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(d);return d};var c=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(a,b){return c.apply(this,arguments)||null!=a.routedPoints&&null!=b.routedPoints&&!mxUtils.equalPoints(b.routedPoints,a.routedPoints)};var d=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=function(a){d.apply(this,arguments);this.graph.model.isEdge(a.cell)&& +1!=a.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(a)};mxGraphView.prototype.updateLineJumps=function(a){var b=a.absolutePoints;if(Graph.lineJumpsEnabled){var c=null!=a.routedPoints,d=null;if(null!=b&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var e=function(b,c,e){var f=new mxPoint(c,e);f.type=b;d.push(f);f=null!=a.routedPoints?a.routedPoints[d.length-1]:null;return null==f||f.type!=b||f.x!=c||f.y!=e},f=.5*this.scale,c=!1,d=[],g=0;g<b.length-1;g++){for(var h= +b[g+1],k=b[g],x=[],w=b[g+2];g<b.length-2&&mxUtils.ptSegDistSq(k.x,k.y,w.x,w.y,h.x,h.y)<1*this.scale*this.scale;)h=w,g++,w=b[g+2];for(var c=e(0,k.x,k.y)||c,y=0;y<this.validEdges.length;y++){var u=this.validEdges[y],D=u.absolutePoints;if(null!=D&&mxUtils.intersects(a,u)&&"1"!=u.style.noJump)for(u=0;u<D.length-1;u++){for(var F=D[u+1],E=D[u],w=D[u+2];u<D.length-2&&mxUtils.ptSegDistSq(E.x,E.y,w.x,w.y,F.x,F.y)<1*this.scale*this.scale;)F=w,u++,w=D[u+2];w=mxUtils.intersection(k.x,k.y,h.x,h.y,E.x,E.y,F.x, +F.y);if(null!=w&&(Math.abs(w.x-E.x)>f||Math.abs(w.y-E.y)>f)&&(Math.abs(w.x-F.x)>f||Math.abs(w.y-F.y)>f)){F=w.x-k.x;E=w.y-k.y;w={distSq:F*F+E*E,x:w.x,y:w.y};for(F=0;F<x.length;F++)if(x[F].distSq>w.distSq){x.splice(F,0,w);w=null;break}null==w||0!=x.length&&x[x.length-1].x===w.x&&x[x.length-1].y===w.y||x.push(w)}}}for(u=0;u<x.length;u++)c=e(1,x[u].x,x[u].y)||c}w=b[b.length-1];c=e(0,w.x,w.y)||c}a.routedPoints=d;return c}return!1};var e=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(a, +b,c){this.routedPoints=null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)e.apply(this,arguments);else{var d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,f=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,g=mxUtils.getValue(this.style,"jumpStyle","none"),h,k=!0,l=null,m=null;h=[];var w=null;a.begin();for(var y= +0;y<this.state.routedPoints.length;y++){var u=this.state.routedPoints[y],D=new mxPoint(u.x/this.scale,u.y/this.scale);0==y?D=b[0]:y==this.state.routedPoints.length-1&&(D=b[b.length-1]);var F=!1;if(null!=l&&1==u.type){var E=this.state.routedPoints[y+1],u=E.x/this.scale-D.x,E=E.y/this.scale-D.y,u=u*u+E*E;null==w&&(w=new mxPoint(D.x-l.x,D.y-l.y),m=Math.sqrt(w.x*w.x+w.y*w.y),w.x=w.x*f/m,w.y=w.y*f/m);u>f*f&&0<m&&(u=l.x-D.x,E=l.y-D.y,u=u*u+E*E,u>f*f&&(F=new mxPoint(D.x-w.x,D.y-w.y),u=new mxPoint(D.x+w.x, +D.y+w.y),h.push(F),this.addPoints(a,h,c,d,!1,null,k),h=0>Math.round(w.x)||0==Math.round(w.x)&&0>=Math.round(w.y)?1:-1,k=!1,"sharp"==g?(a.lineTo(F.x-w.y*h,F.y+w.x*h),a.lineTo(u.x-w.y*h,u.y+w.x*h),a.lineTo(u.x,u.y)):"arc"==g?(h*=1.3,a.curveTo(F.x-w.y*h,F.y+w.x*h,u.x-w.y*h,u.y+w.x*h,u.x,u.y)):(a.moveTo(u.x,u.y),k=!0),h=[u],F=!0))}else w=null;F||(h.push(D),l=D)}this.addPoints(a,h,c,d,!1,null,k);a.stroke()}};var f=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint= +function(a,b,c,d){if(null==b||null==a||"1"!=b.style.snapToPoint&&"1"!=a.style.snapToPoint)f.apply(this,arguments);else{b=this.getTerminalPort(a,b,d);var e=this.getNextPoint(a,c,d),g=this.graph.isOrthogonal(a),h=mxUtils.toRadians(Number(b.style[mxConstants.STYLE_ROTATION]||"0")),k=new mxPoint(b.getCenterX(),b.getCenterY());if(0!=h)var l=Math.cos(-h),m=Math.sin(-h),e=mxUtils.getRotatedPoint(e,l,m,k);l=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||0);l+=parseFloat(a.style[d?mxConstants.STYLE_SOURCE_PERIMETER_SPACING: +mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);e=this.getPerimeterPoint(b,e,0==h&&g,l);0!=h&&(l=Math.cos(h),m=Math.sin(h),e=mxUtils.getRotatedPoint(e,l,m,k));a.setAbsoluteTerminalPoint(this.snapToAnchorPoint(a,b,c,d,e),d)}};mxGraphView.prototype.snapToAnchorPoint=function(a,b,c,d,e){if(null!=b&&null!=a){a=this.graph.getAllConnectionConstraints(b);d=c=null;if(null!=a)for(var f=0;f<a.length;f++){var g=this.graph.getConnectionPoint(b,a[f]);if(null!=g){var h=(g.x-e.x)*(g.x-e.x)+(g.y-e.y)*(g.y-e.y);if(null== +d||h<d)c=g,d=h}}null!=c&&(e=c)}return e};var g=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(a,b,c){var d=g.apply(this,arguments);"1"==a.getAttribute("placeholders")&&null!=c.state&&(d=c.state.view.graph.replacePlaceholders(c.state.cell,d));return d};var h=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(a){if(null!=a.style&&"undefined"!==typeof pako){var b=mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null);if(null!= +b&&"stencil("==b.substring(0,8))try{var c=b.substring(8,b.length-1),d=mxUtils.parseXml(a.view.graph.decompress(c));return new mxShape(new mxStencil(d.documentElement))}catch(p){null!=window.console&&console.log("Error in shape: "+p)}}return h.apply(this,arguments)}})();mxStencilRegistry.libraries={};mxStencilRegistry.dynamicLoading=!0;mxStencilRegistry.allowEval=!0;mxStencilRegistry.packages=[]; mxStencilRegistry.getStencil=function(a){var b=mxStencilRegistry.stencils[a];if(null==b&&null==mxCellRenderer.defaultShapes[a]&&mxStencilRegistry.dynamicLoading){var c=mxStencilRegistry.getBasenameForStencil(a);if(null!=c){b=mxStencilRegistry.libraries[c];if(null!=b){if(null==mxStencilRegistry.packages[c]){for(var d=0;d<b.length;d++){var e=b[d];if(".xml"==e.toLowerCase().substring(e.length-4,e.length))mxStencilRegistry.loadStencilSet(e,null);else if(".js"==e.toLowerCase().substring(e.length-3,e.length))try{if(mxStencilRegistry.allowEval){var f= mxUtils.load(e);null!=f&&200<=f.getStatus()&&299>=f.getStatus()&&eval.call(window,f.getText())}}catch(g){null!=window.console&&console.log("error in getStencil:",e,g)}}mxStencilRegistry.packages[c]=1}}else c=c.replace("_-_","_"),mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+c+".xml",null);b=mxStencilRegistry.stencils[a]}}return b}; mxStencilRegistry.getBasenameForStencil=function(a){var b=null;if(null!=a&&(a=a.split("."),0<a.length&&"mxgraph"==a[0]))for(var b=a[1],c=2;c<a.length-1;c++)b+="/"+a[c];return b}; @@ -1674,13 +1676,13 @@ a.getCell=mxUtils.bind(this,function(a){var c=b.apply(this,arguments);this.error (a+="shape="+this.currentEdgeStyle.shape+";");null!=this.currentEdgeStyle.curved&&(a+="curved="+this.currentEdgeStyle.curved+";");null!=this.currentEdgeStyle.rounded&&(a+="rounded="+this.currentEdgeStyle.rounded+";");null!=this.currentEdgeStyle.comic&&(a+="comic="+this.currentEdgeStyle.comic+";");null!=this.currentEdgeStyle.jumpStyle&&(a+="jumpStyle="+this.currentEdgeStyle.jumpStyle+";");null!=this.currentEdgeStyle.jumpSize&&(a+="jumpSize="+this.currentEdgeStyle.jumpSize+";");"elbowEdgeStyle"==this.currentEdgeStyle.edgeStyle&& null!=this.currentEdgeStyle.elbow&&(a+="elbow="+this.currentEdgeStyle.elbow+";");return a=null!=this.currentEdgeStyle.html?a+("html="+this.currentEdgeStyle.html+";"):a+"html=1;"};Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var a=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement():null;null!=a&&(new mxCodec(a.ownerDocument)).decode(a,this.getStylesheet())}; Graph.prototype.importGraphModel=function(a,b,c,d){b=null!=b?b:0;c=null!=c?c:0;var e=new mxCodec(a.ownerDocument),f=new mxGraphModel;e.decode(a,f);a=[];e=f.getChildren(this.cloneCell(f.root,this.isCloneInvalidEdges()));if(null!=e){e=e.slice();this.model.beginUpdate();try{if(1!=e.length||this.isCellLocked(this.getDefaultParent()))for(f=0;f<e.length;f++)a=a.concat(this.model.getChildren(this.moveCells([e[f]],b,c,!1,this.model.getRoot())[0]));else a=this.moveCells(f.getChildren(e[0]),b,c,!1,this.getDefaultParent()); -if(d){this.isGridEnabled()&&(b=this.snap(b),c=this.snap(c));var g=this.getBoundingBoxFromGeometry(a,!0);null!=g&&this.moveCells(a,b-g.x,c-g.y)}}finally{this.model.endUpdate()}}return a};Graph.prototype.getAllConnectionConstraints=function(a,b){if(null!=a){var c=null;if(null!=a.shape){var d=a.shape.direction,e=a.shape.bounds,f=a.shape.scale,c=e.width/f,e=e.height/f;if(d==mxConstants.DIRECTION_NORTH||d==mxConstants.DIRECTION_SOUTH)var g=c,c=e,e=g;c=a.shape.getConstraints(a.style,c,e)}if(null!=c)return c; -c=mxUtils.getValue(a.style,"points",null);if(null!=c){d=[];try{for(var h=JSON.parse(c),c=0;c<h.length;c++)g=h[c],d.push(new mxConnectionConstraint(new mxPoint(g[0],g[1]),2<g.length?"0"!=g[2]:!0,null,3<g.length?g[3]:0,4<g.length?g[4]:0))}catch(aa){}return d}if(null!=a.shape)if(null!=a.shape.stencil){if(null!=a.shape.stencil)return a.shape.stencil.constraints}else if(null!=a.shape.constraints)return a.shape.constraints}return null};Graph.prototype.flipEdge=function(a){if(null!=a){var b=this.view.getState(a), -b=null!=b?b.style:this.getCellStyle(a);null!=b&&(b=mxUtils.getValue(b,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL,this.setCellStyles(mxConstants.STYLE_ELBOW,b,[a]))}};Graph.prototype.isValidRoot=function(a){for(var b=this.model.getChildCount(a),c=0,d=0;d<b;d++){var e=this.model.getChildAt(a,d);this.model.isVertex(e)&&(e=this.getCellGeometry(e),null==e||e.relative||c++)}return 0<c||this.isContainer(a)}; -Graph.prototype.isValidDropTarget=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return"1"!=mxUtils.getValue(b,"part","0")&&(this.isContainer(a)||mxGraph.prototype.isValidDropTarget.apply(this,arguments)&&"0"!=mxUtils.getValue(b,"dropTarget","1"))};Graph.prototype.createGroupCell=function(){var a=mxGraph.prototype.createGroupCell.apply(this,arguments);a.setStyle("group");return a};Graph.prototype.isExtendParentsOnAdd=function(a){var b=mxGraph.prototype.isExtendParentsOnAdd.apply(this, -arguments);if(b&&null!=a&&null!=this.layoutManager){var c=this.model.getParent(a);null!=c&&(c=this.layoutManager.getLayout(c),null!=c&&c.constructor==mxStackLayout&&(b=!1))}return b};Graph.prototype.getPreferredSizeForCell=function(a){var b=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=b&&(b.width+=10,b.height+=4,this.gridEnabled&&(b.width=this.snap(b.width),b.height=this.snap(b.height)));return b};Graph.prototype.turnShapes=function(a){var b=this.getModel(),c=[];b.beginUpdate(); -try{for(var d=0;d<a.length;d++){var e=a[d];if(b.isEdge(e)){var f=b.getTerminal(e,!0),g=b.getTerminal(e,!1);b.setTerminal(e,g,!0);b.setTerminal(e,f,!1);var h=b.getGeometry(e);if(null!=h){h=h.clone();null!=h.points&&h.points.reverse();var k=h.getTerminalPoint(!0),l=h.getTerminalPoint(!1);h.setTerminalPoint(k,!1);h.setTerminalPoint(l,!0);b.setGeometry(e,h);var m=this.view.getState(e),v=this.view.getState(f),n=this.view.getState(g);if(null!=m){var p=null!=v?this.getConnectionConstraint(m,v,!0):null,q= -null!=n?this.getConnectionConstraint(m,n,!1):null;this.setConnectionConstraint(e,f,!0,q);this.setConnectionConstraint(e,g,!1,p)}c.push(e)}}else if(b.isVertex(e)&&(h=this.getCellGeometry(e),null!=h)){h=h.clone();h.x+=h.width/2-h.height/2;h.y+=h.height/2-h.width/2;var r=h.width;h.width=h.height;h.height=r;b.setGeometry(e,h);var t=this.view.getState(e);if(null!=t){var u=t.style[mxConstants.STYLE_DIRECTION]||"east";"east"==u?u="south":"south"==u?u="west":"west"==u?u="north":"north"==u&&(u="east");this.setCellStyles(mxConstants.STYLE_DIRECTION, +if(d){this.isGridEnabled()&&(b=this.snap(b),c=this.snap(c));var g=this.getBoundingBoxFromGeometry(a,!0);null!=g&&this.moveCells(a,b-g.x,c-g.y)}}finally{this.model.endUpdate()}}return a};Graph.prototype.getAllConnectionConstraints=function(a,b){if(null!=a){var c=mxUtils.getValue(a.style,"points",null);if(null!=c){var d=[];try{for(var e=JSON.parse(c),c=0;c<e.length;c++){var f=e[c];d.push(new mxConnectionConstraint(new mxPoint(f[0],f[1]),2<f.length?"0"!=f[2]:!0,null,3<f.length?f[3]:0,4<f.length?f[4]: +0))}}catch(J){}return d}if(null!=a.shape){f=a.shape.direction;e=a.shape.bounds;c=a.shape.scale;d=e.width/c;e=e.height/c;if(f==mxConstants.DIRECTION_NORTH||f==mxConstants.DIRECTION_SOUTH)f=d,d=e,e=f;c=a.shape.getConstraints(a.style,d,e);if(null!=c)return c;if(null!=a.shape.stencil&&null!=a.shape.stencil.constraints)return a.shape.stencil.constraints;if(null!=a.shape.constraints)return a.shape.constraints}}return null};Graph.prototype.flipEdge=function(a){if(null!=a){var b=this.view.getState(a),b=null!= +b?b.style:this.getCellStyle(a);null!=b&&(b=mxUtils.getValue(b,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL,this.setCellStyles(mxConstants.STYLE_ELBOW,b,[a]))}};Graph.prototype.isValidRoot=function(a){for(var b=this.model.getChildCount(a),c=0,d=0;d<b;d++){var e=this.model.getChildAt(a,d);this.model.isVertex(e)&&(e=this.getCellGeometry(e),null==e||e.relative||c++)}return 0<c||this.isContainer(a)};Graph.prototype.isValidDropTarget= +function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return"1"!=mxUtils.getValue(b,"part","0")&&(this.isContainer(a)||mxGraph.prototype.isValidDropTarget.apply(this,arguments)&&"0"!=mxUtils.getValue(b,"dropTarget","1"))};Graph.prototype.createGroupCell=function(){var a=mxGraph.prototype.createGroupCell.apply(this,arguments);a.setStyle("group");return a};Graph.prototype.isExtendParentsOnAdd=function(a){var b=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(b&& +null!=a&&null!=this.layoutManager){var c=this.model.getParent(a);null!=c&&(c=this.layoutManager.getLayout(c),null!=c&&c.constructor==mxStackLayout&&(b=!1))}return b};Graph.prototype.getPreferredSizeForCell=function(a){var b=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=b&&(b.width+=10,b.height+=4,this.gridEnabled&&(b.width=this.snap(b.width),b.height=this.snap(b.height)));return b};Graph.prototype.turnShapes=function(a){var b=this.getModel(),c=[];b.beginUpdate();try{for(var d= +0;d<a.length;d++){var e=a[d];if(b.isEdge(e)){var f=b.getTerminal(e,!0),g=b.getTerminal(e,!1);b.setTerminal(e,g,!0);b.setTerminal(e,f,!1);var h=b.getGeometry(e);if(null!=h){h=h.clone();null!=h.points&&h.points.reverse();var k=h.getTerminalPoint(!0),l=h.getTerminalPoint(!1);h.setTerminalPoint(k,!1);h.setTerminalPoint(l,!0);b.setGeometry(e,h);var m=this.view.getState(e),v=this.view.getState(f),n=this.view.getState(g);if(null!=m){var p=null!=v?this.getConnectionConstraint(m,v,!0):null,q=null!=n?this.getConnectionConstraint(m, +n,!1):null;this.setConnectionConstraint(e,f,!0,q);this.setConnectionConstraint(e,g,!1,p)}c.push(e)}}else if(b.isVertex(e)&&(h=this.getCellGeometry(e),null!=h)){h=h.clone();h.x+=h.width/2-h.height/2;h.y+=h.height/2-h.width/2;var r=h.width;h.width=h.height;h.height=r;b.setGeometry(e,h);var t=this.view.getState(e);if(null!=t){var u=t.style[mxConstants.STYLE_DIRECTION]||"east";"east"==u?u="south":"south"==u?u="west":"west"==u?u="north":"north"==u&&(u="east");this.setCellStyles(mxConstants.STYLE_DIRECTION, u,[e])}c.push(e)}}}finally{b.endUpdate()}return c};Graph.prototype.stencilHasPlaceholders=function(a){if(null!=a&&null!=a.fgNode)for(a=a.fgNode.firstChild;null!=a;){if("text"==a.nodeName&&"1"==a.getAttribute("placeholders"))return!0;a=a.nextSibling}return!1};Graph.prototype.processChange=function(a){mxGraph.prototype.processChange.apply(this,arguments);if(a instanceof mxValueChange&&null!=a.cell&&null!=a.cell.value&&"object"==typeof a.cell.value){var b=this.model.getDescendants(a.cell);if(0<b.length)for(var c= 0;c<b.length;c++){var d=this.view.getState(b[c]);null!=d&&null!=d.shape&&null!=d.shape.stencil&&this.stencilHasPlaceholders(d.shape.stencil)?this.removeStateForCell(b[c]):this.isReplacePlaceholders(b[c])&&this.view.invalidate(b[c],!1,!1)}}};Graph.prototype.replaceElement=function(a,b){for(var c=a.ownerDocument.createElement(null!=b?b:"span"),d=Array.prototype.slice.call(a.attributes);attr=d.pop();)c.setAttribute(attr.nodeName,attr.nodeValue);c.innerHTML=a.innerHTML;a.parentNode.replaceChild(c,a)}; Graph.prototype.updateLabelElements=function(a,b,c){a=null!=a?a:this.getSelectionCells();for(var d=document.createElement("div"),e=0;e<a.length;e++)if(this.isHtmlLabel(a[e])){var f=this.convertValueToString(a[e]);if(null!=f&&0<f.length){d.innerHTML=f;for(var g=d.getElementsByTagName(null!=c?c:"*"),h=0;h<g.length;h++)b(g[h]);d.innerHTML!=f&&this.cellLabelChanged(a[e],d.innerHTML)}}};Graph.prototype.cellLabelChanged=function(a,b,c){b=this.zapGremlins(b);this.model.beginUpdate();try{if(null!=a.value&& @@ -1701,55 +1703,55 @@ b.getSource();null!=c&&"a"!=c.nodeName.toLowerCase();)c=c.parentNode;null!=c?thi e&&Math.abs(this.scrollLeft-g.container.scrollLeft)<f&&Math.abs(this.scrollTop-g.container.scrollTop)<f&&(null==d.sourceState||!d.isSource(d.sourceState.control))&&((mxEvent.isLeftMouseButton(h)||mxEvent.isMiddleMouseButton(h))&&!mxEvent.isPopupTrigger(h)||mxEvent.isTouchEvent(h))&&(null!=this.currentLink?(e=g.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&e||null==b||b(h,this.currentLink),mxEvent.isConsumed(h)||(h=mxEvent.isMiddleMouseButton(h)?"_blank":e?g.linkTarget:"_top", g.openLink(this.currentLink,h),d.consume())):null!=c&&!d.isConsumed()&&Math.abs(this.scrollLeft-g.container.scrollLeft)<f&&Math.abs(this.scrollTop-g.container.scrollTop)<f&&Math.abs(this.startX-d.getGraphX())<f&&Math.abs(this.startY-d.getGraphY())<f&&c(d.getEvent()));this.clear()},activate:function(a){this.currentLink=g.getAbsoluteUrl(g.getLinkForCell(a.cell));null!=this.currentLink&&(g.container.style.cursor="pointer",null!=this.highlight&&this.highlight.highlight(a))},clear:function(){null!=g.container&& (g.container.style.cursor=e);this.currentLink=this.currentState=null;null!=this.highlight&&this.highlight.hide();null!=g.tooltipHandler&&g.tooltipHandler.hide()}};g.click=function(a){};g.addMouseListener(h);mxEvent.addListener(document,"mouseleave",function(a){h.clear()})};Graph.prototype.duplicateCells=function(a,b){a=null!=a?a:this.getSelectionCells();b=null!=b?b:!0;a=this.model.getTopmostCells(a);var c=this.getModel(),d=this.gridSize,e=[];c.beginUpdate();try{for(var f=this.cloneCells(a,!1,null, -!0),g=0;g<a.length;g++){var h=c.getParent(a[g]),k=this.moveCells([f[g]],d,d,!1)[0];e.push(k);if(b)c.add(h,f[g]);else{var l=h.getIndex(a[g]);c.add(h,f[g],l+1)}}}finally{c.endUpdate()}return e};Graph.prototype.insertImage=function(a,b,c){if(null!=a){for(var d=this.cellEditor.textarea.getElementsByTagName("img"),e=[],f=0;f<d.length;f++)e.push(d[f]);document.execCommand("insertimage",!1,a);a=this.cellEditor.textarea.getElementsByTagName("img");if(a.length==e.length+1)for(f=a.length-1;0<=f;f--)if(0==f|| -a[f]!=e[f-1]){a[f].setAttribute("width",b);a[f].setAttribute("height",c);break}}};Graph.prototype.insertLink=function(a){if(0==a.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var b=this.cellEditor.textarea.getElementsByTagName("a"),c=[],d=0;d<b.length;d++)c.push(b[d]);document.execCommand("createlink",!1,mxUtils.trim(a));b=this.cellEditor.textarea.getElementsByTagName("a");if(b.length==c.length+1)for(d=b.length-1;0<=d;d--)if(b[d]!=c[d-1]){for(b=b[d].getElementsByTagName("a");0< -b.length;){for(c=b[0].parentNode;null!=b[0].firstChild;)c.insertBefore(b[0].firstChild,b[0]);c.removeChild(b[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(a))};Graph.prototype.isCellResizable=function(a){var b=mxGraph.prototype.isCellResizable.apply(this,arguments),c=this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);return b||"0"!=mxUtils.getValue(c,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==c[mxConstants.STYLE_WHITE_SPACE]};Graph.prototype.distributeCells=function(a, -b){null==b&&(b=this.getSelectionCells());if(null!=b&&1<b.length){for(var c=[],d=null,e=null,f=0;f<b.length;f++)if(this.getModel().isVertex(b[f])){var g=this.view.getState(b[f]);if(null!=g){var h=a?g.getCenterX():g.getCenterY(),d=null!=d?Math.max(d,h):h,e=null!=e?Math.min(e,h):h;c.push(g)}}if(2<c.length){c.sort(function(b,c){return a?b.x-c.x:b.y-c.y});g=this.view.translate;h=this.view.scale;e=e/h-(a?g.x:g.y);d=d/h-(a?g.x:g.y);this.getModel().beginUpdate();try{for(var k=(d-e)/(c.length-1),d=e,f=1;f< -c.length-1;f++){var l=this.view.getState(this.model.getParent(c[f].cell)),m=this.getCellGeometry(c[f].cell),d=d+k;null!=m&&null!=l&&(m=m.clone(),a?m.x=Math.round(d-m.width/2)-l.origin.x:m.y=Math.round(d-m.height/2)-l.origin.y,this.getModel().setGeometry(c[f].cell,m))}}finally{this.getModel().endUpdate()}}}return b};Graph.prototype.isCloneEvent=function(a){return mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxEvent.isControlDown(a)};Graph.prototype.encodeCells=function(a){for(var b=this.cloneCells(a),c= -new mxDictionary,d=0;d<a.length;d++)c.put(a[d],!0);for(d=0;d<b.length;d++){var e=this.view.getState(a[d]);if(null!=e){var f=this.getCellGeometry(b[d]);null==f||!f.relative||this.model.isEdge(a[d])||c.get(this.model.getParent(a[d]))||(f.relative=!1,f.x=e.x/e.view.scale-e.view.translate.x,f.y=e.y/e.view.scale-e.view.translate.y)}}c=new mxCodec;e=new mxGraphModel;f=e.getChildAt(e.getRoot(),0);for(d=0;d<a.length;d++)e.add(f,b[d]);return c.encode(e)};Graph.prototype.createSvgImageExport=function(){var a= -new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,b){return this.getLinkForCell(a.cell)});return a};Graph.prototype.getSvg=function(a,b,c,d,e,f,g,h,k,l){var m=this.useCssTransforms;m&&(this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange());try{b=null!=b?b:1;c=null!=c?c:0;e=null!=e?e:!0;f=null!=f?f:!0;g=null!=g?g:!0;var n=f||d?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells());if(null==n)throw Error(mxResources.get("drawingEmpty"));var p=this.view.scale, -v=mxUtils.createXmlDocument(),q=null!=v.createElementNS?v.createElementNS(mxConstants.NS_SVG,"svg"):v.createElement("svg");null!=a&&(null!=q.style?q.style.backgroundColor=a:q.setAttribute("style","background-color:"+a));null==v.createElementNS?(q.setAttribute("xmlns",mxConstants.NS_SVG),q.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):q.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=b/p;var r=Math.max(1,Math.ceil(n.width*a)+2*c)+(l?5:0),t=Math.max(1,Math.ceil(n.height* -a)+2*c)+(l?5:0);q.setAttribute("version","1.1");q.setAttribute("width",r+"px");q.setAttribute("height",t+"px");q.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+r+" "+t);v.appendChild(q);var u=this.createSvgCanvas(q);u.foOffset=e?-.5:0;u.textOffset=e?-.5:0;u.imageOffset=e?-.5:0;u.translate(Math.floor((c/b-n.x)/p),Math.floor((c/b-n.y)/p));var J=document.createElement("textarea"),P=u.createAlternateContent;u.createAlternateContent=function(a,b,c,d,e,f,g,h,k,l,m,n,p){var v=this.state;if(null!=this.foAltText&& -(0==d||0!=v.fontSize&&f.length<5*d/v.fontSize)){var q=this.createElement("text");q.setAttribute("x",Math.round(d/2));q.setAttribute("y",Math.round((e+v.fontSize)/2));q.setAttribute("fill",v.fontColor||"black");q.setAttribute("text-anchor","middle");q.setAttribute("font-size",Math.round(v.fontSize)+"px");q.setAttribute("font-family",v.fontFamily);(v.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&q.setAttribute("font-weight","bold");(v.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&& -q.setAttribute("font-style","italic");(v.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&q.setAttribute("text-decoration","underline");try{return J.innerHTML=f,q.textContent=J.value,q}catch(ha){return P.apply(this,arguments)}}else return P.apply(this,arguments)};var w=this.backgroundImage;if(null!=w){b=p/b;var x=this.view.translate,y=new mxRectangle(x.x*b,x.y*b,w.width*b,w.height*b);mxUtils.intersects(n,y)&&u.image(x.x,x.y,w.width,w.height,w.src,!0)}u.scale(a);u.textEnabled=g;h= -null!=h?h:this.createSvgImageExport();var G=h.drawCellState;h.drawCellState=function(a,b){for(var c=a.view.graph,d=c.isCellSelected(a.cell),e=c.model.getParent(a.cell);!f&&!d&&null!=e;)d=c.isCellSelected(e),e=c.model.getParent(e);(f||d)&&G.apply(this,arguments)};h.drawState(this.getView().getState(this.model.root),u);this.updateSvgLinks(q,k,!0);return q}finally{m&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.updateSvgLinks=function(a,b,c){a=a.getElementsByTagName("a"); -for(var d=0;d<a.length;d++){var e=a[d].getAttribute("href");null==e&&(e=a[d].getAttribute("xlink:href"));null!=e&&(null!=b&&/^https?:\/\//.test(e)?a[d].setAttribute("target",b):c&&this.isCustomLink(e)&&a[d].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(a){return new mxSvgCanvas2D(a)};Graph.prototype.getSelectedElement=function(){var a=null;if(window.getSelection){var b=window.getSelection();b.getRangeAt&&b.rangeCount&&(a=b.getRangeAt(0).commonAncestorContainer)}else document.selection&& -(a=document.selection.createRange().parentElement());return a};Graph.prototype.getParentByName=function(a,b,c){for(;null!=a&&a.nodeName!=b;){if(a==c)return null;a=a.parentNode}return a};Graph.prototype.selectNode=function(a){var b=null;if(window.getSelection){if(b=window.getSelection(),b.getRangeAt&&b.rangeCount){var c=document.createRange();c.selectNode(a);b.removeAllRanges();b.addRange(c)}}else(b=document.selection)&&"Control"!=b.type&&(a=b.createRange(),a.collapse(!0),c=b.createRange(),c.setEndPoint("StartToStart", -a),c.select())};Graph.prototype.insertRow=function(a,b){for(var c=a.tBodies[0],d=c.rows[0].cells,e=0,f=0;f<d.length;f++)var g=d[f].getAttribute("colspan"),e=e+(null!=g?parseInt(g):1);c=c.insertRow(b);for(f=0;f<e;f++)mxUtils.br(c.insertCell(-1));return c.cells[0]};Graph.prototype.deleteRow=function(a,b){a.tBodies[0].deleteRow(b)};Graph.prototype.insertColumn=function(a,b){var c=a.tHead;if(null!=c)for(var d=0;d<c.rows.length;d++){var e=document.createElement("th");c.rows[d].appendChild(e);mxUtils.br(e)}c= -a.tBodies[0];for(d=0;d<c.rows.length;d++)e=c.rows[d].insertCell(b),mxUtils.br(e);return c.rows[0].cells[0<=b?b:c.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(a,b){if(0<=b)for(var c=a.tBodies[0].rows,d=0;d<c.length;d++)c[d].cells.length>b&&c[d].deleteCell(b)};Graph.prototype.pasteHtmlAtCaret=function(a){var b;if(window.getSelection){if(b=window.getSelection(),b.getRangeAt&&b.rangeCount){b=b.getRangeAt(0);b.deleteContents();var c=document.createElement("div");c.innerHTML=a;a=document.createDocumentFragment(); -for(var d;d=c.firstChild;)lastNode=a.appendChild(d);b.insertNode(a)}}else(b=document.selection)&&"Control"!=b.type&&b.createRange().pasteHTML(a)};Graph.prototype.createLinkForHint=function(a,b){function c(a,b){a.length>b&&(a=a.substring(0,Math.round(b/2))+"..."+a.substring(a.length-Math.round(b/4)));return a}a=null!=a?a:"javascript:void(0);";if(null==b||0==b.length)b=this.isCustomLink(a)?this.getLinkTitle(a):a;var d=document.createElement("a");d.setAttribute("rel",this.linkRelation);d.setAttribute("href", -this.getAbsoluteUrl(a));d.setAttribute("title",c(this.isCustomLink(a)?this.getLinkTitle(a):a,80));null!=this.linkTarget&&d.setAttribute("target",this.linkTarget);mxUtils.write(d,c(b,40));this.isCustomLink(a)&&mxEvent.addListener(d,"click",mxUtils.bind(this,function(b){this.customLinkClicked(a);mxEvent.consume(b)}));return d};Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING, -function(a,b){this.popupMenuHandler.hideMenu()});var a=this.updateMouseEvent;this.updateMouseEvent=function(b){b=a.apply(this,arguments);if(mxEvent.isTouchEvent(b.getEvent())&&null==b.getState()){var c=this.getCellAt(b.graphX,b.graphY);null!=c&&this.isSwimlane(c)&&this.hitsSwimlaneContent(c,b.graphX,b.graphY)||(b.state=this.view.getState(c),null!=b.state&&null!=b.state.shape&&(this.container.style.cursor=b.state.shape.node.style.cursor))}null==b.getState()&&this.isEnabled()&&(this.container.style.cursor= -"default");return b};var b=!1,c=!1,d=!1,e=this.fireMouseEvent;this.fireMouseEvent=function(a,f,g){a==mxEvent.MOUSE_DOWN&&(f=this.updateMouseEvent(f),b=this.isCellSelected(f.getCell()),c=this.isSelectionEmpty(),d=this.popupMenuHandler.isMenuShowing());e.apply(this,arguments)};this.popupMenuHandler.mouseUp=mxUtils.bind(this,function(a,e){this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==e.getState()||!e.isSource(e.getState().control))&&(this.popupMenuHandler.popupTrigger|| -!d&&!mxEvent.isMouseEvent(e.getEvent())&&(c&&null==e.getCell()&&this.isSelectionEmpty()||b&&this.isCellSelected(e.getCell())));mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,arguments)})};mxCellEditor.prototype.isContentEditing=function(){var a=this.graph.view.getState(this.editingCell);return null!=a&&1==a.style.html};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var a=window.getSelection();if(a.getRangeAt&&a.rangeCount){for(var b=[],c=0,d=a.rangeCount;c< -d;++c)b.push(a.getRangeAt(c));return b}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(a){try{if(a)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var b=0,c=a.length;b<c;++b)sel.addRange(a[b])}else document.selection&&a.select&&a.select()}catch(G){}};var e=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=function(a){null!=a.text&& -(a.text.replaceLinefeeds="0"!=mxUtils.getValue(a.style,"nl2Br","1"));e.apply(this,arguments)};var f=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(a,b){this.isKeepFocusEvent(a)||!mxEvent.isAltDown(a.getEvent())?f.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(a){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=!1;var g=mxCellEditor.prototype.startEditing; -mxCellEditor.prototype.startEditing=function(a,b){g.apply(this,arguments);var c=this.graph.view.getState(a);this.textarea.className=null!=c&&1==c.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(a);var c=this.graph.getModel().getParent(a),d=this.graph.getCellGeometry(a);this.graph.getModel().isEdge(c)&&null!=d&&d.relative||this.graph.getModel().isEdge(a)?mxClient.IS_QUIRKS?this.textarea.style.border= -"gray dotted 1px":this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":"":mxClient.IS_QUIRKS&&(this.textarea.style.outline="none",this.textarea.style.border="")};var h=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(a){function b(a,c){c.originalNode=a;a=a.firstChild;for(var d=c.firstChild;null!=a&&null!=d;)b(a,d),a=a.nextSibling,d=d.nextSibling;return c}function c(a,b){if(null!=a)if(b.originalNode!= -a)d(a);else for(a=a.firstChild,b=b.firstChild;null!=a;){var e=a.nextSibling;null==b?d(a):(c(a,b),b=b.nextSibling);a=e}}function d(a){for(var b=a.firstChild;null!=b;){var c=b.nextSibling;d(b);b=c}1==a.nodeType&&("BR"===a.nodeName||null!=a.firstChild)||3==a.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(a)).length?(3==a.nodeType&&mxUtils.setTextContent(a,mxUtils.getTextContent(a).replace(/\n|\r/g,"")),1==a.nodeType&&(a.removeAttribute("style"),a.removeAttribute("class"),a.removeAttribute("width"), -a.removeAttribute("cellpadding"),a.removeAttribute("cellspacing"),a.removeAttribute("border"))):a.parentNode.removeChild(a)}h.apply(this,arguments);mxClient.IS_QUIRKS||7===document.documentMode||8===document.documentMode||mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(a){var d=b(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){c(this.textarea,d)}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var a=this.graph.view.getState(this.editingCell), -b=null!=a&&"0"!=mxUtils.getValue(a.style,"nl2Br","1"),c=this.saveSelection();if(this.codeViewMode){h=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<h.length&&"\n"==h.charAt(h.length-1)&&(h=h.substring(0,h.length-1));h=this.graph.sanitizeHtml(b?h.replace(/\n/g,"<br/>"):h,!0);this.textarea.className="mxCellEditor geContentEditable";var d=mxUtils.getValue(a.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),b=mxUtils.getValue(a.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY), -e=mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),f=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,g=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,a=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(d*mxConstants.LINE_HEIGHT)+ -"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(d)+"px";this.textarea.style.textDecoration=a?"underline":"";this.textarea.style.fontWeight=f?"bold":"normal";this.textarea.style.fontStyle=g?"italic":"";this.textarea.style.fontFamily=b;this.textarea.style.textAlign=e;this.textarea.style.padding="0px";this.textarea.innerHTML!=h&&(this.textarea.innerHTML=h,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length)); -this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerHTML="");var h=mxUtils.htmlEntities(this.textarea.innerHTML);mxClient.IS_QUIRKS||8==document.documentMode||(h=mxUtils.replaceTrailingNewlines(h,"<div><br></div>"));h=this.graph.sanitizeHtml(b?h.replace(/\n/g,"").replace(/<br\s*.?>/g,"<br>"):h,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var d=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight= -mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(d*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(d)+"px";this.textarea.style.textDecoration="";this.textarea.style.fontWeight="normal";this.textarea.style.fontStyle="";this.textarea.style.fontFamily=mxConstants.DEFAULT_FONTFAMILY;this.textarea.style.textAlign="left";this.textarea.style.padding="2px";this.textarea.innerHTML!=h&&(this.textarea.innerHTML=h);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&& -this.restoreSelection(this.switchSelectionState);this.switchSelectionState=c;this.resize()};var k=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(a,b){if(null!=this.textarea)if(a=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=a){var c=a.view.scale;this.bounds=mxRectangle.fromRectangle(a);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=160*c;this.bounds.height=60*c;var d=null!=a.text?a.text.margin:null;null==d&&(d=mxUtils.getAlignmentAsPoint(mxUtils.getValue(a.style, -mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(a.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=d.x*this.bounds.width;this.bounds.y+=d.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-4)/c)+"px";this.textarea.style.height=Math.round((this.bounds.height-4)/c)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/c)+(this.textarea.offsetHeight- -this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*c);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/c)+(this.textarea.offsetWidth-this.textarea.clientWidth)+"px",this.bounds.width=parseInt(this.textarea.style.width)*c);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxClient.IS_VML?this.textarea.style.zoom=c:mxUtils.setPrefixedStyle(this.textarea.style, -"transform","scale("+c+","+c+")")}else this.textarea.style.height="",this.textarea.style.overflow="",k.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(a,b){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetInitialValue.apply(this,arguments);var c=this.graph.getEditingValue(a.cell,b);"1"==mxUtils.getValue(a.style,"nl2Br","1")&&(c=c.replace(/\n/g,"<br/>"));return c=this.graph.sanitizeHtml(c,!0)}; -mxCellEditorGetCurrentValue=mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(a){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var b=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return b="1"==mxUtils.getValue(a.style,"nl2Br","1")?b.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):b.replace(/\r\n/g,"").replace(/\n/g,"")};var l=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(a){this.codeViewMode&& -this.toggleViewMode();l.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(v){}};var m=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(a,b){this.graph.getModel().beginUpdate();try{if(m.apply(this,arguments),this.graph.isCellDeletable(a.cell)&&0==this.graph.model.getChildCount(a.cell)){var c=mxUtils.getValue(a.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),d=mxUtils.getValue(a.style, -mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);""==b&&c==mxConstants.NONE&&d==mxConstants.NONE&&this.graph.removeCells([a.cell],!1)}}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=function(a){var b=null;if(this.graph.getModel().isEdge(a.cell)||this.graph.getModel().isEdge(this.graph.getModel().getParent(a.cell)))b=mxUtils.getValue(a.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null),b==mxConstants.NONE&&(b=null);return b};mxCellEditor.prototype.getMinimumSize= -function(a){var b=this.graph.getView().scale;return new mxRectangle(0,0,null==a.text?30:a.text.size*b+20,30)};var n=mxGraphHandler.prototype.moveCells;mxGraphHandler.prototype.moveCells=function(a,b,c,d,e,f){mxEvent.isAltDown(f)&&(e=null);n.apply(this,arguments)};mxGraphHandler.prototype.updateHint=function(b){if(null!=this.shape){null==this.hint&&(this.hint=a(),this.graph.container.appendChild(this.hint));var c=this.graph.view.translate,d=this.graph.view.scale;b=this.roundLength((this.bounds.x+this.currentDx)/ -d-c.x);c=this.roundLength((this.bounds.y+this.currentDy)/d-c.y);this.hint.innerHTML=b+", "+c;this.hint.style.left=this.shape.bounds.x+Math.round((this.shape.bounds.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=this.shape.bounds.y+this.shape.bounds.height+12+"px"}};mxGraphHandler.prototype.removeHint=function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint),this.hint=null)};mxVertexHandler.prototype.isRecursiveResize=function(a,b){return!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&& -!mxEvent.isControlDown(b.getEvent())&&!this.graph.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null)};mxVertexHandler.prototype.isCenteredEvent=function(a,b){return!(!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&&!this.graph.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null))&&mxEvent.isControlDown(b.getEvent())||mxEvent.isMetaDown(b.getEvent())}; -var p=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var a=new mxPoint(0,0),b=this.tolerance;this.graph.cellEditor.getEditingCell()==this.state.cell&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(b/=2,a.x=this.sizers[0].bounds.width+b,a.y=this.sizers[0].bounds.height+b):a=p.apply(this,arguments);return a};mxVertexHandler.prototype.updateHint=function(b){this.index!=mxEvent.LABEL_HANDLE&&(null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint)), -this.index==mxEvent.ROTATION_HANDLE?this.hint.innerHTML=this.currentAlpha+"°":(b=this.state.view.scale,this.hint.innerHTML=this.roundLength(this.bounds.width/b)+" x "+this.roundLength(this.bounds.height/b)),b=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||"0"),null==b&&(b=this.bounds),this.hint.style.left=b.x+Math.round((b.width-this.hint.clientWidth)/2)+"px",this.hint.style.top=b.y+b.height+12+"px",null!=this.linkHint&& -(this.linkHint.style.display="none"))};mxVertexHandler.prototype.removeHint=function(){mxGraphHandler.prototype.removeHint.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(b,c){null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));var d=this.graph.view.translate,e=this.graph.view.scale,f=this.roundLength(c.x/e-d.x),d=this.roundLength(c.y/e-d.y);this.hint.innerHTML=f+", "+d;this.hint.style.visibility= -"visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(f=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*f.x)+"%, "+Math.round(100*f.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility="hidden");this.hint.style.left=Math.round(b.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(b.getGraphY(),c.y)+this.state.view.graph.gridSize+"px";null!=this.linkHint&& -(this.linkHint.style.display="none")};mxEdgeHandler.prototype.removeHint=mxVertexHandler.prototype.removeHint;HoverIcons.prototype.mainHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/>'):new mxImage(IMAGE_PATH+"/handle-main.png",17,17);HoverIcons.prototype.secondaryHandle=mxClient.IS_SVG?Graph.createSvgImage(16,16,'<path d="m 8 3 L 13 8 L 8 13 L 3 8 z" stroke="#fff" fill="#fca000"/>'):new mxImage(IMAGE_PATH+ -"/handle-secondary.png",17,17);HoverIcons.prototype.fixedHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/><path d="m 7 7 L 11 11 M 7 11 L 11 7" stroke="#fff"/>'):new mxImage(IMAGE_PATH+"/handle-fixed.png",17,17);HoverIcons.prototype.terminalHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/><circle cx="9" cy="9" r="2" stroke="#fff" fill="transparent"/>'): -new mxImage(IMAGE_PATH+"/handle-terminal.png",17,17);HoverIcons.prototype.rotationHandle=new mxImage(mxClient.IS_SVG?"data:image/png;base64,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": +!0),g=0;g<a.length;g++){var h=c.getParent(a[g]),k=this.moveCells([f[g]],d,d,!1)[0];e.push(k);if(b)c.add(h,f[g]);else{var l=h.getIndex(a[g]);c.add(h,f[g],l+1)}}}finally{c.endUpdate()}return e};Graph.prototype.insertImage=function(a,b,c){if(null!=a&&null!=this.cellEditor.textarea){for(var d=this.cellEditor.textarea.getElementsByTagName("img"),e=[],f=0;f<d.length;f++)e.push(d[f]);document.execCommand("insertimage",!1,a);a=this.cellEditor.textarea.getElementsByTagName("img");if(a.length==e.length+1)for(f= +a.length-1;0<=f;f--)if(0==f||a[f]!=e[f-1]){a[f].setAttribute("width",b);a[f].setAttribute("height",c);break}}};Graph.prototype.insertLink=function(a){if(null!=this.cellEditor.textarea)if(0==a.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var b=this.cellEditor.textarea.getElementsByTagName("a"),c=[],d=0;d<b.length;d++)c.push(b[d]);document.execCommand("createlink",!1,mxUtils.trim(a));b=this.cellEditor.textarea.getElementsByTagName("a");if(b.length==c.length+1)for(d=b.length- +1;0<=d;d--)if(b[d]!=c[d-1]){for(b=b[d].getElementsByTagName("a");0<b.length;){for(c=b[0].parentNode;null!=b[0].firstChild;)c.insertBefore(b[0].firstChild,b[0]);c.removeChild(b[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(a))};Graph.prototype.isCellResizable=function(a){var b=mxGraph.prototype.isCellResizable.apply(this,arguments),c=this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);return b||"0"!=mxUtils.getValue(c,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==c[mxConstants.STYLE_WHITE_SPACE]}; +Graph.prototype.distributeCells=function(a,b){null==b&&(b=this.getSelectionCells());if(null!=b&&1<b.length){for(var c=[],d=null,e=null,f=0;f<b.length;f++)if(this.getModel().isVertex(b[f])){var g=this.view.getState(b[f]);if(null!=g){var h=a?g.getCenterX():g.getCenterY(),d=null!=d?Math.max(d,h):h,e=null!=e?Math.min(e,h):h;c.push(g)}}if(2<c.length){c.sort(function(b,c){return a?b.x-c.x:b.y-c.y});g=this.view.translate;h=this.view.scale;e=e/h-(a?g.x:g.y);d=d/h-(a?g.x:g.y);this.getModel().beginUpdate(); +try{for(var k=(d-e)/(c.length-1),d=e,f=1;f<c.length-1;f++){var l=this.view.getState(this.model.getParent(c[f].cell)),m=this.getCellGeometry(c[f].cell),d=d+k;null!=m&&null!=l&&(m=m.clone(),a?m.x=Math.round(d-m.width/2)-l.origin.x:m.y=Math.round(d-m.height/2)-l.origin.y,this.getModel().setGeometry(c[f].cell,m))}}finally{this.getModel().endUpdate()}}}return b};Graph.prototype.isCloneEvent=function(a){return mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxEvent.isControlDown(a)};Graph.prototype.encodeCells= +function(a){for(var b=this.cloneCells(a),c=new mxDictionary,d=0;d<a.length;d++)c.put(a[d],!0);for(d=0;d<b.length;d++){var e=this.view.getState(a[d]);if(null!=e){var f=this.getCellGeometry(b[d]);null==f||!f.relative||this.model.isEdge(a[d])||c.get(this.model.getParent(a[d]))||(f.relative=!1,f.x=e.x/e.view.scale-e.view.translate.x,f.y=e.y/e.view.scale-e.view.translate.y)}}c=new mxCodec;e=new mxGraphModel;f=e.getChildAt(e.getRoot(),0);for(d=0;d<a.length;d++)e.add(f,b[d]);return c.encode(e)};Graph.prototype.createSvgImageExport= +function(){var a=new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,b){return this.getLinkForCell(a.cell)});return a};Graph.prototype.getSvg=function(a,b,c,d,e,f,g,h,k,l){var m=this.useCssTransforms;m&&(this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange());try{b=null!=b?b:1;c=null!=c?c:0;e=null!=e?e:!0;f=null!=f?f:!0;g=null!=g?g:!0;var n=f||d?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells());if(null==n)throw Error(mxResources.get("drawingEmpty")); +var p=this.view.scale,v=mxUtils.createXmlDocument(),q=null!=v.createElementNS?v.createElementNS(mxConstants.NS_SVG,"svg"):v.createElement("svg");null!=a&&(null!=q.style?q.style.backgroundColor=a:q.setAttribute("style","background-color:"+a));null==v.createElementNS?(q.setAttribute("xmlns",mxConstants.NS_SVG),q.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):q.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=b/p;var r=Math.max(1,Math.ceil(n.width*a)+2*c)+(l?5: +0),t=Math.max(1,Math.ceil(n.height*a)+2*c)+(l?5:0);q.setAttribute("version","1.1");q.setAttribute("width",r+"px");q.setAttribute("height",t+"px");q.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+r+" "+t);v.appendChild(q);var u=null!=v.createElementNS?v.createElementNS(mxConstants.NS_SVG,"g"):v.createElement("g");q.appendChild(u);var G=this.createSvgCanvas(u);G.foOffset=e?-.5:0;G.textOffset=e?-.5:0;G.imageOffset=e?-.5:0;G.translate(Math.floor((c/b-n.x)/p),Math.floor((c/b-n.y)/p));var Q=document.createElement("textarea"), +x=G.createAlternateContent;G.createAlternateContent=function(a,b,c,d,e,f,g,h,k,l,m,n,v){var p=this.state;if(null!=this.foAltText&&(0==d||0!=p.fontSize&&f.length<5*d/p.fontSize)){var q=this.createElement("text");q.setAttribute("x",Math.round(d/2));q.setAttribute("y",Math.round((e+p.fontSize)/2));q.setAttribute("fill",p.fontColor||"black");q.setAttribute("text-anchor","middle");q.setAttribute("font-size",Math.round(p.fontSize)+"px");q.setAttribute("font-family",p.fontFamily);(p.fontStyle&mxConstants.FONT_BOLD)== +mxConstants.FONT_BOLD&&q.setAttribute("font-weight","bold");(p.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&q.setAttribute("font-style","italic");(p.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&q.setAttribute("text-decoration","underline");try{return Q.innerHTML=f,q.textContent=Q.value,q}catch(ia){return x.apply(this,arguments)}}else return x.apply(this,arguments)};var w=this.backgroundImage;if(null!=w){b=p/b;var y=this.view.translate,H=new mxRectangle(y.x*b, +y.y*b,w.width*b,w.height*b);mxUtils.intersects(n,H)&&G.image(y.x,y.y,w.width,w.height,w.src,!0)}G.scale(a);G.textEnabled=g;h=null!=h?h:this.createSvgImageExport();var z=h.drawCellState;h.drawCellState=function(a,b){for(var c=a.view.graph,d=c.isCellSelected(a.cell),e=c.model.getParent(a.cell);!f&&!d&&null!=e;)d=c.isCellSelected(e),e=c.model.getParent(e);(f||d)&&z.apply(this,arguments)};h.drawState(this.getView().getState(this.model.root),G);this.updateSvgLinks(q,k,!0);return q}finally{m&&(this.useCssTransforms= +!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.updateSvgLinks=function(a,b,c){a=a.getElementsByTagName("a");for(var d=0;d<a.length;d++){var e=a[d].getAttribute("href");null==e&&(e=a[d].getAttribute("xlink:href"));null!=e&&(null!=b&&/^https?:\/\//.test(e)?a[d].setAttribute("target",b):c&&this.isCustomLink(e)&&a[d].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(a){return new mxSvgCanvas2D(a)};Graph.prototype.getSelectedElement=function(){var a= +null;if(window.getSelection){var b=window.getSelection();b.getRangeAt&&b.rangeCount&&(a=b.getRangeAt(0).commonAncestorContainer)}else document.selection&&(a=document.selection.createRange().parentElement());return a};Graph.prototype.getParentByName=function(a,b,c){for(;null!=a&&a.nodeName!=b;){if(a==c)return null;a=a.parentNode}return a};Graph.prototype.selectNode=function(a){var b=null;if(window.getSelection){if(b=window.getSelection(),b.getRangeAt&&b.rangeCount){var c=document.createRange();c.selectNode(a); +b.removeAllRanges();b.addRange(c)}}else(b=document.selection)&&"Control"!=b.type&&(a=b.createRange(),a.collapse(!0),c=b.createRange(),c.setEndPoint("StartToStart",a),c.select())};Graph.prototype.insertRow=function(a,b){for(var c=a.tBodies[0],d=c.rows[0].cells,e=0,f=0;f<d.length;f++)var g=d[f].getAttribute("colspan"),e=e+(null!=g?parseInt(g):1);c=c.insertRow(b);for(f=0;f<e;f++)mxUtils.br(c.insertCell(-1));return c.cells[0]};Graph.prototype.deleteRow=function(a,b){a.tBodies[0].deleteRow(b)};Graph.prototype.insertColumn= +function(a,b){var c=a.tHead;if(null!=c)for(var d=0;d<c.rows.length;d++){var e=document.createElement("th");c.rows[d].appendChild(e);mxUtils.br(e)}c=a.tBodies[0];for(d=0;d<c.rows.length;d++)e=c.rows[d].insertCell(b),mxUtils.br(e);return c.rows[0].cells[0<=b?b:c.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(a,b){if(0<=b)for(var c=a.tBodies[0].rows,d=0;d<c.length;d++)c[d].cells.length>b&&c[d].deleteCell(b)};Graph.prototype.pasteHtmlAtCaret=function(a){var b;if(window.getSelection){if(b= +window.getSelection(),b.getRangeAt&&b.rangeCount){b=b.getRangeAt(0);b.deleteContents();var c=document.createElement("div");c.innerHTML=a;a=document.createDocumentFragment();for(var d;d=c.firstChild;)lastNode=a.appendChild(d);b.insertNode(a)}}else(b=document.selection)&&"Control"!=b.type&&b.createRange().pasteHTML(a)};Graph.prototype.createLinkForHint=function(a,b){function c(a,b){a.length>b&&(a=a.substring(0,Math.round(b/2))+"..."+a.substring(a.length-Math.round(b/4)));return a}a=null!=a?a:"javascript:void(0);"; +if(null==b||0==b.length)b=this.isCustomLink(a)?this.getLinkTitle(a):a;var d=document.createElement("a");d.setAttribute("rel",this.linkRelation);d.setAttribute("href",this.getAbsoluteUrl(a));d.setAttribute("title",c(this.isCustomLink(a)?this.getLinkTitle(a):a,80));null!=this.linkTarget&&d.setAttribute("target",this.linkTarget);mxUtils.write(d,c(b,40));this.isCustomLink(a)&&mxEvent.addListener(d,"click",mxUtils.bind(this,function(b){this.customLinkClicked(a);mxEvent.consume(b)}));return d};Graph.prototype.initTouch= +function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(a,b){this.popupMenuHandler.hideMenu()});var a=this.updateMouseEvent;this.updateMouseEvent=function(b){b=a.apply(this,arguments);if(mxEvent.isTouchEvent(b.getEvent())&&null==b.getState()){var c=this.getCellAt(b.graphX,b.graphY);null!=c&&this.isSwimlane(c)&&this.hitsSwimlaneContent(c,b.graphX,b.graphY)||(b.state=this.view.getState(c),null!=b.state&& +null!=b.state.shape&&(this.container.style.cursor=b.state.shape.node.style.cursor))}null==b.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return b};var b=!1,c=!1,d=!1,e=this.fireMouseEvent;this.fireMouseEvent=function(a,f,g){a==mxEvent.MOUSE_DOWN&&(f=this.updateMouseEvent(f),b=this.isCellSelected(f.getCell()),c=this.isSelectionEmpty(),d=this.popupMenuHandler.isMenuShowing());e.apply(this,arguments)};this.popupMenuHandler.mouseUp=mxUtils.bind(this,function(a,e){this.popupMenuHandler.popupTrigger= +!this.isEditing()&&this.isEnabled()&&(null==e.getState()||!e.isSource(e.getState().control))&&(this.popupMenuHandler.popupTrigger||!d&&!mxEvent.isMouseEvent(e.getEvent())&&(c&&null==e.getCell()&&this.isSelectionEmpty()||b&&this.isCellSelected(e.getCell())));mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,arguments)})};mxCellEditor.prototype.isContentEditing=function(){var a=this.graph.view.getState(this.editingCell);return null!=a&&1==a.style.html};mxCellEditor.prototype.saveSelection= +function(){if(window.getSelection){var a=window.getSelection();if(a.getRangeAt&&a.rangeCount){for(var b=[],c=0,d=a.rangeCount;c<d;++c)b.push(a.getRangeAt(c));return b}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(a){try{if(a)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var b=0,c=a.length;b<c;++b)sel.addRange(a[b])}else document.selection&&a.select&&a.select()}catch(H){}}; +var e=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=function(a){null!=a.text&&(a.text.replaceLinefeeds="0"!=mxUtils.getValue(a.style,"nl2Br","1"));e.apply(this,arguments)};var f=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(a,b){this.isKeepFocusEvent(a)||!mxEvent.isAltDown(a.getEvent())?f.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(a){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)}; +mxCellEditor.prototype.escapeCancelsEditing=!1;var g=mxCellEditor.prototype.startEditing;mxCellEditor.prototype.startEditing=function(a,b){g.apply(this,arguments);var c=this.graph.view.getState(a);this.textarea.className=null!=c&&1==c.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(a);var c=this.graph.getModel().getParent(a),d=this.graph.getCellGeometry(a);this.graph.getModel().isEdge(c)&& +null!=d&&d.relative||this.graph.getModel().isEdge(a)?mxClient.IS_QUIRKS?this.textarea.style.border="gray dotted 1px":this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":"":mxClient.IS_QUIRKS&&(this.textarea.style.outline="none",this.textarea.style.border="")};var h=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(a){function b(a,c){c.originalNode=a;a=a.firstChild;for(var d=c.firstChild;null!=a&&null!= +d;)b(a,d),a=a.nextSibling,d=d.nextSibling;return c}function c(a,b){if(null!=a)if(b.originalNode!=a)d(a);else for(a=a.firstChild,b=b.firstChild;null!=a;){var e=a.nextSibling;null==b?d(a):(c(a,b),b=b.nextSibling);a=e}}function d(a){for(var b=a.firstChild;null!=b;){var c=b.nextSibling;d(b);b=c}1==a.nodeType&&("BR"===a.nodeName||null!=a.firstChild)||3==a.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(a)).length?(3==a.nodeType&&mxUtils.setTextContent(a,mxUtils.getTextContent(a).replace(/\n|\r/g,"")), +1==a.nodeType&&(a.removeAttribute("style"),a.removeAttribute("class"),a.removeAttribute("width"),a.removeAttribute("cellpadding"),a.removeAttribute("cellspacing"),a.removeAttribute("border"))):a.parentNode.removeChild(a)}h.apply(this,arguments);mxClient.IS_QUIRKS||7===document.documentMode||8===document.documentMode||mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(a){var d=b(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){c(this.textarea, +d)}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var a=this.graph.view.getState(this.editingCell);if(null!=a){var b=null!=a&&"0"!=mxUtils.getValue(a.style,"nl2Br","1"),c=this.saveSelection();if(this.codeViewMode){h=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<h.length&&"\n"==h.charAt(h.length-1)&&(h=h.substring(0,h.length-1));h=this.graph.sanitizeHtml(b?h.replace(/\n/g,"<br/>"):h,!0);this.textarea.className="mxCellEditor geContentEditable";var d=mxUtils.getValue(a.style, +mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),b=mxUtils.getValue(a.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY),e=mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),f=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,g=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,a=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)== +mxConstants.FONT_UNDERLINE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(d*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(d)+"px";this.textarea.style.textDecoration=a?"underline":"";this.textarea.style.fontWeight=f?"bold":"normal";this.textarea.style.fontStyle=g?"italic":"";this.textarea.style.fontFamily=b;this.textarea.style.textAlign=e;this.textarea.style.padding="0px";this.textarea.innerHTML!=h&&(this.textarea.innerHTML= +h,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length));this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerHTML="");var h=mxUtils.htmlEntities(this.textarea.innerHTML);mxClient.IS_QUIRKS||8==document.documentMode||(h=mxUtils.replaceTrailingNewlines(h,"<div><br></div>"));h=this.graph.sanitizeHtml(b?h.replace(/\n/g,"").replace(/<br\s*.?>/g, +"<br>"):h,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var d=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(d*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(d)+"px";this.textarea.style.textDecoration="";this.textarea.style.fontWeight="normal";this.textarea.style.fontStyle="";this.textarea.style.fontFamily=mxConstants.DEFAULT_FONTFAMILY;this.textarea.style.textAlign="left";this.textarea.style.padding= +"2px";this.textarea.innerHTML!=h&&(this.textarea.innerHTML=h);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);this.switchSelectionState=c;this.resize()}};var k=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(a,b){if(null!=this.textarea)if(a=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=a){var c=a.view.scale;this.bounds=mxRectangle.fromRectangle(a);if(0==this.bounds.width&&0== +this.bounds.height){this.bounds.width=160*c;this.bounds.height=60*c;var d=null!=a.text?a.text.margin:null;null==d&&(d=mxUtils.getAlignmentAsPoint(mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(a.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=d.x*this.bounds.width;this.bounds.y+=d.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-4)/c)+"px";this.textarea.style.height=Math.round((this.bounds.height- +4)/c)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/c)+(this.textarea.offsetHeight-this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*c);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/c)+(this.textarea.offsetWidth-this.textarea.clientWidth)+"px",this.bounds.width=parseInt(this.textarea.style.width)* +c);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxClient.IS_VML?this.textarea.style.zoom=c:mxUtils.setPrefixedStyle(this.textarea.style,"transform","scale("+c+","+c+")")}else this.textarea.style.height="",this.textarea.style.overflow="",k.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(a,b){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetInitialValue.apply(this, +arguments);var c=this.graph.getEditingValue(a.cell,b);"1"==mxUtils.getValue(a.style,"nl2Br","1")&&(c=c.replace(/\n/g,"<br/>"));return c=this.graph.sanitizeHtml(c,!0)};mxCellEditorGetCurrentValue=mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(a){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var b=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return b="1"==mxUtils.getValue(a.style,"nl2Br","1")?b.replace(/\r\n/g, +"<br/>").replace(/\n/g,"<br/>"):b.replace(/\r\n/g,"").replace(/\n/g,"")};var l=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(a){this.codeViewMode&&this.toggleViewMode();l.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(v){}};var m=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(a,b){this.graph.getModel().beginUpdate();try{if(m.apply(this,arguments),this.graph.isCellDeletable(a.cell)&& +0==this.graph.model.getChildCount(a.cell)){var c=mxUtils.getValue(a.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),d=mxUtils.getValue(a.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);""==b&&c==mxConstants.NONE&&d==mxConstants.NONE&&this.graph.removeCells([a.cell],!1)}}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=function(a){var b=null;if(this.graph.getModel().isEdge(a.cell)||this.graph.getModel().isEdge(this.graph.getModel().getParent(a.cell)))b= +mxUtils.getValue(a.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null),b==mxConstants.NONE&&(b=null);return b};mxCellEditor.prototype.getMinimumSize=function(a){var b=this.graph.getView().scale;return new mxRectangle(0,0,null==a.text?30:a.text.size*b+20,30)};var n=mxGraphHandler.prototype.moveCells;mxGraphHandler.prototype.moveCells=function(a,b,c,d,e,f){mxEvent.isAltDown(f)&&(e=null);n.apply(this,arguments)};mxGraphHandler.prototype.updateHint=function(b){if(null!=this.shape){null==this.hint&&(this.hint= +a(),this.graph.container.appendChild(this.hint));var c=this.graph.view.translate,d=this.graph.view.scale;b=this.roundLength((this.bounds.x+this.currentDx)/d-c.x);c=this.roundLength((this.bounds.y+this.currentDy)/d-c.y);this.hint.innerHTML=b+", "+c;this.hint.style.left=this.shape.bounds.x+Math.round((this.shape.bounds.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=this.shape.bounds.y+this.shape.bounds.height+12+"px"}};mxGraphHandler.prototype.removeHint=function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint), +this.hint=null)};mxVertexHandler.prototype.isRecursiveResize=function(a,b){return!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&&!mxEvent.isControlDown(b.getEvent())&&!this.graph.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null)};mxVertexHandler.prototype.isCenteredEvent=function(a,b){return!(!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&&!this.graph.isCellCollapsed(a.cell)&& +"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null))&&mxEvent.isControlDown(b.getEvent())||mxEvent.isMetaDown(b.getEvent())};var p=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var a=new mxPoint(0,0),b=this.tolerance;this.graph.cellEditor.getEditingCell()==this.state.cell&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(b/=2,a.x=this.sizers[0].bounds.width+b,a.y=this.sizers[0].bounds.height+ +b):a=p.apply(this,arguments);return a};mxVertexHandler.prototype.updateHint=function(b){this.index!=mxEvent.LABEL_HANDLE&&(null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint)),this.index==mxEvent.ROTATION_HANDLE?this.hint.innerHTML=this.currentAlpha+"°":(b=this.state.view.scale,this.hint.innerHTML=this.roundLength(this.bounds.width/b)+" x "+this.roundLength(this.bounds.height/b)),b=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha: +this.state.style[mxConstants.STYLE_ROTATION]||"0"),null==b&&(b=this.bounds),this.hint.style.left=b.x+Math.round((b.width-this.hint.clientWidth)/2)+"px",this.hint.style.top=b.y+b.height+12+"px",null!=this.linkHint&&(this.linkHint.style.display="none"))};mxVertexHandler.prototype.removeHint=function(){mxGraphHandler.prototype.removeHint.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(b,c){null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint)); +var d=this.graph.view.translate,e=this.graph.view.scale,f=this.roundLength(c.x/e-d.x),d=this.roundLength(c.y/e-d.y);this.hint.innerHTML=f+", "+d;this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(f=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*f.x)+"%, "+Math.round(100*f.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility="hidden");this.hint.style.left= +Math.round(b.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(b.getGraphY(),c.y)+this.state.view.graph.gridSize+"px";null!=this.linkHint&&(this.linkHint.style.display="none")};mxEdgeHandler.prototype.removeHint=mxVertexHandler.prototype.removeHint;HoverIcons.prototype.mainHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/>'):new mxImage(IMAGE_PATH+"/handle-main.png",17,17);HoverIcons.prototype.secondaryHandle= +mxClient.IS_SVG?Graph.createSvgImage(16,16,'<path d="m 8 3 L 13 8 L 8 13 L 3 8 z" stroke="#fff" fill="#fca000"/>'):new mxImage(IMAGE_PATH+"/handle-secondary.png",17,17);HoverIcons.prototype.fixedHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/><path d="m 7 7 L 11 11 M 7 11 L 11 7" stroke="#fff"/>'):new mxImage(IMAGE_PATH+"/handle-fixed.png",17,17);HoverIcons.prototype.terminalHandle=mxClient.IS_SVG? +Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/><circle cx="9" cy="9" r="2" stroke="#fff" fill="transparent"/>'):new mxImage(IMAGE_PATH+"/handle-terminal.png",17,17);HoverIcons.prototype.rotationHandle=new mxImage(mxClient.IS_SVG?"data:image/png;base64,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": IMAGE_PATH+"/handle-rotate.png",19,21);mxClient.IS_SVG&&(mxConstraintHandler.prototype.pointImage=Graph.createSvgImage(5,5,'<path d="m 0 0 L 5 5 M 0 5 L 5 0" stroke="'+HoverIcons.prototype.arrowFill+'"/>'));mxVertexHandler.prototype.handleImage=HoverIcons.prototype.mainHandle;mxVertexHandler.prototype.secondaryHandleImage=HoverIcons.prototype.secondaryHandle;mxEdgeHandler.prototype.handleImage=HoverIcons.prototype.mainHandle;mxEdgeHandler.prototype.terminalHandleImage=HoverIcons.prototype.terminalHandle; mxEdgeHandler.prototype.fixedHandleImage=HoverIcons.prototype.fixedHandle;mxEdgeHandler.prototype.labelHandleImage=HoverIcons.prototype.secondaryHandle;mxOutline.prototype.sizerImage=HoverIcons.prototype.mainHandle;null!=window.Sidebar&&(Sidebar.prototype.triangleUp=HoverIcons.prototype.triangleUp,Sidebar.prototype.triangleRight=HoverIcons.prototype.triangleRight,Sidebar.prototype.triangleDown=HoverIcons.prototype.triangleDown,Sidebar.prototype.triangleLeft=HoverIcons.prototype.triangleLeft,Sidebar.prototype.refreshTarget= HoverIcons.prototype.refreshTarget,Sidebar.prototype.roundDrop=HoverIcons.prototype.roundDrop);mxClient.IS_SVG||((new Image).src=HoverIcons.prototype.mainHandle.src,(new Image).src=HoverIcons.prototype.fixedHandle.src,(new Image).src=HoverIcons.prototype.terminalHandle.src,(new Image).src=HoverIcons.prototype.secondaryHandle.src,(new Image).src=HoverIcons.prototype.rotationHandle.src,(new Image).src=HoverIcons.prototype.triangleUp.src,(new Image).src=HoverIcons.prototype.triangleRight.src,(new Image).src= @@ -1764,8 +1766,8 @@ new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(f, this.update(d,c),this.isSpaceEvent(b)?(d=this.x+this.width,c=this.y+this.height,e=this.graph.view.scale,mxEvent.isAltDown(b.getEvent())||(this.width=this.graph.snap(this.width/e)*e,this.height=this.graph.snap(this.height/e)*e,this.graph.isGridEnabled()||(this.width<this.graph.tolerance&&(this.width=0),this.height<this.graph.tolerance&&(this.height=0)),this.x<this.first.x&&(this.x=d-this.width),this.y<this.first.y&&(this.y=c-this.height)),this.div.style.borderStyle="dashed",this.div.style.backgroundColor= "white",this.div.style.left=this.x+"px",this.div.style.top=this.y+"px",this.div.style.width=Math.max(0,this.width)+"px",this.div.style.height=this.graph.container.clientHeight+"px",this.div.style.borderWidth=0>=this.width?"0px 1px 0px 0px":"0px 1px 0px 1px",null==this.secondDiv&&(this.secondDiv=this.div.cloneNode(!0),this.div.parentNode.appendChild(this.secondDiv)),this.secondDiv.style.left=this.x+"px",this.secondDiv.style.top=this.y+"px",this.secondDiv.style.width=this.graph.container.clientWidth+ "px",this.secondDiv.style.height=Math.max(0,this.height)+"px",this.secondDiv.style.borderWidth=0>=this.height?"1px 0px 0px 0px":"1px 0px 1px 0px"):(this.div.style.backgroundColor="",this.div.style.borderWidth="",this.div.style.borderStyle="",null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null)),b.consume()}};var q=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv), -this.secondDiv=null);q.apply(this,arguments)};var t=(new Date).getTime(),z=0,w=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(a,b,c,d){w.apply(this,arguments);c!=this.currentTerminalState?(t=(new Date).getTime(),z=0):z=(new Date).getTime()-t;this.currentTerminalState=c};var x=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(a){return null!=this.currentTerminalState&&a.getState()==this.currentTerminalState&& -2E3<z||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&x.apply(this,arguments)};mxVertexHandler.prototype.isCustomHandleEvent=function(a){return!mxEvent.isShiftDown(a.getEvent())};mxEdgeHandler.prototype.createHandleShape=function(a,b){var c=null!=a&&0==a,d=this.state.getVisibleTerminalState(c),e=null!=a&&(0==a||a>=this.state.absolutePoints.length-1||this.constructor==mxElbowEdgeHandler&&2==a)?this.graph.getConnectionConstraint(this.state, +this.secondDiv=null);q.apply(this,arguments)};var t=(new Date).getTime(),z=0,x=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(a,b,c,d){x.apply(this,arguments);c!=this.currentTerminalState?(t=(new Date).getTime(),z=0):z=(new Date).getTime()-t;this.currentTerminalState=c};var w=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(a){return null!=this.currentTerminalState&&a.getState()==this.currentTerminalState&& +2E3<z||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&w.apply(this,arguments)};mxVertexHandler.prototype.isCustomHandleEvent=function(a){return!mxEvent.isShiftDown(a.getEvent())};mxEdgeHandler.prototype.createHandleShape=function(a,b){var c=null!=a&&0==a,d=this.state.getVisibleTerminalState(c),e=null!=a&&(0==a||a>=this.state.absolutePoints.length-1||this.constructor==mxElbowEdgeHandler&&2==a)?this.graph.getConnectionConstraint(this.state, d,c):null,c=null!=(null!=e?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(c),e):null)?this.fixedHandleImage:null!=e&&null!=d?this.terminalHandleImage:this.handleImage;if(null!=c)return c=new mxImageShape(new mxRectangle(0,0,c.width,c.height),c.src),c.preserveImageAspect=!1,c;c=mxConstants.HANDLE_SIZE;this.preferHtml&&--c;return new mxRectangleShape(new mxRectangle(0,0,c,c),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var y=mxVertexHandler.prototype.createSizerShape; mxVertexHandler.prototype.createSizerShape=function(a,b,c){this.handleImage=b==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:b==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;return y.apply(this,arguments)};var u=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(a){if(null!=a&&1==a.length){var b=this.graph.getModel(),c=b.getParent(a[0]),d=this.graph.getCellGeometry(a[0]);if(b.isEdge(c)&&null!=d&&d.relative&&(b=this.graph.view.getState(a[0]), null!=b&&2>b.width&&2>b.height&&null!=b.text&&null!=b.text.boundingBox))return mxRectangle.fromRectangle(b.text.boundingBox)}return u.apply(this,arguments)};var D=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(a){var b=this.graph.getModel(),c=b.getParent(a.cell),d=this.graph.getCellGeometry(a.cell);return b.isEdge(c)&&null!=d&&d.relative&&2>a.width&&2>a.height&&null!=a.text&&null!=a.text.boundingBox?(b=a.text.unrotatedBoundingBox||a.text.boundingBox, @@ -1781,20 +1783,20 @@ null);mxEvent.consume(a)}))}if(null!=c)for(d=0;d<c.length;d++){var e=document.cr function(){return this.state.view.graph.connectionHandler.isEnabled()});var a=mxUtils.bind(this,function(){null!=this.linkHint&&(this.linkHint.style.display=1==this.graph.getSelectionCount()?"":"none");null!=this.labelShape&&(this.labelShape.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none")});this.selectionHandler=mxUtils.bind(this,function(b,c){a()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.selectionHandler); this.changeHandler=mxUtils.bind(this,function(b,c){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));a();this.redrawHandles()});this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var b=this.graph.getLinkForCell(this.state.cell),c=this.graph.getLinksForState(this.state);if(null!=b||null!=c&&0<c.length)this.updateLinkHint(b,c),this.redrawHandles()};var L=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){L.apply(this, arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var K=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){K.apply(this);if(null!=this.state&&null!=this.linkHint){var a=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),b=new mxRectangle(this.state.x,this.state.y-22,this.state.width+24,this.state.height+22),c=mxUtils.getBoundingBox(b,this.state.style[mxConstants.STYLE_ROTATION]|| -"0",a),a=null!=c?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,b=null!=this.state.text?this.state.text.boundingBox:null;null==c&&(c=this.state);c=c.y+c.height;null!=b&&(c=Math.max(c,b.y+b.height));this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(c+this.verticalOffset/2+6+this.state.view.graph.tolerance)+"px"}};var H=mxVertexHandler.prototype.reset;mxVertexHandler.prototype.reset= -function(){H.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none")};var V=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){V.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.selectionHandler&&(this.graph.getSelectionModel().removeListener(this.selectionHandler),this.selectionHandler= +"0",a),a=null!=c?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,b=null!=this.state.text?this.state.text.boundingBox:null;null==c&&(c=this.state);c=c.y+c.height;null!=b&&(c=Math.max(c,b.y+b.height));this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(c+this.verticalOffset/2+6+this.state.view.graph.tolerance)+"px"}};var I=mxVertexHandler.prototype.reset;mxVertexHandler.prototype.reset= +function(){I.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none")};var V=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){V.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.selectionHandler&&(this.graph.getSelectionModel().removeListener(this.selectionHandler),this.selectionHandler= null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null);null!=this.editingHandler&&(this.graph.removeListener(this.editingHandler),this.editingHandler=null)};var U=mxEdgeHandler.prototype.redrawHandles;mxEdgeHandler.prototype.redrawHandles=function(){if(null!=this.marker&&(U.apply(this),null!=this.state&&null!=this.linkHint)){var a=this.state;null!=this.state.text&&null!=this.state.text.bounds&&(a=new mxRectangle(a.x,a.y,a.width,a.height), a.add(this.state.text.bounds));this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(a.y+a.height+6+this.state.view.graph.tolerance)+"px"}};var ca=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){ca.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var W=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){W.apply(this,arguments);null!=this.linkHint&& (this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.selectionHandler&&(this.graph.getSelectionModel().removeListener(this.selectionHandler),this.selectionHandler=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null)}}();(function(){function a(){mxCylinder.call(this)}function b(){mxActor.call(this)}function c(){mxCylinder.call(this)}function d(){mxCylinder.call(this)}function e(){mxCylinder.call(this)}function f(){mxActor.call(this)}function g(){mxCylinder.call(this)}function h(){mxActor.call(this)}function k(){mxActor.call(this)}function l(){mxActor.call(this)}function m(){mxActor.call(this)}function n(){mxActor.call(this)}function p(){mxActor.call(this)}function r(){mxActor.call(this)}function q(a,b){this.canvas= a;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.defaultVariation=b;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,q.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,q.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,q.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,q.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo; -this.canvas.curveTo=mxUtils.bind(this,q.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,q.prototype.arcTo)}function t(){mxRectangleShape.call(this)}function z(){mxRectangleShape.call(this)}function w(){mxActor.call(this)}function x(){mxActor.call(this)}function y(){mxActor.call(this)}function u(){mxRectangleShape.call(this)}function D(){mxRectangleShape.call(this)}function F(){mxCylinder.call(this)}function E(){mxShape.call(this)}function B(){mxShape.call(this)} -function A(){mxEllipse.call(this)}function C(){mxShape.call(this)}function L(){mxShape.call(this)}function K(){mxRectangleShape.call(this)}function H(){mxShape.call(this)}function V(){mxShape.call(this)}function U(){mxShape.call(this)}function ca(){mxShape.call(this)}function W(){mxShape.call(this)}function v(){mxCylinder.call(this)}function P(){mxDoubleEllipse.call(this)}function J(){mxDoubleEllipse.call(this)}function G(){mxArrowConnector.call(this);this.spacing=0}function da(){mxArrowConnector.call(this); -this.spacing=0}function N(){mxActor.call(this)}function I(){mxRectangleShape.call(this)}function M(){mxActor.call(this)}function aa(){mxActor.call(this)}function ea(){mxActor.call(this)}function S(){mxActor.call(this)}function Q(){mxActor.call(this)}function T(){mxActor.call(this)}function Y(){mxActor.call(this)}function O(){mxActor.call(this)}function R(){mxActor.call(this)}function fa(){mxActor.call(this)}function X(){mxEllipse.call(this)}function Z(){mxEllipse.call(this)}function ra(){mxEllipse.call(this)} -function xa(){mxRhombus.call(this)}function ya(){mxEllipse.call(this)}function za(){mxEllipse.call(this)}function Aa(){mxEllipse.call(this)}function sa(){mxEllipse.call(this)}function pa(){mxActor.call(this)}function na(){mxActor.call(this)}function oa(){mxActor.call(this)}function ka(){mxConnector.call(this)}function Da(a,b,c,d,e,f,g,h,k,l){g+=k;var ma=d.clone();d.x-=e*(2*g+k);d.y-=f*(2*g+k);e*=g+k;f*=g+k;return function(){a.ellipse(ma.x-e-g,ma.y-f-g,2*g,2*g);l?a.fillAndStroke():a.stroke()}}mxUtils.extend(a, +this.canvas.curveTo=mxUtils.bind(this,q.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,q.prototype.arcTo)}function t(){mxRectangleShape.call(this)}function z(){mxRectangleShape.call(this)}function x(){mxActor.call(this)}function w(){mxActor.call(this)}function y(){mxActor.call(this)}function u(){mxRectangleShape.call(this)}function D(){mxRectangleShape.call(this)}function F(){mxCylinder.call(this)}function E(){mxShape.call(this)}function B(){mxShape.call(this)} +function A(){mxEllipse.call(this)}function C(){mxShape.call(this)}function L(){mxShape.call(this)}function K(){mxRectangleShape.call(this)}function I(){mxShape.call(this)}function V(){mxShape.call(this)}function U(){mxShape.call(this)}function ca(){mxShape.call(this)}function W(){mxShape.call(this)}function v(){mxCylinder.call(this)}function Q(){mxDoubleEllipse.call(this)}function G(){mxDoubleEllipse.call(this)}function H(){mxArrowConnector.call(this);this.spacing=0}function da(){mxArrowConnector.call(this); +this.spacing=0}function N(){mxActor.call(this)}function J(){mxRectangleShape.call(this)}function M(){mxActor.call(this)}function aa(){mxActor.call(this)}function ea(){mxActor.call(this)}function S(){mxActor.call(this)}function P(){mxActor.call(this)}function T(){mxActor.call(this)}function Z(){mxActor.call(this)}function O(){mxActor.call(this)}function R(){mxActor.call(this)}function fa(){mxActor.call(this)}function X(){mxEllipse.call(this)}function Y(){mxEllipse.call(this)}function ra(){mxEllipse.call(this)} +function xa(){mxRhombus.call(this)}function ya(){mxEllipse.call(this)}function za(){mxEllipse.call(this)}function Aa(){mxEllipse.call(this)}function sa(){mxEllipse.call(this)}function pa(){mxActor.call(this)}function na(){mxActor.call(this)}function oa(){mxActor.call(this)}function la(){mxConnector.call(this)}function Da(a,b,c,d,e,f,g,h,k,l){g+=k;var ga=d.clone();d.x-=e*(2*g+k);d.y-=f*(2*g+k);e*=g+k;f*=g+k;return function(){a.ellipse(ga.x-e-g,ga.y-f-g,2*g,2*g);l?a.fillAndStroke():a.stroke()}}mxUtils.extend(a, mxCylinder);a.prototype.size=20;a.prototype.darkOpacity=0;a.prototype.darkOpacity2=0;a.prototype.paintVertexShape=function(a,b,c,d,e){var f=Math.max(0,Math.min(d,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),g=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),h=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));a.translate(b,c);a.begin();a.moveTo(0,0);a.lineTo(d-f,0);a.lineTo(d, f);a.lineTo(d,e);a.lineTo(f,e);a.lineTo(0,e-f);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=g&&(a.setFillAlpha(Math.abs(g)),a.setFillColor(0>g?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(d-f,0),a.lineTo(d,f),a.lineTo(f,f),a.close(),a.fill()),0!=h&&(a.setFillAlpha(Math.abs(h)),a.setFillColor(0>h?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(f,f),a.lineTo(f,e),a.lineTo(0,e-f),a.close(),a.fill()),a.begin(),a.moveTo(f,e),a.lineTo(f,f),a.lineTo(0, -0),a.moveTo(f,f),a.lineTo(d,f),a.end(),a.stroke())};a.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?(a=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(a,a,0,0)):null};mxCellRenderer.registerShape("cube",a);var Ba=Math.tan(mxUtils.toRadians(30)),la=(.5-Ba)/2;mxUtils.extend(b,mxActor);b.prototype.size=20;b.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/Ba);a.translate((d-b)/2,(e-b)/2+b/4);a.moveTo(0,.25*b);a.lineTo(.5* -b,b*la);a.lineTo(b,.25*b);a.lineTo(.5*b,(.5-la)*b);a.lineTo(0,.25*b);a.close();a.end()};mxCellRenderer.registerShape("isoRectangle",b);mxUtils.extend(c,mxCylinder);c.prototype.size=20;c.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.min(d,e/(.5+Ba));f?(a.moveTo(0,.25*b),a.lineTo(.5*b,(.5-la)*b),a.lineTo(b,.25*b),a.moveTo(.5*b,(.5-la)*b),a.lineTo(.5*b,(1-la)*b)):(a.translate((d-b)/2,(e-b)/2),a.moveTo(0,.25*b),a.lineTo(.5*b,b*la),a.lineTo(b,.25*b),a.lineTo(b,.75*b),a.lineTo(.5*b,(1-la)*b),a.lineTo(0, +0),a.moveTo(f,f),a.lineTo(d,f),a.end(),a.stroke())};a.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?(a=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(a,a,0,0)):null};mxCellRenderer.registerShape("cube",a);var Ba=Math.tan(mxUtils.toRadians(30)),ma=(.5-Ba)/2;mxUtils.extend(b,mxActor);b.prototype.size=20;b.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/Ba);a.translate((d-b)/2,(e-b)/2+b/4);a.moveTo(0,.25*b);a.lineTo(.5* +b,b*ma);a.lineTo(b,.25*b);a.lineTo(.5*b,(.5-ma)*b);a.lineTo(0,.25*b);a.close();a.end()};mxCellRenderer.registerShape("isoRectangle",b);mxUtils.extend(c,mxCylinder);c.prototype.size=20;c.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.min(d,e/(.5+Ba));f?(a.moveTo(0,.25*b),a.lineTo(.5*b,(.5-ma)*b),a.lineTo(b,.25*b),a.moveTo(.5*b,(.5-ma)*b),a.lineTo(.5*b,(1-ma)*b)):(a.translate((d-b)/2,(e-b)/2),a.moveTo(0,.25*b),a.lineTo(.5*b,b*ma),a.lineTo(b,.25*b),a.lineTo(b,.75*b),a.lineTo(.5*b,(1-ma)*b),a.lineTo(0, .75*b),a.close());a.end()};mxCellRenderer.registerShape("isoCube",c);mxUtils.extend(d,mxCylinder);d.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.min(e/2,Math.round(e/8)+this.strokewidth-1);if(f&&null!=this.fill||!f&&null==this.fill)a.moveTo(0,b),a.curveTo(0,2*b,d,2*b,d,b),f||(a.stroke(),a.begin()),a.translate(0,b/2),a.moveTo(0,b),a.curveTo(0,2*b,d,2*b,d,b),f||(a.stroke(),a.begin()),a.translate(0,b/2),a.moveTo(0,b),a.curveTo(0,2*b,d,2*b,d,b),f||(a.stroke(),a.begin()),a.translate(0,-b);f||(a.moveTo(0, b),a.curveTo(0,-b/3,d,-b/3,d,b),a.lineTo(d,e-b),a.curveTo(d,e+b/3,0,e+b/3,0,e-b),a.close())};d.prototype.getLabelMargins=function(a){return new mxRectangle(0,2.5*Math.min(a.height/2,Math.round(a.height/8)+this.strokewidth-1)*this.scale,0,0)};mxCellRenderer.registerShape("datastore",d);mxUtils.extend(e,mxCylinder);e.prototype.size=30;e.prototype.darkOpacity=0;e.prototype.paintVertexShape=function(a,b,c,d,e){var f=Math.max(0,Math.min(d,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))))), g=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));a.translate(b,c);a.begin();a.moveTo(0,0);a.lineTo(d-f,0);a.lineTo(d,f);a.lineTo(d,e);a.lineTo(0,e);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=g&&(a.setFillAlpha(Math.abs(g)),a.setFillColor(0>g?"#FFFFFF":"#000000"),a.begin(),a.moveTo(d-f,0),a.lineTo(d-f,f),a.lineTo(d,f),a.close(),a.fill()),a.begin(),a.moveTo(d-f,0),a.lineTo(d-f,f),a.lineTo(d,f),a.end(),a.stroke())}; @@ -1817,31 +1819,31 @@ this.style||"0"==mxUtils.getValue(this.style,"comic","0"))&&Ja.apply(this,argume a.lineTo(b,c+f),a.quadTo(b,c,b+f,c)):(a.moveTo(b,c),a.lineTo(b+d,c),a.lineTo(b+d,c+e),a.lineTo(b,c+e),a.lineTo(b,c)),a.close(),a.end(),a.fillAndStroke()}};var La=mxRectangleShape.prototype.paintForeground;mxRectangleShape.prototype.paintForeground=function(a,b,c,d,e){null==a.handJiggle&&La.apply(this,arguments)};mxUtils.extend(t,mxRectangleShape);t.prototype.size=.1;t.prototype.isHtmlAllowed=function(){return!1};t.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL, !0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var b=a.width,c=a.height;a=new mxRectangle(a.x,a.y,b,c);var d=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,d=Math.max(d,Math.min(b*e,c*e));a.x+=Math.round(d);a.width-=Math.round(2*d)}return a};t.prototype.paintForeground= function(a,b,c,d,e){var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(d*g,e*g));f=Math.round(f);a.begin();a.moveTo(b+f,c);a.lineTo(b+f,c+e);a.moveTo(b+d-f,c);a.lineTo(b+d-f,c+e);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("process",t);mxUtils.extend(z, -mxRectangleShape);z.prototype.paintBackground=function(a,b,c,d,e){a.setFillColor(mxConstants.NONE);a.rect(b,c,d,e);a.fill()};z.prototype.paintForeground=function(a,b,c,d,e){};mxCellRenderer.registerShape("transparent",z);mxUtils.extend(w,mxHexagon);w.prototype.size=30;w.prototype.position=.5;w.prototype.position2=.5;w.prototype.base=20;w.prototype.getLabelMargins=function(){return new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};w.prototype.isRoundable= -function(){return!0};w.prototype.redrawPath=function(a,b,c,d,e){b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),g=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2)))),h=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"base",this.base)))); -this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,e-c),new mxPoint(Math.min(d,f+h),e-c),new mxPoint(g,e),new mxPoint(Math.max(0,f),e-c),new mxPoint(0,e-c)],this.isRounded,b,!0,[4])};mxCellRenderer.registerShape("callout",w);mxUtils.extend(x,mxActor);x.prototype.size=.2;x.prototype.fixedSize=20;x.prototype.isRoundable=function(){return!0};x.prototype.redrawPath=function(a,b,c,d,e){b="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style, -"size",this.fixedSize)))):d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(0,e),new mxPoint(b,e/2)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("step",x);mxUtils.extend(y,mxHexagon);y.prototype.size=.25;y.prototype.isRoundable=function(){return!0};y.prototype.redrawPath= +mxRectangleShape);z.prototype.paintBackground=function(a,b,c,d,e){a.setFillColor(mxConstants.NONE);a.rect(b,c,d,e);a.fill()};z.prototype.paintForeground=function(a,b,c,d,e){};mxCellRenderer.registerShape("transparent",z);mxUtils.extend(x,mxHexagon);x.prototype.size=30;x.prototype.position=.5;x.prototype.position2=.5;x.prototype.base=20;x.prototype.getLabelMargins=function(){return new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};x.prototype.isRoundable= +function(){return!0};x.prototype.redrawPath=function(a,b,c,d,e){b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),g=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2)))),h=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"base",this.base)))); +this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,e-c),new mxPoint(Math.min(d,f+h),e-c),new mxPoint(g,e),new mxPoint(Math.max(0,f),e-c),new mxPoint(0,e-c)],this.isRounded,b,!0,[4])};mxCellRenderer.registerShape("callout",x);mxUtils.extend(w,mxActor);w.prototype.size=.2;w.prototype.fixedSize=20;w.prototype.isRoundable=function(){return!0};w.prototype.redrawPath=function(a,b,c,d,e){b="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style, +"size",this.fixedSize)))):d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(0,e),new mxPoint(b,e/2)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("step",w);mxUtils.extend(y,mxHexagon);y.prototype.size=.25;y.prototype.isRoundable=function(){return!0};y.prototype.redrawPath= function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,.5*e),new mxPoint(d-b,e),new mxPoint(b,e),new mxPoint(0,.5*e)],this.isRounded,c,!0)};mxCellRenderer.registerShape("hexagon",y);mxUtils.extend(u,mxRectangleShape);u.prototype.isHtmlAllowed=function(){return!1};u.prototype.paintForeground=function(a, b,c,d,e){var f=Math.min(d/5,e/5)+1;a.begin();a.moveTo(b+d/2,c+f);a.lineTo(b+d/2,c+e-f);a.moveTo(b+f,c+e/2);a.lineTo(b+d-f,c+e/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",u);var Ea=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+ b,a.y+b,a.width-2*b,a.height-2*b)}return a};mxRhombus.prototype.paintVertexShape=function(a,b,c,d,e){Ea.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var f=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=f;c+=f;d-=2*f;e-=2*f;0<d&&0<e&&(a.setShadow(!1),Ea.apply(this,[a,b,c,d,e]))}};mxUtils.extend(D,mxRectangleShape);D.prototype.isHtmlAllowed=function(){return!1};D.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(Math.max(2, this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};D.prototype.paintForeground=function(a,b,c,d,e){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var f=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=f;c+=f;d-=2*f;e-=2*f;0<d&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var f=0,g;do{g=mxCellRenderer.defaultShapes[this.style["symbol"+ -f]];if(null!=g){var h=this.style["symbol"+f+"Align"],k=this.style["symbol"+f+"VerticalAlign"],l=this.style["symbol"+f+"Width"],m=this.style["symbol"+f+"Height"],ma=this.style["symbol"+f+"Spacing"]||0,n=this.style["symbol"+f+"VSpacing"]||ma,ga=this.style["symbol"+f+"ArcSpacing"];null!=ga&&(ga*=this.getArcSize(d+this.strokewidth,e+this.strokewidth),ma+=ga,n+=ga);var ga=b,p=c,ga=h==mxConstants.ALIGN_CENTER?ga+(d-l)/2:h==mxConstants.ALIGN_RIGHT?ga+(d-l-ma):ga+ma,p=k==mxConstants.ALIGN_MIDDLE?p+(e-m)/ -2:k==mxConstants.ALIGN_BOTTOM?p+(e-m-n):p+n;a.save();h=new g;h.style=this.style;g.prototype.paintVertexShape.call(h,a,ga,p,l,m);a.restore()}f++}while(null!=g)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",D);mxUtils.extend(F,mxCylinder);F.prototype.redrawPath=function(a,b,c,d,e,f){f?(a.moveTo(0,0),a.lineTo(d/2,e/2),a.lineTo(d,0),a.end()):(a.moveTo(0,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(0,e),a.close())};mxCellRenderer.registerShape("message", +f]];if(null!=g){var h=this.style["symbol"+f+"Align"],k=this.style["symbol"+f+"VerticalAlign"],l=this.style["symbol"+f+"Width"],m=this.style["symbol"+f+"Height"],ga=this.style["symbol"+f+"Spacing"]||0,n=this.style["symbol"+f+"VSpacing"]||ga,ha=this.style["symbol"+f+"ArcSpacing"];null!=ha&&(ha*=this.getArcSize(d+this.strokewidth,e+this.strokewidth),ga+=ha,n+=ha);var ha=b,p=c,ha=h==mxConstants.ALIGN_CENTER?ha+(d-l)/2:h==mxConstants.ALIGN_RIGHT?ha+(d-l-ga):ha+ga,p=k==mxConstants.ALIGN_MIDDLE?p+(e-m)/ +2:k==mxConstants.ALIGN_BOTTOM?p+(e-m-n):p+n;a.save();h=new g;h.style=this.style;g.prototype.paintVertexShape.call(h,a,ha,p,l,m);a.restore()}f++}while(null!=g)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",D);mxUtils.extend(F,mxCylinder);F.prototype.redrawPath=function(a,b,c,d,e,f){f?(a.moveTo(0,0),a.lineTo(d/2,e/2),a.lineTo(d,0),a.end()):(a.moveTo(0,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(0,e),a.close())};mxCellRenderer.registerShape("message", F);mxUtils.extend(E,mxShape);E.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.ellipse(d/4,0,d/2,e/4);a.fillAndStroke();a.begin();a.moveTo(d/2,e/4);a.lineTo(d/2,2*e/3);a.moveTo(d/2,e/3);a.lineTo(0,e/3);a.moveTo(d/2,e/3);a.lineTo(d,e/3);a.moveTo(d/2,2*e/3);a.lineTo(0,e);a.moveTo(d/2,2*e/3);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlActor",E);mxUtils.extend(B,mxShape);B.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};B.prototype.paintBackground= function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(0,e/4);a.lineTo(0,3*e/4);a.end();a.stroke();a.begin();a.moveTo(0,e/2);a.lineTo(d/6,e/2);a.end();a.stroke();a.ellipse(d/6,0,5*d/6,e);a.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",B);mxUtils.extend(A,mxEllipse);A.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/8,c+e);a.lineTo(b+7*d/8,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("umlEntity", A);mxUtils.extend(C,mxShape);C.prototype.paintVertexShape=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(d,0);a.lineTo(0,e);a.moveTo(0,0);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlDestroy",C);mxUtils.extend(L,mxShape);L.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+a.height/8,a.width,7*a.height/8)};L.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(3*d/8,e/8*1.1);a.lineTo(5*d/8,0);a.end();a.stroke();a.ellipse(0, e/8,d,7*e/8);a.fillAndStroke()};L.prototype.paintForeground=function(a,b,c,d,e){a.begin();a.moveTo(3*d/8,e/8*1.1);a.lineTo(5*d/8,e/4);a.end();a.stroke()};mxCellRenderer.registerShape("umlControl",L);mxUtils.extend(K,mxRectangleShape);K.prototype.size=40;K.prototype.isHtmlAllowed=function(){return!1};K.prototype.getLabelBounds=function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(a.x,a.y,a.width,b)};K.prototype.paintBackground= function(a,b,c,d,e){var f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),g=mxUtils.getValue(this.style,"participant");null==g||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,a,b,c,d,f):(g=this.state.view.graph.cellRenderer.getShape(g),null!=g&&g!=K&&(g=new g,g.apply(this.state),a.save(),g.paintVertexShape(a,b,c,d,f),a.restore()));f<e&&(a.setDashed(!0),a.begin(),a.moveTo(b+d/2,c+f),a.lineTo(b+d/2,c+e),a.end(),a.stroke())};K.prototype.paintForeground= -function(a,b,c,d,e){var f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,a,b,c,d,Math.min(e,f))};mxCellRenderer.registerShape("umlLifeline",K);mxUtils.extend(H,mxShape);H.prototype.width=60;H.prototype.height=30;H.prototype.corner=10;H.prototype.getLabelMargins=function(a){return new mxRectangle(0,0,a.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),a.height-parseFloat(mxUtils.getValue(this.style, -"height",this.height)*this.scale))};H.prototype.paintBackground=function(a,b,c,d,e){var f=this.corner,g=Math.min(d,Math.max(f,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),h=Math.min(e,Math.max(1.5*f,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),k=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);k!=mxConstants.NONE&&(a.setFillColor(k),a.rect(b,c,d,e),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!= -mxConstants.NONE?(this.getGradientBounds(a,b,c,d,e),a.setGradient(this.fill,this.gradient,b,c,d,e,this.gradientDirection)):a.setFillColor(this.fill);a.begin();a.moveTo(b,c);a.lineTo(b+g,c);a.lineTo(b+g,c+Math.max(0,h-1.5*f));a.lineTo(b+Math.max(0,g-f),c+h);a.lineTo(b,c+h);a.close();a.fillAndStroke();a.begin();a.moveTo(b+g,c);a.lineTo(b+d,c);a.lineTo(b+d,c+e);a.lineTo(b,c+e);a.lineTo(b,c+h);a.stroke()};mxCellRenderer.registerShape("umlFrame",H);mxPerimeter.LifelinePerimeter=function(a,b,c,d){d=K.prototype.size; +function(a,b,c,d,e){var f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,a,b,c,d,Math.min(e,f))};mxCellRenderer.registerShape("umlLifeline",K);mxUtils.extend(I,mxShape);I.prototype.width=60;I.prototype.height=30;I.prototype.corner=10;I.prototype.getLabelMargins=function(a){return new mxRectangle(0,0,a.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),a.height-parseFloat(mxUtils.getValue(this.style, +"height",this.height)*this.scale))};I.prototype.paintBackground=function(a,b,c,d,e){var f=this.corner,g=Math.min(d,Math.max(f,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),h=Math.min(e,Math.max(1.5*f,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),k=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);k!=mxConstants.NONE&&(a.setFillColor(k),a.rect(b,c,d,e),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!= +mxConstants.NONE?(this.getGradientBounds(a,b,c,d,e),a.setGradient(this.fill,this.gradient,b,c,d,e,this.gradientDirection)):a.setFillColor(this.fill);a.begin();a.moveTo(b,c);a.lineTo(b+g,c);a.lineTo(b+g,c+Math.max(0,h-1.5*f));a.lineTo(b+Math.max(0,g-f),c+h);a.lineTo(b,c+h);a.close();a.fillAndStroke();a.begin();a.moveTo(b+g,c);a.lineTo(b+d,c);a.lineTo(b+d,c+e);a.lineTo(b,c+e);a.lineTo(b,c+h);a.stroke()};mxCellRenderer.registerShape("umlFrame",I);mxPerimeter.LifelinePerimeter=function(a,b,c,d){d=K.prototype.size; null!=b&&(d=mxUtils.getValue(b.style,"size",d)*b.view.scale);b=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;c.x<a.getCenterX()&&(b=-1*(b+1));return new mxPoint(a.getCenterX()+b,Math.min(a.y+a.height,Math.max(a.y+d,c.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(a,b,c,d){d=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",mxPerimeter.OrthogonalPerimeter); mxPerimeter.BackbonePerimeter=function(a,b,c,d){d=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;null!=b.style.backboneSize&&(d+=parseFloat(b.style.backboneSize)*b.view.scale/2-1);if("south"==b.style[mxConstants.STYLE_DIRECTION]||"north"==b.style[mxConstants.STYLE_DIRECTION])return c.x<a.getCenterX()&&(d=-1*(d+1)),new mxPoint(a.getCenterX()+d,Math.min(a.y+a.height,Math.max(a.y,c.y)));c.y<a.getCenterY()&&(d=-1*(d+1));return new mxPoint(Math.min(a.x+a.width,Math.max(a.x,c.x)), -a.getCenterY()+d)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(a,b,c,d){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(a,new mxRectangle(0,0,0,Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(b.style,"size",w.prototype.size))*b.view.scale))),b.style),b,c,d)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(a,b,c,d){var e=m.prototype.size; +a.getCenterY()+d)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(a,b,c,d){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(a,new mxRectangle(0,0,0,Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(b.style,"size",x.prototype.size))*b.view.scale))),b.style),b,c,d)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(a,b,c,d){var e=m.prototype.size; null!=b&&(e=mxUtils.getValue(b.style,"size",e));var f=a.x,g=a.y,h=a.width,k=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(e=k*Math.max(0,Math.min(1,e)),g=[new mxPoint(f,g),new mxPoint(f+h,g+e),new mxPoint(f+h,g+k),new mxPoint(f,g+k-e),new mxPoint(f,g)]):(e=h*Math.max(0,Math.min(1,e)),g=[new mxPoint(f+e,g),new mxPoint(f+h,g),new mxPoint(f+h-e,g+k),new mxPoint(f, g+k),new mxPoint(f+e,g)]);k=a.getCenterX();a=a.getCenterY();a=new mxPoint(k,a);d&&(c.x<f||c.x>f+h?a.y=c.y:a.x=c.x);return mxUtils.getPerimeterPoint(g,a,c)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(a,b,c,d){var e=n.prototype.size;null!=b&&(e=mxUtils.getValue(b.style,"size",e));var f=a.x,g=a.y,h=a.width,k=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST; b==mxConstants.DIRECTION_EAST?(e=h*Math.max(0,Math.min(1,e)),g=[new mxPoint(f+e,g),new mxPoint(f+h-e,g),new mxPoint(f+h,g+k),new mxPoint(f,g+k),new mxPoint(f+e,g)]):b==mxConstants.DIRECTION_WEST?(e=h*Math.max(0,Math.min(1,e)),g=[new mxPoint(f,g),new mxPoint(f+h,g),new mxPoint(f+h-e,g+k),new mxPoint(f+e,g+k),new mxPoint(f,g)]):b==mxConstants.DIRECTION_NORTH?(e=k*Math.max(0,Math.min(1,e)),g=[new mxPoint(f,g+e),new mxPoint(f+h,g),new mxPoint(f+h,g+k),new mxPoint(f,g+k-e),new mxPoint(f,g+e)]):(e=k*Math.max(0, -Math.min(1,e)),g=[new mxPoint(f,g),new mxPoint(f+h,g+e),new mxPoint(f+h,g+k-e),new mxPoint(f,g+k),new mxPoint(f,g)]);k=a.getCenterX();a=a.getCenterY();a=new mxPoint(k,a);d&&(c.x<f||c.x>f+h?a.y=c.y:a.x=c.x);return mxUtils.getPerimeterPoint(g,a,c)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(a,b,c,d){var e="0"!=mxUtils.getValue(b.style,"fixedSize","0"),f=e?x.prototype.fixedSize:x.prototype.size;null!=b&&(f=mxUtils.getValue(b.style, +Math.min(1,e)),g=[new mxPoint(f,g),new mxPoint(f+h,g+e),new mxPoint(f+h,g+k-e),new mxPoint(f,g+k),new mxPoint(f,g)]);k=a.getCenterX();a=a.getCenterY();a=new mxPoint(k,a);d&&(c.x<f||c.x>f+h?a.y=c.y:a.x=c.x);return mxUtils.getPerimeterPoint(g,a,c)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(a,b,c,d){var e="0"!=mxUtils.getValue(b.style,"fixedSize","0"),f=e?w.prototype.fixedSize:w.prototype.size;null!=b&&(f=mxUtils.getValue(b.style, "size",f));var g=a.x,h=a.y,k=a.width,l=a.height,m=a.getCenterX();a=a.getCenterY();b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_EAST?(e=e?Math.max(0,Math.min(k,f)):k*Math.max(0,Math.min(1,f)),h=[new mxPoint(g,h),new mxPoint(g+k-e,h),new mxPoint(g+k,a),new mxPoint(g+k-e,h+l),new mxPoint(g,h+l),new mxPoint(g+e,a),new mxPoint(g,h)]):b==mxConstants.DIRECTION_WEST?(e=e?Math.max(0,Math.min(k,f)):k*Math.max(0, Math.min(1,f)),h=[new mxPoint(g+e,h),new mxPoint(g+k,h),new mxPoint(g+k-e,a),new mxPoint(g+k,h+l),new mxPoint(g+e,h+l),new mxPoint(g,a),new mxPoint(g+e,h)]):b==mxConstants.DIRECTION_NORTH?(e=e?Math.max(0,Math.min(l,f)):l*Math.max(0,Math.min(1,f)),h=[new mxPoint(g,h+e),new mxPoint(m,h),new mxPoint(g+k,h+e),new mxPoint(g+k,h+l),new mxPoint(m,h+l-e),new mxPoint(g,h+l),new mxPoint(g,h+e)]):(e=e?Math.max(0,Math.min(l,f)):l*Math.max(0,Math.min(1,f)),h=[new mxPoint(g,h),new mxPoint(m,h+e),new mxPoint(g+ k,h),new mxPoint(g+k,h+l-e),new mxPoint(m,h+l),new mxPoint(g,h+l-e),new mxPoint(g,h)]);m=new mxPoint(m,a);d&&(c.x<g||c.x>g+k?m.y=c.y:m.x=c.x);return mxUtils.getPerimeterPoint(h,m,c)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(a,b,c,d){var e=y.prototype.size;null!=b&&(e=mxUtils.getValue(b.style,"size",e));var f=a.x,g=a.y,h=a.width,k=a.height,l=a.getCenterX();a=a.getCenterY();b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION, @@ -1850,72 +1852,72 @@ h?l.y=c.y:l.x=c.x);return mxUtils.getPerimeterPoint(g,l,c)};mxStyleRegistry.putV 10;U.prototype.inset=2;U.prototype.paintBackground=function(a,b,c,d,e){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size)),g=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(b,c);a.begin();a.moveTo(d/2,f+g);a.lineTo(d/2,e);a.end();a.stroke();a.begin();a.moveTo((d-f)/2-g,f/2);a.quadTo((d-f)/2-g,f+g,d/2,f+g);a.quadTo((d+f)/2+g,f+g,(d+f)/2+g,f/2);a.end();a.stroke()};mxCellRenderer.registerShape("requires",U);mxUtils.extend(ca,mxShape);ca.prototype.paintBackground= function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.end();a.stroke()};mxCellRenderer.registerShape("requiredInterface",ca);mxUtils.extend(W,mxShape);W.prototype.inset=2;W.prototype.paintBackground=function(a,b,c,d,e){var f=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(b,c);a.ellipse(0,f,d-2*f,e-2*f);a.fillAndStroke();a.begin();a.moveTo(d/2,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d/2,e);a.end();a.stroke()};mxCellRenderer.registerShape("providedRequiredInterface", W);mxUtils.extend(v,mxCylinder);v.prototype.jettyWidth=32;v.prototype.jettyHeight=12;v.prototype.redrawPath=function(a,b,c,d,e,f){var g=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));b=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));c=g/2;var g=c+g/2,h=.3*e-b/2,k=.7*e-b/2;f?(a.moveTo(c,h),a.lineTo(g,h),a.lineTo(g,h+b),a.lineTo(c,h+b),a.moveTo(c,k),a.lineTo(g,k),a.lineTo(g,k+b),a.lineTo(c,k+b)):(a.moveTo(c,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(c,e), -a.lineTo(c,k+b),a.lineTo(0,k+b),a.lineTo(0,k),a.lineTo(c,k),a.lineTo(c,h+b),a.lineTo(0,h+b),a.lineTo(0,h),a.lineTo(c,h),a.close());a.end()};mxCellRenderer.registerShape("component",v);mxUtils.extend(P,mxDoubleEllipse);P.prototype.outerStroke=!0;P.prototype.paintVertexShape=function(a,b,c,d,e){var f=Math.min(4,Math.min(d/5,e/5));0<d&&0<e&&(a.ellipse(b+f,c+f,d-2*f,e-2*f),a.fillAndStroke());a.setShadow(!1);this.outerStroke&&(a.ellipse(b,c,d,e),a.stroke())};mxCellRenderer.registerShape("endState",P); -mxUtils.extend(J,P);J.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",J);mxUtils.extend(G,mxArrowConnector);G.prototype.defaultWidth=4;G.prototype.isOpenEnded=function(){return!0};G.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};G.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",G);mxUtils.extend(da,mxArrowConnector);da.prototype.defaultWidth=10;da.prototype.defaultArrowWidth= +a.lineTo(c,k+b),a.lineTo(0,k+b),a.lineTo(0,k),a.lineTo(c,k),a.lineTo(c,h+b),a.lineTo(0,h+b),a.lineTo(0,h),a.lineTo(c,h),a.close());a.end()};mxCellRenderer.registerShape("component",v);mxUtils.extend(Q,mxDoubleEllipse);Q.prototype.outerStroke=!0;Q.prototype.paintVertexShape=function(a,b,c,d,e){var f=Math.min(4,Math.min(d/5,e/5));0<d&&0<e&&(a.ellipse(b+f,c+f,d-2*f,e-2*f),a.fillAndStroke());a.setShadow(!1);this.outerStroke&&(a.ellipse(b,c,d,e),a.stroke())};mxCellRenderer.registerShape("endState",Q); +mxUtils.extend(G,Q);G.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",G);mxUtils.extend(H,mxArrowConnector);H.prototype.defaultWidth=4;H.prototype.isOpenEnded=function(){return!0};H.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};H.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",H);mxUtils.extend(da,mxArrowConnector);da.prototype.defaultWidth=10;da.prototype.defaultArrowWidth= 20;da.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};da.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};da.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",da);mxUtils.extend(N,mxActor);N.prototype.size=30;N.prototype.isRoundable= -function(){return!0};N.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(0,b),new mxPoint(d,0),new mxPoint(d,e)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("manualInput",N);mxUtils.extend(I,mxRectangleShape);I.prototype.dx=20;I.prototype.dy=20;I.prototype.isHtmlAllowed=function(){return!1}; -I.prototype.paintForeground=function(a,b,c,d,e){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var f=0;if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(d*g,e*g));g=Math.max(f,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));f=Math.max(f,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(b,c+f);a.lineTo(b+d,c+f);a.end();a.stroke(); -a.begin();a.moveTo(b+g,c);a.lineTo(b+g,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("internalStorage",I);mxUtils.extend(M,mxActor);M.prototype.dx=20;M.prototype.dy=20;M.prototype.redrawPath=function(a,b,c,d,e){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/ +function(){return!0};N.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(0,b),new mxPoint(d,0),new mxPoint(d,e)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("manualInput",N);mxUtils.extend(J,mxRectangleShape);J.prototype.dx=20;J.prototype.dy=20;J.prototype.isHtmlAllowed=function(){return!1}; +J.prototype.paintForeground=function(a,b,c,d,e){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var f=0;if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(d*g,e*g));g=Math.max(f,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));f=Math.max(f,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(b,c+f);a.lineTo(b+d,c+f);a.end();a.stroke(); +a.begin();a.moveTo(b+g,c);a.lineTo(b+g,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("internalStorage",J);mxUtils.extend(M,mxActor);M.prototype.dx=20;M.prototype.dy=20;M.prototype.redrawPath=function(a,b,c,d,e){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/ 2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,c),new mxPoint(b,c),new mxPoint(b,e),new mxPoint(0,e)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("corner",M);mxUtils.extend(aa,mxActor);aa.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.lineTo(0,e);a.end();a.moveTo(d,0);a.lineTo(d,e);a.end();a.moveTo(0,e/2);a.lineTo(d,e/2);a.end()};mxCellRenderer.registerShape("crossbar",aa);mxUtils.extend(ea,mxActor);ea.prototype.dx=20;ea.prototype.dy=20;ea.prototype.redrawPath= function(a,b,c,d,e){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,c),new mxPoint((d+b)/2,c),new mxPoint((d+b)/2,e),new mxPoint((d-b)/2,e),new mxPoint((d-b)/2,c),new mxPoint(0, c)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("tee",ea);mxUtils.extend(S,mxActor);S.prototype.arrowWidth=.3;S.prototype.arrowSize=.2;S.prototype.redrawPath=function(a,b,c,d,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth))));b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));c=(e-f)/2;var f=c+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a, -[new mxPoint(0,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,f),new mxPoint(0,f)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("singleArrow",S);mxUtils.extend(Q,mxActor);Q.prototype.redrawPath=function(a,b,c,d,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",S.prototype.arrowWidth))));b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",S.prototype.arrowSize))));c=(e-f)/2;var f= -c+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e/2),new mxPoint(b,0),new mxPoint(b,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,f),new mxPoint(b,f),new mxPoint(b,e)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("doubleArrow",Q);mxUtils.extend(T,mxActor);T.prototype.size=.1;T.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style, -"size",this.size))));a.moveTo(b,0);a.lineTo(d,0);a.quadTo(d-2*b,e/2,d,e);a.lineTo(b,e);a.quadTo(b-2*b,e/2,b,0);a.close();a.end()};mxCellRenderer.registerShape("dataStorage",T);mxUtils.extend(Y,mxActor);Y.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.close();a.end()};mxCellRenderer.registerShape("or",Y);mxUtils.extend(O,mxActor);O.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.quadTo(d/2,e/2,0,0);a.close(); +[new mxPoint(0,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,f),new mxPoint(0,f)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("singleArrow",S);mxUtils.extend(P,mxActor);P.prototype.redrawPath=function(a,b,c,d,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",S.prototype.arrowWidth))));b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",S.prototype.arrowSize))));c=(e-f)/2;var f= +c+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e/2),new mxPoint(b,0),new mxPoint(b,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,f),new mxPoint(b,f),new mxPoint(b,e)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("doubleArrow",P);mxUtils.extend(T,mxActor);T.prototype.size=.1;T.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style, +"size",this.size))));a.moveTo(b,0);a.lineTo(d,0);a.quadTo(d-2*b,e/2,d,e);a.lineTo(b,e);a.quadTo(b-2*b,e/2,b,0);a.close();a.end()};mxCellRenderer.registerShape("dataStorage",T);mxUtils.extend(Z,mxActor);Z.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.close();a.end()};mxCellRenderer.registerShape("or",Z);mxUtils.extend(O,mxActor);O.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.quadTo(d/2,e/2,0,0);a.close(); a.end()};mxCellRenderer.registerShape("xor",O);mxUtils.extend(R,mxActor);R.prototype.size=20;R.prototype.isRoundable=function(){return!0};R.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d/2,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,.8*b),new mxPoint(d,e),new mxPoint(0,e),new mxPoint(0,.8*b)],this.isRounded,c,!0); a.end()};mxCellRenderer.registerShape("loopLimit",R);mxUtils.extend(fa,mxActor);fa.prototype.size=.375;fa.prototype.isRoundable=function(){return!0};fa.prototype.redrawPath=function(a,b,c,d,e){b=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,e-b),new mxPoint(d/2,e),new mxPoint(0,e-b)],this.isRounded,c,!0);a.end()}; -mxCellRenderer.registerShape("offPageConnector",fa);mxUtils.extend(X,mxEllipse);X.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/2,c+e);a.lineTo(b+d,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("tapeData",X);mxUtils.extend(Z,mxEllipse);Z.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+d,c+e/2);a.end(); -a.stroke();a.begin();a.moveTo(b+d/2,c);a.lineTo(b+d/2,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("orEllipse",Z);mxUtils.extend(ra,mxEllipse);ra.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b+.145*d,c+.145*e);a.lineTo(b+.855*d,c+.855*e);a.end();a.stroke();a.begin();a.moveTo(b+.855*d,c+.145*e);a.lineTo(b+.145*d,c+.855*e);a.end();a.stroke()};mxCellRenderer.registerShape("sumEllipse",ra);mxUtils.extend(xa, +mxCellRenderer.registerShape("offPageConnector",fa);mxUtils.extend(X,mxEllipse);X.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/2,c+e);a.lineTo(b+d,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("tapeData",X);mxUtils.extend(Y,mxEllipse);Y.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+d,c+e/2);a.end(); +a.stroke();a.begin();a.moveTo(b+d/2,c);a.lineTo(b+d/2,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("orEllipse",Y);mxUtils.extend(ra,mxEllipse);ra.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b+.145*d,c+.145*e);a.lineTo(b+.855*d,c+.855*e);a.end();a.stroke();a.begin();a.moveTo(b+.855*d,c+.145*e);a.lineTo(b+.145*d,c+.855*e);a.end();a.stroke()};mxCellRenderer.registerShape("sumEllipse",ra);mxUtils.extend(xa, mxRhombus);xa.prototype.paintVertexShape=function(a,b,c,d,e){mxRhombus.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+d,c+e/2);a.end();a.stroke()};mxCellRenderer.registerShape("sortShape",xa);mxUtils.extend(ya,mxEllipse);ya.prototype.paintVertexShape=function(a,b,c,d,e){a.begin();a.moveTo(b,c);a.lineTo(b+d,c);a.lineTo(b+d/2,c+e/2);a.close();a.fillAndStroke();a.begin();a.moveTo(b,c+e);a.lineTo(b+d,c+e);a.lineTo(b+d/2,c+e/2);a.close();a.fillAndStroke()}; mxCellRenderer.registerShape("collate",ya);mxUtils.extend(za,mxEllipse);za.prototype.paintVertexShape=function(a,b,c,d,e){var f=c+e-5;a.begin();a.moveTo(b,c);a.lineTo(b,c+e);a.moveTo(b,f);a.lineTo(b+10,f-5);a.moveTo(b,f);a.lineTo(b+10,f+5);a.moveTo(b,f);a.lineTo(b+d,f);a.moveTo(b+d,c);a.lineTo(b+d,c+e);a.moveTo(b+d,f);a.lineTo(b+d-10,f-5);a.moveTo(b+d,f);a.lineTo(b+d-10,f+5);a.end();a.stroke()};mxCellRenderer.registerShape("dimension",za);mxUtils.extend(Aa,mxEllipse);Aa.prototype.paintVertexShape= function(a,b,c,d,e){this.outline||a.setStrokeColor(null);mxRectangleShape.prototype.paintBackground.apply(this,arguments);null!=this.style&&(a.setStrokeColor(this.stroke),a.rect(b,c,d,e),a.fill(),a.begin(),a.moveTo(b,c),"1"==mxUtils.getValue(this.style,"top","1")?a.lineTo(b+d,c):a.moveTo(b+d,c),"1"==mxUtils.getValue(this.style,"right","1")?a.lineTo(b+d,c+e):a.moveTo(b+d,c+e),"1"==mxUtils.getValue(this.style,"bottom","1")?a.lineTo(b,c+e):a.moveTo(b,c+e),"1"==mxUtils.getValue(this.style,"left","1")&& a.lineTo(b,c-this.strokewidth/2),a.end(),a.stroke())};mxCellRenderer.registerShape("partialRectangle",Aa);mxUtils.extend(sa,mxEllipse);sa.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();"vertical"==mxUtils.getValue(this.style,"line")?(a.moveTo(b+d/2,c),a.lineTo(b+d/2,c+e)):(a.moveTo(b,c+e/2),a.lineTo(b+d,c+e/2));a.end();a.stroke()};mxCellRenderer.registerShape("lineEllipse",sa);mxUtils.extend(pa,mxActor);pa.prototype.redrawPath= function(a,b,c,d,e){b=Math.min(d,e/2);a.moveTo(0,0);a.lineTo(d-b,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(0,e);a.close();a.end()};mxCellRenderer.registerShape("delay",pa);mxUtils.extend(na,mxActor);na.prototype.size=.2;na.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,d);var f=Math.max(0,Math.min(b,b*parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=(e-f)/2;c=b+f;var g=(d-f)/2,f=g+f;a.moveTo(0,b);a.lineTo(g,b);a.lineTo(g,0);a.lineTo(f,0);a.lineTo(f,b);a.lineTo(d,b);a.lineTo(d, -c);a.lineTo(f,c);a.lineTo(f,e);a.lineTo(g,e);a.lineTo(g,c);a.lineTo(0,c);a.close();a.end()};mxCellRenderer.registerShape("cross",na);mxUtils.extend(oa,mxActor);oa.prototype.size=.25;oa.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/2);c=Math.min(d-b,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*d);a.moveTo(0,e/2);a.lineTo(c,0);a.lineTo(d-b,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(c,e);a.close();a.end()};mxCellRenderer.registerShape("display",oa);mxUtils.extend(ka, -mxConnector);ka.prototype.origPaintEdgeShape=ka.prototype.paintEdgeShape;ka.prototype.paintEdgeShape=function(a,b,c){for(var d=[],e=0;e<b.length;e++)d.push(mxUtils.clone(b[e]));var e=a.state.dashed,f=a.state.fixDash;ka.prototype.origPaintEdgeShape.apply(this,[a,d,c]);3<=a.state.strokeWidth&&(d=mxUtils.getValue(this.style,"fillColor",null),null!=d&&(a.setStrokeColor(d),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(e,f),ka.prototype.origPaintEdgeShape.apply(this,[a,b,c])))};mxCellRenderer.registerShape("filledEdge", -ka);"undefined"!==typeof StyleFormatPanel&&function(){var a=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var b=this.format.getSelectionState(),c=a.apply(this,arguments);"umlFrame"==b.style.shape&&c.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});return c}}();mxMarker.addMarker("dash",function(a,b,c,d,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1);return function(){a.begin();a.moveTo(d.x-m/2-n/2,d.y-n/2+m/2);a.lineTo(d.x+ -n/2-3*m/2,d.y-3*n/2-m/2);a.stroke()}});mxMarker.addMarker("cross",function(a,b,c,d,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1);return function(){a.begin();a.moveTo(d.x-m/2-n/2,d.y-n/2+m/2);a.lineTo(d.x+n/2-3*m/2,d.y-3*n/2-m/2);a.moveTo(d.x-m/2+n/2,d.y-n/2-m/2);a.lineTo(d.x-n/2-3*m/2,d.y-3*n/2+m/2);a.stroke()}});mxMarker.addMarker("circle",Da);mxMarker.addMarker("circlePlus",function(a,b,c,d,e,f,g,h,k,l){var m=d.clone(),n=Da.apply(this,arguments),p=e*(g+2*k),q=f*(g+2*k);return function(){n.apply(this, -arguments);a.begin();a.moveTo(m.x-e*k,m.y-f*k);a.lineTo(m.x-2*p+e*k,m.y-2*q+f*k);a.moveTo(m.x-p-q+f*k,m.y-q+p-e*k);a.lineTo(m.x+q-p-f*k,m.y-q-p+e*k);a.stroke()}});mxMarker.addMarker("async",function(a,b,c,d,e,f,g,h,k,l){b=e*k*1.118;c=f*k*1.118;e*=g+k;f*=g+k;var m=d.clone();m.x-=b;m.y-=c;d.x+=1*-e-b;d.y+=1*-f-c;return function(){a.begin();a.moveTo(m.x,m.y);h?a.lineTo(m.x-e-f/2,m.y-f+e/2):a.lineTo(m.x+f/2-e,m.y-f-e/2);a.lineTo(m.x-e,m.y-f);a.close();l?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync", -function(a){a=null!=a?a:2;return function(b,c,d,e,f,g,h,k,l,m){f*=h+l;g*=h+l;var n=e.clone();return function(){b.begin();b.moveTo(n.x,n.y);k?b.lineTo(n.x-f-g/a,n.y-g+f/a):b.lineTo(n.x+g/a-f,n.y-g-f/a);b.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Fa=function(a,b,c){return ha(a,["width"],b,function(b,d,e,f,g){g=a.shape.getEdgeWidth()*a.view.scale+c;return new mxPoint(f.x+d*b/4+e*g/2,f.y+e*b/4-d*g/2)},function(b,d,e,f,g,h){b=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));a.style.width= -Math.round(2*b)/a.view.scale-c})},ha=function(a,b,c,d,e){return ba(a,b,function(b){var e=a.absolutePoints,f=e.length-1;b=a.view.translate;var g=a.view.scale,h=c?e[0]:e[f],e=c?e[1]:e[f-1],f=e.x-h.x,k=e.y-h.y,l=Math.sqrt(f*f+k*k),h=d.call(this,l,f/l,k/l,h,e);return new mxPoint(h.x/g-b.x,h.y/g-b.y)},function(b,d,f){var g=a.absolutePoints,h=g.length-1;b=a.view.translate;var k=a.view.scale,l=c?g[0]:g[h],g=c?g[1]:g[h-1],h=g.x-l.x,m=g.y-l.y,n=Math.sqrt(h*h+m*m);d.x=(d.x+b.x)*k;d.y=(d.y+b.y)*k;e.call(this, -n,h/n,m/n,l,g,d,f)})},ja=function(a){return function(b){return[ba(b,["arrowWidth","arrowSize"],function(b){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",S.prototype.arrowWidth))),d=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",S.prototype.arrowSize)));return new mxPoint(b.x+(1-d)*b.width,b.y+(1-c)*b.height/2)},function(b,c){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(b.y+b.height/2-c.y)/b.height*2));this.state.style.arrowSize=Math.max(0, -Math.min(a,(b.x+b.width-c.x)/b.width))})]}},Ca=function(a,b,c){return function(d){var e=[ba(d,["size"],function(c){var d=Math.max(0,Math.min(c.width,Math.min(c.height,parseFloat(mxUtils.getValue(this.state.style,"size",b)))))*a;return new mxPoint(c.x+d,c.y+d)},function(b,c){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,c.x-b.x),Math.min(b.height,c.y-b.y)))/a)})];c&&mxUtils.getValue(d.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(ia(d));return e}},ta=function(a,b,c,d,e){c=null!= +c);a.lineTo(f,c);a.lineTo(f,e);a.lineTo(g,e);a.lineTo(g,c);a.lineTo(0,c);a.close();a.end()};mxCellRenderer.registerShape("cross",na);mxUtils.extend(oa,mxActor);oa.prototype.size=.25;oa.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/2);c=Math.min(d-b,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*d);a.moveTo(0,e/2);a.lineTo(c,0);a.lineTo(d-b,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(c,e);a.close();a.end()};mxCellRenderer.registerShape("display",oa);mxUtils.extend(la, +mxConnector);la.prototype.origPaintEdgeShape=la.prototype.paintEdgeShape;la.prototype.paintEdgeShape=function(a,b,c){for(var d=[],e=0;e<b.length;e++)d.push(mxUtils.clone(b[e]));var e=a.state.dashed,f=a.state.fixDash;la.prototype.origPaintEdgeShape.apply(this,[a,d,c]);3<=a.state.strokeWidth&&(d=mxUtils.getValue(this.style,"fillColor",null),null!=d&&(a.setStrokeColor(d),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(e,f),la.prototype.origPaintEdgeShape.apply(this,[a,b,c])))};mxCellRenderer.registerShape("filledEdge", +la);"undefined"!==typeof StyleFormatPanel&&function(){var a=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var b=this.format.getSelectionState(),c=a.apply(this,arguments);"umlFrame"==b.style.shape&&c.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});return c}}();mxMarker.addMarker("dash",function(a,b,c,d,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1);return function(){a.begin();a.moveTo(d.x-m/2-n/2,d.y-n/2+m/2);a.lineTo(d.x+ +n/2-3*m/2,d.y-3*n/2-m/2);a.stroke()}});mxMarker.addMarker("cross",function(a,b,c,d,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1);return function(){a.begin();a.moveTo(d.x-m/2-n/2,d.y-n/2+m/2);a.lineTo(d.x+n/2-3*m/2,d.y-3*n/2-m/2);a.moveTo(d.x-m/2+n/2,d.y-n/2-m/2);a.lineTo(d.x-n/2-3*m/2,d.y-3*n/2+m/2);a.stroke()}});mxMarker.addMarker("circle",Da);mxMarker.addMarker("circlePlus",function(a,b,c,d,e,f,g,h,k,l){var m=d.clone(),n=Da.apply(this,arguments),p=e*(g+2*k),ga=f*(g+2*k);return function(){n.apply(this, +arguments);a.begin();a.moveTo(m.x-e*k,m.y-f*k);a.lineTo(m.x-2*p+e*k,m.y-2*ga+f*k);a.moveTo(m.x-p-ga+f*k,m.y-ga+p-e*k);a.lineTo(m.x+ga-p-f*k,m.y-ga-p+e*k);a.stroke()}});mxMarker.addMarker("async",function(a,b,c,d,e,f,g,h,k,l){b=e*k*1.118;c=f*k*1.118;e*=g+k;f*=g+k;var m=d.clone();m.x-=b;m.y-=c;d.x+=1*-e-b;d.y+=1*-f-c;return function(){a.begin();a.moveTo(m.x,m.y);h?a.lineTo(m.x-e-f/2,m.y-f+e/2):a.lineTo(m.x+f/2-e,m.y-f-e/2);a.lineTo(m.x-e,m.y-f);a.close();l?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync", +function(a){a=null!=a?a:2;return function(b,c,d,e,f,g,h,k,l,m){f*=h+l;g*=h+l;var n=e.clone();return function(){b.begin();b.moveTo(n.x,n.y);k?b.lineTo(n.x-f-g/a,n.y-g+f/a):b.lineTo(n.x+g/a-f,n.y-g-f/a);b.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Fa=function(a,b,c){return ka(a,["width"],b,function(b,d,e,f,g){g=a.shape.getEdgeWidth()*a.view.scale+c;return new mxPoint(f.x+d*b/4+e*g/2,f.y+e*b/4-d*g/2)},function(b,d,e,f,g,h){b=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));a.style.width= +Math.round(2*b)/a.view.scale-c})},ka=function(a,b,c,d,e){return ba(a,b,function(b){var e=a.absolutePoints,f=e.length-1;b=a.view.translate;var g=a.view.scale,h=c?e[0]:e[f],e=c?e[1]:e[f-1],f=e.x-h.x,k=e.y-h.y,l=Math.sqrt(f*f+k*k),h=d.call(this,l,f/l,k/l,h,e);return new mxPoint(h.x/g-b.x,h.y/g-b.y)},function(b,d,f){var g=a.absolutePoints,h=g.length-1;b=a.view.translate;var k=a.view.scale,l=c?g[0]:g[h],g=c?g[1]:g[h-1],h=g.x-l.x,m=g.y-l.y,n=Math.sqrt(h*h+m*m);d.x=(d.x+b.x)*k;d.y=(d.y+b.y)*k;e.call(this, +n,h/n,m/n,l,g,d,f)})},ia=function(a){return function(b){return[ba(b,["arrowWidth","arrowSize"],function(b){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",S.prototype.arrowWidth))),d=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",S.prototype.arrowSize)));return new mxPoint(b.x+(1-d)*b.width,b.y+(1-c)*b.height/2)},function(b,c){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(b.y+b.height/2-c.y)/b.height*2));this.state.style.arrowSize=Math.max(0, +Math.min(a,(b.x+b.width-c.x)/b.width))})]}},Ca=function(a,b,c){return function(d){var e=[ba(d,["size"],function(c){var d=Math.max(0,Math.min(c.width,Math.min(c.height,parseFloat(mxUtils.getValue(this.state.style,"size",b)))))*a;return new mxPoint(c.x+d,c.y+d)},function(b,c){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,c.x-b.x),Math.min(b.height,c.y-b.y)))/a)})];c&&mxUtils.getValue(d.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(ja(d));return e}},ta=function(a,b,c,d,e){c=null!= c?c:1;return function(f){var g=[ba(f,["size"],function(b){var c=null!=e?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,d=parseFloat(mxUtils.getValue(this.state.style,"size",c?e:a));return new mxPoint(b.x+Math.max(0,Math.min(b.width,d*(c?1:b.width))),b.getCenterY())},function(a,b,d){var g=null!=e?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null;a=g?b.x-a.x:Math.max(0,Math.min(c,(b.x-a.x)/a.width));g&&!mxEvent.isAltDown(d.getEvent())&&(a=f.view.graph.snap(a));this.state.style.size= -a},null,d)];b&&mxUtils.getValue(f.style,mxConstants.STYLE_ROUNDED,!1)&&g.push(ia(f));return g}},Ga=function(a){return function(b){var c=[ba(b,["size"],function(b){var c=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.state.style,"size",n.prototype.size))));return new mxPoint(b.x+c*b.width*.75,b.y+b.height/4)},function(b,c){this.state.style.size=Math.max(0,Math.min(a,(c.x-b.x)/(.75*b.width)))},null,!0)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&c.push(ia(b));return c}},qa=function(){return function(a){var b= -[];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ia(a));return b}},ia=function(a,b){return ba(a,[mxConstants.STYLE_ARCSIZE],function(c){var d=null!=b?b:c.height/8;if("1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var e=mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(c.x+c.width-Math.min(c.width/2,e),c.y+d)}e=Math.max(0,parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/ +a},null,d)];b&&mxUtils.getValue(f.style,mxConstants.STYLE_ROUNDED,!1)&&g.push(ja(f));return g}},Ga=function(a){return function(b){var c=[ba(b,["size"],function(b){var c=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.state.style,"size",n.prototype.size))));return new mxPoint(b.x+c*b.width*.75,b.y+b.height/4)},function(b,c){this.state.style.size=Math.max(0,Math.min(a,(c.x-b.x)/(.75*b.width)))},null,!0)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&c.push(ja(b));return c}},qa=function(){return function(a){var b= +[];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ja(a));return b}},ja=function(a,b){return ba(a,[mxConstants.STYLE_ARCSIZE],function(c){var d=null!=b?b:c.height/8;if("1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var e=mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(c.x+c.width-Math.min(c.width/2,e),c.y+d)}e=Math.max(0,parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/ 100;return new mxPoint(c.x+c.width-Math.min(Math.max(c.width/2,c.height/2),Math.min(c.width,c.height)*e),c.y+d)},function(b,c,d){"1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(b.width,2*(b.x+b.width-c.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(b.width-c.x+b.x)/Math.min(b.width,b.height))))})},ba=function(a,b,c,d,e,f){var g=new mxHandle(a,null,mxVertexHandler.prototype.secondaryHandleImage); -g.execute=function(){for(var a=0;a<b.length;a++)this.copyStyle(b[a])};g.getPosition=c;g.setPosition=d;g.ignoreGrid=null!=e?e:!0;if(f){var h=g.positionChanged;g.positionChanged=function(){h.apply(this,arguments);a.view.invalidate(this.state.cell);a.view.validate()}}return g},ua={link:function(a){return[Fa(a,!0,10),Fa(a,!1,10)]},flexArrow:function(a){var b=a.view.graph.gridSize/a.view.scale,c=[];mxUtils.getValue(a.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(ha(a, +g.execute=function(){for(var a=0;a<b.length;a++)this.copyStyle(b[a])};g.getPosition=c;g.setPosition=d;g.ignoreGrid=null!=e?e:!0;if(f){var h=g.positionChanged;g.positionChanged=function(){h.apply(this,arguments);a.view.invalidate(this.state.cell);a.view.validate()}}return g},ua={link:function(a){return[Fa(a,!0,10),Fa(a,!1,10)]},flexArrow:function(a){var b=a.view.graph.gridSize/a.view.scale,c=[];mxUtils.getValue(a.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(ka(a, ["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(b,c,d,e,f){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)+d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)-c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_STARTSIZE]= -Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*c)/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE])})),c.push(ha(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE], +Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*c)/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE])})),c.push(ka(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE], !0,function(b,c,d,e,f){b=(a.shape.getStartArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)+d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)-c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(d-a.shape.strokewidth)/ 3)/100/a.view.scale;a.style.startWidth=Math.max(0,Math.round(2*c)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE],a.style.endWidth=a.style.startWidth);mxEvent.isAltDown(k.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(a.style.startWidth)- -parseFloat(a.style.endWidth))<b&&(a.style.startWidth=a.style.endWidth))})));mxUtils.getValue(a.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(ha(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,f){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(f+a.shape.strokewidth* +parseFloat(a.style.endWidth))<b&&(a.style.startWidth=a.style.endWidth))})));mxUtils.getValue(a.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(ka(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,f){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(f+a.shape.strokewidth* a.view.scale)+c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*c)/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))< -b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE])})),c.push(ha(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,f){b=(a.shape.getEndArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)+c*b/2)},function(c,d,e,f,g,h,k){c= +b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE])})),c.push(ka(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,f){b=(a.shape.getEndArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)+c*b/2)},function(c,d,e,f,g,h,k){c= Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.endWidth=Math.max(0,Math.round(2*c)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE],a.style.startWidth=a.style.endWidth);mxEvent.isAltDown(k.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])- parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(a.style.endWidth)-parseFloat(a.style.startWidth))<b&&(a.style.endWidth=a.style.startWidth))})));return c},swimlane:function(a){var b=[ba(a,[mxConstants.STYLE_STARTSIZE],function(b){var c=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(b.getCenterX(), -b.y+Math.max(0,Math.min(b.height,c))):new mxPoint(b.x+Math.max(0,Math.min(b.width,c)),b.getCenterY())},function(b,c){a.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(b.height,c.y-b.y))):Math.round(Math.max(0,Math.min(b.width,c.x-b.x)))})];if(mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED)){var c=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));b.push(ia(a,c/2))}return b}, -label:qa(),ext:qa(),rectangle:qa(),triangle:qa(),rhombus:qa(),umlLifeline:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",K.prototype.size))));return new mxPoint(a.getCenterX(),a.y+b)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},umlFrame:function(a){return[ba(a,["width","height"],function(a){var b=Math.max(H.prototype.corner,Math.min(a.width,mxUtils.getValue(this.state.style, -"width",H.prototype.width))),c=Math.max(1.5*H.prototype.corner,Math.min(a.height,mxUtils.getValue(this.state.style,"height",H.prototype.height)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.width=Math.round(Math.max(H.prototype.corner,Math.min(a.width,b.x-a.x)));this.state.style.height=Math.round(Math.max(1.5*H.prototype.corner,Math.min(a.height,b.y-a.y)))},!1)]},process:function(a){var b=[ba(a,["size"],function(a){var b=Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.state.style, -"size",t.prototype.size))));return new mxPoint(a.x+a.width*b,a.y+a.height/4)},function(a,b){this.state.style.size=Math.max(0,Math.min(.5,(b.x-a.x)/a.width))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ia(a));return b},cross:function(a){return[ba(a,["size"],function(a){var b=Math.min(a.width,a.height),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",na.prototype.size)))*b/2;return new mxPoint(a.getCenterX()-b,a.getCenterY()-b)},function(a,b){var c=Math.min(a.width, +b.y+Math.max(0,Math.min(b.height,c))):new mxPoint(b.x+Math.max(0,Math.min(b.width,c)),b.getCenterY())},function(b,c){a.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(b.height,c.y-b.y))):Math.round(Math.max(0,Math.min(b.width,c.x-b.x)))})];if(mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED)){var c=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));b.push(ja(a,c/2))}return b}, +label:qa(),ext:qa(),rectangle:qa(),triangle:qa(),rhombus:qa(),umlLifeline:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",K.prototype.size))));return new mxPoint(a.getCenterX(),a.y+b)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},umlFrame:function(a){return[ba(a,["width","height"],function(a){var b=Math.max(I.prototype.corner,Math.min(a.width,mxUtils.getValue(this.state.style, +"width",I.prototype.width))),c=Math.max(1.5*I.prototype.corner,Math.min(a.height,mxUtils.getValue(this.state.style,"height",I.prototype.height)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.width=Math.round(Math.max(I.prototype.corner,Math.min(a.width,b.x-a.x)));this.state.style.height=Math.round(Math.max(1.5*I.prototype.corner,Math.min(a.height,b.y-a.y)))},!1)]},process:function(a){var b=[ba(a,["size"],function(a){var b=Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.state.style, +"size",t.prototype.size))));return new mxPoint(a.x+a.width*b,a.y+a.height/4)},function(a,b){this.state.style.size=Math.max(0,Math.min(.5,(b.x-a.x)/a.width))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ja(a));return b},cross:function(a){return[ba(a,["size"],function(a){var b=Math.min(a.width,a.height),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",na.prototype.size)))*b/2;return new mxPoint(a.getCenterX()-b,a.getCenterY()-b)},function(a,b){var c=Math.min(a.width, a.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,a.getCenterY()-b.y)/c*2,Math.max(0,a.getCenterX()-b.x)/c*2)))})]},note:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(a.width,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",e.prototype.size)))));return new mxPoint(a.x+a.width-b,a.y+b)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(a.width,a.x+a.width-b.x),Math.min(a.height,b.y-a.y))))})]},manualInput:function(a){var b= -[ba(a,["size"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",N.prototype.size)));return new mxPoint(a.x+a.width/4,a.y+3*b/4)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,4*(b.y-a.y)/3)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ia(a));return b},dataStorage:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",T.prototype.size)))); -return new mxPoint(a.x+(1-b)*a.width,a.getCenterY())},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.x+a.width-b.x)/a.width))})]},callout:function(a){var b=[ba(a,["size","position"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",w.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",w.prototype.position)));mxUtils.getValue(this.state.style,"base",w.prototype.base);return new mxPoint(a.x+c*a.width,a.y+a.height- -b)},function(a,b){mxUtils.getValue(this.state.style,"base",w.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(a.height,a.y+a.height-b.y)));this.state.style.position=Math.round(100*Math.max(0,Math.min(1,(b.x-a.x)/a.width)))/100}),ba(a,["position2"],function(a){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",w.prototype.position2)));return new mxPoint(a.x+b*a.width,a.y+a.height)},function(a,b){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1, -(b.x-a.x)/a.width)))/100}),ba(a,["base"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",w.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",w.prototype.position))),d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"base",w.prototype.base)));return new mxPoint(a.x+Math.min(a.width,c*a.width+d),a.y+a.height-b)},function(a,b){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",w.prototype.position))); -this.state.style.base=Math.round(Math.max(0,Math.min(a.width,b.x-a.x-c*a.width)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ia(a));return b},internalStorage:function(a){var b=[ba(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",I.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",I.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width, -b.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ia(a));return b},corner:function(a){return[ba(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",M.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",M.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width, +[ba(a,["size"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",N.prototype.size)));return new mxPoint(a.x+a.width/4,a.y+3*b/4)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,4*(b.y-a.y)/3)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ja(a));return b},dataStorage:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",T.prototype.size)))); +return new mxPoint(a.x+(1-b)*a.width,a.getCenterY())},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.x+a.width-b.x)/a.width))})]},callout:function(a){var b=[ba(a,["size","position"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",x.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",x.prototype.position)));mxUtils.getValue(this.state.style,"base",x.prototype.base);return new mxPoint(a.x+c*a.width,a.y+a.height- +b)},function(a,b){mxUtils.getValue(this.state.style,"base",x.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(a.height,a.y+a.height-b.y)));this.state.style.position=Math.round(100*Math.max(0,Math.min(1,(b.x-a.x)/a.width)))/100}),ba(a,["position2"],function(a){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",x.prototype.position2)));return new mxPoint(a.x+b*a.width,a.y+a.height)},function(a,b){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1, +(b.x-a.x)/a.width)))/100}),ba(a,["base"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",x.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",x.prototype.position))),d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"base",x.prototype.base)));return new mxPoint(a.x+Math.min(a.width,c*a.width+d),a.y+a.height-b)},function(a,b){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",x.prototype.position))); +this.state.style.base=Math.round(Math.max(0,Math.min(a.width,b.x-a.x-c*a.width)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ja(a));return b},internalStorage:function(a){var b=[ba(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",J.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",J.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width, +b.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ja(a));return b},corner:function(a){return[ba(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",M.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",M.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width, b.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})]},tee:function(a){return[ba(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",ea.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",ea.prototype.dy)));return new mxPoint(a.x+(a.width+b)/2,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,2*Math.min(a.width/2,b.x-a.x-a.width/2)));this.state.style.dy=Math.round(Math.max(0, -Math.min(a.height,b.y-a.y)))})]},singleArrow:ja(1),doubleArrow:ja(.5),folder:function(a){return[ba(a,["tabWidth","tabHeight"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"tabWidth",g.prototype.tabWidth))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"tabHeight",g.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",g.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(b=a.width-b);return new mxPoint(a.x+b,a.y+c)},function(a,b){var c= +Math.min(a.height,b.y-a.y)))})]},singleArrow:ia(1),doubleArrow:ia(.5),folder:function(a){return[ba(a,["tabWidth","tabHeight"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"tabWidth",g.prototype.tabWidth))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"tabHeight",g.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",g.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(b=a.width-b);return new mxPoint(a.x+b,a.y+c)},function(a,b){var c= Math.max(0,Math.min(a.width,b.x-a.x));mxUtils.getValue(this.state.style,"tabPosition",g.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(c=a.width-c);this.state.style.tabWidth=Math.round(c);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))})]},document:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",l.prototype.size))));return new mxPoint(a.x+3*a.width/4,a.y+(1-b)*a.height)},function(a,b){this.state.style.size= Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))})]},tape:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",k.prototype.size))));return new mxPoint(a.getCenterX(),a.y+b*a.height/2)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(b.y-a.y)/a.height*2))})]},offPageConnector:function(a){return[ba(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",fa.prototype.size)))); -return new mxPoint(a.getCenterX(),a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))})]},step:ta(x.prototype.size,!0,null,!0,x.prototype.fixedSize),hexagon:ta(y.prototype.size,!0,.5,!0),curlyBracket:ta(p.prototype.size,!1),display:ta(oa.prototype.size,!1),cube:Ca(1,a.prototype.size,!1),card:Ca(.5,h.prototype.size,!0),loopLimit:Ca(.5,R.prototype.size,!0),trapezoid:Ga(.5),parallelogram:Ga(1)};Graph.createHandle=ba;Graph.handleFactory=ua;mxVertexHandler.prototype.createCustomHandles= +return new mxPoint(a.getCenterX(),a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))})]},step:ta(w.prototype.size,!0,null,!0,w.prototype.fixedSize),hexagon:ta(y.prototype.size,!0,.5,!0),curlyBracket:ta(p.prototype.size,!1),display:ta(oa.prototype.size,!1),cube:Ca(1,a.prototype.size,!1),card:Ca(.5,h.prototype.size,!0),loopLimit:Ca(.5,R.prototype.size,!0),trapezoid:Ga(.5),parallelogram:Ga(1)};Graph.createHandle=ba;Graph.handleFactory=ua;mxVertexHandler.prototype.createCustomHandles= function(){if(1==this.state.view.graph.getSelectionCount()&&this.graph.isCellRotatable(this.state.cell)){var a=this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_RECTANGLE);a=ua[a];null==a&&null!=this.state.shape&&this.state.shape.isRoundable()&&(a=ua[mxConstants.SHAPE_RECTANGLE]);if(null!=a)return a(this.state)}return null};mxEdgeHandler.prototype.createCustomHandles=function(){if(1==this.state.view.graph.getSelectionCount()){var a= -this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_CONNECTOR);a=ua[a];if(null!=a)return a(this.state)}return null}}else Graph.createHandle=function(){},Graph.handleFactory={};var va=new mxPoint(1,0),wa=new mxPoint(1,0),ja=mxUtils.toRadians(-30),va=mxUtils.getRotatedPoint(va,Math.cos(ja),Math.sin(ja)),ja=mxUtils.toRadians(-150),wa=mxUtils.getRotatedPoint(wa,Math.cos(ja),Math.sin(ja));mxEdgeStyle.IsometricConnector=function(a,b, +this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_CONNECTOR);a=ua[a];if(null!=a)return a(this.state)}return null}}else Graph.createHandle=function(){},Graph.handleFactory={};var va=new mxPoint(1,0),wa=new mxPoint(1,0),ia=mxUtils.toRadians(-30),va=mxUtils.getRotatedPoint(va,Math.cos(ia),Math.sin(ia)),ia=mxUtils.toRadians(-150),wa=mxUtils.getRotatedPoint(wa,Math.cos(ia),Math.sin(ia));mxEdgeStyle.IsometricConnector=function(a,b, c,d,e){var f=a.view;d=null!=d&&0<d.length?d[0]:null;var g=a.absolutePoints,h=g[0],g=g[g.length-1];null!=d&&(d=f.transformControlPoint(a,d));null==h&&null!=b&&(h=new mxPoint(b.getCenterX(),b.getCenterY()));null==g&&null!=c&&(g=new mxPoint(c.getCenterX(),c.getCenterY()));var k=va.x,l=va.y,m=wa.x,n=wa.y,p="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!=g&&null!=h){a=function(a,b,c){a-=q.x;var d=b-q.y;b=(n*a-m*d)/(k*n-l*m);a=(l*a-k*d)/(l*m-k*n);p?(c&&(q=new mxPoint(q.x+k*b,q.y+l* b),e.push(q)),q=new mxPoint(q.x+m*a,q.y+n*a)):(c&&(q=new mxPoint(q.x+m*a,q.y+n*a),e.push(q)),q=new mxPoint(q.x+k*b,q.y+l*b));e.push(q)};var q=h;null==d&&(d=new mxPoint(h.x+(g.x-h.x)/2,h.y+(g.y-h.y)/2));a(d.x,d.y,!0);a(g.x,g.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var Ma=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(a,b){if(b==mxEdgeStyle.IsometricConnector){var c=new mxElbowEdgeHandler(a);c.snapToTerminals=!1;return c}return Ma.apply(this, arguments)};b.prototype.constraints=[];c.prototype.getConstraints=function(a,b,c){a=[];var d=Math.tan(mxUtils.toRadians(30)),e=(.5-d)/2,d=Math.min(b,c/(.5+d));b=(b-d)/2;c=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,c+.25*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+.5*d,c+d*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+d,c+.25*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+d,c+.75*d));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,b+.5*d,c+(1-e)*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,c+.75*d));return a};w.prototype.getConstraints=function(a,b,c){a=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",this.position));var e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2))));parseFloat(mxUtils.getValue(this.style, +0),!1,null,b+.5*d,c+(1-e)*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,c+.75*d));return a};x.prototype.getConstraints=function(a,b,c){a=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",this.position));var e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2))));parseFloat(mxUtils.getValue(this.style, "base",this.base));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*(c-d)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null, e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(c-d)));b>=2*d&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5), !0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxEllipse.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(0, @@ -1925,32 +1927,35 @@ e.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,Math 0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(c+d)));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(1, 1),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b>=2*d&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};a.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0));a.push(new mxConnectionConstraint(new mxPoint(0, 0),!1,null,b-.5*d,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*(c+d)));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,c-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-d));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,0,.5*(c-d)));return a};g.prototype.constraints=mxRectangleShape.prototype.constraints;I.prototype.constraints=mxRectangleShape.prototype.constraints;T.prototype.constraints=mxRectangleShape.prototype.constraints;X.prototype.constraints=mxEllipse.prototype.constraints;Z.prototype.constraints=mxEllipse.prototype.constraints;ra.prototype.constraints=mxEllipse.prototype.constraints;sa.prototype.constraints=mxEllipse.prototype.constraints;N.prototype.constraints=mxRectangleShape.prototype.constraints; -pa.prototype.constraints=mxRectangleShape.prototype.constraints;oa.prototype.getConstraints=function(a,b,c){a=[];var d=Math.min(b,c/2),e=Math.min(b-d,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*b);a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+b-d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0));a.push(new mxConnectionConstraint(new mxPoint(1, -.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+b-d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));return a};R.prototype.constraints=mxRectangleShape.prototype.constraints;fa.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85, -.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];E.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25, -.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,.1),!1),new mxConnectionConstraint(new mxPoint(0,1/3),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(1,1/3),!1),new mxConnectionConstraint(new mxPoint(1,1),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1)];v.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75, -0),!0),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxActor.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.25, -.2),!1),new mxConnectionConstraint(new mxPoint(.1,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.75,.25),!1),new mxConnectionConstraint(new mxPoint(.9,.5),!1),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];f.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(.5, -.25),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5,.75),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];k.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.35),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.65),!1),new mxConnectionConstraint(new mxPoint(1, -.35),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,.65),!1),new mxConnectionConstraint(new mxPoint(.25,1),!1),new mxConnectionConstraint(new mxPoint(.75,0),!1)];x.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75, -1),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxLine.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1, -.5),!1)];V.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1)];mxDoubleEllipse.prototype.constraints=mxEllipse.prototype.constraints;mxRhombus.prototype.constraints=mxEllipse.prototype.constraints;mxTriangle.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5, -1),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0)];mxHexagon.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.375,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.625,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1, -.75),!0),new mxConnectionConstraint(new mxPoint(.375,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.625,1),!0)];mxCloud.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.25),!1),new mxConnectionConstraint(new mxPoint(.4,.1),!1),new mxConnectionConstraint(new mxPoint(.16,.55),!1),new mxConnectionConstraint(new mxPoint(.07,.4),!1),new mxConnectionConstraint(new mxPoint(.31,.8),!1),new mxConnectionConstraint(new mxPoint(.13,.77),!1),new mxConnectionConstraint(new mxPoint(.8, -.8),!1),new mxConnectionConstraint(new mxPoint(.55,.95),!1),new mxConnectionConstraint(new mxPoint(.875,.5),!1),new mxConnectionConstraint(new mxPoint(.96,.7),!1),new mxConnectionConstraint(new mxPoint(.625,.2),!1),new mxConnectionConstraint(new mxPoint(.88,.25),!1)];m.prototype.constraints=mxRectangleShape.prototype.constraints;n.prototype.constraints=mxRectangleShape.prototype.constraints;l.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5, -0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;ea.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style, -"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*b+.25*d,e));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,.5*(b+d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),c));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),e));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,.25*b-.25*d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*e));return a};M.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1, -0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,c));a.push(new mxConnectionConstraint(new mxPoint(0, -.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));return a};aa.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1, -1),!1)];S.prototype.getConstraints=function(a,b,c){a=[];var d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize)))),d=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-e),d));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,b-e,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-e),c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-d));return a};Q.prototype.getConstraints=function(a,b,c){a=[];var d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",S.prototype.arrowWidth)))),e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style, -"arrowSize",S.prototype.arrowSize)))),d=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*b,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*b,c-d));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,e,c));return a};na.prototype.getConstraints=function(a,b,c){a=[];var d=Math.min(c,b),e=Math.max(0,Math.min(d,d*parseFloat(mxUtils.getValue(this.style,"size",this.size)))),d=(c-e)/2,f=d+e,g=(b-e)/2,e=g+e;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,0));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,e,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,c-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,c));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,f));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,.5*(b+e),d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,d));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+e),f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0, -.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,d));return a};K.prototype.constraints=null;Y.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7, -.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];O.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.175,.25),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.175,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];ca.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1, -.5),!1)];W.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)]})();
\ No newline at end of file +0),!1,null,0,.5*(c-d)));return a};g.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(a.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,0)),a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,d,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),e))):(a.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-.5*d,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,e)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),e)));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.25*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.75*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null, +0,.5*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.75*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return a};J.prototype.constraints=mxRectangleShape.prototype.constraints;T.prototype.constraints=mxRectangleShape.prototype.constraints;X.prototype.constraints=mxEllipse.prototype.constraints; +Y.prototype.constraints=mxEllipse.prototype.constraints;ra.prototype.constraints=mxEllipse.prototype.constraints;sa.prototype.constraints=mxEllipse.prototype.constraints;N.prototype.constraints=mxRectangleShape.prototype.constraints;pa.prototype.constraints=mxRectangleShape.prototype.constraints;oa.prototype.getConstraints=function(a,b,c){a=[];var d=Math.min(b,c/2),e=Math.min(b-d,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*b);a.push(new mxConnectionConstraint(new mxPoint(0, +.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+b-d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+b-d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));return a};R.prototype.constraints= +mxRectangleShape.prototype.constraints;fa.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1, +.5),!0),new mxConnectionConstraint(new mxPoint(1,.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];E.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,.1),!1),new mxConnectionConstraint(new mxPoint(0,1/3),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(1, +1/3),!1),new mxConnectionConstraint(new mxPoint(1,1),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1)];v.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1, +.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxActor.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.25,.2),!1),new mxConnectionConstraint(new mxPoint(.1,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.75,.25),!1),new mxConnectionConstraint(new mxPoint(.9,.5),!1),new mxConnectionConstraint(new mxPoint(1, +.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];f.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(.5,.25),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5, +.75),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];k.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.35),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.65),!1),new mxConnectionConstraint(new mxPoint(1,.35),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,.65),!1),new mxConnectionConstraint(new mxPoint(.25,1),!1),new mxConnectionConstraint(new mxPoint(.75,0),!1)];w.prototype.constraints= +[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1, +.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxLine.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];V.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1)];mxDoubleEllipse.prototype.constraints=mxEllipse.prototype.constraints;mxRhombus.prototype.constraints= +mxEllipse.prototype.constraints;mxTriangle.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0)];mxHexagon.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.375,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.625, +0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.375,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.625,1),!0)];mxCloud.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25, +.25),!1),new mxConnectionConstraint(new mxPoint(.4,.1),!1),new mxConnectionConstraint(new mxPoint(.16,.55),!1),new mxConnectionConstraint(new mxPoint(.07,.4),!1),new mxConnectionConstraint(new mxPoint(.31,.8),!1),new mxConnectionConstraint(new mxPoint(.13,.77),!1),new mxConnectionConstraint(new mxPoint(.8,.8),!1),new mxConnectionConstraint(new mxPoint(.55,.95),!1),new mxConnectionConstraint(new mxPoint(.875,.5),!1),new mxConnectionConstraint(new mxPoint(.96,.7),!1),new mxConnectionConstraint(new mxPoint(.625, +.2),!1),new mxConnectionConstraint(new mxPoint(.88,.25),!1)];m.prototype.constraints=mxRectangleShape.prototype.constraints;n.prototype.constraints=mxRectangleShape.prototype.constraints;l.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0, +.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;ea.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5, +0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*b+.25*d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),c));a.push(new mxConnectionConstraint(new mxPoint(.5, +1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*b-.25*d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*e));return a};M.prototype.getConstraints=function(a,b,c){a=[];var d= +Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,.5*(b+d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,c));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));return a};aa.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0, +.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];S.prototype.getConstraints=function(a,b,c){a=[];var d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))), +e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize)))),d=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-e),d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,c));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,.5*(b-e),c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-d));return a};P.prototype.getConstraints=function(a,b,c){a=[];var d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",S.prototype.arrowWidth)))),e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",S.prototype.arrowSize)))),d=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,.5*b,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*b,c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));return a};na.prototype.getConstraints=function(a,b,c){a=[];var d=Math.min(c,b),e=Math.max(0,Math.min(d,d*parseFloat(mxUtils.getValue(this.style,"size",this.size)))), +d=(c-e)/2,f=d+e,g=(b-e)/2,e=g+e;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,0));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,c-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,g,c));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+e),d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,d));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,b,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+e),f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,f));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,g,d));return a};K.prototype.constraints=null;Z.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];O.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.175,.25),!1),new mxConnectionConstraint(new mxPoint(.25, +.5),!1),new mxConnectionConstraint(new mxPoint(.175,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];ca.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];W.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)]})();
\ No newline at end of file diff --git a/src/main/webapp/js/shapes.min.js b/src/main/webapp/js/shapes.min.js index 4522ceed..04a58cc5 100644 --- a/src/main/webapp/js/shapes.min.js +++ b/src/main/webapp/js/shapes.min.js @@ -1342,17 +1342,26 @@ mxCellRenderer.registerShape(mxShapeAndroidScrollbars2.prototype.cst.SCROLLBARS, mxShapeAndroidSpinner2.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.begin();a.moveTo(0,c);a.lineTo(b,c);a.stroke();d=Math.min(b/10,c);a.begin();a.moveTo(b-d,c);a.lineTo(b,c-d);a.lineTo(b,c);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeAndroidSpinner2.prototype.cst.SPINNER,mxShapeAndroidSpinner2);mxShapeAndroidSpinner2.prototype.constraints=null; function mxArchiMateLocation(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMateLocation,mxShape);mxArchiMateLocation.prototype.cst={LOCATION:"mxgraph.archimate.location"};mxArchiMateLocation.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1);a.translate(b-20,5);this.foreground(a,b-20,5,15,15)}; mxArchiMateLocation.prototype.background=function(a,d,e,b,c){a.rect(0,0,b,c);a.fillAndStroke()};mxArchiMateLocation.prototype.foreground=function(a,d,e,b,c){a.setDashed(!1);a.translate(3,0);b-=6;a.begin();a.moveTo(.5*b,c);a.arcTo(.1775*b,.3*c,0,0,0,.345*b,.7*c);a.arcTo(.538*b,.364*c,0,0,1,.5*b,0);a.arcTo(.538*b,.364*c,0,0,1,.655*b,.7*c);a.arcTo(.1775*b,.3*c,0,0,0,.5*b,c);a.stroke()};mxCellRenderer.registerShape(mxArchiMateLocation.prototype.cst.LOCATION,mxArchiMateLocation); +mxArchiMateLocation.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1, +.75),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.25),!1));return a}; function mxArchiMateBusiness(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMateBusiness,mxShape);mxArchiMateBusiness.prototype.cst={BUSINESS:"mxgraph.archimate.business",TYPE:"busType",PROCESS:"process",FUNCTION:"function",INTERACTION:"interaction",EVENT:"event",SERVICE:"service"}; mxArchiMateBusiness.prototype.customProperties=[{name:"busType",dispName:"Business Type",type:"enum",enumList:[{val:"process",dispName:"Process"},{val:"function",dispName:"Function"},{val:"interaction",dispName:"Interaction"},{val:"event",dispName:"Event"},{val:"service",dispName:"Service"}]}];mxArchiMateBusiness.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1);a.translate(b-20,5);this.foreground(a,b-20,5,15,15)}; mxArchiMateBusiness.prototype.background=function(a,d,e,b,c){a.roundrect(0,0,b,c,10,10);a.fillAndStroke()}; mxArchiMateBusiness.prototype.foreground=function(a,d,e,b,c){d=mxUtils.getValue(this.style,mxArchiMateBusiness.prototype.cst.TYPE,mxArchiMateBusiness.prototype.cst.PROCESS);a.setDashed(!1);d===mxArchiMateBusiness.prototype.cst.PROCESS?(a.translate(0,2),c-=4,a.begin(),a.moveTo(0,.15*c),a.lineTo(.65*b,.15*c),a.lineTo(.65*b,0),a.lineTo(b,.5*c),a.lineTo(.65*b,c),a.lineTo(.65*b,.85*c),a.lineTo(0,.85*c),a.close(),a.stroke()):d===mxArchiMateBusiness.prototype.cst.FUNCTION?(a.translate(2,0),b-=4,a.begin(), a.moveTo(0,.15*c),a.lineTo(.5*b,0),a.lineTo(b,.15*c),a.lineTo(b,c),a.lineTo(.5*b,.85*c),a.lineTo(0,c),a.close(),a.stroke()):d===mxArchiMateBusiness.prototype.cst.INTERACTION?(a.begin(),a.moveTo(.55*b,0),a.arcTo(.45*b,.5*c,0,0,1,.55*b,c),a.close(),a.moveTo(.45*b,0),a.arcTo(.45*b,.5*c,0,0,0,.45*b,c),a.close(),a.stroke()):d===mxArchiMateBusiness.prototype.cst.EVENT?(a.translate(0,3),c-=6,a.begin(),a.moveTo(b-.5*c,0),a.arcTo(.5*c,.5*c,0,0,1,b-.5*c,c),a.lineTo(0,c),a.arcTo(.5*c,.5*c,0,0,0,0,0),a.close(), -a.stroke()):d===mxArchiMateBusiness.prototype.cst.SERVICE&&(a.translate(0,3),c-=6,a.begin(),a.moveTo(b-.5*c,0),a.arcTo(.5*c,.5*c,0,0,1,b-.5*c,c),a.lineTo(0,c),a.arcTo(.5*c,.5*c,0,0,1,0,0),a.close(),a.stroke())};mxCellRenderer.registerShape(mxArchiMateBusiness.prototype.cst.BUSINESS,mxArchiMateBusiness);function mxArchiMateBusinessObject(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMateBusinessObject,mxShape); -mxArchiMateBusinessObject.prototype.cst={BUSINESS_OBJECT:"mxgraph.archimate.businessObject"};mxArchiMateBusinessObject.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1);this.foreground(a,0,0,b,c)};mxArchiMateBusinessObject.prototype.background=function(a,d,e,b,c){a.rect(0,0,b,c);a.fillAndStroke()};mxArchiMateBusinessObject.prototype.foreground=function(a,d,e,b,c){15<=c&&(a.begin(),a.moveTo(0,15),a.lineTo(b,15),a.stroke())}; -mxCellRenderer.registerShape(mxArchiMateBusinessObject.prototype.cst.BUSINESS_OBJECT,mxArchiMateBusinessObject);function mxArchiMateRepresentation(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMateRepresentation,mxShape);mxArchiMateRepresentation.prototype.cst={REPRESENTATION:"mxgraph.archimate.representation"};mxArchiMateRepresentation.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c)}; -mxArchiMateRepresentation.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(0,0);a.lineTo(b,0);a.lineTo(b,.85*c);a.arcTo(.35*b,.35*c,0,0,0,.5*b,.85*c);a.arcTo(.35*b,.35*c,0,0,1,0,.85*c);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMateRepresentation.prototype.cst.REPRESENTATION,mxArchiMateRepresentation);function mxArchiMateProduct(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMateProduct,mxShape); -mxArchiMateProduct.prototype.cst={PRODUCT:"mxgraph.archimate.product"};mxArchiMateProduct.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1);this.foreground(a,0,0,b,c)};mxArchiMateProduct.prototype.background=function(a,d,e,b,c){a.rect(0,0,b,c);a.fillAndStroke()};mxArchiMateProduct.prototype.foreground=function(a,d,e,b,c){15<=c&&(a.begin(),a.moveTo(0,15),a.lineTo(.6*b,15),a.lineTo(.6*b,0),a.stroke())}; -mxCellRenderer.registerShape(mxArchiMateProduct.prototype.cst.PRODUCT,mxArchiMateProduct);function mxArchiMateApplication(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMateApplication,mxShape); +a.stroke()):d===mxArchiMateBusiness.prototype.cst.SERVICE&&(a.translate(0,3),c-=6,a.begin(),a.moveTo(b-.5*c,0),a.arcTo(.5*c,.5*c,0,0,1,b-.5*c,c),a.lineTo(0,c),a.arcTo(.5*c,.5*c,0,0,1,0,0),a.close(),a.stroke())};mxCellRenderer.registerShape(mxArchiMateBusiness.prototype.cst.BUSINESS,mxArchiMateBusiness); +mxArchiMateBusiness.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,2.9,2.9));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,-2.9,2.9));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1, +.75),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1,null,-2.9,-2.9));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,2.9,-2.9));a.push(new mxConnectionConstraint(new mxPoint(0,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.25),!1));return a}; +function mxArchiMateBusinessObject(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMateBusinessObject,mxShape);mxArchiMateBusinessObject.prototype.cst={BUSINESS_OBJECT:"mxgraph.archimate.businessObject"};mxArchiMateBusinessObject.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1);this.foreground(a,0,0,b,c)}; +mxArchiMateBusinessObject.prototype.background=function(a,d,e,b,c){a.rect(0,0,b,c);a.fillAndStroke()};mxArchiMateBusinessObject.prototype.foreground=function(a,d,e,b,c){15<=c&&(a.begin(),a.moveTo(0,15),a.lineTo(b,15),a.stroke())};mxCellRenderer.registerShape(mxArchiMateBusinessObject.prototype.cst.BUSINESS_OBJECT,mxArchiMateBusinessObject); +mxArchiMateBusinessObject.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,2.9,2.9));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,-2.9,2.9));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1, +.75),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1,null,-2.9,-2.9));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,2.9,-2.9));a.push(new mxConnectionConstraint(new mxPoint(0,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.25),!1));return a}; +function mxArchiMateRepresentation(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMateRepresentation,mxShape);mxArchiMateRepresentation.prototype.cst={REPRESENTATION:"mxgraph.archimate.representation"};mxArchiMateRepresentation.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c)}; +mxArchiMateRepresentation.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(0,0);a.lineTo(b,0);a.lineTo(b,.85*c);a.arcTo(.35*b,.35*c,0,0,0,.5*b,.85*c);a.arcTo(.35*b,.35*c,0,0,1,0,.85*c);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMateRepresentation.prototype.cst.REPRESENTATION,mxArchiMateRepresentation); +mxArchiMateRepresentation.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1, +.75),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.85),!1,null));a.push(new mxConnectionConstraint(new mxPoint(.75,.745),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,.85),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,.955),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.85),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.25),!1));return a}; +function mxArchiMateProduct(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMateProduct,mxShape);mxArchiMateProduct.prototype.cst={PRODUCT:"mxgraph.archimate.product"};mxArchiMateProduct.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1);this.foreground(a,0,0,b,c)};mxArchiMateProduct.prototype.background=function(a,d,e,b,c){a.rect(0,0,b,c);a.fillAndStroke()}; +mxArchiMateProduct.prototype.foreground=function(a,d,e,b,c){15<=c&&(a.begin(),a.moveTo(0,15),a.lineTo(.6*b,15),a.lineTo(.6*b,0),a.stroke())};mxCellRenderer.registerShape(mxArchiMateProduct.prototype.cst.PRODUCT,mxArchiMateProduct);function mxArchiMateApplication(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMateApplication,mxShape); mxArchiMateApplication.prototype.cst={APPLICATION:"mxgraph.archimate.application",TYPE:"appType",COMPONENT:"comp",INTERFACE:"interface",INTERFACE2:"interface2",FUNCTION:"function",INTERACTION:"interaction",SERVICE:"service",NODE:"node",NETWORK:"network",COMM_PATH:"commPath",SYS_SW:"sysSw",ARTIFACT:"artifact",ACTOR:"actor",ROLE:"role",COLLABORATION:"collab"}; mxArchiMateApplication.prototype.customProperties=[{name:"appType",dispName:"App Type",type:"enum",enumList:[{val:"comp",dispName:"Component"},{val:"interface",dispName:"Interface"},{val:"interface2",dispName:"Interface2"},{val:"function",dispName:"Function"},{val:"interaction",dispName:"Interaction"},{val:"service",dispName:"Service"},{val:"node",dispName:"Node"},{val:"network",dispName:"Network"},{val:"commPath",dispName:"Comm Path"},{val:"artifact",dispName:"Artifact"},{val:"sysSw",dispName:"System Sw"}, {val:"path",dispName:"Path"},{val:"actor",dispName:"Actor"},{val:"role",dispName:"Role"},{val:"collab",dispName:"Collaboration"}]}];mxArchiMateApplication.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1);a.translate(b-20,5);this.foreground(a,b-20,5,15,15)};mxArchiMateApplication.prototype.background=function(a,d,e,b,c){a.rect(0,0,b,c);a.fillAndStroke()}; @@ -1362,21 +1371,31 @@ b,.8*c),a.lineTo(0,c),a.lineTo(0,.2*c),a.close(),a.stroke()):d===mxArchiMateAppl (a.begin(),a.moveTo(0,.25*c),a.lineTo(.25*b,0),a.lineTo(b,0),a.lineTo(b,.75*c),a.lineTo(.75*b,c),a.lineTo(0,c),a.close(),a.moveTo(0,.25*c),a.lineTo(.75*b,.25*c),a.lineTo(.75*b,c),a.moveTo(b,0),a.lineTo(.75*b,.25*c),a.stroke()):d===mxArchiMateApplication.prototype.cst.NETWORK?(a.translate(0,2),c-=4,a.begin(),a.moveTo(.4*b,.2*c),a.lineTo(.85*b,.2*c),a.lineTo(.6*b,.8*c),a.lineTo(.15*b,.8*c),a.close(),a.stroke(),e=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,"#000000"),a.setFillColor(e), a.ellipse(.25*b,0,.3*b,.4*c),a.fill(),a.ellipse(.7*b,0,.3*b,.4*c),a.fill(),a.ellipse(0,.6*c,.3*b,.4*c),a.fill(),a.ellipse(.45*b,.6*c,.3*b,.4*c),a.fill()):d===mxArchiMateApplication.prototype.cst.COMM_PATH?(a.translate(0,5),c-=10,a.begin(),a.moveTo(.1*b,0),a.lineTo(0,.5*c),a.lineTo(.1*b,c),a.moveTo(.9*b,0),a.lineTo(b,.5*c),a.lineTo(.9*b,c),a.stroke(),a.setDashed(!0),a.begin(),a.moveTo(0,.5*c),a.lineTo(b,.5*c),a.stroke()):d===mxArchiMateApplication.prototype.cst.SYS_SW?(a.ellipse(.3*b,0,.7*b,.7*c), a.stroke(),a.ellipse(0,.02*c,.98*b,.98*c),a.fillAndStroke()):d===mxArchiMateApplication.prototype.cst.ARTIFACT?(a.translate(2,0),b-=4,a.begin(),a.moveTo(0,0),a.lineTo(.7*b,0),a.lineTo(b,.22*c),a.lineTo(b,c),a.lineTo(0,c),a.close(),a.moveTo(.7*b,0),a.lineTo(.7*b,.22*c),a.lineTo(b,.22*c),a.stroke()):d===mxArchiMateApplication.prototype.cst.ACTOR&&(a.translate(3,0),b-=6,a.ellipse(.2*b,0,.6*b,.3*c),a.stroke(),a.begin(),a.moveTo(.5*b,.3*c),a.lineTo(.5*b,.75*c),a.moveTo(0,.45*c),a.lineTo(b,.45*c),a.moveTo(0, -c),a.lineTo(.5*b,.75*c),a.lineTo(b,c),a.stroke());d===mxArchiMateApplication.prototype.cst.ROLE&&(a.translate(0,4),c-=8,a.begin(),a.moveTo(.8*b,0),a.lineTo(.2*b,0),a.arcTo(.2*b,.5*c,0,0,0,.2*b,c),a.lineTo(.8*b,c),a.stroke(),a.ellipse(.6*b,0,.4*b,c),a.stroke())};mxCellRenderer.registerShape(mxArchiMateApplication.prototype.cst.APPLICATION,mxArchiMateApplication);function mxArchiMateTech(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1} -mxUtils.extend(mxArchiMateTech,mxShape);mxArchiMateTech.prototype.cst={TECH:"mxgraph.archimate.tech",TYPE:"techType",DEVICE:"device",PLATEAU:"plateau"};mxArchiMateTech.prototype.customProperties=[{name:"techType",dispName:"Tech Type",type:"enum",enumList:[{val:"device",dispName:"Device"},{val:"plateau",dispName:"Plateau"}]}];mxArchiMateTech.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1);a.translate(b-30,15);this.foreground(a,b-30,15,15,15)}; -mxArchiMateTech.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(0,10);a.lineTo(10,0);a.lineTo(b,0);a.lineTo(b,c-10);a.lineTo(b-10,c);a.lineTo(0,c);a.close();a.moveTo(0,10);a.lineTo(b-10,10);a.lineTo(b-10,c);a.moveTo(b,0);a.lineTo(b-10,10);a.fillAndStroke()}; +c),a.lineTo(.5*b,.75*c),a.lineTo(b,c),a.stroke());d===mxArchiMateApplication.prototype.cst.ROLE&&(a.translate(0,4),c-=8,a.begin(),a.moveTo(.8*b,0),a.lineTo(.2*b,0),a.arcTo(.2*b,.5*c,0,0,0,.2*b,c),a.lineTo(.8*b,c),a.stroke(),a.ellipse(.6*b,0,.4*b,c),a.stroke())};mxCellRenderer.registerShape(mxArchiMateApplication.prototype.cst.APPLICATION,mxArchiMateApplication); +mxArchiMateApplication.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1, +.75),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.25),!1));return a}; +function mxArchiMateTech(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMateTech,mxShape);mxArchiMateTech.prototype.cst={TECH:"mxgraph.archimate.tech",TYPE:"techType",DEVICE:"device",PLATEAU:"plateau"};mxArchiMateTech.prototype.customProperties=[{name:"techType",dispName:"Tech Type",type:"enum",enumList:[{val:"device",dispName:"Device"},{val:"plateau",dispName:"Plateau"}]}]; +mxArchiMateTech.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1);a.translate(b-30,15);this.foreground(a,b-30,15,15,15)};mxArchiMateTech.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(0,10);a.lineTo(10,0);a.lineTo(b,0);a.lineTo(b,c-10);a.lineTo(b-10,c);a.lineTo(0,c);a.close();a.moveTo(0,10);a.lineTo(b-10,10);a.lineTo(b-10,c);a.moveTo(b,0);a.lineTo(b-10,10);a.fillAndStroke()}; mxArchiMateTech.prototype.foreground=function(a,d,e,b,c){d=mxUtils.getValue(this.style,mxArchiMateTech.prototype.cst.TYPE,mxArchiMateTech.prototype.cst.DEVICE);a.setDashed(!1);d===mxArchiMateTech.prototype.cst.DEVICE?(a.roundrect(0,0,b,.88*c,.05*b,.05*c),a.stroke(),a.begin(),a.moveTo(.1*b,.88*c),a.lineTo(0,c),a.lineTo(b,c),a.lineTo(.9*b,.88*c),a.stroke()):d===mxArchiMateTech.prototype.cst.PLATEAU&&(d=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,"#000000"),a.setFillColor(d),a.rect(.4* -b,0,.6*b,.2*c),a.fill(),a.rect(.2*b,.4*c,.6*b,.2*c),a.fill(),a.rect(0,.8*c,.6*b,.2*c),a.fill())};mxCellRenderer.registerShape(mxArchiMateTech.prototype.cst.TECH,mxArchiMateTech);function mxArchiMateMotivational(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMateMotivational,mxShape); -mxArchiMateMotivational.prototype.cst={MOTIV:"mxgraph.archimate.motiv",TYPE:"motivType",STAKE:"stake",DRIVER:"driver",ASSESSMENT:"assess",GOAL:"goal",REQUIREMENT:"req",CONSTRAINT:"const",PRINCIPLE:"princ"}; +b,0,.6*b,.2*c),a.fill(),a.rect(.2*b,.4*c,.6*b,.2*c),a.fill(),a.rect(0,.8*c,.6*b,.2*c),a.fill())};mxCellRenderer.registerShape(mxArchiMateTech.prototype.cst.TECH,mxArchiMateTech); +mxArchiMateTech.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,10));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,10,0));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(1, +.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1,null,0,-10));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1,null,-10,0));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(0, +.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.25),!1));return a};function mxArchiMateMotivational(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMateMotivational,mxShape);mxArchiMateMotivational.prototype.cst={MOTIV:"mxgraph.archimate.motiv",TYPE:"motivType",STAKE:"stake",DRIVER:"driver",ASSESSMENT:"assess",GOAL:"goal",REQUIREMENT:"req",CONSTRAINT:"const",PRINCIPLE:"princ"}; mxArchiMateMotivational.prototype.customProperties=[{name:"motivType",dispName:"Motivational Type",type:"enum",enumList:[{val:"stake",dispName:"Stake"},{val:"driver",dispName:"Driver"},{val:"assess",dispName:"Assessment"},{val:"goal",dispName:"Goal"},{val:"req",dispName:"Requirement"},{val:"const",dispName:"Constraint"},{val:"princ",dispName:"Principle"}]}]; mxArchiMateMotivational.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1);a.translate(b-20,5);this.foreground(a,b-20,5,15,15)};mxArchiMateMotivational.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(10,0);a.lineTo(b-10,0);a.lineTo(b,10);a.lineTo(b,c-10);a.lineTo(b-10,c);a.lineTo(10,c);a.lineTo(0,c-10);a.lineTo(0,10);a.close();a.fillAndStroke()}; mxArchiMateMotivational.prototype.foreground=function(a,d,e,b,c){d=mxUtils.getValue(this.style,mxArchiMateMotivational.prototype.cst.TYPE,mxArchiMateMotivational.prototype.cst.STAKE);a.setDashed(!1);d===mxArchiMateMotivational.prototype.cst.STAKE?(a.translate(0,4),c-=8,a.begin(),a.moveTo(.8*b,0),a.lineTo(.2*b,0),a.arcTo(.2*b,.5*c,0,0,0,.2*b,c),a.lineTo(.8*b,c),a.stroke(),a.ellipse(.6*b,0,.4*b,c),a.stroke()):d===mxArchiMateMotivational.prototype.cst.DRIVER?(a.ellipse(.1*b,.1*c,.8*b,.8*c),a.stroke(), a.begin(),a.moveTo(0,.5*c),a.lineTo(b,.5*c),a.moveTo(.5*b,0),a.lineTo(.5*b,c),a.moveTo(.145*b,.145*c),a.lineTo(.855*b,.855*c),a.moveTo(.145*b,.855*c),a.lineTo(.855*b,.145*c),a.stroke(),d=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,"#000000"),a.setFillColor(d),a.ellipse(.35*b,.35*c,.3*b,.3*c),a.fillAndStroke()):d===mxArchiMateMotivational.prototype.cst.ASSESSMENT?(a.ellipse(.2*b,0,.8*b,.8*c),a.stroke(),a.begin(),a.moveTo(0,c),a.lineTo(.32*b,.68*c),a.stroke()):d===mxArchiMateMotivational.prototype.cst.GOAL? (a.ellipse(0,0,b,c),a.stroke(),a.ellipse(.15*b,.15*c,.7*b,.7*c),a.stroke(),d=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,"#000000"),a.setFillColor(d),a.ellipse(.3*b,.3*c,.4*b,.4*c),a.fillAndStroke()):d===mxArchiMateMotivational.prototype.cst.REQUIREMENT?(a.translate(0,4),c-=8,a.begin(),a.moveTo(.25*b,0),a.lineTo(b,0),a.lineTo(.75*b,c),a.lineTo(0,c),a.close(),a.stroke()):d===mxArchiMateMotivational.prototype.cst.CONSTRAINT?(a.translate(0,4),c-=8,a.begin(),a.moveTo(.25*b,0),a.lineTo(b, 0),a.lineTo(.75*b,c),a.lineTo(0,c),a.close(),a.moveTo(.45*b,0),a.lineTo(.2*b,c),a.stroke()):d===mxArchiMateMotivational.prototype.cst.PRINCIPLE&&(a.begin(),a.moveTo(.05*b,.05*c),a.arcTo(2.3*b,2.3*c,0,0,1,.95*b,.05*c),a.arcTo(2.3*b,2.3*c,0,0,1,.95*b,.95*c),a.arcTo(2.3*b,2.3*c,0,0,1,.05*b,.95*c),a.arcTo(2.3*b,2.3*c,0,0,1,.05*b,.05*c),a.close(),a.stroke(),d=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,"#000000"),a.setFillColor(d),a.begin(),a.moveTo(.45*b,.7*c),a.lineTo(.42*b,.15*c),a.lineTo(.58* -b,.15*c),a.lineTo(.55*b,.7*c),a.close(),a.fill(),a.rect(.45*b,.75*c,.1*b,.1*c),a.fill())};mxCellRenderer.registerShape(mxArchiMateMotivational.prototype.cst.MOTIV,mxArchiMateMotivational);function mxArchiMateGap(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMateGap,mxShape);mxArchiMateGap.prototype.cst={GAP:"mxgraph.archimate.gap"}; -mxArchiMateGap.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1);a.translate(b-20,5);this.foreground(a,b-20,5,15,15)};mxArchiMateGap.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(0,0);a.lineTo(b,0);a.lineTo(b,.85*c);a.arcTo(.35*b,.35*c,0,0,0,.5*b,.85*c);a.arcTo(.35*b,.35*c,0,0,1,0,.85*c);a.close();a.fillAndStroke()}; -mxArchiMateGap.prototype.foreground=function(a,d,e,b,c){a.setDashed(!1);a.translate(0,2);c-=4;a.ellipse(.15*b,0,.7*b,c);a.stroke();a.begin();a.moveTo(0,.35*c);a.lineTo(b,.35*c);a.moveTo(0,.65*c);a.lineTo(b,.65*c);a.stroke()};mxCellRenderer.registerShape(mxArchiMateGap.prototype.cst.GAP,mxArchiMateGap);function mxArchiMate3Application(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Application,mxShape); +b,.15*c),a.lineTo(.55*b,.7*c),a.close(),a.fill(),a.rect(.45*b,.75*c,.1*b,.1*c),a.fill())};mxCellRenderer.registerShape(mxArchiMateMotivational.prototype.cst.MOTIV,mxArchiMateMotivational); +mxArchiMateMotivational.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,5,5));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,-5,5));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1, +.75),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1,null,-5,-5));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,5,-5));a.push(new mxConnectionConstraint(new mxPoint(0,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.25),!1));return a}; +function mxArchiMateGap(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMateGap,mxShape);mxArchiMateGap.prototype.cst={GAP:"mxgraph.archimate.gap"};mxArchiMateGap.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1);a.translate(b-20,5);this.foreground(a,b-20,5,15,15)}; +mxArchiMateGap.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(0,0);a.lineTo(b,0);a.lineTo(b,.85*c);a.arcTo(.35*b,.35*c,0,0,0,.5*b,.85*c);a.arcTo(.35*b,.35*c,0,0,1,0,.85*c);a.close();a.fillAndStroke()};mxArchiMateGap.prototype.foreground=function(a,d,e,b,c){a.setDashed(!1);a.translate(0,2);c-=4;a.ellipse(.15*b,0,.7*b,c);a.stroke();a.begin();a.moveTo(0,.35*c);a.lineTo(b,.35*c);a.moveTo(0,.65*c);a.lineTo(b,.65*c);a.stroke()}; +mxCellRenderer.registerShape(mxArchiMateGap.prototype.cst.GAP,mxArchiMateGap); +mxArchiMateGap.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1, +.75),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.85),!1,null));a.push(new mxConnectionConstraint(new mxPoint(.75,.745),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,.85),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,.955),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.85),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.25),!1));return a}; +function mxArchiMate3Application(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Application,mxShape); mxArchiMate3Application.prototype.cst={APPLICATION:"mxgraph.archimate3.application",TYPE:"appType",COMPONENT:"comp",COLLABORATION:"collab",INTERFACE:"interface",INTERFACE2:"interface2",FUNCTION:"func",INTERACTION:"interaction",SERVICE:"serv",EVENT:"event",EVENT2:"event2",NODE:"node",NETWORK:"netw",COMM_PATH:"commPath",ACTOR:"actor",ASSESSMENT:"assess",GOAL:"goal",OUTCOME:"outcome",ROLE:"role",PROCESS:"proc",DRIVER:"driver",PRINCIPLE:"principle",REQUIREMENT:"requirement",CONSTRAINT:"constraint",RESOURCE:"resource", CAPABILITY:"capability",COURSE:"course",MATERIAL:"material",DISTRIBUTION:"distribution",SYS_SW:"sysSw",ARTIFACT:"artifact",PATH:"path",ARCHI_TYPE:"archiType",TYPE_SQUARE:"square",TYPE_ROUNDED:"rounded",TYPE_OCT:"oct"}; mxArchiMate3Application.prototype.customProperties=[{name:"archiType",dispName:"Type",type:"enum",enumList:[{val:"square",dispName:"Square"},{val:"rounded",dispName:"Rounded"},{val:"oct",dispName:"Octagonal"}]},{name:"appType",dispName:"App Type",type:"enum",enumList:[{val:"comp",dispName:"Component"},{val:"collab",dispName:"Collaboration"},{val:"interface",dispName:"Interface"},{val:"interface2",dispName:"Interface2"},{val:"func",dispName:"Function"},{val:"interaction",dispName:"Interaction"},{val:"serv", @@ -1394,40 +1413,77 @@ b,.35*c,.3*b,.3*c),a.fillAndStroke()):f===mxArchiMate3Application.prototype.cst. b,2.3*c,0,0,1,.05*b,.05*c),a.close(),a.stroke(),d=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,"#000000"),a.setFillColor(d),a.begin(),a.moveTo(.45*b,.7*c),a.lineTo(.42*b,.15*c),a.lineTo(.58*b,.15*c),a.lineTo(.55*b,.7*c),a.close(),a.fill(),a.rect(.45*b,.75*c,.1*b,.1*c),a.fill()):f===mxArchiMate3Application.prototype.cst.REQUIREMENT?(a.translate(0,4),mxArchiMate3Requirement.prototype.background(a,d,e,b,c-8)):f===mxArchiMate3Application.prototype.cst.CONSTRAINT?(a.translate(0,4),mxArchiMate3Constraint.prototype.background(a, d,e,b,c-8)):f===mxArchiMate3Application.prototype.cst.MATERIAL?(a.translate(0,1),c-=2,a.begin(),a.moveTo(0,.5*c),a.lineTo(.25*b,0),a.lineTo(.75*b,0),a.lineTo(b,.5*c),a.lineTo(.75*b,c),a.lineTo(.25*b,c),a.close(),a.moveTo(.15*b,.5*c),a.lineTo(.31*b,.2*c),a.moveTo(.69*b,.2*c),a.lineTo(.85*b,.5*c),a.moveTo(.68*b,.8*c),a.lineTo(.32*b,.8*c),a.stroke()):f===mxArchiMate3Application.prototype.cst.DISTRIBUTION?(a.translate(0,4),mxArchiMate3Distribution.prototype.background(a,d,e,b,c-8)):f===mxArchiMate3Application.prototype.cst.RESOURCE? (a.translate(0,1),mxArchiMate3Resource.prototype.background(a,d,e,b,c-2)):f===mxArchiMate3Application.prototype.cst.CAPABILITY?mxArchiMate3Capability.prototype.background(a,d,e,b,c):f===mxArchiMate3Application.prototype.cst.COURSE?mxArchiMate3Course.prototype.background(a,d,e,b,c):f===mxArchiMate3Application.prototype.cst.SYS_SW?mxArchiMate3SysSw.prototype.background(a,d,e,b,c):f===mxArchiMate3Application.prototype.cst.ARTIFACT?(a.translate(2,0),mxArchiMate3Artifact.prototype.background(a,d,e,b-4, -c)):f===mxArchiMate3Application.prototype.cst.PATH&&(a.translate(0,5),mxArchiMate3Path.prototype.background(a,d,e,b,c-10))};mxCellRenderer.registerShape(mxArchiMate3Application.prototype.cst.APPLICATION,mxArchiMate3Application);function mxArchiMate3Component(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Component,mxShape);mxArchiMate3Component.prototype.cst={COMPONENT:"mxgraph.archimate3.component"}; -mxArchiMate3Component.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)};mxArchiMate3Component.prototype.background=function(a,d,e,b,c){a.rect(.25*b,0,.75*b,c);a.fillAndStroke();a.rect(0,.25*c,.5*b,.15*c);a.fillAndStroke();a.rect(0,.6*c,.5*b,.15*c);a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMate3Component.prototype.cst.COMPONENT,mxArchiMate3Component); -function mxArchiMate3Collaboration(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Collaboration,mxShape);mxArchiMate3Collaboration.prototype.cst={COLLABORATION:"mxgraph.archimate3.collaboration"};mxArchiMate3Collaboration.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)}; -mxArchiMate3Collaboration.prototype.background=function(a,d,e,b,c){a.ellipse(0,0,.6*b,c);a.fillAndStroke();a.ellipse(.4*b,0,.6*b,c);a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMate3Collaboration.prototype.cst.COLLABORATION,mxArchiMate3Collaboration);function mxArchiMate3Interface(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Interface,mxShape);mxArchiMate3Interface.prototype.cst={INTERFACE:"mxgraph.archimate3.interface"}; +c)):f===mxArchiMate3Application.prototype.cst.PATH&&(a.translate(0,5),mxArchiMate3Path.prototype.background(a,d,e,b,c-10))};mxCellRenderer.registerShape(mxArchiMate3Application.prototype.cst.APPLICATION,mxArchiMate3Application); +mxArchiMate3Application.prototype.getConstraints=function(a,d,e){a=[];var b=mxUtils.getValue(this.style,mxArchiMate3Application.prototype.cst.ARCHI_TYPE,"square");a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.75), +!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.25),!1));"rounded"===b?(a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,2.9,2.9)),a.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,-2.9,2.9)), +a.push(new mxConnectionConstraint(new mxPoint(1,1),!1,null,-2.9,-2.9)),a.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,2.9,-2.9))):"oct"===b&&20<=d&&20<=e?(a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,5,5)),a.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,-5,5)),a.push(new mxConnectionConstraint(new mxPoint(1,1),!1,null,-5,-5)),a.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,5,-5))):(a.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(1, +0),!1)),a.push(new mxConnectionConstraint(new mxPoint(1,1),!1)),a.push(new mxConnectionConstraint(new mxPoint(0,1),!1)));return a};function mxArchiMate3Component(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Component,mxShape);mxArchiMate3Component.prototype.cst={COMPONENT:"mxgraph.archimate3.component"};mxArchiMate3Component.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)}; +mxArchiMate3Component.prototype.background=function(a,d,e,b,c){a.rect(.25*b,0,.75*b,c);a.fillAndStroke();a.rect(0,.25*c,.5*b,.15*c);a.fillAndStroke();a.rect(0,.6*c,.5*b,.15*c);a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMate3Component.prototype.cst.COMPONENT,mxArchiMate3Component); +mxArchiMate3Component.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(.625,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.625,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.325),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.675),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1, +1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));return a};function mxArchiMate3Collaboration(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Collaboration,mxShape);mxArchiMate3Collaboration.prototype.cst={COLLABORATION:"mxgraph.archimate3.collaboration"};mxArchiMate3Collaboration.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)}; +mxArchiMate3Collaboration.prototype.background=function(a,d,e,b,c){a.ellipse(0,0,.6*b,c);a.fillAndStroke();a.ellipse(.4*b,0,.6*b,c);a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMate3Collaboration.prototype.cst.COLLABORATION,mxArchiMate3Collaboration); +mxArchiMate3Collaboration.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(.11,.11),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,.125),!1));a.push(new mxConnectionConstraint(new mxPoint(.89,.11),!1));a.push(new mxConnectionConstraint(new mxPoint(.11,.89),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,.875),!1));a.push(new mxConnectionConstraint(new mxPoint(.89,.89),!1));a.push(new mxConnectionConstraint(new mxPoint(.3,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.7, +0),!1));a.push(new mxConnectionConstraint(new mxPoint(.3,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.7,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));return a};function mxArchiMate3Interface(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Interface,mxShape);mxArchiMate3Interface.prototype.cst={INTERFACE:"mxgraph.archimate3.interface"}; mxArchiMate3Interface.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)};mxArchiMate3Interface.prototype.background=function(a,d,e,b,c){a.ellipse(.5*b,0,.5*b,c);a.fillAndStroke();a.begin();a.moveTo(0,.5*c);a.lineTo(.5*b,.5*c);a.stroke()};mxCellRenderer.registerShape(mxArchiMate3Interface.prototype.cst.INTERFACE,mxArchiMate3Interface); -function mxArchiMate3Process(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Process,mxShape);mxArchiMate3Process.prototype.cst={PROCESS:"mxgraph.archimate3.process"};mxArchiMate3Process.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)}; -mxArchiMate3Process.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(0,.3*c);a.lineTo(.6*b,.3*c);a.lineTo(.6*b,0);a.lineTo(b,.5*c);a.lineTo(.6*b,c);a.lineTo(.6*b,.7*c);a.lineTo(0,.7*c);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMate3Process.prototype.cst.PROCESS,mxArchiMate3Process);function mxArchiMate3Function(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Function,mxShape); -mxArchiMate3Function.prototype.cst={FUNCTION:"mxgraph.archimate3.function"};mxArchiMate3Function.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)};mxArchiMate3Function.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(.5*b,0);a.lineTo(b,.2*c);a.lineTo(b,c);a.lineTo(.5*b,.8*c);a.lineTo(0,c);a.lineTo(0,.2*c);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMate3Function.prototype.cst.FUNCTION,mxArchiMate3Function); -function mxArchiMate3Interaction(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Interaction,mxShape);mxArchiMate3Interaction.prototype.cst={INTERACTION:"mxgraph.archimate3.interaction"};mxArchiMate3Interaction.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)}; -mxArchiMate3Interaction.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(.55*b,0);a.arcTo(.45*b,.5*c,0,0,1,.55*b,c);a.close();a.moveTo(.45*b,0);a.arcTo(.45*b,.5*c,0,0,0,.45*b,c);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMate3Interaction.prototype.cst.INTERACTION,mxArchiMate3Interaction);function mxArchiMate3Service(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Service,mxShape); -mxArchiMate3Service.prototype.cst={SERVICE:"mxgraph.archimate3.service"};mxArchiMate3Service.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)};mxArchiMate3Service.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(b-.5*c,0);a.arcTo(.5*c,.5*c,0,0,1,b-.5*c,c);a.lineTo(.5*c,c);a.arcTo(.5*c,.5*c,0,0,1,.5*c,0);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMate3Service.prototype.cst.SERVICE,mxArchiMate3Service); +mxArchiMate3Interface.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return a};function mxArchiMate3Process(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Process,mxShape); +mxArchiMate3Process.prototype.cst={PROCESS:"mxgraph.archimate3.process"};mxArchiMate3Process.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)};mxArchiMate3Process.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(0,.3*c);a.lineTo(.6*b,.3*c);a.lineTo(.6*b,0);a.lineTo(b,.5*c);a.lineTo(.6*b,c);a.lineTo(.6*b,.7*c);a.lineTo(0,.7*c);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMate3Process.prototype.cst.PROCESS,mxArchiMate3Process); +mxArchiMate3Process.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,.3),!1));a.push(new mxConnectionConstraint(new mxPoint(.3,.3),!1));a.push(new mxConnectionConstraint(new mxPoint(.6,.3),!1));a.push(new mxConnectionConstraint(new mxPoint(.6,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.6,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.6,.7),!1));a.push(new mxConnectionConstraint(new mxPoint(.3, +.7),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.7),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));return a};function mxArchiMate3Function(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Function,mxShape);mxArchiMate3Function.prototype.cst={FUNCTION:"mxgraph.archimate3.function"};mxArchiMate3Function.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)}; +mxArchiMate3Function.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(.5*b,0);a.lineTo(b,.2*c);a.lineTo(b,c);a.lineTo(.5*b,.8*c);a.lineTo(0,c);a.lineTo(0,.2*c);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMate3Function.prototype.cst.FUNCTION,mxArchiMate3Function); +mxArchiMate3Function.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.2),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.6),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,.8),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.6),!1));a.push(new mxConnectionConstraint(new mxPoint(0, +.2),!1));return a};function mxArchiMate3Interaction(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Interaction,mxShape);mxArchiMate3Interaction.prototype.cst={INTERACTION:"mxgraph.archimate3.interaction"};mxArchiMate3Interaction.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)}; +mxArchiMate3Interaction.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(.55*b,0);a.arcTo(.45*b,.5*c,0,0,1,.55*b,c);a.close();a.moveTo(.45*b,0);a.arcTo(.45*b,.5*c,0,0,0,.45*b,c);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMate3Interaction.prototype.cst.INTERACTION,mxArchiMate3Interaction); +mxArchiMate3Interaction.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.86,.14),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.86,.86),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.14,.86),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.14, +.14),!1));return a};function mxArchiMate3Service(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Service,mxShape);mxArchiMate3Service.prototype.cst={SERVICE:"mxgraph.archimate3.service"};mxArchiMate3Service.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)}; +mxArchiMate3Service.prototype.background=function(a,d,e,b,c){d=Math.max(b-.5*c,.5*b);b=Math.min(.5*c,.5*b);a.begin();a.moveTo(d,0);a.arcTo(.5*c,.5*c,0,0,1,d,c);a.lineTo(b,c);a.arcTo(.5*c,.5*c,0,0,1,b,0);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMate3Service.prototype.cst.SERVICE,mxArchiMate3Service); +mxArchiMate3Service.prototype.getConstraints=function(a,d,e){a=[];var b=Math.max(d-.5*e,.5*d);d=Math.min(.5*e,.5*d);a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,0));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,b+.355*e,.145*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+.5*e,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+.355*e,.855*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.355*e,.145*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*e,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.355*e,.855*e));return a}; function mxArchiMate3Requirement(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Requirement,mxShape);mxArchiMate3Requirement.prototype.cst={REQUIREMENT:"mxgraph.archimate3.requirement"};mxArchiMate3Requirement.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)}; -mxArchiMate3Requirement.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(.25*b,0);a.lineTo(b,0);a.lineTo(.75*b,c);a.lineTo(0,c);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMate3Requirement.prototype.cst.REQUIREMENT,mxArchiMate3Requirement);function mxArchiMate3Constraint(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Constraint,mxShape);mxArchiMate3Constraint.prototype.cst={CONSTRAINT:"mxgraph.archimate3.constraint"}; -mxArchiMate3Constraint.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)};mxArchiMate3Constraint.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(.25*b,0);a.lineTo(b,0);a.lineTo(.75*b,c);a.lineTo(0,c);a.close();a.moveTo(.45*b,0);a.lineTo(.2*b,c);a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMate3Constraint.prototype.cst.CONSTRAINT,mxArchiMate3Constraint); -function mxArchiMate3Event(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Event,mxShape);mxArchiMate3Event.prototype.cst={EVENT:"mxgraph.archimate3.event"};mxArchiMate3Event.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)}; -mxArchiMate3Event.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(b-.5*c,0);a.arcTo(.5*c,.5*c,0,0,1,b-.5*c,c);a.lineTo(0,c);a.lineTo(.5*c,.5*c);a.lineTo(0,0);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMate3Event.prototype.cst.EVENT,mxArchiMate3Event);function mxArchiMate3Event2(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Event2,mxShape);mxArchiMate3Event2.prototype.cst={EVENT2:"mxgraph.archimate3.event2"}; -mxArchiMate3Event2.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)};mxArchiMate3Event2.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(b-.5*c,0);a.arcTo(.5*c,.5*c,0,0,1,b-.5*c,c);a.lineTo(0,c);a.arcTo(.5*c,.5*c,0,0,0,0,0);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMate3Event2.prototype.cst.EVENT2,mxArchiMate3Event2); -function mxArchiMate3Actor(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Actor,mxShape);mxArchiMate3Actor.prototype.cst={ACTOR:"mxgraph.archimate3.actor"};mxArchiMate3Actor.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)}; -mxArchiMate3Actor.prototype.background=function(a,d,e,b,c){a.ellipse(.2*b,0,.6*b,.3*c);a.fillAndStroke();a.begin();a.moveTo(.5*b,.3*c);a.lineTo(.5*b,.75*c);a.moveTo(0,.45*c);a.lineTo(b,.45*c);a.moveTo(0,c);a.lineTo(.5*b,.75*c);a.lineTo(b,c);a.stroke()};mxCellRenderer.registerShape(mxArchiMate3Actor.prototype.cst.ACTOR,mxArchiMate3Actor);function mxArchiMate3Role(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Role,mxShape); -mxArchiMate3Role.prototype.cst={ROLE:"mxgraph.archimate3.role"};mxArchiMate3Role.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)};mxArchiMate3Role.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(.8*b,0);a.lineTo(.2*b,0);a.arcTo(.2*b,.5*c,0,0,0,.2*b,c);a.lineTo(.8*b,c);a.fillAndStroke();a.ellipse(.6*b,0,.4*b,c);a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMate3Role.prototype.cst.ROLE,mxArchiMate3Role); -function mxArchiMate3BusinessObject(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3BusinessObject,mxShape);mxArchiMate3BusinessObject.prototype.cst={BUSINESS_OBJECT:"mxgraph.archimate3.businessObject"};mxArchiMate3BusinessObject.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1);this.foreground(a,0,0,b,c)}; -mxArchiMate3BusinessObject.prototype.background=function(a,d,e,b,c){a.rect(0,0,b,c);a.fillAndStroke()};mxArchiMate3BusinessObject.prototype.foreground=function(a,d,e,b,c){15<=c&&(a.begin(),a.moveTo(0,15),a.lineTo(b,15),a.stroke())};mxCellRenderer.registerShape(mxArchiMate3BusinessObject.prototype.cst.BUSINESS_OBJECT,mxArchiMate3BusinessObject);function mxArchiMate3Contract(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1} -mxUtils.extend(mxArchiMate3Contract,mxShape);mxArchiMate3Contract.prototype.cst={CONTRACT:"mxgraph.archimate3.contract"};mxArchiMate3Contract.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1);this.foreground(a,0,0,b,c)};mxArchiMate3Contract.prototype.background=function(a,d,e,b,c){a.rect(0,0,b,c);a.fillAndStroke()}; -mxArchiMate3Contract.prototype.foreground=function(a,d,e,b,c){15<=c&&(a.begin(),a.moveTo(0,15),a.lineTo(b,15),a.stroke());30<=c&&(a.begin(),a.moveTo(0,c-15),a.lineTo(b,c-15),a.stroke())};mxCellRenderer.registerShape(mxArchiMate3Contract.prototype.cst.CONTRACT,mxArchiMate3Contract);function mxArchiMate3Product(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Product,mxShape);mxArchiMate3Product.prototype.cst={PRODUCT:"mxgraph.archimate3.product"}; -mxArchiMate3Product.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1);this.foreground(a,0,0,b,c)};mxArchiMate3Product.prototype.background=function(a,d,e,b,c){a.rect(0,0,b,c);a.fillAndStroke()};mxArchiMate3Product.prototype.foreground=function(a,d,e,b,c){15<=c&&(a.begin(),a.moveTo(0,15),a.lineTo(.6*b,15),a.lineTo(.6*b,0),a.stroke())};mxCellRenderer.registerShape(mxArchiMate3Product.prototype.cst.PRODUCT,mxArchiMate3Product); +mxArchiMate3Requirement.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(.25*b,0);a.lineTo(b,0);a.lineTo(.75*b,c);a.lineTo(0,c);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMate3Requirement.prototype.cst.REQUIREMENT,mxArchiMate3Requirement); +mxArchiMate3Requirement.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.9375,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(.875,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.8125,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(.75, +1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.0625,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(.125,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.1875,.25),!1));return a}; +function mxArchiMate3Constraint(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Constraint,mxShape);mxArchiMate3Constraint.prototype.cst={CONSTRAINT:"mxgraph.archimate3.constraint"};mxArchiMate3Constraint.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)}; +mxArchiMate3Constraint.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(.25*b,0);a.lineTo(b,0);a.lineTo(.75*b,c);a.lineTo(0,c);a.close();a.moveTo(.45*b,0);a.lineTo(.2*b,c);a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMate3Constraint.prototype.cst.CONSTRAINT,mxArchiMate3Constraint); +mxArchiMate3Constraint.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.9375,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(.875,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.8125,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(.75, +1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.0625,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(.125,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.1875,.25),!1));return a};function mxArchiMate3Event(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1} +mxUtils.extend(mxArchiMate3Event,mxShape);mxArchiMate3Event.prototype.cst={EVENT:"mxgraph.archimate3.event"};mxArchiMate3Event.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)};mxArchiMate3Event.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(b-.5*c,0);a.arcTo(.5*c,.5*c,0,0,1,b-.5*c,c);a.lineTo(0,c);a.lineTo(.5*c,.5*c);a.lineTo(0,0);a.close();a.fillAndStroke()}; +mxCellRenderer.registerShape(mxArchiMate3Event.prototype.cst.EVENT,mxArchiMate3Event); +mxArchiMate3Event.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*e,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*e,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,.5*(d-.5*e),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-.5*e),e));return a};function mxArchiMate3Event2(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Event2,mxShape);mxArchiMate3Event2.prototype.cst={EVENT2:"mxgraph.archimate3.event2"};mxArchiMate3Event2.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)}; +mxArchiMate3Event2.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(b-.5*c,0);a.arcTo(.5*c,.5*c,0,0,1,b-.5*c,c);a.lineTo(0,c);a.arcTo(.5*c,.5*c,0,0,0,0,0);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMate3Event2.prototype.cst.EVENT2,mxArchiMate3Event2);function mxArchiMate3Actor(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Actor,mxShape);mxArchiMate3Actor.prototype.cst={ACTOR:"mxgraph.archimate3.actor"}; +mxArchiMate3Actor.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)};mxArchiMate3Actor.prototype.background=function(a,d,e,b,c){a.ellipse(.2*b,0,.6*b,.3*c);a.fillAndStroke();a.begin();a.moveTo(.5*b,.3*c);a.lineTo(.5*b,.75*c);a.moveTo(0,.45*c);a.lineTo(b,.45*c);a.moveTo(0,c);a.lineTo(.5*b,.75*c);a.lineTo(b,c);a.stroke()};mxCellRenderer.registerShape(mxArchiMate3Actor.prototype.cst.ACTOR,mxArchiMate3Actor); +mxArchiMate3Actor.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(.2,.15),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.8,.15),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.45),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.45),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));return a}; +function mxArchiMate3Role(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Role,mxShape);mxArchiMate3Role.prototype.cst={ROLE:"mxgraph.archimate3.role"};mxArchiMate3Role.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)}; +mxArchiMate3Role.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(.8*b,0);a.lineTo(.2*b,0);a.arcTo(.2*b,.5*c,0,0,0,.2*b,c);a.lineTo(.8*b,c);a.fillAndStroke();a.ellipse(.6*b,0,.4*b,c);a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMate3Role.prototype.cst.ROLE,mxArchiMate3Role); +mxArchiMate3Role.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(.2,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.8,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.8,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.2,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0, +.5),!1));return a};function mxArchiMate3BusinessObject(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3BusinessObject,mxShape);mxArchiMate3BusinessObject.prototype.cst={BUSINESS_OBJECT:"mxgraph.archimate3.businessObject"};mxArchiMate3BusinessObject.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1);this.foreground(a,0,0,b,c)}; +mxArchiMate3BusinessObject.prototype.background=function(a,d,e,b,c){a.rect(0,0,b,c);a.fillAndStroke()};mxArchiMate3BusinessObject.prototype.foreground=function(a,d,e,b,c){15<=c&&(a.begin(),a.moveTo(0,15),a.lineTo(b,15),a.stroke())};mxCellRenderer.registerShape(mxArchiMate3BusinessObject.prototype.cst.BUSINESS_OBJECT,mxArchiMate3BusinessObject); +mxArchiMate3BusinessObject.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1, +.75),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.25),!1));return a}; +function mxArchiMate3Contract(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Contract,mxShape);mxArchiMate3Contract.prototype.cst={CONTRACT:"mxgraph.archimate3.contract"};mxArchiMate3Contract.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1);this.foreground(a,0,0,b,c)};mxArchiMate3Contract.prototype.background=function(a,d,e,b,c){a.rect(0,0,b,c);a.fillAndStroke()}; +mxArchiMate3Contract.prototype.foreground=function(a,d,e,b,c){15<=c&&(a.begin(),a.moveTo(0,15),a.lineTo(b,15),a.stroke());30<=c&&(a.begin(),a.moveTo(0,c-15),a.lineTo(b,c-15),a.stroke())};mxCellRenderer.registerShape(mxArchiMate3Contract.prototype.cst.CONTRACT,mxArchiMate3Contract); +mxArchiMate3Contract.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1, +.75),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.25),!1));return a}; +function mxArchiMate3Product(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Product,mxShape);mxArchiMate3Product.prototype.cst={PRODUCT:"mxgraph.archimate3.product"};mxArchiMate3Product.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1);this.foreground(a,0,0,b,c)};mxArchiMate3Product.prototype.background=function(a,d,e,b,c){a.rect(0,0,b,c);a.fillAndStroke()}; +mxArchiMate3Product.prototype.foreground=function(a,d,e,b,c){15<=c&&(a.begin(),a.moveTo(0,15),a.lineTo(.6*b,15),a.lineTo(.6*b,0),a.stroke())};mxCellRenderer.registerShape(mxArchiMate3Product.prototype.cst.PRODUCT,mxArchiMate3Product); +mxArchiMate3Product.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1, +.75),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.25),!1));return a}; function mxArchiMate3Representation(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Representation,mxShape);mxArchiMate3Representation.prototype.cst={REPRESENTATION:"mxgraph.archimate3.representation"};mxArchiMate3Representation.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c)}; mxArchiMate3Representation.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(0,0);a.lineTo(b,0);a.lineTo(b,.85*c);a.arcTo(.35*b,.35*c,0,0,0,.5*b,.85*c);a.arcTo(.35*b,.35*c,0,0,1,0,.85*c);a.close();a.fillAndStroke();20<=c&&a.begin();a.moveTo(0,15);a.lineTo(b,15);a.stroke()};mxCellRenderer.registerShape(mxArchiMate3Representation.prototype.cst.REPRESENTATION,mxArchiMate3Representation); +mxArchiMate3Representation.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1, +.75),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.85),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,.745),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,.85),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,.955),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.85),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.25),!1));return a}; function mxArchiMate3Deliverable(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Deliverable,mxShape);mxArchiMate3Deliverable.prototype.cst={DELIVERABLE:"mxgraph.archimate3.deliverable"};mxArchiMate3Deliverable.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c)}; -mxArchiMate3Deliverable.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(0,0);a.lineTo(b,0);a.lineTo(b,.85*c);a.arcTo(.35*b,.35*c,0,0,0,.5*b,.85*c);a.arcTo(.35*b,.35*c,0,0,1,0,.85*c);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMate3Deliverable.prototype.cst.DELIVERABLE,mxArchiMate3Deliverable);function mxArchiMate3Location(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Location,mxShape); -mxArchiMate3Location.prototype.cst={LOCATION:"mxgraph.archimate3.location"};mxArchiMate3Location.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1);a.translate(b-20,5);this.foreground(a,b-20,5,15,15)};mxArchiMate3Location.prototype.background=function(a,d,e,b,c){a.rect(0,0,b,c);a.fillAndStroke()}; -mxArchiMate3Location.prototype.foreground=function(a,d,e,b,c){a.setDashed(!1);a.translate(3,0);b-=6;a.begin();a.moveTo(.5*b,c);a.arcTo(.1775*b,.3*c,0,0,0,.345*b,.7*c);a.arcTo(.538*b,.364*c,0,0,1,.5*b,0);a.arcTo(.538*b,.364*c,0,0,1,.655*b,.7*c);a.arcTo(.1775*b,.3*c,0,0,0,.5*b,c);a.stroke()};mxCellRenderer.registerShape(mxArchiMate3Location.prototype.cst.LOCATION,mxArchiMate3Location); +mxArchiMate3Deliverable.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(0,0);a.lineTo(b,0);a.lineTo(b,.85*c);a.arcTo(.35*b,.35*c,0,0,0,.5*b,.85*c);a.arcTo(.35*b,.35*c,0,0,1,0,.85*c);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMate3Deliverable.prototype.cst.DELIVERABLE,mxArchiMate3Deliverable); +mxArchiMate3Deliverable.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1, +.75),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.85),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,.745),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,.85),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,.955),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.85),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.25),!1));return a}; +function mxArchiMate3Location(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Location,mxShape);mxArchiMate3Location.prototype.cst={LOCATION:"mxgraph.archimate3.location"};mxArchiMate3Location.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1);a.translate(b-20,5);this.foreground(a,b-20,5,15,15)}; +mxArchiMate3Location.prototype.background=function(a,d,e,b,c){a.rect(0,0,b,c);a.fillAndStroke()};mxArchiMate3Location.prototype.foreground=function(a,d,e,b,c){a.setDashed(!1);a.translate(3,0);b-=6;a.begin();a.moveTo(.5*b,c);a.arcTo(.1775*b,.3*c,0,0,0,.345*b,.7*c);a.arcTo(.538*b,.364*c,0,0,1,.5*b,0);a.arcTo(.538*b,.364*c,0,0,1,.655*b,.7*c);a.arcTo(.1775*b,.3*c,0,0,0,.5*b,c);a.stroke()};mxCellRenderer.registerShape(mxArchiMate3Location.prototype.cst.LOCATION,mxArchiMate3Location); function mxArchiMate3Gap(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Gap,mxShape);mxArchiMate3Gap.prototype.cst={GAP:"mxgraph.archimate3.gap"};mxArchiMate3Gap.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1);a.translate(b-20,5);this.foreground(a,b-20,5,15,15)}; mxArchiMate3Gap.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(0,0);a.lineTo(b,0);a.lineTo(b,.85*c);a.arcTo(.35*b,.35*c,0,0,0,.5*b,.85*c);a.arcTo(.35*b,.35*c,0,0,1,0,.85*c);a.close();a.fillAndStroke()};mxArchiMate3Gap.prototype.foreground=function(a,d,e,b,c){a.setDashed(!1);a.translate(0,2);c-=4;a.ellipse(.15*b,0,.7*b,c);a.stroke();a.begin();a.moveTo(0,.35*c);a.lineTo(b,.35*c);a.moveTo(0,.65*c);a.lineTo(b,.65*c);a.stroke()}; -mxCellRenderer.registerShape(mxArchiMate3Gap.prototype.cst.GAP,mxArchiMate3Gap);function mxArchiMate3Tech(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Tech,mxShape);mxArchiMate3Tech.prototype.cst={TECH:"mxgraph.archimate3.tech",TYPE:"techType",DEVICE:"device",PLATEAU:"plateau",FACILITY:"facility",EQUIPMENT:"equipment",SYS_SW:"sysSw"}; +mxCellRenderer.registerShape(mxArchiMate3Gap.prototype.cst.GAP,mxArchiMate3Gap); +mxArchiMate3Gap.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1, +.75),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.85),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,.745),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,.85),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,.955),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.85),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.25),!1));return a}; +function mxArchiMate3Tech(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Tech,mxShape);mxArchiMate3Tech.prototype.cst={TECH:"mxgraph.archimate3.tech",TYPE:"techType",DEVICE:"device",PLATEAU:"plateau",FACILITY:"facility",EQUIPMENT:"equipment",SYS_SW:"sysSw"}; mxArchiMate3Tech.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1);a.translate(b-30,15);this.foreground(a,b-30,15,15,15)};mxArchiMate3Tech.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(0,10);a.lineTo(10,0);a.lineTo(b,0);a.lineTo(b,c-10);a.lineTo(b-10,c);a.lineTo(0,c);a.close();a.moveTo(0,10);a.lineTo(b-10,10);a.lineTo(b-10,c);a.moveTo(b,0);a.lineTo(b-10,10);a.fillAndStroke()}; mxArchiMate3Tech.prototype.foreground=function(a,d,e,b,c){var f=mxUtils.getValue(this.style,mxArchiMate3Tech.prototype.cst.TYPE,mxArchiMate3Tech.prototype.cst.DEVICE);a.setDashed(!1);f===mxArchiMate3Tech.prototype.cst.PLATEAU?(d=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,"#000000"),a.setFillColor(d),a.rect(.4*b,0,.6*b,.2*c),a.fill(),a.rect(.2*b,.4*c,.6*b,.2*c),a.fill(),a.rect(0,.8*c,.6*b,.2*c),a.fill()):f===mxArchiMate3Tech.prototype.cst.FACILITY?(a.begin(),a.moveTo(0,c),a.lineTo(0, 0),a.lineTo(.13*b,0),a.lineTo(.13*b,.7*c),a.lineTo(.42*b,.55*c),a.lineTo(.42*b,.7*c),a.lineTo(.71*b,.55*c),a.lineTo(.71*b,.7*c),a.lineTo(b,.55*c),a.lineTo(b,c),a.close(),a.stroke()):f===mxArchiMate3Tech.prototype.cst.EQUIPMENT?(a.begin(),a.moveTo(.72*b,.38*c),a.curveTo(.78*b,.38*b,.85*b,.34*c,.85*b,.26*c),a.curveTo(.85*b,.18*b,.78*b,.14*c,.73*b,.14*c),a.curveTo(.64*b,.14*b,.59*b,.2*c,.59*b,.26*c),a.curveTo(.59*b,.33*c,.65*b,.38*b,.72*b,.38*c),a.close(),a.moveTo(.68*b,.52*c),a.lineTo(.67*b,.45*c), @@ -1435,9 +1491,12 @@ a.lineTo(.61*b,.43*c),a.lineTo(.56*b,.48*c),a.lineTo(.5*b,.42*c),a.lineTo(.54*b, b,.31*c),a.lineTo(.91*b,.36*c),a.lineTo(.95*b,.41*c),a.lineTo(.89*b,.47*c),a.lineTo(.83*b,.43*c),a.lineTo(.78*b,.45*c),a.lineTo(.77*b,.52*c),a.lineTo(.68*b,.52*c),a.close(),a.moveTo(.36*b,.81*c),a.curveTo(.44*b,.81*c,.52*b,.75*c,.52*b,.67*c),a.curveTo(.52*b,.59*c,.45*b,.51*c,.35*b,.51*c),a.curveTo(.27*b,.51*c,.19*b,.58*c,.19*b,.67*c),a.curveTo(.19*b,.74*c,.27*b,.82*c,.36*b,.81*c),a.close(),a.moveTo(.21*b,.98*c),a.lineTo(.22*b,.89*c),a.lineTo(.16*b,.85*c),a.lineTo(.08*b,.88*c),a.lineTo(.02*b,.79*c), a.lineTo(.09*b,.74*c),a.lineTo(.08*b,.67*c),a.lineTo(0,.63*c),a.lineTo(.03*b,.53*c),a.lineTo(.12*b,.54*c),a.lineTo(.16*b,.48*c),a.lineTo(.13*b,.4*c),a.lineTo(.22*b,.35*c),a.lineTo(.28*b,.42*c),a.lineTo(.36*b,.41*c),a.lineTo(.39*b,.33*c),a.lineTo(.5*b,.36*c),a.lineTo(.49*b,.45*c),a.lineTo(.55*b,.49*c),a.lineTo(.63*b,.45*c),a.lineTo(.69*b,.54*c),a.lineTo(.62*b,.6*c),a.lineTo(.63*b,.67*c),a.lineTo(.71*b,.7*c),a.lineTo(.68*b,.8*c),a.lineTo(.59*b,.79*c),a.lineTo(.55*b,.85*c),a.lineTo(.59*b,.79*c),a.lineTo(.55* b,.85*c),a.lineTo(.59*b,.93*c),a.lineTo(.49*b,.98*c),a.lineTo(.43*b,.91*c),a.lineTo(.36*b,.92*c),a.lineTo(.32*b,c),a.lineTo(.21*b,.98*c),a.close(),a.stroke()):f===mxArchiMate3Tech.prototype.cst.SYS_SW?mxArchiMate3SysSw.prototype.background(a,d,e,b,c):f===mxArchiMate3Tech.prototype.cst.DEVICE&&mxArchiMate3Device.prototype.background(a,d,e,b,c)};mxCellRenderer.registerShape(mxArchiMate3Tech.prototype.cst.TECH,mxArchiMate3Tech); -function mxArchiMate3Distribution(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Distribution,mxShape);mxArchiMate3Distribution.prototype.cst={DISTRIBUTION:"mxgraph.archimate3.distribution"};mxArchiMate3Distribution.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)}; +mxArchiMate3Tech.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,10,0));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1, +.75),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1,null,0,-10));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1,null,-10,0));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0, +.25),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,10));return a};function mxArchiMate3Distribution(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Distribution,mxShape);mxArchiMate3Distribution.prototype.cst={DISTRIBUTION:"mxgraph.archimate3.distribution"};mxArchiMate3Distribution.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)}; mxArchiMate3Distribution.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(.1*b,.25*c);a.lineTo(.9*b,.25*c);a.lineTo(b,.5*c);a.lineTo(.9*b,.75*c);a.lineTo(.1*b,.75*c);a.lineTo(0,.5*c);a.fillAndStroke();a.begin();a.moveTo(.2*b,0);a.lineTo(0,.5*c);a.lineTo(.2*b,c);a.moveTo(.8*b,0);a.lineTo(b,.5*c);a.lineTo(.8*b,c);a.stroke()};mxCellRenderer.registerShape(mxArchiMate3Distribution.prototype.cst.DISTRIBUTION,mxArchiMate3Distribution); -function mxArchiMate3Resource(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Resource,mxShape);mxArchiMate3Resource.prototype.cst={RESOURCE:"mxgraph.archimate3.resource"};mxArchiMate3Resource.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)}; +mxArchiMate3Distribution.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.2,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(.8,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.8,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(.2, +1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));return a};function mxArchiMate3Resource(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Resource,mxShape);mxArchiMate3Resource.prototype.cst={RESOURCE:"mxgraph.archimate3.resource"};mxArchiMate3Resource.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)}; mxArchiMate3Resource.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(.51*b,.34*c);a.lineTo(.51*b,.65*c);a.moveTo(.35*b,.34*c);a.lineTo(.35*b,.65*c);a.moveTo(.19*b,.34*c);a.lineTo(.19*b,.65*c);a.moveTo(.91*b,.4*c);a.curveTo(.93*b,.39*c,.95*b,.39*c,.97*b,.4*c);a.curveTo(.99*b,.4*c,b,.41*c,b,.43*c);a.curveTo(b,.48*c,b,.52*c,b,.57*c);a.curveTo(b,.58*c,.99*b,.59*c,.98*b,.6*c);a.curveTo(.96*b,.6*c,.93*b,.6*c,.91*b,.6*c);a.moveTo(0,.73*c);a.curveTo(0,.6*c,0,.43*c,0,.27*c);a.curveTo(0,.24*c,.03* b,.21*c,.08*b,.21*c);a.curveTo(.33*b,.2*c,.61*b,.2*c,.84*b,.21*c);a.curveTo(.88*b,.22*c,.89*b,.24*c,.9*b,.26*c);a.curveTo(.91*b,.41*c,.91*b,.57*c,.9*b,.72*c);a.curveTo(.9*b,.74*c,.88*b,.78*c,.83*b,.79*c);a.curveTo(.57*b,.79*c,.32*b,.79*c,.06*b,.79*c);a.curveTo(.02*b,.78*c,0,.76*c,0,.73*c);a.close();a.stroke()};mxCellRenderer.registerShape(mxArchiMate3Resource.prototype.cst.RESOURCE,mxArchiMate3Resource); function mxArchiMate3Capability(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Capability,mxShape);mxArchiMate3Capability.prototype.cst={CAPABILITY:"mxgraph.archimate3.capability"};mxArchiMate3Capability.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)}; @@ -1445,15 +1504,23 @@ mxArchiMate3Capability.prototype.background=function(a,d,e,b,c){a.begin();a.move function mxArchiMate3Course(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Course,mxShape);mxArchiMate3Course.prototype.cst={COURSE:"mxgraph.archimate3.course"};mxArchiMate3Course.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)}; mxArchiMate3Course.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(0,c);a.arcTo(.7*b,.7*c,0,0,1,.41*b,.56*c);a.moveTo(.14*b,.54*c);a.lineTo(.41*b,.56*c);a.lineTo(.3*b,.78*c);a.stroke();a.ellipse(.4*b,0,.6*b,.6*c);a.stroke();a.ellipse(.5*b,.1*c,.4*b,.4*c);a.stroke();d=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,"#000000");a.setFillColor(d);a.ellipse(.6*b,.2*c,.2*b,.2*c);a.fill()};mxCellRenderer.registerShape(mxArchiMate3Course.prototype.cst.COURSE,mxArchiMate3Course); function mxArchiMate3Node(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Node,mxShape);mxArchiMate3Node.prototype.cst={NODE:"mxgraph.archimate3.node"};mxArchiMate3Node.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)}; -mxArchiMate3Node.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(0,.25*c);a.lineTo(.25*b,0);a.lineTo(b,0);a.lineTo(b,.75*c);a.lineTo(.75*b,c);a.lineTo(0,c);a.close();a.moveTo(0,.25*c);a.lineTo(.75*b,.25*c);a.lineTo(.75*b,c);a.moveTo(b,0);a.lineTo(.75*b,.25*c);a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMate3Node.prototype.cst.NODE,mxArchiMate3Node);function mxArchiMate3Device(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1} -mxUtils.extend(mxArchiMate3Device,mxShape);mxArchiMate3Device.prototype.cst={DEVICE:"mxgraph.archimate3.device"};mxArchiMate3Device.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)};mxArchiMate3Device.prototype.background=function(a,d,e,b,c){a.roundrect(0,0,b,.88*c,.1*b,.1*c);a.fillAndStroke();a.begin();a.moveTo(.1*b,.88*c);a.lineTo(0,c);a.lineTo(b,c);a.lineTo(.9*b,.88*c);a.fillAndStroke()}; -mxCellRenderer.registerShape(mxArchiMate3Device.prototype.cst.DEVICE,mxArchiMate3Device);function mxArchiMate3SysSw(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3SysSw,mxShape);mxArchiMate3SysSw.prototype.cst={SYS_SW:"mxgraph.archimate3.sysSw"};mxArchiMate3SysSw.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)}; -mxArchiMate3SysSw.prototype.background=function(a,d,e,b,c){a.ellipse(.3*b,0,.7*b,.7*c);a.stroke();a.ellipse(0,.02*c,.98*b,.98*c);a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMate3SysSw.prototype.cst.SYS_SW,mxArchiMate3SysSw);function mxArchiMate3Artifact(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Artifact,mxShape);mxArchiMate3Artifact.prototype.cst={ARTIFACT:"mxgraph.archimate3.artifact"}; -mxArchiMate3Artifact.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)};mxArchiMate3Artifact.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(0,0);a.lineTo(.7*b,0);a.lineTo(b,.22*c);a.lineTo(b,c);a.lineTo(0,c);a.close();a.fillAndStroke();a.begin();a.moveTo(.7*b,0);a.lineTo(.7*b,.22*c);a.lineTo(b,.22*c);a.stroke()};mxCellRenderer.registerShape(mxArchiMate3Artifact.prototype.cst.ARTIFACT,mxArchiMate3Artifact); +mxArchiMate3Node.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(0,.25*c);a.lineTo(.25*b,0);a.lineTo(b,0);a.lineTo(b,.75*c);a.lineTo(.75*b,c);a.lineTo(0,c);a.close();a.moveTo(0,.25*c);a.lineTo(.75*b,.25*c);a.lineTo(.75*b,c);a.moveTo(b,0);a.lineTo(.75*b,.25*c);a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMate3Node.prototype.cst.NODE,mxArchiMate3Node); +mxArchiMate3Node.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(.75, +1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(0, +.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.25),!1));return a};function mxArchiMate3Device(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Device,mxShape);mxArchiMate3Device.prototype.cst={DEVICE:"mxgraph.archimate3.device"};mxArchiMate3Device.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)}; +mxArchiMate3Device.prototype.background=function(a,d,e,b,c){a.roundrect(0,0,b,.88*c,.1*b,.1*c);a.fillAndStroke();a.begin();a.moveTo(.1*b,.88*c);a.lineTo(0,c);a.lineTo(b,c);a.lineTo(.9*b,.88*c);a.fillAndStroke()};mxCellRenderer.registerShape(mxArchiMate3Device.prototype.cst.DEVICE,mxArchiMate3Device); +mxArchiMate3Device.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(.03,.03),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.97,.03),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1, +.75),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.25),!1));return a}; +function mxArchiMate3SysSw(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3SysSw,mxShape);mxArchiMate3SysSw.prototype.cst={SYS_SW:"mxgraph.archimate3.sysSw"};mxArchiMate3SysSw.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)};mxArchiMate3SysSw.prototype.background=function(a,d,e,b,c){a.ellipse(.3*b,0,.7*b,.7*c);a.stroke();a.ellipse(0,.02*c,.98*b,.98*c);a.fillAndStroke()}; +mxCellRenderer.registerShape(mxArchiMate3SysSw.prototype.cst.SYS_SW,mxArchiMate3SysSw);function mxArchiMate3Artifact(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Artifact,mxShape);mxArchiMate3Artifact.prototype.cst={ARTIFACT:"mxgraph.archimate3.artifact"};mxArchiMate3Artifact.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)}; +mxArchiMate3Artifact.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(0,0);a.lineTo(.7*b,0);a.lineTo(b,.22*c);a.lineTo(b,c);a.lineTo(0,c);a.close();a.fillAndStroke();a.begin();a.moveTo(.7*b,0);a.lineTo(.7*b,.22*c);a.lineTo(b,.22*c);a.stroke()};mxCellRenderer.registerShape(mxArchiMate3Artifact.prototype.cst.ARTIFACT,mxArchiMate3Artifact); +mxArchiMate3Artifact.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.7,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.85,.11),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.22),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1, +.75),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.25),!1));return a}; function mxArchiMate3CommNetw(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3CommNetw,mxShape);mxArchiMate3CommNetw.prototype.cst={COMM_NETW:"mxgraph.archimate3.commNetw"};mxArchiMate3CommNetw.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)}; -mxArchiMate3CommNetw.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(.2*b,c);a.lineTo(0,.5*c);a.lineTo(.2*b,0);a.moveTo(.8*b,c);a.lineTo(b,.5*c);a.lineTo(.8*b,0);a.moveTo(0,.5*c);a.lineTo(b,.5*c);a.stroke()};mxCellRenderer.registerShape(mxArchiMate3CommNetw.prototype.cst.COMM_NETW,mxArchiMate3CommNetw);function mxArchiMate3Path(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Path,mxShape); -mxArchiMate3Path.prototype.cst={PATH:"mxgraph.archimate3.path"};mxArchiMate3Path.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)};mxArchiMate3Path.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(.2*b,c);a.lineTo(0,.5*c);a.lineTo(.2*b,0);a.moveTo(.8*b,c);a.lineTo(b,.5*c);a.lineTo(.8*b,0);a.stroke();a.setDashed(!0);a.begin();a.moveTo(0,.5*c);a.lineTo(b,.5*c);a.stroke()}; -mxCellRenderer.registerShape(mxArchiMate3Path.prototype.cst.PATH,mxArchiMate3Path);function mxShapeArrows2Arrow(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=this.dy=.5;this.notch=0}mxUtils.extend(mxShapeArrows2Arrow,mxActor); +mxArchiMate3CommNetw.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(.2*b,c);a.lineTo(0,.5*c);a.lineTo(.2*b,0);a.moveTo(.8*b,c);a.lineTo(b,.5*c);a.lineTo(.8*b,0);a.moveTo(0,.5*c);a.lineTo(b,.5*c);a.stroke()};mxCellRenderer.registerShape(mxArchiMate3CommNetw.prototype.cst.COMM_NETW,mxArchiMate3CommNetw);mxArchiMate3CommNetw.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));return a}; +function mxArchiMate3Path(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxArchiMate3Path,mxShape);mxArchiMate3Path.prototype.cst={PATH:"mxgraph.archimate3.path"};mxArchiMate3Path.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,0,0,b,c);a.setShadow(!1)}; +mxArchiMate3Path.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(.2*b,c);a.lineTo(0,.5*c);a.lineTo(.2*b,0);a.moveTo(.8*b,c);a.lineTo(b,.5*c);a.lineTo(.8*b,0);a.stroke();a.setDashed(!0);a.begin();a.moveTo(0,.5*c);a.lineTo(b,.5*c);a.stroke()};mxCellRenderer.registerShape(mxArchiMate3Path.prototype.cst.PATH,mxArchiMate3Path); +mxArchiMate3Path.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));return a};function mxShapeArrows2Arrow(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=this.dy=.5;this.notch=0}mxUtils.extend(mxShapeArrows2Arrow,mxActor); mxShapeArrows2Arrow.prototype.customProperties=[{name:"dx",dispName:"Arrowhead Length",type:"float",min:0,defVal:40},{name:"dy",dispName:"Arrow Width",type:"float",min:0,max:1,defVal:.6},{name:"notch",dispName:"Notch",type:"float",min:0,defVal:0}];mxShapeArrows2Arrow.prototype.cst={ARROW:"mxgraph.arrows2.arrow"}; mxShapeArrows2Arrow.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=.5*c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));e=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));var f=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"notch",this.notch))));a.begin();a.moveTo(0,d);a.lineTo(b-e,d);a.lineTo(b-e,0);a.lineTo(b,.5*c);a.lineTo(b-e,c);a.lineTo(b-e,c-d);a.lineTo(0,c-d);a.lineTo(f,.5*c);a.close();a.fillAndStroke()}; mxShapeArrows2Arrow.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=a.width,e=a.height,b,c,f=this.direction||mxConstants.DIRECTION_EAST;mxUtils.getValue(this.style,"flipH",!1)&&(f==mxConstants.DIRECTION_WEST?f=mxConstants.DIRECTION_EAST:f==mxConstants.DIRECTION_EAST&&(f=mxConstants.DIRECTION_WEST));mxUtils.getValue(this.style,"flipV",!1)&&(f==mxConstants.DIRECTION_NORTH?f=mxConstants.DIRECTION_SOUTH:f==mxConstants.DIRECTION_SOUTH&&(f=mxConstants.DIRECTION_NORTH)); @@ -1672,74 +1739,110 @@ function mxShapeBasicRectCallout(a,d,e,b){mxShape.call(this);this.bounds=a;this. mxShapeBasicRectCallout.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(d-.5*e,c-e);a.lineTo(0,c-e);a.lineTo(0,0);a.lineTo(b,0);a.lineTo(b,c-e);a.lineTo(d+.5*e,c-e);a.lineTo(d-e,c);a.close();a.fillAndStroke()}; mxShapeBasicRectCallout.prototype.getLabelMargins=function(){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))*this.scale):null};mxCellRenderer.registerShape(mxShapeBasicRectCallout.prototype.cst.RECT_CALLOUT,mxShapeBasicRectCallout);mxShapeBasicRectCallout.prototype.constraints=null; Graph.handleFactory[mxShapeBasicRectCallout.prototype.cst.RECT_CALLOUT]=function(a){return[Graph.createHandle(a,["dx","dy"],function(a){var d=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(a.x+d,a.y+a.height-b)},function(a,e){var b=.6*parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy));this.state.style.dx=Math.round(100*Math.max(b,Math.min(a.width- -b,e.x-a.x)))/100;this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,a.y+a.height-e.y)))})]};function mxShapeBasicRoundRectCallout(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=this.dy=.5;this.size=10}mxUtils.extend(mxShapeBasicRoundRectCallout,mxActor);mxShapeBasicRoundRectCallout.prototype.cst={ROUND_RECT_CALLOUT:"mxgraph.basic.roundRectCallout"};mxShapeBasicRoundRectCallout.prototype.getLabelMargins=mxShapeBasicRectCallout.prototype.getLabelMargins; +b,e.x-a.x)))/100;this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,a.y+a.height-e.y)))})]}; +mxShapeBasicRectCallout.prototype.getConstraints=function(a,d,e){a=[];var b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1, +0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(e-c)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-c,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(e-c)));return a}; +function mxShapeBasicRoundRectCallout(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=this.dy=.5;this.size=10}mxUtils.extend(mxShapeBasicRoundRectCallout,mxActor);mxShapeBasicRoundRectCallout.prototype.cst={ROUND_RECT_CALLOUT:"mxgraph.basic.roundRectCallout"};mxShapeBasicRoundRectCallout.prototype.getLabelMargins=mxShapeBasicRectCallout.prototype.getLabelMargins; mxShapeBasicRoundRectCallout.prototype.customProperties=[{name:"size",dispName:"Arc Size",type:"float",min:0,defVal:5},{name:"dx",dispName:"Callout Position",type:"float",min:0,defVal:30},{name:"dy",dispName:"Callout Size",type:"float",min:0,defVal:15}]; mxShapeBasicRoundRectCallout.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));var f=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),f=Math.min((c-e)/2,b/2,f);d=Math.max(f+.5*e,d);d=Math.min(b-f-.5*e,d);a.begin();a.moveTo(d-.5*e,c-e);a.lineTo(f,c-e);a.arcTo(f,f,0,0,1,0,c-e-f);a.lineTo(0,f);a.arcTo(f, f,0,0,1,f,0);a.lineTo(b-f,0);a.arcTo(f,f,0,0,1,b,f);a.lineTo(b,c-e-f);a.arcTo(f,f,0,0,1,b-f,c-e);a.lineTo(d+.5*e,c-e);a.arcTo(1.9*e,1.4*e,0,0,1,d-e,c);a.arcTo(.9*e,1.4*e,0,0,0,d-.5*e,c-e);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeBasicRoundRectCallout.prototype.cst.ROUND_RECT_CALLOUT,mxShapeBasicRoundRectCallout);mxShapeBasicRoundRectCallout.prototype.constraints=null; Graph.handleFactory[mxShapeBasicRoundRectCallout.prototype.cst.ROUND_RECT_CALLOUT]=function(a){return[Graph.createHandle(a,["dx","dy"],function(a){var d=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(a.x+d,a.y+a.height-b)},function(a,e){var b=.6*parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy));this.state.style.dx=Math.round(100*Math.max(b, Math.min(a.width-b,e.x-a.x)))/100;this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,a.y+a.height-e.y)))}),Graph.createHandle(a,["size"],function(a){var d=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.state.style,"size",this.size))));return new mxPoint(a.x+a.width-d,a.y+10)},function(a,e){var b=parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy));this.state.style.size=Math.round(100*Math.max(0,Math.min(a.width/2,(a.height-b)/2,a.x+a.width-e.x)))/100})]}; +mxShapeBasicRoundRectCallout.prototype.getConstraints=function(a,d,e){a=[];var b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),f=Math.min((e-c)/2,d/2,f),b=Math.max(f+.5*c,b),b=Math.min(d-f-.5*c,b);f<.25*d&&(a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(.75, +0),!1)));f<.25*(e-c)&&(a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.25*(e-c))),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.75*(e-c))),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(e-c))),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.75*(e-c))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.293*f,.293*f));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1, +null,d-.293*f,.293*f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(e-c)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(e-c)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.293*f,e-c-.293*f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.293*f,e-c-.293*f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-c,e));return a}; function mxShapeBasicWave(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dy=.5}mxUtils.extend(mxShapeBasicWave,mxActor);mxShapeBasicWave.prototype.customProperties=[{name:"dy",dispName:"Wave Size",type:"float",min:0,max:1,defVal:.3}];mxShapeBasicWave.prototype.cst={WAVE:"mxgraph.basic.wave2"}; mxShapeBasicWave.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=c*Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(0,d/2);a.quadTo(b/6,d*(1-1.4),b/3,d/2);a.quadTo(b/2,1.4*d,2*b/3,d/2);a.quadTo(5*b/6,d*(1-1.4),b,d/2);a.lineTo(b,c-d/2);a.quadTo(5*b/6,c-1.4*d,2*b/3,c-d/2);a.quadTo(b/2,c-d*(1-1.4),b/3,c-d/2);a.quadTo(b/6,c-1.4*d,0,c-d/2);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeBasicWave.prototype.cst.WAVE,mxShapeBasicWave); mxShapeBasicWave.prototype.constraints=null;Graph.handleFactory[mxShapeBasicWave.prototype.cst.WAVE]=function(a){return[Graph.createHandle(a,["dy"],function(a){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(a.x+a.width/2,a.y+d*a.height)},function(a,e){this.state.style.dy=Math.round(100*Math.max(0,Math.min(1,(e.y-a.y)/a.height)))/100})]}; -function mxShapeBasicOctagon(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.5}mxUtils.extend(mxShapeBasicOctagon,mxActor);mxShapeBasicOctagon.prototype.customProperties=[{name:"dx",dispName:"Cutoff Size",type:"float",min:0,defVal:15}];mxShapeBasicOctagon.prototype.cst={OCTAGON:"mxgraph.basic.octagon2"}; +mxShapeBasicWave.prototype.getConstraints=function(a,d,e){a=[];var b=e*Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d/6,.015*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d/3,.5*b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,.95*b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.67*d,.5*b)); +a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.83*d,.015*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e-.5*b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.83*d,e-.95*b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.67*d,e-.5*b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,e-.04*b)); +a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d/3,e-.5*b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d/6,e-.95*b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e-.5*b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*e));return a};function mxShapeBasicOctagon(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.5}mxUtils.extend(mxShapeBasicOctagon,mxActor); +mxShapeBasicOctagon.prototype.customProperties=[{name:"dx",dispName:"Cutoff Size",type:"float",min:0,defVal:15}];mxShapeBasicOctagon.prototype.cst={OCTAGON:"mxgraph.basic.octagon2"}; mxShapeBasicOctagon.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=2*Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));d=Math.min(.5*b,.5*c,d);a.begin();a.moveTo(d,0);a.lineTo(b-d,0);a.lineTo(b,d);a.lineTo(b,c-d);a.lineTo(b-d,c);a.lineTo(d,c);a.lineTo(0,c-d);a.lineTo(0,d);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeBasicOctagon.prototype.cst.OCTAGON,mxShapeBasicOctagon);mxShapeBasicOctagon.prototype.constraints=null; Graph.handleFactory[mxShapeBasicOctagon.prototype.cst.OCTAGON]=function(a){return[Graph.createHandle(a,["dx"],function(a){var d=Math.max(0,Math.min(a.width/4,a.width/4,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx))));return new mxPoint(a.x+d,a.y+d)},function(a,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(a.height/4,a.width/4,e.x-a.x)))/100})]}; -function mxShapeBasicIsoCube(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.isoAngle=15}mxUtils.extend(mxShapeBasicIsoCube,mxActor);mxShapeBasicIsoCube.prototype.customProperties=[{name:"isoAngle",dispName:"Perspective Angle",type:"float",min:0,defVal:15}];mxShapeBasicIsoCube.prototype.cst={ISO_CUBE:"mxgraph.basic.isocube"}; +mxShapeBasicOctagon.prototype.getConstraints=function(a,d,e){a=[];var b=2*Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),b=.5*Math.min(.5*d,.5*e,b);a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,b));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,d-b,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-b,e-b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e-b));return a};function mxShapeBasicIsoCube(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.isoAngle=15}mxUtils.extend(mxShapeBasicIsoCube,mxActor);mxShapeBasicIsoCube.prototype.customProperties=[{name:"isoAngle",dispName:"Perspective Angle",type:"float",min:0,defVal:15}]; +mxShapeBasicIsoCube.prototype.cst={ISO_CUBE:"mxgraph.basic.isocube"}; mxShapeBasicIsoCube.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200;d=Math.min(b*Math.tan(d),.5*c);a.begin();a.moveTo(.5*b,0);a.lineTo(b,d);a.lineTo(b,c-d);a.lineTo(.5*b,c);a.lineTo(0,c-d);a.lineTo(0,d);a.close();a.fillAndStroke();a.setShadow(!1);a.begin();a.moveTo(0,d);a.lineTo(.5*b,2*d);a.lineTo(b,d);a.moveTo(.5*b,2*d);a.lineTo(.5*b,c);a.stroke()}; mxCellRenderer.registerShape(mxShapeBasicIsoCube.prototype.cst.ISO_CUBE,mxShapeBasicIsoCube);mxShapeBasicIsoCube.prototype.constraints=null; Graph.handleFactory[mxShapeBasicIsoCube.prototype.cst.ISO_CUBE]=function(a){return[Graph.createHandle(a,["isoAngle"],function(a){var d=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",this.isoAngle))))*Math.PI/200;return new mxPoint(a.x,a.y+Math.min(a.width*Math.tan(d),.5*a.height))},function(a,e){this.state.style.isoAngle=Math.round(100*Math.max(0,Math.min(100,e.y-a.y)))/100})]}; -function mxShapeBasicTriangleAcute(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.5}mxUtils.extend(mxShapeBasicTriangleAcute,mxActor);mxShapeBasicTriangleAcute.prototype.customProperties=[{name:"dx",dispName:"Top",type:"float",min:0,max:1,defVal:.5}];mxShapeBasicTriangleAcute.prototype.cst={ACUTE_TRIANGLE:"mxgraph.basic.acute_triangle"}; -mxShapeBasicTriangleAcute.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=b*Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));a.begin();a.moveTo(0,c);a.lineTo(d,0);a.lineTo(b,c);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeBasicTriangleAcute.prototype.cst.ACUTE_TRIANGLE,mxShapeBasicTriangleAcute);mxShapeBasicTriangleAcute.prototype.constraints=null; +mxShapeBasicIsoCube.prototype.getConstraints=function(a,d,e){a=[];var b=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200,b=Math.min(d*Math.tan(b),.5*e);a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e-b));a.push(new mxConnectionConstraint(new mxPoint(.5, +1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e-b));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,b));return a};function mxShapeBasicTriangleAcute(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.5}mxUtils.extend(mxShapeBasicTriangleAcute,mxActor); +mxShapeBasicTriangleAcute.prototype.customProperties=[{name:"dx",dispName:"Top",type:"float",min:0,max:1,defVal:.5}];mxShapeBasicTriangleAcute.prototype.cst={ACUTE_TRIANGLE:"mxgraph.basic.acute_triangle"};mxShapeBasicTriangleAcute.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=b*Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));a.begin();a.moveTo(0,c);a.lineTo(d,0);a.lineTo(b,c);a.close();a.fillAndStroke()}; +mxCellRenderer.registerShape(mxShapeBasicTriangleAcute.prototype.cst.ACUTE_TRIANGLE,mxShapeBasicTriangleAcute);mxShapeBasicTriangleAcute.prototype.constraints=null; Graph.handleFactory[mxShapeBasicTriangleAcute.prototype.cst.ACUTE_TRIANGLE]=function(a){return[Graph.createHandle(a,["dx"],function(a){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx))));return new mxPoint(a.x+d*a.width,a.y+10)},function(a,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(1,(e.x-a.x)/a.width)))/100})]}; -function mxShapeBasicTriangleObtuse(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.5}mxUtils.extend(mxShapeBasicTriangleObtuse,mxActor);mxShapeBasicTriangleObtuse.prototype.customProperties=[{name:"dx",dispName:"Bottom",type:"float",min:0,max:1,defVal:.25}];mxShapeBasicTriangleObtuse.prototype.cst={OBTUSE_TRIANGLE:"mxgraph.basic.obtuse_triangle"}; +mxShapeBasicTriangleAcute.prototype.getConstraints=function(a,d,e){a=[];var b=d*Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*b,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,d-.5*(d-b),.5*e));return a};function mxShapeBasicTriangleObtuse(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.5}mxUtils.extend(mxShapeBasicTriangleObtuse,mxActor);mxShapeBasicTriangleObtuse.prototype.customProperties=[{name:"dx",dispName:"Bottom",type:"float",min:0,max:1,defVal:.25}];mxShapeBasicTriangleObtuse.prototype.cst={OBTUSE_TRIANGLE:"mxgraph.basic.obtuse_triangle"}; mxShapeBasicTriangleObtuse.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=b*Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));a.begin();a.moveTo(d,c);a.lineTo(0,0);a.lineTo(b,c);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeBasicTriangleObtuse.prototype.cst.OBTUSE_TRIANGLE,mxShapeBasicTriangleObtuse);mxShapeBasicTriangleObtuse.prototype.constraints=null; Graph.handleFactory[mxShapeBasicTriangleObtuse.prototype.cst.OBTUSE_TRIANGLE]=function(a){return[Graph.createHandle(a,["dx"],function(a){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx))));return new mxPoint(a.x+d*a.width,a.y+a.height-10)},function(a,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(1,(e.x-a.x)/a.width)))/100})]}; -function mxShapeBasicDrop(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeBasicDrop,mxActor);mxShapeBasicDrop.prototype.cst={DROP:"mxgraph.basic.drop"}; +mxShapeBasicTriangleObtuse.prototype.getConstraints=function(a,d,e){a=[];var b=d*Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+b),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,.5*b,.5*e));return a};function mxShapeBasicDrop(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeBasicDrop,mxActor);mxShapeBasicDrop.prototype.cst={DROP:"mxgraph.basic.drop"}; mxShapeBasicDrop.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=.5*Math.min(c,b);e=c-d;var f=Math.atan(Math.sqrt(e*e-d*d)/d);e=d*Math.sin(f);f=d*Math.cos(f);a.begin();a.moveTo(.5*b,0);a.lineTo(.5*b+e,c-d-f);a.arcTo(d,d,0,0,1,.5*b+d,c-d);a.arcTo(d,d,0,0,1,.5*b,c);a.arcTo(d,d,0,0,1,.5*b-d,c-d);a.arcTo(d,d,0,0,1,.5*b-e,c-d-f);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeBasicDrop.prototype.cst.DROP,mxShapeBasicDrop);mxShapeBasicDrop.prototype.constraints=null; function mxShapeBasicCone2(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.5;this.dy=.9}mxUtils.extend(mxShapeBasicCone2,mxActor);mxShapeBasicCone2.prototype.customProperties=[{name:"dx",dispName:"Top",type:"float",min:0,max:1,defVal:.5},{name:"dy",dispName:"Bottom",type:"float",min:0,max:1,defVal:.9}];mxShapeBasicCone2.prototype.cst={CONE2:"mxgraph.basic.cone2"}; mxShapeBasicCone2.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=b*Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));e=c*Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));e=c-e;a.begin();a.moveTo(d,0);0<e?(a.lineTo(b,c-e),a.arcTo(.5*b,e,0,0,1,.5*b,c),a.arcTo(.5*b,e,0,0,1,0,c-e)):(a.lineTo(b,c),a.lineTo(0,c));a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeBasicCone2.prototype.cst.CONE2,mxShapeBasicCone2); mxShapeBasicCone2.prototype.constraints=null; Graph.handleFactory[mxShapeBasicCone2.prototype.cst.CONE2]=function(a){var d=[Graph.createHandle(a,["dx"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx))));return new mxPoint(a.x+b*a.width,a.y+10)},function(a,b){this.state.style.dx=Math.round(100*Math.max(0,Math.min(1,(b.x-a.x)/a.width)))/100})];a=Graph.createHandle(a,["dy"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(a.x+ -10,a.y+b*a.height)},function(a,b){this.state.style.dy=Math.round(100*Math.max(0,Math.min(1,(b.y-a.y)/a.height)))/100});d.push(a);return d};function mxShapeBasicPyramid(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx1=.5;this.dx2=.6;this.dy1=.9;this.dy2=.8}mxUtils.extend(mxShapeBasicPyramid,mxActor); +10,a.y+b*a.height)},function(a,b){this.state.style.dy=Math.round(100*Math.max(0,Math.min(1,(b.y-a.y)/a.height)))/100});d.push(a);return d}; +mxShapeBasicCone2.prototype.getConstraints=function(a,d,e){a=[];var b=d*Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),c=e*Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),c=e-c;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e- +c));return a};function mxShapeBasicPyramid(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx1=.5;this.dx2=.6;this.dy1=.9;this.dy2=.8}mxUtils.extend(mxShapeBasicPyramid,mxActor); mxShapeBasicPyramid.prototype.customProperties=[{name:"dx1",dispName:"Top",type:"float",min:0,max:1,defVal:.4},{name:"dx2",dispName:"Bottom",type:"float",min:0,max:1,defVal:.6},{name:"dy1",dispName:"Perspective Left",type:"float",min:0,max:1,defVal:.9},{name:"dy2",dispName:"Perspective Right",type:"float",min:0,max:1,defVal:.8}];mxShapeBasicPyramid.prototype.cst={PYRAMID:"mxgraph.basic.pyramid"}; mxShapeBasicPyramid.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=b*Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx1",this.dx1))));e=b*Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx2",this.dx2))));var f=c*Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy1",this.dy1)))),g=c*Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy2",this.dy2))));a.begin();a.moveTo(d,0);a.lineTo(b,g);a.lineTo(e,c);a.lineTo(0,f);a.close();a.fillAndStroke(); a.setShadow(!1);a.begin();a.moveTo(d,0);a.lineTo(e,c);a.stroke()};mxCellRenderer.registerShape(mxShapeBasicPyramid.prototype.cst.PYRAMID,mxShapeBasicPyramid);mxShapeBasicPyramid.prototype.constraints=null; Graph.handleFactory[mxShapeBasicPyramid.prototype.cst.PYRAMID]=function(a){var d=[Graph.createHandle(a,["dx1"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"dx1",this.dx1))));return new mxPoint(a.x+b*a.width,a.y+10)},function(a,c){this.state.style.dx1=Math.round(100*Math.max(0,Math.min(1,(c.x-a.x)/a.width)))/100})],e=Graph.createHandle(a,["dx2"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"dx2",this.dx2))));return new mxPoint(a.x+ b*a.width,a.y+a.height-10)},function(a,c){this.state.style.dx2=Math.round(100*Math.max(0,Math.min(1,(c.x-a.x)/a.width)))/100});d.push(e);e=Graph.createHandle(a,["dy1"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"dy1",this.dy1))));return new mxPoint(a.x+10,a.y+b*a.height)},function(a,c){this.state.style.dy1=Math.round(100*Math.max(0,Math.min(1,(c.y-a.y)/a.height)))/100});d.push(e);a=Graph.createHandle(a,["dy2"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style, -"dy2",this.dy2))));return new mxPoint(a.x+a.width-10,a.y+b*a.height)},function(a,c){this.state.style.dy2=Math.round(100*Math.max(0,Math.min(1,(c.y-a.y)/a.height)))/100});d.push(a);return d};function mxShapeBasic4PointStar2(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.8}mxUtils.extend(mxShapeBasic4PointStar2,mxActor);mxShapeBasic4PointStar2.prototype.customProperties=[{name:"dx",dispName:"Thickness",type:"float",min:0,max:1,defVal:.8}]; -mxShapeBasic4PointStar2.prototype.cst={FOUR_POINT_STAR_2:"mxgraph.basic.4_point_star_2"};mxShapeBasic4PointStar2.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=.5*Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));a.begin();a.moveTo(0,.5*c);a.lineTo(d*b,d*c);a.lineTo(.5*b,0);a.lineTo(b-d*b,d*c);a.lineTo(b,.5*c);a.lineTo(b-d*b,c-d*c);a.lineTo(.5*b,c);a.lineTo(d*b,c-d*c);a.close();a.fillAndStroke()}; -mxCellRenderer.registerShape(mxShapeBasic4PointStar2.prototype.cst.FOUR_POINT_STAR_2,mxShapeBasic4PointStar2);mxShapeBasic4PointStar2.prototype.constraints=null; -Graph.handleFactory[mxShapeBasic4PointStar2.prototype.cst.FOUR_POINT_STAR_2]=function(a){return[Graph.createHandle(a,["dx"],function(a){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx))));return new mxPoint(a.x+d*a.width/2,a.y+d*a.height/2)},function(a,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(1,2*(e.x-a.x)/a.width)))/100})]}; -function mxShapeBasicDiagSnipRect(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.5}mxUtils.extend(mxShapeBasicDiagSnipRect,mxActor);mxShapeBasicDiagSnipRect.prototype.customProperties=[{name:"dx",dispName:"Snip",type:"float",min:0,deVal:6}];mxShapeBasicDiagSnipRect.prototype.cst={DIAG_SNIP_RECT:"mxgraph.basic.diag_snip_rect"}; +"dy2",this.dy2))));return new mxPoint(a.x+a.width-10,a.y+b*a.height)},function(a,c){this.state.style.dy2=Math.round(100*Math.max(0,Math.min(1,(c.y-a.y)/a.height)))/100});d.push(a);return d}; +mxShapeBasicPyramid.prototype.getConstraints=function(a,d,e){a=[];var b=d*Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx1",this.dx1)))),c=d*Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx2",this.dx2)))),f=e*Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy1",this.dy1)))),g=e*Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy2",this.dy2))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,0));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,.5*(d+b),.5*g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),.5*(e+g)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,.5*(e+f)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*b,.5*f));return a}; +function mxShapeBasic4PointStar2(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.8}mxUtils.extend(mxShapeBasic4PointStar2,mxActor);mxShapeBasic4PointStar2.prototype.customProperties=[{name:"dx",dispName:"Thickness",type:"float",min:0,max:1,defVal:.8}];mxShapeBasic4PointStar2.prototype.cst={FOUR_POINT_STAR_2:"mxgraph.basic.4_point_star_2"}; +mxShapeBasic4PointStar2.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=.5*Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));a.begin();a.moveTo(0,.5*c);a.lineTo(d*b,d*c);a.lineTo(.5*b,0);a.lineTo(b-d*b,d*c);a.lineTo(b,.5*c);a.lineTo(b-d*b,c-d*c);a.lineTo(.5*b,c);a.lineTo(d*b,c-d*c);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeBasic4PointStar2.prototype.cst.FOUR_POINT_STAR_2,mxShapeBasic4PointStar2); +mxShapeBasic4PointStar2.prototype.constraints=null;Graph.handleFactory[mxShapeBasic4PointStar2.prototype.cst.FOUR_POINT_STAR_2]=function(a){return[Graph.createHandle(a,["dx"],function(a){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx))));return new mxPoint(a.x+d*a.width/2,a.y+d*a.height/2)},function(a,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(1,2*(e.x-a.x)/a.width)))/100})]}; +mxShapeBasic4PointStar2.prototype.getConstraints=function(a,d,e){a=[];d=.5*Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(d,d),!1));a.push(new mxConnectionConstraint(new mxPoint(1-d,d),!1));a.push(new mxConnectionConstraint(new mxPoint(1- +d,1-d),!1));a.push(new mxConnectionConstraint(new mxPoint(d,1-d),!1));return a};function mxShapeBasicDiagSnipRect(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.5}mxUtils.extend(mxShapeBasicDiagSnipRect,mxActor);mxShapeBasicDiagSnipRect.prototype.customProperties=[{name:"dx",dispName:"Snip",type:"float",min:0,deVal:6}];mxShapeBasicDiagSnipRect.prototype.cst={DIAG_SNIP_RECT:"mxgraph.basic.diag_snip_rect"}; mxShapeBasicDiagSnipRect.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=2*Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));d=Math.min(.5*b,.5*c,d);a.begin();a.moveTo(d,0);a.lineTo(b,0);a.lineTo(b,c-d);a.lineTo(b-d,c);a.lineTo(0,c);a.lineTo(0,d);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeBasicDiagSnipRect.prototype.cst.DIAG_SNIP_RECT,mxShapeBasicDiagSnipRect);mxShapeBasicDiagSnipRect.prototype.constraints=null; Graph.handleFactory[mxShapeBasicDiagSnipRect.prototype.cst.DIAG_SNIP_RECT]=function(a){return[Graph.createHandle(a,["dx"],function(a){var d=Math.max(0,Math.min(a.width/4,a.width/4,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx))));return new mxPoint(a.x+d,a.y+d)},function(a,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(a.height/4,a.width/4,e.x-a.x)))/100})]}; -function mxShapeBasicDiagRoundRect(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.5}mxUtils.extend(mxShapeBasicDiagRoundRect,mxActor);mxShapeBasicDiagRoundRect.prototype.customProperties=[{name:"dx",dispName:"Rounding Size",type:"float",min:0,defVal:6}];mxShapeBasicDiagRoundRect.prototype.cst={DIAG_ROUND_RECT:"mxgraph.basic.diag_round_rect"}; +mxShapeBasicDiagSnipRect.prototype.getConstraints=function(a,d,e){a=[];var b=2*Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),b=.5*Math.min(.5*d,.5*e,b);a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,b));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-b,e-b));a.push(new mxConnectionConstraint(new mxPoint(.5, +1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));return a};function mxShapeBasicDiagRoundRect(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.5}mxUtils.extend(mxShapeBasicDiagRoundRect,mxActor);mxShapeBasicDiagRoundRect.prototype.customProperties=[{name:"dx",dispName:"Rounding Size",type:"float",min:0,defVal:6}];mxShapeBasicDiagRoundRect.prototype.cst={DIAG_ROUND_RECT:"mxgraph.basic.diag_round_rect"}; mxShapeBasicDiagRoundRect.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=2*Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));d=Math.min(.5*b,.5*c,d);a.begin();a.moveTo(d,0);a.lineTo(b,0);a.lineTo(b,c-d);a.arcTo(d,d,0,0,1,b-d,c);a.lineTo(0,c);a.lineTo(0,d);a.arcTo(d,d,0,0,1,d,0);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeBasicDiagRoundRect.prototype.cst.DIAG_ROUND_RECT,mxShapeBasicDiagRoundRect); mxShapeBasicDiagRoundRect.prototype.constraints=null;Graph.handleFactory[mxShapeBasicDiagRoundRect.prototype.cst.DIAG_ROUND_RECT]=function(a){return[Graph.createHandle(a,["dx"],function(a){var d=Math.max(0,Math.min(a.width/4,a.width/4,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx))));return new mxPoint(a.x+d,a.y+d)},function(a,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(a.height/4,a.width/4,e.x-a.x)))/100})]}; +mxShapeBasicDiagRoundRect.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));return a}; function mxShapeBasicCornerRoundRect(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.5}mxUtils.extend(mxShapeBasicCornerRoundRect,mxActor);mxShapeBasicCornerRoundRect.prototype.customProperties=[{name:"dx",dispName:"Rounding Size",type:"float",min:0,defVal:6}];mxShapeBasicCornerRoundRect.prototype.cst={CORNER_ROUND_RECT:"mxgraph.basic.corner_round_rect"}; mxShapeBasicCornerRoundRect.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=2*Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));d=Math.min(.5*b,.5*c,d);a.begin();a.moveTo(d,0);a.lineTo(b,0);a.lineTo(b,c);a.lineTo(0,c);a.lineTo(0,d);a.arcTo(d,d,0,0,1,d,0);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeBasicCornerRoundRect.prototype.cst.CORNER_ROUND_RECT,mxShapeBasicCornerRoundRect);mxShapeBasicCornerRoundRect.prototype.constraints=null; Graph.handleFactory[mxShapeBasicCornerRoundRect.prototype.cst.CORNER_ROUND_RECT]=function(a){return[Graph.createHandle(a,["dx"],function(a){var d=Math.max(0,Math.min(a.width/4,a.width/4,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx))));return new mxPoint(a.x+d,a.y+d)},function(a,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(a.height/4,a.width/4,e.x-a.x)))/100})]}; +mxShapeBasicCornerRoundRect.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));return a}; function mxShapeBasicPlaque(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.5}mxUtils.extend(mxShapeBasicPlaque,mxActor);mxShapeBasicPlaque.prototype.customProperties=[{name:"dx",dispName:"Cutoff Size",type:"float",min:0,defVal:6}];mxShapeBasicPlaque.prototype.cst={PLAQUE:"mxgraph.basic.plaque"}; mxShapeBasicPlaque.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=2*Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));d=Math.min(.5*b,.5*c,d);a.begin();a.moveTo(b-d,0);a.arcTo(d,d,0,0,0,b,d);a.lineTo(b,c-d);a.arcTo(d,d,0,0,0,b-d,c);a.lineTo(d,c);a.arcTo(d,d,0,0,0,0,c-d);a.lineTo(0,d);a.arcTo(d,d,0,0,0,d,0);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeBasicPlaque.prototype.cst.PLAQUE,mxShapeBasicPlaque); mxShapeBasicPlaque.prototype.constraints=null;Graph.handleFactory[mxShapeBasicPlaque.prototype.cst.PLAQUE]=function(a){return[Graph.createHandle(a,["dx"],function(a){var d=Math.max(0,Math.min(a.width/4,a.width/4,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx))));return new mxPoint(a.x+1.41*d,a.y+1.41*d)},function(a,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(a.height/4,a.width/4,e.x-a.x)))/100})]}; -function mxShapeBasicFrame(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.5}mxUtils.extend(mxShapeBasicFrame,mxActor);mxShapeBasicFrame.prototype.customProperties=[{name:"dx",dispName:"Width",type:"float",min:0,defVal:10}];mxShapeBasicFrame.prototype.cst={FRAME:"mxgraph.basic.frame"}; +mxShapeBasicPlaque.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));return a};function mxShapeBasicFrame(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.5}mxUtils.extend(mxShapeBasicFrame,mxActor); +mxShapeBasicFrame.prototype.customProperties=[{name:"dx",dispName:"Width",type:"float",min:0,defVal:10}];mxShapeBasicFrame.prototype.cst={FRAME:"mxgraph.basic.frame"}; mxShapeBasicFrame.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));d=Math.min(.5*b,.5*c,d);a.begin();a.moveTo(b,0);a.lineTo(b,c);a.lineTo(0,c);a.lineTo(0,0);a.close();a.moveTo(d,d);a.lineTo(d,c-d);a.lineTo(b-d,c-d);a.lineTo(b-d,d);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeBasicFrame.prototype.cst.FRAME,mxShapeBasicFrame);mxShapeBasicFrame.prototype.constraints=null; Graph.handleFactory[mxShapeBasicFrame.prototype.cst.FRAME]=function(a){return[Graph.createHandle(a,["dx"],function(a){var d=Math.max(0,Math.min(a.width/2,a.width/2,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx))));return new mxPoint(a.x+d,a.y+d)},function(a,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(a.height/2,a.width/2,e.x-a.x)))/100})]}; -function mxShapeBasicPlaqueFrame(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.5}mxUtils.extend(mxShapeBasicPlaqueFrame,mxActor);mxShapeBasicPlaqueFrame.prototype.customProperties=[{name:"dx",dispName:"Width",type:"float",mix:0,defVal:10}];mxShapeBasicPlaqueFrame.prototype.cst={PLAQUE_FRAME:"mxgraph.basic.plaque_frame"}; +mxShapeBasicFrame.prototype.getConstraints=function(a,d,e){a=[];var b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),b=Math.min(.5*d,.5*e,b);a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*d,0));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*d,0));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,d,.25*e));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.75*e));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*d,e));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*d,e));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,0,.75*e));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*(d-2*b)+b,b));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1,null,0,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(1.5*d-b),b));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,-b,b));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,d-b,.25*(e-2*b)+b));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null,-b,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-b,.75*(e-2*b)+b));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1,null,-b,-b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*(d-2*b)+b,e-b));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1,null,0,-b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*(d-2*b)+b,e-b));a.push(new mxConnectionConstraint(new mxPoint(0, +1),!1,null,b,-b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.75*(e-2*b)+b));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,b,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.25*(e-2*b)+b));return a};function mxShapeBasicPlaqueFrame(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.5}mxUtils.extend(mxShapeBasicPlaqueFrame,mxActor); +mxShapeBasicPlaqueFrame.prototype.customProperties=[{name:"dx",dispName:"Width",type:"float",mix:0,defVal:10}];mxShapeBasicPlaqueFrame.prototype.cst={PLAQUE_FRAME:"mxgraph.basic.plaque_frame"}; mxShapeBasicPlaqueFrame.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));d=Math.min(.25*b,.25*c,d);a.begin();a.moveTo(b-d,0);a.arcTo(d,d,0,0,0,b,d);a.lineTo(b,c-d);a.arcTo(d,d,0,0,0,b-d,c);a.lineTo(d,c);a.arcTo(d,d,0,0,0,0,c-d);a.lineTo(0,d);a.arcTo(d,d,0,0,0,d,0);a.close();a.moveTo(2*d,d);a.arcTo(2*d,2*d,0,0,1,d,2*d);a.lineTo(d,c-2*d);a.arcTo(2*d,2*d,0,0,1,2*d,c-d);a.lineTo(b-2*d,c-d);a.arcTo(2*d,2*d,0, 0,1,b-d,c-2*d);a.lineTo(b-d,2*d);a.arcTo(2*d,2*d,0,0,1,b-2*d,d);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeBasicPlaqueFrame.prototype.cst.PLAQUE_FRAME,mxShapeBasicPlaqueFrame);mxShapeBasicPlaqueFrame.prototype.constraints=null; Graph.handleFactory[mxShapeBasicPlaqueFrame.prototype.cst.PLAQUE_FRAME]=function(a){return[Graph.createHandle(a,["dx"],function(a){var d=Math.max(0,Math.min(a.width/4,a.width/4,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx))));return new mxPoint(a.x+d,a.y+d)},function(a,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(a.height/4,a.width/4,e.x-a.x)))/100})]}; -function mxShapeBasicRoundedFrame(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.5}mxUtils.extend(mxShapeBasicRoundedFrame,mxActor);mxShapeBasicRoundedFrame.prototype.customProperties=[{name:"dx",dispName:"Width",type:"float",min:0,defVal:10}];mxShapeBasicRoundedFrame.prototype.cst={ROUNDED_FRAME:"mxgraph.basic.rounded_frame"}; +mxShapeBasicPlaqueFrame.prototype.getConstraints=function(a,d,e){a=[];var b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),b=Math.min(.5*d,.5*e,b);a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1,null,0,b));a.push(new mxConnectionConstraint(new mxPoint(1, +.5),!1,null,-b,0));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1,null,0,-b));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,b,0));return a};function mxShapeBasicRoundedFrame(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.5}mxUtils.extend(mxShapeBasicRoundedFrame,mxActor);mxShapeBasicRoundedFrame.prototype.customProperties=[{name:"dx",dispName:"Width",type:"float",min:0,defVal:10}]; +mxShapeBasicRoundedFrame.prototype.cst={ROUNDED_FRAME:"mxgraph.basic.rounded_frame"}; mxShapeBasicRoundedFrame.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));d=Math.min(.25*b,.25*c,d);a.begin();a.moveTo(b-2*d,0);a.arcTo(2*d,2*d,0,0,1,b,2*d);a.lineTo(b,c-2*d);a.arcTo(2*d,2*d,0,0,1,b-2*d,c);a.lineTo(2*d,c);a.arcTo(2*d,2*d,0,0,1,0,c-2*d);a.lineTo(0,2*d);a.arcTo(2*d,2*d,0,0,1,2*d,0);a.close();a.moveTo(2*d,d);a.arcTo(d,d,0,0,0,d,2*d);a.lineTo(d,c-2*d);a.arcTo(d,d,0,0,0,2*d,c-d);a.lineTo(b-2* d,c-d);a.arcTo(d,d,0,0,0,b-d,c-2*d);a.lineTo(b-d,2*d);a.arcTo(d,d,0,0,0,b-2*d,d);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeBasicRoundedFrame.prototype.cst.ROUNDED_FRAME,mxShapeBasicRoundedFrame);mxShapeBasicRoundedFrame.prototype.constraints=null; Graph.handleFactory[mxShapeBasicRoundedFrame.prototype.cst.ROUNDED_FRAME]=function(a){return[Graph.createHandle(a,["dx"],function(a){var d=Math.max(0,Math.min(a.width/4,a.width/4,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx))));return new mxPoint(a.x+d,a.y+d)},function(a,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(a.height/4,a.width/4,e.x-a.x)))/100})]}; -function mxShapeBasicFrameCorner(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.5}mxUtils.extend(mxShapeBasicFrameCorner,mxActor);mxShapeBasicFrameCorner.prototype.customProperties=[{name:"dx",dispName:"Width",type:"float",min:0,defVal:10}];mxShapeBasicFrameCorner.prototype.cst={FRAME_CORNER:"mxgraph.basic.frame_corner"}; +mxShapeBasicRoundedFrame.prototype.getConstraints=function(a,d,e){a=[];var b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),b=Math.min(.5*d,.5*e,b);a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1,null,0,b));a.push(new mxConnectionConstraint(new mxPoint(1, +.5),!1,null,-b,0));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1,null,0,-b));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,b,0));return a};function mxShapeBasicFrameCorner(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.5}mxUtils.extend(mxShapeBasicFrameCorner,mxActor);mxShapeBasicFrameCorner.prototype.customProperties=[{name:"dx",dispName:"Width",type:"float",min:0,defVal:10}];mxShapeBasicFrameCorner.prototype.cst={FRAME_CORNER:"mxgraph.basic.frame_corner"}; mxShapeBasicFrameCorner.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));d=Math.min(.5*b,.5*c,d);a.begin();a.moveTo(0,0);a.lineTo(b,0);a.lineTo(b-d,d);a.lineTo(d,d);a.lineTo(d,c-d);a.lineTo(0,c);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeBasicFrameCorner.prototype.cst.FRAME_CORNER,mxShapeBasicFrameCorner);mxShapeBasicFrameCorner.prototype.constraints=null; Graph.handleFactory[mxShapeBasicFrameCorner.prototype.cst.FRAME_CORNER]=function(a){return[Graph.createHandle(a,["dx"],function(a){var d=Math.max(0,Math.min(a.width/2,a.width/2,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx))));return new mxPoint(a.x+d,a.y+d)},function(a,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(a.height/2,a.width/2,e.x-a.x)))/100})]}; -function mxShapeBasicDiagStripe(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.5}mxUtils.extend(mxShapeBasicDiagStripe,mxActor);mxShapeBasicDiagStripe.prototype.customProperties=[{name:"dx",dispName:"Width",type:"float",mix:0,defVal:10}];mxShapeBasicDiagStripe.prototype.cst={DIAG_STRIPE:"mxgraph.basic.diag_stripe"}; -mxShapeBasicDiagStripe.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));d=Math.min(b,c,d);a.begin();a.moveTo(0,c);a.lineTo(b,0);a.lineTo(b,Math.min(100*d/b,c));a.lineTo(Math.min(100*d/c,b),c);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeBasicDiagStripe.prototype.cst.DIAG_STRIPE,mxShapeBasicDiagStripe);mxShapeBasicDiagStripe.prototype.constraints=null; +mxShapeBasicFrameCorner.prototype.getConstraints=function(a,d,e){a=[];var b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),b=Math.min(.5*d,.5*e,b);a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,-b,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-2*b)+b,b));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,b,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*(e-2*b)+b));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,b,-b));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));return a};function mxShapeBasicDiagStripe(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.5}mxUtils.extend(mxShapeBasicDiagStripe,mxActor); +mxShapeBasicDiagStripe.prototype.customProperties=[{name:"dx",dispName:"Width",type:"float",mix:0,defVal:10}];mxShapeBasicDiagStripe.prototype.cst={DIAG_STRIPE:"mxgraph.basic.diag_stripe"};mxShapeBasicDiagStripe.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));d=Math.min(b,c,d);a.begin();a.moveTo(0,c);a.lineTo(b,0);a.lineTo(b,Math.min(100*d/b,c));a.lineTo(Math.min(100*d/c,b),c);a.close();a.fillAndStroke()}; +mxCellRenderer.registerShape(mxShapeBasicDiagStripe.prototype.cst.DIAG_STRIPE,mxShapeBasicDiagStripe);mxShapeBasicDiagStripe.prototype.constraints=null; Graph.handleFactory[mxShapeBasicDiagStripe.prototype.cst.DIAG_STRIPE]=function(a){return[Graph.createHandle(a,["dx"],function(a){var d=Math.max(0,Math.min(a.width/2,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx))));return new mxPoint(a.x+d,a.y+a.height)},function(a,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(a.height/2,a.width/2,e.x-a.x)))/100})]}; -function mxShapeBasicDonut(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.5}mxUtils.extend(mxShapeBasicDonut,mxActor);mxShapeBasicDonut.prototype.customProperties=[{name:"dx",dispName:"Width",type:"float",min:0,defVal:25}];mxShapeBasicDonut.prototype.cst={DONUT:"mxgraph.basic.donut"}; +mxShapeBasicDiagStripe.prototype.getConstraints=function(a,d,e){a=[];var b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),b=Math.min(d,e,b);a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*Math.min(100*b/d,e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,Math.min(100* +b/d,e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+Math.min(100*b/e,d)),.5*(Math.min(100*b/d,e)+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,Math.min(100*b/e,d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*Math.min(100*b/e,d),e));return a};function mxShapeBasicDonut(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.5}mxUtils.extend(mxShapeBasicDonut,mxActor); +mxShapeBasicDonut.prototype.customProperties=[{name:"dx",dispName:"Width",type:"float",min:0,defVal:25}];mxShapeBasicDonut.prototype.cst={DONUT:"mxgraph.basic.donut"}; mxShapeBasicDonut.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));d=Math.min(.5*b,.5*c,d);a.begin();a.moveTo(0,.5*c);a.arcTo(.5*b,.5*c,0,0,1,.5*b,0);a.arcTo(.5*b,.5*c,0,0,1,b,.5*c);a.arcTo(.5*b,.5*c,0,0,1,.5*b,c);a.arcTo(.5*b,.5*c,0,0,1,0,.5*c);a.close();a.moveTo(.5*b,d);a.arcTo(.5*b-d,.5*c-d,0,0,0,d,.5*c);a.arcTo(.5*b-d,.5*c-d,0,0,0,.5*b,c-d);a.arcTo(.5*b-d,.5*c-d,0,0,0,b-d,.5*c);a.arcTo(.5*b-d,.5*c-d, 0,0,0,.5*b,d);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeBasicDonut.prototype.cst.DONUT,mxShapeBasicDonut);mxShapeBasicDonut.prototype.constraints=null; Graph.handleFactory[mxShapeBasicDonut.prototype.cst.DONUT]=function(a){return[Graph.createHandle(a,["dx"],function(a){var d=Math.max(0,Math.min(a.width/2,a.width/2,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx))));return new mxPoint(a.x+d,a.y+a.height/2)},function(a,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(a.height/2,a.width/2,e.x-a.x)))/100})]}; @@ -1747,7 +1850,10 @@ function mxShapeBasicLayeredRect(a,d,e,b){mxShape.call(this);this.bounds=a;this. mxShapeBasicLayeredRect.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));d=Math.min(.5*b,.5*c,d);a.begin();a.moveTo(d,d);a.lineTo(b,d);a.lineTo(b,c);a.lineTo(d,c);a.close();a.fillAndStroke();a.begin();a.moveTo(.5*d,.5*d);a.lineTo(b-.5*d,.5*d);a.lineTo(b-.5*d,c-.5*d);a.lineTo(.5*d,c-.5*d);a.close();a.fillAndStroke();a.begin();a.moveTo(0,0);a.lineTo(b-d,0);a.lineTo(b-d,c-d);a.lineTo(0,c-d);a.close();a.fillAndStroke()}; mxCellRenderer.registerShape(mxShapeBasicLayeredRect.prototype.cst.LAYERED_RECT,mxShapeBasicLayeredRect);mxShapeBasicLayeredRect.prototype.constraints=null; Graph.handleFactory[mxShapeBasicLayeredRect.prototype.cst.LAYERED_RECT]=function(a){return[Graph.createHandle(a,["dx"],function(a){var d=Math.max(0,Math.min(a.width/2,a.width/2,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx))));return new mxPoint(a.x+a.width-d,a.y+a.height-d)},function(a,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(a.height/2,a.width/2,-e.x+a.width+a.x)))/100})]}; -function mxShapeBasicButton(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.5}mxUtils.extend(mxShapeBasicButton,mxActor);mxShapeBasicButton.prototype.customProperties=[{name:"dx",dispName:"Button Height",type:"float",min:0,defVal:10}];mxShapeBasicButton.prototype.cst={BUTTON:"mxgraph.basic.button"}; +mxShapeBasicLayeredRect.prototype.getConstraints=function(a,d,e){a=[];var b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),b=Math.min(.5*d,.5*e,b);a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*(d-b),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-b),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*(d-b),0));a.push(new mxConnectionConstraint(new mxPoint(0,0), +!1,null,d-b,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*b,.5*b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.25*(e-b)+b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(e-b)+b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.75*(e-b)+b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null, +.75*(d-b)+b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-b)+b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*(d-b)+b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*b,e-.5*b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e-b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.75*(e-b)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null, +0,.5*(e-b)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(e-b)));return a};function mxShapeBasicButton(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.5}mxUtils.extend(mxShapeBasicButton,mxActor);mxShapeBasicButton.prototype.customProperties=[{name:"dx",dispName:"Button Height",type:"float",min:0,defVal:10}];mxShapeBasicButton.prototype.cst={BUTTON:"mxgraph.basic.button"}; mxShapeBasicButton.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));d=Math.min(.5*b,.5*c,d);a.begin();a.moveTo(0,0);a.lineTo(b,0);a.lineTo(b,c);a.lineTo(0,c);a.close();a.fillAndStroke();a.setShadow(!1);a.setLineJoin("round");a.begin();a.moveTo(0,c);a.lineTo(0,0);a.lineTo(d,d);a.lineTo(d,c-d);a.close();a.fillAndStroke();a.begin();a.moveTo(0,0);a.lineTo(b,0);a.lineTo(b-d,d);a.lineTo(d,d);a.close();a.fillAndStroke(); a.begin();a.moveTo(b,0);a.lineTo(b,c);a.lineTo(b-d,c-d);a.lineTo(b-d,d);a.close();a.fillAndStroke();a.begin();a.moveTo(0,c);a.lineTo(d,c-d);a.lineTo(b-d,c-d);a.lineTo(b,c);a.close();a.fillAndStroke();a.begin();a.moveTo(0,c);a.lineTo(0,0);a.lineTo(d,d);a.lineTo(d,c-d);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeBasicButton.prototype.cst.BUTTON,mxShapeBasicButton);mxShapeBasicButton.prototype.constraints=null; Graph.handleFactory[mxShapeBasicButton.prototype.cst.BUTTON]=function(a){return[Graph.createHandle(a,["dx"],function(a){var d=Math.max(0,Math.min(a.width/2,a.width/2,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx))));return new mxPoint(a.x+d,a.y+d)},function(a,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(a.height/2,a.width/2,e.x-a.x)))/100})]}; @@ -1785,6 +1891,7 @@ Graph.handleFactory[mxShapeBasicBendingArch.prototype.cst.BENDING_ARCH]=function function mxShapeBasicThreeCornerRoundRect(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=.5}mxUtils.extend(mxShapeBasicThreeCornerRoundRect,mxActor);mxShapeBasicThreeCornerRoundRect.prototype.customProperties=[{name:"dx",dispName:"Rounding Size",type:"float",min:0,defVal:6}];mxShapeBasicThreeCornerRoundRect.prototype.cst={THREE_CORNER_ROUND_RECT:"mxgraph.basic.three_corner_round_rect"}; mxShapeBasicThreeCornerRoundRect.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=2*Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));d=Math.min(.5*b,.5*c,d);a.begin();a.moveTo(d,0);a.lineTo(b-d,0);a.arcTo(d,d,0,0,1,b,d);a.lineTo(b,c-d);a.arcTo(d,d,0,0,1,b-d,c);a.lineTo(0,c);a.lineTo(0,d);a.arcTo(d,d,0,0,1,d,0);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeBasicThreeCornerRoundRect.prototype.cst.THREE_CORNER_ROUND_RECT,mxShapeBasicThreeCornerRoundRect); mxShapeBasicThreeCornerRoundRect.prototype.constraints=null;Graph.handleFactory[mxShapeBasicThreeCornerRoundRect.prototype.cst.THREE_CORNER_ROUND_RECT]=function(a){return[Graph.createHandle(a,["dx"],function(a){var d=Math.max(0,Math.min(a.width/4,a.width/4,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx))));return new mxPoint(a.x+d,a.y+d)},function(a,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(a.height/4,a.width/4,e.x-a.x)))/100})]}; +mxShapeBasicThreeCornerRoundRect.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));return a}; function mxShapeBasicRect2(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=!0;this.indent=2;this.rectOutline="single"}mxUtils.extend(mxShapeBasicRect2,mxActor);mxShapeBasicRect2.prototype.cst={RECT2:"mxgraph.basic.rect"}; mxShapeBasicRect2.prototype.customProperties=[{name:"rectStyle",dispName:"Style",type:"enum",defVal:"square",enumList:[{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]},{name:"size",dispName:"Corner Size",type:"float",defVal:10},{name:"absoluteCornerSize",dispName:"Abs. Corner Size",type:"bool",defVal:!0},{name:"indent",dispName:"Indent",type:"float",defVal:2},{name:"rectOutline",dispName:"Outline", type:"enum",defVal:"single",enumList:[{val:"single",dispName:"Single"},{val:"double",dispName:"Double"},{val:"frame",dispName:"Frame"}]},{name:"fillColor2",dispName:"Inside Fill Color",type:"color",defVal:"none"},{name:"gradientColor2",dispName:"Inside Gradient Color",type:"color",defVal:"none"},{name:"gradientDirection2",dispName:"Inside Gradient Direction",type:"enum",defVal:"south",enumList:[{val:"south",dispName:"South"},{val:"west",dispName:"West"},{val:"north",dispName:"North"},{val:"east", @@ -1900,51 +2007,53 @@ function mxCabinetsDimension(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill mxCabinetsDimension.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(0,20);a.lineTo(b,20);a.moveTo(10,15);a.lineTo(0,20);a.lineTo(10,25);a.moveTo(b-10,15);a.lineTo(b,20);a.lineTo(b-10,25);a.moveTo(0,15);a.lineTo(0,c);a.moveTo(b,15);a.lineTo(b,c);a.stroke()};mxCellRenderer.registerShape(mxCabinetsDimension.prototype.cst.DIMENSION,mxCabinetsDimension);function mxCabinetsDimensionBottom(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1} mxUtils.extend(mxCabinetsDimensionBottom,mxShape);mxCabinetsDimensionBottom.prototype.cst={DIMENSION:"mxgraph.cabinets.dimensionBottom"};mxCabinetsDimensionBottom.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,d,e,b,c)}; mxCabinetsDimensionBottom.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(0,c-20);a.lineTo(b,c-20);a.moveTo(10,c-15);a.lineTo(0,c-20);a.lineTo(10,c-25);a.moveTo(b-10,c-15);a.lineTo(b,c-20);a.lineTo(b-10,c-25);a.moveTo(0,c-15);a.lineTo(0,0);a.moveTo(b,c-15);a.lineTo(b,0);a.stroke()};mxCellRenderer.registerShape(mxCabinetsDimensionBottom.prototype.cst.DIMENSION,mxCabinetsDimensionBottom); -function mxShapeDFDStart(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeDFDStart,mxShape);mxShapeDFDStart.prototype.cst={START:"mxgraph.dfd.start"};mxShapeDFDStart.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.min(.5*c,.5*b);a.begin();a.moveTo(b-d,0);a.arcTo(d,d,0,0,1,b,.5*c);a.arcTo(d,d,0,0,1,b-d,c);a.lineTo(d,c);a.arcTo(d,d,0,0,1,0,.5*c);a.arcTo(d,d,0,0,1,d,0);a.close();a.fillAndStroke()}; -mxCellRenderer.registerShape(mxShapeDFDStart.prototype.cst.START,mxShapeDFDStart);mxShapeDFDStart.prototype.constraints=null;function mxShapeDFDArchive(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeDFDArchive,mxShape);mxShapeDFDArchive.prototype.cst={ARCHIVE:"mxgraph.dfd.archive"}; -mxShapeDFDArchive.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.begin();a.moveTo(0,0);a.lineTo(b,0);a.lineTo(.5*b,c);a.close();a.fillAndStroke();a.setShadow(!1);a.begin();a.moveTo(.1*b,.2*c);a.lineTo(.9*b,.2*c);a.stroke()};mxCellRenderer.registerShape(mxShapeDFDArchive.prototype.cst.ARCHIVE,mxShapeDFDArchive);mxShapeDFDArchive.prototype.constraints=null;function mxShapeDFDCheck2(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1} -mxUtils.extend(mxShapeDFDCheck2,mxShape);mxShapeDFDCheck2.prototype.cst={CHECK2:"mxgraph.dfd.check2"};mxShapeDFDCheck2.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.min(.5*c,.5*b);a.begin();a.moveTo(0,.5*c);a.lineTo(d,0);a.lineTo(b-d,0);a.lineTo(b,.5*c);a.lineTo(b-d,c);a.lineTo(d,c);a.lineTo(0,.5*c);a.close();a.fillAndStroke();a.setShadow(!1);a.begin();a.moveTo(b-d,0);a.lineTo(b-2*d,.5*c);a.lineTo(b-d,c);a.stroke()}; -mxCellRenderer.registerShape(mxShapeDFDCheck2.prototype.cst.CHECK2,mxShapeDFDCheck2);mxShapeDFDCheck2.prototype.constraints=null;function mxShapeDFDDataStoreID(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeDFDDataStoreID,mxShape);mxShapeDFDDataStoreID.prototype.cst={DATA_STORE_ID:"mxgraph.dfd.dataStoreID"}; +function mxShapeDFDStart(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeDFDStart,mxShape);mxShapeDFDStart.prototype.cst={START:"mxgraph.dfd.start"};mxShapeDFDStart.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.min(.5*c,.5*b);a.begin();a.moveTo(b-d,.5*c-d);a.arcTo(d,d,0,0,1,b,.5*c);a.arcTo(d,d,0,0,1,b-d,.5*c+d);a.lineTo(d,.5*c+d);a.arcTo(d,d,0,0,1,0,.5*c);a.arcTo(d,d,0,0,1,d,.5*c-d);a.close();a.fillAndStroke()}; +mxCellRenderer.registerShape(mxShapeDFDStart.prototype.cst.START,mxShapeDFDStart); +mxShapeDFDStart.prototype.getConstraints=function(a,d,e){a=[];var b=Math.min(.5*e,.5*d);a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,.5),!1,null,0,-b));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,.5),!1,null,0,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.293*b,.5*e-.707*b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.293*b,.5*e-.707*b));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,d-.293*b,.5*e+.707*b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.293*b,.5*e+.707*b));d>=4*e&&(a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1)),a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1)));return a};function mxShapeDFDArchive(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1} +mxUtils.extend(mxShapeDFDArchive,mxShape);mxShapeDFDArchive.prototype.cst={ARCHIVE:"mxgraph.dfd.archive"};mxShapeDFDArchive.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.begin();a.moveTo(0,0);a.lineTo(b,0);a.lineTo(.5*b,c);a.close();a.fillAndStroke();a.setShadow(!1);a.begin();a.moveTo(.1*b,.2*c);a.lineTo(.9*b,.2*c);a.stroke()};mxCellRenderer.registerShape(mxShapeDFDArchive.prototype.cst.ARCHIVE,mxShapeDFDArchive); +mxShapeDFDArchive.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.875,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.625, +.75),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.375,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.125,.25),!1));return a};function mxShapeDFDCheck2(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeDFDCheck2,mxShape);mxShapeDFDCheck2.prototype.cst={CHECK2:"mxgraph.dfd.check2"}; +mxShapeDFDCheck2.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.min(.5*c,.5*b);a.begin();a.moveTo(0,.5*c);a.lineTo(d,0);a.lineTo(b-d,0);a.lineTo(b,.5*c);a.lineTo(b-d,c);a.lineTo(d,c);a.lineTo(0,.5*c);a.close();a.fillAndStroke();a.setShadow(!1);a.begin();a.moveTo(b-d,0);a.lineTo(b-2*d,.5*c);a.lineTo(b-d,c);a.stroke()};mxCellRenderer.registerShape(mxShapeDFDCheck2.prototype.cst.CHECK2,mxShapeDFDCheck2); +mxShapeDFDCheck2.prototype.getConstraints=function(a,d,e){a=[];var b=Math.min(.5*e,.5*d);a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*b,.25*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*b,.25*e));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,.5*b,.75*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*b,.75*e));d>e&&(a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-b,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-b,e)));4*b<=d&&(a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(.25, +1),!1)),a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1)));return a};function mxShapeDFDDataStoreID(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeDFDDataStoreID,mxShape);mxShapeDFDDataStoreID.prototype.cst={DATA_STORE_ID:"mxgraph.dfd.dataStoreID"}; mxShapeDFDDataStoreID.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.begin();a.moveTo(b,c);a.lineTo(0,c);a.lineTo(0,0);a.lineTo(b,0);a.stroke();a.setShadow(!1);d=Math.min(30,b);a.begin();a.moveTo(d,0);a.lineTo(d,c);a.stroke()};mxCellRenderer.registerShape(mxShapeDFDDataStoreID.prototype.cst.DATA_STORE_ID,mxShapeDFDDataStoreID);mxShapeDFDDataStoreID.prototype.constraints=null; function mxShapeDFDExternalEntity(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeDFDExternalEntity,mxShape);mxShapeDFDExternalEntity.prototype.cst={EXTERNAL_ENTITY:"mxgraph.dfd.externalEntity"}; mxShapeDFDExternalEntity.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.begin();a.moveTo(0,0);a.lineTo(b-10,0);a.lineTo(b,10);a.lineTo(b,c);a.lineTo(10,c);a.lineTo(0,c-10);a.close();a.fillAndStroke();a.setShadow(!1);a.setFillColor("#000000");a.setAlpha(.5);a.begin();a.moveTo(0,0);a.lineTo(b-10,0);a.lineTo(b,10);a.lineTo(10,10);a.lineTo(10,c);a.lineTo(0,c-10);a.close();a.fill();d=parseFloat(mxUtils.getValue(this.style,"opacity","100"));a.setAlpha(d/100);a.begin();a.moveTo(0,0);a.lineTo(b- -10,0);a.lineTo(b,10);a.lineTo(b,c);a.lineTo(10,c);a.lineTo(0,c-10);a.close();a.moveTo(10,c);a.lineTo(10,10);a.lineTo(b,10);a.moveTo(0,0);a.lineTo(10,10);a.stroke()};mxCellRenderer.registerShape(mxShapeDFDExternalEntity.prototype.cst.EXTERNAL_ENTITY,mxShapeDFDExternalEntity);mxShapeDFDExternalEntity.prototype.constraints=null;function mxShapeDFDLoop(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeDFDLoop,mxShape); -mxShapeDFDLoop.prototype.cst={LOOP:"mxgraph.dfd.loop"};mxShapeDFDLoop.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.min(.8*c,.8*b);a.begin();a.moveTo(b-.25*d,0);a.arcTo(d,d,0,0,1,b-.25*d,c);a.lineTo(.25*d,c);a.arcTo(d,d,0,0,1,.25*d,0);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeDFDLoop.prototype.cst.LOOP,mxShapeDFDLoop);mxShapeDFDLoop.prototype.constraints=null; +10,0);a.lineTo(b,10);a.lineTo(b,c);a.lineTo(10,c);a.lineTo(0,c-10);a.close();a.moveTo(10,c);a.lineTo(10,10);a.lineTo(b,10);a.moveTo(0,0);a.lineTo(10,10);a.stroke()};mxCellRenderer.registerShape(mxShapeDFDExternalEntity.prototype.cst.EXTERNAL_ENTITY,mxShapeDFDExternalEntity); +mxShapeDFDExternalEntity.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*(d-10),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-10),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*(d-10),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-10,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,10,e));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,.25*(d-10)+10,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-10)+10,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*(d-10)+10,e));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,10));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,10+.25*(e-10)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,10+.5*(e-10)));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,d,10+.75*(e-10)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(e-10)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(e-10)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.75*(e-10)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e-10));return a};function mxShapeDFDLoop(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeDFDLoop,mxShape); +mxShapeDFDLoop.prototype.cst={LOOP:"mxgraph.dfd.loop"};mxShapeDFDLoop.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.min(.8*c,.8*b);a.begin();a.moveTo(b-.25*d,0);a.arcTo(d,d,0,0,1,b-.25*d,c);a.lineTo(.25*d,c);a.arcTo(d,d,0,0,1,.25*d,0);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeDFDLoop.prototype.cst.LOOP,mxShapeDFDLoop); +mxShapeDFDLoop.prototype.getConstraints=function(a,d,e){a=[];var b=Math.min(.8*e,.8*d);a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.25*b,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.25*b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*b,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*b,e));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));return a}; function mxShapeEipMessageExpiration(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeEipMessageExpiration,mxShape);mxShapeEipMessageExpiration.prototype.cst={SHAPE_MESS_EXP:"mxgraph.eip.messExp"};mxShapeEipMessageExpiration.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,d,e,b,c)}; -mxShapeEipMessageExpiration.prototype.background=function(a,d,e,b,c){a.ellipse(0,0,b,c);a.stroke();a.setStrokeColor("#808080");a.begin();a.moveTo(.5*b,.1*c);a.lineTo(.5*b,.5*c);a.lineTo(.6*b,.8*c);a.stroke()};mxCellRenderer.registerShape(mxShapeEipMessageExpiration.prototype.cst.SHAPE_MESS_EXP,mxShapeEipMessageExpiration);function mxShapeEipReturnAddress(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeEipReturnAddress,mxShape); -mxShapeEipReturnAddress.prototype.cst={SHAPE_RET_ADDR:"mxgraph.eip.retAddr"};mxShapeEipReturnAddress.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,d,e,b,c);a.setShadow(!1);this.foreground(a,d,e,b,c)};mxShapeEipReturnAddress.prototype.background=function(a,d,e,b,c){a.rect(0,0,b,c);a.fillAndStroke()}; +mxShapeEipMessageExpiration.prototype.background=function(a,d,e,b,c){a.ellipse(0,0,b,c);a.stroke();a.setStrokeColor("#808080");a.begin();a.moveTo(.5*b,.1*c);a.lineTo(.5*b,.5*c);a.lineTo(.6*b,.8*c);a.stroke()};mxCellRenderer.registerShape(mxShapeEipMessageExpiration.prototype.cst.SHAPE_MESS_EXP,mxShapeEipMessageExpiration); +mxShapeEipMessageExpiration.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(.145,.145),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.855,.145),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.855,.855),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.145,.855),!1));a.push(new mxConnectionConstraint(new mxPoint(0, +.5),!1));return a};function mxShapeEipReturnAddress(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeEipReturnAddress,mxShape);mxShapeEipReturnAddress.prototype.cst={SHAPE_RET_ADDR:"mxgraph.eip.retAddr"};mxShapeEipReturnAddress.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,d,e,b,c);a.setShadow(!1);this.foreground(a,d,e,b,c)}; +mxShapeEipReturnAddress.prototype.background=function(a,d,e,b,c){a.rect(0,0,b,c);a.fillAndStroke()}; mxShapeEipReturnAddress.prototype.foreground=function(a,d,e,b,c){a.begin();a.moveTo(.05*b,.11*c);a.lineTo(.25*b,.11*c);a.moveTo(.05*b,.18*c);a.lineTo(.25*b,.18*c);a.moveTo(.05*b,.25*c);a.lineTo(.25*b,.25*c);a.setStrokeWidth(2);a.moveTo(.3*b,.63*c);a.lineTo(.8*b,.63*c);a.moveTo(.3*b,.72*c);a.lineTo(.8*b,.72*c);a.moveTo(.3*b,.8*c);a.lineTo(.8*b,.8*c);a.stroke();a.setFillColor("#EDEDED");a.rect(.8*b,.1*c,.12*b,.19*c);a.fillAndStroke()}; -mxCellRenderer.registerShape(mxShapeEipReturnAddress.prototype.cst.SHAPE_RET_ADDR,mxShapeEipReturnAddress);function mxShapeEipAnchor(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeEipAnchor,mxShape);mxShapeEipAnchor.prototype.cst={SHAPE_ANCHOR:"mxgraph.eip.anchor"};mxShapeEipAnchor.prototype.paintVertexShape=function(a,d,e,b,c){};mxCellRenderer.registerShape(mxShapeEipAnchor.prototype.cst.SHAPE_ANCHOR,mxShapeEipAnchor); +mxCellRenderer.registerShape(mxShapeEipReturnAddress.prototype.cst.SHAPE_RET_ADDR,mxShapeEipReturnAddress); +mxShapeEipReturnAddress.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1, +.75),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.25),!1));return a}; +function mxShapeEipAnchor(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeEipAnchor,mxShape);mxShapeEipAnchor.prototype.cst={SHAPE_ANCHOR:"mxgraph.eip.anchor"};mxShapeEipAnchor.prototype.paintVertexShape=function(a,d,e,b,c){};mxCellRenderer.registerShape(mxShapeEipAnchor.prototype.cst.SHAPE_ANCHOR,mxShapeEipAnchor); function mxShapeEipMessageChannel(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeEipMessageChannel,mxShape);mxShapeEipMessageChannel.prototype.cst={SHAPE_MESSAGE_CHANNEL:"mxgraph.eip.messageChannel"};mxShapeEipMessageChannel.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,d,e,b,c);a.setShadow(!1);this.foreground(a,d,e,b,c)}; mxShapeEipMessageChannel.prototype.background=function(a,d,e,b,c){a.setGradient("#e6e6e6","#808080",0,0,b,c,mxConstants.DIRECTION_SOUTH,1,1);a.begin();a.moveTo(8,.5*c+10);a.arcTo(12,12,0,0,1,8,.5*c-10);a.lineTo(b-8,.5*c-10);a.arcTo(12,12,0,0,1,b-8,.5*c+10);a.close();a.fillAndStroke()};mxShapeEipMessageChannel.prototype.foreground=function(a,d,e,b,c){a.setFillColor("#e6e6e6");a.begin();a.moveTo(b-8,.5*c-10);a.arcTo(12,12,0,0,1,b-8,.5*c+10);a.arcTo(12,12,0,0,1,b-8,.5*c-10);a.fillAndStroke()}; -mxCellRenderer.registerShape(mxShapeEipMessageChannel.prototype.cst.SHAPE_MESSAGE_CHANNEL,mxShapeEipMessageChannel); -mxShapeEipMessageChannel.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(.05,0),!0),new mxConnectionConstraint(new mxPoint(.1,0),!0),new mxConnectionConstraint(new mxPoint(.15,0),!0),new mxConnectionConstraint(new mxPoint(.2,0),!0),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.3,0),!0),new mxConnectionConstraint(new mxPoint(.35,0),!0),new mxConnectionConstraint(new mxPoint(.4, -0),!0),new mxConnectionConstraint(new mxPoint(.45,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.55,0),!0),new mxConnectionConstraint(new mxPoint(.6,0),!0),new mxConnectionConstraint(new mxPoint(.65,0),!0),new mxConnectionConstraint(new mxPoint(.7,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(.8,0),!0),new mxConnectionConstraint(new mxPoint(.85,0),!0),new mxConnectionConstraint(new mxPoint(.9,0),!0), -new mxConnectionConstraint(new mxPoint(.95,0),!0),new mxConnectionConstraint(new mxPoint(.05,1),!0),new mxConnectionConstraint(new mxPoint(.1,1),!0),new mxConnectionConstraint(new mxPoint(.15,1),!0),new mxConnectionConstraint(new mxPoint(.2,1),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.3,1),!0),new mxConnectionConstraint(new mxPoint(.35,1),!0),new mxConnectionConstraint(new mxPoint(.4,1),!0),new mxConnectionConstraint(new mxPoint(.45,1),!0),new mxConnectionConstraint(new mxPoint(.5, -1),!0),new mxConnectionConstraint(new mxPoint(.55,1),!0),new mxConnectionConstraint(new mxPoint(.6,1),!0),new mxConnectionConstraint(new mxPoint(.65,1),!0),new mxConnectionConstraint(new mxPoint(.7,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(.8,1),!0),new mxConnectionConstraint(new mxPoint(.85,1),!0),new mxConnectionConstraint(new mxPoint(.9,1),!0),new mxConnectionConstraint(new mxPoint(.95,1),!0)]; +mxCellRenderer.registerShape(mxShapeEipMessageChannel.prototype.cst.SHAPE_MESSAGE_CHANNEL,mxShapeEipMessageChannel);mxShapeEipMessageChannel.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,2.7,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null,-2.7,0));for(e=10;e<d;)a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0)),a.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,e,0)),e+=10;return a}; function mxShapeEipDatatypeChannel(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeEipDatatypeChannel,mxShape);mxShapeEipDatatypeChannel.prototype.cst={SHAPE_DATATYPE_CHANNEL:"mxgraph.eip.dataChannel"};mxShapeEipDatatypeChannel.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,d,e,b,c);a.setShadow(!1);this.foreground(a,d,e,b,c)}; mxShapeEipDatatypeChannel.prototype.background=function(a,d,e,b,c){a.setGradient("#e6e6e6","#808080",0,0,b,c,mxConstants.DIRECTION_SOUTH,1,1);a.begin();a.moveTo(8,.5*c+10);a.arcTo(12,12,0,0,1,8,.5*c-10);a.lineTo(b-8,.5*c-10);a.arcTo(12,12,0,0,1,b-8,.5*c+10);a.close();a.fillAndStroke()}; mxShapeEipDatatypeChannel.prototype.foreground=function(a,d,e,b,c){a.setFillColor("#e6e6e6");a.begin();a.moveTo(b-8,.5*c-10);a.arcTo(12,12,0,0,1,b-8,.5*c+10);a.arcTo(12,12,0,0,1,b-8,.5*c-10);a.fillAndStroke();a.setFillColor("#fffbc0");a.setStrokeWidth("1");for(d=1;20*d+10<b-14;d++)a.rect(20*d,.5*c-5,10,10),a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeEipDatatypeChannel.prototype.cst.SHAPE_DATATYPE_CHANNEL,mxShapeEipDatatypeChannel); -mxShapeEipDatatypeChannel.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(.05,0),!0),new mxConnectionConstraint(new mxPoint(.1,0),!0),new mxConnectionConstraint(new mxPoint(.15,0),!0),new mxConnectionConstraint(new mxPoint(.2,0),!0),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.3,0),!0),new mxConnectionConstraint(new mxPoint(.35,0),!0),new mxConnectionConstraint(new mxPoint(.4, -0),!0),new mxConnectionConstraint(new mxPoint(.45,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.55,0),!0),new mxConnectionConstraint(new mxPoint(.6,0),!0),new mxConnectionConstraint(new mxPoint(.65,0),!0),new mxConnectionConstraint(new mxPoint(.7,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(.8,0),!0),new mxConnectionConstraint(new mxPoint(.85,0),!0),new mxConnectionConstraint(new mxPoint(.9,0),!0), -new mxConnectionConstraint(new mxPoint(.95,0),!0),new mxConnectionConstraint(new mxPoint(.05,1),!0),new mxConnectionConstraint(new mxPoint(.1,1),!0),new mxConnectionConstraint(new mxPoint(.15,1),!0),new mxConnectionConstraint(new mxPoint(.2,1),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.3,1),!0),new mxConnectionConstraint(new mxPoint(.35,1),!0),new mxConnectionConstraint(new mxPoint(.4,1),!0),new mxConnectionConstraint(new mxPoint(.45,1),!0),new mxConnectionConstraint(new mxPoint(.5, -1),!0),new mxConnectionConstraint(new mxPoint(.55,1),!0),new mxConnectionConstraint(new mxPoint(.6,1),!0),new mxConnectionConstraint(new mxPoint(.65,1),!0),new mxConnectionConstraint(new mxPoint(.7,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(.8,1),!0),new mxConnectionConstraint(new mxPoint(.85,1),!0),new mxConnectionConstraint(new mxPoint(.9,1),!0),new mxConnectionConstraint(new mxPoint(.95,1),!0)]; +mxShapeEipDatatypeChannel.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,2.7,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null,-2.7,0));for(e=10;e<d;)a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0)),a.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,e,0)),e+=10;return a}; function mxShapeEipDeadLetterChannel(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeEipDeadLetterChannel,mxShape);mxShapeEipDeadLetterChannel.prototype.cst={SHAPE_DEAD_LETTER_CHANNEL:"mxgraph.eip.deadLetterChannel"};mxShapeEipDeadLetterChannel.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,d,e,b,c);a.setShadow(!1);this.foreground(a,d,e,b,c)}; mxShapeEipDeadLetterChannel.prototype.background=function(a,d,e,b,c){a.setGradient("#e6e6e6","#808080",0,0,b,c,mxConstants.DIRECTION_SOUTH,1,1);a.begin();a.moveTo(8,.5*c+10);a.arcTo(12,12,0,0,1,8,.5*c-10);a.lineTo(b-8,.5*c-10);a.arcTo(12,12,0,0,1,b-8,.5*c+10);a.close();a.fillAndStroke()}; mxShapeEipDeadLetterChannel.prototype.foreground=function(a,d,e,b,c){a.setFillColor("#e6e6e6");a.begin();a.moveTo(b-8,.5*c-10);a.arcTo(12,12,0,0,1,b-8,.5*c+10);a.arcTo(12,12,0,0,1,b-8,.5*c-10);a.fillAndStroke();a.setFillColor("#ff0000");a.setStrokeWidth("1");a.begin();a.moveTo(.5*b-6,.5*c-3);a.lineTo(.5*b-3,.5*c-6);a.lineTo(.5*b+3,.5*c-6);a.lineTo(.5*b+6,.5*c-3);a.lineTo(.5*b+6,.5*c+3);a.lineTo(.5*b+3,.5*c+6);a.lineTo(.5*b-3,.5*c+6);a.lineTo(.5*b-6,.5*c+3);a.close();a.fillAndStroke();a.setStrokeWidth("2"); a.setStrokeColor("#ffffff");a.begin();a.moveTo(.5*b-4,.5*c);a.lineTo(.5*b+4,.5*c);a.stroke()};mxCellRenderer.registerShape(mxShapeEipDeadLetterChannel.prototype.cst.SHAPE_DEAD_LETTER_CHANNEL,mxShapeEipDeadLetterChannel); -mxShapeEipDeadLetterChannel.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(.05,0),!0),new mxConnectionConstraint(new mxPoint(.1,0),!0),new mxConnectionConstraint(new mxPoint(.15,0),!0),new mxConnectionConstraint(new mxPoint(.2,0),!0),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.3,0),!0),new mxConnectionConstraint(new mxPoint(.35,0),!0),new mxConnectionConstraint(new mxPoint(.4, -0),!0),new mxConnectionConstraint(new mxPoint(.45,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.55,0),!0),new mxConnectionConstraint(new mxPoint(.6,0),!0),new mxConnectionConstraint(new mxPoint(.65,0),!0),new mxConnectionConstraint(new mxPoint(.7,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(.8,0),!0),new mxConnectionConstraint(new mxPoint(.85,0),!0),new mxConnectionConstraint(new mxPoint(.9,0),!0), -new mxConnectionConstraint(new mxPoint(.95,0),!0),new mxConnectionConstraint(new mxPoint(.05,1),!0),new mxConnectionConstraint(new mxPoint(.1,1),!0),new mxConnectionConstraint(new mxPoint(.15,1),!0),new mxConnectionConstraint(new mxPoint(.2,1),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.3,1),!0),new mxConnectionConstraint(new mxPoint(.35,1),!0),new mxConnectionConstraint(new mxPoint(.4,1),!0),new mxConnectionConstraint(new mxPoint(.45,1),!0),new mxConnectionConstraint(new mxPoint(.5, -1),!0),new mxConnectionConstraint(new mxPoint(.55,1),!0),new mxConnectionConstraint(new mxPoint(.6,1),!0),new mxConnectionConstraint(new mxPoint(.65,1),!0),new mxConnectionConstraint(new mxPoint(.7,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(.8,1),!0),new mxConnectionConstraint(new mxPoint(.85,1),!0),new mxConnectionConstraint(new mxPoint(.9,1),!0),new mxConnectionConstraint(new mxPoint(.95,1),!0)]; +mxShapeEipDeadLetterChannel.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,2.7,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null,-2.7,0));for(e=10;e<d;)a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0)),a.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,e,0)),e+=10;return a}; function mxShapeEipInvalidMessageChannel(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeEipInvalidMessageChannel,mxShape);mxShapeEipInvalidMessageChannel.prototype.cst={SHAPE_INVALID_MESSAGE_CHANNEL:"mxgraph.eip.invalidMessageChannel"};mxShapeEipInvalidMessageChannel.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,d,e,b,c);a.setShadow(!1);this.foreground(a,d,e,b,c)}; mxShapeEipInvalidMessageChannel.prototype.background=function(a,d,e,b,c){a.setGradient("#e6e6e6","#808080",0,0,b,c,mxConstants.DIRECTION_SOUTH,1,1);a.begin();a.moveTo(8,.5*c+10);a.arcTo(12,12,0,0,1,8,.5*c-10);a.lineTo(b-8,.5*c-10);a.arcTo(12,12,0,0,1,b-8,.5*c+10);a.close();a.fillAndStroke()}; mxShapeEipInvalidMessageChannel.prototype.foreground=function(a,d,e,b,c){a.setFillColor("#e6e6e6");a.begin();a.moveTo(b-8,.5*c-10);a.arcTo(12,12,0,0,1,b-8,.5*c+10);a.arcTo(12,12,0,0,1,b-8,.5*c-10);a.fillAndStroke();a.setFillColor("#ffe040");a.setStrokeWidth("1");a.begin();a.moveTo(.5*b-6,.5*c+5);a.lineTo(.5*b,.5*c-5);a.lineTo(.5*b+6,.5*c+5);a.close();a.fillAndStroke();a.setStrokeWidth("1");a.begin();a.moveTo(.5*b,.5*c-2);a.lineTo(.5*b,.5*c+2);a.moveTo(.5*b,.5*c+3);a.lineTo(.5*b,.5*c+4);a.stroke()}; mxCellRenderer.registerShape(mxShapeEipInvalidMessageChannel.prototype.cst.SHAPE_INVALID_MESSAGE_CHANNEL,mxShapeEipInvalidMessageChannel); -mxShapeEipInvalidMessageChannel.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(.05,0),!0),new mxConnectionConstraint(new mxPoint(.1,0),!0),new mxConnectionConstraint(new mxPoint(.15,0),!0),new mxConnectionConstraint(new mxPoint(.2,0),!0),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.3,0),!0),new mxConnectionConstraint(new mxPoint(.35,0),!0),new mxConnectionConstraint(new mxPoint(.4, -0),!0),new mxConnectionConstraint(new mxPoint(.45,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.55,0),!0),new mxConnectionConstraint(new mxPoint(.6,0),!0),new mxConnectionConstraint(new mxPoint(.65,0),!0),new mxConnectionConstraint(new mxPoint(.7,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(.8,0),!0),new mxConnectionConstraint(new mxPoint(.85,0),!0),new mxConnectionConstraint(new mxPoint(.9,0),!0), -new mxConnectionConstraint(new mxPoint(.95,0),!0),new mxConnectionConstraint(new mxPoint(.05,1),!0),new mxConnectionConstraint(new mxPoint(.1,1),!0),new mxConnectionConstraint(new mxPoint(.15,1),!0),new mxConnectionConstraint(new mxPoint(.2,1),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.3,1),!0),new mxConnectionConstraint(new mxPoint(.35,1),!0),new mxConnectionConstraint(new mxPoint(.4,1),!0),new mxConnectionConstraint(new mxPoint(.45,1),!0),new mxConnectionConstraint(new mxPoint(.5, -1),!0),new mxConnectionConstraint(new mxPoint(.55,1),!0),new mxConnectionConstraint(new mxPoint(.6,1),!0),new mxConnectionConstraint(new mxPoint(.65,1),!0),new mxConnectionConstraint(new mxPoint(.7,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(.8,1),!0),new mxConnectionConstraint(new mxPoint(.85,1),!0),new mxConnectionConstraint(new mxPoint(.9,1),!0),new mxConnectionConstraint(new mxPoint(.95,1),!0)]; +mxShapeEipInvalidMessageChannel.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,2.7,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null,-2.7,0));for(e=10;e<d;)a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0)),a.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,e,0)),e+=10;return a}; function mxShapeElectricalTestPoint(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeElectricalTestPoint,mxShape);mxShapeElectricalTestPoint.prototype.cst={SHAPE_TEST_POINT:"mxgraph.electrical.transmission.testPoint"}; mxShapeElectricalTestPoint.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,"#000000");e=Math.min(b,c);a.setFillColor(d);a.begin();a.ellipse(.5*b-e/2,0,e,e);a.fillAndStroke();c>b&&(a.begin(),a.moveTo(.5*b,e),a.lineTo(.5*b,c),a.stroke())};mxCellRenderer.registerShape(mxShapeElectricalTestPoint.prototype.cst.SHAPE_TEST_POINT,mxShapeElectricalTestPoint); mxShapeElectricalTestPoint.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0)];function mxShapeElectricalStraightBus(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeElectricalStraightBus,mxShape);mxShapeElectricalStraightBus.prototype.cst={SHAPE_STRAIGHT_BUS:"mxgraph.electrical.transmission.straightBus"}; @@ -2073,9 +2182,10 @@ Graph.handleFactory[mxShapeGmdlProgressBar.prototype.cst.PROGRESS_BAR]=function( return new mxPoint(a.x+b*a.width,a.y+a.height/2)},function(a,b){this.state.style.dx2=Math.round(100*Math.max(0,Math.min(1,(b.x-a.x)/a.width)))/100});d.push(a);return d};function mxShapeInfographicNumEntryVert(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dy=.5}mxUtils.extend(mxShapeInfographicNumEntryVert,mxActor);mxShapeInfographicNumEntryVert.prototype.cst={NUM_ENTRY_VERT:"mxgraph.infographic.numberedEntryVert"}; mxShapeInfographicNumEntryVert.prototype.customProperties=[{name:"dy",dispName:"Circle Size",min:0,defVal:25}]; mxShapeInfographicNumEntryVert.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));d=Math.min(d,b-10,c-5);a.ellipse(.5*b-.5*d,0,d,d);a.fillAndStroke();a.begin();a.moveTo(0,.5*d);a.lineTo(.5*b-.5*d-5,.5*d);a.arcTo(.5*d+5,.5*d+5,0,0,0,.5*b+.5*d+5,.5*d);a.lineTo(b,.5*d);a.lineTo(b,c);a.lineTo(0,c);a.close();a.fillAndStroke()}; -mxCellRenderer.registerShape(mxShapeInfographicNumEntryVert.prototype.cst.NUM_ENTRY_VERT,mxShapeInfographicNumEntryVert);mxShapeInfographicNumEntryVert.prototype.constraints=null; +mxCellRenderer.registerShape(mxShapeInfographicNumEntryVert.prototype.cst.NUM_ENTRY_VERT,mxShapeInfographicNumEntryVert); Graph.handleFactory[mxShapeInfographicNumEntryVert.prototype.cst.NUM_ENTRY_VERT]=function(a){return[Graph.createHandle(a,["dy"],function(a){var d=Math.max(0,Math.min(a.width,a.width,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(a.x+a.width/2,a.y+d)},function(a,e){this.state.style.dy=Math.round(100*Math.max(0,Math.min(a.height,a.width,e.y-a.y)))/100})]}; -function mxShapeInfographicBendingArch(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.startAngle=.25;this.endAngle=.75;this.arcWidth=.5}mxUtils.extend(mxShapeInfographicBendingArch,mxActor);mxShapeInfographicBendingArch.prototype.cst={BENDING_ARCH:"mxgraph.infographic.bendingArch"}; +mxShapeInfographicNumEntryVert.prototype.getConstraints=function(a,d,e){a=[];var b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));d=Math.min(b,d-10,e-5);a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*d));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,0,.25*d)); +a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null,0,.25*d));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));return a};function mxShapeInfographicBendingArch(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.startAngle=.25;this.endAngle=.75;this.arcWidth=.5}mxUtils.extend(mxShapeInfographicBendingArch,mxActor);mxShapeInfographicBendingArch.prototype.cst={BENDING_ARCH:"mxgraph.infographic.bendingArch"}; mxShapeInfographicBendingArch.prototype.customProperties=[{name:"startAngle",dispName:"Start Angle",min:0,max:1,defVal:.75},{name:"endAngle",dispName:"End Angle",min:0,max:1,defVal:.25},{name:"arcWidth",dispName:"Arc Width",min:0,max:1,defVal:.25}]; mxShapeInfographicBendingArch.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);var f=2*Math.PI*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"startAngle",this.startAngle)))),g=2*Math.PI*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"endAngle",this.endAngle)))),h=1-Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arcWidth",this.arcWidth))));d=.5*b;e=.5*c;var k=d*h,h=e*h,l=d+Math.sin(f)*d,m=e-Math.cos(f)*e,n=d+Math.sin(f)*k,p=e-Math.cos(f)*h, q=d+Math.sin(g)*d,r=e-Math.cos(g)*e,t=d+Math.sin(g)*k,u=e-Math.cos(g)*h,g=g-f;0>g&&(g+=2*Math.PI);f=0;g>Math.PI&&(f=1);var g=k-5,v=h-5;a.ellipse(.5*b-g,.5*c-v,2*g,2*v);a.fillAndStroke();a.begin();a.moveTo(l,m);a.arcTo(d,e,0,f,1,q,r);a.lineTo(t,u);a.arcTo(k,h,0,f,0,n,p);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeInfographicBendingArch.prototype.cst.BENDING_ARCH,mxShapeInfographicBendingArch);mxShapeInfographicBendingArch.prototype.constraints=null; @@ -2083,101 +2193,150 @@ Graph.handleFactory[mxShapeInfographicBendingArch.prototype.cst.BENDING_ARCH]=fu Math.min(1,(c.y-a.y-.5*a.height)/(.5*a.height))))/100)/Math.PI;0>b&&(b=1+b);this.state.style.startAngle=b})],e=Graph.createHandle(a,["endAngle"],function(a){var b=2*Math.PI*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"endAngle",this.endAngle))));return new mxPoint(a.x+.5*a.width+Math.sin(b)*a.width*.5,a.y+.5*a.height-Math.cos(b)*a.height*.5)},function(a,c){var b=.5*Math.atan2(Math.round(100*Math.max(-1,Math.min(1,(c.x-a.x-.5*a.width)/(.5*a.width))))/100,-Math.round(100*Math.max(-1, Math.min(1,(c.y-a.y-.5*a.height)/(.5*a.height))))/100)/Math.PI;0>b&&(b=1+b);this.state.style.endAngle=b});d.push(e);a=Graph.createHandle(a,["arcWidth"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"arcWidth",this.arcWidth))));return new mxPoint(a.x+a.width/2,a.y+b*a.height*.5)},function(a,c){this.state.style.arcWidth=Math.round(100*Math.max(0,Math.min(a.height/2,a.width/2,(c.y-a.y)/(.5*a.height))))/100});d.push(a);return d}; function mxShapeInfographicParallelogram(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=10}mxUtils.extend(mxShapeInfographicParallelogram,mxActor);mxShapeInfographicParallelogram.prototype.cst={PARALLELOGRAM:"mxgraph.infographic.parallelogram"};mxShapeInfographicParallelogram.prototype.customProperties=[{name:"dx",dispName:"Angle",min:0,defVal:15}]; -mxShapeInfographicParallelogram.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(0,Math.min(.5*b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));a.begin();a.moveTo(0,c);a.lineTo(2*d,0);a.lineTo(b,0);a.lineTo(b-2*d,c);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeInfographicParallelogram.prototype.cst.PARALLELOGRAM,mxShapeInfographicParallelogram);mxShapeInfographicParallelogram.prototype.constraints=null; +mxShapeInfographicParallelogram.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(0,Math.min(.5*b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));a.begin();a.moveTo(0,c);a.lineTo(2*d,0);a.lineTo(b,0);a.lineTo(b-2*d,c);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeInfographicParallelogram.prototype.cst.PARALLELOGRAM,mxShapeInfographicParallelogram); Graph.handleFactory[mxShapeInfographicParallelogram.prototype.cst.PARALLELOGRAM]=function(a){return[Graph.createHandle(a,["dx"],function(a){var d=Math.max(0,Math.min(a.width/2,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx))));return new mxPoint(a.x+d,a.y+a.height/2)},function(a,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(a.width/2,e.x-a.x)))/100})]}; -function mxShapeInfographicRibbonRolled(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=185;this.dy=15}mxUtils.extend(mxShapeInfographicRibbonRolled,mxActor);mxShapeInfographicRibbonRolled.prototype.cst={RIBBON_ROLLED:"mxgraph.infographic.ribbonRolled"};mxShapeInfographicRibbonRolled.prototype.customProperties=[{name:"dx",dispName:"Roll Length",min:0,defVal:185},{name:"dy",dispName:"Ribbon Width",min:0,defVal:15}]; +mxShapeInfographicParallelogram.prototype.getConstraints=function(a,d,e){a=[];var b=Math.max(0,Math.min(.5*d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),c=d-2*b;a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,2*b,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,2*b+.5*c,0));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,b,0));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,d-2*b,e));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,d-b,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,e));return a};function mxShapeInfographicRibbonRolled(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=185;this.dy=15}mxUtils.extend(mxShapeInfographicRibbonRolled,mxActor);mxShapeInfographicRibbonRolled.prototype.cst={RIBBON_ROLLED:"mxgraph.infographic.ribbonRolled"}; +mxShapeInfographicRibbonRolled.prototype.customProperties=[{name:"dx",dispName:"Roll Length",min:0,defVal:185},{name:"dy",dispName:"Ribbon Width",min:0,defVal:15}]; mxShapeInfographicRibbonRolled.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));e=Math.max(0,Math.min(.5*c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(0,e);a.lineTo(d,0);a.lineTo(d,e);a.lineTo(b,e);a.lineTo(b,c-e);a.lineTo(b-d,c);a.lineTo(b-d,c-e);a.lineTo(0,c-e);a.close();a.fillAndStroke();a.setShadow(!1);a.setFillAlpha("0.2");a.setFillColor("#000000");a.begin();a.moveTo(0, -e);a.lineTo(d,0);a.lineTo(d,e);a.close();a.moveTo(b,c-e);a.lineTo(b-d,c);a.lineTo(b-d,c-e);a.close();a.fill();a.begin();a.moveTo(0,e);a.lineTo(d,0);a.lineTo(d,e);a.lineTo(b,e);a.lineTo(b,c-e);a.lineTo(b-d,c);a.lineTo(b-d,c-e);a.lineTo(0,c-e);a.close();a.stroke()};mxCellRenderer.registerShape(mxShapeInfographicRibbonRolled.prototype.cst.RIBBON_ROLLED,mxShapeInfographicRibbonRolled);mxShapeInfographicRibbonRolled.prototype.constraints=null; +e);a.lineTo(d,0);a.lineTo(d,e);a.close();a.moveTo(b,c-e);a.lineTo(b-d,c);a.lineTo(b-d,c-e);a.close();a.fill();a.begin();a.moveTo(0,e);a.lineTo(d,0);a.lineTo(d,e);a.lineTo(b,e);a.lineTo(b,c-e);a.lineTo(b-d,c);a.lineTo(b-d,c-e);a.lineTo(0,c-e);a.close();a.stroke()};mxCellRenderer.registerShape(mxShapeInfographicRibbonRolled.prototype.cst.RIBBON_ROLLED,mxShapeInfographicRibbonRolled); Graph.handleFactory[mxShapeInfographicRibbonRolled.prototype.cst.RIBBON_ROLLED]=function(a){return[Graph.createHandle(a,["dx","dy"],function(a){var d=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),b=Math.max(0,Math.min(a.height/2,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(a.x+d,a.y+b)},function(a,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(a.width,e.x-a.x)))/100;this.state.style.dy=Math.round(100*Math.max(0, -Math.min(a.height/2,e.y-a.y)))/100})]};function mxShapeInfographicRibbonDoubleFolded(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=25;this.dy=15}mxUtils.extend(mxShapeInfographicRibbonDoubleFolded,mxActor);mxShapeInfographicRibbonDoubleFolded.prototype.cst={RIBBON_DOUBLE_FOLDED:"mxgraph.infographic.ribbonDoubleFolded"}; -mxShapeInfographicRibbonDoubleFolded.prototype.customProperties=[{name:"dx",dispName:"Fold Length",min:0,defVal:25},{name:"dy",dispName:"Ribbon Width",min:0,defVal:15}]; +Math.min(a.height/2,e.y-a.y)))/100})]}; +mxShapeInfographicRibbonRolled.prototype.getConstraints=function(a,d,e){a=[];parseFloat(mxUtils.getValue(this.style,"dx",this.dx));var b=Math.max(0,Math.min(.5*e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));e-=b;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,b));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1,null,0,b));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1,null,0,b));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1,null,0,b));a.push(new mxConnectionConstraint(new mxPoint(1, +0),!1,null,0,b));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,0,-b));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));return a}; +function mxShapeInfographicRibbonDoubleFolded(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx=25;this.dy=15}mxUtils.extend(mxShapeInfographicRibbonDoubleFolded,mxActor);mxShapeInfographicRibbonDoubleFolded.prototype.cst={RIBBON_DOUBLE_FOLDED:"mxgraph.infographic.ribbonDoubleFolded"};mxShapeInfographicRibbonDoubleFolded.prototype.customProperties=[{name:"dx",dispName:"Fold Length",min:0,defVal:25},{name:"dy",dispName:"Ribbon Width",min:0,defVal:15}]; mxShapeInfographicRibbonDoubleFolded.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));e=Math.max(0,Math.min(.5*c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(0,e);a.lineTo(d,0);a.lineTo(d,e);a.lineTo(b,e);a.lineTo(b,c-e);a.lineTo(b-d,c);a.lineTo(b-d,c-e);a.lineTo(0,c-e);a.close();a.fillAndStroke();a.setShadow(!1);a.setFillAlpha("0.2");a.setFillColor("#000000");a.begin();a.moveTo(0, -e);a.lineTo(d,0);a.lineTo(d,c-2*e);a.lineTo(0,c-e);a.close();a.moveTo(b,c-e);a.lineTo(b-d,c);a.lineTo(b-d,c-e);a.close();a.fill();a.begin();a.moveTo(0,e);a.lineTo(d,0);a.lineTo(d,e);a.lineTo(b,e);a.lineTo(b,c-e);a.lineTo(b-d,c);a.lineTo(b-d,c-e);a.lineTo(0,c-e);a.close();a.stroke()};mxCellRenderer.registerShape(mxShapeInfographicRibbonDoubleFolded.prototype.cst.RIBBON_DOUBLE_FOLDED,mxShapeInfographicRibbonDoubleFolded);mxShapeInfographicRibbonDoubleFolded.prototype.constraints=null; +e);a.lineTo(d,0);a.lineTo(d,c-2*e);a.lineTo(0,c-e);a.close();a.moveTo(b,c-e);a.lineTo(b-d,c);a.lineTo(b-d,c-e);a.close();a.fill();a.begin();a.moveTo(0,e);a.lineTo(d,0);a.lineTo(d,e);a.lineTo(b,e);a.lineTo(b,c-e);a.lineTo(b-d,c);a.lineTo(b-d,c-e);a.lineTo(0,c-e);a.close();a.stroke()};mxCellRenderer.registerShape(mxShapeInfographicRibbonDoubleFolded.prototype.cst.RIBBON_DOUBLE_FOLDED,mxShapeInfographicRibbonDoubleFolded); Graph.handleFactory[mxShapeInfographicRibbonDoubleFolded.prototype.cst.RIBBON_DOUBLE_FOLDED]=function(a){return[Graph.createHandle(a,["dx","dy"],function(a){var d=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),b=Math.max(0,Math.min(a.height/2,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(a.x+d,a.y+b)},function(a,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(a.width,e.x-a.x)))/100;this.state.style.dy=Math.round(100* -Math.max(0,Math.min(a.height/2,e.y-a.y)))/100})]};function mxShapeInfographicRibbonFrontFolded(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.notch=this.dy=this.dx=.5}mxUtils.extend(mxShapeInfographicRibbonFrontFolded,mxActor);mxShapeInfographicRibbonFrontFolded.prototype.cst={RIBBON_FRONT_FOLDED:"mxgraph.infographic.ribbonFrontFolded"}; +Math.max(0,Math.min(a.height/2,e.y-a.y)))/100})]}; +mxShapeInfographicRibbonDoubleFolded.prototype.getConstraints=function(a,d,e){a=[];parseFloat(mxUtils.getValue(this.style,"dx",this.dx));d=Math.max(0,Math.min(.5*e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(1, +0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,e-d));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1,null,0,e-d));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1,null,0,e-d));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1,null,0,e-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e-d));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));return a}; +function mxShapeInfographicRibbonFrontFolded(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.notch=this.dy=this.dx=.5}mxUtils.extend(mxShapeInfographicRibbonFrontFolded,mxActor);mxShapeInfographicRibbonFrontFolded.prototype.cst={RIBBON_FRONT_FOLDED:"mxgraph.infographic.ribbonFrontFolded"}; mxShapeInfographicRibbonFrontFolded.prototype.customProperties=[{name:"dx",dispName:"Fold Length",min:0,defVal:25},{name:"dy",dispName:"Ribbon Width",min:0,defVal:15},{name:"notch",dispName:"Notch",min:0,defVal:15}]; mxShapeInfographicRibbonFrontFolded.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));e=Math.max(0,Math.min(.5*c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));var f=Math.max(0,Math.min(b-d,parseFloat(mxUtils.getValue(this.style,"notch",this.notch))));a.begin();a.moveTo(0,e);a.lineTo(d,0);a.lineTo(d,e);a.lineTo(b,e);a.lineTo(b-f,(c-e)/2+e);a.lineTo(b,c);a.lineTo(0,c);a.close();a.fillAndStroke(); -a.setShadow(!1);a.setFillAlpha("0.2");a.setFillColor("#000000");a.begin();a.moveTo(0,e);a.lineTo(d,0);a.lineTo(d,c-e);a.lineTo(0,c);a.close();a.fill();a.begin();a.moveTo(0,e);a.lineTo(d,0);a.lineTo(d,e);a.lineTo(b,e);a.lineTo(b-f,(c-e)/2+e);a.lineTo(b,c);a.lineTo(0,c);a.close();a.stroke()};mxCellRenderer.registerShape(mxShapeInfographicRibbonFrontFolded.prototype.cst.RIBBON_FRONT_FOLDED,mxShapeInfographicRibbonFrontFolded);mxShapeInfographicRibbonFrontFolded.prototype.constraints=null; +a.setShadow(!1);a.setFillAlpha("0.2");a.setFillColor("#000000");a.begin();a.moveTo(0,e);a.lineTo(d,0);a.lineTo(d,c-e);a.lineTo(0,c);a.close();a.fill();a.begin();a.moveTo(0,e);a.lineTo(d,0);a.lineTo(d,e);a.lineTo(b,e);a.lineTo(b-f,(c-e)/2+e);a.lineTo(b,c);a.lineTo(0,c);a.close();a.stroke()};mxCellRenderer.registerShape(mxShapeInfographicRibbonFrontFolded.prototype.cst.RIBBON_FRONT_FOLDED,mxShapeInfographicRibbonFrontFolded); Graph.handleFactory[mxShapeInfographicRibbonFrontFolded.prototype.cst.RIBBON_FRONT_FOLDED]=function(a){var d=[Graph.createHandle(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),c=Math.max(0,Math.min(a.height/2,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(100*Math.max(0,Math.min(a.width,b.x-a.x)))/100;this.state.style.dy=Math.round(100* Math.max(0,Math.min(a.height/2,b.y-a.y)))/100})];a=Graph.createHandle(a,["notch"],function(a){var b=Math.max(0,Math.min(a.height/2,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy)))),c=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch))));return new mxPoint(a.x+a.width-c,a.y+b+.5*(a.height-b))},function(a,b){this.state.style.notch=Math.round(100*Math.max(0,Math.min(a.width,a.width+a.x-b.x)))/100});d.push(a);return d}; -function mxShapeInfographicRibbonBackFolded(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.notch=this.dy=this.dx=.5}mxUtils.extend(mxShapeInfographicRibbonBackFolded,mxActor);mxShapeInfographicRibbonBackFolded.prototype.cst={RIBBON_BACK_FOLDED:"mxgraph.infographic.ribbonBackFolded"}; +mxShapeInfographicRibbonFrontFolded.prototype.getConstraints=function(a,d,e){a=[];var b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),c=Math.max(0,Math.min(.5*e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),b=Math.max(0,Math.min(d-b,parseFloat(mxUtils.getValue(this.style,"notch",this.notch))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1,null,0,c));a.push(new mxConnectionConstraint(new mxPoint(.5, +0),!1,null,0,c));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1,null,0,c));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-b,.5*(e+c)));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1), +!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(e+c)));return a};function mxShapeInfographicRibbonBackFolded(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.notch=this.dy=this.dx=.5}mxUtils.extend(mxShapeInfographicRibbonBackFolded,mxActor);mxShapeInfographicRibbonBackFolded.prototype.cst={RIBBON_BACK_FOLDED:"mxgraph.infographic.ribbonBackFolded"}; mxShapeInfographicRibbonBackFolded.prototype.customProperties=[{name:"dx",dispName:"Fold Length",min:0,defVal:25},{name:"dy",dispName:"Ribbon Width",min:0,defVal:15},{name:"notch",dispName:"Notch",min:0,defVal:15}]; mxShapeInfographicRibbonBackFolded.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));e=Math.max(0,Math.min(.5*c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));var f=Math.max(0,Math.min(b-d,parseFloat(mxUtils.getValue(this.style,"notch",this.notch))));a.begin();a.moveTo(0,e);a.lineTo(d,0);a.lineTo(d,e);a.lineTo(b,e);a.lineTo(b-f,(c-e)/2+e);a.lineTo(b,c);a.lineTo(0,c);a.close();a.fillAndStroke();a.setShadow(!1); -a.setFillAlpha("0.2");a.setFillColor("#000000");a.begin();a.moveTo(0,e);a.lineTo(d,0);a.lineTo(d,e);a.close();a.fill();a.begin();a.moveTo(0,e);a.lineTo(d,0);a.lineTo(d,e);a.lineTo(b,e);a.lineTo(b-f,(c-e)/2+e);a.lineTo(b,c);a.lineTo(0,c);a.close();a.stroke()};mxCellRenderer.registerShape(mxShapeInfographicRibbonBackFolded.prototype.cst.RIBBON_BACK_FOLDED,mxShapeInfographicRibbonBackFolded);mxShapeInfographicRibbonBackFolded.prototype.constraints=null; +a.setFillAlpha("0.2");a.setFillColor("#000000");a.begin();a.moveTo(0,e);a.lineTo(d,0);a.lineTo(d,e);a.close();a.fill();a.begin();a.moveTo(0,e);a.lineTo(d,0);a.lineTo(d,e);a.lineTo(b,e);a.lineTo(b-f,(c-e)/2+e);a.lineTo(b,c);a.lineTo(0,c);a.close();a.stroke()};mxCellRenderer.registerShape(mxShapeInfographicRibbonBackFolded.prototype.cst.RIBBON_BACK_FOLDED,mxShapeInfographicRibbonBackFolded); Graph.handleFactory[mxShapeInfographicRibbonBackFolded.prototype.cst.RIBBON_BACK_FOLDED]=function(a){var d=[Graph.createHandle(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),c=Math.max(0,Math.min(a.height/2,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(100*Math.max(0,Math.min(a.width,b.x-a.x)))/100;this.state.style.dy=Math.round(100* Math.max(0,Math.min(a.height/2,b.y-a.y)))/100})];a=Graph.createHandle(a,["notch"],function(a){var b=Math.max(0,Math.min(a.height/2,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy)))),c=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch))));return new mxPoint(a.x+a.width-c,a.y+b+.5*(a.height-b))},function(a,b){this.state.style.notch=Math.round(100*Math.max(0,Math.min(a.width,a.width+a.x-b.x)))/100});d.push(a);return d}; -function mxShapeInfographicBanner(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.notch=this.dy=this.dx=.5}mxUtils.extend(mxShapeInfographicBanner,mxActor);mxShapeInfographicBanner.prototype.cst={BANNER:"mxgraph.infographic.banner"};mxShapeInfographicBanner.prototype.customProperties=[{name:"dx",dispName:"Fold Length",min:0,defVal:25},{name:"dy",dispName:"Ribbon Width",min:0,defVal:15},{name:"notch",dispName:"Notch",min:0,defVal:15}]; +mxShapeInfographicRibbonBackFolded.prototype.getConstraints=function(a,d,e){a=[];var b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),c=Math.max(0,Math.min(.5*e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),b=Math.max(0,Math.min(d-b,parseFloat(mxUtils.getValue(this.style,"notch",this.notch))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1,null,0,c));a.push(new mxConnectionConstraint(new mxPoint(.5, +0),!1,null,0,c));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1,null,0,c));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-b,.5*(e+c)));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1), +!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(e+c)));return a};function mxShapeInfographicBanner(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.notch=this.dy=this.dx=.5}mxUtils.extend(mxShapeInfographicBanner,mxActor);mxShapeInfographicBanner.prototype.cst={BANNER:"mxgraph.infographic.banner"}; +mxShapeInfographicBanner.prototype.customProperties=[{name:"dx",dispName:"Fold Length",min:0,defVal:25},{name:"dy",dispName:"Ribbon Width",min:0,defVal:15},{name:"notch",dispName:"Notch",min:0,defVal:15}]; mxShapeInfographicBanner.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(0,Math.min(b/2,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));e=Math.max(0,Math.min(.5*c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));var f=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"notch",this.notch))));d=Math.min(b/2-2*e,d);f=Math.min(d,f);a.begin();a.moveTo(0,e);a.lineTo(d,e);a.lineTo(d,0);a.lineTo(b-d,0);a.lineTo(b-d,e);a.lineTo(b,e);a.lineTo(b-f,.5*(c-e)+ e);a.lineTo(b,c);a.lineTo(b-d-2*e,c);a.lineTo(b-d-2*e,c-e);a.lineTo(d+2*e,c-e);a.lineTo(d+2*e,c);a.lineTo(0,c);a.lineTo(f,.5*(c-e)+e);a.close();a.fillAndStroke();a.setShadow(!1);a.setFillAlpha("0.2");a.setFillColor("#000000");a.begin();a.moveTo(0,e);a.lineTo(d,e);a.lineTo(d,c-e);a.lineTo(d+2*e,c);a.lineTo(0,c);a.lineTo(f,.5*(c-e)+e);a.close();a.moveTo(b,e);a.lineTo(b-d,e);a.lineTo(b-d,c-e);a.lineTo(b-d-2*e,c);a.lineTo(b,c);a.lineTo(b-f,.5*(c-e)+e);a.close();a.fill();a.setFillAlpha("0.4");a.begin(); -a.moveTo(d,c-e);a.lineTo(d+2*e,c-e);a.lineTo(d+2*e,c);a.close();a.moveTo(b-d,c-e);a.lineTo(b-d-2*e,c-e);a.lineTo(b-d-2*e,c);a.close();a.fill()};mxCellRenderer.registerShape(mxShapeInfographicBanner.prototype.cst.BANNER,mxShapeInfographicBanner);mxShapeInfographicBanner.prototype.constraints=null; +a.moveTo(d,c-e);a.lineTo(d+2*e,c-e);a.lineTo(d+2*e,c);a.close();a.moveTo(b-d,c-e);a.lineTo(b-d-2*e,c-e);a.lineTo(b-d-2*e,c);a.close();a.fill()};mxCellRenderer.registerShape(mxShapeInfographicBanner.prototype.cst.BANNER,mxShapeInfographicBanner); Graph.handleFactory[mxShapeInfographicBanner.prototype.cst.BANNER]=function(a){var d=[Graph.createHandle(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width/2,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),c=Math.max(0,Math.min(a.height/2,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(a.x+a.width-b,a.y+c)},function(a,b){this.state.style.dx=Math.round(100*Math.max(0,Math.min(a.width/2,a.x+a.width-b.x)))/100;this.state.style.dy=Math.round(100* Math.max(0,Math.min(a.height/2,b.y-a.y)))/100})];a=Graph.createHandle(a,["notch"],function(a){var b=Math.max(0,Math.min(a.height/2,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy)))),c=Math.max(0,Math.min(a.width/2,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),c=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch))));return new mxPoint(a.x+a.width-c,a.y+b+.5*(a.height-b))},function(a,b){this.state.style.notch=Math.round(100*Math.max(0,Math.min(a.width, -a.width+a.x-b.x)))/100});d.push(a);return d};function mxShapeInfographicCircularCallout(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dy=.5}mxUtils.extend(mxShapeInfographicCircularCallout,mxActor);mxShapeInfographicCircularCallout.prototype.cst={CIRCULAR_CALLOUT:"mxgraph.infographic.circularCallout"};mxShapeInfographicCircularCallout.prototype.customProperties=[{name:"dy",dispName:"Ribbon Width",min:0,defVal:15}]; +a.width+a.x-b.x)))/100});d.push(a);return d}; +mxShapeInfographicBanner.prototype.getConstraints=function(a,d,e){a=[];var b=Math.max(0,Math.min(d/2,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),c=Math.max(0,Math.min(.5*e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),f=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"notch",this.notch)))),b=Math.min(d/2-2*c,b),f=Math.min(b,f),g=d-2*b;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+.25* +g,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+.5*g,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+.75*g,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+g,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+g,.5*(e-c)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+g,e-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+.75*g,e-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+.5*g,e-c)); +a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+.25*g,e-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*(e-c)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,.5*(e+c)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-f,.5*(e+c)));return a}; +function mxShapeInfographicCircularCallout(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dy=.5}mxUtils.extend(mxShapeInfographicCircularCallout,mxActor);mxShapeInfographicCircularCallout.prototype.cst={CIRCULAR_CALLOUT:"mxgraph.infographic.circularCallout"};mxShapeInfographicCircularCallout.prototype.customProperties=[{name:"dy",dispName:"Ribbon Width",min:0,defVal:15}]; mxShapeInfographicCircularCallout.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(0,Math.min(.5*c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));e=Math.max(0,Math.min(.5*b,.5*b-d));var f=Math.max(0,Math.min(.5*c,.5*c-d));a.begin();a.moveTo(b,.5*c);a.arcTo(.5*b,.5*c,0,0,1,.5*b,c);a.arcTo(.5*b,.5*c,0,0,1,0,.5*c);a.arcTo(.5*b,.5*c,0,0,1,.5*b,0);a.lineTo(b,0);a.close();a.moveTo(.5*b,d);a.arcTo(e,f,0,0,0,.5*b-e,.5*c);a.arcTo(e,f,0,0,0,.5*b,.5*c+f);a.arcTo(e,f,0,0,0, -.5*b+e,.5*c);a.arcTo(e,f,0,0,0,.5*b,.5*c-f);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeInfographicCircularCallout.prototype.cst.CIRCULAR_CALLOUT,mxShapeInfographicCircularCallout);mxShapeInfographicCircularCallout.prototype.constraints=null; +.5*b+e,.5*c);a.arcTo(e,f,0,0,0,.5*b,.5*c-f);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeInfographicCircularCallout.prototype.cst.CIRCULAR_CALLOUT,mxShapeInfographicCircularCallout); Graph.handleFactory[mxShapeInfographicCircularCallout.prototype.cst.CIRCULAR_CALLOUT]=function(a){return[Graph.createHandle(a,["dy"],function(a){var d=Math.max(0,Math.min(a.height/2,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(a.x+.5*a.width,a.y+d)},function(a,e){this.state.style.dy=Math.round(100*Math.max(0,Math.min(a.height/2,e.y-a.y)))/100})]}; -function mxShapeInfographicShadedTriangle(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeInfographicShadedTriangle,mxActor);mxShapeInfographicShadedTriangle.prototype.cst={SHADED_TRIANGLE:"mxgraph.infographic.shadedTriangle"}; +mxShapeInfographicCircularCallout.prototype.getConstraints=function(a,d,e){a=[];parseFloat(mxUtils.getValue(this.style,"dy",this.dy));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.855,.855),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.145,.855),!1));a.push(new mxConnectionConstraint(new mxPoint(0, +.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.145,.145),!1));return a};function mxShapeInfographicShadedTriangle(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeInfographicShadedTriangle,mxActor);mxShapeInfographicShadedTriangle.prototype.cst={SHADED_TRIANGLE:"mxgraph.infographic.shadedTriangle"}; mxShapeInfographicShadedTriangle.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.begin();a.moveTo(0,c);a.lineTo(.5*b,0);a.lineTo(b,c);a.close();a.fillAndStroke();a.setShadow(!1);a.setFillColor("#ffffff");a.setFillAlpha("0.2");a.begin();a.moveTo(0,c);a.lineTo(.5*b,0);a.lineTo(.5*b,.67*c);a.close();a.fill();a.setFillColor("#000000");a.begin();a.moveTo(b,c);a.lineTo(.5*b,.67*c);a.lineTo(.5*b,0);a.close();a.fill();a.begin();a.moveTo(0,c);a.lineTo(.5*b,0);a.lineTo(b,c);a.close();a.stroke()}; -mxCellRenderer.registerShape(mxShapeInfographicShadedTriangle.prototype.cst.SHADED_TRIANGLE,mxShapeInfographicShadedTriangle);mxShapeInfographicShadedTriangle.prototype.constraints=null;function mxShapeInfographicShadedPyramid(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeInfographicShadedPyramid,mxActor);mxShapeInfographicShadedPyramid.prototype.cst={SHADED_PYRAMID:"mxgraph.infographic.shadedPyramid"}; +mxCellRenderer.registerShape(mxShapeInfographicShadedTriangle.prototype.cst.SHADED_TRIANGLE,mxShapeInfographicShadedTriangle); +mxShapeInfographicShadedTriangle.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,.5),!1));return a}; +function mxShapeInfographicShadedPyramid(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeInfographicShadedPyramid,mxActor);mxShapeInfographicShadedPyramid.prototype.cst={SHADED_PYRAMID:"mxgraph.infographic.shadedPyramid"}; mxShapeInfographicShadedPyramid.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(c-.3*b,0);a.begin();a.moveTo(0,d);a.lineTo(.5*b,0);a.lineTo(b,d);a.lineTo(.5*b,c);a.close();a.fillAndStroke();a.setShadow(!1);a.setFillColor("#ffffff");a.setFillAlpha("0.2");a.begin();a.moveTo(0,d);a.lineTo(.5*b,0);a.lineTo(.5*b,c);a.close();a.fill();a.setFillColor("#000000");a.begin();a.moveTo(b,d);a.lineTo(.5*b,c);a.lineTo(.5*b,0);a.close();a.fill();a.begin();a.moveTo(0,d);a.lineTo(.5*b,0); -a.lineTo(b,d);a.lineTo(.5*b,c);a.close();a.stroke()};mxCellRenderer.registerShape(mxShapeInfographicShadedPyramid.prototype.cst.SHADED_PYRAMID,mxShapeInfographicShadedPyramid);mxShapeInfographicShadedPyramid.prototype.constraints=null;function mxShapeInfographicPyramidStep(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeInfographicPyramidStep,mxActor);mxShapeInfographicPyramidStep.prototype.cst={PYRAMID_STEP:"mxgraph.infographic.pyramidStep"}; +a.lineTo(b,d);a.lineTo(.5*b,c);a.close();a.stroke()};mxCellRenderer.registerShape(mxShapeInfographicShadedPyramid.prototype.cst.SHADED_PYRAMID,mxShapeInfographicShadedPyramid); +mxShapeInfographicShadedPyramid.prototype.getConstraints=function(a,d,e){a=[];var b=Math.max(e-.3*d,0);a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*d,.5*b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*d,.5*(e+b)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25* +d,.5*(e+b)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*d,.5*b));return a};function mxShapeInfographicPyramidStep(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeInfographicPyramidStep,mxActor);mxShapeInfographicPyramidStep.prototype.cst={PYRAMID_STEP:"mxgraph.infographic.pyramidStep"}; mxShapeInfographicPyramidStep.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(.1*b,0);a.begin();a.moveTo(0,d);a.lineTo(.5*b,0);a.lineTo(b,d);a.lineTo(b,c);a.lineTo(0,c);a.close();a.fillAndStroke();a.setShadow(!1);a.setFillColor("#ffffff");a.setFillAlpha("0.2");a.begin();a.moveTo(0,d);a.lineTo(.5*b,0);a.lineTo(.5*b,c);a.lineTo(0,c);a.close();a.fill();a.setFillColor("#000000");a.begin();a.moveTo(b,d);a.lineTo(b,c);a.lineTo(.5*b,c);a.lineTo(.5*b,0);a.close();a.fill();a.begin(); -a.moveTo(0,d);a.lineTo(.5*b,0);a.lineTo(b,d);a.lineTo(b,c);a.lineTo(0,c);a.close();a.stroke()};mxCellRenderer.registerShape(mxShapeInfographicPyramidStep.prototype.cst.PYRAMID_STEP,mxShapeInfographicPyramidStep);mxShapeInfographicPyramidStep.prototype.constraints=null;function mxShapeInfographicCylinder(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeInfographicCylinder,mxActor);mxShapeInfographicCylinder.prototype.cst={CYLINDER:"mxgraph.infographic.cylinder"}; +a.moveTo(0,d);a.lineTo(.5*b,0);a.lineTo(b,d);a.lineTo(b,c);a.lineTo(0,c);a.close();a.stroke()};mxCellRenderer.registerShape(mxShapeInfographicPyramidStep.prototype.cst.PYRAMID_STEP,mxShapeInfographicPyramidStep); +mxShapeInfographicPyramidStep.prototype.getConstraints=function(a,d,e){a=[];var b=Math.max(.1*d,0);a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*d,.5*b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b+.25*(e-b)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b+.5*(e-b)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null, +d,b+.75*(e-b)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,b+.75*(e-b)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,b+.5*(e-b))); +a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,b+.25*(e-b)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*d,.5*b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,b));return a};function mxShapeInfographicCylinder(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeInfographicCylinder,mxActor);mxShapeInfographicCylinder.prototype.cst={CYLINDER:"mxgraph.infographic.cylinder"}; mxShapeInfographicCylinder.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=.5*b;a.begin();a.moveTo(0,10);a.arcTo(d,10,0,0,1,b,10);a.lineTo(b,c-10);a.arcTo(d,10,0,0,1,0,c-10);a.close();a.fillAndStroke();a.setShadow(!1);a.setGradient("#000000","#ffffff",0,0,b,c,mxConstants.DIRECTION_EAST,.4,.4);a.begin();a.moveTo(0,10);a.arcTo(d,10,0,0,0,b,10);a.lineTo(b,c-10);a.arcTo(d,10,0,0,1,0,c-10);a.close();a.fill();a.begin();a.moveTo(0,10);a.arcTo(d,10,0,0,1,b,10);a.lineTo(b,c-10);a.arcTo(d, -10,0,0,1,0,c-10);a.close();a.stroke()};mxCellRenderer.registerShape(mxShapeInfographicCylinder.prototype.cst.CYLINDER,mxShapeInfographicCylinder);mxShapeInfographicCylinder.prototype.constraints=null;function mxShapeInfographicCircularCallout2(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dy=.5}mxUtils.extend(mxShapeInfographicCircularCallout2,mxActor);mxShapeInfographicCircularCallout2.prototype.cst={CIRCULAR_CALLOUT_2:"mxgraph.infographic.circularCallout2"}; +10,0,0,1,0,c-10);a.close();a.stroke()};mxCellRenderer.registerShape(mxShapeInfographicCylinder.prototype.cst.CYLINDER,mxShapeInfographicCylinder); +mxShapeInfographicCylinder.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,10));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,10));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,10+.25*(e-20)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,10+.5*(e-20)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,10+.75*(e-20)));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,d,e-10));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e-10));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,10+.75*(e-20)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,10+.5*(e-20)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,10+.25*(e-20)));return a}; +function mxShapeInfographicCircularCallout2(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dy=.5}mxUtils.extend(mxShapeInfographicCircularCallout2,mxActor);mxShapeInfographicCircularCallout2.prototype.cst={CIRCULAR_CALLOUT_2:"mxgraph.infographic.circularCallout2"}; mxShapeInfographicCircularCallout2.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,"none");e=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,"none");a.setFillColor(e);e=Math.max(0,Math.min(.5*b,.4*c,.5*c-7));a.begin();a.moveTo(.5*b-2,2.15*e);a.arcTo(.23*e,.23*e,0,0,0,.5*b-.2*e,1.97*e);a.arcTo(e,e,0,0,1,.5*b-e,e);a.arcTo(e,e,0,0,1,.5*b,0);a.arcTo(e,e,0,0,1,.5*b+e,e);a.arcTo(e,e,0,0,1,.5*b+.2*e,1.97*e);a.arcTo(.23*e, .23*e,0,0,0,.5*b+2,2.15*e);var f=Math.max(.1*e,6);4<.04*e?(a.lineTo(.5*b+2,c-.22*e),a.arcTo(.05*e,.05*e,0,0,0,.5*b+.04*e,c-.19*e)):a.lineTo(.5*b+2,c-2*f);a.arcTo(f,f,0,0,1,.5*b+f,c-f);a.arcTo(f,f,0,0,1,.5*b,c);a.arcTo(f,f,0,0,1,.5*b-f,c-f);4<.04*e?(a.arcTo(f,f,0,0,1,.5*b-.04*e,c-.19*e),a.arcTo(.5*f,.5*f,0,0,0,.5*b-2,c-.22*e)):a.arcTo(f,f,0,0,1,.5*b-2,c-2*f);a.close();a.moveTo(.5*b,.2*e);a.arcTo(.8*e,.8*e,0,0,0,.5*b-.8*e,.8*e);a.arcTo(.8*e,.8*e,0,0,0,.5*b,1.8*e);a.arcTo(.8*e,.8*e,0,0,0,.5*b+.8*e,.8* e);a.arcTo(.8*e,.8*e,0,0,0,.5*b,.2*e);a.close();a.moveTo(.5*b,c-1.75*f);a.arcTo(.75*f,.75*f,0,0,0,.5*b-.75*f,c-f);a.arcTo(.75*f,.75*f,0,0,0,.5*b,c-.25*f);a.arcTo(.75*f,.75*f,0,0,0,.5*b+.75*f,c-f);a.arcTo(.75*f,.75*f,0,0,0,.5*b,c-1.75*f);a.close();a.fill();a.setFillColor(d);a.setShadow(!1);a.begin();a.moveTo(.5*b,.2*e);a.arcTo(.8*e,.8*e,0,0,0,.5*b-.8*e,.8*e);a.arcTo(.8*e,.8*e,0,0,0,.5*b,1.8*e);a.arcTo(.8*e,.8*e,0,0,0,.5*b+.8*e,.8*e);a.arcTo(.8*e,.8*e,0,0,0,.5*b,.2*e);a.close();a.moveTo(.5*b,c-1.75* -f);a.arcTo(.75*f,.75*f,0,0,0,.5*b-.75*f,c-f);a.arcTo(.75*f,.75*f,0,0,0,.5*b,c-.25*f);a.arcTo(.75*f,.75*f,0,0,0,.5*b+.75*f,c-f);a.arcTo(.75*f,.75*f,0,0,0,.5*b,c-1.75*f);a.close();a.fill()};mxCellRenderer.registerShape(mxShapeInfographicCircularCallout2.prototype.cst.CIRCULAR_CALLOUT_2,mxShapeInfographicCircularCallout2);mxShapeInfographicCircularCallout2.prototype.constraints=null; +f);a.arcTo(.75*f,.75*f,0,0,0,.5*b-.75*f,c-f);a.arcTo(.75*f,.75*f,0,0,0,.5*b,c-.25*f);a.arcTo(.75*f,.75*f,0,0,0,.5*b+.75*f,c-f);a.arcTo(.75*f,.75*f,0,0,0,.5*b,c-1.75*f);a.close();a.fill()};mxCellRenderer.registerShape(mxShapeInfographicCircularCallout2.prototype.cst.CIRCULAR_CALLOUT_2,mxShapeInfographicCircularCallout2); +mxShapeInfographicCircularCallout2.prototype.getConstraints=function(a,d,e){a=[];e=Math.max(0,Math.min(.5*d,.4*e,.5*e-7));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d-e,e));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d+e,e));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));return a}; function mxShapeInfographicBannerSingleFold(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.notch=this.dx2=this.dy=this.dx=.5}mxUtils.extend(mxShapeInfographicBannerSingleFold,mxActor);mxShapeInfographicBannerSingleFold.prototype.cst={BANNER_SINGLE_FOLD:"mxgraph.infographic.bannerSingleFold"}; mxShapeInfographicBannerSingleFold.prototype.customProperties=[{name:"dx",dispName:"Fold Length",type:"float",defVal:32,min:0},{name:"dy",dispName:"Banner Width",type:"float",defVal:17,min:0},{name:"notch",dispName:"Notch",type:"float",defVal:15,min:0}]; mxShapeInfographicBannerSingleFold.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));e=Math.max(0,Math.min(.5*c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));var f=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"notch",this.notch))));d=Math.min(b-2*e,d);var g=Math.max(0,Math.min(b-d-2*e,parseFloat(mxUtils.getValue(this.style,"dx2",this.dx2)))),f=Math.min(d,f);a.begin();a.moveTo(g, 0);a.lineTo(b-d,0);a.lineTo(b-d,e);a.lineTo(b,e);a.lineTo(b-f,.5*(c-e)+e);a.lineTo(b,c);a.lineTo(b-d-2*e,c);a.lineTo(b-d-2*e,c-e);a.lineTo(g,c-e);a.lineTo(0,.5*(c-e));a.close();a.fillAndStroke();a.setShadow(!1);a.setFillAlpha("0.05");a.setFillColor("#000000");a.begin();a.moveTo(b,e);a.lineTo(b-d,e);a.lineTo(b-d,c-e);a.lineTo(b-d-2*e,c);a.lineTo(b,c);a.lineTo(b-f,.5*(c-e)+e);a.close();a.fill();a.setFillAlpha("0.4");a.begin();a.moveTo(b-d,c-e);a.lineTo(b-d-2*e,c-e);a.lineTo(b-d-2*e,c);a.close();a.fill(); -a.begin();a.moveTo(g,0);a.lineTo(b-d,0);a.lineTo(b-d,e);a.lineTo(b,e);a.lineTo(b-f,.5*(c-e)+e);a.lineTo(b,c);a.lineTo(b-d-2*e,c);a.lineTo(b-d-2*e,c-e);a.lineTo(g,c-e);a.lineTo(0,.5*(c-e));a.close();a.stroke()};mxCellRenderer.registerShape(mxShapeInfographicBannerSingleFold.prototype.cst.BANNER_SINGLE_FOLD,mxShapeInfographicBannerSingleFold);mxShapeInfographicBannerSingleFold.prototype.constraints=null; +a.begin();a.moveTo(g,0);a.lineTo(b-d,0);a.lineTo(b-d,e);a.lineTo(b,e);a.lineTo(b-f,.5*(c-e)+e);a.lineTo(b,c);a.lineTo(b-d-2*e,c);a.lineTo(b-d-2*e,c-e);a.lineTo(g,c-e);a.lineTo(0,.5*(c-e));a.close();a.stroke()};mxCellRenderer.registerShape(mxShapeInfographicBannerSingleFold.prototype.cst.BANNER_SINGLE_FOLD,mxShapeInfographicBannerSingleFold); Graph.handleFactory[mxShapeInfographicBannerSingleFold.prototype.cst.BANNER_SINGLE_FOLD]=function(a){var d=[Graph.createHandle(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),d=Math.max(0,Math.min(a.height/2,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(a.x+a.width-b,a.y+d)},function(a,c){this.state.style.dx=Math.round(100*Math.max(0,Math.min(a.width,a.x+a.width-c.x)))/100;this.state.style.dy= Math.round(100*Math.max(0,Math.min(a.height/2,c.y-a.y)))/100})],e=Graph.createHandle(a,["notch"],function(a){var b=Math.max(0,Math.min(a.height/2,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy)))),d=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),d=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch))));return new mxPoint(a.x+a.width-d,a.y+b+.5*(a.height-b))},function(a,c){this.state.style.notch=Math.round(100* Math.max(0,Math.min(a.width,a.width+a.x-c.x)))/100});d.push(e);a=Graph.createHandle(a,["dx2"],function(a){var b=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),d=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy)))),b=Math.max(0,Math.min(a.width-b,parseFloat(mxUtils.getValue(this.state.style,"dx2",this.dx2))));return new mxPoint(a.x+b,a.y+.5*(a.height-d))},function(a,c){var b=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.state.style, -"dx",this.dx)))),d=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));this.state.style.dx2=Math.round(100*Math.max(0,Math.min(a.width-b-2*d,c.x-a.x)))/100});d.push(a);return d};function mxShapeBasicShadedCube(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.isoAngle=15}mxUtils.extend(mxShapeBasicShadedCube,mxActor);mxShapeBasicShadedCube.prototype.cst={SHADED_CUBE:"mxgraph.infographic.shadedCube"}; -mxShapeBasicShadedCube.prototype.customProperties=[{name:"isoAngle",dispName:"Perspective",type:"float",defVal:15,min:0}]; +"dx",this.dx)))),d=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));this.state.style.dx2=Math.round(100*Math.max(0,Math.min(a.width-b-2*d,c.x-a.x)))/100});d.push(a);return d}; +mxShapeInfographicBannerSingleFold.prototype.getConstraints=function(a,d,e){a=[];var b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),c=Math.max(0,Math.min(.5*e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),f=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"notch",this.notch)))),b=Math.min(d-2*c,b),g=Math.max(0,Math.min(d-b-2*c,parseFloat(mxUtils.getValue(this.style,"dx2",this.dx2)))),f=Math.min(b,f),h=d-b-g;a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,0,.5*(e-c)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g+.25*h,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g+.5*h,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g+.75*h,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g+h,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.25*b,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5* +b,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.75*b,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-f,.5*(e+c)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-b-2*c,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.75*(b+2*c),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*(b+2*c), +e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.25*(b+2*c),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,e-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g+.25*h,e-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g+.5*h,e-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g+.75*h,e-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g+h,e-c));return a}; +function mxShapeBasicShadedCube(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.isoAngle=15}mxUtils.extend(mxShapeBasicShadedCube,mxActor);mxShapeBasicShadedCube.prototype.cst={SHADED_CUBE:"mxgraph.infographic.shadedCube"};mxShapeBasicShadedCube.prototype.customProperties=[{name:"isoAngle",dispName:"Perspective",type:"float",defVal:15,min:0}]; mxShapeBasicShadedCube.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200;d=Math.min(b*Math.tan(d),.5*c);a.begin();a.moveTo(.5*b,0);a.lineTo(b,d);a.lineTo(b,c-d);a.lineTo(.5*b,c);a.lineTo(0,c-d);a.lineTo(0,d);a.close();a.fillAndStroke();a.setShadow(!1);a.setFillAlpha("0.2");a.setFillColor("#000000");a.begin();a.moveTo(.5*b,2*d);a.lineTo(b,d);a.lineTo(b,c-d);a.lineTo(.5*b,c);a.close(); -a.fill();a.setFillColor("#ffffff");a.begin();a.moveTo(.5*b,2*d);a.lineTo(0,d);a.lineTo(0,c-d);a.lineTo(.5*b,c);a.close();a.fill()};mxCellRenderer.registerShape(mxShapeBasicShadedCube.prototype.cst.SHADED_CUBE,mxShapeBasicShadedCube);mxShapeBasicShadedCube.prototype.constraints=null; +a.fill();a.setFillColor("#ffffff");a.begin();a.moveTo(.5*b,2*d);a.lineTo(0,d);a.lineTo(0,c-d);a.lineTo(.5*b,c);a.close();a.fill()};mxCellRenderer.registerShape(mxShapeBasicShadedCube.prototype.cst.SHADED_CUBE,mxShapeBasicShadedCube); Graph.handleFactory[mxShapeBasicShadedCube.prototype.cst.SHADED_CUBE]=function(a){return[Graph.createHandle(a,["isoAngle"],function(a){var d=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",this.isoAngle))))*Math.PI/200;return new mxPoint(a.x,a.y+Math.min(a.width*Math.tan(d),.5*a.height))},function(a,e){this.state.style.isoAngle=Math.round(100*Math.max(0,Math.min(100,e.y-a.y)))/100})]}; +mxShapeBasicShadedCube.prototype.getConstraints=function(a,d,e){a=[];var b=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200,b=Math.min(d*Math.tan(b),.5*e);a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*d,.5*b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b+.25*(e-2*b)));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,d,b+.5*(e-2*b)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b+.75*(e-2*b)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e-b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*d,e-.5*b));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*d,e-.5*b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e-b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null, +0,e-b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,b+.75*(e-2*b)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,b+.5*(e-2*b)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,b+.25*(e-2*b)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*d,.5*b));return a}; function mxShapeBasicPartConcEllipse(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.startAngle=.25;this.endAngle=.75;this.arcWidth=.5}mxUtils.extend(mxShapeBasicPartConcEllipse,mxActor);mxShapeBasicPartConcEllipse.prototype.cst={PART_CONC_ELLIPSE:"mxgraph.infographic.partConcEllipse"}; mxShapeBasicPartConcEllipse.prototype.customProperties=[{name:"startAngle",dispName:"Start Angle",min:0,max:1,defVal:.25},{name:"endAngle",dispName:"End Angle",min:0,max:1,defVal:.1},{name:"arcWidth",dispName:"Arc Width",min:0,max:1,defVal:.5}]; mxShapeBasicPartConcEllipse.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);var f=2*Math.PI*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"startAngle",this.startAngle)))),g=2*Math.PI*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"endAngle",this.endAngle)))),h=1-Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arcWidth",this.arcWidth))));d=.5*b;e=.5*c;var k=d*h,l=e*h,m=g-f;0>m?m+=2*Math.PI:m==Math.PI&&(g+=1E-5);var n=d+Math.sin(f)*d,p=e-Math.cos(f)* e,q=d+Math.sin(f)*k,f=e-Math.cos(f)*l,r=d+Math.sin(g)*d,t=e-Math.cos(g)*e,u=d+Math.sin(g)*k,g=e-Math.cos(g)*l,v=0;m<=Math.PI&&(v=1);a.begin();a.moveTo(d,0);a.arcTo(d,e,0,0,1,b,e);a.arcTo(d,e,0,0,1,d,c);a.arcTo(d,e,0,0,1,0,e);a.arcTo(d,e,0,0,1,d,0);a.close();a.moveTo(d,.5*c-l);a.arcTo(k,l,0,0,0,.5*b-k,e);a.arcTo(k,l,0,0,0,d,.5*c+l);a.arcTo(k,l,0,0,0,.5*b+k,e);a.arcTo(k,l,0,0,0,d,.5*c-l);a.close();a.fillAndStroke();a.setShadow(!1);a.setFillAlpha("0.2");a.setFillColor("#ffffff");a.begin();a.moveTo(n, p);a.arcTo(d,e,0,v,0,r,t);a.lineTo(u,g);a.arcTo(k,l,0,v,1,q,f);a.close();a.fill();d=.5*b;e=.5*c;k=d*h;l=e*h;h=k+.25*(d-k);m=l+.25*(e-l);a.setFillColor("#000000");a.begin();a.moveTo(d,.5*c-l);a.arcTo(k,l,0,0,1,.5*b+k,e);a.arcTo(k,l,0,0,1,d,.5*c+l);a.arcTo(k,l,0,0,1,.5*b-k,e);a.arcTo(k,l,0,0,1,d,.5*c-l);a.close();a.moveTo(d,.5*c-m);a.arcTo(h,m,0,0,0,.5*b-h,e);a.arcTo(h,m,0,0,0,d,.5*c+m);a.arcTo(h,m,0,0,0,.5*b+h,e);a.arcTo(h,m,0,0,0,d,.5*c-m);a.close();a.fill()}; -mxCellRenderer.registerShape(mxShapeBasicPartConcEllipse.prototype.cst.PART_CONC_ELLIPSE,mxShapeBasicPartConcEllipse);mxShapeBasicPartConcEllipse.prototype.constraints=null; +mxCellRenderer.registerShape(mxShapeBasicPartConcEllipse.prototype.cst.PART_CONC_ELLIPSE,mxShapeBasicPartConcEllipse); Graph.handleFactory[mxShapeBasicPartConcEllipse.prototype.cst.PART_CONC_ELLIPSE]=function(a){var d=[Graph.createHandle(a,["startAngle"],function(a){var b=2*Math.PI*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"startAngle",this.startAngle))));return new mxPoint(a.x+.5*a.width+Math.sin(b)*a.width*.5,a.y+.5*a.height-Math.cos(b)*a.height*.5)},function(a,c){var b=.5*Math.atan2(Math.round(100*Math.max(-1,Math.min(1,(c.x-a.x-.5*a.width)/(.5*a.width))))/100,-Math.round(100*Math.max(-1, Math.min(1,(c.y-a.y-.5*a.height)/(.5*a.height))))/100)/Math.PI;0>b&&(b=1+b);this.state.style.startAngle=b})],e=Graph.createHandle(a,["endAngle"],function(a){var b=2*Math.PI*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"endAngle",this.endAngle))));return new mxPoint(a.x+.5*a.width+Math.sin(b)*a.width*.5,a.y+.5*a.height-Math.cos(b)*a.height*.5)},function(a,c){var b=.5*Math.atan2(Math.round(100*Math.max(-1,Math.min(1,(c.x-a.x-.5*a.width)/(.5*a.width))))/100,-Math.round(100*Math.max(-1, Math.min(1,(c.y-a.y-.5*a.height)/(.5*a.height))))/100)/Math.PI;0>b&&(b=1+b);this.state.style.endAngle=b});d.push(e);a=Graph.createHandle(a,["arcWidth"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"arcWidth",this.arcWidth))));return new mxPoint(a.x+a.width/2,a.y+b*a.height*.5)},function(a,c){this.state.style.arcWidth=Math.round(100*Math.max(0,Math.min(a.height/2,a.width/2,(c.y-a.y)/(.5*a.height))))/100});d.push(a);return d}; -function mxShapeInfographicBannerHalfFold(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.notch=this.dx2=this.dx=.5}mxUtils.extend(mxShapeInfographicBannerHalfFold,mxActor);mxShapeInfographicBannerHalfFold.prototype.cst={BANNER_HALF_FOLD:"mxgraph.infographic.bannerHalfFold"}; +mxShapeBasicPartConcEllipse.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(.145,.145),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.855,.145),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.855,.855),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.145,.855),!1));a.push(new mxConnectionConstraint(new mxPoint(0, +.5),!1));return a};function mxShapeInfographicBannerHalfFold(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.notch=this.dx2=this.dx=.5}mxUtils.extend(mxShapeInfographicBannerHalfFold,mxActor);mxShapeInfographicBannerHalfFold.prototype.cst={BANNER_HALF_FOLD:"mxgraph.infographic.bannerHalfFold"}; mxShapeInfographicBannerHalfFold.prototype.customProperties=[{name:"dx",dispName:"Banner Width",min:0,defVal:40},{name:"dx2",dispName:"Spike Size",min:0,defVal:20},{name:"notch",dispName:"Notch Size",min:0,defVal:15}]; mxShapeInfographicBannerHalfFold.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));e=Math.max(0,Math.min(b-d,parseFloat(mxUtils.getValue(this.style,"dx2",this.dx2))));var f=Math.max(0,Math.min(c-d,parseFloat(mxUtils.getValue(this.style,"notch",this.notch))));a.begin();a.moveTo(e,0);a.lineTo(b-d,0);a.lineTo(b,d);a.lineTo(b,c);a.lineTo(b-.5*d,c-f);a.lineTo(b-d,c);a.lineTo(b-d,d);a.lineTo(e,d);a.lineTo(0,.5* d);a.close();a.fillAndStroke();a.setShadow(!1);a.setFillAlpha("0.2");a.setFillColor("#000000");a.begin();a.moveTo(b-d,d);a.lineTo(b,d);a.lineTo(b,c);a.lineTo(b-.5*d,c-f);a.lineTo(b-d,c);a.lineTo(b-d,d);a.lineTo(0,d);a.close();a.fill();a.begin();a.moveTo(e,0);a.lineTo(b-d,0);a.lineTo(b,d);a.lineTo(b,c);a.lineTo(b-.5*d,c-f);a.lineTo(b-d,c);a.lineTo(b-d,d);a.lineTo(e,d);a.lineTo(0,.5*d);a.close();a.stroke()}; -mxCellRenderer.registerShape(mxShapeInfographicBannerHalfFold.prototype.cst.BANNER_HALF_FOLD,mxShapeInfographicBannerHalfFold);mxShapeInfographicBannerHalfFold.prototype.constraints=null; +mxCellRenderer.registerShape(mxShapeInfographicBannerHalfFold.prototype.cst.BANNER_HALF_FOLD,mxShapeInfographicBannerHalfFold); Graph.handleFactory[mxShapeInfographicBannerHalfFold.prototype.cst.BANNER_HALF_FOLD]=function(a){var d=[Graph.createHandle(a,["dx"],function(a){var b=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx))));return new mxPoint(a.x+a.width-b,a.y+b)},function(a,c){this.state.style.dx=Math.round(100*Math.max(0,Math.min(a.width,a.x+a.width-c.x)))/100})],e=Graph.createHandle(a,["notch"],function(a){var b=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.state.style, "dx",this.dx)))),d=Math.max(0,Math.min(a.height-b,parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch))));return new mxPoint(a.x+a.width-.5*b,a.y+a.height-d)},function(a,c){this.state.style.notch=Math.round(100*Math.max(0,Math.min(a.height,a.height+a.y-c.y)))/100});d.push(e);a=Graph.createHandle(a,["dx2"],function(a){var b=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),d=Math.max(0,Math.min(a.width-b,parseFloat(mxUtils.getValue(this.state.style, -"dx2",this.dx2))));return new mxPoint(a.x+d,a.y+b)},function(a,c){var b=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx))));this.state.style.dx2=Math.round(100*Math.max(0,Math.min(a.width-b,c.x-a.x)))/100});d.push(a);return d};function mxShapeInfographicCircularDial(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dy=.5}mxUtils.extend(mxShapeInfographicCircularDial,mxActor); -mxShapeInfographicCircularDial.prototype.cst={CIRCULAR_DIAL:"mxgraph.infographic.circularDial"};mxShapeInfographicCircularDial.prototype.customProperties=[{name:"dy",dispName:"Hole Size",min:0,defVal:15}]; +"dx2",this.dx2))));return new mxPoint(a.x+d,a.y+b)},function(a,c){var b=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx))));this.state.style.dx2=Math.round(100*Math.max(0,Math.min(a.width-b,c.x-a.x)))/100});d.push(a);return d}; +mxShapeInfographicBannerHalfFold.prototype.getConstraints=function(a,d,e){a=[];var b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),c=Math.max(0,Math.min(d-b,parseFloat(mxUtils.getValue(this.style,"dx2",this.dx2)))),f=Math.max(0,Math.min(e-b,parseFloat(mxUtils.getValue(this.style,"notch",this.notch)))),g=d-b-c,h=e-b;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,0));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,c+.25*g,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c+.5*g,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c+.75*g,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-b,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*b,.5*b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b+.25*h));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d, +b+.5*h));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b+.75*h));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*b,e-f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-b,e));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-b,b+.75*h));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-b,b+.5*h));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,d-b,b+.25*h));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-b,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c+.25*g,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c+.5*g,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c+.75*g,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,b));return a}; +function mxShapeInfographicCircularDial(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dy=.5}mxUtils.extend(mxShapeInfographicCircularDial,mxActor);mxShapeInfographicCircularDial.prototype.cst={CIRCULAR_DIAL:"mxgraph.infographic.circularDial"};mxShapeInfographicCircularDial.prototype.customProperties=[{name:"dy",dispName:"Hole Size",min:0,defVal:15}]; mxShapeInfographicCircularDial.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(0,Math.min(.5*c-10,.5*b,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));e=Math.max(0,Math.min(.5*b,.5*c-10));var f=e-d;a.begin();a.moveTo(.5*b-e,c);a.lineTo(.5*b-e,e);a.arcTo(e,e,0,0,1,.5*b,0);a.arcTo(e,e,0,0,1,.5*b+e,e);a.lineTo(.5*b+e,c);a.close();a.moveTo(.5*b,d);a.arcTo(f,f,0,0,0,.5*b-f,e);a.arcTo(f,f,0,0,0,.5*b,e+f);a.arcTo(f,f,0,0,0,.5*b+f,e);a.arcTo(f,f,0,0,0,.5*b,d);a.close(); -a.fillAndStroke();a.setShadow(!1);a.setFillAlpha("0.2");a.setFillColor("#000000");a.begin();a.moveTo(.5*b-e,2*e);a.lineTo(.5*b+e,2*e);a.lineTo(.5*b+e,c);a.lineTo(.5*b-e,c);a.close();a.fill()};mxCellRenderer.registerShape(mxShapeInfographicCircularDial.prototype.cst.CIRCULAR_DIAL,mxShapeInfographicCircularDial);mxShapeInfographicCircularDial.prototype.constraints=null; +a.fillAndStroke();a.setShadow(!1);a.setFillAlpha("0.2");a.setFillColor("#000000");a.begin();a.moveTo(.5*b-e,2*e);a.lineTo(.5*b+e,2*e);a.lineTo(.5*b+e,c);a.lineTo(.5*b-e,c);a.close();a.fill()};mxCellRenderer.registerShape(mxShapeInfographicCircularDial.prototype.cst.CIRCULAR_DIAL,mxShapeInfographicCircularDial); Graph.handleFactory[mxShapeInfographicCircularDial.prototype.cst.CIRCULAR_DIAL]=function(a){return[Graph.createHandle(a,["dy"],function(a){var d=Math.max(0,Math.min(a.height/2,a.width/2,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(a.x+.5*a.width,a.y+d)},function(a,e){this.state.style.dy=Math.round(100*Math.max(0,Math.min(a.height/2,a.width/2,e.y-a.y)))/100})]}; +mxShapeInfographicCircularDial.prototype.getConstraints=function(a,d,e){a=[];parseFloat(mxUtils.getValue(this.style,"dy",this.dy));var b=Math.max(0,Math.min(.5*d,.5*e-10));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d-b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d-b,.5*(b+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d-b,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d-.71*b,.29*b));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,.5*d,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d+.71*b,.29*b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d+b,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d+b,.5*(b+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d+b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d+.5*b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d-.5*b,e));return a}; function mxShapeInfographicRibbonSimple(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.notch2=this.notch1=.5}mxUtils.extend(mxShapeInfographicRibbonSimple,mxActor);mxShapeInfographicRibbonSimple.prototype.cst={RIBBON_SIMPLE:"mxgraph.infographic.ribbonSimple"};mxShapeInfographicRibbonSimple.prototype.customProperties=[{name:"notch1",dispName:"Notch Size",min:0,defVal:20},{name:"notch2",dispName:"Spike Size",min:0,defVal:20}]; mxShapeInfographicRibbonSimple.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"notch1",this.notch2))));e=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"notch2",this.notch2))));a.begin();a.moveTo(0,c);a.lineTo(d,.5*c);a.lineTo(0,0);a.lineTo(b-e,0);a.lineTo(b,.5*c);a.lineTo(b-e,c);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeInfographicRibbonSimple.prototype.cst.RIBBON_SIMPLE,mxShapeInfographicRibbonSimple); -mxShapeInfographicRibbonSimple.prototype.constraints=null; Graph.handleFactory[mxShapeInfographicRibbonSimple.prototype.cst.RIBBON_SIMPLE]=function(a){var d=[Graph.createHandle(a,["notch1"],function(a){var b=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.state.style,"notch1",this.notch1))));return new mxPoint(a.x+b,a.y+.5*a.height)},function(a,b){this.state.style.notch1=Math.round(100*Math.max(0,Math.min(a.width,b.x-a.x)))/100})];a=Graph.createHandle(a,["notch2"],function(a){var b=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.state.style, -"notch2",this.notch2))));return new mxPoint(a.x+a.width-b,a.y)},function(a,b){this.state.style.notch2=Math.round(100*Math.max(0,Math.min(a.width,a.width+a.x-b.x)))/100});d.push(a);return d};function mxShapeInfographicBarCallout(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dy=this.dx=.5}mxUtils.extend(mxShapeInfographicBarCallout,mxActor);mxShapeInfographicBarCallout.prototype.cst={BAR_CALLOUT:"mxgraph.infographic.barCallout"}; -mxShapeInfographicBarCallout.prototype.customProperties=[{name:"dx",dispName:"Callout Position",min:0,defVal:100},{name:"dy",dispName:"Callout Size",min:0,defVal:30}]; +"notch2",this.notch2))));return new mxPoint(a.x+a.width-b,a.y)},function(a,b){this.state.style.notch2=Math.round(100*Math.max(0,Math.min(a.width,a.width+a.x-b.x)))/100});d.push(a);return d}; +mxShapeInfographicRibbonSimple.prototype.getConstraints=function(a,d,e){a=[];var b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"notch1",this.notch2)))),c=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"notch2",this.notch2))));d-=c;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*d,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,0));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,.75*d,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*d,e));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,b,.5*e));return a};function mxShapeInfographicBarCallout(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dy=this.dx=.5}mxUtils.extend(mxShapeInfographicBarCallout,mxActor);mxShapeInfographicBarCallout.prototype.cst={BAR_CALLOUT:"mxgraph.infographic.barCallout"};mxShapeInfographicBarCallout.prototype.customProperties=[{name:"dx",dispName:"Callout Position",min:0,defVal:100},{name:"dy",dispName:"Callout Size",min:0,defVal:30}]; mxShapeInfographicBarCallout.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));var f=Math.max(d-.35*e,0),g=Math.min(d+.35*e,b);a.begin();a.moveTo(0,0);a.lineTo(b,0);a.lineTo(b,c-e);a.lineTo(g,c-e);a.lineTo(d,c);a.lineTo(f,c-e);a.lineTo(0,c-e);a.close();a.fillAndStroke()}; mxCellRenderer.registerShape(mxShapeInfographicBarCallout.prototype.cst.BAR_CALLOUT,mxShapeInfographicBarCallout);mxShapeInfographicBarCallout.prototype.constraints=null; Graph.handleFactory[mxShapeInfographicBarCallout.prototype.cst.BAR_CALLOUT]=function(a){return[Graph.createHandle(a,["dx","dy"],function(a){var d=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(a.x+d,a.y+a.height-b)},function(a,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(a.width,e.x-a.x)))/100;this.state.style.dy=Math.round(100*Math.max(0, -Math.min(a.height,a.y+a.height-e.y)))/100})]};function mxShapeInfographicFlag(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dy=this.dx=.5}mxUtils.extend(mxShapeInfographicFlag,mxActor);mxShapeInfographicFlag.prototype.cst={FLAG:"mxgraph.infographic.flag"};mxShapeInfographicFlag.prototype.customProperties=[{name:"dx",dispName:"Pole Width",min:0,defVal:30},{name:"dy",dispName:"Spike Size",min:0,defVal:20}]; +Math.min(a.height,a.y+a.height-e.y)))/100})]}; +mxShapeInfographicBarCallout.prototype.getConstraints=function(a,d,e){a=[];var b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1, +0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(e-c)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e-c));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1,null,0,e-c));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1,null,0,e-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e-c));return a}; +function mxShapeInfographicFlag(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dy=this.dx=.5}mxUtils.extend(mxShapeInfographicFlag,mxActor);mxShapeInfographicFlag.prototype.cst={FLAG:"mxgraph.infographic.flag"};mxShapeInfographicFlag.prototype.customProperties=[{name:"dx",dispName:"Pole Width",min:0,defVal:30},{name:"dy",dispName:"Spike Size",min:0,defVal:20}]; mxShapeInfographicFlag.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(0,0);a.lineTo(b,0);a.lineTo(b,c-e);a.lineTo(d,c-e);a.lineTo(.5*d,c);a.lineTo(0,c-e);a.close();a.fillAndStroke();a.setShadow(!1);a.setFillAlpha("0.2");a.setFillColor("#ffffff");a.begin();a.moveTo(0,0);a.lineTo(d,0);a.lineTo(d,c-e);a.lineTo(.5* -d,c);a.lineTo(0,c-e);a.close();a.fill()};mxCellRenderer.registerShape(mxShapeInfographicFlag.prototype.cst.FLAG,mxShapeInfographicFlag);mxShapeInfographicFlag.prototype.constraints=null; +d,c);a.lineTo(0,c-e);a.close();a.fill()};mxCellRenderer.registerShape(mxShapeInfographicFlag.prototype.cst.FLAG,mxShapeInfographicFlag); Graph.handleFactory[mxShapeInfographicFlag.prototype.cst.FLAG]=function(a){return[Graph.createHandle(a,["dx","dy"],function(a){var d=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(a.x+d,a.y+a.height-b)},function(a,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(a.width,e.x-a.x)))/100;this.state.style.dy=Math.round(100*Math.max(0,Math.min(a.height, -a.y+a.height-e.y)))/100})]};function mxLeanBoatShipment(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxLeanBoatShipment,mxShape);mxLeanBoatShipment.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.begin();a.moveTo(.15*b,.77*c);a.lineTo(.5*b,0);a.lineTo(.85*b,.77*c);a.close();a.moveTo(.2*b,c);a.lineTo(0,.8*c);a.lineTo(b,.8*c);a.lineTo(.8*b,c);a.close();a.fillAndStroke()}; -mxCellRenderer.registerShape("mxgraph.lean_mapping.boat_shipment",mxLeanBoatShipment); +a.y+a.height-e.y)))/100})]}; +mxShapeInfographicFlag.prototype.getConstraints=function(a,d,e){a=[];var b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0), +!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(e-c)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(e-c)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*d,e-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,e-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*d,e-c));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,.5*b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*b,0));return a};function mxLeanBoatShipment(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxLeanBoatShipment,mxShape); +mxLeanBoatShipment.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.begin();a.moveTo(.15*b,.77*c);a.lineTo(.5*b,0);a.lineTo(.85*b,.77*c);a.close();a.moveTo(.2*b,c);a.lineTo(0,.8*c);a.lineTo(b,.8*c);a.lineTo(.8*b,c);a.close();a.fillAndStroke()};mxCellRenderer.registerShape("mxgraph.lean_mapping.boat_shipment",mxLeanBoatShipment); mxLeanBoatShipment.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1),new mxConnectionConstraint(new mxPoint(0,.8),!1),new mxConnectionConstraint(new mxPoint(1,.8),!1),new mxConnectionConstraint(new mxPoint(.2,1),!1),new mxConnectionConstraint(new mxPoint(.8,1),!1),new mxConnectionConstraint(new mxPoint(.26,.5),!1),new mxConnectionConstraint(new mxPoint(.74,.5),!1)]; function mxLeanSafetyStock(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxLeanSafetyStock,mxShape);mxLeanSafetyStock.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,b,c);a.setShadow(!1);this.foreground(a,b,c)};mxLeanSafetyStock.prototype.background=function(a,d,e){a.rect(0,0,d,e);a.fillAndStroke()}; mxLeanSafetyStock.prototype.foreground=function(a,d,e){a.begin();a.moveTo(0,.34*e);a.lineTo(d,.34*e);a.moveTo(0,.66*e);a.lineTo(d,.66*e);a.fillAndStroke()};mxCellRenderer.registerShape("mxgraph.lean_mapping.buffer_or_safety_stock",mxLeanSafetyStock); @@ -2225,12 +2384,12 @@ mxLeanFifoSequence.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d, mxLeanFifoSequence.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(0,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(.25, 1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];function mxLeanProductionKanban(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxLeanProductionKanban,mxShape); mxLeanProductionKanban.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.setDashed(!0);a.begin();a.moveTo(4,c-10);a.lineTo(4,25);a.lineTo(b,25);a.stroke();a.setDashed(!1);a.begin();a.moveTo(b-75,0);a.lineTo(b-30,0);a.lineTo(b-15,15);a.lineTo(b-15,50);a.lineTo(b-75,50);a.close();a.fillAndStroke();d=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,"#000000");a.setFillColor(d);a.begin();a.moveTo(0,c-10);a.lineTo(4,c);a.lineTo(8,c-10);a.close();a.fillAndStroke()}; -mxCellRenderer.registerShape("mxgraph.lean_mapping.production_kanban",mxLeanProductionKanban);function mxLeanWithdrawalKanban(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxLeanWithdrawalKanban,mxShape); +mxCellRenderer.registerShape("mxgraph.lean_mapping.production_kanban",mxLeanProductionKanban);mxLeanProductionKanban.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,4,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,25));return a};function mxLeanWithdrawalKanban(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxLeanWithdrawalKanban,mxShape); mxLeanWithdrawalKanban.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.setDashed(!0);a.begin();a.moveTo(4,c-10);a.lineTo(4,25);a.lineTo(b,25);a.stroke();a.setDashed(!1);a.begin();a.moveTo(b-75,0);a.lineTo(b-30,0);a.lineTo(b-15,15);a.lineTo(b-15,50);a.lineTo(b-75,50);a.close();a.fillAndStroke();a.begin();a.moveTo(b-75,45);a.lineTo(b-70,50);a.moveTo(b-75,35);a.lineTo(b-60,50);a.moveTo(b-75,25);a.lineTo(b-50,50);a.moveTo(b-75,15);a.lineTo(b-40,50);a.moveTo(b-75,5);a.lineTo(b-30,50); a.moveTo(b-70,0);a.lineTo(b-20,50);a.moveTo(b-60,0);a.lineTo(b-15,45);a.moveTo(b-50,0);a.lineTo(b-15,35);a.moveTo(b-40,0);a.lineTo(b-15,25);a.stroke();d=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,"#000000");a.setFillColor(d);a.begin();a.moveTo(0,c-10);a.lineTo(4,c);a.lineTo(8,c-10);a.close();a.fillAndStroke()};mxCellRenderer.registerShape("mxgraph.lean_mapping.withdrawal_kanban",mxLeanWithdrawalKanban); -function mxLeanSignalKanban(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxLeanSignalKanban,mxShape); +mxLeanWithdrawalKanban.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,4,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,25));return a};function mxLeanSignalKanban(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxLeanSignalKanban,mxShape); mxLeanSignalKanban.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.setDashed(!0);a.begin();a.moveTo(4,c-10);a.lineTo(4,15);a.lineTo(b,15);a.stroke();a.setDashed(!1);a.begin();a.moveTo(b-65,0);a.lineTo(b-25,0);a.lineTo(b-45,45);a.close();a.fillAndStroke();d=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,"#000000");a.setFillColor(d);a.begin();a.moveTo(0,c-10);a.lineTo(4,c);a.lineTo(8,c-10);a.close();a.fillAndStroke()}; -mxCellRenderer.registerShape("mxgraph.lean_mapping.signal_kanban",mxLeanSignalKanban);function mxLeanSequencedPullBall(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxLeanSequencedPullBall,mxShape); +mxCellRenderer.registerShape("mxgraph.lean_mapping.signal_kanban",mxLeanSignalKanban);mxLeanSignalKanban.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,4,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,15));return a};function mxLeanSequencedPullBall(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxLeanSequencedPullBall,mxShape); mxLeanSequencedPullBall.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.ellipse(0,0,b,c);a.fillAndStroke();d=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,"#000000");a.setFillColor(d);a.setShadow(!1);a.ellipse(.15*b,.15*c,.7*b,.7*c);a.fillAndStroke()};mxCellRenderer.registerShape("mxgraph.lean_mapping.sequenced_pull_ball",mxLeanSequencedPullBall); mxLeanSequencedPullBall.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.144,.144),!1),new mxConnectionConstraint(new mxPoint(.856,.144),!1),new mxConnectionConstraint(new mxPoint(.856,.856),!1),new mxConnectionConstraint(new mxPoint(.144,.856),!1),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0)]; function mxLeanRailShipment(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxLeanRailShipment,mxShape); @@ -2279,16 +2438,24 @@ a.fillAndStroke()};mxCellRenderer.registerShape("mxgraph.networks.comm_link_edge mxShapeSysMLComposite.prototype.paintForeground=function(a,d,e,b,c){if(null!=this.style){var f=mxCellRenderer.defaultShapes[this.style.symbol0];a.save();var g=new f;g.style=this.style;f.prototype.paintVertexShape.call(g,a,d,e,b,c);a.restore();a.setDashed(!1);var h=1;do{f=mxCellRenderer.defaultShapes[this.style["symbol"+h]];if(null!=f){var g=this.style["symbol"+h+"Align"],k=this.style["symbol"+h+"VerticalAlign"],l=this.style["symbol"+h+"Width"],m=this.style["symbol"+h+"Height"],n=this.style["symbol"+ h+"Spacing"]||0,p=this.style["symbol"+h+"VSpacing"]||0,q=this.style["symbol"+h+"ArcSpacing"],r=this.style["symbol"+h+"Direction"];null!=q&&(n+=this.getArcSize(b+this.strokewidth,c+this.strokewidth)*q,p+=this.getArcSize(b+this.strokewidth,c+this.strokewidth)*q);var q=d,t=e,q=g==mxConstants.ALIGN_CENTER?q+(b-l)/2:g==mxConstants.ALIGN_RIGHT?q+(b-l-n):q+n,t=k==mxConstants.ALIGN_MIDDLE?t+(c-m)/2:k==mxConstants.ALIGN_BOTTOM?t+(c-m-p):t+p;a.save();g=new f;g.style=mxUtils.clone(this.style);g.direction=r; g.updateTransform(a,q,t,l,m);f.prototype.paintVertexShape.call(g,a,q,t,l,m);a.restore()}h++}while(null!=f)}};mxCellRenderer.registerShape("mxgraph.sysml.composite",mxShapeSysMLComposite);function mxShapeSysMLPackage(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLPackage,mxShape);mxShapeSysMLPackage.prototype.cst={PACKAGE:"mxgraph.sysml.package",LABEL_X:"labelX"}; -mxShapeSysMLPackage.prototype.customProperties=[{name:"labelX",dispName:"Header Width",type:"float",min:0,defVal:90}];mxShapeSysMLPackage.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,d,e,b,c);a.setShadow(!1);this.foreground(a,d,e,b,c)};mxShapeSysMLPackage.prototype.background=function(a,d,e,b,c){a.rect(0,0,b,c);a.fillAndStroke()}; -mxShapeSysMLPackage.prototype.foreground=function(a,d,e,b,c){d=parseInt(mxUtils.getValue(this.style,mxShapeSysMLPackage.prototype.cst.LABEL_X,"90"));d=Math.min(d,b);20<d&&(a.begin(),a.moveTo(0,20),a.lineTo(d-10,20),a.lineTo(d,10),a.lineTo(d,0),a.stroke())};mxCellRenderer.registerShape(mxShapeSysMLPackage.prototype.cst.PACKAGE,mxShapeSysMLPackage); -Graph.handleFactory[mxShapeSysMLPackage.prototype.cst.PACKAGE]=function(a){return[Graph.createHandle(a,["labelX"],function(a){var d=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.state.style,"labelX",90))));return new mxPoint(a.x+d,a.y+10)},function(a,e){this.state.style.labelX=Math.round(100*Math.max(0,Math.min(a.width,e.x-a.x)))/100})]};function mxShapeSysMLPackage2(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1} -mxUtils.extend(mxShapeSysMLPackage2,mxShape);mxShapeSysMLPackage2.prototype.cst={PACKAGE2:"mxgraph.sysml.package2",LABEL_X:"labelX"};mxShapeSysMLPackage2.prototype.customProperties=[{name:"labelX",dispName:"Header Width",type:"float",min:0,defVal:90}];mxShapeSysMLPackage2.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,d,e,b,c);a.setShadow(!1);this.foreground(a,d,e,b,c)};mxShapeSysMLPackage2.prototype.background=function(a,d,e,b,c){a.rect(0,0,b,c);a.stroke()}; +mxShapeSysMLPackage.prototype.customProperties=[{name:"labelX",dispName:"Header Width",type:"float",min:0,defVal:90}]; +mxShapeSysMLPackage.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1, +.75),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.25),!1));return a}; +mxShapeSysMLPackage.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,d,e,b,c);a.setShadow(!1);this.foreground(a,d,e,b,c)};mxShapeSysMLPackage.prototype.background=function(a,d,e,b,c){a.rect(0,0,b,c);a.fillAndStroke()};mxShapeSysMLPackage.prototype.foreground=function(a,d,e,b,c){d=parseInt(mxUtils.getValue(this.style,mxShapeSysMLPackage.prototype.cst.LABEL_X,"90"));d=Math.min(d,b);20<d&&(a.begin(),a.moveTo(0,20),a.lineTo(d-10,20),a.lineTo(d,10),a.lineTo(d,0),a.stroke())}; +mxCellRenderer.registerShape(mxShapeSysMLPackage.prototype.cst.PACKAGE,mxShapeSysMLPackage);Graph.handleFactory[mxShapeSysMLPackage.prototype.cst.PACKAGE]=function(a){return[Graph.createHandle(a,["labelX"],function(a){var d=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.state.style,"labelX",90))));return new mxPoint(a.x+d,a.y+10)},function(a,e){this.state.style.labelX=Math.round(100*Math.max(0,Math.min(a.width,e.x-a.x)))/100})]}; +function mxShapeSysMLPackage2(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLPackage2,mxShape);mxShapeSysMLPackage2.prototype.cst={PACKAGE2:"mxgraph.sysml.package2",LABEL_X:"labelX"};mxShapeSysMLPackage2.prototype.customProperties=[{name:"labelX",dispName:"Header Width",type:"float",min:0,defVal:90}]; +mxShapeSysMLPackage2.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,d,e,b,c);a.setShadow(!1);this.foreground(a,d,e,b,c)};mxShapeSysMLPackage2.prototype.background=function(a,d,e,b,c){a.rect(0,0,b,c);a.stroke()}; mxShapeSysMLPackage2.prototype.foreground=function(a,d,e,b,c){d=parseInt(mxUtils.getValue(this.style,mxShapeSysMLPackage2.prototype.cst.LABEL_X,"90"));d=Math.min(d,b);20<d&&(a.begin(),a.moveTo(0,20),a.lineTo(d-10,20),a.lineTo(d,10),a.lineTo(d,0),a.lineTo(0,0),a.close(),a.fillAndStroke())};mxCellRenderer.registerShape(mxShapeSysMLPackage2.prototype.cst.PACKAGE2,mxShapeSysMLPackage2); Graph.handleFactory[mxShapeSysMLPackage2.prototype.cst.PACKAGE2]=function(a){return[Graph.createHandle(a,["labelX"],function(a){var d=Math.max(0,Math.min(a.width,parseFloat(mxUtils.getValue(this.state.style,"labelX",90))));return new mxPoint(a.x+d,a.y+10)},function(a,e){this.state.style.labelX=Math.round(100*Math.max(0,Math.min(a.width,e.x-a.x)))/100})]};function mxShapeSysMLNone(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1} mxUtils.extend(mxShapeSysMLNone,mxShape);mxShapeSysMLNone.prototype.cst={NONE:"mxgraph.sysml.none"};mxShapeSysMLNone.prototype.paintVertexShape=function(a,d,e,b,c){};mxCellRenderer.registerShape(mxShapeSysMLNone.prototype.cst.NONE,mxShapeSysMLNone);function mxShapeSysMLRect(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLRect,mxShape);mxShapeSysMLRect.prototype.cst={RECT:"mxgraph.sysml.rect"}; mxShapeSysMLRect.prototype.paintVertexShape=function(a,d,e,b,c){a.rect(d,e,b,c);a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeSysMLRect.prototype.cst.RECT,mxShapeSysMLRect);function mxShapeSysMLPortOne(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLPortOne,mxShape);mxShapeSysMLPortOne.prototype.cst={PORT1:"mxgraph.sysml.port1"}; -mxShapeSysMLPortOne.prototype.paintVertexShape=function(a,d,e,b,c){a.rect(d+.05*b,e,b-.1*b,c);a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeSysMLPortOne.prototype.cst.PORT1,mxShapeSysMLPortOne);function mxShapeSysMLPortTwo(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLPortTwo,mxShape);mxShapeSysMLPortTwo.prototype.cst={PORT2:"mxgraph.sysml.port2"}; -mxShapeSysMLPortTwo.prototype.paintVertexShape=function(a,d,e,b,c){a.rect(d+.05*b,e,.8*b,c);a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeSysMLPortTwo.prototype.cst.PORT2,mxShapeSysMLPortTwo);function mxShapeSysMLPortThree(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLPortThree,mxShape);mxShapeSysMLPortThree.prototype.cst={PORT3:"mxgraph.sysml.port3"}; +mxShapeSysMLPortOne.prototype.paintVertexShape=function(a,d,e,b,c){a.rect(d+.05*b,e,b-.1*b,c);a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeSysMLPortOne.prototype.cst.PORT1,mxShapeSysMLPortOne); +mxShapeSysMLPortOne.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(.05,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.95,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.95,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(.95,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(.95, +1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.05,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.05,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(.05,.25),!1));return a};function mxShapeSysMLPortTwo(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1} +mxUtils.extend(mxShapeSysMLPortTwo,mxShape);mxShapeSysMLPortTwo.prototype.cst={PORT2:"mxgraph.sysml.port2"};mxShapeSysMLPortTwo.prototype.paintVertexShape=function(a,d,e,b,c){a.rect(d+.05*b,e,.8*b,c);a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeSysMLPortTwo.prototype.cst.PORT2,mxShapeSysMLPortTwo); +mxShapeSysMLPortTwo.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(.05,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.95,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.95,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(.95,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(.95, +1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.05,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.05,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(.05,.25),!1));return a};function mxShapeSysMLPortThree(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1} +mxUtils.extend(mxShapeSysMLPortThree,mxShape);mxShapeSysMLPortThree.prototype.cst={PORT3:"mxgraph.sysml.port3"}; mxShapeSysMLPortThree.prototype.paintVertexShape=function(a,d,e,b,c){a.rect(d+.07*b,e,.86*b,c);a.fillAndStroke();a.rect(d,e+.125*c,.14*b,.25*c);a.fillAndStroke();a.rect(d,e+.625*c,.14*b,.25*c);a.fillAndStroke();a.rect(d+.86*b,e+.375*c,.14*b,.25*c);a.fillAndStroke();this.drawIn(a,d+.01*b,e+.2*c,.11*b,.1*c);this.drawOut(a,d+.02*b,e+.7*c,.11*b,.1*c);this.drawInOut(a,d+.88*b,e+.45*c,.1*b,.1*c)}; mxShapeSysMLPortThree.prototype.drawIn=function(a,d,e,b,c){a.begin();a.moveTo(d,e+.5*c);a.lineTo(d+b,e+.5*c);a.moveTo(d+.75*b,e);a.lineTo(d+b,e+.5*c);a.lineTo(d+.75*b,e+c);a.stroke()};mxShapeSysMLPortThree.prototype.drawOut=function(a,d,e,b,c){a.begin();a.moveTo(d,e+.5*c);a.lineTo(d+b,e+.5*c);a.moveTo(d+.25*b,e);a.lineTo(d,e+.5*c);a.lineTo(d+.25*b,e+c);a.stroke()}; mxShapeSysMLPortThree.prototype.drawInOut=function(a,d,e,b,c){a.begin();a.moveTo(d+.75*b,e);a.lineTo(d+b,e+.5*c);a.lineTo(d+.75*b,e+c);a.moveTo(d+.25*b,e);a.lineTo(d,e+.5*c);a.lineTo(d+.25*b,e+c);a.stroke()};mxCellRenderer.registerShape(mxShapeSysMLPortThree.prototype.cst.PORT3,mxShapeSysMLPortThree);function mxShapeSysMLPortFour(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLPortFour,mxShape); @@ -2312,54 +2479,94 @@ mxShapeSysMLParametricDiagram.prototype.cst={PARAM_DGM:"mxgraph.sysml.paramDgm"} function mxShapeSysMLConstraintProperty(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLConstraintProperty,mxShape);mxShapeSysMLConstraintProperty.prototype.cst={CONS_PROP:"mxgraph.sysml.consProp"};mxShapeSysMLConstraintProperty.prototype.paintVertexShape=function(a,d,e,b,c){a.rect(d,e,b,c);a.fillAndStroke();a.setShadow(!1);60<c&&(a.rect(d,e+50,20,20),a.stroke(),a.rect(d,e+80,20,20),a.stroke())}; mxCellRenderer.registerShape(mxShapeSysMLConstraintProperty.prototype.cst.CONS_PROP,mxShapeSysMLConstraintProperty);function mxShapeSysMLCallBehaviorAction(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLCallBehaviorAction,mxShape);mxShapeSysMLCallBehaviorAction.prototype.cst={CALL_BEH_ACT:"mxgraph.sysml.callBehAct"}; mxShapeSysMLCallBehaviorAction.prototype.paintVertexShape=function(a,d,e,b,c){a.roundrect(d,e,b,c,10,10);a.fillAndStroke();30<c&&40<b&&(a.setShadow(!1),this.drawSymb(a,d+b-30,e+c-30,20,20))};mxShapeSysMLCallBehaviorAction.prototype.drawSymb=function(a,d,e,b,c){a.begin();a.moveTo(d+.5*b,e);a.lineTo(d+.5*b,e+c);a.moveTo(d,e+c);a.lineTo(d,e+.5*c);a.lineTo(d+b,e+.5*c);a.lineTo(d+b,e+c);a.stroke()};mxCellRenderer.registerShape(mxShapeSysMLCallBehaviorAction.prototype.cst.CALL_BEH_ACT,mxShapeSysMLCallBehaviorAction); -function mxShapeSysMLAcceptEventAction(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLAcceptEventAction,mxShape);mxShapeSysMLAcceptEventAction.prototype.cst={ACC_EVENT:"mxgraph.sysml.accEvent"};mxShapeSysMLAcceptEventAction.prototype.paintVertexShape=function(a,d,e,b,c){a.begin();a.moveTo(d,e);a.lineTo(d+b,e);a.lineTo(d+b,e+c);a.lineTo(d,e+c);a.lineTo(d+.3*c,e+.5*c);a.close();a.fillAndStroke()}; -mxCellRenderer.registerShape(mxShapeSysMLAcceptEventAction.prototype.cst.ACC_EVENT,mxShapeSysMLAcceptEventAction);function mxShapeSysMLTimeEvent(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLTimeEvent,mxShape);mxShapeSysMLTimeEvent.prototype.cst={TIME_EVENT:"mxgraph.sysml.timeEvent"}; -mxShapeSysMLTimeEvent.prototype.paintVertexShape=function(a,d,e,b,c){a.begin();a.moveTo(d,e);a.lineTo(d+b,e);a.lineTo(d,e+c);a.lineTo(d+b,e+c);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeSysMLTimeEvent.prototype.cst.TIME_EVENT,mxShapeSysMLTimeEvent);function mxShapeSysMLSendSignalAction(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLSendSignalAction,mxShape); -mxShapeSysMLSendSignalAction.prototype.cst={SEND_SIG_ACT:"mxgraph.sysml.sendSigAct"};mxShapeSysMLSendSignalAction.prototype.paintVertexShape=function(a,d,e,b,c){a.begin();a.moveTo(d,e);a.lineTo(d+b-.3*c,e);a.lineTo(d+b,e+.5*c);a.lineTo(d+b-.3*c,e+c);a.lineTo(d,e+c);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeSysMLSendSignalAction.prototype.cst.SEND_SIG_ACT,mxShapeSysMLSendSignalAction); -function mxShapeSysMLActivityFinal(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLActivityFinal,mxShape);mxShapeSysMLActivityFinal.prototype.cst={ACT_FINAL:"mxgraph.sysml.actFinal"};mxShapeSysMLActivityFinal.prototype.paintVertexShape=function(a,d,e,b,c){a.ellipse(d,e,b,c);a.fillAndStroke();var f=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,"#000000");a.setFillColor(f);a.ellipse(d+5,e+5,b-10,c-10);a.fillAndStroke()}; -mxCellRenderer.registerShape(mxShapeSysMLActivityFinal.prototype.cst.ACT_FINAL,mxShapeSysMLActivityFinal);function mxShapeSysMLActivityParameterNode(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLActivityParameterNode,mxShape);mxShapeSysMLActivityParameterNode.prototype.cst={ACT_PARAM_NODE:"mxgraph.sysml.actParamNode"}; +mxShapeSysMLCallBehaviorAction.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,2.9,2.9));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,-2.9,2.9));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1)); +a.push(new mxConnectionConstraint(new mxPoint(1,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1,null,-2.9,-2.9));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,2.9,-2.9));a.push(new mxConnectionConstraint(new mxPoint(0,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(0, +.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.25),!1));return a};function mxShapeSysMLAcceptEventAction(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLAcceptEventAction,mxShape);mxShapeSysMLAcceptEventAction.prototype.cst={ACC_EVENT:"mxgraph.sysml.accEvent"}; +mxShapeSysMLAcceptEventAction.prototype.paintVertexShape=function(a,d,e,b,c){a.begin();a.moveTo(d,e);a.lineTo(d+b,e);a.lineTo(d+b,e+c);a.lineTo(d,e+c);a.lineTo(d+.3*c,e+.5*c);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeSysMLAcceptEventAction.prototype.cst.ACC_EVENT,mxShapeSysMLAcceptEventAction); +mxShapeSysMLAcceptEventAction.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1, +.75),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,.3*e,0));return a}; +function mxShapeSysMLTimeEvent(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLTimeEvent,mxShape);mxShapeSysMLTimeEvent.prototype.cst={TIME_EVENT:"mxgraph.sysml.timeEvent"};mxShapeSysMLTimeEvent.prototype.paintVertexShape=function(a,d,e,b,c){a.begin();a.moveTo(d,e);a.lineTo(d+b,e);a.lineTo(d,e+c);a.lineTo(d+b,e+c);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeSysMLTimeEvent.prototype.cst.TIME_EVENT,mxShapeSysMLTimeEvent); +mxShapeSysMLTimeEvent.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,.5),!1));return a}; +function mxShapeSysMLSendSignalAction(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLSendSignalAction,mxShape);mxShapeSysMLSendSignalAction.prototype.cst={SEND_SIG_ACT:"mxgraph.sysml.sendSigAct"};mxShapeSysMLSendSignalAction.prototype.paintVertexShape=function(a,d,e,b,c){a.begin();a.moveTo(d,e);a.lineTo(d+b-.3*c,e);a.lineTo(d+b,e+.5*c);a.lineTo(d+b-.3*c,e+c);a.lineTo(d,e+c);a.close();a.fillAndStroke()}; +mxCellRenderer.registerShape(mxShapeSysMLSendSignalAction.prototype.cst.SEND_SIG_ACT,mxShapeSysMLSendSignalAction); +mxShapeSysMLSendSignalAction.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,.3*-e,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1,null,.3*-e,0));a.push(new mxConnectionConstraint(new mxPoint(.25, +1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.75),!1));return a};function mxShapeSysMLActivityFinal(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1} +mxUtils.extend(mxShapeSysMLActivityFinal,mxShape);mxShapeSysMLActivityFinal.prototype.cst={ACT_FINAL:"mxgraph.sysml.actFinal"};mxShapeSysMLActivityFinal.prototype.paintVertexShape=function(a,d,e,b,c){a.ellipse(d,e,b,c);a.fillAndStroke();var f=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,"#000000");a.setFillColor(f);a.ellipse(d+5,e+5,b-10,c-10);a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeSysMLActivityFinal.prototype.cst.ACT_FINAL,mxShapeSysMLActivityFinal); +mxShapeSysMLActivityFinal.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(.145,.145),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.855,.145),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.855,.855),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.145,.855),!1));a.push(new mxConnectionConstraint(new mxPoint(0, +.5),!1));return a};function mxShapeSysMLActivityParameterNode(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLActivityParameterNode,mxShape);mxShapeSysMLActivityParameterNode.prototype.cst={ACT_PARAM_NODE:"mxgraph.sysml.actParamNode"}; mxShapeSysMLActivityParameterNode.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.begin();d=Math.max(.35*b,70);e=Math.min(.65*b,b-10);a.begin();a.moveTo(d,c);a.lineTo(10,c);a.lineTo(10,0);a.lineTo(d,0);a.moveTo(e,c);a.lineTo(b-10,c);a.lineTo(b-10,0);a.lineTo(e,0);a.stroke();d=Math.min(50,b);20<d&&(a.begin(),a.moveTo(10,20),a.lineTo(d-10,20),a.lineTo(d,10),a.lineTo(d,0),a.lineTo(10,0),a.close(),a.fillAndStroke());a.rect(0,.35*c-10,20,20);a.fillAndStroke();a.rect(0,.65*c-10,20,20); -a.fillAndStroke();a.rect(b-20,.5*c-10,20,20);a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeSysMLActivityParameterNode.prototype.cst.ACT_PARAM_NODE,mxShapeSysMLActivityParameterNode);function mxShapeSysMLControlOperator(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLControlOperator,mxShape);mxShapeSysMLControlOperator.prototype.cst={CONT_OPER:"mxgraph.sysml.contOper"}; -mxShapeSysMLControlOperator.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,d,e,b,c);a.setShadow(!1);this.foreground(a,d,e,b,c)};mxShapeSysMLControlOperator.prototype.background=function(a,d,e,b,c){a.rect(0,0,b,c);a.fillAndStroke()};mxShapeSysMLControlOperator.prototype.foreground=function(a,d,e,b,c){d=Math.min(130,b);20<d&&(a.begin(),a.moveTo(0,20),a.lineTo(d-10,20),a.lineTo(d,10),a.lineTo(d,0),a.stroke())}; -mxCellRenderer.registerShape(mxShapeSysMLControlOperator.prototype.cst.CONT_OPER,mxShapeSysMLControlOperator);function mxShapeSysMLFlowFinal(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLFlowFinal,mxShape);mxShapeSysMLFlowFinal.prototype.cst={FLOW_FINAL:"mxgraph.sysml.flowFinal"}; -mxShapeSysMLFlowFinal.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.ellipse(0,0,b,c);a.fillAndStroke();a.setShadow(!1);a.begin();a.moveTo(.145*b,.145*c);a.lineTo(.855*b,.855*c);a.moveTo(.855*b,.145*c);a.lineTo(.145*b,.855*c);a.stroke()};mxCellRenderer.registerShape(mxShapeSysMLFlowFinal.prototype.cst.FLOW_FINAL,mxShapeSysMLFlowFinal);function mxShapeSysMLIsControl(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1} -mxUtils.extend(mxShapeSysMLIsControl,mxShape);mxShapeSysMLIsControl.prototype.cst={IS_CONTROL:"mxgraph.sysml.isControl"};mxShapeSysMLIsControl.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.rect(0,.5*c-10,10,20);a.fillAndStroke();a.roundrect(10,0,b-20,c,10,10);a.fillAndStroke();a.rect(b-10,.5*c-10,10,20);a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeSysMLIsControl.prototype.cst.IS_CONTROL,mxShapeSysMLIsControl); -function mxShapeSysMLIsStream(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLIsStream,mxShape);mxShapeSysMLIsStream.prototype.cst={IS_STREAM:"mxgraph.sysml.isStream"}; +a.fillAndStroke();a.rect(b-20,.5*c-10,20,20);a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeSysMLActivityParameterNode.prototype.cst.ACT_PARAM_NODE,mxShapeSysMLActivityParameterNode);mxShapeSysMLActivityParameterNode.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,.35),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.65),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));return a}; +function mxShapeSysMLControlOperator(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLControlOperator,mxShape);mxShapeSysMLControlOperator.prototype.cst={CONT_OPER:"mxgraph.sysml.contOper"};mxShapeSysMLControlOperator.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,d,e,b,c);a.setShadow(!1);this.foreground(a,d,e,b,c)}; +mxShapeSysMLControlOperator.prototype.background=function(a,d,e,b,c){a.rect(0,0,b,c);a.fillAndStroke()};mxShapeSysMLControlOperator.prototype.foreground=function(a,d,e,b,c){d=Math.min(130,b);20<d&&(a.begin(),a.moveTo(0,20),a.lineTo(d-10,20),a.lineTo(d,10),a.lineTo(d,0),a.stroke())};mxCellRenderer.registerShape(mxShapeSysMLControlOperator.prototype.cst.CONT_OPER,mxShapeSysMLControlOperator); +function mxShapeSysMLFlowFinal(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLFlowFinal,mxShape);mxShapeSysMLFlowFinal.prototype.cst={FLOW_FINAL:"mxgraph.sysml.flowFinal"};mxShapeSysMLFlowFinal.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.ellipse(0,0,b,c);a.fillAndStroke();a.setShadow(!1);a.begin();a.moveTo(.145*b,.145*c);a.lineTo(.855*b,.855*c);a.moveTo(.855*b,.145*c);a.lineTo(.145*b,.855*c);a.stroke()}; +mxCellRenderer.registerShape(mxShapeSysMLFlowFinal.prototype.cst.FLOW_FINAL,mxShapeSysMLFlowFinal); +mxShapeSysMLFlowFinal.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(.145,.145),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.855,.145),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.855,.855),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.145,.855),!1));a.push(new mxConnectionConstraint(new mxPoint(0, +.5),!1));return a};function mxShapeSysMLIsControl(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLIsControl,mxShape);mxShapeSysMLIsControl.prototype.cst={IS_CONTROL:"mxgraph.sysml.isControl"};mxShapeSysMLIsControl.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.rect(0,.5*c-10,10,20);a.fillAndStroke();a.roundrect(10,0,b-20,c,10,10);a.fillAndStroke();a.rect(b-10,.5*c-10,10,20);a.fillAndStroke()}; +mxCellRenderer.registerShape(mxShapeSysMLIsControl.prototype.cst.IS_CONTROL,mxShapeSysMLIsControl);mxShapeSysMLIsControl.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));return a};function mxShapeSysMLIsStream(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLIsStream,mxShape);mxShapeSysMLIsStream.prototype.cst={IS_STREAM:"mxgraph.sysml.isStream"}; mxShapeSysMLIsStream.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,"#000000");e=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,"#ffffff");a.setFillColor(d);a.rect(0,.5*c-10,10,20);a.fillAndStroke();a.setFillColor(e);a.roundrect(10,0,b-20,c,10,10);a.fillAndStroke();a.setFillColor(d);a.rect(b-10,.5*c-10,10,20);a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeSysMLIsStream.prototype.cst.IS_STREAM,mxShapeSysMLIsStream); -function mxShapeSysMLIsActStream(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLIsActStream,mxShape);mxShapeSysMLIsActStream.prototype.cst={IS_ACT_STREAM:"mxgraph.sysml.isActStream"}; +mxShapeSysMLIsStream.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));return a};function mxShapeSysMLIsActStream(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLIsActStream,mxShape);mxShapeSysMLIsActStream.prototype.cst={IS_ACT_STREAM:"mxgraph.sysml.isActStream"}; mxShapeSysMLIsActStream.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.begin();a.rect(0,0,b-10,c);a.fillAndStroke();d=Math.min(40,b);20<d&&(a.begin(),a.moveTo(0,20),a.lineTo(d-10,20),a.lineTo(d,10),a.lineTo(d,0),a.lineTo(0,0),a.close(),a.fillAndStroke());a.rect(b-20,.5*c-10,20,20);a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeSysMLIsActStream.prototype.cst.IS_ACT_STREAM,mxShapeSysMLIsActStream); -function mxShapeSysMLParameterSet(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLParameterSet,mxShape);mxShapeSysMLParameterSet.prototype.cst={PARAM_SET:"mxgraph.sysml.paramSet"}; -mxShapeSysMLParameterSet.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.rect(0,.5*c-28,10,56);a.fillAndStroke();a.roundrect(10,0,b-20,c,10,10);a.fillAndStroke();a.rect(b-10,.5*c-28,10,56);a.fillAndStroke();a.setShadow(!1);a.rect(4,.5*c-24,6,20);a.fillAndStroke();a.rect(4,.5*c+4,6,20);a.fillAndStroke();a.rect(b-10,.5*c-24,6,20);a.fillAndStroke();a.rect(b-10,.5*c+4,6,20);a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeSysMLParameterSet.prototype.cst.PARAM_SET,mxShapeSysMLParameterSet); -function mxShapeSysMLParameterActivitySet(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLParameterActivitySet,mxShape);mxShapeSysMLParameterActivitySet.prototype.cst={PARAM_ACT_SET:"mxgraph.sysml.paramActSet"}; +mxShapeSysMLIsActStream.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));return a};function mxShapeSysMLParameterSet(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLParameterSet,mxShape); +mxShapeSysMLParameterSet.prototype.cst={PARAM_SET:"mxgraph.sysml.paramSet"};mxShapeSysMLParameterSet.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.rect(0,.5*c-28,10,56);a.fillAndStroke();a.roundrect(10,0,b-20,c,10,10);a.fillAndStroke();a.rect(b-10,.5*c-28,10,56);a.fillAndStroke();a.setShadow(!1);a.rect(4,.5*c-24,6,20);a.fillAndStroke();a.rect(4,.5*c+4,6,20);a.fillAndStroke();a.rect(b-10,.5*c-24,6,20);a.fillAndStroke();a.rect(b-10,.5*c+4,6,20);a.fillAndStroke()}; +mxCellRenderer.registerShape(mxShapeSysMLParameterSet.prototype.cst.PARAM_SET,mxShapeSysMLParameterSet); +mxShapeSysMLParameterSet.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,0,-14));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,0,14));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null,0,-14));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null,0,14));a.push(new mxConnectionConstraint(new mxPoint(.25, +0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return a};function mxShapeSysMLParameterActivitySet(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLParameterActivitySet,mxShape); +mxShapeSysMLParameterActivitySet.prototype.cst={PARAM_ACT_SET:"mxgraph.sysml.paramActSet"}; mxShapeSysMLParameterActivitySet.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.begin();a.rect(10,0,b-20,c);a.fillAndStroke();d=Math.min(50,b);20<d&&(a.begin(),a.moveTo(10,20),a.lineTo(d-10,20),a.lineTo(d,10),a.lineTo(d,0),a.lineTo(10,0),a.close(),a.fillAndStroke());a.setShadow(!1);70<c&&(a.rect(0,.5*c-28,15,56),a.fillAndStroke(),a.rect(4,.5*c-24,15,20),a.fillAndStroke(),a.rect(4,.5*c+4,15,20),a.fillAndStroke(),a.rect(b-15,.5*c-28,15,56),a.fillAndStroke(),a.rect(b-19,.5*c-24,15, -20),a.fillAndStroke(),a.rect(b-19,.5*c+4,15,20),a.fillAndStroke())};mxCellRenderer.registerShape(mxShapeSysMLParameterActivitySet.prototype.cst.PARAM_ACT_SET,mxShapeSysMLParameterActivitySet);function mxShapeSysMLProbability(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLProbability,mxShape);mxShapeSysMLProbability.prototype.cst={PROBABILITY:"mxgraph.sysml.probability"}; -mxShapeSysMLProbability.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.roundrect(0,0,b-10,c,10,10);a.fillAndStroke();a.rect(b-10,.25*c-28,10,56);a.fillAndStroke();a.rect(b-10,.75*c-28,10,56);a.fillAndStroke();a.setShadow(!1);a.rect(b-10,.25*c-24,6,20);a.fillAndStroke();a.rect(b-10,.25*c+4,6,20);a.fillAndStroke();a.rect(b-10,.75*c-24,6,20);a.fillAndStroke();a.rect(b-10,.75*c+4,6,20);a.fillAndStroke()}; -mxCellRenderer.registerShape(mxShapeSysMLProbability.prototype.cst.PROBABILITY,mxShapeSysMLProbability);function mxShapeSysMLActivityProbability(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLActivityProbability,mxShape);mxShapeSysMLActivityProbability.prototype.cst={ACT_PROB:"mxgraph.sysml.actProb"}; +20),a.fillAndStroke(),a.rect(b-19,.5*c+4,15,20),a.fillAndStroke())};mxCellRenderer.registerShape(mxShapeSysMLParameterActivitySet.prototype.cst.PARAM_ACT_SET,mxShapeSysMLParameterActivitySet); +mxShapeSysMLParameterActivitySet.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,0,-14));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,0,14));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null,0,-14));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null,0,14));a.push(new mxConnectionConstraint(new mxPoint(.25, +0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return a};function mxShapeSysMLProbability(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLProbability,mxShape); +mxShapeSysMLProbability.prototype.cst={PROBABILITY:"mxgraph.sysml.probability"};mxShapeSysMLProbability.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.roundrect(0,0,b-10,c,10,10);a.fillAndStroke();a.rect(b-10,.25*c-28,10,56);a.fillAndStroke();a.rect(b-10,.75*c-28,10,56);a.fillAndStroke();a.setShadow(!1);a.rect(b-10,.25*c-24,6,20);a.fillAndStroke();a.rect(b-10,.25*c+4,6,20);a.fillAndStroke();a.rect(b-10,.75*c-24,6,20);a.fillAndStroke();a.rect(b-10,.75*c+4,6,20);a.fillAndStroke()}; +mxCellRenderer.registerShape(mxShapeSysMLProbability.prototype.cst.PROBABILITY,mxShapeSysMLProbability); +mxShapeSysMLProbability.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1,null,0,-14));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1,null,0,14));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.75),!1,null,0, +-14));a.push(new mxConnectionConstraint(new mxPoint(1,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.75),!1,null,0,14));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1,null,-5,0));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1,null,-5,0));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1,null,-5,0));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1,null,-5,0));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1,null,-5,0));a.push(new mxConnectionConstraint(new mxPoint(.75, +1),!1,null,-5,0));return a};function mxShapeSysMLActivityProbability(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLActivityProbability,mxShape);mxShapeSysMLActivityProbability.prototype.cst={ACT_PROB:"mxgraph.sysml.actProb"}; mxShapeSysMLActivityProbability.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.begin();a.rect(0,0,b-10,c);a.fillAndStroke();d=Math.min(40,b);20<d&&(a.begin(),a.moveTo(0,20),a.lineTo(d-10,20),a.lineTo(d,10),a.lineTo(d,0),a.lineTo(0,0),a.close(),a.fillAndStroke());a.setShadow(!1);70<c&&(a.rect(b-15,.25*c-28,15,56),a.fillAndStroke(),a.rect(b-19,.25*c-24,15,20),a.fillAndStroke(),a.rect(b-19,.25*c+4,15,20),a.fillAndStroke(),a.rect(b-15,.75*c-28,15,56),a.fillAndStroke(),a.rect(b-19,.75* -c-24,15,20),a.fillAndStroke(),a.rect(b-19,.75*c+4,15,20),a.fillAndStroke())};mxCellRenderer.registerShape(mxShapeSysMLActivityProbability.prototype.cst.ACT_PROB,mxShapeSysMLActivityProbability);function mxShapeSysMLObjectFlowRight(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLObjectFlowRight,mxShape);mxShapeSysMLObjectFlowRight.prototype.cst={OBJ_FLOW_R:"mxgraph.sysml.objFlowR"}; -mxShapeSysMLObjectFlowRight.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.roundrect(0,0,b-10,c,10,10);a.fillAndStroke();a.rect(b-10,.5*c-10,10,20);a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeSysMLObjectFlowRight.prototype.cst.OBJ_FLOW_R,mxShapeSysMLObjectFlowRight);function mxShapeSysMLObjectFlowLeft(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLObjectFlowLeft,mxShape); -mxShapeSysMLObjectFlowLeft.prototype.cst={OBJ_FLOW_L:"mxgraph.sysml.objFlowL"};mxShapeSysMLObjectFlowLeft.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.rect(0,.5*c-10,10,20);a.fillAndStroke();a.roundrect(10,0,b-10,c,10,10);a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeSysMLObjectFlowLeft.prototype.cst.OBJ_FLOW_L,mxShapeSysMLObjectFlowLeft); +c-24,15,20),a.fillAndStroke(),a.rect(b-19,.75*c+4,15,20),a.fillAndStroke())};mxCellRenderer.registerShape(mxShapeSysMLActivityProbability.prototype.cst.ACT_PROB,mxShapeSysMLActivityProbability); +mxShapeSysMLActivityProbability.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1,null,0,-14));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1,null,0,14));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.75),!1, +null,0,-14));a.push(new mxConnectionConstraint(new mxPoint(1,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.75),!1,null,0,14));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1,null,-5,0));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1,null,-5,0));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1,null,-5,0));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1,null,-5,0));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1,null,-5,0));a.push(new mxConnectionConstraint(new mxPoint(.75, +1),!1,null,-5,0));return a};function mxShapeSysMLObjectFlowRight(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLObjectFlowRight,mxShape);mxShapeSysMLObjectFlowRight.prototype.cst={OBJ_FLOW_R:"mxgraph.sysml.objFlowR"};mxShapeSysMLObjectFlowRight.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.roundrect(0,0,b-10,c,10,10);a.fillAndStroke();a.rect(b-10,.5*c-10,10,20);a.fillAndStroke()}; +mxCellRenderer.registerShape(mxShapeSysMLObjectFlowRight.prototype.cst.OBJ_FLOW_R,mxShapeSysMLObjectFlowRight);mxShapeSysMLObjectFlowRight.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1,null,-5,0));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1,null,-5,0));return a}; +function mxShapeSysMLObjectFlowLeft(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLObjectFlowLeft,mxShape);mxShapeSysMLObjectFlowLeft.prototype.cst={OBJ_FLOW_L:"mxgraph.sysml.objFlowL"};mxShapeSysMLObjectFlowLeft.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.rect(0,.5*c-10,10,20);a.fillAndStroke();a.roundrect(10,0,b-10,c,10,10);a.fillAndStroke()}; +mxCellRenderer.registerShape(mxShapeSysMLObjectFlowLeft.prototype.cst.OBJ_FLOW_L,mxShapeSysMLObjectFlowLeft);mxShapeSysMLObjectFlowLeft.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1,null,5,0));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1,null,5,0));return a}; function mxShapeSysMLActivityPartition(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLActivityPartition,mxShape);mxShapeSysMLActivityPartition.prototype.cst={ACT_PART:"mxgraph.sysml.actPart"};mxShapeSysMLActivityPartition.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.begin();a.moveTo(0,0);a.lineTo(0,c);a.moveTo(b,0);a.lineTo(b,c);a.stroke()}; mxCellRenderer.registerShape(mxShapeSysMLActivityPartition.prototype.cst.ACT_PART,mxShapeSysMLActivityPartition);function mxShapeSysMLContinuation(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLContinuation,mxShape);mxShapeSysMLContinuation.prototype.cst={CONT:"mxgraph.sysml.cont"}; mxShapeSysMLContinuation.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);b>c?(d=.5*c,a.begin(),a.moveTo(b-d,0),a.arcTo(d,d,0,0,1,b-d,c),a.lineTo(d,c),a.arcTo(d,d,0,0,1,d,0)):(d=.5*b,a.begin(),a.moveTo(0,c-d),a.arcTo(d,d,0,0,0,b,c-d),a.lineTo(b,d),a.arcTo(d,d,0,0,0,0,d));a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeSysMLContinuation.prototype.cst.CONT,mxShapeSysMLContinuation); -function mxShapeSysMLCoregion(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLCoregion,mxShape);mxShapeSysMLCoregion.prototype.cst={COREGION:"mxgraph.sysml.coregion"};mxShapeSysMLCoregion.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.min(10,c);a.begin();a.moveTo(0,d);a.lineTo(0,0);a.lineTo(b,0);a.lineTo(b,d);a.moveTo(0,c-d);a.lineTo(0,c);a.lineTo(b,c);a.lineTo(b,c-d);a.stroke()}; -mxCellRenderer.registerShape(mxShapeSysMLCoregion.prototype.cst.COREGION,mxShapeSysMLCoregion);mxMarker.addMarker("sysMLx",function(a,d,e,b,c,f,g,h,k,l){var m=c*(g+k+1),n=f*(g+k+1);return function(){a.begin();a.moveTo(b.x-m/2-n/2,b.y-n/2+m/2);a.lineTo(b.x+m/2+n/2,b.y+n/2-m/2);a.moveTo(b.x+m/2-n/2,b.y+n/2+m/2);a.lineTo(b.x-m/2+n/2,b.y-n/2-m/2);a.stroke()}});function mxShapeSysMLDimension(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1} -mxUtils.extend(mxShapeSysMLDimension,mxShape);mxShapeSysMLDimension.prototype.cst={DIMENSION:"mxgraph.sysml.dimension"};mxShapeSysMLDimension.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,d,e,b,c)};mxShapeSysMLDimension.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(0,20);a.lineTo(b,20);a.moveTo(10,15);a.lineTo(0,20);a.lineTo(10,25);a.moveTo(b-10,15);a.lineTo(b,20);a.lineTo(b-10,25);a.moveTo(0,15);a.lineTo(0,c);a.moveTo(b,15);a.lineTo(b,c);a.stroke()}; -mxCellRenderer.registerShape(mxShapeSysMLDimension.prototype.cst.DIMENSION,mxShapeSysMLDimension);mxMarker.addMarker("sysMLLost",function(a,d,e,b,c,f,g,h,k,l){var m=c*(g+k+1),n=f*(g+k+1),p=g/2;return function(){a.begin();a.moveTo(b.x-1.5*m-n/2,b.y-1.5*n+m/2);a.lineTo(b.x-m/2,b.y-n/2);a.lineTo(b.x-1.5*m+n/2,b.y-1.5*n-m/2);a.stroke();a.ellipse(b.x-.5*m-p,b.y-.5*n-p,2*p,2*p);var c=mxUtils.getValue(d.style,mxConstants.STYLE_STROKECOLOR,"#000000");a.setFillColor(c);a.fillAndStroke()}}); +mxShapeSysMLContinuation.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));if(d>e){var b=.5*e;d>2*e&&(a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1)),a.push(new mxConnectionConstraint(new mxPoint(.75, +1),!1)))}else b=.5*d,e>2*d&&(a.push(new mxConnectionConstraint(new mxPoint(0,.25),!1)),a.push(new mxConnectionConstraint(new mxPoint(0,.75),!1)),a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1)),a.push(new mxConnectionConstraint(new mxPoint(1,.75),!1)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.29*b,.29*b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.29*b,.29*b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.29*b,e-.29*b));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,d-.29*b,e-.29*b));return a};function mxShapeSysMLCoregion(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLCoregion,mxShape);mxShapeSysMLCoregion.prototype.cst={COREGION:"mxgraph.sysml.coregion"}; +mxShapeSysMLCoregion.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.min(10,c);a.begin();a.moveTo(0,d);a.lineTo(0,0);a.lineTo(b,0);a.lineTo(b,d);a.moveTo(0,c-d);a.lineTo(0,c);a.lineTo(b,c);a.lineTo(b,c-d);a.stroke()};mxCellRenderer.registerShape(mxShapeSysMLCoregion.prototype.cst.COREGION,mxShapeSysMLCoregion); +mxMarker.addMarker("sysMLx",function(a,d,e,b,c,f,g,h,k,l){var m=c*(g+k+1),n=f*(g+k+1);return function(){a.begin();a.moveTo(b.x-m/2-n/2,b.y-n/2+m/2);a.lineTo(b.x+m/2+n/2,b.y+n/2-m/2);a.moveTo(b.x+m/2-n/2,b.y+n/2+m/2);a.lineTo(b.x-m/2+n/2,b.y-n/2-m/2);a.stroke()}});function mxShapeSysMLDimension(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLDimension,mxShape);mxShapeSysMLDimension.prototype.cst={DIMENSION:"mxgraph.sysml.dimension"}; +mxShapeSysMLDimension.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,d,e,b,c)};mxShapeSysMLDimension.prototype.background=function(a,d,e,b,c){a.begin();a.moveTo(0,20);a.lineTo(b,20);a.moveTo(10,15);a.lineTo(0,20);a.lineTo(10,25);a.moveTo(b-10,15);a.lineTo(b,20);a.lineTo(b-10,25);a.moveTo(0,15);a.lineTo(0,c);a.moveTo(b,15);a.lineTo(b,c);a.stroke()};mxCellRenderer.registerShape(mxShapeSysMLDimension.prototype.cst.DIMENSION,mxShapeSysMLDimension); +mxMarker.addMarker("sysMLLost",function(a,d,e,b,c,f,g,h,k,l){var m=c*(g+k+1),n=f*(g+k+1),p=g/2;return function(){a.begin();a.moveTo(b.x-1.5*m-n/2,b.y-1.5*n+m/2);a.lineTo(b.x-m/2,b.y-n/2);a.lineTo(b.x-1.5*m+n/2,b.y-1.5*n-m/2);a.stroke();a.ellipse(b.x-.5*m-p,b.y-.5*n-p,2*p,2*p);var c=mxUtils.getValue(d.style,mxConstants.STYLE_STROKECOLOR,"#000000");a.setFillColor(c);a.fillAndStroke()}}); mxMarker.addMarker("sysMLFound",function(a,d,e,b,c,f,g,h,k,l){var m=c*(g+k+1),n=f*(g+k+1),p=g/2;return function(){a.ellipse(b.x-.5*m-p,b.y-.5*n-p,2*p,2*p);var c=mxUtils.getValue(d.style,mxConstants.STYLE_STROKECOLOR,"#000000");a.setFillColor(c);a.fillAndStroke()}});function mxShapeSysMLCompositeState(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLCompositeState,mxShape);mxShapeSysMLCompositeState.prototype.cst={COMP_STATE:"mxgraph.sysml.compState"}; mxShapeSysMLCompositeState.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,d,e,b,c)};mxShapeSysMLCompositeState.prototype.background=function(a,d,e,b,c){a.roundrect(0,20,b,c-20,10,10);a.fillAndStroke();a.rect(15,0,110,20);a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeSysMLCompositeState.prototype.cst.COMP_STATE,mxShapeSysMLCompositeState); +mxShapeSysMLCompositeState.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,2.9,22.9));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-2.9,22.9));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,2.9,e-2.9));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-2.9,e-2.9));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(e-20)+20));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(e- +20)+20));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.75*(e-20)+20));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,.25*(e-20)+20));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,.5*(e-20)+20));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,.75*(e-20)+20));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,15,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,70,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,125,0));125<.75*d&&(a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1,null,0,20)),125<.5*d&&(a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1,null,0,20)),125<.25*d&&a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1,null,0,20))));return a}; function mxShapeSysMLRegion(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLRegion,mxShape);mxShapeSysMLRegion.prototype.cst={REGION:"mxgraph.sysml.region"};mxShapeSysMLRegion.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,d,e,b,c,20,50);a.setShadow(!1);this.foreground(a,d,e,b,c,20,50)}; mxShapeSysMLRegion.prototype.background=function(a,d,e,b,c,f,g){d=parseInt(mxUtils.getValue(this.style,mxConstants.STYLE_STROKEWIDTH,"1"));a.roundrect(0,f,b,c-f,10,10);a.fillAndStroke();a.setStrokeWidth(2*d);a.rect(15,0,g,f);a.fillAndStroke();a.setStrokeWidth(d)};mxShapeSysMLRegion.prototype.foreground=function(a,d,e,b,c,f,g){a.setDashed(!0);a.begin();a.moveTo(.5*b,f);a.lineTo(.5*b,c);a.stroke()};mxCellRenderer.registerShape(mxShapeSysMLRegion.prototype.cst.REGION,mxShapeSysMLRegion); +mxShapeSysMLRegion.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,2.9,22.9));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-2.9,22.9));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,2.9,e-2.9));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-2.9,e-2.9));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(e-20)+20));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(e-20)+20)); +a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.75*(e-20)+20));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,.25*(e-20)+20));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,.5*(e-20)+20));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,.75*(e-20)+20));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,15,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,40,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,65,0));65<.75*d&&(a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1,null,0,20)),65<.5*d&&(a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1,null,0,20)),65<.25*d&&a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1,null,0,20))));return a}; function mxShapeSysMLSimpleState(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLSimpleState,mxShape);mxShapeSysMLSimpleState.prototype.cst={SIMPLE_STATE:"mxgraph.sysml.simpleState"};mxShapeSysMLSimpleState.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,d,e,b,c);a.setShadow(!1)}; mxShapeSysMLSimpleState.prototype.background=function(a,d,e,b,c){parseInt(mxUtils.getValue(this.style,mxConstants.STYLE_STROKEWIDTH,"1"));a.roundrect(0,0,b,c,10,10);a.fillAndStroke()};mxShapeSysMLSimpleState.prototype.foreground=function(a,d,e,b,c){a.begin();a.moveTo(0,20);a.lineTo(b,20);a.stroke()};mxCellRenderer.registerShape(mxShapeSysMLSimpleState.prototype.cst.SIMPLE_STATE,mxShapeSysMLSimpleState); -function mxShapeSysMLStateMachine(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLStateMachine,mxShape);mxShapeSysMLStateMachine.prototype.cst={STATE_MACHINE:"mxgraph.sysml.stateMachine"};mxShapeSysMLStateMachine.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,d,e,b,c);a.setShadow(!1);this.foreground(a,d,e,b,c)}; +mxShapeSysMLSimpleState.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,2.9,2.9));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-2.9,2.9));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,2.9,e-2.9));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-2.9,e-2.9));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75, +1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.75),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0, +.75),!1));return a};function mxShapeSysMLStateMachine(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLStateMachine,mxShape);mxShapeSysMLStateMachine.prototype.cst={STATE_MACHINE:"mxgraph.sysml.stateMachine"};mxShapeSysMLStateMachine.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,d,e,b,c);a.setShadow(!1);this.foreground(a,d,e,b,c)}; mxShapeSysMLStateMachine.prototype.background=function(a,d,e,b,c){a.roundrect(0,0,b-10,c,10,10);a.fillAndStroke()};mxShapeSysMLStateMachine.prototype.foreground=function(a,d,e,b,c){d=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,"#000000");a.setFillColor(d);a.ellipse(b-20,.5*c-10,20,20);a.stroke();a.ellipse(b-17,.5*c-7,14,14);a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeSysMLStateMachine.prototype.cst.STATE_MACHINE,mxShapeSysMLStateMachine); -function mxShapeSysMLX(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLX,mxShape);mxShapeSysMLX.prototype.cst={X:"mxgraph.sysml.x"};mxShapeSysMLX.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.begin();a.moveTo(0,0);a.lineTo(b,c);a.moveTo(0,c);a.lineTo(b,0);a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeSysMLX.prototype.cst.X,mxShapeSysMLX); -function mxShapeSysMLSubmachineState(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLSubmachineState,mxShape);mxShapeSysMLSubmachineState.prototype.cst={SUBMACHINE_STATE:"mxgraph.sysml.submState"};mxShapeSysMLSubmachineState.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,d,e,b,c);a.setShadow(!1);this.foreground(a,d,e,b,c)}; -mxShapeSysMLSubmachineState.prototype.background=function(a,d,e,b,c){a.roundrect(0,0,b-10,c,10,10);a.fillAndStroke()};mxShapeSysMLSubmachineState.prototype.foreground=function(a,d,e,b,c){d=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,"#000000");a.setFillColor(d);a.ellipse(b-20,.5*c-10,20,20);a.stroke();a.ellipse(b-17,.5*c-7,14,14);a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeSysMLSubmachineState.prototype.cst.SUBMACHINE_STATE,mxShapeSysMLSubmachineState); -function mxShapeSysMLUseCaseExtensionPoints(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLUseCaseExtensionPoints,mxShape);mxShapeSysMLUseCaseExtensionPoints.prototype.cst={USE_CASE_EXT_PT:"mxgraph.sysml.useCaseExtPt"};mxShapeSysMLUseCaseExtensionPoints.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,d,e,b,c);a.setShadow(!1);this.foreground(a,d,e,b,c)}; +mxShapeSysMLStateMachine.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,2.9,2.9));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-12.9,2.9));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,2.9,e-2.9));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-12.9,e-2.9));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75, +1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1,null,-10,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.75),!1,null,-10,0));a.push(new mxConnectionConstraint(new mxPoint(0,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0, +.75),!1));return a};function mxShapeSysMLX(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLX,mxShape);mxShapeSysMLX.prototype.cst={X:"mxgraph.sysml.x"};mxShapeSysMLX.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.begin();a.moveTo(0,0);a.lineTo(b,c);a.moveTo(0,c);a.lineTo(b,0);a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeSysMLX.prototype.cst.X,mxShapeSysMLX); +mxShapeSysMLX.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));return a};function mxShapeSysMLSubmachineState(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLSubmachineState,mxShape); +mxShapeSysMLSubmachineState.prototype.cst={SUBMACHINE_STATE:"mxgraph.sysml.submState"};mxShapeSysMLSubmachineState.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,d,e,b,c);a.setShadow(!1);this.foreground(a,d,e,b,c)};mxShapeSysMLSubmachineState.prototype.background=function(a,d,e,b,c){a.roundrect(0,0,b-10,c,10,10);a.fillAndStroke()}; +mxShapeSysMLSubmachineState.prototype.foreground=function(a,d,e,b,c){d=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,"#000000");a.setFillColor(d);a.ellipse(b-20,.5*c-10,20,20);a.stroke();a.ellipse(b-17,.5*c-7,14,14);a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeSysMLSubmachineState.prototype.cst.SUBMACHINE_STATE,mxShapeSysMLSubmachineState); +mxShapeSysMLSubmachineState.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,2.9,2.9));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-12.9,2.9));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,2.9,e-2.9));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-12.9,e-2.9));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75, +1),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.25),!1,null,-10,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.75),!1,null,-10,0));a.push(new mxConnectionConstraint(new mxPoint(0,.25),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0, +.75),!1));return a};function mxShapeSysMLUseCaseExtensionPoints(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeSysMLUseCaseExtensionPoints,mxShape);mxShapeSysMLUseCaseExtensionPoints.prototype.cst={USE_CASE_EXT_PT:"mxgraph.sysml.useCaseExtPt"};mxShapeSysMLUseCaseExtensionPoints.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,d,e,b,c);a.setShadow(!1);this.foreground(a,d,e,b,c)}; mxShapeSysMLUseCaseExtensionPoints.prototype.background=function(a,d,e,b,c){a.ellipse(0,0,b,c);a.fillAndStroke()};mxShapeSysMLUseCaseExtensionPoints.prototype.foreground=function(a,d,e,b,c){a.begin();a.moveTo(.02*b,.35*c);a.lineTo(.98*b,.35*c);a.stroke()};mxCellRenderer.registerShape(mxShapeSysMLUseCaseExtensionPoints.prototype.cst.USE_CASE_EXT_PT,mxShapeSysMLUseCaseExtensionPoints); -function mxShapePidDiscInst(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapePidDiscInst,mxShape);mxShapePidDiscInst.prototype.cst={SHAPE_DISC_INST:"mxgraph.pid2inst.discInst",MOUNTING:"mounting",FIELD:"field",ROOM:"room",INACCESSIBLE:"inaccessible",LOCAL:"local"}; +mxShapeSysMLUseCaseExtensionPoints.prototype.getConstraints=function(a,d,e){a=[];a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.145,.145),!1));a.push(new mxConnectionConstraint(new mxPoint(.145,.855),!1));a.push(new mxConnectionConstraint(new mxPoint(.855,.855),!1));a.push(new mxConnectionConstraint(new mxPoint(.855, +.145),!1));return a};function mxShapePidDiscInst(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapePidDiscInst,mxShape);mxShapePidDiscInst.prototype.cst={SHAPE_DISC_INST:"mxgraph.pid2inst.discInst",MOUNTING:"mounting",FIELD:"field",ROOM:"room",INACCESSIBLE:"inaccessible",LOCAL:"local"}; mxShapePidDiscInst.prototype.customProperties=[{name:"mounting",dispName:"Mounting",type:"enum",defVal:"field",enumList:[{val:"field",dispName:"Field"},{val:"room",dispName:"Room"},{val:"inaccessible",dispName:"Inaccessible"},{val:"local",dispName:"Local"}]}];mxShapePidDiscInst.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,d,e,b,c);a.setShadow(!1);this.foreground(a,d,e,b,c)};mxShapePidDiscInst.prototype.background=function(a,d,e,b,c){a.ellipse(0,0,b,c);a.fillAndStroke()}; mxShapePidDiscInst.prototype.foreground=function(a,d,e,b,c){d=mxUtils.getValue(this.style,mxShapePidDiscInst.prototype.cst.MOUNTING,"field");d===mxShapePidDiscInst.prototype.cst.ROOM?(a.begin(),a.moveTo(0,.5*c),a.lineTo(b,.5*c),a.stroke()):d===mxShapePidDiscInst.prototype.cst.INACCESSIBLE?(a.setDashed(!0),a.begin(),a.moveTo(0,.5*c),a.lineTo(b,.5*c),a.stroke()):d===mxShapePidDiscInst.prototype.cst.LOCAL&&(a.begin(),a.moveTo(.005*b,.48*c),a.lineTo(.995*b,.48*c),a.moveTo(.005*b,.52*c),a.lineTo(.995* b,.52*c),a.stroke())};mxCellRenderer.registerShape(mxShapePidDiscInst.prototype.cst.SHAPE_DISC_INST,mxShapePidDiscInst); diff --git a/src/main/webapp/js/stencils.min.js b/src/main/webapp/js/stencils.min.js index 7ddfcf97..b475fce7 100644 --- a/src/main/webapp/js/stencils.min.js +++ b/src/main/webapp/js/stencils.min.js @@ -150,7 +150,7 @@ f['webicons.xml'] = '7L3bkt3IkSX6NfnY2+KGuDzO6Z55PmbzcJ5ZJEuiqVSUVUnTqvn6E45KhMd f['veeam/veeam.xml'] = '7L3dlh03jib6NL7dK/hPXvbpnrmb6VndZx5AZavKWuWSvCS5qnSe/hA7MwjEh7CVJhGZkkuzZnV3sVLYCBIEQPx8+C78+4cfX/38+sN3fnv76m+vvwv/8Z33f/vnX96/+vnH299fv371t/6fvwv/47vt3757/Nv+p68+/Pz6+48Pf/z3V+/fvPrTT6/p7/z248Nia7fmHlaY7L99//HN3x//7sPH9+/++vofb374+Pgv3rz98fX7Nx8f/tt/DCq18u/7jf9/+Pfv371925l48+5tZ/5/nv7Jn9+9f/2X9+9+efvDyX99/NOfXxEjv/lHx3/wt3f0Kds/HziN/XvzA++fcAfOePt1ut//8v6BsHug4+OthQfK//QPS9vjfwyH//jJqa3/9PgP6nbL+1IYDIdswN52ZM1vtxKO7KXtlvKRRR9u9cjhduRuM+CspFtsR+6GPDF3YunT8ZM+8SeloDavRAMWJT9+cJ3jkUUpW/u39X/YjmzKYw+LIvjTuw+vP/+Pwr/3v3nCven38M1PPz1c+KdQffjL79/99O59X3j43/fvefvu7esnfc7DL55Q+M6HP9//3xPJLGqFUMZhfhrHa6EUQr4lEJyQbqkdBUcsfXLw+0NuSryFdJSb4m9tgsmf3ryV3y5+/PEilZu3uDXyS/3YjwAXu+89XmyfbsXD5Y63Go9fz0srnx/zrR4Nwixd/PxUbzEfPz/X25aPn9+PdYPPD/6W0vHzo7/5fPz8rq6jBZu5KPWbus1B3da3KR3Z7H+1xSObnZYDFTx7ka5Qbb/mfvR15YHcVx/cqN/tVPkaxtFrr2r74c37/u/fvf/0OzwsJvnFu1jbbTveJ96NlYuKZPf/vEJTHtS1ZKc34ZuNNxJLFwsKZl9pZf20Y73lcqDscry5ukxZs9ztQFw3+THdPDK8e/qXSOdvnsvW98ofuemOjfcGts1t7ubT0bi1vqfgfzU/lnbj5rrd2vY98vtauYWd06DW1lit3Q+A52PJ++kPZ2GsMJ+Cp8Fnf0aCt+DyNuUrqsca87S/WdmBGvvpbsUBn/1xtCGfMd4KsDmWFh9saTgi4tw9vHjpWeeRT+ZpsCmuy+Az71u8dMFDd+p3h+lxyXXBSxay393IUI574EKXDBB+uTZ2wXm1C1u9NfDA6epuJvdU8jV4HdqZee1S5ECy6KjBDe0i2eDAeGmR0+xuETSKI7ceGOWlnU/JlB+sp6S31Fu8PCVTg08RaRmMBn36WxvM7//UhaGeBqsuzoUt4A60/pA5XoFu9qasp9qDvsEBnt+uX3oPT1C/eX5dDkUQ2CgMTeBHPCzg0mL0sF8v1Fje1ZuH85JrzKrHMB1tYUXR6g+2aqFZDnyN4FtT6tV361sgIEa2KSGz3aigfh1LqxJQbgUVC5l7eN662hWLcgGyUoL9tZ7Qsha3+y9L16ArFvDJ+sXINjor3NAQdAc1e1QFkaNgY/+CPq7WbR/KVr9VNlZLMDGYTf0glCWoHA4bd6i7dhA16/+Y70tQa6tmqws9Wi03fAq2sE75GQe+PPOfUb+QurII8xwYG8x2rx83lkJ06Lx1PZrDdyAF3aGEjXW17oGjF3hGjN+Wr7BicDNjN/nuSLkOPbB4Kl11b3AofamBgSJjVECCiAeHBqr2A0Uz3deygZmWLDwu+e5hGm1CRNHsm77fZRbNE3/dO2X7/Ilk9jW3/nB2W8JosUvOxlJ1+cU96Eu7ER97IMV8/6cp6bdVf+9humD6Plhcz7Qp8al+z5gubl06UW3Jq2epS+J2OL4daDNozfvv1C0yCOjUpHahG+do4vB3fYCB/LueQgkiHiDjQNLiUcF3q9twF/oOGsSfXMK4lnNtz0evykLixLZnrp2ShU1rVMogoyx0/aJiPqRzpu78HzCp8cPfX739/vUPffG/Xv/P/+7/683bj/1HX1Ey4uGPn5zfeIi3fctvHP/zaiJiK89B9qJN+JY2efG0icvKZPUXb5h57Gm/GnypmG9pPaVPLFdgubuqbj3V47Y8on87ZQqzrm9GK+qN4cclW4yFV35PcA2SA+eaGNivtLCHAUKrzukUPwUHw4zx1pubYQ9mA8xaIMqxxoWCl1PBFS3D5SgQzealQSwfCee014AsCVq/CIrhzeJp5LGy0m3b1PsQGNbvzq3dokXQlSLPEMuveQ89j5vRTVCBSJOjSA16ivSAg8I+4jStv71LxPK0+9aua8r+FIDUK0nvupDRc6J+B8Lr1rVkSJzYHPz6dRkjfmGDu36YKh2Fk9v4DcUqzSBcXDfOx7AWdhZPqFLHi2dkojk2Efj38VKQylLmoo3QLT+fwlRJmNrZCkcWRhhpVRbAEDsLUSDZVd5OXo8pEL9g2ygjsW7bunIISXFcTNRZwaPLuzgvcRw46bWfXbbJeVXOeQwnarth3UMYSRX2oSo7dp7XkgpQDhdl2QoHtbfrZ0ZuQ71CGCzfFwZxyq6b0BJQDG35MzXd5HejvhZKi8O7v5pwySap7ntV2/76GOF+Vuec9PAcZdivYdPVTlQxgYUp1Lhiw2vQ+Zk2osMcTRSbJbIamOGjmGrEDF9uJqVE+ryuktxZuhZpBKpWBxWf89zrU6ees+ryIVWk0rnVcZhYyPTga6j5xrp4PJUnCzh1tL+MKD4XNujSRk+Pasx5bE6VtpDfD4+Xuodn1itbsqpsceMVypUtfg/+yPapALval4aNZV903XKSnIMdojqRdafkhDDV6xjEz+hZWK8gXLn56NGkhL1vZV1qE6r+WlUwijgAdZoSv673NpWi3hap7anfRUZLuCVVM8OxHlb8OmxGxcsgtFW8jEZoYJsz0zrjtY3eIM54FZ39lKpTZM9HX5EoHXMqczypY7HGyVB7GxiT6jGcQCWSBk8namrz7rkoB6Nbr3fjOsqzu3HNsZM9Suuhg5PDuZDy5qcKTz57NtcRnt2Liw49bBbFDGdHcx1lP9kZ8/nDuY7y7G5YHHtJXNjyyE6sNqAA9zAFGt5ch08mewGgtFjwIDqc8w1eCz66PaeyZnaZgf2UslG5bnfL1Jupv5mVQ0f16JhezE4/5kPURUf9CeNtmGVPnA+s6QqpUm7gKNWNMzB7r3Nmydq9z7J/+NpxiYfQ8OuNqqs31ZNOayr0Qp0isAWhcRqMoQw2iGbw0tqbqWCBySxh9Rzt2siBxPrAjQrjOdrXMJgbdJ1lyHxWe6v8ZuE0HX6fnww2UDWC9tiDvuURNBcBMex4BRw84J4aDsGdhLW2eAsGNnBrmOepbS7No3tD2tA1HEIJqpWrMkCCgO5B6AMnGng42lP2O7O0B7IVaZGyRi0SkBS7KPQXZcDrkDZdd8xMHIqvPYpCFyNvoBQkCzv3fs5Aqm0QtMc2RJX19DGO5ODYwKw24W7e4Qkt1taCPoYOzddcjtq4wU1Uo/7l9duPHx5Wn1R2Sir1ft+/uqpT/v4vreh07OnFVGd34FtpqJFIdt/HHz2U7jgb1L71t0K+gm5WufEQDDIHyXM6yJAsmbajC5yTReVQZy7ac0stESZkLXL4iVvad0d2DqQDHRCk6/zuQS6VreRbfQ6yxZuUtJU9cns13VxMtoG7vS+mS+6wQZ2YgLG8lu7srbCIy3nuXX3czrQn85a8BEWXCsDW6XYRT/VZ6M7uw1ftzP9Kb9n77398QMz7f9+8fv87vPpvzWTfmsks9/bbi8FI2qkAAIqVm99Dr6vZGN3MQWsFszFFVM475IHroRh+YJQZNYtyICoB9McEGcEQmnSApzS6UrgSJO1ZJa5Z8RzBffynMXM5/w45m1Q8M5qUMGRVSjxLVyHuNsS5SVUBiafC6BAOf19+/Sja2r++7tu29KyLt3h0wxh6aO3rY1C1VfRjkIkjIF+I43ZZr3D48kaEtYuqS4CsNICBG+qK6s/pJ29xzYkythSVSfOD91zQHvfccWfquOgushJzvDYQB8e/9ZztC2ptLWrnENxtlvBJW6sDcW9c6zpaMk7KX+Xnet4WvQXFojGyc1ChYMtGxKj/xEh2VbdLUYA8/V3SQL6qSEU4xcEBP1MhR3abl0z6cuIZp6N0k9EfFeQJlU164FQAyXwS1tKiUXiL6llPUGcmhetb5rrvkY4syvJRN2qGrD5l+lXTXs4qr0/MTiFe4fu8cEZ53+AwVzWhtsG3YcYl4OmG2+Abf7KEEMI2LZrnoXBf61wT9hmzEXW4rxrzSgYdxyUT4uxPLl5Qa8umzErRrNvsoLCDap2EtcJ5FV41vgbHIhXUEoNIVTWwgkqsBubAKCXwc43rEMlzGCklM7uuo/odcPAy2Xalv+iY+4EpODzzMArnhWdeQNT7YSfYWMo6YdFRtqgvoKL5AImcScJnqMEONTS9g1TdVeAKI6e/149dqfA47SdlECMWWIFStJJBY+oJ5Th6LNZeFJsKxF9HeVbXwA2202EG6TIfhikaJSXFohj4/mR+NsreT/Wr6W4t3IzLCM/uhUlhdES4Fquj2RQ0xYWUTc7mbDMuI/ySh+4FQLLp0dArKZbnomxzNiebcRnhFz10BV9M/pjB6LQzyi6beAtBAXZdR5nqgC0a8Ktqx72Qso0fQt0PIKoXUk4mIUW/McLr9ZSNdqNtnHK5nLKN1HkGt7+asNHd9ilie/GFlG106L24JzwXZaPdCIE7Ii6nTP0mNlNm4J5cSNloN7Q+upCykU+g9f6FlI18Am1fL6RsJHXRM/jF5ZSNdiNVVelzHeXrfNxZyl91iV63/UVX6P3yw5t3faUz8vjXT6rPK/7xVnzx5XkVyzN5GxYj4kNe93jwho2HG06QE0fwiTPeG6SoCNR23a+8ooAwRTTuFlSHMAnX2gIoWdOdPvtv5YM2tzE5hKLrPoFJMUnaGI9sr506GYJeVeK4bKobui85uJMMMrBY4lXVkNi+FJHNppJIueKUpFxUi2pfsihHSGwxR7IvjsE7I9kX1UB56m9CiK/GWaP9H46BPYtsMgODTZEA5iPPWCtZFK5jdDgXMlQbzArKc6gD90Ux2eDAZYqQE6eQj6ZRbzOmQjEpMDT8uFBQLdRXGlQLhcSeJkNKYGozGOE7pqST0H2XADBRLI0D3xjjYT8EhoqUcmniGQie+PpkzJULVbhfn+0GlVf9QmEBy7TCXA9E9z0D5Z1t6iGpvgwQPWiKMxa+ijHj+47peZG5KIcq73yvl+cil0Gda+cSLknWlyRHBSfYl2z0DVcrCoUzUHOEIUQ2ncK57o8y4LLfEZPqKfp9AK2IHNcfXAZOvvE/HELAooI1f3EUg9lXZIczwcQyyugUhGRXQh7sNY1DtFCMtAPIpugk4MJxVN8anTU0NTmPuLSxMQjb03VgAybF0thLr7V34W4Hob0tivAlT+xI4pBVoQod3xVURTwHVKqiFyqVp0E3x8dbNnLEOmWcU9+FPWDZXePJm24wgJhcYfy7sWV+DqVeFQc2NUqcloLmEryH7BVWUNeVHlyxbrwtOmAIKMzDXgYFCi3xhFj+cMKv8Jek/rbRi1ivLMDS/4mKg5ncWFXzVc5Q9tp1l7fgko4XuAxNPxA2bpMS+hTiNKT2kc1gA2jWGcDJFDRYDbW3G+X7QjFmeBRGAd4o2DQyMqgXsxbMrAQzcqTsEzskOCabBNNEF+lK+s74vidiM7FQNeXRdDBu+aZv+azKNKjyExdlaCGLhi7GoV+kqzs6VYzUDSRIUTLLfpFDBqTGVbqsWaBAyJ8fImSDVim+1fOOwNcX9aju8trQ3xE9hwGXlvKIRUHbm9ANAZtlQp0rPVBKPapAX9AzkkNSNf6hqsamUFRfU6gmITSaFYXORlIhNLEkuEQzHprCZuwmY0oNwSGJnx9PVZNGZvmt/PnYyd2XAnqEGosvF/Ui6UtTHV0nsoSHFJSrH7wyvLmqUQYESQOGN+c5/WRgK1IcIUaRUjFoMFF0o8nEtoJZull2v+oMLSES7ZEimaL9+O5vrz7eJ3R/fP3h45u3f3n4kyciqfjHS/bFp2o12oe3QBS6BknFs+q6lOz0JnzLWRqJpeteQjiayXssywJJRIREHil3Yz9lgU8wSo6EnZ/zanWdDkqoG8+ktUqrDDOLvDNxRV3TqH/NmexyCWpMeUkWQIX36UWITectBvu6lhG+5I4wY1HkXhBNlMbPTE1z0kIHB0jZUQO6RbUHhmTShpkdQopSP7+ByAVVQ0lz39fpeqcgLLepUCG2njfu/xWELYbNe4Tl6BfdIB5SNzU1d0sGYxhrQDhYmpVhMebXK6CaLsU23r7De+cMBsJHjaSRgoUKyipERmBhBgNYsgI0JnVsYEJo3h9OdhlDJ5fOzmO3NnkABnvcr0eFQt1tpL4WxTh44HizwEumcejQ+hGqSdHytqFy43KfNa05wHW4s3EyNIN6npMNkvJLwXf5TbmThIQxFTZRoDq6XIj8Pqi1E0tjIgSzINBARK58xG7D1KNPAWE5jQa2adS/bkor5NMOiBcDSCaqAatibXFTqQYNcTAiD1PhcVFiwIo7YUzMucT6QNpWk/SD5EuMp8Jk0EEIx2iZTUWLD2IRVqXVICG0OWX4uxtngHVFLy8c6d5VkrPoaQssxOzIGTymuyjhM/0+bmndfhDwNsInbdFiUNgdRgRK1J0FShfpdHCxqturoVcJQwtAaRbPfwp8QAMQVWZbEI7oFBJMkYG8VXgxpVHIvUa3oFNBSt6gObrrhqNHGAdY3hJdGg9+dCkosWPgXrWC4bFocXIUAilIdgrHTwdA2vFuhGAzMipis2d3YA1ejhStakeZSHGu0UEThsgKjf+2iT+C/UhuD++tEfZo8rLJ61wMSh6KLVmoYiIMe1yyxdRaAtasxwtN8+QtDi8h5lOru/u3Jm5q1GLXHRZ73F/5iuHN4uwqFt3cAWwtAOAco82xf2vwPqegudMxzWYQh20BEdVpGOP2Qn61axEse4tToVv1IKlZlZO7wlMnuSaoqpLEwcJ4jnRiDWqCyixIkSrcEkyNB3BSxdr3ncIKjqpepJkdjwAra3z6bdhXHvroHAMKB70masyQzbq73ryhk7ddMSqZ8oJ5vZ9Yl1jZWfFKFMKafH7NxRJinKColfj7qzc/vfrTm5/efPzU/4t/f/f2w7vf1dj+9Y6T5P340oolnmuc5OwOfKuUMBLJpKLWo4l0KfmisuyUNbGo/6Mh6VCgTKVoYI4zA32PEt3A7yYu0cXOFV5aY7ObdRyMQ7PrIIwplkQlcQDjEcYICy55HeNc1tiUPO2d9ElV5ubGHQpjmrnqY3CNfc2AS4uH7nUfWh4SNvrQeIljwqq73XNb/NhNZ9TsnLm1lJud4cxTGwjUn7imFf2voIHMQ7Vw3BMDYHMkxSDHSM021YTuSXtVxsLkojD7+xmijFLHyAmIN16lsbToL0adZancIx3UkkQN0J1LiGaRtrmAon7QqL7tzrnPajehFD+JGRLc+IfjuqzaE0PRfdtdDBBzI3DPidM8cUd0hqtEOPgmV8lDJM6GblNDWd0k+JWGOcC3F+ksrUdxYgnZc8Q5yGp4DyGuWOlRYLNbgAoy2t9+OFOsZGXjq1P9Iry0aOOrmi/QSSObYmm8D53qFipR9UrlNheRVzZe8MQ2PoNiyo0Lh0RLF1ylPO7gp4BLiyZeJ6lzUq2+JIfYxC14YqPrgcvJ6cMWPdwR8ZOoKtTCLrrRviLsYsCGXs/O4y63otGLBQINTjGaD+h0Ry/7szuXRTOpxwPmyNVGbBWnelnUVWaORqiHLzcbRSzmCIlRn4R/CeaGlxatYr4Bl9GpK0LyBl6wZGnnckBAMpeTBVYnyDAZSjhSUnPy6IWGc8wKj8LZj1yVxWSbohgaCgROZYvqxMXSUIq6Hoafn+JBYdKTJ1naLUxTIV1Rhc/t6Wq2ZuY2ML483mIvm8OWvBZVPFcsDc2d2M9gM49D0LIR4Eo7GVrnFOIF4d2itdb9jS1xti3g0qLvkzSWSRy1LPKS40DRpAaK1sSd/buinbQ9X3PYmdzC/dL+atz5P99//+PrDx/fv/pIETn60ydPPY9faa9emdSlz9Grx6PpryV70SZMk/0W2DaSdooXIIa0DzsE1ZIUacopWbTH0OjLbEL3xCXDcEr3JXdQtuHfZgXWl8S0WQaZVEO6t90xXvZvB0/s4GKkjyYmIgKDADlmB7fAg5qXlo6fXpcwU+wywpdJ7DRli2KNXLCDwKVoUupKDWZHwvT8tKgIUyzXaNI1argXJrPZ3Q0MpG9zEKvYxFLUGDmeir5EuQv3UFvMs0GpN9UX+gY8N4vOzaCHlW02RZyEpnyUpv5gNJB/vcmuNIs2PRIM7AHgEqW1jiyvWoVLM6G8MeKf3GaD83MFy+rukmGgaKjzxGthtuDZTGdYhFubasNLziaSSYk6SO96NtmjcK2op7ngQIQJvcKJvuut9aP2yo+4j/FZrzJOImi4SFiF/8coZY7ODK+Ss6ebQP53rC0iBD6ovwFCctSYOuWk4jXKaqIsXdB1yk0N16WmB5Ocb43Kry4bl7UGtcR7G1g5j6S26KAdeIBubgtUHH5T1bY1KSRs6rREEDbqVExYkdIdcyzwEWtrhrapkZbXUe6WzKBFkLbN2xA+kzCM+Tc1jCCrSlnBgDi1qnDZqA3hEsV4EV2KtptUS1cGldXVYBIZHhL2VAuFsXUNLZxNhpfdq9FgysBVhKeNuQq1mHkJX3Vo3O+XlAPj/8+r7//6y8/f/e4BY36fhvDFR8I9d2HANiymukcbz9Pni/EJDOfF8bOF6yiniiw+E6Q2acJzCJFjQzbiO2ibxNRTCAMDGnSU6QnQiWFvGKjI7b+PLjzvJxzums7DR+tkhTxakqBLHKICdhZL/N0bfnYEMzLXGYQxSsR0nryUQNbqqn/LyzySWYZm5DqAR9/Romayq6ECLsjef21L1oZbq00wCJhkHsuyP/AmsYXUtM0E0RKeoDQ8VzXbzwnnn8uosYCXam4Mata1zFiEjQUSviXZiBHYatI5rsjOnj90AJmJlUV3MF63vmKBZ6jpDsT0tTSWgh28iu5V+zBJ1+awM3xksUDn85vCV7qKbjYB59X7cBXdyX0wwdPi+oShz6bAvdRHJkXW5KIoshb5/Q2xdi8iG4wEKD0LWW8BGKk34SKyJsBOehMuI2uRqDrZhEvIbiZOu9qEa8jOjW78zBZcRHRqStlnv/8KqtWmvgh24BqqZX85me7ANVTzXFv/Z3bgKqpTTfOKKrgcF5Gd9WS+6oRE29ECTxMS99jVf/75z2++J2Jh7x75g8PENAsExa8ZJWZyA77FbI0EMnl836dJ/BGIEVUFm2qCK0x01XxIg7FUyeMcFqL7QqW6NE/wuHk5Wgx62DD/RIVqy2Sr4766QdagHovoVrULLxSNoPZrkOdk5MwCznKKc0N6TrKhEeutuDE24MqoLmGsk9EWElTWOk4i6ariIjWqnBDJcSRt09NDBXTpXjzjB3qUgFLKJsn/pkArfBgMiHb8DQoY/RgbMBIeWQ2hd24uAKxqWKuqYSWAZmyxiWOo4ejH51zJ6OLH2QrbHBqqqgXVwAY5j9laAv4jAY9Oo5S4plpgfbQYtFMSYrbO0j3D68BS2KLArmrj3+c2f6yl89wtLvCOTFrTN4UqUivPjt651HgdMSmwq+R4Ps0ugcliWi79/NHobBZ10H0LvaI7NWnBxuhA4QRhz61H0Vzlm8N0LdCOMeGY6pwGVgUkgIBNdNf3gXC9jtuw7eA5qzKEZKcyDBajhz22RZch4Yt+OA6eGO0ttu+Gss2hL2j/Xs2zmAPeMrjXDScTVJN2HU03F4uJjyeeeNlL7WxfDrVNgv581YGxNuZJnETG/uv1zz+9+f4VBbC+e3pIrNN8sLtfX0isWaRjr4hejT29mOrsDnwLihmJZMRW8ziGmy5Wj8Hk46voMsTskjlxOLTShm5/y2EXlIk5cQWL/ujVuL6/IWNZDO2MgblWdCmlbxDn00gJkzhb665Of6bBEyZN+l3q+Qd0XbKYGhXLDSEbriHrLBy+GhHFYJauilQUhfTXlyLGAHiJ2/5Uyy6VLGFbQbJ4aMmfXxMui2LrijP+YrTAjtF0w9ycU9XwXeNzkJ3dBYMjoUFtKB4GSA5p4xDqtXR9tmgOVtswS9YGMjdBBX01qfdXdEkS1+kGr0JPF9Gd3QeLIJESvC4yBo4TN+pcTfdLu9gWh5JxjmetFi/jE7reonysKLAfG7oU6oWirGCxD50K7AOhMxgkJpyKNA43xZYuQf6va6LuROFluojurPxaXCaHc0qJGZMWK3B3ZumqnLNXHef0jAMUa7E0MI0rv67Zcx/1JLvnbjNNVfz8UJgGAWeX1bzai+jWgba8pKO0eE3S/aoD2bHl8VYRkexf3vz0w5u3f/nu6dHrRHO/7sf91YWvaQ/iuvZUgA4xz0HFKb3i1Lwt7/d85ShlCexNjwoEjyNDKN+UAc2HgloGkceA3vy9Ot2iuIHGSsB0gDrafgQMlVdoZIQ8NmolBxpZUohZYm2tVlaw8OhITPbQaNuyjT5mrrtibCqGymh6UGtUm5AqW3qewmRhXZPqPvWTD4iz4b8InEZYwwVqzwijDGuR0oAZEXAhIAQ2yB6BfuvIZKhOoTvHrajxJQrbI40yK1EtZfHylj/++FPeAi0t5oS4sv0CGGBPnRC+31mDA4stqKrLxDLLVXhdwzUQK+JhXPgBGLSpKq97P4nBKDLJAitvk9mTiQbFwC7QuxMwH9nMi10ITU2jI9uToGryXp+9vgmSA+XEfAGu279i+rV76RBJiN1qOwvgkiBM/V4jW8c1GPWnUanT2CXagdaPcVNohpGqcJfFUjKwa9mBKbuooZIGi+K2/2H5xRGMwUNjRNXYAC4L5g1w8dISnt8SnG4aAW8hhmSDLdZf1RXcxsYDFNhtdGpwYexehZpOHE7GE/c1C8AOycKj0Ldmg5LcoqrepsJgqN6Wp+CYg4T1+q3p27NNFmBagIsExwOFd1lOU5dZOZt5UxiqhCru4dbdwaMAoy0S3jHEc+7bhCOEmwkq1oGF/TFmU1bu6J0FLrfrXkEAr+BwEGMKiFfT+EJs3Fe770LKc5OULQBLooe639Dm+qsUwF+uA3KJlXZSo9GDZwTEsXNdznCcd+i3Fv2p0Nxe4r+W1xIs7PLjp4B41S60UaTOu5Cb6nCR5zDMfmOP3/MatuKE7hP7FzJeob+ZweiHfsYmKOH3RyMIECkWfPDH/gDY4Fly192wd+QLKN3dDb9BUdSBhX1n0tyDR49VHW6keE97bu4KJ0cxNFDmSvqhgTYWqyFCky9Jg9x6jjgL6O5oWOxcf3kn2LlYKqcoBlx14po24QCd+D8JnrXkqhlMozlwIDwNm12oash2LH50QoxdkAchrlFGFdQ0HDr9XXixOgCvaphCmey5xZCA04N4U+AwwWgOc2zohwA1br4db6+om1LJIViXoAMLu+IIk8UZuAtdu3mwYclvPMItnJyE8AQbhODjJhKQw4n2cw12JvO/8Oke+qPBxIQFtXFxH9j0Ww938n9QeEJN2v+hilKD/iX1cg+xTNYkKu2jxqh3T1nF7PXLnRxlHEofUlTjeENqu+B/AU/3UMeY7uVSVj3DWOV79MM9FJHe8rw2WhxH1221GBJz9nCPwWhActIDkrXxPnu4R57+wV5PVGm/QGGll3q4a51DUysNts1XDtwPz0VlX86UTsj60RXEPJTxYDOZwKeVjm+TNVJK6VQ9XtSr0donSsdTHhysVeDwDm/BFicHql+idPxkF6tSOm2fEiPjhQhscaZ1fOJ+MM9rESUnWUAdnCid+xh6C3vVxkgioXMwv3qicwh/wEOondZGtd7+zm9urtLiEp1DHE4NDVWOzqZfWhEl50Tn0DB7HOhLpQ1orjw9YtYl50TndN1oEq2IDE8gdI7DWPuJzulv9AxPTSr4yLgF3fm5coT379M5NFB8ChLxJEeB8VUy/OAjnykdgjzJEGSmNYfVPSXOhVc/r3XC5JDNE60zkEpY7aDwnKkdGczxvBbAYNHc6iunSf2m2tE5iuAnexFVeD5V9cJy/aGE6DRnSYogRw0MY18YtmkYez8HpvLZJAUFfU3G3VFhEMbaaWtwpOJZloKeaBgjpFKoitcoT2LsXZKloPGUJr7ifTTccefufig8M86yFPQkQxCq+xoCPLVs0T16kqUg1BaTEA+xiAac0hSIn3SSpiBYsw3VcIg31EBUY/BC4nOWpSCv3kJ+6HHd8L3VtQhevdMsxZY4HjiiI04/N/wknNNnsxSEbbaZxHm2xo22ouqv4T06yVJQJbqamBt5Nqi0YS/lOmsbRj7vXMxb2bCBMSxNGCL1nZmwexU0aiCXuA5ZDBs26OY5MWGOxlSatI7UqB7tlGhv+Pw8MWH0d1ip4XJAAXJlQAJ9CRasK4m5oeTKgpURKWUTllV5/JkFowItrN7cAr9HZHW4AXaEtmCu3/NqIT9h4wQIWzBdJndiwVwM6gVGax4cQdc9pbkpupeYMN9Vrkl3BQWtA77eN/Ge/Q0TRi1faPz9mEMhyn+rhQt0YsFo4vtU3faZBcMmE7JgBQTozIJRrRQ2GDj6OxwTR9mfL6dUjGaUm7xfqefBgRNEbxIcDH1mwxzh8+CgdLKtsHVUkL4edT4xYTnZzIq/WzAIAdEjDEsNzyxYZjS1AWdblAKqLwclre0X9ePMOfQnhWIJhIciInsA7LcMmCNUUBQel29478iBXq8zPLFfdPFtHmBF6eC7VIAOPjFf3X2s8H7vUoczcfMLIkdq2+V8mBwmop5fVVWpUn0BhuzPbJfjvInQPF5Vt5AvMPVI+qzxqmEOQkzbrsJ9KsN2bUp6zmxXCTjwW4L37NIT5mZ7XlMgdk9em9j8MnSYqI0qw0L8VoUYMREw51XEpIeRaW+7d2ldItbNdzApMSyNP3lsQ+B5ub9VIhYZ09rzksPUX1+7skHptyTopELs7thZPDsSD3WSBWJY5HxWIUbFOw2L66jwB4szWzSYZ35SIBZStWnNpQKxAkHU5J2Sn7MCMVJJ6P5R7Q8mTqmU9aWghs5UkI823g8VqWaQIFJBCJpxqoK84Euk3RFh32eLQSxaAVH62MR8df2D6QsqUS1wi870D/GwHbeAigECRsD62kv5P2f6p7+Hs0ltJmWUsTYziKK731JAvvFk8FHwk1TyMITJUuTPa6DuqXkLCUqUicVt6FuT4e11qoG2TXVJ3tM4oId985NteZdoIEprz/lkJxrI++/g9jWFm3mmgYgJf5aDx679vtZmTM3ndVDcJoNyahvKiSLeVKfXqRIKjRE1BNAISlD4osrkqahmKitwViafIYWRwghW/KYS8l3SCrjRFOhQACVdgRuEoE+UECW7TWrH7uAESgkVhdNypoSofqjiRYpRZ+EZVeASEfoyMZrECMYjRNPHvvLmbf8f/+vV21d/ef23129p5WEuZ//Pbz9+ePhXTxs/UB/txdknfdH4Tbw/K3fjkvEDddjgS6nO7sA3/AsjkSwRcezzcL9WjvqErt97y5foFjV25iK6PhpgvlBzgH8WstVkIpnI6VxMd7OQsurHA/RiurO3wsIFDDgmrru36055jlyDsoc8LbIthLKAcV8LurFhHjSPObpLdL0qczXhN0QcUGe0D5Ff/0viYAF677iA53ElG/gJehjMJFmdrhuyObJ1lSsoAy9B0XrxqliSNAJ4+ZSsMxgBUzkMZknX63EJbQ6B4nN0w2aAy6lla5KsRSo0j+Y8hl7OJnArFRtGfcBOYy4jZeDlxJD+e+eBV+U71OxhwKNI1o8CCT1IV6TvOUWJZbL90mAncJ48VWSynDGZ4Q1PRZYQBEpN5QMJZBQiYby01ozCbVOWdL1SmHESSkFNjgDYRiN+CwxDnSWri1IU2Gxf8lDULZaGFFTVE0CAsFrBJ5Nbn9RsZs/VxGyGIOefddVMv2OIitdvvQkMXbfCmKLoPs0GOXapGnfl5FVDctdXWJ4xrUG/5ogYlY7sQsUhsX//8dX7v7z+06vv/0o0+g/57U+dqTuO+fb9q59f9f/05uOb178nKka/9CAsX11YTGzSlxYX4129muxFmzBN9lvEzUjayahmLKtLJn0eJ5Spwmw9/VLU6JHrCF+3F7OULaq4m2cffl/aLHbwjDKVcK8TrqKZ/WrC1+3FLGWTQ2cMCtsPpQay8EyEbc78ZCsuI/yCR05lzVDosCUTRNvu6I/K+v0xXVSvj1iSUP+IU7E53rT9ZUzligZo4oIBvu4G4zl8wNHlVoQZMfJxJbY5TLvP7sRVhJub67FBGZMCxe9LDy++0gY8+Xjx8VNxPEwrp6gCLq2pqIqWfZawepYHAUEhYDkcBojF2gh2ie/dH71RIbZS5aVBJFf+/n59w2SLGu5B3NQwOHrkY2M8BSxwWI1rTRUFS/UTcGnJdbRTtQYDmR3O3G7JonPSO75re1AzWYAKaIapCmr9dmq6KVpMeKSOMThuS8qgqMskFvbn9uIqurPC9lXH0hrDsctQ2uvv//r6h++eHigbZL74OFkUIPK4BYtKX8+MGIGjXeFzJMmp/R9GPzGa3qiatIG6YX6GYR6zKkaNb7thobOG9+PvgA9b9M+zqmRvel6A3DP8MEYCUb1EdPIWeQfJEfcrY6ezlDP2bhy0HMhPUV/3Baihf8XYYkxqHnSbavXB2YiM6TxExAS6lLDcEIBAvzhcRt1D4GcK518NRgyT6KLobbMOeaTr5tKAUMgjgMEfdeXk3C0VU3VQFBfn8OpUURx2Q9k0Q9U0+rn/yU8nRBASE324CVFZIDpysEDRzw1y/Kqdo5TSyCideEfbD+++/x0+Ukzl4ey/eB/pDuh6VFVl23XF0m3NGLS+dxmZeF9VIdjwkFfhfoH0i99nJdjfRB7Ff7PQKpdkU5MK5WwGkYFAYxaPZ8Uj9VYJQ+1lSM5iQCoVm8BDn+YefTktQ1+MN1VadD88jzd1GPqm1OrqnS83rAAKjAgzomxibZQqCdU+apW6sGDvdCSIB5OiKsmYQPvGiXBRDOoaYAl1jECXvcoNapbE2hqvBKmCmMzDeoknDi/xHIWkJ5d0P8ThWyzaDGqUXAkEHJxbfBDCXQK2qtzfg1SEVWl9PtfnyRf/GZ9RNNMD6hO3ZGFAohvzYXYtz8Z/UZy8gC/Z5cn7USY8JF+wMP6p01Nj3YCNFsOeLDK2cXPcMrtfs2YxT/Q+iuVonmmYczR4AjaPliBuwWKcCoXMwnE3oms2Y9AIiEwNsSybRlkv/AD7JMUJZ1AHPYyH5qW9UE0NvRuhQYAehAZFEPQgPfqPBPlsIEcCVlAS9uuEC5te3ou5pKjNycCk+zuShEHmkxCWAQ4hxrk5znoHMWoS56Ku+swRwGHSgzA6GfhMlyxg8u638XhpCFlzqsT7cydzh+w0GL5Y2OzxXrwU3BnNtYAKF7I667rBp4QY1uVmYLnIufTI779cFjJ1kdnTxyLQ9tMvHz6+fv/d00Nsbhuj/b74IJvglT1k3oe1qg7VljxNWafovBoLW+LGc/eCXhtPLnHMwx9qgcd9DpihapFzOLBgF3BzW9h4+NIKXZXI2VIc/YcjlSPlhGdCSeH5tSSoqwqFm+He17bAUHZfONS2iv2xceDZ9hbTDGMIZ5rd4tC8Qh0MHOPnwIlYe6FbfGDB7hbnvDF6m+UlzjWqJlopJENBSsF59htsKbZf9wUOoSCuitUFDhy2Nb6/PEPud9QaPfPFvaZ1sCGcus2tDV3ZIoyflIyhEKW0PPuttZTVP3aG6zl7EVvVfacm4ZQzysFoOL2kzZMnnJ4ZVLzqVLiP/0LUWLepXgWxtiT1PL/609WEU5vrLVD6RMzc5tqqXdMONMzKD4mBCerYs/ZKnAQm6GUiNkvZJLQWFURp9/8sgp6U3E02lNW7rRvRDDkC119Ian6bWOPz3lTe6F7IoMBPJwfgwMtNsvBImXuBVqsvkrOhrJQVoXNhEkaIyj/Difg4xcRhTHCFlPR97qtF3sNOgi0ulL7frpW9XtRYc7i0zc24tzROLnoFqkyNjx6qJcSarQ25jnA3DVNY9GbGiXIGG04LZHESfbCXidgs5WuMk6thb9o0Nk7TlC2Nk2CCz7vfOQ+vGxpCatFFpo2To8G3V9imWcKWpol5OExO9GD6Xc5zavWzlmleyK6xTG7SfnxWbeQwh3JqaZhS0iOP8g1r+Cyqg7TpuIhsTXPAxmYGiawB2noWIr5BlwnWNOVr7BGNsr/CGk3StbRFgwWJhxehTSU3i/7rEztELQEW6X5lh2YJW9oh5kFijI5CFIasMECKthNaC8SBXPc5QsahuzPKVqE7SXvA2BCCP8SqM83xftnQXdy8Aq2/jrJV8E7SHvbIBT2TzTeNFPS88TtLCba4UFTAYBT9wDqzjBhVZvG7lKPKhqfYxkUZDohYe6H43YEFFeBakqQuzFjJZxW/y3FT+UopKkNjSfF5mfidpQRfY6GMgitnlK3idysW6pnjdyd25ELKVhG8FQv1zEE8Swm+xkIZBfFOLJRZEG/FQj1zEO/EQtkE8U4MlFUQb8U+PW8Qz1J8LzJPNrGWE8pWQbwV6/R8QbwT83EVXasw3opVet5InqXcXmOUTCJ5JybJKJK3YpCeMZJ3YoxsInknxsgqkrdijJ4zkmcntBYw4Vuo2BFtFGI5JW0VyzsQ55aP4FXlqdscB89fKJxXSsCq8QspW4XzJO1RkS9AKRiTud1UdOdZo3mmUmxyq3zEHhSjeF6LBeGXzeJ5LcRhTwaOpGs81SrotReK5x1YUAGvNVnaNi7tXySt1ZZzO3KDUFtCWlhtSRF6mZieqRhfZKyMoi2npK3CeovG6pkjeycm5ULKVpG9BWP1zIE9Uym+yFgZhfZOjJVZaG/FWD1zaO/EWNmE9s5slVVsb9FUPW94z1SGr7JUNiGYM9JWEb5FQ/V8Qb4TS3IVXasg34KBet4Yn6nsXmSfTKJ8J9bJKMq3YpueMcp3YpdsonxndskqzLdol54z0mcouV81TFEXh+FgC5iid3/7+dXbT33t337425u3bz58fP/qI/Uk0589bXqKexwEf/YRXxRoUcj8ghtyaDI2zWcFOdstM+KRiCVxESpchJhxWlYwiVnJX9+DFnOIhkoZiE8Vo1lAzfbdH5Pkhxa5gady0WiW5Ha0OE5KOK44Dmrp19ERHLpStIvLhyN/+nG73BRCm8rHOFVYnbwaryFvxoD/HCI9AIajCiROXyADtDy0bc1oRI7nsvPfMwmpAThJq8o37GbHrXtMCE1CUIgW363mK1UFHeydqing0BHLSbvBE76/4L2FS9fvWgNNQ3BmcI9DUWC2svtmVwCbmhPCS4ulBHqmTWTol5FdDsrtlDz5wXnDS5f3l8iiVtRA6f3oEH68P2sdlDv0fxirYhPnyWZnA2LcPxdQrdOmyl3E0tjMyPu7P/U8j/DYh8q4W7G4PQQzjWzG/R6IJrCCpSPbmBo2NEfmRz3P1ZrTbX9onJxnnARRAj//lD+9WjKhxq2mNCYdDdFJaviR9OiH7Hhlo0nCTco4BVO7DvUDsHZETgKCy/dLh9qi65QG2TJeWuOSvhZcvfFCkW/+sTTURVCGrGwKAb/6PVa0GJxwatAyayK5mRHDUGK2lz+Rg7Aqnf/agx9ox49uZZ3MPqjQY+K7sstXUb6LWBqjtbOyY93lq0kJ5tR4Ch0hVU2uNBwA8R/1U7ZuIyAkJoBH8AR5aZHN/jwCc5sbW+CglsQcywieYN3wxd03c2pcnlLtTTkFZUwOPGwmqPaaeOqM12IQFkXTougT53bV3etf3LLEynrUD+qDFeMF3Ph9zM/3JYwp9qXH191aBe7t6AzQScyQ1dXd44Elvr6pj69aRwSUl6QKvSiLYlA6yTXR/AI1ed7RUwPDNAHf3rQCd5pKB/DrAz/4wlgymAJIP3+M1HRlMVWWcfL1WJQs3l7i8zN+vmNrIHwJeEJUZzExocseHv42OaROX3zV1sAzqQNfPFTojfNkfiwFbXcMJnlkNTujZBu3lXQchAz6ktc3H3HTOwMZZ3B3JQIGjZwPg/ZSMWJu0J2rmNF6L1V1+vj1hYfy7F8ftdMe1duiTA5Bg69voPRpoI2J5PO0bcbcHoGK4SW4m8OvT+wssq+mRD/tp7aUlFczu8pkOZpy5fzQ3uPzvUofFH5qioflSYAnoeh7gyx1/1aYfz1JVn18VOBBfSlB3LWIsVviVY1qz4/WC/HxUyIKX59w8u2sTOmBHNx0w9oLx5OVk4sv0vEs+hBv76Sm3sDw9Y3V6Zo+UV/f9FurjXDvGHstsvgsNcrmRQXbTcp5/fC73+ACfr6Fp98Jj64gdlsQN4t+HkIg0r6x0KDk5ykm4ds3GHhOboTFw5CdJv727VbVwSOOFJVE6Nfrhu/CzWTae8AZE1ax8k4ZLn0NKhJCS+DrVD2lsvIoEPF4j+v2rgasyqmjoXb56wuG/sL+fJSfH/HzgypKCjwjiP+dQbFA3+ntWCrR31hWko8pvKoHMFUx2JxDIkr09RjhOnIni59/tHe1zvnPJzov6LAv+jqk8/DrG2eTRXQDn7ht38lFrQfmvm27l7J8+EGdvYOzpwcd2LuzJNmmEo59Ka+HN7qzAfMl+65mE18vjyIB4exgFQq5MRjdaeqB378V33i0ZODrnc0gDCYh28hKTri6ePphL6rk0/d81PvniyhM4CWD0/csfEzX5PT7gwE9fT9ETTxz0NVtQQXWKcsHsb2+ZNB3V4Tm4Utl8fWbCuv2JcR3pCc2PPL672P2sG2q64puiAGwQmElO37KJKtCwQyQfSp4xVILEcXlz2/68zHFO6v5/tAFrf/5j7e/a/7mt0LWb4Ws3wpZV1Xot0LW332bvxWyjifmt0LWgzR/K2R9EpvfClm/swvOfStkPfnrb4WsT5Ccb4Wsx6VvhazfCllfrpA1c7kArxhkwjXdgaS3RHfD2ciX0Z3cB4uqyQj5RKraNamaDBp1MQy3XXhAHl5HzIBMqaHVpsSbwdswYHitH4UFlmMb06+vpht2YVqu+MF53UW9zfqDBAsdCb0CVbvn0pCAS4sXHQZmzdI9KTFH6IC+FNH+8pIwwBkd4TBiAJ+E4Tb4fPHzlkJFqV5VQngJXTLDJjlLpizy1QkSF9Wr0D0twYtAqpuAS4slSg2KFYxUK1FGaU0cheMKLQw8dQZGYIc9o6SdWoOyXEobVTz9KbonjRYRixOFy7d//sbb7/S38ukHLFeYPaV1Y9z3DFGGokXB1AldbwFgRplZ9zx0J/fBwkNSPkJzFh+p6VLTgEnCdFObZ1McqAF2qHcIXtNUPAuxN4Lc1YUyfldFAZcWZQeAxGfpnqhdpXcSJ1FFhScWS4hv5XY51Lomh39icy+iO3sJvuoEL+2D+40E7//98LvyuxQTfnj4ffEJXrfF2/FauZR227l4r7hkcGQeipphKpZGkI454IBN2HQNWjGot5e/P55MFmpFfuv+UK5qAjLtPxbc+6bw/y5K8rqYmKN9p/u5BeRSrP1qnjcIz5CrbDYDhEL5649H3+Yqb9UGyI/dNyAWTpkFfU32f+oaVzD5E8kNq/dp3cdpqn6hK7qpE1GR7VuBu/35jK/4cYYzL3UUwO4ZU3piLAsNpnx9aHtg2Djn2/digzda3lRZrd+Cap9zVIWGCLnddtg0O238chaN3RDVd5sodt4lW7RDSrhkxSqvLd5CHxViAQEKgwvmkld51QNfnvlvXm+rSerJZV0Y4/L5bO5acWM997QKZgMyW4asLDKbmqoCJ3j5DCEVuXYAzQZm/SbaQvfrGtzeRbZqjLwK/5DyxI582jHEWqCMd1WqJWhmZ/UfIKna6dVv2eZHMouOrN8KNk4Kr35RMikrgXc+MZowKyiBMOwUEyyZIgksr5FJZaHkayjvohxPv1VV/k7XWyFPV1EXHNTaYnESfTQwy48nwaxYY/2kC5Zdq3rmUPA2QDBUw1OR2aAT5QdJHNWuWUWoD5IRFkX2qJ9ML8O/dna7mxF8fJArue6gnhGmsuD17KerlQukLqd82WZMEraAoO+f6eAzyZMyGQlViwJfcTWpOha5xl5O45K9oS4rNqPfqxQNxkFJDnbKYQ6IXu9CUq2pro7hEbwJRY2a64+AUdU19sDx2yqotaVNaA3LzC+kHPP+Plg7OM99A4uUz1yh5PDgNIaIXBtHx0yIcWZZjeGhYmAT+VXdpXe7aPJilZ/seWuCusXhhq7AlnFSDvldAd0WXltSrMGr6XazlLX3pvssfUiq106uSVdTqbJNFIIINzWtP9gOLLCUmRSZHD7Z89bkjNsgamrGlUhc+eNPrkkw1Qz97cy1rpdTttGT3XPlDopFyuro+ksewR2pPUIJ8FhiM+RUOO9umpQZChbdspIDNvJTRYtafPl7PW8Lpn/JQ0OUjHuPCI7VlT5KUGur3qeZW/Z1pysZqkamK99+fPP2l3e/fOjL//Hq46v+v/7P+3cfH3KND3/9tPQlGa37Xf7i05cqys87Y5k8mMu2wRUeu3o12Ys2YZrsHzvG+YyxiFjU1GsXb+vekaZLEcOppg3Q2D6qgaCXUb5qL2bpGgQiTg4mxd2fNz7x7sAZ4BWfnfh1lC/bjFnCl5x5CxZYS5puMhnNfnIulxG+aidm6VqUoTrugdk15Oj+W6pD1YS7u14vuoiXUb5sM2YJX3PmbhTc2n5mKxZwRWdX8SrCl23FNGGLjEIIKv7U3YoptDPEqFGUU7Bpx6GCDIgM3CekQ2Tg7tFBeIQnVMv+qQpRrVJt4A4oMKDgdDbdO9LZZwxPgRJ5ZJSAPoHPbFNpTkeOANQEj4MwFxT0xHIcar/G0qHtpHTIj8D0Iq9b0DVZrSmcfNcGJBKn5untiB3Xfc0FZHYkExYFoGsjBH0jZhHzzlOLN9Y5OR7wwjvrWX4Z9W/OR1Alp1nX3OZtdBdwTVZWldHtZPxEVaUkhH1poFjk7/NZz40FV0UqnuFIREGNSp9kUeMxznpTqAOUOsQxRZR6Mbm1jsZlILM5KUw9l8utILP9eDDN4fpVxoKavrFTWQ69sZm1ySj4i4j3fDAa48IzQPwnoZwwIXOZ2ZqmbGCf76knCC1vxQjrrbLlk/KzKfnhNT6UwtrVs0yhJaWaSJtSXMnY+MGo1D7l7xA1mroJtNrPKici1lbTN1Wp0ns+C3jlJbZQgi0v2McS576vJrCcki3P3FfMEUo5lN4N3EspFmFVXg2uj09smHYzZ9OicsdFRN/OZTXajARS1YZX3kxhKTJeHl5bdUPqmJfFbshocRU+08bTfdwJY+LioUBWE+xl15ICZ6LZFxbFJ45bYPZL1OY6YDRlaD2/F1NZUM5ojEhp2yjUxolilok6yjPlza/omjaNVuWaV1Xt9zULU0UXC6qyKBeM2Jf3qlfUqE1jMJD84owgEoYpeH+sCrDTOAb6L2xK6Ml9Xu8mp+8ElHRHuHkm0JBeTIgcqtXrwhUySsrWR25vES07Do+b19bvkSqb5EFVHIxoozONeRV8jdeGQBEZohkswIdIm0D5HVE2gfMhhYcFK/T4xfK7eyU/HlkSt9GzlOIujKX1YAdCenb+ud5/FJZ49RYhHlS0Izb10nXJJCFAcaGCGaCyc7BafgfFS45BNlcrgqxUzlddDJO6XGwPK8damPfvfvrpd7Xtp1gfTd1XV/fCm/Cllb3wpl5NdnYPvpWnGAklZQFhllNwJlOSTii3MYR5NWJW9SCCOAZw/lP4MQFa+2o7g91CTGcrcDSKmA1vZ0RXdGiPlwQ+Fk61qVU9IroXMdXaoRN61UYEFP5rUkONqC/z+Pm8sn996B40vEtCP1+EqgglmkwPECyJZAI2NJ6cUty8HmzReYcAQAzOoMpJH1OkPTFr5ocdCF7luOhCZTiqmAr3pO5bkMVDL6i11ct/0sYhFULQa4NZyZjnD8DQbOyWysBHPVGBs6Jw1syiMlKNh11z2EoMwN53oZ82zoyKlDr038H18lapPsGY6J/DC3ZyYqG/+SDBQcoBq9XnFZZBnUDcsDYpUs7S5Jh9VtOfnYs8KyzoNVZOm4JuCeItyscc9gjoIrOSMZlLQGajAH8c58zlAKzyi5rjJtZW1UjUO5uLmjgn1wazkjHPH4BDF8g+mcByHRgTuVetoDdlSikeDZ7EQTLCqsgahOIqzzgfncTe5gYFV1XDWwheTdaQayOTR9N3jltHYeCIoVyad20hkwe+dl5d0vNp5H6N8EtTpo0un4rlusl2SmxhUEfWlfxUybAKQlU98V4OvB27UMQI4t3f3M5gZRMokWoVes9h4PoyFEbmyQxBr/0G/DENS0AHv+6ldkuHJX9/UQx0K5ofaU0OGUbVjsdLnM9NI5TNAcPKAEbiehllSqLqmuvuGLpMZ6dFRUg4XJqynAhXfY8dXnJgMRnlZqV8DmybpBFRCGUPnzuEkYa2hLCw4Pks1lZVQVBz3Q7q4TcU4oGx4esr5Dra10vU4bwFMzCoRdRy7hLsbYIv1L6JGKHUEq0EiNqk4coLJg7J0Q0OxQxMTTLBGnqYayHtUYWKKAHksTSme35JpcuKzWQ6ivA4SBQFKokFXSrX2PwXrUyp0RYr7MhXsdD7B8Y8f4Aq35SiKKpjcI7gQTTCqswatPR4h3BM9HaPFleI4jbozsccFX61XOPHO0+e2mWkiXlr4ulhMj3vwNfOa79VGB077Nd4JyVVUh48F6bJ17tFT5g+slZtXhGS9NgFF1RFSCSIDBx10DTkuFOQZ7y0eC8p5IpKREBADSUiYaGcZmv3SRmRVAzpWw+NBY1KFVyZ7O7BLchRwTXRkx0HHsk1GXlGryF0pxTDmXS/TMKZRBx1QchV6YKz84oEtILhzH6/EvpjJvHnkyMjRWaCLXWQ0KHWClcRjvsVlZYhpy6CNblrLVCJYm1RGTgeyjuUgVQQv6ESD4xJrxRTBn1nX8rybdwvNOKZ3gbgOHRliJV1oVSMBIslmWrxGHOrTb0WAyPILrIq2BoSmRR+KGl8HPgdaBAw6hDxogtqbVUgmyoKiyFgnk0ssYXOanosRTIDskoTjCx2VbI1rk4YKpd3VcjgkJ3C8R5/IhVhVVi/6pKawEinoqbm//zfh6UnFtPsSaUvvpiG8kIwuTHUzcY9DyHqdxj16GHIWKyxkG43dB9yYrs5rn61mQN74EuGt1Gjyv0a35mUv0fhcnT4xNqqY1YUvn0gFG7glZcGq057OoEQr9JV+yrYGnZqUzHo022l80ZeWTaZ11l5BbfM8iYYeA/9pI4ljtGlPQO19LpThKk91SCVQVmS+DyEL9uKacIW+e/+bhsI5Lv3Wo1Sytvophljrr3CRRdLw11kDthZ6OYNQRqpWmcqTgLDBRR6K7UoWzhMRBneGtRD7sENJcAeiF+2qEvIinJCeWkt9CKa29YI62CZ4wToeDG5m8enoVgbAY2ivNv+qPTHHXBuTMlb2gL5++zZmow8Ito4lD5GLlPnF2dW7agxNFVZcbgdYfHOgtKz1AYWyEyi55Wf7wZj+E4oh+r2rV6rk95Qm1xH+brdmKZ8zbFTAelUC9bnj72L/Lr+ODv1ywhftxezlK85dLIA68AHZ4RT3gsCjM/mQsqXbcYk4YvO3BcTe64pUwe2QZ7q5Giuo3zdbkxTvubYKV1vYCLPKAdn0RBzduzXUb5uN2YpGxw7NrsZfaUia3MsOd0uESRN96Jt+IJO2kiNqU+00bv6RC6ie9E2vKQq15DlFl6KomrjVekDuYruNbvwco4asmL0BFFkTZ5M6jiuInvRJrzgIwx5MYovqE+0CYjoE7mI7kXb8JIxFuoQhZG6Oc2N7UScQUXYAn6AQDwA1+Mispdtwyxhi9Nu+XbJYSu6JhNWfOU5rZeSvWoXXvCoaUxVueAjNV2bYTpqJuNFZK/ahRc8aqqrqFd85Qlhi1MJacOZsxeRvWwbXvK0q2dQNdPP1IQtjiWKpsErqV62CV/WWYsSQePvjMXNzeX83MlcRvi6vZimfI06t/pQTdnobE5073WUr9uNlzx27VIYfacmbHQ0J97VdZQv24yXPHP9YjD6TE3Y6mT04+k6ypdtxoueuY4IWH2npmx0NifhkesoX7cbVx+7HVLlFWitI+wInSXbh3ff//X1YxPJk/Fa61fSYpJFl/qjoonFqm0jq+ayzeMQDLHEw+eLmqRzH3aqZg7EqS5d3ebvcQZGICR5bC/JhfsbBCIRFiDT9CjvgVVeW+SV5tv5I7PU+joQrYNeYzAap7q0abiI3tdkM1LqwNjoL2yqsPsghQIEHmcMHAQjLIoreLuWF8HACtJMCc1OshqftyNcMt5eUq29ck1ezQTy7uXfCRGKJkiYkrEhs0EByxNWpBpQk5weUuQdm72g1taYpbFUOLcgKghIsSRvJtav3/Hu1ewwo5sp2RrHyBMKeFedgh/rngNjifoTsQir8mpxfTxPW3jURX7bP2X1+jgFLuX6W9mjRIq10adAiGSIAFmLRiWlcWk2cJWCMYEiveE5ezWdgroucexaC6yTg1pbvTxJgUTQdKqMYDtibcikZGx0ebYx08F8Xw+MCT24hSdsbAsKn1tIp2jbmpVYgyBbbtxkw+yYeFtBm5+wxRMEqKgQoJgHAQykcT7pmE2GJB34Gq5hHEfFDkxTPUmBptjgfLQrLxDhhmxgKu9QBIg7INZ+8wJ5gYRtvbMHxgbQgR6fdrqztfKj2GvJCIsCa1C6nRqjTz8u0fheE3SJ0ngS0v71bVNAGE3B5AoWBIhMG113Ei6wzDxWICEhOHhYIQx6i0eQ/Nz9O2oYlpWhxbwCvCtivOfjP03plkGB8NLKBtC8JX/YgFm6uAE0qwxEIBU1cyrp+dfyWx//YdZopDVZzJuSP78LlrPBipYf+/gZNCYBjG//DA/HH/v5Fzj/w7UIi7cV+2UN9YB93SIHvUzrzevAjF0NIDGG5Wjq1ZGOqAMdVaDWCqBI9Uqll7DFkzqejBTLanL2hogfzjXN57Zp8G1eszwoq3lH1b5Y5YQsbYIJQksidEbUnttoDmD1KdbGiW1Og7t2PwlnNdAjca4qApmVjO3Mhk0zKzdsgLtmHrYnRlI4ZJbXjM/sGgUzS/UPkKbwmQMtnKf4j1cfX/3pFX3b9t+vu/y8f/iDJyUr7vDTX0eywic0pmI7VoM66FBuGCNR2luexXjgpaLe8Z46F9fdKd3W5W0y/hyNXCSsgiTFM4KJR3ETER2xJsf24tQpmveacbp4N6HOYNKmZGFRtnB/7YT220BAI0USGr7MfCgWBdUnhL03mSudHWP2Xk75ss2YJGyREsgblEeS157WwxwnhF3eQfXX9s/j9PcLKV+2GbOETWqJChhNH51NFO7e5g4hCMLCw9epXOMkqlNxOB+yCrbSKGWj0YdZvU/pA1S2ojOhxkNFVTNANvfEDJvkq/qLvEBehcY+qMSkWOPEZMOBmn0LT3fVhlXBlmf2fcJNLcpzpH1G5ybqyUjT0oqlXnbXwCA2rirajHTPCWEbdXmvQcjPRfmyzXhBRUy1qyeegEnaWOeRqMwJay54iS9h0QVGQWyb0BdT0RGd4Ga2xu8NPcCPIR67OHRwVhPf6J9GD5zy2mLglT1Cni3BmPZBLclhgoOrwWlSs2fvOtgEwD5qqH03WBB7iokQ+pfq8S4lIqzK6fMBreu/+5UnlmvbE0Hj159YXiE2O0o1GoQZeV7ltXRtmqnVNlxEdnoXvkRBfcZYQBW6dTfK2x7PX7PtDtvmrqNMIMDrRbB6L66iO70TJljeAUt9rQ6m+/WIkH0RYZuDOdmKywi/6JETPnS95GSy5wmQV1M2Ohu9GZcRftFDz2nM1jI+Guq/DM9E2ehs9GZcRvgLO/QaLdDrzk7mKsI0fdaid1BtxWWEZ7fiGt1udDAnCvgqwkYHo7fiMsIveeInXovNwWg36yK6RseiN+Iywi943ifPEptjOXlHXUXY5lz0TlxF98tS6HSBDAqyz5z16yj3O+Qucqovozy7Gxe560aHQ/MKo9GHYhaw6gi09Oi4EUx4eU4xwfWZITCvI4dcpzKWT3i02AjS2RPgMsovKaInUQ0jEdWRo8sIGx3NWYTnMsoveug6jmt0NmcRYpMtPAu4XkXYlz0Bu6ZJBekxBtHdIDva4t6wIbQoJ278iWINl5/ZSwpn9WNw4M4O9aevIz1S/W1ThB8b1ZdPGnuna99VSNmLJUZbcdwqL88aj3rbcR+WZF0w8LASms2EePm1+wakUdosJn5WqASgplkscSr70HLOWZe5OeboL3RPBEqiJwlrp6mNJpThNPWr3aCHVa6NxL343tGofHM4e3rA8ixtgfz9Xd21m0nDgfxc4TcG3AJ5wYfGK/zY8OrWH5qQDDSBpY75usfP+23cyGPzTV/4/vXbj7+r8aa0+pjDP+P9y2q8cRtDaTwsxTyavVarojzDKYySITEQeBTiBKUOY9/CDYp40ta4Cy2og1u5CKEyVNYiYa0Reez6kxuQpDzy54fbhkAi/f1r3z3qtmRSi65l6zrK81JrUANZEg6wMxMfnxwPDB+XqA4neFwisfZbUkQXC+4QAVpuBt0mkoOjYC0VbxFWjkWdleq/jaxOGGrBDd+YsRZ4bd9ZvjHjSFRsh6rOLKAWHHrrRjrPUmqvo2xwPVPbsK7QRg2VpIaFT1NG6SyFMeIGEMbwK1g65Rq3sieuiR44ZoXRxIcXOTzVpW2QLJgKkj65ywjPH9y31s1HMvau6B2ofvmwaRDoFk0IK+cuCWwigWG54VtPrI0X/+CBn7sbAzUyiFi1uKQHDh4p1wFkYuyMXUi5xP0hvUQ5ob9/GeHg3J6cWfUEFThlGBLEwFic+BtYO3FHV2FBC07B7Yo140O7kPLsPTZw+k+Es/vqj823y/oq2FA+U1gJ43NPVFiCCdHbKPqNx3t+NBlZa6zuxFyjVi4jzDCTxvrqMsJdqUy9Bp+ir8oINw6FddIU12U0YxN1dgryVaxZn9p1lKcv8iUay5ViYahJY0EX6DTlM43lMJzeVYNqGx9L4xnELPAzKGuceZeyRVJJcsArl5i96wiHODfM4HNa5TrCudrAPpy7V165V4hNQGVCAwZoZLycCtWKNetDu47y9CU2iNqEDQuEqHRxW3cszijHzSYBLmmPoKLfRrqVEQgD6yHZDK6GowjNGtTa0nnnDQsbL6RM08dMvApBe8TDi0dzQC9QDzfVy1CqVyLF+3udmH15lC1uKs3GAJipbmYtBl/SlJlqQ1kBuxK2J0JNb0VDTYs1iQ+YQef7lDGxQlplClIddkFywKrCoDg89lsSjShrJO86vPihCYWkDE0opccpJg4wSqocJvm9RHfpPhkK8DWWz7U0VZvyWb1Bg3SchZt+avhoJgqUPqUt7dWKouolcRnKQNyK+5ghUS0d50YPfdY8XUg5N5vxYL9m+MbAAGG9MF1JBV/4omaREi7qVVL2pRG+xurdt3k9kR6D58ENi5S11dtuBZHXn2j1BBMsRSUMVMDxnK4WMYUTq3fHYLOweokHii1S1qDeYVQs/l6rJ5gQ2PblFvGa0uCUdS/dUoAvsnpdBCzQfxThbJSk/zWj5yArk7Y4BmDxvAqGlufwaIQiEl4ytkuXEaa5ciaFT6f2Lt+g+4oeejgJpjXebY+iJEYvXCRds4SvMUrUG2Yw7oSmpprQ1RYpqDv0VIvEPIyDrk7NDMvBAkTsxB7FajG7I1YWzTW6+gnWbhDSfKotYha4/rRxe8xefJSmxnB91g5Ny9YlxWI24dVCmYfyXJRTmkoQqCo0QXpUoXXF7CCcWWJS7RyEoosl3CINIHp6TFIDJwd3GeHZc7tEPo2SlSdSdCFlvwfLLpDPrqhKQ/kUE3fFVNINw+1yMmVQa7ZidB3h2XO7RD6Nqn9OpOg6ylR0F2wEtDIWu1CgWAZBChTLICiFgWUQXKUmegJNKtdOxOgqwtPnZiCfmTrxjIrIcHRjVbMrc27Y5yyWfqsS1G1cuyArQdffbJIBljSDiE3p9rYUG8rqHkWdni8pcqwl6DV5kbAOxLesHJGw5blYOHYFCBbWJAwOzlB0bS7SBrkjqyrFXD33TP+uq3Reoxg4rz7apZrF/IWTu2RSSVhCQACfWcL6JunB10++SYMH0fiUT5DV694Fb3yRjCpsTWXX4CqRhYRIrFX5XC5tH1f5O6/Seflc5dDaiPenudqZz10lmyq3EjzmuGcJnxklnKbw1KvEPIhYv1cxyuwt0A5ObpJR5ael6F5H+avGJqABhntsRWETdEYe//ppI0H99mhYzzj/opAJXMsQFvWlmoBQdecCvdRg0mJVnCp76/qyWcDyNg5fCMoGoEep8ggX3g2LeXFRtB3tB1gsHpQUWAzoFzQTjG4KYyLlyXYIoOwLVzTtJ7iZ7LP3qluIol0GlEPBiEBIu/lfJYwjrPrb0WSbPVcN7SovWDijhNQI6GB+s7ncXZw9+vrOBMA9Vu4D3ylvNpSTiokHi1wGTZlET6WWuQZK1M4bdqn7ze/j4tcoex5FuFN2JhalCmQc3g2DmlJH+DpYSxVMtHNLGKUgcQ4GJ9iK0nTO76X1a60PUVXY9oviDJoqhsMlFNJoGFmizNEqqUQNWN4UegfV3rZ180qbEYByNBlVQQeIhczZmeCldzfUgdClgXexRlnMqRMugQW4nZnrbNF2uCmfqrsRU3dLj+odhZJPx9YSvy6iWIUHWgfWLQZxDQTXssBEogm/4AGbkC0JinyiCYaRputqmpu8qS2vQ8rNZvaNV52G/fViUH16RzXVNn2qOQopV9hmcnCywWaQCw3addv2/qolys7fsP8k7Y/oNZajCqDzXNDVzUgn+szAPJ4ryi9m8uO/IigR1WSDb0+o1FORFz1mPN+g8JGWECxYrklk7Ial+IFNzWiYSTbYMwe+BK9Y6HzfLuSVAPzA3tJ0bEzJ3ddmbr72Cpoe3x7qyfj2yjDITjFxgE5D5LS+sSZtU5IH5lXwH07kcPxbx/l2UWA3utHDosDim9/wKhjgo3d21ACJOvee16fCHSJ8KhpzImjMCWbhcCaYM+vmaQoiR3Ma9jy24DSptjvarYIJPscXmGXdcQ9KUGurWqRyu5pIem3IrFhjZh3HDAezUTUf9Y01aQ8+8OWZ/6SAkoQYCvHZ1MUUghEW5VVfTLObYFABmBEGJYTJci9st9kB2jmTvY0S45HJ5qWDtUTZ8W0P3h7NpQGfkisunkfJ6fukGCVTqYA700jgS1MZLR7QidEluENAtZQSBDFCjEquhJ3MJ1s6NWwMGWUWBqOC96BET9pILGIgG4nOx6yMQq2jnewbXMS0Z4EOasFCwrsiRHDa7g0mbNnJqutNcHA8D+VgdQNpwmlW5S+xcdWGEBzlCYr4qrSOym01wnfMfuzCUG9pNH8O9cZLB9OoLaM72dKpYIBiVHDlmXfYUSF80iyqu1gVvs20lMJdNBR/k0mXkG9pfi6XqkbOtFsEHd6XGnToiKXRJulVm2StCsa8BhvgHskTs4mTgZLisogChb3GSuuLMpk+VlwG5fVVx4iZPMAIIRYkT6POf++ElZuZLUrNBQODzaD8aClz+5mLblU/xACM9rRkGlyThMHRZtQpJEYm8PnstQKjUo+Xxo4xrI/YMGjJr34q8aa7RW4gfKXdPN7krJBZu/ANVbdr5Ia1hGNljcfm1HQjyvgCk2JpZ5JqmPCGeHbO+IZYmH2RhBYj53DyjJS2/R+GMfRznLcCdpqVyfX70R0vxGzo3zWX2kNPqahxGFxHdEBARLveOSj4aqE1LGbtyqet23XJwSPhOgmIceIsju/1Y1c2eA71M1Av/m44I7o2lNXBuE+/vAYlQwSQC5E4siwGEDuFH8UXE6b6hXVhyI73eI3uiTuesW4+qIeDWBr55cGAaCsV7aejrbRYYJdJBnbCba7gTe1AUNXt2avOxX4CiBNOvWuI3kbgouDni7UlfVBVNegs4ROVGCDq8DSVePhcsQW4A/2orlCIJFtTpVxPU4gB3OE4cHLlHUAJENciWKqA5Fn1XktXzNleFFgzG24xBFmI6r40WeCkguhdvlUeZVOoymKJYxrjbcgxjXaSM6wWOKOSgZ1wtnn2ys8VO5ACbkFjf0lGoE4SpwoPzMXdCK7VYiTOUOxLzmI8fT84KMq+jjDP0V2ueKk2lJVEeI7NDZHoaxVvhVg7ZDJOwtkoEWE8f1aLaCrcC6oENdqEiveCY75iE4J6SFL7AKYtKbKnxoKPtTXd0N/NJ9k1K+VQMSH6NP0oP9jzvrSIm5BN7oNWkCHZPDt/RUGim0nHgPMtSfIDWgl5Q4KtUnBBIVJeR7krf4uiDUvrbhDe28Z8eMFNMelrbyN0PYJn9QYRUV6RjkbAgg2yK9rRSAbNyPz7fMzZ5POrCh3WvRBWDIvUKF0ua5Su7gnsilg6GQYoelU1h0xXlwDhpiXrKsI0r3rd3+J2m2XCKvoZOSDLMdqB+hDUkvQvKoQ/71pWVa4kC2g1yQHbq2JRvyO/149dSbgFPA1NehcK5TjUk4qBsbYkXpvegknCJxpxA+fiSRpRfqxwLSrGMvtRGVwDrRIpTXyNRmyqWqgvqem5BBuo7kA4+X4TNVCjGp11GeGu6w2G51oacZP2oqtcCqddCqcukHthl8Jd5lI4dYGcdinci7sU/iqXwl/lUpwQtrny4TqXImiXImiXIry4SxGucymCdimCdinCi7sU/jqXwmmX4kka8XldCq0SjVyKE42oXQr34i6Fv8qlOCFs41JYGnGDlEjYEMjSqBFWE6b4jIHE5zDqhK7meJawxcEUd4sAIJCCzeRGQh7BqHzyPCIu6DU5sHjEyQfoZFJxSDIXJmFjyZfX7AfeLQ+aSLTXisR05qrLoNZWVaYb9ZusNLfRts1ak9c4i55VlyN9gMabzDZl7QfGhn3zXBcVTuRwZzZGhY0p5SIsyqvGGjO7Cc+Hjnf8u1c//fzjq/5/Pvzv+0dsTxzntdzYS1PSdOHQHGo6FufWAS08inMroxcHtSSrJqIqm/C6/adNgqaccIqgyn0JXnh9p1TnYPMDYp/L3U4cWlqzuJikRLAse1NFpxSYUJPvqsIDpluOT9G+oya9EYIFUT9eo9rSChWENAzAo67r8pBw6P2slKrgkJn4G6SFokJt636RSR9nKeNKMUQr38+glmQJl5rxKsqahuTkPVe5yGjCNGipqvSUjg3fFrXqxyU1bSCjvLYYWd9GpYqIrDvgVCzJ+YEFX4FVFVfTXTTp4pZceebdqS3Fkn8qn0t4F6U4hFUhNQh7ZjVNJO9lyWvb5jV6Qn8EeDhfsSTNFzaXkPkKGPhsZQ60TQVkBFt+MA/FiX2jkFEyX1kJIpe/85UpNrOQqYgFfGDvlFfpPZd7OcXBwXzhaAjaUpORYYKHwalgPijhE+bLqbPPGPOeFlIIF9gJv8FNTNxcznrBBNxh4IuKZ54qP3bn5cfp5DCU1Nj0VrmsXs5tOC5SZk5MlwJboX4DbblM4rd+PIdFCBub3cWSNFxoD8hwYavkHaDSgtGkYDKIdzBcUu6E4Yp4C4UshDX5VHkXK7m3QINR8Lx3cDiTKmaCRAD5Tl5HMMQaz1DwGmIlVw4Gjzsc5saxnoWGVASD+FdATVUzm6qquU5BdeiJtUVeY1IPZRqLgC9lQhLfsPRPMjaYTVxFJzbWBmhHMMHM6pfEQRCHfmwMoOFZMjw2yM1KrIZ9NrsLFlezqCpimuNrA6EmRqmJzBpKEC/xzcxcWCzORCWp8yTC8CnSFyI1RacAHu6g3chsEmPfxr9tjHAY1NqqGjmpUU9l4NWyzuM1nmzSuEVB6Ets/6KdtekyISYwL5eiQuuScjikIKgZewfJCIsCq6Heza6CRetP0iNWvE2m1GmEmHtdDJwJL0mTuWmLqUKLnPFa5ZS58sw8huzue6Xt5VAXwmAmFB5aM8Ekc14VYVCBN47KPsDUOMXEwWAq69731aa3QTDBzHoVtD0IoTCYqmakeIWiNymsuu/J6hZY3MmohjmXbASXvdUB0zNaLZL2t8SaNJeqF41ORImPt+k8vTNx0jqIvFI/HCr1dFJtEVnRBFxabWVy3LYkWplQznlJWkqM+ZOlRNSYOxi1CadRPdQ78woXVYqgMJTqQmY1EH5aVPFKGl4CEyA1GAFwVxAWKj1V5bqkxoieQS0dzCTqc7KTeCL0APIWnDYFNNqZ32sJBOyX4pTMJPpYhGCB/iCvLXKqn8BJpOV2Tp0CRzpwJW3kyZ6aQL4JHganOrAgxU8aSDx9CYYfFuVUQamZXQCD6xhxGBopB2/xyqdpJAj4kPiGBrUk7aNC7qQnvtbk0YTRpCZfxKqAGVJSfaNJp5mdAEQ8GEcTEBGHGOeZkfkHhogA6xe2UTvXnpHEpW00YVSw5QfvGzxYpOxJ06juohCHsCikcBcNpd8GhXuPLTKuoVF4MGtoa8KhxzekWBPQhhgdpFoXeJjVuKvfdU4zPnUiQ4oeQNyBU9GkJeANA7x0aMmCUUKWBz4JGB/fuhSqggfA4EDCG2L8qY42ZoNYGYbcBe/hRPi4OiGBHu7CUMGjnpZRI9z644XJNvDYd9QHFMMwxvIdYOsRQZB5OGybPl+bnn/iQAki55MOqPWgbrsgNjjgohPivLR6tesAezxA1iOnYm1wurGHuXPqORHAe2qW+dmUEqoKu1TK3374YQTRBeZhg/fytJiaFLsAelwzih2HTbc1bQonUiwJC1PhUdMtDDgnNdpMCZEsMZeYOaBdAi5LQyi6fn2wDKCMCqjlKhdEBvVeIR15oY0dMiCNS3ZqM02utGBAlLi0pjcTTGA3LRmOvEsBVs5PS6bJNUngixUbWGTX+KU/XFz13BBLY8+KgkWmQbF4tMFowEhRiIU0UQFusy9qukgRYQs2KogoxEvLhSgNJDBkBX0kloRFQUj6Ikaz8W7alNdlFdcMuhdCCh3bE0x3SzkIi7Jp0jMOQ89dykaua9Nhax211uloymFiSWIqqvyb+DTIQ/Lv72SjTZuw+Fb+enTr/KZLJCgu4fH7g259SJPPfVW7lGAHYpuzgqq1GyXrMsLFWQzlpX5lLBaZJHzSM46zzYKumAm69l5wcIimKfjHYjKyWnKwE442b7KgS5xCVCWc/QwU+GM3SRULnIqCUOWlxfZbtQE2KMpdHWKJ9pPUYVEYyrQh+Ha6H5NBwZRSh8UqCa7VYVP5NurXP8nuqJyJvBTBVAcI4EVb5XJCOKW5oJuSWDMLbgJrh+YkWbUFtdHnKfqCsCBfLEmPIqrkclFQoSlbjAiWDLBFtwH2qyqqJYd5hLFP+Pi914CpkpegC9GSn5vKoqDtPBjS2CxgWGlMTnkmwnTtbaDtTvSJFbTdURgaBwRF81lTWRrHxcHCpYjoYJfR7rK0A1FhfHdbZdJMJL+XtwCDQYRsh+ntbkHVvNiSdQ0Pry2phKa3YJLwiUrASNMTlWI5GepWTsrGybEwwbZDrTjqaK5Qig0CMqWpPuNDjbM/uRvBVBNQ0A6F4CrCXd0bYPFa2nIbdH5ANytGreqEqOwxCbPVUekh0aex/qRUVe1AS+CdUu/1+uPk8PuPhK0mhcvPFVsQ8YFC6PzgXZSokNiLGkfcb7tBsz4VOW5H16JsczNeNIA+StdVhNuYp7NE2AeEoJolfIrLD7LgudjiUMcJzkUTk9E5yo0FIG20yK7tgCoAackI8FF+rtgCVSBKLcE4WDDrvLvIRwVcWtMITW3BJOEzjVDAtXiqUpTfy1uAUe9kEb/VKpFyuDYjW85VYsFcD+HxowyoGmF5MYKpHnAiZ30x4TIGya4RtrPkBjWU7pZseMGS1oFnJ+ct4wxLWfj+Ai6F/HlbjyJqn6ov4Tz1jYt3n9+b6N6sB3fKxObnDUXqGrI29zxH7rK09SNy4oI6P5Yq1BeIpZfwIuTP2zoR8lv58xFGMUc1xvw5PQi6gVApYeRA9NvewHw+Tf89n/egtZ+V83Cu/bCaqm9+gfqLZ/QcUuQsyrV0bfwGO0ttkueIR60RRkX+epoD3IZSFehU0a3xVEsDoiPKa3bR6UvbeoRf/vwj3c2mM1N+q8hxwNc39kz3WramxmxWBWPl61zVrk5vANzLZM2ITkI8B1maW7ruPEmDvEb3JKyPbkNfQrdBLO0ywAwMIehLGM+NdW6epUprgNvQlbkJ6pz8Vv58dBta4OpV7qHzYDdJZcK7gZcWUxrgNszSPcto+O9QATxB/8lv5c/H4QppsxB+rf+ovtwky32q/xDXoDTlOFDDnhZ+/Hybu18DWvir6FJV+rpHYmitDQIOIvE2Ns9beNypMSzN/uDYEPyFV4TkoN6I+rUVqg2gjuCI27yxk4326MgkFechqDjH4oSBLxZMpqBAf7ouQcBU6jPxRzYlT6KLQu+lCTSEYGCwGVSznRQ4bppFLGi6wfDCnJZLE6CBclSwff+nxkOol1kduKj7l2eF5iSWhHlBQMET/UrzbUy4zNwuwu/HqA7WwzXxTTWQeJ7MM65JtInxZT9SUCLCAXvJKzwggNXxzmRR9Sc0w9eESebID7ZxVE3SQC9RYxpJGQiLYmlSuw8DSehxZzTuDbHbXVXN/2JJvEERKTx4DN2EMQdjsVQ1Hc1ol32bseQaiYQHBR9K9xF0VE+781Whe3RRnwox6bp9gK2Pc9haqrq+1Geh27WnQfiW/IJgQvesZh/Rv5MyrmJJ+FMIAN2XEDI91jkdrAr23VEH9AeOCR6P/Fau11cYwUGVg3QGcFQNvcMgDsVLi8XPTrkJczOZTsr1ZzSg/FT+emxM63tkUQChVGCsNugIJxqQ90MU68PRdzFPWvLx420uvldpq6vohs2iCNTQWj/flKI7jT+/e//6L+/f/fL2h8e/uK9++PHVz6/HwsN/8turDz+//v7jw/f9/dX7N6/+9NPrh4/+cTeIfuzD21d/e/2w+h+vf/jl55/efP/q45t3bx/+yw8f37/76+t/vPnh4+O/fPP2x9fv33x8+G//wdQesuBnvH//7u3bzk0n+eHXPk9926/v0uKYpW1geYqNWPcDkOxmgAPJu3o12Ys2YZrsJVfrQZKfQvXhL79/99O7933h4X/fP+jtu7evn/Q5D794QuE7H/58/39PJLMo7QTA58CPTCZjbc8o8+jlJfkUOaT9t+LeErqUuPSIRmBEmNAhodPG5qqeEU5pDurv88d3LeWpGILB6zwETBNSy9VU4wvI6Qnl7ktMgdSpegh4VF5H+Lq9mKVscegEqQIfuhWLFMYJ5bztnbFL14baq5+J8HV7MU3ZojOlK3NA/qORjAYjhzVhLvJYU+8FLN1VdC/biFnCFudNsw9hrHr3QCwe9JpycSYeCKMWXUz3up2Ypmxw5FkMn9u52faS7KXqU0W4mtBtFUvsr6J72UZME/6q4yONq0RleOSnV59e//Dd0wMjbtvDwF98YCRt+NTgPVgOY2IT14gU7FFMDh04dQACWSxDoUEaFSVrLG44hsI7NYUiaVSU7gAVCLTyh8CXLdcjZciCsGyJSLhY+4TfNpJhQeHkUlG0CbyM5Gk/tqRGL0pZ43pbhOVrutZ+ViK/xZNslARVtx10RDKBJYhiYvSjIxwtApKysN+UrsN3NOWb1qtZc0Dr2+lOXczP0g2TF96gpmjDMBzhXZg0Oql+aaKMuDxJzZLh3x/Kp5NSJavOJqMrefJ8Plj61Njx5kx4gX4kKgrAicZjaTHxXMZs9H/yr2VgUyyJsiIsEQwRi09iMxpkHRUadsiKSylyLCuqv1GIQViUzPVromN11dtg5wanpzgXBWVfcDgU/zzfEl2smDYjRPaCgwGCHhrb9wjLxQQgLKPJIAz2WFnUN9whvDNZRzJ5MCmWGPPmBvomCHg94SRZFNFKlhhK+ETfIDwTXZEjl1IEwqJQfs2vQ3rF746FeB6+eU//zG//9frDx/5z/f/6+K7/j//13/1//Nv/98v7RyJPTKnvvdVf/MtRp323OaC950ipBy5wvZTsRZswTfbbE8hI2p0vOGb+PtLOwua5rAB/NoYXEi13EaweDZ0a5VICW3MDm0JDwy04rVVNqeiukpqidQL5R160AgGNDKE0GG02HeA0ah5qqGPEqb9RjNlzvFM41oWmxGAvq/PexkxHrtkeTSRlwJKP14seVnEHyAFXtmUGo2Op2UycnqzgeIpTcEQU5sY5OUU1RndaiKeeqk3nBg11QCd3K+ou0ZWD8vFY2V/bD0Lgo4RxNjZTclxVIyJIxShGo8MQKY0jw07zoM7dt70+dJHRpHE0XHckEz4c6qbg0/srDadZ+MxIlNxpUk1w02rWOIKN6z4Hp4QKi0XjSamnFHDMc57E/FGP1y3ryS9+U88cevrgbcoF46Vl0/Pkks2OkoJ0cJtIYamBPyGpeXJu83qQhPd6wGOINjNXqFA4w/FTaRo2l7lWb/VE66shttS4p6ZeFJshtiSXePtLU8ixhFGqJnx2Hs6GwyqTX+b6fBSr+QSJTveZuSxgxYTVT4rVqBoy7xDhJiqg70NEXmngPGrVFDWzXa9iCzdZ/oTMumpR4kfoKYB5bUM4ZAwg9Z8ygNLWw+lt+KW6Am9CWNvYUbLA0uCanjPvHfY7kynWwpAZK2rcsmBkvLxu5pRAoIH5aqhpo86ZkvLaUHlNPlcQ9tPuHWRQDFTUyIwuqJuN3uPYnJz9GZT06JC9oyGveCQSh1woviloOi0+eaRWWXzCgC2UiKmpncgPinrl7iKh97INr8zDP6VngH5ad4nUNGaXeN7GuNJRNTmJtbU6KEaM+2RLmdT0gXANJiDVuaqRB0Yc01B6rAmbpKzttmNRHSpsU89gucYiEVXD511MMPjf5Xeqzl2PYm16KDAlbLE9UTgjg9kQ1UBo8tQyhheSkQnsXtkY8uRZRIpyNE9GHwWF6ONqUmgG0woXHSI7Tb5uV4oYtLo/0KrNdNKyqbEZWcMa93feBj4JNZ0XUNT3fsnjefDSclYdG7DJzoOQiyXmM+LMLHr2F4d81rk6d8Wo4IphMFRQUnTCihcjFgBQRi4hp7y2yKn2R4se8lv0kN87B7inYVP1XPNCauCK9WOH4cgU2pkKQmmkeaRMuP4mc1F8fSbC1+3FLGWTIfIZM1VdBJONmc1YnUmvLWW5ukuO4RzSQDi2sf8le75BrS3yGhLPoxWxg4gurVhjZgVjQq3XE31p439LxsTbdgxWFjuLyPp39Bjc2e7TVIw+89qqFHCzEYtBxjpiKYfuhC1/wn5YFVgLDCHHGFKmeuKMso1qo9gZDGq9kPJ1u/GCWlMG+wc73gSR5YSyDyYTNLeCs1kvpHzdbsxStmhjyti942cnPqp0d1bYkwJAbeS7q5rkLjgQ1aWBK05Fisek4BuCE34Lc3D/cNIu4wjJacoqseSLeu/TdqDfLtfG9m4iaDKSUqIycBghv3sxS9sgWVgUMSglN5Tdr7kEsHEQV1YAfvhrX/j51fuPb34nhE7bx6l/8eV+buM6jocVyrdb+HiqfP/zbWL801ykuqmaeK5NMm4TizeILjQFxkUxnSODNJAEfE9eWtKqnsHI1+ieFCftb6vx6UGNYaMcmK4hHkk9hv2McD7ZGSQQK0LwTVJVJlXXaKiGto3Lbhz8uPxuB8aUdme9+3vDwaPNpLqdyY4KfIU72HUB1ntweZhxSyTYIYfw3TaNluJyjtCcH8MuRRneBhF91WYZblDf1M29wSBn+dPjcprETysjFI+JB21k2YaG46VPDhmQRVMZhL04G3h1ydOu8gtXpnDwFAtmalLduk2nYnlpUW00bGBJLLIC4NpBukWytHMZOP6yV3bNmtw/dBl4adH98EQyq52wGSFPzbygOEoQh611apI2LYF4e56itWuuomZW0bBri1vIvz/EO+nxIFzLMoBZIwfEvVYfAZfWVRpo8xWVhqmra1VahZqfX1Fp4F5dq9Iy7CaV84PmfbpOg0P/onTa19OQEjLWzQWr0YFcyS28fqxNFUujCVOPDgw8TUoA0Js0VEue/OAcJzVRRAQ7lQvb1d21T6pcjpcW2279mAkxHhKV1VNQSxyaUzXJ/mTkxbanxBajXFWpzH5QWOkthY7b09H+BD0uc1o218OuJAGHe5I2mxHD9CDEIm6nTlYsCYz2DI+l6FT0wuqeSJ5GflGVVtHJgmfhNzVQwfEQyAAri5e5qlk6WV9msfTJKY5Gz4d6cPetnHqCnUxPCuj+bIjMLuSNnSbVXSJEICyKpQWmHkLZV2czhLjw2CaOneEQWu6uc/jr7NOOFKMM75mASUSVuy88BFREPOAWdy8Xiwy6q+ZBP/PSatb+pAtjAHpzFwZjfDvNk9ecC8QLk3y94GnUFmidqF1aOl+4I1IKwqJYGuDXBJy5WKvZTCysx+i+DeJJRO0h9KcfzvooQU1ly9vcxM2TqWzgx2R/0+GXpo0dIq70p0KDa8JLS0GyTc0+dpPtr19zkuo+yfFhRSSp/vd/Pyz90XAoBK7NgM1uNqlf6vg5inynHNFzaidl3k2lfanECuMdhO9tEjySbLETHsCI0U6dNDolbMzXRcXOqKjYF2UeaBwdPoaibvzQRcWHHq2xoc6moEJyxY8vTPlL0XN8zFjOdxCHsCqjBi8iUYCwm+3JGfEnNyZArQTJJhywWGIoCx3TohasipKYqk3wTbLFV2bDK3OC4pREEadoVimK081mT/vTfIPLLcDWxKXRrcKb3lPqa1dtaEZ7KtniW7OVz+9pP2nVFyMlIqzKqYED6PjJtnNTLcrUqC0ACG91Ds0PCG+3egVdqgG4YiMMd9iiB0g1JNl8JYG0tCuOhdKh8QrCZVMCarMVdltsEQRx8Qbbl5JJXbMmTLgUVm3jalYgAWFgL6KMw4/IWeF+dtker3y/ZNOL2C2uz8grTx6WTRII1XqHYMJYZNT5cddfyVMlyZpZp+p/yOFET+beuIyuDA0Gx47UpJsk7g2iBuM57OTWJJTozsZtmQQTaSZBRQmiGu8TlISEfjmBTqHXls9QEqLN25F66DH26WIafQj/FCKLnYnkDuEgcYJ0wDGu1IpshPLkdJ+wbMoWfTbl5LGrgH6qqgO6o2yY8Bq95jVErUf61VTADP2uIMqX25p+R/a1qamjWmQTA1CNH2QEIo6I6jQRMXHGrEL369cirqOFm95ci96oiGWtxM5UFhEbTjTlvq0Gg9YIWmyzIawRo4LKkLnmVYEQ/V2FhLcTpasckxDd5EIV2aiTWjUUW90UZlQJN7ygQSBuSHAQLKo0OrBUcYD5hZRtxNflhk0eF1L20Qbn8j6PDhNYNXKx8ZBfp9D5yEtUqC80egEV4XX6YZayhSJ0AUvcyT8wQSS4DxZH0DwBLMDBpQ3xMikUk/H5kIsOLuWwA0atBpeSRiOkSUDAKrktyKq/KX+8IrwjOVM2pTQUxwA+yVELuKdR+1Ix6E0V/tV4ImUb3CiKgmJamSp6ENfV+8Z19+NWelXTSWsObyWBUpjE5OkhqnAzM1qVe+EM8uqTKrmhlwOmIen9my0sIFWBYP4gelUpS3lP/S6vDDoo3uUVnX8CDlg3VJRYHkH2/decTf8QXVnEZiFVUvDOyr584f2q4DVhHitPoBqF2UmU8N6SfkRd2F169a6g94KqlXJKxRCGmgmv7qSq0AW2sIPXqsMTPmPPCkU7sPzMjTqm9Vvr4R18H9eBVyFk1VxDTz3EuCZEZIWjR6bBRGBDVaB/d9unmI1qBAnheEUU2OSVDKR9Ks7qvlZtDrtKqyfiqvBuU1H9k3c4dnwQJD9XPoHd2YYezLpDpYcrhClJ/2PNrbhiD2apPnu7kn0Nzn0k4sOKqMH5r1evaCrM/3j746u337/+2+u3Hz88/M1Tm8Xd11GTg4LAu/GlXbHWsKHrGqqzO/DH7tx7xn4Z3Sheog2ioxeQ0tw64bB1gpdGzWtUUf4S2AnibrNo0ogieNrZ3FTBCxWbYE+7xpfOVTWi8NLibmY1Y4YqtNGx5SWBuIDtCrlxJlHspsnLOapwlucCP7GbDoJZdMJ46EIOwqJsGsAUVYZzGMxYbFnZsIC4HwY2A4glcU3AVy2MbC3O1SR4I1niqv4KD1baIyxg3zDG1P8I69d5abERpahGlJxUg6tYEpcEOyv6JcHpRsWoilLy5Afn+KCWAseXJMBuCikIa2JpMKSzqiGdYU/LLRbZa/iN5FQ4ViyNXoCgZu1Up/KadTOZAyZZ4oYmh309VRVGl6qKY2k6Bd7lYvOaj1nN1qIEPMLXpLOZVQ42kzj3l2ymZGnnsii7LEWO2z+wQVRKQViUTINr4jkgwop7gpejcx0YBXaNrPKQ9Lij4FTBBtWBQ+inJBWm6iIE4jJWVrMLalCI90qoxZIQavDiugLFoHJxVrF6JdQ+asi8qiL1uSoEBrIiOIprLC37xDgzKgQcE9hXMvqagiW29h6tfbOYOh/UgJyr6KZRNrWWUOA6pTW6ugZCT7COehIdL40etKLqH6ibDdFHrGb7CZ52NnVHKXVX+yObNAsSPF3Kz2FfeDXK/XmFRk9Hhw+trKLHhJwLXGblQtKSiSLRNtwXhWwaNn4QsDIvuJnbPgGEUR6KTQwgRJU3oEYgxMwQAyX5HYnwCdRFgfCr0WY8ZgzKcYtZvcHIvcOhDpue5KZjAG48Sxb9S560Nd4NDhP9OeqcoSiR5JuHSV4qRDR53VTsDuyKOSKXTQN7RAaj3o9cxAk4XuQttFE38ojeU5pKRFNxFkhm0FXMlBIESxzdXuW6xmZ/rGAHY+cJm6CLmCPC7jM2QVNRCLDJQwDXdxPDA05N7swVB8pRqTdaoKImjdgY4E4FAE+uIWvjhsgJMmt0TybYOAySZKVFqg4kFgXXQW1nx6MaK4vypMf+kVcO5k0sCQ8UeaxK6nl86LLUIw7sudSrh5GYVsIPIwXkUSbbFfSMaqw0oOIzcLxI4PTTSIWb0g2fRhZvVz3i4CKyRnd+w7kJV9HtTqUB2co+37AOU/M5FeossBvDXPmCwsNPR36DBSQylXZXxe66lNHLo6rtXce2lZN3hzQYDEPUdG2kV8e1pl+4Bm3J6ipR7sgI8MVB9F7omfFYiGqiaNedWBha9EBRcu9MQuZRjRNNXiUZYuUcG8dPG2TiatLwlMkmFxIjFoTGEy69esdKlvxgHON2fTNtQuZeDeLsjGcMmWdV/UbRRYzsRw0zFQ20/FXX2s7YfdXoQdRBtL9xZOlS/4///ebj498+qV7JDbTXr69giTfhS6tYchJD91Ky05vwrWjJSCzdVjih97jEwDVr3Z6astsDWovxbz/wQbg/16nImJMzI0S7LLb/taqqY2rcg8JLWxAF5ul4jJmYUSfStdxP7blOTCLv4GM0cXpTJJ+xQMhqzCaFDTCpUkSOMeg1mc0HTil2g5ESN+fLn3UQYqyEGs4wlEl7GmFPk2oA615NhHQdL60efhvNRpynciPqwIkqpyIRki2u/1BlRDaguwemBKMKPSSKSoM91sLtyOPsReJtZ3QS2x2H3gqQjeFummA4U2OVA4eXlFCCoJHbEs+K5iIlzIlQtB+H/RSTKhHqzi9wVi0PnsZMA4+jsjIn0AaXWbV+Uxh03d2hJ92xxjY2kzBp1ZUZNared7E07lNW6TWCjzh+fPj/2Xu3XUtuJEvwa/L1wHknH2eAnqkGutBAJ9DvUZmqLE1lSYKkqlb8/bhthdNsr+VSnKSbx4nIjAb6Ut4hO7ZJo9Fol7X6ErfhCevEwEpLI+4X6RNAVt3OpLqbvk0TfrqYJd24eSuQvzefTA0Q38vC6x5pMV0uJqvToaY5q3q6sFSZ26Qyni406+FN+Oniag6c9W3zrpnp+0Sw5aWQ+yyZCNIEc9jhVGZCxV1km6S6gHYnzF9fJ/zE/PlzFNbm25G+L1KTT+9rmNQEKjee60urck96NbEdJWcqWaZC7Sj7b8WiSFUK3ISfLjZQtDlhrLgLVPI3n+YmGZ1MeyGY6Ig+IOxWJ3UuNERRGBxivxg7hEyCiLOB+zTfLvdrbrDtuyVgwFAC3UVPWs2J5khcGcOF87oVHOtelUunvs57wF7GcIGMoe0Dc6sqj/NKa1TDreprzpmGsLbnfN4Dk8vjiTsCkXXtS9DAWs0nHRLeqLgs71Aa7i95DRD9JCihsDFyhC/YT4SYVrSgPF+GJ/gO+u1qLB5mDllj8c7AXubbVNYqNh+HmVoyBRpveAR7T4pNZbMik82VbQzvJjhLqOwelhZc2dVUjxOOX32+N2U9g4cH3d8tCOM3Iq2c+aQmmYlmNEg8e4KsmDzeHYOh5oYBdLOnB6+lEqjjRw46Jh3Mt6sPxIyR6AMYDloQ7Te1x0pZB7HR2atolnUp73YG5IjwFfag2IUlqI0yKHh8sot01VodRuiaRlPzHerCzVYTcYWUQXA95pN5COMQpxCo4Uu4+UzRWZ2OpANj1ckywbsoJW2KO8LAoY3SCT9dHvaD+6ZVppRlyEur0tEaGZmarfuwWVqddAAS4y1rc8eeBwISykzNtmyaX3SRU0CGiSPlv/1/8l89Pr6uwClSHiv82Rc4pakRUMd1CS4P0SCu86x7Hta5YVrSboA+hgq1MEoQ6nGIVCPtssexSjlCEK+nSuxZTrzmZwlefFapfZk70Xz7TRJyGZFAGqi2yIREuMZGp7lxSXWnv2fef5n85pMdpKuW+bXu7OMt5DZ7chY1OQ0dDWYIqTwXOOjKrYa2REdCELCq1DVIvBMamwFXbik8uF6JAne/TDF+ETh+CF8ml99lFAAcQOkEVSbsIlhvSARWFxO2O8fkM8DVgyaEtW5FhICMhWlpYo7opSASptdD79EOQTjdjVI6kq/DEa7SaTkrk+wsnyCPt3xRvIAPW5A92pt0yO+q3BPWZERXGcR2aT5NynGdz5n9I5Fmq1Ypx2HQddB4e16j9YC8pZlGuCaXrTwSPZc1DlvtRoCJlhm6oer77VjZ+A/YMVnSBPw1b4nv/vTj+x8k+t8///s37//w+mdF6ofj+eyfFdm0/eJiXMY5wHD4468KsxPaPmOgEGYz+GIB9BNAPo4NfbWHWDUpddV9rf/+o4JXLQC6vP0s6+urwOewh/12hZspSw/l9UGoBxjBc09/joux/Mclb32tBoQ0AQPYy9KoHlNhJyqnnj2afs8kN5fRMFmMARN98j67HmOe6Sxo+reYRtIRt8ur8Sw4ukzKnakc0lqd46OS5Z3mcpPnzEgj0gaHYInmm7bG8eNKnlIRX6tC+eWDN9JpAkqqEgjfEkbR+2n2sBQt5Juu74x1Xf12vc2can6dBrPtN0tSl7EG3Ye2npuFdUlWPCn2e13RtSB/x4PIFDsP9zccMt2LwS6R1SANTgF+U7mL1sA4HB7vPJcj6P8u/d+dGVWCASPV3v9MNWPVwfSsFn0Qz2MSfSAInvSa9hqI4/wRo2DTTc9Mx77fe8TJrd8uOhGTzrL0DAFyc/abdrIkVrZHmoGRH+pDAcS91bKTyNr8ZIfzd0YCTrCGkS7aqwN5kjR7PpfixyJ+Fqa+guZVPQU/NIaLeDH4+6KTKhbL0mZV/vzD999+9/P+8f9+96d//88f/vD6tIrSHnz2aZUzIgWHx/qXz1FxwyLcjZD6Na/wMWuPWyDCveLSAnwiWVAfrr/RJYE4Ponc+1ZiWbLDvTyGcncfCrY1bixq+gbBoS9iPPIQIuCl3ih5f4VulwW3hOW5u+S2xWIx8kRtiAV3m2CflZBm1HzH1p0JdrK2niFteZvg2470smCP93jNCNolnShL/aiYd2DJOazxkCMkc9DJo7sly0y+AzqDtFXk9okk37iDq5I9TFXyloCHlzx2/USwkEo6ZKHPtuYmwZI89Xivn5yA2yTftn2rgj1SNImBaMYaqDCsHwn2sSUZWURvepdgnw0XBlMChLxF7m1btyz4Fgt1ui9OfmaqLgiVvDF3CXYKJJ5mIm+XfNf23X3bf76p2nzSAPfzNz/+8OO38ru2f3733bu/fPPjH/62bG3/crO1S5SNnyZb2+/J1nbO1t6wCMtiv2Zrnaw9xKJYAcenvIQcSHcLpu7ukrtlD1jwken6FsHXI3/htHhO/pS6NktKFA7AW5hnB8ClK3YruMRjtsw4C07DpccjGliemwWvWrFLBqAqztSROxse9YTedVbyZsFBoLOvNxKerMV9kpcXw6VjqND71GdvQm5KR3a35BE8Cmoni3Gb4Lfc9CgUUpiGmpAL1zpDSbKg1rowpxvRSmbZccxDZkEq9J/tF+Jx4nRA82Q40OFwUwfRXXJ9biCZnavFRTB38kbsN5VMEuJ62G9zmnMQJ0TORLZQtjUCOUycJkQ8vO8sLEv28PTFDEofv90jZD4THPsarchHV/A+yYIN5ZDmOTGnuwTft32Lgj0YaiLt+KoyTPCNDG/msWdYNytOwE8FDOtmmhjhcwQ+eww3nbw/8yJqJjznqk423yz4gdLgApqqoieyQmP04f4C972cbuTwNY7DzCu4OJOwP4wB/u5GyS6H3vGYfdnJ6Anq9Ru56J/+9O6v7/7l279++/P7/X/65rt/e/fdn775j2+++/mnP/xt6ekvtpn4WKHPMTv9qXqJ71iDValfc9NOpj7MAN4Hd9tc0JRPBNe2hiWMGc6Og7M3Sr5tMVYFe7QSszZj80COPxG8n28H2JyznblP8m2LsSr4lj2XkTUHSI+zn1nXJhhfsTN3Sb5tMZYF37Pn+wXsUG07ERwmoLP3ztwn+bbFWBXskeASEJD4B/SUS5BvWKdjyS0ceH7X3riPgQ6cVQ6N2d9CUtDgCXE+FN4z6rfJvzXH5PsaaTq2HBoV9C5v9yzw6tbdZEnDpQvg9IdmJ1aUK5Ykrx5CeIiK4pZ0VxygSc4saQSPQonjzt1jSFL3aw5dFGc/dBwEBG9oSKPr9NTx346mT+qJEFCXyN4+akdReGNuWd/lnbvJkGLxSDifSQ7Fh239iiEJ1ASAcwo0BPJ+yTcHeKczQ4rBA+zKc+ccDKlR64S4dIco80TwHiK5sPt1tqJeiURLXpjgi9pGONASHkUoA0h45ADFZhTQ4GjcsrKrW3aPAUlzy/XQ6OxnTva0NzKgbmBsTFSEhKjybbv+OGcDGmvcvR9d2NUdu8V+Hp1Q12/ss585fIh0lu1nD4aQVEWCoXoSDDl0GKP5SCiU7ljY5R27x37269ThdXsiOBSfVqhV+5EYCGC05dN2EgPF6/vM9rNHQEsPio8u7OqOeUTSuSAurbAuOIzgnkmOeY16HNv/Gnbp7f/LJTd4JtmtdcFrnW/a9t28o8MD6kTy7jiqQ7LoZHP243+TQYWxFq2/4hAsrvNN2757y+wxKcqSt0V2tI9vzraYI3zFtm8HJLv7IVhc55u2fXNplmTBEuQ5wA6d7I2EhQ6VuVN7ih43u+Myu8wvbZNt1fxOj2QgS37kLz3u33y26/dIvm81liXftO1CGXvTD51gt+6bc5vk+1ZjVfJd294dntGngpNHgvB0b+6TfNtirAm+ac9j8wmITyTHNRz3j2/NjZLvW41FyR4M2UMBzV1vMhbsdPm2xFHiTYJvW4q3vNNPtPG5xM5+psu9e7Yxdwm+bSne8Do/08bjAjuT63Llnu3LbYLvWok3u8lPlPG5us4Eu9y2J9tyn+DbluLtLnHBD4dgxSftfiLYJ+teK0EJ+yTdzwS75Nwd1/ieHffJuJ8I9km4n2yMT779TLBLut1xje/ZcZ9k+4lgn1z7ycb4pNrPdtwl0+64xvfsuEueneU6pdl5X5yy7GeW5JJk91tih/3O4wXyAvsXBxJMkitoWx7F2VK0XeJ2ySN6sDnUjaBJ7hIsRC8OGDona3GjZLG467GSnyV7jKs1pG18IAVddx4nglPzsCXpsk+fSPBtS7Eq+J4dj8UjQ3giOGSfMULemfsk37YYq4Lv2fMtebDpsOARXLAqeWNuE3zbUiwLvmXH++bCckRy61gieP3ottwl9651WJV7y2YLftX12Jjl5uZR2uVNuUvuXeuwKtejFB0Gklv4/MoTwT7bkog48C65ty3EW+73/mrc7viVJNdnV3bt8h27zXLvWoe33OzaYBTC6UeSXJ9N2S+9Hj6J3LvW4S03e0TkUHf6lSzYZVukseCOG+JE7m0L8Yb7HUM7aJd8f+aJYJ99kRrepxB72zK85W7nePCCOf9MFuyzLWV7ieWTyL1tId706q7Uqh+Lxxi+2DX8zlYOLIFr12wnJuvi4ndZ8L462YFsNAVEFLtNcAibB8CH8O/V9okk90XgC9i+Fo+mBs2xR5fZTMdDco+PFjgqD8JpEiyQILc409sE37YUq4Lv2fGwtTWwj4/+zpE9TuPJztwm+L61WJZ806aHcdOpuVFycvHuZ6txn+TV1bhp2/NEG/TenPskl+JR+Tpbjfskr67GTdte24EX670590numwe++tlq3Cd5dTU83l970LohDJFPKxBLduqL2gOhgchRNwm+by2WJbukUDNxUzn9UJbsszfSP9xxpP8mwfetxVtuuuRDImKvuvzQE8lOexPH0fp5u+D71uJNN51vG68fenKP+ezNyaV+l+D71uJN3XvumNGPqR0Ma9eqviRZ8BHXGAQQfDjXSQI3wYel9/vDlk3w4X2xD0BiBW7cT92h1wRurMcAwhNwowf2j1VBnX1xwWBOY3Jkz2VIE4BYlyFtxxiEWYag3PJRv81Bh0TfrrWSGBWOQGd7yUtmT1DU4yXhMsSJL6vLEIPGbIZmoSCmee3a9jJxhJsLqpJV4ZA8P11chlAnZcdchm0cg+q6DFvUWvDx35b+kgMsQ2lqIYm+XVN2TBhyhc3s8549VO1R28LCiVZRtS94fKsHsZtVQA0heWxX28MK4CxtZaJpHisgE8RosX0unbXYhgd3t+zr7sv8feMPPICbRWU4tHX6xfn7a5ytQ4EUeHJcHYGbR/JoQzUKmHvB4wiU8TIAOXa3Y3Ra0pSFFiCQwnhY5VZLuALNg9DDanB3hLAs+QunKlVeSsNV+ssPf93/yo/7x3990Cn+zx/f/en4L1/NTfqr9z/7FZ85N2nyAEK5i5x0a59C7E2LsCz2Kz2pk7ULxzjkFHLxGE0Xwb24CMbrSkikkbFbvkUIL+2348ZSHeaFJezXAJUviKMe74EnrYymARVNqpUqOgnPD0WzNjgm/HR1r9AIbhO8agQ+aSXqlHVgyTqRm30SNFlJ9q4JPjPM3Nkwx0DL1G/TMqcOT5ZZ/oBHyOVJ/aSV0bRm1hTZnXYd8IGWKxHz7J+SR4OiObC+1pVfqFPTRW468ghTcHUpa58c+tsE33WAF+W6eKmE4xt9EU+LjlJ52eCd9zgjx7fE3+ZRmjroUWrzENqj5JGReNLKaBo6amqCDHVPDZ6k9npN+OmqpvGFFJ2cokbRQJkuq5WGIpuPc2I9VQFVNM5NtSuK/r4RvZC1hnTNSPmIOxm/z0ls4HrHWgPyqdlk3I7tpeJuzE9zN6YGdjc2vtOc9FSdjHkPunyTznDpOcQ8bk6saFqDLz3zGIUi7TpdgWqq38xB3DjUDp2W1OkkGq2Mb0snj4KGvq0rimNke0gXjdSjXD8wZJWWZRdPK1Sd6ME2Jriy3451Ux3mulWt0b3XBKdLReFJq8mopbniqWnc6FIom0axemoC7nDywLSMqWut0Vdw0fthWm5YWVvsgAhq7dcEs3lVTfnPTcuzLWJumuDg4U1uqnR6LLFiVbIHgaXkpaFVw0twxui6DA8Ms8eKFRfBZz7hWHndtDrbGnTThoLYH1WfSAmWWo7+5blp+una2g4oXnnJLbPQetHd4p75+XGH1hDlg/e+VUIbE2pglqpb15sm8bffu1X2fYbAWKagHGgY7N/39NWhZ5rzvkuwk9Fv/Z7DJJis3cXKcCX8zNejdzrpBeb6M/f4CZhC3E5pCeTnH1geeErNt9+P/QpkLkpb41bmfrBM7SShxLkwU9PS1CbMQxvfIXfFfqFp35rvsd/NC3J0LqHfo9umuQhm60qaTp7WNV4giDCffifw2y21wQ0gbQs+tqU6TdPK88KxprVRrBPxDNwV6wgfPYCpegl2c1webnRDdBknLxoTPcrKMfp9tTsxT9u03YlHN6R2J7ZjQvCp6INpp6hZ4oSfrvdRBij6SN9mQU1TwKY0q5Umc+ApJivq4JJ2hx187nUUjCTZTnJTw0BkP5oOPn83rJjvkLvhWaibB9m8kJrlfIfgSCyoPtDlDxDceIdNuPkxB6e6ByU+j05oHUWxPqHOMJ3K1+SS/9syVWvC/uzZ0P+ZbyabHdBTtxcMd6NPSfFJqalopGT2GBTtlk51uhqOngGNScJaGwHsVEWIOZHrcCoF6OCOUzlMHsFTbj/BP1waAKGTAOquymUDC/P5Zg2s4XvKfJsWphndGZ1r24s5CmstiKRppDbysG1UKxtNW6Y16R9h8iPz4IfPO6qb/vR75d7ku9/wetpjhOyT0aIRhDxHs+YIQp+AT3MEQT/Nl515xh3/YdQciGY3goe7tzodf23ONqiaE/HKWnj/VBYuzWFw3TslCvawHN7fqR5IWfPXm0+/lyZIR77JpglcxlmsTlEVh84+Kc/DjbzfiTjOc1uWwPEoOfANmZDpopPBvejTK06TCTNqnCajn34va1leIp7r4jPFanU61Gzz6fWLZh4TJsCGNn7enbKsBFDqFG3vXu2o1c75t3Q2/9bw13OoXYLWzUxbgcuYntFJ7wgsVMk7FtTcXTT4Xmtd6ZrFg+/1O0kOKTrBTDzBPHPJxW7HTOPcDJl7g83oRcfKgmqADVzyDc+MEBwUD+vuG/VPy5AqtDXYjr6gGqSOmmaab93fKs0juDjp+ZTWZ/CV5tOh6OgU58tegJbl6Aq4qGWm3p597RoEAYXHhYe58Q8tN6pDdacGw6qpyWmfCvSpr6ahEBCHveQ5AXjo2dmld69MR5zd7bb0gsO3YQ9qE9hnZ+/bM4EnyIJ6tJoImmmCsEpwA6hPYH6aG79R6/S+FQnCqlF8oj+rk5nJ7ljM2l8cFc9R05DwUNTYx7SZ7cWlGmGrojPH37lSar34b594UQtv3mVvzyUZt3vk+rXWNVyZCHx1rQOMQoxGNl51rMYMgldwGkEaWHEUXnq5cUdyeGkemu5xFoRsUuXBgFU/qaLbBDt4b60OZ/ZTWrt+6S0KhRFJaLncQwUXQJ6U4N/rCejMVsi/izUfj/j35mpYg/dDm8qaILAZYnScIdEjKASdy4n6zzqqGia5/dWgbtbd5qWZ9B5NfP7mLcaXu1gQ5hqXDyrk2hw9gIM/anOqaIJOliMtftkfIY5MGfOSMsFWhAtCms8KHnOBUEFoEmn/87h283jBqDBjA4l+mWo2gzsxg4p6uEijZjyKJRe9UQpgNzMEveyOAizA7qLhjAu0D10cier1D2OGORGptTePgkItL3DD7UaGnfm7SePguI1KFe1nY7CXsgqhhu82nan9RePwhs7IHL4ZqW6MoGShPNPFUwrOyPH4ezDmRZ2q+/XTbpzH9X5tRyQ+huthdynxeUNq0Ta1oArgxPTjG0TWUaYbPA7jHqAhClnWhgfrjuA0Stt3gxv3gQ0J95gZgrjqj8B0mtP71w6LanyUMZIdOOwoaLpYUBF77nhx7GbvUlExwwpqU9jSt1/4mW64/oJ67i9NAl7ajnTFRds3fYYmF5QpiouEZBH36BJ7x3b1CSRq+Zxip4yjB/CAtSz4eBSUTYepddvON7H921ouDvvPgoazvpJL1h5nPV1LNzuyzXQEB/PSWa7deovk/X1W8i224Wh1Hodg33bAlI6bU/P2fmNgiU04BhF51H7Ti3mjwmwYA5ulBL/Qpa31SS/zKsGbWRrSO15MgrCKUd1+NSOwgfl2NTOrwp86b1BZ800f7o2wDSTLMvAWlZV1AV61ipnW5ogJb2OIBsOwwtiFGAbFPMsW63F+EPwySn7KB7K2Ue23D52lT/Rpnh5VwdzrSfOAc5OrT/xt1Zp7rJVMe3pwQlcozWaG6yR+0axXXuQywWXdAy8ERJagp4BB2m+aojOKzdOT1X2ZWkN0gVsJnWafBb28N15ZeGzKrYJNI0+Gka7aqwMoQSoagB6HubpQuYSg8FgfPpXNZbZAsV31yJejBfyqbSYC/xIk8IiefZj5hnnoA6VBZDFxu2NeynLjRKbexebh6WPyQftb7EsXjmc8il3G4gc1LstIKqJJiKoOw/OOtusCibMR2cxuES5NSNI8UtBl5swuM2tLsJplpq4KGbpvmGKRBhUHFqzYsaFcerFcKuK7pJn//cXEI1AWFZgDbKmPJ9jp8m1AMlV0XcLpQrAmR2P4klGTh6JL/A5o8h9//v7Hd38RgX/87t0PP/3b9z//9Ot/8yoE5XFY3NkP+qwBlHV1rhjbHfjJg07xPVJXV+AryrGTSZZIUBTNo4tZQE6fxOZJnnVFrJSVGI7XQW7R3rkPyxA8cm/SmVtu0LcWnNJ0Woeu6G5qDm9EYSmbAi2z2QcTryYKJFomDE3zaTafZwLEE+Z1iPFL9iktWJ30r0EgXirV+LPiwR1a7sFyjM9a6qeLBSWFn/j94Q/k9bE6HcW4cDb8sRSXngx/DMiDKajoXExjcloWnz1dka0gXbRMhxmNipwEe6jpAiJWAs1elUFQAzLQjtVS7kLcP2VYs11Nj3mZhq5b5Dq4WJIruSCH0samb6975S6bwXWb3B+dgEjj1E0jngXncTq3ws9H4fQ1/QUewakSPGjyKbMSNu5dcpcX1WGDN/Xd00+7tJOLZNxhho1OEXe4bEQSt99MhKqb15KtHztrd8ldXlWHLY6YX6vFp/FVhurgXkmmKJDmJ2ymlriNkRFwYGC/ozx62+m43SV3eVkd5rbpkuvB4aHPYgX6ymUcvBDBjWnqMzExTpe1rlWDo5hHTUHzy8WIWP/8tO9B4xs2/A2k0RFqlhcoGtbh0fDKnuYuuYsG5dF+XRAYtFWPiHOXAnh72pF6SW7QBrtptEu42x+T2/Na4ABykRnwJrGr/pEsM+VPItfnnqBluEnsahD5sVW4S65PME3LcJPYkI9xV98TfJfclD2YpGWskp9ALikxxauambtB7z/zaebENm3z1+lkgo3ILgGAVclc5KilWX0NcAMGuFyl9Jl5Obluigcbsf7Q9/MPrVxiJ1uP4/oC/Y0N4RsNy0lkg0hAY74oDczDeKMMXm/Y+rv/MBdYIuHrxib6jsNH+59HhAOJliES7Ru2svSw1qJI9N3wHupOsCACvIUTTYPwHfafesDcv9dVm9h1umoBDKavkqJ84QX9IyWsBf3/5923f/3mz79+fV3J/mgb/uxL9mVTh4wrcLXPCseUN6xGbIhWPXgISS5E5GMaPgOBqk9UleOzioWJemKioZYNydvWugnOhmAhjzQGkfaZT+/xl2mjnsKA0y+7OB/EFPLihQatI/bgy2P1WUu7/emiNX5toPBxEJLqglewS5ur4IdBR0Ja62l+lstZ3T7zrNfaMTHxI4O1Lg2pG53y3RF1CKYjjS8IJCPTWyBoSw0v14eKkukB0PPssaaQaErtiF8urykizMRAiGn7muIIdUra1n38hyfNpG0JCIcsFeqkw2FN+VyleYNeTHnXQeo6vNIq4qTI9JHH5TmI8rbNQrRGx1XjXi3QdaylFkIYSm1tXBlWNWF7ml6UFx+p+flkVSdvJbgVmZYViSTkpY14tZmaduqgZd2daryR9PXzfHQIvMPxIHt+dexXsVz/P/z13Xd/eP3zQyYZf+0Q+ezfHzkjhkQLTm1bG5GtpkrwcubTjEsDtW3tzm/AI2Q/T0uPeLpYy/P5j90nLE9MaikrguCPRcdg9Xkzr7s55KJHN+GnS+4vaG7imlyqo0YCwmhp3owGpZNIw+gF6vS4Q6yCitlJnzejEOgQ1U+avHnKnzO0c/e3Xo2BQW589l0I4wBmwGvjBQMHdz7URPG0/aYDXnRFRY6o9xPqUJp4+vszGPAZjLc/N+qy4JtcRqKxZ7UqDuDMwAQC7Fj10QQC4+X7PUZFsbRlbuWL+8Ftzh9PhdmYYBpjM8Sac6JrIlZ5Dtnk5EGKtB+VrX8SubvJu/RfGskmasBBc7lJobLVImazJHMJx6Y61J9C6ZjhWJTLfqPMMEeBbjkVYb+ZZB54zsZ46HUOll9aAPvnPa3qETa3TyNYurqiC4yyka3IIpWRRRr3jElIhD2lT34n0beL6R43F/up07v+j76SjsycffN9e/yrVz30Um8fiouf/0OvKfouLsBFl83o8R+/Xs3qK4FDpFH+3OOR2/C8XT1eEIIuDkQqHmLVpLQiOO9EZ8GrFgBhpJ9lOYSRAs5XcfkcOFDS/lbGSq2L4BON4yoUzpfvlR/tGoHc8v/4X/v//E/f/PWHRzru//rhh79+++67P/0trvrRJzw+jav+6d1/fQ5VyjpieK2Yi7dLMEw3tJFXn+lQpanZo06p9vAJJN+2GMuCP2G+/tX2+gmr6gI4tD1fhoLD5EL2LbIx3yCYMYjYKnkJHAYW7K8ML4IHoBmiy/ZxNJRcVTYS0LsgNMWKym6UrxQk3omGH/VbK6hs9wk0Ny4pCv4TJtXl39HCKhuNWdhAXTmC0LW5rOumVLxmXfFZKOs/b/+glogdTmEUmm8WpDIXoqpHhoxaIArRjzydmqCKVVI2T14mVXb1eDkEhduG82KCBOCCLBokCnxeusdeITTifogHLF00nDsKndUIxlH+nUvDqhj8IGWztj0n/U3cdRcZfC1WpTUg3Larhz3MrmE97JmQEcUBELrsbrsI4ygHslIRrayBmrCynXD9Hsh0pGx7gcP+QKaFVmj5nZQD2o6J5Kuq1ulwVNV6sq6VDXZTNlM964Y9xjh8J9jeSggRjzU8uZ0wIyrwvgjlKRj3iDvaytpsHTvRdHKTjlm7UWDDxNSELaqDMpnfgjepZLk9xlykqQob95/GpqfrydS9/qBEQYhh4RpC8GZpn13J3ZCySXsgVdnBMUoy0PbTCgLTY3VuJxL/vIZDdKJsRZNNg6O//QIi+Nn94iigrPjBDmYgx8IFgljy62SzubMzKKZ/2eB4IrCvhLmEPxujS3XkwSCPPYVCwxtR10rjJnJRBbwQ0kYMy3LJuZSApSpIt5cBv1Jlm/Y7GnRnogJJhXjCxNJ8QIhFWby9ZMQdY9Wi1qLKDqJLlvJcRGX3bz7J5sig8yUoYc/8e4McV8xUI3wcADSCXHxU3Q9SQlWFapU6i4md6jHhj5pWBroVVBAfVfOJqvkFHez+iWCJ9xVEL7C7NmT1e+y/y81lwMd+MbuII5qy2UgE+0BJIDfAMYF886lmixLkX+P5ZUCvg0K0Aw//hEYQ+1pVl5XdiL5efAwW3x++CH1WZEg4CX469u7sF8RwMYOUeWWTgd0zHh2ZKB/DzWizmwZE9pp1sYITPJoHmjctbNQ3/oyAM01Kxs2woprnQfYJtpI+W8zCImukKFvpLRPoffB4exM30vDpMX2AHqMzSNr4oMpqNkaDraad+vMxU5njUlgqvGLuo9lT4aUHjbyJshspW5kcaxR+IEjmxeU1kzZ+ecnK4j27/zukp5AnIdqspB4w2pKc3NqE64myAUPDqGU1fXq1k8RgJ6bTXpkvZf/mgrkp5XL0W/Hk+tqjZiJl7XwjiF4YFkgOdg31mHQN/EqMGwENyDek3pPN3SgvqI7QWqwLt4KsIr1lYiVuhVMj2JXolHYv+k43vsAFLPSBQofvg9P3d6Dsljiu3lDZQSyTD9opL1+ATnZfWERGEGsZeNVuTDJqkzqqa3PKxIVOMKySDkQfG6LGKyaJhxBej2TTSdbQKe0eZvvXLyYOISPYBrU7SlxAFECSIiRlN6dUwa4E9nXLig1c2W3QRJcotrGunNbIa/BZZ7oejz81AvVRNm3YKMdZNGA0Fos5zkfK1yXHGXhQ5rGIeNNuTY+4+aEFXMGDqAWVDU600I+zS8pyueOhLFGcFu52DIYCzFSZmk8JgdFJHmeJLRYRrsWN0Etxf8/ghSA3X/JZ2EFoCPsaNrxppWIRQVepuKCPjRs/Z2J2Sh5viQPZ7eQ9Y8tu9uJDi01V28nNi3iphIA8Ro6VP48hh4qQ85LX8XF6JwDk8nzf8JpOZkLZJFUQhPyRp0A/sn+LPonnyEdz/5ZOsjgJb5NskiAmWYXA7o+VddI1k66Jq+MCB0wL24hmXtKVVN0TdGGfTB7DgcgfDJgXKYnZsstGj0xJYg5a2PLSXJxeKZwYKY2GxKMduTAmS7py24Ho6lOEEjYnTJHWjZ8XdSMGe7HEglawL2xNqOw4vl1UtipsjiqrRPSqbFL4w6DWgjdfiVo+MSWhJVgP1rXM61d1rXy89n9HTQm7FdPCylQdLqyUWXyUzS9kBFkHQKaugbClBV+TkmP7v6Ok/r4nm4sRSL0J/VbRGMy6grmIZlMoRVorxz/VaVxafA/5LQFQJCer1LI6RhPU8c5RvcStKTK+53MjBMrhCB4FLmwq/CBuhS22ZQ6CW/QpQqXMbKiJx3FFV8w3CWQhcgk/8Igw0bB7Fp98kywYHi8Z/6OFNZQkxuVlXNhS+UG8W3v0KfRXitiTAeY2ulJpZ/edRN2aO9ehVmNDnPtyjDodguCgO/peLc3nLc3I6I8/R/1CM4IxBtSp9fZBvkQuLzvFwDFyO6skLPEySYmGk4UTBw2ong0nd5+p/kfhkapCpkPP5CspoyJjp+ie94UtmANsi3w9vLBtBti6sJGTFNYQp7KDWwfr4Ft60WKRxdjvKDhwnfesaCR6KHxaT7v2hOhsc6NKuLTosQF1LRtYAzq5hzaPS1NaBxG+TPoENziZ8qOwBFpOklyGvNu+91zGjzsDrcg+YlpWylzcDzM4cZRP2iFkws9lwL0PBsYYG6/r/i1Rn0nlZulcThpNkhOQydgoO/9ooMaVHZVo/B7pDVrZoA9D26TiM4XeuWq/RS6ES4ng5CWNgdMejGzo8cRafNKyylBjc514lYTAhysROopccdRlUue/u97TmzEgDeoln/qP0WCF/gENtg5N35pI36eyvJ20ye773SB6fnRf4LUn3g0fp/uzBMvgoqxLs9FjRoL81iSdV7eVGSCrKTO8WVdkaVq+umDmzvNSfKuhux+/+enn73981Z/+UeZzXz27+qmmXK+Op+4PwQ5xVpmEkZ7IAjeJdQEsKBOZ/1apD4Cc6+eOt+w2wcub9g8+RfsYR3n2jW0RLxwBeyLukZNg1liypLcIXtXY4yV3YuNb92CQtGD3FwUTkL2pT3y413ua0eqEjMzEamc0eOqRTRAWPp4a1x1IGUSWdJtg6VVzgH4J2j/kKlg24/kwDY+Yi8RKXcwhlJtEQb5ypclg5u/n2V+i6/6o4C/wcl32D5/f5TriyK8kcbpO/GBmAU1aKl7eoxPBcfOoM9hsjKtgyV0RpW32YLwOmH510jgIrEP4VJJvs4tVwV84GvxscrIQVP8pGmz//Mf9//jv3/28/7l3Ahf16z97JQJV+pDGPvsVnxVYIL1q+2Lf1yd41c5VvVvsTYuwLPYrxZKTtT8wf57DrDGZv64V3gsW3m8THPZPHu9YXosQZ/e7s+TVxfB4IZ9os7nQNbPgGnzQe2nPFZXB20rvWopVwS45kdn57/srSW5tS3y0WHeoOjc77Whpnuujgu9aiM9qtyX+Th4vXPqVLi79bFvuEhziYgP3x5ZieY29dhwfRtUjDXMmuTWP9p8cIBi8Te59K7Eq+Z4tf0wB3/E7DR6i79bcJ/i2pVgU7LLjptX7ODLZAyL+THIeHsyN0usFbCk3Sr5vNVYl37PtMua6NHnw8R/au0ep8WxzbpN832osS75p28vmc5GxZAUz9d6c+yTftxqrkh22vSgx+Qf9aj2whq6VmEvFuZ260Yy1ULAhimQxhFNHt1raGEw0NB+soKbQ4LMWXmjW0OAMT023QJr2TvSRAoTq0cZngIJnF9+2ERpf2OIZY9WApm4FDLWKelBWhQhNSn04MJ+w2Bw8GAQsjbin3GZghT8ciOAyd9OqAhjpXjawAhlzg97jk/nNwlOGZY2YmzhJk/ZDx/n78fjnikTvbSMsiJ6pP3o0Hx9liEEncWxWzMs0VwlhgQSeAmGBclLHfpzFVWcKzSp+Tvr6jdHSgcViuTw8qq2RyHlulCyYaw6nnBfjNsGra3HLnj+68B3ymLwzN0reokdx5WQxbhO8uhb37LlgkzkkxU925j7JMXpQxp4sxm2CV9fCYc+11UeHl/ta9oQCgkADM8XAxyX6pCNTUwMzM9Ve4gleztIgEty1RoMPViXDaR5LIMAYEG1YNPA0PyGal9HgiakIUaceXBAeTw2BKILNSokwF8ynqeke9yFziTCyF9Q0dB94CKvWEcEFGsMS2BPAMBiNKKdbJ6zEkj0u8/1Fm58DuLSYk6SNajQ3KSBCEGbvkX+DV3aqBEKVIj0G9NO1p5uZ7L8mmEbbIkPnhhgIfMd+m0sQCS5K+jpgBframDNeTERTt7/mmwsnkv21URccbSCEREjikirIMDYZtom6895kFOL1StkwbuDDy26teI9LIDkXTOAEYlQQMBj4/aPiMG7Yil42SVdzu24CaUJbz4tlUTCZgHBAgAXkyBZgvulDtiJaqLhmhIsIcXHaH9YgUz+t3No+axCZbmtfl4CLkAoTQDQlXDFD2cxVMb9dbP11i7G+6NbfqtDE2vr7/777+Zv/8+79/u2nb/Yd/vHX//9X9vzGDwPfn33PbywTjeY9rcbVg0Ao/R9nCLd78QToFPEIuPTVY1uujCAuQX1j0aYoOsRFyTTw34IyNUU0OF1a+80SjQbIFj7AZYmwY5LYXGunNipctC5cYD+z/dpQ7eRKhGcHdnsPNVx6VVmyJD0caNilS/cknXKP5PtWY1WyR7m+0myDgPE4lO9YsGCJOzTKyWQspjdvk3zbYqwK9tjz3d46/k4nTHQZzyOMmFi4umy+aQC9MfByOrnf4vChH3lSzLQIHACaGuyf0RMmhoYVBHpCxu8+FOXyMsH+gpANfFDib0/Q+Bg5RMNibVbWpSD6pJh5SxJqmDVFA9IZIPf3ZBrpos3yg9rtNFw/nELXBw1DPj7oRLCP2wzBUBzdLvm2xXhDhxw7ZvXWQwICAdWnxfRSzG8ciITXaGCcsfF5xmVkH2adE3aleTL1XURvzliYAmj3bQQyqN8ulgqCUh4c+d48KV1mUSMTx9qTVlG1Jzb2sVYsIEWNVlF1R1LAzhQ1BmzaEn5EvC5uDlw/KQZTGNsr27Wuv7XC4A6V4ZEZFUT2/GkEu0xs80LcJHZ5GT5HU/2kcGEK734s5VY8ZuqFGbG0TyRZmaUvxrUKc6QImBHzok+Lpl2TyGlfmkL1a4HZYezYc9NcRgI64jJ47XStGCDeJ7klnz5xacBD4u4gc8JgRHbVjq7Wou0q2rO7PdtQW2yJwPkCv03zsCFhALvHW+xXW7rHw7HkHg7PdPV93ZXRdb6vOQp9WrajzG2IgeL8hKjBPflUav22zcOKYtY0gu9eJ2WIv11yn1x+V/NfRGD4AA5BfH+7ampEk4xDjSgAZP5u7tlhws1x1zyMSJhF8y1bHbI+Ze+WvF8TLlxgIQTicA5bO5knqtTm15Q3bt5nExJHL7Tk0TznuW0OVtTrTf5i3GWdLFgIxzySVFLXhsusd8rC2xXTZuANug9LIWqBMpnmr/x8xw3z6LAeCK8YhCP08q88kStYB5flniQm7pLrY+0nC3GX4OiCaCs0Jy5i6XQGpE+UHtABidlHjQyeK/sDF+ndWqaGe/108SIqJ0w1QmGE4Yz5Ni+iTA+rUplAygl6OKLN3ibYyWbPEmr3SXZxDGeLcZtgF9d7lhC7TbDLUpxciXfJvetyW5T7RXfMlk2J/EzH7F+//5cP/+5VbbJF6J8eq/kFtMkmvZtoDa6+oXVc+/WNsnYLjgsnbyfk7cWJaGqjh/6m7fnKKqwET9rZX/RZj7/vPfy+i/VKwZKAErBamappv73H33foOJr+lPnzqk+p+kmpuXuJsm9Pdnf8yD36aNCK82QN6aqBfu2I9fEaOWRtpPqwoatD+QwYkSe+izYRBOTTS1umYSuxdaL53o0lQu5Nvvk0ZrRCx/JB7I6tGcLKgy0PmxLFa5dcU7gbwwDpkhgXFzZZ6C2XJ3Y91MQkdfKjkAe0G46g+Qyoa7DNpOwJt6aw9SC8SdrvGOw/TPubAdxy2gwK0pytLWsoNDwgW6hqlZKOe6iuhMWSCoOxJJmDgHVNMnbsYbEpRqWPnp0vbVqi1RX9cxYoJLyZpU8U/HPOTmywKdc5uj+VHZt20R5/cBuKC3MoW7Oy1U9lqzb0zP+2rtWVeaC70oxk3mOUBBab60Zs76lVPUpRf3yFa1p2Knscr9wiFutF1w381sPPw8I+YAZokCloRXR2QK1eCNdTgCkNRIDbVzN6jIOn2GkcOu32dwy+6v2kiaBpk1GLnsd/ajLHitjkQkAmvrjARfqYyUcXuvvGCtUHgWjA6kMlMIT98TxcEAbCmFCA6pSilnGnpoaO6UjBJWpxlBILJrpl5NalMCh/kIbUEreN7muDxN9S8cVW80cJE0654Be6GMB+h0Zc1j1sQl0f/h+B92rTVM6ha6vquWY/T1rjiuNzVV7AeyYZukYTKJV13S9MbCCSrhFECivZZ1Ax1Uo0ykkrcaqrMA6fQC8mxBnJQ/XnFperL8fKra69UpI6iWeA6ESMoNLCVn1hTgy2vFjtwWtpY+ealTh7Xkt7nB8RaKEm4igPloJwGmw84oKLuu7BBKxrTn0a59R1d+c4zRN6YCPYIzzsEQhCGOkRoWbBxaH7PhGAQ5Y5fQj9pWOuo9cSUB00AgHnc1lYAQTBld3dd0ZXMJg7U6A6EMlodPQEUt93iQWaKcVOfJNBL6qncOSozzbFyzlyHZneU8tRi8Pkxe69ElZ1Nx9MHXk3Z3yKireEIEqoybEeJVCn8GxuE5BYu0XbIsIXarpH6xVf+LnPppup6X63Ixhop8ikbhSYCDyvS1ySKp0amWmg6XnzbZb4TjqWMmk6hk8E/dAAFW0T7FNXtCsoqQEFjeg4ZcqGwFTqYks7bX9EiOVHsyvaqT0r0xVlRhTbg1oCMF0+VB60UZEojeJh7xeT/6NoQDQB1Qa3Ye5/MEFMv4cnHY84+8aaffL/0ri+gaJVzV/7RbsmF48jroDJhw9P1KO1H/olaCfuJmNwu9GxntIDFlR2X4tZ9X1vAj2Q4otHcCwZD/SXc3LW4trhQy7IXYe4dtJqiyPO+3+7xPbDYbxiI85qw1yqiWnVtPJkoFwwtSTvPayp9OSTC+3657REpeOfCj+20XPj0YyK082NhytE/TVq1BMjPUD/VNlB+cVgK3rzaV3O8rbYfi3ZApcZ96F51l80kkBcu26Ci5nwrQpdNeO+Rvj5qR1IWBcXdd/tBocqpMwj45WCEKm9bZQG7VRNzXv0vgSMQ7q2SgVA6bLYwAMIuCb6/XzyOJZnCkJGSqq1u7j+/dFL2IajEnCAFIwCJphDoVgkVb7fk8A+eCgbJcuIwcgW5kvYNnFhN7GkeNAP2FSQ1m8WUejOOs4i9sbt20uQDHI5QOQU9x+AvauPNxviR9S2SOFDTkvnCGyfNhZwHkP3WMbbz33AdLiMF58gT20uziCm+ey1zgArY7LahMyxmSezsXeEY5yojVfHubRRcKratLqoQ4GNmT8kH4UcJSNr3mdae/dBNxTeYoxX29wzo2smG5AThwGr4NokTJaW4JPal4UdeLpqoeBFkl0ZlU2mYjrfUJnCVjH24RK3tsZWILcq+i37GJk333jBhd1tGH3s8qPlS+5Ve5Qdfv1iWtW+//4v8u+2P3//p//8j2+++9CY9jp0x/2W+9UX39+29tO7/3rVwl9tb8vEBDVX7eqYIdVWXgECqVumF1tSOLXZLtLWqv3389NLEaW5S1XLm2KlGr2yTx8VvGoAyE/pZlhfm9I+iHn31x/+7d3+//z1//5gXK+kiL6O5lATpbtnSfLaiOaGgEry8HQYQ2eNbxO8uhRvBhFyaktvZ0pOG3ObKbHg3D0gPR2X4s1M6cdvfvp5D2xe90/3iO3VTvcLc89XT4Wk8hBMsDhBa4ZAPcPyjQatQ6BBWQG8wwzZA4T7BNFrc0k6hQ07XWRtsNMlbElTNqZ0hvFjbPqcmzBp3ak0sm2auteSA6ZF9n9FOGnSg4s5nGRKPXNV+9FLc1XVwO936cFDXRsnybXD2lgAt7msm6sHskLRGu2hTltjWj/bZTw9oyg9UZqfTmgdsDVEFrPjwqXm03Bh6lbGHAfZY+ZTvp8cTNnL0YmQ+hJyYx/sh228YGY5FC5/yjdIfYkOSJwUT3L2D4Yhj2W1Sjy5T1TWGqE5PFQM2w9Pw4O+aq0IVeF4Djzwu0yrqXq5JQ6TsxQ6OjTJqsOxfHQKkrVHni1J5z3aHl0ysgx4MENJjBZdIk3RiWVjk6F8a5jtj8NJV8ORbSoTR/xr8+dYoHqsF57MpKS79mQGD6AxR+vyAMRPWqHX0+8y9fVgtUMLqtxTK9/C2f2Nvj1zRlu++RCC1UlM+XQ0C4abRduaVNnCJmTpkYy/jC6xcYmM/ZA7p9+FKRpvItsPGs0PQHMfPt12YZeNbNGiFzaxPc4rnU21lt/1ebE7gRXKAHIEZSt3kIjJYj32EWYgjHDMTIi1/4AlgJ6z84XDIPKtnimLCxtOnN7J7F9y4ReRIhlQOUr8uLlgA5aNGnZlGxvZVznxMob3ZJ6FqD1+Zl7Th9Vgv9gR9lvs62zLIrbSZO24sC6x4Z6t+m9O87jdDB4sHoMI4EI/3jiXfqhw2yHDSvcBT7f0hVrYb0TgK7+u4RmV3kCMwvdv2Ba979TaFYjYlWYc2Eh2iQRypXZM86bU68q8M80qICCDfKP8SBhrnXm4CswsvTsEn5YUI/tpGTBKlUNNZDHmm7m1cfTVfLu2DIR+J5KDjzEw+65823gViFIgl5Oo8CyrU308Q9eBDiPZxRh2L5Ax3pSZEvIMncC1ZRk63QSFBs7EaDze546u1wXVll9QefPaFR4NEY4nAlXb/x2OLErEjM2Dj1lgDCbSJPu+2jU2OLLeFwdxbqQTiPlOGJflkWI+oUhawrQ9I1wOaO/7N8xICmcutuSLsmfcLBSsOk1ZSzse0qNLtRTZWZ4s0VgBsTmFU0rQJYvFIp/jWfA4mlUxUT6os7+Xi4sB7UZADZ3ppB60P1nQX+464BypoCMhekj0miaWfrxCYd+cXlb76RrRT12D9plOAxps7JKn9/EiWZPCM1E8+P20f5uzbyaXMCgq6YqBPhfWiU9WlKC5iXgCz2kNMeiOU1GwnIDzLFusxwEyDeiHOsOp8PcblPcYcIRKLZtGh2ei4xP8tuGDsl3noKDuc1SvbPb51CjpBFXObeS6xhxxxquIFdVHcw0d96qj6yaUo+eNTF3jCdofIdElwtmtINFxb5yOCyd3m4CdYNCQBvMqpuIzVvpQ4sQMSNlYGdNGeMXwuO/XJTO6tbVq9QmvIlx9Usb3iUorIYbLeAAtQ9Icti3FEMvovjQISyzffE6D3H0ng000e2m+PdVi8DSkyHWj/b91QdJ4UizqDwh4dEUxatwwuRhzGigzsYd/S+zvZ/E+3dTRXIhGWS7pBgIlEz8T0AykxuKysIEmMYOCsz3haAfKdRTO+ueTh1TZnKC0LbCbUZZCIHl0oLLFkMnMq7Gwm5EY1OVqTBs78NgJk+wplDD3OLH47t8aBcKLMQe+ThyjGQcOikIAl5rzvDjOawBC4vxUwNj3TxRZyXk7Yf9FiJtHp5qLphM5ZSqaaey4B65xpsBvqMiQMY8kgoeirdOEUdP4yYxy06hhHAQd9WhToyjFqaNOEGPA1fU5tDuXtDBNtVSV2M3hhNm6kTocmaRXnEbXLkPFwtsGbqwl6piUSRpctcZdX5JFpxih+aTZBEkFtlfwt3B/edDtAYpCBeH2Qp2d1YdXpjc9HkcnXdKkW9JP1K5TeThXmtNQU7knPZbU6GDdJTLgJJrSfzT2krusNE2+bKWAzO9o/tcPY9uoiL4vh8c7SySD5QjXEMSV5azNtmozhul8ofp5c9GzRPIZBmFEEc8ImcvqZAsmJ00vPqB3gfJ/WkU0sLEcoaXIXNSxc+wbk09RsiSi9xZW1mdF6+AZ+VA0c2bqshOHaioaDj9y2UZxOLNtBM23a4pIWKIBVTqi9kAl/ebA3idT3JgGyD4Ia7tofFhXflHtn6hvn1EtoslZ6QpkH3Cbqsm2qWidaS6jKKJRi1Ujapl8S5SzST5zG9KNyI4Pz2lhLNWHUWHmWyauyKq2JYYYOqaZurkFSw09X3shPTfE3zGL95T9cen22zXAFofCiK/7r9ko9cPYEOJGO10lySfFXBRzcG49o8BVRemxd16nlC3z8D1aNlaKHuBQuDle2gQcuOQGjVGn4ZNkFkxEWNpICCH15JpOncOJ3TAKvYabw4S6RD3gqtPE4Lj8ZsCEbQu0AjagM8cAHaBgp1IkvgglzCvgFFF6zF0YIJsPJroGms3wBiA3LNIMgeARcfnuUngVPfz6roguz2snjB0ufAVDy7bHlTahNOaNpuAagf7+E95RBfcrIEJL2eHnzTAKTLfp4SLNTz1+PLeF7osPsVyJBECbO0F+6acbJshvEfzZoRx8XHD3Gsg1su3kCWF/RW0CmWehEFDZ0/lIF88sRAx+vsDhupDgEGke+1qmFJtfTyQnjwXcQx7IJ90o+L61WJR806an7NLreyZ57e320a25Te59K7Eo+aYtl5GflUv44z9U6i/XT83J3twm+L61WJXssenBsIEc16THm08Ez1v0EBzXOl8+ujX3CfZaCqc1/qIxF+vE1FPIxX96/8M3P+5f/vf+v//p+5/+FsTF+iHbfKb62+Atvvrf3YpL9Ofw5/Tn13lAD4jI8WzZua8BnyL6Ynj2Hfu9mK6/LgTiu90gNxVEZ1pdhn9MoK7fNuZv/rX/6yuTC5eNuQbNf3pax6aNR7eKDeV43l49I8NF7huDc76pRV/liG5YMgjZA9KV5Xog0NZwA6wtCV1dAQ9KVEXIc90OluuxclnpTW6V+oYbIlwC44YNYbkuCM2mV+JOqW+4IQiX7bMdt4BwZy3y3Sn1LU9HwnC0rv1GHhPS0dyj8ZHAJQZBS+jDbzJ9deJDLmUNm+t5H8wf93yPZMPyfDHAx+6IjdrCSqA1NZ8mhQ6zTJdAMBVlkWEY6hEBl3XVoL7itX8QczFALFmHqg/LX2rUosJTeQ5Iikdtt5jmHk+xhJ3S1vBHQWyjrgAXbbu2wfqKnVgSnpbQsBvKSyy8LusatTxZQgs3aFvxVvcRWxDtpq61g5HY4KKtRzdLuGdDFJrC9QwFxKLyEausWB/E9jWCOBCb9Jr31JZYWbwWwceReLzjO14Yw+UZP0HszMo5iB0IOeMiNm+Ke+J4a+aAEYmPtlEbVX3F1uZvCVkfSM5i8b5wuDTzpi1unsoaeFnPQzawMczl0pRObBdtPdxTuWVDhFDzDvdU0I/4iK0YJvc1/FoQ27C91EXZjkUYrzXwcSMORhnjHMH1jOSisr87BhsxKSKRp9is4/fzyryeVtmVy3doW7HK7SUWihU+hlBwy7zEQrnC5c6UhocbXoQCHHnHIiTEE3W5M2VQ0EVbj1z3uGVDBHbV/wjtytY7DvymaDmO70wBMLvhQWhHgn0XwcePOBhlxevCxSarglw4rluf+H++Utvzq83ljTlOIk6HU7nhW9BLLNSSfTzThhvmIpaKyS7X5bglf0qJdBepJ5lph7uyoWt+O69EJWqfGAPjLJfDk3To31FqxlKJTz6WhlM9dK0n6TSHbKziAby5OQb0j/thCdcbGPOGsfRuow5FcAsurnId8mVRkSzx7XJJbsI72Elf6vl2kpsU/OOaPfhUCqADPU6ax6sJI5CbD2SUq0lXZFO5Se7iOvjkR+EyXbYQ6MIxko8uHPkEiG7y6di8oKtBYCqMdz9pDi5mBWGiyk9uRdtxIU5LlRD9BMsX8IkEPxCB8gzr20TnYL7ZdKCUXcwMt4w/3wX0WMBTAEvI0lQl+qTIN2pCalUIvCARwfUTbv/827vdiJNyyut36UcmhcC6Jpf22NAAxvkJAWmFKoOo0888R0DPMT9dVDNO85lqRj6JZvkD66RqZjTF1dV0MJmMSYHdfteKJby1Ay+FpLiIuma4s03be6J+QuflBFMtMwToZALB95pPRk3CAavMk73oZE7UPLJ+Rs2BvjAxT0s+YWM+AZRcG6k623NczaxogGl+auiyTU5c1SQy9+zD86cwAVZN5Ps9U7MQaVLRurru+RI1Ovhc9uWLck+cWYI29P0TbdKJLVUGta16WNP8tBRWnNgSssbuO7LRHiU8mFW70VRLQtWui/7DoSTcMWHqtWSGL+NYMuFFA5drPpk1I8IUxec0vszD/qxKqiXiP0ctIakrQx3zCXf18emikp1AqnePP51bok/W4RLSMJPfFo8RJvPX1UV43N32p8a5IMcdbLaosiFtuEknUPGr9u5w+Co0Tkw7u7hilZjOYyUmPmkC4BUjpgv1vK4v4H1XoQXBTS7020gjiUfYI6cQXcX0C8afHbGRfQATAZTyC3lHPRtyVQizDUYTm75AjZb8OCCOkyO3cllJuk4n5q5ZypPrNGJkVulqaD4MN/vmIhuP+B2Ixs+8btOY1jwa2O84ZIajIRO85kNc2sswm9zXULypy6BRrtAFHVwSUXikTaSnR5OooRrzpDUGnHd6F8rrA/15IsRtW2hTNYkoZ76onyzxeu5t36XEDt2hs47zPT5yM7F1l+MoX+xW227RtxKvho/c8gL35XxGXbTagvz1kVmTZBfwXWssVI2WaDNns8tFLXVUxroAuDCta9ProWBs3ZkYddEDerTTNez29SnKnsh1KRpKn178NHKzx4Nnw84wN7Fc8r6+CjFgc4ef3HiDlZ0s711yi5eVUXXVoVXhxHrfrqaTyws07c3K6qXKNIlNHkj9uaOjKmnt/fJRuYvL4FEzSUeWZSpT16i4ucwGcicd4MWWkzA+jdw5O/HpN2WjdmsnKsqoBCTmUdrxUaqfJgg+09WVA+VdIUayD++UVUmzqpTV34irrhiri9M8kM9GP10uZG1Y8FWKIlNvw3eV1SlOzUu7ZzWtTqrmxjkdWk3T5BLZDNJF03QIUSt2Afk4rxO50QOn0T5NPJ3XidzFdXABDydlylpmlmmY5+lWymhltUz0yRoyO6/t5Lz5EJwT0+b+qYCPtcuk3uvELSCrtX66qGZ+QS1P6O0zcftZlVRL5CCUxfTIAlidVE1MsZ0tZiYiWGsG6aJp/j2jb//vf/4/734USV9huL/CcH+Q+xWG+/6T/vzvvsJwf4Xh/o1V+ArD/bdb9FcYbnehX2G4X7vJX2G4l5/iX2G41zbkKwz3VxjurzDcC0v6FYb79B/eExL+/cBwS2GYGpg3ly6zjcoMYWDjqOAJYR/h/Pu2HTfyVM9aphg9kSpgtOzYCLOpTqpm5+GjDdWsPpNcUbkIZ2lJd86oSatZua2oEOuvdLi+0fTbrnOD9snqMbwjcgPKTU57UXgvIubzDfat7gX1TlXtnzAN6i75/DF7zKZld+INt40WqmZjy6bZ3eozYb0rkDup2RKtJk3/GfRO7bQb2ImWD1nX/QTt+XGy7PnDxZzlCjt8GknJ7GSZtZCWhbWMaJlZWdZVTXJmc5z08lp23PIxaxxmyzcc1EhUHIk67mgnjq8HgLsRAsutNEj6/PqEFSzlYTebFNCVJx5rSjp3oZvkMwcQDrjZaUphgoRPLfWT1ZKUbOg88nFRXWzCq3R1+LTHmp+qv75hF2/QH2ZGNdjFZx6CWBsj9enRoemrJecDGSiWGzy62WTsO34auYvr4BEDFczAyAG5fj6a+hC9jVyGwhr1CkgzB4RA8RQXJGJsoSAF9qJx8WF1LsAvGvzSBGmhZoGziyZTpmFxkzwMpr0Mml8uLp5P29zNzgb0fPXsocFTp/TOqEdP10UtC4fgmTfW9FIYLXl+Hltq3J7AirVs7O9kIrVwoNNwLPH8qvfZckRWEfvi5srApyTwYe4cjrn0J4kCPBAdOqvJPof2PCuaje750uuQscCpH97n1Vl4HrzOEO13TKnohLixQfS4xScLKXOpqGWbI7ZmerSjLVVM7ZofbLTsb3VFR53FuhbE0fwgyk0eoFgyJUdiHdRNBGCXnCwnccidFXHHXLknuDX8KAx4V+8/32V6EqHG8hrG7slVgT440+lOPI53+nAP7IKjy7WbqCU7couo+WTh4DgNgp3j4pU9LLT45BN9mooREXQiq19KTiTk3/PxGiEjMLWbXByXK0vz+lRlx2FmH3Wrgp15es9dbq+4DEtoMTSbmm4xh47A0E5ym4JBuR6LSuvgI7cQukp2khuLi74OvqpRIdBl7RggKTq0SQzaaA+pYaP9yGspb5AbcErPR92IXMdeYoG10ekU8Sy2l1wEc0trtSmyBlxeF30H4bq4iO20umvpAZSKc/lv56EyvT1cFi4SlpDHKcrYVe0itZDURWwqpGoAwksXZRsFqT5LwEWft7JIA5CpyjgAerPYcCSsLsnNdJrvkps8sPsF1/0esWncsQyNYOjDkad3lluPQ+C8Di7WS7s2wTevGhkFZ/fIXVxdH9aOAi+NvoamRqwdCKM1aQyu5YR2yQTkPJQ1IM1PJ+jdZ6iGXCp3qRgJSzKCHgyCU02K3msS0xVLMVWRUFTN7MAZxWW9tIZKBnIH3e9ecvGlsNiWSZwtJ3kHB8SdQBhePnK3MwIkj6LXLjlBPUUIbRAbf5zVUwpmXNsssWgdxmUmf//7RD6jxHlTS+PbGOTYoMkF9AGLLtCH4ovBPV1qwzkiTqB8gTq7/HmusxOxTOZCu49dG8AXZ7lYJU0HKvPFVU3zUpnLqjimc1kz30bphQvuVEdJa52FpKX2qU4tyyyHTC2LQqv+TgtgZqjqssZ8SWoWrdyqmlhx339Mwi44ky+NbLbmandRMxFicVZ+jalmUtZRAxiOPtKggxukdAegroS8hcuOxMGrJXpDF5/WXnOy5l5ov7MxmRMasoF7oU0+tkLopCaOU+RMkDz5BAE5E7aUZSVN+Om6N4N71diRtWzu597wAJ5yHjn48oRsvjKt4xL7qGR7rvnXUwty0eH0yOaVLpq8w/kjVmGv9r3cJ8rRXDN9VMw1a2oLpjEO18x8cn6N5YogTvvFMvBiKUw5ZjpKzc7yzMcSovWJlgiSnPU1aBazopqZWXpMr5x3NNFnC9FUc9Bsyv4pcDRx0r9X8Zw49e/tCpAzM2Q5Rk1uHqF5pKJOx7V/b99fjPed+veygt2Zk0k//8SYCicgCndZel3g3GUp9oVOl5E2z5ipygzMbAffjXBGv+t0eWs9muz3pYjcG+CzE/SU0R5cazAco0yaFdNjT87Hxfe0F3whNHY9lfvWElHuZHaQb9Zfn2n8fzEzfuIEOzvBjvfz0PeTeoHIEd2G97PL87xsxCfr0v4kcimdMDycqwAWgB3unwokofdPA5+AhpPX3NTMfuzBXB+o0Jx9ZvV2yceJnz9/I2pK88kGKifkzyd9mdcdpf3zGs29UZ2lnFE7euxxpM7BfERnl+RyO8FdchfXwWNTCoH+e9Qji7aRu5Z7SzkZefSQy2XZRbhXkNuoquKjbyf+Yq91wNbBt3MYX+Ghv8JDf4WHfsU5+Ypt/1ty3w7b/isxx1dijq/EHK84J19ZhX5L7tuxCn1l3/oNuW/HvkUYpePI/V7rw4cBBpcXecJpCxepWZHcfv3Qjy6Ma63t+YYVqEejp6vUgv0MizbgYI4VG3hdzLFiuspl2TpWy52ktmdznJAeV6QOfNe76Bo2HNfyEguI2y5WsIvdbjAugtyuay1bKPUOv9xxJtxFasMx/boGpIBSs4uuHi/hgU2OPgbZX+44PQMneFzECmzt83643JMx0HvWRduIiWKvRRify1UpcDM3HGaJ3W5YuIQL5yOWBn7a0WFxSSyBUfhoW5Fqykss1GJ9DKE42TqJhbeBy31p8NlctTVQgZ5iTYra8cqM2lP55u4pFcSJGS70OBmDjeKxcqmcBMgOYisGXP3IC14S217iDcp2LCB7rUGnk7ki1mcmM9MBcVm5eodR0kyei9i8oa27PDFzOElOOGgbcWLaSyw8XV0sIQcnYyexz8q63Jm7IdzhomWq8Y5DNrBHw+XOlDlhF209umYCEl24RBtl0+kzz7RhmDNlrmIjbohPQjZpf5yntmY+wHcRGh3Nt+rlyujYfawyIzKKz8oVxVv2FFsxcnC5NEu7JU9RKNHnJRZqJT6W0JyMncRSXtLh1iz1Hiddb8n47schYujgcGvuYoOLtl80jb2k4H79oDT2//27n7/58V/f/enDv3wVbf0h50znt6Gtv0pF9wJzNNGFb2ebXfdHt8pkkTx6VZRWMuAezbb4oIGk4VG6HmIgNemxCld/9Pb8mwONmkU94/M/moxHuFLvYaUu5sMBFNmHVFSIYaB9Svdx/mrdWVyq93OpiA/CBTtc/7Kugwsqd8SWV1kJ5EXYdODBrFd8/ulGR1yvz8BD/4Pyc0JPSDomyC62IA8dEFIasoQtyOb9HODvT6sxnADzwHSPuSarkOqIzaXbbOQ6DJvGmoNOECf4cvHsbczwEhQMKdGnQ8fAM80zPauL6NKiGwicKQYCZ7J2NjcaeRUS8YasGuOnC+Ce/92P3/z08x74vO6f7mHcq33NF+RREJ0xHJ3QFw/rHBrVmANhAPWLuYQKzrVuTPwys4OXmhz0rx+vmqXXOP/yreIvx+HLqFOVRzc0jfWbEd8EXy7GW5Rscumq35Sm1fg+pE4OhDXCo8zMSDyBPi72iSA/xObDWmt/qDFb8qnEGr1pdSbyCUgXj+Snjrr8X8clzWU0z+M//s8/vP5hnPqBeHP/0/iiL86JKsj773eJ7wwT6evfveav69kMQUODif8RXq6PRWyKSHN88HB3Y8OkvcerVawKCIFH96kDE+qrHoLP/Pw//+u/n1dXkDdNfNqTLNUVl9lPacjHV00cE9Fnxkrm23E+jRLzfOaiD6CJrzeh867qavSKqj+SQz7WC3UVtF2463Lq9IQw3y4qKyTiEJCEoGT2U1nzbSprFZuIgIZfxaysz9PWKhb1BxDxvbXEubKDOB2fLCNdNVmPeXnq0c0CU3LZXYZCjf4i2OHiEMkA0JL6Yo4OJOeAbQgiOb0VK13FN2DOzWeENbRAgNWhB5q1DSNQ+jnLpBw6DIsekHS7gwuj7LaRd4uboRaecfwkWtUjaEZupr/Y+Aim4oNrELfGlMdbmIujC5u1kWZCTRcCN8ihKfHoRJvOa00TZAW9ENhdaGk2Dk1lWyZS4bwNGmbO8uPhgZj26MsH2KIpJ7kq24imOfSkcdoEPg9aLj6SZL1TvCwxngu+p5ybgnfcqIqsmNS0MZ3XK5FKi6414cJuLgAIW0IytdTjwTF3dRWU0EBXIRI0p2xZqbgMm7b/H8sg24321foadwvbV5034VS2ap/8VLZmxY4yym4N9yzTyU37qfeJofarAZM6obYJyW9PbsIYamM0sbw/HhGpU9yMC2WwbG+g+sDGbmYUnXqZPnHTiaep7NAo9lB2tZGMbZZp1kWxRDejlhQ0Oo2EaCy3TYygbPY6YJ0x1UPTVbQ228HPZIHNpVC6KhxK0h+Q3moMKhNTqATLw6XeUus8BsqBPgjRyX6z77tBb6ZKRARZmE5dlLWKRf0BGK8JrGdDTzoMxsj0pJ3iNfPtaqG7Uc1SQKjw5fwATkJPahWL+gMoYNtXtviU3VQJbUcoRDn0ZIrzvBcqDz6ZRrpqsz5H6LmaknN2qljuPjfT0imqrfZyGKTb6X0SMaJnGQvGR0QoPk0nVq+JIJqokC7LxQdokKeUKK3iAeqrDObkmjYmcK+di1Xmmw0f6Q7ao8y5AfYARRdlO5/2GpRtLLEhzvOzsRGodZoraNViPcbDO0KFpl3tJfheWjoB+EejHEptMpfOfJv7rEoYTqahz5yJibuIv8YQYkaxiRye6BUuARS+bCW2nl3AE5Uw0n1pvl0MjJIyTx/K7htZ4W43n6aqVi2TGRkd13XzeddatSbGYNTsTDqxw4mXlskGnuwiXTVYj/PTEFRLWs1diB8e70Z8WNQxXzwa/g56BRklDKayBi66z8EH/PlJsRmrD4bm3Dd6wPkRNImE9egtElj8/HQ1JtoIp9s02JuLvVJeyKo1Y7/4UnlVfXoqjVYm1OTTc4a/bxxVPLGKdNVcHaK3Tgj3+y/xoJSNWHyVKqlDVVcUfj7tafFV8SUPD5TUj1S0tkf8j3c//Pz9D79+fVWHRNst+dfBi8++QyIlHOzTJbjoN2e3wd/UIDHXXwFB4wv49rLNmSfP0YDcigNhiW7+/YKld8TlRrayj92qg3qBa48v2GYnfoKQnTs2265aFQF9OlnrXXId7o5tjlkc5lOLBz1I2Aj4IvWxRhACUH4bYl84CW57BALT8E6LkevA8omX5EQ0C9KqERzu6NZxiN9L8v5Q325ZDT9j9njT7CcA1EmSoL3um08k75FacHl/GNHKDFBo3kxqqhHeH1LXgATYLSNnZX+2w/ytz8xZaVFrY1G9DRI522+/OXhmkVqP/y6vFSHZ/8HNfJ9dLUv+2r14iLnaVRwqkQ9sTrl5qZvitEPWAUmlMDPfZii2Zep+L/uzvmJaVjIV1+85q8EheOJ5XOswDhBO3CjYKaVlRGtGOM6chM0IB4ygpc0IHz0bZ9OXbQxhixyt1+FOLgmxpFKKDjF9qRtCp90muFafLjQrejLNCb0jnP6y3/8BijLFoKsejqPSXKZ+unQt7bEGpKHyKncUpVsLFSetjcxwp5y0RFeFfJurR1Xd/c5f6ovAblY3u/2yM2bCAPDBZE3K7Nt/+fHdj+//8PqcWZVI77FTn3/OrGzU3bIfCIf3rkiGmR1pbfYILKzoSSvTIrUcSUcZuhYpRSKLZ9DKzGyl92k7k2zZgIJLKYWGIqqh9NKYv8F7xxBGKu3XEq4I6lkFRBNWtNZAjYe1BWpsDcrMbUmnwVOlscbmDK+T/e8DEmZu3edxWlPWGOfYK+ldhPtKAgzYqry7ZiR/krZvangQomYXLuXCDOnSjBtgv56OdyAlTMeQ4Wk5lPXzA14exiUjicmh/Q26tCeUgIcfmXxmwDYm+orzlppGOQiyJW2Uyw5mFmh2OxwtcVenvyINc1ggGW0XUgrr30xuJPZzxWkWe+SZ0FRCssrEaTKWH5/V3PXEFsY4tCQ+G7CO8v2lQxMDDno+/JzTEnQsrOehfeezYSFy23YN1JgiE2YR27Z3F+PShRa2Qi1zqeuJSHSoA2nw5OQa5g/cTr+TV3FxcQDSXnQw0LXGOJqHWImW0Xfukh3I6TUOf1qKdv18+i3x3wEOg4xr5ZNn05+++e6nD//yVc+mMLFuv4BnEzZkluZSJJAGfozrGk2pJMPDcKRMsgJmHv6u69DA4e62tSic1NxesOmaMzsyooyt9VW77TWaiXiHbmu3B9YbImRIwxGIXryUwkYPhRB06EHnsTeFa/ntWAfj7rEGZ3MWkZGWgu2IWgZTSj/+WzMENYM5HXieUynHrffJr7gaMF8vk2fN5SkcaZxJsmwQcVSDbzazffkFYqNHDAUNP+LlXObvqg4szueqtmjOl0Hk3c2N5tmkCotNh4Le0JbuNHyt6gC34VROEHMH8wSd4V8n9IKx0chsWwMLIDUpLqYmL8PDcfhdnsuQSQHsfl7klDghg8dGtH2TEMAzGdpEddg4LLZfIrO3YybMfCp/u5tHNZOm9A3VN2a9S9BcwUzBkIeUwVMHpIUtIZdGyj5Qj+JT4dUSUmB0EckRoD0lsvjGcB0jLkabZE/KFWwrFATaYmkIjqGBQTPiIUSlbDC3oA9eREkMMLMbDOmaM03FPlwZLKtMWZBzTpPr7JPfacVMqKlTdrkqSuPsbqAyVN0oNSMWmiFgE+wTHDsLUuzziK3qRgikpdIgZB6ULZdaG83M1EEzM6HFpf5VzuxrEm72NiiShWa9MVC3r6WpaNNxAauoS6heX0DPxBgr8WQIqQV6UYTauVQi3thl4qNMs9LZLpqiiIXmOIOQXGCqc497EPng4exubA34nN/ocTaHPT3Rv/vPX/7w+ge6hBqP7fjs3+eElO/SG4dSXRDuK5be75G6ugJfO+2cTFLQTZBerLukIzbNPMT5KcODdf+UICiq9MivJ6jCPvArCkBidKSSw0YQPIW7YKiqWo6Fvaxjh1dqYIzi/RPelJm4MAol3spx5199WLCOHHXIJA32U9I6mrHJI/47jOayjog+tn+i134g3I2KRCpVlzpdOzIuFO1AKxyqj93FjdrC48agEBuSkQTGzgmFMg/7J5d0oql+Gi2xDm1rpJpLzKxmoNhs8d3FajLWNnZFCDEE+JmQKfEQTEZdq+U+R2TM42gJNQiSTMuV8x2rKQs9/+hsgleiu802Hp0Wx5RYqPx02NS3fPjvOrUuNpdnWKgErq54R1bHTJdfh9dixWmSskalfKYiwaTN9JBpcEAkLwZ8UTKk47wdoi+nFalPVV+pWs9A9pRAQLgMUB+ciBPCZGoxEQSBjJmew6kjgm9GesMmn+TFoMtZL40J90F1g3QS4mTw4tUlFTAoC0RTsYK6AM/rSn1EjVqxu1sIFvCobAQoOJU+NOyUo+p6Wc//yIEVpCEQQljsksaR5Zm6mum5F/jRlc5eItyVkDk7M6lDLubl1JAj6Tw9+kkZETNdBVnD5ItH+ojvqk6W0xXbVlXERSwaPOv14dK33OdyqIoIyjvYgRV9y+tG40MtrPafkI/Ay4p9mHm6/V5gEujOl+eLzxypXvHGT7CrBVcmTxO8sJisMTih7QwqrQxtPvw9HfHMbExJtjmBd27UbhI2KnbLRYv7vRExz9B7wrmTYXvh/EbFNoaNSgKDHh6D0L76YiMyq0hv3o0D+o3gs7rOGk+XUAPquDZkfnJoEFt443c5vTPbrLDp/Y/EDM3NHAmeauM4lNNEjaJ5RtHqaxHASSCKDdmBkQblVQbxfNcGGjVHrOv60G0JAgoemaSXj765ETlraBlKdUy4ji4vdXlz4DpmjHoCz1oYivB5YkjDtb4k1nCwhoTFnXVfpzViRN8IE7E5JQQzJ39nG5JRMTdUEXkv94c9Dhf6gBwbMzPGSL4xUrKj0kxNpe6C+fy/2ixHYwEhnhCsEC5rJcz1Qs0axQnP/6SfLyFncUg8nPQCj6PMU/RO866ZoESDzn7bA4OsEwRhXHQmd66iz6BKnoMdVkfqIdE10p2m9HSi9PTSYwsZYDShBo+vqw00fCsUhusv1LJQdRaGHn/Gn7kcxML5PGUkMToiA20jisyG0JTtaAa5rCL5szKdp1ExwuXatdFZYz26urx0zBjrlUmxZXREnzs4Db7pVaEBmFNidAMd1eWb1C01JQWKUkIkggOF27qcBMeUVHvBhWzc5pMosg+Z4uZQfBouQ2OGsMZBaaOGfMl2gJaVZtqCVyTQiAE7dGoLDZ3C+/0/xBFj+UStXT7D0KG/cHGG6sCD2Czk70daTHzNLZcNHWqYTVOGv36JaY2/52xn0Sd26kve12x7XrKY6ChLMh7xj2codrnsRoQ1g6rn0bQ3hqkAZjtOqghC9OtClhyIjlUqLThJGwnifP9XWHeTH0MIzU6UaJEe6zFSPmH/hI3DgSkJBUMAnc4asNPJYmKfZgxcXQ+cdu30ipOCLCnp8oyTv89a4phr3AiCP3R6gOxnkaa8m0v96LwHAKk2pLqO7dfmcamekVtzveiTSM0wuCbcFV9D1cyYxG7EURO6T7VQ7jlymRu+55hLJzB8Q+h8GfbDoi97dlrMxp1bjTKbwVAVm8CJuoe9mNPIZ4o54QVUuaOCqUokAmI1XUCxpPCPq8m9AJVQa2wcof8dWabPMQ9MSiWfMKlU2bE3ojPYzRCRYMT9uxzzwum5wtTIhY65vRNNKxP4zOgEViQVWJqw0U538xDgoGMDLSNmOmP0GXoUk+M2GqKFaETEGhOTQiTq0FwOMx1i3qA7i0HK5SQ70rtIXRY9o8lk6cYiXhJPIklrj4vHKQSGLgkMzgRgRfescWajwyzd6k557Iw+J1FFNwSav4wMcyNxODLlBCcA43DCxH3CGk5xWgzscwzsRbpomh540tjfuivjkxU+oXneeGpvo94MWSC0wEBdy+LNfZqjkO5s0NzZScg4zl4JOCkvUaTHUnbKr3eCj26UdxS3jV0PlZ6FXlxsla47nt+rHC0abGhOBtoXgouKGCtW8tsGwU6XEWtmEnDhMjYfcyzUUJCJszhzG07jjsxOVWZ5LngE3Yn6CRN1hCdiB5Q3M6lIA6XjeDFenenH3vpMCUdmAJUXJF7RnAZXeI+ry4i5s0R9QpnaCc4vvsIXn0sWPCPeS8FXS6VVjMxix/w3klrzsMWGtYSmtGzaABJJQ/Q6cdIiWxVdcLX7PJvmHqRn1UZ5ZYme0RqT9japlmvX9ZeM2Ctj7B/2ncZat//1zQ/f//Ttz9//Tdi9sR8g8/cPuf707r8+hyHINnL48yvFXB2CzIadHLfw6nOsalPgLAuOF3xC6Kd5vtSIFMA2a3b9OGC5rJUhoLxvFDg0n2wnl2Z+N4XgcpYcFRFkNr77oBM8OniQZjh2KlU/QAsw9rZzXFG/RQzJggvGo/Cfb7C+q5JpGXpgYtuudBeK0xCpMeXpJ0/DD1y1F6wxB2OwKlw7wtj34ucbPt2d9vzvfvzmp/2+edWf/lFutlc7/0/gmx8NTTChvq0VEX4fNuEeqS6wCbwEN4ldXQMPPld5tYI2aQ2eDH4mC+517YmESF0v41OIvW0ZVgV75PVieHnuJgx5rHVw//75u0lsH2vdsx89gbcJFhA0pwaLfIKpHqmS/ehFoqAgcv+Zgr2b2Kh44JXHLSMRk8S5HofUZvPdJTudDK9zCivY6hLi+0e83F1iyyIO2Mmu5Nsk+6yw134DRJMwT14P0An76h6xofmdwnybZKcV/oqCdYi5+sjYglbHju0Oawzo3J62aYlkNn4NrZnN2kLnqdu2nTTvdhwhEJRpl/KO6JA66tp55GgwiHqoPBkl8Jc4MSOA1E4IRYE6guKmKWjtT8zcBy+xL+p6glNQ55T7VV0Vml91Ldw+u2mF7WlhTyAvEW9acEVdIG1lEbGfQL5x42egIUOx2A1Xdv+Gs13rx8vhqZn6bJw/XLAijFxcu92XD8wcCr8BnPYH6xxmfLeBYw/yiTK+W/fpSBUdMJDPEStoj39FmnJPqpjuoFpk9oHReCwhnp80eFn3b1tFZSPXJMV08fyMRTQWtgGeKBHAW/T4gnXOtHWVcTVG4p6DsfnMSAgGewRdo/ZhaMN8ITbk0LVlS4vmG888NS8rkKcnWoFUARCNN2aG420Bgfzk2jy7nHwqCJkoomxbor6SuxrnbI4bDAteKsEvCfS4j9OSRktcV9PVpg6/ETa+4G4jAZm8WBET7PGK9YH8i4xcJvEIlqz3uCXQym48srW/43gAbvEFRvGUwlSprqYXKZl/h6qa7nkTTiE5gtz6Lnkd0QEpRsJo3Pu/f0P+GDlcFPu1wiFKq07gK/vmbqirEgtZXYm9o50sbBvUXxF68ChMhd714Ko/9xmd3h0wjUH0xObVI00mP0J9vBTjyQ3uNbHRTwAXeuFu7t5oHG9jZpjHt4i6TlCYq7pyS2Po4wU6d8II3Luzdbq/JYjjqTyv3t9dCVR1KDWH6poJQu/hzpFQabcB7JMXU/GZtB1F3Yl1hzTFetbSehYYRaJOlG/BxQhGp5BT/MnsijO+G9u/H5aBT7axMaZXd7oUZWWJMWVXDIlOT5Xtgztx91NI7cJ99pU6OG+6FQf1DMs3ItQwLkOVzSfNpMlpBGAMAjiRlA5NVIxBszLid3EORa4VAvDtE2HyurLYbDQ6I+Xt36hfow0CgpCrkuakmhemhhxy8lydoD/FCEhX7ZW24QYPmDqRmj2sk3zBIKzJhxGgroVH+Vqhh0dzwt1/vGzx8WnIwTWWr5wVk8fbmb2ehEZOM+UbM4dJoRIBvC36TFAlaJRTYjaKOYfPCMHjlRRRWR7ntADVNuikUcnWGJa4Td60q8p24jZ4NN2jrtx+LKdmkMVmbXSbuiYf2s5HawLpWudxVmWrgjBMZTm5I98YhSN4KZuZEMgOE5nAGS/apniMlgwKvVYdPhztokLHdZVvSLMkqqKutZ9UHioHBfs3l5EICZJpWSM1osv8HXkCIcdEVU+gd2r0wcl/zPginn9onC4JnWc46om91ozzB5Kacpnzfehw4rToOpDBbXwp107IHWKcFMW2zaVpJRhMbz21Poe260NzrsLgikYYDGzQFEfTepiGl2JLPgMZj6EeynJu7GGk+E33jCGTN9EGNdhIi4EPkEknftLHatNFY1KCU9mGKQi5Jwnnus+H0/WFRai5x6Am6irNPXgpSrSBVrC/Rea/M4+k4uJkYlQ+vKlsoQtcGHPw3A7DqmRqCAiE/HhSuziZ2PiNJACoZLGdphw2ZuWQcJXSUE6Td1LuwMnzKNj9mJePzMYiSiC4/SOPAzbwuKNcIs60EZlyPGFslUISFmceGKykbCE4VYMUe1XZTDO2UvUaaLG2+mqU7QGVjQQnv1ymhZvGswDsUI8WoGiYcs+b09FMjAEurMcdb76kqbm5K3njQcR0kstMzWecU/aFOjpSobT+g9MUx/KTqY3YoitOdgq/rsttkjOvbG76RJzKch1KDvEGUaB4HIbbaMe/u6rs0IxV1G8UXgsJO5pBLAQy+2D9QU8SnXgUYq7cYZz1UarKZoIkkvscKcUf3whHZzjxw2aeN5dv9BjYbZbdXmegQQv9NJUtPvnB044Pc8cYF42NPeKiES3tgetMl9+s81zvosA67+NAk+dK9Hp9YBnRwjZNJJoXmg/BW2IYbDnkFK0NDcWDWiLWI8+QBx+RtoeqkXOZEphtqGo7UbXx4TphpnnAzPoEwY0HEKPWdG13yqwGTmUjYfJbykdbiVvrviVlk1aybMsHGqxgiZLBnmB5CnnOiSNwCdZipMaEqLBdRtdIJZgn9MH535quZrMpm5OuDOkZOLC0MxnG2AkidRCBpxxfl2qR6IAVTvmGMYFBUTPhM6YZxN1RvJ6aV5ohMbrn3LJnP4CPtmxKmeYewaTrchSL00yO8bFDuC7VlOeJa9mo6HIuDRfUL8bDIo77GQvnI1LGoDJVhvNK1SsV3onW1MBM2dRPxdfpfmmTtcdB6WU3+t8HoCVh2W4EoP3oWCVlT3IUu8dADO1HVO+TuGc6iMe3E2UxaSsri7yDj8fdiRUsmSyP2LkdBo+zqa3WU53mw/UpLfBISybVVgT0eQx3nLxOsS3+ER/Sg294oQ1XbmEamYYjpF0moiOJ3Nf7uLEoGploRleV3RiEqA/Gg+yMf/bIX52kjgo9+IIP2p10lhAZSOdwxH57b9w7goyLsvTuD8lL2UDpefmGmG2SY6f0T8iMDmnJM03pqLi02jS91BQuuXBfUEsMuBmapnrMZYQUhXIZ+eBkS0EZW0Ja4JaQZgoH5slHuSpJUpA3iE58XPuKIdzq/om6w5qyS6kzyJyjEDhHwvztPklvUYIIgVrghqv93yFj0+Omxng/JeoJkWDbpc1fzBOB/B8dUifOgOZS9juBhmhsDGdSs07OIJ8wnTQmW+yzi0x1rSfZVe5fkcyRy8tf7iUCqB6NEAifLnzzPKE6Td6oy389Mviiwem6pqoMOt33f3q3q7D9+duf/v3X/79X49L9mt84U/0rLt1FXDodDJ/RbHeCfQziAuF8CQop+gLzbZ4vY0HzfLWhdGzH+ap1jccWJ+aNCh8+lcWJMn68hHaLZOGiA/yA3YUWh2RIHYyntyiZ8d60o8TivVEG03ybTQfJ8FMcBpUDd3PkxS5yxntLz1u3fDTA3DwP3VfEt9csE2K+m+7u49M0+msWvr+AkR1BgAOfzVu/TOPezKE7jHtTutjDuMcxPX1NS6PShz82ElM5bpUa43sihOg9QE3wFNZPF6+QGJi7e4/AEWzbfjs0tWodG2EmlHQ9Xbqhn7Sat92m9cV0Ynpz7wN1l1pzSFdN1INNJOtL4niEDA/W1xMcsVXBryB3acTatfGMQhuMhrHbPaIkyAzfUnCP+EIJ7oJxnPprP18Fq0HSdHgK9MQNg164ioGUnj9cm1sNOLe6JpZfdpmhULQGa8oGgUocGyIiBx6mSh6or09//PAhxQMgVB6sc8DyCInyUmUf45ZKIeeiYD6qlSqwkqwr+Fgw3zQuTESsEMwUvnp6n3E9q9YMQwujLQlaCaTlyqDKSTJ8uQk/XdNUO/yVYCFTAd58OtRMzOFbNwKHGMGnc8zqdLjpzPwA9gaa4UHjlumSeHwgH+mmS+bveAfecyULevv113CKWou8JveErDDDTm/YDbBR28L84ybVFrjBQklArl6b2x/gcBNzyh60IFXzAwMIbXEPqjP0rJhv3sZ4m+Tl/f+KHvhBzMUHqzQPwZHM2wFgcDEj06huU2h264ylURV46gXBGU6pMLlgxlm15t8jqm1pmoigqa0ozqp6424y/XZN00ylsNyJk958smgZ3E+omDm6pGkt60mKGrUOTbm+aI3PtIDMEDOeGES6aqVfcv1jKKXeU/nj37/5869fX1X42F+XvwZh99c9Lnqn2tVEP5iMT1/mLhjBh0omClmZksAq7UbtJZ36yLvPSElKPP66ccVzUI+j0Wgedpr0Wl3J6/El4h6rVV/LdmwelkKY3BOxxdUAw8l0XJ/5AGOAs3I936SEHOGUQ6Ezkojpb3+UBDgjrVMbH2c6GtHHuuzOdGS+m85iVy30k4ep/leOHRfXO+ef3/3lu2//9f233/1l//yXv7776ae/4f6RxpNfLf2zv4AEaxmKrHsc4wGl3pR81IDy+9Boz/W1KS9t4tSUV1bvFlQJqhaVdIIymT2YXQQutMMC1+4EfCQolJj5E9hRWIVsBtnmCp6gnZziJiySdSNP1xxte692V5fqXNev59pxYkF5PS5WMAthuohognw03zQhRxC4AgIJ+XPBkvewHKuU/jVE3KiNhveS+TSripQw1k8XA0SlodYaJgeI+skEEQglmxiTcv99LkSyVifNTVd4DFqzO+zFsOtEtoN00TodjsrQjsfjtxanaaxGEBofz2iav24KvpHS1k7nhBKasVJ8uP8pSEakPP/RzRGsFErQ8h5LhEko8+03g9ikVBj2gLgUfqxOphkhgsN54l/Rfgu4qEaluk/YugdBUQpIJxkEqs1rCQhRMW+UHxdKS8K3CYpKrXU6nb5VR+FCkygxS4HQTee9ry1w03yi/rGlITJMvRuPryvu0C34WGiUHNYGgfDt3XWuQw+Ay0jdUMBN87bF+30wCPsJ+MWT00307R/uxRhlCIKylP/8zZ+/fbd/+eH77//6h9e/FaUtLH0Zb0Xp04LqVp5QDhe9Y1Yao9eXN/MJkIStYtjB/OsuhvJviyQf6BI3Hf90FVwaPsCLz+NBUBKx8FUrAYrJe5Je3wRTckt/lJRn8rPP9gm4YuFbXPKIDZ4k9ttvB1wak80wZo2BAfsCzR//IFhgxF1sNXwiwcuuBToyHH3W33VJvo4YXivmas4xG+RyulKvXiQbd8PJS4NyBhuPzph7/b053AmLyCWswUh+otMUOae7KJff7CdT9l1b7XUGxbTfB9TBNPk0reTPVoKxliTGERSjwUUbw1ymo/W+1QjK59GbIzk5nBPKswH50vafSFYsrIuHICcCRHi4BETAM99sQw1WH0z7nZl+XXzJc8BiFJvtJmWW/RWordHUmMwLw4k122M6VW7bslXJLjyUrE6ZrGvuP7QdQB9XbbMSUHvJjHdovulrqhG/hACKFpp435zQfq1ixjQJ9efMNAW26ATwkCBb9Jv3lm2TIeWS5EZ5qxsl32fAq5I9urnbwDSa07afSXbanJT18Xe75PtWY1XyTdvucxOd/tDF4OEVm3Ob5PtW4w3v5TN1fNza6Q9dvJdfsTm3Sb5vNd7UyRfCjlu2Qmon2pj9sgaiybDfNGrKDBCclcrCRk3Z4wn+pNhUdgKpavK1MPSOodP4fYRgF5fkumX3WJDTUUkmGL1dsk+YcLYa90leDhNOZl07TmYXzcfo0E0/wSI0zwOD64YtVnJSfYZuOuu660+cumcnVd5d6FQao477XCKeJ+OLnj7JJh9pCrvff/ftz5Ipk8+vqunmkn7dvs++pBs2pa56T4twrbmBJVcfkHwrep6swANtMuOMiIm5ZC23HoNbOVL7vvl2aRX2xYQc/32S05gkP1ckF4JYWhbMKR/lCXl1md/8dS2d1kSAnEmbzDzL/B71aPkJcTiIpTHEWAjvdnofXVPz6Ter0VEr+MeKlrg2F/784+0fdzVUsVR4/Nwn2enYptwVnu92yS0cmNIX+7CNbO1wrjo+Neddi76G5qRsJeSOfFL4W753/r7r8p+wHJdDnBDkc9zM5R1zIrluSw275ACN5OkAN654pN7xXikbjYzvJxEp1fXTpQUwpMf3ypVj6XLmjeg5QVxmo/1sIc0EgpVO2vKMHZkJyX/EN8Z+QR09t/aJ8Z/f7U+I7Y/f7Hvwt7w0hNL+Ie2zf2lQ04QuxDU7LTQi9PGQ0mzCHCrYiJWg5zXKvN+PJ2Ve5HqEMraX4CL2pHF8QFF2GpmuqPl0rKkqoPCWkQY1WvMoRdk/f82aYDDazUi/xiRObiPD4KgQfMTrG41iW/eYQhlROS/vlbu6DA6J9FKVQeeDMnWNWgnyDiRXeNCvb3XA5OZNYldXwWFLZML7+TqQu8slClSS3hleZ6L5NJ/m2F6m60BaMuGGDT6tRFalOBWPoGQnMiUhtEdI5kbTzM1pCrJosWFG1MqV/EuiT1PNRtPMrStwillMl4AqEs/zrjlCW1mTU4BrJKOxVpAuWqZDCbDgZeLiuEisi4MRTpQb3CGLfUO/ZWgpLl5rCNJOWdE2L5cJ7ENEcPrX1YANMbQ5Zx7uwGg0gbaQmojDbJnihAbi1mnkrXnxPTFjqpDhYmOEfjKetcJStkFVlh586KjDnBHXehANwRtj09HywndUhrW8OdT6pM39YWyvLBhfj9w3HMAow6X7dNPs0r1yPSo/vAqLhZ/P0Jg+5aRIhyzKvoxLtIY4JQRiQ3BAu65ZU0m3il1dBI/xiKHsjR++ZJe5LZYbjoTUpcWL+EK6Te7iOnhsCppzmpCfrqcklgPTzNme75LbD0zTa2FGTUTbW5Whd5ZEAo1+qwJabu8E37LbfrzuJoqhL/1gBZsH9VYm0rRVuSc5hsivd6RUMp9mpWkjqrsUFF1ZOUeWGDrh55s/f+1w3eJ902TW8PW+Qhd+vRX4ZPHukru4Dnd4X2maWHk4fMT7Sne5Q1cOLd1tcheXwSMvSgmGEpx8VieuOuFOBJc1v8yeg0Aeq2z0es9HO/9Ff/388EhxLY0Jt6viK6hch9JbpRLH7t1diDN3yQO2SgASEAsrc8f4BMyal/agbJB+uvLrhUIbxniGTyasxckG/ouWZXHG1nwyvx6TYTL5i00c2xqlNPx88+cvntMvuTdEGpu3X7+Y3pA/7v/jf/vlT//27ru/fPjnrwOh3g4k/8++NwRbJHQdPrdGXl3Uu8WursHXzgMno5SiG84vrJHLga8juQKz4eLqVfJ09fVlQC/4/gmBj1LDi06Al8HRNwdkImElgXh9TSzd8XUGUeaOT1Dx2V/mWAHe1x4awaQxE8rU+8a7sKrWQCi4ezjFSk4mE30gD6hTZCZhynPa5bKWOF1Ttdlhqsll6l0BXMtGVercfFiDZQAE17JyLqa/QF9CLhSB7zveIKqTKul1c28JCsN3iS1rO09BWGWH59FEIkCQcDol4sN6bCRQ/N1YEO1b7Ac3q3n0aTZDOKjPMI8DtUtuWI3O1EktfBngnHYFCs6qDcKKEjWX3kkO8PBN+2fmM6pdzzU2hVm/KPfkjtzgMWivzUSfZnur4XqN8xNO5E7kPd8IQRrvPX68oeM8fsPgl3AjrPgSiPUhD4wQ5Bh6QFfvbhyPS6Vmrlqomr///cr3D5KIypXk4dN2BUjLMk/DVLPSWuaunIBxfkKX1teAYE94jCu+/gOl1s2Foq1qMLJVolJVHJ1q1aPiR7dZ3daaQijUrDxx5CC3QeN9GT7Ru0AbQKdl5Qm73cYwTSWzilBcKl3JnZOqeT27K+M+vFsejlnybxh1Zo46MzHS7ApAbFxNi5sJqt+IbLooh837aZoOOBsncrMHzaAYSnORexKyY/+rbDF7zEA7HKHlbf/xk77qMPC8Vs8/OYeYMBVw8xPHjucwE1eu8IpBM/Echr58/SB7Ti1Er1gZ5nH/+1iKLoka8/ZPw0XN+IKHelM3d/yxrhZ3aFlnpDK1HIp3oKfaoWJ1cpA2l3kGkiv8dx4RUunU7i49cHiSNvKVwn2Hy8r41mVmTi6qOTQe0oupQvBhl0nVJBvdqJFcnkIO7o52KW8ez0l2oyL3+iu9boRMsDpGi2d1e0GPstHgn1yk+EgPynAe56cBzS37J4dLTxJR+ONdhh4qDz3IJzxSQckcA1qL/vpNp0uP7OlY86dsU/Hp57tkZfkIpMWJl4/KXSQAhRfDmGHxRbk0NrDR3EAP+PTULzOJHJWAcKJjcKnUBZrE/HV9EXicAPND41wN5HRpnTr9Kz+7Kw8nrca8Hk0gUe/BebIdTiPL3Q3egWdot5OUSa4DFQrLDR6kbvs6bOGTyJV89HW5vA4TNN1Z7OYC8RH0LT/lOrDPsVzpyXPoqR9YRkgux4LlygV9Y4/I838Ej3rN37+fztKhoTEMyC61vJbc/4jYWI84/NIFT6sQt1t7/T7Pth05kEdZ+zf7drZvf/7mP/4WEvnHOO2XgSJZqHRmluSSgZHgsFtucxj2kq7a/okk37YYy4Jd+FHSy3P0E4Qb7/r6sdwYXHDsT1jxnCT3iH4wbNmjL1KGlACRxktyG9hxetv+Lcr1MFKZKAIm4y04NFerc9agd/MITk8EB02HXbMlt7XwgGLoGXMZY3gM5IViCvUfYqjk0ZNwInh/N5Tr6ZcgG0OCs4PGJ4KTx9isAIZDh4ILa2sckNtwkWqhCOYqOACungn2YKGXaH3ccjT8zpwLGAudpxCjDx4LSZbEngP1477jMPwiLtQjhHBcDIe9wdb5uFWP3CWK3a9MhzxcMM0q98oNMXlkdEIuWBu6U3JY62IEyUJNnT+ZZJ/V2Azi1/2SXVZjv1lD+FSCXdZij642fFbdJthlKaQY92nkSsL6eoCYh4Kl3y7Yg4D6ZCHuESs90w6FBl6G+wS3NcTDj67ETXIFaddhKJwX4i7BN4Uqy2K/zuMdYq5SFZWCHAKS0ksOz9kTySU5IDbtfo+usNsE37cWq5JdHomsTh8vDhHcmeDoMZ11tjc3Sr5tMdYE37PncYseUCpnv3PUY029t+Y2yfetxrLkm7Y9+ORBz37ouMcN3yf4vrVYleyx6VvRXsnD89QDwutaQ9s4yk7a0KaUebOZr1E/q1FgdrRJ5g+6pIO0tHlM5VmtoqqOlKZ2pQzFKGK0SNYKSTfMt2uqhmAmkiYecMQRdvPp/2fv3bYtu3Essa/J1z0W7+Rjt+0Hj+G+2OnLc1RKVaWRKilHSFmV+nsTO84isCeWdI5I8FxU4Qd390oFDjYIkiAwMcGqCrXGNNSDZzFaW1WqNTiB48Bp/KZZKc0LiOYHpwirnrq+cWhkKw6St4gsu1z1oAo2XQsln1tIYGsjAEx72DGg/+dyNO4QFKuB7QCuOpv+0+ZVd0Vr3Lk0HCdy14w4OSJqKvi6g/q2uh2PMX2LnTzr7XioFosHvYRV/YVV56byqf3YBmPF0DUE5QDyGytbVDsQhVceENbkqgZvf1IBRtfS5moWziVlyxMUW3Jd/ylqKrSrag5E///UvArxbfFmappQhs+dgQkXR5G70Mqz9qio1ZFldBRaBDQX1QzX5q6JZ+skdFgaCNZFo22C99liWrLNZYy1FZvfqQUbrYyuX20TvM0Ub7niOlFu8yuVXJtl0aW0XXJ32eEtFztpOn+TH6nk2ixKEIMY98rdZYf3tdg2tVYt16jorFdlm+BdlpiVu2W5bUq/Fz/SpAR+sSib5O6yw6zcLYttU4W++JE25fiLVdkleJclZuV+6I6wFgfHFzSE/Y9//ufv/vL0H7+YxvmgL1d6v6suMIRMsBEsgRhWdMuvIXXWAl8xI0YuSTxoj6/RfvsYtNJruX6S2gfOZcGu8iS3WgDXtdwcLCZDuTKmYJxy6yQbhUHqzUyZ534kXXMmToQ5LBN6YKqqIDrQYkKHltuDEYvnX+UpnE9/KUyS+nzkmOE+ZzRfBw1///n7H3/86++IGu4mLB8ybBB2eG9xw92qG/retNhNRpgW+zUiMfJ2l/NNt2Eki/Z2FFyTRfxNE34wnTgpGMuLPiRFEHgfyPD0dDoLjJQNRrJN1oFHNzdFudXC7YXjjn/TtKUhzbkLfu6Kem7Rpr3BIoDS2rTDgrDtQnAoJk5fKnJEUdFxLpmIlfq+6hlwWYSGGKMqB0JCTBE//+3FxI77NwRmxbED1vZow6F7VIgzyPlfSSbmCAuyPSmbt38cCzq2vy9MiSCQNglY54SzsoG3OfCsYBPQpEdiRZe9DQtgi5oBsTKHfFCfxoqwBgKLmHio33B5d67wIjilKmr7ppGIR+B7YkBwDkZuDdRUU/T24tsqTEsjypxLY9TqUFZ8G8pKxQZsyjGGd5jVT1EPaF2FXkPXQw3WefBBx8t9oGGlW4RFZ8V8m+E2sNmVAY/KgeNdXZU2eNIHaKwOL2agX9WYRNZB7MvK4DKxL01gng+KDWWPURiQHpTwEPGRWYnOf3sUHgYT1LfF4+5Qc8NKVhNRxKehqdRq7JNycdz5yfqHRs8WhLMzwD1c+KAAiSNB64NThEVn1bvSbBsYkL/2+wyoD53N6GklOCcTBsjU1NzBYJGzvhB8ZxLdYYppG3/oDN6vj2/9879++vzt//zxux+esnQvyuG18+b/cCm89zu/tTVkxNoj9ev01reu/GUsrpTJs+5i+AamBbIbQ/nGpACe+XdexMVxIo1ncTUIGMogXV9Tk4aR4dRzfjOLMTYYxeeqBmTS/BuIwHKcG76h1GQChxGAMXW+mI0YIADrBvb+UU2agQLtZEQ9adK7VMZsH9G8lPBZ7FRE2/1QDQWKajxEbCcX9+Kb2KmpQIKxX1hzdA3yhNkIix4DD1A71Zwko74YiOlQzcGe+eCbODvPqXmgoTAt+DloIU2y4r5gIlvSW8irWZEhcLn9VPNgm595rTY5k0zPbcGXQT+jcHCcPBDPBFxld/XjE+ygrrgzGAWijuPQTEZaJi7Oi1FIDrIVNNpGz21x6PEHEwQH/LS4RpwFEaPPzmylGO6Hp/HFeJnQ1OjnUE+HW1STJ3HJjYkNX451cqwTTqr1YyLVsGY6W/YWzw89qaid8zLZmPxJnHKYCon1Bt2ZdBabjDFtOrVwqEwqRQCgJQ1bxZst8E7lcXdzfETalhWNWXU4k9RZTCP4wJhZJ+DzJHfx1XhIjLouB7zj7HT6BNmPNJJpYjimyY1BRw9s826m50/i/u8iTjhszPzNp9jUYDILIu0eFD5yR9MoLAO2fCW3W8ek3zg4Nes4+PHHzrWgoS3gMCK+F2uBfk1DV03UVCQVgfuah5Y8f1JoiY+J/ukAJYvN5gscHQ4t0+j8GloGPTc6cS6Qj7KGtvRmS44nrm8qrOyfDgzSxbg6njeYMUgvNtFv93nsAPdNTY4OnrkxzusrMDcDhyw46DeMV9CiNfmV8A+OtSMcZv2vVQhZejCC9Cn9E6abQ7PAJMo/P4xk8pTqKlf16z26fOJQjBcJg+oopm6G8cmktEiLhDvT40jd4Nlv3Pj7BW7FyNN5Rbw21WyitPTjYT60HJwe4ijG0XI9XssQ/NIm1PtyCkNxcRRnKH3TwQdPidDUc486sDCsbIrZph8yJrXA/gb2oCZ9glNOjCQSk3/xKUETGnH4a7MBd4XGXDt8CmDARjaHw5iSaXAYZ4Gw4fyazdXGNBtDTQa8yTsDxx4GNXbcq6LqbJBkUY4WHvgU6QeLqXx6ClEZZ/Ci3PSYIfAm051dUy0Vg0zmHeTm30Ft6v/8P758f3E72peN97Uq9fD/Xu0cc/E1xH6tS71xXYoIqx9XpNo8fuLgeOCwoKjHT/+EqTviC4Nw3UV137pJTgGlZlahIAGPMMgqTBY4oEGa6jDyHOgBLZtMkaCaDC0bamaVCBWLOdBW6sHbPxUEBc2uuUELvNdDBOfCApX7cgrkSI/oR4v1L4iV9oHRI4PUjEHHg9rtLLwsLmxVjHl9T4D70bsHotIejOBTpGsJ3udnu2tQyaKUpFk0mEf0iiiPFAAlo647zS64ARorYFDqJ8klFQLJZZQbTV5biXOGomQAyZq+OphG9KJb0g8fVidBO7Pvy26NyZrIuYnh14FB84Nck0e1Dxz9ePSKA6uZqHmMvyYeheqJrRPkXYEAWZWrczWf+2Y594NqRq4sCGtihs7xJcy0h8wlGdZ83mIDHsjI108xk9KHSPHJhBnY7OK9T888bJXRFc6+2ib9DSGqozVEVSy/yJi5erVRIGHmZ+fxai0ReSBwDiLH44syZoaqthd43LC45gYO6Ab04wQCGHFTRw2DIANpmx1gsqYQOr5wCuo0WZ5LclykxdQJKIqGXM+PGCZltU184qwU3+3BZJsUJjzmig9eezTqF6+9wENmR08Xuyk74FOlZrkwlZuyZoTsnfQ5N+yEeCfqMnvUctozDbaJ5+6CoYzNFRwVEoUCYNwmjctfAi1UnjNZ91KLdY0Zudt5ZKvcyiroyrzSvEkCel80CtMPBp1wmBDxyS2WUqiJcXpV2MXpFTd4JTp8JYZJZu2LV2KGulq6CK20+wXGzgibYS3Iyv+KKqv1cDrC8dd9EitWfUdAhdbraDo4mzC1b+WE2yRxCfzUkidXcDkOybkDdyj+wjGQSYmyr+VFXiDCjSc9jkszB2gZFA5j2i9tUimPfDhdGZPW85RVYzQ17yAmyyuAG3uW9D/cI5Od4Re4U3xzJl3h678FwcZ9k6hcStFBapnrelLGjBw4+7FyOAcmcSOgUPNAY+YbvuWyDdV+VykkpaXaJcLlWEuE6wfeXmKbvBnD6hgxPrZJtQHSdAds4IDZqTRZ3yZ4/ol2TgFnujCZSSOGHxAdgVyEeIu+wFMueJVK7gsLxx/tZSMMOYIKCBuAaa6gnyVNVQ+CAMQztmOKbe7iYISAq584CH2QDsfQjgiPp5D5PR8W/XJ9k3QnGTQFQxmDblLRt/LLWB2bjhiNPCqHSuVlPnyFX2u3xuCDABcmmy8qNgMCbugjAkki+k1a0a+jxtpNLpKFx1RGZI9Hk0nARo1ycBUVr4B/ff0bnAUxqhJdfw/pVoWp2eAX/fCI1urOjn1jImnHh3+Dd0Q/HRAFRYe/yS4J/B48/a9wzoL9D/kFQlL8NkSZhHdUs6nKZi54iWZB3CX1qh9LgR2j4kCYdkyDySwHdy6OF9IUx+bFyla41iuDcUdHYFDtHTEq5DbVZbDxKEyClPRwQQiRar0autYgQUYAVdTSc4jMuQ0TKqiuE5w4VU0xq+L41eUk0RyF7heKTVK+ir7UU0t3g+CjNB3IJVacrxLsjQrBphJYqkqJ9nMRUxc0MwvfjumGB05V+ArKuZmc3hfRgx/1vKGl2L3slw5i976hDtBydo+bVLhHUnJobMGxIfxqrNfcHIULsAFWuDNfB+I8wmeUPsiCWooQjOBNnGv7h1h3BG4ElRIOWTdQVs4/hLVFsvCYjOQR5L4mmbeqQiSRWJWQHFjZqCE58VBlbI5HltX0cJN2C+C8TSLBwVddUxRMPSDBGJ08x0LLqFitaJ0gRpKLyf/QY1QcFRPk9JobOGAbP+OXoZ/Jaz2ohwRlNiFEorY12LPUnYImOxS4nlzSoDPdc37eNl7okpEzIrlxoYlSR8WAgTPmIvZSbS+Ti2TiMOURUs/Zy2WTFTRZQnReEhlPPkKwhk/mweDFCMOa4i15vbAeFraohY1B8SNGHkm9/FzShZcD1GTAqoSw4jO+KaxV0si16SU3yCgLbVgZky2r0X6Ze0PHQ7hwt7YbKuGBVVT/9uzCwoGl8umEbzA5r/k+FelV5OJJefxUPq6x6tTdGrOr0agZue8+VU/0KqUnfUS06Wm/xs7MaVcyGSoK07OSsyGDilxL+AffKAXr2fHWlMnURdzUa6sYhfhRhQvkWeB+F3AKSawtwPqYUUk2CELKeej+SwwE5VryQyvAC1ug0UWb6NySG/hf5COLr1oTOBn3T4qlVXiKqLlQNM1/36CIeot1KhSCVvLKPScjfp2aHnABpkNkYn+VIjhbWp+POggX+uGLceD0Ghk4TL5yGJNe7KboXqJXzPB0y8AhT3AD5MVIioGaDLvuMfS+rugxJvBLIVl0HSApT/+kCDe8wv/2A6XCk5iaSQx+fmbBQyGTqkkMai5I1ATS0vsEugx/fhrhSlj0UZMTFrJ4eZIG4wIJi5FrqIruhgDRELzldIOgiBrw8VIyghkE0TrDxbcMfi168gVBkoMrPh8KstE1LyZqepWR6jop6pOoUv1kTDixc1H40+k1N3i6F3y6E6OhUfSm4Pf8LpDRG8SYOSg0Tj64HqWyRItqOgUIIEYPfbRg/2nXKeHScpeGXFoTaOehqjgxqoERcjUduxsETH2F8fE+vegGHljZaOwAFkubDsX4dQU0PUbyRjCOHHhrVFWgS4PlfLneEnBpswbgxxuGwlmtbEpqaAlRfplUhTjtxgkN1UxTVRUx6RdjZrSlYG95KzginS2QPKo2VG750BSFh9qzF+g08iykKNS19tFMvZQ8CogHS8HGrQmah7uP3UMQsWLulmJx3H1ZzbeZXSSVOUyPi0/AS6PM4QG/XrWVX/z4rAHbqemclJGHdpWQfKFbH1kNktPUUVmlLmi0E76qrFzJKcQsIbYR5ukUYjtFdfhcu5JJlNgVwCgxHSrkli4nQgkMZkVLRlj0TBvINmyTwXq23jOArPTMuiw2ClZRs+j25rgGmSRzsEk/iABUqIngrqv97FUDGkGrjQ6zi4S9KpcJIgBO2DuIEgVFtlBT3dLO5mnQtyU2k1KW/YIaBJ8GXi+64MAUGGOj1jRE9FEGEO/vpMrVFE0jF1xWXV/dg71FcqQf4ljWExO0ZZiBvllVQwHNegAtZze6CXQKSDxKNkrZJ+WAVDPAaJZ79xjjiQATmleBz/lsMwojZjV6karDoKQeMZHFeExe1/MpJBfWJJktGHUZmIztVJTVwc3c1HxIahiAW684E7QOkShjyr2obITIkI0l94iCJAg3bJIySpDrr3z0S6duQ7kvTi2TChsJDw/n9/T2MdjLCcfGljFXcr01HG12AWrzKoLoCmDLv0ChDpsFm0kKdE1g1+HVgwBpRbv/eXRAhxnsvm/m2k5e8B4IPE9DQETUVkb24Fz4WSvORZNdUhVFayxq3IP0OFYTcVTUyIK7ZNYxDeLsgiPbnQ1rFXXF4RyCqi68K/eralpCCSp9aOZ/emUZXSKaDrHLvjjOqfPCIl97GXiC9byiZszAMUBUvMa7JHEQKE5pyGyXYgK2jDosFNBC8WjGTiPqkYIlrwfz34XxyaQZOyjKjEuAHyx4depZVfUM5OndYzAfg8mHmG3Z4iXqvUoq+oTdw8xoLENXzGkXjSEtzma8EZMMjGjLaa5vPyLHoaVu4OmHtnrVN5se+6ATNuFQoUM4VJ9RHjNcRO4B+QqytyljeDV4gKifYB/TnGTQkfvRpJL4CihngXLdLUFJh9tY7gl+guKgje4CiIWf3To22/ixPEptriarqtnJug3xRvZJNTyVqhqeKo9sGkeftxne7QuWffzA+4l9jBx+RXdiFF2bKkbdgl63uHnO/Er3g7RXCSrtRUECXsizS27gfwnbVc0WtjLgTBzRSOgWVXKrOvVspz5XuEjqYRNr9Xc7AgWpC/F54sPugbiyVZFIlmJD6UFt/3oeEt4jQYHTSlb0oN3ZlJb+zeAhBEt8fLZXI9wFmQwBfYdu8vKM6Tn9L/I29mNPIAKU2m4ttCyqxTccKrd6EW7VQ1EaVa9YBWqwaZPpZzLmjbq3KUBpVnW8Kkomp5qaB2V6zQ0csGCBtta5gQUata3a95qq6FCpBP0vq/J0d8kA/le9WelTMQ9revKgCjp0SqtDumC03yZZN01aG46E62oCfIya3otaFDAfqJmLqm5zanoAbP9kQldCLGSPWvZ3LxL6XrlfUeQBfRNjpc7Q/TC3mlQruFxLPlcQwcLEE+JYeat7LYn54U/r6mz4fKlZThdtCuIJk8phNT1QoH9CRGs1mhHt9WBS4oWGlXX1BhFL1RNzK7fpjIOl2kzdcHoCm9cIKh8UCV7RA7f7UxMRVNmIMcErbJwcNsq1pQC7JAdVgciH6hIknJdJQtCrMZNEj6BDaUzK9C2vCRMQEU5Mk0Z82BgXEvEo7h+n4kJfkR2U3tNII3YYTRbVhToiLVNKBjBl//uYt3RNIUvdWYVfVDKpPc7DMB+q3DhaJ6kCsnOagd9qApDISosWFbywI7I2Ot0K5vX0Uz9yXosIIC4UDQQQE8ULGp0I+RqflTGJpBHZfg6bZ311CnVZNQKoXyxIneHVwGnqIEGKgWATo3UtsWZb3GjoGOUoMYWXgzs0ZqxqTGkazrq45oF1YrgRnpgE8XrUsodtFfPDXkffzg5CpyvLyNQpAh5OJKpIMqoTczou+sjDEe9v9SdDwHTE/++7H7758T9++vK/vWhCIr3yvyzQlervekKisMMKyHzHiES26m6xm4wwLfbr6EUjb3dUNHtkzrjP31qfQn4h2fUTeIrBFvzTO6xI7ZN8z6vPJDuetca0nS0GIV8sTpjsmX/2h2YTf7pYm/4qnMrJPu9O22wxLdmmy3DUKE1/pxZc41S1Gkf1ir65ES9O5fSeFbzNEu9rwf2Rzvea8c+0OYCvVmab5PsAxR1rPm3lD/5g4LCRHwz//b/Qi+G/fvrLX//+t9/1YDgxvx/wwTA58fY1HgweL6RNYjcZYVrs1weDkbc7Kr1CTMMgysVShyDvOdM47qIrzqWmUoyOQPqQynGh6pntNIzRQtecFXjNiX4TLh9lNd3bOcWM2DQzYm02GTxXNaLcNd2U61pQCKJaFDinfzqUolMIDjhEDo8cjq1aPL0uBCebN10SZN+mgjMP5D3fUEZYMpcL97afzpA1moxUQMCvptHKibGDZya4nvni1bInk1UOReOhqIIdIXpAUwJ+IIohqQy5c97IpkEhBOjkwZmXDyfn+KeHQig7yb58/tvZIxYcy/LwNshCyO5bPlbjOg3bfcJ4fS3JxM1lseu1NfZJnrXGnmWnQqpNigjWZp/gI1owrV/ZYp/kSWNsWvN+bE7NSnh+bfZJ9mGuy/n5tdknedYaJssuRmQ8qWNFiOnSRQROEAmAoMhvA5DASjAigbgG1Oh4b5HIlBqcm/ywIehw1PuNAR3B7MEIvqnRdK45xQvrMlNg/yICl8PkfefVqEpKkWcMlEJhdhjH+itdewCHsKH+FjksoKmOyHYxqCOnQd/KqqGhBjUCiMY4aYKWKX56DOg8w+6f0pHNyLFCU+hwR6PcPZggCt4F5iNAHCcp+miB8WXtcZdvj0f0pFiFZ+xv9AOb0/r9iYNV5TfB/Q+P5hjV8yMWg5Pl4a8/rUe3SLbIGzz8Ws/mRvJIfwQ1zdo5p5rfnAtqXBJlQqaOFtgGfdvHx23Qsg1I2FWnGDRdYXo+fjA3tQ1ct8zAiHq2TMID1rU5SCbGK8xctChY+UIIiqDzPh8au4DEN/aFxqffOPa9ajGk28Eg2yM1OC/xMDnITFkhqWkM95HUADTr3qeQZvfpC3Aq3KMQFXGMb2txoGHgZRAH9n2eH9XJx5w28Du14JTmgPePgok2272K3G2GmBVsst6VO2SftBlI9JWfmdztdcS2M3+3tijaDNsETxrCYLVb4gP+6ctckQVL9hXPsF1y3THJi/MoWRtim+BJS2xZ7WoSvlzIdXNkWc8u9z7BuywxG8cZTAtvt7DhN2qxJmvSuKtit9xNZni7lZapH8vfeCHXZE36KwxSndvk7rLDe1pso6tKCza5tPWibBK7zQzTgi3ubHV8UTbGIgHpD26a2y25TM70VMONAay2S66RJdQdsUuuyY7SrrZJ7LQVLJDV2uuDn2tRBzCxEmySJieISnOvIrcOtqr1YhFSjFLa8MzFjqyhU5wCFD//6THfeCRd1nLJAqIas7pB9gmerG7pk7VmG8l61fTAKfrmsCjr9TgLgmYOvtrxb6uiQty21aYFW2TMDsXydOfUsnimXkgeg+DXHCkw6dNrSJ5iSnyRNXZJdhaYs1oVvH6b4GPMJ1zLTwaExu6T7JI76UCXIgx/2yK3CpDsKbicYIalgJORH9sF05U6Ey5cTERTY6yammIrB9oMsErjANArlxLsNiZuVj2jincLttnLxMoRXkuwyYFJAwteTa7BpXRtiE2C9139syOXdrya7iRw68+Qq1Cunbn51VBZdQpPStahMuNmOFQuatTNwxtLdDvhEydHbt8RbQNTYLBnX3nbFm5a8IfunSUo5okY4d7Z//Hf/7f+//7L9999+8NTd+yLyXYO+nKl+btqnXUXjeTUTWYBjNSSi9GEQSlbAo9Hk51oU8Qxl644xbBKPVkNgXH8bQ0YF1Uot09ybAa9FvQIB77tWcH6xI2KSZ14ARogGglL4wC/xTrwukU/qDkZxJbmJpRqNM/Q4Msnk0ZtmrJqIFUB47KYauzhFGK7ik+nWQ8krMyavTDMTbDRpFbHn+zd1R9iKvpuwTZb946H9K8ludgQeUrRPODiUHTRd9pZwGO76tVoQHHPCM7RbXfP+5NskbPsrwtYbY5j1pZbdCR7OCnOlT7wLJFBFC9zUAeKK2fwvLIWSE3h3BzsHl9sYozHmmB1+4lsCd9+TCY6br8jj0kejOFWvd/uCsFtAZN4+PviWWRSVDouikrOqTnqhK/EoS/UloSUpo6H0XK3VLW4rx40WNxcINlu124T/JWu5RSz+MJqFWfOxlFkW0qWK7nBZmSjEHxuUOIledyetapxdMFz2wdTTGPXHX9aytc5JjLeKzdEm6GiQvJgcS5qGGF/mx4QOvUICyOnGNRU0V0+9d7kWsRMbUxJ5YbNZFJ6T6pdr78icZqe+DTWuKkutZgUHVE85sZi4uXOf/4M4s+6ztIaR54SsyZXHUhNsycdYUx6DOoTd3zpglVTY0L6Djdwcfnnjb1K/FavXJi5o9irf8OrmhqZMa2mASZSHQslzSnz3HGT21kB3nE3YvaqNu5KOI//HqWCK+ZjjDkfLenjk+0ltk1uPlv07S/HfIMXgZzKew4PcGoQA3uQHKW+xalm5dpMhAV+eJqiZsPpwfOXftcdxgrIseIHrsVh0lur7rCUbiZX2NEsxF4cG4oh5EU32Pj7w6aJ56gIIouy4wKbdSnMopq56o4bh/IvBoTWWnCPWkwSJldXDrdMiPcYTj9uUWE523GDKtf4Ynsx7BKbbGhOr+8brB6Wg9P/IxY71Lga4UGcgtrlVe9PsM2LLD8uNFXfphjYdKV4TAr8fdeZ0ECsdL55TGUfzoLPXd9o1QTC3iLmMGflXrzKcJDfy+40VoAZbdvIhIyDKdkk8/FSm/YsEGznstsEvyIe5/G/W8Wk9Bd5hAoM8amZkAmFQ+dovHpriE9cfAg8k3LQvOnZqFQpseCXEBo8fZnkU4JwLBU8aWYFawwC4w3OdEsuauix/DaMm/VEykH1JmEIft0A8s8vehfiZgz99q327m8UTWpL/mXnkAksLUIvgHcmqCkt2Q8c1RryIp3M49sF77PFtGSLpAY1RELHNnXFGVhQCWaKyMUzj8AuSEjWlfZ46B0N46AixqqfcdBxg4dEf9cVEypBCoSw7N5DOA9vnvuoAgiFWxgzFcZD8mJccA+OTVgv6+gCYrY/PzqOmO0v8SRtEbPjXHBCF+KYW+pFnWNqUsmyph6SLqUBHGQcqlMkpRSaKoLG/pioGZUNc3z+sNelCps316zgPWcIwd8MhmO8ouDsLBCsdP0AfDFO5k/widJuj2FOGUyta4DmwLNOvnyiJov1kO/C923G42m5lOm1KSUn7skbKPWRvpOnYMO8Hzdf8WntsC+lnzTFRNFc9RHYz2uVYillAAofjkAEtR2iUiayaSbo8+5gHrNBNWn669oUuoXujHyR+TvUcX2cicTVG9spBCaNtVNwW+cZRnu6gOciwRlaJDX6uzqbN/W99gyK+jYyZUNRedCdMVBR7z6ehsJFo/d2gn/oTicig3lyDmx0+vO3fWU/f/nfXtTo1E+WL6O1rhS3bXT66dO/v8jkiy9PntT1C5prbZekG2zm5+HUYqVEBWdckec2HtUgSzB1Lhb5136QAjn6rFyVfs6q32U4I5tUfBpIjKKA1CVozECxCLrln1/0pq9wXKP9rWBq1Ja0vtRabr9cXpgu+00XcjwmZa/cWTsYvNpSxmOihyvJgBBOyS3JoDBNJJf+NcTOWsFmcjUWDieHYuHJHTnvdZ7cNJzj8eDmL6NsGFU9ljwWY9rjjDsXlYw4UDAyf9lQsvJl7MbmhARUyeMhNy6XPEeSqkKKYwx5GVQuTmXKxCeRekyI1RIAErZlssjoSZ380BxHykbd70OZQHzGCC8Ii35pAFxIPAXX8tzSck0OGAKQbzgOtdg3PLcaxu91kjRI90NGCOAH0xMjhric4vCvswsLHk2x0ywSHEKj84+p5AZnrAVy0yGKtvLFGfDTYhLGXXCuXLATMmWX0zr5oTkG7mRKk9S+0Gm0KY7jno05vI0n3zZEt2iOrGmnfIdl4dy8e+kbYLUs3JCsJh8mlXsl14LroR44vHKP1FkbvEdn+j0vwU/f/+1fP/X/65f/88nALwtYlj0xqCGf0Vl0GWTHkdleuVSkXharzTAp1uDmD+UWTfYF/EQUS5wzO46cbXJNHEibYY9YE7fURtgltp4FJVsj7BFrcf3oHb9Hqo0JLo69TXItrJD960i1sYEORLbJtdi8F2bYI9bmYNRW2CbX5N65sMMmuTbXut7Bu+Ta2OEi4Nwk98M9Jz5/+9PPP35+0Z/+TKXxF9e7/nNVxi4ixzY3tffZiDRYNKzGhmzxFuc58bcDO3gw4BKkpgPQNloQxevj3A+cla3c4C3YR8gO6hZu6+XMVAevKBMCGbCaEJGk6haY65b5yJiheynmKW3MoKH/+envP337zZevL+dFvjvnfrzQcgeKHwCTX5QRFgti8YSf/w4wkFyCwWbjNHLF9Rt9Cj2MWh7YzNVDm8FeOKj2HNZps+hWwR/3C/y4RdzhGFf/SHmLAEnx7VdJbwnBjD3cxG1qgo+USo2Vy6oC+uBy4zcGVQN98ISw6JvYEWTo9V8hS0ZHUX8DAYyFNr7FcAUtucbJ0q3ChXvdaJurKpkSOzFynZaoamhZ/FcBPy2hgo+Ec662CXat2lwgUjZjwzWmgoDsUJCmfxrhfBbexAfKNg+blmwxSpuHe9juJC24H/pTbeCqpi/mkTCWH5BIBPiHe7hvIsS5bttE95mDUJjdJdi1PIVZuZyTiI2GbvTaCQaLqEYR+CPfGt7K+zaRodd+6FcI9dacUZp4hfz4+edPXYfjv3zzb9/98KeXv0bamVB994+RkBGsS8NOTPqC83iPj00QBp0RD0BihiOHCjC5ZMbu5XBYvO3lXx9v8CmCb80Gwj91TDRQt2i3foMDgChZHn/8pjdOcmOAjXiGeXiGiU+/+sIh3BWcTvFmUgkDcoLgTM5n+TNP1KjnEzvonXFCdz2nmLx21rC4gQyACrfgHyzWxgCcxc2s5nO8oMeIh++MHqOqxpj1O9etJ/+wx4jeGha/W2UqqgJBez2TpDjFDpx4wtDpJnluHqIenjLmt51K9sMxwz4ORb2FUlUsfvngnGTAT8uwdwdqxnar0MlJXdnIbyt0YqZKnKnVrTk1zlWdikXdWokZKcQMUwdQV5ndZzULWnNMCFtUM2MTQeK0+jDmodp3idATW9Q8s12I9l2TbCRPAPwHn5fAX5Kqgg03TbZBoTlcMtNn2x86e1RadN+8UMxi7FiC4vjhMHrxio7c5H16ThrpyuE6/EnSaB7QzNOfsHhHVyOOAqnUeYb6MUlmgPcVU2HfdHha9DMFwfv8abHBgMkkRkfrgHzwS58/jeMiqIusHIr0pnoblrfGlHfjuhV0qkF7HfPRYpvBgx+EVe/84HDm9X2eHwPxYjQxvERFCd4/YVAgPo39k5ixnenZsWWv/0MTQlKpE6upJqwENRG0BH3dBkX0yp8W1fQnZz6r6cfUtKEmfxJq+qrUxPk69JON1AxFqdmcsmaG06ivMHK6SD8Ii75pkAP2ODa1Xz0GE0Bodg+860yGemm51c2lVdT93ZhN5rzfCl9CQX0STU64xE0N+SvlrHoualnUvVjGEFV530CQQfc5Nrk6vtADflrcL3nQFg0tq6YUr6phTOrEx5bioxgJ50U1q5qlUwqSNtPmBCWbbr52DBzkeK2uN7+Kv/4kNliUEqgeAhWaydFez6mb5h65z4udahnUVoCO5WwBxtPqljmik+fE1nObrVoBSEDaFHml0hZvABNivAu57t1Tgu8AoYUBopTln//49vPvRqG5j1H4IXwVDGoQVlhGoUGq7yUgtKCHPNLsAqQXjJPo1mdTuz16cwghiWKSFv+4BCHKNhTaod4d7GEiAy2+/frsdfGIEhC7qevvCoaGLe2Evj1wZIP0ufEjHRe3/YUvhEXnRBiaodv/oROJrwpDc3hrhsOkQUAL7i8yI3ZSFs0EzUEx+ZDDIcjDHWWUG7mIGm+4P8enNaBL4j+2WXA6zrrIKoImaQRNCIr7nEClBVJDBFJ+NC37koQP7HGvWcEWlEF0jgFUKthMCqOLOOJN5BuWcsQnQcOKp/udN90/rgddtFPhrL4zWavz77U0nIRhJ1WxG9/5euFZT+IypJHFt0UvPzzzuXN97HhUlb/84i6UGj+yqISdC82oyhFVrJT58BPZ9aQOOj2RqWi6YCozWExkOrBBkuYLWKRgakaK1VJV/UR8kr+/gEs5Ik9XQe1hUxeWao2L5VDkpXRuYmnY1UMjD7v+uFXFt0X3LwWtSrIPuEDlNwk1dqCr645VE9rVTY6eu4BFH/CmIbgo+sDDGTwuM8cQWs+OkeBc6c46RYqnqe6tboGP/KS/F/v+9Gsv+uO/f/vzf/z4+a9/evnbngR+kLc9oqHYFpYYKwuZbNTdYmdt8PWRZ+SUVAx4fC2EbHM7F8eJmzPbwcMrRrFJz7NgBfitIEpiDGY16VuSOnG16SxfiigC4YQ0r04FESqI4k+LsU5ULYW1qXJT1fyEUqdxJ6tJe/EsnS1q2VS1qcYbRmRF8dPSUC1c8qwmTk17pgFhdUJIempnWX8JTS3I6Z9+ZJmbIXdR60XYTnEK6E/1fHgbBl36k4SvJ3uvm0PkKzA5DFDMYY7NQD2O2sBPjkdcGThsAVXDPgfic4GwMB+IpJ9dfBvWOyQoqDZAL07RDMRyvUV4T8o/f0bhacBExgslXDxQLMqZNMgb6C+MkNDUfgAOQ5/gtnJqWJ4PCq/t8w1//OwSGQxIO2AgstX97uKYrsMwfMQL8ZdnbnfM5ozi/eKFpFD4brQSibesSle6qufTik75gJ8W37EF5ykF/mNj52myAKmSH4p7dL5kc6RKnfxQHA8I4W/nvzsUXPV9Xe5EiXXabNxCFpOHxcHIt+aMXF3aw1JuNzJebn1bVch89YscHaZf9wiRojPegEknolWp28bi19NcL7ipIhcTxs8Xq8pNKwO9yGd8hdBmdvEthnA0hrA9HWDVZmZbDDyhj293rFmLTwP6V9UU9BrU7i2jLW85BsGSdfcjTD7Gxot2vjaP0cj0G7V1/rTcYIAtNESWA0eh+CQ6fSrcfrlp6HE2wnsKnTgIPrQxoUBQ/ZgdPNa8qifAtGt+5ATmnebhaSOJDObn7/7t0+df+rc///zj50//QqK+++Hn/mc/UfLxy3/+MqwSjTi4u8OHy2cK07y3hCZbdbfYTUaYFvs1UWrk7RRsA6qA2EMMoLT3vvzwWpIPfyKtliRfWGOf5FlrWMA3qMW1bFmcoyDJx0bJNotzZY19kt9y2euB9VqjxXGNe2l2CzZamgtb7JP8lotOVZ7Ho4ceJHPIMQWrYNkMTGyjpYYxIOEWMMHqnIZA9RVAqIL4tgbGFSo8fcoDHbMmufErTUg2QX4mr0E2SRWf6BPm+lgFTqPloig3XTnmWi1x1l8ecNTTCD2OnEokIvAxYpXqLnk9k3X/6XC4FH8zmbsmmC7GulFrL2SzCJekapvU0AgLR8SuiLgr7nToVQxPAvgC1c9MjoeaFWUBfUPOAvp2QE7hbi1MVvfjBgkBBJRs2QzgC82kGkjslXD+EoDSoGePoouKkuP5x1ZBaIdixaCTGNlp/BEUdZVrnslovFDMw9J1/Q0MTIHhARccoV1tzFAZZe/5m7JCVsUWf8Sbut4K4/PHP20nT9WaL6gh7UTOvH4++MPB/KU7SMXiSeSQWfZOhW1xbVI9LEMqkwAiCBSQ3xjxXHRzGE0gxSYh6hFYv97uKgC17Gx4htebYeBnEIfqAOyecbYIwLTkOFlqxVSDx1thn2TnBw+GdaC7TXK/26YIMHAPcP/eomDdo1EH3GHAODRrkvw26gVN8b60pMaL06PRoqoqFTh3x3FGT2uelnE20sZ9NyvZAs3mb/DqtiK7oUcYMoRVRR2UMz+uBpqkqQZeF1gad98VG0rBEhVdPWUjkH1LvHtG90hQbPU9Sg0QrdRi08XbvBqf3QPEAruyKzAAV4wYRZaj/gnbpkhNg8hdhmtDI4O3xlGQbTZOjiWH8UGNUX6WcsuBfczMirnoryNOl3jOBi1EVEwGPyBySyQUFeQ5jMM2acnpp1oDd42820fN2Su2uJJ4r2uAM98hA1WyCDSICuzYFBOSOCcH4koTwVNKCYlPpw9UcFO7g3r91siV+T85sTIF2sKWZTdgZPslh0maKgCiamNsEzxriy1rTq+wYHBj6JXZKPkwGWx4YYxtgmdtsWfNQzHIj1wtzDbBvli8PS9MsU3wpCksFlx1YRDjdzXhmq66DYP7+UUbBvL5CA04t9SvQ9VWEIsF56LU4MmpepRtxLAeMNKIN8SqeubQFFl9jw+i5NhtBga92oAFib4AUOgEtMWn28FPiPEg0pOHqmeGAYGGXD/dezAJG6c7gEk/Q3+iY+9aTJi+jk1BOmNU87XigYNRxpelc845LJ9OylXlJxd0Ec5F1c4hvwlMObaLOZX76ZacYlJAA0RE1LtRO1i1gB7YQJQoFevH/UWq2jDcxfCVQ6XB3VEt4pumUkktzGW/LnpMkd6nZEXvTsVUrKAfTiUAndP87nRRN4NsWj/yAryLZiXrCUFBsb+4oPkv5DdJKdGgkEW8ItoM1aQQK1Xg29Ck3fjhJwuqJ2xKcl50i46r2+mJg/I6D+rbUihlGL18ZGR67kHE0ykkgek/fvP3v3zBoB9//u7np3/yIih6Dk/H2odDorMp3hsQfdh0s9RZC3yFixu5ZPAF0JjxOOZSl49rTYKh/BV6UJzXM08xiTZ/lmww0O8u+bFq2d8RBjdgSTy5jOVuEWxk5HAIji+WbID/Jclee9y6LWj2Ib46jjm2Xy3ZPdoipmpTiOwPUIS15KxmvYpP4zmTNTlerI3LOmfOoj8YpkCFqkkvqxFsLahSBAET1HAzep9CoJV6eA4lU/60irANA007IIpMzMMQRUHW47RWg1IxM0+ptU0f9BqQ3qwZ90JhLO7pAM0pRgdyigoOQK46VTLDKL5w9ehMu+Q5ariLo6YoyQYTG+5HDehMG9dkcCI9OZGAMOXBITlwKOIb792IY1pjLWoAEbnZHH0L6ir1GpQIA6UoOvGDeiUl0cXOm9cr6Kf4tljxpNGySDMhq8pBf+P9KxQbG/hQJ41LJqNgw0WxO6Q2LgtOmxaFRYrNc3JgbN+CjCx3f13fCBTlPVYeaItNEdJAyNTUEGSSbNBaSpKd3rxTUzZUDjXX8Rjn/v3KmKCgv8nNi2nkWLNCKpCTmUzPfVDs/INFwGHPP3hkNQuTbq8DvIw2CWLuxbfFQkpoA2s7KilZT6+X3+Tuder6TcxwI7evCQhEKib+IF6/yTVsxrmf14Appts3QahgdPuSBlD4oeB26rw1IKLpCwAARDLbVH1LnanHodbkzuQBgab8JgPNAInNFIIC5yVnxWwuFTuVbcwuzBdrVKPa06FZXiL1rGBJhr8tWtY3ppQaJb7M2zXob+zuQrFTWcLOqkMvGhGsSMVOZSnnjRVJ6YrjDDp46Ju/cI2w6rMWdGeeC5Tn+hwWfSMkOT6+Vu9z8dZf2PdwGqefjOGwxpLJGm8ELCELIuohJQv86ZVkNzrlVi2ocErJ6nmGqz5rjT2LQ/14BtPMSHJ9DDgJyGDQlnp/4WrJ6ypfCabmxLdbGtTGJ4u5SxenZZ0cPPmsc9vMHSTB43JkW+wcjvdbS3N/gTqljsGRRpJb2GDB6CPmc+mVZUD4R4KLsoV7w6VBIpnaLMB796V5jATo2EkGb3PPICR5oBngpjwTiAtrzGVbjfbN4w+ly88glqK1wUggWfT0kQVhlKqhZKgJ0XCfuSSH0dpA8YuCRpvFyY9nmlEITSZ0bZdkmKdG1thJ5/w+8SUtXsJL/nFnPfy2vzI/f/lfX4Qtae0JofPusSWVCz9gh8UcmcLaPT+NlZdgNB4efHKcHX3xDJAswS88qGAJu8hY0TWxqksyKabT4WJsUPFpdMcVlXQufmAeV6exw69vSEIy6UuPYs089Cv250nM6pERAfpDA+3XbyIltkxiJcArPZaDdsmdNYNFx3vGLE5NFpVwLbckC8RUdRge75I7awcLtvOqHqLR5jqImQlsmEY8QllefBJN86qVRc8yqcc5wWi5N0hVSzPOHKHGdEjE9w2KcPtS1IQs/rQYqYwpmFzM8zxcKKhPYsrsgWpW7rtnY5p0mnk174jmHmdlTARiVAb8S54EwOxPe6YBHVDC68Tk6FJibU4YQoXsOBG13Dc8uRqTACxebWpeDVYS9YQV/iJc2AMYoXqFrqNTy+I8EBqNuT9IF6YDbaJKh6ps4V87zqxqQ2vmnKpyOs/zioL6JI5W7F0pgpVQnFkmtI8eKZdI8Yq2HM7G4FYc3y1dICz65OtlKfR/9yvRu2vHC3Pq6xMxK+Z7aJacAT9zxVkBu+RatJRoK7yjQa0f5ynoq6oel7MYugiRaWpeXWAeWBHiIhqsLyQexE7UuEez6skaZB+W8Xk6cPhBc8opZl/HUO3BsjOXh4XuKZWUdtEi200TOIERsc5xXSuuAuS/83PvEcWJBU06rhmxQGTVWt9j8/NVI3w1w0PHZewtd0E9IHog6yxeYzQJTe8oBTkLKmZw3FjA/LXMExB4478VKKoxBdiTrZMJG6UIlp6s4yzoEqMYB/wkt1rAHUJBeGU85gh6L0bSHfBGjk1Fcn0f4BRpgsoh3LUo9ohg0xZDA/gelcyex8LxWTySC26sB8I/g26rCJNM0ooZBwFrc7gbbLPiwbXjx0c1jpzIKnEcecGbKAY1CbSvmTc5KQ81NJ34NbCfJCj+TEmNw0cs3upd8ylbfuS6ZezRzWlArlz+X//lf+//R48Mf/j584/ff/+7ipepHU+4uHdfvcQynjCGZXXQ4sVBbR327xgttcQ5Qk4Mlk4f2C84lHwij5dM0TI3cW2XzP0qS8/QyP0/uwUb2UI53DbBmzbztNivBeRTzGoKKiHJezicyewLJyobuyXfI5f1R4Y2xjbB07YwqfJk7AO3Wpp+OiPlxDbJRmtzYY19kt9y2QltBNh+6iczKJhRH1ytrySZsnPJYHKltsY+ydPWMMnIZKQ+CYfNhBAtmbIyBh3pRMzgXkfwPltMS7YAIRFVqVc+aIDuTzmrqHOb5PtICgPJ2hr7JE9bY8+y02lkkbG/WJx9kkOyABZfWWOf5FlrbFp2ly14s64WZ5tkmo1mMMPuwhr7JE9bY8+y05zfZMBRfrE4+yR7N0cJ8/yy75M8aw2DZS+jCCnde2oC1LPB9kbJNsfIhTG2CZ61xYeuadw5kJ5eM7Km8d/+9PIqRqOhZfew++NVMY5k0VChE58WmWXncLzsrFxNN8cMaDy0KkIJU3wS9Vs1p7XomVXOglFJ/vlHM69IbSlcVIcMGtK0XOds5mlK0aMnLVdFZNiqYNUZ/EfcxOz1GgZLf+VzwHgjXAm22bjNJTUWcJtkcdauxSsVYVuGkgGOTpR1Uwg2hUeIDGLj5o+o6Glja3yenKdOEQydY6JKZvsG9W0RhJMLT6sYbT9tkFoz0KypERYPignWsNHxP8gATUbdkwpuizMUJKnaJnjXLTwr9mv58RSzWn5sCOuLLZoMb/IN60XTkvX4pqDobYlStGGfGtE7Igtf5kmqDPKKqqNCfFs8VoNX6O2UxURiQd2tEINSMXGsDtBeMF2z2hSt/DbBNgdKDRruuk9yGQ07S5Jd5fBuu2Qba5S+gGWLna8k21ijlIM3ynbJRtaICUnaNko2soYPKvbfJ9nIGj20U/DwbZJtrJEv7up9km2skVO8bYkkLwQb2SKIwW7bJRsZoz8BgXVzo2Qba6QakZ5io2Qba4TWcGrSRsk21gilcKvVdslG1kgBhz5ulGxkjXCMWSb7JRtZ48ib4sUryTbWoFb3uiVevJJsYw2aW7kner6SbGSN0NS4k32SjaxBRPZbTv4ryTbWcC1gP8VGyTbWcLnetoTlF4KNbBFVI/VGyVYv401BuWHOzwJNkZH7Orhjrn0ayTIOnu63W3K/O471hVGm2CR22g4WcOj+t2Gwu9GyBCrn1leSbLIyF7bYJfctl5zG0bW0Y2Fi8vjW2yfZZGkubLFL7lsueQr1tmXFc/Sq/3SbZJOV0abYJPYt1zuXoKYP2SxLKYLXaLdkk5W5sMUuuW+55JUm+G6JrwiZgx3b2ySbLM2FLXbJ3b3k7xMFKzBHAgT77V9+/PzNdz/8y5f/4cXTCO7B8LtHwiY1MZ2NsAguDUhF+YJ5BAL0xZyeSHwVmw2nJ+vDJFs4aTmJGPf8YVGRZfIPgV+2piAdxUDnPDyLVRSffsFfNljOqqIcJTYfi0GyUiNeM5xVKf2M2Zw9oPnk+odFd/wK3jI7IeJjCFgGDfYiwoqJaXgm68hzjfmxTVE5sgLDc7K/HQgDbUazY4VOJ0q+KpYz/mtM9CW4v8Tve9RyfFlTMrsxdnjsQs1WLg3nlEbix1VlyrnGdjzQhErnwh0MsQ3a4/jnVQDTyt+ift47OCteK2gh5qELOrJv/+3Hn+nff/72bz/+9N3PP37+5XfELxRXho8RwPhwnP1aI9Ec5qhmNT45vIpci36WCzNsEjtrBYusrndItUJ8k+udJTlhJnOX3JgtWpQvDLFN8KwlLCiMYlEMwkezwArrTbhNcD4ph4334S651VtwYHf9VAZ6UrCKx6hdCIbxEGO1A2D+/QSEOIJ1kIMORnx5DjowmcLpj3orj0XblkyI+/S22CZ4elts2v49XM3rbq/P5X2CnT9Bd9ZLs0/yrDE2LXqZ7Od79szfJjh4i1Dxyhb7JM8aw6KQpywoXjW2S0Nb1K9vdGwy3Cb2OKnMrM2wS3ByFvEDHUHVvZJkgtqs24IGqwcTuWqqU+L5BWOuEw1CgfSOS2EMzhqzJCi+gVZEV/PQ9PyndWR91mwgNDBdNiKr2OJpF4Jt9gYnUV5Fssn5c2WMXYK3nfCzgv/YJYPSovvmhWJWc3LFITD/zuy7Hmq5HPFNRZKnaGb0KVvVVKH7mQ6lLPoWIYsulOBTtvHsDT5mjTiHHWJDWz37vlYxfSnsEExcQ2rcpsFoHxq6AuPKu+A51jZMNBBQHEqb0rVHokG6u0MdONFQ1Bj47iEGFjDcbR+7EtKvxXiB3/jbj59//n34jftw0Y9R/1AvBjaC5UPEpJgwrLpb7CYjTIv9Y0cWrwhGcPq0d2HyuMdnoYJiu9mZlc9K7s+AOfJoDFlElxuHLEmhmFwP4pGgKosq+1mLr9x/xmPK52Zio6Yl8/S6U9PiBx0WayoW+Py3R1RIIeeDmvU87QkWactDcJOd7pMtHjgXkssk4a2CbvnRdz9AI1HFuzToDodaewSYVc9ZBkZuOQsnp82CUwaTYjaiWA2DcleYj3b4jYaYuXDOhjVep2kPMBn/kgC572I48VaLezky1+fYyyFwrDxG/ooBsOORVW6HhzUpB4+DDOrbmrLVIcpTjGT8jSmND0qdisZ4Qz2dERhVanXuqTrIdIZJnePZwucvFEwUPIiygJNnk1LHw9/nXWZAHm3prwa7h2pr+KYaENb1bO44Y0dGNo4Leqy1+MZ5BoGjHRd+u+FN6JrN+NAHvcYuGBNPhF8Gpghg9HIFlGZM6gnMnxahhXHMfBlsff2Wgv0jPomBuQm2j5wfIyw6RQ98NdgX9Oy3aURzCvcbbpP10kt3CIt+ijvdcAcYQL9ChDG+91SVQfbkSJg9IWCywVh11zcAIKcJEmJRwiqVo61Tsp8b6Yz51azyq3V20o0698II7TlsKPyAEWeJh7PEUTAJt7E/Ch8wQX1bDDrjwJOP1F9Ux574NPDUUqvzV2aRDRy/cjKvqrKUQi0Oj+vFiTLCmfM3VsVQ7C9MamRRMkIGRclrExzR8tswqrYpJT2vzmiLW+9BrXHUxjEjW97QuP70mNA3dFVc667/AIMZRa6VAfz/hbWysgLe/eTdmP0m2gJ8sddwFg1F0Tkww5SoOhs8kQ0vB5OrKiGhJE1TPyyWxFfFSUxpyqzWJDML4Bj2UAdgYGz3HnQPpvfAuob1eJ5WQI1ZTRbTIonayUO+143fsSS5m8M9biaaSJjX71VLn/jQJRqamvm0do8lmrNH5fjzt93nP3/5T17YrPIUP7/7Wk2/qi+m6wWLVJ6LIyJ8ebutXI1xJGTPfAWBN261B7fR3WXQbu9TRKLkacnqwO239Bk2jQO3qvea+MQRa2Fc+fkvneMRYwOlHi1mo0gNFl0LBNv57DbBX8trp5jlZrqmZv1GN1cB0pc2SqaRUeuCCVKXXknwPlvMSjapFLQbBD08z2YtpasEe3czCNMCAm23yd1miFnBFusd8i1dROY2BWk3Hn7j5eyTzheLb8yrkdSQMtoXmDmhWNqEf+BBsZGQOjhLEdhgmIj3flQ3WVliBgFctfi2GuD5kRXjTHwZo2eGsuIbKxt1nOe5uiQta6Or0Gvo6gbsXho2oWGjSCf4C88Iqy67voNiBAJZo3NCyzU511x/HefXkbvLDm94XPZ9cuCt4E4O78XXRVDMIn1hVB8rf5KbZLCIn/+Sogp8XPQNbZMRFWqNvzeK+wyE5Z7f8RPdifJ9OHoCbmf+tqYpXUBw9ISokszi0y/uQqvxGw8ugslD0qIOTDqAom7gr/hlyd7neKHjxT1ZgeBp3k1fL8Ok/7tfeQS5drwQvrD+COrOfkBKPdfTD5Z6VTzy7G0TbAKs1YbYJHbaDO/RVV/xvV4VHW8KFmPRtVyKINcDhuaRJLzLdQYQWy2Yis0Ww+6sDGzChYrKtHKW1Gx/JFWGDcAEelUIYbzFj7gMamuJWQtbLHdWaW13WMwK1oJbO/uLl5aFAIuKTNQASKPl3i1hsL3tTLxlwXO2aJHTcqlFYMeydLkWTZ5a8C5DzMrdcppTimTL5X0H/1jM+lHHLkm26HG4kEyZvx0X+LSVP3ThncCIZ3ZAFt5/+rn/lS+fX1RsdyU+QbHefbUdy80tWiAkE8PABluSszicQsXBEMT1YzIdPBbus+IOgcEXG8bp2LCDhiD4SB6SmJV64Lj422pK/hj7lTPHldlPxh/UQO4HxUbtIXP66exLyiZIWeqBglhxUrBGShbdIECZqKwXDLtWqCEQMv1y6zP6MMzxEKi2lcxZ/TOLlUeHj0hhBlwtqdXAyR5caAnsglP4U9hdivMnTVLmGVz9B6TNSznBxosZxVFNGWuRhpGH19STl390QBwqRbuJ0P7eVKAg4PkGJxHtbjiJNKO95zLXmdQ9TPjw6I0Kr402V3DEEyPimOPSTtTWWh2mMWB+BOJTeX8Q3Jfm8UqKfo4ZU5/zUbWeuqPc0FeDrhL3Aw7h9Y3BxqMJZo7NSh1vDYdYiAuFEesDgMvoLwY3nVuxqXorzczbSLNoh3faAATtl7oiLf/zXz7Rf3b8j7/3oPP4v2aZy+8nxYcLT2MzyK3voO2gzocSX0PsFhNMCjW45hsCHKlnZf0eUWL7bWlBgFHTrb2K3E1mmBVrEtA9+hyxU+T1+xfFErGdQRyiN942we6waUZNBxIebpS8Z/Gmxe44iWigtMFv1HJ9OTnvzFdlm+RdtpiVu+NAanWOTuMZn+5R3BTE5AWLsk1y9nN8kc8fdvskN2exfMTcACSMOyWbuBwRywx+BnvJeYc1iiLRtBMcUeM9G3tW7B+7FSfUf341Dt2j4SQed5ikQq8kp2rSjJ4C47S3S95njVnJ7xCN1nyLLxzftO6yYxoxHyPJpJdcCeb00RoSseH0o22Ct5liWrAFNp7ITrb8TCXYZmHu8wleRe42Q7zlet/ZE92O33kh2WZlSmKk/165+yyxe8lf80L6J/9P6Z9e6UKiHBFSchot0oXkEiwAS64U1SSwT7JRdFYH+dgrSLaxBrV3Y2Zgn2Sjy4D4abYcOleSy74V3CbZaHdf7JR9ko2scSQFTNsned8p+gGuuh3oTH/iDGQ1/PN3f3uqbr8Qm+meHskfrvjNBnh31e9h1N1iZ23wx065veZwCQE0fVqTOskrp7lPNYk98UDjKKG7CoCU7C/+BlyK9eAhCSeWaAwbXoOSCQztl08UyJmwbTinmI+JIR7b3QkGlqDfPZWBB2QS9wP6nXvYZcLQTET+ihbkKHoO2FEZinZSqrobIClzPOeys6I2XTJEnatGd1u0efRFuRguZoJsvjRtviG6u1u7IQPwMTq+GPh3BO6OH/823kwQioeC/pEHI1K17xcENvffkxsqWhRalf67nWxnv3nSuYIUQMw9sLrNmUaBDVdOQm1huaS5X8QgJyYkPgC/7+cG32tFNfsGdf+dfKhyigUOh/BinA7jQj3oWU8o/spupIeZHi5tQupBNRW4k1IcZ8qYjZH1EI8QNccxcfmgi4exjxc1rQot3E9anHKUNXE09UMgxzUxNGNPyB3pvDH4+q3NmAM2khBTthGJ+Vk6F9TgEXZi/688HLb5YqSI5+3KF+5U17BSM4y7fKh5MJ0pz2gpcNv2Tw5OWooU4Eagf2jAOixGqoyIy+JO9GH0fQkSoAZXovg05ms0nnzLcSEGGxQTWPSWSJ2YAQh5p3k+Dg+nQR2TIv+p2eDxR86AFeI0FxNfTKDC39591sFBmaPiaaJ7/8B2rH7vK+Z6mnBm0eknB2Pxjsc54YRTUpp6HvwwND3U5dsjwbi+Vv3+gClC3U2n0H0fOu2TYhhkgyLv0/9/x18+ff7mTy9P/cR+cX8JZj5c6kcYwTL3Q+OHLIjbveKa3ya4h7/RHne8SWwtFpDxfvLDIBuL5Brvht1iiUxgKlQDycQw+lqS6QxP6wHRhTX2Sd50SEyL/ZpzPcUs3gaExfCPjk+DcZZXukWF6tskt+Szr3PJ55UddsmdtYNF2ommKcCq+DA3/0+XU0CyL3NjyxCNE3lkw2bB+2wxLdkEI+jw5Wz0Q8m53esItlnzC1NsE/ymS14qc3uYrkzouwYRA9skG62NNsY2wW+56IHG8OhOSoOliYdTDVHbJNuszYUxtgnevejvM3dCVaCnHJZInfze2WGtPRUo3n3apGLcyQZYSxkGNcv9BYPDskq8e8dlojOrmS0S7ztAPbXx2MMVqWjLJqivPHgYm1N8+lV6o8jUXue/sni9iL+86EVfH8BG+zqpTqF07sglF9dyjzlOJHAhD2weu8ROWsEgkklZ5Q6qBc+2lltvYT0zSxU+9xpiZ61gMXGnqqin2BSfY1ZDyWMcszTOI1t8YgJDBgsORB/jVwaw4CzSLqopdPJDcw9VYiJNQASEU3W9puYwt8mFRZiG41LjWY/3oyI9Cvn86VRSaDSQOIzlYFNa1NulRqeSx0D4CEsWAP3QiYQLLnwgLPqlxSA/RoVanltarskBE3nazV6xb3huuYNnbrMxLQ6EeoPjoAyU8OnD/EW4cEU4QuTzQZxZFgi7oqh8GyOAAxsIICPOjyBanAaI9uVPqzBAParOIw8lfxHH6oEgT69pKI0sKTRii2jgNPsaT4VG6Lh0gbDokh85f5D6qXCWnnUC4fjp509/+eufXp5ISK0+1fPffSYBH9QhewsijUTjxqKNZHVnF00LzhYXoYX4du4BoQRzsVYBMD9vfJpmuJ6ueFBBudrSxdYwxz8tWI85H4Hry5NAcgeNtEWLDFc+DTsLZ/3tPNC8c22gV+MeHeMtNC3Zcgu5ixYk4s3B3guifjeARl1soRCaBR0cbaFkI9hkC4m/zmdTP4cctjzULanUeeey30IWad2L/WOT113ZPCq165Max5C8RW3oYt/QlAOD7Jy+eqYFm+wb8ddFW4fjjOcIif1UM9iOCsTXjPkpZjF+Tao9MXZ3MDnEc1EJrOLU8HrxaYzQYA04FopFDQ+OhOr0BppKtU6gf1ZAf2mqU9MQbwdsnUibEBQdn5ZTgg3Tq3qCgvg09BQ6eaG6vzCoxdJLrc4TPozUyG8ZlLKekK94cIew6qQG/M9hTHs6twyhAA0wKDFiRXGjZEp6GBRBtTG2CZ61hQUIqzksN8Uc5zKsCjNwpNHAw8PL/dgbY8y6+Db2Cysh9gv3+8mdbZIpfVDsVLYHBh6O9bvB8BAa7U6sqxNt/0F9W4yGKsMoRpsd4TmhhiK/DWWlYuJkR12trqAHvTzrj0WpB0cch6YYo+cvHCOseqwBoC1UHEppdLbFpoaUbBNsc7Rd2WKf5Dc8NdORkZeHLm4DQEZKqqC+UbLPFvmSK2vskzxrDYtlV2+K+3Auk5bc2TeF0ECwTNQbFJypm3dq9LnZk+KBo+JUNFbVii6+vdGj4kErz9ofWdt0KiFj9qrwNF4ULvMHhwirbrrjVUEwrmzAoKlj/42Sw6jb2gb/+wTP2mLPq4KghtFkfOnCq0IoIfYLB/RiY1eLw3LhUUHZ1IhbO7Qb5vzHp7d7Uki1xMGek7aqyRW08qQgRm4cffzgFWHRXeEksdwIWx4rRkemflPsE2xzYl7ZYp/kNzyML4Lo+yxpg0q0flJslBzLXAzz7JNio+RZa2x5rPQY4bBI6Uy/VVgB5nmKKgVeBoXXG71U+j/0oGaOijCMP73RM0XqxMvgkrKmSX50+o1SK+vktR+ERd/c8UAhzlYDmtyLZ8Q+yT3gWj/CLmoTe8RO22HP48Qd7sQXvN3jRCjBx6NGIJY6mf+ye5vkxCSe51mQBnP1gKuMT2/3NJFq8VFeojKpyY2z8jDpnwos/oNDhFVP3fJ6MDrPdJC/TbDJgXZVjtgk9y1PyouItoUpWuVno/tdcnOciyueDe23CZ60xIdus4ht8OaLLot//fT522++fH3ZZJPjHKn08bor4um4lhDEPDfqAGJNwZ5/inUWz0if1PssHONuHpFSZRLx8ylyw24l9eo55mak4JsnnXhqfprxAS06VT08zTSaV13kwSaKy8fIs4q3uIOAo3oGzoy2uwyJcOcUsMKFyeED2IYYx1SGf3Bki0FxZSzfIGZXWBWXbhgSFZt6YeWJIkPJrGav1APJq51m2PZOFwv7NrLQsqSzWZCzGpwIEHT8HgsK4VZxGkHgvRXGj2lGZNgB/DJX3XtaGIl/qukVRLb7KkLh+xk0R2Z04Zi45u0GR1DzDO/is6thHckpHC91eVt05VBIAFq2cgNbtsaI3dMz8+lzspE3opbJBsLA169Qsw2nE3riw7dwS+zoG+Ifw9z2U11DyphFGzOoJ1rf+Q3WPPBkotGFU5Q142HTzNuPbHWwV6VmObgLaKARzwZFgTHnT5xPNGkYy141ZghU88heNo2F55BvqFnGdcswxDmq4IubvII1+0IlONv7ch6oprZmj0hwo4c0x3evcjLcQTfyB20EN/8QZ7T2zQbWDDyOYKg5utgXd/qYgMqHO3/51TY2p/LVwXPS49RxMhJ+9caZDfMdDx7/pp9Bxz//+P03v4u2rtanqTbv/jkUcKIeVS1MeBsGP8zL28Z6UII4tSJYeLm8NbPjf/vB1ixa7GPgeNRQLHUfwox5m56aFMeYLHmFIB9QUfO1Do5xcXF/gcVd+eE1cLZ7RepF7ImhZx1jqEYcwp9+9XF56PvIopVe/umnL5M9ASA3cri3JvfCohlqlDWqR0dNnNA4/+ExmFvOHd/QlfqRZLLqPEJ76JhU0aXy1Dl5LEEk0t+CHqtDRlXpHn4eEDB1I+FjuNtEFc/D+YCUpyfWhkqyoaToRvGw4l20UtMpjqOi8x/99zl4tHfHNGDGyo3xBCzXYpX6D8OJd93YAZIBRZA3scPjIjVFUlbKHJ3ARcoCJ7eRm4KSokZ8/rvMA6h4cfHBxXfzopZepQKonAe27GuZUM2gmpSKV+jH4ud4Yy4SK+fQvXFbOjVlLHpVCi2H4mHJRW3MbMRFFQ+V8evvpgxvhHAxVNAr7H1mLx9qeqMcdBtsAOPBJZK+nHrAci2pCZlJmpCIM3xNCDlUdDwr9o9NLlBadN+8UMwquYA60MdFuBRio9hczxkdSxUcz3mVNbkXJRw17rFxFv3c5UFNK89J5StoDCmcmf0wqha7PBQ+IDn7ExBiF/RhFHggs2ed9KTuaEIyW1VaJQX9ENJ53r6cmJnMjcMwjoJM1KS5kBBz0YGEMdehxp6LG3ZclIGvU77PTYIOP6L8f/Afw/nS/VMEYxYxwvX8h3oWJwF7LbTUmf2+TAd4Jm1XLN9VNbG4NDYvF6ssouys05LJjzmqgv0Y54UScgtXvOrHQJ4bPXixfzIYs++fCI7Zf0wGNbvlcFA3cV7h/Nlo82ah54D2TESzdaPgw78m1ezX1XSo5nEewMtPKxUPVw7qwjCdx20+CmhizXGYL71mLYxZOQk03ql+HJDiOY2EW92+yC9REtf5jN+pNOAYbqAaFDdr1xyHV3c1Kxzt/Sdjt1J1NjRb1ek6/YGFxlIUM3f3TAzaa+N55Wflz9kMme4nNIAs+5ZyoGV/J0VY8qamTLeMvBetmSBHUlLjugWr4Dgx0w3iIlkCGEqK4tmp5ag7Lp6YmtY4ZFW96/EbWpLfSENLryg9qxHvaDhUWs8nxcXuGWc73FInEGiIOCZ5shH9cmLw0kDw8vPyDN84xmctR3GBwTGhKGNOvTA+NC7QH5yTExWx//Zfv3x6URWMDtovVd13XwbLCeccuzKX54AEpJJrURe5Q5raa4jdZYVZuSZz8HAqX39+GvxILZdroGsdR+LZuVnwLkvMyjWZaRsZinVeF5MkA2A/F/TwiG2SvZvrlMHZs9oa+yTPWmPTsh9t7uXz/OJsk0zvkvUNeWGMbYKnbWGx6N5jgdtoaVx2mMndJ9lobbQxtgl+y0XvL1BExxitzBF1S9guyTZLo22xS+47W3Gbe/dqxfdJtrl3L4yxTfAb3uc6pqThCFti1TqHEHk+uN4l2MYS94toh4mvBBvFnBc30T7Jm/xtVu6GGR8i6WOJrXW1GMxG5mzSfsGbDDEt9g8Asb8ff7rT+IdPf/vpX398yhu+OKv4pWa4P6v406d//0+Gr3EpK6ZdXrnVNL1j6MfoiiuMqgv62wMzLABC7lw8yB4YqgV74IMKfI05iyLaw0/2bBqonNJKHFAup7k6SE1J/xRbJMS3JSukxjWx7ZLj3GGuvYxFD/NSszbat69ng+qaI64tNYA1MWwhqG9r6ZNj4I5+WZSszEAIZTQD4YAA7XD/5tEM4id7Ng32CNKSGYzVe1DB1s3687eVPZIzd8Wc1jhOxMDi0tXKy3San+h0cOlaRH4oFwrzsJz/tMec2Osnvi2FTvTnIP83K1khHGPQlE6Rw+dRfe6OibV8+YuHFdo4Ath/vcU8xPsw8i3+S/Akb+S/mjKrMkJrUGYF7ggL+tsvTikh7qHEg73FGRsMzCBVOD2vmQDsHn6xZ8tkBKKXyCeJY29E2riHOCWob2t3pmFo9nrYBP3fvf2IOkKMeHjyUfHbhCPbF+4b93xOIuRMfmMKjsDj1ge7hT8ZN9ijDneC7xaVDZqTgVrKMUoggyFDTH98Y1uLozMFp9Xzt0Vd++sZUaauid6hoL8x0YVQTFypiDqkvzGVL1d3eNNNTa41xS774InjhzbmlvAXnhEWXRbLjoabwYAk1EUcEnunuTd5elHEBKe9K8zYw0HxFYtPY/rKsSqR+5OEC5mALR8UGy7EnGDShRCk7qjNEP09C+bToL6tHiRx3P4MFQw8lTfob0yW4/WrlmD2F6eeRXz9oNc4ofO439mw8YIkyavQ8sEzwqLL4t403Axvded//vann3/8/KI//ZmSiC9OuL1KpBCxPJ9GH7llbniPVBNYoDbBJrGzNrC4dQ5+Sz8pU+Ze8/ArldzSDPhWnUNqyE1id1lhVq5RgIFYHqJDMsjnNebll5ItGkQeEkDnJUlJKEwKVfEodUoJkQ+JOhrol6DBlEtV/9sjtjqD2fEXzrBL7rSTWSDjamAKME6IGRRKKtOgjjxoPanzV7GFKsNqJxm2acwm6SQpmh8YgVvQxgPj4PECI+seFQGnY+S0yFqaoLSpJoILNwvTViUY3Q9K2asKjwH5ja0gfrFnyzRVe8hn5mI1qVYAzUsIG5MHXLo4simDjZWoKAYjOKWEyLB6TSGancXUJ33x7xNsdO6YHWgWx2uM2OHSNZxr+n8GQrJHrCNyhfVFIUeumwRb2fePgKWhooXG0vRH9qd/IQF/+f7vP/38uwgr77xY9GU/psaYv58OAoMkqBKbBg/ykuOGA/M3d8kGF9eF5BosJJtZeAdCMUxOK3vmJ7ZmMYfwak1I8pbVJgrfZv+qmrawxdQb5sk/rVcsMNNaLj2SDYIbYiwrryW522KKYPI5W8zaeMeC3weC2v9Ggl0bbG+9KPsEbzLEpNgdRzkHMabnV2wmqbyLA7dLrgYvlwvJdcB8TE0xa2GLF1ESLGSmkdqVZJtgbQTB1rHahWCbUM3SynsW3Shgu/qhNjHbxdrYhGxasFHEZmllk0XPXHAwDduuJNuEV3fiu1eTbBO4Wdp5z7LbxCxXgk2irIul2Sd4myneLoC7OndsYrgryTZh3MUhbBPFXQi2CeIsrWyw6CUNIvYnbeiqWf6VWqwJpOTIDJwcYi3gC0ouWWFdsJl1t6x0NQlXtFzagQZdF3pRumCDdqQLwTTFc70d2M7CBstd3Ri88mS8SWbLx9+oxNKANoMrdkA/d8vtZjDo1TCz7o6VbmWO3P2Zn8jDdGxXZJfcTWaYFbvlCHfBJCjRgokad8tRS4INOB20YDKFAWDE0MZ/iEr0uMFEJfr/5v/uxZQOX3gx3n352TMjs7LAKlpo0Di/fGKitD8PbfaKAJyg1XkDGqWejRRrv51/6IA66Ra0rNv1D8Ukv2UOIaGVgebQZhAhLRVOUePN4B96cMeEtF8bRkiIU1j1cI6rXXvqij9+GqSdMxIWDSB/7GmAXEc1jBf/YFSgMB6Y4GE7hMUNiq3uZhv/Dz0L6hW7eGn+HBTSip/jaIE7Xgt2JkxoQaH59ojtD2GrcdMHbM6g5j0QpRn2StJ2hZNZrA3vzW3r9e4EW4T3WptjbhjSc7+SgPYW4Gp0zF1yd9lhVu6Wxb6zlazHcFowTdy1AL/BomwSu80M04ItaiuhKr4xm995IdlmYWg8kWpB3CJ3nyXecsn9IUYcmv7QC8lGe5Fg+Pl1BO+zxZsuOg1n3PI7lWCblSEuEqAb3iZ4myne14rbBCtXv9IkuLpcmF2Sd9niDQO3ixPH6FdeHWU28fTV8btL8jZjvOGaX4QWNj/zMmYxWZmrMGuT4G2meGcrbpNzuJJskia6WJhdcvdZ4g3TL1dHjs0PvZJskxm8OH63Cd5nizdddB2zGP1QQpo4ox+KZZXsBoiQWU1HkMSkphw3OaUCZ27zwUwco6A4SXb8bORm4p9Xy7ZN8Gb3fKcDYiuzmsjK//1ff//dP33+9PmXL//rCyEAx1NF8f1DAJwa9JmjAdr7Qm4/InaMIdkj1qTSHhymZU0msVzIpeDRQDIFKU0/ajdJtlk5STS0W/CurTEp949dfE8tvBCWYTIoBoZFiythsezcvRFJtMRmGLxJcoM4pYOoPCdF/U8zqadYqV9r9/vscTbItGQNO3I3nKww7l+JOuJvzE1dGAw0GMqjtq+PJu10UoVFL9O9VWb++5+cTT8UTbgwHiCLrhrDoJRiXmnHUMmgvzFjN7+CmKs5K0I9muPgbYilncJw0p1Y8N0lDTb+rWdPHz+0DrI4fniNb2sBkeGaGTyzL9ShmU0zDzbtQkUNhCIK8FLRhfibBDLhoBNaqYCr0l1oqh/siptc+TsJRx71KxcK7GrMUF8ZNhvUN2sX8umcYL6aFWj5tSTnaIMPvfDgfZJn94YNlWyDi9PGoS4l2yx73xnYVLtR8j5rTEretOw2V9GV5Nmr6PnF2Sd5nzVmJW9adptj7VLy5LH2/OJslLzPGpOSTZb9YMblVS+84Mhu+LzPBYsT4hPHyCIeFpGcw74XCpgsRk5JtTxrn+Gh/GCtEYxlNYHn4UESTA8k0wWzIEQuOBLRaqNcSLa5yq9MuFHy7FV+Mec1qt2UxkRz3k78jYcZiceBeCAnGHd7fyDb7CehmBhKiy0llxuqb/QxX1JUJnH2sdFRf7Vm+zz4LY/6VsdU7hMJ5A4TxqoLyYdN+HUUTAtulLzPGrOSNy27b2cy2/qH+rnJbc+vzT7B+2wxKXnTolOvoMEVdyX5OJu4rRdno+R91piUbLHsNExxy++8EGyyNHKy1StI3maMd7XmRkfahWCLQ/hqYfYJ3maKNzzctTZGkYsWbBNsXa3MPsnbjPGWUVx/4x9py++8kGy0NjkzXGC75H3WeGfLbnSkXUk2OYUv1maf4H22eMPz/UIdo8jlSrJNtHWxOBsl77PGGwZySfCrfPlU8gkNW/udSrD3N4MUinO6er9H7jZDzAq2WO9urMcAIzULSlItl3AF69jcEE4OuN1yd9lhVu6WxW7VYg68lts9eh3uqtdkk9hdVpiVu2WpXUi3YjE9Sgl2cQ7Q+Nyy7BO8zRSzgveseIkm2GUtOPlz7rTxwmwTvM0Us4JNyD7UyPLm5oYSKxCrqvL6Qw3UFp8GR+pQgIlCa+XO01FxjSaTrg6c0xuOuT4AZQDxa5mLMCEMvHHxetSNbxlxGP4WscQ9Pq15Y2HJa4I1FaO/JRwm3g83/2gA8Ymr/KzTqJvfon80AK2TRT9Mwu1IY1FMmoLEjx2/340s3zAALQEOU6/tBjAHuS3C2lZFhLHZEfCR24NpfPzpYro9+Me//PXbb778jy8mCPd3q17p/r66g2NgTA27aTa4Qz02QU4L1g13A5Hycu5x8dd5W7nCHaBP/7A1gwnwW5qNnT+PpjWx6q7qh2lUfUDsF+O2kr7yq7Teok/tPKudSYehoaf+sdtqX7GXzpWD+Te+fKrllg3SHlpw7AeKCUt09YMef1zNzTPIN+hvp7uzDsPhk7sVGF+QRwPUoqZSK8/aYxAlbfX0T0tRvVW8MEPR2bUyKf+qBW7VBK94Idg/XcfLniPmPAzPKfzUCfrbuSCsw1iQ0lQfMnmOieMUjbKldmEErl54DvH8QPwdisKB8yfjtep3kUWznxcrsFnwPredFGxB510YqGy54BdyTZbFZdFLulvwLktMyt2y3Da3uJY7e4k/uyrbBO+yxBvevVqZ2RvyWevtE2xy6l5YYpfc2RjEYLn9OZFw2fcgzkhNRdKxncN/R5QhPp1BhoxFz2goM3vmGQ3FMxRZU1Pq5IfmEQgVpJnO3+c58+zxnBlq2hw9hqtk0RCHb22jKEfJtbmmtfG2yZ29pXHrnIPReefEs3TFO4c/nS4pY/HzH9YbPiPiHFuU2jhCJd44Z37nNzZOdVxY8foBFPCT7Rrt8tXNAfmrEi7l5t1Lc02rSaLa3RH42jnfvoabVpJrMYHrtf7SdyaCr97mDkuDruohiiGqIYp9Xx9wH6VjsAWd24o/LeaFk1Pz1Kh9F6u4JSguK6mVH6kNrGLarBVXW4yd4ELwPr+dlvweD5fXZHM7CjMo2u5UIk9OcEnfC/vIxEU0G3ABykvp3AD+ZHnge9rbED/4mFkrwcZWkCKx394FtqpUyw/lsd5utKMMF+sjl5vpID8bLlW5+c/f9sX9/OV/fGG52T/FhO+/3JyQ3JktsVwTPhn+f8c8arEOzNAS+TqT9HXrxz5WhQnoUQ12VdcY4Wqzkq+4V8+zjclXPdP1B/1N4lhGV9tAgYUblBLuJWOL29pfkR1NORfa18ppd8n9Ws8+xSxzwzae0X5+Chb9AVeSXbMgG88H84DuFrzPFrOSTVqWGsJAfbQA110JdsFkNl1wahrLPsnbjDEp2GQg1tkJwh5Yzn6tVeSnuwWAU7l+1mvoJ39jGrbCTWOet0aCBB+VoU241R8UGzjVQ70cyF6Qw/fUD4vXe7/LAwZP/G01xON3ydA1lnGUDF3Ft6GsVEy85bLThrXRVeg1dHVn/vDBrpDhpfUukDx98Iuw6rDr2ydGBCvYHBIXcm2ONecS7vdtgndZ4u1OS19PXkF5X5vkGAOWQfqp4gGmJD7JTYJdAsHph1vfzlN9IkpPoRX3c2AiqOgBH/2/iqqf47iFiIqOb2uKdiN4yASFyK0YQX1iTYVWQ1M/boKHE9KCWFWq5YfyWDyWricGJUTUVPhDWHNRfFaauf47TNS6drzWBJ57ZxNw3ORqsEIpc61hr1wTFL82wyaxs1Z4j376ypB24G1wlLa2mCGfzs79/ZJzPgc/rqJSwRj7BLcz7F0MvUs9Z30K8HPhb0F/G8WQpkLvknmC5lkMybfmLTSVWg1NedhVuLDVCSePKrXqKLUKbwQ30q3GizXtuEatA0qdw4rtven3sKjWsvOICq4TSvjHRaEODqe8xwSc86CWZ98P9Xn3oS2CRb+gin7909SUoBd4z+xyGXgPk0KIk8eimTgXHNG2T7DNIXxhim2CJ02xZ8XvDrhlZfZJJpjNjpXZJXfaEruW3CTUulzyfZLHeDXzxdkn+Q0jA3cgbI+8MFik+ZTk4ie5FfEeP7wKORpPYzmvcfFp3OJB5UF6+AKXeA835g5eUFOq5FlzSNc82On8l+EMlzksavwpLC6URYdEOrlRrff0lUPukzy5p7VHHjdAqDZNB9A0GwBpgOQtLanKRXdJkwyiVEo8ggooeuWTfcUj1Nl6hIIAVXoOWtyNaqlswizttrvkvuWhXtMNkibeqH2pP+39o/vkpMZ2i0/Dzb1uX3KuqTGr7jDhBZQafPkS85k6XwO5x1szkauRs0zZxXWdrDpHHthCHOrAGPeiCuDd0Q2mCjs1VPu+tOuns6HPfmScq0vHyWSlYK7/8fm7n7/74V/6/+2bb//9u788/cMX8yt9OeY+AuA1Ye7D23SQOcepnpezIB1e9Y81z5PKzsxPsqBR1CxIT+mxtUpHHTx6tjRI0Q8uNDl4O+GhJb79Og2S0yXedPJvrIFGxV9/OgtHT85alFIR7tcFV4s3ohJ8fzgY1GYNN9cfGkFbWnTfvFDMavksRrUo4xZYBdZldeI5H0f7CgPr+Ns49/gmGlu0a4rnnqMRkxZMzkKDEbBYoDOz5y55DvktrOuJiBZ7iMZFKwEZ/G2UzYYOnIhIo8F+PPuSRcrp4e/z4howzFm67n/uGroXO3UEwH7OTxGerCS3SRzf1f3fsDE3XbT7iW8ixeUw71HYmcZ70Ag69aDWYGzUVcoHa42wMTOiyavFEUfh5IJZ4A2v/KedHZXG/uNmpyZfdWFiQZbCtYv4EcJHocIDN+mB/lPn0jvafzTssrsPJs6u3KdlHkJ5evoxWGAGs8Nh0tKlF6vfIQb3872ynZTgHXLvfmvAfmq4I0wgGAXrPs3mDtaCaWUsfCkgH7HNkmu53RIWnFd2Jt6z4HRBGLznr35nmONPfX5lwjnP3Vjw3RYWqDg7K+9a9HY+msx/aDQ52q8WJ9ncRheS24m2N7fGpJ1Nll3QzAgvtJiLQXPw1FwIImPzj6GH/MZRklf0NxTNFoxcjzI39kcpKxXz/AMOLHpLg51xUlO0Gv30QQKsMPW6RO8xXC6LzsrCaRWxTQx+qJZMV7gF2biyYBdskfrUgukON9lHzFLB+yiPOjPvo6zxGKcK7JmV0cRjEw28x+omElqJTeQUyllvIiqqZoQ502nuQVn+Zr6T2lxf1rOuO70pLN7XPuNVlk/Ix+LLkhrl8A3s4lhFrvzyt5FFHKiTUfjNqvAbqw32/kGpoWg7EYusqDQVTwGo8Frvz7MGhzt/WtQ0xJvHYVqhMvNq0N8GW6RQ62SLDDwGhW1qght60Eo05imymAubpv4jkTGO/SGsOalJB2yChL7VhuG0C49QadjSzp9+Y7cklXHsK2vSUiM04jbdgq2avHvEThnMaDxMAFON/GlNzZBuGUlVj3GCDFJV/iRIVbF+QaS+QRlzjv4TWVWFTn5ojrtZOJwb63uAMd/TFrmo8/Yoaj3sywf2YdIYjh1y+w+wQVWVhHItkgNacDaZ1OW4MCcFG5RBtWAan7EeqFEzSVByN4gtY2q7MQKCBBsErGZb7kPDzFI4xvktcWY//fWnLx9fhCoLtTwdCO8eVVYzB6BnGFFNIKE+AJuJa2OS6WIM0d9oaiZRDwSR7INU8BAc0gjYjPCNGhUTPzXPGoyFpa4WQNy6EixSGH3hYI6FP465NhKFEUZQRD0ssuhJhEa8GCYdJT3kTxD69k/HozvQE1DNCD70JMcmKqhjDFe1yPsabjYLNHxmRpanc6vffcVi60ce03EG9IcNew6hnwPmgPo3pKW546Zg7xNDsIPXNnF9ItsLdT7Z0Dk54HMqJh1kVfRvPS0ctdmsl0xp62MwVC2yl33r1cdsGK2FRaIg6eQlffKw9dMY8zqcoXukonHrcTHyHhBMIa1bwHCzWTywjjLI98+GDWeCiimOx+BuFhyItcDgaaFtsU/ytDEsFp0I5x+1Cd7i+asFh/7+yQa8SYoxa5vgbaaYFmySaqwK4lgsysyBckNxg+ALjRkAbSx4VmODhQnBI886zeQu68fkhWTK9hgkCAiS6F9H8D5bTEves+jBOYsJoFc/dBbL/PzibJO8zxrTkvcsezyaReP+1Q/tUa1BO9TV4myTvM8a05IteI0VBcs9tzh19ih0OLeWv7hdU2Y2eeD8wfTWZ2mqlLNCt7IaumHzWL/D24GPKAuxnK3l0CBbvHovBCffzrTdimRL53rtdsUNveE5jE4CkbT/7t+e/rMX5exd9k9wkPefs/cKAcQWWKx7ayLAF3SCC/tLbBVytXgbvM2BowSjGwXuU0fK3gNRIVE9Q/LvwLYYm/Zv+u2K4Gi4l4Ri8Ldfbf8OUWHU6uyLUmExhE5iYgOCUqW/jZ8YlDUf3CCsOuYfuov6FRso++JhH1EPwaZq/drPL8aTdOEO/Ed+Gw7ESggEduCq+el7wQg7KvUaf4/TQMLXseE7Mkx7aCr4fgN+WoT0JM1EVXRjetF96UInP2RFfQhPMTxodlvWyQ874SB06XyOje4rmFM6Q1j1UhMStwjZrXDWDpdy2AXnFgWTQLMqIg+Sa8I9VB7rQTXM3eGYJXU4kqQOVzUW3NwJeX0HF9CrRcSNK6IiIv786Yef/vbj558/USD7p5fHxrTsXzbEu4+NU+ISr7LFYmzMjO48xHo88MTklgL4WrkajDlJato20VsHk/ZxoRbHyCfsZRRFoyIfcimoYcOOYN6IjuFva5rmOtokTk176I5juMQnjh+CJs6jyq82qQl0Xmp1ImbLmPgq6sw4aJ2Y+bHO/OAQYdVNDepEh8N5ssXZNL4J0Yz39ooakVwW2SX6ambs0dvpi7RHAvYckBKKdYG//bY7Bs3b0f1xKpDQvAtRIdTvDRkeDVv1dIF+9nh8vDWBjQnq26oTNE1nIRwjaDd0F2qNo9NzWT2s+uv67lGzmJPbQXlH/akGE1NdyQNAtV2ySdY3VUTNGbH09csHn68c6Qi3FN9+NU3TFIKUx2Gu1a0DvkWM/OsBD7ko+ZJVyINpQ1UX+/10Qubnfgxjc4oLST+4+duisv1FmvAoPXjI53hzt8ZEZO5CsaFsU6PujNaMnl9GzqACHJVWzboHuMc3XiVyPI5PJKOo2Ja/LeZHmGpPzPproKjPmlFcauVZeY+Jh2mLGgRiiZvznrQ5qhVo/pbAbi/heK2cseAOb+Qj7cFxWs827CgZ0gJDCsMox99PT4/5xDy6s0SOn7/9OsXrwTcc3x4WGGT51xcdShGmmnnq11T/k5hVwtTmsXWDMo5+fbG7G8XyOoJ9mUOyX0V32CREnKdqKmzKaoCtE4wx46a4qQT1zaBhUi/ZpNwPna/skdUJ7uZ05f/zw6d///Td9/wfvyhXSfNg6MP7z1QeWJhjK6wGtOeskd9x1YslGMS7hdt4TnRQm2uGeLaG378kzE8eY/LDaNqIaizipho+zeoEG56exRryl1+92v2hckD9d03ROKqZNQ2ZN4n8qykjYgWuVMV9JRc/LDrj19vc5nwoomfpaS2bBa2dlhuTTRemkDw88pwIOByyHJzVFdQe8MiIB8cFAT8tRRwRsVO75KY4iT3VaE988PYYyWOSSoycOhGfFQ8jdiA+jCZ96kOHGxQHPpHaPcQbf/3hx//4oX/7+S7nxSEHwRy+gFTefdDR3SRDvJ2N+BjrWbv8HUGHXIhxY/Yrq0GCgaS79UcrZhiCOyOMpRg+KLIPI8G5YdtssiGoJ3o6B4cKDXz2iNyq4mg+/y0HhbYhGD4NC9O6WUZ297BWTafwakqm/Par4R1niZlAcI6YH9P+Hnu8pzcqgujtToCvod6TmNVTmdLVgFopJpTYV5KJ79PAQ3vUluprSU7Z4ki5MMY2wbHahJXaFhslHxYgvEtrbJMc/Nzj5Xlr7JPcQ3oDdOaVNfZJduUk2rC2xj7Jhwmn+pU1Nkp2FuxQl9bYJZnA0QYbRRtjm+B6NictyQ0R4dy75G6MBmYlm3BHN+RHoXG/BjTsBOWDuuc+yUQiZjGQT1tjn+RpaxhRhuOMihosaF3ug8uQu26XZErMGZ1OYI19kqetYdFUE3nW3fle8BbUWheC6ZybOtQQnj5IW5ldrHCeK6hP3B+ZubVzwKIupoTGaMMJINU6cxNV5TSkqQaQpXC6zauFEZ2ck4tlcWI0BTYpzuJBceE62wR3XzIBwPVHNjbtpqBmYIhP3KadNQAuVR7qIXzSol9GauWH7vEFLhncGJ8t50pWBH3zN+O16k8SgztDe+0uubNOa3GsN8VRbrMslOdI7rUkm6zMhS12yZ21xJ4Vt7nIr9Zln+TZGOH5pdkl+A1v4AttbC7Kq5XZJ3n2Dn5+aXYJfsOT/d4MirWDWRe8oB7RBciDp2YH/e0Xp5QQcUxiWImIY6YYy3S19FDjvO/cKaisNNiIZQQBvFcnhIhlTE4N0zXb40JGu7tVnqqzXbLJLX5ljG2Cp+MDtVHDTe3TOPqb5Mi9gu8NGbKPN7BTw5Du+9QCEPmg2NinadwCv7lP+zPY4T6VD6agvlkv2Rse9dFzg73YBSasCar/2xU9qUNMrXVKAdH5W7jzevxTG+JmPTrazzEHgNya1dzOScHK3buFcPpXP1F4CFzQ3wba26tpfu4Ieu4FTc00qBlJDRb9C4gQDR33IyMaK49GlIDG73/8y1+//ebL95d2T3yQwUWI5WMLWCIEKdey7qXJq+LBpFyVY2PJIhmIcwpT49mJPCwy4HUX1dVc5qbeqJRlUL2Sud4gi14KQ0FPJVVv9aZuj3YowpyxE7xs90Bqn6tWTgfAdR8NIEbyb4+L1aCw1QL2n+2S65MN80m/uiqsVU0q/10uKAd1OKqHAk8Oe1Ee31S3dQ9EvX9U8oL/M+un7cEPyBHAzqGhlZbH2HLj9Gi66b8pDLA/FDWPF2xS3JNgcHhSCwkAVjfJnb1C/gAUykQ+VVX88Of/+jtCBzKf/xhdEHIGMv7+xcNJEf++oPOyqD1fGzPpnAeayeRXRSrU5oaHPtvPmdVEtv7fBHzjOS6c7+wliArzvkfqrBdh24eZd65nBlLCsVs2P1LLNWka6TdjdK8hdpcV3nCpPZGnAk6ynFwva0AkJdgdFuOm+crZL3ibKWYFf+2+OcWsRgPFwaTiYjLtVcvt8b5FgSIVvHj2CZ5kgMRSrBhiYCo4HLfHvGKyQYjUAyHY+wSX8y21VrVi7s+zsb1ZDPK50Dj6kx7HWnCZI/EEwf0OgA4FI8FE6fggl4obBnKJAEE1EE8J1mMPwuiilSMaIiTfCCxRIDoPQUFYQ1IIVv60qGly51YeiqakkhHy21BUaOWH7gc8oHyda3/RigqtvFAeNe0mzVASpakpOHNYABwCflpd/DxGLfDia4LTu/+hpkKtU1M9KTudpBNr2yqfXQ4iVzglWJMeBj3hpn/LuFb9tx2Q2mUdBDUBkoAxE8eSBY7AfeSWJ1YrOI12UqzKc4y5FZww92rsthx6zVwvB1g1CI7CgJ/W1KyH4oAjjADk9cWncaRUhQboG8eDmumwycNKnU41263gMJWsssUpqxo5AavASfnTcuYdMVvdDwpcJeRzUG2WOp155soUe6c1bSIsH/A0MRIcD5wtQqTjNge1uzioPVIn0dldYT8VzxPrmXMJCVr5k/H7YJ/gTU+wWbkW+ZXuQOUxi0THjEHDKDn4q8gl8hcLggdliG2CZy2xZ73L4LSxXZddcvMgJjZelm2CZy3xodE/7hhlE67e/fv/8v2Pf/+mf/pfv/vc/zkl2eg/eCkM6Mvy7C/l/fTp319kd2O4EJvMspxmIXPYfrPUWQt8zTufYj59/7d//dT/r1/+z6elelk8uJ609jyo6+l50Cz4qJXYOOYGLBW6Gic+9sqdNMMrnv+P/93nb3/qZ/OL/jQd4y/fIh9sMy1TqDGL+4j0LUJKJZeCpPXQhWaW5FeRGyZBnM/ZYZdcZzJMJFbFq79Jro0d+jslv45cGz+LYta3pdw8CKNPM/i5HMszYm28oVYsuu2Sa+MNuSDVgY1cvStStpgPouVSpdveG/ZItdkR2hd2ybW5MZUZNonN1aK8feFhm+TOmuE/RWbi+PPf/0aTqf/08hzFEL0/R/GfJvcglmur1K+5hzd+LlEjLVzYyWIGbHUMGxiBQDG4rDwGLsnNEadBE4gC4NLBbSDX49TWfmkbRMcNqQlisaCNoAItqHvMDVdVclVYGA1g04U7lYf3GgxcSJHHm44fYJGlqjjHISeL5vKuLwYv7WYgNnFbxnBnE9hI3wQn+vmsc3cHPqGhZ507HjhWqwQGyDGOIwMco2vZLHAOoSktQ1TjyfrDdGBauRifANxSGKB6ojGyzVB1YtKAplpfBxhgdN1E3ionGqNwI47ncwWwXfxpEdsw4O0CgaXxh15NqZc6MbZFDVMrNsPUpE6MzHOAFPJhwF0GBOfgm+l06awgffTJQEvqHvCgpcdGauq9AiWj40+nR2eGt50eHWwmAVF/JnhmSEykyrsc+8HCcUI0GXLXNOLUiNqGjhlAnNJwaSTSdDdsfq0MVhGLAIeRH4jQxSMzjwF+o7fOjcHto5M4MTiNEZwe1rx/qoAM8pMXkWolruOc+Yc4VGDN+6eMajZ1ZnY/DABh6946V9ZHpF0YvXUDaVcVm1HV5KmkAGhZmF7udGlvA1vt0bkHzxQB+9CyKGP2y7TA0d79t8E+nw31LXgEFRMGhRYWDtgjeUT69pVFqLP4JC5tPHQoBYS8APmkUF9UU+jkh+YOSXEFO4fAUIKaqal7hj8tb+fTAmM7Z0WyID6N67Ap3HgWEEX+h4cJF3LWFMN6O0unE8EFwiaFH4RF3zTYKGq+ejXhuSJbqEneBv1HBLRUmDSDp16uzOMx7GAAOc0BRyLU43z1LMmNWBcr45G2qC/4Q7/KDBI2qTCofOhbDCiPlP/SMEODdTuwvk1nwPq+6DEVpBR6SGVAfZYy+m8eFfrFlAKmQExaUbKeY1stZpDkiDMyyfNMCrsF7ODOKcSL506C5sTRkbF4/mKmzWS/dbk4LdpGblbALZMp1NWpLg1n4Q90iqv+WoMMaT2Qf6vvC4NCf1Z5+GJBYEDFXTh+/dw4apAb0AzZYoBiF1sDis0G3lAVKuywOCX7skF6v8drBmY4VHAWLWa+drmHkmuQ16ZNoYKoqTz8xy5y91DsDH65yv3/fvvtp3/rX77/8V9+/PK/vQx6X0+euHdf1w6t8uigJ+3LXNlI5+a4gXsk5ygXCEn42OPBA952TrTpjv5sgWsO6tuirn3FCqRrUtcfp0Q5p/KyD3oNiuysR/L4eBKLLWYTXTpHi7Gu3imyruQ1G6fzh2rjdE6UtkQztQnTYwrHKPswu6nuX6f/bgStwgkOVDY49cQna1t0Gien87Sx+aHDcFhCrF9wj0fUlc4UNCx/W/RYr4nSQ7/BMHEivw1lpWKjVzVyd8mZnYw2WfoHvU7D9q30hC4UJ4FmuY6es+J7CWSTC4PMZLgqFX1g+VNMt/rcUPn+3yDLeS02I7nEn2c13djCvKMip+DP7u+gjMmn/VB09gIA1LLhzbKeiyNtgKmmFIvHYCJKDdW/OCVYO2RVBc1YuZjG24a5mUUVAVkF+hXhYaX50+phlEdVamjar08scT2sgtNqjZtX1Yi7TQ0yT4ZeYNFczNfz0xlc5wDXzzJ5HhwwDI7kjKFB4GfsWbDi0/h0tfPiXqzUO81oVLmqx94Z4TZwmtJDUWXUOQSJ4r4+q/Tn4vSrYI7kDyk44qDNEBQcSD3UBLnGoJioCqfg+l4Z13tQ3xaX6TiYwWRQWXsuK51/8OCaOwdEQrERYzTG2wQ26xQBC7JEJJ6G8bSzbWZ1utJGYoOdNTPr9vlDmlPPGM+JzfNfcpJkbKmpRgA9SSTxSJbzj7WiaZL6f4csYUXtfKfBEH2DeguiKI/oUpfyXFpLnyo8I3uYwOmBZH1redxao3tERO8HM2oF9W0ZHZBgsfpFhC+44lWg+aDVmHEURpDKZ8Bk7A6tfWZXlMF16VSdwCpVQQg3jF8ISOTAcyjnBrDGX8lU4BN1fFp8SR0cGo1Xn+OrgoGNWaEPpFoyT4H73Fu9+uhJD0Cd0P8gjt4O/fHS8J73B9dgZZ5CKettyM9Df1Xh2RH6feuVskkPZfZJj7kKTvlAGIRr64bFF2A4Mo/UEN6KiDLKUyR10nHu8yFPYaEsIXHRY10TXhz0t4c8hZpwE9lbOE9hMir+Qa8BCxxVDGHYzJVFzlMEAM2IjH2AL4sO4KuaaR8odwIOEPLBWQinlOJURcHEz0hmLSoqFGAYaeaM4NhV7ZxQKFIVOFdgW6rC8maxueeQSc0kVRFCwRFuVqmKEIJivwv9VYBoszt3G4Q0v5Kq0Fhcb3Ie9dsm4x7vN0uAB/LDKjitFqcqMiLOikVx3dALDHwyU7YWWPrrHIO0wv+5oqDmuR+6HjMWIavbjKlRT587O+HZb2wcPFOPCyiZ/v/23mZZkxvHEnya3F5z/pPbWc2iZ2xsatFms8tuqazSujuVJlVWpd5+iKtwAt853opIOvxGKFNLUXHxwUEQBPFzUAg4s5ZBN0OkO2zw6ODmkHpuiQr45BngErRoKa/ilPViEYRrsOQtNvaPpDCL3ixNI3GnEOpmeQ4xG3T2zmJWRuOBl9zCQeFI8TkwHimMYZ2401T7KhhKMBpr1e3eVNmkw22WziZ+1NTpTiJydFwbu2QwKCY79fhwqK4bgQeAZA8TWqVeJvpQ5qrl/gaOTZUON5StWVsapjyYt82hEj81LBQnXi1jqxJ86IW9KroTh/Gitqi9zD7HKbO6dq8kknD/vShPI4RD1dP5Pr2ZpymdsJ9LSW/gjUvibmDQXbaB0sZR377GNG4hWnA+vlP3jKxVSnKGCzt+MdmwmA9YwY60V+mA5bx+PodDMb9MV3i1006vTkNZ20mils6cl1Ut2j2yHqz0mOftyHtWmthsJhW+unMqJQPaMC/h9ehEt3nN2NM8gMdLrkvp5avKTEV28VP7NCCIl9+lMQCOeZ9u+oH7JB2I8VUEks3B1FVQaP1byav5ze019T7vEhctGAYUZ2WvSkVbN2p9A1890yQS08ZyxgE24XWQyVbojSc1eQG8da3Ts2zyRr3hm8IFvOnl19VTdgkRDjtOd0ngwHq2ITWkaOTLqsuxqRA6r7p2d7MOrRNY+VAzbTrxms2GNLw+58uCau/qsdf6BztmWfikCoeHc9JlFgdmxZxqM/oIVHzVpUoZG2bnkcXiK9FHbEAWVySQfIdP23kvZrDLyWyOVNzUBfMOMzGWsagbH9FVLcd5R956bU/dg8IfqbNwaO9jwu9elod8Le11iVeFEVBn41ilkNYyZHwKNFM+nmjtbjtwppyMdZYSLb3YBWS1aupJVWF4DFlw9A1/+2Oo3+du/rJiCun/9N33P8yVyc6nf/1l86iPEwfjmy+klxwgDMBagriZlYqrjvLLB1KbXVjuVguaE17QEcvo3zkABzbMukDOlYJIWS6DgA+DrfLpNRI9SpCEcMZQ3p4K4EwPN9X6HXvP57RL7AjjVGOzkgsL2bQJ4XnKU48cQrhX0niO8q40HIJAV+xI167Dh15sznOUZXSPQy3fhTSeo7wrjYe2XWrU75v2q815jrICyXtvznOUd6Xx0LbH/oXTYf7evXmMcKhnLMx7a56jvCkMjz6hg2YsueyMzFoYH0PXZ1suBPEY4W9qu33M78W+PEbYx/heiOIxwl/RqF9w4+NnXWzMY4R9vKwLUTxG+Gt6bwJfi15FdSnHDyFrd/hqkCrUcRKOoGiEJic4qEEqEc6eJDAd+tkagjbu0r0YI46Vn9JiFF8lYJa0nS1Q50Tmydcik61B4iCAguBKQfChPAJ09nNNQx/P1OaI+qDJz0Ex1l7SKw7dr9K6dySQwSZlbhXMBKAhp6NDfeDLYQy6EQAfK4F5rPLfPbQgBEdr4GCbjkQlaj07FSy0VaVlYEoP7DHTpbUfyoFJ9ATGsihOEKCWrTPpV6kdWGQVUHUEABqNaNQakIRLd+195yZLU3W7WLWVuIHZWn/aFT/bCNWnx9rytU6kztq0YiXklbnb1BJqtSLd1FU0TI6nwOFQloQZgnj0k8ObuzK3F8F7ggBBYpuuWVM08K5iOpM6ks1AVAdFXriXfzEsnBvVfVK7L5+8xMBjJN63Ag/SYXBJo2pQxTy0rt0qHM04SWObMAN86AcvvKGV81rwHoPr/uznLhFkxfVLul8OgMOZRtbEhY11TwL2c+MSCmIhSC0tIeNXAqmW84GVWrvnFo+Co0V45A3rkyK6eGo+RtgnQXQhiscIf8XEUywIdS3YHA5goBefOQlvddp9nnD1QHG9UKXnCB8OM0WvAtzPEXYRxVUe4UHKh8e7rnPN8+FS6HdB+R3AyCHNycJ4kPL0D7awSz6rdA9S9pEGn+znCPvIgq3nc4R9RME31GOEt68+l7dhJtD+6DF+Wwgj1s7mKCIgPCJ2/ftx7CSK3zR0tEBVfHrR24LXH//9r3+cPBz/5w8//T0jkZOgJr+Te77k9ac//sc3ULf3XfguffdlWnO/bi8S0kdMm5BWWAJLpVDDY8hNOgICtDtRFmA7mI/hJAtPKX+gafhShf3XNnL47mMUlqZu13YGvO9p6yvZVvYmHaKuLjSuxwk/JIhtsl9NT3/8/qd/nyb/y/7pvMi+2N5/gHab8ZI/42V6L7BYFefehFYjh1YjhFbNbb7iitJM+YfXuKLMKb7/fDA/72qAZdbxMXwoM4BSobySBMkHyNauLeEqEyrdzEgwsn0OgFcvLNzTL4Am8NPb+0+SgwaItz2sCLKMr2Q9mm/qwDj6M1QfEsEuWQ/8iYZNoT7fyHRderdye3ugI4yoPiWDr7jR0vYGDr/PV14QdumniwVvsYfIPiaGr7jbMii7jAc+84Kwx7ZoeOJpso+J4eHd/r158nM6LzB/4Jy2sFenwMh/KwyjKIU0wccsLc+0mWETp2cq5ZlYUFDr5vvwYoo9oinpjOvF6aGtvyenMoZ1IKeBICXN2s2nVNNa1gV9iUgyuqJ8Bkb8qYylU9eotJtsKk8nl30BwSw2jeoF3eUOJYQv2pDu6uj9W6IHhbQ5udmbJgV34bSOALH2HGGpFnUZOouieIzwpig8nMBsHsonN3mv/Ypr79JFCaJCOv4t8ZqayUwV6+8HA3El6qrlu18viVXM7x+A9ZK5E3rR+7xcAASSkb9YXm/WbjKbE42RkAplKoI3a4tZy1jUD8DhPu9TdX2YPXiuTS6Xkl2qaG5LxNd5UY10V2c9unfLgjVytW3vw0LSBxH2sW1XsniO8tczm4IgWNGIxz1LhO8IM7rqccrTdUr3iy6vpPEc5V1peGz78fb6oJ922KFWLVas/PahmyI+SWXQrUO4u73FJ8gmzL2lTTQ6LEx56w+wG7I2KrmKwUvJPArA00Oa2bGKwY0udJ+mlZ+7lUAz7aKe/MqI3SfkUDDdHMfeoJ3PkHXiNiPumBPdpADRnic0N3VAXemacNEn7a1n28otuoeOEffkN2UFxXWl62Z1HEzg6DqrwFM5pY0qPkE3HBpScr3vDtPB60s4YOWtz8UvU0mfYHhEqmfzoeumai5oFuEh/aza3utNGJp7fS7/QMVbTgxL9eIjkog6ZdT1/r8g7MRxivg29SIcCNPUx2jFi0iHD+Gg0wc9vQDBFHjkXpAZzo/Q9TJAHtawVazEclLQHvFW9SLccdyV0770yCkXF8JtYJeTUwCgFQJMduJYJw87E3ZTNw/l7+MhHR1ZpyZ4Ew6vhJ18gfHQDRinE1yeEEWcbnuF+JeLM3BB2Ivjgb2DfoSPJ65AQalIj9ytYyj+hqszMCpBbThxrBNfnK8dNyPkgpOQn3FYYxnPhAQln/tIuFpK6B8hXBqqqI878B4XfITj3HHQlpco3LTNQ/dl5toT0XBJ7YWH6B4POAPSdPbMDTg94UecjK4FLb6+ABP24ri9PaJqvRI+gc9R7QFTRV5J14YBBx9X4KVK1fdm6DpI3ZewmwHyGFnf8KkWNPF+5zNlQHj+IMK74wUvqo0zFKa1rFCWigVKKMV2ttNCkewaaE+0dpPTtqoNdMrsmnK7ONWlxanlKir3q61gYYF64ClbBlyVoFPy7jnCol0e+K2G9MJvvahlX17iy56dk6dVu5JeAYnWbmpXoenXbZWkL0Z13qQyaphajBZNbCxGlwm8pV0RY80Cv+Vgoi+M4mOEd9XWo15+6PDyT9zkzQmwPAB5JQN1sO6KMiyw76HJNAN3HkGDUtbSWgsd7IH1XQjmWnTYYbh0JzwSJ8IFQ3ghuujmiOihOXHcixbI+4oiKsKtqsWWI4Xqmwh3d/4YzlruXYNFQY8zoe5O/UWQ9lQ8ppx4HmAPlPZG8CNpuEy8mvoSPorw4dO5JrD+OFtc7kICQRekfVaihPd9UpVULUp7xek8OzWse2nxOq1KwCYHs6bMGsbW345zxLNxKJNTR4ZlzHiwiIMfBuPgT78jQvuiqADNUNC1+0rQUbAhs2BDZABvy5hRoGWkjTNVHK5Cy4Jy6nHHsll4jPCuWXApOarYii8ju6qPHpU1y9jo7VFQjRJPT1EeXmY/HHg8i8f8mBcO1LhszXtnIWie6mV4CllUM7o4qDVo9DJZk21eH+geHoQQymilJhNnUYM1UzQDQ5igkz+03Mq80fcQPsmkHm8hMrMXJpXiCTFpVjKqLkXiddNJvRIstTrOO7RgX6Y9jma4yNrxeHE+0t1z69HTmtmqhbOP6NbZzJSHEYE0F3XPcVXB2p7OCJsirRN4NKewKXYWuf9U1ppLZ+90vjNqe2L8g5fubMNsRjsSG/n3Ul/nMPQzF5qqsUuZd6wsvbeNrRWt6VyLA6WQtON2SSFov5YxGC5oaqK6BQ991tStblmjLtx3Q3ARPVu5Lxs984jzyXuv4lnQI2y86cEjhUKm8EcgXL1339ZFrtMqN2Q1aoTYTmpChI0Qs/qi5iggwoa8qHzu/5QvWrEvvCBrQc3f8pMqXjC7aWq90AxwtqhLUFswqKFq/UHKUgLssd3lwkCVuirjFIBhaMjFuHukm+J9kbs3fKQwKBLlZk1KI7AeEU1JKIZMo7DezRx5vfnyCekxOdGyoL/m0El9dTSeo/wVQ/ICrItRWKeT2hJFpJ0o9wPLJ7YDKMgzWxcvygGR1MSz6h5QD+2c5+DNcw1vnKtwIeyndC4F2xGRz9w0tVPy5DnKTptzIY3nKH/VbefMVohnD/TNS7Q3db+j2TJ0Hc2aXqJRG7HXJXooFuqaIjj20JiZWcNYNB+A4ZgpsIbv06Nx0FiGX+IDVdfuMnuR5ujqWCuzxtkOF4xF8wE0n3GcF8xdZg1jZmBrRJfSquJSg3CROzCqke7qrMMRGoT0IA8aH9SuoYCKS3ajvQU4QnENbXvJZ1Hw1bbJJ/13Limi99GusM8yGQojxe9NIJR843nr8wVLvMa2N3aIeS3LAbW84gRqabHJFI0yTe3rCR45DjOfZC4xozHWHOkXHQBeZa1SuOAgoEtZu4oZ+WDiTSYQOzSMrh/wKwobeISwxJgpYrQQse/qQFi9/qoD8UJf84rTK68XFv8yszHOSMm9ZqHM1RxlC9v46tRGfPBPjWt4SQ+DYGLiZpku6UTwpO/JV5d7b5Q3Uq60YsPKa3zDQyspK+S0aiWb/zmIS5ktqwcGeucXRaprDZrxMQaGbuiYnW7oubcYm5cDeoDv875G1rDq6YjKWMNjK/F6H8kOTkWNoZVvRmERT1eirJw3u05FNZc40uCizvdZvRhHmqoRLrIeDcNpsROe6Xs6yWcWn5sb49AxNC3sRSn78HiYRHPAlr5PPT6TGEvfzdpLrRnavGQaGE3ljce75IWvxau+IRevU16ZUtqNcFsfLWGWsZoDwqZR3hZoR9bSrxcx94uM9t5wI772lKuozGNW40ULbW0HVRsarUh31fWZ0yNs+2xyIdB1QTY8UHRr6UVylMetWmZvzo6Hu2C5isp8RF80NK4Di+qfGnUkd6HvuXd8yg8qrxMrBclLs2S95uOitYSfTmmvYO3KeCKnpurv109OVb8gXuhEuquqHjC9A4GOnaKV0nv3SCrggrBYSY9RdUIa04GCmLnaoM7dzoHw2EULO9aoBtNoY9OBDm8ky4Lzu0O6yAOJofJTMZWLp2LSi9mkA+PFuzZ6IOIWnHz8nrRzoHxxMp6j/DVj4ilxt0c47fP9cgoc/himJh2viiQlNZFe22NdqCY8Qm6Hrt1ltXPcNh90fb53PyCrjZ1kOeZo5zelioBtjvv1W572XRfooBn2/X/95x9/lL/+O2d9108B2Su+f5/0fW/IVMxYuJK7R25R64nPbv+8lxWB/smwZrK40p03FUxA3RXDNziI+/t/7f/6hcAz94eWBQTt99kgfZM8SzYUDy+CpbBL9/d52RtKKAjnUCiTPWaQMF2XsbwBMGIeIborAY8xDEGf2p7bwXQ9JJcLggo8Q/Urbsg0Rn08sCFM12XE7dC88ZNUv+KGIEK3z3YgVZ/Z0ohB+QzVr3k6EvqCde8buXON2hcGVaANqj/Tp9T5fi2mYerTn5XiAqigP+75GMg0yWDbuwaRlmNhIZ4iLYFkapZOoSoDKtWwssxLqqu38c7n25+/p1C/j1b+ROamg1gyAt4Ojyl/kyx00BcPxE+ZxJ4eIFsR6rbtVd8B2YYooj7cdpyG5EUWcKt9NKHhbAwvsjilfa8PkDQBMHB9uK14q/uQLTgZoJ4ad5NscOHWwQWZN8YjG3LgfDmfMxRwZJMP2Yh1A/1MJ90im/Sa9+SWWt+8hOBjSDze8R0vjM0KRXjGd+yXKh7nOQ3MxLiQzQciWrrcmjmgR+LDbcTZeV5ka/PXhBww9+pFFu8Lh0tT5oLTyXQhG544ZANxDl0uTYG0d+HWwzyVRzYkZfS5fMxTQTviQ7aim9zPOulbZHFmsg+zHdMvXjLwMSMuNVw4bNHFk5tkH3DkYlrNMa5kM06BaXvoSjhWAt0RH24rppi9yEKywkcRCm6ZF1lIV7jcmVJt8MCLcJLlW8jlOGR8bTuYJ6koduHWpWH0kQ0J/e2BIzSZrU8c+APn97q8MwWb74EH4bT8T4TX4uFkRzxGUuB14aKTVRv2HeXWEe3SiWp7fbW5vDHHhcfpcCoPfAt6kYVcso9lOnDDXMhSMtnluqR5fy68UiDdhepFZNrhrmxomr+eVaIUtY+PgX6Wy+EhpCcXqhlTJT7x2AWT68lrvQinOURjcYbjV1THAjPWSvEYhcZkkweQae74DBa69+s3L+huisEjAJUQuLfUMyF86zQz3egBfZczDpd/jO56U3/8phzkhtfzFN+rPYlDsXLPRqy+nJbVh6VLZ+2JMqC1JwUbUgRX06VfzLAUF+MIHmmlFNYBXVoXl3p0aBXTpXtsJoXjO9mU8k4o5DFLi03DU1ycl/aMNC1PyiZC9VxJUyGnF5tGDdJN1fQAnkRXy8d4XdDdxMcCx6khlrmP8bqguykHF0RgYmYFPW/WIiaaHyijcAj2eS1ZRWbjhdMD5bz5QLUrT8pmARtrxaTW68IsIO6tLt1kM78hl5kR8DIB4FmWlEvEpBZhenRQW56UzdI/L8yssZPIapBuqqYHdCS+v+cxDg7gwA1LjeaDbctCU3wUQjFOdAeGzmLxAHaOByYvfPgVKvEJugeN7t3UB58UINRg+ChnJPRWJ+FRcawT3fKWUDejA+QEPfWd2G00YtuHbtc71VUdGhagOdHlUePpdG9vqkN95FhkDH450U1YiReTi8OZFAP369uqgYWnTsLrGMKILnEl6VgJD9CVFxxsSvXAh5DH4iP8BszjOtGlmYCxerTEpITF1k78Zrr4fegmxDPwORcpYkTZiW7A2pi4YFtvnotvxq9KnfyftjX8l4rSkKyPCg0cLO9GF8oe48L1ufdezAZ2Na6lM9l7vhcz4cBFftUuFL31WpR/dPvbzW+vT3d50Etxb+NPhzifoA3BU1kYgPBIzIRCLKm0HU29YBPDI1MdBrzoZakRmzgTNGYK7sYFUHhTQQco/t459cia5Qub4QKbmDPNJs2JOlHnUoKAWjT9clGXcCs2EdmIzYiIifMMZVCYbBp6DJeoMJUwxqNTdFIYAL2WTgY8fmlNZDemB8G+xPRA2E+WXAyknuzFZl4O6WIzEx5hTDRRRIw2GQmXcZeZRgfLSmImUZaFAKrlCc9b7pB1pirpTbIX6o4zK+bSxalEhDudVmv1nU5ldVKkRKnEnHF2as40qyJWvm3qWyYm41fC/hXxsxt6X10S1vJtkr3YB9SWtCKfVlsgoyv3OcwMiSYJrgc6uFw1WjRklBrj+Fb2ARmwbBa2O18J7TLVtycc+koxguqChy6AtK/bIN03r7sgTUl84R+oLE1vMnPhe6h0WsBjymXWgTNpLeHEVBmSEIjNgGzWzXGpyOaCc7NsVpZmQJ0ufOMXDd7oLeXi5UnXFliIVDn/b/rp9ejhAAVZurjyXaRZ13hmwybueb2yYzhEJep0LGvHnFQTS1OSVgOaPcexplFHjlk2iUufgBJmvpKLZyLnMtDHt4s9gm83M21+3cN1MXFNh5nEtYRY02bJeriV2BysSVvY4NScCKXi8UQhv/31HW3nmvhkv36gUao0Hl36D6BI4us9g1OlHInTy21SvtBqOtE4vilyVclcKhyPGE6Gp+LNXehVkCoBqIu/H2lfM2p19anXmAxkvmyoJq5STZwyYNkMLM29AdW/ZVzqUdc+W2Dq+Z///d++/+//4/vvfvl/X4RLHWQG1fveX3Hui0x9E/AKoQB78JjT9ATAYI84M+AZqiX6GLwWV8nNeUhr1av901kTQGCsCI1vcI/LvPvXI1oXKsg9JqW8GAyegIqB2yowUGCXK+H8N4767SrTPzacXRs5fPeFZG6e7kZZezVz9xRnqjKWiZaxvM2lOLp0Ko6xs6fm9EqP3KlMWxUUpN+GJz2EBQ5hP+jBI/+Kq1lxYKAu3WNzHBgw0CtE2bRrpuoWpxXVrIguKk6XJMELV3HxjhPJrNp9+ss+1BuKrAnppnZ+e9j6H4la2Tr21fR+Ps7vXI61YIVX22xfJfORF3Ll31Rt8QE1fx+nY7ZM5qMlBYs5FTB6FBDOOw4aYmvfig9C62pHIKfW9mJl4MoMrEOrCwPkDt0RES+trqrqm2YvrwznsiaZZkYPg3R3asGhSBlxbTkqwZpp9TUqUAAgpCSPKjHGAEvH3sQ8oFuxTN6HbjmQrrSROgAnEwqND781aibNlW5C3AYffSidcDu96B6vlRkS87jfm1UInSp6AD5Js297gm7GClyNxN5MU/rsmkdhb6I2WBcVChViAD4nKQZ0SZzoVoSqnTbRYeBPCloe48mvjNMcT8iBoEUe1s1vNBrY1rsRooH/4/sf//z9//zDP0sw0GF2xCPBwIAAkc9QrXHvQQoefyNk6bY1PJreJ1A4XI8zDXGLXQKwre2ser3pBcVXMdTqcU1X8oqn67+VDwK6FRuyWt97UgDdgMg2uwftHztQWkcMX0rmpuWb9h76Y3s/D8Gtt/NBdNsZXr9J96CIj0Pv3aQLUz9H2avpAMta8KGiN+xNix1f5TuCByJeP7C9aQSPMeitEr8elWwtnM02ZtscIK4bdY+J+jqEwAKASfXmob0S+X69ECUO6mCwIz6Hezyv3lt0OyYf5wVTHORAz/fpgTg0eU05QPPjvGiLw/DejGGX+QXBRc3QQRou4IPxxIyzgWEHqMRAA2zCWZBy0+qAQ1eGh55N6wv6W8sZmL1JF/Wh7OW7gW7Fpsoph+pwywdNc659cxiPN29jTkD40B1Ad3g4tvMuQ7TTvofvhtisBxnKsyvmFr+ZRrZ0j9jXyDRAbXiwS/1yPW09I//J06Wpv71qf4keRU+JIAeSy3M8Vxwu7UO3HFqL+umXXKx3KRdJKgd+p03tj9BNFyVgDvpQOvQgO5FtGD2Q3oP7RlbKzp7gN3fthXalmzHBULZquyk1EyhF9WQR2+sfUW4Gkgc+opPcDKT3XE5SDFg97kS3IlBWbk7JmRQf4DfRSBcnOQwMSH5F5eymcnW511shHaqcbdSZNt+ZDVq+zNIqMqvqh5+1hYm6lNoaK3iTzUQ1TPOhNaAWrps3ndYwVajZkwBOBDaDT6lVXwG8xWYf1JlmlhabhifdhhUe1Fo/lwY6y1NcnLdG0sRy6R61ySeyHqSbuvmbzmLqzDfIYv6XP/35r3/75f98URJTnh7vcv/N5TCnMXGohHwih9ka3u7PUJXuAQevfmDM4Cm6bbPBmXbMh+zvObaTzM2TWQnTVe3T3eg8PDBWNu9uuCV8CN1dOfyTx3HUtJs6BRfQgXbiQFjPLkFzs9TCg2dXG+FoSIkD+CJzaetKuuDyVHzDJpZPt0ouk9SFA4JDLdQ0UsseoOMFmwN6RubOoWc3vfIDWsVNk4Bhc8WWlM2tVAax2d/A/2yKTWq4XIXdvyLMqnWjaWmGy2yR1ggaoTXCn7MnQ1UTcYtqQ+y97fPj8Jwc2tjxaeXYLIrh5qozK2x6lhCtcC51eAAJA9iqdmjZpWke89C/oYMWF5uBBi/Y1I2yebxyOd9k2E+3O+iYmWRRpkQ8Hvjk7QROIQce35LtBH+9/ZZE1Kw+SJRaMaNsVk3snmwW9adPNvdyT8Sl4nKbFy9cMr1Qa2Kj/uB2UH9w38sbXwQPDmAxEx7CXBpous3UP9P8DFpZy+aUNORSGTBsolHsCfFIa6Imz+lM4v0SfM53j8td+JtaE7pghlbynFyq/VqtqINmgdRjb5z7xQVzhuuNU4ENnoWQC+fvR5SlqUpKS7wujaitaBOvHtSMIUJTdaZbjtiFlbvrq09br3CJEULTcK9cYiCz6pW+uOwKJnOyOXyapBvDLbVCgUzDuQEBGMDmNEUrO5XWkkMVucAp/OHlPV/2ct/48QFbr5u5iPUT0Idu3Mculxwg+Yhz4LJFAdFzhG9ol50iOuCu6AdBynVTS6FcuuB2NQM2qBFjbGOXmrFIbCLsaTfTgymUfjtwX9DVz4porbf8BZsHbTl5B83JEGdCmm46K84+QsEfvHJiMt0Xc2mrDvnidYfphVYIRrAZGCf9PrzWxLHiJl6XMYKtUHphGZBf5dIM91CVjo24PJy4xEFcspv8oic2I8ErSO0ushk2p23ynhdUzarIWSbwwCmlxL4rqebhxmbGPdeYjT1BaNsPfT4rmwEfy2Mv/n11gphNPueIKC+1rOjKmO49fQk0j/ycsMR7HtFoXgSbBg01nUt4zqUA0YVNBUw1YZzIwaaGL9Rj3adWNdG4B593tNy4cNDnEoI89qBuoJ4gMu4H4fMLPoLL8y/SGIG5hKjwUgyPbJr0i246XujiwDo9rfCqlKVEbGKEZ+F5WDe7opvdtwZSXDCJUFtzKeEjNRKQra3m18hdxzdL80GIFZ3DLT/o/TcIqLEapGJ98eMNJFFIj1M+FAE48pLhkmGd8J6sGkU3cQkXWTYt2LWnHLc8MPpUphHL0tuCeQSn8Z+CgYfhk7hEZ48P3kAXbBaaXSxtlE7GiLlE0Es5Uhd7jlzWq/PjUCcg1hE6Q5rPRJeeKBKXVnjFhLgyXr9ND4HauAsvwQX0sK9+IMsmPlTlX5GNa5hEGQjoIw6Pi4lLV/o+sNTIFF+qK4NRTfELsb7scIq9Jopx9YSQuXMFY69XLgJFNQU0y2XD84JzNkHsiKdSQ2z6+jtQlDxDZPnBN5msaysXk1WTQloiFlGUjfByJUALXMr96FICVykD1CtNizZLJi6BQ5ts2aFxLVyyKytLo2w2imr2rh6g8YCQzag3iLK51WhLbHaK8vSxNMzUPeIYhm5mzqg0K8fMnmzZf/0jSJVWrFHXBrT7W4vPkrYeQWZrKxyUYSANNHmJt8w4fIawCdIdamBfcZqVhgz0sO8GMcPAV8LOdp8ikvn7A+7CwSOGRtIpX6q5AYO2TXVS7YAP9miiYM7QCK1h84DbsPMkJGnzx3OyOV6S2OSBTXMpgGcxZd6Rzaxn1yQH0Thmn0D9ZABVUxAJsNggkG8hVztueqJJQWIvXdi8KDY4aFKQnA1kM+olqTacTbjPu37VMdg0Pl7bXd0G81LIJMuMslzDom4bTaxvEjgDvrY7JmfYB5Klzmw6OUGI2GyAl60TRIqJjzzxlsG0i3PhYtorZ8kLAcP2QnMIe+DzE6jiYC753ECZ5uiIUeHCiIJ7ruEVI01KyDkd88lA5sIIHJfYDWC02XTSTIwyygXgxCVOvOmZy3W0308PHjlqjS37JmbTxXOs89MWgyRZXTM1YjjBRJxO4HJsovddyJKijGW9B80pRzbFhUTXKCjKrl5cT7bRvP4RgVwDdE5frQO3g/HoARlrYl7a9KAZihJktnbQ1rpM9zNW14aA8J4x85WUTbpntADXnGaXrJvcBGhzDs0RawYG89aTp47Pw07F0+Icu1RULGSgl0QRs4mTZCcDA6U5NNOZbuqmw0GpCJEq7y6XWhm1rqb4OGDYXQeNmnOCLoR546S1/1tz2S6S6DgxsGVywduy3eY9E+AN2zmavWKXt2tQqMyOU1ZS5INcRrY5gQ9z8LlOJLfI5VGYtLJw7OrnYKJFXB/0IOL5DrrNJnoQ7aC6icr5IJEmcBl15oApHPXgUuLX4DTWRnV2kjAAJhN7EImqJsQ/cprsgslUO+xFkzoDgyuZKkCNT7zYLOfBv8lmU2OtwkyVhIk9OlJjjWxWvXnUGLk8YSvHdEWaqJlNRWduQ2SzM5tjDyeN2Oyr4ESTRDjfWJL6bNkpuDJoPJ84RdHjmAcGBojk3M6lAcdcXDAMTx6UTx2HE5v5qtasoWthrmnjg4MHNAK5Ftu3uct4yPLqWuRx6uQtwIyGOJNxxXPv0M0ZAdSc6KrzeMoh7bUyEAYPDDLw4bd0RA7zoStNB/0BfShlRaFcyZqGwk+KtzkOF9SBetd8+M0Fj4UT3UBIZcnlWAREJd7l1wM8KWqi1lN4oWAcwucsxQPBCJ3oFjqjK0Z0iy7NFvThN5lAo6scTCHMhyjnt4kJ896kcT3a4i9//OtPf9ec2/eY2DutK86/aVgYsXgO6CVP4MLICcgfQDXM69AFCOvdJEJkMoxB1WlB8ILhARFKpIRIKFVjmOffTqd6D74FR1hWbZVYzFZupgoXT8cwOBcmoHcVCtUeUq5tsv/YEDYfOE9XrqJXn8KY05t6OQqF2kKL2A9ultZQd2PRl1bmqjX5p1aG5pMvsWyt4x7P/o3FqoAeHhAjCkOR/6MeSIgR6dJNwzQtHBomvbMMp2bt58BsnZzaf2aEujUah3i1fJ28lk5pKKuC55/mTt0WL0qRbuoq3CSOh+CfG8AoBBpQEMrhcXWEUDCSIPUfDmP9UtbWf1fCueEQ4zAVzQGPOpSBs/2cWG4mIOtKWNIS6Kz56IV0PD1EueE7MxzBY4ZSKDTdxovnNLSCxJdybAjV+y4NB+zm+Z6H2cJuNsPPGjnEbyRz8sh3ymDPBw6tQY7xJNsKzkIJKe0160Cr0sA4i5PxOoo+iDwJ28oWV4Vw1DQX0PeKYxLFwXMYf3NBOeyOdyP3NXEXu6R1MNMZc6Q62CDVyOhqc4+aWbsXD004Dek5yvK50aMQw9LW50GglvF3ZHxIK0oeAbO0RqX0ffCYmm1T9jhP894Fu+H1oUxZIkQucAuW9trvI1HTWjwaAUPIecIw1ZMHKnQt73qa8vuB8qgSs7SXgENdbUxLwCHqdWYOFCKTvs85uThP9/1fTwX+TacuRl2eL2QufvrzH//y07/98Ck78cWI9u8H9TeXumibHeUfgmhfnidamsdwZ0Fy8aF7UUuF5eS1kV2xGMFBGYDSzqIAJeffHXvtQODyUmVBjXuTBenrGZlRcJzh2qoJG8Kr6YI5/y5QQ7gu3SxbgRkJu3Tx66XQ5vXji6K3nB9fGlV+2U+NKhD8+rQXDyMui6rjyWaicj+zZNAzEca3FmqsU3SaW8U6CesLdg3f7+mvk8zNm0i0myYXuHQWFC46LsaQJFpaJZPqE6ySScaRGNGj4sX+/NJ0lyujsNEsBjX//PxBiJTVhPnV2hL4fPbI+5QBF3HdLJ6jr6c237mC3fxisxHYhyc/1UhADXWzl5KGROJIYqcezUkZ0XerdhH+LdGS+Xx81YtE0F/YGxFLA7pfn2GiUQ7zzyvNIfah27S/ct2vLkMiaid4wTpos9pBfb+VISULofSvlVthUqqf2yR71UCOPc+NG8gbwYSZD41LGgiiI9Nd7397x/p0H4Wat0zzOQAExNAJcWUM6gkySwZ7jSx/0fGbppnI4fNpRtfYnTuJnz8YI2WQwzwYmWkUBpyp6pwmXPoGPMbfTl1Ca3iMJJ7nBIIZwdERKAW4682S6bpFFNmeuTnTC57V8KQ9zIgQJ1OMgE0LzXy2/iTqztSle2y2RHMvBH+fbyOcgtAYbGZy3sBzUqzKm2wehEJhGDDSxPkC0n6L7ZmdN31XNx1arRs2Uozg4xW2gIN2pC8TfeJKd+0I3JBX1XW9C1520SsK50TQB1EBG7Zay1AdHhxxAaToBRxKKCid4f90yaAYBxBmM02uKkyXyJnlSdt8L4TZ4Q1sAPlM2yC+g7Y106FtMEPFRR576JPQKVI0zfXLSmynkb5VIBKxdseJbtUU3KeV4BHKLtr97spvqfqMcaXbcEy8jz6UiMAXbnQh/5aiiz40jdR48pspcup03gZmY1P0KGlLHV+su/w62KpA01l9hBcS5pt8DlPoir3hSTdGfPNNtXII60/u8hNGZapiq0/IoXgd0t967v10hSD3/l//9OfvfvjPn375f1+aen8/7r+5zLtLOntgYf4zVOflvTVQhTKlIX0IXRnWcJsslUrsEf3HThh+5Mj3oDBFakcc1Ifolr43G44Cnf0jyI7dkRj/3HHJ1MjKhb2uYHJsAbcijrOq8pYjXjBt4ER3YDIy5z2FInyUEB7gtyq0tC/doFhtnvow7zh4oLrRBfiZvFcdDmQDIpL4sCul5P0JukkHWi059PsNIlIa7GMefOBnnjBVoeh8Ms+jFIOiHbjSLdhvmDdRo8FkH1CM4sNuKjrR2FUMHS3gV1TNRtedpK3uZ9+ZruIa3nKfNGnom9Unurty8Gh37FiR67MpTFdgSO/vtUGsXHu9lWv/HN2vuCes0AIL6lB7zgew742Q+qxCP0R3HJuQuE8clF4cyqYuzp+L7C4U+iG6OnTkm31UPhCX1AIiE5f84X/+9X/Jn08y3/3wn3+QN+tffv7D3xehfFeGbz5EGQ5MV+hQl3vp6PwGhToruHamog8ayFFpBmw/CL9Wpqx7lA0fOBAzI1jS0A4Krd/kojkqmS17M+fpNZLhhtykSzsTqepiPqmwEFPSNTgLNGvZpVYMZ9if+ao+bn99x+fEJlWqFV/PidW0SaMHDxrUsX7cfnfAWsm81wpPIWgolXzzqLRRsud3p1XhsbDBzBjI88OpMoTG3XmkH6Z8w6uu71G9aCbrWDkWCb7LLP2MtuHnJS1sfo4eLeD2p9fhdGmKkEE+cMjXrRRtYTDOu1MGtNI8EQy/lGltOQtcwLt4MrNlcIfMLaC1fTjx15YZU+Hz7RYTbC9SlV0WU3OcPwdm6eQyEd7j9pX7D51nyv/tv30h+tNtL8junLMXlLUa/bxrg1bdJl0C9TaxSB2Vg8OMWvCZ7ae/b7rnIlwPzQBin8ci0zRHaz4SLt03aWDN75i0FkiYD5q0Dr2I/xuTBu7VsyatgjRLoLvxy20aD/f7dmzabyhFWRF1PlWnM36sQcHG609weszSud/JDAw/vSGuYk7BZ5ij5SkuzhOopcTZwUcXfHZwCAS6HqqYdekemymuZiFFhqUBuDZsH5inhbVKcNXpOAFi7rFpeYproxBp1ypd0B2G+8fqQbqpmw414eUNUrfr9XJTZDq+faETB9pZs7QuQ/N80qseoxde58TytKDEaUyi7Cx4FvNtk0ABhdYrl2vl5mHuK4Ky2lD4MJulnwNxtBCi6cGdwiaIEb4SDUtx7WUESRZ00WRaCRwRqwLpplo6lCLTRJAefBD723KeTOwM+mF0xc4uhn77NrT1QMN7W2XCHH9ERAgG0ZGIB7a2RQLRaab3OuHSzVOc9K278Mx1smOiJdNahP3glnOVpQ9ie6Vpk5Nzsons0sr+8lRtmsm6q5b3z4jAIgKKaT/V5Lbty/jySzrYLa1/hfdIjzpsy7Q7Mo6TSw9oWZGtZaEjTqWeyjb4sluFDufXKeLIzwmXbgXJzM+vp9rxjePF+6eqTKzQpKr+n//7l6UvykuFI/5yr33zealprBliq3pEEaYDjkMgp+N0wDsoFBoCWRM9MGqhwGhd/R63/Tt8B8UFkL64JKxW+Xl4rImlQKCQ4+TbOYUWDuaRZ8XnSPCX4qhCl7u0Z3pYuBAJICdkNHHTvWzgrsRB2cgY6IoNbW+42IVa4nDf+cakd2/Xa19dCIR+C5GiRpPNLUBVevcOms4+d3NlGk79CoQ0FeIbcFkohhB9JhDL1BOEEKx088poavBWKOsTuKfc5/UmI15BJ1vVWTPaq41jfadZwBTsPGAH+NDyEnRpKS8MrxIoS04vI91IG4rBcTLJyQjJYAQEzFwXnfVOD52yeWpz01ixejExvjJanMCfhpYILWmujVIcgaAwNBqqzfAmMeOr183TfbD0RBHx5XSohBU7ImJ5QNeKAWUTQ1vzGnUZM54onFk0jLXc68a5fB521ILiYGgywMW9ToNqLVJYerjihMbb0XfoAY9l2WB8Bew6Rf/QmcMPjNfL0Xyt15D4qsvDbNDssZIpcyi2Ca1vpcy4NGPjXbuWbj9zQb/nK7fgKzcp2lZgluJiHMPgu7J0GVUOvVfzpXxs8AINAkR29xuhWux48yF7kTYKmI9RX92oISKsxUzIqoKNAGqoSzdPyypetXGMBnpYozZ8BeZJfZUIUVyfTarGU3uW7qau/qbjI++Bs086YAIk//J/zP+efHz6x182mPg4nfFvP1CSqONI5XA76otFg5+v4bW7oAnOxMNi5ondUVGsloSGU49qRBlsDIA9LhOUj4oxrWk2t6zfZwlv6wCO4vFTrt89Tp8DH0rCcZQlnsfgntoT4bBZuQWER8Amg8c43iXskW5tRWcmn1/ugZ4dCnWVBsHqvU+4ZY1ff1qaD9Yt0E5ElSpYx+RFWWq6QUtr9jB2QYAu4xP756cYHmqaDRS862deEJbgv8sx7+WDCD8miq+346NhT0lQkPe7sde44OO0Wipq5nvVE3XKAsl5Q08xSKUsZlh6cqpikCcpPBLf1yAa976Gcfc2tEXl/NsW9TGf1Dx5VNjImN4jIK+BOiPeDwJEOIPghEBYO+RBRSxBATruaoE+om0EHod3Do7Ghly4HE3KBhryOs6o1p2D6XkU7h9M6XTBeyF4IBNcEHYxmBfie4quNCl6BIbe9RDrOae+Htj8JhPv8dCnTvmhkBolC+TfuUxpDfPBhVVrISmK9GI2RZpkJEwgdLfcQxFygzIO3cecpkK9LbKGiNMhBZZs6W8ZmW2JsNlDP7yKADgp/G5PSQ0MsuC6qNobmv6ReRzqWGGDuypLvdPSYAGW357xoBxgMNNMlDWcPmVldgl7VPIdOHTCx5eb2gtACU4vmRxo7K0P4Xn9A92+Uo636vACwng4MdwPBKVyIlwPBPzz0Qk/XXMZUK3JNc+PvKDbo8cguMTb/RjhpyTx7HZ/qwmWtC5tTbD8x7/85d++//Hvyq70Ewn8m8+uICCwEcG9tMUrWZf0wpLq02QfEsI22d9TC07aPsYbms/o0wwxiqIlaOkbdm6vFXVoI41pC31ou5gJEW2VtxJOGUSWSzozaze/P2KXxSg0aCsciWaUSnwEB5eFbECbEq3dClwyRLJQbi5RokRzWoV2giCRXVMpHNoAE5Vcwudiah6DeuXnIC8yuk9tsiX9N/NKx9FcwbqYpxLx9OwRqFp1bMIYYDIkakH8PcIkgnFQV6gcdIobDG14MOPJ1veeIqj6r9ZBCi6ppvlr6Pclr1i0ob2E0CtNtZN9oBpwO2Bq6VC6iO+mvS5FzJIc0GothPduajoNDNAkxAvcDHZNpZA4hDTpUYPGZL952ARTw3LuTTnzBHfFwKAHIYeLsJ+ZAGZO00AxDM3A/Jxo7dYV6ecieKQyK9ppaZDYCnXQnpTOe1ITX9pmbdVAKRNaA3Uk6nsN4gQ4qKawgPUBca+5Ai0ggRAK5S1HgxqepkAK9MDEY2gZZ+K1pfTKhCp9aXQXioLcr18RDsrrPTBP/h76NglBSasQiiJQLE1p5Bq2Qjg8Lb6BR7RW7nmFlCdvK+/rkOdEZ0DiLWj6zJppkUjgGrdGzsB8GjjA5crvgz8kOe2tIdYQ/CzkcYfuNAS2EsRTU9fB4nphVjZc5JJiIpSQFPayMxRXHuBgSE+Z0xjcgX12hVuuCuX75WAe4GyLWUcTbtbueReON5kDcPmhrc6fuJkvK5cDL1iScN4zu71mae2IcmD6Wgqd93j0PRedhq3ieZ8mwMXo2+89O3sa3XstEMRVmDdDgGfwvKERdUGXbgZDjter34luQMG2Y2ugAMVYtMpUE/2BHbZQyGGb4u+gWnIgGc1iyyyzNwGQr9WnGEsaqBDcOJkrIPHazwFZsN2GCOTY+lmTdK+o3Py++m7FQwdevjeqWAbceWIkcPR5aIrCaWKNAdP8unY3uIBSeIyy+No+qGOGtoYttFxhPYoCqdhcxfZ6MemIhWvWbvkUjjfYbzpnV9fJusrZHf/y/dzgH3/5/1+cvPul6PGbT95N5wBUoDqZmbAKzv+eziizFdpq2BgFIx9nEZhnek3e8g4VlIIMPDAZvkmZrHczNaMR9c1Yb7NmU0XU9nxUlfhy2IfLJWZZuKldNPHMSWufovt7vvUkc9dASaoLLql6YoTc2msmHKPHUJL3kZntoyg/Joxdwh4x63ogYoSAxLuEgZmyVGc7NJimiJM8H6T8nDR2KXtsezLR6ZOdsHcTcWI9EOJ8mI+ehF65WVOUhqDYAfbRSG75cYI+3A34GsaifgBiX4nAcPrS+1ApCsoNQkIya3f9vEgAWNI1M6hmQdc0CWQYW0/RRDBYItnkogaWsagfQAEQq4rm3YwFFi+qkW7qLJeZuJ2G+4dz2gW4IHxsENP1sZpByXwA5adk8RWtMY8Xe3cJPOLbApmAWc01qldfMIHSeYYDY4kzoZ6/W2IPRg1XUXkHPjuV4LxHGQGf+H0+Fj60dO0eo4KR88rnlEqFhIFZUkYZGVNeQQ3f2+nYG8pKjBq2FOsNW2Gt7gXdZhKpVYd0V0m/waEqbeTw3Rd9y/13lsB2QsyijrMp7VYjSKMenqcIuxRzsyAeIrsthm9RVT8S3SV0hU07l4oPxHCQsOVZV2Ga9RNlyMyjLBATZmxIIQdRWmsdWgtfWPhlaRw+cyFevjiqZPBGkZ3AFFFvNLynZwLl1KV7PvKg0QSbhPmlEAgtT9YQLs+uLRFkwqLtSe/eUwTRY875y+//sjRf9T6Fp+ZrTeHpoMJTneKwksUGqvxM32sR0wINXkv3ohgF60J2CZMImqmyMogWOPbPri0RmO/VCgYsOa1hDwof0XPM73/SLq8Xs/3cqGLBoWiKtmSPAWYbesXiu7Vy7xDQ5bpJlw9BXq3h9hBQKMasmVHdCDEig1NAANNmV4dDYH//NM7hzBTdL71GmF0xDhQz6TRV8v3SwDJ8e00mWrt3JTp6Bh6114Wabb3Q8QXspeKmlEyVLHZN5wzwHf0Oq4HNEaG59MlYFj4pfXOBZotYFrpJl41ep+S1dJnQ0CmzttpvuE5qaFpRgSkcerlffv7TFePlAdqvXRI4FPV+3XyFqhClUAqCutOCNKgRkiWHFEYy49fvEeaUQVQM53VKBiE22bUlgsWDLZbLoAVzs7LD8bK//8vS7sxjIHx0hPXwGqYs8C0HWq/jWOWEdiBFBcdKedCS9qxTFc46vLHXd4QiML9/ijs4JU7s9y4ZJO7xOzgaJvBrCLpkjXqitXvOheM95oDVN9SNPhmMe20GNMyFZtj3QjlCs2TbDRsWRqas/pCBzdvyyagfIr26uzKpx+P7CyUeB4/iEM3F9uMa6dor5mpIuHTPzUuA3vMU3bmtPulnpazxlL4crr+Z89rB3KWCJ33+IxwyrEt3/QnssNgkzEWxERvb40H1gGbJjKymydpDVe10JjZbz7HsHAsCR/LpXrXfakDHqIWtm569dU0kPUZR1Ymd9bTn+n02lOBIOcHjbN6lW1gEV1EKnE/8HheikYWZ4TVTpjamF3ueaO1Wb4fj7fWbrrrO2jyhVdf/9U9//u6H//xprv2XP/35r3/7w1b19VmQ8u1XXzcdnkdSuft60dtllV+jJ3Nc1DqZlhbTgoBAjpIav+/HHOjGvKOt37fjpVDKcZPwVfk1zvpRhbMZ7MitaYsH0zwzxY3FC8camn6v+tpwcFO5gLKj1v5eJu1kSRQ4aFU79b3aEqw+JcKHyxtGUh9H/CjKIgyHM+UnZacyaTyIUrvjUHvIlN/RFRxcbGmH/yjKz0njG6TsUoDdtZTuZCe6NB4LPEbBYFfUbI2+gE0GJyAPpqK56zA9AzPggy1t+VrBnIvJ4iIu5PWo7D8dh0aDE63dT85RS3dulJzTpZ/DBVsGV4ViCyH4BNfeeSBW4wJse5Er+E7vdhaZNXqR7qkrJhX8zoFL5fUjxofoOhni9/ro9EGUn5LFN0fXp6I7Y61998HujIXqZOaBwRoRs2TPdcT4ZuBB6GKEPCDLLFerv5hGYltJLWvZCP7h3V9FRnXtdkk3ZocSp/cTZ/dfuIrK/bgQqQtwrWXr5DTS8JArmUqxJWLAWYVId9X02yuUHWmU8WVPZXdkbkFQcig8PbTf4fV3bocr4keQ9ZOCD9lvUEk/tJpbxlggitRwmakp/VTxoygPH2xpFsZjhHdl4eHTQhhFygkdcLNM3fVauG9CWscqq4fIuknBSbjfomX6yJaogJCm0pgdHALoRDhuYk9hJZipuH6Y8GOi+PYIewzeCjqt8XzLFp8CfZ1kdTrf9ViohKfzXaPGGVdJigEWi7pGs/DkNebxRqx51YAuTg1G1Mlp4tlyksvE+Q7BTDtYZUk+1b9TWPiYNVhtJ6Nl8MS+o1Ljj+BRLjNvsfc9kryl0RtxqkOGzS+FNn90nZygRcodqrV0gN9NNhM1Es0DgcVPub9BMFUm5cFDtneq/ZEUqkeNTi5a3RzX0gEFz7nQkF6Zx1uYTXjEjmPT+lywCcLMiZBRBRk/kTQrRFpG4naUvIevSEGBQgU5gpCN4YtCkxtkVgVwWSl8PoZPg5cZFrC41Dmri8vK8yWOg6fuSFEzTluZx99lKIpICmLnKeN0INsP/6s2aTDOfgjns/4mox0L/aYuVlTPTN1SwgAN5gyry0j5jD5zNaRlDM/ROJPEajvNxW2aYwdKdF5RiESwf8Pf9zdqo5kEIflc4y2spNeCC29UtN4DDyQwM89VbqbidMkt+xj0fuhVGBdbB86IDdqtYlSRBkodF67RkXwGMLdBgN9tveKWZ9QogPp+uInRQUb9vYXgfpupp1Y5TAZPiI8k+xZc2gAS9X7LNAtwWHpVO2DhA1DFq2a0k641p5lpOF563pbYnDq9PfRZxNNviTkN5P0nn46648DpbnJ6EPhFFDoSq4d29xglp8Fm84RuddIyrxfdf4pIbsdgF7Qck/+ACnBkHcuxeI0+PfpS84A9+pMvAl87Oo1Ke+8/Ar91akpFh7DvpW5ZqlWhA8zjqKNY579DULvRCYBvqnkB10DHBd7nFGs838cKYJ3C3NgCdQrTo0bfYJ7R07ib+XPDp4UsaVXK4jSsd71t2EFGD+U9rqWKj5YT7v2mmeoEvjgaPQDHpTjRZRiVipFH9RqO0OA1PUXSQD/nUsLXtDFa+poeJMruwiUZUpkVCHZ0vj8bMnlo98V5p4311NK/+8Lk5K8zOa9GhPnqhV5/XRs01lt6aHJRucQnv2yLR+ys86OqFwqe9Yv4SSQzPzI2eU8d2ELpv2rKS8wl+rEm66/HjsAXJPSEd1HyiUZNDtBpShSMsl6bsbeN+Kw0s2XbvYPmSUe/0SETVgi5pPgMj5uv2QD7URStdD1wM3bc9Uwdd8ISoheNs0TuZmww0w02lwY+w4vmH/RUYD3OfMoVsBS7beAXUfaGwlSv2sSEO7DZquYhzqddJNdF2nc9jmBd41lM5BoxG8rAQGsdbyDK2hmqqPmMdZ1yw3F+pXPgZZCdkOcnBK1rpR2vZQ9ag0R50PBZyQK8clkjdVDVTPesTGIEJp2geWqi+GVNhFF2MWmmHhQ4mJuAJWIycssl9aOTZowsEwozoF4WRg8qiRqmitNojbqyMsplXC/ixSWHLgv1dRUzsNBbluUNk1ODmGyB53exM1APrJ+ep86l1LsVrf+La6kjl402nN2/wpaoNJ+Yeuch2/1gL5Wf+bK9uOOZZOn0yOsH3ZCt4zQpgeEBrZz3P8bTc6ekqdTkewR4Wl7n0szRBFFOtYzwwsuNAIhzI7R6WXKadQl2SE5KJC4HyrKQv58ToSTn6BOAEgcB2cyIlTAdiwMyEwaycnF50MDfueQy4KlxN0frGCRr5GvMn0dnX/gGHtP5vrl9dlCSdklP+AFM8hCFXPXdn9aSi6feBgXxpiQx3Dz/VccNbzSCdh5xhELKYw/F7UKYFbzL6XHjqNweGA1rUE+UQF+RuXRpReg8H2suFXyGBr2gT6MeqdpgLmFWr+S9EfEXez4wQsJF810tgZnDif6lvERANevh0wsnL3gw671Q0U5vlCCvBFsz3Xe8fOazxwm1KcApH4F8Iol4IpRYpiRID4SsMh/E3SUKepCzPvj2GYFy+FO8aI06j14VTEGPN+TgFhkJdwGXkYYezF2I8NLtg+IGY6VWb3PZwSuSyDAYo9HWw9KE7nDCoIzFYzazh4spkW84P2OcKdOX+DyiRYwDm14lOAv35Nxzl6ePyWSbREIms2lx+wzMbYdLSCKB8Ejr0aV/SxgtDRnVsYbKaNS4mt5fA5IJ0wo3uC3bQuS4y2mg4PLo9AYalcD9WsHnpPWbNRpTXTLISd/hJuCO91Cne6gmChPO11sACz9fSj63esXAlqAr46VeKYGkEJvWkUNhTsc9ukTqK7nEV7dlIAyq1LHoLWUaepp8MP5aJ1jTxnH6ymDOsWuw7dMfxosBLJsDsC9CWxgXHvQ2F43DDvxBDaUpUDRm7rhP+JpLBQo9giaXCV9BWQOH+uwtcKWXVbZ9k8vBFc2HGnz1GSmylSiyVQkYrTSf4HVpFCWc5iODwZwska/JBSI2SmcspocbVw6N++vWobdp8zr6rMc0cRtUcbOb/oEeIL+0kkM1YkIkqjz2XlFQj9ZVemsjHJAKa12ZM8UB3cIpBLpBEz968TjI4cAe13nHbRkOoOu2bx7gNBKbfpWeU6vQBWWftqn3xE/9GMLPyeIbpOwBhnEYzHDzCIr3NyebQMMnysFlJOgFZXnAOLDMwpDEuQeirp+UPWzIGDgyS9gJ9yV4QdlHgqEZ8E11GhyGRzDh4YIY6Clkjz2/EGDaq2T4/Jb7ACUzYYmgO4AAsCjKemZ6K+mmjJ8x7W2viv3z5jd5+LEXhCUl5kCYJZFXJMf7wthsFPhNY1hXbYa6wrD+f7//yw8//enff/jx51/+zRfjV//yNL/6BF/86p/++B9fJPyHgXI/ENThHWwdnP3q1DYkw4iwglxQVgLEg+zaClsZVVrRtWmdE0Qx5GXvgQdjWTi5b3t9d2gaGuJDeVGOGWEZQ9wcosm4cJVa8CSUiYOpU9DZdeeuCxQUzbgzV3iitVtSaIMn/e0i+aAUeqCstJojIwazpm1anOV/n5WE5eYxefQivrBw8xwjuJOjhfgGEXQ+EttLp74YJFCPgafVzMR6nHKrDkh0F7JowSP65yhklyd203Y33525oCzzeR1MqgwRhMbmGveqKT5P+TlpfFvbLpk4h3k5V5QPn2cXb86DlKcP5DHv0lHOLiMIyFpKiNshinpF2Wdz2F4+R3huzVYd6+dlsSvlr+aR/Pj9T/Mh/EU//aO8ur/4VfoBfoy8Dsrrea6Hx2hkBJF9hqoLkC6L4CGyuzLwiByGRtwkDx/tgrAUKzmYhkMHBj5L9zFB7BL2uL6iQZg7X39jr9r3c+jQj5DtY6/j5LOH8DHCgvi0lXHgiE1ehbwasYmImmRlZoCoaFjv/wbAa6uDi2Pl+KKMLuI14zOfoOx0MJzOKXxnq3uFpZ8zc88RLnGr2YE3pqanCPtIwmvDwZdOLkDoaEEfIhsE0s0DeJm325Gyk4Q/fIrjA5m8HlcrkGby/r8//eUv33/3y+oX5e7SJ1iv5zN3dyOzlQb8lUf8nkeoerw8WALPUN2VgIMVPbVx8SIdBA6mo+M3PkVXoBNvkyUpPEN1VwYuUTgUnPQS3K9wwmP3DNW0ObbxcwfvKbq7UnjiQNfoErikg/cU3Sk7B2eLxPAQ2V0pPHKkd5Gsfv3wPUNVytMd1Idk8BTdbZSwB470yC6lnnT0nqIrFej3LwUSw0Nkd6XwyJEWVF6H9BD53M+QFQBTj/oKUsyH6G6L4YlTLVVPDh0gFy7yY4Sn+Bz6F1gST9HdFcQzRzsfHtvCaYRnyE7ZRY889ZV2PkN4VxCPHO6ST5QP5zP4GGEJ9d0vb2JJPEV3VxDPHG4BjXtgguxDZAWDw6F/8yKy9RThXUE8crgFaMThK/kMPka4bULNf+4QPkV3VxAO203pIM0DuGaZZF7JA6J7jO5DYtgl++EZptd//XD70wdW5EcuH51WfNwPARXc6ofIyjhsh750FsNjhHcF8S12Rp4LP/2y8v8D'; f['veeam/2d.xml'] = '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'; f['veeam/3d.xml'] = '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'; -f['sitemap.xml'] = '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'; +f['sitemap.xml'] = '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'; f['weblogos.xml'] = '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'; f['aws/compute.xml'] = '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'; f['aws/deployment_management.xml'] = '7VvJkts2EP0aXVHYuB2dxD7m4lTlmGLGiq2yRlJp5Nj++4AW0Q2+5oCLxnFSpVwyQ6PRjWYvrx84G/fz04f2tH3aWH1oH7cb98vG2scv78/t6YNqPz+pd9vT/vj1cXu4/PHYHtr32+7HsGbjXm/0q00vPxB/9fvb8PvP++Ond2+O58f2sjseOgmrP1wXFF7p8vrk8/WJr5Wprk/ap9P24XJ9/Hd73rV/7rfXf3m6nI8ft5937y79PrvDh+15N7Dm4Xg4BPGg8Sl9FkTbXWe3/nIV1aq4bvq1//362yns97i9bM+Dp3y0X789eLNoazNv67dzth7aHBVNbf37jK3Nuq1fL7d6pqfnGK1XOXqFO2baPMcbZpXNuHP4eSzU/2wfPr4/Hz8d3tGjU9ulS//L4/Hvbf7FsIr97vDs2i6Di+z6JKNvkFliE6592B+ftumD4eGNV1Uz2MCXypuswkLV9a0irlK+yYpIy9bIjJm22CXOqLpaeL7lItaqJh8Z0rI1MmOmLXaJqZS2y863QiRkQj6upGErRMYMm3CI16p2GGjG5xXXqhDBuVzGqTIvM2LbGpkR2xY7JYRaWS484BoZ2yiTl5G2rZEZs22xU0yp6nweyAOukvHK5WVGbFsjM2KbcEr4edCCw+8jXfqv43mLj3b7/RXywnYja8PTKw5fisr120swZpOic29U1XfhHp2XhvD6HZ3f0fnmjs7XofORxD132UTabaiyQwBsK9XUg2QM5a4yg4Q1TtVgwHjtGCoLvdG5KWWVqtw6ZbPnjk5rHjDC+kLpPNAJDa4ob5YJHcEssWvxeqNsvuMkdfcGmVtmqNxa7hOZzlyZm2XG4mOyy85JAGdVYcQrHCZAQNVFMUyAAAMQHv47rfq37eNp3162A3PuXNq9W9+79ffo1ncu7c6l3bm0Jae5c2nLHHLn0u5c2p1Le962/ziX9nrfPl12D+Gnn7bt4e2l3Q+JtCIcsod+kUhzsdDeoXl2awsj7Euic62qdZuvwOdK1zM9Ps9y8MtLonThlpmGL8fpWpVupstvYNYyWN2rBiaHSjWICR8+na8yps9dZWwv1D8xjYon+2IjbijjIkuL+oL6xfVPjLKx9vWPgkvchPpQmKX6yg7VF1ReSH2tatDvmWN0dHwB5UB9gDsFqK96IpC0+1jBWXtFnmbt5HuXcf5U5V/EN1okOsMIkO9PQWKYDWV0/3MSTnmUKKdCyis/9GlJXTH6NASLH/q0ondMAVUo78GnWvKdqN1YpUF/pSCeLZOJNppo66H6ZI2DNc8rT4SM2JiUG4Nnp4gn5c4OlTeqnDq5JVVfObtQtxO6Y9okuiGPR+LqZSO5aIihj2DSCj4eCGEtpkoXC1BGxvmhDNGMmQqpRYl0FOJUokIBgCrh+SVG13bQCd5rGD+KKQsSxBUt6MTg3XarGjAhWcUmNE6aIKYZNKHg6m7ofBYKdcfSQ6UOb8W4oQnpKoerMu8hETNyc0uGGjRBs6HRC4ZXxbBvomMyXvCM7w1t7sALIZorKC8hnEvoV2nMO1olCsyL5llwYQMJYGJKZB2P7z6cumng1J6DNFabCkFCiL4CajotyjSUhlkJI7a2tIjSNNGPKCGUREQptbzgEhZUCjyQ3KCQBaVoKyGoPCSg95Fh4veuZXGHwTIRSjHlswNvSRecK9fH1pFttPBSCgLy0SWOCy6hKScaLeJGLxtt9sZO5Z0XQANimMmY19ykCURgxGu+Z7PkRg+VxkValkFMM8K6ClSuMd44dQlEWbrWo3gLdQZhVPJqHa3K+1eGA7eg+SG6RsYH0DdVhTv2DVBWECsxGysF5SgsqhG218I5vCpbkKiPG7k5N2TanE0QfcBwGLEJfir7ipISKcEEDeRfaRWEqCt4unO0qIKiHACOzSdVwvkwZHMT+Gte+5mg24Pv4SuIMExMAfNUyqAYZ1TDPKHlVeXQXybpNI5X2SkTKgbfbIKtwIRQzdAEzal/47BNYzy7BYpaKbpoxwdA1swbdsVYiDmTztHUHioc9Xkgv23SL+WkX4pRv3RCO85HPjbrVL1kvsVwhsjRMK3B4xl0y26YhXqxcjSU7QxZlh86FKdTO02mUKfWEgIlwX9yvY4tmA0oOagtraqxmVYKLTDyUmCk+DQVWOBUhbyA5hLFjxxkvk2mPH5UognA+5jopqRmFhN3o/PqbL5Yp9MmNanpYTM5Y37exQ4/Ou+uHbmNNKGUJhhpQilNwA4/zwTEGI6qYzL1eOmEGoKmm3pqYYH43kvUzCLe/aYm1ABDfbATTWAOiUzQYujvCIT8JaNr8Ks/b6bu9IMMUcokoycxpRaIu3uER/Xsx4injMKT1qI/ORpBspgSa3RHSaAFjaDiw6oaWlQIHYNFohn5sEFGXCEsqAGgpAnFFkhQu4pfScgbZhpi9f5vsUwWob2VLNNMrm3dV5/f45pXvzqd9ruH9oJ/2uyoIn+muO+j9Qdd+dJQ/zK3vmbYpv4fX2R2N6folpe89eWKRPrsTKf/2G8zmZ7kcJm5/6ybX+n4H/qVpmcQ0BdbN/JxuZiIiJuL1d6Tl3giwjrXLcKOJ+dhP91yHX8Rb+TWTCBis3HErjPHZgDddHJTDAoSbFbcUjq+UGN+zQrlqNvGzyNyZ2+QjbCEtZKBAM7ejTI4DtY0yNFIEhdlRrKEieEREWcyTTMKs7cFkkf0V3VRfR2jITMQ0VSbzEPY5rUcxmuBrRPYFh1STH03KP7uZtF6boXPra8ZD68W6ayaHGyL+OVimkFIKVgmoDmDBKlQ8BvhqVJ8UCzCiAmcDKsSkB8OCI24Gg2PKrwOi+N+xgAtP+CoqWTx9yMGi5gjypOLmEfEOlZEv+u3e/QPD8f98RxMuf7/mzUb6958+w8syrSFgJ39kG/VkW/MuLRhYtcMEiB5n3iro7l48PvU8D71DJasFkwJ3/OT/ppmUKoMpOzGuihm7rTkUltokKdJivdtbQG/4EgbTlQvdNcOda/qh9xqDWeJuNCrgPB4MTzgxS3zCB7wIvRS0LIslXH45CqRnB/m77TgcFey4IB1xSykqxFNuYZ67jRea1mqrvT+NScIxb6gCIV6mugo9smeRDt+5qLpQj1RjzztWN35rlNvfNAj6n8A'; diff --git a/src/main/webapp/js/viewer.min.js b/src/main/webapp/js/viewer.min.js index d60ca8e3..27b37b59 100644 --- a/src/main/webapp/js/viewer.min.js +++ b/src/main/webapp/js/viewer.min.js @@ -99,7 +99,7 @@ l--,_+=n[s++]<<u,u+=8}if(a.nlen=(31&_)+257,_>>>=5,u-=5,a.ndist=(31&_)+1,_>>>=5,u var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(a,b){var c="",d,e,f,g,k,l,m=0;for(null!=b&&b||(a=Base64._utf8_encode(a));m<a.length;)d=a.charCodeAt(m++),e=a.charCodeAt(m++),f=a.charCodeAt(m++),g=d>>2,d=(d&3)<<4|e>>4,k=(e&15)<<2|f>>6,l=f&63,isNaN(e)?k=l=64:isNaN(f)&&(l=64),c=c+this._keyStr.charAt(g)+this._keyStr.charAt(d)+this._keyStr.charAt(k)+this._keyStr.charAt(l);return c},decode:function(a,b){b=null!=b?b:!1;var c="",d,e,f,g,k,l=0;for(a=a.replace(/[^A-Za-z0-9\+\/\=]/g, "");l<a.length;)d=this._keyStr.indexOf(a.charAt(l++)),e=this._keyStr.indexOf(a.charAt(l++)),g=this._keyStr.indexOf(a.charAt(l++)),k=this._keyStr.indexOf(a.charAt(l++)),d=d<<2|e>>4,e=(e&15)<<4|g>>2,f=(g&3)<<6|k,c+=String.fromCharCode(d),64!=g&&(c+=String.fromCharCode(e)),64!=k&&(c+=String.fromCharCode(f));b||(c=Base64._utf8_decode(c));return c},_utf8_encode:function(a){a=a.replace(/\r\n/g,"\n");for(var b="",c=0;c<a.length;c++){var d=a.charCodeAt(c);128>d?b+=String.fromCharCode(d):(127<d&&2048>d?b+= String.fromCharCode(d>>6|192):(b+=String.fromCharCode(d>>12|224),b+=String.fromCharCode(d>>6&63|128)),b+=String.fromCharCode(d&63|128))}return b},_utf8_decode:function(a){var b="",c=0,d;for(c1=c2=0;c<a.length;)d=a.charCodeAt(c),128>d?(b+=String.fromCharCode(d),c++):191<d&&224>d?(c2=a.charCodeAt(c+1),b+=String.fromCharCode((d&31)<<6|c2&63),c+=2):(c2=a.charCodeAt(c+1),c3=a.charCodeAt(c+2),b+=String.fromCharCode((d&15)<<12|(c2&63)<<6|c3&63),c+=3);return b}};window.urlParams=window.urlParams||{};window.isLocalStorage=window.isLocalStorage||!1;window.mxLoadSettings=window.mxLoadSettings||"1"!=urlParams.configure;window.isSvgBrowser=window.isSvgBrowser||0>navigator.userAgent.indexOf("MSIE")||9<=document.documentMode;window.EXPORT_URL=window.EXPORT_URL||"https://exp.draw.io/ImageExport4/export";window.PLANT_URL=window.PLANT_URL||"https://exp-plant.draw.io/plantuml4";window.VSD_CONVERT_URL=window.VSD_CONVERT_URL||"https://convert.draw.io/VsdConverter/api/converter"; -window.EMF_CONVERT_URL=window.EMF_CONVERT_URL||"https://convert.draw.io/emf2png/convertEMF";window.SAVE_URL=window.SAVE_URL||"save";window.OPEN_URL=window.OPEN_URL||"open";window.PROXY_URL=window.PROXY_URL||"proxy";window.SHAPES_PATH=window.SHAPES_PATH||"shapes";window.GRAPH_IMAGE_PATH=window.GRAPH_IMAGE_PATH||"img";window.ICONSEARCH_PATH=window.ICONSEARCH_PATH||((0<=navigator.userAgent.indexOf("MSIE")||urlParams.dev)&&"file:"!=window.location.protocol?"iconSearch":"https://www.draw.io/iconSearch"); +window.EMF_CONVERT_URL=window.EMF_CONVERT_URL||"https://convert.draw.io/emf2png/convertEMF";window.SAVE_URL=window.SAVE_URL||"save";window.OPEN_URL=window.OPEN_URL||"open";window.PROXY_URL=window.PROXY_URL||"proxy";window.VIEWER_URL=null;window.SHAPES_PATH=window.SHAPES_PATH||"shapes";window.GRAPH_IMAGE_PATH=window.GRAPH_IMAGE_PATH||"img";window.ICONSEARCH_PATH=window.ICONSEARCH_PATH||((0<=navigator.userAgent.indexOf("MSIE")||urlParams.dev)&&"file:"!=window.location.protocol?"iconSearch":"https://www.draw.io/iconSearch"); window.TEMPLATE_PATH=window.TEMPLATE_PATH||"templates";window.NEW_DIAGRAM_CATS_PATH=window.NEW_DIAGRAM_CATS_PATH||"newDiagramCats";window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";window.RESOURCE_BASE=window.RESOURCE_BASE||RESOURCES_PATH+"/dia";window.mxLoadResources=window.mxLoadResources||!1; window.mxLanguage=window.mxLanguage||function(){var a="1"==urlParams.offline?"en":urlParams.lang;if(null==a&&"undefined"!=typeof JSON&&isLocalStorage)try{var b=localStorage.getItem(".drawio-config");null!=b&&(a=JSON.parse(b).language||null)}catch(c){isLocalStorage=!1}return a}(); window.mxLanguageMap=window.mxLanguageMap||{i18n:"",id:"Bahasa Indonesia",ms:"Bahasa Melayu",bs:"Bosanski",bg:"Bulgarian",ca:"Català",cs:"Čeština",da:"Dansk",de:"Deutsch",et:"Eesti",en:"English",es:"Español",fil:"Filipino",fr:"Français",it:"Italiano",hu:"Magyar",nl:"Nederlands",no:"Norsk",pl:"Polski","pt-br":"Português (Brasil)",pt:"Português (Portugal)",ro:"Română",fi:"Suomi",sv:"Svenska",vi:"Tiếng Việt",tr:"Türkçe",el:"Ελληνικά",ru:"Русский",sr:"Српски",uk:"Українська",he:"עברית",ar:"العربية",th:"ไทย", @@ -156,50 +156,50 @@ b(g.childNodes),e<a.length-1&&0<=mxUtils.indexOf(c,a[e+1].nodeName)&&d.push("\n" a.innerText=b:a[void 0===a.textContent?"text":"textContent"]=b},getInnerHtml:function(){return mxClient.IS_IE?function(a){return null!=a?a.innerHTML:""}:function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),getOuterHtml:function(){return mxClient.IS_IE?function(a){if(null!=a){if(null!=a.outerHTML)return a.outerHTML;var b=[];b.push("<"+a.nodeName);var c=a.attributes;if(null!=c)for(var d=0;d<c.length;d++){var e=c[d].value;null!=e&&0<e.length&&(b.push(" "),b.push(c[d].nodeName), b.push('="'),b.push(e),b.push('"'))}0==a.innerHTML.length?b.push("/>"):(b.push(">"),b.push(a.innerHTML),b.push("</"+a.nodeName+">"));return b.join("")}return""}:function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),write:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&a.appendChild(c);return c},writeln:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&(a.appendChild(c),a.appendChild(document.createElement("br")));return c},br:function(a,b){b=b||1;for(var c= null,d=0;d<b;d++)null!=a&&(c=a.ownerDocument.createElement("br"),a.appendChild(c));return c},button:function(a,b,c){c=null!=c?c:document;c=c.createElement("button");mxUtils.write(c,a);mxEvent.addListener(c,"click",function(a){b(a)});return c},para:function(a,b){var c=document.createElement("p");mxUtils.write(c,b);null!=a&&a.appendChild(c);return c},addTransparentBackgroundFilter:function(a){a.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"}, -linkAction:function(a,b,c,d,e){return mxUtils.link(a,b,function(){c.execute(d)},e)},linkInvoke:function(a,b,c,d,e,f){return mxUtils.link(a,b,function(){c[d](e)},f)},link:function(a,b,c,d){var e=document.createElement("span");e.style.color="blue";e.style.textDecoration="underline";e.style.cursor="pointer";null!=d&&(e.style.paddingLeft=d+"px");mxEvent.addListener(e,"click",c);mxUtils.write(e,b);null!=a&&a.appendChild(e);return e},fit:function(a){var b=parseInt(a.offsetLeft),c=parseInt(a.offsetWidth), -d=mxUtils.getDocumentScrollOrigin(a.ownerDocument),e=d.x,d=d.y,f=document.body,g=document.documentElement,k=e+(f.clientWidth||g.clientWidth);b+c>k&&(a.style.left=Math.max(e,k-c)+"px");b=parseInt(a.offsetTop);c=parseInt(a.offsetHeight);f=d+Math.max(f.clientHeight||0,g.clientHeight);b+c>f&&(a.style.top=Math.max(d,f-c)+"px")},load:function(a){a=new mxXmlRequest(a,null,"GET",!1);a.send();return a},get:function(a,b,c,d,e,f){a=new mxXmlRequest(a,null,"GET");null!=d&&a.setBinary(d);a.send(b,c,e,f);return a}, -getAll:function(a,b,c){for(var d=a.length,e=[],f=0,g=function(){0==f&&null!=c&&c();f++},k=0;k<a.length;k++)(function(a,c){mxUtils.get(a,function(a){var f=a.getStatus();200>f||299<f?g():(e[c]=a,d--,0==d&&b(e))},g)})(a[k],k);0==d&&b(e)},post:function(a,b,c,d){return(new mxXmlRequest(a,b)).send(c,d)},submit:function(a,b,c,d){return(new mxXmlRequest(a,b)).simulate(c,d)},loadInto:function(a,b,c){mxClient.IS_IE?b.onreadystatechange=function(){4==b.readyState&&c()}:b.addEventListener("load",c,!1);b.load(a)}, -getValue:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c);return a},getNumber:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c||0);return Number(a)},getColor:function(a,b,c){a=null!=a?a[b]:null;null==a?a=c:a==mxConstants.NONE&&(a=null);return a},clone:function(a,b,c){c=null!=c?c:!1;var d=null;if(null!=a&&"function"==typeof a.constructor){var d=new a.constructor,e;for(e in a)e!=mxObjectIdentity.FIELD_NAME&&(null==b||0>mxUtils.indexOf(b,e))&&(d[e]=c||"object"!=typeof a[e]?a[e]:mxUtils.clone(a[e]))}return d}, -equalPoints:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b)for(var c=0;c<a.length;c++)if(a[c]==b[c]||null!=a[c]&&!a[c].equals(b[c]))return!1;return!0},equalEntries:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b){var c=0,d;for(d in b)c++;for(d in a)if(c--,!(mxUtils.isNaN(a[d])&&mxUtils.isNaN(b[d])||a[d]==b[d]))return!1}return 0==c},removeDuplicates:function(a){for(var b= -new mxDictionary,c=[],d=0;d<a.length;d++)b.get(a[d])||(c.push(a[d]),b.put(a[d],!0));return c},isNaN:function(a){return"number"==typeof a&&isNaN(a)},extend:function(a,b){var c=function(){};c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a},toString:function(a){var b="",c;for(c in a)try{if(null==a[c])b+=c+" = [null]\n";else if("function"==typeof a[c])b+=c+" => [Function]\n";else if("object"==typeof a[c])var d=mxUtils.getFunctionName(a[c].constructor),b=b+(c+" => ["+d+"]\n");else b+= -c+" = "+a[c]+"\n"}catch(e){b+=c+"="+e.message}return b},toRadians:function(a){return Math.PI*a/180},toDegree:function(a){return 180*a/Math.PI},arcToCurves:function(a,b,c,d,e,f,g,k,l){k-=a;l-=b;if(0===c||0===d)return q;c=Math.abs(c);d=Math.abs(d);var m=-k/2,n=-l/2,p=Math.cos(e*Math.PI/180),q=Math.sin(e*Math.PI/180);e=p*m+q*n;var m=-1*q*m+p*n,n=e*e,r=m*m,t=c*c,u=d*d,x=n/t+r/u;1<x?(c*=Math.sqrt(x),d*=Math.sqrt(x),f=0):(x=1,f===g&&(x=-1),f=x*Math.sqrt((t*u-t*r-u*n)/(t*r+u*n)));n=f*c*m/d;r=-1*f*d*e/c; -k=p*n-q*r+k/2;l=q*n+p*r+l/2;t=Math.atan2((m-r)/d,(e-n)/c)-Math.atan2(0,1);f=0<=t?t:2*Math.PI+t;t=Math.atan2((-m-r)/d,(-e-n)/c)-Math.atan2((m-r)/d,(e-n)/c);e=0<=t?t:2*Math.PI+t;0==g&&0<e?e-=2*Math.PI:0!=g&&0>e&&(e+=2*Math.PI);g=2*e/Math.PI;g=Math.ceil(0>g?-1*g:g);e/=g;m=8/3*Math.sin(e/4)*Math.sin(e/4)/Math.sin(e/2);n=p*c;p*=d;c*=q;d*=q;for(var y=Math.cos(f),A=Math.sin(f),r=-m*(n*A+d*y),t=-m*(c*A-p*y),q=[],z=0;z<g;++z){f+=e;var y=Math.cos(f),A=Math.sin(f),u=n*y-d*A+k,x=c*y+p*A+l,v=-m*(n*A+d*y),y=-m* -(c*A-p*y),A=6*z;q[A]=Number(r+a);q[A+1]=Number(t+b);q[A+2]=Number(u-v+a);q[A+3]=Number(x-y+b);q[A+4]=Number(u+a);q[A+5]=Number(x+b);r=u+v;t=x+y}return q},getBoundingBox:function(a,b,c){var d=null;if(null!=a&&null!=b&&0!=b){b=mxUtils.toRadians(b);var d=Math.cos(b),e=Math.sin(b);c=null!=c?c:new mxPoint(a.x+a.width/2,a.y+a.height/2);var f=new mxPoint(a.x,a.y);b=new mxPoint(a.x+a.width,a.y);var g=new mxPoint(b.x,a.y+a.height);a=new mxPoint(a.x,g.y);f=mxUtils.getRotatedPoint(f,d,e,c);b=mxUtils.getRotatedPoint(b, -d,e,c);g=mxUtils.getRotatedPoint(g,d,e,c);a=mxUtils.getRotatedPoint(a,d,e,c);d=new mxRectangle(f.x,f.y,0,0);d.add(new mxRectangle(b.x,b.y,0,0));d.add(new mxRectangle(g.x,g.y,0,0));d.add(new mxRectangle(a.x,a.y,0,0))}return d},getRotatedPoint:function(a,b,c,d){d=null!=d?d:new mxPoint;var e=a.x-d.x;a=a.y-d.y;return new mxPoint(e*b-a*c+d.x,a*b+e*c+d.y)},getPortConstraints:function(a,b,c,d){b=mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT,mxUtils.getValue(b.style,c?mxConstants.STYLE_SOURCE_PORT_CONSTRAINT: -mxConstants.STYLE_TARGET_PORT_CONSTRAINT,null));if(null==b)return d;d=b.toString();b=mxConstants.DIRECTION_MASK_NONE;c=0;1==mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT_ROTATION,0)&&(c=mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION,0));a=0;45<c?(a=1,135<=c&&(a=2)):-45>c&&(a=3,-135>=c&&(a=2));if(0<=d.indexOf(mxConstants.DIRECTION_NORTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 1:b|=mxConstants.DIRECTION_MASK_EAST;break;case 2:b|=mxConstants.DIRECTION_MASK_SOUTH; -break;case 3:b|=mxConstants.DIRECTION_MASK_WEST}if(0<=d.indexOf(mxConstants.DIRECTION_WEST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_WEST;break;case 1:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 2:b|=mxConstants.DIRECTION_MASK_EAST;break;case 3:b|=mxConstants.DIRECTION_MASK_SOUTH}if(0<=d.indexOf(mxConstants.DIRECTION_SOUTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 1:b|=mxConstants.DIRECTION_MASK_WEST;break;case 2:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 3:b|= -mxConstants.DIRECTION_MASK_EAST}if(0<=d.indexOf(mxConstants.DIRECTION_EAST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_EAST;break;case 1:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 2:b|=mxConstants.DIRECTION_MASK_WEST;break;case 3:b|=mxConstants.DIRECTION_MASK_NORTH}return b},reversePortConstraints:function(a){var b;b=(a&mxConstants.DIRECTION_MASK_WEST)<<3;b|=(a&mxConstants.DIRECTION_MASK_NORTH)<<1;b|=(a&mxConstants.DIRECTION_MASK_SOUTH)>>1;return b|(a&mxConstants.DIRECTION_MASK_EAST)>>3}, -findNearestSegment:function(a,b,c){var d=-1;if(0<a.absolutePoints.length)for(var e=a.absolutePoints[0],f=null,g=1;g<a.absolutePoints.length;g++){var k=a.absolutePoints[g],e=mxUtils.ptSegDistSq(e.x,e.y,k.x,k.y,b,c);if(null==f||e<f)f=e,d=g-1;e=k}return d},getDirectedBounds:function(a,b,c,d,e){var f=mxUtils.getValue(c,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);d=null!=d?d:mxUtils.getValue(c,mxConstants.STYLE_FLIPH,!1);e=null!=e?e:mxUtils.getValue(c,mxConstants.STYLE_FLIPV,!1);b.x=Math.round(Math.max(0, -Math.min(a.width,b.x)));b.y=Math.round(Math.max(0,Math.min(a.height,b.y)));b.width=Math.round(Math.max(0,Math.min(a.width,b.width)));b.height=Math.round(Math.max(0,Math.min(a.height,b.height)));if(e&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||d&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.x,b.x=b.width,b.width=c;if(d&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||e&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.y, -b.y=b.height,b.height=c;d=mxRectangle.fromRectangle(b);f==mxConstants.DIRECTION_SOUTH?(d.y=b.x,d.x=b.height,d.width=b.y,d.height=b.width):f==mxConstants.DIRECTION_WEST?(d.y=b.height,d.x=b.width,d.width=b.x,d.height=b.y):f==mxConstants.DIRECTION_NORTH&&(d.y=b.width,d.x=b.y,d.width=b.height,d.height=b.x);return new mxRectangle(a.x+d.x,a.y+d.y,a.width-d.width-d.x,a.height-d.height-d.y)},getPerimeterPoint:function(a,b,c){for(var d=null,e=0;e<a.length-1;e++){var f=mxUtils.intersection(a[e].x,a[e].y,a[e+ -1].x,a[e+1].y,b.x,b.y,c.x,c.y);if(null!=f){var g=c.x-f.x,k=c.y-f.y,f={p:f,distSq:k*k+g*g};null!=f&&(null==d||d.distSq>f.distSq)&&(d=f)}}return null!=d?d.p:null},rectangleIntersectsSegment:function(a,b,c){var d=a.y,e=a.x,f=d+a.height,g=e+a.width;a=b.x;var k=c.x;b.x>c.x&&(a=c.x,k=b.x);k>g&&(k=g);a<e&&(a=e);if(a>k)return!1;var e=b.y,g=c.y,l=c.x-b.x;1E-7<Math.abs(l)&&(c=(c.y-b.y)/l,b=b.y-c*b.x,e=c*a+b,g=c*k+b);e>g&&(b=g,g=e,e=b);g>f&&(g=f);e<d&&(e=d);return e>g?!1:!0},contains:function(a,b,c){return a.x<= -b&&a.x+a.width>=b&&a.y<=c&&a.y+a.height>=c},intersects:function(a,b){var c=a.width,d=a.height,e=b.width,f=b.height;if(0>=e||0>=f||0>=c||0>=d)return!1;var g=a.x,k=a.y,l=b.x,m=b.y,e=e+l,f=f+m,c=c+g,d=d+k;return(e<l||e>g)&&(f<m||f>k)&&(c<g||c>l)&&(d<k||d>m)},intersectsHotspot:function(a,b,c,d,e,f){d=null!=d?d:1;e=null!=e?e:0;f=null!=f?f:0;if(0<d){var g=a.getCenterX(),k=a.getCenterY(),l=a.width,m=a.height,n=mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE)*a.view.scale;0<n&&(mxUtils.getValue(a.style, -mxConstants.STYLE_HORIZONTAL,!0)?(k=a.y+n/2,m=n):(g=a.x+n/2,l=n));l=Math.max(e,l*d);m=Math.max(e,m*d);0<f&&(l=Math.min(l,f),m=Math.min(m,f));d=new mxRectangle(g-l/2,k-m/2,l,m);g=mxUtils.toRadians(mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION)||0);0!=g&&(e=Math.cos(-g),f=Math.sin(-g),g=new mxPoint(a.getCenterX(),a.getCenterY()),a=mxUtils.getRotatedPoint(new mxPoint(b,c),e,f,g),b=a.x,c=a.y);return mxUtils.contains(d,b,c)}return!0},getOffset:function(a,b){for(var c=0,d=0,e=!1,f=a,g=document.body, -k=document.documentElement;null!=f&&f!=g&&f!=k&&!e;){var l=mxUtils.getCurrentStyle(f);null!=l&&(e=e||"fixed"==l.position);f=f.parentNode}b||e||(e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),c+=e.x,d+=e.y);e=a.getBoundingClientRect();null!=e&&(c+=e.left,d+=e.top);return new mxPoint(c,d)},getDocumentScrollOrigin:function(a){if(mxClient.IS_QUIRKS)return new mxPoint(a.body.scrollLeft,a.body.scrollTop);a=a.defaultView||a.parentWindow;return new mxPoint(null!=a&&void 0!==window.pageXOffset?window.pageXOffset: -(document.documentElement||document.body.parentNode||document.body).scrollLeft,null!=a&&void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop)},getScrollOrigin:function(a,b,c){b=null!=b?b:!1;c=null!=c?c:!0;for(var d=null!=a?a.ownerDocument:document,e=d.body,f=d.documentElement,g=new mxPoint,k=!1;null!=a&&a!=e&&a!=f;){isNaN(a.scrollLeft)||isNaN(a.scrollTop)||(g.x+=a.scrollLeft,g.y+=a.scrollTop);var l=mxUtils.getCurrentStyle(a); -null!=l&&(k=k||"fixed"==l.position);a=b?a.parentNode:null}!k&&c&&(a=mxUtils.getDocumentScrollOrigin(d),g.x+=a.x,g.y+=a.y);return g},convertPoint:function(a,b,c){var d=mxUtils.getScrollOrigin(a,!1);a=mxUtils.getOffset(a);a.x-=d.x;a.y-=d.y;return new mxPoint(b-a.x,c-a.y)},ltrim:function(a,b){return null!=a?a.replace(new RegExp("^["+(b||"\\s")+"]+","g"),""):null},rtrim:function(a,b){return null!=a?a.replace(new RegExp("["+(b||"\\s")+"]+$","g"),""):null},trim:function(a,b){return mxUtils.ltrim(mxUtils.rtrim(a, -b),b)},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)&&("string"!=typeof a||0>a.toLowerCase().indexOf("0x"))},isInteger:function(a){return String(parseInt(a))===String(a)},mod:function(a,b){return(a%b+b)%b},intersection:function(a,b,c,d,e,f,g,k){var l=(k-f)*(c-a)-(g-e)*(d-b);g=((g-e)*(b-f)-(k-f)*(a-e))/l;e=((c-a)*(b-f)-(d-b)*(a-e))/l;return 0<=g&&1>=g&&0<=e&&1>=e?new mxPoint(a+g*(c-a),b+g*(d-b)):null},ptSegDistSq:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;0>=e*c+f*d?c=0:(e=c-e,f=d- -f,a=e*c+f*d,c=0>=a?0:a*a/(c*c+d*d));e=e*e+f*f-c;0>e&&(e=0);return e},ptLineDist:function(a,b,c,d,e,f){return Math.abs((d-b)*e-(c-a)*f+c*b-d*a)/Math.sqrt((d-b)*(d-b)+(c-a)*(c-a))},relativeCcw:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;a=e*d-f*c;0==a&&(a=e*c+f*d,0<a&&(a=(e-c)*c+(f-d)*d,0>a&&(a=0)));return 0>a?-1:0<a?1:0},animateChanges:function(a,b){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(a,b,c){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(a,b,c,d, -e,f){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(a,b){mxUtils.isVml(a)?a.style.filter=100<=b?"":"alpha(opacity="+b/5+")":mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?a.style.filter=100<=b?"":"alpha(opacity="+b+")":a.style.opacity=b/100},createImage:function(a){var b;mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?(b=document.createElement(mxClient.VML_PREFIX+":image"),b.setAttribute("src",a),b.style.borderStyle="none"):(b=document.createElement("img"), -b.setAttribute("src",a),b.setAttribute("border","0"));return b},sortCells:function(a,b){b=null!=b?b:!0;var c=new mxDictionary;a.sort(function(a,e){var d=c.get(a);null==d&&(d=mxCellPath.create(a).split(mxCellPath.PATH_SEPARATOR),c.put(a,d));var g=c.get(e);null==g&&(g=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),c.put(e,g));d=mxCellPath.compare(d,g);return 0==d?0:0<d==b?1:-1});return a},getStylename:function(a){return null!=a&&(a=a.split(";")[0],0>a.indexOf("="))?a:""},getStylenames:function(a){var b= -[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0>a[c].indexOf("=")&&b.push(a[c])}return b},indexOfStylename:function(a,b){if(null!=a&&null!=b)for(var c=a.split(";"),d=0,e=0;e<c.length;e++){if(c[e]==b)return d;d+=c[e].length+1}return-1},addStylename:function(a,b){0>mxUtils.indexOfStylename(a,b)&&(null==a?a="":0<a.length&&";"!=a.charAt(a.length-1)&&(a+=";"),a+=b);return a},removeStylename:function(a,b){var c=[];if(null!=a)for(var d=a.split(";"),e=0;e<d.length;e++)d[e]!=b&&c.push(d[e]);return c.join(";")}, -removeAllStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0<=a[c].indexOf("=")&&b.push(a[c])}return b.join(";")},setCellStyles:function(a,b,c,d){if(null!=b&&0<b.length){a.beginUpdate();try{for(var e=0;e<b.length;e++)if(null!=b[e]){var f=mxUtils.setStyle(a.getStyle(b[e]),c,d);a.setStyle(b[e],f)}}finally{a.endUpdate()}}},setStyle:function(a,b,c){var d=null!=c&&("undefined"==typeof c.length||0<c.length);if(null==a||0==a.length)d&&(a=b+"="+c+";");else if(a.substring(0, -b.length+1)==b+"="){var e=a.indexOf(";");a=d?b+"="+c+(0>e?";":a.substring(e)):0>e||e==a.length-1?"":a.substring(e+1)}else{var f=a.indexOf(";"+b+"=");0>f?d&&(d=";"==a.charAt(a.length-1)?"":";",a=a+d+b+"="+c+";"):(e=a.indexOf(";",f+1),a=d?a.substring(0,f+1)+b+"="+c+(0>e?";":a.substring(e)):a.substring(0,f)+(0>e?";":a.substring(e)))}return a},setCellStyleFlags:function(a,b,c,d,e){if(null!=b&&0<b.length){a.beginUpdate();try{for(var f=0;f<b.length;f++)if(null!=b[f]){var g=mxUtils.setStyleFlag(a.getStyle(b[f]), -c,d,e);a.setStyle(b[f],g)}}finally{a.endUpdate()}}},setStyleFlag:function(a,b,c,d){if(null==a||0==a.length)a=d||null==d?b+"="+c:b+"=0";else{var e=a.indexOf(b+"=");if(0>e)e=";"==a.charAt(a.length-1)?"":";",a=d||null==d?a+e+b+"="+c:a+e+b+"=0";else{var f=a.indexOf(";",e),g;g=0>f?a.substring(e+b.length+1):a.substring(e+b.length+1,f);g=null==d?parseInt(g)^c:d?parseInt(g)|c:parseInt(g)&~c;a=a.substring(0,e)+b+"="+g+(0<=f?a.substring(f):"")}}return a},getAlignmentAsPoint:function(a,b){var c=0,d=0;a==mxConstants.ALIGN_CENTER? -c=-.5:a==mxConstants.ALIGN_RIGHT&&(c=-1);b==mxConstants.ALIGN_MIDDLE?d=-.5:b==mxConstants.ALIGN_BOTTOM&&(d=-1);return new mxPoint(c,d)},getSizeForString:function(a,b,c,d){b=null!=b?b:mxConstants.DEFAULT_FONTSIZE;c=null!=c?c:mxConstants.DEFAULT_FONTFAMILY;var e=document.createElement("div");e.style.fontFamily=c;e.style.fontSize=Math.round(b)+"px";e.style.lineHeight=Math.round(b*mxConstants.LINE_HEIGHT)+"px";e.style.position="absolute";e.style.visibility="hidden";e.style.display=mxClient.IS_QUIRKS? -"inline":"inline-block";e.style.zoom="1";null!=d?(e.style.width=d+"px",e.style.whiteSpace="normal"):e.style.whiteSpace="nowrap";e.innerHTML=a;document.body.appendChild(e);a=new mxRectangle(0,0,e.offsetWidth,e.offsetHeight);document.body.removeChild(e);return a},getViewXml:function(a,b,c,d,e){d=null!=d?d:0;e=null!=e?e:0;b=null!=b?b:1;null==c&&(c=[a.getModel().getRoot()]);var f=a.getView(),g=null,k=f.isEventsEnabled();f.setEventsEnabled(!1);var l=f.drawPane,m=f.overlayPane;a.dialect==mxConstants.DIALECT_SVG? -(f.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),f.canvas.appendChild(f.drawPane),f.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(f.drawPane=f.drawPane.cloneNode(!1),f.canvas.appendChild(f.drawPane),f.overlayPane=f.overlayPane.cloneNode(!1));f.canvas.appendChild(f.overlayPane);var n=f.getTranslate();f.translate=new mxPoint(d,e);b=new mxTemporaryCellStates(a.getView(),b,c);try{g=(new mxCodec).encode(a.getView())}finally{b.destroy(),f.translate=n,f.canvas.removeChild(f.drawPane), -f.canvas.removeChild(f.overlayPane),f.drawPane=l,f.overlayPane=m,f.setEventsEnabled(k)}return g},getScaleForPageCount:function(a,b,c,d){if(1>a)return 1;c=null!=c?c:mxConstants.PAGE_FORMAT_A4_PORTRAIT;d=null!=d?d:0;var e=c.width-2*d;c=c.height-2*d;d=b.getGraphBounds().clone();b=b.getView().getScale();d.width/=b;d.height/=b;b=d.width;var f=Math.sqrt(a);d=Math.sqrt(b/d.height/(e/c));c=f*d;d=f/d;if(1>c&&d>a){var g=d/a;d=a;c/=g}1>d&&c>a&&(g=c/a,c=a,d/=g);g=Math.ceil(c)*Math.ceil(d);for(f=0;g>a;){var g= -Math.floor(c)/c,k=Math.floor(d)/d;1==g&&(g=Math.floor(c-1)/c);1==k&&(k=Math.floor(d-1)/d);g=g>k?g:k;c*=g;d*=g;g=Math.ceil(c)*Math.ceil(d);f++;if(10<f)break}return e*c/b*.99999},show:function(a,b,c,d,e,f){c=null!=c?c:0;d=null!=d?d:0;null==b?b=window.open().document:b.open();9==document.documentMode&&b.writeln('\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=9"><![endif]--\x3e');var g=a.getGraphBounds(),k=Math.ceil(c-g.x),l=Math.ceil(d-g.y);null==e&&(e=Math.ceil(g.width+c)+Math.ceil(Math.ceil(g.x)- -g.x));null==f&&(f=Math.ceil(g.height+d)+Math.ceil(Math.ceil(g.y)-g.y));if(mxClient.IS_IE||11==document.documentMode){d="<html><head>";g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)d+=g[c].outerHTML;d+="<style>";for(c=0;c<document.styleSheets.length;c++)try{d+=document.styleSheets[c].cssText}catch(m){}d=d+'</style></head><body style="margin:0px;">'+('<div style="position:absolute;overflow:hidden;width:'+e+"px;height:"+f+'px;"><div style="position:relative;left:'+k+"px;top:"+l+'px;">')+ -a.container.innerHTML;b.writeln(d+"</div></div></body><html>");b.close()}else{b.writeln("<html><head>");g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)b.writeln(mxUtils.getOuterHtml(g[c]));d=document.getElementsByTagName("link");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));d=document.getElementsByTagName("style");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));b.writeln('</head><body style="margin:0px;"></body></html>');b.close();c=b.createElement("div"); -c.position="absolute";c.overflow="hidden";c.style.width=e+"px";c.style.height=f+"px";e=b.createElement("div");e.style.position="absolute";e.style.left=k+"px";e.style.top=l+"px";f=a.container.firstChild;for(d=null;null!=f;)g=f.cloneNode(!0),f==a.view.drawPane.ownerSVGElement?(c.appendChild(g),d=g):e.appendChild(g),f=f.nextSibling;b.body.appendChild(c);null!=e.firstChild&&b.body.appendChild(e);null!=d&&(d.style.minWidth="",d.style.minHeight="",d.firstChild.setAttribute("transform","translate("+k+","+ -l+")"))}mxUtils.removeCursors(b.body);return b},printScreen:function(a){var b=window.open();a.getGraphBounds();mxUtils.show(a,b.document);a=function(){b.focus();b.print();b.close()};mxClient.IS_GC?b.setTimeout(a,500):a()},popup:function(a,b){if(b){var c=document.createElement("div");c.style.overflow="scroll";c.style.width="636px";c.style.height="460px";var d=document.createElement("pre");d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g," ");c.appendChild(d);c=new mxWindow("Popup Window", -c,document.body.clientWidth/2-320,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight)/2-240,640,480,!1,!0);c.setClosable(!0);c.setVisible(!0)}else mxClient.IS_NS?(c=window.open(),c.document.writeln("<pre>"+mxUtils.htmlEntities(a)+"</pre"),c.document.close()):(c=window.open(),d=c.document.createElement("pre"),d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g," "),c.document.body.appendChild(d))},alert:function(a){alert(a)},prompt:function(a,b){return prompt(a, -null!=b?b:"")},confirm:function(a){return confirm(a)},error:function(a,b,c,d){var e=document.createElement("div");e.style.padding="20px";var f=document.createElement("img");f.setAttribute("src",d||mxUtils.errorImage);f.setAttribute("valign","bottom");f.style.verticalAlign="middle";e.appendChild(f);e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));mxUtils.write(e,a);a=document.body.clientWidth;d=document.body.clientHeight|| -document.documentElement.clientHeight;var g=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,e,(a-b)/2,d/4,b,null,!1,!0);c&&(mxUtils.br(e),b=document.createElement("p"),c=document.createElement("button"),mxClient.IS_IE?c.style.cssText="float:right":c.setAttribute("style","float:right"),mxEvent.addListener(c,"click",function(a){g.destroy()}),mxUtils.write(c,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),b.appendChild(c),e.appendChild(b),mxUtils.br(e),g.setClosable(!0)); -g.setVisible(!0);return g},makeDraggable:function(a,b,c,d,e,f,g,k,l,m){a=new mxDragSource(a,c);a.dragOffset=new mxPoint(null!=e?e:0,null!=f?f:mxConstants.TOOLTIP_VERTICAL_OFFSET);a.autoscroll=g;a.setGuidesEnabled(!1);null!=l&&(a.highlightDropTargets=l);null!=m&&(a.getDropTarget=m);a.getGraphForEvent=function(a){return"function"==typeof b?b(a):b};null!=d&&(a.createDragElement=function(){return d.cloneNode(!0)},k&&(a.createPreviewElement=function(a){var b=d.cloneNode(!0),c=parseInt(b.style.width),e= -parseInt(b.style.height);b.style.width=Math.round(c*a.view.scale)+"px";b.style.height=Math.round(e*a.view.scale)+"px";return b}));return a}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml", +linkAction:function(a,b,c,d,e){return mxUtils.link(a,b,function(){c.execute(d)},e)},linkInvoke:function(a,b,c,d,e,f){return mxUtils.link(a,b,function(){c[d](e)},f)},link:function(a,b,c,d){var e=document.createElement("span");e.style.color="blue";e.style.textDecoration="underline";e.style.cursor="pointer";null!=d&&(e.style.paddingLeft=d+"px");mxEvent.addListener(e,"click",c);mxUtils.write(e,b);null!=a&&a.appendChild(e);return e},getDocumentSize:function(){var a=document.body,b=document.documentElement; +try{return new mxRectangle(0,0,a.clientWidth||b.clientWidth,Math.max(a.clientHeight||0,b.clientHeight))}catch(c){return new mxRectangle}},fit:function(a){var b=mxUtils.getDocumentSize(),c=parseInt(a.offsetLeft),d=parseInt(a.offsetWidth),e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),f=e.x,e=e.y,g=f+b.width;c+d>g&&(a.style.left=Math.max(f,g-d)+"px");c=parseInt(a.offsetTop);d=parseInt(a.offsetHeight);b=e+b.height;c+d>b&&(a.style.top=Math.max(e,b-d)+"px")},load:function(a){a=new mxXmlRequest(a,null, +"GET",!1);a.send();return a},get:function(a,b,c,d,e,f){a=new mxXmlRequest(a,null,"GET");null!=d&&a.setBinary(d);a.send(b,c,e,f);return a},getAll:function(a,b,c){for(var d=a.length,e=[],f=0,g=function(){0==f&&null!=c&&c();f++},k=0;k<a.length;k++)(function(a,c){mxUtils.get(a,function(a){var f=a.getStatus();200>f||299<f?g():(e[c]=a,d--,0==d&&b(e))},g)})(a[k],k);0==d&&b(e)},post:function(a,b,c,d){return(new mxXmlRequest(a,b)).send(c,d)},submit:function(a,b,c,d){return(new mxXmlRequest(a,b)).simulate(c, +d)},loadInto:function(a,b,c){mxClient.IS_IE?b.onreadystatechange=function(){4==b.readyState&&c()}:b.addEventListener("load",c,!1);b.load(a)},getValue:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c);return a},getNumber:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c||0);return Number(a)},getColor:function(a,b,c){a=null!=a?a[b]:null;null==a?a=c:a==mxConstants.NONE&&(a=null);return a},clone:function(a,b,c){c=null!=c?c:!1;var d=null;if(null!=a&&"function"==typeof a.constructor){var d=new a.constructor, +e;for(e in a)e!=mxObjectIdentity.FIELD_NAME&&(null==b||0>mxUtils.indexOf(b,e))&&(d[e]=c||"object"!=typeof a[e]?a[e]:mxUtils.clone(a[e]))}return d},equalPoints:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b)for(var c=0;c<a.length;c++)if(a[c]==b[c]||null!=a[c]&&!a[c].equals(b[c]))return!1;return!0},equalEntries:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b){var c= +0,d;for(d in b)c++;for(d in a)if(c--,!(mxUtils.isNaN(a[d])&&mxUtils.isNaN(b[d])||a[d]==b[d]))return!1}return 0==c},removeDuplicates:function(a){for(var b=new mxDictionary,c=[],d=0;d<a.length;d++)b.get(a[d])||(c.push(a[d]),b.put(a[d],!0));return c},isNaN:function(a){return"number"==typeof a&&isNaN(a)},extend:function(a,b){var c=function(){};c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a},toString:function(a){var b="",c;for(c in a)try{if(null==a[c])b+=c+" = [null]\n";else if("function"== +typeof a[c])b+=c+" => [Function]\n";else if("object"==typeof a[c])var d=mxUtils.getFunctionName(a[c].constructor),b=b+(c+" => ["+d+"]\n");else b+=c+" = "+a[c]+"\n"}catch(e){b+=c+"="+e.message}return b},toRadians:function(a){return Math.PI*a/180},toDegree:function(a){return 180*a/Math.PI},arcToCurves:function(a,b,c,d,e,f,g,k,l){k-=a;l-=b;if(0===c||0===d)return q;c=Math.abs(c);d=Math.abs(d);var m=-k/2,n=-l/2,p=Math.cos(e*Math.PI/180),q=Math.sin(e*Math.PI/180);e=p*m+q*n;var m=-1*q*m+p*n,n=e*e,r=m*m, +t=c*c,u=d*d,x=n/t+r/u;1<x?(c*=Math.sqrt(x),d*=Math.sqrt(x),f=0):(x=1,f===g&&(x=-1),f=x*Math.sqrt((t*u-t*r-u*n)/(t*r+u*n)));n=f*c*m/d;r=-1*f*d*e/c;k=p*n-q*r+k/2;l=q*n+p*r+l/2;t=Math.atan2((m-r)/d,(e-n)/c)-Math.atan2(0,1);f=0<=t?t:2*Math.PI+t;t=Math.atan2((-m-r)/d,(-e-n)/c)-Math.atan2((m-r)/d,(e-n)/c);e=0<=t?t:2*Math.PI+t;0==g&&0<e?e-=2*Math.PI:0!=g&&0>e&&(e+=2*Math.PI);g=2*e/Math.PI;g=Math.ceil(0>g?-1*g:g);e/=g;m=8/3*Math.sin(e/4)*Math.sin(e/4)/Math.sin(e/2);n=p*c;p*=d;c*=q;d*=q;for(var y=Math.cos(f), +A=Math.sin(f),r=-m*(n*A+d*y),t=-m*(c*A-p*y),q=[],z=0;z<g;++z){f+=e;var y=Math.cos(f),A=Math.sin(f),u=n*y-d*A+k,x=c*y+p*A+l,v=-m*(n*A+d*y),y=-m*(c*A-p*y),A=6*z;q[A]=Number(r+a);q[A+1]=Number(t+b);q[A+2]=Number(u-v+a);q[A+3]=Number(x-y+b);q[A+4]=Number(u+a);q[A+5]=Number(x+b);r=u+v;t=x+y}return q},getBoundingBox:function(a,b,c){var d=null;if(null!=a&&null!=b&&0!=b){b=mxUtils.toRadians(b);var d=Math.cos(b),e=Math.sin(b);c=null!=c?c:new mxPoint(a.x+a.width/2,a.y+a.height/2);var f=new mxPoint(a.x,a.y); +b=new mxPoint(a.x+a.width,a.y);var g=new mxPoint(b.x,a.y+a.height);a=new mxPoint(a.x,g.y);f=mxUtils.getRotatedPoint(f,d,e,c);b=mxUtils.getRotatedPoint(b,d,e,c);g=mxUtils.getRotatedPoint(g,d,e,c);a=mxUtils.getRotatedPoint(a,d,e,c);d=new mxRectangle(f.x,f.y,0,0);d.add(new mxRectangle(b.x,b.y,0,0));d.add(new mxRectangle(g.x,g.y,0,0));d.add(new mxRectangle(a.x,a.y,0,0))}return d},getRotatedPoint:function(a,b,c,d){d=null!=d?d:new mxPoint;var e=a.x-d.x;a=a.y-d.y;return new mxPoint(e*b-a*c+d.x,a*b+e*c+d.y)}, +getPortConstraints:function(a,b,c,d){b=mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT,mxUtils.getValue(b.style,c?mxConstants.STYLE_SOURCE_PORT_CONSTRAINT:mxConstants.STYLE_TARGET_PORT_CONSTRAINT,null));if(null==b)return d;d=b.toString();b=mxConstants.DIRECTION_MASK_NONE;c=0;1==mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT_ROTATION,0)&&(c=mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION,0));a=0;45<c?(a=1,135<=c&&(a=2)):-45>c&&(a=3,-135>=c&&(a=2));if(0<=d.indexOf(mxConstants.DIRECTION_NORTH))switch(a){case 0:b|= +mxConstants.DIRECTION_MASK_NORTH;break;case 1:b|=mxConstants.DIRECTION_MASK_EAST;break;case 2:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 3:b|=mxConstants.DIRECTION_MASK_WEST}if(0<=d.indexOf(mxConstants.DIRECTION_WEST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_WEST;break;case 1:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 2:b|=mxConstants.DIRECTION_MASK_EAST;break;case 3:b|=mxConstants.DIRECTION_MASK_SOUTH}if(0<=d.indexOf(mxConstants.DIRECTION_SOUTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_SOUTH; +break;case 1:b|=mxConstants.DIRECTION_MASK_WEST;break;case 2:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 3:b|=mxConstants.DIRECTION_MASK_EAST}if(0<=d.indexOf(mxConstants.DIRECTION_EAST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_EAST;break;case 1:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 2:b|=mxConstants.DIRECTION_MASK_WEST;break;case 3:b|=mxConstants.DIRECTION_MASK_NORTH}return b},reversePortConstraints:function(a){var b;b=(a&mxConstants.DIRECTION_MASK_WEST)<<3;b|=(a&mxConstants.DIRECTION_MASK_NORTH)<< +1;b|=(a&mxConstants.DIRECTION_MASK_SOUTH)>>1;return b|(a&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(a,b,c){var d=-1;if(0<a.absolutePoints.length)for(var e=a.absolutePoints[0],f=null,g=1;g<a.absolutePoints.length;g++){var k=a.absolutePoints[g],e=mxUtils.ptSegDistSq(e.x,e.y,k.x,k.y,b,c);if(null==f||e<f)f=e,d=g-1;e=k}return d},getDirectedBounds:function(a,b,c,d,e){var f=mxUtils.getValue(c,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);d=null!=d?d:mxUtils.getValue(c,mxConstants.STYLE_FLIPH, +!1);e=null!=e?e:mxUtils.getValue(c,mxConstants.STYLE_FLIPV,!1);b.x=Math.round(Math.max(0,Math.min(a.width,b.x)));b.y=Math.round(Math.max(0,Math.min(a.height,b.y)));b.width=Math.round(Math.max(0,Math.min(a.width,b.width)));b.height=Math.round(Math.max(0,Math.min(a.height,b.height)));if(e&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||d&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.x,b.x=b.width,b.width=c;if(d&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)|| +e&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.y,b.y=b.height,b.height=c;d=mxRectangle.fromRectangle(b);f==mxConstants.DIRECTION_SOUTH?(d.y=b.x,d.x=b.height,d.width=b.y,d.height=b.width):f==mxConstants.DIRECTION_WEST?(d.y=b.height,d.x=b.width,d.width=b.x,d.height=b.y):f==mxConstants.DIRECTION_NORTH&&(d.y=b.width,d.x=b.y,d.width=b.height,d.height=b.x);return new mxRectangle(a.x+d.x,a.y+d.y,a.width-d.width-d.x,a.height-d.height-d.y)},getPerimeterPoint:function(a,b,c){for(var d= +null,e=0;e<a.length-1;e++){var f=mxUtils.intersection(a[e].x,a[e].y,a[e+1].x,a[e+1].y,b.x,b.y,c.x,c.y);if(null!=f){var g=c.x-f.x,k=c.y-f.y,f={p:f,distSq:k*k+g*g};null!=f&&(null==d||d.distSq>f.distSq)&&(d=f)}}return null!=d?d.p:null},rectangleIntersectsSegment:function(a,b,c){var d=a.y,e=a.x,f=d+a.height,g=e+a.width;a=b.x;var k=c.x;b.x>c.x&&(a=c.x,k=b.x);k>g&&(k=g);a<e&&(a=e);if(a>k)return!1;var e=b.y,g=c.y,l=c.x-b.x;1E-7<Math.abs(l)&&(c=(c.y-b.y)/l,b=b.y-c*b.x,e=c*a+b,g=c*k+b);e>g&&(b=g,g=e,e=b); +g>f&&(g=f);e<d&&(e=d);return e>g?!1:!0},contains:function(a,b,c){return a.x<=b&&a.x+a.width>=b&&a.y<=c&&a.y+a.height>=c},intersects:function(a,b){var c=a.width,d=a.height,e=b.width,f=b.height;if(0>=e||0>=f||0>=c||0>=d)return!1;var g=a.x,k=a.y,l=b.x,m=b.y,e=e+l,f=f+m,c=c+g,d=d+k;return(e<l||e>g)&&(f<m||f>k)&&(c<g||c>l)&&(d<k||d>m)},intersectsHotspot:function(a,b,c,d,e,f){d=null!=d?d:1;e=null!=e?e:0;f=null!=f?f:0;if(0<d){var g=a.getCenterX(),k=a.getCenterY(),l=a.width,m=a.height,n=mxUtils.getValue(a.style, +mxConstants.STYLE_STARTSIZE)*a.view.scale;0<n&&(mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,!0)?(k=a.y+n/2,m=n):(g=a.x+n/2,l=n));l=Math.max(e,l*d);m=Math.max(e,m*d);0<f&&(l=Math.min(l,f),m=Math.min(m,f));d=new mxRectangle(g-l/2,k-m/2,l,m);g=mxUtils.toRadians(mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION)||0);0!=g&&(e=Math.cos(-g),f=Math.sin(-g),g=new mxPoint(a.getCenterX(),a.getCenterY()),a=mxUtils.getRotatedPoint(new mxPoint(b,c),e,f,g),b=a.x,c=a.y);return mxUtils.contains(d,b,c)}return!0}, +getOffset:function(a,b){for(var c=0,d=0,e=!1,f=a,g=document.body,k=document.documentElement;null!=f&&f!=g&&f!=k&&!e;){var l=mxUtils.getCurrentStyle(f);null!=l&&(e=e||"fixed"==l.position);f=f.parentNode}b||e||(e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),c+=e.x,d+=e.y);e=a.getBoundingClientRect();null!=e&&(c+=e.left,d+=e.top);return new mxPoint(c,d)},getDocumentScrollOrigin:function(a){if(mxClient.IS_QUIRKS)return new mxPoint(a.body.scrollLeft,a.body.scrollTop);a=a.defaultView||a.parentWindow; +return new mxPoint(null!=a&&void 0!==window.pageXOffset?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft,null!=a&&void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop)},getScrollOrigin:function(a,b,c){b=null!=b?b:!1;c=null!=c?c:!0;for(var d=null!=a?a.ownerDocument:document,e=d.body,f=d.documentElement,g=new mxPoint,k=!1;null!=a&&a!=e&&a!=f;){isNaN(a.scrollLeft)||isNaN(a.scrollTop)|| +(g.x+=a.scrollLeft,g.y+=a.scrollTop);var l=mxUtils.getCurrentStyle(a);null!=l&&(k=k||"fixed"==l.position);a=b?a.parentNode:null}!k&&c&&(a=mxUtils.getDocumentScrollOrigin(d),g.x+=a.x,g.y+=a.y);return g},convertPoint:function(a,b,c){var d=mxUtils.getScrollOrigin(a,!1);a=mxUtils.getOffset(a);a.x-=d.x;a.y-=d.y;return new mxPoint(b-a.x,c-a.y)},ltrim:function(a,b){return null!=a?a.replace(new RegExp("^["+(b||"\\s")+"]+","g"),""):null},rtrim:function(a,b){return null!=a?a.replace(new RegExp("["+(b||"\\s")+ +"]+$","g"),""):null},trim:function(a,b){return mxUtils.ltrim(mxUtils.rtrim(a,b),b)},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)&&("string"!=typeof a||0>a.toLowerCase().indexOf("0x"))},isInteger:function(a){return String(parseInt(a))===String(a)},mod:function(a,b){return(a%b+b)%b},intersection:function(a,b,c,d,e,f,g,k){var l=(k-f)*(c-a)-(g-e)*(d-b);g=((g-e)*(b-f)-(k-f)*(a-e))/l;e=((c-a)*(b-f)-(d-b)*(a-e))/l;return 0<=g&&1>=g&&0<=e&&1>=e?new mxPoint(a+g*(c-a),b+g*(d-b)):null},ptSegDistSq:function(a, +b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;0>=e*c+f*d?c=0:(e=c-e,f=d-f,a=e*c+f*d,c=0>=a?0:a*a/(c*c+d*d));e=e*e+f*f-c;0>e&&(e=0);return e},ptLineDist:function(a,b,c,d,e,f){return Math.abs((d-b)*e-(c-a)*f+c*b-d*a)/Math.sqrt((d-b)*(d-b)+(c-a)*(c-a))},relativeCcw:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;a=e*d-f*c;0==a&&(a=e*c+f*d,0<a&&(a=(e-c)*c+(f-d)*d,0>a&&(a=0)));return 0>a?-1:0<a?1:0},animateChanges:function(a,b){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(a,b,c){mxEffects.cascadeOpacity.apply(this, +arguments)},fadeOut:function(a,b,c,d,e,f){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(a,b){mxUtils.isVml(a)?a.style.filter=100<=b?"":"alpha(opacity="+b/5+")":mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?a.style.filter=100<=b?"":"alpha(opacity="+b+")":a.style.opacity=b/100},createImage:function(a){var b;mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?(b=document.createElement(mxClient.VML_PREFIX+":image"),b.setAttribute("src",a),b.style.borderStyle= +"none"):(b=document.createElement("img"),b.setAttribute("src",a),b.setAttribute("border","0"));return b},sortCells:function(a,b){b=null!=b?b:!0;var c=new mxDictionary;a.sort(function(a,e){var d=c.get(a);null==d&&(d=mxCellPath.create(a).split(mxCellPath.PATH_SEPARATOR),c.put(a,d));var g=c.get(e);null==g&&(g=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),c.put(e,g));d=mxCellPath.compare(d,g);return 0==d?0:0<d==b?1:-1});return a},getStylename:function(a){return null!=a&&(a=a.split(";")[0],0>a.indexOf("="))? +a:""},getStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0>a[c].indexOf("=")&&b.push(a[c])}return b},indexOfStylename:function(a,b){if(null!=a&&null!=b)for(var c=a.split(";"),d=0,e=0;e<c.length;e++){if(c[e]==b)return d;d+=c[e].length+1}return-1},addStylename:function(a,b){0>mxUtils.indexOfStylename(a,b)&&(null==a?a="":0<a.length&&";"!=a.charAt(a.length-1)&&(a+=";"),a+=b);return a},removeStylename:function(a,b){var c=[];if(null!=a)for(var d=a.split(";"),e=0;e< +d.length;e++)d[e]!=b&&c.push(d[e]);return c.join(";")},removeAllStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0<=a[c].indexOf("=")&&b.push(a[c])}return b.join(";")},setCellStyles:function(a,b,c,d){if(null!=b&&0<b.length){a.beginUpdate();try{for(var e=0;e<b.length;e++)if(null!=b[e]){var f=mxUtils.setStyle(a.getStyle(b[e]),c,d);a.setStyle(b[e],f)}}finally{a.endUpdate()}}},setStyle:function(a,b,c){var d=null!=c&&("undefined"==typeof c.length||0<c.length);if(null== +a||0==a.length)d&&(a=b+"="+c+";");else if(a.substring(0,b.length+1)==b+"="){var e=a.indexOf(";");a=d?b+"="+c+(0>e?";":a.substring(e)):0>e||e==a.length-1?"":a.substring(e+1)}else{var f=a.indexOf(";"+b+"=");0>f?d&&(d=";"==a.charAt(a.length-1)?"":";",a=a+d+b+"="+c+";"):(e=a.indexOf(";",f+1),a=d?a.substring(0,f+1)+b+"="+c+(0>e?";":a.substring(e)):a.substring(0,f)+(0>e?";":a.substring(e)))}return a},setCellStyleFlags:function(a,b,c,d,e){if(null!=b&&0<b.length){a.beginUpdate();try{for(var f=0;f<b.length;f++)if(null!= +b[f]){var g=mxUtils.setStyleFlag(a.getStyle(b[f]),c,d,e);a.setStyle(b[f],g)}}finally{a.endUpdate()}}},setStyleFlag:function(a,b,c,d){if(null==a||0==a.length)a=d||null==d?b+"="+c:b+"=0";else{var e=a.indexOf(b+"=");if(0>e)e=";"==a.charAt(a.length-1)?"":";",a=d||null==d?a+e+b+"="+c:a+e+b+"=0";else{var f=a.indexOf(";",e),g;g=0>f?a.substring(e+b.length+1):a.substring(e+b.length+1,f);g=null==d?parseInt(g)^c:d?parseInt(g)|c:parseInt(g)&~c;a=a.substring(0,e)+b+"="+g+(0<=f?a.substring(f):"")}}return a},getAlignmentAsPoint:function(a, +b){var c=0,d=0;a==mxConstants.ALIGN_CENTER?c=-.5:a==mxConstants.ALIGN_RIGHT&&(c=-1);b==mxConstants.ALIGN_MIDDLE?d=-.5:b==mxConstants.ALIGN_BOTTOM&&(d=-1);return new mxPoint(c,d)},getSizeForString:function(a,b,c,d){b=null!=b?b:mxConstants.DEFAULT_FONTSIZE;c=null!=c?c:mxConstants.DEFAULT_FONTFAMILY;var e=document.createElement("div");e.style.fontFamily=c;e.style.fontSize=Math.round(b)+"px";e.style.lineHeight=Math.round(b*mxConstants.LINE_HEIGHT)+"px";e.style.position="absolute";e.style.visibility="hidden"; +e.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";e.style.zoom="1";null!=d?(e.style.width=d+"px",e.style.whiteSpace="normal"):e.style.whiteSpace="nowrap";e.innerHTML=a;document.body.appendChild(e);a=new mxRectangle(0,0,e.offsetWidth,e.offsetHeight);document.body.removeChild(e);return a},getViewXml:function(a,b,c,d,e){d=null!=d?d:0;e=null!=e?e:0;b=null!=b?b:1;null==c&&(c=[a.getModel().getRoot()]);var f=a.getView(),g=null,k=f.isEventsEnabled();f.setEventsEnabled(!1);var l=f.drawPane,m=f.overlayPane; +a.dialect==mxConstants.DIALECT_SVG?(f.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),f.canvas.appendChild(f.drawPane),f.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(f.drawPane=f.drawPane.cloneNode(!1),f.canvas.appendChild(f.drawPane),f.overlayPane=f.overlayPane.cloneNode(!1));f.canvas.appendChild(f.overlayPane);var n=f.getTranslate();f.translate=new mxPoint(d,e);b=new mxTemporaryCellStates(a.getView(),b,c);try{g=(new mxCodec).encode(a.getView())}finally{b.destroy(),f.translate= +n,f.canvas.removeChild(f.drawPane),f.canvas.removeChild(f.overlayPane),f.drawPane=l,f.overlayPane=m,f.setEventsEnabled(k)}return g},getScaleForPageCount:function(a,b,c,d){if(1>a)return 1;c=null!=c?c:mxConstants.PAGE_FORMAT_A4_PORTRAIT;d=null!=d?d:0;var e=c.width-2*d;c=c.height-2*d;d=b.getGraphBounds().clone();b=b.getView().getScale();d.width/=b;d.height/=b;b=d.width;var f=Math.sqrt(a);d=Math.sqrt(b/d.height/(e/c));c=f*d;d=f/d;if(1>c&&d>a){var g=d/a;d=a;c/=g}1>d&&c>a&&(g=c/a,c=a,d/=g);g=Math.ceil(c)* +Math.ceil(d);for(f=0;g>a;){var g=Math.floor(c)/c,k=Math.floor(d)/d;1==g&&(g=Math.floor(c-1)/c);1==k&&(k=Math.floor(d-1)/d);g=g>k?g:k;c*=g;d*=g;g=Math.ceil(c)*Math.ceil(d);f++;if(10<f)break}return e*c/b*.99999},show:function(a,b,c,d,e,f){c=null!=c?c:0;d=null!=d?d:0;null==b?b=window.open().document:b.open();9==document.documentMode&&b.writeln('\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=9"><![endif]--\x3e');var g=a.getGraphBounds(),k=Math.ceil(c-g.x),l=Math.ceil(d-g.y);null==e&&(e= +Math.ceil(g.width+c)+Math.ceil(Math.ceil(g.x)-g.x));null==f&&(f=Math.ceil(g.height+d)+Math.ceil(Math.ceil(g.y)-g.y));if(mxClient.IS_IE||11==document.documentMode){d="<html><head>";g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)d+=g[c].outerHTML;d+="<style>";for(c=0;c<document.styleSheets.length;c++)try{d+=document.styleSheets[c].cssText}catch(m){}d=d+'</style></head><body style="margin:0px;">'+('<div style="position:absolute;overflow:hidden;width:'+e+"px;height:"+f+'px;"><div style="position:relative;left:'+ +k+"px;top:"+l+'px;">')+a.container.innerHTML;b.writeln(d+"</div></div></body><html>");b.close()}else{b.writeln("<html><head>");g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)b.writeln(mxUtils.getOuterHtml(g[c]));d=document.getElementsByTagName("link");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));d=document.getElementsByTagName("style");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));b.writeln('</head><body style="margin:0px;"></body></html>');b.close(); +c=b.createElement("div");c.position="absolute";c.overflow="hidden";c.style.width=e+"px";c.style.height=f+"px";e=b.createElement("div");e.style.position="absolute";e.style.left=k+"px";e.style.top=l+"px";f=a.container.firstChild;for(d=null;null!=f;)g=f.cloneNode(!0),f==a.view.drawPane.ownerSVGElement?(c.appendChild(g),d=g):e.appendChild(g),f=f.nextSibling;b.body.appendChild(c);null!=e.firstChild&&b.body.appendChild(e);null!=d&&(d.style.minWidth="",d.style.minHeight="",d.firstChild.setAttribute("transform", +"translate("+k+","+l+")"))}mxUtils.removeCursors(b.body);return b},printScreen:function(a){var b=window.open();a.getGraphBounds();mxUtils.show(a,b.document);a=function(){b.focus();b.print();b.close()};mxClient.IS_GC?b.setTimeout(a,500):a()},popup:function(a,b){if(b){var c=document.createElement("div");c.style.overflow="scroll";c.style.width="636px";c.style.height="460px";var d=document.createElement("pre");d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g," ");c.appendChild(d); +c=new mxWindow("Popup Window",c,document.body.clientWidth/2-320,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight)/2-240,640,480,!1,!0);c.setClosable(!0);c.setVisible(!0)}else mxClient.IS_NS?(c=window.open(),c.document.writeln("<pre>"+mxUtils.htmlEntities(a)+"</pre"),c.document.close()):(c=window.open(),d=c.document.createElement("pre"),d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g," "),c.document.body.appendChild(d))},alert:function(a){alert(a)}, +prompt:function(a,b){return prompt(a,null!=b?b:"")},confirm:function(a){return confirm(a)},error:function(a,b,c,d){var e=document.createElement("div");e.style.padding="20px";var f=document.createElement("img");f.setAttribute("src",d||mxUtils.errorImage);f.setAttribute("valign","bottom");f.style.verticalAlign="middle";e.appendChild(f);e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));mxUtils.write(e,a);a=document.body.clientWidth; +d=document.body.clientHeight||document.documentElement.clientHeight;var g=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,e,(a-b)/2,d/4,b,null,!1,!0);c&&(mxUtils.br(e),b=document.createElement("p"),c=document.createElement("button"),mxClient.IS_IE?c.style.cssText="float:right":c.setAttribute("style","float:right"),mxEvent.addListener(c,"click",function(a){g.destroy()}),mxUtils.write(c,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),b.appendChild(c),e.appendChild(b), +mxUtils.br(e),g.setClosable(!0));g.setVisible(!0);return g},makeDraggable:function(a,b,c,d,e,f,g,k,l,m){a=new mxDragSource(a,c);a.dragOffset=new mxPoint(null!=e?e:0,null!=f?f:mxConstants.TOOLTIP_VERTICAL_OFFSET);a.autoscroll=g;a.setGuidesEnabled(!1);null!=l&&(a.highlightDropTargets=l);null!=m&&(a.getDropTarget=m);a.getGraphForEvent=function(a){return"function"==typeof b?b(a):b};null!=d&&(a.createDragElement=function(){return d.cloneNode(!0)},k&&(a.createPreviewElement=function(a){var b=d.cloneNode(!0), +c=parseInt(b.style.width),e=parseInt(b.style.height);b.style.width=Math.round(c*a.view.scale)+"px";b.style.height=Math.round(e*a.view.scale)+"px";return b}));return a}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml", NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",VML_SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",OUTLINE_HIGHLIGHT_COLOR:"#00FF00", OUTLINE_HIGHLIGHT_STROKEWIDTH:5,HIGHLIGHT_STROKEWIDTH:3,HIGHLIGHT_SIZE:2,HIGHLIGHT_OPACITY:100,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_TERMINAL_HANDLE:"pointer",CURSOR_BEND_HANDLE:"crosshair",CURSOR_VIRTUAL_BEND_HANDLE:"crosshair",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00", VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:6,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF", @@ -1194,7 +1194,8 @@ mxGraph.prototype.createTooltipHandler=function(){return new mxTooltipHandler(th mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)};mxGraph.prototype.createStylesheet=function(){return new mxStylesheet};mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)};mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer};mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)};mxGraph.prototype.getModel=function(){return this.model};mxGraph.prototype.getView=function(){return this.view}; mxGraph.prototype.getStylesheet=function(){return this.stylesheet};mxGraph.prototype.setStylesheet=function(a){this.stylesheet=a};mxGraph.prototype.getSelectionModel=function(){return this.selectionModel};mxGraph.prototype.setSelectionModel=function(a){this.selectionModel=a}; mxGraph.prototype.getSelectionCellsForChanges=function(a){for(var b=new mxDictionary,c=[],d=mxUtils.bind(this,function(a){if(!b.get(a)&&this.model.contains(a))if(this.model.isEdge(a)||this.model.isVertex(a))b.put(a,!0),c.push(a);else for(var e=this.model.getChildCount(a),f=0;f<e;f++)d(this.model.getChildAt(a,f))}),e=0;e<a.length;e++){var f=a[e];if(f.constructor!=mxRootChange){var g=null;f instanceof mxChildChange?g=f.child:null!=f.cell&&f.cell instanceof mxCell&&(g=f.cell);null!=g&&d(g)}}return c}; -mxGraph.prototype.graphModelChanged=function(a){for(var b=0;b<a.length;b++)this.processChange(a[b]);this.updateSelection();this.view.validate();this.sizeDidChange()};mxGraph.prototype.updateSelection=function(){for(var a=this.getSelectionCells(),b=[],c=0;c<a.length;c++)if(this.model.contains(a[c]))for(var d=this.model.getParent(a[c]);null!=d&&d!=this.view.currentRoot;){if(this.isCellCollapsed(d)||!this.isCellVisible(d)){b.push(a[c]);break}d=this.model.getParent(d)}else b.push(a[c]);this.removeSelectionCells(b)}; +mxGraph.prototype.graphModelChanged=function(a){for(var b=0;b<a.length;b++)this.processChange(a[b]);this.updateSelection();this.view.validate();this.sizeDidChange()}; +mxGraph.prototype.updateSelection=function(){for(var a=this.getSelectionCells(),b=[],c=0;c<a.length;c++)if(this.model.contains(a[c])&&this.isCellVisible(a[c]))for(var d=this.model.getParent(a[c]);null!=d&&d!=this.view.currentRoot;){if(this.isCellCollapsed(d)||!this.isCellVisible(d)){b.push(a[c]);break}d=this.model.getParent(d)}else b.push(a[c]);this.removeSelectionCells(b)}; mxGraph.prototype.processChange=function(a){if(a instanceof mxRootChange)this.clearSelection(),this.setDefaultParent(null),this.removeStateForCell(a.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(a instanceof mxChildChange){var b=this.model.getParent(a.child);this.view.invalidate(a.child,!0,!0);if(!this.model.contains(b)||this.isCellCollapsed(b))this.view.invalidate(a.child,!0,!0),this.removeStateForCell(a.child), this.view.currentRoot==a.child&&this.home();b!=a.previous&&(null!=b&&this.view.invalidate(b,!1,!1),null!=a.previous&&this.view.invalidate(a.previous,!1,!1))}else a instanceof mxTerminalChange||a instanceof mxGeometryChange?(a instanceof mxTerminalChange||null==a.previous&&null!=a.geometry||null!=a.previous&&!a.previous.equals(a.geometry))&&this.view.invalidate(a.cell):a instanceof mxValueChange?this.view.invalidate(a.cell,!1,!1):a instanceof mxStyleChange?(this.view.invalidate(a.cell,!0,!0),a=this.view.getState(a.cell), null!=a&&(a.style=null)):null!=a.cell&&a.cell instanceof mxCell&&this.removeStateForCell(a.cell)};mxGraph.prototype.removeStateForCell=function(a){for(var b=this.model.getChildCount(a),c=0;c<b;c++)this.removeStateForCell(this.model.getChildAt(a,c));this.view.invalidate(a,!1,!0);this.view.removeState(a)}; @@ -1244,17 +1245,17 @@ mxGraph.prototype.updateGroupBounds=function(a,b,c,d,e,f,g){null==a&&(a=this.get r.height;l=l.clone();c&&(l.x=Math.round(l.x+n.x-b-p-g),l.y=Math.round(l.y+n.y-b-q-d));l.width=Math.round(n.width+2*b+p+g+e);l.height=Math.round(n.height+2*b+q+d+f);this.model.setGeometry(a[k],l);this.moveCells(m,b+p-n.x+g,b+q-n.y+d)}}}}}finally{this.model.endUpdate()}return a}; mxGraph.prototype.getBoundingBox=function(a){var b=null;if(null!=a&&0<a.length)for(var c=0;c<a.length;c++)if(this.model.isVertex(a[c])||this.model.isEdge(a[c])){var d=this.view.getBoundingBox(this.view.getState(a[c]),!0);null!=d&&(null==b?b=mxRectangle.fromRectangle(d):b.add(d))}return b};mxGraph.prototype.cloneCell=function(a,b,c,d){return this.cloneCells([a],b,c,d)[0]}; mxGraph.prototype.cloneCells=function(a,b,c,d){b=null!=b?b:!0;var e=null;if(null!=a){for(var f=new mxDictionary,e=[],g=0;g<a.length;g++)f.put(a[g],!0),e.push(a[g]);if(0<e.length)for(var k=this.view.scale,l=this.view.translate,e=this.model.cloneCells(a,!0,c),g=0;g<a.length;g++)if(!b&&this.model.isEdge(e[g])&&null!=this.getEdgeValidationError(e[g],this.model.getTerminal(e[g],!0),this.model.getTerminal(e[g],!1)))e[g]=null;else{var m=this.model.getGeometry(e[g]);if(null!=m){var n=this.view.getState(a[g]), -p=this.view.getState(this.model.getParent(a[g]));if(null!=n&&null!=p)if(c=d?0:p.origin.x,p=d?0:p.origin.y,this.model.isEdge(e[g])){for(var n=n.absolutePoints,q=this.model.getTerminal(a[g],!0);null!=q&&!f.get(q);)q=this.model.getParent(q);null==q&&m.setTerminalPoint(new mxPoint(n[0].x/k-l.x,n[0].y/k-l.y),!0);for(q=this.model.getTerminal(a[g],!1);null!=q&&!f.get(q);)q=this.model.getParent(q);null==q&&(q=n.length-1,m.setTerminalPoint(new mxPoint(n[q].x/k-l.x,n[q].y/k-l.y),!1));m=m.points;if(null!=m)for(n= -0;n<m.length;n++)m[n].x+=c,m[n].y+=p}else m.translate(c,p)}}else e=[]}return e};mxGraph.prototype.insertVertex=function(a,b,c,d,e,f,g,k,l){b=this.createVertex(a,b,c,d,e,f,g,k,l);return this.addCell(b,a)};mxGraph.prototype.createVertex=function(a,b,c,d,e,f,g,k,l){a=new mxGeometry(d,e,f,g);a.relative=null!=l?l:!1;c=new mxCell(c,a,k);c.setId(b);c.setVertex(!0);c.setConnectable(!0);return c};mxGraph.prototype.insertEdge=function(a,b,c,d,e,f){b=this.createEdge(a,b,c,d,e,f);return this.addEdge(b,a,d,e)}; -mxGraph.prototype.createEdge=function(a,b,c,d,e,f){a=new mxCell(c,new mxGeometry,f);a.setId(b);a.setEdge(!0);a.geometry.relative=!0;return a};mxGraph.prototype.addEdge=function(a,b,c,d,e){return this.addCell(a,b,e,c,d)};mxGraph.prototype.addCell=function(a,b,c,d,e){return this.addCells([a],b,c,d,e)[0]}; +p=this.view.getState(this.model.getParent(a[g]));if(null!=n&&null!=p)if(c=d?0:p.origin.x,p=d?0:p.origin.y,this.model.isEdge(e[g])){if(n=n.absolutePoints,null!=n){for(var q=this.model.getTerminal(a[g],!0);null!=q&&!f.get(q);)q=this.model.getParent(q);null==q&&m.setTerminalPoint(new mxPoint(n[0].x/k-l.x,n[0].y/k-l.y),!0);for(q=this.model.getTerminal(a[g],!1);null!=q&&!f.get(q);)q=this.model.getParent(q);null==q&&(q=n.length-1,m.setTerminalPoint(new mxPoint(n[q].x/k-l.x,n[q].y/k-l.y),!1));m=m.points; +if(null!=m)for(n=0;n<m.length;n++)m[n].x+=c,m[n].y+=p}}else m.translate(c,p)}}else e=[]}return e};mxGraph.prototype.insertVertex=function(a,b,c,d,e,f,g,k,l){b=this.createVertex(a,b,c,d,e,f,g,k,l);return this.addCell(b,a)};mxGraph.prototype.createVertex=function(a,b,c,d,e,f,g,k,l){a=new mxGeometry(d,e,f,g);a.relative=null!=l?l:!1;c=new mxCell(c,a,k);c.setId(b);c.setVertex(!0);c.setConnectable(!0);return c}; +mxGraph.prototype.insertEdge=function(a,b,c,d,e,f){b=this.createEdge(a,b,c,d,e,f);return this.addEdge(b,a,d,e)};mxGraph.prototype.createEdge=function(a,b,c,d,e,f){a=new mxCell(c,new mxGeometry,f);a.setId(b);a.setEdge(!0);a.geometry.relative=!0;return a};mxGraph.prototype.addEdge=function(a,b,c,d,e){return this.addCell(a,b,e,c,d)};mxGraph.prototype.addCell=function(a,b,c,d,e){return this.addCells([a],b,c,d,e)[0]}; mxGraph.prototype.addCells=function(a,b,c,d,e){null==b&&(b=this.getDefaultParent());null==c&&(c=this.model.getChildCount(b));this.model.beginUpdate();try{this.cellsAdded(a,b,c,d,e,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",a,"parent",b,"index",c,"source",d,"target",e))}finally{this.model.endUpdate()}return a}; mxGraph.prototype.cellsAdded=function(a,b,c,d,e,f,g,k){if(null!=a&&null!=b&&null!=c){this.model.beginUpdate();try{for(var l=f?this.view.getState(b):null,m=null!=l?l.origin:null,n=new mxPoint(0,0),l=0;l<a.length;l++)if(null==a[l])c--;else{var p=this.model.getParent(a[l]);if(null!=m&&a[l]!=b&&b!=p){var q=this.view.getState(p),r=null!=q?q.origin:n,t=this.model.getGeometry(a[l]);if(null!=t){var u=r.x-m.x,x=r.y-m.y,t=t.clone();t.translate(u,x);t.relative||!this.model.isVertex(a[l])||this.isAllowNegativeCoordinates()|| (t.x=Math.max(0,t.x),t.y=Math.max(0,t.y));this.model.setGeometry(a[l],t)}}b==p&&c+l>this.model.getChildCount(b)&&c--;this.model.add(b,a[l],c+l);this.autoSizeCellsOnAdd&&this.autoSizeCell(a[l],!0);(null==k||k)&&this.isExtendParentsOnAdd(a[l])&&this.isExtendParent(a[l])&&this.extendParent(a[l]);(null==g||g)&&this.constrainChild(a[l]);null!=d&&this.cellConnected(a[l],d,!0);null!=e&&this.cellConnected(a[l],e,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",a,"parent",b,"index",c,"source", d,"target",e,"absolute",f))}finally{this.model.endUpdate()}}};mxGraph.prototype.autoSizeCell=function(a,b){if(null!=b?b:1)for(var c=this.model.getChildCount(a),d=0;d<c;d++)this.autoSizeCell(this.model.getChildAt(a,d));this.getModel().isVertex(a)&&this.isAutoSizeCell(a)&&this.updateCellSize(a)}; mxGraph.prototype.removeCells=function(a,b){b=null!=b?b:!0;null==a&&(a=this.getDeletableCells(this.getSelectionCells()));if(b)a=this.getDeletableCells(this.addAllEdges(a));else{a=a.slice();for(var c=this.getDeletableCells(this.getAllEdges(a)),d=new mxDictionary,e=0;e<a.length;e++)d.put(a[e],!0);for(e=0;e<c.length;e++)null!=this.view.getState(c[e])||d.get(c[e])||(d.put(c[e],!0),a.push(c[e]))}this.model.beginUpdate();try{this.cellsRemoved(a),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells", a,"includeEdges",b))}finally{this.model.endUpdate()}return a}; -mxGraph.prototype.cellsRemoved=function(a){if(null!=a&&0<a.length){var b=this.view.scale,c=this.view.translate;this.model.beginUpdate();try{for(var d=new mxDictionary,e=0;e<a.length;e++)d.put(a[e],!0);for(e=0;e<a.length;e++){for(var f=this.getAllEdges([a[e]]),g=mxUtils.bind(this,function(d,f){var g=this.model.getGeometry(d);if(null!=g){for(var k=this.model.getTerminal(d,f),l=!1,m=k;null!=m;){if(a[e]==m){l=!0;break}m=this.model.getParent(m)}l&&(g=g.clone(),l=this.view.getState(d),null!=l?(k=l.absolutePoints, -m=f?0:k.length-1,g.setTerminalPoint(new mxPoint(k[m].x/b-c.x-l.origin.x,k[m].y/b-c.y-l.origin.y),f)):(k=this.view.getState(k),null!=k&&g.setTerminalPoint(new mxPoint(k.getCenterX()/b-c.x,k.getCenterY()/b-c.y),f)),this.model.setGeometry(d,g),this.model.setTerminal(d,null,f))}}),k=0;k<f.length;k++)d.get(f[k])||(d.put(f[k],!0),g(f[k],!0),g(f[k],!1));this.model.remove(a[e])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",a))}finally{this.model.endUpdate()}}}; +mxGraph.prototype.cellsRemoved=function(a){if(null!=a&&0<a.length){var b=this.view.scale,c=this.view.translate;this.model.beginUpdate();try{for(var d=new mxDictionary,e=0;e<a.length;e++)d.put(a[e],!0);for(e=0;e<a.length;e++){for(var f=this.getAllEdges([a[e]]),g=mxUtils.bind(this,function(d,f){var g=this.model.getGeometry(d);if(null!=g){for(var k=this.model.getTerminal(d,f),l=!1,m=k;null!=m;){if(a[e]==m){l=!0;break}m=this.model.getParent(m)}l&&(g=g.clone(),l=this.view.getState(d),null!=l&&null!=l.absolutePoints? +(k=l.absolutePoints,m=f?0:k.length-1,g.setTerminalPoint(new mxPoint(k[m].x/b-c.x-l.origin.x,k[m].y/b-c.y-l.origin.y),f)):(k=this.view.getState(k),null!=k&&g.setTerminalPoint(new mxPoint(k.getCenterX()/b-c.x,k.getCenterY()/b-c.y),f)),this.model.setGeometry(d,g),this.model.setTerminal(d,null,f))}}),k=0;k<f.length;k++)d.get(f[k])||(d.put(f[k],!0),g(f[k],!0),g(f[k],!1));this.model.remove(a[e])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",a))}finally{this.model.endUpdate()}}}; mxGraph.prototype.splitEdge=function(a,b,c,d,e){d=d||0;e=e||0;var f=this.model.getParent(a),g=this.model.getTerminal(a,!0);this.model.beginUpdate();try{if(null==c){c=this.cloneCell(a);var k=this.view.getState(a),l=this.getCellGeometry(c);if(null!=l&&null!=l.points&&null!=k){var m=this.view.translate,n=this.view.scale,p=mxUtils.findNearestSegment(k,(d+m.x)*n,(e+m.y)*n);l.points=l.points.slice(0,p);l=this.getCellGeometry(a);null!=l&&null!=l.points&&(l=l.clone(),l.points=l.points.slice(p),this.model.setGeometry(a, l))}}this.cellsMoved(b,d,e,!1,!1);this.cellsAdded(b,f,this.model.getChildCount(f),null,null,!0);this.cellsAdded([c],f,this.model.getChildCount(f),g,b[0],!1);this.cellConnected(a,b[0],!0);this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",a,"cells",b,"newEdge",c,"dx",d,"dy",e))}finally{this.model.endUpdate()}return c}; mxGraph.prototype.toggleCells=function(a,b,c){null==b&&(b=this.getSelectionCells());c&&(b=this.addAllEdges(b));this.model.beginUpdate();try{this.cellsToggled(b,a),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",a,"cells",b,"includeEdges",c))}finally{this.model.endUpdate()}return b};mxGraph.prototype.cellsToggled=function(a,b){if(null!=a&&0<a.length){this.model.beginUpdate();try{for(var c=0;c<a.length;c++)this.model.setVisible(a[c],b)}finally{this.model.endUpdate()}}}; @@ -1895,8 +1896,9 @@ mxObjectCodec.prototype.afterEncode=function(a,b,c){return c};mxObjectCodec.prot mxObjectCodec.prototype.decodeAttributes=function(a,b,c){b=b.attributes;if(null!=b)for(var d=0;d<b.length;d++)this.decodeAttribute(a,b[d],c)};mxObjectCodec.prototype.isIgnoredAttribute=function(a,b,c){return"as"==b.nodeName||"id"==b.nodeName}; mxObjectCodec.prototype.decodeAttribute=function(a,b,c){if(!this.isIgnoredAttribute(a,b,c)){var d=b.nodeName;b=this.convertAttributeFromXml(a,b,c);var e=this.getFieldName(d);if(this.isReference(c,e,b,!1)){a=a.getObject(b);if(null==a){mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+d+"="+b);return}b=a}this.isExcluded(c,d,b,!1)||(c[d]=b)}}; mxObjectCodec.prototype.decodeChildren=function(a,b,c){for(b=b.firstChild;null!=b;){var d=b.nextSibling;b.nodeType!=mxConstants.NODETYPE_ELEMENT||this.processInclude(a,b,c)||this.decodeChild(a,b,c);b=d}}; -mxObjectCodec.prototype.decodeChild=function(a,b,c){var d=this.getFieldName(b.getAttribute("as"));if(null==d||!this.isExcluded(c,d,b,!1)){var e=this.getFieldTemplate(c,d,b);"add"==b.nodeName?(a=b.getAttribute("value"),null==a&&mxObjectCodec.allowEval&&(a=mxUtils.eval(mxUtils.getTextContent(b)))):a=a.decode(b,e);this.addObjectValue(c,d,a,e)}};mxObjectCodec.prototype.getFieldTemplate=function(a,b,c){a=a[b];a instanceof Array&&0<a.length&&(a=null);return a}; -mxObjectCodec.prototype.addObjectValue=function(a,b,c,d){null!=c&&c!=d&&(null!=b&&0<b.length?a[b]=c:a.push(c))};mxObjectCodec.prototype.processInclude=function(a,b,c){if("include"==b.nodeName){b=b.getAttribute("name");if(null!=b)try{var d=mxUtils.load(b).getDocumentElement();null!=d&&a.decode(d,c)}catch(e){}return!0}return!1};mxObjectCodec.prototype.beforeDecode=function(a,b,c){return b};mxObjectCodec.prototype.afterDecode=function(a,b,c){return c}; +mxObjectCodec.prototype.decodeChild=function(a,b,c){var d=this.getFieldName(b.getAttribute("as"));if(null==d||!this.isExcluded(c,d,b,!1)){var e=this.getFieldTemplate(c,d,b);"add"==b.nodeName?(a=b.getAttribute("value"),null==a&&mxObjectCodec.allowEval&&(a=mxUtils.eval(mxUtils.getTextContent(b)))):a=a.decode(b,e);try{this.addObjectValue(c,d,a,e)}catch(f){throw Error(f.message+" for "+b.nodeName);}}}; +mxObjectCodec.prototype.getFieldTemplate=function(a,b,c){a=a[b];a instanceof Array&&0<a.length&&(a=null);return a};mxObjectCodec.prototype.addObjectValue=function(a,b,c,d){null!=c&&c!=d&&(null!=b&&0<b.length?a[b]=c:a.push(c))};mxObjectCodec.prototype.processInclude=function(a,b,c){if("include"==b.nodeName){b=b.getAttribute("name");if(null!=b)try{var d=mxUtils.load(b).getDocumentElement();null!=d&&a.decode(d,c)}catch(e){}return!0}return!1};mxObjectCodec.prototype.beforeDecode=function(a,b,c){return b}; +mxObjectCodec.prototype.afterDecode=function(a,b,c){return c}; mxCodecRegistry.register(function(){var a=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);a.isCellCodec=function(){return!0};a.isNumericAttribute=function(a,c,d){return"value"!==c.nodeName&&mxObjectCodec.prototype.isNumericAttribute.apply(this,arguments)};a.isExcluded=function(a,c,d,e){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||e&&"value"==c&&d.nodeType==mxConstants.NODETYPE_ELEMENT};a.afterEncode=function(a,c,d){if(null!= c.value&&c.value.nodeType==mxConstants.NODETYPE_ELEMENT){var b=d;d=mxUtils.importNode(a.document,c.value,!0);d.appendChild(b);a=b.getAttribute("id");d.setAttribute("id",a);b.removeAttribute("id")}return d};a.beforeDecode=function(a,c,d){var b=c.cloneNode(!0),f=this.getName();c.nodeName!=f?(b=c.getElementsByTagName(f)[0],null!=b&&b.parentNode==c?(mxUtils.removeWhitespace(b,!0),mxUtils.removeWhitespace(b,!1),b.parentNode.removeChild(b)):b=null,d.value=c.cloneNode(!0),c=d.value.getAttribute("id"),null!= c&&(d.setId(c),d.value.removeAttribute("id"))):d.setId(c.getAttribute("id"));if(null!=b)for(c=0;c<this.idrefs.length;c++){var f=this.idrefs[c],g=b.getAttribute(f);if(null!=g){b.removeAttribute(f);var k=a.objects[g]||a.lookup(g);null==k&&(g=a.getElementById(g),null!=g&&(k=(mxCodecRegistry.codecs[g.nodeName]||this).decode(a,g)));d[f]=k}}return b};return a}()); @@ -1961,8 +1963,8 @@ x.style.color=.5>.213*this.rgb[0]+.715*this.rgb[1]+.072*this.rgb[2]?"#FFF":"#000 this.rgb[1]=b;var e=null===c?this.rgb[2]:this.rgb[2]=c,f=Math.min(Math.min(a,b),e);c=Math.max(Math.max(a,b),e);var g=c-f;0===g?a=[null,0,c]:(a=a===f?3+(e-b)/g:b===f?5+(a-e)/g:1+(b-a)/g,a=[6===a?0:a,g/c,c]);null!==a[0]&&(this.hsv[0]=a[0]);0!==a[2]&&(this.hsv[1]=a[1]);this.hsv[2]=a[2];this.exportColor(d)};this.fromString=function(a,b){var c=a.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i);return c?(6===c[1].length?this.fromRGB(parseInt(c[1].substr(0,2),16)/255,parseInt(c[1].substr(2,2),16)/255,parseInt(c[1].substr(4, 2),16)/255,b):this.fromRGB(parseInt(c[1].charAt(0)+c[1].charAt(0),16)/255,parseInt(c[1].charAt(1)+c[1].charAt(1),16)/255,parseInt(c[1].charAt(2)+c[1].charAt(2),16)/255,b),!0):!1};this.toString=function(){return(256|Math.round(255*this.rgb[0])).toString(16).substr(1)+(256|Math.round(255*this.rgb[1])).toString(16).substr(1)+(256|Math.round(255*this.rgb[2])).toString(16).substr(1)};var r=this,t="hvs"===this.pickerMode.toLowerCase()?1:0,u=jscolor.fetchElement(this.valueElement),x=jscolor.fetchElement(this.styleElement), y=!1,A=!1,z=1,v=2,B=4,C=8;u&&(q=function(){r.fromString(u.value,z);p()},jscolor.addEvent(u,"keyup",q),jscolor.addEvent(u,"input",q),jscolor.addEvent(u,"blur",l),u.setAttribute("autocomplete","off"));x&&(x.jscStyle={backgroundImage:x.style.backgroundImage,backgroundColor:x.style.backgroundColor,color:x.style.color});switch(t){case 0:jscolor.requireImage("hs.png");break;case 1:jscolor.requireImage("hv.png")}this.importColor()}};jscolor.install(); -Editor=function(a,b,f,d,k){mxEventSource.call(this);this.chromeless=null!=a?a:this.chromeless;this.initStencilRegistry();this.graph=d||this.createGraph(b,f);this.editable=null!=k?k:!a;this.undoManager=this.createUndoManager();this.status="";this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[Editor.pageCounter])+".xml"};this.getFilename=function(){return this.filename};this.setStatus=function(a){this.status=a;this.fireEvent(new mxEventObject("statusChanged"))};this.getStatus= -function(){return this.status};this.graphChangeListener=function(a,b){var d=null!=b?b.getProperty("edit"):null;null!=d&&d.ignoreEdit||this.setModified(!0)};this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)}));this.graph.resetViewOnRootChange=!1;this.init()};Editor.pageCounter=0; +Editor=function(a,b,e,c,k){mxEventSource.call(this);this.chromeless=null!=a?a:this.chromeless;this.initStencilRegistry();this.graph=c||this.createGraph(b,e);this.editable=null!=k?k:!a;this.undoManager=this.createUndoManager();this.status="";this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[Editor.pageCounter])+".xml"};this.getFilename=function(){return this.filename};this.setStatus=function(a){this.status=a;this.fireEvent(new mxEventObject("statusChanged"))};this.getStatus= +function(){return this.status};this.graphChangeListener=function(a,b){var c=null!=b?b.getProperty("edit"):null;null!=c&&c.ignoreEdit||this.setModified(!0)};this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)}));this.graph.resetViewOnRootChange=!1;this.init()};Editor.pageCounter=0; (function(){try{for(var a=window;null!=a.opener&&"undefined"!==typeof a.opener.Editor&&!isNaN(a.opener.Editor.pageCounter)&&a.opener!=a;)a=a.opener;null!=a&&(a.Editor.pageCounter++,Editor.pageCounter=a.Editor.pageCounter)}catch(b){}})();Editor.useLocalStorage="undefined"!=typeof Storage&&mxClient.IS_IOS; Editor.helpImage=mxClient.IS_SVG?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBmaWxsPSJub25lIiBkPSJNMCAwaDI0djI0SDB6Ii8+PHBhdGggZD0iTTExIDE4aDJ2LTJoLTJ2MnptMS0xNkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTAtMTRjLTIuMjEgMC00IDEuNzktNCA0aDJjMC0xLjEuOS0yIDItMnMyIC45IDIgMmMwIDItMyAxLjc1LTMgNWgyYzAtMi4yNSAzLTIuNSAzLTUgMC0yLjIxLTEuNzktNC00LTR6Ii8+PC9zdmc+":IMAGE_PATH+ "/help.png"; @@ -1980,31 +1982,31 @@ Editor.closeLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCA Editor.editLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAgVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9d3yJTAAAAKnRSTlMA+hzi3nRQWyXzkm0h2j3u54gzEgSXjlYoTBgJxL2loGpAOS3Jt7Wxm35Ga7gRAAAA6UlEQVQ4y63Q2XaCMBSF4Q0JBasoQ5DJqbXjfv8HbCK2BZNwo/8FXHx7rcMC7lQu0iX8qU/qtvAWCpoqH8dYzS0SwaV5eK/UAf8X9pd2CWKzuF5Jrftp1owXwnIGLUaL3PYndOHf4kNNXWrXK/m7CHunk7K8LE6YtBpcknwG9GKxnroY+ylBXcx4xKyx/u/EuXi509cP9V7OO1oyHnzrdFTcqLG/4ibBA5pIMr/4xvKzuQDkVy9wW8SgBFD6HDvuzMvrZcC9QlkfMzI7w64m+b4PqBMNHB05lH21PVxJo2/fBXxV4hB38PcD+5AkI4FuETsAAAAASUVORK5CYII="; Editor.previousLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAPFBMVEUAAAD////////////////////////////////////////////////////////////////////////////YSWgTAAAAE3RSTlMA7fci493c0MW8uJ6CZks4MxQHEZL6ewAAAFZJREFUOMvdkskRgDAMA4lDwg2B7b9XOlge/KKvdsa25KFb5XlRvxXC/DNBEv8IFNjBgGdDgXtFgTyhwDXiQAUHCvwa4Uv6mR6UR+1led2mVonvl+tML45qCQNQLIx7AAAAAElFTkSuQmCC";Editor.nextLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAPFBMVEUAAAD////////////////////////////////////////////////////////////////////////////YSWgTAAAAE3RSTlMA7fci493c0MW8uJ6CZks4MxQHEZL6ewAAAFRJREFUOMvd0skRgCAQBVEFwQ0V7fxzNQP6wI05v6pZ/kyj1b7FNgik2gQzzLcAwiUAigHOTwDHK4A1CmB5BJANJG1hQ9qafYcqFlZP3IFc9eVGrR+iIgkDQRUXIAAAAABJRU5ErkJggg=="; Editor.ctrlKey=mxClient.IS_MAC?"Cmd":"Ctrl";Editor.popupsAllowed=!0;mxUtils.extend(Editor,mxEventSource);Editor.prototype.originalNoForeignObject=mxClient.NO_FO;Editor.prototype.transparentImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhMAAwAIAAAP///wAAACH5BAEAAAAALAAAAAAwADAAAAIxhI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8egpAAA7":IMAGE_PATH+"/transparent.gif";Editor.prototype.extendCanvas=!0;Editor.prototype.chromeless=!1;Editor.prototype.cancelFirst=!0; -Editor.prototype.enabled=!0;Editor.prototype.filename=null;Editor.prototype.modified=!1;Editor.prototype.autosave=!0;Editor.prototype.initialTopSpacing=0;Editor.prototype.appName=document.title;Editor.prototype.editBlankUrl=window.location.protocol+"//"+window.location.host+"/";Editor.prototype.init=function(){};Editor.prototype.isChromelessView=function(){return this.chromeless};Editor.prototype.setAutosave=function(a){this.autosave=a;this.fireEvent(new mxEventObject("autosaveChanged"))}; +Editor.prototype.enabled=!0;Editor.prototype.filename=null;Editor.prototype.modified=!1;Editor.prototype.autosave=!0;Editor.prototype.initialTopSpacing=0;Editor.prototype.appName=document.title;Editor.prototype.editBlankUrl=window.location.protocol+"//"+window.location.host+"/";Editor.prototype.defaultGraphOverflow="hidden";Editor.prototype.init=function(){};Editor.prototype.isChromelessView=function(){return this.chromeless};Editor.prototype.setAutosave=function(a){this.autosave=a;this.fireEvent(new mxEventObject("autosaveChanged"))}; Editor.prototype.getEditBlankUrl=function(a){return this.editBlankUrl+a}; -Editor.prototype.editAsNew=function(a,b){var f=null!=b?"?title="+encodeURIComponent(b):"";null!=urlParams.ui&&(f+=(0<f.length?"&":"?")+"ui="+urlParams.ui);null==this.editorWindow||this.editorWindow.closed?"undefined"!==typeof window.postMessage&&(null==document.documentMode||10<=document.documentMode)?(null==this.editorWindow&&mxEvent.addListener(window,"message",mxUtils.bind(this,function(b){"ready"==b.data&&b.source==this.editorWindow&&this.editorWindow.postMessage(a,"*")})),this.editorWindow=this.graph.openLink(this.getEditBlankUrl(f+ -(0<f.length?"&":"?")+"client=1"),null,!0)):this.editorWindow=this.graph.openLink(this.getEditBlankUrl(f)+"#R"+encodeURIComponent(a)):this.editorWindow.focus()};Editor.prototype.createGraph=function(a,b){var f=new Graph(null,b,null,null,a);f.transparentBackground=!1;this.chromeless||(f.isBlankLink=function(a){return!this.isExternalProtocol(a)});return f}; +Editor.prototype.editAsNew=function(a,b){var e=null!=b?"?title="+encodeURIComponent(b):"";null!=urlParams.ui&&(e+=(0<e.length?"&":"?")+"ui="+urlParams.ui);null==this.editorWindow||this.editorWindow.closed?"undefined"!==typeof window.postMessage&&(null==document.documentMode||10<=document.documentMode)?(null==this.editorWindow&&mxEvent.addListener(window,"message",mxUtils.bind(this,function(b){"ready"==b.data&&b.source==this.editorWindow&&this.editorWindow.postMessage(a,"*")})),this.editorWindow=this.graph.openLink(this.getEditBlankUrl(e+ +(0<e.length?"&":"?")+"client=1"),null,!0)):this.editorWindow=this.graph.openLink(this.getEditBlankUrl(e)+"#R"+encodeURIComponent(a)):this.editorWindow.focus()};Editor.prototype.createGraph=function(a,b){var e=new Graph(null,b,null,null,a);e.transparentBackground=!1;this.chromeless||(e.isBlankLink=function(a){return!this.isExternalProtocol(a)});return e}; Editor.prototype.resetGraph=function(){this.graph.gridEnabled=!this.isChromelessView()||"1"==urlParams.grid;this.graph.graphHandler.guidesEnabled=!0;this.graph.setTooltips(!0);this.graph.setConnectable(!0);this.graph.foldingEnabled=!0;this.graph.scrollbars=this.graph.defaultScrollbars;this.graph.pageVisible=this.graph.defaultPageVisible;this.graph.pageBreaksVisible=this.graph.pageVisible;this.graph.preferPageSize=this.graph.pageBreaksVisible;this.graph.background=null;this.graph.pageScale=mxGraph.prototype.pageScale; this.graph.pageFormat=mxGraph.prototype.pageFormat;this.graph.currentScale=1;this.graph.currentTranslate.x=0;this.graph.currentTranslate.y=0;this.updateGraphComponents();this.graph.view.setScale(1)}; Editor.prototype.readGraphState=function(a){this.graph.gridEnabled="0"!=a.getAttribute("grid")&&(!this.isChromelessView()||"1"==urlParams.grid);this.graph.gridSize=parseFloat(a.getAttribute("gridSize"))||mxGraph.prototype.gridSize;this.graph.graphHandler.guidesEnabled="0"!=a.getAttribute("guides");this.graph.setTooltips("0"!=a.getAttribute("tooltips"));this.graph.setConnectable("0"!=a.getAttribute("connect"));this.graph.connectionArrowsEnabled="0"!=a.getAttribute("arrows");this.graph.foldingEnabled= "0"!=a.getAttribute("fold");this.isChromelessView()&&this.graph.foldingEnabled&&(this.graph.foldingEnabled="1"==urlParams.nav,this.graph.cellRenderer.forceControlClickHandler=this.graph.foldingEnabled);var b=parseFloat(a.getAttribute("pageScale"));!isNaN(b)&&0<b?this.graph.pageScale=b:this.graph.pageScale=mxGraph.prototype.pageScale;this.graph.isLightboxView()?this.graph.pageVisible=!1:(b=a.getAttribute("page"),this.graph.pageVisible=null!=b?"0"!=b:this.graph.defaultPageVisible);this.graph.pageBreaksVisible= -this.graph.pageVisible;this.graph.preferPageSize=this.graph.pageBreaksVisible;var b=parseFloat(a.getAttribute("pageWidth")),f=parseFloat(a.getAttribute("pageHeight"));isNaN(b)||isNaN(f)||(this.graph.pageFormat=new mxRectangle(0,0,b,f));a=a.getAttribute("background");this.graph.background=null!=a&&0<a.length?a:null}; -Editor.prototype.setGraphXml=function(a){if(null!=a){var b=new mxCodec(a.ownerDocument);if("mxGraphModel"==a.nodeName){this.graph.model.beginUpdate();try{this.graph.model.clear(),this.graph.view.scale=1,this.readGraphState(a),this.updateGraphComponents(),b.decode(a,this.graph.getModel())}finally{this.graph.model.endUpdate()}this.fireEvent(new mxEventObject("resetGraphView"))}else if("root"==a.nodeName){this.resetGraph();var f=b.document.createElement("mxGraphModel");f.appendChild(a);b.decode(f,this.graph.getModel()); +this.graph.pageVisible;this.graph.preferPageSize=this.graph.pageBreaksVisible;var b=parseFloat(a.getAttribute("pageWidth")),e=parseFloat(a.getAttribute("pageHeight"));isNaN(b)||isNaN(e)||(this.graph.pageFormat=new mxRectangle(0,0,b,e));a=a.getAttribute("background");this.graph.background=null!=a&&0<a.length?a:null}; +Editor.prototype.setGraphXml=function(a){if(null!=a){var b=new mxCodec(a.ownerDocument);if("mxGraphModel"==a.nodeName){this.graph.model.beginUpdate();try{this.graph.model.clear(),this.graph.view.scale=1,this.readGraphState(a),this.updateGraphComponents(),b.decode(a,this.graph.getModel())}finally{this.graph.model.endUpdate()}this.fireEvent(new mxEventObject("resetGraphView"))}else if("root"==a.nodeName){this.resetGraph();var e=b.document.createElement("mxGraphModel");e.appendChild(a);b.decode(e,this.graph.getModel()); this.updateGraphComponents();this.fireEvent(new mxEventObject("resetGraphView"))}else throw{message:mxResources.get("cannotOpenFile"),node:a,toString:function(){return this.message}};}else this.resetGraph(),this.graph.model.clear(),this.fireEvent(new mxEventObject("resetGraphView"))}; Editor.prototype.getGraphXml=function(a){a=(null!=a?a:1)?(new mxCodec(mxUtils.createXmlDocument())).encode(this.graph.getModel()):this.graph.encodeCells(mxUtils.sortCells(this.graph.model.getTopmostCells(this.graph.getSelectionCells())));if(0!=this.graph.view.translate.x||0!=this.graph.view.translate.y)a.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),a.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100);a.setAttribute("grid",this.graph.isGridEnabled()?"1":"0");a.setAttribute("gridSize", this.graph.gridSize);a.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0");a.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0");a.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0");a.setAttribute("arrows",this.graph.connectionArrowsEnabled?"1":"0");a.setAttribute("fold",this.graph.foldingEnabled?"1":"0");a.setAttribute("page",this.graph.pageVisible?"1":"0");a.setAttribute("pageScale",this.graph.pageScale);a.setAttribute("pageWidth",this.graph.pageFormat.width); -a.setAttribute("pageHeight",this.graph.pageFormat.height);null!=this.graph.background&&a.setAttribute("background",this.graph.background);return a};Editor.prototype.updateGraphComponents=function(){var a=this.graph;null!=a.container&&(a.view.validateBackground(),a.container.style.overflow=a.scrollbars?"auto":"hidden",this.fireEvent(new mxEventObject("updateGraphComponents")))};Editor.prototype.setModified=function(a){this.modified=a};Editor.prototype.setFilename=function(a){this.filename=a}; -Editor.prototype.createUndoManager=function(){var a=this.graph,b=new mxUndoManager;this.undoListener=function(a,f){b.undoableEditHappened(f.getProperty("edit"))};var f=mxUtils.bind(this,function(a,b){this.undoListener.apply(this,arguments)});a.getModel().addListener(mxEvent.UNDO,f);a.getView().addListener(mxEvent.UNDO,f);f=function(b,f){var d=a.getSelectionCellsForChanges(f.getProperty("edit").changes);a.getModel();for(var k=[],q=0;q<d.length;q++)null!=a.view.getState(d[q])&&k.push(d[q]);a.setSelectionCells(k)}; -b.addListener(mxEvent.UNDO,f);b.addListener(mxEvent.REDO,f);return b};Editor.prototype.initStencilRegistry=function(){};Editor.prototype.destroy=function(){null!=this.graph&&(this.graph.destroy(),this.graph=null)};OpenFile=function(a){this.consumer=this.producer=null;this.done=a;this.args=null};OpenFile.prototype.setConsumer=function(a){this.consumer=a;this.execute()};OpenFile.prototype.setData=function(){this.args=arguments;this.execute()};OpenFile.prototype.error=function(a){this.cancel(!0);mxUtils.alert(a)}; +a.setAttribute("pageHeight",this.graph.pageFormat.height);null!=this.graph.background&&a.setAttribute("background",this.graph.background);return a};Editor.prototype.updateGraphComponents=function(){var a=this.graph;null!=a.container&&(a.view.validateBackground(),a.container.style.overflow=a.scrollbars?"auto":this.defaultGraphOverflow,this.fireEvent(new mxEventObject("updateGraphComponents")))};Editor.prototype.setModified=function(a){this.modified=a}; +Editor.prototype.setFilename=function(a){this.filename=a}; +Editor.prototype.createUndoManager=function(){var a=this.graph,b=new mxUndoManager;this.undoListener=function(a,e){b.undoableEditHappened(e.getProperty("edit"))};var e=mxUtils.bind(this,function(a,b){this.undoListener.apply(this,arguments)});a.getModel().addListener(mxEvent.UNDO,e);a.getView().addListener(mxEvent.UNDO,e);e=function(b,e){var c=a.getSelectionCellsForChanges(e.getProperty("edit").changes);a.getModel();for(var k=[],r=0;r<c.length;r++)null!=a.view.getState(c[r])&&k.push(c[r]);a.setSelectionCells(k)}; +b.addListener(mxEvent.UNDO,e);b.addListener(mxEvent.REDO,e);return b};Editor.prototype.initStencilRegistry=function(){};Editor.prototype.destroy=function(){null!=this.graph&&(this.graph.destroy(),this.graph=null)};OpenFile=function(a){this.consumer=this.producer=null;this.done=a;this.args=null};OpenFile.prototype.setConsumer=function(a){this.consumer=a;this.execute()};OpenFile.prototype.setData=function(){this.args=arguments;this.execute()};OpenFile.prototype.error=function(a){this.cancel(!0);mxUtils.alert(a)}; OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.args&&(this.cancel(!1),this.consumer.apply(this,this.args))};OpenFile.prototype.cancel=function(a){null!=this.done&&this.done(null!=a?a:!0)}; -function Dialog(a,b,f,d,k,n,p,q,w,c){var g=0;mxClient.IS_VML&&(null==document.documentMode||8>document.documentMode)&&(g=80);f+=g;d+=g;var h=f,l=d,t=0<document.documentElement.clientHeight?document.documentElement.clientHeight:Math.max(document.body.clientHeight||0,document.documentElement.clientHeight),m=Math.max(1,Math.round((document.body.clientWidth-f-64)/2)),r=Math.max(1,Math.round((t-d-a.footerHeight)/3));mxClient.IS_QUIRKS||(b.style.maxHeight="100%");f=Math.min(f,document.body.scrollWidth- -64);d=Math.min(d,t-64);0<a.dialogs.length&&(this.zIndex+=2*a.dialogs.length);null==this.bg&&(this.bg=a.createDiv("background"),this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=t+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity),mxClient.IS_QUIRKS&&new mxDivResizer(this.bg));var x=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=x.x+"px";this.bg.style.top=x.y+"px";m+=x.x;r+=x.y; -k&&document.body.appendChild(this.bg);var v=a.createDiv(w?"geTransDialog":"geDialog");k=this.getPosition(m,r,f,d);m=k.x;r=k.y;v.style.width=f+"px";v.style.height=d+"px";v.style.left=m+"px";v.style.top=r+"px";v.style.zIndex=this.zIndex;v.appendChild(b);document.body.appendChild(v);!q&&b.clientHeight>v.clientHeight-64&&(b.style.overflowY="auto");n&&(n=document.createElement("img"),n.setAttribute("src",Dialog.prototype.closeImage),n.setAttribute("title",mxResources.get("close")),n.className="geDialogClose", -n.style.top=r+14+"px",n.style.left=m+f+38-g+"px",n.style.zIndex=this.zIndex,mxEvent.addListener(n,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})),document.body.appendChild(n),this.dialogImg=n,mxEvent.addGestureListeners(this.bg,null,null,mxUtils.bind(this,function(c){a.hideDialog(!0)})));this.resizeListener=mxUtils.bind(this,function(){if(null!=c){var x=c();null!=x&&(h=f=x.w,l=d=x.h)}t=Math.max(document.body.clientHeight,document.documentElement.clientHeight);this.bg.style.height=t+"px"; -m=Math.max(1,Math.round((document.body.clientWidth-f-64)/2));r=Math.max(1,Math.round((t-d-a.footerHeight)/3));f=Math.min(h,document.body.scrollWidth-64);d=Math.min(l,t-64);x=this.getPosition(m,r,f,d);m=x.x;r=x.y;v.style.left=m+"px";v.style.top=r+"px";v.style.width=f+"px";v.style.height=d+"px";!q&&b.clientHeight>v.clientHeight-64&&(b.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=r+14+"px",this.dialogImg.style.left=m+f+38-g+"px")});mxEvent.addListener(window,"resize",this.resizeListener); -this.onDialogClose=p;this.container=v;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-1; -Dialog.prototype.noColorImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkEzRDlBMUUwODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkEzRDlBMUUxODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTNEOUExREU4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTNEOUExREY4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5xh3fmAAAABlBMVEX////MzMw46qqDAAAAGElEQVR42mJggAJGKGAYIIGBth8KAAIMAEUQAIElnLuQAAAAAElFTkSuQmCC":IMAGE_PATH+ -"/nocolor.png";Dialog.prototype.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAQMAAADaX5RTAAAABlBMVEV7mr3///+wksspAAAAAnRSTlP/AOW3MEoAAAAdSURBVAgdY9jXwCDDwNDRwHCwgeExmASygSL7GgB12QiqNHZZIwAAAABJRU5ErkJggg==":IMAGE_PATH+"/close.png"; +function Dialog(a,b,e,c,k,m,q,r,v,z){var d=0;mxClient.IS_VML&&(null==document.documentMode||8>document.documentMode)&&(d=80);e+=d;c+=d;var f=e,l=c,n=mxUtils.getDocumentSize(),g=n.height,p=Math.max(1,Math.round((n.width-e-64)/2)),B=Math.max(1,Math.round((g-c-a.footerHeight)/3));mxClient.IS_QUIRKS||(b.style.maxHeight="100%");e=null!=document.body?Math.min(e,document.body.scrollWidth-64):e;c=Math.min(c,g-64);0<a.dialogs.length&&(this.zIndex+=2*a.dialogs.length);null==this.bg&&(this.bg=a.createDiv("background"), +this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=g+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity),mxClient.IS_QUIRKS&&new mxDivResizer(this.bg));n=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=n.x+"px";this.bg.style.top=n.y+"px";p+=n.x;B+=n.y;k&&document.body.appendChild(this.bg);var x=a.createDiv(v?"geTransDialog":"geDialog");k=this.getPosition(p,B,e,c);p=k.x;B=k.y;x.style.width= +e+"px";x.style.height=c+"px";x.style.left=p+"px";x.style.top=B+"px";x.style.zIndex=this.zIndex;x.appendChild(b);document.body.appendChild(x);!r&&b.clientHeight>x.clientHeight-64&&(b.style.overflowY="auto");m&&(m=document.createElement("img"),m.setAttribute("src",Dialog.prototype.closeImage),m.setAttribute("title",mxResources.get("close")),m.className="geDialogClose",m.style.top=B+14+"px",m.style.left=p+e+38-d+"px",m.style.zIndex=this.zIndex,mxEvent.addListener(m,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})), +document.body.appendChild(m),this.dialogImg=m,mxEvent.addGestureListeners(this.bg,null,null,mxUtils.bind(this,function(d){a.hideDialog(!0)})));this.resizeListener=mxUtils.bind(this,function(){if(null!=z){var n=z();null!=n&&(f=e=n.w,l=c=n.h)}n=mxUtils.getDocumentSize();g=n.height;this.bg.style.height=g+"px";p=Math.max(1,Math.round((n.width-e-64)/2));B=Math.max(1,Math.round((g-c-a.footerHeight)/3));e=null!=document.body?Math.min(f,document.body.scrollWidth-64):f;c=Math.min(l,g-64);n=this.getPosition(p, +B,e,c);p=n.x;B=n.y;x.style.left=p+"px";x.style.top=B+"px";x.style.width=e+"px";x.style.height=c+"px";!r&&b.clientHeight>x.clientHeight-64&&(b.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=B+14+"px",this.dialogImg.style.left=p+e+38-d+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=q;this.container=x;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-1; +Dialog.prototype.noColorImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkEzRDlBMUUwODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkEzRDlBMUUxODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTNEOUExREU4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTNEOUExREY4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5xh3fmAAAABlBMVEX////MzMw46qqDAAAAGElEQVR42mJggAJGKGAYIIGBth8KAAIMAEUQAIElnLuQAAAAAElFTkSuQmCC": +IMAGE_PATH+"/nocolor.png";Dialog.prototype.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAQMAAADaX5RTAAAABlBMVEV7mr3///+wksspAAAAAnRSTlP/AOW3MEoAAAAdSURBVAgdY9jXwCDDwNDRwHCwgeExmASygSL7GgB12QiqNHZZIwAAAABJRU5ErkJggg==":IMAGE_PATH+"/close.png"; Dialog.prototype.clearImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQAKAIABAMDAwP///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUIzOEM1NzI4NjEyMTFFMUEzMkNDMUE3NjZERDE2QjIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUIzOEM1NzM4NjEyMTFFMUEzMkNDMUE3NjZERDE2QjIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5QjM4QzU3MDg2MTIxMUUxQTMyQ0MxQTc2NkREMTZCMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5QjM4QzU3MTg2MTIxMUUxQTMyQ0MxQTc2NkREMTZCMiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEAAAEALAAAAAANAAoAAAIXTGCJebD9jEOTqRlttXdrB32PJ2ncyRQAOw==":IMAGE_PATH+ "/clear.gif"; Dialog.prototype.lockedImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAMAAABhq6zVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzdDMDZCODExNzIxMTFFNUI0RTk5NTg4OTcyMUUyODEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzdDMDZCODIxNzIxMTFFNUI0RTk5NTg4OTcyMUUyODEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozN0MwNkI3RjE3MjExMUU1QjRFOTk1ODg5NzIxRTI4MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozN0MwNkI4MDE3MjExMUU1QjRFOTk1ODg5NzIxRTI4MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvqMCFYAAAAVUExURZmZmb+/v7KysqysrMzMzLGxsf///4g8N1cAAAAHdFJOU////////wAaSwNGAAAAPElEQVR42lTMQQ4AIQgEwUa0//9kTQirOweYOgDqAMbZUr10AGlAwx4/BJ2QJ4U0L5brYjovvpv32xZgAHZaATFtMbu4AAAAAElFTkSuQmCC":IMAGE_PATH+ @@ -2012,148 +2014,148 @@ Dialog.prototype.lockedImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoA Dialog.prototype.unlockedImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAMAAABhq6zVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzdDMDZCN0QxNzIxMTFFNUI0RTk5NTg4OTcyMUUyODEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzdDMDZCN0UxNzIxMTFFNUI0RTk5NTg4OTcyMUUyODEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozN0MwNkI3QjE3MjExMUU1QjRFOTk1ODg5NzIxRTI4MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozN0MwNkI3QzE3MjExMUU1QjRFOTk1ODg5NzIxRTI4MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkKMpVwAAAAYUExURZmZmbKysr+/v6ysrOXl5czMzLGxsf///zHN5lwAAAAIdFJOU/////////8A3oO9WQAAADxJREFUeNpUzFESACAEBNBVsfe/cZJU+8Mzs8CIABCidtfGOndnYsT40HDSiCcbPdoJo10o9aI677cpwACRoAF3dFNlswAAAABJRU5ErkJggg==":IMAGE_PATH+ "/unlocked.png";Dialog.prototype.bgOpacity=80;Dialog.prototype.getPosition=function(a,b){return new mxPoint(a,b)};Dialog.prototype.close=function(a,b){if(null!=this.onDialogClose){if(0==this.onDialogClose(a,b))return!1;this.onDialogClose=null}null!=this.dialogImg&&(this.dialogImg.parentNode.removeChild(this.dialogImg),this.dialogImg=null);null!=this.bg&&null!=this.bg.parentNode&&this.bg.parentNode.removeChild(this.bg);mxEvent.removeListener(window,"resize",this.resizeListener);this.container.parentNode.removeChild(this.container)}; var PrintDialog=function(a,b){this.create(a,b)}; -PrintDialog.prototype.create=function(a){function b(a){var b=q.checked||c.checked,d=parseInt(h.value)/100;isNaN(d)&&(d=1,h.value="100%");var d=.75*d,l=f.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,t=1/f.pageScale;if(b){var k=q.checked?1:parseInt(g.value);isNaN(k)||(t=mxUtils.getScaleForPageCount(k,f,l))}f.getGraphBounds();var y=k=0,l=mxRectangle.fromRectangle(l);l.width=Math.ceil(l.width*d);l.height=Math.ceil(l.height*d);t*=d;!b&&f.pageVisible?(d=f.getPageLayout(),k-=d.x*l.width,y-=d.y*l.height): -b=!0;b=PrintDialog.createPrintPreview(f,t,l,0,k,y,b);b.open();a&&PrintDialog.printPreview(b)}var f=a.editor.graph,d,k,n=document.createElement("table");n.style.width="100%";n.style.height="100%";var p=document.createElement("tbody");d=document.createElement("tr");var q=document.createElement("input");q.setAttribute("type","checkbox");k=document.createElement("td");k.setAttribute("colspan","2");k.style.fontSize="10pt";k.appendChild(q);var w=document.createElement("span");mxUtils.write(w," "+mxResources.get("fitPage")); -k.appendChild(w);mxEvent.addListener(w,"click",function(a){q.checked=!q.checked;c.checked=!q.checked;mxEvent.consume(a)});mxEvent.addListener(q,"change",function(){c.checked=!q.checked});d.appendChild(k);p.appendChild(d);d=d.cloneNode(!1);var c=document.createElement("input");c.setAttribute("type","checkbox");k=document.createElement("td");k.style.fontSize="10pt";k.appendChild(c);w=document.createElement("span");mxUtils.write(w," "+mxResources.get("posterPrint")+":");k.appendChild(w);mxEvent.addListener(w, -"click",function(a){c.checked=!c.checked;q.checked=!c.checked;mxEvent.consume(a)});d.appendChild(k);var g=document.createElement("input");g.setAttribute("value","1");g.setAttribute("type","number");g.setAttribute("min","1");g.setAttribute("size","4");g.setAttribute("disabled","disabled");g.style.width="50px";k=document.createElement("td");k.style.fontSize="10pt";k.appendChild(g);mxUtils.write(k," "+mxResources.get("pages")+" (max)");d.appendChild(k);p.appendChild(d);mxEvent.addListener(c,"change", -function(){c.checked?g.removeAttribute("disabled"):g.setAttribute("disabled","disabled");q.checked=!c.checked});d=d.cloneNode(!1);k=document.createElement("td");mxUtils.write(k,mxResources.get("pageScale")+":");d.appendChild(k);k=document.createElement("td");var h=document.createElement("input");h.setAttribute("value","100 %");h.setAttribute("size","5");h.style.width="50px";k.appendChild(h);d.appendChild(k);p.appendChild(d);d=document.createElement("tr");k=document.createElement("td");k.colSpan=2; -k.style.paddingTop="20px";k.setAttribute("align","right");w=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});w.className="geBtn";a.editor.cancelFirst&&k.appendChild(w);if(PrintDialog.previewEnabled){var l=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();b(!1)});l.className="geBtn";k.appendChild(l)}l=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();b(!0)});l.className="geBtn gePrimaryBtn";k.appendChild(l);a.editor.cancelFirst|| -k.appendChild(w);d.appendChild(k);p.appendChild(d);n.appendChild(p);this.container=n};PrintDialog.printPreview=function(a){if(null!=a.wnd){var b=function(){a.wnd.focus();a.wnd.print();a.wnd.close()};mxClient.IS_GC?window.setTimeout(b,500):b()}}; -PrintDialog.createPrintPreview=function(a,b,f,d,k,n,p){b=new mxPrintPreview(a,b,f,d,k,n);b.title=mxResources.get("preview");b.printBackgroundImage=!0;b.autoOrigin=p;a=a.background;if(null==a||""==a||a==mxConstants.NONE)a="#ffffff";b.backgroundColor=a;var q=b.writeHead;b.writeHead=function(a){q.apply(this,arguments);a.writeln('<style type="text/css">');a.writeln("@media screen {");a.writeln(" body > div { padding:30px;box-sizing:content-box; }");a.writeln("}");a.writeln("</style>")};return b}; +PrintDialog.prototype.create=function(a){function b(a){var b=r.checked||z.checked,c=parseInt(f.value)/100;isNaN(c)&&(c=1,f.value="100%");var c=.75*c,l=e.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,n=1/e.pageScale;if(b){var t=r.checked?1:parseInt(d.value);isNaN(t)||(n=mxUtils.getScaleForPageCount(t,e,l))}e.getGraphBounds();var y=t=0,l=mxRectangle.fromRectangle(l);l.width=Math.ceil(l.width*c);l.height=Math.ceil(l.height*c);n*=c;!b&&e.pageVisible?(c=e.getPageLayout(),t-=c.x*l.width,y-=c.y*l.height): +b=!0;b=PrintDialog.createPrintPreview(e,n,l,0,t,y,b);b.open();a&&PrintDialog.printPreview(b)}var e=a.editor.graph,c,k,m=document.createElement("table");m.style.width="100%";m.style.height="100%";var q=document.createElement("tbody");c=document.createElement("tr");var r=document.createElement("input");r.setAttribute("type","checkbox");k=document.createElement("td");k.setAttribute("colspan","2");k.style.fontSize="10pt";k.appendChild(r);var v=document.createElement("span");mxUtils.write(v," "+mxResources.get("fitPage")); +k.appendChild(v);mxEvent.addListener(v,"click",function(a){r.checked=!r.checked;z.checked=!r.checked;mxEvent.consume(a)});mxEvent.addListener(r,"change",function(){z.checked=!r.checked});c.appendChild(k);q.appendChild(c);c=c.cloneNode(!1);var z=document.createElement("input");z.setAttribute("type","checkbox");k=document.createElement("td");k.style.fontSize="10pt";k.appendChild(z);v=document.createElement("span");mxUtils.write(v," "+mxResources.get("posterPrint")+":");k.appendChild(v);mxEvent.addListener(v, +"click",function(a){z.checked=!z.checked;r.checked=!z.checked;mxEvent.consume(a)});c.appendChild(k);var d=document.createElement("input");d.setAttribute("value","1");d.setAttribute("type","number");d.setAttribute("min","1");d.setAttribute("size","4");d.setAttribute("disabled","disabled");d.style.width="50px";k=document.createElement("td");k.style.fontSize="10pt";k.appendChild(d);mxUtils.write(k," "+mxResources.get("pages")+" (max)");c.appendChild(k);q.appendChild(c);mxEvent.addListener(z,"change", +function(){z.checked?d.removeAttribute("disabled"):d.setAttribute("disabled","disabled");r.checked=!z.checked});c=c.cloneNode(!1);k=document.createElement("td");mxUtils.write(k,mxResources.get("pageScale")+":");c.appendChild(k);k=document.createElement("td");var f=document.createElement("input");f.setAttribute("value","100 %");f.setAttribute("size","5");f.style.width="50px";k.appendChild(f);c.appendChild(k);q.appendChild(c);c=document.createElement("tr");k=document.createElement("td");k.colSpan=2; +k.style.paddingTop="20px";k.setAttribute("align","right");v=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});v.className="geBtn";a.editor.cancelFirst&&k.appendChild(v);if(PrintDialog.previewEnabled){var l=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();b(!1)});l.className="geBtn";k.appendChild(l)}l=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();b(!0)});l.className="geBtn gePrimaryBtn";k.appendChild(l);a.editor.cancelFirst|| +k.appendChild(v);c.appendChild(k);q.appendChild(c);m.appendChild(q);this.container=m};PrintDialog.printPreview=function(a){if(null!=a.wnd){var b=function(){a.wnd.focus();a.wnd.print();a.wnd.close()};mxClient.IS_GC?window.setTimeout(b,500):b()}}; +PrintDialog.createPrintPreview=function(a,b,e,c,k,m,q){b=new mxPrintPreview(a,b,e,c,k,m);b.title=mxResources.get("preview");b.printBackgroundImage=!0;b.autoOrigin=q;a=a.background;if(null==a||""==a||a==mxConstants.NONE)a="#ffffff";b.backgroundColor=a;var r=b.writeHead;b.writeHead=function(a){r.apply(this,arguments);a.writeln('<style type="text/css">');a.writeln("@media screen {");a.writeln(" body > div { padding:30px;box-sizing:content-box; }");a.writeln("}");a.writeln("</style>")};return b}; PrintDialog.previewEnabled=!0; -var PageSetupDialog=function(a){function b(){null==g||g==mxConstants.NONE?(c.style.backgroundColor="",c.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(c.style.backgroundColor=g,c.style.backgroundImage="")}function f(){null==t?(l.removeAttribute("title"),l.style.fontSize="",l.innerHTML=mxResources.get("change")+"..."):(l.setAttribute("title",t.src),l.style.fontSize="11px",l.innerHTML=t.src.substring(0,42)+"...")}var d=a.editor.graph,k,n,p=document.createElement("table");p.style.width= -"100%";p.style.height="100%";var q=document.createElement("tbody");k=document.createElement("tr");n=document.createElement("td");n.style.verticalAlign="top";n.style.fontSize="10pt";mxUtils.write(n,mxResources.get("paperSize")+":");k.appendChild(n);n=document.createElement("td");n.style.verticalAlign="top";n.style.fontSize="10pt";var w=PageSetupDialog.addPageFormatPanel(n,"pagesetupdialog",d.pageFormat);k.appendChild(n);q.appendChild(k);k=document.createElement("tr");n=document.createElement("td"); -mxUtils.write(n,mxResources.get("background")+":");k.appendChild(n);n=document.createElement("td");n.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var c=document.createElement("button");c.style.width="18px";c.style.height="18px";c.style.marginRight="20px";c.style.backgroundPosition="center center";c.style.backgroundRepeat="no-repeat";var g=d.background;b();mxEvent.addListener(c,"click",function(c){a.pickColor(g||"none",function(a){g=a;b()});mxEvent.consume(c)}); -n.appendChild(c);mxUtils.write(n,mxResources.get("gridSize")+":");var h=document.createElement("input");h.setAttribute("type","number");h.setAttribute("min","0");h.style.width="40px";h.style.marginLeft="6px";h.value=d.getGridSize();n.appendChild(h);mxEvent.addListener(h,"change",function(){var a=parseInt(h.value);h.value=Math.max(1,isNaN(a)?d.getGridSize():a)});k.appendChild(n);q.appendChild(k);k=document.createElement("tr");n=document.createElement("td");mxUtils.write(n,mxResources.get("image")+ -":");k.appendChild(n);n=document.createElement("td");var l=document.createElement("a");l.style.textDecoration="underline";l.style.cursor="pointer";l.style.color="#a0a0a0";var t=d.backgroundImage;mxEvent.addListener(l,"click",function(c){a.showBackgroundImageDialog(function(a){t=a;f()});mxEvent.consume(c)});f();n.appendChild(l);k.appendChild(n);q.appendChild(k);k=document.createElement("tr");n=document.createElement("td");n.colSpan=2;n.style.paddingTop="16px";n.setAttribute("align","right");var m= -mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});m.className="geBtn";a.editor.cancelFirst&&n.appendChild(m);var r=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();d.gridSize!==h.value&&d.setGridSize(parseInt(h.value));var c=new ChangePageSetup(a,g,t,w.get());c.ignoreColor=d.background==g;c.ignoreImage=(null!=d.backgroundImage?d.backgroundImage.src:null)===(null!=t?t.src:null);d.pageFormat.width==c.previousFormat.width&&d.pageFormat.height==c.previousFormat.height&& -c.ignoreColor&&c.ignoreImage||d.model.execute(c)});r.className="geBtn gePrimaryBtn";n.appendChild(r);a.editor.cancelFirst||n.appendChild(m);k.appendChild(n);q.appendChild(k);p.appendChild(q);this.container=p}; -PageSetupDialog.addPageFormatPanel=function(a,b,f,d){function k(a,c,b){if(b||h!=document.activeElement&&l!=document.activeElement){a=!1;for(c=0;c<m.length;c++)b=m[c],D?"custom"==b.key&&(q.value=b.key,D=!1):null!=b.format&&("a4"==b.key?826==f.width?(f=mxRectangle.fromRectangle(f),f.width=827):826==f.height&&(f=mxRectangle.fromRectangle(f),f.height=827):"a5"==b.key&&(584==f.width?(f=mxRectangle.fromRectangle(f),f.width=583):584==f.height&&(f=mxRectangle.fromRectangle(f),f.height=583)),f.width==b.format.width&& -f.height==b.format.height?(q.value=b.key,n.setAttribute("checked","checked"),n.defaultChecked=!0,n.checked=!0,p.removeAttribute("checked"),p.defaultChecked=!1,p.checked=!1,a=!0):f.width==b.format.height&&f.height==b.format.width&&(q.value=b.key,n.removeAttribute("checked"),n.defaultChecked=!1,n.checked=!1,p.setAttribute("checked","checked"),p.defaultChecked=!0,a=p.checked=!0));a?(w.style.display="",g.style.display="none"):(h.value=f.width/100,l.value=f.height/100,n.setAttribute("checked","checked"), -q.value="custom",w.style.display="none",g.style.display="")}}b="format-"+b;var n=document.createElement("input");n.setAttribute("name",b);n.setAttribute("type","radio");n.setAttribute("value","portrait");var p=document.createElement("input");p.setAttribute("name",b);p.setAttribute("type","radio");p.setAttribute("value","landscape");var q=document.createElement("select");q.style.marginBottom="8px";q.style.width="202px";var w=document.createElement("div");w.style.marginLeft="4px";w.style.width="210px"; -w.style.height="24px";n.style.marginRight="6px";w.appendChild(n);b=document.createElement("span");b.style.maxWidth="100px";mxUtils.write(b,mxResources.get("portrait"));w.appendChild(b);p.style.marginLeft="10px";p.style.marginRight="6px";w.appendChild(p);var c=document.createElement("span");c.style.width="100px";mxUtils.write(c,mxResources.get("landscape"));w.appendChild(c);var g=document.createElement("div");g.style.marginLeft="4px";g.style.width="210px";g.style.height="24px";var h=document.createElement("input"); -h.setAttribute("size","7");h.style.textAlign="right";g.appendChild(h);mxUtils.write(g," in x ");var l=document.createElement("input");l.setAttribute("size","7");l.style.textAlign="right";g.appendChild(l);mxUtils.write(g," in");w.style.display="none";g.style.display="none";for(var t={},m=PageSetupDialog.getFormats(),r=0;r<m.length;r++){var x=m[r];t[x.key]=x;var v=document.createElement("option");v.setAttribute("value",x.key);mxUtils.write(v,x.title);q.appendChild(v)}var D=!1;k();a.appendChild(q);mxUtils.br(a); -a.appendChild(w);a.appendChild(g);var y=f,u=function(a,c){var b=t[q.value];null!=b.format?(h.value=b.format.width/100,l.value=b.format.height/100,g.style.display="none",w.style.display=""):(w.style.display="none",g.style.display="");b=parseFloat(h.value);if(isNaN(b)||0>=b)h.value=f.width/100;b=parseFloat(l.value);if(isNaN(b)||0>=b)l.value=f.height/100;b=new mxRectangle(0,0,Math.floor(100*parseFloat(h.value)),Math.floor(100*parseFloat(l.value)));"custom"!=q.value&&p.checked&&(b=new mxRectangle(0,0, -b.height,b.width));c&&D||b.width==y.width&&b.height==y.height||(y=b,null!=d&&d(y))};mxEvent.addListener(b,"click",function(a){n.checked=!0;u(a);mxEvent.consume(a)});mxEvent.addListener(c,"click",function(a){p.checked=!0;u(a);mxEvent.consume(a)});mxEvent.addListener(h,"blur",u);mxEvent.addListener(h,"click",u);mxEvent.addListener(l,"blur",u);mxEvent.addListener(l,"click",u);mxEvent.addListener(p,"change",u);mxEvent.addListener(n,"change",u);mxEvent.addListener(q,"change",function(a){D="custom"==q.value; -u(a,!0)});u();return{set:function(a){f=a;k(null,null,!0)},get:function(){return y},widthInput:h,heightInput:l}}; +var PageSetupDialog=function(a){function b(){null==d||d==mxConstants.NONE?(z.style.backgroundColor="",z.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(z.style.backgroundColor=d,z.style.backgroundImage="")}function e(){null==n?(l.removeAttribute("title"),l.style.fontSize="",l.innerHTML=mxResources.get("change")+"..."):(l.setAttribute("title",n.src),l.style.fontSize="11px",l.innerHTML=n.src.substring(0,42)+"...")}var c=a.editor.graph,k,m,q=document.createElement("table");q.style.width= +"100%";q.style.height="100%";var r=document.createElement("tbody");k=document.createElement("tr");m=document.createElement("td");m.style.verticalAlign="top";m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("paperSize")+":");k.appendChild(m);m=document.createElement("td");m.style.verticalAlign="top";m.style.fontSize="10pt";var v=PageSetupDialog.addPageFormatPanel(m,"pagesetupdialog",c.pageFormat);k.appendChild(m);r.appendChild(k);k=document.createElement("tr");m=document.createElement("td"); +mxUtils.write(m,mxResources.get("background")+":");k.appendChild(m);m=document.createElement("td");m.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var z=document.createElement("button");z.style.width="18px";z.style.height="18px";z.style.marginRight="20px";z.style.backgroundPosition="center center";z.style.backgroundRepeat="no-repeat";var d=c.background;b();mxEvent.addListener(z,"click",function(f){a.pickColor(d||"none",function(a){d=a;b()});mxEvent.consume(f)}); +m.appendChild(z);mxUtils.write(m,mxResources.get("gridSize")+":");var f=document.createElement("input");f.setAttribute("type","number");f.setAttribute("min","0");f.style.width="40px";f.style.marginLeft="6px";f.value=c.getGridSize();m.appendChild(f);mxEvent.addListener(f,"change",function(){var a=parseInt(f.value);f.value=Math.max(1,isNaN(a)?c.getGridSize():a)});k.appendChild(m);r.appendChild(k);k=document.createElement("tr");m=document.createElement("td");mxUtils.write(m,mxResources.get("image")+ +":");k.appendChild(m);m=document.createElement("td");var l=document.createElement("a");l.style.textDecoration="underline";l.style.cursor="pointer";l.style.color="#a0a0a0";var n=c.backgroundImage;mxEvent.addListener(l,"click",function(d){a.showBackgroundImageDialog(function(a){n=a;e()});mxEvent.consume(d)});e();m.appendChild(l);k.appendChild(m);r.appendChild(k);k=document.createElement("tr");m=document.createElement("td");m.colSpan=2;m.style.paddingTop="16px";m.setAttribute("align","right");var g= +mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});g.className="geBtn";a.editor.cancelFirst&&m.appendChild(g);var p=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();c.gridSize!==f.value&&c.setGridSize(parseInt(f.value));var b=new ChangePageSetup(a,d,n,v.get());b.ignoreColor=c.background==d;b.ignoreImage=(null!=c.backgroundImage?c.backgroundImage.src:null)===(null!=n?n.src:null);c.pageFormat.width==b.previousFormat.width&&c.pageFormat.height==b.previousFormat.height&& +b.ignoreColor&&b.ignoreImage||c.model.execute(b)});p.className="geBtn gePrimaryBtn";m.appendChild(p);a.editor.cancelFirst||m.appendChild(g);k.appendChild(m);r.appendChild(k);q.appendChild(r);this.container=q}; +PageSetupDialog.addPageFormatPanel=function(a,b,e,c){function k(a,b,c){if(c||f!=document.activeElement&&l!=document.activeElement){a=!1;for(b=0;b<g.length;b++)c=g[b],t?"custom"==c.key&&(r.value=c.key,t=!1):null!=c.format&&("a4"==c.key?826==e.width?(e=mxRectangle.fromRectangle(e),e.width=827):826==e.height&&(e=mxRectangle.fromRectangle(e),e.height=827):"a5"==c.key&&(584==e.width?(e=mxRectangle.fromRectangle(e),e.width=583):584==e.height&&(e=mxRectangle.fromRectangle(e),e.height=583)),e.width==c.format.width&& +e.height==c.format.height?(r.value=c.key,m.setAttribute("checked","checked"),m.defaultChecked=!0,m.checked=!0,q.removeAttribute("checked"),q.defaultChecked=!1,q.checked=!1,a=!0):e.width==c.format.height&&e.height==c.format.width&&(r.value=c.key,m.removeAttribute("checked"),m.defaultChecked=!1,m.checked=!1,q.setAttribute("checked","checked"),q.defaultChecked=!0,a=q.checked=!0));a?(v.style.display="",d.style.display="none"):(f.value=e.width/100,l.value=e.height/100,m.setAttribute("checked","checked"), +r.value="custom",v.style.display="none",d.style.display="")}}b="format-"+b;var m=document.createElement("input");m.setAttribute("name",b);m.setAttribute("type","radio");m.setAttribute("value","portrait");var q=document.createElement("input");q.setAttribute("name",b);q.setAttribute("type","radio");q.setAttribute("value","landscape");var r=document.createElement("select");r.style.marginBottom="8px";r.style.width="202px";var v=document.createElement("div");v.style.marginLeft="4px";v.style.width="210px"; +v.style.height="24px";m.style.marginRight="6px";v.appendChild(m);b=document.createElement("span");b.style.maxWidth="100px";mxUtils.write(b,mxResources.get("portrait"));v.appendChild(b);q.style.marginLeft="10px";q.style.marginRight="6px";v.appendChild(q);var z=document.createElement("span");z.style.width="100px";mxUtils.write(z,mxResources.get("landscape"));v.appendChild(z);var d=document.createElement("div");d.style.marginLeft="4px";d.style.width="210px";d.style.height="24px";var f=document.createElement("input"); +f.setAttribute("size","7");f.style.textAlign="right";d.appendChild(f);mxUtils.write(d," in x ");var l=document.createElement("input");l.setAttribute("size","7");l.style.textAlign="right";d.appendChild(l);mxUtils.write(d," in");v.style.display="none";d.style.display="none";for(var n={},g=PageSetupDialog.getFormats(),p=0;p<g.length;p++){var B=g[p];n[B.key]=B;var x=document.createElement("option");x.setAttribute("value",B.key);mxUtils.write(x,B.title);r.appendChild(x)}var t=!1;k();a.appendChild(r);mxUtils.br(a); +a.appendChild(v);a.appendChild(d);var y=e,u=function(a,b){var g=n[r.value];null!=g.format?(f.value=g.format.width/100,l.value=g.format.height/100,d.style.display="none",v.style.display=""):(v.style.display="none",d.style.display="");g=parseFloat(f.value);if(isNaN(g)||0>=g)f.value=e.width/100;g=parseFloat(l.value);if(isNaN(g)||0>=g)l.value=e.height/100;g=new mxRectangle(0,0,Math.floor(100*parseFloat(f.value)),Math.floor(100*parseFloat(l.value)));"custom"!=r.value&&q.checked&&(g=new mxRectangle(0,0, +g.height,g.width));b&&t||g.width==y.width&&g.height==y.height||(y=g,null!=c&&c(y))};mxEvent.addListener(b,"click",function(a){m.checked=!0;u(a);mxEvent.consume(a)});mxEvent.addListener(z,"click",function(a){q.checked=!0;u(a);mxEvent.consume(a)});mxEvent.addListener(f,"blur",u);mxEvent.addListener(f,"click",u);mxEvent.addListener(l,"blur",u);mxEvent.addListener(l,"click",u);mxEvent.addListener(q,"change",u);mxEvent.addListener(m,"change",u);mxEvent.addListener(r,"change",function(a){t="custom"==r.value; +u(a,!0)});u();return{set:function(a){e=a;k(null,null,!0)},get:function(){return y},widthInput:f,heightInput:l}}; PageSetupDialog.getFormats=function(){return[{key:"letter",title:'US-Letter (8,5" x 11")',format:mxConstants.PAGE_FORMAT_LETTER_PORTRAIT},{key:"legal",title:'US-Legal (8,5" x 14")',format:new mxRectangle(0,0,850,1400)},{key:"tabloid",title:"US-Tabloid (279 mm x 432 mm)",format:new mxRectangle(0,0,1100,1700)},{key:"a0",title:"A0 (841 mm x 1189 mm)",format:new mxRectangle(0,0,3300,4681)},{key:"a1",title:"A1 (594 mm x 841 mm)",format:new mxRectangle(0,0,2339,3300)},{key:"a2",title:"A2 (420 mm x 594 mm)", format:new mxRectangle(0,0,1654,2336)},{key:"a3",title:"A3 (297 mm x 420 mm)",format:new mxRectangle(0,0,1169,1654)},{key:"a4",title:"A4 (210 mm x 297 mm)",format:mxConstants.PAGE_FORMAT_A4_PORTRAIT},{key:"a5",title:"A5 (148 mm x 210 mm)",format:new mxRectangle(0,0,583,827)},{key:"a6",title:"A6 (105 mm x 148 mm)",format:new mxRectangle(0,0,413,583)},{key:"a7",title:"A7 (74 mm x 105 mm)",format:new mxRectangle(0,0,291,413)},{key:"custom",title:mxResources.get("custom"),format:null}]}; (function(){mxGraphView.prototype.validateBackgroundPage=function(){var a=this.graph;if(null!=a.container&&!a.transparentBackground){if(a.pageVisible){var b=this.getBackgroundPageBounds();if(null==this.backgroundPageShape){for(var c=a.container.firstChild;null!=c&&c.nodeType!=mxConstants.NODETYPE_ELEMENT;)c=c.nextSibling;null!=c&&(this.backgroundPageShape=this.createBackgroundPageShape(b),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!mxClient.IS_QUIRKS,this.backgroundPageShape.dialect= -mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(a.container),c.style.position="absolute",a.container.insertBefore(this.backgroundPageShape.node,c),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(c){a.dblClick(c)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(c){a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(c))}), -mxUtils.bind(this,function(c){null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide();a.isMouseDown&&!mxEvent.isConsumed(c)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(c))}),mxUtils.bind(this,function(c){a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(c))})))}else this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=b,this.backgroundPageShape.redraw()}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape= -null);this.validateBackgroundStyles()}};mxGraphView.prototype.validateBackgroundStyles=function(){var a=this.graph,b=null==a.background||a.background==mxConstants.NONE?a.defaultPageBackgroundColor:a.background,c=null!=b&&this.gridColor!=b.toLowerCase()?this.gridColor:"#ffffff",d="none",h="";if(a.isGridEnabled()){h=10;mxClient.IS_SVG?(d=unescape(encodeURIComponent(this.createSvgGrid(c))),d=window.btoa?btoa(d):Base64.encode(d,!0),d="url(data:image/svg+xml;base64,"+d+")",h=a.gridSize*this.scale*this.gridSteps): -d="url("+this.gridImage+")";var f=c=0;null!=a.view.backgroundPageShape&&(f=this.getBackgroundPageBounds(),c=1+f.x,f=1+f.y);h=-Math.round(h-mxUtils.mod(this.translate.x*this.scale-c,h))+"px "+-Math.round(h-mxUtils.mod(this.translate.y*this.scale-f,h))+"px"}c=a.view.canvas;null!=c.ownerSVGElement&&(c=c.ownerSVGElement);null!=a.view.backgroundPageShape?(a.view.backgroundPageShape.node.style.backgroundPosition=h,a.view.backgroundPageShape.node.style.backgroundImage=d,a.view.backgroundPageShape.node.style.backgroundColor= -b,a.container.className="geDiagramContainer geDiagramBackdrop",c.style.backgroundImage="none",c.style.backgroundColor=""):(a.container.className="geDiagramContainer",c.style.backgroundPosition=h,c.style.backgroundColor=b,c.style.backgroundImage=d)};mxGraphView.prototype.createSvgGrid=function(a){for(var b=this.graph.gridSize*this.scale;b<this.minGridSize;)b*=2;for(var c=this.gridSteps*b,d=[],h=1;h<this.gridSteps;h++){var f=h*b;d.push("M 0 "+f+" L "+c+" "+f+" M "+f+" 0 L "+f+" "+c)}return'<svg width="'+ -c+'" height="'+c+'" xmlns="'+mxConstants.NS_SVG+'"><defs><pattern id="grid" width="'+c+'" height="'+c+'" patternUnits="userSpaceOnUse"><path d="'+d.join(" ")+'" fill="none" stroke="'+a+'" opacity="0.2" stroke-width="1"/><path d="M '+c+" 0 L 0 0 0 "+c+'" fill="none" stroke="'+a+'" stroke-width="1"/></pattern></defs><rect width="100%" height="100%" fill="url(#grid)"/></svg>'};var a=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(b,d){a.apply(this,arguments);if(null!=this.shiftPreview1){var c= -this.view.canvas;null!=c.ownerSVGElement&&(c=c.ownerSVGElement);var g=this.gridSize*this.view.scale*this.view.gridSteps,g=-Math.round(g-mxUtils.mod(this.view.translate.x*this.view.scale+b,g))+"px "+-Math.round(g-mxUtils.mod(this.view.translate.y*this.view.scale+d,g))+"px";c.style.backgroundPosition=g}};mxGraph.prototype.updatePageBreaks=function(a,b,c){var d=this.view.scale,h=this.view.translate,f=this.pageFormat,t=d*this.pageScale,m=this.view.getBackgroundPageBounds();b=m.width;c=m.height;var r= -new mxRectangle(d*h.x,d*h.y,f.width*t,f.height*t),k=(a=a&&Math.min(r.width,r.height)>this.minPageBreakDist)?Math.ceil(c/r.height)-1:0,v=a?Math.ceil(b/r.width)-1:0,q=m.x+b,y=m.y+c;null==this.horizontalPageBreaks&&0<k&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<v&&(this.verticalPageBreaks=[]);a=mxUtils.bind(this,function(a){if(null!=a){for(var c=a==this.horizontalPageBreaks?k:v,b=0;b<=c;b++){var d=a==this.horizontalPageBreaks?[new mxPoint(Math.round(m.x),Math.round(m.y+(b+1)*r.height)), -new mxPoint(Math.round(q),Math.round(m.y+(b+1)*r.height))]:[new mxPoint(Math.round(m.x+(b+1)*r.width),Math.round(m.y)),new mxPoint(Math.round(m.x+(b+1)*r.width),Math.round(y))];null!=a[b]?(a[b].points=d,a[b].redraw()):(d=new mxPolyline(d,this.pageBreakColor),d.dialect=this.dialect,d.isDashed=this.pageBreakDashed,d.pointerEvents=!1,d.init(this.view.backgroundPane),d.redraw(),a[b]=d)}for(b=c;b<a.length;b++)a[b].destroy();a.splice(c,a.length-c)}});a(this.horizontalPageBreaks);a(this.verticalPageBreaks)}; -var b=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(a,d,c){for(var g=0;g<d.length;g++)if(this.graph.getModel().isVertex(d[g])){var h=this.graph.getCellGeometry(d[g]);if(null!=h&&h.relative)return!1}return b.apply(this,arguments)};var f=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var a=f.apply(this,arguments);a.intersects=mxUtils.bind(this,function(b,c){return this.isConnecting()? -!0:mxCellMarker.prototype.intersects.apply(a,arguments)});return a};mxGraphView.prototype.createBackgroundPageShape=function(a){return new mxRectangleShape(a,"#ffffff",this.graph.defaultPageBorderColor)};mxGraphView.prototype.getBackgroundPageBounds=function(){var a=this.getGraphBounds(),b=0<a.width?a.x/this.scale-this.translate.x:0,c=0<a.height?a.y/this.scale-this.translate.y:0,d=this.graph.pageFormat,h=this.graph.pageScale,f=d.width*h,d=d.height*h,h=Math.floor(Math.min(0,b)/f),t=Math.floor(Math.min(0, -c)/d);return new mxRectangle(this.scale*(this.translate.x+h*f),this.scale*(this.translate.y+t*d),this.scale*(Math.ceil(Math.max(1,b+a.width/this.scale)/f)-h)*f,this.scale*(Math.ceil(Math.max(1,c+a.height/this.scale)/d)-t)*d)};var d=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(a,b){d.apply(this,arguments);this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft= -a+"px",this.view.backgroundPageShape.node.style.marginTop=b+"px")};var k=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(a,b,c,d,h,f){var g=k.apply(this,arguments);null==f||f||mxEvent.addListener(g,"mousedown",function(a){mxEvent.consume(a)});return g};var n=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(a){var b=this.graph.getModel(),c=b.getParent(this.graph.getSelectionCell()),d=n.apply(this,arguments),h=b.getParent(d); -if(null==c||c!=d&&c!=h)for(;!this.graph.isCellSelected(d)&&!this.graph.isCellSelected(h)&&b.isVertex(h)&&!this.graph.isContainer(h);)d=h,h=this.graph.getModel().getParent(d);return d};var p=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(a,b){var c=p.apply(this,arguments);if(!c)for(var d=this.graph.getModel(),h=d.getParent(a);null!=h;){if(this.graph.isCellSelected(h)&&d.isVertex(h)){c=!0;break}h=d.getParent(h)}return c};mxGraphHandler.prototype.selectDelayed= +mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(a.container),c.style.position="absolute",a.container.insertBefore(this.backgroundPageShape.node,c),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(d){a.dblClick(d)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(d){a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(d))}), +mxUtils.bind(this,function(d){null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide();a.isMouseDown&&!mxEvent.isConsumed(d)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(d))}),mxUtils.bind(this,function(d){a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(d))})))}else this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=b,this.backgroundPageShape.redraw()}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape= +null);this.validateBackgroundStyles()}};mxGraphView.prototype.validateBackgroundStyles=function(){var a=this.graph,b=null==a.background||a.background==mxConstants.NONE?a.defaultPageBackgroundColor:a.background,c=null!=b&&this.gridColor!=b.toLowerCase()?this.gridColor:"#ffffff",d="none",f="";if(a.isGridEnabled()){f=10;mxClient.IS_SVG?(d=unescape(encodeURIComponent(this.createSvgGrid(c))),d=window.btoa?btoa(d):Base64.encode(d,!0),d="url(data:image/svg+xml;base64,"+d+")",f=a.gridSize*this.scale*this.gridSteps): +d="url("+this.gridImage+")";var l=c=0;null!=a.view.backgroundPageShape&&(l=this.getBackgroundPageBounds(),c=1+l.x,l=1+l.y);f=-Math.round(f-mxUtils.mod(this.translate.x*this.scale-c,f))+"px "+-Math.round(f-mxUtils.mod(this.translate.y*this.scale-l,f))+"px"}c=a.view.canvas;null!=c.ownerSVGElement&&(c=c.ownerSVGElement);null!=a.view.backgroundPageShape?(a.view.backgroundPageShape.node.style.backgroundPosition=f,a.view.backgroundPageShape.node.style.backgroundImage=d,a.view.backgroundPageShape.node.style.backgroundColor= +b,a.container.className="geDiagramContainer geDiagramBackdrop",c.style.backgroundImage="none",c.style.backgroundColor=""):(a.container.className="geDiagramContainer",c.style.backgroundPosition=f,c.style.backgroundColor=b,c.style.backgroundImage=d)};mxGraphView.prototype.createSvgGrid=function(a){for(var b=this.graph.gridSize*this.scale;b<this.minGridSize;)b*=2;for(var c=this.gridSteps*b,d=[],f=1;f<this.gridSteps;f++){var l=f*b;d.push("M 0 "+l+" L "+c+" "+l+" M "+l+" 0 L "+l+" "+c)}return'<svg width="'+ +c+'" height="'+c+'" xmlns="'+mxConstants.NS_SVG+'"><defs><pattern id="grid" width="'+c+'" height="'+c+'" patternUnits="userSpaceOnUse"><path d="'+d.join(" ")+'" fill="none" stroke="'+a+'" opacity="0.2" stroke-width="1"/><path d="M '+c+" 0 L 0 0 0 "+c+'" fill="none" stroke="'+a+'" stroke-width="1"/></pattern></defs><rect width="100%" height="100%" fill="url(#grid)"/></svg>'};var a=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(b,c){a.apply(this,arguments);if(null!=this.shiftPreview1){var e= +this.view.canvas;null!=e.ownerSVGElement&&(e=e.ownerSVGElement);var d=this.gridSize*this.view.scale*this.view.gridSteps,d=-Math.round(d-mxUtils.mod(this.view.translate.x*this.view.scale+b,d))+"px "+-Math.round(d-mxUtils.mod(this.view.translate.y*this.view.scale+c,d))+"px";e.style.backgroundPosition=d}};mxGraph.prototype.updatePageBreaks=function(a,b,c){var d=this.view.scale,f=this.view.translate,e=this.pageFormat,n=d*this.pageScale,g=this.view.getBackgroundPageBounds();b=g.width;c=g.height;var p= +new mxRectangle(d*f.x,d*f.y,e.width*n,e.height*n),k=(a=a&&Math.min(p.width,p.height)>this.minPageBreakDist)?Math.ceil(c/p.height)-1:0,r=a?Math.ceil(b/p.width)-1:0,t=g.x+b,y=g.y+c;null==this.horizontalPageBreaks&&0<k&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<r&&(this.verticalPageBreaks=[]);a=mxUtils.bind(this,function(a){if(null!=a){for(var d=a==this.horizontalPageBreaks?k:r,b=0;b<=d;b++){var f=a==this.horizontalPageBreaks?[new mxPoint(Math.round(g.x),Math.round(g.y+(b+1)*p.height)), +new mxPoint(Math.round(t),Math.round(g.y+(b+1)*p.height))]:[new mxPoint(Math.round(g.x+(b+1)*p.width),Math.round(g.y)),new mxPoint(Math.round(g.x+(b+1)*p.width),Math.round(y))];null!=a[b]?(a[b].points=f,a[b].redraw()):(f=new mxPolyline(f,this.pageBreakColor),f.dialect=this.dialect,f.isDashed=this.pageBreakDashed,f.pointerEvents=!1,f.init(this.view.backgroundPane),f.redraw(),a[b]=f)}for(b=d;b<a.length;b++)a[b].destroy();a.splice(d,a.length-d)}});a(this.horizontalPageBreaks);a(this.verticalPageBreaks)}; +var b=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(a,c,e){for(var d=0;d<c.length;d++)if(this.graph.getModel().isVertex(c[d])){var f=this.graph.getCellGeometry(c[d]);if(null!=f&&f.relative)return!1}return b.apply(this,arguments)};var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var a=e.apply(this,arguments);a.intersects=mxUtils.bind(this,function(b,c){return this.isConnecting()? +!0:mxCellMarker.prototype.intersects.apply(a,arguments)});return a};mxGraphView.prototype.createBackgroundPageShape=function(a){return new mxRectangleShape(a,"#ffffff",this.graph.defaultPageBorderColor)};mxGraphView.prototype.getBackgroundPageBounds=function(){var a=this.getGraphBounds(),b=0<a.width?a.x/this.scale-this.translate.x:0,c=0<a.height?a.y/this.scale-this.translate.y:0,d=this.graph.pageFormat,f=this.graph.pageScale,e=d.width*f,d=d.height*f,f=Math.floor(Math.min(0,b)/e),n=Math.floor(Math.min(0, +c)/d);return new mxRectangle(this.scale*(this.translate.x+f*e),this.scale*(this.translate.y+n*d),this.scale*(Math.ceil(Math.max(1,b+a.width/this.scale)/e)-f)*e,this.scale*(Math.ceil(Math.max(1,c+a.height/this.scale)/d)-n)*d)};var c=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(a,b){c.apply(this,arguments);this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft= +a+"px",this.view.backgroundPageShape.node.style.marginTop=b+"px")};var k=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(a,b,c,d,f,e){var l=k.apply(this,arguments);null==e||e||mxEvent.addListener(l,"mousedown",function(a){mxEvent.consume(a)});return l};var m=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(a){var b=this.graph.getModel(),c=b.getParent(this.graph.getSelectionCell()),d=m.apply(this,arguments),f=b.getParent(d); +if(null==c||c!=d&&c!=f)for(;!this.graph.isCellSelected(d)&&!this.graph.isCellSelected(f)&&b.isVertex(f)&&!this.graph.isContainer(f);)d=f,f=this.graph.getModel().getParent(d);return d};var q=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(a,b){var c=q.apply(this,arguments);if(!c)for(var d=this.graph.getModel(),f=d.getParent(a);null!=f;){if(this.graph.isCellSelected(f)&&d.isVertex(f)){c=!0;break}f=d.getParent(f)}return c};mxGraphHandler.prototype.selectDelayed= function(a){if(!this.graph.popupMenuHandler.isPopupTrigger(a)){var b=a.getCell();null==b&&(b=this.cell);var c=this.graph.view.getState(b);if(null==c||!a.isSource(c.control))for(var c=this.graph.getModel(),d=c.getParent(b);!this.graph.isCellSelected(d)&&c.isVertex(d);)b=d,d=c.getParent(b);this.graph.selectCellForEvent(b,a.getEvent())}};mxPopupMenuHandler.prototype.getCellForPopupEvent=function(a){a=a.getCell();for(var b=this.graph.getModel(),c=b.getParent(a);b.isVertex(c)&&!this.graph.isContainer(c);)this.graph.isCellSelected(c)&& -(a=c),c=b.getParent(c);return a}})();EditorUi=function(a,b,f){mxEventSource.call(this);this.destroyFunctions=[];this.editor=a||new Editor;this.container=b||document.body;var d=this.editor.graph;d.lightbox=f;d.useCssTransforms&&(this.lazyZoomDelay=0);mxClient.IS_SVG?mxPopupMenu.prototype.submenuImage="data:image/gif;base64,R0lGODlhCQAJAIAAAP///zMzMyH5BAEAAAAALAAAAAAJAAkAAAIPhI8WebHsHopSOVgb26AAADs=":(new Image).src=mxPopupMenu.prototype.submenuImage;mxClient.IS_SVG||null==mxConnectionHandler.prototype.connectImage||((new Image).src=mxConnectionHandler.prototype.connectImage.src); -this.editor.chromeless&&!this.editor.editable&&(this.footerHeight=0,d.isEnabled=function(){return!1},d.panningHandler.isForcePanningEvent=function(a){return!mxEvent.isPopupTrigger(a.getEvent())});this.actions=new Actions(this);this.menus=this.createMenus();this.createDivs();this.createUi();this.refresh();var k=mxUtils.bind(this,function(a){null==a&&(a=window.event);return this.isSelectionAllowed(a)||d.isEditing()});this.container==document.body&&(this.menubarContainer.onselectstart=k,this.menubarContainer.onmousedown= -k,this.toolbarContainer.onselectstart=k,this.toolbarContainer.onmousedown=k,this.diagramContainer.onselectstart=k,this.diagramContainer.onmousedown=k,this.sidebarContainer.onselectstart=k,this.sidebarContainer.onmousedown=k,this.formatContainer.onselectstart=k,this.formatContainer.onmousedown=k,this.footerContainer.onselectstart=k,this.footerContainer.onmousedown=k,null!=this.tabContainer&&(this.tabContainer.onselectstart=k));!this.editor.chromeless||this.editor.editable?(b=function(a){var c=mxEvent.getSource(a); -if("A"==c.nodeName)for(;null!=c;){if("geHint"==c.className)return!0;c=c.parentNode}return k(a)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,"contextmenu",b):this.diagramContainer.oncontextmenu=b):d.panningHandler.usePopupTrigger=!1;d.init(this.diagramContainer);mxClient.IS_SVG&&null!=d.view.getDrawPane()&&(b=d.view.getDrawPane().ownerSVGElement,null!=b&&(b.style.position="absolute"));this.hoverIcons=this.createHoverIcons(); -mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(a){var c=mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(a)-c.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(a)-c.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var n=!1,p=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(a,c){return n||p.apply(this,arguments)};this.keydownHandler= -mxUtils.bind(this,function(a){32==a.which?(n=!0,this.hoverIcons.reset(),d.container.style.cursor="move",d.isEditing()||mxEvent.getSource(a)!=d.container||mxEvent.consume(a)):mxEvent.isConsumed(a)||27!=a.keyCode||this.hideDialog(null,!0)});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(a){d.container.style.cursor="";n=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var q=d.panningHandler.isForcePanningEvent;d.panningHandler.isForcePanningEvent= -function(a){return q.apply(this,arguments)||n||mxEvent.isMouseEvent(a.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(a.getEvent()))&&(!mxEvent.isControlDown(a.getEvent())&&mxEvent.isRightMouseButton(a.getEvent())||mxEvent.isMiddleMouseButton(a.getEvent()))};var w=d.cellEditor.isStopEditingEvent;d.cellEditor.isStopEditingEvent=function(a){return w.apply(this,arguments)||13==a.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxClient.IS_SF&&mxEvent.isShiftDown(a))}; -var c=!1,g=null,h=null,l=null,t=mxUtils.bind(this,function(){if(null!=this.toolbar&&c!=d.cellEditor.isContentEditing()){for(var a=this.toolbar.container.firstChild,b=[];null!=a;){var f=a.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,a)&&(a.parentNode.removeChild(a),b.push(a));a=f}a=this.toolbar.fontMenu;f=this.toolbar.sizeMenu;if(null==l)this.toolbar.createTextToolbar();else{for(var m=0;m<l.length;m++)this.toolbar.container.appendChild(l[m]);this.toolbar.fontMenu=g;this.toolbar.sizeMenu= -h}c=d.cellEditor.isContentEditing();g=a;h=f;l=b}}),m=this,r=d.cellEditor.startEditing;d.cellEditor.startEditing=function(){r.apply(this,arguments);t();if(d.cellEditor.isContentEditing()){var a=!1,c=function(){a||(a=!0,window.setTimeout(function(){for(var c=d.getSelectedElement();null!=c&&c.nodeType!=mxConstants.NODETYPE_ELEMENT;)c=c.parentNode;if(null!=c&&(c=mxUtils.getCurrentStyle(c),null!=c&&null!=m.toolbar)){var b=c.fontFamily;"'"==b.charAt(0)&&(b=b.substring(1));"'"==b.charAt(b.length-1)&&(b= -b.substring(0,b.length-1));m.toolbar.setFontName(b);m.toolbar.setFontSize(parseInt(c.fontSize))}a=!1},0))};mxEvent.addListener(d.cellEditor.textarea,"input",c);mxEvent.addListener(d.cellEditor.textarea,"touchend",c);mxEvent.addListener(d.cellEditor.textarea,"mouseup",c);mxEvent.addListener(d.cellEditor.textarea,"keyup",c);c()}};var x=d.cellEditor.stopEditing;d.cellEditor.stopEditing=function(a,c){x.apply(this,arguments);t()};d.container.setAttribute("tabindex","0");d.container.style.cursor="default"; -if(window.self===window.top&&null!=d.container.parentNode)try{d.container.focus()}catch(G){}var v=d.fireMouseEvent;d.fireMouseEvent=function(a,c,b){a==mxEvent.MOUSE_DOWN&&this.container.focus();v.apply(this,arguments)};d.popupMenuHandler.autoExpand=!0;null!=this.menus&&(d.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a,c,b){this.menus.createPopupMenu(a,c,b)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(a){d.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(a); -this.getKeyHandler=function(){return keyHandler};var D="rounded shadow glass dashed dashPattern comic labelBackgroundColor".split(" "),y="shape edgeStyle curved rounded elbow comic jumpStyle jumpSize".split(" ");this.setDefaultStyle=function(a){var c=d.view.getState(a);if(null!=c){a=a.clone();a.style="";a=d.getCellStyle(a);var b=[],g=[],h;for(h in c.style)a[h]!=c.style[h]&&(b.push(c.style[h]),g.push(h));h=d.getModel().getStyle(c.cell);for(var f=null!=h?h.split(";"):[],l=0;l<f.length;l++){var m=f[l], -t=m.indexOf("=");0<=t&&(h=m.substring(0,t),m=m.substring(t+1),null!=a[h]&&"none"==m&&(b.push(m),g.push(h)))}d.getModel().isEdge(c.cell)?d.currentEdgeStyle={}:d.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",g,"values",b,"cells",[c.cell]))}};this.clearDefaultStyle=function(){d.currentEdgeStyle=mxUtils.clone(d.defaultEdgeStyle);d.currentVertexStyle=mxUtils.clone(d.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var u= -["fontFamily","fontSize","fontColor"],A="edgeStyle startArrow startFill startSize endArrow endFill endSize jettySize orthogonalLoop".split(" "),F=["startArrow startFill startSize sourcePerimeterSpacing endArrow endFill endSize targetPerimeterSpacing jettySize orthogonalLoop".split(" "),["strokeColor","strokeWidth"],["fillColor","gradientColor"],u,["opacity"],["align"],["html"]];for(a=0;a<F.length;a++)for(b=0;b<F[a].length;b++)D.push(F[a][b]);for(a=0;a<y.length;a++)0>mxUtils.indexOf(D,y[a])&&D.push(y[a]); -var Q=function(a,c){var b=d.getModel();b.beginUpdate();try{if(c)for(var h=b.isEdge(m),g=h?d.currentEdgeStyle:d.currentVertexStyle,h=["fontSize","fontFamily","fontColor"],f=0;f<h.length;f++){var l=g[h[f]];null!=l&&d.setCellStyles(h[f],l,a)}else for(l=0;l<a.length;l++){for(var m=a[l],t=b.getStyle(m),r=null!=t?t.split(";"):[],J=D.slice(),f=0;f<r.length;f++){var u=r[f],v=u.indexOf("=");if(0<=v){var k=u.substring(0,v),A=mxUtils.indexOf(J,k);0<=A&&J.splice(A,1);for(var x=0;x<F.length;x++){var q=F[x];if(0<= -mxUtils.indexOf(q,k))for(var n=0;n<q.length;n++){var p=mxUtils.indexOf(J,q[n]);0<=p&&J.splice(p,1)}}}}for(var g=(h=b.isEdge(m))?d.currentEdgeStyle:d.currentVertexStyle,I=b.getStyle(m),f=0;f<J.length;f++){var k=J[f],G=g[k];null==G||"shape"==k&&!h||h&&!(0>mxUtils.indexOf(y,k))||(I=mxUtils.setStyle(I,k,G))}b.setStyle(m,I)}}finally{b.endUpdate()}};d.addListener("cellsInserted",function(a,c){Q(c.getProperty("cells"))});d.addListener("textInserted",function(a,c){Q(c.getProperty("cells"),!0)});d.connectionHandler.addListener(mxEvent.CONNECT, -function(a,c){var b=[c.getProperty("cell")];c.getProperty("terminalInserted")&&b.push(c.getProperty("terminal"));Q(b)});this.addListener("styleChanged",mxUtils.bind(this,function(a,c){var b=c.getProperty("cells"),h=!1,g=!1;if(0<b.length)for(var f=0;f<b.length&&(h=d.getModel().isVertex(b[f])||h,!(g=d.getModel().isEdge(b[f])||g)||!h);f++);else g=h=!0;for(var b=c.getProperty("keys"),l=c.getProperty("values"),f=0;f<b.length;f++){var m=0<=mxUtils.indexOf(u,b[f]);if("strokeColor"!=b[f]||null!=l[f]&&"none"!= -l[f])if(0<=mxUtils.indexOf(y,b[f]))g||0<=mxUtils.indexOf(A,b[f])?null==l[f]?delete d.currentEdgeStyle[b[f]]:d.currentEdgeStyle[b[f]]=l[f]:h&&0<=mxUtils.indexOf(D,b[f])&&(null==l[f]?delete d.currentVertexStyle[b[f]]:d.currentVertexStyle[b[f]]=l[f]);else if(0<=mxUtils.indexOf(D,b[f])){if(h||m)null==l[f]?delete d.currentVertexStyle[b[f]]:d.currentVertexStyle[b[f]]=l[f];if(g||m||0<=mxUtils.indexOf(A,b[f]))null==l[f]?delete d.currentEdgeStyle[b[f]]:d.currentEdgeStyle[b[f]]=l[f]}}null!=this.toolbar&&(this.toolbar.setFontName(d.currentVertexStyle.fontFamily|| -Menus.prototype.defaultFont),this.toolbar.setFontSize(d.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==d.currentEdgeStyle.edgeStyle&&"1"==d.currentEdgeStyle.curved?"geSprite geSprite-curved":"straight"==d.currentEdgeStyle.edgeStyle||"none"==d.currentEdgeStyle.edgeStyle||null==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"== -d.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==d.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==d.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):"geSprite geSprite-orthogonal"),null!=this.toolbar.edgeShapeMenu&&(this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==d.currentEdgeStyle.shape? -"geSprite geSprite-linkedge":"flexArrow"==d.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==d.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"),null!=this.toolbar.lineStartMenu&&(this.toolbar.lineStartMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("start",d.currentEdgeStyle.shape,d.currentEdgeStyle[mxConstants.STYLE_STARTARROW],mxUtils.getValue(d.currentEdgeStyle,"startFill","1"))),null!=this.toolbar.lineEndMenu&&(this.toolbar.lineEndMenu.getElementsByTagName("div")[0].className= -this.getCssClassForMarker("end",d.currentEdgeStyle.shape,d.currentEdgeStyle[mxConstants.STYLE_ENDARROW],mxUtils.getValue(d.currentEdgeStyle,"endFill","1"))))}));null!=this.toolbar&&(a=mxUtils.bind(this,function(){var a=d.currentVertexStyle.fontFamily||"Helvetica",c=String(d.currentVertexStyle.fontSize||"12"),b=d.getView().getState(d.getSelectionCell());null!=b&&(a=b.style[mxConstants.STYLE_FONTFAMILY]||a,c=b.style[mxConstants.STYLE_FONTSIZE]||c,10<a.length&&(a=a.substring(0,8)+"..."));this.toolbar.setFontName(a); -this.toolbar.setFontSize(c)}),d.getSelectionModel().addListener(mxEvent.CHANGE,a),d.getModel().addListener(mxEvent.CHANGE,a));d.addListener(mxEvent.CELLS_ADDED,function(a,c){var b=c.getProperty("cells"),h=c.getProperty("parent");d.getModel().isLayer(h)&&!d.isCellVisible(h)&&null!=b&&0<b.length&&d.getModel().setVisible(h,!0)});this.gestureHandler=mxUtils.bind(this,function(a){null!=this.currentMenu&&mxEvent.getSource(a)!=this.currentMenu.div&&this.hideCurrentMenu()});mxEvent.addGestureListeners(document, -this.gestureHandler);this.resizeHandler=mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){null!=this.editor.graph&&this.refresh()}),0)});mxEvent.addListener(window,"resize",this.resizeHandler);this.orientationChangeHandler=mxUtils.bind(this,function(){this.refresh()});mxEvent.addListener(window,"orientationchange",this.orientationChangeHandler);mxClient.IS_IOS&&!window.navigator.standalone&&(this.scrollHandler=mxUtils.bind(this,function(){window.scrollTo(0,0)}),mxEvent.addListener(window, -"scroll",this.scrollHandler));this.editor.addListener("resetGraphView",mxUtils.bind(this,function(){this.resetScrollbars()}));this.addListener("gridEnabledChanged",mxUtils.bind(this,function(){d.view.validateBackground()}));this.addListener("backgroundColorChanged",mxUtils.bind(this,function(){d.view.validateBackground()}));d.addListener("gridSizeChanged",mxUtils.bind(this,function(){d.isGridEnabled()&&d.view.validateBackground()}));this.editor.resetGraph();this.init();this.open()}; -mxUtils.extend(EditorUi,mxEventSource);EditorUi.compactUi=!0;EditorUi.prototype.splitSize=mxClient.IS_TOUCH||mxClient.IS_POINTER?12:8;EditorUi.prototype.menubarHeight=30;EditorUi.prototype.formatEnabled=!0;EditorUi.prototype.formatWidth=240;EditorUi.prototype.toolbarHeight=34;EditorUi.prototype.footerHeight=28;EditorUi.prototype.sidebarFooterHeight=34;EditorUi.prototype.hsplitPosition=640>=screen.width?118:208;EditorUi.prototype.allowAnimation=!0;EditorUi.prototype.lightboxMaxFitScale=2; -EditorUi.prototype.lightboxVerticalDivider=4;EditorUi.prototype.hsplitClickEnabled=!1; +(a=c),c=b.getParent(c);return a}})();EditorUi=function(a,b,e){mxEventSource.call(this);this.destroyFunctions=[];this.editor=a||new Editor;this.container=b||document.body;var c=this.editor.graph;c.lightbox=e;c.useCssTransforms&&(this.lazyZoomDelay=0);mxClient.IS_SVG?mxPopupMenu.prototype.submenuImage="data:image/gif;base64,R0lGODlhCQAJAIAAAP///zMzMyH5BAEAAAAALAAAAAAJAAkAAAIPhI8WebHsHopSOVgb26AAADs=":(new Image).src=mxPopupMenu.prototype.submenuImage;mxClient.IS_SVG||null==mxConnectionHandler.prototype.connectImage||((new Image).src=mxConnectionHandler.prototype.connectImage.src); +this.editor.chromeless&&!this.editor.editable&&(this.footerHeight=0,c.isEnabled=function(){return!1},c.panningHandler.isForcePanningEvent=function(a){return!mxEvent.isPopupTrigger(a.getEvent())});this.actions=new Actions(this);this.menus=this.createMenus();this.createDivs();this.createUi();this.refresh();var k=mxUtils.bind(this,function(a){null==a&&(a=window.event);return c.isEditing()||null!=a&&this.isSelectionAllowed(a)});this.container==document.body&&(this.menubarContainer.onselectstart=k,this.menubarContainer.onmousedown= +k,this.toolbarContainer.onselectstart=k,this.toolbarContainer.onmousedown=k,this.diagramContainer.onselectstart=k,this.diagramContainer.onmousedown=k,this.sidebarContainer.onselectstart=k,this.sidebarContainer.onmousedown=k,this.formatContainer.onselectstart=k,this.formatContainer.onmousedown=k,this.footerContainer.onselectstart=k,this.footerContainer.onmousedown=k,null!=this.tabContainer&&(this.tabContainer.onselectstart=k));!this.editor.chromeless||this.editor.editable?(b=function(a){if(null!=a){var d= +mxEvent.getSource(a);if("A"==d.nodeName)for(;null!=d;){if("geHint"==d.className)return!0;d=d.parentNode}}return k(a)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,"contextmenu",b):this.diagramContainer.oncontextmenu=b):c.panningHandler.usePopupTrigger=!1;c.init(this.diagramContainer);mxClient.IS_SVG&&null!=c.view.getDrawPane()&&(b=c.view.getDrawPane().ownerSVGElement,null!=b&&(b.style.position="absolute"));this.hoverIcons= +this.createHoverIcons();mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(a){var d=mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(a)-d.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(a)-d.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var m=!1,q=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(a,d){return m||q.apply(this, +arguments)};this.keydownHandler=mxUtils.bind(this,function(a){32==a.which?(m=!0,this.hoverIcons.reset(),c.container.style.cursor="move",c.isEditing()||mxEvent.getSource(a)!=c.container||mxEvent.consume(a)):mxEvent.isConsumed(a)||27!=a.keyCode||this.hideDialog(null,!0)});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(a){c.container.style.cursor="";m=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var r=c.panningHandler.isForcePanningEvent; +c.panningHandler.isForcePanningEvent=function(a){return r.apply(this,arguments)||m||mxEvent.isMouseEvent(a.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(a.getEvent()))&&(!mxEvent.isControlDown(a.getEvent())&&mxEvent.isRightMouseButton(a.getEvent())||mxEvent.isMiddleMouseButton(a.getEvent()))};var v=c.cellEditor.isStopEditingEvent;c.cellEditor.isStopEditingEvent=function(a){return v.apply(this,arguments)||13==a.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a)|| +mxClient.IS_SF&&mxEvent.isShiftDown(a))};var z=!1,d=null,f=null,l=null,n=mxUtils.bind(this,function(){if(null!=this.toolbar&&z!=c.cellEditor.isContentEditing()){for(var a=this.toolbar.container.firstChild,b=[];null!=a;){var e=a.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,a)&&(a.parentNode.removeChild(a),b.push(a));a=e}a=this.toolbar.fontMenu;e=this.toolbar.sizeMenu;if(null==l)this.toolbar.createTextToolbar();else{for(var g=0;g<l.length;g++)this.toolbar.container.appendChild(l[g]);this.toolbar.fontMenu= +d;this.toolbar.sizeMenu=f}z=c.cellEditor.isContentEditing();d=a;f=e;l=b}}),g=this,p=c.cellEditor.startEditing;c.cellEditor.startEditing=function(){p.apply(this,arguments);n();if(c.cellEditor.isContentEditing()){var a=!1,d=function(){a||(a=!0,window.setTimeout(function(){for(var d=c.getSelectedElement();null!=d&&d.nodeType!=mxConstants.NODETYPE_ELEMENT;)d=d.parentNode;if(null!=d&&(d=mxUtils.getCurrentStyle(d),null!=d&&null!=g.toolbar)){var b=d.fontFamily;"'"==b.charAt(0)&&(b=b.substring(1));"'"==b.charAt(b.length- +1)&&(b=b.substring(0,b.length-1));g.toolbar.setFontName(b);g.toolbar.setFontSize(parseInt(d.fontSize))}a=!1},0))};mxEvent.addListener(c.cellEditor.textarea,"input",d);mxEvent.addListener(c.cellEditor.textarea,"touchend",d);mxEvent.addListener(c.cellEditor.textarea,"mouseup",d);mxEvent.addListener(c.cellEditor.textarea,"keyup",d);d()}};var B=c.cellEditor.stopEditing;c.cellEditor.stopEditing=function(a,d){B.apply(this,arguments);n()};c.container.setAttribute("tabindex","0");c.container.style.cursor= +"default";if(window.self===window.top&&null!=c.container.parentNode)try{c.container.focus()}catch(S){}var x=c.fireMouseEvent;c.fireMouseEvent=function(a,d,b){a==mxEvent.MOUSE_DOWN&&this.container.focus();x.apply(this,arguments)};c.popupMenuHandler.autoExpand=!0;null!=this.menus&&(c.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a,d,b){this.menus.createPopupMenu(a,d,b)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(a){c.popupMenuHandler.hideMenu()}));this.keyHandler= +this.createKeyHandler(a);this.getKeyHandler=function(){return keyHandler};var t="rounded shadow glass dashed dashPattern comic labelBackgroundColor".split(" "),y="shape edgeStyle curved rounded elbow comic jumpStyle jumpSize".split(" ");this.setDefaultStyle=function(a){var d=c.view.getState(a);if(null!=d){a=a.clone();a.style="";a=c.getCellStyle(a);var b=[],f=[],e;for(e in d.style)a[e]!=d.style[e]&&(b.push(d.style[e]),f.push(e));e=c.getModel().getStyle(d.cell);for(var g=null!=e?e.split(";"):[],l=0;l< +g.length;l++){var n=g[l],p=n.indexOf("=");0<=p&&(e=n.substring(0,p),n=n.substring(p+1),null!=a[e]&&"none"==n&&(b.push(n),f.push(e)))}c.getModel().isEdge(d.cell)?c.currentEdgeStyle={}:c.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",f,"values",b,"cells",[d.cell]))}};this.clearDefaultStyle=function(){c.currentEdgeStyle=mxUtils.clone(c.defaultEdgeStyle);c.currentVertexStyle=mxUtils.clone(c.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values", +[],"cells",[]))};var u=["fontFamily","fontSize","fontColor"],A="edgeStyle startArrow startFill startSize endArrow endFill endSize jettySize orthogonalLoop".split(" "),D=["startArrow startFill startSize sourcePerimeterSpacing endArrow endFill endSize targetPerimeterSpacing jettySize orthogonalLoop".split(" "),["strokeColor","strokeWidth"],["fillColor","gradientColor"],u,["opacity"],["align"],["html"]];for(a=0;a<D.length;a++)for(b=0;b<D[a].length;b++)t.push(D[a][b]);for(a=0;a<y.length;a++)0>mxUtils.indexOf(t, +y[a])&&t.push(y[a]);var U=function(a,d){var b=c.getModel();b.beginUpdate();try{if(d)for(var f=b.isEdge(n),e=f?c.currentEdgeStyle:c.currentVertexStyle,f=["fontSize","fontFamily","fontColor"],g=0;g<f.length;g++){var l=e[f[g]];null!=l&&c.setCellStyles(f[g],l,a)}else for(l=0;l<a.length;l++){for(var n=a[l],p=b.getStyle(n),u=null!=p?p.split(";"):[],J=t.slice(),g=0;g<u.length;g++){var k=u[g],B=k.indexOf("=");if(0<=B){var A=k.substring(0,B),x=mxUtils.indexOf(J,A);0<=x&&J.splice(x,1);for(var r=0;r<D.length;r++){var m= +D[r];if(0<=mxUtils.indexOf(m,A))for(var q=0;q<m.length;q++){var S=mxUtils.indexOf(J,m[q]);0<=S&&J.splice(S,1)}}}}for(var e=(f=b.isEdge(n))?c.currentEdgeStyle:c.currentVertexStyle,U=b.getStyle(n),g=0;g<J.length;g++){var A=J[g],v=e[A];null==v||"shape"==A&&!f||f&&!(0>mxUtils.indexOf(y,A))||(U=mxUtils.setStyle(U,A,v))}b.setStyle(n,U)}}finally{b.endUpdate()}};c.addListener("cellsInserted",function(a,d){U(d.getProperty("cells"))});c.addListener("textInserted",function(a,d){U(d.getProperty("cells"),!0)}); +c.connectionHandler.addListener(mxEvent.CONNECT,function(a,d){var b=[d.getProperty("cell")];d.getProperty("terminalInserted")&&b.push(d.getProperty("terminal"));U(b)});this.addListener("styleChanged",mxUtils.bind(this,function(a,d){var b=d.getProperty("cells"),f=!1,e=!1;if(0<b.length)for(var g=0;g<b.length&&(f=c.getModel().isVertex(b[g])||f,!(e=c.getModel().isEdge(b[g])||e)||!f);g++);else e=f=!0;for(var b=d.getProperty("keys"),l=d.getProperty("values"),g=0;g<b.length;g++){var n=0<=mxUtils.indexOf(u, +b[g]);if("strokeColor"!=b[g]||null!=l[g]&&"none"!=l[g])if(0<=mxUtils.indexOf(y,b[g]))e||0<=mxUtils.indexOf(A,b[g])?null==l[g]?delete c.currentEdgeStyle[b[g]]:c.currentEdgeStyle[b[g]]=l[g]:f&&0<=mxUtils.indexOf(t,b[g])&&(null==l[g]?delete c.currentVertexStyle[b[g]]:c.currentVertexStyle[b[g]]=l[g]);else if(0<=mxUtils.indexOf(t,b[g])){if(f||n)null==l[g]?delete c.currentVertexStyle[b[g]]:c.currentVertexStyle[b[g]]=l[g];if(e||n||0<=mxUtils.indexOf(A,b[g]))null==l[g]?delete c.currentEdgeStyle[b[g]]:c.currentEdgeStyle[b[g]]= +l[g]}}null!=this.toolbar&&(this.toolbar.setFontName(c.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(c.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==c.currentEdgeStyle.edgeStyle&&"1"==c.currentEdgeStyle.curved?"geSprite geSprite-curved":"straight"==c.currentEdgeStyle.edgeStyle||"none"==c.currentEdgeStyle.edgeStyle||null== +c.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"==c.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==c.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==c.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==c.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==c.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):"geSprite geSprite-orthogonal"),null!=this.toolbar.edgeShapeMenu&& +(this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==c.currentEdgeStyle.shape?"geSprite geSprite-linkedge":"flexArrow"==c.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==c.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"),null!=this.toolbar.lineStartMenu&&(this.toolbar.lineStartMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("start",c.currentEdgeStyle.shape,c.currentEdgeStyle[mxConstants.STYLE_STARTARROW], +mxUtils.getValue(c.currentEdgeStyle,"startFill","1"))),null!=this.toolbar.lineEndMenu&&(this.toolbar.lineEndMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("end",c.currentEdgeStyle.shape,c.currentEdgeStyle[mxConstants.STYLE_ENDARROW],mxUtils.getValue(c.currentEdgeStyle,"endFill","1"))))}));null!=this.toolbar&&(a=mxUtils.bind(this,function(){var a=c.currentVertexStyle.fontFamily||"Helvetica",d=String(c.currentVertexStyle.fontSize||"12"),b=c.getView().getState(c.getSelectionCell()); +null!=b&&(a=b.style[mxConstants.STYLE_FONTFAMILY]||a,d=b.style[mxConstants.STYLE_FONTSIZE]||d,10<a.length&&(a=a.substring(0,8)+"..."));this.toolbar.setFontName(a);this.toolbar.setFontSize(d)}),c.getSelectionModel().addListener(mxEvent.CHANGE,a),c.getModel().addListener(mxEvent.CHANGE,a));c.addListener(mxEvent.CELLS_ADDED,function(a,d){var b=d.getProperty("cells"),f=d.getProperty("parent");c.getModel().isLayer(f)&&!c.isCellVisible(f)&&null!=b&&0<b.length&&c.getModel().setVisible(f,!0)});this.gestureHandler= +mxUtils.bind(this,function(a){null!=this.currentMenu&&mxEvent.getSource(a)!=this.currentMenu.div&&this.hideCurrentMenu()});mxEvent.addGestureListeners(document,this.gestureHandler);this.resizeHandler=mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){null!=this.editor.graph&&this.refresh()}),0)});mxEvent.addListener(window,"resize",this.resizeHandler);this.orientationChangeHandler=mxUtils.bind(this,function(){this.refresh()});mxEvent.addListener(window,"orientationchange", +this.orientationChangeHandler);mxClient.IS_IOS&&!window.navigator.standalone&&(this.scrollHandler=mxUtils.bind(this,function(){window.scrollTo(0,0)}),mxEvent.addListener(window,"scroll",this.scrollHandler));this.editor.addListener("resetGraphView",mxUtils.bind(this,function(){this.resetScrollbars()}));this.addListener("gridEnabledChanged",mxUtils.bind(this,function(){c.view.validateBackground()}));this.addListener("backgroundColorChanged",mxUtils.bind(this,function(){c.view.validateBackground()})); +c.addListener("gridSizeChanged",mxUtils.bind(this,function(){c.isGridEnabled()&&c.view.validateBackground()}));this.editor.resetGraph();this.init();this.open()};mxUtils.extend(EditorUi,mxEventSource);EditorUi.compactUi=!0;EditorUi.prototype.splitSize=mxClient.IS_TOUCH||mxClient.IS_POINTER?12:8;EditorUi.prototype.menubarHeight=30;EditorUi.prototype.formatEnabled=!0;EditorUi.prototype.formatWidth=240;EditorUi.prototype.toolbarHeight=34;EditorUi.prototype.footerHeight=28; +EditorUi.prototype.sidebarFooterHeight=34;EditorUi.prototype.hsplitPosition=640>=screen.width?118:208;EditorUi.prototype.allowAnimation=!0;EditorUi.prototype.lightboxMaxFitScale=2;EditorUi.prototype.lightboxVerticalDivider=4;EditorUi.prototype.hsplitClickEnabled=!1; EditorUi.prototype.init=function(){var a=this.editor.graph;mxEvent.addListener(a.container,"keydown",mxUtils.bind(this,function(a){this.onKeyDown(a)}));mxEvent.addListener(a.container,"keypress",mxUtils.bind(this,function(a){this.onKeyPress(a)}));this.addUndoListener();this.addBeforeUnloadListener();a.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.updateActionStates()}));a.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.updateActionStates()})); -var b=a.setDefaultParent,f=this;this.editor.graph.setDefaultParent=function(){b.apply(this,arguments);f.updateActionStates()};a.editLink=f.actions.get("editLink").funct;this.updateActionStates();this.initClipboard();this.initCanvas();null!=this.format&&this.format.init()};EditorUi.prototype.onKeyDown=function(a){var b=this.editor.graph;9==a.which&&b.isEnabled()&&!mxEvent.isAltDown(a)&&(b.isEditing()?b.stopEditing(!1):b.selectCell(!mxEvent.isShiftDown(a)),mxEvent.consume(a))}; +var b=a.setDefaultParent,e=this;this.editor.graph.setDefaultParent=function(){b.apply(this,arguments);e.updateActionStates()};a.editLink=e.actions.get("editLink").funct;this.updateActionStates();this.initClipboard();this.initCanvas();null!=this.format&&this.format.init()};EditorUi.prototype.onKeyDown=function(a){var b=this.editor.graph;9==a.which&&b.isEnabled()&&!mxEvent.isAltDown(a)&&(b.isEditing()?b.stopEditing(!1):b.selectCell(!mxEvent.isShiftDown(a)),mxEvent.consume(a))}; EditorUi.prototype.onKeyPress=function(a){var b=this.editor.graph;!this.isImmediateEditingEvent(a)||b.isEditing()||b.isSelectionEmpty()||0===a.which||mxEvent.isAltDown(a)||mxEvent.isControlDown(a)||mxEvent.isMetaDown(a)||(b.escape(),b.startEditing(),mxClient.IS_FF&&(b=b.cellEditor,b.textarea.innerHTML=String.fromCharCode(a.which),a=document.createRange(),a.selectNodeContents(b.textarea),a.collapse(!1),b=window.getSelection(),b.removeAllRanges(),b.addRange(a)))}; EditorUi.prototype.isImmediateEditingEvent=function(a){return!0}; -EditorUi.prototype.getCssClassForMarker=function(a,b,f,d){return"flexArrow"==b?null!=f&&f!=mxConstants.NONE?"geSprite geSprite-"+a+"blocktrans":"geSprite geSprite-noarrow":f==mxConstants.ARROW_CLASSIC?"1"==d?"geSprite geSprite-"+a+"classic":"geSprite geSprite-"+a+"classictrans":f==mxConstants.ARROW_CLASSIC_THIN?"1"==d?"geSprite geSprite-"+a+"classicthin":"geSprite geSprite-"+a+"classicthintrans":f==mxConstants.ARROW_OPEN?"geSprite geSprite-"+a+"open":f==mxConstants.ARROW_OPEN_THIN?"geSprite geSprite-"+ -a+"openthin":f==mxConstants.ARROW_BLOCK?"1"==d?"geSprite geSprite-"+a+"block":"geSprite geSprite-"+a+"blocktrans":f==mxConstants.ARROW_BLOCK_THIN?"1"==d?"geSprite geSprite-"+a+"blockthin":"geSprite geSprite-"+a+"blockthintrans":f==mxConstants.ARROW_OVAL?"1"==d?"geSprite geSprite-"+a+"oval":"geSprite geSprite-"+a+"ovaltrans":f==mxConstants.ARROW_DIAMOND?"1"==d?"geSprite geSprite-"+a+"diamond":"geSprite geSprite-"+a+"diamondtrans":f==mxConstants.ARROW_DIAMOND_THIN?"1"==d?"geSprite geSprite-"+a+"thindiamond": -"geSprite geSprite-"+a+"thindiamondtrans":"openAsync"==f?"geSprite geSprite-"+a+"openasync":"dash"==f?"geSprite geSprite-"+a+"dash":"cross"==f?"geSprite geSprite-"+a+"cross":"async"==f?"1"==d?"geSprite geSprite-"+a+"async":"geSprite geSprite-"+a+"asynctrans":"circle"==f||"circlePlus"==f?"1"==d||"circle"==f?"geSprite geSprite-"+a+"circle":"geSprite geSprite-"+a+"circleplus":"ERone"==f?"geSprite geSprite-"+a+"erone":"ERmandOne"==f?"geSprite geSprite-"+a+"eronetoone":"ERmany"==f?"geSprite geSprite-"+ -a+"ermany":"ERoneToMany"==f?"geSprite geSprite-"+a+"eronetomany":"ERzeroToOne"==f?"geSprite geSprite-"+a+"eroneopt":"ERzeroToMany"==f?"geSprite geSprite-"+a+"ermanyopt":"geSprite geSprite-noarrow"};EditorUi.prototype.createMenus=function(){return null}; -EditorUi.prototype.updatePasteActionStates=function(){var a=this.editor.graph,b=this.actions.get("paste"),f=this.actions.get("pasteHere");b.setEnabled(this.editor.graph.cellEditor.isContentEditing()||!mxClipboard.isEmpty()&&a.isEnabled()&&!a.isCellLocked(a.getDefaultParent()));f.setEnabled(b.isEnabled())}; -EditorUi.prototype.initClipboard=function(){var a=this,b=mxClipboard.cut;mxClipboard.cut=function(d){d.cellEditor.isContentEditing()?document.execCommand("cut",!1,null):b.apply(this,arguments);a.updatePasteActionStates()};var f=mxClipboard.copy;mxClipboard.copy=function(b){b.cellEditor.isContentEditing()?document.execCommand("copy",!1,null):f.apply(this,arguments);a.updatePasteActionStates()};var d=mxClipboard.paste;mxClipboard.paste=function(b){var f=null;b.cellEditor.isContentEditing()?document.execCommand("paste", -!1,null):f=d.apply(this,arguments);a.updatePasteActionStates();return f};var k=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){k.apply(this,arguments);a.updatePasteActionStates()};var n=this.editor.graph.cellEditor.stopEditing;this.editor.graph.cellEditor.stopEditing=function(b,d){n.apply(this,arguments);a.updatePasteActionStates()};this.updatePasteActionStates()};EditorUi.prototype.lazyZoomDelay=20; -EditorUi.prototype.initCanvas=function(){var a=this.editor.graph;a.timerAutoScroll=!0;a.getPagePadding=function(){return new mxPoint(Math.max(0,Math.round((a.container.offsetWidth-34)/a.view.scale)),Math.max(0,Math.round((a.container.offsetHeight-34)/a.view.scale)))};a.view.getBackgroundPageBounds=function(){var a=this.graph.getPageLayout(),c=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+a.x*c.width),this.scale*(this.translate.y+a.y*c.height),this.scale*a.width*c.width, -this.scale*a.height*c.height)};a.getPreferredPageSize=function(a,c,b){a=this.getPageLayout();c=this.getPageSize();return new mxRectangle(0,0,a.width*c.width,a.height*c.height)};var b=null,f=this;if(this.editor.isChromelessView()){this.chromelessResize=b=mxUtils.bind(this,function(c,b,d,h){if(null!=a.container){d=null!=d?d:0;h=null!=h?h:0;var g=a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds(),f=mxUtils.hasScrollbars(a.container),l=a.view.translate,m=a.view.scale,t=mxRectangle.fromRectangle(g); -t.x=t.x/m-l.x;t.y=t.y/m-l.y;t.width/=m;t.height/=m;var l=a.container.scrollTop,r=a.container.scrollLeft,u=mxClient.IS_QUIRKS||8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)u+=3;var y=a.container.offsetWidth-u,u=a.container.offsetHeight-u;c=c?Math.max(.3,Math.min(b||1,y/t.width)):m;b=(y-c*t.width)/2/c;var J=0==this.lightboxVerticalDivider?0:(u-c*t.height)/this.lightboxVerticalDivider/c;f&&(b=Math.max(b,0),J=Math.max(J,0));if(f||g.width<y||g.height<u)a.view.scaleAndTranslate(c, -Math.floor(b-t.x),Math.floor(J-t.y)),a.container.scrollTop=l*c/m,a.container.scrollLeft=r*c/m;else if(0!=d||0!=h)g=a.view.translate,a.view.setTranslate(Math.floor(g.x+d/m),Math.floor(g.y+h/m))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var d=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",d);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",d)});this.editor.addListener("resetGraphView", -mxUtils.bind(this,function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(c){a.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(c){a.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){this.chromelessToolbar=document.createElement("div");this.chromelessToolbar.style.position="fixed";this.chromelessToolbar.style.overflow="hidden";this.chromelessToolbar.style.boxSizing="border-box";this.chromelessToolbar.style.whiteSpace= -"nowrap";this.chromelessToolbar.style.backgroundColor="#000000";this.chromelessToolbar.style.padding="10px 10px 8px 10px";this.chromelessToolbar.style.left="50%";mxClient.IS_VML||(mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"borderRadius","20px"),mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transition","opacity 600ms ease-in-out"));var k=mxUtils.bind(this,function(){var c=mxUtils.getCurrentStyle(a.container);this.chromelessToolbar.style.bottom=(null!=c?parseInt(c["margin-bottom"]|| -0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",k);k();var n=0,k=mxUtils.bind(this,function(a,c,b){n++;var d=document.createElement("span");d.style.paddingLeft="8px";d.style.paddingRight="8px";d.style.cursor="pointer";mxEvent.addListener(d,"click",a);null!=b&&d.setAttribute("title",b);a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("src",c);d.appendChild(a);this.chromelessToolbar.appendChild(d); -return d}),p=k(mxUtils.bind(this,function(a){this.actions.get("previousPage").funct();mxEvent.consume(a)}),Editor.previousLargeImage,mxResources.get("previousPage")),q=document.createElement("div");q.style.display="inline-block";q.style.verticalAlign="top";q.style.fontFamily="Helvetica,Arial";q.style.marginTop="8px";q.style.fontSize="14px";q.style.color="#ffffff";this.chromelessToolbar.appendChild(q);var w=k(mxUtils.bind(this,function(a){this.actions.get("nextPage").funct();mxEvent.consume(a)}),Editor.nextLargeImage, -mxResources.get("nextPage")),c=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(q.innerHTML="",mxUtils.write(q,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});p.style.paddingLeft="0px";p.style.paddingRight="4px";w.style.paddingLeft="4px";w.style.paddingRight="0px";var g=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(w.style.display="",p.style.display="",q.style.display="inline-block"): -(w.style.display="none",p.style.display="none",q.style.display="none");c()});this.editor.addListener("resetGraphView",g);this.editor.addListener("pageSelected",c);k(mxUtils.bind(this,function(a){this.actions.get("zoomOut").funct();mxEvent.consume(a)}),Editor.zoomOutLargeImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");k(mxUtils.bind(this,function(a){this.actions.get("zoomIn").funct();mxEvent.consume(a)}),Editor.zoomInLargeImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");k(mxUtils.bind(this, -function(c){a.isLightboxView()?(1==a.view.scale?this.lightboxFit():a.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(c)}),Editor.actualSizeLargeImage,mxResources.get("fit"));var h=null,l=null,t=mxUtils.bind(this,function(a){null!=h&&(window.clearTimeout(h),fadeThead=null);null!=l&&(window.clearTimeout(l),fadeThead2=null);h=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,0);h=null;l=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display= -"none";l=null}),600)}),a||200)}),m=mxUtils.bind(this,function(a){null!=h&&(window.clearTimeout(h),fadeThead=null);null!=l&&(window.clearTimeout(l),fadeThead2=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,a||30)});if("1"==urlParams.layers){this.layersDialog=null;var r=k(mxUtils.bind(this,function(c){if(null!=this.layersDialog)this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null;else{this.layersDialog=a.createLayersDialog();mxEvent.addListener(this.layersDialog, -"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog=null}));var b=r.getBoundingClientRect();mxUtils.setPrefixedStyle(this.layersDialog.style,"borderRadius","5px");this.layersDialog.style.position="fixed";this.layersDialog.style.fontFamily="Helvetica,Arial";this.layersDialog.style.backgroundColor="#000000";this.layersDialog.style.width="160px";this.layersDialog.style.padding="4px 2px 4px 2px";this.layersDialog.style.color="#ffffff"; -mxUtils.setOpacity(this.layersDialog,70);this.layersDialog.style.left=b.left+"px";this.layersDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";b=mxUtils.getCurrentStyle(this.editor.graph.container);this.layersDialog.style.zIndex=b.zIndex;document.body.appendChild(this.layersDialog)}mxEvent.consume(c)}),Editor.layersLargeImage,mxResources.get("layers")),x=a.getModel();x.addListener(mxEvent.CHANGE,function(){r.style.display=1<x.getChildCount(x.root)? -"":"none"})}this.addChromelessToolbarItems(k);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||k(mxUtils.bind(this,function(c){null!=this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):a.openLink(this.editor.editButtonLink,"editWindow");mxEvent.consume(c)}),Editor.editLargeImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(g=0;g<this.lightboxToolbarActions.length;g++){var v= -this.lightboxToolbarActions[g];k(v.fn,v.icon,v.tooltip)}!a.lightbox||"1"!=urlParams.close&&this.container==document.body||k(mxUtils.bind(this,function(a){"1"==urlParams.close?window.close():(this.destroy(),mxEvent.consume(a))}),Editor.closeLargeImage,mxResources.get("close")+" (Escape)");this.chromelessToolbar.style.display="none";mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transform","translate(-50%,0)");a.container.appendChild(this.chromelessToolbar);mxEvent.addListener(a.container,mxClient.IS_POINTER? -"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||(mxEvent.isShiftDown(a)||m(30),t())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?t():m(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?t():m(100);mxEvent.consume(a)})); -mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||m(30)}));var D=a.getTolerance();a.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(c,b){this.startX=b.getGraphX();this.startY=b.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(a,c){},mouseUp:function(c,b){mxEvent.isTouchEvent(b.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<D&&Math.abs(this.scrollTop- -a.container.scrollTop)<D&&Math.abs(this.startX-b.getGraphX())<D&&Math.abs(this.startY-b.getGraphY())<D&&(0<parseFloat(f.chromelessToolbar.style.opacity||0)?t():m(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var y=a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var a=this.graph.getPagePadding(),c=this.graph.getPageSize();this.translate.x=a.x-(this.x0||0)*c.width;this.translate.y= -a.y-(this.y0||0)*c.height}y.apply(this,arguments)};var u=a.sizeDidChange;a.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var c=this.getPageLayout(),b=this.getPagePadding(),d=this.getPageSize(),h=Math.ceil(2*b.x+c.width*d.width),g=Math.ceil(2*b.y+c.height*d.height),f=a.minimumGraphSize;if(null==f||f.width!=h||f.height!=g)a.minimumGraphSize=new mxRectangle(0,0,h,g);h=b.x-c.x*d.width;b=b.y-c.y*d.height;this.autoTranslate||this.view.translate.x==h&&this.view.translate.y== -b?u.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=c.x,this.view.y0=c.y,c=a.view.translate.x,d=a.view.translate.y,a.view.setTranslate(h,b),a.container.scrollLeft+=Math.round((h-c)*a.view.scale),a.container.scrollTop+=Math.round((b-d)*a.view.scale),this.autoTranslate=!1)}}}a.updateZoomTimeout=null;a.cumulativeZoomFactor=1;var A=null;a.lazyZoom=function(c){null!=this.updateZoomTimeout&&window.clearTimeout(this.updateZoomTimeout);c?.15>this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor= +EditorUi.prototype.getCssClassForMarker=function(a,b,e,c){return"flexArrow"==b?null!=e&&e!=mxConstants.NONE?"geSprite geSprite-"+a+"blocktrans":"geSprite geSprite-noarrow":e==mxConstants.ARROW_CLASSIC?"1"==c?"geSprite geSprite-"+a+"classic":"geSprite geSprite-"+a+"classictrans":e==mxConstants.ARROW_CLASSIC_THIN?"1"==c?"geSprite geSprite-"+a+"classicthin":"geSprite geSprite-"+a+"classicthintrans":e==mxConstants.ARROW_OPEN?"geSprite geSprite-"+a+"open":e==mxConstants.ARROW_OPEN_THIN?"geSprite geSprite-"+ +a+"openthin":e==mxConstants.ARROW_BLOCK?"1"==c?"geSprite geSprite-"+a+"block":"geSprite geSprite-"+a+"blocktrans":e==mxConstants.ARROW_BLOCK_THIN?"1"==c?"geSprite geSprite-"+a+"blockthin":"geSprite geSprite-"+a+"blockthintrans":e==mxConstants.ARROW_OVAL?"1"==c?"geSprite geSprite-"+a+"oval":"geSprite geSprite-"+a+"ovaltrans":e==mxConstants.ARROW_DIAMOND?"1"==c?"geSprite geSprite-"+a+"diamond":"geSprite geSprite-"+a+"diamondtrans":e==mxConstants.ARROW_DIAMOND_THIN?"1"==c?"geSprite geSprite-"+a+"thindiamond": +"geSprite geSprite-"+a+"thindiamondtrans":"openAsync"==e?"geSprite geSprite-"+a+"openasync":"dash"==e?"geSprite geSprite-"+a+"dash":"cross"==e?"geSprite geSprite-"+a+"cross":"async"==e?"1"==c?"geSprite geSprite-"+a+"async":"geSprite geSprite-"+a+"asynctrans":"circle"==e||"circlePlus"==e?"1"==c||"circle"==e?"geSprite geSprite-"+a+"circle":"geSprite geSprite-"+a+"circleplus":"ERone"==e?"geSprite geSprite-"+a+"erone":"ERmandOne"==e?"geSprite geSprite-"+a+"eronetoone":"ERmany"==e?"geSprite geSprite-"+ +a+"ermany":"ERoneToMany"==e?"geSprite geSprite-"+a+"eronetomany":"ERzeroToOne"==e?"geSprite geSprite-"+a+"eroneopt":"ERzeroToMany"==e?"geSprite geSprite-"+a+"ermanyopt":"geSprite geSprite-noarrow"};EditorUi.prototype.createMenus=function(){return null}; +EditorUi.prototype.updatePasteActionStates=function(){var a=this.editor.graph,b=this.actions.get("paste"),e=this.actions.get("pasteHere");b.setEnabled(this.editor.graph.cellEditor.isContentEditing()||!mxClipboard.isEmpty()&&a.isEnabled()&&!a.isCellLocked(a.getDefaultParent()));e.setEnabled(b.isEnabled())}; +EditorUi.prototype.initClipboard=function(){var a=this,b=mxClipboard.cut;mxClipboard.cut=function(c){c.cellEditor.isContentEditing()?document.execCommand("cut",!1,null):b.apply(this,arguments);a.updatePasteActionStates()};var e=mxClipboard.copy;mxClipboard.copy=function(b){b.cellEditor.isContentEditing()?document.execCommand("copy",!1,null):e.apply(this,arguments);a.updatePasteActionStates()};var c=mxClipboard.paste;mxClipboard.paste=function(b){var e=null;b.cellEditor.isContentEditing()?document.execCommand("paste", +!1,null):e=c.apply(this,arguments);a.updatePasteActionStates();return e};var k=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){k.apply(this,arguments);a.updatePasteActionStates()};var m=this.editor.graph.cellEditor.stopEditing;this.editor.graph.cellEditor.stopEditing=function(b,c){m.apply(this,arguments);a.updatePasteActionStates()};this.updatePasteActionStates()};EditorUi.prototype.lazyZoomDelay=20; +EditorUi.prototype.initCanvas=function(){var a=this.editor.graph;a.timerAutoScroll=!0;a.getPagePadding=function(){return new mxPoint(Math.max(0,Math.round((a.container.offsetWidth-34)/a.view.scale)),Math.max(0,Math.round((a.container.offsetHeight-34)/a.view.scale)))};a.view.getBackgroundPageBounds=function(){var a=this.graph.getPageLayout(),d=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+a.x*d.width),this.scale*(this.translate.y+a.y*d.height),this.scale*a.width*d.width, +this.scale*a.height*d.height)};a.getPreferredPageSize=function(a,d,b){a=this.getPageLayout();d=this.getPageSize();return new mxRectangle(0,0,a.width*d.width,a.height*d.height)};var b=null,e=this;if(this.editor.isChromelessView()){this.chromelessResize=b=mxUtils.bind(this,function(d,b,f,c){if(null!=a.container){f=null!=f?f:0;c=null!=c?c:0;var g=a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds(),e=mxUtils.hasScrollbars(a.container),l=a.view.translate,n=a.view.scale,p=mxRectangle.fromRectangle(g); +p.x=p.x/n-l.x;p.y=p.y/n-l.y;p.width/=n;p.height/=n;var l=a.container.scrollTop,u=a.container.scrollLeft,y=mxClient.IS_QUIRKS||8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)y+=3;var t=a.container.offsetWidth-y,y=a.container.offsetHeight-y;d=d?Math.max(.3,Math.min(b||1,t/p.width)):n;b=(t-d*p.width)/2/d;var J=0==this.lightboxVerticalDivider?0:(y-d*p.height)/this.lightboxVerticalDivider/d;e&&(b=Math.max(b,0),J=Math.max(J,0));if(e||g.width<t||g.height<y)a.view.scaleAndTranslate(d, +Math.floor(b-p.x),Math.floor(J-p.y)),a.container.scrollTop=l*d/n,a.container.scrollLeft=u*d/n;else if(0!=f||0!=c)g=a.view.translate,a.view.setTranslate(Math.floor(g.x+f/n),Math.floor(g.y+c/n))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var c=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",c);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",c)});this.editor.addListener("resetGraphView", +mxUtils.bind(this,function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(d){a.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(d){a.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){this.chromelessToolbar=document.createElement("div");this.chromelessToolbar.style.position="fixed";this.chromelessToolbar.style.overflow="hidden";this.chromelessToolbar.style.boxSizing="border-box";this.chromelessToolbar.style.whiteSpace= +"nowrap";this.chromelessToolbar.style.backgroundColor="#000000";this.chromelessToolbar.style.padding="10px 10px 8px 10px";this.chromelessToolbar.style.left="50%";mxClient.IS_VML||(mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"borderRadius","20px"),mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transition","opacity 600ms ease-in-out"));var k=mxUtils.bind(this,function(){var d=mxUtils.getCurrentStyle(a.container);this.chromelessToolbar.style.bottom=(null!=d?parseInt(d["margin-bottom"]|| +0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",k);k();var m=0,k=mxUtils.bind(this,function(a,d,b){m++;var f=document.createElement("span");f.style.paddingLeft="8px";f.style.paddingRight="8px";f.style.cursor="pointer";mxEvent.addListener(f,"click",a);null!=b&&f.setAttribute("title",b);a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("src",d);f.appendChild(a);this.chromelessToolbar.appendChild(f); +return f}),q=k(mxUtils.bind(this,function(a){this.actions.get("previousPage").funct();mxEvent.consume(a)}),Editor.previousLargeImage,mxResources.get("previousPage")),r=document.createElement("div");r.style.display="inline-block";r.style.verticalAlign="top";r.style.fontFamily="Helvetica,Arial";r.style.marginTop="8px";r.style.fontSize="14px";r.style.color="#ffffff";this.chromelessToolbar.appendChild(r);var v=k(mxUtils.bind(this,function(a){this.actions.get("nextPage").funct();mxEvent.consume(a)}),Editor.nextLargeImage, +mxResources.get("nextPage")),z=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(r.innerHTML="",mxUtils.write(r,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});q.style.paddingLeft="0px";q.style.paddingRight="4px";v.style.paddingLeft="4px";v.style.paddingRight="0px";var d=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(v.style.display="",q.style.display="",r.style.display="inline-block"): +(v.style.display="none",q.style.display="none",r.style.display="none");z()});this.editor.addListener("resetGraphView",d);this.editor.addListener("pageSelected",z);k(mxUtils.bind(this,function(a){this.actions.get("zoomOut").funct();mxEvent.consume(a)}),Editor.zoomOutLargeImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");k(mxUtils.bind(this,function(a){this.actions.get("zoomIn").funct();mxEvent.consume(a)}),Editor.zoomInLargeImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");k(mxUtils.bind(this, +function(d){a.isLightboxView()?(1==a.view.scale?this.lightboxFit():a.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(d)}),Editor.actualSizeLargeImage,mxResources.get("fit"));var f=null,l=null,n=mxUtils.bind(this,function(a){null!=f&&(window.clearTimeout(f),fadeThead=null);null!=l&&(window.clearTimeout(l),fadeThead2=null);f=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,0);f=null;l=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display= +"none";l=null}),600)}),a||200)}),g=mxUtils.bind(this,function(a){null!=f&&(window.clearTimeout(f),fadeThead=null);null!=l&&(window.clearTimeout(l),fadeThead2=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,a||30)});if("1"==urlParams.layers){this.layersDialog=null;var p=k(mxUtils.bind(this,function(d){if(null!=this.layersDialog)this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null;else{this.layersDialog=a.createLayersDialog();mxEvent.addListener(this.layersDialog, +"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog=null}));var b=p.getBoundingClientRect();mxUtils.setPrefixedStyle(this.layersDialog.style,"borderRadius","5px");this.layersDialog.style.position="fixed";this.layersDialog.style.fontFamily="Helvetica,Arial";this.layersDialog.style.backgroundColor="#000000";this.layersDialog.style.width="160px";this.layersDialog.style.padding="4px 2px 4px 2px";this.layersDialog.style.color="#ffffff"; +mxUtils.setOpacity(this.layersDialog,70);this.layersDialog.style.left=b.left+"px";this.layersDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";b=mxUtils.getCurrentStyle(this.editor.graph.container);this.layersDialog.style.zIndex=b.zIndex;document.body.appendChild(this.layersDialog)}mxEvent.consume(d)}),Editor.layersLargeImage,mxResources.get("layers")),B=a.getModel();B.addListener(mxEvent.CHANGE,function(){p.style.display=1<B.getChildCount(B.root)? +"":"none"})}this.addChromelessToolbarItems(k);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||k(mxUtils.bind(this,function(d){null!=this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):a.openLink(this.editor.editButtonLink,"editWindow");mxEvent.consume(d)}),Editor.editLargeImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(d=0;d<this.lightboxToolbarActions.length;d++){var x= +this.lightboxToolbarActions[d];k(x.fn,x.icon,x.tooltip)}!a.lightbox||"1"!=urlParams.close&&this.container==document.body||k(mxUtils.bind(this,function(a){"1"==urlParams.close?window.close():(this.destroy(),mxEvent.consume(a))}),Editor.closeLargeImage,mxResources.get("close")+" (Escape)");this.chromelessToolbar.style.display="none";mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transform","translate(-50%,0)");a.container.appendChild(this.chromelessToolbar);mxEvent.addListener(a.container,mxClient.IS_POINTER? +"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||(mxEvent.isShiftDown(a)||g(30),n())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?n():g(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?n():g(100);mxEvent.consume(a)})); +mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||g(30)}));var t=a.getTolerance();a.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(d,b){this.startX=b.getGraphX();this.startY=b.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(a,d){},mouseUp:function(d,b){mxEvent.isTouchEvent(b.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<t&&Math.abs(this.scrollTop- +a.container.scrollTop)<t&&Math.abs(this.startX-b.getGraphX())<t&&Math.abs(this.startY-b.getGraphY())<t&&(0<parseFloat(e.chromelessToolbar.style.opacity||0)?n():g(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var y=a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var a=this.graph.getPagePadding(),d=this.graph.getPageSize();this.translate.x=a.x-(this.x0||0)*d.width;this.translate.y= +a.y-(this.y0||0)*d.height}y.apply(this,arguments)};var u=a.sizeDidChange;a.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var d=this.getPageLayout(),b=this.getPagePadding(),f=this.getPageSize(),c=Math.ceil(2*b.x+d.width*f.width),g=Math.ceil(2*b.y+d.height*f.height),e=a.minimumGraphSize;if(null==e||e.width!=c||e.height!=g)a.minimumGraphSize=new mxRectangle(0,0,c,g);c=b.x-d.x*f.width;b=b.y-d.y*f.height;this.autoTranslate||this.view.translate.x==c&&this.view.translate.y== +b?u.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=d.x,this.view.y0=d.y,d=a.view.translate.x,f=a.view.translate.y,a.view.setTranslate(c,b),a.container.scrollLeft+=Math.round((c-d)*a.view.scale),a.container.scrollTop+=Math.round((b-f)*a.view.scale),this.autoTranslate=!1)}}}a.updateZoomTimeout=null;a.cumulativeZoomFactor=1;var A=null;a.lazyZoom=function(d){null!=this.updateZoomTimeout&&window.clearTimeout(this.updateZoomTimeout);d?.15>this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor= (this.view.scale+.01)/this.view.scale:(this.cumulativeZoomFactor*=this.zoomFactor,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor=(this.view.scale-.01)/this.view.scale:(this.cumulativeZoomFactor/=this.zoomFactor,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale);this.cumulativeZoomFactor=Math.max(.01,Math.min(this.view.scale* -this.cumulativeZoomFactor,160)/this.view.scale);this.updateZoomTimeout=window.setTimeout(mxUtils.bind(this,function(){var c=mxUtils.getOffset(a.container),d=0,h=0;null!=A&&(d=a.container.offsetWidth/2-A.x+c.x,h=a.container.offsetHeight/2-A.y+c.y);c=this.view.scale;this.zoom(this.cumulativeZoomFactor);this.view.scale!=c&&(null!=b&&f.chromelessResize(!1,null,d*(this.cumulativeZoomFactor-1),h*(this.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==d&&0==h||(a.container.scrollLeft-=d*(this.cumulativeZoomFactor- -1),a.container.scrollTop-=h*(this.cumulativeZoomFactor-1)));this.cumulativeZoomFactor=1;this.updateZoomTimeout=null}),this.lazyZoomDelay)};mxEvent.addMouseWheelListener(mxUtils.bind(this,function(c,b){if((null==this.dialogs||0==this.dialogs.length)&&a.isZoomWheelEvent(c))for(var d=mxEvent.getSource(c);null!=d;){if(d==a.container){A=new mxPoint(mxEvent.getClientX(c),mxEvent.getClientY(c));a.lazyZoom(b);mxEvent.consume(c);break}d=d.parentNode}}))}; +this.cumulativeZoomFactor,160)/this.view.scale);this.updateZoomTimeout=window.setTimeout(mxUtils.bind(this,function(){var d=mxUtils.getOffset(a.container),f=0,c=0;null!=A&&(f=a.container.offsetWidth/2-A.x+d.x,c=a.container.offsetHeight/2-A.y+d.y);d=this.view.scale;this.zoom(this.cumulativeZoomFactor);this.view.scale!=d&&(null!=b&&e.chromelessResize(!1,null,f*(this.cumulativeZoomFactor-1),c*(this.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==f&&0==c||(a.container.scrollLeft-=f*(this.cumulativeZoomFactor- +1),a.container.scrollTop-=c*(this.cumulativeZoomFactor-1)));this.cumulativeZoomFactor=1;this.updateZoomTimeout=null}),this.lazyZoomDelay)};mxEvent.addMouseWheelListener(mxUtils.bind(this,function(d,b){if((null==this.dialogs||0==this.dialogs.length)&&a.isZoomWheelEvent(d))for(var f=mxEvent.getSource(d);null!=f;){if(f==a.container){A=new mxPoint(mxEvent.getClientX(d),mxEvent.getClientY(d));a.lazyZoom(b);mxEvent.consume(d);break}f=f.parentNode}}))}; EditorUi.prototype.addChromelessToolbarItems=function(a){a(mxUtils.bind(this,function(a){this.actions.get("print").funct();mxEvent.consume(a)}),Editor.printLargeImage,mxResources.get("print"))}; EditorUi.prototype.createTemporaryGraph=function(a){a=new Graph(document.createElement("div"),null,null,a);a.resetViewOnRootChange=!1;a.setConnectable(!1);a.gridEnabled=!1;a.autoScroll=!1;a.setTooltips(!1);a.setEnabled(!1);a.container.style.visibility="hidden";a.container.style.position="absolute";a.container.style.overflow="hidden";a.container.style.height="1px";a.container.style.width="1px";return a}; -EditorUi.prototype.addChromelessClickHandler=function(){var a=urlParams.highlight;null!=a&&0<a.length&&(a="#"+a);this.editor.graph.addClickHandler(a)};EditorUi.prototype.toggleFormatPanel=function(a){this.formatWidth=a||0<this.formatWidth?0:240;this.formatContainer.style.display=a||0<this.formatWidth?"":"none";this.refresh();this.format.refresh();this.fireEvent(new mxEventObject("formatWidthChanged"))}; -EditorUi.prototype.lightboxFit=function(a){if(this.isDiagramEmpty())this.editor.graph.view.setScale(1);else{var b=urlParams.border,f=60;null!=b&&(f=parseInt(b));this.editor.graph.maxFitScale=this.lightboxMaxFitScale;this.editor.graph.fit(f,null,null,null,null,null,a);this.editor.graph.maxFitScale=null}};EditorUi.prototype.isDiagramEmpty=function(){var a=this.editor.graph.getModel();return 1==a.getChildCount(a.root)&&0==a.getChildCount(a.getChildAt(a.root,0))}; +EditorUi.prototype.addChromelessClickHandler=function(){var a=urlParams.highlight;null!=a&&0<a.length&&(a="#"+a);this.editor.graph.addClickHandler(a)};EditorUi.prototype.toggleFormatPanel=function(a){null!=this.format&&(this.formatWidth=a||0<this.formatWidth?0:240,this.formatContainer.style.display=a||0<this.formatWidth?"":"none",this.refresh(),this.format.refresh(),this.fireEvent(new mxEventObject("formatWidthChanged")))}; +EditorUi.prototype.lightboxFit=function(a){if(this.isDiagramEmpty())this.editor.graph.view.setScale(1);else{var b=urlParams.border,e=60;null!=b&&(e=parseInt(b));this.editor.graph.maxFitScale=this.lightboxMaxFitScale;this.editor.graph.fit(e,null,null,null,null,null,a);this.editor.graph.maxFitScale=null}};EditorUi.prototype.isDiagramEmpty=function(){var a=this.editor.graph.getModel();return 1==a.getChildCount(a.root)&&0==a.getChildCount(a.getChildAt(a.root,0))}; EditorUi.prototype.isSelectionAllowed=function(a){return"SELECT"==mxEvent.getSource(a).nodeName||"INPUT"==mxEvent.getSource(a).nodeName&&mxUtils.isAncestorNode(this.formatContainer,mxEvent.getSource(a))};EditorUi.prototype.addBeforeUnloadListener=function(){window.onbeforeunload=mxUtils.bind(this,function(){if(!this.editor.isChromelessView())return this.onBeforeUnload()})};EditorUi.prototype.onBeforeUnload=function(){if(this.editor.modified)return mxResources.get("allChangesLost")}; -EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(a,b){try{var f=mxUtils.parseXml(a);this.editor.setGraphXml(f.documentElement);this.editor.setModified(!1);this.editor.undoManager.clear();null!=b&&(this.editor.setFilename(b),this.updateDocumentTitle())}catch(d){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+d.message)}}))}catch(a){}this.editor.graph.view.validate();this.editor.graph.sizeDidChange(); +EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(a,b){try{var e=mxUtils.parseXml(a);this.editor.setGraphXml(e.documentElement);this.editor.setModified(!1);this.editor.undoManager.clear();null!=b&&(this.editor.setFilename(b),this.updateDocumentTitle())}catch(c){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+c.message)}}))}catch(a){}this.editor.graph.view.validate();this.editor.graph.sizeDidChange(); this.editor.fireEvent(new mxEventObject("resetGraphView"))};EditorUi.prototype.setCurrentMenu=function(a,b){this.currentMenuElt=b;this.currentMenu=a};EditorUi.prototype.resetCurrentMenu=function(){this.currentMenu=this.currentMenuElt=null};EditorUi.prototype.hideCurrentMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.resetCurrentMenu())}; EditorUi.prototype.updateDocumentTitle=function(){var a=this.editor.getOrCreateFilename();null!=this.editor.appName&&(a+=" - "+this.editor.appName);document.title=a};EditorUi.prototype.createHoverIcons=function(){return new HoverIcons(this.editor.graph)};EditorUi.prototype.redo=function(){try{this.editor.graph.isEditing()?document.execCommand("redo",!1,null):this.editor.undoManager.redo()}catch(a){}}; -EditorUi.prototype.undo=function(){try{var a=this.editor.graph;if(a.isEditing()){var b=a.cellEditor.textarea.innerHTML;document.execCommand("undo",!1,null);b==a.cellEditor.textarea.innerHTML&&(a.stopEditing(!0),this.editor.undoManager.undo())}else this.editor.undoManager.undo()}catch(f){}};EditorUi.prototype.canRedo=function(){return this.editor.graph.isEditing()||this.editor.undoManager.canRedo()};EditorUi.prototype.canUndo=function(){return this.editor.graph.isEditing()||this.editor.undoManager.canUndo()}; -EditorUi.prototype.getEditBlankXml=function(){return mxUtils.getXml(this.editor.getGraphXml())};EditorUi.prototype.getUrl=function(a){a=null!=a?a:window.location.pathname;var b=0<a.indexOf("?")?1:0,f;for(f in urlParams)a=0==b?a+"?":a+"&",a+=f+"="+urlParams[f],b++;return a}; -EditorUi.prototype.setScrollbars=function(a){var b=this.editor.graph,f=b.container.style.overflow;b.scrollbars=a;this.editor.updateGraphComponents();f!=b.container.style.overflow&&("hidden"==b.container.style.overflow?(a=b.view.translate,b.view.setTranslate(a.x-b.container.scrollLeft/b.view.scale,a.y-b.container.scrollTop/b.view.scale),b.container.scrollLeft=0,b.container.scrollTop=0,b.minimumGraphSize=null,b.sizeDidChange()):(a=b.view.translate.x,f=b.view.translate.y,b.view.translate.x=0,b.view.translate.y= -0,b.sizeDidChange(),b.container.scrollLeft-=Math.round(a*b.view.scale),b.container.scrollTop-=Math.round(f*b.view.scale)));this.fireEvent(new mxEventObject("scrollbarsChanged"))};EditorUi.prototype.hasScrollbars=function(){return this.editor.graph.scrollbars}; +EditorUi.prototype.undo=function(){try{var a=this.editor.graph;if(a.isEditing()){var b=a.cellEditor.textarea.innerHTML;document.execCommand("undo",!1,null);b==a.cellEditor.textarea.innerHTML&&(a.stopEditing(!0),this.editor.undoManager.undo())}else this.editor.undoManager.undo()}catch(e){}};EditorUi.prototype.canRedo=function(){return this.editor.graph.isEditing()||this.editor.undoManager.canRedo()};EditorUi.prototype.canUndo=function(){return this.editor.graph.isEditing()||this.editor.undoManager.canUndo()}; +EditorUi.prototype.getEditBlankXml=function(){return mxUtils.getXml(this.editor.getGraphXml())};EditorUi.prototype.getUrl=function(a){a=null!=a?a:window.location.pathname;var b=0<a.indexOf("?")?1:0,e;for(e in urlParams)a=0==b?a+"?":a+"&",a+=e+"="+urlParams[e],b++;return a}; +EditorUi.prototype.setScrollbars=function(a){var b=this.editor.graph,e=b.container.style.overflow;b.scrollbars=a;this.editor.updateGraphComponents();e!=b.container.style.overflow&&("hidden"==b.container.style.overflow?(a=b.view.translate,b.view.setTranslate(a.x-b.container.scrollLeft/b.view.scale,a.y-b.container.scrollTop/b.view.scale),b.container.scrollLeft=0,b.container.scrollTop=0,b.minimumGraphSize=null,b.sizeDidChange()):(a=b.view.translate.x,e=b.view.translate.y,b.view.translate.x=0,b.view.translate.y= +0,b.sizeDidChange(),b.container.scrollLeft-=Math.round(a*b.view.scale),b.container.scrollTop-=Math.round(e*b.view.scale)));this.fireEvent(new mxEventObject("scrollbarsChanged"))};EditorUi.prototype.hasScrollbars=function(){return this.editor.graph.scrollbars}; EditorUi.prototype.resetScrollbars=function(){var a=this.editor.graph;if(!this.editor.extendCanvas)a.container.scrollTop=0,a.container.scrollLeft=0,mxUtils.hasScrollbars(a.container)||a.view.setTranslate(0,0);else if(!this.editor.isChromelessView())if(mxUtils.hasScrollbars(a.container))if(a.pageVisible){var b=a.getPagePadding();a.container.scrollTop=Math.floor(b.y-this.editor.initialTopSpacing)-1;a.container.scrollLeft=Math.floor(Math.min(b.x,(a.container.scrollWidth-a.container.clientWidth)/2))- -1;b=a.getGraphBounds();0<b.width&&0<b.height&&(b.x>a.container.scrollLeft+.9*a.container.clientWidth&&(a.container.scrollLeft=Math.min(b.x+b.width-a.container.clientWidth,b.x-10)),b.y>a.container.scrollTop+.9*a.container.clientHeight&&(a.container.scrollTop=Math.min(b.y+b.height-a.container.clientHeight,b.y-10)))}else{var b=a.getGraphBounds(),f=Math.max(b.width,a.scrollTileSize.width*a.view.scale);a.container.scrollTop=Math.floor(Math.max(0,b.y-Math.max(20,(a.container.clientHeight-Math.max(b.height, -a.scrollTileSize.height*a.view.scale))/4)));a.container.scrollLeft=Math.floor(Math.max(0,b.x-Math.max(0,(a.container.clientWidth-f)/2)))}else a.pageVisible?(b=a.view.getBackgroundPageBounds(),a.view.setTranslate(Math.floor(Math.max(0,(a.container.clientWidth-b.width)/2)-b.x),Math.floor(Math.max(0,(a.container.clientHeight-b.height)/2)-b.y))):(b=a.getGraphBounds(),a.view.setTranslate(Math.floor(Math.max(0,Math.max(0,(a.container.clientWidth-b.width)/2)-b.x)),Math.floor(Math.max(0,Math.max(20,(a.container.clientHeight- +1;b=a.getGraphBounds();0<b.width&&0<b.height&&(b.x>a.container.scrollLeft+.9*a.container.clientWidth&&(a.container.scrollLeft=Math.min(b.x+b.width-a.container.clientWidth,b.x-10)),b.y>a.container.scrollTop+.9*a.container.clientHeight&&(a.container.scrollTop=Math.min(b.y+b.height-a.container.clientHeight,b.y-10)))}else{var b=a.getGraphBounds(),e=Math.max(b.width,a.scrollTileSize.width*a.view.scale);a.container.scrollTop=Math.floor(Math.max(0,b.y-Math.max(20,(a.container.clientHeight-Math.max(b.height, +a.scrollTileSize.height*a.view.scale))/4)));a.container.scrollLeft=Math.floor(Math.max(0,b.x-Math.max(0,(a.container.clientWidth-e)/2)))}else a.pageVisible?(b=a.view.getBackgroundPageBounds(),a.view.setTranslate(Math.floor(Math.max(0,(a.container.clientWidth-b.width)/2)-b.x),Math.floor(Math.max(0,(a.container.clientHeight-b.height)/2)-b.y))):(b=a.getGraphBounds(),a.view.setTranslate(Math.floor(Math.max(0,Math.max(0,(a.container.clientWidth-b.width)/2)-b.x)),Math.floor(Math.max(0,Math.max(20,(a.container.clientHeight- b.height)/4))-b.y)))}; -EditorUi.prototype.setPageVisible=function(a){var b=this.editor.graph,f=mxUtils.hasScrollbars(b.container),d=0,k=0;f&&(d=b.view.translate.x*b.view.scale-b.container.scrollLeft,k=b.view.translate.y*b.view.scale-b.container.scrollTop);b.pageVisible=a;b.pageBreaksVisible=a;b.preferPageSize=a;b.view.validateBackground();f&&(a=b.getSelectionCells(),b.clearSelection(),b.setSelectionCells(a));b.sizeDidChange();f&&(b.container.scrollLeft=b.view.translate.x*b.view.scale-d,b.container.scrollTop=b.view.translate.y* -b.view.scale-k);this.fireEvent(new mxEventObject("pageViewChanged"))};function ChangePageSetup(a,b,f,d){this.ui=a;this.previousColor=this.color=b;this.previousImage=this.image=f;this.previousFormat=this.format=d;this.ignoreImage=this.ignoreColor=!1} +EditorUi.prototype.setPageVisible=function(a){var b=this.editor.graph,e=mxUtils.hasScrollbars(b.container),c=0,k=0;e&&(c=b.view.translate.x*b.view.scale-b.container.scrollLeft,k=b.view.translate.y*b.view.scale-b.container.scrollTop);b.pageVisible=a;b.pageBreaksVisible=a;b.preferPageSize=a;b.view.validateBackground();e&&(a=b.getSelectionCells(),b.clearSelection(),b.setSelectionCells(a));b.sizeDidChange();e&&(b.container.scrollLeft=b.view.translate.x*b.view.scale-c,b.container.scrollTop=b.view.translate.y* +b.view.scale-k);this.fireEvent(new mxEventObject("pageViewChanged"))};function ChangePageSetup(a,b,e,c){this.ui=a;this.previousColor=this.color=b;this.previousImage=this.image=e;this.previousFormat=this.format=c;this.ignoreImage=this.ignoreColor=!1} ChangePageSetup.prototype.execute=function(){var a=this.ui.editor.graph;if(!this.ignoreColor){this.color=this.previousColor;var b=a.background;this.ui.setBackgroundColor(this.previousColor);this.previousColor=b}this.ignoreImage||(this.image=this.previousImage,b=a.backgroundImage,this.ui.setBackgroundImage(this.previousImage),this.previousImage=b);null!=this.previousFormat&&(this.format=this.previousFormat,b=a.pageFormat,this.previousFormat.width!=b.width||this.previousFormat.height!=b.height)&&(this.ui.setPageFormat(this.previousFormat), -this.previousFormat=b);null!=this.foldingEnabled&&this.foldingEnabled!=this.ui.editor.graph.foldingEnabled&&(this.ui.setFoldingEnabled(this.foldingEnabled),this.foldingEnabled=!this.foldingEnabled)};(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.afterDecode=function(a,f,d){d.previousColor=d.color;d.previousImage=d.image;d.previousFormat=d.format;null!=d.foldingEnabled&&(d.foldingEnabled=!d.foldingEnabled);return d};mxCodecRegistry.register(a)})(); +this.previousFormat=b);null!=this.foldingEnabled&&this.foldingEnabled!=this.ui.editor.graph.foldingEnabled&&(this.ui.setFoldingEnabled(this.foldingEnabled),this.foldingEnabled=!this.foldingEnabled)};(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.afterDecode=function(a,e,c){c.previousColor=c.color;c.previousImage=c.image;c.previousFormat=c.format;null!=c.foldingEnabled&&(c.foldingEnabled=!c.foldingEnabled);return c};mxCodecRegistry.register(a)})(); EditorUi.prototype.setBackgroundColor=function(a){this.editor.graph.background=a;this.editor.graph.view.validateBackground();this.fireEvent(new mxEventObject("backgroundColorChanged"))};EditorUi.prototype.setFoldingEnabled=function(a){this.editor.graph.foldingEnabled=a;this.editor.graph.view.revalidate();this.fireEvent(new mxEventObject("foldingEnabledChanged"))}; EditorUi.prototype.setPageFormat=function(a){this.editor.graph.pageFormat=a;this.editor.graph.pageVisible?(this.editor.graph.view.validateBackground(),this.editor.graph.sizeDidChange()):this.actions.get("pageView").funct();this.fireEvent(new mxEventObject("pageFormatChanged"))};EditorUi.prototype.setPageScale=function(a){this.editor.graph.pageScale=a;this.editor.graph.pageVisible?(this.editor.graph.view.validateBackground(),this.editor.graph.sizeDidChange()):this.actions.get("pageView").funct();this.fireEvent(new mxEventObject("pageScaleChanged"))}; EditorUi.prototype.setGridColor=function(a){this.editor.graph.view.gridColor=a;this.editor.graph.view.validateBackground();this.fireEvent(new mxEventObject("gridColorChanged"))}; -EditorUi.prototype.addUndoListener=function(){var a=this.actions.get("undo"),b=this.actions.get("redo"),f=this.editor.undoManager,d=mxUtils.bind(this,function(){a.setEnabled(this.canUndo());b.setEnabled(this.canRedo())});f.addListener(mxEvent.ADD,d);f.addListener(mxEvent.UNDO,d);f.addListener(mxEvent.REDO,d);f.addListener(mxEvent.CLEAR,d);var k=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){k.apply(this,arguments);d()};var n=this.editor.graph.cellEditor.stopEditing; -this.editor.graph.cellEditor.stopEditing=function(a,b){n.apply(this,arguments);d()};d()}; -EditorUi.prototype.updateActionStates=function(){var a=this.editor.graph,b=!a.isSelectionEmpty(),f=!1,d=!1,k=a.getSelectionCells();if(null!=k)for(var n=0;n<k.length;n++){var p=k[n];a.getModel().isEdge(p)&&(d=!0);a.getModel().isVertex(p)&&(f=!0);if(d&&f)break}k="cut copy bold italic underline delete duplicate editStyle editTooltip editLink backgroundColor borderColor edit toFront toBack lockUnlock solid dashed pasteSize dotted fillColor gradientColor shadow fontColor formattedText rounded toggleRounded sharp strokeColor".split(" ");for(n= -0;n<k.length;n++)this.actions.get(k[n]).setEnabled(b);this.actions.get("setAsDefaultStyle").setEnabled(1==a.getSelectionCount());this.actions.get("clearWaypoints").setEnabled(!a.isSelectionEmpty());this.actions.get("copySize").setEnabled(1==a.getSelectionCount());this.actions.get("turn").setEnabled(!a.isSelectionEmpty());this.actions.get("curved").setEnabled(d);this.actions.get("rotation").setEnabled(f);this.actions.get("wordWrap").setEnabled(f);this.actions.get("autosize").setEnabled(f);d=f&&1== -a.getSelectionCount();this.actions.get("group").setEnabled(1<a.getSelectionCount()||d&&!a.isContainer(a.getSelectionCell()));this.actions.get("ungroup").setEnabled(1==a.getSelectionCount()&&(0<a.getModel().getChildCount(a.getSelectionCell())||d&&a.isContainer(a.getSelectionCell())));this.actions.get("removeFromGroup").setEnabled(d&&a.getModel().isVertex(a.getModel().getParent(a.getSelectionCell())));a.view.getState(a.getSelectionCell());this.menus.get("navigation").setEnabled(b||null!=a.view.currentRoot); -this.actions.get("collapsible").setEnabled(f&&(a.isContainer(a.getSelectionCell())||0<a.model.getChildCount(a.getSelectionCell())));this.actions.get("home").setEnabled(null!=a.view.currentRoot);this.actions.get("exitGroup").setEnabled(null!=a.view.currentRoot);this.actions.get("enterGroup").setEnabled(1==a.getSelectionCount()&&a.isValidRoot(a.getSelectionCell()));b=1==a.getSelectionCount()&&a.isCellFoldable(a.getSelectionCell());this.actions.get("expand").setEnabled(b);this.actions.get("collapse").setEnabled(b); -this.actions.get("editLink").setEnabled(1==a.getSelectionCount());this.actions.get("openLink").setEnabled(1==a.getSelectionCount()&&null!=a.getLinkForCell(a.getSelectionCell()));this.actions.get("guides").setEnabled(a.isEnabled());this.actions.get("grid").setEnabled(!this.editor.chromeless||this.editor.editable);b=a.isEnabled()&&!a.isCellLocked(a.getDefaultParent());this.menus.get("layout").setEnabled(b);this.menus.get("insert").setEnabled(b);this.menus.get("direction").setEnabled(b&&f);this.menus.get("align").setEnabled(b&& -f&&1<a.getSelectionCount());this.menus.get("distribute").setEnabled(b&&f&&1<a.getSelectionCount());this.actions.get("selectVertices").setEnabled(b);this.actions.get("selectEdges").setEnabled(b);this.actions.get("selectAll").setEnabled(b);this.actions.get("selectNone").setEnabled(b);this.updatePasteActionStates()}; -EditorUi.prototype.refresh=function(a){a=null!=a?a:!0;var b=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),f=this.container.clientWidth,d=this.container.clientHeight;this.container==document.body&&(f=document.body.clientWidth||document.documentElement.clientWidth,d=b?document.body.clientHeight||document.documentElement.clientHeight:document.documentElement.clientHeight);var k=0;mxClient.IS_IOS&&!window.navigator.standalone&&window.innerHeight!=document.documentElement.clientHeight&& -(k=document.documentElement.clientHeight-window.innerHeight,window.scrollTo(0,0));var n=Math.max(0,Math.min(this.hsplitPosition,f-this.splitSize-20)),p=0;null!=this.menubar&&(this.menubarContainer.style.height=this.menubarHeight+"px",p+=this.menubarHeight);null!=this.toolbar&&(this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px",p+=this.toolbarHeight);0<p&&!mxClient.IS_QUIRKS&&(p+=1);var q=0;if(null!=this.sidebarFooterContainer){var w= -this.footerHeight+k,q=Math.max(0,Math.min(d-p-w,this.sidebarFooterHeight));this.sidebarFooterContainer.style.width=n+"px";this.sidebarFooterContainer.style.height=q+"px";this.sidebarFooterContainer.style.bottom=w+"px"}w=null!=this.format?this.formatWidth:0;this.sidebarContainer.style.top=p+"px";this.sidebarContainer.style.width=n+"px";this.formatContainer.style.top=p+"px";this.formatContainer.style.width=w+"px";this.formatContainer.style.display=null!=this.format?"":"none";this.diagramContainer.style.left= -null!=this.hsplit.parentNode?n+this.splitSize+"px":"0px";this.diagramContainer.style.top=this.sidebarContainer.style.top;this.footerContainer.style.height=this.footerHeight+"px";this.hsplit.style.top=this.sidebarContainer.style.top;this.hsplit.style.bottom=this.footerHeight+k+"px";this.hsplit.style.left=n+"px";this.footerContainer.style.display=0==this.footerHeight?"none":"";null!=this.tabContainer&&(this.tabContainer.style.left=this.diagramContainer.style.left);b?(this.menubarContainer.style.width= -f+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width,b=Math.max(0,d-this.footerHeight-this.menubarHeight-this.toolbarHeight),this.sidebarContainer.style.height=b-q+"px",this.formatContainer.style.height=b+"px",this.diagramContainer.style.width=null!=this.hsplit.parentNode?Math.max(0,f-n-this.splitSize-w)+"px":f+"px",this.footerContainer.style.width=this.menubarContainer.style.width,q=Math.max(0,d-this.footerHeight-this.menubarHeight-this.toolbarHeight),null!=this.tabContainer&& -(this.tabContainer.style.width=this.diagramContainer.style.width,this.tabContainer.style.bottom=this.footerHeight+k+"px",q-=this.tabContainer.clientHeight),this.diagramContainer.style.height=q+"px",this.hsplit.style.height=q+"px"):(0<this.footerHeight&&(this.footerContainer.style.bottom=k+"px"),this.diagramContainer.style.right=w+"px",f=0,null!=this.tabContainer&&(this.tabContainer.style.bottom=this.footerHeight+k+"px",this.tabContainer.style.right=this.diagramContainer.style.right,f=this.tabContainer.clientHeight), -this.sidebarContainer.style.bottom=this.footerHeight+q+k+"px",this.formatContainer.style.bottom=this.footerHeight+k+"px",this.diagramContainer.style.bottom=this.footerHeight+k+f+"px");a&&this.editor.graph.sizeDidChange()};EditorUi.prototype.createTabContainer=function(){return null}; +EditorUi.prototype.addUndoListener=function(){var a=this.actions.get("undo"),b=this.actions.get("redo"),e=this.editor.undoManager,c=mxUtils.bind(this,function(){a.setEnabled(this.canUndo());b.setEnabled(this.canRedo())});e.addListener(mxEvent.ADD,c);e.addListener(mxEvent.UNDO,c);e.addListener(mxEvent.REDO,c);e.addListener(mxEvent.CLEAR,c);var k=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){k.apply(this,arguments);c()};var m=this.editor.graph.cellEditor.stopEditing; +this.editor.graph.cellEditor.stopEditing=function(a,b){m.apply(this,arguments);c()};c()}; +EditorUi.prototype.updateActionStates=function(){var a=this.editor.graph,b=!a.isSelectionEmpty(),e=!1,c=!1,k=a.getSelectionCells();if(null!=k)for(var m=0;m<k.length;m++){var q=k[m];a.getModel().isEdge(q)&&(c=!0);a.getModel().isVertex(q)&&(e=!0);if(c&&e)break}k="cut copy bold italic underline delete duplicate editStyle editTooltip editLink backgroundColor borderColor edit toFront toBack lockUnlock solid dashed pasteSize dotted fillColor gradientColor shadow fontColor formattedText rounded toggleRounded sharp strokeColor".split(" ");for(m= +0;m<k.length;m++)this.actions.get(k[m]).setEnabled(b);this.actions.get("setAsDefaultStyle").setEnabled(1==a.getSelectionCount());this.actions.get("clearWaypoints").setEnabled(!a.isSelectionEmpty());this.actions.get("copySize").setEnabled(1==a.getSelectionCount());this.actions.get("turn").setEnabled(!a.isSelectionEmpty());this.actions.get("curved").setEnabled(c);this.actions.get("rotation").setEnabled(e);this.actions.get("wordWrap").setEnabled(e);this.actions.get("autosize").setEnabled(e);c=e&&1== +a.getSelectionCount();this.actions.get("group").setEnabled(1<a.getSelectionCount()||c&&!a.isContainer(a.getSelectionCell()));this.actions.get("ungroup").setEnabled(1==a.getSelectionCount()&&(0<a.getModel().getChildCount(a.getSelectionCell())||c&&a.isContainer(a.getSelectionCell())));this.actions.get("removeFromGroup").setEnabled(c&&a.getModel().isVertex(a.getModel().getParent(a.getSelectionCell())));a.view.getState(a.getSelectionCell());this.menus.get("navigation").setEnabled(b||null!=a.view.currentRoot); +this.actions.get("collapsible").setEnabled(e&&(a.isContainer(a.getSelectionCell())||0<a.model.getChildCount(a.getSelectionCell())));this.actions.get("home").setEnabled(null!=a.view.currentRoot);this.actions.get("exitGroup").setEnabled(null!=a.view.currentRoot);this.actions.get("enterGroup").setEnabled(1==a.getSelectionCount()&&a.isValidRoot(a.getSelectionCell()));b=1==a.getSelectionCount()&&a.isCellFoldable(a.getSelectionCell());this.actions.get("expand").setEnabled(b);this.actions.get("collapse").setEnabled(b); +this.actions.get("editLink").setEnabled(1==a.getSelectionCount());this.actions.get("openLink").setEnabled(1==a.getSelectionCount()&&null!=a.getLinkForCell(a.getSelectionCell()));this.actions.get("guides").setEnabled(a.isEnabled());this.actions.get("grid").setEnabled(!this.editor.chromeless||this.editor.editable);b=a.isEnabled()&&!a.isCellLocked(a.getDefaultParent());this.menus.get("layout").setEnabled(b);this.menus.get("insert").setEnabled(b);this.menus.get("direction").setEnabled(b&&e);this.menus.get("align").setEnabled(b&& +e&&1<a.getSelectionCount());this.menus.get("distribute").setEnabled(b&&e&&1<a.getSelectionCount());this.actions.get("selectVertices").setEnabled(b);this.actions.get("selectEdges").setEnabled(b);this.actions.get("selectAll").setEnabled(b);this.actions.get("selectNone").setEnabled(b);this.updatePasteActionStates()}; +EditorUi.prototype.refresh=function(a){a=null!=a?a:!0;var b=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),e=this.container.clientWidth,c=this.container.clientHeight;this.container==document.body&&(e=document.body.clientWidth||document.documentElement.clientWidth,c=b?document.body.clientHeight||document.documentElement.clientHeight:document.documentElement.clientHeight);var k=0;mxClient.IS_IOS&&!window.navigator.standalone&&window.innerHeight!=document.documentElement.clientHeight&& +(k=document.documentElement.clientHeight-window.innerHeight,window.scrollTo(0,0));var m=Math.max(0,Math.min(this.hsplitPosition,e-this.splitSize-20)),q=0;null!=this.menubar&&(this.menubarContainer.style.height=this.menubarHeight+"px",q+=this.menubarHeight);null!=this.toolbar&&(this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px",q+=this.toolbarHeight);0<q&&!mxClient.IS_QUIRKS&&(q+=1);var r=0;if(null!=this.sidebarFooterContainer){var v= +this.footerHeight+k,r=Math.max(0,Math.min(c-q-v,this.sidebarFooterHeight));this.sidebarFooterContainer.style.width=m+"px";this.sidebarFooterContainer.style.height=r+"px";this.sidebarFooterContainer.style.bottom=v+"px"}v=null!=this.format?this.formatWidth:0;this.sidebarContainer.style.top=q+"px";this.sidebarContainer.style.width=m+"px";this.formatContainer.style.top=q+"px";this.formatContainer.style.width=v+"px";this.formatContainer.style.display=null!=this.format?"":"none";this.diagramContainer.style.left= +null!=this.hsplit.parentNode?m+this.splitSize+"px":"0px";this.diagramContainer.style.top=this.sidebarContainer.style.top;this.footerContainer.style.height=this.footerHeight+"px";this.hsplit.style.top=this.sidebarContainer.style.top;this.hsplit.style.bottom=this.footerHeight+k+"px";this.hsplit.style.left=m+"px";this.footerContainer.style.display=0==this.footerHeight?"none":"";null!=this.tabContainer&&(this.tabContainer.style.left=this.diagramContainer.style.left);b?(this.menubarContainer.style.width= +e+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width,b=Math.max(0,c-this.footerHeight-this.menubarHeight-this.toolbarHeight),this.sidebarContainer.style.height=b-r+"px",this.formatContainer.style.height=b+"px",this.diagramContainer.style.width=null!=this.hsplit.parentNode?Math.max(0,e-m-this.splitSize-v)+"px":e+"px",this.footerContainer.style.width=this.menubarContainer.style.width,r=Math.max(0,c-this.footerHeight-this.menubarHeight-this.toolbarHeight),null!=this.tabContainer&& +(this.tabContainer.style.width=this.diagramContainer.style.width,this.tabContainer.style.bottom=this.footerHeight+k+"px",r-=this.tabContainer.clientHeight),this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"):(0<this.footerHeight&&(this.footerContainer.style.bottom=k+"px"),this.diagramContainer.style.right=v+"px",e=0,null!=this.tabContainer&&(this.tabContainer.style.bottom=this.footerHeight+k+"px",this.tabContainer.style.right=this.diagramContainer.style.right,e=this.tabContainer.clientHeight), +this.sidebarContainer.style.bottom=this.footerHeight+r+k+"px",this.formatContainer.style.bottom=this.footerHeight+k+"px",this.diagramContainer.style.bottom=this.footerHeight+k+e+"px");a&&this.editor.graph.sizeDidChange()};EditorUi.prototype.createTabContainer=function(){return null}; EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer");this.toolbarContainer=this.createDiv("geToolbarContainer");this.sidebarContainer=this.createDiv("geSidebarContainer");this.formatContainer=this.createDiv("geSidebarContainer geFormatContainer");this.diagramContainer=this.createDiv("geDiagramContainer");this.footerContainer=this.createDiv("geFooterContainer");this.hsplit=this.createDiv("geHsplit");this.hsplit.setAttribute("title",mxResources.get("collapseExpand")); this.menubarContainer.style.top="0px";this.menubarContainer.style.left="0px";this.menubarContainer.style.right="0px";this.toolbarContainer.style.left="0px";this.toolbarContainer.style.right="0px";this.sidebarContainer.style.left="0px";this.formatContainer.style.right="0px";this.formatContainer.style.zIndex="1";this.diagramContainer.style.right=(null!=this.format?this.formatWidth:0)+"px";this.footerContainer.style.left="0px";this.footerContainer.style.right="0px";this.footerContainer.style.bottom= "0px";this.footerContainer.style.zIndex=mxPopupMenu.prototype.zIndex-2;this.hsplit.style.width=this.splitSize+"px";if(this.sidebarFooterContainer=this.createSidebarFooterContainer())this.sidebarFooterContainer.style.left="0px";this.editor.chromeless?this.diagramContainer.style.border="none":this.tabContainer=this.createTabContainer()};EditorUi.prototype.createSidebarFooterContainer=function(){return null}; @@ -2162,120 +2164,120 @@ this.sidebar=this.editor.chromeless?null:this.createSidebar(this.sidebarContaine this.container.appendChild(this.sidebarFooterContainer);this.container.appendChild(this.diagramContainer);null!=this.container&&null!=this.tabContainer&&this.container.appendChild(this.tabContainer);this.toolbar=this.editor.chromeless?null:this.createToolbar(this.createDiv("geToolbar"));null!=this.toolbar&&(this.toolbarContainer.appendChild(this.toolbar.container),this.container.appendChild(this.toolbarContainer));null!=this.sidebar&&(this.container.appendChild(this.hsplit),this.addSplitHandler(this.hsplit, !0,0,mxUtils.bind(this,function(a){this.hsplitPosition=a;this.refresh()})))};EditorUi.prototype.createStatusContainer=function(){var a=document.createElement("a");a.className="geItem geStatus";420>screen.width&&(a.style.maxWidth=Math.max(20,screen.width-320)+"px",a.style.overflow="hidden");return a};EditorUi.prototype.setStatusText=function(a){this.statusContainer.innerHTML=a};EditorUi.prototype.createToolbar=function(a){return new Toolbar(this,a)}; EditorUi.prototype.createSidebar=function(a){return new Sidebar(this,a)};EditorUi.prototype.createFormat=function(a){return new Format(this,a)};EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")};EditorUi.prototype.createDiv=function(a){var b=document.createElement("div");b.className=a;return b}; -EditorUi.prototype.addSplitHandler=function(a,b,f,d){function k(a){if(null!=p){var h=new mxPoint(mxEvent.getClientX(a),mxEvent.getClientY(a));d(Math.max(0,q+(b?h.x-p.x:p.y-h.y)-f));mxEvent.consume(a);q!=g()&&(w=!0,c=null)}}function n(a){k(a);p=q=null}var p=null,q=null,w=!0,c=null;mxClient.IS_POINTER&&(a.style.touchAction="none");var g=mxUtils.bind(this,function(){var c=parseInt(b?a.style.left:a.style.bottom);b||(c=c+f-this.footerHeight);return c});mxEvent.addGestureListeners(a,function(a){p=new mxPoint(mxEvent.getClientX(a), -mxEvent.getClientY(a));q=g();w=!1;mxEvent.consume(a)});mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){if(!w&&this.hsplitClickEnabled){var b=null!=c?c-f:0;c=g();d(b);mxEvent.consume(a)}}));mxEvent.addGestureListeners(document,null,k,n);this.destroyFunctions.push(function(){mxEvent.removeGestureListeners(document,null,k,n)})}; -EditorUi.prototype.showDialog=function(a,b,f,d,k,n,p,q,w){this.editor.graph.tooltipHandler.hideTooltip();null==this.dialogs&&(this.dialogs=[]);this.dialog=new Dialog(this,a,b,f,d,k,n,p,q,w);this.dialogs.push(this.dialog)}; -EditorUi.prototype.hideDialog=function(a,b){if(null!=this.dialogs&&0<this.dialogs.length){var f=this.dialogs.pop();0==f.close(a,b)?this.dialogs.push(f):(this.dialog=0<this.dialogs.length?this.dialogs[this.dialogs.length-1]:null,null==this.dialog&&"hidden"!=this.editor.graph.container.style.visibility&&this.editor.graph.container.focus(),mxUtils.clearSelection(),this.editor.fireEvent(new mxEventObject("hideDialog")))}}; -EditorUi.prototype.pickColor=function(a,b){var f=this.editor.graph,d=f.cellEditor.saveSelection(),k=226+17*(Math.ceil(ColorDialog.prototype.presetColors.length/12)+Math.ceil(ColorDialog.prototype.defaultColors.length/12)),n=new ColorDialog(this,a||"none",function(a){f.cellEditor.restoreSelection(d);b(a)},function(){f.cellEditor.restoreSelection(d)});this.showDialog(n.container,230,k,!0,!1);n.init()}; +EditorUi.prototype.addSplitHandler=function(a,b,e,c){function k(a){if(null!=q){var f=new mxPoint(mxEvent.getClientX(a),mxEvent.getClientY(a));c(Math.max(0,r+(b?f.x-q.x:q.y-f.y)-e));mxEvent.consume(a);r!=d()&&(v=!0,z=null)}}function m(a){k(a);q=r=null}var q=null,r=null,v=!0,z=null;mxClient.IS_POINTER&&(a.style.touchAction="none");var d=mxUtils.bind(this,function(){var d=parseInt(b?a.style.left:a.style.bottom);b||(d=d+e-this.footerHeight);return d});mxEvent.addGestureListeners(a,function(a){q=new mxPoint(mxEvent.getClientX(a), +mxEvent.getClientY(a));r=d();v=!1;mxEvent.consume(a)});mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){if(!v&&this.hsplitClickEnabled){var b=null!=z?z-e:0;z=d();c(b);mxEvent.consume(a)}}));mxEvent.addGestureListeners(document,null,k,m);this.destroyFunctions.push(function(){mxEvent.removeGestureListeners(document,null,k,m)})}; +EditorUi.prototype.showDialog=function(a,b,e,c,k,m,q,r,v){this.editor.graph.tooltipHandler.hideTooltip();null==this.dialogs&&(this.dialogs=[]);this.dialog=new Dialog(this,a,b,e,c,k,m,q,r,v);this.dialogs.push(this.dialog)}; +EditorUi.prototype.hideDialog=function(a,b){if(null!=this.dialogs&&0<this.dialogs.length){var e=this.dialogs.pop();0==e.close(a,b)?this.dialogs.push(e):(this.dialog=0<this.dialogs.length?this.dialogs[this.dialogs.length-1]:null,null==this.dialog&&"hidden"!=this.editor.graph.container.style.visibility&&this.editor.graph.container.focus(),mxUtils.clearSelection(),this.editor.fireEvent(new mxEventObject("hideDialog")))}}; +EditorUi.prototype.pickColor=function(a,b){var e=this.editor.graph,c=e.cellEditor.saveSelection(),k=226+17*(Math.ceil(ColorDialog.prototype.presetColors.length/12)+Math.ceil(ColorDialog.prototype.defaultColors.length/12)),m=new ColorDialog(this,a||"none",function(a){e.cellEditor.restoreSelection(c);b(a)},function(){e.cellEditor.restoreSelection(c)});this.showDialog(m.container,230,k,!0,!1);m.init()}; EditorUi.prototype.openFile=function(){window.openFile=new OpenFile(mxUtils.bind(this,function(a){this.hideDialog(a)}));this.showDialog((new OpenDialog(this)).container,Editor.useLocalStorage?640:320,Editor.useLocalStorage?480:220,!0,!0,function(){window.openFile=null})}; -EditorUi.prototype.extractGraphModelFromHtml=function(a){var b=null;try{var f=a.indexOf("<mxGraphModel ");if(0<=f){var d=a.lastIndexOf("</mxGraphModel>");d>f&&(b=a.substring(f,d+21).replace(/>/g,">").replace(/</g,"<").replace(/\\"/g,'"').replace(/\n/g,""))}}catch(k){}return b}; -EditorUi.prototype.extractGraphModelFromEvent=function(a){var b=null,f=null;null!=a&&(a=null!=a.dataTransfer?a.dataTransfer:a.clipboardData,null!=a&&(10==document.documentMode||11==document.documentMode?f=a.getData("Text"):(f=0<=mxUtils.indexOf(a.types,"text/html")?a.getData("text/html"):null,mxUtils.indexOf(a.types,null==f||0==f.length)&&(f=a.getData("text/plain"))),null!=f&&(f=this.editor.graph.zapGremlins(mxUtils.trim(f)),a=this.extractGraphModelFromHtml(f),null!=a&&(f=a))));null!=f&&this.isCompatibleString(f)&& -(b=f);return b};EditorUi.prototype.isCompatibleString=function(a){return!1};EditorUi.prototype.saveFile=function(a){a||null==this.editor.filename?(a=new FilenameDialog(this,this.editor.getOrCreateFilename(),mxResources.get("save"),mxUtils.bind(this,function(a){this.save(a)}),null,mxUtils.bind(this,function(a){if(null!=a&&0<a.length)return!0;mxUtils.confirm(mxResources.get("invalidName"));return!1})),this.showDialog(a.container,300,100,!0,!0),a.init()):this.save(this.editor.getOrCreateFilename())}; +EditorUi.prototype.extractGraphModelFromHtml=function(a){var b=null;try{var e=a.indexOf("<mxGraphModel ");if(0<=e){var c=a.lastIndexOf("</mxGraphModel>");c>e&&(b=a.substring(e,c+21).replace(/>/g,">").replace(/</g,"<").replace(/\\"/g,'"').replace(/\n/g,""))}}catch(k){}return b}; +EditorUi.prototype.extractGraphModelFromEvent=function(a){var b=null,e=null;null!=a&&(a=null!=a.dataTransfer?a.dataTransfer:a.clipboardData,null!=a&&(10==document.documentMode||11==document.documentMode?e=a.getData("Text"):(e=0<=mxUtils.indexOf(a.types,"text/html")?a.getData("text/html"):null,mxUtils.indexOf(a.types,null==e||0==e.length)&&(e=a.getData("text/plain"))),null!=e&&(e=this.editor.graph.zapGremlins(mxUtils.trim(e)),a=this.extractGraphModelFromHtml(e),null!=a&&(e=a))));null!=e&&this.isCompatibleString(e)&& +(b=e);return b};EditorUi.prototype.isCompatibleString=function(a){return!1};EditorUi.prototype.saveFile=function(a){a||null==this.editor.filename?(a=new FilenameDialog(this,this.editor.getOrCreateFilename(),mxResources.get("save"),mxUtils.bind(this,function(a){this.save(a)}),null,mxUtils.bind(this,function(a){if(null!=a&&0<a.length)return!0;mxUtils.confirm(mxResources.get("invalidName"));return!1})),this.showDialog(a.container,300,100,!0,!0),a.init()):this.save(this.editor.getOrCreateFilename())}; EditorUi.prototype.save=function(a){if(null!=a){this.editor.graph.isEditing()&&this.editor.graph.stopEditing();var b=mxUtils.getXml(this.editor.getGraphXml());try{if(Editor.useLocalStorage){if(null!=localStorage.getItem(a)&&!mxUtils.confirm(mxResources.get("replaceIt",[a])))return;localStorage.setItem(a,b);this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("saved"))+" "+new Date)}else if(b.length<MAX_REQUEST_SIZE)(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(a)+"&xml="+encodeURIComponent(b))).simulate(document, -"_blank");else{mxUtils.alert(mxResources.get("drawingTooLarge"));mxUtils.popup(b);return}this.editor.setModified(!1);this.editor.setFilename(a);this.updateDocumentTitle()}catch(f){this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("errorSavingFile")))}}}; -EditorUi.prototype.executeLayout=function(a,b,f){var d=this.editor.graph;if(d.isEnabled()){d.getModel().beginUpdate();try{a()}catch(k){throw k;}finally{this.allowAnimation&&b&&0>navigator.userAgent.indexOf("Camino")?(a=new mxMorphing(d),a.addListener(mxEvent.DONE,mxUtils.bind(this,function(){d.getModel().endUpdate();null!=f&&f()})),a.startAnimation()):(d.getModel().endUpdate(),null!=f&&f())}}}; -EditorUi.prototype.showImageDialog=function(a,b,f,d){d=this.editor.graph.cellEditor;var k=d.saveSelection(),n=mxUtils.prompt(a,b);d.restoreSelection(k);if(null!=n&&0<n.length){var p=new Image;p.onload=function(){f(n,p.width,p.height)};p.onerror=function(){f(null);mxUtils.alert(mxResources.get("fileNotFound"))};p.src=n}else f(null)};EditorUi.prototype.showLinkDialog=function(a,b,f){a=new LinkDialog(this,a,b,f);this.showDialog(a.container,420,90,!0,!0);a.init()}; +"_blank");else{mxUtils.alert(mxResources.get("drawingTooLarge"));mxUtils.popup(b);return}this.editor.setModified(!1);this.editor.setFilename(a);this.updateDocumentTitle()}catch(e){this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("errorSavingFile")))}}}; +EditorUi.prototype.executeLayout=function(a,b,e){var c=this.editor.graph;if(c.isEnabled()){c.getModel().beginUpdate();try{a()}catch(k){throw k;}finally{this.allowAnimation&&b&&0>navigator.userAgent.indexOf("Camino")?(a=new mxMorphing(c),a.addListener(mxEvent.DONE,mxUtils.bind(this,function(){c.getModel().endUpdate();null!=e&&e()})),a.startAnimation()):(c.getModel().endUpdate(),null!=e&&e())}}}; +EditorUi.prototype.showImageDialog=function(a,b,e,c){c=this.editor.graph.cellEditor;var k=c.saveSelection(),m=mxUtils.prompt(a,b);c.restoreSelection(k);if(null!=m&&0<m.length){var q=new Image;q.onload=function(){e(m,q.width,q.height)};q.onerror=function(){e(null);mxUtils.alert(mxResources.get("fileNotFound"))};q.src=m}else e(null)};EditorUi.prototype.showLinkDialog=function(a,b,e){a=new LinkDialog(this,a,b,e);this.showDialog(a.container,420,90,!0,!0);a.init()}; EditorUi.prototype.showDataDialog=function(a){null!=a&&(a=new EditDataDialog(this,a),this.showDialog(a.container,340,340,!0,!1,null,!1),a.init())}; -EditorUi.prototype.showBackgroundImageDialog=function(a){a=null!=a?a:mxUtils.bind(this,function(a){a=new ChangePageSetup(this,null,a);a.ignoreColor=!0;this.editor.graph.model.execute(a)});var b=mxUtils.prompt(mxResources.get("backgroundImage"),"");if(null!=b&&0<b.length){var f=new Image;f.onload=function(){a(new mxImage(b,f.width,f.height))};f.onerror=function(){a(null);mxUtils.alert(mxResources.get("fileNotFound"))};f.src=b}else a(null)}; -EditorUi.prototype.setBackgroundImage=function(a){this.editor.graph.setBackgroundImage(a);this.editor.graph.view.validateBackgroundImage();this.fireEvent(new mxEventObject("backgroundImageChanged"))};EditorUi.prototype.confirm=function(a,b,f){mxUtils.confirm(a)?null!=b&&b():null!=f&&f()}; +EditorUi.prototype.showBackgroundImageDialog=function(a){a=null!=a?a:mxUtils.bind(this,function(a){a=new ChangePageSetup(this,null,a);a.ignoreColor=!0;this.editor.graph.model.execute(a)});var b=mxUtils.prompt(mxResources.get("backgroundImage"),"");if(null!=b&&0<b.length){var e=new Image;e.onload=function(){a(new mxImage(b,e.width,e.height))};e.onerror=function(){a(null);mxUtils.alert(mxResources.get("fileNotFound"))};e.src=b}else a(null)}; +EditorUi.prototype.setBackgroundImage=function(a){this.editor.graph.setBackgroundImage(a);this.editor.graph.view.validateBackgroundImage();this.fireEvent(new mxEventObject("backgroundImageChanged"))};EditorUi.prototype.confirm=function(a,b,e){mxUtils.confirm(a)?null!=b&&b():null!=e&&e()}; EditorUi.prototype.createOutline=function(a){var b=new mxOutline(this.editor.graph);b.border=20;mxEvent.addListener(window,"resize",function(){b.update()});this.addListener("pageFormatChanged",function(){b.update()});return b};EditorUi.prototype.altShiftActions={67:"clearWaypoints",65:"connectionArrows",76:"editLink",80:"connectionPoints",84:"editTooltip",86:"pasteSize",88:"copySize"}; -EditorUi.prototype.createKeyHandler=function(a){function b(a,c,b){p.push(function(){if(!d.isSelectionEmpty()&&d.isEnabled())if(c=null!=c?c:1,b){d.getModel().beginUpdate();try{for(var g=d.getSelectionCells(),h=0;h<g.length;h++)if(d.getModel().isVertex(g[h])&&d.isCellResizable(g[h])){var f=d.getCellGeometry(g[h]);null!=f&&(f=f.clone(),37==a?f.width=Math.max(0,f.width-c):38==a?f.height=Math.max(0,f.height-c):39==a?f.width+=c:40==a&&(f.height+=c),d.getModel().setGeometry(g[h],f))}}finally{d.getModel().endUpdate()}}else g= -d.getSelectionCell(),h=d.model.getParent(g),f=null,1==d.getSelectionCount()&&d.model.isVertex(g)&&null!=d.layoutManager&&!d.isCellLocked(g)&&(f=d.layoutManager.getLayout(h)),null!=f&&f.constructor==mxStackLayout?(f=h.getIndex(g),37==a||38==a?d.model.add(h,g,Math.max(0,f-1)):39!=a&&40!=a||d.model.add(h,g,Math.min(d.model.getChildCount(h),f+1))):(h=g=0,37==a?g=-c:38==a?h=-c:39==a?g=c:40==a&&(h=c),d.moveCells(d.getMovableCells(d.getSelectionCells()),g,h))});null!=q&&window.clearTimeout(q);q=window.setTimeout(function(){if(0< -p.length){d.getModel().beginUpdate();try{for(var a=0;a<p.length;a++)p[a]();p=[]}finally{d.getModel().endUpdate()}d.scrollCellToVisible(d.getSelectionCell())}},200)}var f=this,d=this.editor.graph,k=new mxKeyHandler(d),n=k.isEventIgnored;k.isEventIgnored=function(a){return(!this.isControlDown(a)||mxEvent.isShiftDown(a)||90!=a.keyCode&&89!=a.keyCode&&188!=a.keyCode&&190!=a.keyCode&&85!=a.keyCode)&&(66!=a.keyCode&&73!=a.keyCode||!this.isControlDown(a)||this.graph.cellEditor.isContentEditing()&&!mxClient.IS_FF&& -!mxClient.IS_SF)&&n.apply(this,arguments)};k.isEnabledForEvent=function(a){return!mxEvent.isConsumed(a)&&this.isGraphEvent(a)&&this.isEnabled()&&(null==f.dialogs||0==f.dialogs.length)};k.isControlDown=function(a){return mxEvent.isControlDown(a)||mxClient.IS_MAC&&a.metaKey};var p=[],q=null,w={37:mxConstants.DIRECTION_WEST,38:mxConstants.DIRECTION_NORTH,39:mxConstants.DIRECTION_EAST,40:mxConstants.DIRECTION_SOUTH},c=k.getFunction;mxKeyHandler.prototype.getFunction=function(a){if(d.isEnabled()){if(mxEvent.isShiftDown(a)&& -mxEvent.isAltDown(a)){var g=f.actions.get(f.altShiftActions[a.keyCode]);if(null!=g)return g.funct}if(9==a.keyCode&&mxEvent.isAltDown(a))return mxEvent.isShiftDown(a)?function(){d.selectParentCell()}:function(){d.selectChildCell()};if(null!=w[a.keyCode]&&!d.isSelectionEmpty())if(mxEvent.isShiftDown(a)&&mxEvent.isAltDown(a)){if(d.model.isVertex(d.getSelectionCell()))return function(){var c=d.connectVertex(d.getSelectionCell(),w[a.keyCode],d.defaultEdgeLength,a,!0);null!=c&&0<c.length&&(1==c.length&& -d.model.isEdge(c[0])?d.setSelectionCell(d.model.getTerminal(c[0],!1)):d.setSelectionCell(c[c.length-1]),d.scrollCellToVisible(d.getSelectionCell()),null!=f.hoverIcons&&f.hoverIcons.update(d.view.getState(d.getSelectionCell())))}}else return this.isControlDown(a)?function(){b(a.keyCode,mxEvent.isShiftDown(a)?d.gridSize:null,!0)}:function(){b(a.keyCode,mxEvent.isShiftDown(a)?d.gridSize:null)}}return c.apply(this,arguments)};k.bindAction=mxUtils.bind(this,function(a,c,b,d){var g=this.actions.get(b); -null!=g&&(b=function(){g.isEnabled()&&g.funct()},c?d?k.bindControlShiftKey(a,b):k.bindControlKey(a,b):d?k.bindShiftKey(a,b):k.bindKey(a,b))});var g=k.escape;k.escape=function(a){g.apply(this,arguments)};k.enter=function(){};k.bindControlShiftKey(36,function(){d.exitGroup()});k.bindControlShiftKey(35,function(){d.enterGroup()});k.bindKey(36,function(){d.home()});k.bindKey(35,function(){d.refresh()});k.bindAction(107,!0,"zoomIn");k.bindAction(109,!0,"zoomOut");k.bindAction(80,!0,"print");k.bindAction(79, -!0,"outline",!0);k.bindAction(112,!1,"about");if(!this.editor.chromeless||this.editor.editable)k.bindControlKey(36,function(){d.isEnabled()&&d.foldCells(!0)}),k.bindControlKey(35,function(){d.isEnabled()&&d.foldCells(!1)}),k.bindControlKey(13,function(){d.isEnabled()&&d.setSelectionCells(d.duplicateCells(d.getSelectionCells(),!1))}),k.bindAction(8,!1,"delete"),k.bindAction(8,!0,"deleteAll"),k.bindAction(46,!1,"delete"),k.bindAction(46,!0,"deleteAll"),k.bindAction(72,!0,"resetView"),k.bindAction(72, +EditorUi.prototype.createKeyHandler=function(a){function b(a,d,b){q.push(function(){if(!c.isSelectionEmpty()&&c.isEnabled())if(d=null!=d?d:1,b){c.getModel().beginUpdate();try{for(var f=c.getSelectionCells(),e=0;e<f.length;e++)if(c.getModel().isVertex(f[e])&&c.isCellResizable(f[e])){var l=c.getCellGeometry(f[e]);null!=l&&(l=l.clone(),37==a?l.width=Math.max(0,l.width-d):38==a?l.height=Math.max(0,l.height-d):39==a?l.width+=d:40==a&&(l.height+=d),c.getModel().setGeometry(f[e],l))}}finally{c.getModel().endUpdate()}}else f= +c.getSelectionCell(),e=c.model.getParent(f),l=null,1==c.getSelectionCount()&&c.model.isVertex(f)&&null!=c.layoutManager&&!c.isCellLocked(f)&&(l=c.layoutManager.getLayout(e)),null!=l&&l.constructor==mxStackLayout?(l=e.getIndex(f),37==a||38==a?c.model.add(e,f,Math.max(0,l-1)):39!=a&&40!=a||c.model.add(e,f,Math.min(c.model.getChildCount(e),l+1))):(e=f=0,37==a?f=-d:38==a?e=-d:39==a?f=d:40==a&&(e=d),c.moveCells(c.getMovableCells(c.getSelectionCells()),f,e))});null!=r&&window.clearTimeout(r);r=window.setTimeout(function(){if(0< +q.length){c.getModel().beginUpdate();try{for(var a=0;a<q.length;a++)q[a]();q=[]}finally{c.getModel().endUpdate()}c.scrollCellToVisible(c.getSelectionCell())}},200)}var e=this,c=this.editor.graph,k=new mxKeyHandler(c),m=k.isEventIgnored;k.isEventIgnored=function(a){return(!this.isControlDown(a)||mxEvent.isShiftDown(a)||90!=a.keyCode&&89!=a.keyCode&&188!=a.keyCode&&190!=a.keyCode&&85!=a.keyCode)&&(66!=a.keyCode&&73!=a.keyCode||!this.isControlDown(a)||this.graph.cellEditor.isContentEditing()&&!mxClient.IS_FF&& +!mxClient.IS_SF)&&m.apply(this,arguments)};k.isEnabledForEvent=function(a){return!mxEvent.isConsumed(a)&&this.isGraphEvent(a)&&this.isEnabled()&&(null==e.dialogs||0==e.dialogs.length)};k.isControlDown=function(a){return mxEvent.isControlDown(a)||mxClient.IS_MAC&&a.metaKey};var q=[],r=null,v={37:mxConstants.DIRECTION_WEST,38:mxConstants.DIRECTION_NORTH,39:mxConstants.DIRECTION_EAST,40:mxConstants.DIRECTION_SOUTH},z=k.getFunction;mxKeyHandler.prototype.getFunction=function(a){if(c.isEnabled()){if(mxEvent.isShiftDown(a)&& +mxEvent.isAltDown(a)){var d=e.actions.get(e.altShiftActions[a.keyCode]);if(null!=d)return d.funct}if(9==a.keyCode&&mxEvent.isAltDown(a))return mxEvent.isShiftDown(a)?function(){c.selectParentCell()}:function(){c.selectChildCell()};if(null!=v[a.keyCode]&&!c.isSelectionEmpty())if(mxEvent.isShiftDown(a)&&mxEvent.isAltDown(a)){if(c.model.isVertex(c.getSelectionCell()))return function(){var d=c.connectVertex(c.getSelectionCell(),v[a.keyCode],c.defaultEdgeLength,a,!0);null!=d&&0<d.length&&(1==d.length&& +c.model.isEdge(d[0])?c.setSelectionCell(c.model.getTerminal(d[0],!1)):c.setSelectionCell(d[d.length-1]),c.scrollCellToVisible(c.getSelectionCell()),null!=e.hoverIcons&&e.hoverIcons.update(c.view.getState(c.getSelectionCell())))}}else return this.isControlDown(a)?function(){b(a.keyCode,mxEvent.isShiftDown(a)?c.gridSize:null,!0)}:function(){b(a.keyCode,mxEvent.isShiftDown(a)?c.gridSize:null)}}return z.apply(this,arguments)};k.bindAction=mxUtils.bind(this,function(a,d,b,c){var f=this.actions.get(b); +null!=f&&(b=function(){f.isEnabled()&&f.funct()},d?c?k.bindControlShiftKey(a,b):k.bindControlKey(a,b):c?k.bindShiftKey(a,b):k.bindKey(a,b))});var d=k.escape;k.escape=function(a){d.apply(this,arguments)};k.enter=function(){};k.bindControlShiftKey(36,function(){c.exitGroup()});k.bindControlShiftKey(35,function(){c.enterGroup()});k.bindKey(36,function(){c.home()});k.bindKey(35,function(){c.refresh()});k.bindAction(107,!0,"zoomIn");k.bindAction(109,!0,"zoomOut");k.bindAction(80,!0,"print");k.bindAction(79, +!0,"outline",!0);k.bindAction(112,!1,"about");if(!this.editor.chromeless||this.editor.editable)k.bindControlKey(36,function(){c.isEnabled()&&c.foldCells(!0)}),k.bindControlKey(35,function(){c.isEnabled()&&c.foldCells(!1)}),k.bindControlKey(13,function(){c.isEnabled()&&c.setSelectionCells(c.duplicateCells(c.getSelectionCells(),!1))}),k.bindAction(8,!1,"delete"),k.bindAction(8,!0,"deleteAll"),k.bindAction(46,!1,"delete"),k.bindAction(46,!0,"deleteAll"),k.bindAction(72,!0,"resetView"),k.bindAction(72, !0,"fitWindow",!0),k.bindAction(74,!0,"fitPage"),k.bindAction(74,!0,"fitTwoPages",!0),k.bindAction(48,!0,"customZoom"),k.bindAction(82,!0,"turn"),k.bindAction(82,!0,"clearDefaultStyle",!0),k.bindAction(83,!0,"save"),k.bindAction(83,!0,"saveAs",!0),k.bindAction(65,!0,"selectAll"),k.bindAction(65,!0,"selectNone",!0),k.bindAction(73,!0,"selectVertices",!0),k.bindAction(69,!0,"selectEdges",!0),k.bindAction(69,!0,"editStyle"),k.bindAction(66,!0,"bold"),k.bindAction(66,!0,"toBack",!0),k.bindAction(70,!0, "toFront",!0),k.bindAction(68,!0,"duplicate"),k.bindAction(68,!0,"setAsDefaultStyle",!0),k.bindAction(90,!0,"undo"),k.bindAction(89,!0,"autosize",!0),k.bindAction(88,!0,"cut"),k.bindAction(67,!0,"copy"),k.bindAction(86,!0,"paste"),k.bindAction(71,!0,"group"),k.bindAction(77,!0,"editData"),k.bindAction(71,!0,"grid",!0),k.bindAction(73,!0,"italic"),k.bindAction(76,!0,"lockUnlock"),k.bindAction(76,!0,"layers",!0),k.bindAction(80,!0,"formatPanel",!0),k.bindAction(85,!0,"underline"),k.bindAction(85,!0, -"ungroup",!0),k.bindAction(190,!0,"superscript"),k.bindAction(188,!0,"subscript"),k.bindKey(13,function(){d.isEnabled()&&d.startEditingAtCell()}),k.bindKey(113,function(){d.isEnabled()&&d.startEditingAtCell()});mxClient.IS_WIN?k.bindAction(89,!0,"redo"):k.bindAction(90,!0,"redo",!0);return k}; +"ungroup",!0),k.bindAction(190,!0,"superscript"),k.bindAction(188,!0,"subscript"),k.bindKey(13,function(){c.isEnabled()&&c.startEditingAtCell()}),k.bindKey(113,function(){c.isEnabled()&&c.startEditingAtCell()});mxClient.IS_WIN?k.bindAction(89,!0,"redo"):k.bindAction(90,!0,"redo",!0);return k}; EditorUi.prototype.destroy=function(){null!=this.editor&&(this.editor.destroy(),this.editor=null);null!=this.menubar&&(this.menubar.destroy(),this.menubar=null);null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null);null!=this.sidebar&&(this.sidebar.destroy(),this.sidebar=null);null!=this.keyHandler&&(this.keyHandler.destroy(),this.keyHandler=null);null!=this.keydownHandler&&(mxEvent.removeListener(document,"keydown",this.keydownHandler),this.keydownHandler=null);null!=this.keyupHandler&& (mxEvent.removeListener(document,"keyup",this.keyupHandler),this.keyupHandler=null);null!=this.resizeHandler&&(mxEvent.removeListener(window,"resize",this.resizeHandler),this.resizeHandler=null);null!=this.gestureHandler&&(mxEvent.removeGestureListeners(document,this.gestureHandler),this.gestureHandler=null);null!=this.orientationChangeHandler&&(mxEvent.removeListener(window,"orientationchange",this.orientationChangeHandler),this.orientationChangeHandler=null);null!=this.scrollHandler&&(mxEvent.removeListener(window, "scroll",this.scrollHandler),this.scrollHandler=null);if(null!=this.destroyFunctions){for(var a=0;a<this.destroyFunctions.length;a++)this.destroyFunctions[a]();this.destroyFunctions=null}for(var b=[this.menubarContainer,this.toolbarContainer,this.sidebarContainer,this.formatContainer,this.diagramContainer,this.footerContainer,this.chromelessToolbar,this.hsplit,this.sidebarFooterContainer,this.layersDialog],a=0;a<b.length;a++)null!=b[a]&&null!=b[a].parentNode&&b[a].parentNode.removeChild(b[a])};"undefined"!==typeof html4&&(html4.ATTRIBS["a::target"]=0,html4.ATTRIBS["source::src"]=0,html4.ATTRIBS["video::src"]=0);mxConstants.SHADOW_OPACITY=.25;mxConstants.SHADOWCOLOR="#000000";mxConstants.VML_SHADOWCOLOR="#d0d0d0";mxGraph.prototype.pageBreakColor="#c0c0c0";mxGraph.prototype.pageScale=1; (function(){try{if(null!=navigator&&null!=navigator.language){var a=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===a||"en-ca"===a||"es-mx"===a?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(b){}})();mxText.prototype.baseSpacingTop=5;mxText.prototype.baseSpacingBottom=1;mxGraphModel.prototype.ignoreRelativeEdgeParent=!1; -mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif";mxGraphView.prototype.gridSteps=4;mxGraphView.prototype.minGridSize=4;mxGraphView.prototype.gridColor="#e0e0e0";mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(a,b,f){return null}; -Graph=function(a,b,f,d,k){mxGraph.call(this,a,b,f,d);this.themes=k||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);a=this.baseUrl;b=a.indexOf("//");this.domainPathUrl=this.domainUrl="";0<b&&(b=a.indexOf("/",b+2),0<b&&(this.domainUrl=a.substring(0,b)),b=a.lastIndexOf("/"),0<b&&(this.domainPathUrl=a.substring(0,b+1)));this.isHtmlLabel=function(a){var c=this.view.getState(a);a=null!=c?c.style:this.getCellStyle(a); -return"1"==a.html||"wrap"==a[mxConstants.STYLE_WHITE_SPACE]};if(this.edgeMode){var n=null,p=null,q=null,w=null,c=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,b){if("mouseDown"==b.getProperty("eventName")&&this.isEnabled()){var d=b.getProperty("event");if(!mxEvent.isControlDown(d.getEvent())&&!mxEvent.isShiftDown(d.getEvent())){var g=d.getState();null!=g&&this.model.isEdge(g.cell)&&(n=new mxPoint(d.getGraphX(),d.getGraphY()),c=this.isCellSelected(g.cell),q=g,p=d,null!= -g.text&&null!=g.text.boundingBox&&mxUtils.contains(g.text.boundingBox,d.getGraphX(),d.getGraphY())?w=mxEvent.LABEL_HANDLE:(g=this.selectionCellsHandler.getHandler(g.cell),null!=g&&null!=g.bends&&0<g.bends.length&&(w=g.getHandleForEvent(d))))}}}));this.addMouseListener({mouseDown:function(a,c){},mouseMove:mxUtils.bind(this,function(a,b){var d=this.selectionCellsHandler.handlers.map,g;for(g in d)if(null!=d[g].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isControlDown(b.getEvent())&& -!mxEvent.isShiftDown(b.getEvent())&&!mxEvent.isAltDown(b.getEvent()))if(g=this.tolerance,null!=n&&null!=q&&null!=p){if(d=q,Math.abs(n.x-b.getGraphX())>g||Math.abs(n.y-b.getGraphY())>g){this.isCellSelected(d.cell)||this.setSelectionCell(d.cell);var h=this.selectionCellsHandler.getHandler(d.cell);if(null!=h&&null!=h.bends&&0<h.bends.length){var f=h.getHandleForEvent(p),l=this.view.getEdgeStyle(d);g=l==mxEdgeStyle.EntityRelation;c||w!=mxEvent.LABEL_HANDLE||(f=w);if(g&&0!=f&&f!=h.bends.length-1&&f!=mxEvent.LABEL_HANDLE)!g|| -null==d.visibleSourceState&&null==d.visibleTargetState||(this.graphHandler.reset(),b.consume());else if(f==mxEvent.LABEL_HANDLE||0==f||null!=d.visibleSourceState||f==h.bends.length-1||null!=d.visibleTargetState)g||f==mxEvent.LABEL_HANDLE||(g=d.absolutePoints,null!=g&&(null==l&&null==f||l==mxEdgeStyle.OrthConnector)&&(f=w,null==f&&(f=new mxRectangle(n.x,n.y),f.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(f,g[0].x,g[0].y)?f=0:mxUtils.contains(f,g[g.length-1].x,g[g.length-1].y)? -f=h.bends.length-1:null!=l&&(2==g.length||3==g.length&&(0==Math.round(g[0].x-g[1].x)&&0==Math.round(g[1].x-g[2].x)||0==Math.round(g[0].y-g[1].y)&&0==Math.round(g[1].y-g[2].y)))?f=2:(f=mxUtils.findNearestSegment(d,n.x,n.y),f=null==l?mxEvent.VIRTUAL_HANDLE-f:f+1))),null==f&&(f=mxEvent.VIRTUAL_HANDLE)),h.start(b.getGraphX(),b.getGraphX(),f),w=n=p=q=null,c=!1,b.consume(),this.graphHandler.reset()}}}else if(d=b.getState(),null!=d&&this.model.isEdge(d.cell)){h=null;g=d.absolutePoints;if(null!=g)if(f=new mxRectangle(b.getGraphX(), -b.getGraphY()),f.grow(mxEdgeHandler.prototype.handleImage.width/2),null!=d.text&&null!=d.text.boundingBox&&mxUtils.contains(d.text.boundingBox,b.getGraphX(),b.getGraphY()))h="move";else if(mxUtils.contains(f,g[0].x,g[0].y)||mxUtils.contains(f,g[g.length-1].x,g[g.length-1].y))h="pointer";else if(null!=d.visibleSourceState||null!=d.visibleTargetState)l=this.view.getEdgeStyle(d),h="crosshair",l!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(d)&&(l=mxUtils.findNearestSegment(d,b.getGraphX(),b.getGraphY()), -l<g.length-1&&0<=l&&(h=0==Math.round(g[l].x-g[l+1].x)?"col-resize":"row-resize"));null!=h&&d.setCursor(h)}}),mouseUp:mxUtils.bind(this,function(a,c){w=n=p=q=null})})}this.cellRenderer.getLabelValue=function(a){var c=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);a.view.graph.isHtmlLabel(a.cell)&&(c=1!=a.style.html?mxUtils.htmlEntities(c,!1):a.view.graph.sanitizeHtml(c));return c};if("undefined"!==typeof mxVertexHandler){this.setConnectable(!0);this.setDropEnabled(!0);this.setPanning(!0); -this.setTooltips(!0);this.setAllowLoops(!0);this.allowAutoPanning=!0;this.constrainChildren=this.resetEdgesOnConnect=!1;this.constrainRelativeChildren=!0;this.graphHandler.scrollOnMove=!1;this.graphHandler.scaleGrid=!0;this.connectionHandler.setCreateTarget(!1);this.connectionHandler.insertBeforeSource=!0;this.connectionHandler.isValidSource=function(a,c){return!1};this.alternateEdgeStyle="vertical";null==d&&this.loadStylesheet();var g=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates= -function(){var a=g.apply(this,arguments);if(this.graph.pageVisible){for(var c=[],b=this.graph.pageFormat,d=this.graph.pageScale,h=b.width*d,b=b.height*d,d=this.graph.view.translate,f=this.graph.view.scale,l=this.graph.getPageLayout(),m=0;m<l.width;m++)c.push(new mxRectangle(((l.x+m)*h+d.x)*f,(l.y*b+d.y)*f,h*f,b*f));for(m=0;m<l.height;m++)c.push(new mxRectangle((l.x*h+d.x)*f,((l.y+m)*b+d.y)*f,h*f,b*f));a=c.concat(a)}return a};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor= -function(a,c){return null==a.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(a){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};this.graphHandler.getCells=function(a){for(var c=mxGraphHandler.prototype.getCells.apply(this,arguments),b=[],d=0;d<c.length;d++){var g=this.graph.view.getState(c[d]),g=null!=g?g.style:this.graph.getCellStyle(c[d]); -"1"==mxUtils.getValue(g,"part","0")?(g=this.graph.model.getParent(c[d]),this.graph.model.isVertex(g)&&0>mxUtils.indexOf(c,g)&&b.push(g)):b.push(c[d])}return b};this.connectionHandler.createTargetVertex=function(a,c){var b=this.graph.view.getState(c),b=null!=b?b.style:this.graph.getCellStyle(c);mxUtils.getValue(b,"part",!1)&&(b=this.graph.model.getParent(c),this.graph.model.isVertex(b)&&(c=b));return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var h=new mxRubberband(this); -this.getRubberband=function(){return h};var l=(new Date).getTime(),t=0,m=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var a=this.currentState;m.apply(this,arguments);a!=this.currentState?(l=(new Date).getTime(),t=0):t=(new Date).getTime()-l};var r=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(a){return null!=this.currentState&&a.getState()==this.currentState&&2E3<t||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style, -"outlineConnect","1"))&&r.apply(this,arguments)};var x=this.isToggleEvent;this.isToggleEvent=function(a){return x.apply(this,arguments)||mxEvent.isShiftDown(a)};var v=h.isForceRubberbandEvent;h.isForceRubberbandEvent=function(a){return v.apply(this,arguments)||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==a.getState()&&mxEvent.isTouchEvent(a.getEvent())};var D=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&& -(D=this.container.style.cursor,this.container.style.cursor="move")}));this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.isEnabled()&&(this.container.style.cursor=D)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(a){return mxEvent.isMouseEvent(a.getEvent())};var y=this.click;this.click=function(a){var c=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);if(this.isEnabled()&&!c||a.isConsumed())return y.apply(this, -arguments);c=c?a.sourceState.cell:a.getCell();null!=c&&(c=this.getLinkForCell(c),null!=c&&(this.isCustomLink(c)?this.customLinkClicked(c):this.openLink(c)))};this.tooltipHandler.getStateForEvent=function(a){return a.sourceState};this.getCursorForMouseEvent=function(a){var c=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);return this.getCursorForCell(c?a.sourceState.cell:a.getCell())};var u=this.getCursorForCell;this.getCursorForCell=function(a){if(!this.isEnabled()||this.isCellLocked(a)){if(null!= -this.getLinkForCell(a))return"pointer";if(this.isCellLocked(a))return"default"}return u.apply(this,arguments)};this.selectRegion=function(a,c){var b=this.getAllCells(a.x,a.y,a.width,a.height);this.selectCellsForEvent(b,c);return b};this.getAllCells=function(a,c,b,d,g,h){h=null!=h?h:[];if(0<b||0<d){var f=this.getModel(),l=a+b,m=c+d;null==g&&(g=this.getCurrentRoot(),null==g&&(g=f.getRoot()));if(null!=g)for(var t=f.getChildCount(g),J=0;J<t;J++){var r=f.getChildAt(g,J),u=this.view.getState(r);if(null!= -u&&this.isCellVisible(r)&&"1"!=mxUtils.getValue(u.style,"locked","0")){var y=mxUtils.getValue(u.style,mxConstants.STYLE_ROTATION)||0;0!=y&&(u=mxUtils.getBoundingBox(u,y));(f.isEdge(r)||f.isVertex(r))&&u.x>=a&&u.y+u.height<=m&&u.y>=c&&u.x+u.width<=l&&h.push(r);this.getAllCells(a,c,b,d,r,h)}}}return h};var A=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,c,b){return this.graph.isCellSelected(a)?!1:A.apply(this,arguments)};this.isCellLocked=function(a){for(a= -this.view.getState(a);null!=a;){if("1"==mxUtils.getValue(a.style,"locked","0"))return!0;a=this.view.getState(this.model.getParent(a.cell))}return!1};var F=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,c){if("mouseDown"==c.getProperty("eventName")){var b=c.getProperty("event").getState();F=null==b||this.isSelectionEmpty()||this.isCellSelected(b.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(a,c){if(!mxEvent.isMultiTouchEvent(c)){var b= -c.getProperty("event"),d=c.getProperty("cell");null==d?(b=mxUtils.convertPoint(this.container,mxEvent.getClientX(b),mxEvent.getClientY(b)),h.start(b.x,b.y)):null!=F?this.addSelectionCells(F):1<this.getSelectionCount()&&this.isCellSelected(d)&&this.removeSelectionCell(d);F=null;c.consume()}}));this.connectionHandler.selectCells=function(a,c){this.graph.setSelectionCell(c||a)};this.connectionHandler.constraintHandler.isStateIgnored=function(a,c){return c&&a.view.graph.isCellSelected(a.cell)};this.selectionModel.addListener(mxEvent.CHANGE, -mxUtils.bind(this,function(){var a=this.connectionHandler.constraintHandler;null!=a.currentFocus&&a.isStateIgnored(a.currentFocus,!0)&&(a.currentFocus=null,a.constraints=null,a.destroyIcons());a.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var Q=this.updateMouseEvent;this.updateMouseEvent=function(a){a=Q.apply(this,arguments);null!=a.state&&this.isCellLocked(a.getCell())&&(a.state=null);return a}}this.currentTranslate=new mxPoint(0,0)}; +mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif";mxGraphView.prototype.gridSteps=4;mxGraphView.prototype.minGridSize=4;mxGraphView.prototype.gridColor="#e0e0e0";mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(a,b,e){return null}; +Graph=function(a,b,e,c,k){mxGraph.call(this,a,b,e,c);this.themes=k||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);a=this.baseUrl;b=a.indexOf("//");this.domainPathUrl=this.domainUrl="";0<b&&(b=a.indexOf("/",b+2),0<b&&(this.domainUrl=a.substring(0,b)),b=a.lastIndexOf("/"),0<b&&(this.domainPathUrl=a.substring(0,b+1)));this.isHtmlLabel=function(a){var d=this.view.getState(a);a=null!=d?d.style:this.getCellStyle(a); +return null!=a?"1"==a.html||"wrap"==a[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var m=null,q=null,r=null,v=null,z=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,d){if("mouseDown"==d.getProperty("eventName")&&this.isEnabled()){var b=d.getProperty("event");if(!mxEvent.isControlDown(b.getEvent())&&!mxEvent.isShiftDown(b.getEvent())){var c=b.getState();null!=c&&this.model.isEdge(c.cell)&&(m=new mxPoint(b.getGraphX(),b.getGraphY()),z=this.isCellSelected(c.cell),r= +c,q=b,null!=c.text&&null!=c.text.boundingBox&&mxUtils.contains(c.text.boundingBox,b.getGraphX(),b.getGraphY())?v=mxEvent.LABEL_HANDLE:(c=this.selectionCellsHandler.getHandler(c.cell),null!=c&&null!=c.bends&&0<c.bends.length&&(v=c.getHandleForEvent(b))))}}}));this.addMouseListener({mouseDown:function(a,d){},mouseMove:mxUtils.bind(this,function(a,d){var b=this.selectionCellsHandler.handlers.map,c;for(c in b)if(null!=b[c].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isControlDown(d.getEvent())&& +!mxEvent.isShiftDown(d.getEvent())&&!mxEvent.isAltDown(d.getEvent()))if(c=this.tolerance,null!=m&&null!=r&&null!=q){if(b=r,Math.abs(m.x-d.getGraphX())>c||Math.abs(m.y-d.getGraphY())>c){this.isCellSelected(b.cell)||this.setSelectionCell(b.cell);var f=this.selectionCellsHandler.getHandler(b.cell);if(null!=f&&null!=f.bends&&0<f.bends.length){var e=f.getHandleForEvent(q),g=this.view.getEdgeStyle(b);c=g==mxEdgeStyle.EntityRelation;z||v!=mxEvent.LABEL_HANDLE||(e=v);if(c&&0!=e&&e!=f.bends.length-1&&e!=mxEvent.LABEL_HANDLE)!c|| +null==b.visibleSourceState&&null==b.visibleTargetState||(this.graphHandler.reset(),d.consume());else if(e==mxEvent.LABEL_HANDLE||0==e||null!=b.visibleSourceState||e==f.bends.length-1||null!=b.visibleTargetState)c||e==mxEvent.LABEL_HANDLE||(c=b.absolutePoints,null!=c&&(null==g&&null==e||g==mxEdgeStyle.OrthConnector)&&(e=v,null==e&&(e=new mxRectangle(m.x,m.y),e.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(e,c[0].x,c[0].y)?e=0:mxUtils.contains(e,c[c.length-1].x,c[c.length-1].y)? +e=f.bends.length-1:null!=g&&(2==c.length||3==c.length&&(0==Math.round(c[0].x-c[1].x)&&0==Math.round(c[1].x-c[2].x)||0==Math.round(c[0].y-c[1].y)&&0==Math.round(c[1].y-c[2].y)))?e=2:(e=mxUtils.findNearestSegment(b,m.x,m.y),e=null==g?mxEvent.VIRTUAL_HANDLE-e:e+1))),null==e&&(e=mxEvent.VIRTUAL_HANDLE)),f.start(d.getGraphX(),d.getGraphX(),e),v=m=q=r=null,z=!1,d.consume(),this.graphHandler.reset()}}}else if(b=d.getState(),null!=b&&this.model.isEdge(b.cell)){f=null;c=b.absolutePoints;if(null!=c)if(e=new mxRectangle(d.getGraphX(), +d.getGraphY()),e.grow(mxEdgeHandler.prototype.handleImage.width/2),null!=b.text&&null!=b.text.boundingBox&&mxUtils.contains(b.text.boundingBox,d.getGraphX(),d.getGraphY()))f="move";else if(mxUtils.contains(e,c[0].x,c[0].y)||mxUtils.contains(e,c[c.length-1].x,c[c.length-1].y))f="pointer";else if(null!=b.visibleSourceState||null!=b.visibleTargetState)g=this.view.getEdgeStyle(b),f="crosshair",g!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(b)&&(g=mxUtils.findNearestSegment(b,d.getGraphX(),d.getGraphY()), +g<c.length-1&&0<=g&&(f=0==Math.round(c[g].x-c[g+1].x)?"col-resize":"row-resize"));null!=f&&b.setCursor(f)}}),mouseUp:mxUtils.bind(this,function(a,d){v=m=q=r=null})})}this.cellRenderer.getLabelValue=function(a){var d=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);a.view.graph.isHtmlLabel(a.cell)&&(d=1!=a.style.html?mxUtils.htmlEntities(d,!1):a.view.graph.sanitizeHtml(d));return d};if("undefined"!==typeof mxVertexHandler){this.setConnectable(!0);this.setDropEnabled(!0);this.setPanning(!0); +this.setTooltips(!0);this.setAllowLoops(!0);this.allowAutoPanning=!0;this.constrainChildren=this.resetEdgesOnConnect=!1;this.constrainRelativeChildren=!0;this.graphHandler.scrollOnMove=!1;this.graphHandler.scaleGrid=!0;this.connectionHandler.setCreateTarget(!1);this.connectionHandler.insertBeforeSource=!0;this.connectionHandler.isValidSource=function(a,d){return!1};this.alternateEdgeStyle="vertical";null==c&&this.loadStylesheet();var d=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates= +function(){var a=d.apply(this,arguments);if(this.graph.pageVisible){for(var b=[],c=this.graph.pageFormat,f=this.graph.pageScale,e=c.width*f,c=c.height*f,f=this.graph.view.translate,g=this.graph.view.scale,l=this.graph.getPageLayout(),n=0;n<l.width;n++)b.push(new mxRectangle(((l.x+n)*e+f.x)*g,(l.y*c+f.y)*g,e*g,c*g));for(n=0;n<l.height;n++)b.push(new mxRectangle((l.x*e+f.x)*g,((l.y+n)*c+f.y)*g,e*g,c*g));a=b.concat(a)}return a};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor= +function(a,d){return null==a.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(a){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};this.graphHandler.getCells=function(a){for(var d=mxGraphHandler.prototype.getCells.apply(this,arguments),b=[],c=0;c<d.length;c++){var f=this.graph.view.getState(d[c]),f=null!=f?f.style:this.graph.getCellStyle(d[c]); +"1"==mxUtils.getValue(f,"part","0")?(f=this.graph.model.getParent(d[c]),this.graph.model.isVertex(f)&&0>mxUtils.indexOf(d,f)&&b.push(f)):b.push(d[c])}return b};this.connectionHandler.createTargetVertex=function(a,d){var b=this.graph.view.getState(d),b=null!=b?b.style:this.graph.getCellStyle(d);mxUtils.getValue(b,"part",!1)&&(b=this.graph.model.getParent(d),this.graph.model.isVertex(b)&&(d=b));return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var f=new mxRubberband(this); +this.getRubberband=function(){return f};var l=(new Date).getTime(),n=0,g=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var a=this.currentState;g.apply(this,arguments);a!=this.currentState?(l=(new Date).getTime(),n=0):n=(new Date).getTime()-l};var p=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(a){return null!=this.currentState&&a.getState()==this.currentState&&2E3<n||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style, +"outlineConnect","1"))&&p.apply(this,arguments)};var B=this.isToggleEvent;this.isToggleEvent=function(a){return B.apply(this,arguments)||mxEvent.isShiftDown(a)};var x=f.isForceRubberbandEvent;f.isForceRubberbandEvent=function(a){return x.apply(this,arguments)||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==a.getState()&&mxEvent.isTouchEvent(a.getEvent())};var t=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&& +(t=this.container.style.cursor,this.container.style.cursor="move")}));this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.isEnabled()&&(this.container.style.cursor=t)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(a){return mxEvent.isMouseEvent(a.getEvent())};var y=this.click;this.click=function(a){var d=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);if(this.isEnabled()&&!d||a.isConsumed())return y.apply(this, +arguments);d=d?a.sourceState.cell:a.getCell();null!=d&&(d=this.getLinkForCell(d),null!=d&&(this.isCustomLink(d)?this.customLinkClicked(d):this.openLink(d)))};this.tooltipHandler.getStateForEvent=function(a){return a.sourceState};this.getCursorForMouseEvent=function(a){var d=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);return this.getCursorForCell(d?a.sourceState.cell:a.getCell())};var u=this.getCursorForCell;this.getCursorForCell=function(a){if(!this.isEnabled()||this.isCellLocked(a)){if(null!= +this.getLinkForCell(a))return"pointer";if(this.isCellLocked(a))return"default"}return u.apply(this,arguments)};this.selectRegion=function(a,d){var b=this.getAllCells(a.x,a.y,a.width,a.height);this.selectCellsForEvent(b,d);return b};this.getAllCells=function(a,d,b,c,f,e){e=null!=e?e:[];if(0<b||0<c){var g=this.getModel(),l=a+b,n=d+c;null==f&&(f=this.getCurrentRoot(),null==f&&(f=g.getRoot()));if(null!=f)for(var p=g.getChildCount(f),u=0;u<p;u++){var y=g.getChildAt(f,u),t=this.view.getState(y);if(null!= +t&&this.isCellVisible(y)&&"1"!=mxUtils.getValue(t.style,"locked","0")){var k=mxUtils.getValue(t.style,mxConstants.STYLE_ROTATION)||0;0!=k&&(t=mxUtils.getBoundingBox(t,k));(g.isEdge(y)||g.isVertex(y))&&t.x>=a&&t.y+t.height<=n&&t.y>=d&&t.x+t.width<=l&&e.push(y);this.getAllCells(a,d,b,c,y,e)}}}return e};var A=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,d,b){return this.graph.isCellSelected(a)?!1:A.apply(this,arguments)};this.isCellLocked=function(a){for(a= +this.view.getState(a);null!=a;){if("1"==mxUtils.getValue(a.style,"locked","0"))return!0;a=this.view.getState(this.model.getParent(a.cell))}return!1};var D=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,d){if("mouseDown"==d.getProperty("eventName")){var b=d.getProperty("event").getState();D=null==b||this.isSelectionEmpty()||this.isCellSelected(b.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(a,d){if(!mxEvent.isMultiTouchEvent(d)){var b= +d.getProperty("event"),c=d.getProperty("cell");null==c?(b=mxUtils.convertPoint(this.container,mxEvent.getClientX(b),mxEvent.getClientY(b)),f.start(b.x,b.y)):null!=D?this.addSelectionCells(D):1<this.getSelectionCount()&&this.isCellSelected(c)&&this.removeSelectionCell(c);D=null;d.consume()}}));this.connectionHandler.selectCells=function(a,d){this.graph.setSelectionCell(d||a)};this.connectionHandler.constraintHandler.isStateIgnored=function(a,d){return d&&a.view.graph.isCellSelected(a.cell)};this.selectionModel.addListener(mxEvent.CHANGE, +mxUtils.bind(this,function(){var a=this.connectionHandler.constraintHandler;null!=a.currentFocus&&a.isStateIgnored(a.currentFocus,!0)&&(a.currentFocus=null,a.constraints=null,a.destroyIcons());a.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var U=this.updateMouseEvent;this.updateMouseEvent=function(a){a=U.apply(this,arguments);null!=a.state&&this.isCellLocked(a.getCell())&&(a.state=null);return a}}this.currentTranslate=new mxPoint(0,0)}; Graph.touchStyle=mxClient.IS_TOUCH||mxClient.IS_FF&&mxClient.IS_WIN||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||null==window.urlParams||"1"==urlParams.touch;Graph.fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList&&(null==window.urlParams||"0"!=urlParams.filesupport);Graph.lineJumpsEnabled=!0;Graph.defaultJumpSize=6; -Graph.createSvgImage=function(a,b,f){f=unescape(encodeURIComponent('<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'+a+'px" height="'+b+'px" version="1.1">'+f+"</svg>"));return new mxImage("data:image/svg+xml;base64,"+(window.btoa?btoa(f):Base64.encode(f,!0)),a,b)};mxUtils.extend(Graph,mxGraph);Graph.prototype.minFitScale=null;Graph.prototype.maxFitScale=null; +Graph.createSvgImage=function(a,b,e){e=unescape(encodeURIComponent('<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'+a+'px" height="'+b+'px" version="1.1">'+e+"</svg>"));return new mxImage("data:image/svg+xml;base64,"+(window.btoa?btoa(e):Base64.encode(e,!0)),a,b)};mxUtils.extend(Graph,mxGraph);Graph.prototype.minFitScale=null;Graph.prototype.maxFitScale=null; Graph.prototype.linkPolicy="frame"==urlParams.target?"blank":urlParams.target||"auto";Graph.prototype.linkTarget="frame"==urlParams.target?"_self":"_blank";Graph.prototype.linkRelation="nofollow noopener noreferrer";Graph.prototype.defaultScrollbars=!mxClient.IS_IOS;Graph.prototype.defaultPageVisible=!0;Graph.prototype.lightbox=!1;Graph.prototype.defaultPageBackgroundColor="#ffffff";Graph.prototype.defaultPageBorderColor="#ffffff";Graph.prototype.scrollTileSize=new mxRectangle(0,0,400,400); Graph.prototype.transparentBackground=!0;Graph.prototype.defaultEdgeLength=80;Graph.prototype.edgeMode=!1;Graph.prototype.connectionArrowsEnabled=!0;Graph.prototype.placeholderPattern=RegExp("%(date{.*}|[^%^{^}]+)%","g");Graph.prototype.absoluteUrlPattern=/^(?:[a-z]+:)?\/\//i;Graph.prototype.defaultThemeName="default";Graph.prototype.defaultThemes={};Graph.prototype.baseUrl=null!=urlParams.base?decodeURIComponent(urlParams.base):(window!=window.top?document.referrer:document.location.toString()).split("#")[0]; Graph.prototype.editAfterInsert=!1;Graph.prototype.builtInProperties=["label","tooltip","placeholders","placeholder"]; -Graph.prototype.init=function(a){mxGraph.prototype.init.apply(this,arguments);this.cellRenderer.initializeLabel=function(a,f){mxCellRenderer.prototype.initializeLabel.apply(this,arguments);var b=a.view.graph.tolerance,k=!0,n=null,p=mxUtils.bind(this,function(a){k=!0;n=new mxPoint(mxEvent.getClientX(a),mxEvent.getClientY(a))}),q=mxUtils.bind(this,function(a){k=k&&null!=n&&Math.abs(n.x-mxEvent.getClientX(a))<b&&Math.abs(n.y-mxEvent.getClientY(a))<b}),w=mxUtils.bind(this,function(c){if(k)for(var b=mxEvent.getSource(c);null!= -b&&b!=f.node;){if("a"==b.nodeName.toLowerCase()){a.view.graph.labelLinkClicked(a,b,c);break}b=b.parentNode}});mxEvent.addGestureListeners(f.node,p,q,w);mxEvent.addListener(f.node,"click",function(a){mxEvent.consume(a)})};this.initLayoutManager()}; -(function(){Graph.prototype.useCssTransforms=!1;Graph.prototype.currentScale=1;Graph.prototype.currentTranslate=new mxPoint(0,0);Graph.prototype.isCssTransformsSupported=function(){return this.dialect==mxConstants.DIALECT_SVG&&!mxClient.NO_FO};Graph.prototype.getCellAt=function(a,b,f,p,q,w){this.useCssTransforms&&(a=a/this.currentScale-this.currentTranslate.x,b=b/this.currentScale-this.currentTranslate.y);return this.getScaledCellAt.apply(this,arguments)};Graph.prototype.getScaledCellAt=function(a, -b,f,p,q,w){p=null!=p?p:!0;q=null!=q?q:!0;null==f&&(f=this.getCurrentRoot(),null==f&&(f=this.getModel().getRoot()));if(null!=f)for(var c=this.model.getChildCount(f)-1;0<=c;c--){var d=this.model.getChildAt(f,c),h=this.getScaledCellAt(a,b,d,p,q,w);if(null!=h)return h;if(this.isCellVisible(d)&&(q&&this.model.isEdge(d)||p&&this.model.isVertex(d))&&(h=this.view.getState(d),null!=h&&(null==w||!w(h,a,b))&&this.intersects(h,a,b)))return d}return null};mxCellHighlight.prototype.getStrokeWidth=function(a){a= -this.strokeWidth;this.graph.useCssTransforms&&(a/=this.graph.currentScale);return a};mxGraphView.prototype.getGraphBounds=function(){var a=this.graphBounds;if(this.graph.useCssTransforms)var b=this.graph.currentTranslate,f=this.graph.currentScale,a=new mxRectangle((a.x+b.x)*f,(a.y+b.y)*f,a.width*f,a.height*f);return a};mxGraphView.prototype.viewStateChanged=function(){this.graph.useCssTransforms?this.validate():this.revalidate();this.graph.sizeDidChange()};var a=mxGraphView.prototype.validate;mxGraphView.prototype.validate= +Graph.prototype.init=function(a){mxGraph.prototype.init.apply(this,arguments);this.cellRenderer.initializeLabel=function(a,e){mxCellRenderer.prototype.initializeLabel.apply(this,arguments);var b=a.view.graph.tolerance,k=!0,m=null,q=mxUtils.bind(this,function(a){k=!0;m=new mxPoint(mxEvent.getClientX(a),mxEvent.getClientY(a))}),r=mxUtils.bind(this,function(a){k=k&&null!=m&&Math.abs(m.x-mxEvent.getClientX(a))<b&&Math.abs(m.y-mxEvent.getClientY(a))<b}),v=mxUtils.bind(this,function(b){if(k)for(var d=mxEvent.getSource(b);null!= +d&&d!=e.node;){if("a"==d.nodeName.toLowerCase()){a.view.graph.labelLinkClicked(a,d,b);break}d=d.parentNode}});mxEvent.addGestureListeners(e.node,q,r,v);mxEvent.addListener(e.node,"click",function(a){mxEvent.consume(a)})};this.initLayoutManager()}; +(function(){Graph.prototype.useCssTransforms=!1;Graph.prototype.currentScale=1;Graph.prototype.currentTranslate=new mxPoint(0,0);Graph.prototype.isCssTransformsSupported=function(){return this.dialect==mxConstants.DIALECT_SVG&&!mxClient.NO_FO};Graph.prototype.getCellAt=function(a,b,e,q,r,v){this.useCssTransforms&&(a=a/this.currentScale-this.currentTranslate.x,b=b/this.currentScale-this.currentTranslate.y);return this.getScaledCellAt.apply(this,arguments)};Graph.prototype.getScaledCellAt=function(a, +b,e,q,r,v){q=null!=q?q:!0;r=null!=r?r:!0;null==e&&(e=this.getCurrentRoot(),null==e&&(e=this.getModel().getRoot()));if(null!=e)for(var c=this.model.getChildCount(e)-1;0<=c;c--){var d=this.model.getChildAt(e,c),f=this.getScaledCellAt(a,b,d,q,r,v);if(null!=f)return f;if(this.isCellVisible(d)&&(r&&this.model.isEdge(d)||q&&this.model.isVertex(d))&&(f=this.view.getState(d),null!=f&&(null==v||!v(f,a,b))&&this.intersects(f,a,b)))return d}return null};mxCellHighlight.prototype.getStrokeWidth=function(a){a= +this.strokeWidth;this.graph.useCssTransforms&&(a/=this.graph.currentScale);return a};mxGraphView.prototype.getGraphBounds=function(){var a=this.graphBounds;if(this.graph.useCssTransforms)var b=this.graph.currentTranslate,e=this.graph.currentScale,a=new mxRectangle((a.x+b.x)*e,(a.y+b.y)*e,a.width*e,a.height*e);return a};mxGraphView.prototype.viewStateChanged=function(){this.graph.useCssTransforms?this.validate():this.revalidate();this.graph.sizeDidChange()};var a=mxGraphView.prototype.validate;mxGraphView.prototype.validate= function(b){this.graph.useCssTransforms&&(this.graph.currentScale=this.scale,this.graph.currentTranslate.x=this.translate.x,this.graph.currentTranslate.y=this.translate.y,this.scale=1,this.translate.x=0,this.translate.y=0);a.apply(this,arguments);this.graph.useCssTransforms&&(this.graph.updateCssTransform(),this.scale=this.graph.currentScale,this.translate.x=this.graph.currentTranslate.x,this.translate.y=this.graph.currentTranslate.y)};Graph.prototype.updateCssTransform=function(){var a=this.view.getDrawPane(); -if(null!=a)if(a=a.parentNode,this.useCssTransforms){var b=a.getAttribute("transform");a.setAttribute("transformOrigin","0 0");a.setAttribute("transform","scale("+this.currentScale+","+this.currentScale+")translate("+this.currentTranslate.x+","+this.currentTranslate.y+")");if(b!=a.getAttribute("transform"))try{if(mxClient.IS_EDGE){var f=a.style.display;a.style.display="none";a.getBBox();a.style.display=f}}catch(p){}}else a.removeAttribute("transformOrigin"),a.removeAttribute("transform")};var b=mxGraphView.prototype.validateBackgroundPage; -mxGraphView.prototype.validateBackgroundPage=function(){var a=this.graph.useCssTransforms,f=this.scale,n=this.translate;a&&(this.scale=this.graph.currentScale,this.translate=this.graph.currentTranslate);b.apply(this,arguments);a&&(this.scale=f,this.translate=n)};var f=mxGraph.prototype.updatePageBreaks;mxGraph.prototype.updatePageBreaks=function(a,b,n){var d=this.useCssTransforms,k=this.view.scale,w=this.view.translate;d&&(this.view.scale=1,this.view.translate=new mxPoint(0,0),this.useCssTransforms= -!1);f.apply(this,arguments);d&&(this.view.scale=k,this.view.translate=w,this.useCssTransforms=!0)}})();Graph.prototype.isLightboxView=function(){return this.lightbox};Graph.prototype.labelLinkClicked=function(a,b,f){b=b.getAttribute("href");if(null!=b&&!this.isCustomLink(b)&&mxEvent.isLeftMouseButton(f)&&!mxEvent.isPopupTrigger(f)||mxEvent.isTouchEvent(f)){if(!this.isEnabled()||this.isCellLocked(a.cell))a=this.isBlankLink(b)?this.linkTarget:"_top",this.openLink(this.getAbsoluteUrl(b),a);mxEvent.consume(f)}}; -Graph.prototype.openLink=function(a,b,f){var d=window;"_self"==b&&window!=window.top?window.location.href=a:a.substring(0,this.baseUrl.length)==this.baseUrl&&"#"==a.charAt(this.baseUrl.length)&&"_top"==b&&window==window.top?(a=a.split("#")[1],window.location.hash=="#"+a&&(window.location.hash=""),window.location.hash=a):(d=window.open(a,b),null==d||f||(d.opener=null));return d};Graph.prototype.getLinkTitle=function(a){return a.substring(a.lastIndexOf("/")+1)}; +if(null!=a)if(a=a.parentNode,this.useCssTransforms){var b=a.getAttribute("transform");a.setAttribute("transformOrigin","0 0");a.setAttribute("transform","scale("+this.currentScale+","+this.currentScale+")translate("+this.currentTranslate.x+","+this.currentTranslate.y+")");if(b!=a.getAttribute("transform"))try{if(mxClient.IS_EDGE){var e=a.style.display;a.style.display="none";a.getBBox();a.style.display=e}}catch(q){}}else a.removeAttribute("transformOrigin"),a.removeAttribute("transform")};var b=mxGraphView.prototype.validateBackgroundPage; +mxGraphView.prototype.validateBackgroundPage=function(){var a=this.graph.useCssTransforms,e=this.scale,m=this.translate;a&&(this.scale=this.graph.currentScale,this.translate=this.graph.currentTranslate);b.apply(this,arguments);a&&(this.scale=e,this.translate=m)};var e=mxGraph.prototype.updatePageBreaks;mxGraph.prototype.updatePageBreaks=function(a,b,m){var c=this.useCssTransforms,k=this.view.scale,v=this.view.translate;c&&(this.view.scale=1,this.view.translate=new mxPoint(0,0),this.useCssTransforms= +!1);e.apply(this,arguments);c&&(this.view.scale=k,this.view.translate=v,this.useCssTransforms=!0)}})();Graph.prototype.isLightboxView=function(){return this.lightbox};Graph.prototype.labelLinkClicked=function(a,b,e){b=b.getAttribute("href");if(null!=b&&!this.isCustomLink(b)&&mxEvent.isLeftMouseButton(e)&&!mxEvent.isPopupTrigger(e)||mxEvent.isTouchEvent(e)){if(!this.isEnabled()||this.isCellLocked(a.cell))a=this.isBlankLink(b)?this.linkTarget:"_top",this.openLink(this.getAbsoluteUrl(b),a);mxEvent.consume(e)}}; +Graph.prototype.openLink=function(a,b,e){var c=window;if("_self"==b&&window!=window.top)window.location.href=a;else if(a.substring(0,this.baseUrl.length)==this.baseUrl&&"#"==a.charAt(this.baseUrl.length)&&"_top"==b&&window==window.top)a=a.split("#")[1],window.location.hash=="#"+a&&(window.location.hash=""),window.location.hash=a;else{c=window.open(a,b);try{null==c||e||(c.opener=null)}catch(k){}}return c};Graph.prototype.getLinkTitle=function(a){return a.substring(a.lastIndexOf("/")+1)}; Graph.prototype.isCustomLink=function(a){return"data:"==a.substring(0,5)};Graph.prototype.customLinkClicked=function(a){return!1};Graph.prototype.isExternalProtocol=function(a){return"mailto:"===a.substring(0,7)};Graph.prototype.isBlankLink=function(a){return!this.isExternalProtocol(a)&&("blank"===this.linkPolicy||"self"!==this.linkPolicy&&!this.isRelativeUrl(a)&&a.substring(0,this.domainUrl.length)!==this.domainUrl)}; Graph.prototype.isRelativeUrl=function(a){return null!=a&&!this.absoluteUrlPattern.test(a)&&"data:"!==a.substring(0,5)&&!this.isExternalProtocol(a)}; Graph.prototype.initLayoutManager=function(){this.layoutManager=new mxLayoutManager(this);this.layoutManager.getLayout=function(a){var b=this.graph.view.getState(a);a=null!=b?b.style:this.graph.getCellStyle(a);if(null!=a){if("stackLayout"==a.childLayout)return b=new mxStackLayout(this.graph,!0),b.resizeParentMax="1"==mxUtils.getValue(a,"resizeParentMax","1"),b.horizontal="1"==mxUtils.getValue(a,"horizontalStack","1"),b.resizeParent="1"==mxUtils.getValue(a,"resizeParent","1"),b.resizeLast="1"==mxUtils.getValue(a, "resizeLast","0"),b.spacing=a.stackSpacing||b.spacing,b.border=a.stackBorder||b.border,b.marginLeft=a.marginLeft||0,b.marginRight=a.marginRight||0,b.marginTop=a.marginTop||0,b.marginBottom=a.marginBottom||0,b.fill=!0,b;if("treeLayout"==a.childLayout)return b=new mxCompactTreeLayout(this.graph),b.horizontal="1"==mxUtils.getValue(a,"horizontalTree","1"),b.resizeParent="1"==mxUtils.getValue(a,"resizeParent","1"),b.groupPadding=mxUtils.getValue(a,"parentPadding",20),b.levelDistance=mxUtils.getValue(a, "treeLevelDistance",30),b.maintainParentLocation=!0,b.edgeRouting=!1,b.resetEdges=!1,b;if("flowLayout"==a.childLayout)return b=new mxHierarchicalLayout(this.graph,mxUtils.getValue(a,"flowOrientation",mxConstants.DIRECTION_EAST)),b.resizeParent="1"==mxUtils.getValue(a,"resizeParent","1"),b.parentBorder=mxUtils.getValue(a,"parentPadding",20),b.maintainParentLocation=!0,b.intraCellSpacing=mxUtils.getValue(a,"intraCellSpacing",mxHierarchicalLayout.prototype.intraCellSpacing),b.interRankCellSpacing=mxUtils.getValue(a, "interRankCellSpacing",mxHierarchicalLayout.prototype.interRankCellSpacing),b.interHierarchySpacing=mxUtils.getValue(a,"interHierarchySpacing",mxHierarchicalLayout.prototype.interHierarchySpacing),b.parallelEdgeSpacing=mxUtils.getValue(a,"parallelEdgeSpacing",mxHierarchicalLayout.prototype.parallelEdgeSpacing),b}return null}};Graph.prototype.getPageSize=function(){return this.pageVisible?new mxRectangle(0,0,this.pageFormat.width*this.pageScale,this.pageFormat.height*this.pageScale):this.scrollTileSize}; -Graph.prototype.getPageLayout=function(){var a=this.getPageSize(),b=this.getGraphBounds();if(0==b.width||0==b.height)return new mxRectangle(0,0,1,1);var f=Math.ceil(b.x/this.view.scale-this.view.translate.x),d=Math.ceil(b.y/this.view.scale-this.view.translate.y),k=Math.floor(f/a.width),n=Math.floor(d/a.height);return new mxRectangle(k,n,Math.ceil((f+Math.floor(b.width/this.view.scale))/a.width)-k,Math.ceil((d+Math.floor(b.height/this.view.scale))/a.height)-n)}; -Graph.prototype.sanitizeHtml=function(a,b){return html_sanitize(a,function(a){return null!=a&&"javascript:"!==a.toString().toLowerCase().substring(0,11)?a:null},function(a){return a})};Graph.prototype.updatePlaceholders=function(){var a=!1,b;for(b in this.model.cells){var f=this.model.cells[b];this.isReplacePlaceholders(f)&&(this.view.invalidate(f,!1,!1),a=!0)}a&&this.view.validate()};Graph.prototype.isReplacePlaceholders=function(a){return null!=a.value&&"object"==typeof a.value&&"1"==a.value.getAttribute("placeholders")}; +Graph.prototype.getPageLayout=function(){var a=this.getPageSize(),b=this.getGraphBounds();if(0==b.width||0==b.height)return new mxRectangle(0,0,1,1);var e=Math.ceil(b.x/this.view.scale-this.view.translate.x),c=Math.ceil(b.y/this.view.scale-this.view.translate.y),k=Math.floor(e/a.width),m=Math.floor(c/a.height);return new mxRectangle(k,m,Math.ceil((e+Math.floor(b.width/this.view.scale))/a.width)-k,Math.ceil((c+Math.floor(b.height/this.view.scale))/a.height)-m)}; +Graph.prototype.sanitizeHtml=function(a,b){return html_sanitize(a,function(a){return null!=a&&"javascript:"!==a.toString().toLowerCase().substring(0,11)?a:null},function(a){return a})};Graph.prototype.updatePlaceholders=function(){var a=!1,b;for(b in this.model.cells){var e=this.model.cells[b];this.isReplacePlaceholders(e)&&(this.view.invalidate(e,!1,!1),a=!0)}a&&this.view.validate()};Graph.prototype.isReplacePlaceholders=function(a){return null!=a.value&&"object"==typeof a.value&&"1"==a.value.getAttribute("placeholders")}; Graph.prototype.isZoomWheelEvent=function(a){return mxEvent.isAltDown(a)||mxEvent.isMetaDown(a)&&mxClient.IS_MAC||mxEvent.isControlDown(a)&&!mxClient.IS_MAC};Graph.prototype.isTransparentClickEvent=function(a){return mxEvent.isAltDown(a)};Graph.prototype.isIgnoreTerminalEvent=function(a){return mxEvent.isShiftDown(a)&&mxEvent.isControlDown(a)}; -Graph.prototype.isSplitTarget=function(a,b,f){return!this.model.isEdge(b[0])&&!mxEvent.isAltDown(f)&&!mxEvent.isShiftDown(f)&&mxGraph.prototype.isSplitTarget.apply(this,arguments)};Graph.prototype.getLabel=function(a){var b=mxGraph.prototype.getLabel.apply(this,arguments);null!=b&&this.isReplacePlaceholders(a)&&null==a.getAttribute("placeholder")&&(b=this.replacePlaceholders(a,b));return b}; +Graph.prototype.isSplitTarget=function(a,b,e){return!this.model.isEdge(b[0])&&!mxEvent.isAltDown(e)&&!mxEvent.isShiftDown(e)&&mxGraph.prototype.isSplitTarget.apply(this,arguments)};Graph.prototype.getLabel=function(a){var b=mxGraph.prototype.getLabel.apply(this,arguments);null!=b&&this.isReplacePlaceholders(a)&&null==a.getAttribute("placeholder")&&(b=this.replacePlaceholders(a,b));return b}; Graph.prototype.isLabelMovable=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return!this.isCellLocked(a)&&(this.model.isEdge(a)&&this.edgeLabelsMovable||this.model.isVertex(a)&&(this.vertexLabelsMovable||"1"==mxUtils.getValue(b,"labelMovable","0")))};Graph.prototype.setGridSize=function(a){this.gridSize=a;this.fireEvent(new mxEventObject("gridSizeChanged"))}; Graph.prototype.getGlobalVariable=function(a){var b=null;"date"==a?b=(new Date).toLocaleDateString():"time"==a?b=(new Date).toLocaleTimeString():"timestamp"==a?b=(new Date).toLocaleString():"date{"==a.substring(0,5)&&(a=a.substring(5,a.length-1),b=this.formatDate(new Date,a));return b}; -Graph.prototype.formatDate=function(a,b,f){null==this.dateFormatCache&&(this.dateFormatCache={i18n:{dayNames:"Sun Mon Tue Wed Thu Fri Sat Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),monthNames:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec January February March April May June July August September October November December".split(" ")},masks:{"default":"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy", -shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:ss",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"}});var d=this.dateFormatCache,k=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,n=/[^-+\dA-Z]/g,p=function(a,c){a=String(a);for(c=c||2;a.length<c;)a="0"+a;return a};1!=arguments.length||"[object String]"!=Object.prototype.toString.call(a)|| -/\d/.test(a)||(b=a,a=void 0);a=a?new Date(a):new Date;if(isNaN(a))throw SyntaxError("invalid date");b=String(d.masks[b]||b||d.masks["default"]);"UTC:"==b.slice(0,4)&&(b=b.slice(4),f=!0);var q=f?"getUTC":"get",w=a[q+"Date"](),c=a[q+"Day"](),g=a[q+"Month"](),h=a[q+"FullYear"](),l=a[q+"Hours"](),t=a[q+"Minutes"](),m=a[q+"Seconds"](),q=a[q+"Milliseconds"](),r=f?0:a.getTimezoneOffset(),x={d:w,dd:p(w),ddd:d.i18n.dayNames[c],dddd:d.i18n.dayNames[c+7],m:g+1,mm:p(g+1),mmm:d.i18n.monthNames[g],mmmm:d.i18n.monthNames[g+ -12],yy:String(h).slice(2),yyyy:h,h:l%12||12,hh:p(l%12||12),H:l,HH:p(l),M:t,MM:p(t),s:m,ss:p(m),l:p(q,3),L:p(99<q?Math.round(q/10):q),t:12>l?"a":"p",tt:12>l?"am":"pm",T:12>l?"A":"P",TT:12>l?"AM":"PM",Z:f?"UTC":(String(a).match(k)||[""]).pop().replace(n,""),o:(0<r?"-":"+")+p(100*Math.floor(Math.abs(r)/60)+Math.abs(r)%60,4),S:["th","st","nd","rd"][3<w%10?0:(10!=w%100-w%10)*w%10]};return b.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(a){return a in x?x[a]:a.slice(1, +Graph.prototype.formatDate=function(a,b,e){null==this.dateFormatCache&&(this.dateFormatCache={i18n:{dayNames:"Sun Mon Tue Wed Thu Fri Sat Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),monthNames:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec January February March April May June July August September October November December".split(" ")},masks:{"default":"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy", +shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:ss",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"}});var c=this.dateFormatCache,k=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,m=/[^-+\dA-Z]/g,q=function(a,d){a=String(a);for(d=d||2;a.length<d;)a="0"+a;return a};1!=arguments.length||"[object String]"!=Object.prototype.toString.call(a)|| +/\d/.test(a)||(b=a,a=void 0);a=a?new Date(a):new Date;if(isNaN(a))throw SyntaxError("invalid date");b=String(c.masks[b]||b||c.masks["default"]);"UTC:"==b.slice(0,4)&&(b=b.slice(4),e=!0);var r=e?"getUTC":"get",v=a[r+"Date"](),z=a[r+"Day"](),d=a[r+"Month"](),f=a[r+"FullYear"](),l=a[r+"Hours"](),n=a[r+"Minutes"](),g=a[r+"Seconds"](),r=a[r+"Milliseconds"](),p=e?0:a.getTimezoneOffset(),B={d:v,dd:q(v),ddd:c.i18n.dayNames[z],dddd:c.i18n.dayNames[z+7],m:d+1,mm:q(d+1),mmm:c.i18n.monthNames[d],mmmm:c.i18n.monthNames[d+ +12],yy:String(f).slice(2),yyyy:f,h:l%12||12,hh:q(l%12||12),H:l,HH:q(l),M:n,MM:q(n),s:g,ss:q(g),l:q(r,3),L:q(99<r?Math.round(r/10):r),t:12>l?"a":"p",tt:12>l?"am":"pm",T:12>l?"A":"P",TT:12>l?"AM":"PM",Z:e?"UTC":(String(a).match(k)||[""]).pop().replace(m,""),o:(0<p?"-":"+")+q(100*Math.floor(Math.abs(p)/60)+Math.abs(p)%60,4),S:["th","st","nd","rd"][3<v%10?0:(10!=v%100-v%10)*v%10]};return b.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(a){return a in B?B[a]:a.slice(1, a.length-1)})}; -Graph.prototype.createLayersDialog=function(){var a=document.createElement("div");a.style.position="absolute";for(var b=this.getModel(),f=b.getChildCount(b.root),d=0;d<f;d++)mxUtils.bind(this,function(d){var f=document.createElement("div");f.style.overflow="hidden";f.style.textOverflow="ellipsis";f.style.padding="2px";f.style.whiteSpace="nowrap";var k=document.createElement("input");k.style.display="inline-block";k.setAttribute("type","checkbox");b.isVisible(d)&&(k.setAttribute("checked","checked"), -k.defaultChecked=!0);f.appendChild(k);var q=this.convertValueToString(d)||mxResources.get("background")||"Background";f.setAttribute("title",q);mxUtils.write(f,q);a.appendChild(f);mxEvent.addListener(k,"click",function(){null!=k.getAttribute("checked")?k.removeAttribute("checked"):k.setAttribute("checked","checked");b.setVisible(d,k.checked)})})(b.getChildAt(b.root,d));return a}; -Graph.prototype.replacePlaceholders=function(a,b){var f=[];if(null!=b){for(var d=0;match=this.placeholderPattern.exec(b);){var k=match[0];if(2<k.length&&"%label%"!=k&&"%tooltip%"!=k){var n=null;if(match.index>d&&"%"==b.charAt(match.index-1))n=k.substring(1);else{var p=k.substring(1,k.length-1);if(0>p.indexOf("{"))for(var q=a;null==n&&null!=q;)null!=q.value&&"object"==typeof q.value&&(n=q.hasAttribute(p)?null!=q.getAttribute(p)?q.getAttribute(p):"":null),q=this.model.getParent(q);null==n&&(n=this.getGlobalVariable(p))}f.push(b.substring(d, -match.index)+(null!=n?n:k));d=match.index+k.length}}f.push(b.substring(d))}return f.join("")};Graph.prototype.restoreSelection=function(a){if(null!=a&&0<a.length){for(var b=[],f=0;f<a.length;f++){var d=this.model.getCell(a[f].id);null!=d&&b.push(d)}this.setSelectionCells(b)}else this.clearSelection()}; -Graph.prototype.selectCellsForConnectVertex=function(a,b,f){2==a.length&&this.model.isVertex(a[1])?(this.setSelectionCell(a[1]),null!=f&&(mxEvent.isTouchEvent(b)?f.update(f.getState(this.view.getState(a[1]))):f.reset()),this.scrollCellToVisible(a[1])):this.setSelectionCells(a)}; -Graph.prototype.connectVertex=function(a,b,f,d,k,n){n=n?n:!1;var p=a.geometry.relative&&null!=a.parent.geometry?new mxPoint(a.parent.geometry.width*a.geometry.x,a.parent.geometry.height*a.geometry.y):new mxPoint(a.geometry.x,a.geometry.y);b==mxConstants.DIRECTION_NORTH?(p.x+=a.geometry.width/2,p.y-=f):b==mxConstants.DIRECTION_SOUTH?(p.x+=a.geometry.width/2,p.y+=a.geometry.height+f):(p.x=b==mxConstants.DIRECTION_WEST?p.x-f:p.x+(a.geometry.width+f),p.y+=a.geometry.height/2);f=this.view.getState(this.model.getParent(a)); -var q=this.view.scale,w=this.view.translate,c=w.x*q,w=w.y*q;this.model.isVertex(f.cell)&&(c=f.x,w=f.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(p.x+=a.parent.geometry.x,p.y+=a.parent.geometry.y);n=n||mxEvent.isControlDown(d)&&!k?null:this.getCellAt(c+p.x*q,w+p.y*q);this.model.isAncestor(n,a)&&(n=null);for(f=n;null!=f;){if(this.isCellLocked(f)){n=null;break}f=this.model.getParent(f)}null!=n&&(f=this.view.getState(a),q=this.view.getState(n),null!=f&&null!=q&&mxUtils.intersects(f,q)&&(n= -null));if(k=!mxEvent.isShiftDown(d)||k)b==mxConstants.DIRECTION_NORTH?p.y-=a.geometry.height/2:b==mxConstants.DIRECTION_SOUTH?p.y+=a.geometry.height/2:p.x=b==mxConstants.DIRECTION_WEST?p.x-a.geometry.width/2:p.x+a.geometry.width/2;null==n||this.isCellConnectable(n)||(f=this.getModel().getParent(n),this.getModel().isVertex(f)&&this.isCellConnectable(f)&&(n=f));if(n==a||this.model.isEdge(n)||!this.isCellConnectable(n))n=null;f=[];this.model.beginUpdate();try{q=n;if(null==q&&k){for(var c=a,g=this.getCellGeometry(a);null!= -g&&g.relative;)c=this.getModel().getParent(c),g=this.getCellGeometry(c);var h=this.view.getState(c),l=null!=h?h.style:this.getCellStyle(c);if(mxUtils.getValue(l,"part",!1)){var t=this.model.getParent(c);this.model.isVertex(t)&&(c=t)}q=this.duplicateCells([c],!1)[0];g=this.getCellGeometry(q);null!=g&&(g.x=p.x-g.width/2,g.y=p.y-g.height/2)}g=null;null!=this.layoutManager&&(g=this.layoutManager.getLayout(this.model.getParent(a)));var m=mxEvent.isControlDown(d)&&k||null==n&&null!=g&&g.constructor==mxStackLayout? -null:this.insertEdge(this.model.getParent(a),null,"",a,q,this.createCurrentEdgeStyle());if(null!=m&&this.connectionHandler.insertBeforeSource){var r=null;for(d=a;null!=d.parent&&null!=d.geometry&&d.geometry.relative&&d.parent!=m.parent;)d=this.model.getParent(d);null!=d&&null!=d.parent&&d.parent==m.parent&&(r=d.parent.getIndex(d),this.model.add(d.parent,m,r))}null==n&&null!=q&&null!=g&&null!=a.parent&&g.constructor==mxStackLayout&&b==mxConstants.DIRECTION_WEST&&(r=a.parent.getIndex(a),this.model.add(a.parent, -q,r));null!=m&&f.push(m);null==n&&null!=q&&f.push(q);null==q&&null!=m&&m.geometry.setTerminalPoint(p,!1);null!=m&&this.fireEvent(new mxEventObject("cellsInserted","cells",[m]))}finally{this.model.endUpdate()}return f}; -Graph.prototype.getIndexableText=function(){var a=document.createElement("div"),b=[],f,d;for(d in this.model.cells)if(f=this.model.cells[d],this.model.isVertex(f)||this.model.isEdge(f))this.isHtmlLabel(f)?(a.innerHTML=this.getLabel(f),f=mxUtils.extractTextWithWhitespace([a])):f=this.getLabel(f),f=mxUtils.trim(f.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<f.length&&b.push(f);return b.join(" ")}; -Graph.prototype.convertValueToString=function(a){if(null!=a.value&&"object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder")){for(var b=a.getAttribute("placeholder"),f=a,d=null;null==d&&null!=f;)null!=f.value&&"object"==typeof f.value&&(d=f.hasAttribute(b)?null!=f.getAttribute(b)?f.getAttribute(b):"":null),f=this.model.getParent(f);return d||""}return a.value.getAttribute("label")||""}return mxGraph.prototype.convertValueToString.apply(this,arguments)}; +Graph.prototype.createLayersDialog=function(){var a=document.createElement("div");a.style.position="absolute";for(var b=this.getModel(),e=b.getChildCount(b.root),c=0;c<e;c++)mxUtils.bind(this,function(c){var e=document.createElement("div");e.style.overflow="hidden";e.style.textOverflow="ellipsis";e.style.padding="2px";e.style.whiteSpace="nowrap";var k=document.createElement("input");k.style.display="inline-block";k.setAttribute("type","checkbox");b.isVisible(c)&&(k.setAttribute("checked","checked"), +k.defaultChecked=!0);e.appendChild(k);var r=this.convertValueToString(c)||mxResources.get("background")||"Background";e.setAttribute("title",r);mxUtils.write(e,r);a.appendChild(e);mxEvent.addListener(k,"click",function(){null!=k.getAttribute("checked")?k.removeAttribute("checked"):k.setAttribute("checked","checked");b.setVisible(c,k.checked)})})(b.getChildAt(b.root,c));return a}; +Graph.prototype.replacePlaceholders=function(a,b){var e=[];if(null!=b){for(var c=0;match=this.placeholderPattern.exec(b);){var k=match[0];if(2<k.length&&"%label%"!=k&&"%tooltip%"!=k){var m=null;if(match.index>c&&"%"==b.charAt(match.index-1))m=k.substring(1);else{var q=k.substring(1,k.length-1);if(0>q.indexOf("{"))for(var r=a;null==m&&null!=r;)null!=r.value&&"object"==typeof r.value&&(m=r.hasAttribute(q)?null!=r.getAttribute(q)?r.getAttribute(q):"":null),r=this.model.getParent(r);null==m&&(m=this.getGlobalVariable(q))}e.push(b.substring(c, +match.index)+(null!=m?m:k));c=match.index+k.length}}e.push(b.substring(c))}return e.join("")};Graph.prototype.restoreSelection=function(a){if(null!=a&&0<a.length){for(var b=[],e=0;e<a.length;e++){var c=this.model.getCell(a[e].id);null!=c&&b.push(c)}this.setSelectionCells(b)}else this.clearSelection()}; +Graph.prototype.selectCellsForConnectVertex=function(a,b,e){2==a.length&&this.model.isVertex(a[1])?(this.setSelectionCell(a[1]),null!=e&&(mxEvent.isTouchEvent(b)?e.update(e.getState(this.view.getState(a[1]))):e.reset()),this.scrollCellToVisible(a[1])):this.setSelectionCells(a)}; +Graph.prototype.connectVertex=function(a,b,e,c,k,m){m=m?m:!1;var q=a.geometry.relative&&null!=a.parent.geometry?new mxPoint(a.parent.geometry.width*a.geometry.x,a.parent.geometry.height*a.geometry.y):new mxPoint(a.geometry.x,a.geometry.y);b==mxConstants.DIRECTION_NORTH?(q.x+=a.geometry.width/2,q.y-=e):b==mxConstants.DIRECTION_SOUTH?(q.x+=a.geometry.width/2,q.y+=a.geometry.height+e):(q.x=b==mxConstants.DIRECTION_WEST?q.x-e:q.x+(a.geometry.width+e),q.y+=a.geometry.height/2);e=this.view.getState(this.model.getParent(a)); +var r=this.view.scale,v=this.view.translate,z=v.x*r,v=v.y*r;null!=e&&this.model.isVertex(e.cell)&&(z=e.x,v=e.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(q.x+=a.parent.geometry.x,q.y+=a.parent.geometry.y);m=m||mxEvent.isControlDown(c)&&!k?null:this.getCellAt(z+q.x*r,v+q.y*r);this.model.isAncestor(m,a)&&(m=null);for(e=m;null!=e;){if(this.isCellLocked(e)){m=null;break}e=this.model.getParent(e)}null!=m&&(e=this.view.getState(a),r=this.view.getState(m),null!=e&&null!=r&&mxUtils.intersects(e, +r)&&(m=null));if(k=!mxEvent.isShiftDown(c)||k)b==mxConstants.DIRECTION_NORTH?q.y-=a.geometry.height/2:b==mxConstants.DIRECTION_SOUTH?q.y+=a.geometry.height/2:q.x=b==mxConstants.DIRECTION_WEST?q.x-a.geometry.width/2:q.x+a.geometry.width/2;null==m||this.isCellConnectable(m)||(e=this.getModel().getParent(m),this.getModel().isVertex(e)&&this.isCellConnectable(e)&&(m=e));if(m==a||this.model.isEdge(m)||!this.isCellConnectable(m))m=null;e=[];this.model.beginUpdate();try{r=m;if(null==r&&k){for(var z=a,d= +this.getCellGeometry(a);null!=d&&d.relative;)z=this.getModel().getParent(z),d=this.getCellGeometry(z);var f=this.view.getState(z),l=null!=f?f.style:this.getCellStyle(z);if(mxUtils.getValue(l,"part",!1)){var n=this.model.getParent(z);this.model.isVertex(n)&&(z=n)}r=this.duplicateCells([z],!1)[0];d=this.getCellGeometry(r);null!=d&&(d.x=q.x-d.width/2,d.y=q.y-d.height/2)}d=null;null!=this.layoutManager&&(d=this.layoutManager.getLayout(this.model.getParent(a)));var g=mxEvent.isControlDown(c)&&k||null== +m&&null!=d&&d.constructor==mxStackLayout?null:this.insertEdge(this.model.getParent(a),null,"",a,r,this.createCurrentEdgeStyle());if(null!=g&&this.connectionHandler.insertBeforeSource){var p=null;for(c=a;null!=c.parent&&null!=c.geometry&&c.geometry.relative&&c.parent!=g.parent;)c=this.model.getParent(c);null!=c&&null!=c.parent&&c.parent==g.parent&&(p=c.parent.getIndex(c),this.model.add(c.parent,g,p))}null==m&&null!=r&&null!=d&&null!=a.parent&&d.constructor==mxStackLayout&&b==mxConstants.DIRECTION_WEST&& +(p=a.parent.getIndex(a),this.model.add(a.parent,r,p));null!=g&&e.push(g);null==m&&null!=r&&e.push(r);null==r&&null!=g&&g.geometry.setTerminalPoint(q,!1);null!=g&&this.fireEvent(new mxEventObject("cellsInserted","cells",[g]))}finally{this.model.endUpdate()}return e}; +Graph.prototype.getIndexableText=function(){var a=document.createElement("div"),b=[],e,c;for(c in this.model.cells)if(e=this.model.cells[c],this.model.isVertex(e)||this.model.isEdge(e))this.isHtmlLabel(e)?(a.innerHTML=this.getLabel(e),e=mxUtils.extractTextWithWhitespace([a])):e=this.getLabel(e),e=mxUtils.trim(e.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<e.length&&b.push(e);return b.join(" ")}; +Graph.prototype.convertValueToString=function(a){if(null!=a.value&&"object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder")){for(var b=a.getAttribute("placeholder"),e=a,c=null;null==c&&null!=e;)null!=e.value&&"object"==typeof e.value&&(c=e.hasAttribute(b)?null!=e.getAttribute(b)?e.getAttribute(b):"":null),e=this.model.getParent(e);return c||""}return a.value.getAttribute("label")||""}return mxGraph.prototype.convertValueToString.apply(this,arguments)}; Graph.prototype.getLinksForState=function(a){return null!=a&&null!=a.text&&null!=a.text.node?a.text.node.getElementsByTagName("a"):null};Graph.prototype.getLinkForCell=function(a){return null!=a.value&&"object"==typeof a.value?(a=a.value.getAttribute("link"),null!=a&&"javascript:"===a.toLowerCase().substring(0,11)&&(a=a.substring(11)),a):null}; -Graph.prototype.getCellStyle=function(a){var b=mxGraph.prototype.getCellStyle.apply(this,arguments);if(null!=a&&null!=this.layoutManager){var f=this.model.getParent(a);this.model.isVertex(f)&&this.isCellCollapsed(a)&&(f=this.layoutManager.getLayout(f),null!=f&&f.constructor==mxStackLayout&&(b[mxConstants.STYLE_HORIZONTAL]=!f.horizontal))}return b}; -Graph.prototype.updateAlternateBounds=function(a,b,f){if(null!=a&&null!=b&&null!=this.layoutManager&&null!=b.alternateBounds){var d=this.layoutManager.getLayout(this.model.getParent(a));null!=d&&d.constructor==mxStackLayout&&(d.horizontal?b.alternateBounds.height=0:b.alternateBounds.width=0)}mxGraph.prototype.updateAlternateBounds.apply(this,arguments)};Graph.prototype.isMoveCellsEvent=function(a){return mxEvent.isShiftDown(a)}; -Graph.prototype.foldCells=function(a,b,f,d,k){b=null!=b?b:!1;null==f&&(f=this.getFoldableCells(this.getSelectionCells(),a));if(null!=f){this.model.beginUpdate();try{if(mxGraph.prototype.foldCells.apply(this,arguments),null!=this.layoutManager)for(var n=0;n<f.length;n++){var p=this.view.getState(f[n]),q=this.getCellGeometry(f[n]);if(null!=p&&null!=q){var w=Math.round(q.width-p.width/this.view.scale),c=Math.round(q.height-p.height/this.view.scale);if(0!=c||0!=w){var g=this.model.getParent(f[n]),h=this.layoutManager.getLayout(g); -null==h?null!=k&&this.isMoveCellsEvent(k)&&this.moveSiblings(p,g,w,c):null!=k&&mxEvent.isAltDown(k)||h.constructor!=mxStackLayout||h.resizeLast||this.resizeParentStacks(g,h,w,c)}}}}finally{this.model.endUpdate()}this.isEnabled()&&this.setSelectionCells(f)}}; -Graph.prototype.moveSiblings=function(a,b,f,d){this.model.beginUpdate();try{var k=this.getCellsBeyond(a.x,a.y,b,!0,!0);for(b=0;b<k.length;b++)if(k[b]!=a.cell){var n=this.view.getState(k[b]),p=this.getCellGeometry(k[b]);null!=n&&null!=p&&(p=p.clone(),p.translate(Math.round(f*Math.max(0,Math.min(1,(n.x-a.x)/a.width))),Math.round(d*Math.max(0,Math.min(1,(n.y-a.y)/a.height)))),this.model.setGeometry(k[b],p))}}finally{this.model.endUpdate()}}; -Graph.prototype.resizeParentStacks=function(a,b,f,d){if(null!=this.layoutManager&&null!=b&&b.constructor==mxStackLayout&&!b.resizeLast){this.model.beginUpdate();try{for(var k=b.horizontal;null!=a&&null!=b&&b.constructor==mxStackLayout&&b.horizontal==k&&!b.resizeLast;){var n=this.getCellGeometry(a),p=this.view.getState(a);null!=p&&null!=n&&(n=n.clone(),b.horizontal?n.width+=f+Math.min(0,p.width/this.view.scale-n.width):n.height+=d+Math.min(0,p.height/this.view.scale-n.height),this.model.setGeometry(a, -n));a=this.model.getParent(a);b=this.layoutManager.getLayout(a)}}finally{this.model.endUpdate()}}};Graph.prototype.isContainer=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return this.isSwimlane(a)?"0"!=b.container:"1"==b.container};Graph.prototype.isCellConnectable=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return null!=b.connectable?"0"!=b.connectable:mxGraph.prototype.isCellConnectable.apply(this,arguments)}; -Graph.prototype.selectAll=function(a){a=a||this.getDefaultParent();this.isCellLocked(a)||mxGraph.prototype.selectAll.apply(this,arguments)};Graph.prototype.selectCells=function(a,b,f){f=f||this.getDefaultParent();this.isCellLocked(f)||mxGraph.prototype.selectCells.apply(this,arguments)};Graph.prototype.getSwimlaneAt=function(a,b,f){f=f||this.getDefaultParent();return this.isCellLocked(f)?null:mxGraph.prototype.getSwimlaneAt.apply(this,arguments)}; +Graph.prototype.getCellStyle=function(a){var b=mxGraph.prototype.getCellStyle.apply(this,arguments);if(null!=a&&null!=this.layoutManager){var e=this.model.getParent(a);this.model.isVertex(e)&&this.isCellCollapsed(a)&&(e=this.layoutManager.getLayout(e),null!=e&&e.constructor==mxStackLayout&&(b[mxConstants.STYLE_HORIZONTAL]=!e.horizontal))}return b}; +Graph.prototype.updateAlternateBounds=function(a,b,e){if(null!=a&&null!=b&&null!=this.layoutManager&&null!=b.alternateBounds){var c=this.layoutManager.getLayout(this.model.getParent(a));null!=c&&c.constructor==mxStackLayout&&(c.horizontal?b.alternateBounds.height=0:b.alternateBounds.width=0)}mxGraph.prototype.updateAlternateBounds.apply(this,arguments)};Graph.prototype.isMoveCellsEvent=function(a){return mxEvent.isShiftDown(a)}; +Graph.prototype.foldCells=function(a,b,e,c,k){b=null!=b?b:!1;null==e&&(e=this.getFoldableCells(this.getSelectionCells(),a));if(null!=e){this.model.beginUpdate();try{if(mxGraph.prototype.foldCells.apply(this,arguments),null!=this.layoutManager)for(var m=0;m<e.length;m++){var q=this.view.getState(e[m]),r=this.getCellGeometry(e[m]);if(null!=q&&null!=r){var v=Math.round(r.width-q.width/this.view.scale),z=Math.round(r.height-q.height/this.view.scale);if(0!=z||0!=v){var d=this.model.getParent(e[m]),f=this.layoutManager.getLayout(d); +null==f?null!=k&&this.isMoveCellsEvent(k)&&this.moveSiblings(q,d,v,z):null!=k&&mxEvent.isAltDown(k)||f.constructor!=mxStackLayout||f.resizeLast||this.resizeParentStacks(d,f,v,z)}}}}finally{this.model.endUpdate()}this.isEnabled()&&this.setSelectionCells(e)}}; +Graph.prototype.moveSiblings=function(a,b,e,c){this.model.beginUpdate();try{var k=this.getCellsBeyond(a.x,a.y,b,!0,!0);for(b=0;b<k.length;b++)if(k[b]!=a.cell){var m=this.view.getState(k[b]),q=this.getCellGeometry(k[b]);null!=m&&null!=q&&(q=q.clone(),q.translate(Math.round(e*Math.max(0,Math.min(1,(m.x-a.x)/a.width))),Math.round(c*Math.max(0,Math.min(1,(m.y-a.y)/a.height)))),this.model.setGeometry(k[b],q))}}finally{this.model.endUpdate()}}; +Graph.prototype.resizeParentStacks=function(a,b,e,c){if(null!=this.layoutManager&&null!=b&&b.constructor==mxStackLayout&&!b.resizeLast){this.model.beginUpdate();try{for(var k=b.horizontal;null!=a&&null!=b&&b.constructor==mxStackLayout&&b.horizontal==k&&!b.resizeLast;){var m=this.getCellGeometry(a),q=this.view.getState(a);null!=q&&null!=m&&(m=m.clone(),b.horizontal?m.width+=e+Math.min(0,q.width/this.view.scale-m.width):m.height+=c+Math.min(0,q.height/this.view.scale-m.height),this.model.setGeometry(a, +m));a=this.model.getParent(a);b=this.layoutManager.getLayout(a)}}finally{this.model.endUpdate()}}};Graph.prototype.isContainer=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return this.isSwimlane(a)?"0"!=b.container:"1"==b.container};Graph.prototype.isCellConnectable=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return null!=b&&null!=b.connectable?"0"!=b.connectable:mxGraph.prototype.isCellConnectable.apply(this,arguments)}; +Graph.prototype.selectAll=function(a){a=a||this.getDefaultParent();this.isCellLocked(a)||mxGraph.prototype.selectAll.apply(this,arguments)};Graph.prototype.selectCells=function(a,b,e){e=e||this.getDefaultParent();this.isCellLocked(e)||mxGraph.prototype.selectCells.apply(this,arguments)};Graph.prototype.getSwimlaneAt=function(a,b,e){e=e||this.getDefaultParent();return this.isCellLocked(e)?null:mxGraph.prototype.getSwimlaneAt.apply(this,arguments)}; Graph.prototype.isCellFoldable=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return this.foldingEnabled&&!this.isCellLocked(a)&&(this.isContainer(a)&&"0"!=b.collapsible||!this.isContainer(a)&&"1"==b.collapsible)};Graph.prototype.reset=function(){this.isEditing()&&this.stopEditing(!0);this.escape();this.isSelectionEmpty()||this.clearSelection()}; Graph.prototype.zoom=function(a,b){a=Math.max(.01,Math.min(this.view.scale*a,160))/this.view.scale;mxGraph.prototype.zoom.apply(this,arguments)};Graph.prototype.zoomIn=function(){.15>this.view.scale?this.zoom((this.view.scale+.01)/this.view.scale):this.zoom(Math.round(this.view.scale*this.zoomFactor*20)/20/this.view.scale)};Graph.prototype.zoomOut=function(){.15>=this.view.scale?this.zoom((this.view.scale-.01)/this.view.scale):this.zoom(Math.round(1/this.zoomFactor*this.view.scale*20)/20/this.view.scale)}; -Graph.prototype.getTooltipForCell=function(a){var b="";if(mxUtils.isNode(a.value)){var f=a.value.getAttribute("tooltip");if(null!=f)null!=f&&this.isReplacePlaceholders(a)&&(f=this.replacePlaceholders(a,f)),b=this.sanitizeHtml(f);else{f=this.builtInProperties;a=a.value.attributes;var d=[];this.isEnabled()&&f.push("link");for(var k=0;k<a.length;k++)0>mxUtils.indexOf(f,a[k].nodeName)&&0<a[k].nodeValue.length&&d.push({name:a[k].nodeName,value:a[k].nodeValue});d.sort(function(a,b){return a.name<b.name? --1:a.name>b.name?1:0});for(k=0;k<d.length;k++)"link"==d[k].name&&this.isCustomLink(d[k].value)||(b+=("link"!=d[k].name?"<b>"+d[k].name+":</b> ":"")+mxUtils.htmlEntities(d[k].value)+"\n");0<b.length&&(b=b.substring(0,b.length-1),mxClient.IS_SVG&&(b='<div style="max-width:360px;">'+b+"</div>"))}}return b};Graph.prototype.stringToBytes=function(a){for(var b=Array(a.length),f=0;f<a.length;f++)b[f]=a.charCodeAt(f);return b}; -Graph.prototype.bytesToString=function(a){for(var b=Array(a.length),f=0;f<a.length;f++)b[f]=String.fromCharCode(a[f]);return b.join("")};Graph.prototype.compressNode=function(a){return this.compress(this.zapGremlins(mxUtils.getXml(a)))};Graph.prototype.compress=function(a){if(null==a||0==a.length||"undefined"===typeof pako)return a;a=this.bytesToString(pako.deflateRaw(encodeURIComponent(a)));return window.btoa?btoa(a):Base64.encode(a,!0)}; -Graph.prototype.decompress=function(a){if(null==a||0==a.length||"undefined"===typeof pako)return a;a=window.atob?atob(a):Base64.decode(a,!0);return this.zapGremlins(decodeURIComponent(this.bytesToString(pako.inflateRaw(a))))};Graph.prototype.zapGremlins=function(a){for(var b=[],f=0;f<a.length;f++){var d=a.charCodeAt(f);(32<=d||9==d||10==d||13==d)&&b.push(a.charAt(f))}return b.join("")};HoverIcons=function(a){this.graph=a;this.init()};HoverIcons.prototype.arrowSpacing=2; +Graph.prototype.getTooltipForCell=function(a){var b="";if(mxUtils.isNode(a.value)){var e=a.value.getAttribute("tooltip");if(null!=e)null!=e&&this.isReplacePlaceholders(a)&&(e=this.replacePlaceholders(a,e)),b=this.sanitizeHtml(e);else{e=this.builtInProperties;a=a.value.attributes;var c=[];this.isEnabled()&&e.push("link");for(var k=0;k<a.length;k++)0>mxUtils.indexOf(e,a[k].nodeName)&&0<a[k].nodeValue.length&&c.push({name:a[k].nodeName,value:a[k].nodeValue});c.sort(function(a,b){return a.name<b.name? +-1:a.name>b.name?1:0});for(k=0;k<c.length;k++)"link"==c[k].name&&this.isCustomLink(c[k].value)||(b+=("link"!=c[k].name?"<b>"+c[k].name+":</b> ":"")+mxUtils.htmlEntities(c[k].value)+"\n");0<b.length&&(b=b.substring(0,b.length-1),mxClient.IS_SVG&&(b='<div style="max-width:360px;">'+b+"</div>"))}}return b};Graph.prototype.stringToBytes=function(a){for(var b=Array(a.length),e=0;e<a.length;e++)b[e]=a.charCodeAt(e);return b}; +Graph.prototype.bytesToString=function(a){for(var b=Array(a.length),e=0;e<a.length;e++)b[e]=String.fromCharCode(a[e]);return b.join("")};Graph.prototype.compressNode=function(a){return this.compress(this.zapGremlins(mxUtils.getXml(a)))};Graph.prototype.compress=function(a){if(null==a||0==a.length||"undefined"===typeof pako)return a;a=this.bytesToString(pako.deflateRaw(encodeURIComponent(a)));return window.btoa?btoa(a):Base64.encode(a,!0)}; +Graph.prototype.decompress=function(a){if(null==a||0==a.length||"undefined"===typeof pako)return a;a=window.atob?atob(a):Base64.decode(a,!0);return this.zapGremlins(decodeURIComponent(this.bytesToString(pako.inflateRaw(a))))};Graph.prototype.zapGremlins=function(a){for(var b=[],e=0;e<a.length;e++){var c=a.charCodeAt(e);(32<=c||9==c||10==c||13==c)&&b.push(a.charAt(e))}return b.join("")};HoverIcons=function(a){this.graph=a;this.init()};HoverIcons.prototype.arrowSpacing=2; HoverIcons.prototype.updateDelay=500;HoverIcons.prototype.activationDelay=140;HoverIcons.prototype.currentState=null;HoverIcons.prototype.activeArrow=null;HoverIcons.prototype.inactiveOpacity=15;HoverIcons.prototype.cssCursor="copy";HoverIcons.prototype.checkCollisions=!0;HoverIcons.prototype.arrowFill="#29b6f2"; HoverIcons.prototype.triangleUp=mxClient.IS_SVG?Graph.createSvgImage(18,28,'<path d="m 6 26 L 12 26 L 12 12 L 18 12 L 9 1 L 1 12 L 6 12 z" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/>'):new mxImage(IMAGE_PATH+"/triangle-up.png",26,14);HoverIcons.prototype.triangleRight=mxClient.IS_SVG?Graph.createSvgImage(26,18,'<path d="m 1 6 L 14 6 L 14 1 L 26 9 L 14 18 L 14 12 L 1 12 z" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/>'):new mxImage(IMAGE_PATH+"/triangle-right.png",14,26); HoverIcons.prototype.triangleDown=mxClient.IS_SVG?Graph.createSvgImage(18,26,'<path d="m 6 1 L 6 14 L 1 14 L 9 26 L 18 14 L 12 14 L 12 1 z" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/>'):new mxImage(IMAGE_PATH+"/triangle-down.png",26,14);HoverIcons.prototype.triangleLeft=mxClient.IS_SVG?Graph.createSvgImage(28,18,'<path d="m 1 9 L 12 1 L 12 6 L 26 6 L 26 12 L 12 12 L 12 18 z" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/>'):new mxImage(IMAGE_PATH+"/triangle-left.png",14,26); @@ -2285,447 +2287,451 @@ HoverIcons.prototype.refreshTarget=new mxImage(mxClient.IS_SVG?"data:image/png;b HoverIcons.prototype.init=function(){this.arrowUp=this.createArrow(this.triangleUp,mxResources.get("plusTooltip"));this.arrowRight=this.createArrow(this.triangleRight,mxResources.get("plusTooltip"));this.arrowDown=this.createArrow(this.triangleDown,mxResources.get("plusTooltip"));this.arrowLeft=this.createArrow(this.triangleLeft,mxResources.get("plusTooltip"));this.elts=[this.arrowUp,this.arrowRight,this.arrowDown,this.arrowLeft];this.repaintHandler=mxUtils.bind(this,function(){this.repaint()});this.graph.selectionModel.addListener(mxEvent.CHANGE, this.repaintHandler);this.graph.model.addListener(mxEvent.CHANGE,this.repaintHandler);this.graph.view.addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler);this.graph.view.addListener(mxEvent.TRANSLATE,this.repaintHandler);this.graph.view.addListener(mxEvent.SCALE,this.repaintHandler);this.graph.view.addListener(mxEvent.DOWN,this.repaintHandler);this.graph.view.addListener(mxEvent.UP,this.repaintHandler);this.graph.addListener(mxEvent.ROOT,this.repaintHandler);this.graph.addListener(mxEvent.ESCAPE, mxUtils.bind(this,function(){this.mouseDownPoint=null}));mxEvent.addListener(this.graph.container,"mouseleave",mxUtils.bind(this,function(a){null!=a.relatedTarget&&mxEvent.getSource(a)==this.graph.container&&this.setDisplay("none")}));this.graph.addListener(mxEvent.START_EDITING,mxUtils.bind(this,function(a){this.reset()}));var a=this.graph.click;this.graph.click=mxUtils.bind(this,function(b){a.apply(this.graph,arguments);null==this.currentState||this.graph.isCellSelected(this.currentState.cell)|| -!mxEvent.isTouchEvent(b.getEvent())||this.graph.model.isVertex(b.getCell())||this.reset()});var b=!1;this.graph.addMouseListener({mouseDown:mxUtils.bind(this,function(a,d){b=!1;var f=d.getEvent();if(this.isResetEvent(f))this.reset();else if(!this.isActive()){var n=this.getState(d.getState());null==n&&mxEvent.isTouchEvent(f)||this.update(n)}this.setDisplay("none")}),mouseMove:mxUtils.bind(this,function(a,d){var f=d.getEvent();this.isResetEvent(f)?this.reset():this.graph.isMouseDown||mxEvent.isTouchEvent(f)|| -this.update(this.getState(d.getState()),d.getGraphX(),d.getGraphY());null!=this.graph.connectionHandler&&null!=this.graph.connectionHandler.shape&&(b=!0)}),mouseUp:mxUtils.bind(this,function(a,d){var f=d.getEvent();mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(f),mxEvent.getClientY(f));this.isResetEvent(f)?this.reset():this.isActive()&&!b&&null!=this.mouseDownPoint?this.click(this.currentState,this.getDirection(),d):this.isActive()?1==this.graph.getSelectionCount()&&this.graph.model.isEdge(this.graph.getSelectionCell())? -this.reset():this.update(this.getState(this.graph.view.getState(this.graph.getCellAt(d.getGraphX(),d.getGraphY())))):mxEvent.isTouchEvent(f)||null!=this.bbox&&mxUtils.contains(this.bbox,d.getGraphX(),d.getGraphY())?(this.setDisplay(""),this.repaint()):mxEvent.isTouchEvent(f)||this.reset();b=!1;this.resetActiveArrow()})})};HoverIcons.prototype.isResetEvent=function(a,b){return mxEvent.isAltDown(a)||null==this.activeArrow&&mxEvent.isShiftDown(a)||mxEvent.isMetaDown(a)||mxEvent.isPopupTrigger(a)&&!mxEvent.isControlDown(a)}; -HoverIcons.prototype.createArrow=function(a,b){var f=null;mxClient.IS_IE&&!mxClient.IS_SVG?(mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?(f=document.createElement(mxClient.VML_PREFIX+":image"),f.setAttribute("src",a.src),f.style.borderStyle="none"):(f=document.createElement("div"),f.style.backgroundImage="url("+a.src+")",f.style.backgroundPosition="center",f.style.backgroundRepeat="no-repeat"),f.style.width=a.width+4+"px",f.style.height=a.height+4+"px",f.style.display=mxClient.IS_QUIRKS?"inline": -"inline-block"):(f=mxUtils.createImage(a.src),f.style.width=a.width+"px",f.style.height=a.height+"px",f.style.padding=this.tolerance+"px");null!=b&&f.setAttribute("title",b);f.style.position="absolute";f.style.cursor=this.cssCursor;mxEvent.addGestureListeners(f,mxUtils.bind(this,function(a){null==this.currentState||this.isResetEvent(a)||(this.mouseDownPoint=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(a),mxEvent.getClientY(a)),this.drag(a,this.mouseDownPoint.x,this.mouseDownPoint.y), -this.activeArrow=f,this.setDisplay("none"),mxEvent.consume(a))}));mxEvent.redirectMouseEvents(f,this.graph,this.currentState);mxEvent.addListener(f,"mouseenter",mxUtils.bind(this,function(a){mxEvent.isMouseEvent(a)&&(null!=this.activeArrow&&this.activeArrow!=f&&mxUtils.setOpacity(this.activeArrow,this.inactiveOpacity),this.graph.connectionHandler.constraintHandler.reset(),mxUtils.setOpacity(f,100),this.activeArrow=f)}));mxEvent.addListener(f,"mouseleave",mxUtils.bind(this,function(a){this.graph.isMouseDown|| -this.resetActiveArrow()}));return f};HoverIcons.prototype.resetActiveArrow=function(){null!=this.activeArrow&&(mxUtils.setOpacity(this.activeArrow,this.inactiveOpacity),this.activeArrow=null)};HoverIcons.prototype.getDirection=function(){var a=mxConstants.DIRECTION_EAST;this.activeArrow==this.arrowUp?a=mxConstants.DIRECTION_NORTH:this.activeArrow==this.arrowDown?a=mxConstants.DIRECTION_SOUTH:this.activeArrow==this.arrowLeft&&(a=mxConstants.DIRECTION_WEST);return a}; +!mxEvent.isTouchEvent(b.getEvent())||this.graph.model.isVertex(b.getCell())||this.reset()});var b=!1;this.graph.addMouseListener({mouseDown:mxUtils.bind(this,function(a,c){b=!1;var e=c.getEvent();if(this.isResetEvent(e))this.reset();else if(!this.isActive()){var m=this.getState(c.getState());null==m&&mxEvent.isTouchEvent(e)||this.update(m)}this.setDisplay("none")}),mouseMove:mxUtils.bind(this,function(a,c){var e=c.getEvent();this.isResetEvent(e)?this.reset():this.graph.isMouseDown||mxEvent.isTouchEvent(e)|| +this.update(this.getState(c.getState()),c.getGraphX(),c.getGraphY());null!=this.graph.connectionHandler&&null!=this.graph.connectionHandler.shape&&(b=!0)}),mouseUp:mxUtils.bind(this,function(a,c){var e=c.getEvent();mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.isResetEvent(e)?this.reset():this.isActive()&&!b&&null!=this.mouseDownPoint?this.click(this.currentState,this.getDirection(),c):this.isActive()?1==this.graph.getSelectionCount()&&this.graph.model.isEdge(this.graph.getSelectionCell())? +this.reset():this.update(this.getState(this.graph.view.getState(this.graph.getCellAt(c.getGraphX(),c.getGraphY())))):mxEvent.isTouchEvent(e)||null!=this.bbox&&mxUtils.contains(this.bbox,c.getGraphX(),c.getGraphY())?(this.setDisplay(""),this.repaint()):mxEvent.isTouchEvent(e)||this.reset();b=!1;this.resetActiveArrow()})})};HoverIcons.prototype.isResetEvent=function(a,b){return mxEvent.isAltDown(a)||null==this.activeArrow&&mxEvent.isShiftDown(a)||mxEvent.isMetaDown(a)||mxEvent.isPopupTrigger(a)&&!mxEvent.isControlDown(a)}; +HoverIcons.prototype.createArrow=function(a,b){var e=null;mxClient.IS_IE&&!mxClient.IS_SVG?(mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?(e=document.createElement(mxClient.VML_PREFIX+":image"),e.setAttribute("src",a.src),e.style.borderStyle="none"):(e=document.createElement("div"),e.style.backgroundImage="url("+a.src+")",e.style.backgroundPosition="center",e.style.backgroundRepeat="no-repeat"),e.style.width=a.width+4+"px",e.style.height=a.height+4+"px",e.style.display=mxClient.IS_QUIRKS?"inline": +"inline-block"):(e=mxUtils.createImage(a.src),e.style.width=a.width+"px",e.style.height=a.height+"px",e.style.padding=this.tolerance+"px");null!=b&&e.setAttribute("title",b);e.style.position="absolute";e.style.cursor=this.cssCursor;mxEvent.addGestureListeners(e,mxUtils.bind(this,function(a){null==this.currentState||this.isResetEvent(a)||(this.mouseDownPoint=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(a),mxEvent.getClientY(a)),this.drag(a,this.mouseDownPoint.x,this.mouseDownPoint.y), +this.activeArrow=e,this.setDisplay("none"),mxEvent.consume(a))}));mxEvent.redirectMouseEvents(e,this.graph,this.currentState);mxEvent.addListener(e,"mouseenter",mxUtils.bind(this,function(a){mxEvent.isMouseEvent(a)&&(null!=this.activeArrow&&this.activeArrow!=e&&mxUtils.setOpacity(this.activeArrow,this.inactiveOpacity),this.graph.connectionHandler.constraintHandler.reset(),mxUtils.setOpacity(e,100),this.activeArrow=e)}));mxEvent.addListener(e,"mouseleave",mxUtils.bind(this,function(a){this.graph.isMouseDown|| +this.resetActiveArrow()}));return e};HoverIcons.prototype.resetActiveArrow=function(){null!=this.activeArrow&&(mxUtils.setOpacity(this.activeArrow,this.inactiveOpacity),this.activeArrow=null)};HoverIcons.prototype.getDirection=function(){var a=mxConstants.DIRECTION_EAST;this.activeArrow==this.arrowUp?a=mxConstants.DIRECTION_NORTH:this.activeArrow==this.arrowDown?a=mxConstants.DIRECTION_SOUTH:this.activeArrow==this.arrowLeft&&(a=mxConstants.DIRECTION_WEST);return a}; HoverIcons.prototype.visitNodes=function(a){for(var b=0;b<this.elts.length;b++)null!=this.elts[b]&&a(this.elts[b])};HoverIcons.prototype.removeNodes=function(){this.visitNodes(function(a){null!=a.parentNode&&a.parentNode.removeChild(a)})};HoverIcons.prototype.setDisplay=function(a){this.visitNodes(function(b){b.style.display=a})};HoverIcons.prototype.isActive=function(){return null!=this.activeArrow&&null!=this.currentState}; -HoverIcons.prototype.drag=function(a,b,f){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);null!=this.currentState&&(this.graph.connectionHandler.start(this.currentState,b,f),this.graph.isMouseTrigger=mxEvent.isMouseEvent(a),this.graph.isMouseDown=!0,b=this.graph.selectionCellsHandler.getHandler(this.currentState.cell),null!=b&&b.setHandlesVisible(!1),b=this.graph.connectionHandler.edgeState,null!=a&&mxEvent.isShiftDown(a)&&mxEvent.isControlDown(a)&&null!=b&&"orthogonalEdgeStyle"=== -mxUtils.getValue(b.style,mxConstants.STYLE_EDGE,null)&&(a=this.getDirection(),b.cell.style=mxUtils.setStyle(b.cell.style,"sourcePortConstraint",a),b.style.sourcePortConstraint=a))};HoverIcons.prototype.getStateAt=function(a,b,f){return this.graph.view.getState(this.graph.getCellAt(b,f))}; -HoverIcons.prototype.click=function(a,b,f){var d=f.getEvent(),k=f.getGraphX(),n=f.getGraphY(),k=this.getStateAt(a,k,n);null==k||!this.graph.model.isEdge(k.cell)||mxEvent.isControlDown(d)||k.getVisibleTerminalState(!0)!=a&&k.getVisibleTerminalState(!1)!=a?null!=a&&(a=this.graph.connectVertex(a.cell,b,this.graph.defaultEdgeLength,d),this.graph.selectCellsForConnectVertex(a,d,this),2==a.length&&this.graph.model.isVertex(a[1])?(this.graph.setSelectionCell(a[1]),mxEvent.isTouchEvent(d)?this.update(this.getState(this.graph.view.getState(a[1]))): -this.reset(),this.graph.scrollCellToVisible(a[1])):this.graph.setSelectionCells(a)):(this.graph.setSelectionCell(k.cell),this.reset());f.consume()};HoverIcons.prototype.reset=function(a){null!=a&&!a||null==this.updateThread||window.clearTimeout(this.updateThread);this.activeArrow=this.currentState=this.mouseDownPoint=null;this.removeNodes();this.bbox=null}; +HoverIcons.prototype.drag=function(a,b,e){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);null!=this.currentState&&(this.graph.connectionHandler.start(this.currentState,b,e),this.graph.isMouseTrigger=mxEvent.isMouseEvent(a),this.graph.isMouseDown=!0,b=this.graph.selectionCellsHandler.getHandler(this.currentState.cell),null!=b&&b.setHandlesVisible(!1),b=this.graph.connectionHandler.edgeState,null!=a&&mxEvent.isShiftDown(a)&&mxEvent.isControlDown(a)&&null!=b&&"orthogonalEdgeStyle"=== +mxUtils.getValue(b.style,mxConstants.STYLE_EDGE,null)&&(a=this.getDirection(),b.cell.style=mxUtils.setStyle(b.cell.style,"sourcePortConstraint",a),b.style.sourcePortConstraint=a))};HoverIcons.prototype.getStateAt=function(a,b,e){return this.graph.view.getState(this.graph.getCellAt(b,e))}; +HoverIcons.prototype.click=function(a,b,e){var c=e.getEvent(),k=e.getGraphX(),m=e.getGraphY(),k=this.getStateAt(a,k,m);null==k||!this.graph.model.isEdge(k.cell)||mxEvent.isControlDown(c)||k.getVisibleTerminalState(!0)!=a&&k.getVisibleTerminalState(!1)!=a?null!=a&&(a=this.graph.connectVertex(a.cell,b,this.graph.defaultEdgeLength,c),this.graph.selectCellsForConnectVertex(a,c,this),2==a.length&&this.graph.model.isVertex(a[1])?(this.graph.setSelectionCell(a[1]),mxEvent.isTouchEvent(c)?this.update(this.getState(this.graph.view.getState(a[1]))): +this.reset(),this.graph.scrollCellToVisible(a[1])):this.graph.setSelectionCells(a)):(this.graph.setSelectionCell(k.cell),this.reset());e.consume()};HoverIcons.prototype.reset=function(a){null!=a&&!a||null==this.updateThread||window.clearTimeout(this.updateThread);this.activeArrow=this.currentState=this.mouseDownPoint=null;this.removeNodes();this.bbox=null}; HoverIcons.prototype.repaint=function(){this.bbox=null;if(null!=this.currentState){this.currentState=this.getState(this.currentState);if(null!=this.currentState&&this.graph.model.isVertex(this.currentState.cell)&&this.graph.isCellConnectable(this.currentState.cell)){var a=mxRectangle.fromRectangle(this.currentState);null!=this.currentState.shape&&null!=this.currentState.shape.boundingBox&&(a=mxRectangle.fromRectangle(this.currentState.shape.boundingBox));a.grow(this.graph.tolerance);a.grow(this.arrowSpacing); var b=this.graph.selectionCellsHandler.getHandler(this.currentState.cell);null!=b&&(a.x-=b.horizontalOffset/2,a.y-=b.verticalOffset/2,a.width+=b.horizontalOffset,a.height+=b.verticalOffset,null!=b.rotationShape&&null!=b.rotationShape.node&&"hidden"!=b.rotationShape.node.style.visibility&&"none"!=b.rotationShape.node.style.display&&null!=b.rotationShape.boundingBox&&a.add(b.rotationShape.boundingBox));this.arrowUp.style.left=Math.round(this.currentState.getCenterX()-this.triangleUp.width/2-this.tolerance)+ "px";this.arrowUp.style.top=Math.round(a.y-this.triangleUp.height-this.tolerance)+"px";mxUtils.setOpacity(this.arrowUp,this.inactiveOpacity);this.arrowRight.style.left=Math.round(a.x+a.width-this.tolerance)+"px";this.arrowRight.style.top=Math.round(this.currentState.getCenterY()-this.triangleRight.height/2-this.tolerance)+"px";mxUtils.setOpacity(this.arrowRight,this.inactiveOpacity);this.arrowDown.style.left=this.arrowUp.style.left;this.arrowDown.style.top=Math.round(a.y+a.height-this.tolerance)+ -"px";mxUtils.setOpacity(this.arrowDown,this.inactiveOpacity);this.arrowLeft.style.left=Math.round(a.x-this.triangleLeft.width-this.tolerance)+"px";this.arrowLeft.style.top=this.arrowRight.style.top;mxUtils.setOpacity(this.arrowLeft,this.inactiveOpacity);if(this.checkCollisions){var b=this.graph.getCellAt(a.x+a.width+this.triangleRight.width/2,this.currentState.getCenterY()),f=this.graph.getCellAt(a.x-this.triangleLeft.width/2,this.currentState.getCenterY()),d=this.graph.getCellAt(this.currentState.getCenterX(), -a.y-this.triangleUp.height/2),a=this.graph.getCellAt(this.currentState.getCenterX(),a.y+a.height+this.triangleDown.height/2);null!=b&&b==f&&f==d&&d==a&&(a=d=f=b=null);var k=this.graph.getCellGeometry(this.currentState.cell),n=mxUtils.bind(this,function(a,b){var d=this.graph.model.isVertex(a)&&this.graph.getCellGeometry(a);null!=a&&!this.graph.model.isAncestor(a,this.currentState.cell)&&(null==d||null==k||d.height<6*k.height&&d.width<6*k.width)?b.style.visibility="hidden":b.style.visibility="visible"}); -n(b,this.arrowRight);n(f,this.arrowLeft);n(d,this.arrowUp);n(a,this.arrowDown)}else this.arrowLeft.style.visibility="visible",this.arrowRight.style.visibility="visible",this.arrowUp.style.visibility="visible",this.arrowDown.style.visibility="visible";this.graph.tooltipHandler.isEnabled()?(this.arrowLeft.setAttribute("title",mxResources.get("plusTooltip")),this.arrowRight.setAttribute("title",mxResources.get("plusTooltip")),this.arrowUp.setAttribute("title",mxResources.get("plusTooltip")),this.arrowDown.setAttribute("title", +"px";mxUtils.setOpacity(this.arrowDown,this.inactiveOpacity);this.arrowLeft.style.left=Math.round(a.x-this.triangleLeft.width-this.tolerance)+"px";this.arrowLeft.style.top=this.arrowRight.style.top;mxUtils.setOpacity(this.arrowLeft,this.inactiveOpacity);if(this.checkCollisions){var b=this.graph.getCellAt(a.x+a.width+this.triangleRight.width/2,this.currentState.getCenterY()),e=this.graph.getCellAt(a.x-this.triangleLeft.width/2,this.currentState.getCenterY()),c=this.graph.getCellAt(this.currentState.getCenterX(), +a.y-this.triangleUp.height/2),a=this.graph.getCellAt(this.currentState.getCenterX(),a.y+a.height+this.triangleDown.height/2);null!=b&&b==e&&e==c&&c==a&&(a=c=e=b=null);var k=this.graph.getCellGeometry(this.currentState.cell),m=mxUtils.bind(this,function(a,b){var c=this.graph.model.isVertex(a)&&this.graph.getCellGeometry(a);null!=a&&!this.graph.model.isAncestor(a,this.currentState.cell)&&(null==c||null==k||c.height<6*k.height&&c.width<6*k.width)?b.style.visibility="hidden":b.style.visibility="visible"}); +m(b,this.arrowRight);m(e,this.arrowLeft);m(c,this.arrowUp);m(a,this.arrowDown)}else this.arrowLeft.style.visibility="visible",this.arrowRight.style.visibility="visible",this.arrowUp.style.visibility="visible",this.arrowDown.style.visibility="visible";this.graph.tooltipHandler.isEnabled()?(this.arrowLeft.setAttribute("title",mxResources.get("plusTooltip")),this.arrowRight.setAttribute("title",mxResources.get("plusTooltip")),this.arrowUp.setAttribute("title",mxResources.get("plusTooltip")),this.arrowDown.setAttribute("title", mxResources.get("plusTooltip"))):(this.arrowLeft.removeAttribute("title"),this.arrowRight.removeAttribute("title"),this.arrowUp.removeAttribute("title"),this.arrowDown.removeAttribute("title"))}else this.reset();null!=this.currentState&&(this.bbox=this.computeBoundingBox(),null!=this.bbox&&this.bbox.grow(10))}}; HoverIcons.prototype.computeBoundingBox=function(){var a=this.graph.model.isEdge(this.currentState.cell)?null:mxRectangle.fromRectangle(this.currentState);this.visitNodes(function(b){null!=b.parentNode&&(b=new mxRectangle(b.offsetLeft,b.offsetTop,b.offsetWidth,b.offsetHeight),null==a?a=b:a.add(b))});return a}; -HoverIcons.prototype.getState=function(a){if(null!=a){a=a.cell;if(this.graph.getModel().isVertex(a)&&!this.graph.isCellConnectable(a)){var b=this.graph.getModel().getParent(a);this.graph.getModel().isVertex(b)&&this.graph.isCellConnectable(b)&&(a=b)}if(this.graph.isCellLocked(a)||this.graph.model.isEdge(a))a=null;a=this.graph.view.getState(a)}return a}; -HoverIcons.prototype.update=function(a,b,f){if(this.graph.connectionArrowsEnabled){var d=null;this.prev!=a||this.isActive()?(this.startTime=(new Date).getTime(),this.prev=a,d=0,null!=this.updateThread&&window.clearTimeout(this.updateThread),null!=a&&(this.updateThread=window.setTimeout(mxUtils.bind(this,function(){this.isActive()||this.graph.isMouseDown||this.graph.panningHandler.isActive()||(this.prev=a,this.update(a,b,f))}),this.updateDelay+10))):null!=this.startTime&&(d=(new Date).getTime()-this.startTime); -this.setDisplay("");null!=this.currentState&&this.currentState!=a&&d<this.activationDelay&&null!=this.bbox&&!mxUtils.contains(this.bbox,b,f)?this.reset(!1):(null!=this.currentState||d>this.activationDelay)&&this.currentState!=a&&(d>this.updateDelay&&null!=a||null==this.bbox||null==b||null==f||!mxUtils.contains(this.bbox,b,f))&&(null!=a&&this.graph.isEnabled()?(this.removeNodes(),this.setCurrentState(a),this.repaint(),this.graph.connectionHandler.constraintHandler.currentFocus!=a&&this.graph.connectionHandler.constraintHandler.reset()): +HoverIcons.prototype.getState=function(a){if(null!=a)if(a=a.cell,this.graph.getModel().contains(a)){if(this.graph.getModel().isVertex(a)&&!this.graph.isCellConnectable(a)){var b=this.graph.getModel().getParent(a);this.graph.getModel().isVertex(b)&&this.graph.isCellConnectable(b)&&(a=b)}if(this.graph.isCellLocked(a)||this.graph.model.isEdge(a))a=null;a=this.graph.view.getState(a);null!=a&&null==a.style&&(a=null)}else a=null;return a}; +HoverIcons.prototype.update=function(a,b,e){if(this.graph.connectionArrowsEnabled){var c=null;this.prev!=a||this.isActive()?(this.startTime=(new Date).getTime(),this.prev=a,c=0,null!=this.updateThread&&window.clearTimeout(this.updateThread),null!=a&&(this.updateThread=window.setTimeout(mxUtils.bind(this,function(){this.isActive()||this.graph.isMouseDown||this.graph.panningHandler.isActive()||(this.prev=a,this.update(a,b,e))}),this.updateDelay+10))):null!=this.startTime&&(c=(new Date).getTime()-this.startTime); +this.setDisplay("");null!=this.currentState&&this.currentState!=a&&c<this.activationDelay&&null!=this.bbox&&!mxUtils.contains(this.bbox,b,e)?this.reset(!1):(null!=this.currentState||c>this.activationDelay)&&this.currentState!=a&&(c>this.updateDelay&&null!=a||null==this.bbox||null==b||null==e||!mxUtils.contains(this.bbox,b,e))&&(null!=a&&this.graph.isEnabled()?(this.removeNodes(),this.setCurrentState(a),this.repaint(),this.graph.connectionHandler.constraintHandler.currentFocus!=a&&this.graph.connectionHandler.constraintHandler.reset()): this.reset())}else this.reset()};HoverIcons.prototype.setCurrentState=function(a){"eastwest"!=a.style.portConstraint&&(this.graph.container.appendChild(this.arrowUp),this.graph.container.appendChild(this.arrowDown));this.graph.container.appendChild(this.arrowRight);this.graph.container.appendChild(this.arrowLeft);this.currentState=a}; (function(){var a=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){a.apply(this,arguments);this.validEdges=[]};var b=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(a,c){var d=this.getState(a);null!=d&&this.graph.model.isEdge(d.cell)&&null!=d.style&&1!=d.style[mxConstants.STYLE_CURVED]&&!d.invalid&&this.updateLineJumps(d)&&this.graph.cellRenderer.redraw(d,!1,this.isRendering());d=b.apply(this,arguments);null!= -d&&this.graph.model.isEdge(d.cell)&&1!=d.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(d);return d};var f=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(a,c){return f.apply(this,arguments)||null!=a.routedPoints&&null!=c.routedPoints&&!mxUtils.equalPoints(c.routedPoints,a.routedPoints)};var d=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=function(a){d.apply(this,arguments);this.graph.model.isEdge(a.cell)&&1!=a.style[mxConstants.STYLE_CURVED]&& -this.updateLineJumps(a)};mxGraphView.prototype.updateLineJumps=function(a){var c=a.absolutePoints;if(Graph.lineJumpsEnabled){var b=null!=a.routedPoints,d=null;if(null!=c&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var f=function(c,b,g){var h=new mxPoint(b,g);h.type=c;d.push(h);h=null!=a.routedPoints?a.routedPoints[d.length-1]:null;return null==h||h.type!=c||h.x!=b||h.y!=g},t=.5*this.scale,b=!1,d=[],m=0;m<c.length-1;m++){for(var r=c[m+1],k=c[m],v=[],q=c[m+2];m< -c.length-2&&mxUtils.ptSegDistSq(k.x,k.y,q.x,q.y,r.x,r.y)<1*this.scale*this.scale;)r=q,m++,q=c[m+2];for(var b=f(0,k.x,k.y)||b,y=0;y<this.validEdges.length;y++){var u=this.validEdges[y],A=u.absolutePoints;if(null!=A&&mxUtils.intersects(a,u)&&"1"!=u.style.noJump)for(u=0;u<A.length-1;u++){for(var n=A[u+1],p=A[u],q=A[u+2];u<A.length-2&&mxUtils.ptSegDistSq(p.x,p.y,q.x,q.y,n.x,n.y)<1*this.scale*this.scale;)n=q,u++,q=A[u+2];q=mxUtils.intersection(k.x,k.y,r.x,r.y,p.x,p.y,n.x,n.y);if(null!=q&&(Math.abs(q.x- -p.x)>t||Math.abs(q.y-p.y)>t)&&(Math.abs(q.x-n.x)>t||Math.abs(q.y-n.y)>t)){n=q.x-k.x;p=q.y-k.y;q={distSq:n*n+p*p,x:q.x,y:q.y};for(n=0;n<v.length;n++)if(v[n].distSq>q.distSq){v.splice(n,0,q);q=null;break}null==q||0!=v.length&&v[v.length-1].x===q.x&&v[v.length-1].y===q.y||v.push(q)}}}for(u=0;u<v.length;u++)b=f(1,v[u].x,v[u].y)||b}q=c[c.length-1];b=f(0,q.x,q.y)||b}a.routedPoints=d;return b}return!1};var k=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(a,c,b){this.routedPoints= -null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)k.apply(this,arguments);else{var d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,g=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,f=mxUtils.getValue(this.style,"jumpStyle","none"),m,r=!0,x=null,v=null;m=[];var q=null;a.begin();for(var y=0;y<this.state.routedPoints.length;y++){var u= -this.state.routedPoints[y],A=new mxPoint(u.x/this.scale,u.y/this.scale);0==y?A=c[0]:y==this.state.routedPoints.length-1&&(A=c[c.length-1]);var n=!1;if(null!=x&&1==u.type){var p=this.state.routedPoints[y+1],u=p.x/this.scale-A.x,p=p.y/this.scale-A.y,u=u*u+p*p;null==q&&(q=new mxPoint(A.x-x.x,A.y-x.y),v=Math.sqrt(q.x*q.x+q.y*q.y),q.x=q.x*g/v,q.y=q.y*g/v);u>g*g&&0<v&&(u=x.x-A.x,p=x.y-A.y,u=u*u+p*p,u>g*g&&(n=new mxPoint(A.x-q.x,A.y-q.y),u=new mxPoint(A.x+q.x,A.y+q.y),m.push(n),this.addPoints(a,m,b,d,!1, -null,r),m=0>Math.round(q.x)||0==Math.round(q.x)&&0>=Math.round(q.y)?1:-1,r=!1,"sharp"==f?(a.lineTo(n.x-q.y*m,n.y+q.x*m),a.lineTo(u.x-q.y*m,u.y+q.x*m),a.lineTo(u.x,u.y)):"arc"==f?(m*=1.3,a.curveTo(n.x-q.y*m,n.y+q.x*m,u.x-q.y*m,u.y+q.x*m,u.x,u.y)):(a.moveTo(u.x,u.y),r=!0),m=[u],n=!0))}else q=null;n||(m.push(A),x=A)}this.addPoints(a,m,b,d,!1,null,r);a.stroke()}};var n=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint=function(a,c,b,d){if(null==c||null== -a||"1"!=c.style.snapToPoint&&"1"!=a.style.snapToPoint)n.apply(this,arguments);else{c=this.getTerminalPort(a,c,d);var g=this.getNextPoint(a,b,d),h=this.graph.isOrthogonal(a),f=mxUtils.toRadians(Number(c.style[mxConstants.STYLE_ROTATION]||"0")),r=new mxPoint(c.getCenterX(),c.getCenterY());if(0!=f)var k=Math.cos(-f),v=Math.sin(-f),g=mxUtils.getRotatedPoint(g,k,v,r);k=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||0);k+=parseFloat(a.style[d?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]|| -0);g=this.getPerimeterPoint(c,g,0==f&&h,k);0!=f&&(k=Math.cos(f),v=Math.sin(f),g=mxUtils.getRotatedPoint(g,k,v,r));a.setAbsoluteTerminalPoint(this.snapToAnchorPoint(a,c,b,d,g),d)}};mxGraphView.prototype.snapToAnchorPoint=function(a,c,b,d,f){if(null!=c&&null!=a){a=this.graph.getAllConnectionConstraints(c);d=b=null;if(null!=a)for(var g=0;g<a.length;g++){var h=this.graph.getConnectionPoint(c,a[g]);if(null!=h){var l=(h.x-f.x)*(h.x-f.x)+(h.y-f.y)*(h.y-f.y);if(null==d||l<d)b=h,d=l}}null!=b&&(f=b)}return f}; -var p=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(a,c,b){var d=p.apply(this,arguments);"1"==a.getAttribute("placeholders")&&null!=b.state&&(d=b.state.view.graph.replacePlaceholders(b.state.cell,d));return d};var q=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(a){if(null!=a.style&&"undefined"!==typeof pako){var c=mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null);if(null!=c&&"stencil("==c.substring(0,8))try{var b= -c.substring(8,c.length-1),d=mxUtils.parseXml(a.view.graph.decompress(b));return new mxShape(new mxStencil(d.documentElement))}catch(l){null!=window.console&&console.log("Error in shape: "+l)}}return q.apply(this,arguments)}})();mxStencilRegistry.libraries={};mxStencilRegistry.dynamicLoading=!0;mxStencilRegistry.allowEval=!0;mxStencilRegistry.packages=[]; -mxStencilRegistry.getStencil=function(a){var b=mxStencilRegistry.stencils[a];if(null==b&&null==mxCellRenderer.defaultShapes[a]&&mxStencilRegistry.dynamicLoading){var f=mxStencilRegistry.getBasenameForStencil(a);if(null!=f){b=mxStencilRegistry.libraries[f];if(null!=b){if(null==mxStencilRegistry.packages[f]){for(var d=0;d<b.length;d++){var k=b[d];if(".xml"==k.toLowerCase().substring(k.length-4,k.length))mxStencilRegistry.loadStencilSet(k,null);else if(".js"==k.toLowerCase().substring(k.length-3,k.length))try{if(mxStencilRegistry.allowEval){var n= -mxUtils.load(k);null!=n&&200<=n.getStatus()&&299>=n.getStatus()&&eval.call(window,n.getText())}}catch(p){null!=window.console&&console.log("error in getStencil:",k,p)}}mxStencilRegistry.packages[f]=1}}else f=f.replace("_-_","_"),mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+f+".xml",null);b=mxStencilRegistry.stencils[a]}}return b}; -mxStencilRegistry.getBasenameForStencil=function(a){var b=null;if(null!=a&&(a=a.split("."),0<a.length&&"mxgraph"==a[0]))for(var b=a[1],f=2;f<a.length-1;f++)b+="/"+a[f];return b}; -mxStencilRegistry.loadStencilSet=function(a,b,f,d){var k=mxStencilRegistry.packages[a];if(null!=f&&f||null==k){var n=!1;if(null==k)try{if(d){mxStencilRegistry.loadStencil(a,mxUtils.bind(this,function(d){null!=d&&null!=d.documentElement&&(mxStencilRegistry.packages[a]=d,n=!0,mxStencilRegistry.parseStencilSet(d.documentElement,b,n))}));return}k=mxStencilRegistry.loadStencil(a);mxStencilRegistry.packages[a]=k;n=!0}catch(p){null!=window.console&&console.log("error in loadStencilSet:",a,p)}null!=k&&null!= -k.documentElement&&mxStencilRegistry.parseStencilSet(k.documentElement,b,n)}};mxStencilRegistry.loadStencil=function(a,b){if(null!=b)mxUtils.get(a,mxUtils.bind(this,function(a){b(200<=a.getStatus()&&299>=a.getStatus()?a.getXml():null)}));else return mxUtils.load(a).getXml()};mxStencilRegistry.parseStencilSets=function(a){for(var b=0;b<a.length;b++)mxStencilRegistry.parseStencilSet(mxUtils.parseXml(a[b]).documentElement)}; -mxStencilRegistry.parseStencilSet=function(a,b,f){if("stencils"==a.nodeName)for(var d=a.firstChild;null!=d;)"shapes"==d.nodeName&&mxStencilRegistry.parseStencilSet(d,b,f),d=d.nextSibling;else{f=null!=f?f:!0;var d=a.firstChild,k="";a=a.getAttribute("name");for(null!=a&&(k=a+".");null!=d;){if(d.nodeType==mxConstants.NODETYPE_ELEMENT&&(a=d.getAttribute("name"),null!=a)){var k=k.toLowerCase(),n=a.replace(/ /g,"_");f&&mxStencilRegistry.addStencil(k+n.toLowerCase(),new mxStencil(d));if(null!=b){var p=d.getAttribute("w"), -q=d.getAttribute("h"),p=null==p?80:parseInt(p,10),q=null==q?80:parseInt(q,10);b(k,n,a,p,q)}}d=d.nextSibling}}}; +d&&this.graph.model.isEdge(d.cell)&&null!=d.style&&1!=d.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(d);return d};var e=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(a,b){return e.apply(this,arguments)||null!=a.routedPoints&&null!=b.routedPoints&&!mxUtils.equalPoints(b.routedPoints,a.routedPoints)};var c=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=function(a){c.apply(this,arguments);this.graph.model.isEdge(a.cell)&& +1!=a.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(a)};mxGraphView.prototype.updateLineJumps=function(a){var b=a.absolutePoints;if(Graph.lineJumpsEnabled){var d=null!=a.routedPoints,c=null;if(null!=b&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var e=function(d,b,f){var e=new mxPoint(b,f);e.type=d;c.push(e);e=null!=a.routedPoints?a.routedPoints[c.length-1]:null;return null==e||e.type!=d||e.x!=b||e.y!=f},n=.5*this.scale,d=!1,c=[],g=0;g<b.length-1;g++){for(var p= +b[g+1],k=b[g],x=[],t=b[g+2];g<b.length-2&&mxUtils.ptSegDistSq(k.x,k.y,t.x,t.y,p.x,p.y)<1*this.scale*this.scale;)p=t,g++,t=b[g+2];for(var d=e(0,k.x,k.y)||d,y=0;y<this.validEdges.length;y++){var u=this.validEdges[y],A=u.absolutePoints;if(null!=A&&mxUtils.intersects(a,u)&&"1"!=u.style.noJump)for(u=0;u<A.length-1;u++){for(var D=A[u+1],r=A[u],t=A[u+2];u<A.length-2&&mxUtils.ptSegDistSq(r.x,r.y,t.x,t.y,D.x,D.y)<1*this.scale*this.scale;)D=t,u++,t=A[u+2];t=mxUtils.intersection(k.x,k.y,p.x,p.y,r.x,r.y,D.x, +D.y);if(null!=t&&(Math.abs(t.x-r.x)>n||Math.abs(t.y-r.y)>n)&&(Math.abs(t.x-D.x)>n||Math.abs(t.y-D.y)>n)){D=t.x-k.x;r=t.y-k.y;t={distSq:D*D+r*r,x:t.x,y:t.y};for(D=0;D<x.length;D++)if(x[D].distSq>t.distSq){x.splice(D,0,t);t=null;break}null==t||0!=x.length&&x[x.length-1].x===t.x&&x[x.length-1].y===t.y||x.push(t)}}}for(u=0;u<x.length;u++)d=e(1,x[u].x,x[u].y)||d}t=b[b.length-1];d=e(0,t.x,t.y)||d}a.routedPoints=c;return d}return!1};var k=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(a, +b,d){this.routedPoints=null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)k.apply(this,arguments);else{var c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,e=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,n=mxUtils.getValue(this.style,"jumpStyle","none"),g,p=!0,B=null,x=null;g=[];var t=null;a.begin();for(var y= +0;y<this.state.routedPoints.length;y++){var u=this.state.routedPoints[y],A=new mxPoint(u.x/this.scale,u.y/this.scale);0==y?A=b[0]:y==this.state.routedPoints.length-1&&(A=b[b.length-1]);var D=!1;if(null!=B&&1==u.type){var r=this.state.routedPoints[y+1],u=r.x/this.scale-A.x,r=r.y/this.scale-A.y,u=u*u+r*r;null==t&&(t=new mxPoint(A.x-B.x,A.y-B.y),x=Math.sqrt(t.x*t.x+t.y*t.y),t.x=t.x*e/x,t.y=t.y*e/x);u>e*e&&0<x&&(u=B.x-A.x,r=B.y-A.y,u=u*u+r*r,u>e*e&&(D=new mxPoint(A.x-t.x,A.y-t.y),u=new mxPoint(A.x+t.x, +A.y+t.y),g.push(D),this.addPoints(a,g,d,c,!1,null,p),g=0>Math.round(t.x)||0==Math.round(t.x)&&0>=Math.round(t.y)?1:-1,p=!1,"sharp"==n?(a.lineTo(D.x-t.y*g,D.y+t.x*g),a.lineTo(u.x-t.y*g,u.y+t.x*g),a.lineTo(u.x,u.y)):"arc"==n?(g*=1.3,a.curveTo(D.x-t.y*g,D.y+t.x*g,u.x-t.y*g,u.y+t.x*g,u.x,u.y)):(a.moveTo(u.x,u.y),p=!0),g=[u],D=!0))}else t=null;D||(g.push(A),B=A)}this.addPoints(a,g,d,c,!1,null,p);a.stroke()}};var m=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint= +function(a,b,d,c){if(null==b||null==a||"1"!=b.style.snapToPoint&&"1"!=a.style.snapToPoint)m.apply(this,arguments);else{b=this.getTerminalPort(a,b,c);var f=this.getNextPoint(a,d,c),e=this.graph.isOrthogonal(a),g=mxUtils.toRadians(Number(b.style[mxConstants.STYLE_ROTATION]||"0")),p=new mxPoint(b.getCenterX(),b.getCenterY());if(0!=g)var k=Math.cos(-g),r=Math.sin(-g),f=mxUtils.getRotatedPoint(f,k,r,p);k=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||0);k+=parseFloat(a.style[c?mxConstants.STYLE_SOURCE_PERIMETER_SPACING: +mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);f=this.getPerimeterPoint(b,f,0==g&&e,k);0!=g&&(k=Math.cos(g),r=Math.sin(g),f=mxUtils.getRotatedPoint(f,k,r,p));a.setAbsoluteTerminalPoint(this.snapToAnchorPoint(a,b,d,c,f),c)}};mxGraphView.prototype.snapToAnchorPoint=function(a,b,d,c,e){if(null!=b&&null!=a){a=this.graph.getAllConnectionConstraints(b);c=d=null;if(null!=a)for(var f=0;f<a.length;f++){var g=this.graph.getConnectionPoint(b,a[f]);if(null!=g){var l=(g.x-e.x)*(g.x-e.x)+(g.y-e.y)*(g.y-e.y);if(null== +c||l<c)d=g,c=l}}null!=d&&(e=d)}return e};var q=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(a,b,d){var c=q.apply(this,arguments);"1"==a.getAttribute("placeholders")&&null!=d.state&&(c=d.state.view.graph.replacePlaceholders(d.state.cell,c));return c};var r=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(a){if(null!=a.style&&"undefined"!==typeof pako){var b=mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null);if(null!= +b&&"stencil("==b.substring(0,8))try{var d=b.substring(8,b.length-1),c=mxUtils.parseXml(a.view.graph.decompress(d));return new mxShape(new mxStencil(c.documentElement))}catch(l){null!=window.console&&console.log("Error in shape: "+l)}}return r.apply(this,arguments)}})();mxStencilRegistry.libraries={};mxStencilRegistry.dynamicLoading=!0;mxStencilRegistry.allowEval=!0;mxStencilRegistry.packages=[]; +mxStencilRegistry.getStencil=function(a){var b=mxStencilRegistry.stencils[a];if(null==b&&null==mxCellRenderer.defaultShapes[a]&&mxStencilRegistry.dynamicLoading){var e=mxStencilRegistry.getBasenameForStencil(a);if(null!=e){b=mxStencilRegistry.libraries[e];if(null!=b){if(null==mxStencilRegistry.packages[e]){for(var c=0;c<b.length;c++){var k=b[c];if(".xml"==k.toLowerCase().substring(k.length-4,k.length))mxStencilRegistry.loadStencilSet(k,null);else if(".js"==k.toLowerCase().substring(k.length-3,k.length))try{if(mxStencilRegistry.allowEval){var m= +mxUtils.load(k);null!=m&&200<=m.getStatus()&&299>=m.getStatus()&&eval.call(window,m.getText())}}catch(q){null!=window.console&&console.log("error in getStencil:",k,q)}}mxStencilRegistry.packages[e]=1}}else e=e.replace("_-_","_"),mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+e+".xml",null);b=mxStencilRegistry.stencils[a]}}return b}; +mxStencilRegistry.getBasenameForStencil=function(a){var b=null;if(null!=a&&(a=a.split("."),0<a.length&&"mxgraph"==a[0]))for(var b=a[1],e=2;e<a.length-1;e++)b+="/"+a[e];return b}; +mxStencilRegistry.loadStencilSet=function(a,b,e,c){var k=mxStencilRegistry.packages[a];if(null!=e&&e||null==k){var m=!1;if(null==k)try{if(c){mxStencilRegistry.loadStencil(a,mxUtils.bind(this,function(c){null!=c&&null!=c.documentElement&&(mxStencilRegistry.packages[a]=c,m=!0,mxStencilRegistry.parseStencilSet(c.documentElement,b,m))}));return}k=mxStencilRegistry.loadStencil(a);mxStencilRegistry.packages[a]=k;m=!0}catch(q){null!=window.console&&console.log("error in loadStencilSet:",a,q)}null!=k&&null!= +k.documentElement&&mxStencilRegistry.parseStencilSet(k.documentElement,b,m)}};mxStencilRegistry.loadStencil=function(a,b){if(null!=b)mxUtils.get(a,mxUtils.bind(this,function(a){b(200<=a.getStatus()&&299>=a.getStatus()?a.getXml():null)}));else return mxUtils.load(a).getXml()};mxStencilRegistry.parseStencilSets=function(a){for(var b=0;b<a.length;b++)mxStencilRegistry.parseStencilSet(mxUtils.parseXml(a[b]).documentElement)}; +mxStencilRegistry.parseStencilSet=function(a,b,e){if("stencils"==a.nodeName)for(var c=a.firstChild;null!=c;)"shapes"==c.nodeName&&mxStencilRegistry.parseStencilSet(c,b,e),c=c.nextSibling;else{e=null!=e?e:!0;var c=a.firstChild,k="";a=a.getAttribute("name");for(null!=a&&(k=a+".");null!=c;){if(c.nodeType==mxConstants.NODETYPE_ELEMENT&&(a=c.getAttribute("name"),null!=a)){var k=k.toLowerCase(),m=a.replace(/ /g,"_");e&&mxStencilRegistry.addStencil(k+m.toLowerCase(),new mxStencil(c));if(null!=b){var q=c.getAttribute("w"), +r=c.getAttribute("h"),q=null==q?80:parseInt(q,10),r=null==r?80:parseInt(r,10);b(k,m,a,q,r)}}c=c.nextSibling}}}; "undefined"!=typeof mxVertexHandler&&function(){function a(){var a=document.createElement("div");a.className="geHint";a.style.whiteSpace="nowrap";a.style.position="absolute";return a}mxConstants.HANDLE_FILLCOLOR="#29b6f2";mxConstants.HANDLE_STROKECOLOR="#0088cf";mxConstants.VERTEX_SELECTION_COLOR="#00a8ff";mxConstants.OUTLINE_COLOR="#00a8ff";mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff";mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff";mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff";mxConstants.EDGE_SELECTION_COLOR= "#00a8ff";mxConstants.DEFAULT_VALID_COLOR="#00a8ff";mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff";mxConstants.GUIDE_COLOR="#0088cf";mxConstants.HIGHLIGHT_OPACITY=30;mxConstants.HIGHLIGHT_SIZE=5;mxEdgeHandler.prototype.snapToTerminals=!0;mxGraphHandler.prototype.guidesEnabled=!0;mxRubberband.prototype.fadeOut=!0;mxGuide.prototype.isEnabledForEvent=function(a){return!mxEvent.isAltDown(a)};var b=mxConnectionHandler.prototype.isCreateTarget;mxConnectionHandler.prototype.isCreateTarget=function(a){return mxEvent.isControlDown(a)|| b.apply(this,arguments)};mxConstraintHandler.prototype.createHighlightShape=function(){var a=new mxEllipse(null,this.highlightColor,this.highlightColor,0);a.opacity=mxConstants.HIGHLIGHT_OPACITY;return a};mxConnectionHandler.prototype.livePreview=!0;mxConnectionHandler.prototype.cursor="crosshair";mxConnectionHandler.prototype.createEdgeState=function(a){a=this.graph.createCurrentEdgeStyle();a=this.graph.createEdge(null,null,null,null,null,a);a=new mxCellState(this.graph.view,a,this.graph.getCellStyle(a)); -for(var c in this.graph.currentEdgeStyle)a.style[c]=this.graph.currentEdgeStyle[c];return a};var f=mxConnectionHandler.prototype.createShape;mxConnectionHandler.prototype.createShape=function(){var a=f.apply(this,arguments);a.isDashed="1"==this.graph.currentEdgeStyle[mxConstants.STYLE_DASHED];return a};mxConnectionHandler.prototype.updatePreview=function(a){};var d=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var a=d.apply(this,arguments),c=a.getCell; -a.getCell=mxUtils.bind(this,function(a){var b=c.apply(this,arguments);this.error=null;return b});return a};mxConnectionHandler.prototype.isCellEnabled=function(a){return!this.graph.isCellLocked(a)};Graph.prototype.defaultVertexStyle={};Graph.prototype.defaultEdgeStyle={edgeStyle:"orthogonalEdgeStyle",rounded:"0",jettySize:"auto",orthogonalLoop:"1"};Graph.prototype.createCurrentEdgeStyle=function(){var a="edgeStyle="+(this.currentEdgeStyle.edgeStyle||"none")+";";null!=this.currentEdgeStyle.shape&& +for(var d in this.graph.currentEdgeStyle)a.style[d]=this.graph.currentEdgeStyle[d];return a};var e=mxConnectionHandler.prototype.createShape;mxConnectionHandler.prototype.createShape=function(){var a=e.apply(this,arguments);a.isDashed="1"==this.graph.currentEdgeStyle[mxConstants.STYLE_DASHED];return a};mxConnectionHandler.prototype.updatePreview=function(a){};var c=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var a=c.apply(this,arguments),d=a.getCell; +a.getCell=mxUtils.bind(this,function(a){var b=d.apply(this,arguments);this.error=null;return b});return a};mxConnectionHandler.prototype.isCellEnabled=function(a){return!this.graph.isCellLocked(a)};Graph.prototype.defaultVertexStyle={};Graph.prototype.defaultEdgeStyle={edgeStyle:"orthogonalEdgeStyle",rounded:"0",jettySize:"auto",orthogonalLoop:"1"};Graph.prototype.createCurrentEdgeStyle=function(){var a="edgeStyle="+(this.currentEdgeStyle.edgeStyle||"none")+";";null!=this.currentEdgeStyle.shape&& (a+="shape="+this.currentEdgeStyle.shape+";");null!=this.currentEdgeStyle.curved&&(a+="curved="+this.currentEdgeStyle.curved+";");null!=this.currentEdgeStyle.rounded&&(a+="rounded="+this.currentEdgeStyle.rounded+";");null!=this.currentEdgeStyle.comic&&(a+="comic="+this.currentEdgeStyle.comic+";");null!=this.currentEdgeStyle.jumpStyle&&(a+="jumpStyle="+this.currentEdgeStyle.jumpStyle+";");null!=this.currentEdgeStyle.jumpSize&&(a+="jumpSize="+this.currentEdgeStyle.jumpSize+";");"elbowEdgeStyle"==this.currentEdgeStyle.edgeStyle&& null!=this.currentEdgeStyle.elbow&&(a+="elbow="+this.currentEdgeStyle.elbow+";");return a=null!=this.currentEdgeStyle.html?a+("html="+this.currentEdgeStyle.html+";"):a+"html=1;"};Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var a=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement():null;null!=a&&(new mxCodec(a.ownerDocument)).decode(a,this.getStylesheet())}; -Graph.prototype.importGraphModel=function(a,c,b,d){c=null!=c?c:0;b=null!=b?b:0;var g=new mxCodec(a.ownerDocument),h=new mxGraphModel;g.decode(a,h);a=[];g=h.getChildren(this.cloneCell(h.root,this.isCloneInvalidEdges()));if(null!=g){g=g.slice();this.model.beginUpdate();try{if(1!=g.length||this.isCellLocked(this.getDefaultParent()))for(h=0;h<g.length;h++)a=a.concat(this.model.getChildren(this.moveCells([g[h]],c,b,!1,this.model.getRoot())[0]));else a=this.moveCells(h.getChildren(g[0]),c,b,!1,this.getDefaultParent()); -if(d){this.isGridEnabled()&&(c=this.snap(c),b=this.snap(b));var f=this.getBoundingBoxFromGeometry(a,!0);null!=f&&this.moveCells(a,c-f.x,b-f.y)}}finally{this.model.endUpdate()}}return a};Graph.prototype.getAllConnectionConstraints=function(a,c){if(null!=a){var b=null;if(null!=a.shape){var d=a.shape.direction,g=a.shape.bounds,h=a.shape.scale,b=g.width/h,g=g.height/h;if(d==mxConstants.DIRECTION_NORTH||d==mxConstants.DIRECTION_SOUTH)var f=b,b=g,g=f;b=a.shape.getConstraints(a.style,b,g)}if(null!=b)return b; -b=mxUtils.getValue(a.style,"points",null);if(null!=b){d=[];try{for(var l=JSON.parse(b),b=0;b<l.length;b++)f=l[b],d.push(new mxConnectionConstraint(new mxPoint(f[0],f[1]),2<f.length?"0"!=f[2]:!0,null,3<f.length?f[3]:0,4<f.length?f[4]:0))}catch(L){}return d}if(null!=a.shape)if(null!=a.shape.stencil){if(null!=a.shape.stencil)return a.shape.stencil.constraints}else if(null!=a.shape.constraints)return a.shape.constraints}return null};Graph.prototype.flipEdge=function(a){if(null!=a){var c=this.view.getState(a), -c=null!=c?c.style:this.getCellStyle(a);null!=c&&(c=mxUtils.getValue(c,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL,this.setCellStyles(mxConstants.STYLE_ELBOW,c,[a]))}};Graph.prototype.isValidRoot=function(a){for(var c=this.model.getChildCount(a),b=0,d=0;d<c;d++){var g=this.model.getChildAt(a,d);this.model.isVertex(g)&&(g=this.getCellGeometry(g),null==g||g.relative||b++)}return 0<b||this.isContainer(a)}; -Graph.prototype.isValidDropTarget=function(a){var c=this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);return"1"!=mxUtils.getValue(c,"part","0")&&(this.isContainer(a)||mxGraph.prototype.isValidDropTarget.apply(this,arguments)&&"0"!=mxUtils.getValue(c,"dropTarget","1"))};Graph.prototype.createGroupCell=function(){var a=mxGraph.prototype.createGroupCell.apply(this,arguments);a.setStyle("group");return a};Graph.prototype.isExtendParentsOnAdd=function(a){var c=mxGraph.prototype.isExtendParentsOnAdd.apply(this, -arguments);if(c&&null!=a&&null!=this.layoutManager){var b=this.model.getParent(a);null!=b&&(b=this.layoutManager.getLayout(b),null!=b&&b.constructor==mxStackLayout&&(c=!1))}return c};Graph.prototype.getPreferredSizeForCell=function(a){var c=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=c&&(c.width+=10,c.height+=4,this.gridEnabled&&(c.width=this.snap(c.width),c.height=this.snap(c.height)));return c};Graph.prototype.turnShapes=function(a){var c=this.getModel(),b=[];c.beginUpdate(); -try{for(var d=0;d<a.length;d++){var g=a[d];if(c.isEdge(g)){var h=c.getTerminal(g,!0),f=c.getTerminal(g,!1);c.setTerminal(g,f,!0);c.setTerminal(g,h,!1);var l=c.getGeometry(g);if(null!=l){l=l.clone();null!=l.points&&l.points.reverse();var m=l.getTerminalPoint(!0),t=l.getTerminalPoint(!1);l.setTerminalPoint(m,!1);l.setTerminalPoint(t,!0);c.setGeometry(g,l);var r=this.view.getState(g),u=this.view.getState(h),y=this.view.getState(f);if(null!=r){var J=null!=u?this.getConnectionConstraint(r,u,!0):null,k= -null!=y?this.getConnectionConstraint(r,y,!1):null;this.setConnectionConstraint(g,h,!0,k);this.setConnectionConstraint(g,f,!1,J)}b.push(g)}}else if(c.isVertex(g)&&(l=this.getCellGeometry(g),null!=l)){l=l.clone();l.x+=l.width/2-l.height/2;l.y+=l.height/2-l.width/2;var v=l.width;l.width=l.height;l.height=v;c.setGeometry(g,l);var A=this.view.getState(g);if(null!=A){var q=A.style[mxConstants.STYLE_DIRECTION]||"east";"east"==q?q="south":"south"==q?q="west":"west"==q?q="north":"north"==q&&(q="east");this.setCellStyles(mxConstants.STYLE_DIRECTION, -q,[g])}b.push(g)}}}finally{c.endUpdate()}return b};Graph.prototype.stencilHasPlaceholders=function(a){if(null!=a&&null!=a.fgNode)for(a=a.fgNode.firstChild;null!=a;){if("text"==a.nodeName&&"1"==a.getAttribute("placeholders"))return!0;a=a.nextSibling}return!1};Graph.prototype.processChange=function(a){mxGraph.prototype.processChange.apply(this,arguments);if(a instanceof mxValueChange&&null!=a.cell&&null!=a.cell.value&&"object"==typeof a.cell.value){var c=this.model.getDescendants(a.cell);if(0<c.length)for(var b= -0;b<c.length;b++){var d=this.view.getState(c[b]);null!=d&&null!=d.shape&&null!=d.shape.stencil&&this.stencilHasPlaceholders(d.shape.stencil)?this.removeStateForCell(c[b]):this.isReplacePlaceholders(c[b])&&this.view.invalidate(c[b],!1,!1)}}};Graph.prototype.replaceElement=function(a,c){for(var b=a.ownerDocument.createElement(null!=c?c:"span"),d=Array.prototype.slice.call(a.attributes);attr=d.pop();)b.setAttribute(attr.nodeName,attr.nodeValue);b.innerHTML=a.innerHTML;a.parentNode.replaceChild(b,a)}; -Graph.prototype.updateLabelElements=function(a,c,b){a=null!=a?a:this.getSelectionCells();for(var d=document.createElement("div"),g=0;g<a.length;g++)if(this.isHtmlLabel(a[g])){var h=this.convertValueToString(a[g]);if(null!=h&&0<h.length){d.innerHTML=h;for(var f=d.getElementsByTagName(null!=b?b:"*"),l=0;l<f.length;l++)c(f[l]);d.innerHTML!=h&&this.cellLabelChanged(a[g],d.innerHTML)}}};Graph.prototype.cellLabelChanged=function(a,c,b){c=this.zapGremlins(c);this.model.beginUpdate();try{if(null!=a.value&& -"object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder"))for(var d=a.getAttribute("placeholder"),g=a;null!=g;){if(g==this.model.getRoot()||null!=g.value&&"object"==typeof g.value&&g.hasAttribute(d)){this.setAttributeForCell(g,d,c);break}g=this.model.getParent(g)}var h=a.value.cloneNode(!0);h.setAttribute("label",c);c=h}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(a){if(null!=a){for(var c= -new mxDictionary,b=0;b<a.length;b++)c.put(a[b],!0);for(var d=[],b=0;b<a.length;b++){var g=this.model.getParent(a[b]);null==g||c.get(g)||(c.put(g,!0),d.push(g))}for(b=0;b<d.length;b++)if(g=this.view.getState(d[b]),null!=g&&(this.model.isEdge(g.cell)||this.model.isVertex(g.cell))&&this.isCellDeletable(g.cell)){var h=mxUtils.getValue(g.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),f=mxUtils.getValue(g.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);if(h==mxConstants.NONE&&f==mxConstants.NONE){h= -!0;for(f=0;f<this.model.getChildCount(g.cell)&&h;f++)c.get(this.model.getChildAt(g.cell,f))||(h=!1);h&&a.push(g.cell)}}}mxGraph.prototype.cellsRemoved.apply(this,arguments)};Graph.prototype.removeCellsAfterUngroup=function(a){for(var c=[],b=0;b<a.length;b++)if(this.isCellDeletable(a[b])){var d=this.view.getState(a[b]);if(null!=d){var g=mxUtils.getValue(d.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),d=mxUtils.getValue(d.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);g==mxConstants.NONE&& -d==mxConstants.NONE&&c.push(a[b])}}a=c;mxGraph.prototype.removeCellsAfterUngroup.apply(this,arguments)};Graph.prototype.setLinkForCell=function(a,c){this.setAttributeForCell(a,"link",c)};Graph.prototype.setTooltipForCell=function(a,c){this.setAttributeForCell(a,"tooltip",c)};Graph.prototype.setAttributeForCell=function(a,c,b){var d;null!=a.value&&"object"==typeof a.value?d=a.value.cloneNode(!0):(d=mxUtils.createXmlDocument().createElement("UserObject"),d.setAttribute("label",a.value||""));null!=b&& -0<b.length?d.setAttribute(c,b):d.removeAttribute(c);this.model.setValue(a,d)};Graph.prototype.getDropTarget=function(a,c,b,d){this.getModel();if(mxEvent.isAltDown(c))return null;for(var g=0;g<a.length;g++)if(this.model.isEdge(this.model.getParent(a[g])))return null;return mxGraph.prototype.getDropTarget.apply(this,arguments)};Graph.prototype.click=function(a){mxGraph.prototype.click.call(this,a);this.firstClickState=a.getState();this.firstClickSource=a.getSource()};Graph.prototype.dblClick=function(a, -c){if(this.isEnabled()){var b=mxUtils.convertPoint(this.container,mxEvent.getClientX(a),mxEvent.getClientY(a));if(null!=a&&!this.model.isVertex(c)){var d=this.model.isEdge(c)?this.view.getState(c):null,g=mxEvent.getSource(a);this.firstClickState!=d||this.firstClickSource!=g||null!=d&&null!=d.text&&null!=d.text.node&&(mxUtils.contains(d.text.boundingBox,b.x,b.y)||mxUtils.isAncestorNode(d.text.node,mxEvent.getSource(a)))||(null!=d||this.isCellLocked(this.getDefaultParent()))&&(null==d||this.isCellLocked(d.cell))|| -!(null!=d||mxClient.IS_VML&&g==this.view.getCanvas()||mxClient.IS_SVG&&g==this.view.getCanvas().ownerSVGElement)||(c=this.addText(b.x,b.y,d))}mxGraph.prototype.dblClick.call(this,a,c)}};Graph.prototype.getInsertPoint=function(){var a=this.getGridSize(),c=this.container.scrollLeft/this.view.scale-this.view.translate.x,b=this.container.scrollTop/this.view.scale-this.view.translate.y;if(this.pageVisible)var d=this.getPageLayout(),g=this.getPageSize(),c=Math.max(c,d.x*g.width),b=Math.max(b,d.y*g.height); -return new mxPoint(this.snap(c+a),this.snap(b+a))};Graph.prototype.getFreeInsertPoint=function(){var a=this.view,c=this.getGraphBounds(),b=this.getInsertPoint(),d=this.snap(Math.round(Math.max(b.x,c.x/a.scale-a.translate.x+(0==c.width?2*this.gridSize:0)))),a=this.snap(Math.round(Math.max(b.y,(c.y+c.height)/a.scale-a.translate.y+2*this.gridSize)));return new mxPoint(d,a)};Graph.prototype.isMouseInsertPoint=function(){return!1};Graph.prototype.addText=function(a,c,b){var d=new mxCell;d.value="Text"; -d.style="text;html=1;resizable=0;points=[];";d.geometry=new mxGeometry(0,0,0,0);d.vertex=!0;if(null!=b){d.style+="align=center;verticalAlign=middle;labelBackgroundColor=#ffffff;";d.geometry.relative=!0;d.connectable=!1;var g=this.view.getRelativePoint(b,a,c);d.geometry.x=Math.round(1E4*g.x)/1E4;d.geometry.y=Math.round(g.y);d.geometry.offset=new mxPoint(0,0);var g=this.view.getPoint(b,d.geometry),h=this.view.scale;d.geometry.offset=new mxPoint(Math.round((a-g.x)/h),Math.round((c-g.y)/h))}else d.style+= -"autosize=1;align=left;verticalAlign=top;spacingTop=-4;",g=this.view.translate,d.geometry.width=40,d.geometry.height=20,d.geometry.x=Math.round(a/this.view.scale)-g.x,d.geometry.y=Math.round(c/this.view.scale)-g.y;this.getModel().beginUpdate();try{this.addCells([d],null!=b?b.cell:null),this.fireEvent(new mxEventObject("textInserted","cells",[d])),this.autoSizeCell(d)}finally{this.getModel().endUpdate()}return d};Graph.prototype.getAbsoluteUrl=function(a){null!=a&&this.isRelativeUrl(a)&&(a="#"==a.charAt(0)? -this.baseUrl+a:"/"==a.charAt(0)?this.domainUrl+a:this.domainPathUrl+a);return a};Graph.prototype.addClickHandler=function(a,c,b){var d=mxUtils.bind(this,function(){var a=this.container.getElementsByTagName("a");if(null!=a)for(var b=0;b<a.length;b++){var d=this.getAbsoluteUrl(a[b].getAttribute("href"));null!=d&&(a[b].setAttribute("rel",this.linkRelation),a[b].setAttribute("href",d),null!=c&&mxEvent.addGestureListeners(a[b],null,null,c))}});this.model.addListener(mxEvent.CHANGE,d);d();var g=this.container.style.cursor, -h=this.getTolerance(),f=this,l={currentState:null,currentLink:null,highlight:null!=a&&""!=a&&a!=mxConstants.NONE?new mxCellHighlight(f,a,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(a){var c=a.sourceState;if(null==c||null==f.getLinkForCell(c.cell))a=f.getCellAt(a.getGraphX(),a.getGraphY(),null,null,null,function(a,c,b){return null==f.getLinkForCell(a.cell)}),c=f.view.getState(a);c!=this.currentState&&(null!=this.currentState&&this.clear(),this.currentState=c,null!= -this.currentState&&this.activate(this.currentState))},mouseDown:function(a,c){this.startX=c.getGraphX();this.startY=c.getGraphY();this.scrollLeft=f.container.scrollLeft;this.scrollTop=f.container.scrollTop;null==this.currentLink&&"auto"==f.container.style.overflow&&(f.container.style.cursor="move");this.updateCurrentState(c)},mouseMove:function(a,c){if(f.isMouseDown){if(null!=this.currentLink){var b=Math.abs(this.startX-c.getGraphX()),d=Math.abs(this.startY-c.getGraphY());(b>h||d>h)&&this.clear()}}else{for(b= -c.getSource();null!=b&&"a"!=b.nodeName.toLowerCase();)b=b.parentNode;null!=b?this.clear():(null!=f.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&&f.tooltipHandler.reset(c,!0,this.currentState),(null==this.currentState||c.getState()!=this.currentState&&null!=c.sourceState||!f.intersects(this.currentState,c.getGraphX(),c.getGraphY()))&&this.updateCurrentState(c))}},mouseUp:function(a,d){for(var g=d.getSource(),l=d.getEvent();null!=g&&"a"!=g.nodeName.toLowerCase();)g=g.parentNode;null== -g&&Math.abs(this.scrollLeft-f.container.scrollLeft)<h&&Math.abs(this.scrollTop-f.container.scrollTop)<h&&(null==d.sourceState||!d.isSource(d.sourceState.control))&&((mxEvent.isLeftMouseButton(l)||mxEvent.isMiddleMouseButton(l))&&!mxEvent.isPopupTrigger(l)||mxEvent.isTouchEvent(l))&&(null!=this.currentLink?(g=f.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&g||null==c||c(l,this.currentLink),mxEvent.isConsumed(l)||(l=mxEvent.isMiddleMouseButton(l)?"_blank":g?f.linkTarget:"_top", -f.openLink(this.currentLink,l),d.consume())):null!=b&&!d.isConsumed()&&Math.abs(this.scrollLeft-f.container.scrollLeft)<h&&Math.abs(this.scrollTop-f.container.scrollTop)<h&&Math.abs(this.startX-d.getGraphX())<h&&Math.abs(this.startY-d.getGraphY())<h&&b(d.getEvent()));this.clear()},activate:function(a){this.currentLink=f.getAbsoluteUrl(f.getLinkForCell(a.cell));null!=this.currentLink&&(f.container.style.cursor="pointer",null!=this.highlight&&this.highlight.highlight(a))},clear:function(){null!=f.container&& -(f.container.style.cursor=g);this.currentLink=this.currentState=null;null!=this.highlight&&this.highlight.hide();null!=f.tooltipHandler&&f.tooltipHandler.hide()}};f.click=function(a){};f.addMouseListener(l);mxEvent.addListener(document,"mouseleave",function(a){l.clear()})};Graph.prototype.duplicateCells=function(a,c){a=null!=a?a:this.getSelectionCells();c=null!=c?c:!0;a=this.model.getTopmostCells(a);var b=this.getModel(),d=this.gridSize,g=[];b.beginUpdate();try{for(var f=this.cloneCells(a,!1,null, -!0),h=0;h<a.length;h++){var l=b.getParent(a[h]),m=this.moveCells([f[h]],d,d,!1)[0];g.push(m);if(c)b.add(l,f[h]);else{var t=l.getIndex(a[h]);b.add(l,f[h],t+1)}}}finally{b.endUpdate()}return g};Graph.prototype.insertImage=function(a,c,b){if(null!=a){for(var d=this.cellEditor.textarea.getElementsByTagName("img"),g=[],f=0;f<d.length;f++)g.push(d[f]);document.execCommand("insertimage",!1,a);a=this.cellEditor.textarea.getElementsByTagName("img");if(a.length==g.length+1)for(f=a.length-1;0<=f;f--)if(0==f|| -a[f]!=g[f-1]){a[f].setAttribute("width",c);a[f].setAttribute("height",b);break}}};Graph.prototype.insertLink=function(a){if(0==a.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var c=this.cellEditor.textarea.getElementsByTagName("a"),b=[],d=0;d<c.length;d++)b.push(c[d]);document.execCommand("createlink",!1,mxUtils.trim(a));c=this.cellEditor.textarea.getElementsByTagName("a");if(c.length==b.length+1)for(d=c.length-1;0<=d;d--)if(c[d]!=b[d-1]){for(c=c[d].getElementsByTagName("a");0< -c.length;){for(b=c[0].parentNode;null!=c[0].firstChild;)b.insertBefore(c[0].firstChild,c[0]);b.removeChild(c[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(a))};Graph.prototype.isCellResizable=function(a){var c=mxGraph.prototype.isCellResizable.apply(this,arguments),b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return c||"0"!=mxUtils.getValue(b,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==b[mxConstants.STYLE_WHITE_SPACE]};Graph.prototype.distributeCells=function(a, -c){null==c&&(c=this.getSelectionCells());if(null!=c&&1<c.length){for(var b=[],d=null,g=null,f=0;f<c.length;f++)if(this.getModel().isVertex(c[f])){var h=this.view.getState(c[f]);if(null!=h){var l=a?h.getCenterX():h.getCenterY(),d=null!=d?Math.max(d,l):l,g=null!=g?Math.min(g,l):l;b.push(h)}}if(2<b.length){b.sort(function(c,b){return a?c.x-b.x:c.y-b.y});h=this.view.translate;l=this.view.scale;g=g/l-(a?h.x:h.y);d=d/l-(a?h.x:h.y);this.getModel().beginUpdate();try{for(var m=(d-g)/(b.length-1),d=g,f=1;f< -b.length-1;f++){var t=this.view.getState(this.model.getParent(b[f].cell)),r=this.getCellGeometry(b[f].cell),d=d+m;null!=r&&null!=t&&(r=r.clone(),a?r.x=Math.round(d-r.width/2)-t.origin.x:r.y=Math.round(d-r.height/2)-t.origin.y,this.getModel().setGeometry(b[f].cell,r))}}finally{this.getModel().endUpdate()}}}return c};Graph.prototype.isCloneEvent=function(a){return mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxEvent.isControlDown(a)};Graph.prototype.encodeCells=function(a){for(var c=this.cloneCells(a),b= -new mxDictionary,d=0;d<a.length;d++)b.put(a[d],!0);for(d=0;d<c.length;d++){var g=this.view.getState(a[d]);if(null!=g){var f=this.getCellGeometry(c[d]);null==f||!f.relative||this.model.isEdge(a[d])||b.get(this.model.getParent(a[d]))||(f.relative=!1,f.x=g.x/g.view.scale-g.view.translate.x,f.y=g.y/g.view.scale-g.view.translate.y)}}b=new mxCodec;g=new mxGraphModel;f=g.getChildAt(g.getRoot(),0);for(d=0;d<a.length;d++)g.add(f,c[d]);return b.encode(g)};Graph.prototype.createSvgImageExport=function(){var a= -new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,c){return this.getLinkForCell(a.cell)});return a};Graph.prototype.getSvg=function(a,c,b,d,g,f,h,l,m,t){var r=this.useCssTransforms;r&&(this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange());try{c=null!=c?c:1;b=null!=b?b:0;g=null!=g?g:!0;f=null!=f?f:!0;h=null!=h?h:!0;var u=f||d?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells());if(null==u)throw Error(mxResources.get("drawingEmpty"));var y=this.view.scale, -k=mxUtils.createXmlDocument(),v=null!=k.createElementNS?k.createElementNS(mxConstants.NS_SVG,"svg"):k.createElement("svg");null!=a&&(null!=v.style?v.style.backgroundColor=a:v.setAttribute("style","background-color:"+a));null==k.createElementNS?(v.setAttribute("xmlns",mxConstants.NS_SVG),v.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):v.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=c/y;var q=Math.max(1,Math.ceil(u.width*a)+2*b)+(t?5:0),A=Math.max(1,Math.ceil(u.height* -a)+2*b)+(t?5:0);v.setAttribute("version","1.1");v.setAttribute("width",q+"px");v.setAttribute("height",A+"px");v.setAttribute("viewBox",(g?"-0.5 -0.5":"0 0")+" "+q+" "+A);k.appendChild(v);var x=this.createSvgCanvas(v);x.foOffset=g?-.5:0;x.textOffset=g?-.5:0;x.imageOffset=g?-.5:0;x.translate(Math.floor((b/c-u.x)/y),Math.floor((b/c-u.y)/y));var n=document.createElement("textarea"),z=x.createAlternateContent;x.createAlternateContent=function(a,c,b,d,g,f,h,l,m,t,r,u,y){var v=this.state;if(null!=this.foAltText&& -(0==d||0!=v.fontSize&&f.length<5*d/v.fontSize)){var k=this.createElement("text");k.setAttribute("x",Math.round(d/2));k.setAttribute("y",Math.round((g+v.fontSize)/2));k.setAttribute("fill",v.fontColor||"black");k.setAttribute("text-anchor","middle");k.setAttribute("font-size",Math.round(v.fontSize)+"px");k.setAttribute("font-family",v.fontFamily);(v.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&k.setAttribute("font-weight","bold");(v.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&& -k.setAttribute("font-style","italic");(v.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&k.setAttribute("text-decoration","underline");try{return n.innerHTML=f,k.textContent=n.value,k}catch(ua){return z.apply(this,arguments)}}else return z.apply(this,arguments)};var J=this.backgroundImage;if(null!=J){c=y/c;var p=this.view.translate,F=new mxRectangle(p.x*c,p.y*c,J.width*c,J.height*c);mxUtils.intersects(u,F)&&x.image(p.x,p.y,J.width,J.height,J.src,!0)}x.scale(a);x.textEnabled=h;l= -null!=l?l:this.createSvgImageExport();var D=l.drawCellState;l.drawCellState=function(a,c){for(var b=a.view.graph,d=b.isCellSelected(a.cell),g=b.model.getParent(a.cell);!f&&!d&&null!=g;)d=b.isCellSelected(g),g=b.model.getParent(g);(f||d)&&D.apply(this,arguments)};l.drawState(this.getView().getState(this.model.root),x);this.updateSvgLinks(v,m,!0);return v}finally{r&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.updateSvgLinks=function(a,c,b){a=a.getElementsByTagName("a"); -for(var d=0;d<a.length;d++){var g=a[d].getAttribute("href");null==g&&(g=a[d].getAttribute("xlink:href"));null!=g&&(null!=c&&/^https?:\/\//.test(g)?a[d].setAttribute("target",c):b&&this.isCustomLink(g)&&a[d].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(a){return new mxSvgCanvas2D(a)};Graph.prototype.getSelectedElement=function(){var a=null;if(window.getSelection){var c=window.getSelection();c.getRangeAt&&c.rangeCount&&(a=c.getRangeAt(0).commonAncestorContainer)}else document.selection&& -(a=document.selection.createRange().parentElement());return a};Graph.prototype.getParentByName=function(a,c,b){for(;null!=a&&a.nodeName!=c;){if(a==b)return null;a=a.parentNode}return a};Graph.prototype.selectNode=function(a){var c=null;if(window.getSelection){if(c=window.getSelection(),c.getRangeAt&&c.rangeCount){var b=document.createRange();b.selectNode(a);c.removeAllRanges();c.addRange(b)}}else(c=document.selection)&&"Control"!=c.type&&(a=c.createRange(),a.collapse(!0),b=c.createRange(),b.setEndPoint("StartToStart", -a),b.select())};Graph.prototype.insertRow=function(a,c){for(var b=a.tBodies[0],d=b.rows[0].cells,g=0,f=0;f<d.length;f++)var h=d[f].getAttribute("colspan"),g=g+(null!=h?parseInt(h):1);b=b.insertRow(c);for(f=0;f<g;f++)mxUtils.br(b.insertCell(-1));return b.cells[0]};Graph.prototype.deleteRow=function(a,c){a.tBodies[0].deleteRow(c)};Graph.prototype.insertColumn=function(a,c){var b=a.tHead;if(null!=b)for(var d=0;d<b.rows.length;d++){var g=document.createElement("th");b.rows[d].appendChild(g);mxUtils.br(g)}b= -a.tBodies[0];for(d=0;d<b.rows.length;d++)g=b.rows[d].insertCell(c),mxUtils.br(g);return b.rows[0].cells[0<=c?c:b.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(a,c){if(0<=c)for(var b=a.tBodies[0].rows,d=0;d<b.length;d++)b[d].cells.length>c&&b[d].deleteCell(c)};Graph.prototype.pasteHtmlAtCaret=function(a){var c;if(window.getSelection){if(c=window.getSelection(),c.getRangeAt&&c.rangeCount){c=c.getRangeAt(0);c.deleteContents();var b=document.createElement("div");b.innerHTML=a;a=document.createDocumentFragment(); -for(var d;d=b.firstChild;)lastNode=a.appendChild(d);c.insertNode(a)}}else(c=document.selection)&&"Control"!=c.type&&c.createRange().pasteHTML(a)};Graph.prototype.createLinkForHint=function(a,c){function b(a,c){a.length>c&&(a=a.substring(0,Math.round(c/2))+"..."+a.substring(a.length-Math.round(c/4)));return a}a=null!=a?a:"javascript:void(0);";if(null==c||0==c.length)c=this.isCustomLink(a)?this.getLinkTitle(a):a;var d=document.createElement("a");d.setAttribute("rel",this.linkRelation);d.setAttribute("href", -this.getAbsoluteUrl(a));d.setAttribute("title",b(this.isCustomLink(a)?this.getLinkTitle(a):a,80));null!=this.linkTarget&&d.setAttribute("target",this.linkTarget);mxUtils.write(d,b(c,40));this.isCustomLink(a)&&mxEvent.addListener(d,"click",mxUtils.bind(this,function(c){this.customLinkClicked(a);mxEvent.consume(c)}));return d};Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING, -function(a,c){this.popupMenuHandler.hideMenu()});var a=this.updateMouseEvent;this.updateMouseEvent=function(c){c=a.apply(this,arguments);if(mxEvent.isTouchEvent(c.getEvent())&&null==c.getState()){var b=this.getCellAt(c.graphX,c.graphY);null!=b&&this.isSwimlane(b)&&this.hitsSwimlaneContent(b,c.graphX,c.graphY)||(c.state=this.view.getState(b),null!=c.state&&null!=c.state.shape&&(this.container.style.cursor=c.state.shape.node.style.cursor))}null==c.getState()&&this.isEnabled()&&(this.container.style.cursor= -"default");return c};var c=!1,b=!1,d=!1,g=this.fireMouseEvent;this.fireMouseEvent=function(a,f,h){a==mxEvent.MOUSE_DOWN&&(f=this.updateMouseEvent(f),c=this.isCellSelected(f.getCell()),b=this.isSelectionEmpty(),d=this.popupMenuHandler.isMenuShowing());g.apply(this,arguments)};this.popupMenuHandler.mouseUp=mxUtils.bind(this,function(a,g){this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==g.getState()||!g.isSource(g.getState().control))&&(this.popupMenuHandler.popupTrigger|| -!d&&!mxEvent.isMouseEvent(g.getEvent())&&(b&&null==g.getCell()&&this.isSelectionEmpty()||c&&this.isCellSelected(g.getCell())));mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,arguments)})};mxCellEditor.prototype.isContentEditing=function(){var a=this.graph.view.getState(this.editingCell);return null!=a&&1==a.style.html};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var a=window.getSelection();if(a.getRangeAt&&a.rangeCount){for(var c=[],b=0,d=a.rangeCount;b< -d;++b)c.push(a.getRangeAt(b));return c}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(a){try{if(a)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var c=0,b=a.length;c<b;++c)sel.addRange(a[c])}else document.selection&&a.select&&a.select()}catch(Y){}};var k=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=function(a){null!=a.text&& -(a.text.replaceLinefeeds="0"!=mxUtils.getValue(a.style,"nl2Br","1"));k.apply(this,arguments)};var n=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(a,c){this.isKeepFocusEvent(a)||!mxEvent.isAltDown(a.getEvent())?n.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(a){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=!1;var p=mxCellEditor.prototype.startEditing; -mxCellEditor.prototype.startEditing=function(a,c){p.apply(this,arguments);var b=this.graph.view.getState(a);this.textarea.className=null!=b&&1==b.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(a);var b=this.graph.getModel().getParent(a),d=this.graph.getCellGeometry(a);this.graph.getModel().isEdge(b)&&null!=d&&d.relative||this.graph.getModel().isEdge(a)?mxClient.IS_QUIRKS?this.textarea.style.border= -"gray dotted 1px":this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":"":mxClient.IS_QUIRKS&&(this.textarea.style.outline="none",this.textarea.style.border="")};var q=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(a){function c(a,b){b.originalNode=a;a=a.firstChild;for(var d=b.firstChild;null!=a&&null!=d;)c(a,d),a=a.nextSibling,d=d.nextSibling;return b}function b(a,c){if(null!=a)if(c.originalNode!= -a)d(a);else for(a=a.firstChild,c=c.firstChild;null!=a;){var g=a.nextSibling;null==c?d(a):(b(a,c),c=c.nextSibling);a=g}}function d(a){for(var c=a.firstChild;null!=c;){var b=c.nextSibling;d(c);c=b}1==a.nodeType&&("BR"===a.nodeName||null!=a.firstChild)||3==a.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(a)).length?(3==a.nodeType&&mxUtils.setTextContent(a,mxUtils.getTextContent(a).replace(/\n|\r/g,"")),1==a.nodeType&&(a.removeAttribute("style"),a.removeAttribute("class"),a.removeAttribute("width"), -a.removeAttribute("cellpadding"),a.removeAttribute("cellspacing"),a.removeAttribute("border"))):a.parentNode.removeChild(a)}q.apply(this,arguments);mxClient.IS_QUIRKS||7===document.documentMode||8===document.documentMode||mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(a){var d=c(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){b(this.textarea,d)}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var a=this.graph.view.getState(this.editingCell), -c=null!=a&&"0"!=mxUtils.getValue(a.style,"nl2Br","1"),b=this.saveSelection();if(this.codeViewMode){l=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<l.length&&"\n"==l.charAt(l.length-1)&&(l=l.substring(0,l.length-1));l=this.graph.sanitizeHtml(c?l.replace(/\n/g,"<br/>"):l,!0);this.textarea.className="mxCellEditor geContentEditable";var d=mxUtils.getValue(a.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),c=mxUtils.getValue(a.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY), -g=mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),f=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,h=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,a=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(d*mxConstants.LINE_HEIGHT)+ -"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(d)+"px";this.textarea.style.textDecoration=a?"underline":"";this.textarea.style.fontWeight=f?"bold":"normal";this.textarea.style.fontStyle=h?"italic":"";this.textarea.style.fontFamily=c;this.textarea.style.textAlign=g;this.textarea.style.padding="0px";this.textarea.innerHTML!=l&&(this.textarea.innerHTML=l,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length)); -this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerHTML="");var l=mxUtils.htmlEntities(this.textarea.innerHTML);mxClient.IS_QUIRKS||8==document.documentMode||(l=mxUtils.replaceTrailingNewlines(l,"<div><br></div>"));l=this.graph.sanitizeHtml(c?l.replace(/\n/g,"").replace(/<br\s*.?>/g,"<br>"):l,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var d=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight= -mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(d*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(d)+"px";this.textarea.style.textDecoration="";this.textarea.style.fontWeight="normal";this.textarea.style.fontStyle="";this.textarea.style.fontFamily=mxConstants.DEFAULT_FONTFAMILY;this.textarea.style.textAlign="left";this.textarea.style.padding="2px";this.textarea.innerHTML!=l&&(this.textarea.innerHTML=l);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&& -this.restoreSelection(this.switchSelectionState);this.switchSelectionState=b;this.resize()};var w=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(a,c){if(null!=this.textarea)if(a=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=a){var b=a.view.scale;this.bounds=mxRectangle.fromRectangle(a);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=160*b;this.bounds.height=60*b;var d=null!=a.text?a.text.margin:null;null==d&&(d=mxUtils.getAlignmentAsPoint(mxUtils.getValue(a.style, -mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(a.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=d.x*this.bounds.width;this.bounds.y+=d.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-4)/b)+"px";this.textarea.style.height=Math.round((this.bounds.height-4)/b)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/b)+(this.textarea.offsetHeight- -this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*b);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/b)+(this.textarea.offsetWidth-this.textarea.clientWidth)+"px",this.bounds.width=parseInt(this.textarea.style.width)*b);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxClient.IS_VML?this.textarea.style.zoom=b:mxUtils.setPrefixedStyle(this.textarea.style, -"transform","scale("+b+","+b+")")}else this.textarea.style.height="",this.textarea.style.overflow="",w.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(a,c){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetInitialValue.apply(this,arguments);var b=this.graph.getEditingValue(a.cell,c);"1"==mxUtils.getValue(a.style,"nl2Br","1")&&(b=b.replace(/\n/g,"<br/>"));return b=this.graph.sanitizeHtml(b,!0)}; -mxCellEditorGetCurrentValue=mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(a){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var c=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return c="1"==mxUtils.getValue(a.style,"nl2Br","1")?c.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):c.replace(/\r\n/g,"").replace(/\n/g,"")};var c=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(a){this.codeViewMode&& -this.toggleViewMode();c.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(J){}};var g=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(a,c){this.graph.getModel().beginUpdate();try{if(g.apply(this,arguments),this.graph.isCellDeletable(a.cell)&&0==this.graph.model.getChildCount(a.cell)){var b=mxUtils.getValue(a.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),d=mxUtils.getValue(a.style, -mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);""==c&&b==mxConstants.NONE&&d==mxConstants.NONE&&this.graph.removeCells([a.cell],!1)}}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=function(a){var c=null;if(this.graph.getModel().isEdge(a.cell)||this.graph.getModel().isEdge(this.graph.getModel().getParent(a.cell)))c=mxUtils.getValue(a.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null),c==mxConstants.NONE&&(c=null);return c};mxCellEditor.prototype.getMinimumSize= -function(a){var c=this.graph.getView().scale;return new mxRectangle(0,0,null==a.text?30:a.text.size*c+20,30)};var h=mxGraphHandler.prototype.moveCells;mxGraphHandler.prototype.moveCells=function(a,c,b,d,g,f){mxEvent.isAltDown(f)&&(g=null);h.apply(this,arguments)};mxGraphHandler.prototype.updateHint=function(c){if(null!=this.shape){null==this.hint&&(this.hint=a(),this.graph.container.appendChild(this.hint));var b=this.graph.view.translate,d=this.graph.view.scale;c=this.roundLength((this.bounds.x+this.currentDx)/ -d-b.x);b=this.roundLength((this.bounds.y+this.currentDy)/d-b.y);this.hint.innerHTML=c+", "+b;this.hint.style.left=this.shape.bounds.x+Math.round((this.shape.bounds.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=this.shape.bounds.y+this.shape.bounds.height+12+"px"}};mxGraphHandler.prototype.removeHint=function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint),this.hint=null)};mxVertexHandler.prototype.isRecursiveResize=function(a,c){return!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&& -!mxEvent.isControlDown(c.getEvent())&&!this.graph.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null)};mxVertexHandler.prototype.isCenteredEvent=function(a,c){return!(!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&&!this.graph.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null))&&mxEvent.isControlDown(c.getEvent())||mxEvent.isMetaDown(c.getEvent())}; -var l=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var a=new mxPoint(0,0),c=this.tolerance;this.graph.cellEditor.getEditingCell()==this.state.cell&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(c/=2,a.x=this.sizers[0].bounds.width+c,a.y=this.sizers[0].bounds.height+c):a=l.apply(this,arguments);return a};mxVertexHandler.prototype.updateHint=function(c){this.index!=mxEvent.LABEL_HANDLE&&(null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint)), -this.index==mxEvent.ROTATION_HANDLE?this.hint.innerHTML=this.currentAlpha+"°":(c=this.state.view.scale,this.hint.innerHTML=this.roundLength(this.bounds.width/c)+" x "+this.roundLength(this.bounds.height/c)),c=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||"0"),null==c&&(c=this.bounds),this.hint.style.left=c.x+Math.round((c.width-this.hint.clientWidth)/2)+"px",this.hint.style.top=c.y+c.height+12+"px",null!=this.linkHint&& -(this.linkHint.style.display="none"))};mxVertexHandler.prototype.removeHint=function(){mxGraphHandler.prototype.removeHint.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(c,b){null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));var d=this.graph.view.translate,g=this.graph.view.scale,f=this.roundLength(b.x/g-d.x),d=this.roundLength(b.y/g-d.y);this.hint.innerHTML=f+", "+d;this.hint.style.visibility= -"visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(f=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*f.x)+"%, "+Math.round(100*f.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility="hidden");this.hint.style.left=Math.round(c.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(c.getGraphY(),b.y)+this.state.view.graph.gridSize+"px";null!=this.linkHint&& -(this.linkHint.style.display="none")};mxEdgeHandler.prototype.removeHint=mxVertexHandler.prototype.removeHint;HoverIcons.prototype.mainHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/>'):new mxImage(IMAGE_PATH+"/handle-main.png",17,17);HoverIcons.prototype.secondaryHandle=mxClient.IS_SVG?Graph.createSvgImage(16,16,'<path d="m 8 3 L 13 8 L 8 13 L 3 8 z" stroke="#fff" fill="#fca000"/>'):new mxImage(IMAGE_PATH+ -"/handle-secondary.png",17,17);HoverIcons.prototype.fixedHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/><path d="m 7 7 L 11 11 M 7 11 L 11 7" stroke="#fff"/>'):new mxImage(IMAGE_PATH+"/handle-fixed.png",17,17);HoverIcons.prototype.terminalHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/><circle cx="9" cy="9" r="2" stroke="#fff" fill="transparent"/>'): -new mxImage(IMAGE_PATH+"/handle-terminal.png",17,17);HoverIcons.prototype.rotationHandle=new mxImage(mxClient.IS_SVG?"data:image/png;base64,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": +Graph.prototype.importGraphModel=function(a,d,b,c){d=null!=d?d:0;b=null!=b?b:0;var f=new mxCodec(a.ownerDocument),e=new mxGraphModel;f.decode(a,e);a=[];f=e.getChildren(this.cloneCell(e.root,this.isCloneInvalidEdges()));if(null!=f){f=f.slice();this.model.beginUpdate();try{if(1!=f.length||this.isCellLocked(this.getDefaultParent()))for(e=0;e<f.length;e++)a=a.concat(this.model.getChildren(this.moveCells([f[e]],d,b,!1,this.model.getRoot())[0]));else a=this.moveCells(e.getChildren(f[0]),d,b,!1,this.getDefaultParent()); +if(c){this.isGridEnabled()&&(d=this.snap(d),b=this.snap(b));var g=this.getBoundingBoxFromGeometry(a,!0);null!=g&&this.moveCells(a,d-g.x,b-g.y)}}finally{this.model.endUpdate()}}return a};Graph.prototype.getAllConnectionConstraints=function(a,d){if(null!=a){var b=mxUtils.getValue(a.style,"points",null);if(null!=b){var c=[];try{for(var f=JSON.parse(b),b=0;b<f.length;b++){var e=f[b];c.push(new mxConnectionConstraint(new mxPoint(e[0],e[1]),2<e.length?"0"!=e[2]:!0,null,3<e.length?e[3]:0,4<e.length?e[4]: +0))}}catch(H){}return c}if(null!=a.shape){e=a.shape.direction;f=a.shape.bounds;b=a.shape.scale;c=f.width/b;f=f.height/b;if(e==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH)e=c,c=f,f=e;b=a.shape.getConstraints(a.style,c,f);if(null!=b)return b;if(null!=a.shape.stencil&&null!=a.shape.stencil.constraints)return a.shape.stencil.constraints;if(null!=a.shape.constraints)return a.shape.constraints}}return null};Graph.prototype.flipEdge=function(a){if(null!=a){var d=this.view.getState(a),d=null!= +d?d.style:this.getCellStyle(a);null!=d&&(d=mxUtils.getValue(d,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL,this.setCellStyles(mxConstants.STYLE_ELBOW,d,[a]))}};Graph.prototype.isValidRoot=function(a){for(var d=this.model.getChildCount(a),b=0,c=0;c<d;c++){var f=this.model.getChildAt(a,c);this.model.isVertex(f)&&(f=this.getCellGeometry(f),null==f||f.relative||b++)}return 0<b||this.isContainer(a)};Graph.prototype.isValidDropTarget= +function(a){var d=this.view.getState(a),d=null!=d?d.style:this.getCellStyle(a);return"1"!=mxUtils.getValue(d,"part","0")&&(this.isContainer(a)||mxGraph.prototype.isValidDropTarget.apply(this,arguments)&&"0"!=mxUtils.getValue(d,"dropTarget","1"))};Graph.prototype.createGroupCell=function(){var a=mxGraph.prototype.createGroupCell.apply(this,arguments);a.setStyle("group");return a};Graph.prototype.isExtendParentsOnAdd=function(a){var d=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(d&& +null!=a&&null!=this.layoutManager){var b=this.model.getParent(a);null!=b&&(b=this.layoutManager.getLayout(b),null!=b&&b.constructor==mxStackLayout&&(d=!1))}return d};Graph.prototype.getPreferredSizeForCell=function(a){var d=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=d&&(d.width+=10,d.height+=4,this.gridEnabled&&(d.width=this.snap(d.width),d.height=this.snap(d.height)));return d};Graph.prototype.turnShapes=function(a){var d=this.getModel(),b=[];d.beginUpdate();try{for(var c= +0;c<a.length;c++){var f=a[c];if(d.isEdge(f)){var e=d.getTerminal(f,!0),g=d.getTerminal(f,!1);d.setTerminal(f,g,!0);d.setTerminal(f,e,!1);var l=d.getGeometry(f);if(null!=l){l=l.clone();null!=l.points&&l.points.reverse();var n=l.getTerminalPoint(!0),p=l.getTerminalPoint(!1);l.setTerminalPoint(n,!1);l.setTerminalPoint(p,!0);d.setGeometry(f,l);var u=this.view.getState(f),y=this.view.getState(e),t=this.view.getState(g);if(null!=u){var J=null!=y?this.getConnectionConstraint(u,y,!0):null,k=null!=t?this.getConnectionConstraint(u, +t,!1):null;this.setConnectionConstraint(f,e,!0,k);this.setConnectionConstraint(f,g,!1,J)}b.push(f)}}else if(d.isVertex(f)&&(l=this.getCellGeometry(f),null!=l)){l=l.clone();l.x+=l.width/2-l.height/2;l.y+=l.height/2-l.width/2;var A=l.width;l.width=l.height;l.height=A;d.setGeometry(f,l);var r=this.view.getState(f);if(null!=r){var B=r.style[mxConstants.STYLE_DIRECTION]||"east";"east"==B?B="south":"south"==B?B="west":"west"==B?B="north":"north"==B&&(B="east");this.setCellStyles(mxConstants.STYLE_DIRECTION, +B,[f])}b.push(f)}}}finally{d.endUpdate()}return b};Graph.prototype.stencilHasPlaceholders=function(a){if(null!=a&&null!=a.fgNode)for(a=a.fgNode.firstChild;null!=a;){if("text"==a.nodeName&&"1"==a.getAttribute("placeholders"))return!0;a=a.nextSibling}return!1};Graph.prototype.processChange=function(a){mxGraph.prototype.processChange.apply(this,arguments);if(a instanceof mxValueChange&&null!=a.cell&&null!=a.cell.value&&"object"==typeof a.cell.value){var d=this.model.getDescendants(a.cell);if(0<d.length)for(var b= +0;b<d.length;b++){var c=this.view.getState(d[b]);null!=c&&null!=c.shape&&null!=c.shape.stencil&&this.stencilHasPlaceholders(c.shape.stencil)?this.removeStateForCell(d[b]):this.isReplacePlaceholders(d[b])&&this.view.invalidate(d[b],!1,!1)}}};Graph.prototype.replaceElement=function(a,d){for(var b=a.ownerDocument.createElement(null!=d?d:"span"),c=Array.prototype.slice.call(a.attributes);attr=c.pop();)b.setAttribute(attr.nodeName,attr.nodeValue);b.innerHTML=a.innerHTML;a.parentNode.replaceChild(b,a)}; +Graph.prototype.updateLabelElements=function(a,d,b){a=null!=a?a:this.getSelectionCells();for(var c=document.createElement("div"),f=0;f<a.length;f++)if(this.isHtmlLabel(a[f])){var e=this.convertValueToString(a[f]);if(null!=e&&0<e.length){c.innerHTML=e;for(var g=c.getElementsByTagName(null!=b?b:"*"),l=0;l<g.length;l++)d(g[l]);c.innerHTML!=e&&this.cellLabelChanged(a[f],c.innerHTML)}}};Graph.prototype.cellLabelChanged=function(a,d,b){d=this.zapGremlins(d);this.model.beginUpdate();try{if(null!=a.value&& +"object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder"))for(var c=a.getAttribute("placeholder"),f=a;null!=f;){if(f==this.model.getRoot()||null!=f.value&&"object"==typeof f.value&&f.hasAttribute(c)){this.setAttributeForCell(f,c,d);break}f=this.model.getParent(f)}var e=a.value.cloneNode(!0);e.setAttribute("label",d);d=e}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(a){if(null!=a){for(var d= +new mxDictionary,b=0;b<a.length;b++)d.put(a[b],!0);for(var c=[],b=0;b<a.length;b++){var f=this.model.getParent(a[b]);null==f||d.get(f)||(d.put(f,!0),c.push(f))}for(b=0;b<c.length;b++)if(f=this.view.getState(c[b]),null!=f&&(this.model.isEdge(f.cell)||this.model.isVertex(f.cell))&&this.isCellDeletable(f.cell)){var e=mxUtils.getValue(f.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),g=mxUtils.getValue(f.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);if(e==mxConstants.NONE&&g==mxConstants.NONE){e= +!0;for(g=0;g<this.model.getChildCount(f.cell)&&e;g++)d.get(this.model.getChildAt(f.cell,g))||(e=!1);e&&a.push(f.cell)}}}mxGraph.prototype.cellsRemoved.apply(this,arguments)};Graph.prototype.removeCellsAfterUngroup=function(a){for(var d=[],b=0;b<a.length;b++)if(this.isCellDeletable(a[b])){var c=this.view.getState(a[b]);if(null!=c){var f=mxUtils.getValue(c.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),c=mxUtils.getValue(c.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);f==mxConstants.NONE&& +c==mxConstants.NONE&&d.push(a[b])}}a=d;mxGraph.prototype.removeCellsAfterUngroup.apply(this,arguments)};Graph.prototype.setLinkForCell=function(a,d){this.setAttributeForCell(a,"link",d)};Graph.prototype.setTooltipForCell=function(a,d){this.setAttributeForCell(a,"tooltip",d)};Graph.prototype.setAttributeForCell=function(a,d,b){var c;null!=a.value&&"object"==typeof a.value?c=a.value.cloneNode(!0):(c=mxUtils.createXmlDocument().createElement("UserObject"),c.setAttribute("label",a.value||""));null!=b&& +0<b.length?c.setAttribute(d,b):c.removeAttribute(d);this.model.setValue(a,c)};Graph.prototype.getDropTarget=function(a,d,b,c){this.getModel();if(mxEvent.isAltDown(d))return null;for(var f=0;f<a.length;f++)if(this.model.isEdge(this.model.getParent(a[f])))return null;return mxGraph.prototype.getDropTarget.apply(this,arguments)};Graph.prototype.click=function(a){mxGraph.prototype.click.call(this,a);this.firstClickState=a.getState();this.firstClickSource=a.getSource()};Graph.prototype.dblClick=function(a, +d){if(this.isEnabled()){var b=mxUtils.convertPoint(this.container,mxEvent.getClientX(a),mxEvent.getClientY(a));if(null!=a&&!this.model.isVertex(d)){var c=this.model.isEdge(d)?this.view.getState(d):null,f=mxEvent.getSource(a);this.firstClickState!=c||this.firstClickSource!=f||null!=c&&null!=c.text&&null!=c.text.node&&(mxUtils.contains(c.text.boundingBox,b.x,b.y)||mxUtils.isAncestorNode(c.text.node,mxEvent.getSource(a)))||(null!=c||this.isCellLocked(this.getDefaultParent()))&&(null==c||this.isCellLocked(c.cell))|| +!(null!=c||mxClient.IS_VML&&f==this.view.getCanvas()||mxClient.IS_SVG&&f==this.view.getCanvas().ownerSVGElement)||(d=this.addText(b.x,b.y,c))}mxGraph.prototype.dblClick.call(this,a,d)}};Graph.prototype.getInsertPoint=function(){var a=this.getGridSize(),d=this.container.scrollLeft/this.view.scale-this.view.translate.x,b=this.container.scrollTop/this.view.scale-this.view.translate.y;if(this.pageVisible)var c=this.getPageLayout(),f=this.getPageSize(),d=Math.max(d,c.x*f.width),b=Math.max(b,c.y*f.height); +return new mxPoint(this.snap(d+a),this.snap(b+a))};Graph.prototype.getFreeInsertPoint=function(){var a=this.view,d=this.getGraphBounds(),b=this.getInsertPoint(),c=this.snap(Math.round(Math.max(b.x,d.x/a.scale-a.translate.x+(0==d.width?2*this.gridSize:0)))),a=this.snap(Math.round(Math.max(b.y,(d.y+d.height)/a.scale-a.translate.y+2*this.gridSize)));return new mxPoint(c,a)};Graph.prototype.isMouseInsertPoint=function(){return!1};Graph.prototype.addText=function(a,d,b){var c=new mxCell;c.value="Text"; +c.style="text;html=1;resizable=0;points=[];";c.geometry=new mxGeometry(0,0,0,0);c.vertex=!0;if(null!=b){c.style+="align=center;verticalAlign=middle;labelBackgroundColor=#ffffff;";c.geometry.relative=!0;c.connectable=!1;var f=this.view.getRelativePoint(b,a,d);c.geometry.x=Math.round(1E4*f.x)/1E4;c.geometry.y=Math.round(f.y);c.geometry.offset=new mxPoint(0,0);var f=this.view.getPoint(b,c.geometry),e=this.view.scale;c.geometry.offset=new mxPoint(Math.round((a-f.x)/e),Math.round((d-f.y)/e))}else c.style+= +"autosize=1;align=left;verticalAlign=top;spacingTop=-4;",f=this.view.translate,c.geometry.width=40,c.geometry.height=20,c.geometry.x=Math.round(a/this.view.scale)-f.x,c.geometry.y=Math.round(d/this.view.scale)-f.y;this.getModel().beginUpdate();try{this.addCells([c],null!=b?b.cell:null),this.fireEvent(new mxEventObject("textInserted","cells",[c])),this.autoSizeCell(c)}finally{this.getModel().endUpdate()}return c};Graph.prototype.getAbsoluteUrl=function(a){null!=a&&this.isRelativeUrl(a)&&(a="#"==a.charAt(0)? +this.baseUrl+a:"/"==a.charAt(0)?this.domainUrl+a:this.domainPathUrl+a);return a};Graph.prototype.addClickHandler=function(a,d,b){var c=mxUtils.bind(this,function(){var a=this.container.getElementsByTagName("a");if(null!=a)for(var b=0;b<a.length;b++){var c=this.getAbsoluteUrl(a[b].getAttribute("href"));null!=c&&(a[b].setAttribute("rel",this.linkRelation),a[b].setAttribute("href",c),null!=d&&mxEvent.addGestureListeners(a[b],null,null,d))}});this.model.addListener(mxEvent.CHANGE,c);c();var f=this.container.style.cursor, +e=this.getTolerance(),g=this,l={currentState:null,currentLink:null,highlight:null!=a&&""!=a&&a!=mxConstants.NONE?new mxCellHighlight(g,a,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(a){var d=a.sourceState;if(null==d||null==g.getLinkForCell(d.cell))a=g.getCellAt(a.getGraphX(),a.getGraphY(),null,null,null,function(a,d,b){return null==g.getLinkForCell(a.cell)}),d=g.view.getState(a);d!=this.currentState&&(null!=this.currentState&&this.clear(),this.currentState=d,null!= +this.currentState&&this.activate(this.currentState))},mouseDown:function(a,d){this.startX=d.getGraphX();this.startY=d.getGraphY();this.scrollLeft=g.container.scrollLeft;this.scrollTop=g.container.scrollTop;null==this.currentLink&&"auto"==g.container.style.overflow&&(g.container.style.cursor="move");this.updateCurrentState(d)},mouseMove:function(a,d){if(g.isMouseDown){if(null!=this.currentLink){var b=Math.abs(this.startX-d.getGraphX()),c=Math.abs(this.startY-d.getGraphY());(b>e||c>e)&&this.clear()}}else{for(b= +d.getSource();null!=b&&"a"!=b.nodeName.toLowerCase();)b=b.parentNode;null!=b?this.clear():(null!=g.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&&g.tooltipHandler.reset(d,!0,this.currentState),(null==this.currentState||d.getState()!=this.currentState&&null!=d.sourceState||!g.intersects(this.currentState,d.getGraphX(),d.getGraphY()))&&this.updateCurrentState(d))}},mouseUp:function(a,c){for(var f=c.getSource(),l=c.getEvent();null!=f&&"a"!=f.nodeName.toLowerCase();)f=f.parentNode;null== +f&&Math.abs(this.scrollLeft-g.container.scrollLeft)<e&&Math.abs(this.scrollTop-g.container.scrollTop)<e&&(null==c.sourceState||!c.isSource(c.sourceState.control))&&((mxEvent.isLeftMouseButton(l)||mxEvent.isMiddleMouseButton(l))&&!mxEvent.isPopupTrigger(l)||mxEvent.isTouchEvent(l))&&(null!=this.currentLink?(f=g.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&f||null==d||d(l,this.currentLink),mxEvent.isConsumed(l)||(l=mxEvent.isMiddleMouseButton(l)?"_blank":f?g.linkTarget:"_top", +g.openLink(this.currentLink,l),c.consume())):null!=b&&!c.isConsumed()&&Math.abs(this.scrollLeft-g.container.scrollLeft)<e&&Math.abs(this.scrollTop-g.container.scrollTop)<e&&Math.abs(this.startX-c.getGraphX())<e&&Math.abs(this.startY-c.getGraphY())<e&&b(c.getEvent()));this.clear()},activate:function(a){this.currentLink=g.getAbsoluteUrl(g.getLinkForCell(a.cell));null!=this.currentLink&&(g.container.style.cursor="pointer",null!=this.highlight&&this.highlight.highlight(a))},clear:function(){null!=g.container&& +(g.container.style.cursor=f);this.currentLink=this.currentState=null;null!=this.highlight&&this.highlight.hide();null!=g.tooltipHandler&&g.tooltipHandler.hide()}};g.click=function(a){};g.addMouseListener(l);mxEvent.addListener(document,"mouseleave",function(a){l.clear()})};Graph.prototype.duplicateCells=function(a,d){a=null!=a?a:this.getSelectionCells();d=null!=d?d:!0;a=this.model.getTopmostCells(a);var b=this.getModel(),c=this.gridSize,f=[];b.beginUpdate();try{for(var e=this.cloneCells(a,!1,null, +!0),g=0;g<a.length;g++){var l=b.getParent(a[g]),n=this.moveCells([e[g]],c,c,!1)[0];f.push(n);if(d)b.add(l,e[g]);else{var p=l.getIndex(a[g]);b.add(l,e[g],p+1)}}}finally{b.endUpdate()}return f};Graph.prototype.insertImage=function(a,d,b){if(null!=a&&null!=this.cellEditor.textarea){for(var c=this.cellEditor.textarea.getElementsByTagName("img"),f=[],e=0;e<c.length;e++)f.push(c[e]);document.execCommand("insertimage",!1,a);a=this.cellEditor.textarea.getElementsByTagName("img");if(a.length==f.length+1)for(e= +a.length-1;0<=e;e--)if(0==e||a[e]!=f[e-1]){a[e].setAttribute("width",d);a[e].setAttribute("height",b);break}}};Graph.prototype.insertLink=function(a){if(null!=this.cellEditor.textarea)if(0==a.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var d=this.cellEditor.textarea.getElementsByTagName("a"),b=[],c=0;c<d.length;c++)b.push(d[c]);document.execCommand("createlink",!1,mxUtils.trim(a));d=this.cellEditor.textarea.getElementsByTagName("a");if(d.length==b.length+1)for(c=d.length- +1;0<=c;c--)if(d[c]!=b[c-1]){for(d=d[c].getElementsByTagName("a");0<d.length;){for(b=d[0].parentNode;null!=d[0].firstChild;)b.insertBefore(d[0].firstChild,d[0]);b.removeChild(d[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(a))};Graph.prototype.isCellResizable=function(a){var d=mxGraph.prototype.isCellResizable.apply(this,arguments),b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return d||"0"!=mxUtils.getValue(b,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==b[mxConstants.STYLE_WHITE_SPACE]}; +Graph.prototype.distributeCells=function(a,d){null==d&&(d=this.getSelectionCells());if(null!=d&&1<d.length){for(var b=[],c=null,f=null,e=0;e<d.length;e++)if(this.getModel().isVertex(d[e])){var g=this.view.getState(d[e]);if(null!=g){var l=a?g.getCenterX():g.getCenterY(),c=null!=c?Math.max(c,l):l,f=null!=f?Math.min(f,l):l;b.push(g)}}if(2<b.length){b.sort(function(d,b){return a?d.x-b.x:d.y-b.y});g=this.view.translate;l=this.view.scale;f=f/l-(a?g.x:g.y);c=c/l-(a?g.x:g.y);this.getModel().beginUpdate(); +try{for(var n=(c-f)/(b.length-1),c=f,e=1;e<b.length-1;e++){var p=this.view.getState(this.model.getParent(b[e].cell)),u=this.getCellGeometry(b[e].cell),c=c+n;null!=u&&null!=p&&(u=u.clone(),a?u.x=Math.round(c-u.width/2)-p.origin.x:u.y=Math.round(c-u.height/2)-p.origin.y,this.getModel().setGeometry(b[e].cell,u))}}finally{this.getModel().endUpdate()}}}return d};Graph.prototype.isCloneEvent=function(a){return mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxEvent.isControlDown(a)};Graph.prototype.encodeCells= +function(a){for(var d=this.cloneCells(a),b=new mxDictionary,c=0;c<a.length;c++)b.put(a[c],!0);for(c=0;c<d.length;c++){var f=this.view.getState(a[c]);if(null!=f){var e=this.getCellGeometry(d[c]);null==e||!e.relative||this.model.isEdge(a[c])||b.get(this.model.getParent(a[c]))||(e.relative=!1,e.x=f.x/f.view.scale-f.view.translate.x,e.y=f.y/f.view.scale-f.view.translate.y)}}b=new mxCodec;f=new mxGraphModel;e=f.getChildAt(f.getRoot(),0);for(c=0;c<a.length;c++)f.add(e,d[c]);return b.encode(f)};Graph.prototype.createSvgImageExport= +function(){var a=new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,d){return this.getLinkForCell(a.cell)});return a};Graph.prototype.getSvg=function(a,d,b,c,f,e,g,l,n,u){var p=this.useCssTransforms;p&&(this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange());try{d=null!=d?d:1;b=null!=b?b:0;f=null!=f?f:!0;e=null!=e?e:!0;g=null!=g?g:!0;var y=e||c?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells());if(null==y)throw Error(mxResources.get("drawingEmpty")); +var t=this.view.scale,k=mxUtils.createXmlDocument(),A=null!=k.createElementNS?k.createElementNS(mxConstants.NS_SVG,"svg"):k.createElement("svg");null!=a&&(null!=A.style?A.style.backgroundColor=a:A.setAttribute("style","background-color:"+a));null==k.createElementNS?(A.setAttribute("xmlns",mxConstants.NS_SVG),A.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):A.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=d/t;var B=Math.max(1,Math.ceil(y.width*a)+2*b)+(u?5: +0),r=Math.max(1,Math.ceil(y.height*a)+2*b)+(u?5:0);A.setAttribute("version","1.1");A.setAttribute("width",B+"px");A.setAttribute("height",r+"px");A.setAttribute("viewBox",(f?"-0.5 -0.5":"0 0")+" "+B+" "+r);k.appendChild(A);var D=null!=k.createElementNS?k.createElementNS(mxConstants.NS_SVG,"g"):k.createElement("g");A.appendChild(D);var x=this.createSvgCanvas(D);x.foOffset=f?-.5:0;x.textOffset=f?-.5:0;x.imageOffset=f?-.5:0;x.translate(Math.floor((b/d-y.x)/t),Math.floor((b/d-y.y)/t));var m=document.createElement("textarea"), +q=x.createAlternateContent;x.createAlternateContent=function(a,d,b,c,f,e,g,l,n,u,p,y,t){var k=this.state;if(null!=this.foAltText&&(0==c||0!=k.fontSize&&e.length<5*c/k.fontSize)){var A=this.createElement("text");A.setAttribute("x",Math.round(c/2));A.setAttribute("y",Math.round((f+k.fontSize)/2));A.setAttribute("fill",k.fontColor||"black");A.setAttribute("text-anchor","middle");A.setAttribute("font-size",Math.round(k.fontSize)+"px");A.setAttribute("font-family",k.fontFamily);(k.fontStyle&mxConstants.FONT_BOLD)== +mxConstants.FONT_BOLD&&A.setAttribute("font-weight","bold");(k.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&A.setAttribute("font-style","italic");(k.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&A.setAttribute("text-decoration","underline");try{return m.innerHTML=e,A.textContent=m.value,A}catch(oa){return q.apply(this,arguments)}}else return q.apply(this,arguments)};var J=this.backgroundImage;if(null!=J){d=t/d;var C=this.view.translate,X=new mxRectangle(C.x*d, +C.y*d,J.width*d,J.height*d);mxUtils.intersects(y,X)&&x.image(C.x,C.y,J.width,J.height,J.src,!0)}x.scale(a);x.textEnabled=g;l=null!=l?l:this.createSvgImageExport();var E=l.drawCellState;l.drawCellState=function(a,d){for(var b=a.view.graph,c=b.isCellSelected(a.cell),f=b.model.getParent(a.cell);!e&&!c&&null!=f;)c=b.isCellSelected(f),f=b.model.getParent(f);(e||c)&&E.apply(this,arguments)};l.drawState(this.getView().getState(this.model.root),x);this.updateSvgLinks(A,n,!0);return A}finally{p&&(this.useCssTransforms= +!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.updateSvgLinks=function(a,d,b){a=a.getElementsByTagName("a");for(var c=0;c<a.length;c++){var f=a[c].getAttribute("href");null==f&&(f=a[c].getAttribute("xlink:href"));null!=f&&(null!=d&&/^https?:\/\//.test(f)?a[c].setAttribute("target",d):b&&this.isCustomLink(f)&&a[c].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(a){return new mxSvgCanvas2D(a)};Graph.prototype.getSelectedElement=function(){var a= +null;if(window.getSelection){var d=window.getSelection();d.getRangeAt&&d.rangeCount&&(a=d.getRangeAt(0).commonAncestorContainer)}else document.selection&&(a=document.selection.createRange().parentElement());return a};Graph.prototype.getParentByName=function(a,d,b){for(;null!=a&&a.nodeName!=d;){if(a==b)return null;a=a.parentNode}return a};Graph.prototype.selectNode=function(a){var d=null;if(window.getSelection){if(d=window.getSelection(),d.getRangeAt&&d.rangeCount){var b=document.createRange();b.selectNode(a); +d.removeAllRanges();d.addRange(b)}}else(d=document.selection)&&"Control"!=d.type&&(a=d.createRange(),a.collapse(!0),b=d.createRange(),b.setEndPoint("StartToStart",a),b.select())};Graph.prototype.insertRow=function(a,d){for(var b=a.tBodies[0],c=b.rows[0].cells,f=0,e=0;e<c.length;e++)var g=c[e].getAttribute("colspan"),f=f+(null!=g?parseInt(g):1);b=b.insertRow(d);for(e=0;e<f;e++)mxUtils.br(b.insertCell(-1));return b.cells[0]};Graph.prototype.deleteRow=function(a,d){a.tBodies[0].deleteRow(d)};Graph.prototype.insertColumn= +function(a,d){var b=a.tHead;if(null!=b)for(var c=0;c<b.rows.length;c++){var f=document.createElement("th");b.rows[c].appendChild(f);mxUtils.br(f)}b=a.tBodies[0];for(c=0;c<b.rows.length;c++)f=b.rows[c].insertCell(d),mxUtils.br(f);return b.rows[0].cells[0<=d?d:b.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(a,d){if(0<=d)for(var b=a.tBodies[0].rows,c=0;c<b.length;c++)b[c].cells.length>d&&b[c].deleteCell(d)};Graph.prototype.pasteHtmlAtCaret=function(a){var d;if(window.getSelection){if(d= +window.getSelection(),d.getRangeAt&&d.rangeCount){d=d.getRangeAt(0);d.deleteContents();var b=document.createElement("div");b.innerHTML=a;a=document.createDocumentFragment();for(var c;c=b.firstChild;)lastNode=a.appendChild(c);d.insertNode(a)}}else(d=document.selection)&&"Control"!=d.type&&d.createRange().pasteHTML(a)};Graph.prototype.createLinkForHint=function(a,d){function b(a,d){a.length>d&&(a=a.substring(0,Math.round(d/2))+"..."+a.substring(a.length-Math.round(d/4)));return a}a=null!=a?a:"javascript:void(0);"; +if(null==d||0==d.length)d=this.isCustomLink(a)?this.getLinkTitle(a):a;var c=document.createElement("a");c.setAttribute("rel",this.linkRelation);c.setAttribute("href",this.getAbsoluteUrl(a));c.setAttribute("title",b(this.isCustomLink(a)?this.getLinkTitle(a):a,80));null!=this.linkTarget&&c.setAttribute("target",this.linkTarget);mxUtils.write(c,b(d,40));this.isCustomLink(a)&&mxEvent.addListener(c,"click",mxUtils.bind(this,function(d){this.customLinkClicked(a);mxEvent.consume(d)}));return c};Graph.prototype.initTouch= +function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(a,d){this.popupMenuHandler.hideMenu()});var a=this.updateMouseEvent;this.updateMouseEvent=function(d){d=a.apply(this,arguments);if(mxEvent.isTouchEvent(d.getEvent())&&null==d.getState()){var b=this.getCellAt(d.graphX,d.graphY);null!=b&&this.isSwimlane(b)&&this.hitsSwimlaneContent(b,d.graphX,d.graphY)||(d.state=this.view.getState(b),null!=d.state&& +null!=d.state.shape&&(this.container.style.cursor=d.state.shape.node.style.cursor))}null==d.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return d};var d=!1,b=!1,c=!1,f=this.fireMouseEvent;this.fireMouseEvent=function(a,e,g){a==mxEvent.MOUSE_DOWN&&(e=this.updateMouseEvent(e),d=this.isCellSelected(e.getCell()),b=this.isSelectionEmpty(),c=this.popupMenuHandler.isMenuShowing());f.apply(this,arguments)};this.popupMenuHandler.mouseUp=mxUtils.bind(this,function(a,f){this.popupMenuHandler.popupTrigger= +!this.isEditing()&&this.isEnabled()&&(null==f.getState()||!f.isSource(f.getState().control))&&(this.popupMenuHandler.popupTrigger||!c&&!mxEvent.isMouseEvent(f.getEvent())&&(b&&null==f.getCell()&&this.isSelectionEmpty()||d&&this.isCellSelected(f.getCell())));mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,arguments)})};mxCellEditor.prototype.isContentEditing=function(){var a=this.graph.view.getState(this.editingCell);return null!=a&&1==a.style.html};mxCellEditor.prototype.saveSelection= +function(){if(window.getSelection){var a=window.getSelection();if(a.getRangeAt&&a.rangeCount){for(var d=[],b=0,c=a.rangeCount;b<c;++b)d.push(a.getRangeAt(b));return d}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(a){try{if(a)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var d=0,b=a.length;d<b;++d)sel.addRange(a[d])}else document.selection&&a.select&&a.select()}catch(fa){}}; +var k=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=function(a){null!=a.text&&(a.text.replaceLinefeeds="0"!=mxUtils.getValue(a.style,"nl2Br","1"));k.apply(this,arguments)};var m=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(a,d){this.isKeepFocusEvent(a)||!mxEvent.isAltDown(a.getEvent())?m.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(a){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)}; +mxCellEditor.prototype.escapeCancelsEditing=!1;var q=mxCellEditor.prototype.startEditing;mxCellEditor.prototype.startEditing=function(a,d){q.apply(this,arguments);var b=this.graph.view.getState(a);this.textarea.className=null!=b&&1==b.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(a);var b=this.graph.getModel().getParent(a),c=this.graph.getCellGeometry(a);this.graph.getModel().isEdge(b)&& +null!=c&&c.relative||this.graph.getModel().isEdge(a)?mxClient.IS_QUIRKS?this.textarea.style.border="gray dotted 1px":this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":"":mxClient.IS_QUIRKS&&(this.textarea.style.outline="none",this.textarea.style.border="")};var r=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(a){function d(a,b){b.originalNode=a;a=a.firstChild;for(var c=b.firstChild;null!=a&&null!= +c;)d(a,c),a=a.nextSibling,c=c.nextSibling;return b}function b(a,d){if(null!=a)if(d.originalNode!=a)c(a);else for(a=a.firstChild,d=d.firstChild;null!=a;){var f=a.nextSibling;null==d?c(a):(b(a,d),d=d.nextSibling);a=f}}function c(a){for(var d=a.firstChild;null!=d;){var b=d.nextSibling;c(d);d=b}1==a.nodeType&&("BR"===a.nodeName||null!=a.firstChild)||3==a.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(a)).length?(3==a.nodeType&&mxUtils.setTextContent(a,mxUtils.getTextContent(a).replace(/\n|\r/g,"")), +1==a.nodeType&&(a.removeAttribute("style"),a.removeAttribute("class"),a.removeAttribute("width"),a.removeAttribute("cellpadding"),a.removeAttribute("cellspacing"),a.removeAttribute("border"))):a.parentNode.removeChild(a)}r.apply(this,arguments);mxClient.IS_QUIRKS||7===document.documentMode||8===document.documentMode||mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(a){var c=d(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){b(this.textarea, +c)}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var a=this.graph.view.getState(this.editingCell);if(null!=a){var d=null!=a&&"0"!=mxUtils.getValue(a.style,"nl2Br","1"),b=this.saveSelection();if(this.codeViewMode){l=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<l.length&&"\n"==l.charAt(l.length-1)&&(l=l.substring(0,l.length-1));l=this.graph.sanitizeHtml(d?l.replace(/\n/g,"<br/>"):l,!0);this.textarea.className="mxCellEditor geContentEditable";var c=mxUtils.getValue(a.style, +mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),d=mxUtils.getValue(a.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY),f=mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),e=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,g=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,a=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)== +mxConstants.FONT_UNDERLINE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(c*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(c)+"px";this.textarea.style.textDecoration=a?"underline":"";this.textarea.style.fontWeight=e?"bold":"normal";this.textarea.style.fontStyle=g?"italic":"";this.textarea.style.fontFamily=d;this.textarea.style.textAlign=f;this.textarea.style.padding="0px";this.textarea.innerHTML!=l&&(this.textarea.innerHTML= +l,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length));this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerHTML="");var l=mxUtils.htmlEntities(this.textarea.innerHTML);mxClient.IS_QUIRKS||8==document.documentMode||(l=mxUtils.replaceTrailingNewlines(l,"<div><br></div>"));l=this.graph.sanitizeHtml(d?l.replace(/\n/g,"").replace(/<br\s*.?>/g, +"<br>"):l,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var c=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(c*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(c)+"px";this.textarea.style.textDecoration="";this.textarea.style.fontWeight="normal";this.textarea.style.fontStyle="";this.textarea.style.fontFamily=mxConstants.DEFAULT_FONTFAMILY;this.textarea.style.textAlign="left";this.textarea.style.padding= +"2px";this.textarea.innerHTML!=l&&(this.textarea.innerHTML=l);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);this.switchSelectionState=b;this.resize()}};var v=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(a,d){if(null!=this.textarea)if(a=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=a){var b=a.view.scale;this.bounds=mxRectangle.fromRectangle(a);if(0==this.bounds.width&&0== +this.bounds.height){this.bounds.width=160*b;this.bounds.height=60*b;var c=null!=a.text?a.text.margin:null;null==c&&(c=mxUtils.getAlignmentAsPoint(mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(a.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=c.x*this.bounds.width;this.bounds.y+=c.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-4)/b)+"px";this.textarea.style.height=Math.round((this.bounds.height- +4)/b)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/b)+(this.textarea.offsetHeight-this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*b);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/b)+(this.textarea.offsetWidth-this.textarea.clientWidth)+"px",this.bounds.width=parseInt(this.textarea.style.width)* +b);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxClient.IS_VML?this.textarea.style.zoom=b:mxUtils.setPrefixedStyle(this.textarea.style,"transform","scale("+b+","+b+")")}else this.textarea.style.height="",this.textarea.style.overflow="",v.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(a,d){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetInitialValue.apply(this, +arguments);var b=this.graph.getEditingValue(a.cell,d);"1"==mxUtils.getValue(a.style,"nl2Br","1")&&(b=b.replace(/\n/g,"<br/>"));return b=this.graph.sanitizeHtml(b,!0)};mxCellEditorGetCurrentValue=mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(a){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var d=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return d="1"==mxUtils.getValue(a.style,"nl2Br","1")?d.replace(/\r\n/g, +"<br/>").replace(/\n/g,"<br/>"):d.replace(/\r\n/g,"").replace(/\n/g,"")};var z=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(a){this.codeViewMode&&this.toggleViewMode();z.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(J){}};var d=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(a,b){this.graph.getModel().beginUpdate();try{if(d.apply(this,arguments),this.graph.isCellDeletable(a.cell)&& +0==this.graph.model.getChildCount(a.cell)){var c=mxUtils.getValue(a.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),f=mxUtils.getValue(a.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);""==b&&c==mxConstants.NONE&&f==mxConstants.NONE&&this.graph.removeCells([a.cell],!1)}}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=function(a){var d=null;if(this.graph.getModel().isEdge(a.cell)||this.graph.getModel().isEdge(this.graph.getModel().getParent(a.cell)))d= +mxUtils.getValue(a.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null),d==mxConstants.NONE&&(d=null);return d};mxCellEditor.prototype.getMinimumSize=function(a){var d=this.graph.getView().scale;return new mxRectangle(0,0,null==a.text?30:a.text.size*d+20,30)};var f=mxGraphHandler.prototype.moveCells;mxGraphHandler.prototype.moveCells=function(a,d,b,c,e,g){mxEvent.isAltDown(g)&&(e=null);f.apply(this,arguments)};mxGraphHandler.prototype.updateHint=function(d){if(null!=this.shape){null==this.hint&&(this.hint= +a(),this.graph.container.appendChild(this.hint));var b=this.graph.view.translate,c=this.graph.view.scale;d=this.roundLength((this.bounds.x+this.currentDx)/c-b.x);b=this.roundLength((this.bounds.y+this.currentDy)/c-b.y);this.hint.innerHTML=d+", "+b;this.hint.style.left=this.shape.bounds.x+Math.round((this.shape.bounds.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=this.shape.bounds.y+this.shape.bounds.height+12+"px"}};mxGraphHandler.prototype.removeHint=function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint), +this.hint=null)};mxVertexHandler.prototype.isRecursiveResize=function(a,d){return!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&&!mxEvent.isControlDown(d.getEvent())&&!this.graph.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null)};mxVertexHandler.prototype.isCenteredEvent=function(a,d){return!(!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&&!this.graph.isCellCollapsed(a.cell)&& +"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null))&&mxEvent.isControlDown(d.getEvent())||mxEvent.isMetaDown(d.getEvent())};var l=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var a=new mxPoint(0,0),d=this.tolerance;this.graph.cellEditor.getEditingCell()==this.state.cell&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(d/=2,a.x=this.sizers[0].bounds.width+d,a.y=this.sizers[0].bounds.height+ +d):a=l.apply(this,arguments);return a};mxVertexHandler.prototype.updateHint=function(d){this.index!=mxEvent.LABEL_HANDLE&&(null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint)),this.index==mxEvent.ROTATION_HANDLE?this.hint.innerHTML=this.currentAlpha+"°":(d=this.state.view.scale,this.hint.innerHTML=this.roundLength(this.bounds.width/d)+" x "+this.roundLength(this.bounds.height/d)),d=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha: +this.state.style[mxConstants.STYLE_ROTATION]||"0"),null==d&&(d=this.bounds),this.hint.style.left=d.x+Math.round((d.width-this.hint.clientWidth)/2)+"px",this.hint.style.top=d.y+d.height+12+"px",null!=this.linkHint&&(this.linkHint.style.display="none"))};mxVertexHandler.prototype.removeHint=function(){mxGraphHandler.prototype.removeHint.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(d,b){null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint)); +var c=this.graph.view.translate,f=this.graph.view.scale,e=this.roundLength(b.x/f-c.x),c=this.roundLength(b.y/f-c.y);this.hint.innerHTML=e+", "+c;this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(e=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*e.x)+"%, "+Math.round(100*e.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility="hidden");this.hint.style.left= +Math.round(d.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(d.getGraphY(),b.y)+this.state.view.graph.gridSize+"px";null!=this.linkHint&&(this.linkHint.style.display="none")};mxEdgeHandler.prototype.removeHint=mxVertexHandler.prototype.removeHint;HoverIcons.prototype.mainHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/>'):new mxImage(IMAGE_PATH+"/handle-main.png",17,17);HoverIcons.prototype.secondaryHandle= +mxClient.IS_SVG?Graph.createSvgImage(16,16,'<path d="m 8 3 L 13 8 L 8 13 L 3 8 z" stroke="#fff" fill="#fca000"/>'):new mxImage(IMAGE_PATH+"/handle-secondary.png",17,17);HoverIcons.prototype.fixedHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/><path d="m 7 7 L 11 11 M 7 11 L 11 7" stroke="#fff"/>'):new mxImage(IMAGE_PATH+"/handle-fixed.png",17,17);HoverIcons.prototype.terminalHandle=mxClient.IS_SVG? +Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/><circle cx="9" cy="9" r="2" stroke="#fff" fill="transparent"/>'):new mxImage(IMAGE_PATH+"/handle-terminal.png",17,17);HoverIcons.prototype.rotationHandle=new mxImage(mxClient.IS_SVG?"data:image/png;base64,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": IMAGE_PATH+"/handle-rotate.png",19,21);mxClient.IS_SVG&&(mxConstraintHandler.prototype.pointImage=Graph.createSvgImage(5,5,'<path d="m 0 0 L 5 5 M 0 5 L 5 0" stroke="'+HoverIcons.prototype.arrowFill+'"/>'));mxVertexHandler.prototype.handleImage=HoverIcons.prototype.mainHandle;mxVertexHandler.prototype.secondaryHandleImage=HoverIcons.prototype.secondaryHandle;mxEdgeHandler.prototype.handleImage=HoverIcons.prototype.mainHandle;mxEdgeHandler.prototype.terminalHandleImage=HoverIcons.prototype.terminalHandle; mxEdgeHandler.prototype.fixedHandleImage=HoverIcons.prototype.fixedHandle;mxEdgeHandler.prototype.labelHandleImage=HoverIcons.prototype.secondaryHandle;mxOutline.prototype.sizerImage=HoverIcons.prototype.mainHandle;null!=window.Sidebar&&(Sidebar.prototype.triangleUp=HoverIcons.prototype.triangleUp,Sidebar.prototype.triangleRight=HoverIcons.prototype.triangleRight,Sidebar.prototype.triangleDown=HoverIcons.prototype.triangleDown,Sidebar.prototype.triangleLeft=HoverIcons.prototype.triangleLeft,Sidebar.prototype.refreshTarget= HoverIcons.prototype.refreshTarget,Sidebar.prototype.roundDrop=HoverIcons.prototype.roundDrop);mxClient.IS_SVG||((new Image).src=HoverIcons.prototype.mainHandle.src,(new Image).src=HoverIcons.prototype.fixedHandle.src,(new Image).src=HoverIcons.prototype.terminalHandle.src,(new Image).src=HoverIcons.prototype.secondaryHandle.src,(new Image).src=HoverIcons.prototype.rotationHandle.src,(new Image).src=HoverIcons.prototype.triangleUp.src,(new Image).src=HoverIcons.prototype.triangleRight.src,(new Image).src= HoverIcons.prototype.triangleDown.src,(new Image).src=HoverIcons.prototype.triangleLeft.src,(new Image).src=HoverIcons.prototype.refreshTarget.src,(new Image).src=HoverIcons.prototype.roundDrop.src);mxVertexHandler.prototype.rotationEnabled=!0;mxVertexHandler.prototype.manageSizers=!0;mxVertexHandler.prototype.livePreview=!0;mxRubberband.prototype.defaultOpacity=30;mxConnectionHandler.prototype.outlineConnect=!0;mxCellHighlight.prototype.keepOnTop=!0;mxVertexHandler.prototype.parentHighlightEnabled= !0;mxVertexHandler.prototype.rotationHandleVSpacing=-20;mxEdgeHandler.prototype.parentHighlightEnabled=!0;mxEdgeHandler.prototype.dblClickRemoveEnabled=!0;mxEdgeHandler.prototype.straightRemoveEnabled=!0;mxEdgeHandler.prototype.virtualBendsEnabled=!0;mxEdgeHandler.prototype.mergeRemoveEnabled=!0;mxEdgeHandler.prototype.manageLabelHandle=!0;mxEdgeHandler.prototype.outlineConnect=!0;mxEdgeHandler.prototype.isAddVirtualBendEvent=function(a){return!mxEvent.isShiftDown(a.getEvent())};mxEdgeHandler.prototype.isCustomHandleEvent= function(a){return!mxEvent.isShiftDown(a.getEvent())};if(Graph.touchStyle){if(mxClient.IS_TOUCH||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints)mxShape.prototype.svgStrokeTolerance=18,mxVertexHandler.prototype.tolerance=12,mxEdgeHandler.prototype.tolerance=12,Graph.prototype.tolerance=12,mxVertexHandler.prototype.rotationHandleVSpacing=-24,mxConstraintHandler.prototype.getTolerance=function(a){return mxEvent.isMouseEvent(a.getEvent())?4:this.graph.getTolerance()};mxPanningHandler.prototype.isPanningTrigger= -function(a){var c=a.getEvent();return null==a.getState()&&!mxEvent.isMouseEvent(c)||mxEvent.isPopupTrigger(c)&&(null==a.getState()||mxEvent.isControlDown(c)||mxEvent.isShiftDown(c))};var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(a,c){t.apply(this,arguments);mxEvent.isTouchEvent(c.getEvent())&&this.graph.isCellSelected(c.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)}}else mxPanningHandler.prototype.isPanningTrigger=function(a){var c= -a.getEvent();return mxEvent.isLeftMouseButton(c)&&(this.useLeftButtonForPanning&&null==a.getState()||mxEvent.isControlDown(c)&&!mxEvent.isShiftDown(c))||this.usePopupTrigger&&mxEvent.isPopupTrigger(c)};mxRubberband.prototype.isSpaceEvent=function(a){return this.graph.isEnabled()&&!this.graph.isCellLocked(this.graph.getDefaultParent())&&mxEvent.isControlDown(a.getEvent())&&mxEvent.isShiftDown(a.getEvent())};mxRubberband.prototype.mouseUp=function(a,c){var b=null!=this.div&&"none"!=this.div.style.display, -d=null,g=null,f=null,h=null;null!=this.first&&null!=this.currentX&&null!=this.currentY&&(d=this.first.x,g=this.first.y,f=(this.currentX-d)/this.graph.view.scale,h=(this.currentY-g)/this.graph.view.scale,mxEvent.isAltDown(c.getEvent())||(f=this.graph.snap(f),h=this.graph.snap(h),this.graph.isGridEnabled()||(Math.abs(f)<this.graph.tolerance&&(f=0),Math.abs(h)<this.graph.tolerance&&(h=0))));this.reset();if(b){if(mxEvent.isAltDown(c.getEvent())&&this.graph.isToggleEvent(c.getEvent())){var f=new mxRectangle(this.x, -this.y,this.width,this.height),l=this.graph.getCells(f.x,f.y,f.width,f.height);this.graph.removeSelectionCells(l)}else if(this.isSpaceEvent(c)){this.graph.model.beginUpdate();try{for(l=this.graph.getCellsBeyond(d,g,this.graph.getDefaultParent(),!0,!0),b=0;b<l.length;b++)if(this.graph.isCellMovable(l[b])){var m=this.graph.view.getState(l[b]),t=this.graph.getCellGeometry(l[b]);null!=m&&null!=t&&(t=t.clone(),t.translate(f,h),this.graph.model.setGeometry(l[b],t))}}finally{this.graph.model.endUpdate()}}else f= -new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(f,c.getEvent());c.consume()}};mxRubberband.prototype.mouseMove=function(a,c){if(!c.isConsumed()&&null!=this.first){var b=mxUtils.getScrollOrigin(this.graph.container),d=mxUtils.getOffset(this.graph.container);b.x-=d.x;b.y-=d.y;var d=c.getX()+b.x,b=c.getY()+b.y,g=this.first.x-d,f=this.first.y-b,h=this.graph.tolerance;if(null!=this.div||Math.abs(g)>h||Math.abs(f)>h)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(), -this.update(d,b),this.isSpaceEvent(c)?(d=this.x+this.width,b=this.y+this.height,g=this.graph.view.scale,mxEvent.isAltDown(c.getEvent())||(this.width=this.graph.snap(this.width/g)*g,this.height=this.graph.snap(this.height/g)*g,this.graph.isGridEnabled()||(this.width<this.graph.tolerance&&(this.width=0),this.height<this.graph.tolerance&&(this.height=0)),this.x<this.first.x&&(this.x=d-this.width),this.y<this.first.y&&(this.y=b-this.height)),this.div.style.borderStyle="dashed",this.div.style.backgroundColor= +function(a){var d=a.getEvent();return null==a.getState()&&!mxEvent.isMouseEvent(d)||mxEvent.isPopupTrigger(d)&&(null==a.getState()||mxEvent.isControlDown(d)||mxEvent.isShiftDown(d))};var n=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(a,d){n.apply(this,arguments);mxEvent.isTouchEvent(d.getEvent())&&this.graph.isCellSelected(d.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)}}else mxPanningHandler.prototype.isPanningTrigger=function(a){var d= +a.getEvent();return mxEvent.isLeftMouseButton(d)&&(this.useLeftButtonForPanning&&null==a.getState()||mxEvent.isControlDown(d)&&!mxEvent.isShiftDown(d))||this.usePopupTrigger&&mxEvent.isPopupTrigger(d)};mxRubberband.prototype.isSpaceEvent=function(a){return this.graph.isEnabled()&&!this.graph.isCellLocked(this.graph.getDefaultParent())&&mxEvent.isControlDown(a.getEvent())&&mxEvent.isShiftDown(a.getEvent())};mxRubberband.prototype.mouseUp=function(a,d){var b=null!=this.div&&"none"!=this.div.style.display, +c=null,f=null,e=null,g=null;null!=this.first&&null!=this.currentX&&null!=this.currentY&&(c=this.first.x,f=this.first.y,e=(this.currentX-c)/this.graph.view.scale,g=(this.currentY-f)/this.graph.view.scale,mxEvent.isAltDown(d.getEvent())||(e=this.graph.snap(e),g=this.graph.snap(g),this.graph.isGridEnabled()||(Math.abs(e)<this.graph.tolerance&&(e=0),Math.abs(g)<this.graph.tolerance&&(g=0))));this.reset();if(b){if(mxEvent.isAltDown(d.getEvent())&&this.graph.isToggleEvent(d.getEvent())){var e=new mxRectangle(this.x, +this.y,this.width,this.height),l=this.graph.getCells(e.x,e.y,e.width,e.height);this.graph.removeSelectionCells(l)}else if(this.isSpaceEvent(d)){this.graph.model.beginUpdate();try{for(l=this.graph.getCellsBeyond(c,f,this.graph.getDefaultParent(),!0,!0),b=0;b<l.length;b++)if(this.graph.isCellMovable(l[b])){var n=this.graph.view.getState(l[b]),u=this.graph.getCellGeometry(l[b]);null!=n&&null!=u&&(u=u.clone(),u.translate(e,g),this.graph.model.setGeometry(l[b],u))}}finally{this.graph.model.endUpdate()}}else e= +new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(e,d.getEvent());d.consume()}};mxRubberband.prototype.mouseMove=function(a,d){if(!d.isConsumed()&&null!=this.first){var b=mxUtils.getScrollOrigin(this.graph.container),c=mxUtils.getOffset(this.graph.container);b.x-=c.x;b.y-=c.y;var c=d.getX()+b.x,b=d.getY()+b.y,f=this.first.x-c,e=this.first.y-b,g=this.graph.tolerance;if(null!=this.div||Math.abs(f)>g||Math.abs(e)>g)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(), +this.update(c,b),this.isSpaceEvent(d)?(c=this.x+this.width,b=this.y+this.height,f=this.graph.view.scale,mxEvent.isAltDown(d.getEvent())||(this.width=this.graph.snap(this.width/f)*f,this.height=this.graph.snap(this.height/f)*f,this.graph.isGridEnabled()||(this.width<this.graph.tolerance&&(this.width=0),this.height<this.graph.tolerance&&(this.height=0)),this.x<this.first.x&&(this.x=c-this.width),this.y<this.first.y&&(this.y=b-this.height)),this.div.style.borderStyle="dashed",this.div.style.backgroundColor= "white",this.div.style.left=this.x+"px",this.div.style.top=this.y+"px",this.div.style.width=Math.max(0,this.width)+"px",this.div.style.height=this.graph.container.clientHeight+"px",this.div.style.borderWidth=0>=this.width?"0px 1px 0px 0px":"0px 1px 0px 1px",null==this.secondDiv&&(this.secondDiv=this.div.cloneNode(!0),this.div.parentNode.appendChild(this.secondDiv)),this.secondDiv.style.left=this.x+"px",this.secondDiv.style.top=this.y+"px",this.secondDiv.style.width=this.graph.container.clientWidth+ -"px",this.secondDiv.style.height=Math.max(0,this.height)+"px",this.secondDiv.style.borderWidth=0>=this.height?"1px 0px 0px 0px":"1px 0px 1px 0px"):(this.div.style.backgroundColor="",this.div.style.borderWidth="",this.div.style.borderStyle="",null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null)),c.consume()}};var m=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv), -this.secondDiv=null);m.apply(this,arguments)};var r=(new Date).getTime(),x=0,v=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(a,c,b,d){v.apply(this,arguments);b!=this.currentTerminalState?(r=(new Date).getTime(),x=0):x=(new Date).getTime()-r;this.currentTerminalState=b};var D=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(a){return null!=this.currentTerminalState&&a.getState()==this.currentTerminalState&& -2E3<x||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&D.apply(this,arguments)};mxVertexHandler.prototype.isCustomHandleEvent=function(a){return!mxEvent.isShiftDown(a.getEvent())};mxEdgeHandler.prototype.createHandleShape=function(a,c){var b=null!=a&&0==a,d=this.state.getVisibleTerminalState(b),g=null!=a&&(0==a||a>=this.state.absolutePoints.length-1||this.constructor==mxElbowEdgeHandler&&2==a)?this.graph.getConnectionConstraint(this.state, -d,b):null,b=null!=(null!=g?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(b),g):null)?this.fixedHandleImage:null!=g&&null!=d?this.terminalHandleImage:this.handleImage;if(null!=b)return b=new mxImageShape(new mxRectangle(0,0,b.width,b.height),b.src),b.preserveImageAspect=!1,b;b=mxConstants.HANDLE_SIZE;this.preferHtml&&--b;return new mxRectangleShape(new mxRectangle(0,0,b,b),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var y=mxVertexHandler.prototype.createSizerShape; -mxVertexHandler.prototype.createSizerShape=function(a,c,b){this.handleImage=c==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:c==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;return y.apply(this,arguments)};var u=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(a){if(null!=a&&1==a.length){var c=this.graph.getModel(),b=c.getParent(a[0]),d=this.graph.getCellGeometry(a[0]);if(c.isEdge(b)&&null!=d&&d.relative&&(c=this.graph.view.getState(a[0]), -null!=c&&2>c.width&&2>c.height&&null!=c.text&&null!=c.text.boundingBox))return mxRectangle.fromRectangle(c.text.boundingBox)}return u.apply(this,arguments)};var A=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(a){var c=this.graph.getModel(),b=c.getParent(a.cell),d=this.graph.getCellGeometry(a.cell);return c.isEdge(b)&&null!=d&&d.relative&&2>a.width&&2>a.height&&null!=a.text&&null!=a.text.boundingBox?(c=a.text.unrotatedBoundingBox||a.text.boundingBox, -new mxRectangle(Math.round(c.x),Math.round(c.y),Math.round(c.width),Math.round(c.height))):A.apply(this,arguments)};var F=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(a,c){var b=this.graph.getModel(),d=b.getParent(this.state.cell),g=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(c)==mxEvent.ROTATION_HANDLE||!b.isEdge(d)||null==g||!g.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&F.apply(this,arguments)};mxVertexHandler.prototype.isRotationHandleVisible= -function(){return this.graph.isEnabled()&&this.rotationEnabled&&this.graph.isCellRotatable(this.state.cell)&&(0>=mxGraphHandler.prototype.maxCells||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)};mxVertexHandler.prototype.rotateClick=function(){this.state.view.graph.turnShapes([this.state.cell])};var Q=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(a,c){Q.apply(this,arguments);null!=this.graph.graphHandler.first&&null!=this.rotationShape&&null!= -this.rotationShape.node&&(this.rotationShape.node.style.display="none")};var G=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(a,c){G.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none")};var I=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){I.apply(this,arguments);var a=!1;null!=this.rotationShape&&this.rotationShape.node.setAttribute("title", -mxResources.get("rotateTooltip"));var c=mxUtils.bind(this,function(){null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none");null!=this.specialHandle&&(this.specialHandle.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none");this.redrawHandles()});this.selectionHandler=mxUtils.bind(this,function(a,b){c()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE, -this.selectionHandler);this.changeHandler=mxUtils.bind(this,function(a,b){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));c()});this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(a,c){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,this.editingHandler);var b=this.graph.getLinkForCell(this.state.cell),d=this.graph.getLinksForState(this.state);this.updateLinkHint(b, -d);if(null!=b||null!=d&&0<d.length)a=!0;a&&this.redrawHandles()};mxVertexHandler.prototype.updateLinkHint=function(c,b){if(null==c&&(null==b||0==b.length)||1<this.graph.getSelectionCount())null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);else if(null!=c||null!=b&&0<b.length){null==this.linkHint&&(this.linkHint=a(),this.linkHint.style.padding="6px 8px 6px 8px",this.linkHint.style.opacity="1",this.linkHint.style.filter="",this.graph.container.appendChild(this.linkHint)); -this.linkHint.innerHTML="";if(null!=c&&(this.linkHint.appendChild(this.graph.createLinkForHint(c)),this.graph.isEnabled()&&"function"===typeof this.graph.editLink)){var d=document.createElement("img");d.setAttribute("src",Editor.editImage);d.setAttribute("title",mxResources.get("editLink"));d.setAttribute("width","11");d.setAttribute("height","11");d.style.marginLeft="10px";d.style.marginBottom="-1px";d.style.cursor="pointer";this.linkHint.appendChild(d);mxEvent.addListener(d,"click",mxUtils.bind(this, -function(a){this.graph.setSelectionCell(this.state.cell);this.graph.editLink();mxEvent.consume(a)}));d=document.createElement("img");d.setAttribute("src",Dialog.prototype.clearImage);d.setAttribute("title",mxResources.get("removeIt",[mxResources.get("link")]));d.setAttribute("width","13");d.setAttribute("height","10");d.style.marginLeft="4px";d.style.marginBottom="-1px";d.style.cursor="pointer";this.linkHint.appendChild(d);mxEvent.addListener(d,"click",mxUtils.bind(this,function(a){this.graph.setLinkForCell(this.state.cell, -null);mxEvent.consume(a)}))}if(null!=b)for(d=0;d<b.length;d++){var g=document.createElement("div");g.style.marginTop=null!=c||0<d?"6px":"0px";g.appendChild(this.graph.createLinkForHint(b[d].getAttribute("href"),mxUtils.getTextContent(b[d])));this.linkHint.appendChild(g)}}};mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var M=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){M.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this, -function(){return this.state.view.graph.connectionHandler.isEnabled()});var a=mxUtils.bind(this,function(){null!=this.linkHint&&(this.linkHint.style.display=1==this.graph.getSelectionCount()?"":"none");null!=this.labelShape&&(this.labelShape.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none")});this.selectionHandler=mxUtils.bind(this,function(c,b){a()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.selectionHandler); -this.changeHandler=mxUtils.bind(this,function(c,b){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));a();this.redrawHandles()});this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var c=this.graph.getLinkForCell(this.state.cell),b=this.graph.getLinksForState(this.state);if(null!=c||null!=b&&0<b.length)this.updateLinkHint(c,b),this.redrawHandles()};var z=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){z.apply(this, -arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var B=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){B.apply(this);if(null!=this.state&&null!=this.linkHint){var a=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),c=new mxRectangle(this.state.x,this.state.y-22,this.state.width+24,this.state.height+22),b=mxUtils.getBoundingBox(c,this.state.style[mxConstants.STYLE_ROTATION]|| -"0",a),a=null!=b?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,c=null!=this.state.text?this.state.text.boundingBox:null;null==b&&(b=this.state);b=b.y+b.height;null!=c&&(b=Math.max(b,c.y+c.height));this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(b+this.verticalOffset/2+6+this.state.view.graph.tolerance)+"px"}};var K=mxVertexHandler.prototype.reset;mxVertexHandler.prototype.reset= -function(){K.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none")};var O=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){O.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.selectionHandler&&(this.graph.getSelectionModel().removeListener(this.selectionHandler),this.selectionHandler= -null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null);null!=this.editingHandler&&(this.graph.removeListener(this.editingHandler),this.editingHandler=null)};var T=mxEdgeHandler.prototype.redrawHandles;mxEdgeHandler.prototype.redrawHandles=function(){if(null!=this.marker&&(T.apply(this),null!=this.state&&null!=this.linkHint)){var a=this.state;null!=this.state.text&&null!=this.state.text.bounds&&(a=new mxRectangle(a.x,a.y,a.width,a.height), -a.add(this.state.text.bounds));this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(a.y+a.height+6+this.state.view.graph.tolerance)+"px"}};var W=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){W.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var V=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){V.apply(this,arguments);null!=this.linkHint&& -(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.selectionHandler&&(this.graph.getSelectionModel().removeListener(this.selectionHandler),this.selectionHandler=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null)}}();(function(){function a(){mxCylinder.call(this)}function b(){mxActor.call(this)}function f(){mxCylinder.call(this)}function d(){mxCylinder.call(this)}function k(){mxCylinder.call(this)}function n(){mxActor.call(this)}function p(){mxCylinder.call(this)}function q(){mxActor.call(this)}function w(){mxActor.call(this)}function c(){mxActor.call(this)}function g(){mxActor.call(this)}function h(){mxActor.call(this)}function l(){mxActor.call(this)}function t(){mxActor.call(this)}function m(a,c){this.canvas= -a;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.defaultVariation=c;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,m.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,m.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,m.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,m.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo; -this.canvas.curveTo=mxUtils.bind(this,m.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,m.prototype.arcTo)}function r(){mxRectangleShape.call(this)}function x(){mxRectangleShape.call(this)}function v(){mxActor.call(this)}function D(){mxActor.call(this)}function y(){mxActor.call(this)}function u(){mxRectangleShape.call(this)}function A(){mxRectangleShape.call(this)}function F(){mxCylinder.call(this)}function Q(){mxShape.call(this)}function G(){mxShape.call(this)} -function I(){mxEllipse.call(this)}function M(){mxShape.call(this)}function z(){mxShape.call(this)}function B(){mxRectangleShape.call(this)}function K(){mxShape.call(this)}function O(){mxShape.call(this)}function T(){mxShape.call(this)}function W(){mxShape.call(this)}function V(){mxShape.call(this)}function J(){mxCylinder.call(this)}function ha(){mxDoubleEllipse.call(this)}function na(){mxDoubleEllipse.call(this)}function Y(){mxArrowConnector.call(this);this.spacing=0}function ba(){mxArrowConnector.call(this); -this.spacing=0}function N(){mxActor.call(this)}function H(){mxRectangleShape.call(this)}function U(){mxActor.call(this)}function L(){mxActor.call(this)}function P(){mxActor.call(this)}function R(){mxActor.call(this)}function ja(){mxActor.call(this)}function E(){mxActor.call(this)}function ea(){mxActor.call(this)}function X(){mxActor.call(this)}function Z(){mxActor.call(this)}function ca(){mxActor.call(this)}function fa(){mxEllipse.call(this)}function aa(){mxEllipse.call(this)}function qa(){mxEllipse.call(this)} -function sa(){mxRhombus.call(this)}function la(){mxEllipse.call(this)}function oa(){mxEllipse.call(this)}function va(){mxEllipse.call(this)}function ka(){mxEllipse.call(this)}function ta(){mxActor.call(this)}function ia(){mxActor.call(this)}function ga(){mxActor.call(this)}function da(){mxConnector.call(this)}function ya(a,c,b,d,g,f,h,l,m,t){h+=m;var C=d.clone();d.x-=g*(2*h+m);d.y-=f*(2*h+m);g*=h+m;f*=h+m;return function(){a.ellipse(C.x-g-h,C.y-f-h,2*h,2*h);t?a.fillAndStroke():a.stroke()}}mxUtils.extend(a, -mxCylinder);a.prototype.size=20;a.prototype.darkOpacity=0;a.prototype.darkOpacity2=0;a.prototype.paintVertexShape=function(a,c,b,d,g){var f=Math.max(0,Math.min(d,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),h=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),C=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));a.translate(c,b);a.begin();a.moveTo(0,0);a.lineTo(d-f,0);a.lineTo(d, -f);a.lineTo(d,g);a.lineTo(f,g);a.lineTo(0,g-f);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=h&&(a.setFillAlpha(Math.abs(h)),a.setFillColor(0>h?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(d-f,0),a.lineTo(d,f),a.lineTo(f,f),a.close(),a.fill()),0!=C&&(a.setFillAlpha(Math.abs(C)),a.setFillColor(0>C?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(f,f),a.lineTo(f,g),a.lineTo(0,g-f),a.close(),a.fill()),a.begin(),a.moveTo(f,g),a.lineTo(f,f),a.lineTo(0, -0),a.moveTo(f,f),a.lineTo(d,f),a.end(),a.stroke())};a.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?(a=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(a,a,0,0)):null};mxCellRenderer.registerShape("cube",a);var wa=Math.tan(mxUtils.toRadians(30)),ra=(.5-wa)/2;mxUtils.extend(b,mxActor);b.prototype.size=20;b.prototype.redrawPath=function(a,c,b,d,g){c=Math.min(d,g/wa);a.translate((d-c)/2,(g-c)/2+c/4);a.moveTo(0,.25*c);a.lineTo(.5* -c,c*ra);a.lineTo(c,.25*c);a.lineTo(.5*c,(.5-ra)*c);a.lineTo(0,.25*c);a.close();a.end()};mxCellRenderer.registerShape("isoRectangle",b);mxUtils.extend(f,mxCylinder);f.prototype.size=20;f.prototype.redrawPath=function(a,c,b,d,g,f){c=Math.min(d,g/(.5+wa));f?(a.moveTo(0,.25*c),a.lineTo(.5*c,(.5-ra)*c),a.lineTo(c,.25*c),a.moveTo(.5*c,(.5-ra)*c),a.lineTo(.5*c,(1-ra)*c)):(a.translate((d-c)/2,(g-c)/2),a.moveTo(0,.25*c),a.lineTo(.5*c,c*ra),a.lineTo(c,.25*c),a.lineTo(c,.75*c),a.lineTo(.5*c,(1-ra)*c),a.lineTo(0, -.75*c),a.close());a.end()};mxCellRenderer.registerShape("isoCube",f);mxUtils.extend(d,mxCylinder);d.prototype.redrawPath=function(a,c,b,d,g,f){c=Math.min(g/2,Math.round(g/8)+this.strokewidth-1);if(f&&null!=this.fill||!f&&null==this.fill)a.moveTo(0,c),a.curveTo(0,2*c,d,2*c,d,c),f||(a.stroke(),a.begin()),a.translate(0,c/2),a.moveTo(0,c),a.curveTo(0,2*c,d,2*c,d,c),f||(a.stroke(),a.begin()),a.translate(0,c/2),a.moveTo(0,c),a.curveTo(0,2*c,d,2*c,d,c),f||(a.stroke(),a.begin()),a.translate(0,-c);f||(a.moveTo(0, -c),a.curveTo(0,-c/3,d,-c/3,d,c),a.lineTo(d,g-c),a.curveTo(d,g+c/3,0,g+c/3,0,g-c),a.close())};d.prototype.getLabelMargins=function(a){return new mxRectangle(0,2.5*Math.min(a.height/2,Math.round(a.height/8)+this.strokewidth-1)*this.scale,0,0)};mxCellRenderer.registerShape("datastore",d);mxUtils.extend(k,mxCylinder);k.prototype.size=30;k.prototype.darkOpacity=0;k.prototype.paintVertexShape=function(a,c,b,d,g){var f=Math.max(0,Math.min(d,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.size))))), -h=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));a.translate(c,b);a.begin();a.moveTo(0,0);a.lineTo(d-f,0);a.lineTo(d,f);a.lineTo(d,g);a.lineTo(0,g);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=h&&(a.setFillAlpha(Math.abs(h)),a.setFillColor(0>h?"#FFFFFF":"#000000"),a.begin(),a.moveTo(d-f,0),a.lineTo(d-f,f),a.lineTo(d,f),a.close(),a.fill()),a.begin(),a.moveTo(d-f,0),a.lineTo(d-f,f),a.lineTo(d,f),a.end(),a.stroke())}; -mxCellRenderer.registerShape("note",k);mxUtils.extend(n,mxActor);n.prototype.redrawPath=function(a,c,b,d,g){a.moveTo(0,0);a.quadTo(d/2,.5*g,d,0);a.quadTo(.5*d,g/2,d,g);a.quadTo(d/2,.5*g,0,g);a.quadTo(.5*d,g/2,0,0);a.end()};mxCellRenderer.registerShape("switch",n);mxUtils.extend(p,mxCylinder);p.prototype.tabWidth=60;p.prototype.tabHeight=20;p.prototype.tabPosition="right";p.prototype.redrawPath=function(a,c,b,d,g,f){c=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))); -b=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var h=mxUtils.getValue(this.style,"tabPosition",this.tabPosition);f?"left"==h?(a.moveTo(0,b),a.lineTo(c,b)):(a.moveTo(d-c,b),a.lineTo(d,b)):("left"==h?(a.moveTo(0,0),a.lineTo(c,0),a.lineTo(c,b),a.lineTo(d,b)):(a.moveTo(0,b),a.lineTo(d-c,b),a.lineTo(d-c,0),a.lineTo(d,0)),a.lineTo(d,g),a.lineTo(0,g),a.lineTo(0,b),a.close());a.end()};mxCellRenderer.registerShape("folder",p);mxUtils.extend(q,mxActor);q.prototype.size= -30;q.prototype.isRoundable=function(){return!0};q.prototype.redrawPath=function(a,c,b,d,g){c=Math.max(0,Math.min(d,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(c,0),new mxPoint(d,0),new mxPoint(d,g),new mxPoint(0,g),new mxPoint(0,c)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("card",q);mxUtils.extend(w,mxActor);w.prototype.size=.4;w.prototype.redrawPath= -function(a,c,b,d,g){c=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(0,c/2);a.quadTo(d/4,1.4*c,d/2,c/2);a.quadTo(3*d/4,c*(1-1.4),d,c/2);a.lineTo(d,g-c/2);a.quadTo(3*d/4,g-1.4*c,d/2,g-c/2);a.quadTo(d/4,g-c*(1-1.4),0,g-c/2);a.lineTo(0,c/2);a.close();a.end()};w.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var c=mxUtils.getValue(this.style,"size",this.size),b=a.width,d=a.height;if(null==this.direction||this.direction== -mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)return c*=d,new mxRectangle(a.x,a.y+c,b,d-2*c);c*=b;return new mxRectangle(a.x+c,a.y,b-2*c,d)}return a};mxCellRenderer.registerShape("tape",w);mxUtils.extend(c,mxActor);c.prototype.size=.3;c.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*a.height):null};c.prototype.redrawPath=function(a,c,b,d,g){c=g*Math.max(0, -Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(0,0);a.lineTo(d,0);a.lineTo(d,g-c/2);a.quadTo(3*d/4,g-1.4*c,d/2,g-c/2);a.quadTo(d/4,g-c*(1-1.4),0,g-c/2);a.lineTo(0,c/2);a.close();a.end()};mxCellRenderer.registerShape("document",c);var Ha=mxCylinder.prototype.getCylinderSize;mxCylinder.prototype.getCylinderSize=function(a,c,b,d){var g=mxUtils.getValue(this.style,"size");return null!=g?d*Math.max(0,Math.min(1,g)):Ha.apply(this,arguments)};mxCylinder.prototype.getLabelMargins= -function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var c=2*mxUtils.getValue(this.style,"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,a.height*c),0,0)}return null};mxUtils.extend(g,mxActor);g.prototype.size=.2;g.prototype.isRoundable=function(){return!0};g.prototype.redrawPath=function(a,c,b,d,g){c=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/ -2;this.addPoints(a,[new mxPoint(0,g),new mxPoint(c,0),new mxPoint(d,0),new mxPoint(d-c,g)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("parallelogram",g);mxUtils.extend(h,mxActor);h.prototype.size=.2;h.prototype.isRoundable=function(){return!0};h.prototype.redrawPath=function(a,c,b,d,g){c=d*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0, -g),new mxPoint(c,0),new mxPoint(d-c,0),new mxPoint(d,g)],this.isRounded,b,!0)};mxCellRenderer.registerShape("trapezoid",h);mxUtils.extend(l,mxActor);l.prototype.size=.5;l.prototype.redrawPath=function(a,c,b,d,g){a.setFillColor(null);c=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(d,0),new mxPoint(c,0),new mxPoint(c,g/2),new mxPoint(0,g/2),new mxPoint(c, -g/2),new mxPoint(c,g),new mxPoint(d,g)],this.isRounded,b,!1);a.end()};mxCellRenderer.registerShape("curlyBracket",l);mxUtils.extend(t,mxActor);t.prototype.redrawPath=function(a,c,b,d,g){a.setStrokeWidth(1);a.setFillColor(this.stroke);c=d/5;a.rect(0,0,c,g);a.fillAndStroke();a.rect(2*c,0,c,g);a.fillAndStroke();a.rect(4*c,0,c,g);a.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",t);m.prototype.moveTo=function(a,c){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=a;this.lastY= -c;this.firstX=a;this.firstY=c};m.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,arguments));this.originalClose.apply(this.canvas,arguments)};m.prototype.quadTo=function(a,c,b,d){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=d};m.prototype.curveTo=function(a,c,b,d,g,f){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=g;this.lastY=f};m.prototype.arcTo=function(a,c,b,d, -g,f,h){this.originalArcTo.apply(this.canvas,arguments);this.lastX=f;this.lastY=h};m.prototype.lineTo=function(a,c){if(null!=this.lastX&&null!=this.lastY){var b=function(a){return"number"===typeof a?a?0>a?-1:1:a===a?0:NaN:NaN},d=Math.abs(a-this.lastX),g=Math.abs(c-this.lastY),f=Math.sqrt(d*d+g*g);if(2>f){this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=c;return}var h=Math.round(f/10),C=this.defaultVariation;5>h&&(h=5,C/=3);for(var l=b(a-this.lastX)*d/h,b=b(c-this.lastY)*g/h, -d=d/f,g=g/f,f=0;f<h;f++){var m=(Math.random()-.5)*C;this.originalLineTo.call(this.canvas,l*f+this.lastX-m*g,b*f+this.lastY-m*d)}this.originalLineTo.call(this.canvas,a,c)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=c};m.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo}; -var Ia=mxShape.prototype.paint;mxShape.prototype.defaultJiggle=1.5;mxShape.prototype.paint=function(a){null!=this.style&&"0"!=mxUtils.getValue(this.style,"comic","0")&&null==a.handHiggle&&(a.handJiggle=new m(a,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle)));Ia.apply(this,arguments);null!=a.handJiggle&&(a.handJiggle.destroy(),delete a.handJiggle)};mxRhombus.prototype.defaultJiggle=2;var Ja=mxRectangleShape.prototype.isHtmlAllowed;mxRectangleShape.prototype.isHtmlAllowed=function(){return(null== -this.style||"0"==mxUtils.getValue(this.style,"comic","0"))&&Ja.apply(this,arguments)};var Ka=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(a,c,b,d,g){if(null==a.handJiggle)Ka.apply(this,arguments);else{var f=!0;null!=this.style&&(f="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(f||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)f||null!=this.fill&&this.fill!=mxConstants.NONE|| -(a.pointerEvents=!1),a.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?f=Math.min(d/2,Math.min(g/2,mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2)):(f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.min(d*f,g*f)),a.moveTo(c+f,b),a.lineTo(c+d-f,b),a.quadTo(c+d,b,c+d,b+f),a.lineTo(c+d,b+g-f),a.quadTo(c+d,b+g,c+d-f,b+g),a.lineTo(c+f,b+g),a.quadTo(c,b+g,c,b+g-f), -a.lineTo(c,b+f),a.quadTo(c,b,c+f,b)):(a.moveTo(c,b),a.lineTo(c+d,b),a.lineTo(c+d,b+g),a.lineTo(c,b+g),a.lineTo(c,b)),a.close(),a.end(),a.fillAndStroke()}};var La=mxRectangleShape.prototype.paintForeground;mxRectangleShape.prototype.paintForeground=function(a,c,b,d,g){null==a.handJiggle&&La.apply(this,arguments)};mxUtils.extend(r,mxRectangleShape);r.prototype.size=.1;r.prototype.isHtmlAllowed=function(){return!1};r.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL, -!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var c=a.width,b=a.height;a=new mxRectangle(a.x,a.y,c,b);var d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,d=Math.max(d,Math.min(c*g,b*g));a.x+=Math.round(d);a.width-=Math.round(2*d)}return a};r.prototype.paintForeground= -function(a,c,b,d,g){var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var h=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(d*h,g*h));f=Math.round(f);a.begin();a.moveTo(c+f,b);a.lineTo(c+f,b+g);a.moveTo(c+d-f,b);a.lineTo(c+d-f,b+g);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("process",r);mxUtils.extend(x, -mxRectangleShape);x.prototype.paintBackground=function(a,c,b,d,g){a.setFillColor(mxConstants.NONE);a.rect(c,b,d,g);a.fill()};x.prototype.paintForeground=function(a,c,b,d,g){};mxCellRenderer.registerShape("transparent",x);mxUtils.extend(v,mxHexagon);v.prototype.size=30;v.prototype.position=.5;v.prototype.position2=.5;v.prototype.base=20;v.prototype.getLabelMargins=function(){return new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};v.prototype.isRoundable= -function(){return!0};v.prototype.redrawPath=function(a,c,b,d,g){c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;b=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),h=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2)))),C=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"base",this.base)))); -this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,g-b),new mxPoint(Math.min(d,f+C),g-b),new mxPoint(h,g),new mxPoint(Math.max(0,f),g-b),new mxPoint(0,g-b)],this.isRounded,c,!0,[4])};mxCellRenderer.registerShape("callout",v);mxUtils.extend(D,mxActor);D.prototype.size=.2;D.prototype.fixedSize=20;D.prototype.isRoundable=function(){return!0};D.prototype.redrawPath=function(a,c,b,d,g){c="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style, -"size",this.fixedSize)))):d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d-c,0),new mxPoint(d,g/2),new mxPoint(d-c,g),new mxPoint(0,g),new mxPoint(c,g/2)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("step",D);mxUtils.extend(y,mxHexagon);y.prototype.size=.25;y.prototype.isRoundable=function(){return!0};y.prototype.redrawPath= -function(a,c,b,d,g){c=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(c,0),new mxPoint(d-c,0),new mxPoint(d,.5*g),new mxPoint(d-c,g),new mxPoint(c,g),new mxPoint(0,.5*g)],this.isRounded,b,!0)};mxCellRenderer.registerShape("hexagon",y);mxUtils.extend(u,mxRectangleShape);u.prototype.isHtmlAllowed=function(){return!1};u.prototype.paintForeground=function(a, -c,b,d,g){var f=Math.min(d/5,g/5)+1;a.begin();a.moveTo(c+d/2,b+f);a.lineTo(c+d/2,b+g-f);a.moveTo(c+f,b+g/2);a.lineTo(c+d-f,b+g/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",u);var Ea=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var c=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+ -c,a.y+c,a.width-2*c,a.height-2*c)}return a};mxRhombus.prototype.paintVertexShape=function(a,c,b,d,g){Ea.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var f=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);c+=f;b+=f;d-=2*f;g-=2*f;0<d&&0<g&&(a.setShadow(!1),Ea.apply(this,[a,c,b,d,g]))}};mxUtils.extend(A,mxRectangleShape);A.prototype.isHtmlAllowed=function(){return!1};A.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var c=(Math.max(2, -this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+c,a.y+c,a.width-2*c,a.height-2*c)}return a};A.prototype.paintForeground=function(a,c,b,d,g){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var f=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);c+=f;b+=f;d-=2*f;g-=2*f;0<d&&0<g&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var f=0,h;do{h=mxCellRenderer.defaultShapes[this.style["symbol"+ -f]];if(null!=h){var C=this.style["symbol"+f+"Align"],l=this.style["symbol"+f+"VerticalAlign"],m=this.style["symbol"+f+"Width"],t=this.style["symbol"+f+"Height"],r=this.style["symbol"+f+"Spacing"]||0,u=this.style["symbol"+f+"VSpacing"]||r,y=this.style["symbol"+f+"ArcSpacing"];null!=y&&(y*=this.getArcSize(d+this.strokewidth,g+this.strokewidth),r+=y,u+=y);var y=c,v=b,y=C==mxConstants.ALIGN_CENTER?y+(d-m)/2:C==mxConstants.ALIGN_RIGHT?y+(d-m-r):y+r,v=l==mxConstants.ALIGN_MIDDLE?v+(g-t)/2:l==mxConstants.ALIGN_BOTTOM? -v+(g-t-u):v+u;a.save();C=new h;C.style=this.style;h.prototype.paintVertexShape.call(C,a,y,v,m,t);a.restore()}f++}while(null!=h)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",A);mxUtils.extend(F,mxCylinder);F.prototype.redrawPath=function(a,c,b,d,g,f){f?(a.moveTo(0,0),a.lineTo(d/2,g/2),a.lineTo(d,0),a.end()):(a.moveTo(0,0),a.lineTo(d,0),a.lineTo(d,g),a.lineTo(0,g),a.close())};mxCellRenderer.registerShape("message",F);mxUtils.extend(Q,mxShape); -Q.prototype.paintBackground=function(a,c,b,d,g){a.translate(c,b);a.ellipse(d/4,0,d/2,g/4);a.fillAndStroke();a.begin();a.moveTo(d/2,g/4);a.lineTo(d/2,2*g/3);a.moveTo(d/2,g/3);a.lineTo(0,g/3);a.moveTo(d/2,g/3);a.lineTo(d,g/3);a.moveTo(d/2,2*g/3);a.lineTo(0,g);a.moveTo(d/2,2*g/3);a.lineTo(d,g);a.end();a.stroke()};mxCellRenderer.registerShape("umlActor",Q);mxUtils.extend(G,mxShape);G.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};G.prototype.paintBackground=function(a, -c,b,d,g){a.translate(c,b);a.begin();a.moveTo(0,g/4);a.lineTo(0,3*g/4);a.end();a.stroke();a.begin();a.moveTo(0,g/2);a.lineTo(d/6,g/2);a.end();a.stroke();a.ellipse(d/6,0,5*d/6,g);a.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",G);mxUtils.extend(I,mxEllipse);I.prototype.paintVertexShape=function(a,c,b,d,g){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(c+d/8,b+g);a.lineTo(c+7*d/8,b+g);a.end();a.stroke()};mxCellRenderer.registerShape("umlEntity",I);mxUtils.extend(M, -mxShape);M.prototype.paintVertexShape=function(a,c,b,d,g){a.translate(c,b);a.begin();a.moveTo(d,0);a.lineTo(0,g);a.moveTo(0,0);a.lineTo(d,g);a.end();a.stroke()};mxCellRenderer.registerShape("umlDestroy",M);mxUtils.extend(z,mxShape);z.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+a.height/8,a.width,7*a.height/8)};z.prototype.paintBackground=function(a,c,b,d,g){a.translate(c,b);a.begin();a.moveTo(3*d/8,g/8*1.1);a.lineTo(5*d/8,0);a.end();a.stroke();a.ellipse(0,g/8,d,7*g/8);a.fillAndStroke()}; -z.prototype.paintForeground=function(a,c,b,d,g){a.begin();a.moveTo(3*d/8,g/8*1.1);a.lineTo(5*d/8,g/4);a.end();a.stroke()};mxCellRenderer.registerShape("umlControl",z);mxUtils.extend(B,mxRectangleShape);B.prototype.size=40;B.prototype.isHtmlAllowed=function(){return!1};B.prototype.getLabelBounds=function(a){var c=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(a.x,a.y,a.width,c)};B.prototype.paintBackground=function(a,c,b,d, -g){var f=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),h=mxUtils.getValue(this.style,"participant");null==h||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,a,c,b,d,f):(h=this.state.view.graph.cellRenderer.getShape(h),null!=h&&h!=B&&(h=new h,h.apply(this.state),a.save(),h.paintVertexShape(a,c,b,d,f),a.restore()));f<g&&(a.setDashed(!0),a.begin(),a.moveTo(c+d/2,b+f),a.lineTo(c+d/2,b+g),a.end(),a.stroke())};B.prototype.paintForeground=function(a, -c,b,d,g){var f=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,a,c,b,d,Math.min(g,f))};mxCellRenderer.registerShape("umlLifeline",B);mxUtils.extend(K,mxShape);K.prototype.width=60;K.prototype.height=30;K.prototype.corner=10;K.prototype.getLabelMargins=function(a){return new mxRectangle(0,0,a.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),a.height-parseFloat(mxUtils.getValue(this.style, -"height",this.height)*this.scale))};K.prototype.paintBackground=function(a,c,b,d,g){var f=this.corner,h=Math.min(d,Math.max(f,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),l=Math.min(g,Math.max(1.5*f,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),C=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);C!=mxConstants.NONE&&(a.setFillColor(C),a.rect(c,b,d,g),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!= -mxConstants.NONE?(this.getGradientBounds(a,c,b,d,g),a.setGradient(this.fill,this.gradient,c,b,d,g,this.gradientDirection)):a.setFillColor(this.fill);a.begin();a.moveTo(c,b);a.lineTo(c+h,b);a.lineTo(c+h,b+Math.max(0,l-1.5*f));a.lineTo(c+Math.max(0,h-f),b+l);a.lineTo(c,b+l);a.close();a.fillAndStroke();a.begin();a.moveTo(c+h,b);a.lineTo(c+d,b);a.lineTo(c+d,b+g);a.lineTo(c,b+g);a.lineTo(c,b+l);a.stroke()};mxCellRenderer.registerShape("umlFrame",K);mxPerimeter.LifelinePerimeter=function(a,c,b,d){d=B.prototype.size; -null!=c&&(d=mxUtils.getValue(c.style,"size",d)*c.view.scale);c=parseFloat(c.style[mxConstants.STYLE_STROKEWIDTH]||1)*c.view.scale/2-1;b.x<a.getCenterX()&&(c=-1*(c+1));return new mxPoint(a.getCenterX()+c,Math.min(a.y+a.height,Math.max(a.y+d,b.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(a,c,b,d){d=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",mxPerimeter.OrthogonalPerimeter); -mxPerimeter.BackbonePerimeter=function(a,c,b,d){d=parseFloat(c.style[mxConstants.STYLE_STROKEWIDTH]||1)*c.view.scale/2-1;null!=c.style.backboneSize&&(d+=parseFloat(c.style.backboneSize)*c.view.scale/2-1);if("south"==c.style[mxConstants.STYLE_DIRECTION]||"north"==c.style[mxConstants.STYLE_DIRECTION])return b.x<a.getCenterX()&&(d=-1*(d+1)),new mxPoint(a.getCenterX()+d,Math.min(a.y+a.height,Math.max(a.y,b.y)));b.y<a.getCenterY()&&(d=-1*(d+1));return new mxPoint(Math.min(a.x+a.width,Math.max(a.x,b.x)), -a.getCenterY()+d)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(a,c,b,d){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(a,new mxRectangle(0,0,0,Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(c.style,"size",v.prototype.size))*c.view.scale))),c.style),c,b,d)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(a,c,b,d){var f=g.prototype.size; -null!=c&&(f=mxUtils.getValue(c.style,"size",f));var h=a.x,l=a.y,m=a.width,C=a.height;c=null!=c?mxUtils.getValue(c.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;c==mxConstants.DIRECTION_NORTH||c==mxConstants.DIRECTION_SOUTH?(f=C*Math.max(0,Math.min(1,f)),l=[new mxPoint(h,l),new mxPoint(h+m,l+f),new mxPoint(h+m,l+C),new mxPoint(h,l+C-f),new mxPoint(h,l)]):(f=m*Math.max(0,Math.min(1,f)),l=[new mxPoint(h+f,l),new mxPoint(h+m,l),new mxPoint(h+m-f,l+C),new mxPoint(h, -l+C),new mxPoint(h+f,l)]);C=a.getCenterX();a=a.getCenterY();a=new mxPoint(C,a);d&&(b.x<h||b.x>h+m?a.y=b.y:a.x=b.x);return mxUtils.getPerimeterPoint(l,a,b)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(a,c,b,d){var g=h.prototype.size;null!=c&&(g=mxUtils.getValue(c.style,"size",g));var f=a.x,l=a.y,m=a.width,C=a.height;c=null!=c?mxUtils.getValue(c.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST; -c==mxConstants.DIRECTION_EAST?(g=m*Math.max(0,Math.min(1,g)),l=[new mxPoint(f+g,l),new mxPoint(f+m-g,l),new mxPoint(f+m,l+C),new mxPoint(f,l+C),new mxPoint(f+g,l)]):c==mxConstants.DIRECTION_WEST?(g=m*Math.max(0,Math.min(1,g)),l=[new mxPoint(f,l),new mxPoint(f+m,l),new mxPoint(f+m-g,l+C),new mxPoint(f+g,l+C),new mxPoint(f,l)]):c==mxConstants.DIRECTION_NORTH?(g=C*Math.max(0,Math.min(1,g)),l=[new mxPoint(f,l+g),new mxPoint(f+m,l),new mxPoint(f+m,l+C),new mxPoint(f,l+C-g),new mxPoint(f,l+g)]):(g=C*Math.max(0, -Math.min(1,g)),l=[new mxPoint(f,l),new mxPoint(f+m,l+g),new mxPoint(f+m,l+C-g),new mxPoint(f,l+C),new mxPoint(f,l)]);C=a.getCenterX();a=a.getCenterY();a=new mxPoint(C,a);d&&(b.x<f||b.x>f+m?a.y=b.y:a.x=b.x);return mxUtils.getPerimeterPoint(l,a,b)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(a,c,b,d){var g="0"!=mxUtils.getValue(c.style,"fixedSize","0"),f=g?D.prototype.fixedSize:D.prototype.size;null!=c&&(f=mxUtils.getValue(c.style, -"size",f));var h=a.x,l=a.y,m=a.width,C=a.height,t=a.getCenterX();a=a.getCenterY();c=null!=c?mxUtils.getValue(c.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;c==mxConstants.DIRECTION_EAST?(g=g?Math.max(0,Math.min(m,f)):m*Math.max(0,Math.min(1,f)),l=[new mxPoint(h,l),new mxPoint(h+m-g,l),new mxPoint(h+m,a),new mxPoint(h+m-g,l+C),new mxPoint(h,l+C),new mxPoint(h+g,a),new mxPoint(h,l)]):c==mxConstants.DIRECTION_WEST?(g=g?Math.max(0,Math.min(m,f)):m*Math.max(0, -Math.min(1,f)),l=[new mxPoint(h+g,l),new mxPoint(h+m,l),new mxPoint(h+m-g,a),new mxPoint(h+m,l+C),new mxPoint(h+g,l+C),new mxPoint(h,a),new mxPoint(h+g,l)]):c==mxConstants.DIRECTION_NORTH?(g=g?Math.max(0,Math.min(C,f)):C*Math.max(0,Math.min(1,f)),l=[new mxPoint(h,l+g),new mxPoint(t,l),new mxPoint(h+m,l+g),new mxPoint(h+m,l+C),new mxPoint(t,l+C-g),new mxPoint(h,l+C),new mxPoint(h,l+g)]):(g=g?Math.max(0,Math.min(C,f)):C*Math.max(0,Math.min(1,f)),l=[new mxPoint(h,l),new mxPoint(t,l+g),new mxPoint(h+ -m,l),new mxPoint(h+m,l+C-g),new mxPoint(t,l+C),new mxPoint(h,l+C-g),new mxPoint(h,l)]);t=new mxPoint(t,a);d&&(b.x<h||b.x>h+m?t.y=b.y:t.x=b.x);return mxUtils.getPerimeterPoint(l,t,b)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(a,c,b,d){var g=y.prototype.size;null!=c&&(g=mxUtils.getValue(c.style,"size",g));var f=a.x,h=a.y,l=a.width,m=a.height,C=a.getCenterX();a=a.getCenterY();c=null!=c?mxUtils.getValue(c.style,mxConstants.STYLE_DIRECTION, -mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;c==mxConstants.DIRECTION_NORTH||c==mxConstants.DIRECTION_SOUTH?(g=m*Math.max(0,Math.min(1,g)),h=[new mxPoint(C,h),new mxPoint(f+l,h+g),new mxPoint(f+l,h+m-g),new mxPoint(C,h+m),new mxPoint(f,h+m-g),new mxPoint(f,h+g),new mxPoint(C,h)]):(g=l*Math.max(0,Math.min(1,g)),h=[new mxPoint(f+g,h),new mxPoint(f+l-g,h),new mxPoint(f+l,a),new mxPoint(f+l-g,h+m),new mxPoint(f+g,h+m),new mxPoint(f,a),new mxPoint(f+g,h)]);C=new mxPoint(C,a);d&&(b.x<f||b.x>f+ -l?C.y=b.y:C.x=b.x);return mxUtils.getPerimeterPoint(h,C,b)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(O,mxShape);O.prototype.size=10;O.prototype.paintBackground=function(a,c,b,d,g){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size));a.translate(c,b);a.ellipse((d-f)/2,0,f,f);a.fillAndStroke();a.begin();a.moveTo(d/2,f);a.lineTo(d/2,g);a.end();a.stroke()};mxCellRenderer.registerShape("lollipop",O);mxUtils.extend(T,mxShape);T.prototype.size= -10;T.prototype.inset=2;T.prototype.paintBackground=function(a,c,b,d,g){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size)),h=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(c,b);a.begin();a.moveTo(d/2,f+h);a.lineTo(d/2,g);a.end();a.stroke();a.begin();a.moveTo((d-f)/2-h,f/2);a.quadTo((d-f)/2-h,f+h,d/2,f+h);a.quadTo((d+f)/2+h,f+h,(d+f)/2+h,f/2);a.end();a.stroke()};mxCellRenderer.registerShape("requires",T);mxUtils.extend(W,mxShape);W.prototype.paintBackground= -function(a,c,b,d,g){a.translate(c,b);a.begin();a.moveTo(0,0);a.quadTo(d,0,d,g/2);a.quadTo(d,g,0,g);a.end();a.stroke()};mxCellRenderer.registerShape("requiredInterface",W);mxUtils.extend(V,mxShape);V.prototype.inset=2;V.prototype.paintBackground=function(a,c,b,d,g){var f=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(c,b);a.ellipse(0,f,d-2*f,g-2*f);a.fillAndStroke();a.begin();a.moveTo(d/2,0);a.quadTo(d,0,d,g/2);a.quadTo(d,g,d/2,g);a.end();a.stroke()};mxCellRenderer.registerShape("providedRequiredInterface", -V);mxUtils.extend(J,mxCylinder);J.prototype.jettyWidth=32;J.prototype.jettyHeight=12;J.prototype.redrawPath=function(a,c,b,d,g,f){var h=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));c=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));b=h/2;var h=b+h/2,l=.3*g-c/2,m=.7*g-c/2;f?(a.moveTo(b,l),a.lineTo(h,l),a.lineTo(h,l+c),a.lineTo(b,l+c),a.moveTo(b,m),a.lineTo(h,m),a.lineTo(h,m+c),a.lineTo(b,m+c)):(a.moveTo(b,0),a.lineTo(d,0),a.lineTo(d,g),a.lineTo(b,g), -a.lineTo(b,m+c),a.lineTo(0,m+c),a.lineTo(0,m),a.lineTo(b,m),a.lineTo(b,l+c),a.lineTo(0,l+c),a.lineTo(0,l),a.lineTo(b,l),a.close());a.end()};mxCellRenderer.registerShape("component",J);mxUtils.extend(ha,mxDoubleEllipse);ha.prototype.outerStroke=!0;ha.prototype.paintVertexShape=function(a,c,b,d,g){var f=Math.min(4,Math.min(d/5,g/5));0<d&&0<g&&(a.ellipse(c+f,b+f,d-2*f,g-2*f),a.fillAndStroke());a.setShadow(!1);this.outerStroke&&(a.ellipse(c,b,d,g),a.stroke())};mxCellRenderer.registerShape("endState", -ha);mxUtils.extend(na,ha);na.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",na);mxUtils.extend(Y,mxArrowConnector);Y.prototype.defaultWidth=4;Y.prototype.isOpenEnded=function(){return!0};Y.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};Y.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",Y);mxUtils.extend(ba,mxArrowConnector);ba.prototype.defaultWidth=10; -ba.prototype.defaultArrowWidth=20;ba.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};ba.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};ba.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",ba);mxUtils.extend(N,mxActor); -N.prototype.size=30;N.prototype.isRoundable=function(){return!0};N.prototype.redrawPath=function(a,c,b,d,g){c=Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.size)));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,g),new mxPoint(0,c),new mxPoint(d,0),new mxPoint(d,g)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("manualInput",N);mxUtils.extend(H,mxRectangleShape);H.prototype.dx=20;H.prototype.dy=20;H.prototype.isHtmlAllowed= -function(){return!1};H.prototype.paintForeground=function(a,c,b,d,g){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var f=0;if(this.isRounded)var h=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(d*h,g*h));h=Math.max(f,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));f=Math.max(f,Math.min(g,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(c,b+f);a.lineTo(c+d,b+f); -a.end();a.stroke();a.begin();a.moveTo(c+h,b);a.lineTo(c+h,b+g);a.end();a.stroke()};mxCellRenderer.registerShape("internalStorage",H);mxUtils.extend(U,mxActor);U.prototype.dx=20;U.prototype.dy=20;U.prototype.redrawPath=function(a,c,b,d,g){c=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));b=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE, -mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,b),new mxPoint(c,b),new mxPoint(c,g),new mxPoint(0,g)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("corner",U);mxUtils.extend(L,mxActor);L.prototype.redrawPath=function(a,c,b,d,g){a.moveTo(0,0);a.lineTo(0,g);a.end();a.moveTo(d,0);a.lineTo(d,g);a.end();a.moveTo(0,g/2);a.lineTo(d,g/2);a.end()};mxCellRenderer.registerShape("crossbar",L);mxUtils.extend(P,mxActor);P.prototype.dx=20;P.prototype.dy= -20;P.prototype.redrawPath=function(a,c,b,d,g){c=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));b=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,b),new mxPoint((d+c)/2,b),new mxPoint((d+c)/2,g),new mxPoint((d-c)/2,g),new mxPoint((d- -c)/2,b),new mxPoint(0,b)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("tee",P);mxUtils.extend(R,mxActor);R.prototype.arrowWidth=.3;R.prototype.arrowSize=.2;R.prototype.redrawPath=function(a,c,b,d,g){var f=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth))));c=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));b=(g-f)/2;var f=b+f,h=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/ -2;this.addPoints(a,[new mxPoint(0,b),new mxPoint(d-c,b),new mxPoint(d-c,0),new mxPoint(d,g/2),new mxPoint(d-c,g),new mxPoint(d-c,f),new mxPoint(0,f)],this.isRounded,h,!0);a.end()};mxCellRenderer.registerShape("singleArrow",R);mxUtils.extend(ja,mxActor);ja.prototype.redrawPath=function(a,c,b,d,g){var f=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",R.prototype.arrowWidth))));c=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",R.prototype.arrowSize)))); -b=(g-f)/2;var f=b+f,h=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,g/2),new mxPoint(c,0),new mxPoint(c,b),new mxPoint(d-c,b),new mxPoint(d-c,0),new mxPoint(d,g/2),new mxPoint(d-c,g),new mxPoint(d-c,f),new mxPoint(c,f),new mxPoint(c,g)],this.isRounded,h,!0);a.end()};mxCellRenderer.registerShape("doubleArrow",ja);mxUtils.extend(E,mxActor);E.prototype.size=.1;E.prototype.redrawPath=function(a,c,b,d,g){c=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style, -"size",this.size))));a.moveTo(c,0);a.lineTo(d,0);a.quadTo(d-2*c,g/2,d,g);a.lineTo(c,g);a.quadTo(c-2*c,g/2,c,0);a.close();a.end()};mxCellRenderer.registerShape("dataStorage",E);mxUtils.extend(ea,mxActor);ea.prototype.redrawPath=function(a,c,b,d,g){a.moveTo(0,0);a.quadTo(d,0,d,g/2);a.quadTo(d,g,0,g);a.close();a.end()};mxCellRenderer.registerShape("or",ea);mxUtils.extend(X,mxActor);X.prototype.redrawPath=function(a,c,b,d,g){a.moveTo(0,0);a.quadTo(d,0,d,g/2);a.quadTo(d,g,0,g);a.quadTo(d/2,g/2,0,0);a.close(); -a.end()};mxCellRenderer.registerShape("xor",X);mxUtils.extend(Z,mxActor);Z.prototype.size=20;Z.prototype.isRoundable=function(){return!0};Z.prototype.redrawPath=function(a,c,b,d,g){c=Math.min(d/2,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(c,0),new mxPoint(d-c,0),new mxPoint(d,.8*c),new mxPoint(d,g),new mxPoint(0,g),new mxPoint(0,.8*c)],this.isRounded,b,!0); -a.end()};mxCellRenderer.registerShape("loopLimit",Z);mxUtils.extend(ca,mxActor);ca.prototype.size=.375;ca.prototype.isRoundable=function(){return!0};ca.prototype.redrawPath=function(a,c,b,d,g){c=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,g-c),new mxPoint(d/2,g),new mxPoint(0,g-c)],this.isRounded,b,!0);a.end()}; -mxCellRenderer.registerShape("offPageConnector",ca);mxUtils.extend(fa,mxEllipse);fa.prototype.paintVertexShape=function(a,c,b,d,g){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(c+d/2,b+g);a.lineTo(c+d,b+g);a.end();a.stroke()};mxCellRenderer.registerShape("tapeData",fa);mxUtils.extend(aa,mxEllipse);aa.prototype.paintVertexShape=function(a,c,b,d,g){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(c,b+g/2);a.lineTo(c+d,b+g/ -2);a.end();a.stroke();a.begin();a.moveTo(c+d/2,b);a.lineTo(c+d/2,b+g);a.end();a.stroke()};mxCellRenderer.registerShape("orEllipse",aa);mxUtils.extend(qa,mxEllipse);qa.prototype.paintVertexShape=function(a,c,b,d,g){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(c+.145*d,b+.145*g);a.lineTo(c+.855*d,b+.855*g);a.end();a.stroke();a.begin();a.moveTo(c+.855*d,b+.145*g);a.lineTo(c+.145*d,b+.855*g);a.end();a.stroke()};mxCellRenderer.registerShape("sumEllipse", -qa);mxUtils.extend(sa,mxRhombus);sa.prototype.paintVertexShape=function(a,c,b,d,g){mxRhombus.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(c,b+g/2);a.lineTo(c+d,b+g/2);a.end();a.stroke()};mxCellRenderer.registerShape("sortShape",sa);mxUtils.extend(la,mxEllipse);la.prototype.paintVertexShape=function(a,c,b,d,g){a.begin();a.moveTo(c,b);a.lineTo(c+d,b);a.lineTo(c+d/2,b+g/2);a.close();a.fillAndStroke();a.begin();a.moveTo(c,b+g);a.lineTo(c+d,b+g);a.lineTo(c+d/2,b+ -g/2);a.close();a.fillAndStroke()};mxCellRenderer.registerShape("collate",la);mxUtils.extend(oa,mxEllipse);oa.prototype.paintVertexShape=function(a,c,b,d,g){var f=b+g-5;a.begin();a.moveTo(c,b);a.lineTo(c,b+g);a.moveTo(c,f);a.lineTo(c+10,f-5);a.moveTo(c,f);a.lineTo(c+10,f+5);a.moveTo(c,f);a.lineTo(c+d,f);a.moveTo(c+d,b);a.lineTo(c+d,b+g);a.moveTo(c+d,f);a.lineTo(c+d-10,f-5);a.moveTo(c+d,f);a.lineTo(c+d-10,f+5);a.end();a.stroke()};mxCellRenderer.registerShape("dimension",oa);mxUtils.extend(va,mxEllipse); -va.prototype.paintVertexShape=function(a,c,b,d,g){this.outline||a.setStrokeColor(null);mxRectangleShape.prototype.paintBackground.apply(this,arguments);null!=this.style&&(a.setStrokeColor(this.stroke),a.rect(c,b,d,g),a.fill(),a.begin(),a.moveTo(c,b),"1"==mxUtils.getValue(this.style,"top","1")?a.lineTo(c+d,b):a.moveTo(c+d,b),"1"==mxUtils.getValue(this.style,"right","1")?a.lineTo(c+d,b+g):a.moveTo(c+d,b+g),"1"==mxUtils.getValue(this.style,"bottom","1")?a.lineTo(c,b+g):a.moveTo(c,b+g),"1"==mxUtils.getValue(this.style, -"left","1")&&a.lineTo(c,b-this.strokewidth/2),a.end(),a.stroke())};mxCellRenderer.registerShape("partialRectangle",va);mxUtils.extend(ka,mxEllipse);ka.prototype.paintVertexShape=function(a,c,b,d,g){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();"vertical"==mxUtils.getValue(this.style,"line")?(a.moveTo(c+d/2,b),a.lineTo(c+d/2,b+g)):(a.moveTo(c,b+g/2),a.lineTo(c+d,b+g/2));a.end();a.stroke()};mxCellRenderer.registerShape("lineEllipse",ka);mxUtils.extend(ta,mxActor); -ta.prototype.redrawPath=function(a,c,b,d,g){c=Math.min(d,g/2);a.moveTo(0,0);a.lineTo(d-c,0);a.quadTo(d,0,d,g/2);a.quadTo(d,g,d-c,g);a.lineTo(0,g);a.close();a.end()};mxCellRenderer.registerShape("delay",ta);mxUtils.extend(ia,mxActor);ia.prototype.size=.2;ia.prototype.redrawPath=function(a,c,b,d,g){c=Math.min(g,d);var f=Math.max(0,Math.min(c,c*parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=(g-f)/2;b=c+f;var h=(d-f)/2,f=h+f;a.moveTo(0,c);a.lineTo(h,c);a.lineTo(h,0);a.lineTo(f,0);a.lineTo(f, -c);a.lineTo(d,c);a.lineTo(d,b);a.lineTo(f,b);a.lineTo(f,g);a.lineTo(h,g);a.lineTo(h,b);a.lineTo(0,b);a.close();a.end()};mxCellRenderer.registerShape("cross",ia);mxUtils.extend(ga,mxActor);ga.prototype.size=.25;ga.prototype.redrawPath=function(a,c,b,d,g){c=Math.min(d,g/2);b=Math.min(d-c,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*d);a.moveTo(0,g/2);a.lineTo(b,0);a.lineTo(d-c,0);a.quadTo(d,0,d,g/2);a.quadTo(d,g,d-c,g);a.lineTo(b,g);a.close();a.end()};mxCellRenderer.registerShape("display", -ga);mxUtils.extend(da,mxConnector);da.prototype.origPaintEdgeShape=da.prototype.paintEdgeShape;da.prototype.paintEdgeShape=function(a,c,b){for(var d=[],g=0;g<c.length;g++)d.push(mxUtils.clone(c[g]));var g=a.state.dashed,f=a.state.fixDash;da.prototype.origPaintEdgeShape.apply(this,[a,d,b]);3<=a.state.strokeWidth&&(d=mxUtils.getValue(this.style,"fillColor",null),null!=d&&(a.setStrokeColor(d),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(g,f),da.prototype.origPaintEdgeShape.apply(this,[a,c,b])))}; -mxCellRenderer.registerShape("filledEdge",da);"undefined"!==typeof StyleFormatPanel&&function(){var a=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var c=this.format.getSelectionState(),b=a.apply(this,arguments);"umlFrame"==c.style.shape&&b.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});return b}}();mxMarker.addMarker("dash",function(a,c,b,d,g,f,h,l,m,t){var r=g*(h+m+1),u=f*(h+m+1);return function(){a.begin(); -a.moveTo(d.x-r/2-u/2,d.y-u/2+r/2);a.lineTo(d.x+u/2-3*r/2,d.y-3*u/2-r/2);a.stroke()}});mxMarker.addMarker("cross",function(a,c,b,d,g,f,h,l,m,t){var r=g*(h+m+1),u=f*(h+m+1);return function(){a.begin();a.moveTo(d.x-r/2-u/2,d.y-u/2+r/2);a.lineTo(d.x+u/2-3*r/2,d.y-3*u/2-r/2);a.moveTo(d.x-r/2+u/2,d.y-u/2-r/2);a.lineTo(d.x-u/2-3*r/2,d.y-3*u/2+r/2);a.stroke()}});mxMarker.addMarker("circle",ya);mxMarker.addMarker("circlePlus",function(a,c,b,d,g,f,h,l,m,t){var r=d.clone(),u=ya.apply(this,arguments),y=g*(h+ -2*m),v=f*(h+2*m);return function(){u.apply(this,arguments);a.begin();a.moveTo(r.x-g*m,r.y-f*m);a.lineTo(r.x-2*y+g*m,r.y-2*v+f*m);a.moveTo(r.x-y-v+f*m,r.y-v+y-g*m);a.lineTo(r.x+v-y-f*m,r.y-v-y+g*m);a.stroke()}});mxMarker.addMarker("async",function(a,c,b,d,g,f,h,l,m,t){c=g*m*1.118;b=f*m*1.118;g*=h+m;f*=h+m;var r=d.clone();r.x-=c;r.y-=b;d.x+=1*-g-c;d.y+=1*-f-b;return function(){a.begin();a.moveTo(r.x,r.y);l?a.lineTo(r.x-g-f/2,r.y-f+g/2):a.lineTo(r.x+f/2-g,r.y-f-g/2);a.lineTo(r.x-g,r.y-f);a.close();t? -a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync",function(a){a=null!=a?a:2;return function(c,b,d,g,f,h,l,m,r,t){f*=l+r;h*=l+r;var u=g.clone();return function(){c.begin();c.moveTo(u.x,u.y);m?c.lineTo(u.x-f-h/a,u.y-h+f/a):c.lineTo(u.x+h/a-f,u.y-h-f/a);c.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Fa=function(a,c,b){return ua(a,["width"],c,function(c,d,g,f,h){h=a.shape.getEdgeWidth()*a.view.scale+b;return new mxPoint(f.x+d*c/4+g*h/2,f.y+g*c/4-d*h/2)},function(c,d,g,f,h, -l){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,h.x,h.y,l.x,l.y));a.style.width=Math.round(2*c)/a.view.scale-b})},ua=function(a,c,b,d,g){return S(a,c,function(c){var g=a.absolutePoints,f=g.length-1;c=a.view.translate;var h=a.view.scale,l=b?g[0]:g[f],g=b?g[1]:g[f-1],f=g.x-l.x,m=g.y-l.y,r=Math.sqrt(f*f+m*m),l=d.call(this,r,f/r,m/r,l,g);return new mxPoint(l.x/h-c.x,l.y/h-c.y)},function(c,d,f){var h=a.absolutePoints,l=h.length-1;c=a.view.translate;var m=a.view.scale,r=b?h[0]:h[l],h=b?h[1]:h[l-1],l=h.x-r.x, -t=h.y-r.y,u=Math.sqrt(l*l+t*t);d.x=(d.x+c.x)*m;d.y=(d.y+c.y)*m;g.call(this,u,l/u,t/u,r,h,d,f)})},pa=function(a){return function(c){return[S(c,["arrowWidth","arrowSize"],function(c){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",R.prototype.arrowWidth))),d=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",R.prototype.arrowSize)));return new mxPoint(c.x+(1-d)*c.width,c.y+(1-b)*c.height/2)},function(c,b){this.state.style.arrowWidth=Math.max(0,Math.min(1, -Math.abs(c.y+c.height/2-b.y)/c.height*2));this.state.style.arrowSize=Math.max(0,Math.min(a,(c.x+c.width-b.x)/c.width))})]}},Da=function(a,c,b){return function(d){var g=[S(d,["size"],function(b){var d=Math.max(0,Math.min(b.width,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",c)))))*a;return new mxPoint(b.x+d,b.y+d)},function(c,b){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(c.width,b.x-c.x),Math.min(c.height,b.y-c.y)))/a)})];b&&mxUtils.getValue(d.style,mxConstants.STYLE_ROUNDED, -!1)&&g.push(ma(d));return g}},za=function(a,c,b,d,g){b=null!=b?b:1;return function(f){var h=[S(f,["size"],function(c){var b=null!=g?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,d=parseFloat(mxUtils.getValue(this.state.style,"size",b?g:a));return new mxPoint(c.x+Math.max(0,Math.min(c.width,d*(b?1:c.width))),c.getCenterY())},function(a,c,d){var h=null!=g?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null;a=h?c.x-a.x:Math.max(0,Math.min(b,(c.x-a.x)/a.width));h&&!mxEvent.isAltDown(d.getEvent())&& -(a=f.view.graph.snap(a));this.state.style.size=a},null,d)];c&&mxUtils.getValue(f.style,mxConstants.STYLE_ROUNDED,!1)&&h.push(ma(f));return h}},Ga=function(a){return function(c){var b=[S(c,["size"],function(c){var b=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.state.style,"size",h.prototype.size))));return new mxPoint(c.x+b*c.width*.75,c.y+c.height/4)},function(c,b){this.state.style.size=Math.max(0,Math.min(a,(b.x-c.x)/(.75*c.width)))},null,!0)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED, -!1)&&b.push(ma(c));return b}},xa=function(){return function(a){var c=[];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&c.push(ma(a));return c}},ma=function(a,c){return S(a,[mxConstants.STYLE_ARCSIZE],function(b){var d=null!=c?c:b.height/8;if("1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var g=mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(b.x+b.width-Math.min(b.width/2,g),b.y+d)}g=Math.max(0,parseFloat(mxUtils.getValue(a.style, -mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(b.x+b.width-Math.min(Math.max(b.width/2,b.height/2),Math.min(b.width,b.height)*g),b.y+d)},function(c,b,d){"1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(c.width,2*(c.x+c.width-b.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(c.width-b.x+c.x)/Math.min(c.width,c.height))))})}, -S=function(a,c,b,d,g,f){var h=new mxHandle(a,null,mxVertexHandler.prototype.secondaryHandleImage);h.execute=function(){for(var a=0;a<c.length;a++)this.copyStyle(c[a])};h.getPosition=b;h.setPosition=d;h.ignoreGrid=null!=g?g:!0;if(f){var l=h.positionChanged;h.positionChanged=function(){l.apply(this,arguments);a.view.invalidate(this.state.cell);a.view.validate()}}return h},Aa={link:function(a){return[Fa(a,!0,10),Fa(a,!1,10)]},flexArrow:function(a){var c=a.view.graph.gridSize/a.view.scale,b=[];mxUtils.getValue(a.style, -mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(b.push(ua(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(c,b,d,g,f){c=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(g.x+b*(f+a.shape.strokewidth*a.view.scale)+d*c/2,g.y+d*(f+a.shape.strokewidth*a.view.scale)-b*c/2)},function(b,d,g,f,h,l,m){b=Math.sqrt(mxUtils.ptSegDistSq(f.x, -f.y,h.x,h.y,l.x,l.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+g,f.y-d,l.x,l.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*b)/a.view.scale;mxEvent.isControlDown(m.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(m.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<c/6&&(a.style[mxConstants.STYLE_STARTSIZE]= -a.style[mxConstants.STYLE_ENDSIZE])})),b.push(ua(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(c,b,d,g,f){c=(a.shape.getStartArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(g.x+b*(f+a.shape.strokewidth*a.view.scale)+d*c/2,g.y+d*(f+a.shape.strokewidth*a.view.scale)-b*c/2)},function(b,d,g,f,h,l,m){b=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,h.x, -h.y,l.x,l.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+g,f.y-d,l.x,l.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.startWidth=Math.max(0,Math.round(2*b)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(m.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE],a.style.endWidth=a.style.startWidth);mxEvent.isAltDown(m.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))< -c/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(a.style.startWidth)-parseFloat(a.style.endWidth))<c&&(a.style.startWidth=a.style.endWidth))})));mxUtils.getValue(a.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(b.push(ua(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(c,b,d,g,f){c=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/ -5)*a.view.scale;return new mxPoint(g.x+b*(f+a.shape.strokewidth*a.view.scale)-d*c/2,g.y+d*(f+a.shape.strokewidth*a.view.scale)+b*c/2)},function(b,d,g,f,h,l,m){b=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,h.x,h.y,l.x,l.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+g,f.y-d,l.x,l.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*b)/a.view.scale;mxEvent.isControlDown(m.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]); -mxEvent.isAltDown(m.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<c/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE])})),b.push(ua(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(c,b,d,g,f){c=(a.shape.getEndArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(g.x+ -b*(f+a.shape.strokewidth*a.view.scale)-d*c/2,g.y+d*(f+a.shape.strokewidth*a.view.scale)+b*c/2)},function(b,d,g,f,h,l,m){b=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,h.x,h.y,l.x,l.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+g,f.y-d,l.x,l.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.endWidth=Math.max(0,Math.round(2*b)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(m.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE], -a.style.startWidth=a.style.endWidth);mxEvent.isAltDown(m.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<c/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(a.style.endWidth)-parseFloat(a.style.startWidth))<c&&(a.style.endWidth=a.style.startWidth))})));return b},swimlane:function(a){var c=[S(a,[mxConstants.STYLE_STARTSIZE],function(c){var b=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE, -mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(c.getCenterX(),c.y+Math.max(0,Math.min(c.height,b))):new mxPoint(c.x+Math.max(0,Math.min(c.width,b)),c.getCenterY())},function(c,b){a.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(c.height,b.y-c.y))):Math.round(Math.max(0,Math.min(c.width,b.x-c.x)))})];if(mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED)){var b= -parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));c.push(ma(a,b/2))}return c},label:xa(),ext:xa(),rectangle:xa(),triangle:xa(),rhombus:xa(),umlLifeline:function(a){return[S(a,["size"],function(a){var c=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",B.prototype.size))));return new mxPoint(a.getCenterX(),a.y+c)},function(a,c){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,c.y-a.y)))},!1)]},umlFrame:function(a){return[S(a, -["width","height"],function(a){var c=Math.max(K.prototype.corner,Math.min(a.width,mxUtils.getValue(this.state.style,"width",K.prototype.width))),b=Math.max(1.5*K.prototype.corner,Math.min(a.height,mxUtils.getValue(this.state.style,"height",K.prototype.height)));return new mxPoint(a.x+c,a.y+b)},function(a,c){this.state.style.width=Math.round(Math.max(K.prototype.corner,Math.min(a.width,c.x-a.x)));this.state.style.height=Math.round(Math.max(1.5*K.prototype.corner,Math.min(a.height,c.y-a.y)))},!1)]}, -process:function(a){var c=[S(a,["size"],function(a){var c=Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.state.style,"size",r.prototype.size))));return new mxPoint(a.x+a.width*c,a.y+a.height/4)},function(a,c){this.state.style.size=Math.max(0,Math.min(.5,(c.x-a.x)/a.width))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&c.push(ma(a));return c},cross:function(a){return[S(a,["size"],function(a){var c=Math.min(a.width,a.height),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style, -"size",ia.prototype.size)))*c/2;return new mxPoint(a.getCenterX()-c,a.getCenterY()-c)},function(a,c){var b=Math.min(a.width,a.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,a.getCenterY()-c.y)/b*2,Math.max(0,a.getCenterX()-c.x)/b*2)))})]},note:function(a){return[S(a,["size"],function(a){var c=Math.max(0,Math.min(a.width,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",k.prototype.size)))));return new mxPoint(a.x+a.width-c,a.y+c)},function(a,c){this.state.style.size= -Math.round(Math.max(0,Math.min(Math.min(a.width,a.x+a.width-c.x),Math.min(a.height,c.y-a.y))))})]},manualInput:function(a){var c=[S(a,["size"],function(a){var c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",N.prototype.size)));return new mxPoint(a.x+a.width/4,a.y+3*c/4)},function(a,c){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,4*(c.y-a.y)/3)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&c.push(ma(a));return c},dataStorage:function(a){return[S(a, -["size"],function(a){var c=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",E.prototype.size))));return new mxPoint(a.x+(1-c)*a.width,a.getCenterY())},function(a,c){this.state.style.size=Math.max(0,Math.min(1,(a.x+a.width-c.x)/a.width))})]},callout:function(a){var c=[S(a,["size","position"],function(a){var c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",v.prototype.size))),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",v.prototype.position))); -mxUtils.getValue(this.state.style,"base",v.prototype.base);return new mxPoint(a.x+b*a.width,a.y+a.height-c)},function(a,c){mxUtils.getValue(this.state.style,"base",v.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(a.height,a.y+a.height-c.y)));this.state.style.position=Math.round(100*Math.max(0,Math.min(1,(c.x-a.x)/a.width)))/100}),S(a,["position2"],function(a){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",v.prototype.position2)));return new mxPoint(a.x+ -c*a.width,a.y+a.height)},function(a,c){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(c.x-a.x)/a.width)))/100}),S(a,["base"],function(a){var c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",v.prototype.size))),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",v.prototype.position))),d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"base",v.prototype.base)));return new mxPoint(a.x+Math.min(a.width,b*a.width+d),a.y+a.height- -c)},function(a,c){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",v.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(a.width,c.x-a.x-b*a.width)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&c.push(ma(a));return c},internalStorage:function(a){var c=[S(a,["dx","dy"],function(a){var c=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",H.prototype.dx))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy", -H.prototype.dy)));return new mxPoint(a.x+c,a.y+b)},function(a,c){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,c.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,c.y-a.y)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&c.push(ma(a));return c},corner:function(a){return[S(a,["dx","dy"],function(a){var c=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",U.prototype.dx))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy", -U.prototype.dy)));return new mxPoint(a.x+c,a.y+b)},function(a,c){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,c.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,c.y-a.y)))})]},tee:function(a){return[S(a,["dx","dy"],function(a){var c=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",P.prototype.dx))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",P.prototype.dy)));return new mxPoint(a.x+(a.width+c)/2,a.y+b)},function(a,c){this.state.style.dx= -Math.round(Math.max(0,2*Math.min(a.width/2,c.x-a.x-a.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,c.y-a.y)))})]},singleArrow:pa(1),doubleArrow:pa(.5),folder:function(a){return[S(a,["tabWidth","tabHeight"],function(a){var c=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"tabWidth",p.prototype.tabWidth))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"tabHeight",p.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",p.prototype.tabPosition)== -mxConstants.ALIGN_RIGHT&&(c=a.width-c);return new mxPoint(a.x+c,a.y+b)},function(a,c){var b=Math.max(0,Math.min(a.width,c.x-a.x));mxUtils.getValue(this.state.style,"tabPosition",p.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(b=a.width-b);this.state.style.tabWidth=Math.round(b);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(a.height,c.y-a.y)))})]},document:function(a){return[S(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",c.prototype.size)))); -return new mxPoint(a.x+3*a.width/4,a.y+(1-b)*a.height)},function(a,c){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-c.y)/a.height))})]},tape:function(a){return[S(a,["size"],function(a){var c=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",w.prototype.size))));return new mxPoint(a.getCenterX(),a.y+c*a.height/2)},function(a,c){this.state.style.size=Math.max(0,Math.min(1,(c.y-a.y)/a.height*2))})]},offPageConnector:function(a){return[S(a,["size"],function(a){var c= -Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ca.prototype.size))));return new mxPoint(a.getCenterX(),a.y+(1-c)*a.height)},function(a,c){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-c.y)/a.height))})]},step:za(D.prototype.size,!0,null,!0,D.prototype.fixedSize),hexagon:za(y.prototype.size,!0,.5,!0),curlyBracket:za(l.prototype.size,!1),display:za(ga.prototype.size,!1),cube:Da(1,a.prototype.size,!1),card:Da(.5,q.prototype.size,!0),loopLimit:Da(.5,Z.prototype.size, -!0),trapezoid:Ga(.5),parallelogram:Ga(1)};Graph.createHandle=S;Graph.handleFactory=Aa;mxVertexHandler.prototype.createCustomHandles=function(){if(1==this.state.view.graph.getSelectionCount()&&this.graph.isCellRotatable(this.state.cell)){var a=this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_RECTANGLE);a=Aa[a];null==a&&null!=this.state.shape&&this.state.shape.isRoundable()&&(a=Aa[mxConstants.SHAPE_RECTANGLE]);if(null!=a)return a(this.state)}return null}; -mxEdgeHandler.prototype.createCustomHandles=function(){if(1==this.state.view.graph.getSelectionCount()){var a=this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_CONNECTOR);a=Aa[a];if(null!=a)return a(this.state)}return null}}else Graph.createHandle=function(){},Graph.handleFactory={};var Ba=new mxPoint(1,0),Ca=new mxPoint(1,0),pa=mxUtils.toRadians(-30),Ba=mxUtils.getRotatedPoint(Ba,Math.cos(pa),Math.sin(pa)),pa=mxUtils.toRadians(-150), -Ca=mxUtils.getRotatedPoint(Ca,Math.cos(pa),Math.sin(pa));mxEdgeStyle.IsometricConnector=function(a,c,b,d,g){var f=a.view;d=null!=d&&0<d.length?d[0]:null;var h=a.absolutePoints,l=h[0],h=h[h.length-1];null!=d&&(d=f.transformControlPoint(a,d));null==l&&null!=c&&(l=new mxPoint(c.getCenterX(),c.getCenterY()));null==h&&null!=b&&(h=new mxPoint(b.getCenterX(),b.getCenterY()));var m=Ba.x,r=Ba.y,t=Ca.x,u=Ca.y,y="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!=h&&null!=l){a=function(a,c, -b){a-=v.x;var d=c-v.y;c=(u*a-t*d)/(m*u-r*t);a=(r*a-m*d)/(r*t-m*u);y?(b&&(v=new mxPoint(v.x+m*c,v.y+r*c),g.push(v)),v=new mxPoint(v.x+t*a,v.y+u*a)):(b&&(v=new mxPoint(v.x+t*a,v.y+u*a),g.push(v)),v=new mxPoint(v.x+m*c,v.y+r*c));g.push(v)};var v=l;null==d&&(d=new mxPoint(l.x+(h.x-l.x)/2,l.y+(h.y-l.y)/2));a(d.x,d.y,!0);a(h.x,h.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var Ma=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(a,c){if(c== -mxEdgeStyle.IsometricConnector){var b=new mxElbowEdgeHandler(a);b.snapToTerminals=!1;return b}return Ma.apply(this,arguments)};b.prototype.constraints=[];f.prototype.getConstraints=function(a,c,b){a=[];var d=Math.tan(mxUtils.toRadians(30)),g=(.5-d)/2,d=Math.min(c,b/(.5+d));c=(c-d)/2;b=(b-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,b+.25*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c+.5*d,b+d*g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c+d, -b+.25*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c+d,b+.75*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c+.5*d,b+(1-g)*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,b+.75*d));return a};v.prototype.getConstraints=function(a,c,b){a=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position", -this.position));var g=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2))));parseFloat(mxUtils.getValue(this.style,"base",this.base));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,c,.5*(b-d)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,b-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,b-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(b-d)));c>=2*d&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5, +"px",this.secondDiv.style.height=Math.max(0,this.height)+"px",this.secondDiv.style.borderWidth=0>=this.height?"1px 0px 0px 0px":"1px 0px 1px 0px"):(this.div.style.backgroundColor="",this.div.style.borderWidth="",this.div.style.borderStyle="",null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null)),d.consume()}};var g=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv), +this.secondDiv=null);g.apply(this,arguments)};var p=(new Date).getTime(),B=0,x=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(a,d,b,c){x.apply(this,arguments);b!=this.currentTerminalState?(p=(new Date).getTime(),B=0):B=(new Date).getTime()-p;this.currentTerminalState=b};var t=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(a){return null!=this.currentTerminalState&&a.getState()==this.currentTerminalState&& +2E3<B||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&t.apply(this,arguments)};mxVertexHandler.prototype.isCustomHandleEvent=function(a){return!mxEvent.isShiftDown(a.getEvent())};mxEdgeHandler.prototype.createHandleShape=function(a,d){var b=null!=a&&0==a,c=this.state.getVisibleTerminalState(b),f=null!=a&&(0==a||a>=this.state.absolutePoints.length-1||this.constructor==mxElbowEdgeHandler&&2==a)?this.graph.getConnectionConstraint(this.state, +c,b):null,b=null!=(null!=f?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(b),f):null)?this.fixedHandleImage:null!=f&&null!=c?this.terminalHandleImage:this.handleImage;if(null!=b)return b=new mxImageShape(new mxRectangle(0,0,b.width,b.height),b.src),b.preserveImageAspect=!1,b;b=mxConstants.HANDLE_SIZE;this.preferHtml&&--b;return new mxRectangleShape(new mxRectangle(0,0,b,b),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var y=mxVertexHandler.prototype.createSizerShape; +mxVertexHandler.prototype.createSizerShape=function(a,d,b){this.handleImage=d==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:d==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;return y.apply(this,arguments)};var u=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(a){if(null!=a&&1==a.length){var d=this.graph.getModel(),b=d.getParent(a[0]),c=this.graph.getCellGeometry(a[0]);if(d.isEdge(b)&&null!=c&&c.relative&&(d=this.graph.view.getState(a[0]), +null!=d&&2>d.width&&2>d.height&&null!=d.text&&null!=d.text.boundingBox))return mxRectangle.fromRectangle(d.text.boundingBox)}return u.apply(this,arguments)};var A=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(a){var d=this.graph.getModel(),b=d.getParent(a.cell),c=this.graph.getCellGeometry(a.cell);return d.isEdge(b)&&null!=c&&c.relative&&2>a.width&&2>a.height&&null!=a.text&&null!=a.text.boundingBox?(d=a.text.unrotatedBoundingBox||a.text.boundingBox, +new mxRectangle(Math.round(d.x),Math.round(d.y),Math.round(d.width),Math.round(d.height))):A.apply(this,arguments)};var D=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(a,d){var b=this.graph.getModel(),c=b.getParent(this.state.cell),f=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(d)==mxEvent.ROTATION_HANDLE||!b.isEdge(c)||null==f||!f.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&D.apply(this,arguments)};mxVertexHandler.prototype.isRotationHandleVisible= +function(){return this.graph.isEnabled()&&this.rotationEnabled&&this.graph.isCellRotatable(this.state.cell)&&(0>=mxGraphHandler.prototype.maxCells||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)};mxVertexHandler.prototype.rotateClick=function(){this.state.view.graph.turnShapes([this.state.cell])};var U=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(a,d){U.apply(this,arguments);null!=this.graph.graphHandler.first&&null!=this.rotationShape&&null!= +this.rotationShape.node&&(this.rotationShape.node.style.display="none")};var S=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(a,d){S.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none")};var N=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){N.apply(this,arguments);var a=!1;null!=this.rotationShape&&this.rotationShape.node.setAttribute("title", +mxResources.get("rotateTooltip"));var d=mxUtils.bind(this,function(){null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none");null!=this.specialHandle&&(this.specialHandle.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none");this.redrawHandles()});this.selectionHandler=mxUtils.bind(this,function(a,b){d()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE, +this.selectionHandler);this.changeHandler=mxUtils.bind(this,function(a,b){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));d()});this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(a,d){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,this.editingHandler);var b=this.graph.getLinkForCell(this.state.cell),c=this.graph.getLinksForState(this.state);this.updateLinkHint(b, +c);if(null!=b||null!=c&&0<c.length)a=!0;a&&this.redrawHandles()};mxVertexHandler.prototype.updateLinkHint=function(d,b){if(null==d&&(null==b||0==b.length)||1<this.graph.getSelectionCount())null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);else if(null!=d||null!=b&&0<b.length){null==this.linkHint&&(this.linkHint=a(),this.linkHint.style.padding="6px 8px 6px 8px",this.linkHint.style.opacity="1",this.linkHint.style.filter="",this.graph.container.appendChild(this.linkHint)); +this.linkHint.innerHTML="";if(null!=d&&(this.linkHint.appendChild(this.graph.createLinkForHint(d)),this.graph.isEnabled()&&"function"===typeof this.graph.editLink)){var c=document.createElement("img");c.setAttribute("src",Editor.editImage);c.setAttribute("title",mxResources.get("editLink"));c.setAttribute("width","11");c.setAttribute("height","11");c.style.marginLeft="10px";c.style.marginBottom="-1px";c.style.cursor="pointer";this.linkHint.appendChild(c);mxEvent.addListener(c,"click",mxUtils.bind(this, +function(a){this.graph.setSelectionCell(this.state.cell);this.graph.editLink();mxEvent.consume(a)}));c=document.createElement("img");c.setAttribute("src",Dialog.prototype.clearImage);c.setAttribute("title",mxResources.get("removeIt",[mxResources.get("link")]));c.setAttribute("width","13");c.setAttribute("height","10");c.style.marginLeft="4px";c.style.marginBottom="-1px";c.style.cursor="pointer";this.linkHint.appendChild(c);mxEvent.addListener(c,"click",mxUtils.bind(this,function(a){this.graph.setLinkForCell(this.state.cell, +null);mxEvent.consume(a)}))}if(null!=b)for(c=0;c<b.length;c++){var f=document.createElement("div");f.style.marginTop=null!=d||0<c?"6px":"0px";f.appendChild(this.graph.createLinkForHint(b[c].getAttribute("href"),mxUtils.getTextContent(b[c])));this.linkHint.appendChild(f)}}};mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var K=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){K.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this, +function(){return this.state.view.graph.connectionHandler.isEnabled()});var a=mxUtils.bind(this,function(){null!=this.linkHint&&(this.linkHint.style.display=1==this.graph.getSelectionCount()?"":"none");null!=this.labelShape&&(this.labelShape.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none")});this.selectionHandler=mxUtils.bind(this,function(d,b){a()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.selectionHandler); +this.changeHandler=mxUtils.bind(this,function(d,b){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));a();this.redrawHandles()});this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var d=this.graph.getLinkForCell(this.state.cell),b=this.graph.getLinksForState(this.state);if(null!=d||null!=b&&0<b.length)this.updateLinkHint(d,b),this.redrawHandles()};var E=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){E.apply(this, +arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var C=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){C.apply(this);if(null!=this.state&&null!=this.linkHint){var a=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),d=new mxRectangle(this.state.x,this.state.y-22,this.state.width+24,this.state.height+22),b=mxUtils.getBoundingBox(d,this.state.style[mxConstants.STYLE_ROTATION]|| +"0",a),a=null!=b?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,d=null!=this.state.text?this.state.text.boundingBox:null;null==b&&(b=this.state);b=b.y+b.height;null!=d&&(b=Math.max(b,d.y+d.height));this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(b+this.verticalOffset/2+6+this.state.view.graph.tolerance)+"px"}};var M=mxVertexHandler.prototype.reset;mxVertexHandler.prototype.reset= +function(){M.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none")};var O=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){O.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.selectionHandler&&(this.graph.getSelectionModel().removeListener(this.selectionHandler),this.selectionHandler= +null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null);null!=this.editingHandler&&(this.graph.removeListener(this.editingHandler),this.editingHandler=null)};var V=mxEdgeHandler.prototype.redrawHandles;mxEdgeHandler.prototype.redrawHandles=function(){if(null!=this.marker&&(V.apply(this),null!=this.state&&null!=this.linkHint)){var a=this.state;null!=this.state.text&&null!=this.state.text.bounds&&(a=new mxRectangle(a.x,a.y,a.width,a.height), +a.add(this.state.text.bounds));this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(a.y+a.height+6+this.state.view.graph.tolerance)+"px"}};var T=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){T.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var W=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){W.apply(this,arguments);null!=this.linkHint&& +(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.selectionHandler&&(this.graph.getSelectionModel().removeListener(this.selectionHandler),this.selectionHandler=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null)}}();(function(){function a(){mxCylinder.call(this)}function b(){mxActor.call(this)}function e(){mxCylinder.call(this)}function c(){mxCylinder.call(this)}function k(){mxCylinder.call(this)}function m(){mxActor.call(this)}function q(){mxCylinder.call(this)}function r(){mxActor.call(this)}function v(){mxActor.call(this)}function z(){mxActor.call(this)}function d(){mxActor.call(this)}function f(){mxActor.call(this)}function l(){mxActor.call(this)}function n(){mxActor.call(this)}function g(a,d){this.canvas= +a;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.defaultVariation=d;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,g.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,g.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,g.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,g.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo; +this.canvas.curveTo=mxUtils.bind(this,g.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,g.prototype.arcTo)}function p(){mxRectangleShape.call(this)}function B(){mxRectangleShape.call(this)}function x(){mxActor.call(this)}function t(){mxActor.call(this)}function y(){mxActor.call(this)}function u(){mxRectangleShape.call(this)}function A(){mxRectangleShape.call(this)}function D(){mxCylinder.call(this)}function U(){mxShape.call(this)}function S(){mxShape.call(this)} +function N(){mxEllipse.call(this)}function K(){mxShape.call(this)}function E(){mxShape.call(this)}function C(){mxRectangleShape.call(this)}function M(){mxShape.call(this)}function O(){mxShape.call(this)}function V(){mxShape.call(this)}function T(){mxShape.call(this)}function W(){mxShape.call(this)}function J(){mxCylinder.call(this)}function X(){mxDoubleEllipse.call(this)}function la(){mxDoubleEllipse.call(this)}function fa(){mxArrowConnector.call(this);this.spacing=0}function Y(){mxArrowConnector.call(this); +this.spacing=0}function ca(){mxActor.call(this)}function H(){mxRectangleShape.call(this)}function I(){mxActor.call(this)}function aa(){mxActor.call(this)}function L(){mxActor.call(this)}function P(){mxActor.call(this)}function da(){mxActor.call(this)}function Z(){mxActor.call(this)}function G(){mxActor.call(this)}function ja(){mxActor.call(this)}function Q(){mxActor.call(this)}function ha(){mxActor.call(this)}function ka(){mxEllipse.call(this)}function ga(){mxEllipse.call(this)}function ba(){mxEllipse.call(this)} +function wa(){mxRhombus.call(this)}function ua(){mxEllipse.call(this)}function pa(){mxEllipse.call(this)}function ta(){mxEllipse.call(this)}function va(){mxEllipse.call(this)}function ma(){mxActor.call(this)}function ra(){mxActor.call(this)}function ia(){mxActor.call(this)}function ea(){mxConnector.call(this)}function sa(a,d,b,c,f,e,g,l,n,u){g+=n;var F=c.clone();c.x-=f*(2*g+n);c.y-=e*(2*g+n);f*=g+n;e*=g+n;return function(){a.ellipse(F.x-f-g,F.y-e-g,2*g,2*g);u?a.fillAndStroke():a.stroke()}}mxUtils.extend(a, +mxCylinder);a.prototype.size=20;a.prototype.darkOpacity=0;a.prototype.darkOpacity2=0;a.prototype.paintVertexShape=function(a,d,b,c,f){var e=Math.max(0,Math.min(c,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),F=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),g=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));a.translate(d,b);a.begin();a.moveTo(0,0);a.lineTo(c-e,0);a.lineTo(c, +e);a.lineTo(c,f);a.lineTo(e,f);a.lineTo(0,f-e);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=F&&(a.setFillAlpha(Math.abs(F)),a.setFillColor(0>F?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(c-e,0),a.lineTo(c,e),a.lineTo(e,e),a.close(),a.fill()),0!=g&&(a.setFillAlpha(Math.abs(g)),a.setFillColor(0>g?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(e,e),a.lineTo(e,f),a.lineTo(0,f-e),a.close(),a.fill()),a.begin(),a.moveTo(e,f),a.lineTo(e,e),a.lineTo(0, +0),a.moveTo(e,e),a.lineTo(c,e),a.end(),a.stroke())};a.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?(a=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(a,a,0,0)):null};mxCellRenderer.registerShape("cube",a);var xa=Math.tan(mxUtils.toRadians(30)),na=(.5-xa)/2;mxUtils.extend(b,mxActor);b.prototype.size=20;b.prototype.redrawPath=function(a,d,b,c,f){d=Math.min(c,f/xa);a.translate((c-d)/2,(f-d)/2+d/4);a.moveTo(0,.25*d);a.lineTo(.5* +d,d*na);a.lineTo(d,.25*d);a.lineTo(.5*d,(.5-na)*d);a.lineTo(0,.25*d);a.close();a.end()};mxCellRenderer.registerShape("isoRectangle",b);mxUtils.extend(e,mxCylinder);e.prototype.size=20;e.prototype.redrawPath=function(a,d,b,c,f,e){d=Math.min(c,f/(.5+xa));e?(a.moveTo(0,.25*d),a.lineTo(.5*d,(.5-na)*d),a.lineTo(d,.25*d),a.moveTo(.5*d,(.5-na)*d),a.lineTo(.5*d,(1-na)*d)):(a.translate((c-d)/2,(f-d)/2),a.moveTo(0,.25*d),a.lineTo(.5*d,d*na),a.lineTo(d,.25*d),a.lineTo(d,.75*d),a.lineTo(.5*d,(1-na)*d),a.lineTo(0, +.75*d),a.close());a.end()};mxCellRenderer.registerShape("isoCube",e);mxUtils.extend(c,mxCylinder);c.prototype.redrawPath=function(a,d,b,c,f,e){d=Math.min(f/2,Math.round(f/8)+this.strokewidth-1);if(e&&null!=this.fill||!e&&null==this.fill)a.moveTo(0,d),a.curveTo(0,2*d,c,2*d,c,d),e||(a.stroke(),a.begin()),a.translate(0,d/2),a.moveTo(0,d),a.curveTo(0,2*d,c,2*d,c,d),e||(a.stroke(),a.begin()),a.translate(0,d/2),a.moveTo(0,d),a.curveTo(0,2*d,c,2*d,c,d),e||(a.stroke(),a.begin()),a.translate(0,-d);e||(a.moveTo(0, +d),a.curveTo(0,-d/3,c,-d/3,c,d),a.lineTo(c,f-d),a.curveTo(c,f+d/3,0,f+d/3,0,f-d),a.close())};c.prototype.getLabelMargins=function(a){return new mxRectangle(0,2.5*Math.min(a.height/2,Math.round(a.height/8)+this.strokewidth-1)*this.scale,0,0)};mxCellRenderer.registerShape("datastore",c);mxUtils.extend(k,mxCylinder);k.prototype.size=30;k.prototype.darkOpacity=0;k.prototype.paintVertexShape=function(a,d,b,c,f){var e=Math.max(0,Math.min(c,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size))))), +F=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));a.translate(d,b);a.begin();a.moveTo(0,0);a.lineTo(c-e,0);a.lineTo(c,e);a.lineTo(c,f);a.lineTo(0,f);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=F&&(a.setFillAlpha(Math.abs(F)),a.setFillColor(0>F?"#FFFFFF":"#000000"),a.begin(),a.moveTo(c-e,0),a.lineTo(c-e,e),a.lineTo(c,e),a.close(),a.fill()),a.begin(),a.moveTo(c-e,0),a.lineTo(c-e,e),a.lineTo(c,e),a.end(),a.stroke())}; +mxCellRenderer.registerShape("note",k);mxUtils.extend(m,mxActor);m.prototype.redrawPath=function(a,d,b,c,f){a.moveTo(0,0);a.quadTo(c/2,.5*f,c,0);a.quadTo(.5*c,f/2,c,f);a.quadTo(c/2,.5*f,0,f);a.quadTo(.5*c,f/2,0,0);a.end()};mxCellRenderer.registerShape("switch",m);mxUtils.extend(q,mxCylinder);q.prototype.tabWidth=60;q.prototype.tabHeight=20;q.prototype.tabPosition="right";q.prototype.redrawPath=function(a,d,b,c,f,e){d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))); +b=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var F=mxUtils.getValue(this.style,"tabPosition",this.tabPosition);e?"left"==F?(a.moveTo(0,b),a.lineTo(d,b)):(a.moveTo(c-d,b),a.lineTo(c,b)):("left"==F?(a.moveTo(0,0),a.lineTo(d,0),a.lineTo(d,b),a.lineTo(c,b)):(a.moveTo(0,b),a.lineTo(c-d,b),a.lineTo(c-d,0),a.lineTo(c,0)),a.lineTo(c,f),a.lineTo(0,f),a.lineTo(0,b),a.close());a.end()};mxCellRenderer.registerShape("folder",q);mxUtils.extend(r,mxActor);r.prototype.size= +30;r.prototype.isRoundable=function(){return!0};r.prototype.redrawPath=function(a,d,b,c,f){d=Math.max(0,Math.min(c,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(d,0),new mxPoint(c,0),new mxPoint(c,f),new mxPoint(0,f),new mxPoint(0,d)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("card",r);mxUtils.extend(v,mxActor);v.prototype.size=.4;v.prototype.redrawPath= +function(a,d,b,c,f){d=f*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(0,d/2);a.quadTo(c/4,1.4*d,c/2,d/2);a.quadTo(3*c/4,d*(1-1.4),c,d/2);a.lineTo(c,f-d/2);a.quadTo(3*c/4,f-1.4*d,c/2,f-d/2);a.quadTo(c/4,f-d*(1-1.4),0,f-d/2);a.lineTo(0,d/2);a.close();a.end()};v.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"size",this.size),b=a.width,c=a.height;if(null==this.direction||this.direction== +mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)return d*=c,new mxRectangle(a.x,a.y+d,b,c-2*d);d*=b;return new mxRectangle(a.x+d,a.y,b-2*d,c)}return a};mxCellRenderer.registerShape("tape",v);mxUtils.extend(z,mxActor);z.prototype.size=.3;z.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*a.height):null};z.prototype.redrawPath=function(a,d,b,c,f){d=f*Math.max(0, +Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(0,0);a.lineTo(c,0);a.lineTo(c,f-d/2);a.quadTo(3*c/4,f-1.4*d,c/2,f-d/2);a.quadTo(c/4,f-d*(1-1.4),0,f-d/2);a.lineTo(0,d/2);a.close();a.end()};mxCellRenderer.registerShape("document",z);var Ia=mxCylinder.prototype.getCylinderSize;mxCylinder.prototype.getCylinderSize=function(a,d,b,c){var f=mxUtils.getValue(this.style,"size");return null!=f?c*Math.max(0,Math.min(1,f)):Ia.apply(this,arguments)};mxCylinder.prototype.getLabelMargins= +function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=2*mxUtils.getValue(this.style,"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,a.height*d),0,0)}return null};mxUtils.extend(d,mxActor);d.prototype.size=.2;d.prototype.isRoundable=function(){return!0};d.prototype.redrawPath=function(a,d,b,c,f){d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/ +2;this.addPoints(a,[new mxPoint(0,f),new mxPoint(d,0),new mxPoint(c,0),new mxPoint(c-d,f)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("parallelogram",d);mxUtils.extend(f,mxActor);f.prototype.size=.2;f.prototype.isRoundable=function(){return!0};f.prototype.redrawPath=function(a,d,b,c,f){d=c*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0, +f),new mxPoint(d,0),new mxPoint(c-d,0),new mxPoint(c,f)],this.isRounded,b,!0)};mxCellRenderer.registerShape("trapezoid",f);mxUtils.extend(l,mxActor);l.prototype.size=.5;l.prototype.redrawPath=function(a,d,b,c,f){a.setFillColor(null);d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(c,0),new mxPoint(d,0),new mxPoint(d,f/2),new mxPoint(0,f/2),new mxPoint(d, +f/2),new mxPoint(d,f),new mxPoint(c,f)],this.isRounded,b,!1);a.end()};mxCellRenderer.registerShape("curlyBracket",l);mxUtils.extend(n,mxActor);n.prototype.redrawPath=function(a,d,b,c,f){a.setStrokeWidth(1);a.setFillColor(this.stroke);d=c/5;a.rect(0,0,d,f);a.fillAndStroke();a.rect(2*d,0,d,f);a.fillAndStroke();a.rect(4*d,0,d,f);a.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",n);g.prototype.moveTo=function(a,d){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=a;this.lastY= +d;this.firstX=a;this.firstY=d};g.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,arguments));this.originalClose.apply(this.canvas,arguments)};g.prototype.quadTo=function(a,d,b,c){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=c};g.prototype.curveTo=function(a,d,b,c,f,e){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=f;this.lastY=e};g.prototype.arcTo=function(a,d,b,c, +f,e,g){this.originalArcTo.apply(this.canvas,arguments);this.lastX=e;this.lastY=g};g.prototype.lineTo=function(a,d){if(null!=this.lastX&&null!=this.lastY){var b=function(a){return"number"===typeof a?a?0>a?-1:1:a===a?0:NaN:NaN},c=Math.abs(a-this.lastX),f=Math.abs(d-this.lastY),e=Math.sqrt(c*c+f*f);if(2>e){this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=d;return}var g=Math.round(e/10),F=this.defaultVariation;5>g&&(g=5,F/=3);for(var l=b(a-this.lastX)*c/g,b=b(d-this.lastY)*f/g, +c=c/e,f=f/e,e=0;e<g;e++){var n=(Math.random()-.5)*F;this.originalLineTo.call(this.canvas,l*e+this.lastX-n*f,b*e+this.lastY-n*c)}this.originalLineTo.call(this.canvas,a,d)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=d};g.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo}; +var Ja=mxShape.prototype.paint;mxShape.prototype.defaultJiggle=1.5;mxShape.prototype.paint=function(a){null!=this.style&&"0"!=mxUtils.getValue(this.style,"comic","0")&&null==a.handHiggle&&(a.handJiggle=new g(a,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle)));Ja.apply(this,arguments);null!=a.handJiggle&&(a.handJiggle.destroy(),delete a.handJiggle)};mxRhombus.prototype.defaultJiggle=2;var Ka=mxRectangleShape.prototype.isHtmlAllowed;mxRectangleShape.prototype.isHtmlAllowed=function(){return(null== +this.style||"0"==mxUtils.getValue(this.style,"comic","0"))&&Ka.apply(this,arguments)};var La=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(a,d,b,c,f){if(null==a.handJiggle)La.apply(this,arguments);else{var e=!0;null!=this.style&&(e="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(e||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)e||null!=this.fill&&this.fill!=mxConstants.NONE|| +(a.pointerEvents=!1),a.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?e=Math.min(c/2,Math.min(f/2,mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2)):(e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,e=Math.min(c*e,f*e)),a.moveTo(d+e,b),a.lineTo(d+c-e,b),a.quadTo(d+c,b,d+c,b+e),a.lineTo(d+c,b+f-e),a.quadTo(d+c,b+f,d+c-e,b+f),a.lineTo(d+e,b+f),a.quadTo(d,b+f,d,b+f-e), +a.lineTo(d,b+e),a.quadTo(d,b,d+e,b)):(a.moveTo(d,b),a.lineTo(d+c,b),a.lineTo(d+c,b+f),a.lineTo(d,b+f),a.lineTo(d,b)),a.close(),a.end(),a.fillAndStroke()}};var Ma=mxRectangleShape.prototype.paintForeground;mxRectangleShape.prototype.paintForeground=function(a,d,b,c,f){null==a.handJiggle&&Ma.apply(this,arguments)};mxUtils.extend(p,mxRectangleShape);p.prototype.size=.1;p.prototype.isHtmlAllowed=function(){return!1};p.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL, +!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var d=a.width,b=a.height;a=new mxRectangle(a.x,a.y,d,b);var c=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,c=Math.max(c,Math.min(d*f,b*f));a.x+=Math.round(c);a.width-=Math.round(2*c)}return a};p.prototype.paintForeground= +function(a,d,b,c,f){var e=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,e=Math.max(e,Math.min(c*g,f*g));e=Math.round(e);a.begin();a.moveTo(d+e,b);a.lineTo(d+e,b+f);a.moveTo(d+c-e,b);a.lineTo(d+c-e,b+f);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("process",p);mxUtils.extend(B, +mxRectangleShape);B.prototype.paintBackground=function(a,d,b,c,f){a.setFillColor(mxConstants.NONE);a.rect(d,b,c,f);a.fill()};B.prototype.paintForeground=function(a,d,b,c,f){};mxCellRenderer.registerShape("transparent",B);mxUtils.extend(x,mxHexagon);x.prototype.size=30;x.prototype.position=.5;x.prototype.position2=.5;x.prototype.base=20;x.prototype.getLabelMargins=function(){return new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};x.prototype.isRoundable= +function(){return!0};x.prototype.redrawPath=function(a,d,b,c,f){d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;b=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var e=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),g=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2)))),l=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"base",this.base)))); +this.addPoints(a,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,f-b),new mxPoint(Math.min(c,e+l),f-b),new mxPoint(g,f),new mxPoint(Math.max(0,e),f-b),new mxPoint(0,f-b)],this.isRounded,d,!0,[4])};mxCellRenderer.registerShape("callout",x);mxUtils.extend(t,mxActor);t.prototype.size=.2;t.prototype.fixedSize=20;t.prototype.isRoundable=function(){return!0};t.prototype.redrawPath=function(a,d,b,c,f){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style, +"size",this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c-d,0),new mxPoint(c,f/2),new mxPoint(c-d,f),new mxPoint(0,f),new mxPoint(d,f/2)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("step",t);mxUtils.extend(y,mxHexagon);y.prototype.size=.25;y.prototype.isRoundable=function(){return!0};y.prototype.redrawPath= +function(a,d,b,c,f){d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(d,0),new mxPoint(c-d,0),new mxPoint(c,.5*f),new mxPoint(c-d,f),new mxPoint(d,f),new mxPoint(0,.5*f)],this.isRounded,b,!0)};mxCellRenderer.registerShape("hexagon",y);mxUtils.extend(u,mxRectangleShape);u.prototype.isHtmlAllowed=function(){return!1};u.prototype.paintForeground=function(a, +d,b,c,f){var e=Math.min(c/5,f/5)+1;a.begin();a.moveTo(d+c/2,b+e);a.lineTo(d+c/2,b+f-e);a.moveTo(d+e,b+f/2);a.lineTo(d+c-e,b+f/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",u);var Fa=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var d=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+ +d,a.y+d,a.width-2*d,a.height-2*d)}return a};mxRhombus.prototype.paintVertexShape=function(a,d,b,c,f){Fa.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var e=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);d+=e;b+=e;c-=2*e;f-=2*e;0<c&&0<f&&(a.setShadow(!1),Fa.apply(this,[a,d,b,c,f]))}};mxUtils.extend(A,mxRectangleShape);A.prototype.isHtmlAllowed=function(){return!1};A.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var d=(Math.max(2, +this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+d,a.y+d,a.width-2*d,a.height-2*d)}return a};A.prototype.paintForeground=function(a,d,b,c,f){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var e=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);d+=e;b+=e;c-=2*e;f-=2*e;0<c&&0<f&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var e=0,g;do{g=mxCellRenderer.defaultShapes[this.style["symbol"+ +e]];if(null!=g){var l=this.style["symbol"+e+"Align"],F=this.style["symbol"+e+"VerticalAlign"],n=this.style["symbol"+e+"Width"],u=this.style["symbol"+e+"Height"],p=this.style["symbol"+e+"Spacing"]||0,y=this.style["symbol"+e+"VSpacing"]||p,t=this.style["symbol"+e+"ArcSpacing"];null!=t&&(t*=this.getArcSize(c+this.strokewidth,f+this.strokewidth),p+=t,y+=t);var t=d,k=b,t=l==mxConstants.ALIGN_CENTER?t+(c-n)/2:l==mxConstants.ALIGN_RIGHT?t+(c-n-p):t+p,k=F==mxConstants.ALIGN_MIDDLE?k+(f-u)/2:F==mxConstants.ALIGN_BOTTOM? +k+(f-u-y):k+y;a.save();l=new g;l.style=this.style;g.prototype.paintVertexShape.call(l,a,t,k,n,u);a.restore()}e++}while(null!=g)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",A);mxUtils.extend(D,mxCylinder);D.prototype.redrawPath=function(a,d,b,c,f,e){e?(a.moveTo(0,0),a.lineTo(c/2,f/2),a.lineTo(c,0),a.end()):(a.moveTo(0,0),a.lineTo(c,0),a.lineTo(c,f),a.lineTo(0,f),a.close())};mxCellRenderer.registerShape("message",D);mxUtils.extend(U,mxShape); +U.prototype.paintBackground=function(a,d,b,c,f){a.translate(d,b);a.ellipse(c/4,0,c/2,f/4);a.fillAndStroke();a.begin();a.moveTo(c/2,f/4);a.lineTo(c/2,2*f/3);a.moveTo(c/2,f/3);a.lineTo(0,f/3);a.moveTo(c/2,f/3);a.lineTo(c,f/3);a.moveTo(c/2,2*f/3);a.lineTo(0,f);a.moveTo(c/2,2*f/3);a.lineTo(c,f);a.end();a.stroke()};mxCellRenderer.registerShape("umlActor",U);mxUtils.extend(S,mxShape);S.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};S.prototype.paintBackground=function(a, +d,b,c,f){a.translate(d,b);a.begin();a.moveTo(0,f/4);a.lineTo(0,3*f/4);a.end();a.stroke();a.begin();a.moveTo(0,f/2);a.lineTo(c/6,f/2);a.end();a.stroke();a.ellipse(c/6,0,5*c/6,f);a.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",S);mxUtils.extend(N,mxEllipse);N.prototype.paintVertexShape=function(a,d,b,c,f){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(d+c/8,b+f);a.lineTo(d+7*c/8,b+f);a.end();a.stroke()};mxCellRenderer.registerShape("umlEntity",N);mxUtils.extend(K, +mxShape);K.prototype.paintVertexShape=function(a,d,b,c,f){a.translate(d,b);a.begin();a.moveTo(c,0);a.lineTo(0,f);a.moveTo(0,0);a.lineTo(c,f);a.end();a.stroke()};mxCellRenderer.registerShape("umlDestroy",K);mxUtils.extend(E,mxShape);E.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+a.height/8,a.width,7*a.height/8)};E.prototype.paintBackground=function(a,d,b,c,f){a.translate(d,b);a.begin();a.moveTo(3*c/8,f/8*1.1);a.lineTo(5*c/8,0);a.end();a.stroke();a.ellipse(0,f/8,c,7*f/8);a.fillAndStroke()}; +E.prototype.paintForeground=function(a,d,b,c,f){a.begin();a.moveTo(3*c/8,f/8*1.1);a.lineTo(5*c/8,f/4);a.end();a.stroke()};mxCellRenderer.registerShape("umlControl",E);mxUtils.extend(C,mxRectangleShape);C.prototype.size=40;C.prototype.isHtmlAllowed=function(){return!1};C.prototype.getLabelBounds=function(a){var d=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(a.x,a.y,a.width,d)};C.prototype.paintBackground=function(a,d,b,c, +f){var e=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),g=mxUtils.getValue(this.style,"participant");null==g||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,a,d,b,c,e):(g=this.state.view.graph.cellRenderer.getShape(g),null!=g&&g!=C&&(g=new g,g.apply(this.state),a.save(),g.paintVertexShape(a,d,b,c,e),a.restore()));e<f&&(a.setDashed(!0),a.begin(),a.moveTo(d+c/2,b+e),a.lineTo(d+c/2,b+f),a.end(),a.stroke())};C.prototype.paintForeground=function(a, +d,b,c,f){var e=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,a,d,b,c,Math.min(f,e))};mxCellRenderer.registerShape("umlLifeline",C);mxUtils.extend(M,mxShape);M.prototype.width=60;M.prototype.height=30;M.prototype.corner=10;M.prototype.getLabelMargins=function(a){return new mxRectangle(0,0,a.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),a.height-parseFloat(mxUtils.getValue(this.style, +"height",this.height)*this.scale))};M.prototype.paintBackground=function(a,d,b,c,f){var e=this.corner,g=Math.min(c,Math.max(e,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),l=Math.min(f,Math.max(1.5*e,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),F=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);F!=mxConstants.NONE&&(a.setFillColor(F),a.rect(d,b,c,f),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!= +mxConstants.NONE?(this.getGradientBounds(a,d,b,c,f),a.setGradient(this.fill,this.gradient,d,b,c,f,this.gradientDirection)):a.setFillColor(this.fill);a.begin();a.moveTo(d,b);a.lineTo(d+g,b);a.lineTo(d+g,b+Math.max(0,l-1.5*e));a.lineTo(d+Math.max(0,g-e),b+l);a.lineTo(d,b+l);a.close();a.fillAndStroke();a.begin();a.moveTo(d+g,b);a.lineTo(d+c,b);a.lineTo(d+c,b+f);a.lineTo(d,b+f);a.lineTo(d,b+l);a.stroke()};mxCellRenderer.registerShape("umlFrame",M);mxPerimeter.LifelinePerimeter=function(a,d,b,c){c=C.prototype.size; +null!=d&&(c=mxUtils.getValue(d.style,"size",c)*d.view.scale);d=parseFloat(d.style[mxConstants.STYLE_STROKEWIDTH]||1)*d.view.scale/2-1;b.x<a.getCenterX()&&(d=-1*(d+1));return new mxPoint(a.getCenterX()+d,Math.min(a.y+a.height,Math.max(a.y+c,b.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(a,d,b,c){c=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",mxPerimeter.OrthogonalPerimeter); +mxPerimeter.BackbonePerimeter=function(a,d,b,c){c=parseFloat(d.style[mxConstants.STYLE_STROKEWIDTH]||1)*d.view.scale/2-1;null!=d.style.backboneSize&&(c+=parseFloat(d.style.backboneSize)*d.view.scale/2-1);if("south"==d.style[mxConstants.STYLE_DIRECTION]||"north"==d.style[mxConstants.STYLE_DIRECTION])return b.x<a.getCenterX()&&(c=-1*(c+1)),new mxPoint(a.getCenterX()+c,Math.min(a.y+a.height,Math.max(a.y,b.y)));b.y<a.getCenterY()&&(c=-1*(c+1));return new mxPoint(Math.min(a.x+a.width,Math.max(a.x,b.x)), +a.getCenterY()+c)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(a,d,b,c){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(a,new mxRectangle(0,0,0,Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(d.style,"size",x.prototype.size))*d.view.scale))),d.style),d,b,c)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(a,b,c,f){var e=d.prototype.size; +null!=b&&(e=mxUtils.getValue(b.style,"size",e));var g=a.x,l=a.y,F=a.width,n=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(e=n*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(g+F,l+e),new mxPoint(g+F,l+n),new mxPoint(g,l+n-e),new mxPoint(g,l)]):(e=F*Math.max(0,Math.min(1,e)),l=[new mxPoint(g+e,l),new mxPoint(g+F,l),new mxPoint(g+F-e,l+n),new mxPoint(g, +l+n),new mxPoint(g+e,l)]);n=a.getCenterX();a=a.getCenterY();a=new mxPoint(n,a);f&&(c.x<g||c.x>g+F?a.y=c.y:a.x=c.x);return mxUtils.getPerimeterPoint(l,a,c)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(a,d,b,c){var e=f.prototype.size;null!=d&&(e=mxUtils.getValue(d.style,"size",e));var g=a.x,l=a.y,F=a.width,n=a.height;d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST; +d==mxConstants.DIRECTION_EAST?(e=F*Math.max(0,Math.min(1,e)),l=[new mxPoint(g+e,l),new mxPoint(g+F-e,l),new mxPoint(g+F,l+n),new mxPoint(g,l+n),new mxPoint(g+e,l)]):d==mxConstants.DIRECTION_WEST?(e=F*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(g+F,l),new mxPoint(g+F-e,l+n),new mxPoint(g+e,l+n),new mxPoint(g,l)]):d==mxConstants.DIRECTION_NORTH?(e=n*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l+e),new mxPoint(g+F,l),new mxPoint(g+F,l+n),new mxPoint(g,l+n-e),new mxPoint(g,l+e)]):(e=n*Math.max(0, +Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(g+F,l+e),new mxPoint(g+F,l+n-e),new mxPoint(g,l+n),new mxPoint(g,l)]);n=a.getCenterX();a=a.getCenterY();a=new mxPoint(n,a);c&&(b.x<g||b.x>g+F?a.y=b.y:a.x=b.x);return mxUtils.getPerimeterPoint(l,a,b)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(a,d,b,c){var f="0"!=mxUtils.getValue(d.style,"fixedSize","0"),e=f?t.prototype.fixedSize:t.prototype.size;null!=d&&(e=mxUtils.getValue(d.style, +"size",e));var g=a.x,l=a.y,F=a.width,n=a.height,u=a.getCenterX();a=a.getCenterY();d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_EAST?(f=f?Math.max(0,Math.min(F,e)):F*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(g+F-f,l),new mxPoint(g+F,a),new mxPoint(g+F-f,l+n),new mxPoint(g,l+n),new mxPoint(g+f,a),new mxPoint(g,l)]):d==mxConstants.DIRECTION_WEST?(f=f?Math.max(0,Math.min(F,e)):F*Math.max(0, +Math.min(1,e)),l=[new mxPoint(g+f,l),new mxPoint(g+F,l),new mxPoint(g+F-f,a),new mxPoint(g+F,l+n),new mxPoint(g+f,l+n),new mxPoint(g,a),new mxPoint(g+f,l)]):d==mxConstants.DIRECTION_NORTH?(f=f?Math.max(0,Math.min(n,e)):n*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l+f),new mxPoint(u,l),new mxPoint(g+F,l+f),new mxPoint(g+F,l+n),new mxPoint(u,l+n-f),new mxPoint(g,l+n),new mxPoint(g,l+f)]):(f=f?Math.max(0,Math.min(n,e)):n*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(u,l+f),new mxPoint(g+ +F,l),new mxPoint(g+F,l+n-f),new mxPoint(u,l+n),new mxPoint(g,l+n-f),new mxPoint(g,l)]);u=new mxPoint(u,a);c&&(b.x<g||b.x>g+F?u.y=b.y:u.x=b.x);return mxUtils.getPerimeterPoint(l,u,b)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(a,d,b,c){var f=y.prototype.size;null!=d&&(f=mxUtils.getValue(d.style,"size",f));var e=a.x,g=a.y,l=a.width,F=a.height,n=a.getCenterX();a=a.getCenterY();d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION, +mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_NORTH||d==mxConstants.DIRECTION_SOUTH?(f=F*Math.max(0,Math.min(1,f)),g=[new mxPoint(n,g),new mxPoint(e+l,g+f),new mxPoint(e+l,g+F-f),new mxPoint(n,g+F),new mxPoint(e,g+F-f),new mxPoint(e,g+f),new mxPoint(n,g)]):(f=l*Math.max(0,Math.min(1,f)),g=[new mxPoint(e+f,g),new mxPoint(e+l-f,g),new mxPoint(e+l,a),new mxPoint(e+l-f,g+F),new mxPoint(e+f,g+F),new mxPoint(e,a),new mxPoint(e+f,g)]);n=new mxPoint(n,a);c&&(b.x<e||b.x>e+ +l?n.y=b.y:n.x=b.x);return mxUtils.getPerimeterPoint(g,n,b)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(O,mxShape);O.prototype.size=10;O.prototype.paintBackground=function(a,d,b,c,f){var e=parseFloat(mxUtils.getValue(this.style,"size",this.size));a.translate(d,b);a.ellipse((c-e)/2,0,e,e);a.fillAndStroke();a.begin();a.moveTo(c/2,e);a.lineTo(c/2,f);a.end();a.stroke()};mxCellRenderer.registerShape("lollipop",O);mxUtils.extend(V,mxShape);V.prototype.size= +10;V.prototype.inset=2;V.prototype.paintBackground=function(a,d,b,c,f){var e=parseFloat(mxUtils.getValue(this.style,"size",this.size)),g=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(d,b);a.begin();a.moveTo(c/2,e+g);a.lineTo(c/2,f);a.end();a.stroke();a.begin();a.moveTo((c-e)/2-g,e/2);a.quadTo((c-e)/2-g,e+g,c/2,e+g);a.quadTo((c+e)/2+g,e+g,(c+e)/2+g,e/2);a.end();a.stroke()};mxCellRenderer.registerShape("requires",V);mxUtils.extend(T,mxShape);T.prototype.paintBackground= +function(a,d,b,c,f){a.translate(d,b);a.begin();a.moveTo(0,0);a.quadTo(c,0,c,f/2);a.quadTo(c,f,0,f);a.end();a.stroke()};mxCellRenderer.registerShape("requiredInterface",T);mxUtils.extend(W,mxShape);W.prototype.inset=2;W.prototype.paintBackground=function(a,d,b,c,f){var e=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(d,b);a.ellipse(0,e,c-2*e,f-2*e);a.fillAndStroke();a.begin();a.moveTo(c/2,0);a.quadTo(c,0,c,f/2);a.quadTo(c,f,c/2,f);a.end();a.stroke()};mxCellRenderer.registerShape("providedRequiredInterface", +W);mxUtils.extend(J,mxCylinder);J.prototype.jettyWidth=32;J.prototype.jettyHeight=12;J.prototype.redrawPath=function(a,d,b,c,f,e){var g=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));d=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));b=g/2;var g=b+g/2,l=.3*f-d/2,n=.7*f-d/2;e?(a.moveTo(b,l),a.lineTo(g,l),a.lineTo(g,l+d),a.lineTo(b,l+d),a.moveTo(b,n),a.lineTo(g,n),a.lineTo(g,n+d),a.lineTo(b,n+d)):(a.moveTo(b,0),a.lineTo(c,0),a.lineTo(c,f),a.lineTo(b,f), +a.lineTo(b,n+d),a.lineTo(0,n+d),a.lineTo(0,n),a.lineTo(b,n),a.lineTo(b,l+d),a.lineTo(0,l+d),a.lineTo(0,l),a.lineTo(b,l),a.close());a.end()};mxCellRenderer.registerShape("component",J);mxUtils.extend(X,mxDoubleEllipse);X.prototype.outerStroke=!0;X.prototype.paintVertexShape=function(a,d,b,c,f){var e=Math.min(4,Math.min(c/5,f/5));0<c&&0<f&&(a.ellipse(d+e,b+e,c-2*e,f-2*e),a.fillAndStroke());a.setShadow(!1);this.outerStroke&&(a.ellipse(d,b,c,f),a.stroke())};mxCellRenderer.registerShape("endState",X); +mxUtils.extend(la,X);la.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",la);mxUtils.extend(fa,mxArrowConnector);fa.prototype.defaultWidth=4;fa.prototype.isOpenEnded=function(){return!0};fa.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};fa.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",fa);mxUtils.extend(Y,mxArrowConnector);Y.prototype.defaultWidth=10; +Y.prototype.defaultArrowWidth=20;Y.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};Y.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};Y.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",Y);mxUtils.extend(ca,mxActor); +ca.prototype.size=30;ca.prototype.isRoundable=function(){return!0};ca.prototype.redrawPath=function(a,d,b,c,f){d=Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size)));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,f),new mxPoint(0,d),new mxPoint(c,0),new mxPoint(c,f)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("manualInput",ca);mxUtils.extend(H,mxRectangleShape);H.prototype.dx=20;H.prototype.dy=20; +H.prototype.isHtmlAllowed=function(){return!1};H.prototype.paintForeground=function(a,d,b,c,f){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var e=0;if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,e=Math.max(e,Math.min(c*g,f*g));g=Math.max(e,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));e=Math.max(e,Math.min(f,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(d, +b+e);a.lineTo(d+c,b+e);a.end();a.stroke();a.begin();a.moveTo(d+g,b);a.lineTo(d+g,b+f);a.end();a.stroke()};mxCellRenderer.registerShape("internalStorage",H);mxUtils.extend(I,mxActor);I.prototype.dx=20;I.prototype.dy=20;I.prototype.redrawPath=function(a,d,b,c,f){d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));b=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var e=mxUtils.getValue(this.style, +mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,b),new mxPoint(d,b),new mxPoint(d,f),new mxPoint(0,f)],this.isRounded,e,!0);a.end()};mxCellRenderer.registerShape("corner",I);mxUtils.extend(aa,mxActor);aa.prototype.redrawPath=function(a,d,b,c,f){a.moveTo(0,0);a.lineTo(0,f);a.end();a.moveTo(c,0);a.lineTo(c,f);a.end();a.moveTo(0,f/2);a.lineTo(c,f/2);a.end()};mxCellRenderer.registerShape("crossbar",aa);mxUtils.extend(L,mxActor);L.prototype.dx= +20;L.prototype.dy=20;L.prototype.redrawPath=function(a,d,b,c,f){d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));b=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,b),new mxPoint((c+d)/2,b),new mxPoint((c+d)/2,f),new mxPoint((c-d)/ +2,f),new mxPoint((c-d)/2,b),new mxPoint(0,b)],this.isRounded,e,!0);a.end()};mxCellRenderer.registerShape("tee",L);mxUtils.extend(P,mxActor);P.prototype.arrowWidth=.3;P.prototype.arrowSize=.2;P.prototype.redrawPath=function(a,d,b,c,f){var e=f*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth))));d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));b=(f-e)/2;var e=b+e,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE, +mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,b),new mxPoint(c-d,b),new mxPoint(c-d,0),new mxPoint(c,f/2),new mxPoint(c-d,f),new mxPoint(c-d,e),new mxPoint(0,e)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("singleArrow",P);mxUtils.extend(da,mxActor);da.prototype.redrawPath=function(a,d,b,c,f){var e=f*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",P.prototype.arrowWidth))));d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize", +P.prototype.arrowSize))));b=(f-e)/2;var e=b+e,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,f/2),new mxPoint(d,0),new mxPoint(d,b),new mxPoint(c-d,b),new mxPoint(c-d,0),new mxPoint(c,f/2),new mxPoint(c-d,f),new mxPoint(c-d,e),new mxPoint(d,e),new mxPoint(d,f)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("doubleArrow",da);mxUtils.extend(Z,mxActor);Z.prototype.size=.1;Z.prototype.redrawPath=function(a,d,b,c,f){d=c* +Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(d,0);a.lineTo(c,0);a.quadTo(c-2*d,f/2,c,f);a.lineTo(d,f);a.quadTo(d-2*d,f/2,d,0);a.close();a.end()};mxCellRenderer.registerShape("dataStorage",Z);mxUtils.extend(G,mxActor);G.prototype.redrawPath=function(a,d,b,c,f){a.moveTo(0,0);a.quadTo(c,0,c,f/2);a.quadTo(c,f,0,f);a.close();a.end()};mxCellRenderer.registerShape("or",G);mxUtils.extend(ja,mxActor);ja.prototype.redrawPath=function(a,d,b,c,f){a.moveTo(0,0);a.quadTo(c, +0,c,f/2);a.quadTo(c,f,0,f);a.quadTo(c/2,f/2,0,0);a.close();a.end()};mxCellRenderer.registerShape("xor",ja);mxUtils.extend(Q,mxActor);Q.prototype.size=20;Q.prototype.isRoundable=function(){return!0};Q.prototype.redrawPath=function(a,d,b,c,f){d=Math.min(c/2,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(d,0),new mxPoint(c-d,0),new mxPoint(c,.8*d),new mxPoint(c,f), +new mxPoint(0,f),new mxPoint(0,.8*d)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("loopLimit",Q);mxUtils.extend(ha,mxActor);ha.prototype.size=.375;ha.prototype.isRoundable=function(){return!0};ha.prototype.redrawPath=function(a,d,b,c,f){d=f*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,f-d),new mxPoint(c/ +2,f),new mxPoint(0,f-d)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("offPageConnector",ha);mxUtils.extend(ka,mxEllipse);ka.prototype.paintVertexShape=function(a,d,b,c,f){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(d+c/2,b+f);a.lineTo(d+c,b+f);a.end();a.stroke()};mxCellRenderer.registerShape("tapeData",ka);mxUtils.extend(ga,mxEllipse);ga.prototype.paintVertexShape=function(a,d,b,c,f){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1); +a.begin();a.moveTo(d,b+f/2);a.lineTo(d+c,b+f/2);a.end();a.stroke();a.begin();a.moveTo(d+c/2,b);a.lineTo(d+c/2,b+f);a.end();a.stroke()};mxCellRenderer.registerShape("orEllipse",ga);mxUtils.extend(ba,mxEllipse);ba.prototype.paintVertexShape=function(a,d,b,c,f){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(d+.145*c,b+.145*f);a.lineTo(d+.855*c,b+.855*f);a.end();a.stroke();a.begin();a.moveTo(d+.855*c,b+.145*f);a.lineTo(d+.145*c,b+.855*f);a.end();a.stroke()}; +mxCellRenderer.registerShape("sumEllipse",ba);mxUtils.extend(wa,mxRhombus);wa.prototype.paintVertexShape=function(a,d,b,c,f){mxRhombus.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(d,b+f/2);a.lineTo(d+c,b+f/2);a.end();a.stroke()};mxCellRenderer.registerShape("sortShape",wa);mxUtils.extend(ua,mxEllipse);ua.prototype.paintVertexShape=function(a,d,b,c,f){a.begin();a.moveTo(d,b);a.lineTo(d+c,b);a.lineTo(d+c/2,b+f/2);a.close();a.fillAndStroke();a.begin();a.moveTo(d, +b+f);a.lineTo(d+c,b+f);a.lineTo(d+c/2,b+f/2);a.close();a.fillAndStroke()};mxCellRenderer.registerShape("collate",ua);mxUtils.extend(pa,mxEllipse);pa.prototype.paintVertexShape=function(a,d,b,c,f){var e=b+f-5;a.begin();a.moveTo(d,b);a.lineTo(d,b+f);a.moveTo(d,e);a.lineTo(d+10,e-5);a.moveTo(d,e);a.lineTo(d+10,e+5);a.moveTo(d,e);a.lineTo(d+c,e);a.moveTo(d+c,b);a.lineTo(d+c,b+f);a.moveTo(d+c,e);a.lineTo(d+c-10,e-5);a.moveTo(d+c,e);a.lineTo(d+c-10,e+5);a.end();a.stroke()};mxCellRenderer.registerShape("dimension", +pa);mxUtils.extend(ta,mxEllipse);ta.prototype.paintVertexShape=function(a,d,b,c,f){this.outline||a.setStrokeColor(null);mxRectangleShape.prototype.paintBackground.apply(this,arguments);null!=this.style&&(a.setStrokeColor(this.stroke),a.rect(d,b,c,f),a.fill(),a.begin(),a.moveTo(d,b),"1"==mxUtils.getValue(this.style,"top","1")?a.lineTo(d+c,b):a.moveTo(d+c,b),"1"==mxUtils.getValue(this.style,"right","1")?a.lineTo(d+c,b+f):a.moveTo(d+c,b+f),"1"==mxUtils.getValue(this.style,"bottom","1")?a.lineTo(d,b+ +f):a.moveTo(d,b+f),"1"==mxUtils.getValue(this.style,"left","1")&&a.lineTo(d,b-this.strokewidth/2),a.end(),a.stroke())};mxCellRenderer.registerShape("partialRectangle",ta);mxUtils.extend(va,mxEllipse);va.prototype.paintVertexShape=function(a,d,b,c,f){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();"vertical"==mxUtils.getValue(this.style,"line")?(a.moveTo(d+c/2,b),a.lineTo(d+c/2,b+f)):(a.moveTo(d,b+f/2),a.lineTo(d+c,b+f/2));a.end();a.stroke()};mxCellRenderer.registerShape("lineEllipse", +va);mxUtils.extend(ma,mxActor);ma.prototype.redrawPath=function(a,d,b,c,f){d=Math.min(c,f/2);a.moveTo(0,0);a.lineTo(c-d,0);a.quadTo(c,0,c,f/2);a.quadTo(c,f,c-d,f);a.lineTo(0,f);a.close();a.end()};mxCellRenderer.registerShape("delay",ma);mxUtils.extend(ra,mxActor);ra.prototype.size=.2;ra.prototype.redrawPath=function(a,d,b,c,f){d=Math.min(f,c);var e=Math.max(0,Math.min(d,d*parseFloat(mxUtils.getValue(this.style,"size",this.size))));d=(f-e)/2;b=d+e;var g=(c-e)/2,e=g+e;a.moveTo(0,d);a.lineTo(g,d);a.lineTo(g, +0);a.lineTo(e,0);a.lineTo(e,d);a.lineTo(c,d);a.lineTo(c,b);a.lineTo(e,b);a.lineTo(e,f);a.lineTo(g,f);a.lineTo(g,b);a.lineTo(0,b);a.close();a.end()};mxCellRenderer.registerShape("cross",ra);mxUtils.extend(ia,mxActor);ia.prototype.size=.25;ia.prototype.redrawPath=function(a,d,b,c,f){d=Math.min(c,f/2);b=Math.min(c-d,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*c);a.moveTo(0,f/2);a.lineTo(b,0);a.lineTo(c-d,0);a.quadTo(c,0,c,f/2);a.quadTo(c,f,c-d,f);a.lineTo(b,f);a.close();a.end()}; +mxCellRenderer.registerShape("display",ia);mxUtils.extend(ea,mxConnector);ea.prototype.origPaintEdgeShape=ea.prototype.paintEdgeShape;ea.prototype.paintEdgeShape=function(a,d,b){for(var c=[],f=0;f<d.length;f++)c.push(mxUtils.clone(d[f]));var f=a.state.dashed,e=a.state.fixDash;ea.prototype.origPaintEdgeShape.apply(this,[a,c,b]);3<=a.state.strokeWidth&&(c=mxUtils.getValue(this.style,"fillColor",null),null!=c&&(a.setStrokeColor(c),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(f,e),ea.prototype.origPaintEdgeShape.apply(this, +[a,d,b])))};mxCellRenderer.registerShape("filledEdge",ea);"undefined"!==typeof StyleFormatPanel&&function(){var a=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var d=this.format.getSelectionState(),b=a.apply(this,arguments);"umlFrame"==d.style.shape&&b.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});return b}}();mxMarker.addMarker("dash",function(a,d,b,c,f,e,g,l,n,u){var p=f*(g+n+1),y=e*(g+n+1);return function(){a.begin(); +a.moveTo(c.x-p/2-y/2,c.y-y/2+p/2);a.lineTo(c.x+y/2-3*p/2,c.y-3*y/2-p/2);a.stroke()}});mxMarker.addMarker("cross",function(a,d,b,c,f,e,g,l,n,u){var p=f*(g+n+1),y=e*(g+n+1);return function(){a.begin();a.moveTo(c.x-p/2-y/2,c.y-y/2+p/2);a.lineTo(c.x+y/2-3*p/2,c.y-3*y/2-p/2);a.moveTo(c.x-p/2+y/2,c.y-y/2-p/2);a.lineTo(c.x-y/2-3*p/2,c.y-3*y/2+p/2);a.stroke()}});mxMarker.addMarker("circle",sa);mxMarker.addMarker("circlePlus",function(a,d,b,c,f,e,g,l,n,u){var p=c.clone(),y=sa.apply(this,arguments),t=f*(g+ +2*n),k=e*(g+2*n);return function(){y.apply(this,arguments);a.begin();a.moveTo(p.x-f*n,p.y-e*n);a.lineTo(p.x-2*t+f*n,p.y-2*k+e*n);a.moveTo(p.x-t-k+e*n,p.y-k+t-f*n);a.lineTo(p.x+k-t-e*n,p.y-k-t+f*n);a.stroke()}});mxMarker.addMarker("async",function(a,d,b,c,f,e,g,l,n,p){d=f*n*1.118;b=e*n*1.118;f*=g+n;e*=g+n;var u=c.clone();u.x-=d;u.y-=b;c.x+=1*-f-d;c.y+=1*-e-b;return function(){a.begin();a.moveTo(u.x,u.y);l?a.lineTo(u.x-f-e/2,u.y-e+f/2):a.lineTo(u.x+e/2-f,u.y-e-f/2);a.lineTo(u.x-f,u.y-e);a.close();p? +a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync",function(a){a=null!=a?a:2;return function(d,b,c,f,e,g,l,n,u,p){e*=l+u;g*=l+u;var y=f.clone();return function(){d.begin();d.moveTo(y.x,y.y);n?d.lineTo(y.x-e-g/a,y.y-g+e/a):d.lineTo(y.x+g/a-e,y.y-g-e/a);d.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Ga=function(a,d,b){return ya(a,["width"],d,function(d,c,f,e,g){g=a.shape.getEdgeWidth()*a.view.scale+b;return new mxPoint(e.x+c*d/4+f*g/2,e.y+f*d/4-c*g/2)},function(d,c,f,e,g, +l){d=Math.sqrt(mxUtils.ptSegDistSq(e.x,e.y,g.x,g.y,l.x,l.y));a.style.width=Math.round(2*d)/a.view.scale-b})},ya=function(a,d,b,c,f){return R(a,d,function(d){var f=a.absolutePoints,e=f.length-1;d=a.view.translate;var g=a.view.scale,l=b?f[0]:f[e],f=b?f[1]:f[e-1],e=f.x-l.x,n=f.y-l.y,u=Math.sqrt(e*e+n*n),l=c.call(this,u,e/u,n/u,l,f);return new mxPoint(l.x/g-d.x,l.y/g-d.y)},function(d,c,e){var g=a.absolutePoints,l=g.length-1;d=a.view.translate;var n=a.view.scale,u=b?g[0]:g[l],g=b?g[1]:g[l-1],l=g.x-u.x, +p=g.y-u.y,y=Math.sqrt(l*l+p*p);c.x=(c.x+d.x)*n;c.y=(c.y+d.y)*n;f.call(this,y,l/y,p/y,u,g,c,e)})},oa=function(a){return function(d){return[R(d,["arrowWidth","arrowSize"],function(d){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",P.prototype.arrowWidth))),c=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",P.prototype.arrowSize)));return new mxPoint(d.x+(1-c)*d.width,d.y+(1-b)*d.height/2)},function(d,b){this.state.style.arrowWidth=Math.max(0,Math.min(1, +Math.abs(d.y+d.height/2-b.y)/d.height*2));this.state.style.arrowSize=Math.max(0,Math.min(a,(d.x+d.width-b.x)/d.width))})]}},Ea=function(a,d,b){return function(c){var f=[R(c,["size"],function(b){var c=Math.max(0,Math.min(b.width,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",d)))))*a;return new mxPoint(b.x+c,b.y+c)},function(d,b){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(d.width,b.x-d.x),Math.min(d.height,b.y-d.y)))/a)})];b&&mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED, +!1)&&f.push(qa(c));return f}},Aa=function(a,d,b,c,f){b=null!=b?b:1;return function(e){var g=[R(e,["size"],function(d){var b=null!=f?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,c=parseFloat(mxUtils.getValue(this.state.style,"size",b?f:a));return new mxPoint(d.x+Math.max(0,Math.min(d.width,c*(b?1:d.width))),d.getCenterY())},function(a,d,c){var g=null!=f?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null;a=g?d.x-a.x:Math.max(0,Math.min(b,(d.x-a.x)/a.width));g&&!mxEvent.isAltDown(c.getEvent())&& +(a=e.view.graph.snap(a));this.state.style.size=a},null,c)];d&&mxUtils.getValue(e.style,mxConstants.STYLE_ROUNDED,!1)&&g.push(qa(e));return g}},Ha=function(a){return function(d){var b=[R(d,["size"],function(d){var b=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.state.style,"size",f.prototype.size))));return new mxPoint(d.x+b*d.width*.75,d.y+d.height/4)},function(d,b){this.state.style.size=Math.max(0,Math.min(a,(b.x-d.x)/(.75*d.width)))},null,!0)];mxUtils.getValue(d.style,mxConstants.STYLE_ROUNDED, +!1)&&b.push(qa(d));return b}},za=function(){return function(a){var d=[];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(qa(a));return d}},qa=function(a,d){return R(a,[mxConstants.STYLE_ARCSIZE],function(b){var c=null!=d?d:b.height/8;if("1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var f=mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(b.x+b.width-Math.min(b.width/2,f),b.y+c)}f=Math.max(0,parseFloat(mxUtils.getValue(a.style, +mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(b.x+b.width-Math.min(Math.max(b.width/2,b.height/2),Math.min(b.width,b.height)*f),b.y+c)},function(d,b,c){"1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(d.width,2*(d.x+d.width-b.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(d.width-b.x+d.x)/Math.min(d.width,d.height))))})}, +R=function(a,d,b,c,f,e){var g=new mxHandle(a,null,mxVertexHandler.prototype.secondaryHandleImage);g.execute=function(){for(var a=0;a<d.length;a++)this.copyStyle(d[a])};g.getPosition=b;g.setPosition=c;g.ignoreGrid=null!=f?f:!0;if(e){var l=g.positionChanged;g.positionChanged=function(){l.apply(this,arguments);a.view.invalidate(this.state.cell);a.view.validate()}}return g},Ba={link:function(a){return[Ga(a,!0,10),Ga(a,!1,10)]},flexArrow:function(a){var d=a.view.graph.gridSize/a.view.scale,b=[];mxUtils.getValue(a.style, +mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(b.push(ya(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(d,b,c,f,e){d=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;e=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(f.x+b*(e+a.shape.strokewidth*a.view.scale)+c*d/2,f.y+c*(e+a.shape.strokewidth*a.view.scale)-b*d/2)},function(b,c,f,e,g,l,n){b=Math.sqrt(mxUtils.ptSegDistSq(e.x, +e.y,g.x,g.y,l.x,l.y));c=mxUtils.ptLineDist(e.x,e.y,e.x+f,e.y-c,l.x,l.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(c-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*b)/a.view.scale;mxEvent.isControlDown(n.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(n.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<d/6&&(a.style[mxConstants.STYLE_STARTSIZE]= +a.style[mxConstants.STYLE_ENDSIZE])})),b.push(ya(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(d,b,c,f,e){d=(a.shape.getStartArrowWidth()-a.shape.strokewidth)*a.view.scale;e=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(f.x+b*(e+a.shape.strokewidth*a.view.scale)+c*d/2,f.y+c*(e+a.shape.strokewidth*a.view.scale)-b*d/2)},function(b,c,f,e,g,l,n){b=Math.sqrt(mxUtils.ptSegDistSq(e.x,e.y,g.x, +g.y,l.x,l.y));c=mxUtils.ptLineDist(e.x,e.y,e.x+f,e.y-c,l.x,l.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(c-a.shape.strokewidth)/3)/100/a.view.scale;a.style.startWidth=Math.max(0,Math.round(2*b)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(n.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE],a.style.endWidth=a.style.startWidth);mxEvent.isAltDown(n.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))< +d/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(a.style.startWidth)-parseFloat(a.style.endWidth))<d&&(a.style.startWidth=a.style.endWidth))})));mxUtils.getValue(a.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(b.push(ya(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(d,b,c,f,e){d=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;e=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/ +5)*a.view.scale;return new mxPoint(f.x+b*(e+a.shape.strokewidth*a.view.scale)-c*d/2,f.y+c*(e+a.shape.strokewidth*a.view.scale)+b*d/2)},function(b,c,f,e,g,l,n){b=Math.sqrt(mxUtils.ptSegDistSq(e.x,e.y,g.x,g.y,l.x,l.y));c=mxUtils.ptLineDist(e.x,e.y,e.x+f,e.y-c,l.x,l.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(c-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*b)/a.view.scale;mxEvent.isControlDown(n.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]); +mxEvent.isAltDown(n.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<d/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE])})),b.push(ya(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(d,b,c,f,e){d=(a.shape.getEndArrowWidth()-a.shape.strokewidth)*a.view.scale;e=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(f.x+ +b*(e+a.shape.strokewidth*a.view.scale)-c*d/2,f.y+c*(e+a.shape.strokewidth*a.view.scale)+b*d/2)},function(b,c,f,e,g,l,n){b=Math.sqrt(mxUtils.ptSegDistSq(e.x,e.y,g.x,g.y,l.x,l.y));c=mxUtils.ptLineDist(e.x,e.y,e.x+f,e.y-c,l.x,l.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(c-a.shape.strokewidth)/3)/100/a.view.scale;a.style.endWidth=Math.max(0,Math.round(2*b)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(n.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE], +a.style.startWidth=a.style.endWidth);mxEvent.isAltDown(n.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<d/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(a.style.endWidth)-parseFloat(a.style.startWidth))<d&&(a.style.endWidth=a.style.startWidth))})));return b},swimlane:function(a){var d=[R(a,[mxConstants.STYLE_STARTSIZE],function(d){var b=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE, +mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(d.getCenterX(),d.y+Math.max(0,Math.min(d.height,b))):new mxPoint(d.x+Math.max(0,Math.min(d.width,b)),d.getCenterY())},function(d,b){a.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(d.height,b.y-d.y))):Math.round(Math.max(0,Math.min(d.width,b.x-d.x)))})];if(mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED)){var b= +parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));d.push(qa(a,b/2))}return d},label:za(),ext:za(),rectangle:za(),triangle:za(),rhombus:za(),umlLifeline:function(a){return[R(a,["size"],function(a){var d=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",C.prototype.size))));return new mxPoint(a.getCenterX(),a.y+d)},function(a,d){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,d.y-a.y)))},!1)]},umlFrame:function(a){return[R(a, +["width","height"],function(a){var d=Math.max(M.prototype.corner,Math.min(a.width,mxUtils.getValue(this.state.style,"width",M.prototype.width))),b=Math.max(1.5*M.prototype.corner,Math.min(a.height,mxUtils.getValue(this.state.style,"height",M.prototype.height)));return new mxPoint(a.x+d,a.y+b)},function(a,d){this.state.style.width=Math.round(Math.max(M.prototype.corner,Math.min(a.width,d.x-a.x)));this.state.style.height=Math.round(Math.max(1.5*M.prototype.corner,Math.min(a.height,d.y-a.y)))},!1)]}, +process:function(a){var d=[R(a,["size"],function(a){var d=Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.state.style,"size",p.prototype.size))));return new mxPoint(a.x+a.width*d,a.y+a.height/4)},function(a,d){this.state.style.size=Math.max(0,Math.min(.5,(d.x-a.x)/a.width))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(qa(a));return d},cross:function(a){return[R(a,["size"],function(a){var d=Math.min(a.width,a.height),d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style, +"size",ra.prototype.size)))*d/2;return new mxPoint(a.getCenterX()-d,a.getCenterY()-d)},function(a,d){var b=Math.min(a.width,a.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,a.getCenterY()-d.y)/b*2,Math.max(0,a.getCenterX()-d.x)/b*2)))})]},note:function(a){return[R(a,["size"],function(a){var d=Math.max(0,Math.min(a.width,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",k.prototype.size)))));return new mxPoint(a.x+a.width-d,a.y+d)},function(a,d){this.state.style.size= +Math.round(Math.max(0,Math.min(Math.min(a.width,a.x+a.width-d.x),Math.min(a.height,d.y-a.y))))})]},manualInput:function(a){var d=[R(a,["size"],function(a){var d=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",ca.prototype.size)));return new mxPoint(a.x+a.width/4,a.y+3*d/4)},function(a,d){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,4*(d.y-a.y)/3)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(qa(a));return d},dataStorage:function(a){return[R(a, +["size"],function(a){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",Z.prototype.size))));return new mxPoint(a.x+(1-d)*a.width,a.getCenterY())},function(a,d){this.state.style.size=Math.max(0,Math.min(1,(a.x+a.width-d.x)/a.width))})]},callout:function(a){var d=[R(a,["size","position"],function(a){var d=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",x.prototype.size))),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",x.prototype.position))); +mxUtils.getValue(this.state.style,"base",x.prototype.base);return new mxPoint(a.x+b*a.width,a.y+a.height-d)},function(a,d){mxUtils.getValue(this.state.style,"base",x.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(a.height,a.y+a.height-d.y)));this.state.style.position=Math.round(100*Math.max(0,Math.min(1,(d.x-a.x)/a.width)))/100}),R(a,["position2"],function(a){var d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",x.prototype.position2)));return new mxPoint(a.x+ +d*a.width,a.y+a.height)},function(a,d){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(d.x-a.x)/a.width)))/100}),R(a,["base"],function(a){var d=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",x.prototype.size))),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",x.prototype.position))),c=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"base",x.prototype.base)));return new mxPoint(a.x+Math.min(a.width,b*a.width+c),a.y+a.height- +d)},function(a,d){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",x.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(a.width,d.x-a.x-b*a.width)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(qa(a));return d},internalStorage:function(a){var d=[R(a,["dx","dy"],function(a){var d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",H.prototype.dx))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy", +H.prototype.dy)));return new mxPoint(a.x+d,a.y+b)},function(a,d){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,d.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,d.y-a.y)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(qa(a));return d},corner:function(a){return[R(a,["dx","dy"],function(a){var d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",I.prototype.dx))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy", +I.prototype.dy)));return new mxPoint(a.x+d,a.y+b)},function(a,d){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,d.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,d.y-a.y)))})]},tee:function(a){return[R(a,["dx","dy"],function(a){var d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",L.prototype.dx))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",L.prototype.dy)));return new mxPoint(a.x+(a.width+d)/2,a.y+b)},function(a,d){this.state.style.dx= +Math.round(Math.max(0,2*Math.min(a.width/2,d.x-a.x-a.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,d.y-a.y)))})]},singleArrow:oa(1),doubleArrow:oa(.5),folder:function(a){return[R(a,["tabWidth","tabHeight"],function(a){var d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"tabWidth",q.prototype.tabWidth))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"tabHeight",q.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",q.prototype.tabPosition)== +mxConstants.ALIGN_RIGHT&&(d=a.width-d);return new mxPoint(a.x+d,a.y+b)},function(a,d){var b=Math.max(0,Math.min(a.width,d.x-a.x));mxUtils.getValue(this.state.style,"tabPosition",q.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(b=a.width-b);this.state.style.tabWidth=Math.round(b);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(a.height,d.y-a.y)))})]},document:function(a){return[R(a,["size"],function(a){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",z.prototype.size)))); +return new mxPoint(a.x+3*a.width/4,a.y+(1-d)*a.height)},function(a,d){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-d.y)/a.height))})]},tape:function(a){return[R(a,["size"],function(a){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",v.prototype.size))));return new mxPoint(a.getCenterX(),a.y+d*a.height/2)},function(a,d){this.state.style.size=Math.max(0,Math.min(1,(d.y-a.y)/a.height*2))})]},offPageConnector:function(a){return[R(a,["size"],function(a){var d= +Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ha.prototype.size))));return new mxPoint(a.getCenterX(),a.y+(1-d)*a.height)},function(a,d){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-d.y)/a.height))})]},step:Aa(t.prototype.size,!0,null,!0,t.prototype.fixedSize),hexagon:Aa(y.prototype.size,!0,.5,!0),curlyBracket:Aa(l.prototype.size,!1),display:Aa(ia.prototype.size,!1),cube:Ea(1,a.prototype.size,!1),card:Ea(.5,r.prototype.size,!0),loopLimit:Ea(.5,Q.prototype.size, +!0),trapezoid:Ha(.5),parallelogram:Ha(1)};Graph.createHandle=R;Graph.handleFactory=Ba;mxVertexHandler.prototype.createCustomHandles=function(){if(1==this.state.view.graph.getSelectionCount()&&this.graph.isCellRotatable(this.state.cell)){var a=this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_RECTANGLE);a=Ba[a];null==a&&null!=this.state.shape&&this.state.shape.isRoundable()&&(a=Ba[mxConstants.SHAPE_RECTANGLE]);if(null!=a)return a(this.state)}return null}; +mxEdgeHandler.prototype.createCustomHandles=function(){if(1==this.state.view.graph.getSelectionCount()){var a=this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_CONNECTOR);a=Ba[a];if(null!=a)return a(this.state)}return null}}else Graph.createHandle=function(){},Graph.handleFactory={};var Ca=new mxPoint(1,0),Da=new mxPoint(1,0),oa=mxUtils.toRadians(-30),Ca=mxUtils.getRotatedPoint(Ca,Math.cos(oa),Math.sin(oa)),oa=mxUtils.toRadians(-150), +Da=mxUtils.getRotatedPoint(Da,Math.cos(oa),Math.sin(oa));mxEdgeStyle.IsometricConnector=function(a,d,b,c,f){var e=a.view;c=null!=c&&0<c.length?c[0]:null;var g=a.absolutePoints,l=g[0],g=g[g.length-1];null!=c&&(c=e.transformControlPoint(a,c));null==l&&null!=d&&(l=new mxPoint(d.getCenterX(),d.getCenterY()));null==g&&null!=b&&(g=new mxPoint(b.getCenterX(),b.getCenterY()));var n=Ca.x,u=Ca.y,p=Da.x,y=Da.y,t="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!=g&&null!=l){a=function(a,d, +b){a-=k.x;var c=d-k.y;d=(y*a-p*c)/(n*y-u*p);a=(u*a-n*c)/(u*p-n*y);t?(b&&(k=new mxPoint(k.x+n*d,k.y+u*d),f.push(k)),k=new mxPoint(k.x+p*a,k.y+y*a)):(b&&(k=new mxPoint(k.x+p*a,k.y+y*a),f.push(k)),k=new mxPoint(k.x+n*d,k.y+u*d));f.push(k)};var k=l;null==c&&(c=new mxPoint(l.x+(g.x-l.x)/2,l.y+(g.y-l.y)/2));a(c.x,c.y,!0);a(g.x,g.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var Na=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(a,d){if(d== +mxEdgeStyle.IsometricConnector){var b=new mxElbowEdgeHandler(a);b.snapToTerminals=!1;return b}return Na.apply(this,arguments)};b.prototype.constraints=[];e.prototype.getConstraints=function(a,d,b){a=[];var c=Math.tan(mxUtils.toRadians(30)),f=(.5-c)/2,c=Math.min(d,b/(.5+c));d=(d-c)/2;b=(b-c)/2;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b+.25*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+.5*c,b+c*f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+c, +b+.25*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+c,b+.75*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+.5*c,b+(1-f)*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b+.75*c));return a};x.prototype.getConstraints=function(a,d,b){a=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var c=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position", +this.position));var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2))));parseFloat(mxUtils.getValue(this.style,"base",this.base));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,d,.5*(b-c)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,b-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(b-c)));d>=2*c&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5, 0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)]; mxEllipse.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(0,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(1,.5))];mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;mxImageShape.prototype.constraints= -mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;u.prototype.constraints=mxRectangleShape.prototype.constraints;k.prototype.getConstraints=function(a,c,b){a=[];var d=Math.max(0,Math.min(c,Math.min(b,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c-d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0), -!1,null,c-d,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c-.5*d,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,.5*(b+d)));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c>=2*d&&a.push(new mxConnectionConstraint(new mxPoint(.5, -0),!1));return a};q.prototype.getConstraints=function(a,c,b){a=[];var d=Math.max(0,Math.min(c,Math.min(b,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c+d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,0,.5*(b+d)));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c>=2*d&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};a.prototype.getConstraints=function(a,c,b){a=[];var d=Math.max(0,Math.min(c,Math.min(b,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c-d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c-d,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c-.5*d,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,.5*(b+d)));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c+d),b));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,d,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,b-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,b-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(b-d)));return a};p.prototype.constraints=mxRectangleShape.prototype.constraints;H.prototype.constraints=mxRectangleShape.prototype.constraints;E.prototype.constraints=mxRectangleShape.prototype.constraints;fa.prototype.constraints=mxEllipse.prototype.constraints;aa.prototype.constraints= -mxEllipse.prototype.constraints;qa.prototype.constraints=mxEllipse.prototype.constraints;ka.prototype.constraints=mxEllipse.prototype.constraints;N.prototype.constraints=mxRectangleShape.prototype.constraints;ta.prototype.constraints=mxRectangleShape.prototype.constraints;ga.prototype.getConstraints=function(a,c,b){a=[];var d=Math.min(c,b/2),g=Math.min(c-d,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*c);a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,g,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(g+c-d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c-d,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c-d,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(g+c-d),b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,b));return a};Z.prototype.constraints=mxRectangleShape.prototype.constraints;ca.prototype.constraints= -mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1, -.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];Q.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,.1),!1),new mxConnectionConstraint(new mxPoint(0,1/3),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(1,1/3),!1),new mxConnectionConstraint(new mxPoint(1, -1),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1)];J.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25, -1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxActor.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.25,.2),!1),new mxConnectionConstraint(new mxPoint(.1,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.75,.25),!1),new mxConnectionConstraint(new mxPoint(.9,.5),!1),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25, -1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];n.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(.5,.25),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5,.75),!1),new mxConnectionConstraint(new mxPoint(1, -1),!1)];w.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.35),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.65),!1),new mxConnectionConstraint(new mxPoint(1,.35),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,.65),!1),new mxConnectionConstraint(new mxPoint(.25,1),!1),new mxConnectionConstraint(new mxPoint(.75,0),!1)];D.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0), -!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1, -.75),!0)];mxLine.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];O.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1)];mxDoubleEllipse.prototype.constraints=mxEllipse.prototype.constraints;mxRhombus.prototype.constraints=mxEllipse.prototype.constraints;mxTriangle.prototype.constraints= -[new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0)];mxHexagon.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.375,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.625,0),!0),new mxConnectionConstraint(new mxPoint(0, -.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.375,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.625,1),!0)];mxCloud.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.25),!1),new mxConnectionConstraint(new mxPoint(.4, -.1),!1),new mxConnectionConstraint(new mxPoint(.16,.55),!1),new mxConnectionConstraint(new mxPoint(.07,.4),!1),new mxConnectionConstraint(new mxPoint(.31,.8),!1),new mxConnectionConstraint(new mxPoint(.13,.77),!1),new mxConnectionConstraint(new mxPoint(.8,.8),!1),new mxConnectionConstraint(new mxPoint(.55,.95),!1),new mxConnectionConstraint(new mxPoint(.875,.5),!1),new mxConnectionConstraint(new mxPoint(.96,.7),!1),new mxConnectionConstraint(new mxPoint(.625,.2),!1),new mxConnectionConstraint(new mxPoint(.88, -.25),!1)];g.prototype.constraints=mxRectangleShape.prototype.constraints;h.prototype.constraints=mxRectangleShape.prototype.constraints;c.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25), -!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;P.prototype.getConstraints=function(a,c,b){a=[];var d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),g=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1, -0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,.5*g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*c+.25*d,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c+d),g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c+d),.5*(b+g)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c+d),b));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,.5*(c-d),b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c-d),.5*(b+g)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c-d),g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*c-.25*d,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*g));return a};U.prototype.getConstraints=function(a,c,b){a=[];var d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style, -"dx",this.dx)))),g=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,.5*g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c+d),g));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,d,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(b+g)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,b));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));return a};L.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0, -1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];R.prototype.getConstraints=function(a,c,b){a=[];var d=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),g=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style, -"arrowSize",this.arrowSize)))),d=(b-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c-g),d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c-g,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c-g,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c-g),b-d));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,0,b-d));return a};ja.prototype.getConstraints=function(a,c,b){a=[];var d=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",R.prototype.arrowWidth)))),g=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",R.prototype.arrowSize)))),d=(b-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,d));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,c-g,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c-g,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,b-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,b));return a};ia.prototype.getConstraints=function(a,c,b){a=[];var d=Math.min(b,c),g=Math.max(0,Math.min(d,d*parseFloat(mxUtils.getValue(this.style,"size",this.size)))),d=(b-g)/2,f=d+g,h=(c-g)/2,g=h+g;a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,h,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,0));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,b-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,b));a.push(new mxConnectionConstraint(new mxPoint(.5, -1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,b-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c+g),d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,d));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,f));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,.5*(c+g),f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*h,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*h,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,d));return a};B.prototype.constraints= -null;ea.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];X.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.175,.25),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.175, -.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];W.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];V.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)]})();function Actions(a){this.editorUi=a;this.actions={};this.init()} -Actions.prototype.init=function(){function a(a){d.escape();var b=d.getDeletableCells(d.getSelectionCells());if(null!=b&&0<b.length){var c=d.model.getParents(b);d.removeCells(b,a);if(null!=c){a=[];for(b=0;b<c.length;b++)d.model.contains(c[b])&&(d.model.isVertex(c[b])||d.model.isEdge(c[b]))&&a.push(c[b]);d.setSelectionCells(a)}}}var b=this.editorUi,f=b.editor,d=f.graph,k=function(){return Action.prototype.isEnabled.apply(this,arguments)&&d.isEnabled()};this.addAction("new...",function(){d.openLink(b.getUrl())}); -this.addAction("open...",function(){window.openNew=!0;window.openKey="open";b.openFile()});this.addAction("import...",function(){window.openNew=!1;window.openKey="import";window.openFile=new OpenFile(mxUtils.bind(this,function(){b.hideDialog()}));window.openFile.setConsumer(mxUtils.bind(this,function(a,b){try{var c=mxUtils.parseXml(a);f.graph.setSelectionCells(f.graph.importGraphModel(c.documentElement))}catch(g){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+g.message)}}));b.showDialog((new OpenDialog(this)).container, +mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;u.prototype.constraints=mxRectangleShape.prototype.constraints;k.prototype.getConstraints=function(a,d,b){a=[];var c=Math.max(0,Math.min(d,Math.min(b,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),0));a.push(new mxConnectionConstraint(new mxPoint(0,0), +!1,null,d-c,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*c,.5*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(b+c)));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));d>=2*c&&a.push(new mxConnectionConstraint(new mxPoint(.5, +0),!1));return a};r.prototype.getConstraints=function(a,d,b){a=[];var c=Math.max(0,Math.min(d,Math.min(b,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,.5*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,0,.5*(b+c)));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));d>=2*c&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};a.prototype.getConstraints=function(a,d,b){a=[];var c=Math.max(0,Math.min(d,Math.min(b,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-c,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*c,.5*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(b+c)));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),b));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,c,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,b-.5*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,b-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(b-c)));return a};q.prototype.getConstraints=function(a,d,b){a=[];var c=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))),f=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style, +"tabPosition",this.tabPosition)?(a.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,f)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),f))):(a.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*c,0)),a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,d-c,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-c,f)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),f)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.25*(b-f)+f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(b-f)+f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.75*(b-f)+f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1, +null,d,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(b-f)+f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(b-f)+f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.75*(b-f)+f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,b));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75, +1),!1));return a};H.prototype.constraints=mxRectangleShape.prototype.constraints;Z.prototype.constraints=mxRectangleShape.prototype.constraints;ka.prototype.constraints=mxEllipse.prototype.constraints;ga.prototype.constraints=mxEllipse.prototype.constraints;ba.prototype.constraints=mxEllipse.prototype.constraints;va.prototype.constraints=mxEllipse.prototype.constraints;ca.prototype.constraints=mxRectangleShape.prototype.constraints;ma.prototype.constraints=mxRectangleShape.prototype.constraints;ia.prototype.getConstraints= +function(a,d,b){a=[];var c=Math.min(d,b/2),f=Math.min(d-c,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*d);a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(f+d-c),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-c,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,d-c,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(f+d-c),b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,b));return a};Q.prototype.constraints=mxRectangleShape.prototype.constraints;ha.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0, +.3),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];U.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.1),!1),new mxConnectionConstraint(new mxPoint(.5, +0),!1),new mxConnectionConstraint(new mxPoint(.75,.1),!1),new mxConnectionConstraint(new mxPoint(0,1/3),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(1,1/3),!1),new mxConnectionConstraint(new mxPoint(1,1),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1)];J.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0, +.3),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxActor.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.25,.2),!1),new mxConnectionConstraint(new mxPoint(.1, +.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.75,.25),!1),new mxConnectionConstraint(new mxPoint(.9,.5),!1),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];m.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(.5,.25),!1),new mxConnectionConstraint(new mxPoint(1, +0),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5,.75),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];v.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.35),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.65),!1),new mxConnectionConstraint(new mxPoint(1,.35),!1),new mxConnectionConstraint(new mxPoint(1, +.5),!1),new mxConnectionConstraint(new mxPoint(1,.65),!1),new mxConnectionConstraint(new mxPoint(.25,1),!1),new mxConnectionConstraint(new mxPoint(.75,0),!1)];t.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(0, +.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxLine.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];O.prototype.constraints= +[new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1)];mxDoubleEllipse.prototype.constraints=mxEllipse.prototype.constraints;mxRhombus.prototype.constraints=mxEllipse.prototype.constraints;mxTriangle.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5, +1),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0)];mxHexagon.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.375,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.625,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1, +.75),!0),new mxConnectionConstraint(new mxPoint(.375,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.625,1),!0)];mxCloud.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.25),!1),new mxConnectionConstraint(new mxPoint(.4,.1),!1),new mxConnectionConstraint(new mxPoint(.16,.55),!1),new mxConnectionConstraint(new mxPoint(.07,.4),!1),new mxConnectionConstraint(new mxPoint(.31,.8),!1),new mxConnectionConstraint(new mxPoint(.13,.77),!1),new mxConnectionConstraint(new mxPoint(.8, +.8),!1),new mxConnectionConstraint(new mxPoint(.55,.95),!1),new mxConnectionConstraint(new mxPoint(.875,.5),!1),new mxConnectionConstraint(new mxPoint(.96,.7),!1),new mxConnectionConstraint(new mxPoint(.625,.2),!1),new mxConnectionConstraint(new mxPoint(.88,.25),!1)];d.prototype.constraints=mxRectangleShape.prototype.constraints;f.prototype.constraints=mxRectangleShape.prototype.constraints;z.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5, +0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;L.prototype.getConstraints=function(a,d,b){a=[];var c=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style, +"dx",this.dx)))),f=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*d+.25*c,f));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,.5*(d+c),f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),.5*(b+f)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),b));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),.5*(b+f)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),f));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,.25*d-.25*c,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*f));return a};I.prototype.getConstraints=function(a,d,b){a=[];var c=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),f=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1, +0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,.5*(b+f)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,b));a.push(new mxConnectionConstraint(new mxPoint(0, +.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));return a};aa.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1, +1),!1)];P.prototype.getConstraints=function(a,d,b){a=[];var c=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize)))),c=(b-c)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-f),c));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,d-f,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-f,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-f),b-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,b-c));return a};da.prototype.getConstraints=function(a,d,b){a=[];var c=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",P.prototype.arrowWidth)))),f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style, +"arrowSize",P.prototype.arrowSize)))),c=(b-c)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-f,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-f,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,b-c));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,f,b));return a};ra.prototype.getConstraints=function(a,d,b){a=[];var c=Math.min(b,d),f=Math.max(0,Math.min(c,c*parseFloat(mxUtils.getValue(this.style,"size",this.size)))),c=(b-f)/2,e=c+f,g=(d-f)/2,f=g+f;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,.5*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,0));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,0));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,f,.5*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,b-.5*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,b));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,b-.5*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,e));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,.5*(d+f),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+f),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));a.push(new mxConnectionConstraint(new mxPoint(0, +.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,c));return a};C.prototype.constraints=null;G.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7, +.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];ja.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.175,.25),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.175,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];T.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1, +.5),!1)];W.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)]})();function Actions(a){this.editorUi=a;this.actions={};this.init()} +Actions.prototype.init=function(){function a(a){c.escape();var b=c.getDeletableCells(c.getSelectionCells());if(null!=b&&0<b.length){var e=c.model.getParents(b);c.removeCells(b,a);if(null!=e){a=[];for(b=0;b<e.length;b++)c.model.contains(e[b])&&(c.model.isVertex(e[b])||c.model.isEdge(e[b]))&&a.push(e[b]);c.setSelectionCells(a)}}}var b=this.editorUi,e=b.editor,c=e.graph,k=function(){return Action.prototype.isEnabled.apply(this,arguments)&&c.isEnabled()};this.addAction("new...",function(){c.openLink(b.getUrl())}); +this.addAction("open...",function(){window.openNew=!0;window.openKey="open";b.openFile()});this.addAction("import...",function(){window.openNew=!1;window.openKey="import";window.openFile=new OpenFile(mxUtils.bind(this,function(){b.hideDialog()}));window.openFile.setConsumer(mxUtils.bind(this,function(a,b){try{var c=mxUtils.parseXml(a);e.graph.setSelectionCells(e.graph.importGraphModel(c.documentElement))}catch(d){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+d.message)}}));b.showDialog((new OpenDialog(this)).container, 320,220,!0,!0,function(){window.openFile=null})}).isEnabled=k;this.addAction("save",function(){b.saveFile(!1)},null,null,Editor.ctrlKey+"+S").isEnabled=k;this.addAction("saveAs...",function(){b.saveFile(!0)},null,null,Editor.ctrlKey+"+Shift+S").isEnabled=k;this.addAction("export...",function(){b.showDialog((new ExportDialog(b)).container,300,230,!0,!0)});this.addAction("editDiagram...",function(){var a=new EditDiagramDialog(b);b.showDialog(a.container,620,420,!0,!1);a.init()});this.addAction("pageSetup...", -function(){b.showDialog((new PageSetupDialog(b)).container,320,220,!0,!0)}).isEnabled=k;this.addAction("print...",function(){b.showDialog((new PrintDialog(b)).container,300,180,!0,!0)},null,"sprite-print",Editor.ctrlKey+"+P");this.addAction("preview",function(){mxUtils.show(d,null,10,10)});this.addAction("undo",function(){b.undo()},null,"sprite-undo",Editor.ctrlKey+"+Z");this.addAction("redo",function(){b.redo()},null,"sprite-redo",mxClient.IS_WIN?Editor.ctrlKey+"+Y":Editor.ctrlKey+"+Shift+Z");this.addAction("cut", -function(){mxClipboard.cut(d)},null,"sprite-cut",Editor.ctrlKey+"+X");this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())&&mxClipboard.paste(d)},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(a){if(d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())){d.getModel().beginUpdate();try{var b=mxClipboard.paste(d);if(null!=b){a=!0;for(var c=0;c<b.length&& -a;c++)a=a&&d.model.isEdge(b[c]);var g=d.view.translate,f=d.view.scale,l=g.x,t=g.y,g=null;if(1==b.length&&a){var m=d.getCellGeometry(b[0]);null!=m&&(g=m.getTerminalPoint(!0))}g=null!=g?g:d.getBoundingBoxFromGeometry(b,a);if(null!=g){var r=Math.round(d.snap(d.popupMenuHandler.triggerX/f-l)),k=Math.round(d.snap(d.popupMenuHandler.triggerY/f-t));d.cellsMoved(b,r-g.x,k-g.y)}}}finally{d.getModel().endUpdate()}}});this.addAction("copySize",function(a){a=d.getSelectionCell();d.isEnabled()&&null!=a&&d.getModel().isVertex(a)&& -(a=d.getCellGeometry(a),null!=a&&(b.copiedSize=new mxRectangle(a.x,a.y,a.width,a.height)))},null,null,"Alt+Shit+X");this.addAction("pasteSize",function(a){if(d.isEnabled()&&!d.isSelectionEmpty()&&null!=b.copiedSize){d.getModel().beginUpdate();try{var f=d.getSelectionCells();for(a=0;a<f.length;a++)if(d.getModel().isVertex(f[a])){var c=d.getCellGeometry(f[a]);null!=c&&(c=c.clone(),c.width=b.copiedSize.width,c.height=b.copiedSize.height,d.getModel().setGeometry(f[a],c))}}finally{d.getModel().endUpdate()}}}, -null,null,"Alt+Shit+V");this.addAction("delete",function(b){a(null!=b&&mxEvent.isShiftDown(b))},null,null,"Delete");this.addAction("deleteAll",function(){a(!0)},null,null,Editor.ctrlKey+"+Delete");this.addAction("duplicate",function(){d.setSelectionCells(d.duplicateCells())},null,null,Editor.ctrlKey+"+D");this.put("turn",new Action(mxResources.get("turn")+" / "+mxResources.get("reverse"),function(){d.turnShapes(d.getSelectionCells())},null,null,Editor.ctrlKey+"+R"));this.addAction("selectVertices", -function(){d.selectVertices()},null,null,Editor.ctrlKey+"+Shift+I");this.addAction("selectEdges",function(){d.selectEdges()},null,null,Editor.ctrlKey+"+Shift+E");this.addAction("selectAll",function(){d.selectAll(null,!0)},null,null,Editor.ctrlKey+"+A");this.addAction("selectNone",function(){d.clearSelection()},null,null,Editor.ctrlKey+"+Shift+A");this.addAction("lockUnlock",function(){if(!d.isSelectionEmpty()){d.getModel().beginUpdate();try{var a=d.isCellMovable(d.getSelectionCell())?1:0;d.toggleCellStyles(mxConstants.STYLE_MOVABLE, -a);d.toggleCellStyles(mxConstants.STYLE_RESIZABLE,a);d.toggleCellStyles(mxConstants.STYLE_ROTATABLE,a);d.toggleCellStyles(mxConstants.STYLE_DELETABLE,a);d.toggleCellStyles(mxConstants.STYLE_EDITABLE,a);d.toggleCellStyles("connectable",a)}finally{d.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+L");this.addAction("home",function(){d.home()},null,null,"Home");this.addAction("exitGroup",function(){d.exitGroup()},null,null,Editor.ctrlKey+"+Shift+Home");this.addAction("enterGroup",function(){d.enterGroup()}, -null,null,Editor.ctrlKey+"+Shift+End");this.addAction("collapse",function(){d.foldCells(!0)},null,null,Editor.ctrlKey+"+Home");this.addAction("expand",function(){d.foldCells(!1)},null,null,Editor.ctrlKey+"+End");this.addAction("toFront",function(){d.orderCells(!1)},null,null,Editor.ctrlKey+"+Shift+F");this.addAction("toBack",function(){d.orderCells(!0)},null,null,Editor.ctrlKey+"+Shift+B");this.addAction("group",function(){1==d.getSelectionCount()?d.setCellStyles("container","1"):d.setSelectionCell(d.groupCells(null, -0))},null,null,Editor.ctrlKey+"+G");this.addAction("ungroup",function(){1==d.getSelectionCount()&&0==d.getModel().getChildCount(d.getSelectionCell())?d.setCellStyles("container","0"):d.setSelectionCells(d.ungroupCells())},null,null,Editor.ctrlKey+"+Shift+U");this.addAction("removeFromGroup",function(){d.removeCellsFromParent()});this.addAction("edit",function(){d.isEnabled()&&d.startEditingAtCell()},null,null,"F2/Enter");this.addAction("editData...",function(){var a=d.getSelectionCell()||d.getModel().getRoot(); -b.showDataDialog(a)},null,null,Editor.ctrlKey+"+M");this.addAction("editTooltip...",function(){var a=b.editor.graph;if(a.isEnabled()&&!a.isSelectionEmpty()){var d=a.getSelectionCell(),c="";if(mxUtils.isNode(d.value)){var g=d.value.getAttribute("tooltip");null!=g&&(c=g)}c=new TextareaDialog(b,mxResources.get("editTooltip")+":",c,function(c){a.setTooltipForCell(d,c)});b.showDialog(c.container,320,200,!0,!0);c.init()}},null,null,"Alt+Shift+T");this.addAction("openLink",function(){var a=d.getLinkForCell(d.getSelectionCell()); -null!=a&&d.openLink(a)});this.addAction("editLink...",function(){var a=b.editor.graph;if(a.isEnabled()&&!a.isSelectionEmpty()){var d=a.getSelectionCell(),c=a.getLinkForCell(d)||"";b.showLinkDialog(c,mxResources.get("apply"),function(c){c=mxUtils.trim(c);a.setLinkForCell(d,0<c.length?c:null)})}},null,null,"Alt+Shift+L");this.put("insertImage",new Action(mxResources.get("image")+"...",function(){d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())&&(d.clearSelection(),b.actions.get("image").funct())})).isEnabled= -k;this.put("insertLink",new Action(mxResources.get("link")+"...",function(){d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())&&b.showLinkDialog("",mxResources.get("insert"),function(a,b){a=mxUtils.trim(a);if(0<a.length){var c=null,g=d.getLinkTitle(a);null!=b&&0<b.length&&(c=b[0].iconUrl,g=b[0].name||b[0].type,g=g.charAt(0).toUpperCase()+g.substring(1),30<g.length&&(g=g.substring(0,30)+"..."));var f=d.getFreeInsertPoint(),c=new mxCell(g,new mxGeometry(f.x,f.y,100,40),"fontColor=#0000EE;fontStyle=4;rounded=1;overflow=hidden;"+ -(null!=c?"shape=label;imageWidth=16;imageHeight=16;spacingLeft=26;align=left;image="+c:"spacing=10;"));c.vertex=!0;d.setLinkForCell(c,a);d.cellSizeUpdated(c,!0);d.getModel().beginUpdate();try{c=d.addCell(c),d.fireEvent(new mxEventObject("cellsInserted","cells",[c]))}finally{d.getModel().endUpdate()}d.setSelectionCell(c);d.scrollCellToVisible(d.getSelectionCell())}})})).isEnabled=k;this.addAction("link...",mxUtils.bind(this,function(){var a=b.editor.graph;if(a.isEnabled())if(a.cellEditor.isContentEditing()){var d= -a.getSelectedElement(),c=a.getParentByName(d,"A",a.cellEditor.textarea),g="";if(null==c&&null!=d&&null!=d.getElementsByTagName)for(var f=d.getElementsByTagName("a"),l=0;l<f.length&&null==c;l++)f[l].textContent==d.textContent&&(a.selectNode(f[l]),c=f[l]);null!=c&&"A"==c.nodeName&&(g=c.getAttribute("href")||"");var t=a.cellEditor.saveSelection();b.showLinkDialog(g,mxResources.get("apply"),mxUtils.bind(this,function(c){a.cellEditor.restoreSelection(t);null!=c&&a.insertLink(c)}))}else a.isSelectionEmpty()? -this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=k;this.addAction("autosize",function(){var a=d.getSelectionCells();if(null!=a){d.getModel().beginUpdate();try{for(var b=0;b<a.length;b++){var c=a[b];if(d.getModel().getChildCount(c))d.updateGroupBounds([c],20);else{var g=d.view.getState(c),f=d.getCellGeometry(c);d.getModel().isVertex(c)&&null!=g&&null!=g.text&&null!=f&&d.isWrapping(c)?(f=f.clone(),f.height=g.text.boundingBox.height/d.view.scale,d.getModel().setGeometry(c,f)): -d.updateCellSize(c)}}}finally{d.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+Y");this.addAction("formattedText",function(){var a=d.getView().getState(d.getSelectionCell());if(null!=a){var f="1";d.stopEditing();d.getModel().beginUpdate();try{if("1"==a.style.html){var f=null,c=d.convertValueToString(a.cell);"0"!=mxUtils.getValue(a.style,"nl2Br","1")&&(c=c.replace(/\n/g,"").replace(/<br\s*.?>/g,"\n"));var g=document.createElement("div");g.innerHTML=c;c=mxUtils.extractTextWithWhitespace(g.childNodes); -d.cellLabelChanged(a.cell,c)}else c=mxUtils.htmlEntities(d.convertValueToString(a.cell),!1),"0"!=mxUtils.getValue(a.style,"nl2Br","1")&&(c=c.replace(/\n/g,"<br/>")),d.cellLabelChanged(a.cell,d.sanitizeHtml(c));d.setCellStyles("html",f);b.fireEvent(new mxEventObject("styleChanged","keys",["html"],"values",[null!=f?f:"0"],"cells",d.getSelectionCells()))}finally{d.getModel().endUpdate()}}});this.addAction("wordWrap",function(){var a=d.getView().getState(d.getSelectionCell()),b="wrap";d.stopEditing(); -null!=a&&"wrap"==a.style[mxConstants.STYLE_WHITE_SPACE]&&(b=null);d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,b)});this.addAction("rotation",function(){var a="0",f=d.getView().getState(d.getSelectionCell());null!=f&&(a=f.style[mxConstants.STYLE_ROTATION]||a);a=new FilenameDialog(b,a,mxResources.get("apply"),function(a){null!=a&&0<a.length&&d.setCellStyles(mxConstants.STYLE_ROTATION,a)},mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)");b.showDialog(a.container,375,80,!0,!0); -a.init()});this.addAction("resetView",function(){d.zoomTo(1);b.resetScrollbars()},null,null,Editor.ctrlKey+"+H");this.addAction("zoomIn",function(a){d.zoomIn()},null,null,Editor.ctrlKey+" + (Numpad) / Alt+Mousewheel");this.addAction("zoomOut",function(a){d.zoomOut()},null,null,Editor.ctrlKey+" - (Numpad) / Alt+Mousewheel");this.addAction("fitWindow",function(){d.fit()},null,null,Editor.ctrlKey+"+Shift+H");this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct(); -var a=d.pageFormat,b=d.pageScale;d.zoomTo(Math.floor(20*Math.min((d.container.clientWidth-10)/a.width/b,(d.container.clientHeight-10)/a.height/b))/20);mxUtils.hasScrollbars(d.container)&&(a=d.getPagePadding(),d.container.scrollTop=a.y*d.view.scale-1,d.container.scrollLeft=Math.min(a.x*d.view.scale,(d.container.scrollWidth-d.container.clientWidth)/2)-1)}),null,null,Editor.ctrlKey+"+J");this.addAction("fitTwoPages",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var a=d.pageFormat, -b=d.pageScale;d.zoomTo(Math.floor(20*Math.min((d.container.clientWidth-10)/(2*a.width)/b,(d.container.clientHeight-10)/a.height/b))/20);mxUtils.hasScrollbars(d.container)&&(a=d.getPagePadding(),d.container.scrollTop=Math.min(a.y,(d.container.scrollHeight-d.container.clientHeight)/2),d.container.scrollLeft=Math.min(a.x,(d.container.scrollWidth-d.container.clientWidth)/2))}),null,null,Editor.ctrlKey+"+Shift+J");this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct(); -d.zoomTo(Math.floor(20*(d.container.clientWidth-10)/d.pageFormat.width/d.pageScale)/20);if(mxUtils.hasScrollbars(d.container)){var a=d.getPagePadding();d.container.scrollLeft=Math.min(a.x*d.view.scale,(d.container.scrollWidth-d.container.clientWidth)/2)}}));this.put("customZoom",new Action(mxResources.get("custom")+"...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.editorUi,parseInt(100*d.getView().getScale()),mxResources.get("apply"),mxUtils.bind(this,function(a){a=parseInt(a);!isNaN(a)&& -0<a&&d.zoomTo(a/100)}),mxResources.get("zoom")+" (%)");this.editorUi.showDialog(a.container,300,80,!0,!0);a.init()}),null,null,Editor.ctrlKey+"+0"));this.addAction("pageScale...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.editorUi,parseInt(100*d.pageScale),mxResources.get("apply"),mxUtils.bind(this,function(a){a=parseInt(a);!isNaN(a)&&0<a&&b.setPageScale(a/100)}),mxResources.get("pageScale")+" (%)");this.editorUi.showDialog(a.container,300,80,!0,!0);a.init()}));var n=null,n=this.addAction("grid", -function(){d.setGridEnabled(!d.isGridEnabled());b.fireEvent(new mxEventObject("gridEnabledChanged"))},null,null,Editor.ctrlKey+"+Shift+G");n.setToggleAction(!0);n.setSelectedCallback(function(){return d.isGridEnabled()});n.setEnabled(!1);n=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled;b.fireEvent(new mxEventObject("guidesEnabledChanged"))});n.setToggleAction(!0);n.setSelectedCallback(function(){return d.graphHandler.guidesEnabled});n.setEnabled(!1); -n=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())});n.setToggleAction(!0);n.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()});n=this.addAction("collapseExpand",function(){var a=new ChangePageSetup(b);a.ignoreColor=!0;a.ignoreImage=!0;a.foldingEnabled=!d.foldingEnabled;d.model.execute(a)});n.setToggleAction(!0);n.setSelectedCallback(function(){return d.foldingEnabled});n.isEnabled=k;n=this.addAction("scrollbars",function(){b.setScrollbars(!b.hasScrollbars())}); -n.setToggleAction(!0);n.setSelectedCallback(function(){return d.scrollbars});n=this.addAction("pageView",mxUtils.bind(this,function(){b.setPageVisible(!d.pageVisible)}));n.setToggleAction(!0);n.setSelectedCallback(function(){return d.pageVisible});n=this.addAction("connectionArrows",function(){d.connectionArrowsEnabled=!d.connectionArrowsEnabled;b.fireEvent(new mxEventObject("connectionArrowsChanged"))},null,null,"Alt+Shift+A");n.setToggleAction(!0);n.setSelectedCallback(function(){return d.connectionArrowsEnabled}); -n=this.addAction("connectionPoints",function(){d.setConnectable(!d.connectionHandler.isEnabled());b.fireEvent(new mxEventObject("connectionPointsChanged"))},null,null,"Alt+Shift+P");n.setToggleAction(!0);n.setSelectedCallback(function(){return d.connectionHandler.isEnabled()});n=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget());b.fireEvent(new mxEventObject("copyConnectChanged"))});n.setToggleAction(!0);n.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}); -n.isEnabled=k;n=this.addAction("autosave",function(){b.editor.setAutosave(!b.editor.autosave)});n.setToggleAction(!0);n.setSelectedCallback(function(){return b.editor.autosave});n.isEnabled=k;n.visible=!1;this.addAction("help",function(){var a="";mxResources.isLanguageSupported(mxClient.language)&&(a="_"+mxClient.language);d.openLink(RESOURCES_PATH+"/help"+a+".html")});var p=!1;this.put("about",new Action(mxResources.get("about")+" Graph Editor...",function(){p||(b.showDialog((new AboutDialog(b)).container, -320,280,!0,!0,function(){p=!1}),p=!0)},null,null,"F1"));n=mxUtils.bind(this,function(a,b,c,g){return this.addAction(a,function(){if(null!=c&&d.cellEditor.isContentEditing())c();else{d.stopEditing(!1);d.getModel().beginUpdate();try{d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,b),(b&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?d.updateLabelElements(d.getSelectionCells(),function(a){a.style.fontWeight=null;"B"==a.nodeName&&d.replaceElement(a)}):(b&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC? -d.updateLabelElements(d.getSelectionCells(),function(a){a.style.fontStyle=null;"I"==a.nodeName&&d.replaceElement(a)}):(b&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&d.updateLabelElements(d.getSelectionCells(),function(a){a.style.textDecoration=null;"U"==a.nodeName&&d.replaceElement(a)})}finally{d.getModel().endUpdate()}}},null,null,g)});n("bold",mxConstants.FONT_BOLD,function(){document.execCommand("bold",!1,null)},Editor.ctrlKey+"+B");n("italic",mxConstants.FONT_ITALIC,function(){document.execCommand("italic", -!1,null)},Editor.ctrlKey+"+I");n("underline",mxConstants.FONT_UNDERLINE,function(){document.execCommand("underline",!1,null)},Editor.ctrlKey+"+U");this.addAction("fontColor...",function(){b.menus.pickColor(mxConstants.STYLE_FONTCOLOR,"forecolor","000000")});this.addAction("strokeColor...",function(){b.menus.pickColor(mxConstants.STYLE_STROKECOLOR)});this.addAction("fillColor...",function(){b.menus.pickColor(mxConstants.STYLE_FILLCOLOR)});this.addAction("gradientColor...",function(){b.menus.pickColor(mxConstants.STYLE_GRADIENTCOLOR)}); -this.addAction("backgroundColor...",function(){b.menus.pickColor(mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,"backcolor")});this.addAction("borderColor...",function(){b.menus.pickColor(mxConstants.STYLE_LABEL_BORDERCOLOR)});this.addAction("vertical",function(){b.menus.toggleStyle(mxConstants.STYLE_HORIZONTAL,!0)});this.addAction("shadow",function(){b.menus.toggleStyle(mxConstants.STYLE_SHADOW)});this.addAction("solid",function(){d.getModel().beginUpdate();try{d.setCellStyles(mxConstants.STYLE_DASHED, -null),d.setCellStyles(mxConstants.STYLE_DASH_PATTERN,null),b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",[null,null],"cells",d.getSelectionCells()))}finally{d.getModel().endUpdate()}});this.addAction("dashed",function(){d.getModel().beginUpdate();try{d.setCellStyles(mxConstants.STYLE_DASHED,"1"),d.setCellStyles(mxConstants.STYLE_DASH_PATTERN,null),b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED, -mxConstants.STYLE_DASH_PATTERN],"values",["1",null],"cells",d.getSelectionCells()))}finally{d.getModel().endUpdate()}});this.addAction("dotted",function(){d.getModel().beginUpdate();try{d.setCellStyles(mxConstants.STYLE_DASHED,"1"),d.setCellStyles(mxConstants.STYLE_DASH_PATTERN,"1 4"),b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",["1","1 4"],"cells",d.getSelectionCells()))}finally{d.getModel().endUpdate()}});this.addAction("sharp", -function(){d.getModel().beginUpdate();try{d.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),d.setCellStyles(mxConstants.STYLE_CURVED,"0"),b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","0"],"cells",d.getSelectionCells()))}finally{d.getModel().endUpdate()}});this.addAction("rounded",function(){d.getModel().beginUpdate();try{d.setCellStyles(mxConstants.STYLE_ROUNDED,"1"),d.setCellStyles(mxConstants.STYLE_CURVED,"0"),b.fireEvent(new mxEventObject("styleChanged", -"keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["1","0"],"cells",d.getSelectionCells()))}finally{d.getModel().endUpdate()}});this.addAction("toggleRounded",function(){if(!d.isSelectionEmpty()&&d.isEnabled()){d.getModel().beginUpdate();try{var a=d.getSelectionCells(),f=d.view.getState(a[0]),c=null!=f?f.style:d.getCellStyle(a[0]),g="1"==mxUtils.getValue(c,mxConstants.STYLE_ROUNDED,"0")?"0":"1";d.setCellStyles(mxConstants.STYLE_ROUNDED,g);d.setCellStyles(mxConstants.STYLE_CURVED, -null);b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",[g,"0"],"cells",d.getSelectionCells()))}finally{d.getModel().endUpdate()}}});this.addAction("curved",function(){d.getModel().beginUpdate();try{d.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),d.setCellStyles(mxConstants.STYLE_CURVED,"1"),b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","1"],"cells",d.getSelectionCells()))}finally{d.getModel().endUpdate()}}); -this.addAction("collapsible",function(){var a=d.view.getState(d.getSelectionCell()),f="1";null!=a&&null!=d.getFoldingImage(a)&&(f="0");d.setCellStyles("collapsible",f);b.fireEvent(new mxEventObject("styleChanged","keys",["collapsible"],"values",[f],"cells",d.getSelectionCells()))});this.addAction("editStyle...",mxUtils.bind(this,function(){var a=d.getSelectionCells();if(null!=a&&0<a.length){var b=d.getModel(),b=new TextareaDialog(this.editorUi,mxResources.get("editStyle")+":",b.getStyle(a[0])||"", -function(c){null!=c&&d.setCellStyle(mxUtils.trim(c),a)},null,null,400,220);this.editorUi.showDialog(b.container,420,300,!0,!0);b.init()}}),null,null,Editor.ctrlKey+"+E");this.addAction("setAsDefaultStyle",function(){d.isEnabled()&&!d.isSelectionEmpty()&&b.setDefaultStyle(d.getSelectionCell())},null,null,Editor.ctrlKey+"+Shift+D");this.addAction("clearDefaultStyle",function(){d.isEnabled()&&b.clearDefaultStyle()},null,null,Editor.ctrlKey+"+Shift+R");this.addAction("addWaypoint",function(){var a=d.getSelectionCell(); -if(null!=a&&d.getModel().isEdge(a)){var b=f.graph.selectionCellsHandler.getHandler(a);if(b instanceof mxEdgeHandler){for(var c=d.view.translate,g=d.view.scale,h=c.x,c=c.y,a=d.getModel().getParent(a),l=d.getCellGeometry(a);d.getModel().isVertex(a)&&null!=l;)h+=l.x,c+=l.y,a=d.getModel().getParent(a),l=d.getCellGeometry(a);h=Math.round(d.snap(d.popupMenuHandler.triggerX/g-h));g=Math.round(d.snap(d.popupMenuHandler.triggerY/g-c));b.addPointAt(b.state,h,g)}}});this.addAction("removeWaypoint",function(){var a= -b.actions.get("removeWaypoint");null!=a.handler&&a.handler.removePoint(a.handler.state,a.index)});this.addAction("clearWaypoints",function(){var a=d.getSelectionCells();if(null!=a){a=d.addAllEdges(a);d.getModel().beginUpdate();try{for(var b=0;b<a.length;b++){var c=a[b];if(d.getModel().isEdge(c)){var g=d.getCellGeometry(c);null!=g&&(g=g.clone(),g.points=null,d.getModel().setGeometry(c,g))}}}finally{d.getModel().endUpdate()}}},null,null,"Alt+Shift+C");n=this.addAction("subscript",mxUtils.bind(this, -function(){d.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");n=this.addAction("superscript",mxUtils.bind(this,function(){d.cellEditor.isContentEditing()&&document.execCommand("superscript",!1,null)}),null,null,Editor.ctrlKey+"+.");this.addAction("image...",function(){if(d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())){var a=mxResources.get("image")+" ("+mxResources.get("url")+"):",f=d.getView().getState(d.getSelectionCell()),c="";null!= -f&&(c=f.style[mxConstants.STYLE_IMAGE]||c);var g=d.cellEditor.saveSelection();b.showImageDialog(a,c,function(a,c,b){if(d.cellEditor.isContentEditing())d.cellEditor.restoreSelection(g),d.insertImage(a,c,b);else{var f=d.getSelectionCells();if(null!=a&&(0<a.length||0<f.length)){var h=null;d.getModel().beginUpdate();try{if(0==f.length){var l=d.getFreeInsertPoint(),h=f=[d.insertVertex(d.getDefaultParent(),null,"",l.x,l.y,c,b,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")]; -d.fireEvent(new mxEventObject("cellsInserted","cells",h))}d.setCellStyles(mxConstants.STYLE_IMAGE,0<a.length?a:null,f);var t=d.view.getState(f[0]),k=null!=t?t.style:d.getCellStyle(f[0]);"image"!=k[mxConstants.STYLE_SHAPE]&&"label"!=k[mxConstants.STYLE_SHAPE]?d.setCellStyles(mxConstants.STYLE_SHAPE,"image",f):0==a.length&&d.setCellStyles(mxConstants.STYLE_SHAPE,null,f);if(1==d.getSelectionCount()&&null!=c&&null!=b){var y=f[0],u=d.getModel().getGeometry(y);null!=u&&(u=u.clone(),u.width=c,u.height=b, -d.getModel().setGeometry(y,u))}}finally{d.getModel().endUpdate()}null!=h&&(d.setSelectionCells(h),d.scrollCellToVisible(h[0]))}}},d.cellEditor.isContentEditing(),!d.cellEditor.isContentEditing())}}).isEnabled=k;n=this.addAction("layers",mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(b,document.body.offsetWidth-280,120,220,180),this.layersWindow.window.addListener("show",function(){b.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.addListener("hide", -function(){b.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.setVisible(!0),b.fireEvent(new mxEventObject("layers"))):this.layersWindow.window.setVisible(!this.layersWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+L");n.setToggleAction(!0);n.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.layersWindow&&this.layersWindow.window.isVisible()}));n=this.addAction("formatPanel",mxUtils.bind(this,function(){b.toggleFormatPanel()}),null,null,Editor.ctrlKey+ -"+Shift+P");n.setToggleAction(!0);n.setSelectedCallback(mxUtils.bind(this,function(){return 0<b.formatWidth}));n=this.addAction("outline",mxUtils.bind(this,function(){null==this.outlineWindow?(this.outlineWindow=new OutlineWindow(b,document.body.offsetWidth-260,100,180,180),this.outlineWindow.window.addListener("show",function(){b.fireEvent(new mxEventObject("outline"))}),this.outlineWindow.window.addListener("hide",function(){b.fireEvent(new mxEventObject("outline"))}),this.outlineWindow.window.setVisible(!0), -b.fireEvent(new mxEventObject("outline"))):this.outlineWindow.window.setVisible(!this.outlineWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+O");n.setToggleAction(!0);n.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.outlineWindow&&this.outlineWindow.window.isVisible()}))}; -Actions.prototype.addAction=function(a,b,f,d,k){var n;"..."==a.substring(a.length-3)?(a=a.substring(0,a.length-3),n=mxResources.get(a)+"..."):n=mxResources.get(a);return this.put(a,new Action(n,b,f,d,k))};Actions.prototype.put=function(a,b){return this.actions[a]=b};Actions.prototype.get=function(a){return this.actions[a]};function Action(a,b,f,d,k){mxEventSource.call(this);this.label=a;this.funct=this.createFunction(b);this.enabled=null!=f?f:!0;this.iconCls=d;this.shortcut=k;this.visible=!0} -mxUtils.extend(Action,mxEventSource);Action.prototype.createFunction=function(a){return a};Action.prototype.setEnabled=function(a){this.enabled!=a&&(this.enabled=a,this.fireEvent(new mxEventObject("stateChanged")))};Action.prototype.isEnabled=function(){return this.enabled};Action.prototype.setToggleAction=function(a){this.toggleAction=a};Action.prototype.setSelectedCallback=function(a){this.selectedCallback=a};Action.prototype.isSelected=function(){return this.selectedCallback()};DrawioFile=function(a,b){mxEventSource.call(this);this.ui=a;this.shadowData=this.data=b||"";this.stats={joined:0,merged:0,lastMerge:0,lastMergeTime:0,lastOpenTime:0,emptyPrefix:!1,shadowState:0,opened:0,closed:0,destroyed:0,fileMerged:0,fileSaved:0,reload:0,checksumErrors:0,bytesSent:0,bytesReceived:0,msgSent:0,msgReceived:0,cacheHits:0,cacheMiss:0,cacheFail:0,conflicts:0,timeouts:0}};DrawioFile.SYNC=urlParams.sync||"auto";DrawioFile.LAST_WRITE_WINS=!0;mxUtils.extend(DrawioFile,mxEventSource); -DrawioFile.prototype.allChangesSavedKey="allChangesSaved";DrawioFile.prototype.autosaveDelay=1500;DrawioFile.prototype.maxAutosaveDelay=3E4;DrawioFile.prototype.autosaveThread=null;DrawioFile.prototype.lastAutosave=null;DrawioFile.prototype.modified=!1;DrawioFile.prototype.data=null;DrawioFile.prototype.shadowData=null;DrawioFile.prototype.shadowPages=null;DrawioFile.prototype.changeListenerEnabled=!0;DrawioFile.prototype.lastAutosaveRevision=null;DrawioFile.prototype.maxAutosaveRevisionDelay=18E5; -DrawioFile.prototype.inConflictState=!1;DrawioFile.prototype.invalidChecksum=!1;DrawioFile.prototype.reportEnabled=!0;DrawioFile.prototype.getSize=function(){return null!=this.data?this.data.length:0};DrawioFile.prototype.synchronizeFile=function(a,b){this.savingFile?null!=b&&b({message:mxResources.get("busy")}):null!=this.sync?this.sync.fileChanged(a,b):this.updateFile(a,b)}; -DrawioFile.prototype.updateFile=function(a,b,f,d){null!=f&&f()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=b&&b(e):this.getLatestVersion(mxUtils.bind(this,function(k){try{null!=f&&f()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=b&&b(e):null!=k?this.mergeFile(k,a,b,d):this.reloadFile(a,b))}catch(n){null!=b&&b(n)}}),b))}; -DrawioFile.prototype.mergeFile=function(a,b,f,d){try{this.stats.fileMerged++;var k=null!=this.shadowPages?this.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.shadowData).documentElement),n=this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement);if(null!=n&&0<n.length){this.shadowPages=n;this.backupPatch=this.isModified()?this.ui.diffPages(k,this.ui.pages):null;var p=[this.ui.diffPages(null!=d?d:k,this.shadowPages)];if(this.ignorePatches(p))this.stats.shadowState=this.ui.hashValue(a.getCurrentEtag()); -else{var q=this.ui.patchPages(k,p[0]);this.stats.shadowState=this.ui.hashValue(a.getCurrentEtag());d={};var w=this.ui.getHashValueForPages(q,d),k={},c=this.ui.getHashValueForPages(this.shadowPages,k);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",p,"checksum",c==w,w);if(null!=w&&w!=c){var g=this.compressReportData(this.getAnonymizedXmlForPages(q));this.checksumError(f,p,(null!=d?"Details: "+JSON.stringify(d):"")+"\nChecksum: "+w+"\nCurrent: "+c+(null!= -k?"\nCurrent Details: "+JSON.stringify(k):"")+"\nPatched:\n"+g);return}this.patch(p,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(a.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=b&&b()}catch(h){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=f&&f(h);try{this.sendErrorReport("Error in mergeFile",null,h)}catch(l){}}}; -DrawioFile.prototype.getAnonymizedXmlForPages=function(a){var b=new mxCodec(mxUtils.createXmlDocument()),f=b.document.createElement("mxfile");if(null!=a)for(var d=0;d<a.length;d++){var k=b.encode(new mxGraphModel(a[d].root));"1"!=urlParams.dev&&(k=this.ui.anonymizeNode(k,!0));k.setAttribute("id",a[d].getId());a[d].viewState&&this.ui.editor.graph.saveViewState(a[d].viewState,k,!0);f.appendChild(k)}return mxUtils.getPrettyXml(f)}; -DrawioFile.prototype.compressReportData=function(a,b,f){null!=a&&a.length>(null!=b?b:1E4)&&(a=this.ui.editor.graph.compress(a)+"\n");null!=f&&null!=a&&a.length>f&&(a=a.substring(0,f)+"[...]");return a}; -DrawioFile.prototype.checksumError=function(a,b,f,d){this.stats.checksumErrors++;this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=this.sync&&this.sync.updateOnlineState();null!=a&&a();try{if(null!=b)for(a=0;a<b.length;a++)this.ui.anonymizePatch(b[a]);var k=Error(),n=mxUtils.bind(this,function(a){var d=this.compressReportData(JSON.stringify(b,null,2));a=null!=a?this.compressReportData(this.getAnonymizedXmlForPages(this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement)), -25E3):"n/a";this.sendErrorReport("Checksum Error",(null!=f?f:"")+"\n\nPatches:\n"+d+(null!=a?"\n\nMaster:\n"+a:""),k,7E4)});null==d?n(null):this.getLatestVersion(mxUtils.bind(this,function(a){null!=a&&a.getCurrentEtag()==d?n(a):n(null)}),function(){})}catch(p){}}; -DrawioFile.prototype.sendErrorReport=function(a,b,f,d){try{var k=this.compressReportData(this.getAnonymizedXmlForPages(this.shadowPages),25E3),n=this.getCurrentUser(),p=null!=n?this.ui.hashValue(n.id):"unknown",q=null!=this.sync?this.sync.clientId:"no sync";null!=this.stats.start&&(this.stats.uptime=Math.round(((new Date).getTime()-(new Date(this.stats.start)).getTime())/1E3));var w=this.getTitle(),c=w.lastIndexOf("."),n="xml";0<c&&(n=w.substring(c));var g=null!=f?f.stack:Error().stack;EditorUi.sendReport(a+ -" "+(new Date).toISOString()+":\n\nBrowser="+navigator.userAgent+"\nFile="+this.ui.hashValue(this.getId())+" ("+this.getMode()+")"+(this.isModified()?" modified":"")+"\nSize/Type="+this.getSize()+" ("+n+")\nUser="+p+" ("+q+")\nPlugins="+(null!=mxSettings.settings?mxSettings.getPlugins():"null")+"\nSync="+DrawioFile.SYNC+(null!=f?"\nError="+f:"")+"\n\nStats:\n"+JSON.stringify(this.stats,null,2)+(null!=b?"\n\n"+b:"")+"\n\nShadow:\n"+k+"\n\nStack:\n"+g,d)}catch(h){}}; -DrawioFile.prototype.reloadFile=function(a,b){try{this.ui.spinner.stop();var f=mxUtils.bind(this,function(){this.stats.reload++;this.reportEnabled=!1;var b=this.ui.editor.graph.getViewState(),f=this.ui.editor.graph.getSelectionCells(),n=this.ui.currentPage;this.ui.loadFile(this.getHash(),!0,null,mxUtils.bind(this,function(){if(null==this.ui.fileLoadedError){this.ui.restoreViewState(n,b,f);null!=this.backupPatch&&this.patch([this.backupPatch]);var d=this.ui.getCurrentFile();null!=d&&(d.stats=this.stats); -null!=a&&a()}}),!0)});this.isModified()&&null==this.backupPatch?this.ui.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){this.handleFileSuccess("manual"==DrawioFile.SYNC)}),f,mxResources.get("cancel"),mxResources.get("discardChanges")):f()}catch(d){null!=b&&b(d)}};DrawioFile.prototype.copyFile=function(a,b){this.ui.editor.editAsNew(this.ui.getFileData(!0),this.ui.getCopyFilename(this))}; -DrawioFile.prototype.ignorePatches=function(a){for(var b=!0,f=0;f<a.length&&b;f++)b=b&&0==Object.keys(a[f]).length;return b}; -DrawioFile.prototype.patch=function(a,b){var f=this.ui.editor.undoManager,d=f.history.slice(),k=f.indexOfNextAdd,n=this.ui.editor.graph;n.container.style.visibility="hidden";var p=this.changeListenerEnabled;this.changeListenerEnabled=!1;var q=n.foldingEnabled,w=n.mathEnabled,c=n.cellRenderer.redraw;n.cellRenderer.redraw=function(a){a.view.graph.isEditing(a.cell)&&(a.view.graph.scrollCellToVisible(a.cell),a.view.graph.cellEditor.resize());c.apply(this,arguments)};n.model.beginUpdate();try{for(var g= -0;g<a.length;g++)this.ui.pages=this.ui.patchPages(this.ui.pages,a[g],!0,b,this.isModified());0==this.ui.pages.length&&this.ui.pages.push(this.ui.createPage());0>mxUtils.indexOf(this.ui.pages,this.ui.currentPage)&&this.ui.selectPage(this.ui.pages[0],!0)}finally{n.model.endUpdate();n.container.style.visibility="";n.cellRenderer.redraw=c;this.changeListenerEnabled=p;f.history=d;f.indexOfNextAdd=k;f.fireEvent(new mxEventObject(mxEvent.CLEAR));if(null==this.ui.currentPage||this.ui.currentPage.needsUpdate)w!= -n.mathEnabled?(this.ui.editor.updateGraphComponents(),n.refresh()):(q!=n.foldingEnabled?n.view.revalidate():n.view.validate(),n.sizeDidChange()),null!=this.ui.format&&n.isSelectionEmpty()&&this.ui.format.refresh();this.ui.updateTabContainer()}}; -DrawioFile.prototype.save=function(a,b,f,d,k,n){if(this.isEditable())if(!k&&this.invalidChecksum)if(null!=f)f({message:mxResources.get("checksum")});else throw Error(mxResources.get("checksum"));else this.updateFileData(),this.clearAutosave();else if(null!=f)f({message:mxResources.get("readOnly")});else throw Error(mxResources.get("readOnly"));};DrawioFile.prototype.updateFileData=function(){this.setData(this.ui.getFileData(null,null,null,null,null,null,null,null,this))}; -DrawioFile.prototype.saveAs=function(a,b,f){};DrawioFile.prototype.saveFile=function(a,b,f,d){};DrawioFile.prototype.getPublicUrl=function(a){a(null)};DrawioFile.prototype.isRestricted=function(){return!1};DrawioFile.prototype.isModified=function(){return this.modified};DrawioFile.prototype.setModified=function(a){this.modified=a};DrawioFile.prototype.isAutosaveOptional=function(){return!1};DrawioFile.prototype.isAutosave=function(){return!this.inConflictState&&this.ui.editor.autosave}; -DrawioFile.prototype.isRenamable=function(){return!1};DrawioFile.prototype.rename=function(a,b,f){};DrawioFile.prototype.isMovable=function(){return!1};DrawioFile.prototype.move=function(a,b,f){};DrawioFile.prototype.getHash=function(){return""};DrawioFile.prototype.getId=function(){return""};DrawioFile.prototype.isEditable=function(){return!this.ui.editor.isChromelessView()||this.ui.editor.editable};DrawioFile.prototype.getUi=function(){return this.ui};DrawioFile.prototype.getTitle=function(){return""}; -DrawioFile.prototype.setData=function(a){this.data=a};DrawioFile.prototype.getData=function(){return this.data};DrawioFile.prototype.open=function(){this.stats.opened++;this.stats.lastOpenTime=(new Date).toISOString();var a=this.getData();null!=a?(this.ui.setFileData(a),this.isModified()||(this.shadowData=mxUtils.getXml(this.ui.getXmlFileData()),this.shadowPages=null)):this.sendErrorReport("Error in open","Data was null");this.installListeners();this.isSyncSupported()&&this.startSync()}; -DrawioFile.prototype.isSyncSupported=function(){return!1};DrawioFile.prototype.isRevisionHistorySupported=function(){return!1};DrawioFile.prototype.getRevisions=function(a,b){a(null)};DrawioFile.prototype.loadDescriptor=function(a,b){a(null)};DrawioFile.prototype.loadPatchDescriptor=function(a,b){this.loadDescriptor(mxUtils.bind(this,function(b){a(b)}),b)}; -DrawioFile.prototype.startSync=function(){"auto"!=DrawioFile.SYNC||"1"==urlParams.stealth||"1"!=urlParams.rt&&this.ui.editor.chromeless&&!this.ui.editor.editable||(null==this.sync&&(this.sync=new DrawioFileSync(this)),this.sync.start())};DrawioFile.prototype.isConflict=function(){return!1};DrawioFile.prototype.getChannelId=function(){return this.ui.editor.graph.compress(this.getHash()).replace(/[\/ +]/g,"_")};DrawioFile.prototype.getChannelKey=function(a){return null}; -DrawioFile.prototype.getCurrentUser=function(){return null};DrawioFile.prototype.getLatestVersion=function(a,b){a(null)};DrawioFile.prototype.getLastModifiedDate=function(){return new Date};DrawioFile.prototype.setCurrentEtag=function(a){this.setDescriptorEtag(this.getDescriptor(),a)};DrawioFile.prototype.getCurrentEtag=function(){return this.getDescriptorEtag(this.getDescriptor())};DrawioFile.prototype.getDescriptor=function(){return null};DrawioFile.prototype.setDescriptor=function(){}; -DrawioFile.prototype.setDescriptorEtag=function(a,b){};DrawioFile.prototype.getDescriptorEtag=function(a){return null};DrawioFile.prototype.getDescriptorSecret=function(a){return null}; -DrawioFile.prototype.installListeners=function(){null==this.changeListener&&(this.changeListener=mxUtils.bind(this,function(a,b){var f=null!=b?b.getProperty("edit"):null;!this.changeListenerEnabled||!this.isEditable()||null!=f&&f.ignoreEdit||this.fileChanged()}),this.ui.editor.graph.model.addListener(mxEvent.CHANGE,this.changeListener),this.ui.editor.graph.addListener("gridSizeChanged",this.changeListener),this.ui.editor.graph.addListener("shadowVisibleChanged",this.changeListener),this.ui.addListener("pageFormatChanged", +function(){b.showDialog((new PageSetupDialog(b)).container,320,220,!0,!0)}).isEnabled=k;this.addAction("print...",function(){b.showDialog((new PrintDialog(b)).container,300,180,!0,!0)},null,"sprite-print",Editor.ctrlKey+"+P");this.addAction("preview",function(){mxUtils.show(c,null,10,10)});this.addAction("undo",function(){b.undo()},null,"sprite-undo",Editor.ctrlKey+"+Z");this.addAction("redo",function(){b.redo()},null,"sprite-redo",mxClient.IS_WIN?Editor.ctrlKey+"+Y":Editor.ctrlKey+"+Shift+Z");this.addAction("cut", +function(){mxClipboard.cut(c)},null,"sprite-cut",Editor.ctrlKey+"+X");this.addAction("copy",function(){mxClipboard.copy(c)},null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){c.isEnabled()&&!c.isCellLocked(c.getDefaultParent())&&mxClipboard.paste(c)},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(a){if(c.isEnabled()&&!c.isCellLocked(c.getDefaultParent())){c.getModel().beginUpdate();try{var b=mxClipboard.paste(c);if(null!=b){a=!0;for(var e=0;e<b.length&& +a;e++)a=a&&c.model.isEdge(b[e]);var d=c.view.translate,f=c.view.scale,l=d.x,n=d.y,d=null;if(1==b.length&&a){var g=c.getCellGeometry(b[0]);null!=g&&(d=g.getTerminalPoint(!0))}d=null!=d?d:c.getBoundingBoxFromGeometry(b,a);if(null!=d){var p=Math.round(c.snap(c.popupMenuHandler.triggerX/f-l)),k=Math.round(c.snap(c.popupMenuHandler.triggerY/f-n));c.cellsMoved(b,p-d.x,k-d.y)}}}finally{c.getModel().endUpdate()}}});this.addAction("copySize",function(a){a=c.getSelectionCell();c.isEnabled()&&null!=a&&c.getModel().isVertex(a)&& +(a=c.getCellGeometry(a),null!=a&&(b.copiedSize=new mxRectangle(a.x,a.y,a.width,a.height)))},null,null,"Alt+Shit+X");this.addAction("pasteSize",function(a){if(c.isEnabled()&&!c.isSelectionEmpty()&&null!=b.copiedSize){c.getModel().beginUpdate();try{var e=c.getSelectionCells();for(a=0;a<e.length;a++)if(c.getModel().isVertex(e[a])){var k=c.getCellGeometry(e[a]);null!=k&&(k=k.clone(),k.width=b.copiedSize.width,k.height=b.copiedSize.height,c.getModel().setGeometry(e[a],k))}}finally{c.getModel().endUpdate()}}}, +null,null,"Alt+Shit+V");this.addAction("delete",function(b){a(null!=b&&mxEvent.isShiftDown(b))},null,null,"Delete");this.addAction("deleteAll",function(){a(!0)},null,null,Editor.ctrlKey+"+Delete");this.addAction("duplicate",function(){c.setSelectionCells(c.duplicateCells())},null,null,Editor.ctrlKey+"+D");this.put("turn",new Action(mxResources.get("turn")+" / "+mxResources.get("reverse"),function(){c.turnShapes(c.getSelectionCells())},null,null,Editor.ctrlKey+"+R"));this.addAction("selectVertices", +function(){c.selectVertices()},null,null,Editor.ctrlKey+"+Shift+I");this.addAction("selectEdges",function(){c.selectEdges()},null,null,Editor.ctrlKey+"+Shift+E");this.addAction("selectAll",function(){c.selectAll(null,!0)},null,null,Editor.ctrlKey+"+A");this.addAction("selectNone",function(){c.clearSelection()},null,null,Editor.ctrlKey+"+Shift+A");this.addAction("lockUnlock",function(){if(!c.isSelectionEmpty()){c.getModel().beginUpdate();try{var a=c.isCellMovable(c.getSelectionCell())?1:0;c.toggleCellStyles(mxConstants.STYLE_MOVABLE, +a);c.toggleCellStyles(mxConstants.STYLE_RESIZABLE,a);c.toggleCellStyles(mxConstants.STYLE_ROTATABLE,a);c.toggleCellStyles(mxConstants.STYLE_DELETABLE,a);c.toggleCellStyles(mxConstants.STYLE_EDITABLE,a);c.toggleCellStyles("connectable",a)}finally{c.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+L");this.addAction("home",function(){c.home()},null,null,"Home");this.addAction("exitGroup",function(){c.exitGroup()},null,null,Editor.ctrlKey+"+Shift+Home");this.addAction("enterGroup",function(){c.enterGroup()}, +null,null,Editor.ctrlKey+"+Shift+End");this.addAction("collapse",function(){c.foldCells(!0)},null,null,Editor.ctrlKey+"+Home");this.addAction("expand",function(){c.foldCells(!1)},null,null,Editor.ctrlKey+"+End");this.addAction("toFront",function(){c.orderCells(!1)},null,null,Editor.ctrlKey+"+Shift+F");this.addAction("toBack",function(){c.orderCells(!0)},null,null,Editor.ctrlKey+"+Shift+B");this.addAction("group",function(){1==c.getSelectionCount()?c.setCellStyles("container","1"):c.setSelectionCell(c.groupCells(null, +0))},null,null,Editor.ctrlKey+"+G");this.addAction("ungroup",function(){1==c.getSelectionCount()&&0==c.getModel().getChildCount(c.getSelectionCell())?c.setCellStyles("container","0"):c.setSelectionCells(c.ungroupCells())},null,null,Editor.ctrlKey+"+Shift+U");this.addAction("removeFromGroup",function(){c.removeCellsFromParent()});this.addAction("edit",function(){c.isEnabled()&&c.startEditingAtCell()},null,null,"F2/Enter");this.addAction("editData...",function(){var a=c.getSelectionCell()||c.getModel().getRoot(); +b.showDataDialog(a)},null,null,Editor.ctrlKey+"+M");this.addAction("editTooltip...",function(){var a=b.editor.graph;if(a.isEnabled()&&!a.isSelectionEmpty()){var c=a.getSelectionCell(),e="";if(mxUtils.isNode(c.value)){var d=c.value.getAttribute("tooltip");null!=d&&(e=d)}e=new TextareaDialog(b,mxResources.get("editTooltip")+":",e,function(d){a.setTooltipForCell(c,d)});b.showDialog(e.container,320,200,!0,!0);e.init()}},null,null,"Alt+Shift+T");this.addAction("openLink",function(){var a=c.getLinkForCell(c.getSelectionCell()); +null!=a&&c.openLink(a)});this.addAction("editLink...",function(){var a=b.editor.graph;if(a.isEnabled()&&!a.isSelectionEmpty()){var c=a.getSelectionCell(),e=a.getLinkForCell(c)||"";b.showLinkDialog(e,mxResources.get("apply"),function(d){d=mxUtils.trim(d);a.setLinkForCell(c,0<d.length?d:null)})}},null,null,"Alt+Shift+L");this.put("insertImage",new Action(mxResources.get("image")+"...",function(){c.isEnabled()&&!c.isCellLocked(c.getDefaultParent())&&(c.clearSelection(),b.actions.get("image").funct())})).isEnabled= +k;this.put("insertLink",new Action(mxResources.get("link")+"...",function(){c.isEnabled()&&!c.isCellLocked(c.getDefaultParent())&&b.showLinkDialog("",mxResources.get("insert"),function(a,b){a=mxUtils.trim(a);if(0<a.length){var e=null,d=c.getLinkTitle(a);null!=b&&0<b.length&&(e=b[0].iconUrl,d=b[0].name||b[0].type,d=d.charAt(0).toUpperCase()+d.substring(1),30<d.length&&(d=d.substring(0,30)+"..."));var f=c.getFreeInsertPoint(),e=new mxCell(d,new mxGeometry(f.x,f.y,100,40),"fontColor=#0000EE;fontStyle=4;rounded=1;overflow=hidden;"+ +(null!=e?"shape=label;imageWidth=16;imageHeight=16;spacingLeft=26;align=left;image="+e:"spacing=10;"));e.vertex=!0;c.setLinkForCell(e,a);c.cellSizeUpdated(e,!0);c.getModel().beginUpdate();try{e=c.addCell(e),c.fireEvent(new mxEventObject("cellsInserted","cells",[e]))}finally{c.getModel().endUpdate()}c.setSelectionCell(e);c.scrollCellToVisible(c.getSelectionCell())}})})).isEnabled=k;this.addAction("link...",mxUtils.bind(this,function(){var a=b.editor.graph;if(a.isEnabled())if(a.cellEditor.isContentEditing()){var c= +a.getSelectedElement(),e=a.getParentByName(c,"A",a.cellEditor.textarea),d="";if(null==e&&null!=c&&null!=c.getElementsByTagName)for(var f=c.getElementsByTagName("a"),l=0;l<f.length&&null==e;l++)f[l].textContent==c.textContent&&(e=f[l]);null!=e&&"A"==e.nodeName&&(d=e.getAttribute("href")||"",a.selectNode(e));var n=a.cellEditor.saveSelection();b.showLinkDialog(d,mxResources.get("apply"),mxUtils.bind(this,function(d){a.cellEditor.restoreSelection(n);null!=d&&a.insertLink(d)}))}else a.isSelectionEmpty()? +this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=k;this.addAction("autosize",function(){var a=c.getSelectionCells();if(null!=a){c.getModel().beginUpdate();try{for(var b=0;b<a.length;b++){var e=a[b];if(c.getModel().getChildCount(e))c.updateGroupBounds([e],20);else{var d=c.view.getState(e),f=c.getCellGeometry(e);c.getModel().isVertex(e)&&null!=d&&null!=d.text&&null!=f&&c.isWrapping(e)?(f=f.clone(),f.height=d.text.boundingBox.height/c.view.scale,c.getModel().setGeometry(e,f)): +c.updateCellSize(e)}}}finally{c.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+Y");this.addAction("formattedText",function(){var a=c.getView().getState(c.getSelectionCell());if(null!=a){var e="1";c.stopEditing();c.getModel().beginUpdate();try{if("1"==a.style.html){var e=null,k=c.convertValueToString(a.cell);"0"!=mxUtils.getValue(a.style,"nl2Br","1")&&(k=k.replace(/\n/g,"").replace(/<br\s*.?>/g,"\n"));var d=document.createElement("div");d.innerHTML=k;k=mxUtils.extractTextWithWhitespace(d.childNodes); +c.cellLabelChanged(a.cell,k)}else k=mxUtils.htmlEntities(c.convertValueToString(a.cell),!1),"0"!=mxUtils.getValue(a.style,"nl2Br","1")&&(k=k.replace(/\n/g,"<br/>")),c.cellLabelChanged(a.cell,c.sanitizeHtml(k));c.setCellStyles("html",e);b.fireEvent(new mxEventObject("styleChanged","keys",["html"],"values",[null!=e?e:"0"],"cells",c.getSelectionCells()))}finally{c.getModel().endUpdate()}}});this.addAction("wordWrap",function(){var a=c.getView().getState(c.getSelectionCell()),b="wrap";c.stopEditing(); +null!=a&&"wrap"==a.style[mxConstants.STYLE_WHITE_SPACE]&&(b=null);c.setCellStyles(mxConstants.STYLE_WHITE_SPACE,b)});this.addAction("rotation",function(){var a="0",e=c.getView().getState(c.getSelectionCell());null!=e&&(a=e.style[mxConstants.STYLE_ROTATION]||a);a=new FilenameDialog(b,a,mxResources.get("apply"),function(a){null!=a&&0<a.length&&c.setCellStyles(mxConstants.STYLE_ROTATION,a)},mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)");b.showDialog(a.container,375,80,!0,!0); +a.init()});this.addAction("resetView",function(){c.zoomTo(1);b.resetScrollbars()},null,null,Editor.ctrlKey+"+H");this.addAction("zoomIn",function(a){c.zoomIn()},null,null,Editor.ctrlKey+" + (Numpad) / Alt+Mousewheel");this.addAction("zoomOut",function(a){c.zoomOut()},null,null,Editor.ctrlKey+" - (Numpad) / Alt+Mousewheel");this.addAction("fitWindow",function(){c.fit()},null,null,Editor.ctrlKey+"+Shift+H");this.addAction("fitPage",mxUtils.bind(this,function(){c.pageVisible||this.get("pageView").funct(); +var a=c.pageFormat,b=c.pageScale;c.zoomTo(Math.floor(20*Math.min((c.container.clientWidth-10)/a.width/b,(c.container.clientHeight-10)/a.height/b))/20);mxUtils.hasScrollbars(c.container)&&(a=c.getPagePadding(),c.container.scrollTop=a.y*c.view.scale-1,c.container.scrollLeft=Math.min(a.x*c.view.scale,(c.container.scrollWidth-c.container.clientWidth)/2)-1)}),null,null,Editor.ctrlKey+"+J");this.addAction("fitTwoPages",mxUtils.bind(this,function(){c.pageVisible||this.get("pageView").funct();var a=c.pageFormat, +b=c.pageScale;c.zoomTo(Math.floor(20*Math.min((c.container.clientWidth-10)/(2*a.width)/b,(c.container.clientHeight-10)/a.height/b))/20);mxUtils.hasScrollbars(c.container)&&(a=c.getPagePadding(),c.container.scrollTop=Math.min(a.y,(c.container.scrollHeight-c.container.clientHeight)/2),c.container.scrollLeft=Math.min(a.x,(c.container.scrollWidth-c.container.clientWidth)/2))}),null,null,Editor.ctrlKey+"+Shift+J");this.addAction("fitPageWidth",mxUtils.bind(this,function(){c.pageVisible||this.get("pageView").funct(); +c.zoomTo(Math.floor(20*(c.container.clientWidth-10)/c.pageFormat.width/c.pageScale)/20);if(mxUtils.hasScrollbars(c.container)){var a=c.getPagePadding();c.container.scrollLeft=Math.min(a.x*c.view.scale,(c.container.scrollWidth-c.container.clientWidth)/2)}}));this.put("customZoom",new Action(mxResources.get("custom")+"...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.editorUi,parseInt(100*c.getView().getScale()),mxResources.get("apply"),mxUtils.bind(this,function(a){a=parseInt(a);!isNaN(a)&& +0<a&&c.zoomTo(a/100)}),mxResources.get("zoom")+" (%)");this.editorUi.showDialog(a.container,300,80,!0,!0);a.init()}),null,null,Editor.ctrlKey+"+0"));this.addAction("pageScale...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.editorUi,parseInt(100*c.pageScale),mxResources.get("apply"),mxUtils.bind(this,function(a){a=parseInt(a);!isNaN(a)&&0<a&&b.setPageScale(a/100)}),mxResources.get("pageScale")+" (%)");this.editorUi.showDialog(a.container,300,80,!0,!0);a.init()}));var m=null,m=this.addAction("grid", +function(){c.setGridEnabled(!c.isGridEnabled());b.fireEvent(new mxEventObject("gridEnabledChanged"))},null,null,Editor.ctrlKey+"+Shift+G");m.setToggleAction(!0);m.setSelectedCallback(function(){return c.isGridEnabled()});m.setEnabled(!1);m=this.addAction("guides",function(){c.graphHandler.guidesEnabled=!c.graphHandler.guidesEnabled;b.fireEvent(new mxEventObject("guidesEnabledChanged"))});m.setToggleAction(!0);m.setSelectedCallback(function(){return c.graphHandler.guidesEnabled});m.setEnabled(!1); +m=this.addAction("tooltips",function(){c.tooltipHandler.setEnabled(!c.tooltipHandler.isEnabled())});m.setToggleAction(!0);m.setSelectedCallback(function(){return c.tooltipHandler.isEnabled()});m=this.addAction("collapseExpand",function(){var a=new ChangePageSetup(b);a.ignoreColor=!0;a.ignoreImage=!0;a.foldingEnabled=!c.foldingEnabled;c.model.execute(a)});m.setToggleAction(!0);m.setSelectedCallback(function(){return c.foldingEnabled});m.isEnabled=k;m=this.addAction("scrollbars",function(){b.setScrollbars(!b.hasScrollbars())}); +m.setToggleAction(!0);m.setSelectedCallback(function(){return c.scrollbars});m=this.addAction("pageView",mxUtils.bind(this,function(){b.setPageVisible(!c.pageVisible)}));m.setToggleAction(!0);m.setSelectedCallback(function(){return c.pageVisible});m=this.addAction("connectionArrows",function(){c.connectionArrowsEnabled=!c.connectionArrowsEnabled;b.fireEvent(new mxEventObject("connectionArrowsChanged"))},null,null,"Alt+Shift+A");m.setToggleAction(!0);m.setSelectedCallback(function(){return c.connectionArrowsEnabled}); +m=this.addAction("connectionPoints",function(){c.setConnectable(!c.connectionHandler.isEnabled());b.fireEvent(new mxEventObject("connectionPointsChanged"))},null,null,"Alt+Shift+P");m.setToggleAction(!0);m.setSelectedCallback(function(){return c.connectionHandler.isEnabled()});m=this.addAction("copyConnect",function(){c.connectionHandler.setCreateTarget(!c.connectionHandler.isCreateTarget());b.fireEvent(new mxEventObject("copyConnectChanged"))});m.setToggleAction(!0);m.setSelectedCallback(function(){return c.connectionHandler.isCreateTarget()}); +m.isEnabled=k;m=this.addAction("autosave",function(){b.editor.setAutosave(!b.editor.autosave)});m.setToggleAction(!0);m.setSelectedCallback(function(){return b.editor.autosave});m.isEnabled=k;m.visible=!1;this.addAction("help",function(){var a="";mxResources.isLanguageSupported(mxClient.language)&&(a="_"+mxClient.language);c.openLink(RESOURCES_PATH+"/help"+a+".html")});var q=!1;this.put("about",new Action(mxResources.get("about")+" Graph Editor...",function(){q||(b.showDialog((new AboutDialog(b)).container, +320,280,!0,!0,function(){q=!1}),q=!0)},null,null,"F1"));m=mxUtils.bind(this,function(a,b,e,d){return this.addAction(a,function(){if(null!=e&&c.cellEditor.isContentEditing())e();else{c.stopEditing(!1);c.getModel().beginUpdate();try{c.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,b),(b&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?c.updateLabelElements(c.getSelectionCells(),function(a){a.style.fontWeight=null;"B"==a.nodeName&&c.replaceElement(a)}):(b&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC? +c.updateLabelElements(c.getSelectionCells(),function(a){a.style.fontStyle=null;"I"==a.nodeName&&c.replaceElement(a)}):(b&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&c.updateLabelElements(c.getSelectionCells(),function(a){a.style.textDecoration=null;"U"==a.nodeName&&c.replaceElement(a)})}finally{c.getModel().endUpdate()}}},null,null,d)});m("bold",mxConstants.FONT_BOLD,function(){document.execCommand("bold",!1,null)},Editor.ctrlKey+"+B");m("italic",mxConstants.FONT_ITALIC,function(){document.execCommand("italic", +!1,null)},Editor.ctrlKey+"+I");m("underline",mxConstants.FONT_UNDERLINE,function(){document.execCommand("underline",!1,null)},Editor.ctrlKey+"+U");this.addAction("fontColor...",function(){b.menus.pickColor(mxConstants.STYLE_FONTCOLOR,"forecolor","000000")});this.addAction("strokeColor...",function(){b.menus.pickColor(mxConstants.STYLE_STROKECOLOR)});this.addAction("fillColor...",function(){b.menus.pickColor(mxConstants.STYLE_FILLCOLOR)});this.addAction("gradientColor...",function(){b.menus.pickColor(mxConstants.STYLE_GRADIENTCOLOR)}); +this.addAction("backgroundColor...",function(){b.menus.pickColor(mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,"backcolor")});this.addAction("borderColor...",function(){b.menus.pickColor(mxConstants.STYLE_LABEL_BORDERCOLOR)});this.addAction("vertical",function(){b.menus.toggleStyle(mxConstants.STYLE_HORIZONTAL,!0)});this.addAction("shadow",function(){b.menus.toggleStyle(mxConstants.STYLE_SHADOW)});this.addAction("solid",function(){c.getModel().beginUpdate();try{c.setCellStyles(mxConstants.STYLE_DASHED, +null),c.setCellStyles(mxConstants.STYLE_DASH_PATTERN,null),b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",[null,null],"cells",c.getSelectionCells()))}finally{c.getModel().endUpdate()}});this.addAction("dashed",function(){c.getModel().beginUpdate();try{c.setCellStyles(mxConstants.STYLE_DASHED,"1"),c.setCellStyles(mxConstants.STYLE_DASH_PATTERN,null),b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED, +mxConstants.STYLE_DASH_PATTERN],"values",["1",null],"cells",c.getSelectionCells()))}finally{c.getModel().endUpdate()}});this.addAction("dotted",function(){c.getModel().beginUpdate();try{c.setCellStyles(mxConstants.STYLE_DASHED,"1"),c.setCellStyles(mxConstants.STYLE_DASH_PATTERN,"1 4"),b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",["1","1 4"],"cells",c.getSelectionCells()))}finally{c.getModel().endUpdate()}});this.addAction("sharp", +function(){c.getModel().beginUpdate();try{c.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),c.setCellStyles(mxConstants.STYLE_CURVED,"0"),b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","0"],"cells",c.getSelectionCells()))}finally{c.getModel().endUpdate()}});this.addAction("rounded",function(){c.getModel().beginUpdate();try{c.setCellStyles(mxConstants.STYLE_ROUNDED,"1"),c.setCellStyles(mxConstants.STYLE_CURVED,"0"),b.fireEvent(new mxEventObject("styleChanged", +"keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["1","0"],"cells",c.getSelectionCells()))}finally{c.getModel().endUpdate()}});this.addAction("toggleRounded",function(){if(!c.isSelectionEmpty()&&c.isEnabled()){c.getModel().beginUpdate();try{var a=c.getSelectionCells(),e=c.view.getState(a[0]),k=null!=e?e.style:c.getCellStyle(a[0]),d="1"==mxUtils.getValue(k,mxConstants.STYLE_ROUNDED,"0")?"0":"1";c.setCellStyles(mxConstants.STYLE_ROUNDED,d);c.setCellStyles(mxConstants.STYLE_CURVED, +null);b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",[d,"0"],"cells",c.getSelectionCells()))}finally{c.getModel().endUpdate()}}});this.addAction("curved",function(){c.getModel().beginUpdate();try{c.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),c.setCellStyles(mxConstants.STYLE_CURVED,"1"),b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","1"],"cells",c.getSelectionCells()))}finally{c.getModel().endUpdate()}}); +this.addAction("collapsible",function(){var a=c.view.getState(c.getSelectionCell()),e="1";null!=a&&null!=c.getFoldingImage(a)&&(e="0");c.setCellStyles("collapsible",e);b.fireEvent(new mxEventObject("styleChanged","keys",["collapsible"],"values",[e],"cells",c.getSelectionCells()))});this.addAction("editStyle...",mxUtils.bind(this,function(){var a=c.getSelectionCells();if(null!=a&&0<a.length){var b=c.getModel(),b=new TextareaDialog(this.editorUi,mxResources.get("editStyle")+":",b.getStyle(a[0])||"", +function(b){null!=b&&c.setCellStyle(mxUtils.trim(b),a)},null,null,400,220);this.editorUi.showDialog(b.container,420,300,!0,!0);b.init()}}),null,null,Editor.ctrlKey+"+E");this.addAction("setAsDefaultStyle",function(){c.isEnabled()&&!c.isSelectionEmpty()&&b.setDefaultStyle(c.getSelectionCell())},null,null,Editor.ctrlKey+"+Shift+D");this.addAction("clearDefaultStyle",function(){c.isEnabled()&&b.clearDefaultStyle()},null,null,Editor.ctrlKey+"+Shift+R");this.addAction("addWaypoint",function(){var a=c.getSelectionCell(); +if(null!=a&&c.getModel().isEdge(a)){var b=e.graph.selectionCellsHandler.getHandler(a);if(b instanceof mxEdgeHandler){for(var k=c.view.translate,d=c.view.scale,f=k.x,k=k.y,a=c.getModel().getParent(a),l=c.getCellGeometry(a);c.getModel().isVertex(a)&&null!=l;)f+=l.x,k+=l.y,a=c.getModel().getParent(a),l=c.getCellGeometry(a);f=Math.round(c.snap(c.popupMenuHandler.triggerX/d-f));d=Math.round(c.snap(c.popupMenuHandler.triggerY/d-k));b.addPointAt(b.state,f,d)}}});this.addAction("removeWaypoint",function(){var a= +b.actions.get("removeWaypoint");null!=a.handler&&a.handler.removePoint(a.handler.state,a.index)});this.addAction("clearWaypoints",function(){var a=c.getSelectionCells();if(null!=a){a=c.addAllEdges(a);c.getModel().beginUpdate();try{for(var b=0;b<a.length;b++){var e=a[b];if(c.getModel().isEdge(e)){var d=c.getCellGeometry(e);null!=d&&(d=d.clone(),d.points=null,c.getModel().setGeometry(e,d))}}}finally{c.getModel().endUpdate()}}},null,null,"Alt+Shift+C");m=this.addAction("subscript",mxUtils.bind(this, +function(){c.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");m=this.addAction("superscript",mxUtils.bind(this,function(){c.cellEditor.isContentEditing()&&document.execCommand("superscript",!1,null)}),null,null,Editor.ctrlKey+"+.");this.addAction("image...",function(){if(c.isEnabled()&&!c.isCellLocked(c.getDefaultParent())){var a=mxResources.get("image")+" ("+mxResources.get("url")+"):",e=c.getView().getState(c.getSelectionCell()),k="";null!= +e&&(k=e.style[mxConstants.STYLE_IMAGE]||k);var d=c.cellEditor.saveSelection();b.showImageDialog(a,k,function(a,b,e){if(c.cellEditor.isContentEditing())c.cellEditor.restoreSelection(d),c.insertImage(a,b,e);else{var f=c.getSelectionCells();if(null!=a&&(0<a.length||0<f.length)){var l=null;c.getModel().beginUpdate();try{if(0==f.length){var n=c.getFreeInsertPoint(),l=f=[c.insertVertex(c.getDefaultParent(),null,"",n.x,n.y,b,e,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")]; +c.fireEvent(new mxEventObject("cellsInserted","cells",l))}c.setCellStyles(mxConstants.STYLE_IMAGE,0<a.length?a:null,f);var k=c.view.getState(f[0]),t=null!=k?k.style:c.getCellStyle(f[0]);"image"!=t[mxConstants.STYLE_SHAPE]&&"label"!=t[mxConstants.STYLE_SHAPE]?c.setCellStyles(mxConstants.STYLE_SHAPE,"image",f):0==a.length&&c.setCellStyles(mxConstants.STYLE_SHAPE,null,f);if(1==c.getSelectionCount()&&null!=b&&null!=e){var y=f[0],u=c.getModel().getGeometry(y);null!=u&&(u=u.clone(),u.width=b,u.height=e, +c.getModel().setGeometry(y,u))}}finally{c.getModel().endUpdate()}null!=l&&(c.setSelectionCells(l),c.scrollCellToVisible(l[0]))}}},c.cellEditor.isContentEditing(),!c.cellEditor.isContentEditing())}}).isEnabled=k;m=this.addAction("layers",mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(b,document.body.offsetWidth-280,120,220,180),this.layersWindow.window.addListener("show",function(){b.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.addListener("hide", +function(){b.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.setVisible(!0),b.fireEvent(new mxEventObject("layers"))):this.layersWindow.window.setVisible(!this.layersWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+L");m.setToggleAction(!0);m.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.layersWindow&&this.layersWindow.window.isVisible()}));m=this.addAction("formatPanel",mxUtils.bind(this,function(){b.toggleFormatPanel()}),null,null,Editor.ctrlKey+ +"+Shift+P");m.setToggleAction(!0);m.setSelectedCallback(mxUtils.bind(this,function(){return 0<b.formatWidth}));m=this.addAction("outline",mxUtils.bind(this,function(){null==this.outlineWindow?(this.outlineWindow=new OutlineWindow(b,document.body.offsetWidth-260,100,180,180),this.outlineWindow.window.addListener("show",function(){b.fireEvent(new mxEventObject("outline"))}),this.outlineWindow.window.addListener("hide",function(){b.fireEvent(new mxEventObject("outline"))}),this.outlineWindow.window.setVisible(!0), +b.fireEvent(new mxEventObject("outline"))):this.outlineWindow.window.setVisible(!this.outlineWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+O");m.setToggleAction(!0);m.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.outlineWindow&&this.outlineWindow.window.isVisible()}))}; +Actions.prototype.addAction=function(a,b,e,c,k){var m;"..."==a.substring(a.length-3)?(a=a.substring(0,a.length-3),m=mxResources.get(a)+"..."):m=mxResources.get(a);return this.put(a,new Action(m,b,e,c,k))};Actions.prototype.put=function(a,b){return this.actions[a]=b};Actions.prototype.get=function(a){return this.actions[a]};function Action(a,b,e,c,k){mxEventSource.call(this);this.label=a;this.funct=this.createFunction(b);this.enabled=null!=e?e:!0;this.iconCls=c;this.shortcut=k;this.visible=!0} +mxUtils.extend(Action,mxEventSource);Action.prototype.createFunction=function(a){return a};Action.prototype.setEnabled=function(a){this.enabled!=a&&(this.enabled=a,this.fireEvent(new mxEventObject("stateChanged")))};Action.prototype.isEnabled=function(){return this.enabled};Action.prototype.setToggleAction=function(a){this.toggleAction=a};Action.prototype.setSelectedCallback=function(a){this.selectedCallback=a};Action.prototype.isSelected=function(){return this.selectedCallback()};DrawioFile=function(a,b){mxEventSource.call(this);this.ui=a;this.shadowData=this.data=b||"";this.shadowPages=null;this.stats={opened:0,merged:0,fileMerged:0,fileReloaded:0,conflicts:0,timeouts:0,saved:0,closed:0,destroyed:0,joined:0,checksumErrors:0,bytesSent:0,bytesReceived:0,msgSent:0,msgReceived:0,cacheHits:0,cacheMiss:0,cacheFail:0}};DrawioFile.SYNC=urlParams.sync||"auto";DrawioFile.LAST_WRITE_WINS=!0;mxUtils.extend(DrawioFile,mxEventSource);DrawioFile.prototype.allChangesSavedKey="allChangesSaved"; +DrawioFile.prototype.autosaveDelay=1500;DrawioFile.prototype.maxAutosaveDelay=3E4;DrawioFile.prototype.autosaveThread=null;DrawioFile.prototype.lastAutosave=null;DrawioFile.prototype.modified=!1;DrawioFile.prototype.data=null;DrawioFile.prototype.shadowData=null;DrawioFile.prototype.shadowPages=null;DrawioFile.prototype.changeListenerEnabled=!0;DrawioFile.prototype.lastAutosaveRevision=null;DrawioFile.prototype.maxAutosaveRevisionDelay=18E5;DrawioFile.prototype.inConflictState=!1; +DrawioFile.prototype.invalidChecksum=!1;DrawioFile.prototype.errorReportsEnabled=!1;DrawioFile.prototype.reportEnabled=!0;DrawioFile.prototype.getSize=function(){return null!=this.data?this.data.length:0};DrawioFile.prototype.synchronizeFile=function(a,b){this.savingFile?null!=b&&b({message:mxResources.get("busy")}):null!=this.sync?this.sync.fileChanged(a,b):this.updateFile(a,b)}; +DrawioFile.prototype.updateFile=function(a,b,e,c){null!=e&&e()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=b&&b():this.getLatestVersion(mxUtils.bind(this,function(k){try{null!=e&&e()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=b&&b():null!=k?this.mergeFile(k,a,b,c):this.reloadFile(a,b))}catch(m){null!=b&&b(m)}}),b))}; +DrawioFile.prototype.mergeFile=function(a,b,e,c){var k=!0;try{this.stats.fileMerged++;var m=null!=this.shadowPages?this.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.shadowData).documentElement),q=this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement);if(null!=q&&0<q.length){this.shadowPages=q;this.backupPatch=this.isModified()?this.ui.diffPages(m,this.ui.pages):null;var r=[this.ui.diffPages(null!=c?c:m,this.shadowPages)];if(!this.ignorePatches(r)){var v=this.ui.patchPages(m, +r[0]);c={};var z=this.ui.getHashValueForPages(v,c),m={},d=this.ui.getHashValueForPages(this.shadowPages,m);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",r,"checksum",d==z,z);if(null!=z&&z!=d){var f=this.compressReportData(this.getAnonymizedXmlForPages(q)),l=this.compressReportData(this.getAnonymizedXmlForPages(v)),n=this.ui.hashValue(a.getCurrentEtag()),g=this.ui.hashValue(this.getCurrentEtag());this.checksumError(e,r,"Shadow Details: "+JSON.stringify(c)+ +"\nChecksum: "+z+"\nCurrent: "+d+"\nCurrent Details: "+JSON.stringify(m)+"\nFrom: "+n+"\nTo: "+g+"\n\nFile Data:\n"+f+"\nPatched Shadow:\n"+l,null,"mergeFile");return}this.patch(r,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw k=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(a.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=b&&b()}catch(p){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged(); +null!=e&&e(p);try{this.errorReportsEnabled&&k&&this.sendErrorReport("Error in mergeFile",null,p)}catch(B){}}};DrawioFile.prototype.getAnonymizedXmlForPages=function(a){var b=new mxCodec(mxUtils.createXmlDocument()),e=b.document.createElement("mxfile");if(null!=a)for(var c=0;c<a.length;c++){var k=b.encode(new mxGraphModel(a[c].root));"1"!=urlParams.dev&&(k=this.ui.anonymizeNode(k,!0));k.setAttribute("id",a[c].getId());a[c].viewState&&this.ui.editor.graph.saveViewState(a[c].viewState,k,!0);e.appendChild(k)}return mxUtils.getPrettyXml(e)}; +DrawioFile.prototype.compressReportData=function(a,b,e){b=null!=b?b:1E4;null!=e&&null!=a&&a.length>e?a=a.substring(0,e)+"[...]":null!=a&&a.length>b&&(a=this.ui.editor.graph.compress(a)+"\n");return a}; +DrawioFile.prototype.checksumError=function(a,b,e,c,k){this.stats.checksumErrors++;this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=this.sync&&this.sync.updateOnlineState();null!=a&&a();try{if(this.errorReportsEnabled){if(null!=b)for(a=0;a<b.length;a++)this.ui.anonymizePatch(b[a]);var m=mxUtils.bind(this,function(a){var c=this.compressReportData(JSON.stringify(b,null,2));a=null!=a?this.compressReportData(this.getAnonymizedXmlForPages(this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement)), +25E3):"n/a";this.sendErrorReport("Checksum Error in "+k,(null!=e?e:"")+"\n\nPatches:\n"+c+(null!=a?"\n\nRemote:\n"+a:""),null,7E4)});null==c?m(null):this.getLatestVersion(mxUtils.bind(this,function(a){null!=a&&a.getCurrentEtag()==c?m(a):m(null)}),function(){})}}catch(q){}}; +DrawioFile.prototype.sendErrorReport=function(a,b,e,c){try{var k=this.compressReportData(this.getAnonymizedXmlForPages(this.shadowPages),25E3),m=this.compressReportData(this.getAnonymizedXmlForPages(this.ui.pages),25E3),q=this.getCurrentUser(),r=null!=q?this.ui.hashValue(q.id):"unknown",v=null!=this.sync?this.sync.clientId:"no sync",z=this.getTitle(),d=z.lastIndexOf("."),q="xml";0<d&&(q=z.substring(d));var f=null!=e?e.stack:Error().stack;EditorUi.sendReport(a+" "+(new Date).toISOString()+":\n\nBrowser="+ +navigator.userAgent+"\nFile="+this.ui.hashValue(this.getId())+" ("+this.getMode()+")"+(this.isModified()?" modified":"")+"\nSize/Type="+this.getSize()+" ("+q+")\nUser="+r+" ("+v+")\nPrefix="+this.ui.editor.graph.model.prefix+"\nSync="+DrawioFile.SYNC+(null!=this.sync?(this.sync.enabled?" enabled":"")+(this.sync.isConnected()?" connected":""):"")+"\nPlugins="+(null!=mxSettings.settings?mxSettings.getPlugins():"null")+"\n\nStats:\n"+JSON.stringify(this.stats,null,2)+(null!=b?"\n\n"+b:"")+(null!=e?"\n\nError: "+ +e.message:"")+"\n\nStack:\n"+f+"\n\nShadow:\n"+k+"\n\nData:\n"+m,c)}catch(l){}}; +DrawioFile.prototype.reloadFile=function(a,b){try{this.ui.spinner.stop();var e=mxUtils.bind(this,function(){this.stats.fileReloaded++;this.reportEnabled=!1;var b=this.ui.editor.graph.getViewState(),e=this.ui.editor.graph.getSelectionCells(),m=this.ui.currentPage;this.ui.loadFile(this.getHash(),!0,null,mxUtils.bind(this,function(){if(null==this.ui.fileLoadedError){this.ui.restoreViewState(m,b,e);null!=this.backupPatch&&this.patch([this.backupPatch]);var c=this.ui.getCurrentFile();null!=c&&(c.stats= +this.stats);null!=a&&a()}}),!0)});this.isModified()&&null==this.backupPatch?this.ui.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){this.handleFileSuccess("manual"==DrawioFile.SYNC)}),e,mxResources.get("cancel"),mxResources.get("discardChanges")):e()}catch(c){null!=b&&b(c)}};DrawioFile.prototype.copyFile=function(a,b){this.ui.editor.editAsNew(this.ui.getFileData(!0),this.ui.getCopyFilename(this))}; +DrawioFile.prototype.ignorePatches=function(a){for(var b=!0,e=0;e<a.length&&b;e++)b=b&&0==Object.keys(a[e]).length;return b}; +DrawioFile.prototype.patch=function(a,b){var e=this.ui.editor.undoManager,c=e.history.slice(),k=e.indexOfNextAdd,m=this.ui.editor.graph;m.container.style.visibility="hidden";var q=this.changeListenerEnabled;this.changeListenerEnabled=!1;var r=m.foldingEnabled,v=m.mathEnabled,z=m.cellRenderer.redraw;m.cellRenderer.redraw=function(a){a.view.graph.isEditing(a.cell)&&(a.view.graph.scrollCellToVisible(a.cell),a.view.graph.cellEditor.resize());z.apply(this,arguments)};m.model.beginUpdate();try{for(var d= +0;d<a.length;d++)this.ui.pages=this.ui.patchPages(this.ui.pages,a[d],!0,b,this.isModified());0==this.ui.pages.length&&this.ui.pages.push(this.ui.createPage());0>mxUtils.indexOf(this.ui.pages,this.ui.currentPage)&&this.ui.selectPage(this.ui.pages[0],!0)}finally{m.container.style.visibility="";m.model.endUpdate();m.cellRenderer.redraw=z;this.changeListenerEnabled=q;e.history=c;e.indexOfNextAdd=k;e.fireEvent(new mxEventObject(mxEvent.CLEAR));if(null==this.ui.currentPage||this.ui.currentPage.needsUpdate)v!= +m.mathEnabled?(this.ui.editor.updateGraphComponents(),m.refresh()):(r!=m.foldingEnabled?m.view.revalidate():m.view.validate(),m.sizeDidChange());this.ui.updateTabContainer()}}; +DrawioFile.prototype.save=function(a,b,e,c,k,m){if(this.isEditable())if(!k&&this.invalidChecksum)if(null!=e)e({message:mxResources.get("checksum")});else throw Error(mxResources.get("checksum"));else this.updateFileData(),this.clearAutosave();else if(null!=e)e({message:mxResources.get("readOnly")});else throw Error(mxResources.get("readOnly"));};DrawioFile.prototype.updateFileData=function(){this.setData(this.ui.getFileData(null,null,null,null,null,null,null,null,this))}; +DrawioFile.prototype.saveAs=function(a,b,e){};DrawioFile.prototype.saveFile=function(a,b,e,c){};DrawioFile.prototype.getPublicUrl=function(a){a(null)};DrawioFile.prototype.isRestricted=function(){return!1};DrawioFile.prototype.isModified=function(){return this.modified};DrawioFile.prototype.setModified=function(a){this.modified=a};DrawioFile.prototype.isAutosaveOptional=function(){return!1};DrawioFile.prototype.isAutosave=function(){return!this.inConflictState&&this.ui.editor.autosave}; +DrawioFile.prototype.isRenamable=function(){return!1};DrawioFile.prototype.rename=function(a,b,e){};DrawioFile.prototype.isMovable=function(){return!1};DrawioFile.prototype.move=function(a,b,e){};DrawioFile.prototype.getHash=function(){return""};DrawioFile.prototype.getId=function(){return""};DrawioFile.prototype.isEditable=function(){return!this.ui.editor.isChromelessView()||this.ui.editor.editable};DrawioFile.prototype.getUi=function(){return this.ui};DrawioFile.prototype.getTitle=function(){return""}; +DrawioFile.prototype.setData=function(a){this.data=a};DrawioFile.prototype.getData=function(){return this.data};DrawioFile.prototype.open=function(){this.stats.opened++;var a=this.getData();null!=a&&(this.ui.setFileData(a),this.isModified()||(this.shadowData=mxUtils.getXml(this.ui.getXmlFileData()),this.shadowPages=null));this.installListeners();this.isSyncSupported()&&this.startSync()};DrawioFile.prototype.isSyncSupported=function(){return!1};DrawioFile.prototype.isRevisionHistorySupported=function(){return!1}; +DrawioFile.prototype.getRevisions=function(a,b){a(null)};DrawioFile.prototype.loadDescriptor=function(a,b){a(null)};DrawioFile.prototype.loadPatchDescriptor=function(a,b){this.loadDescriptor(mxUtils.bind(this,function(b){a(b)}),b)};DrawioFile.prototype.startSync=function(){"auto"!=DrawioFile.SYNC||"1"==urlParams.stealth||"1"!=urlParams.rt&&this.ui.editor.chromeless&&!this.ui.editor.editable||(null==this.sync&&(this.sync=new DrawioFileSync(this)),this.sync.start())}; +DrawioFile.prototype.isConflict=function(){return!1};DrawioFile.prototype.getChannelId=function(){return this.ui.editor.graph.compress(this.getHash()).replace(/[\/ +]/g,"_")};DrawioFile.prototype.getChannelKey=function(a){return null};DrawioFile.prototype.getCurrentUser=function(){return null};DrawioFile.prototype.getLatestVersion=function(a,b){a(null)};DrawioFile.prototype.getLastModifiedDate=function(){return new Date}; +DrawioFile.prototype.setCurrentEtag=function(a){this.setDescriptorEtag(this.getDescriptor(),a)};DrawioFile.prototype.getCurrentEtag=function(){return this.getDescriptorEtag(this.getDescriptor())};DrawioFile.prototype.getDescriptor=function(){return null};DrawioFile.prototype.setDescriptor=function(){};DrawioFile.prototype.setDescriptorEtag=function(a,b){};DrawioFile.prototype.getDescriptorEtag=function(a){return null};DrawioFile.prototype.getDescriptorSecret=function(a){return null}; +DrawioFile.prototype.installListeners=function(){null==this.changeListener&&(this.changeListener=mxUtils.bind(this,function(a,b){var e=null!=b?b.getProperty("edit"):null;!this.changeListenerEnabled||!this.isEditable()||null!=e&&e.ignoreEdit||this.fileChanged()}),this.ui.editor.graph.model.addListener(mxEvent.CHANGE,this.changeListener),this.ui.editor.graph.addListener("gridSizeChanged",this.changeListener),this.ui.editor.graph.addListener("shadowVisibleChanged",this.changeListener),this.ui.addListener("pageFormatChanged", this.changeListener),this.ui.addListener("pageScaleChanged",this.changeListener),this.ui.addListener("backgroundColorChanged",this.changeListener),this.ui.addListener("backgroundImageChanged",this.changeListener),this.ui.addListener("foldingEnabledChanged",this.changeListener),this.ui.addListener("mathEnabledChanged",this.changeListener),this.ui.addListener("gridEnabledChanged",this.changeListener),this.ui.addListener("guidesEnabledChanged",this.changeListener),this.ui.addListener("pageViewChanged", this.changeListener))};DrawioFile.prototype.addAllSavedStatus=function(a){null!=this.ui.statusContainer&&this.ui.getCurrentFile()==this&&(a=null!=a?a:mxUtils.htmlEntities(mxResources.get(this.allChangesSavedKey)),this.ui.editor.setStatus('<div title="'+a+'">'+a+"</div>"),a=this.ui.statusContainer.getElementsByTagName("div"),0<a.length&&this.isRevisionHistorySupported()&&(a[0].style.cursor="pointer",a[0].style.textDecoration="underline",mxEvent.addListener(a[0],"click",mxUtils.bind(this,function(){this.ui.actions.get("revisionHistory").funct()}))))}; DrawioFile.prototype.addUnsavedStatus=function(a){if(!this.inConflictState&&null!=this.ui.statusContainer&&this.ui.getCurrentFile()==this)if(a instanceof Error&&null!=a.message&&""!=a.message){var b=mxUtils.htmlEntities(mxResources.get("unsavedChanges"));this.ui.editor.setStatus('<div title="'+b+'" class="geStatusAlert" style="overflow:hidden;">'+b+" ("+mxUtils.htmlEntities(a.message)+")</div>")}else b=this.getErrorMessage(a),null!=b&&60<b.length&&(b=b.substring(0,60)+"..."),b=mxUtils.htmlEntities(mxResources.get("unsavedChangesClickHereToSave"))+ (null!=b&&""!=b?" ("+mxUtils.htmlEntities(b)+")":""),this.ui.editor.setStatus('<div title="'+b+'" class="geStatusAlert" style="cursor:pointer;overflow:hidden;">'+b+"</div>"),b=this.ui.statusContainer.getElementsByTagName("div"),null!=b&&0<b.length?mxEvent.addListener(b[0],"click",mxUtils.bind(this,function(){this.ui.actions.get(null!=this.ui.mode&&this.isEditable()?"save":"saveAs").funct()})):(b=mxUtils.htmlEntities(mxResources.get("unsavedChanges")),this.ui.editor.setStatus('<div title="'+b+'" class="geStatusAlert" style="overflow:hidden;">'+ b+" ("+mxUtils.htmlEntities(a.message)+")</div>"))}; -DrawioFile.prototype.addConflictStatus=function(a,b){this.invalidChecksum&&null==b&&(b=mxResources.get("checksum"));this.setConflictStatus(mxUtils.htmlEntities(mxResources.get("fileChangedSync"))+(null!=b&&""!=b?" ("+mxUtils.htmlEntities(b)+")":""));this.ui.spinner.stop();this.clearAutosave();var f=null!=this.ui.statusContainer?this.ui.statusContainer.getElementsByTagName("div"):null;null!=f&&0<f.length?mxEvent.addListener(f[0],"click",mxUtils.bind(this,function(b){"IMG"!=mxEvent.getSource(b).nodeName&& +DrawioFile.prototype.addConflictStatus=function(a,b){this.invalidChecksum&&null==b&&(b=mxResources.get("checksum"));this.setConflictStatus(mxUtils.htmlEntities(mxResources.get("fileChangedSync"))+(null!=b&&""!=b?" ("+mxUtils.htmlEntities(b)+")":""));this.ui.spinner.stop();this.clearAutosave();var e=null!=this.ui.statusContainer?this.ui.statusContainer.getElementsByTagName("div"):null;null!=e&&0<e.length?mxEvent.addListener(e[0],"click",mxUtils.bind(this,function(b){"IMG"!=mxEvent.getSource(b).nodeName&& a()})):this.ui.alert(mxUtils.htmlEntities(mxResources.get("fileChangedSync")),a)};DrawioFile.prototype.setConflictStatus=function(a){this.ui.editor.setStatus('<div title="'+a+'" class="geStatusAlert geBlink" style="cursor:pointer;overflow:hidden;">'+a+' <a href="https://desk.draw.io/support/solutions/articles/16000087947" target="_blank"><img border="0" style="margin-left:2px;cursor:help;opacity:0.5;width:16px;height:16px;" valign="bottom" src="'+Editor.helpImage+'" style=""/></a></div>')}; -DrawioFile.prototype.showRefreshDialog=function(a,b,f){null==f&&(f=mxResources.get("checksum"));this.ui.editor.isChromelessView()&&!this.ui.editor.editable?this.ui.alert(mxResources.get("fileChangedSync"),mxUtils.bind(this,function(){this.reloadFile(a,b)})):(this.addConflictStatus(mxUtils.bind(this,function(){this.showRefreshDialog(a,b)}),f),this.ui.showError(mxResources.get("error")+" ("+f+")",mxResources.get("fileChangedSyncDialog"),mxResources.get("makeCopy"),mxUtils.bind(this,function(){this.copyFile(a, +DrawioFile.prototype.showRefreshDialog=function(a,b,e){null==e&&(e=mxResources.get("checksum"));this.ui.editor.isChromelessView()&&!this.ui.editor.editable?this.ui.alert(mxResources.get("fileChangedSync"),mxUtils.bind(this,function(){this.reloadFile(a,b)})):(this.addConflictStatus(mxUtils.bind(this,function(){this.showRefreshDialog(a,b)}),e),this.ui.showError(mxResources.get("error")+" ("+e+")",mxResources.get("fileChangedSyncDialog"),mxResources.get("makeCopy"),mxUtils.bind(this,function(){this.copyFile(a, b)}),null,mxResources.get("synchronize"),mxUtils.bind(this,function(){this.reloadFile(a,b)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.ui.hideDialog()}),360,150))}; -DrawioFile.prototype.showCopyDialog=function(a,b,f){this.invalidChecksum=this.inConflictState=!1;this.addUnsavedStatus();this.ui.showError(mxResources.get("externalChanges"),mxResources.get("fileChangedOverwriteDialog"),mxResources.get("makeCopy"),mxUtils.bind(this,function(){this.copyFile(a,b)}),null,mxResources.get("overwrite"),f,mxResources.get("cancel"),mxUtils.bind(this,function(){this.ui.hideDialog()}),360,150)}; +DrawioFile.prototype.showCopyDialog=function(a,b,e){this.invalidChecksum=this.inConflictState=!1;this.addUnsavedStatus();this.ui.showError(mxResources.get("externalChanges"),mxResources.get("fileChangedOverwriteDialog"),mxResources.get("makeCopy"),mxUtils.bind(this,function(){this.copyFile(a,b)}),null,mxResources.get("overwrite"),e,mxResources.get("cancel"),mxUtils.bind(this,function(){this.ui.hideDialog()}),360,150)}; DrawioFile.prototype.showConflictDialog=function(a,b){this.ui.showError(mxResources.get("externalChanges"),mxResources.get("fileChangedSyncDialog"),mxResources.get("overwrite"),a,null,mxResources.get("synchronize"),b,mxResources.get("cancel"),mxUtils.bind(this,function(){this.ui.hideDialog();this.handleFileError(null,!1)}),340,150)}; -DrawioFile.prototype.redirectToNewApp=function(a){this.ui.spinner.stop();if(!this.redirectDialogShowing){this.redirectDialogShowing=!0;var b=window.location.protocol+"//"+window.location.host+"/"+this.ui.getSearch("create title mode url drive splash state".split(" "))+"#"+this.getHash(),f=mxUtils.bind(this,function(){var d=mxUtils.bind(this,function(){this.redirectDialogShowing=!1;window.location.href==b?window.location.reload():window.location.href=b});null==a&&this.isModified()?this.ui.confirm(mxResources.get("allChangesLost"), -mxUtils.bind(this,function(){this.redirectDialogShowing=!1}),d,mxResources.get("cancel"),mxResources.get("discardChanges")):d()});null!=a?this.isModified()?this.ui.confirm(mxResources.get("redirectToNewApp"),mxUtils.bind(this,function(){this.redirectDialogShowing=!1;a()}),f,mxResources.get("cancel"),mxResources.get("discardChanges")):this.ui.confirm(mxResources.get("redirectToNewApp"),f,mxUtils.bind(this,function(){this.redirectDialogShowing=!1;a()})):this.ui.alert(mxResources.get("redirectToNewApp"), -f)}};DrawioFile.prototype.handleFileSuccess=function(a){this.ui.spinner.stop();this.ui.getCurrentFile()==this&&(this.isModified()?this.fileChanged():a?(this.addAllSavedStatus(),null!=this.sync&&(this.sync.resetUpdateStatusThread(),this.sync.remoteFileChanged&&(this.sync.remoteFileChanged=!1,this.sync.fileChangedNotify()))):this.ui.editor.setStatus(""))}; -DrawioFile.prototype.handleFileError=function(a,b){this.ui.spinner.stop();if(this.ui.getCurrentFile()==this)if(this.inConflictState)this.handleConflictError(a,b);else if(this.isModified()&&this.addUnsavedStatus(a),b)this.ui.handleError(a,null!=a?mxResources.get("errorSavingFile"):null);else if(!this.isModified()){var f=null!=a?null!=a.error?a.error.message:a.message:null;null!=f&&60<f.length&&(f=f.substring(0,60)+"...");this.ui.editor.setStatus('<div class="geStatusAlert" style="cursor:pointer;overflow:hidden;">'+ -mxUtils.htmlEntities(mxResources.get("error"))+(null!=f?" ("+mxUtils.htmlEntities(f)+")":"")+"</div>")}}; -DrawioFile.prototype.handleConflictError=function(a,b){var f=mxUtils.bind(this,function(){this.handleFileSuccess(!0)}),d=mxUtils.bind(this,function(a){this.handleFileError(a,!0)}),k=mxUtils.bind(this,function(){this.ui.spinner.spin(document.body,mxResources.get("saving"))&&(this.ui.editor.setStatus(""),this.save(!0,f,d,null,!0,this.constructor==GitHubFile&&null!=a?a.commitMessage:null))}),n=mxUtils.bind(this,function(){this.ui.spinner.spin(document.body,mxResources.get("updatingDocument"))&&this.synchronizeFile(mxUtils.bind(this, -function(){this.ui.spinner.stop();this.ui.spinner.spin(document.body,mxResources.get("saving"))&&this.save(!0,f,d,null,null,this.constructor==GitHubFile&&null!=a?a.commitMessage:null)}),d)});"none"==DrawioFile.SYNC?this.showCopyDialog(f,d,k):this.invalidChecksum?this.showRefreshDialog(f,d,this.getErrorMessage(a)):b?this.showConflictDialog(k,n):this.addConflictStatus(mxUtils.bind(this,function(){this.ui.editor.setStatus(mxUtils.htmlEntities(mxResources.get("updatingDocument")));this.synchronizeFile(f, -d)}),this.getErrorMessage(a))};DrawioFile.prototype.getErrorMessage=function(a){return null!=a?null!=a.error?a.error.message:a.message:null}; +DrawioFile.prototype.redirectToNewApp=function(a){this.ui.spinner.stop();if(!this.redirectDialogShowing){this.redirectDialogShowing=!0;var b=window.location.protocol+"//"+window.location.host+"/"+this.ui.getSearch("create title mode url drive splash state".split(" "))+"#"+this.getHash(),e=mxUtils.bind(this,function(){var c=mxUtils.bind(this,function(){this.redirectDialogShowing=!1;window.location.href==b?window.location.reload():window.location.href=b});null==a&&this.isModified()?this.ui.confirm(mxResources.get("allChangesLost"), +mxUtils.bind(this,function(){this.redirectDialogShowing=!1}),c,mxResources.get("cancel"),mxResources.get("discardChanges")):c()});null!=a?this.isModified()?this.ui.confirm(mxResources.get("redirectToNewApp"),mxUtils.bind(this,function(){this.redirectDialogShowing=!1;a()}),e,mxResources.get("cancel"),mxResources.get("discardChanges")):this.ui.confirm(mxResources.get("redirectToNewApp"),e,mxUtils.bind(this,function(){this.redirectDialogShowing=!1;a()})):this.ui.alert(mxResources.get("redirectToNewApp"), +e)}};DrawioFile.prototype.handleFileSuccess=function(a){this.ui.spinner.stop();this.ui.getCurrentFile()==this&&(this.isModified()?this.fileChanged():a?(this.addAllSavedStatus(),null!=this.sync&&(this.sync.resetUpdateStatusThread(),this.sync.remoteFileChanged&&(this.sync.remoteFileChanged=!1,this.sync.fileChangedNotify()))):this.ui.editor.setStatus(""))}; +DrawioFile.prototype.handleFileError=function(a,b){this.ui.spinner.stop();if(this.ui.getCurrentFile()==this)if(this.inConflictState)this.handleConflictError(a,b);else if(this.isModified()&&this.addUnsavedStatus(a),b)this.ui.handleError(a,null!=a?mxResources.get("errorSavingFile"):null);else if(!this.isModified()){var e=null!=a?null!=a.error?a.error.message:a.message:null;null!=e&&60<e.length&&(e=e.substring(0,60)+"...");this.ui.editor.setStatus('<div class="geStatusAlert" style="cursor:pointer;overflow:hidden;">'+ +mxUtils.htmlEntities(mxResources.get("error"))+(null!=e?" ("+mxUtils.htmlEntities(e)+")":"")+"</div>")}}; +DrawioFile.prototype.handleConflictError=function(a,b){var e=mxUtils.bind(this,function(){this.handleFileSuccess(!0)}),c=mxUtils.bind(this,function(a){this.handleFileError(a,!0)}),k=mxUtils.bind(this,function(){this.ui.spinner.spin(document.body,mxResources.get("saving"))&&(this.ui.editor.setStatus(""),this.save(!0,e,c,null,!0,this.constructor==GitHubFile&&null!=a?a.commitMessage:null))}),m=mxUtils.bind(this,function(){this.ui.spinner.spin(document.body,mxResources.get("updatingDocument"))&&this.synchronizeFile(mxUtils.bind(this, +function(){this.ui.spinner.stop();this.ui.spinner.spin(document.body,mxResources.get("saving"))&&this.save(!0,e,c,null,null,this.constructor==GitHubFile&&null!=a?a.commitMessage:null)}),c)});"none"==DrawioFile.SYNC?this.showCopyDialog(e,c,k):this.invalidChecksum?this.showRefreshDialog(e,c,this.getErrorMessage(a)):b?this.showConflictDialog(k,m):this.addConflictStatus(mxUtils.bind(this,function(){this.ui.editor.setStatus(mxUtils.htmlEntities(mxResources.get("updatingDocument")));this.synchronizeFile(e, +c)}),this.getErrorMessage(a))};DrawioFile.prototype.getErrorMessage=function(a){return null!=a?null!=a.error?a.error.message:a.message:null}; DrawioFile.prototype.fileChanged=function(){this.setModified(!0);this.isAutosave()?(this.addAllSavedStatus(mxUtils.htmlEntities(mxResources.get("saving"))+"..."),this.autosave(this.autosaveDelay,this.maxAutosaveDelay,mxUtils.bind(this,function(a){null==this.autosaveThread&&this.handleFileSuccess(!0)}),mxUtils.bind(this,function(a){this.handleFileError(a)}))):this.isAutosaveOptional()&&this.ui.editor.autosave||this.inConflictState||this.addUnsavedStatus()}; -DrawioFile.prototype.fileSaved=function(a,b,f,d){try{this.stats.fileSaved++,this.invalidChecksum=this.inConflictState=!1,null==this.sync?(this.shadowData=a,this.shadowPages=null,null!=f&&f()):this.sync.fileSaved(this.ui.getPagesForNode(mxUtils.parseXml(a).documentElement),b,f,d)}catch(k){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=d&&d(k);try{this.sendErrorReport("Error in fileSaved","Saved Data:\n"+this.compressReportData(this.ui.anonymizeString(a),null,1E3),k)}catch(n){}}}; -DrawioFile.prototype.autosave=function(a,b,f,d){null==this.lastAutosave&&(this.lastAutosave=(new Date).getTime());a=(new Date).getTime()-this.lastAutosave<b?a:0;this.clearAutosave();var k=window.setTimeout(mxUtils.bind(this,function(){this.lastAutosave=null;this.autosaveThread==k&&(this.autosaveThread=null);if(this.isModified()&&this.isAutosaveNow()){var a=this.isAutosaveRevision();a&&(this.lastAutosaveRevision=(new Date).getTime());this.save(a,mxUtils.bind(this,function(a){this.autosaveCompleted(); -null!=f&&f(a)}),mxUtils.bind(this,function(a){null!=d&&d(a)}))}else this.isModified()||this.ui.editor.setStatus(""),null!=f&&f(null)}),a);this.autosaveThread=k};DrawioFile.prototype.isAutosaveNow=function(){return!0};DrawioFile.prototype.autosaveCompleted=function(){};DrawioFile.prototype.clearAutosave=function(){null!=this.autosaveThread&&(window.clearTimeout(this.autosaveThread),this.autosaveThread=null)}; +DrawioFile.prototype.fileSaved=function(a,b,e,c){try{this.stats.saved++,this.invalidChecksum=this.inConflictState=!1,null==this.sync?(this.shadowData=a,this.shadowPages=null,null!=e&&e()):this.sync.fileSaved(this.ui.getPagesForNode(mxUtils.parseXml(a).documentElement),b,e,c,a)}catch(k){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=c&&c(k);try{this.errorReportsEnabled&&this.sendErrorReport("Error in fileSaved",null,k)}catch(m){}}}; +DrawioFile.prototype.autosave=function(a,b,e,c){null==this.lastAutosave&&(this.lastAutosave=(new Date).getTime());a=(new Date).getTime()-this.lastAutosave<b?a:0;this.clearAutosave();var k=window.setTimeout(mxUtils.bind(this,function(){this.lastAutosave=null;this.autosaveThread==k&&(this.autosaveThread=null);if(this.isModified()&&this.isAutosaveNow()){var a=this.isAutosaveRevision();a&&(this.lastAutosaveRevision=(new Date).getTime());this.save(a,mxUtils.bind(this,function(a){this.autosaveCompleted(); +null!=e&&e(a)}),mxUtils.bind(this,function(a){null!=c&&c(a)}))}else this.isModified()||this.ui.editor.setStatus(""),null!=e&&e(null)}),a);this.autosaveThread=k};DrawioFile.prototype.isAutosaveNow=function(){return!0};DrawioFile.prototype.autosaveCompleted=function(){};DrawioFile.prototype.clearAutosave=function(){null!=this.autosaveThread&&(window.clearTimeout(this.autosaveThread),this.autosaveThread=null)}; DrawioFile.prototype.isAutosaveRevision=function(){var a=(new Date).getTime();return null==this.lastAutosaveRevision||a-this.lastAutosaveRevision>this.maxAutosaveRevisionDelay};DrawioFile.prototype.descriptorChanged=function(){this.fireEvent(new mxEventObject("descriptorChanged"))};DrawioFile.prototype.contentChanged=function(){this.fireEvent(new mxEventObject("contentChanged"))}; -DrawioFile.prototype.close=function(a){this.updateFileData();this.stats.closed++;this.isAutosave()&&this.isModified()&&this.save(this.isAutosaveRevision(),null,null,a);this.destroy()};DrawioFile.prototype.hasSameExtension=function(a,b){if(null!=a&&null!=b){var f=a.lastIndexOf("."),d=0<f?a.substring(f):"",f=b.lastIndexOf(".");return d===(0<f?b.substring(f):"")}return a==b}; +DrawioFile.prototype.close=function(a){this.updateFileData();this.stats.closed++;this.isAutosave()&&this.isModified()&&this.save(this.isAutosaveRevision(),null,null,a);this.destroy()};DrawioFile.prototype.hasSameExtension=function(a,b){if(null!=a&&null!=b){var e=a.lastIndexOf("."),c=0<e?a.substring(e):"",e=b.lastIndexOf(".");return c===(0<e?b.substring(e):"")}return a==b}; DrawioFile.prototype.removeListeners=function(){null!=this.changeListener&&(this.ui.editor.graph.model.removeListener(this.changeListener),this.ui.editor.graph.removeListener(this.changeListener),this.ui.removeListener(this.changeListener),this.changeListener=null)}; -DrawioFile.prototype.destroy=function(){this.stats.destroyed++;try{if(!this.ui.isOffline()&&this.reportEnabled&&("auto"==DrawioFile.SYNC||"manual"==DrawioFile.SYNC)){var a=this.getCurrentUser(),b=null!=a?this.ui.hashValue(a.id):"unknown";this.stats.end=(new Date).toISOString();null!=this.stats.start&&(this.stats.uptime=Math.round(((new Date).getTime()-(new Date(this.stats.start)).getTime())/1E3));EditorUi.logEvent({category:"RT-END-"+DrawioFile.SYNC,action:"file-"+this.getId()+"-mode-"+this.getMode()+ -"-size-"+this.getSize()+"-user-"+b+(null!=this.sync?"-client-"+this.sync.clientId:""),label:this.stats})}}catch(f){}this.clearAutosave();this.removeListeners();null!=this.sync&&(this.sync.destroy(),this.sync=null)};LocalFile=function(a,b,f,d){DrawioFile.call(this,a,b);this.title=f;this.mode=d?null:App.MODE_DEVICE};mxUtils.extend(LocalFile,DrawioFile);LocalFile.prototype.isAutosave=function(){return!1};LocalFile.prototype.getMode=function(){return this.mode};LocalFile.prototype.getTitle=function(){return this.title};LocalFile.prototype.isRenamable=function(){return!0};LocalFile.prototype.save=function(a,b,f){this.saveAs(this.title,b,f)};LocalFile.prototype.saveAs=function(a,b,f){this.saveFile(a,!1,b,f)}; -LocalFile.prototype.saveFile=function(a,b,f,d){this.title=a;this.updateFileData();b=this.getData();var k=this.ui.useCanvasForExport&&/(\.png)$/i.test(this.getTitle()),n=mxUtils.bind(this,function(b){if(this.ui.isOfflineApp()||this.ui.isLocalFileSave())this.ui.doSaveLocalFile(b,a,k?"image/png":"text/xml",k);else if(b.length<MAX_REQUEST_SIZE){var d=a.lastIndexOf("."),d=0<d?a.substring(d+1):"xml";(new mxXmlRequest(SAVE_URL,"format="+d+"&xml="+encodeURIComponent(b)+"&filename="+encodeURIComponent(a)+ -(k?"&binary=1":""))).simulate(document,"_blank")}else this.ui.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}));this.setModified(!1);this.contentChanged();null!=f&&f()});k?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){n(a)}),d,this.ui.getCurrentFile()!=this?this.getData():null):n(b)};LocalFile.prototype.rename=function(a,b,f){this.title=a;this.descriptorChanged();null!=b&&b()}; +DrawioFile.prototype.destroy=function(){this.stats.destroyed++;try{if(!this.ui.isOffline()&&this.reportEnabled&&("auto"==DrawioFile.SYNC||"manual"==DrawioFile.SYNC)){var a=this.getCurrentUser(),b=null!=a?a.id:"unknown";EditorUi.logEvent({category:"RT-END-"+DrawioFile.SYNC,action:"file-"+this.getId()+"-mode-"+this.getMode()+"-size-"+this.getSize()+"-user-"+b+(null!=this.sync?"-client-"+this.sync.clientId:""),label:this.stats})}}catch(e){}this.clearAutosave();this.removeListeners();null!=this.sync&& +(this.sync.destroy(),this.sync=null)};LocalFile=function(a,b,e,c){DrawioFile.call(this,a,b);this.title=e;this.mode=c?null:App.MODE_DEVICE};mxUtils.extend(LocalFile,DrawioFile);LocalFile.prototype.isAutosave=function(){return!1};LocalFile.prototype.getMode=function(){return this.mode};LocalFile.prototype.getTitle=function(){return this.title};LocalFile.prototype.isRenamable=function(){return!0};LocalFile.prototype.save=function(a,b,e){this.saveAs(this.title,b,e)};LocalFile.prototype.saveAs=function(a,b,e){this.saveFile(a,!1,b,e)}; +LocalFile.prototype.saveFile=function(a,b,e,c){this.title=a;this.updateFileData();b=this.getData();var k=this.ui.useCanvasForExport&&/(\.png)$/i.test(this.getTitle()),m=mxUtils.bind(this,function(b){if(this.ui.isOfflineApp()||this.ui.isLocalFileSave())this.ui.doSaveLocalFile(b,a,k?"image/png":"text/xml",k);else if(b.length<MAX_REQUEST_SIZE){var c=a.lastIndexOf("."),c=0<c?a.substring(c+1):"xml";(new mxXmlRequest(SAVE_URL,"format="+c+"&xml="+encodeURIComponent(b)+"&filename="+encodeURIComponent(a)+ +(k?"&binary=1":""))).simulate(document,"_blank")}else this.ui.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}));this.setModified(!1);this.contentChanged();null!=e&&e()});k?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){m(a)}),c,this.ui.getCurrentFile()!=this?this.getData():null):m(b)};LocalFile.prototype.rename=function(a,b,e){this.title=a;this.descriptorChanged();null!=b&&b()}; LocalFile.prototype.open=function(){this.ui.setFileData(this.getData());this.installListeners()};(function(){Editor.prototype.appName="draw.io";Editor.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAMAAADzN3VRAAAApVBMVEUAAAD////k5OT///8AAAB1dXXMzMz9/f39/f37+/v5+fn+/v7///9iYmJaWlqFhYWnp6ejo6OHh4f////////////////7+/v5+fnx8fH///8AAAD///8bGxv7+/v5+fkoKCghISFDQ0MYGBjh4eHY2Njb29tQUFBvb29HR0c/Pz82NjYrKyu/v78SEhLu7u7s7OzV1dVVVVU7OzsVFRXAv78QEBBzqehMAAAAG3RSTlMAA/7p/vz5xZlrTiPL/v78+/v7+OXd2TYQDs8L70ZbAAABKUlEQVQoz3VS13LCMBBUXHChd8iukDslQChJ/v/TchaG4cXS+OSb1c7trU7V60OpdRz2ZtNZL4zXNlcN8BEtSG6+NxIXkeRPoBuQ1cjvZ31/VJFB10ISli6diYfH8iYO3WUNCcNlB0gTrXOtkxTo0O1aKKiBBMhhv2MNBQKoiA5wxlZo0JDzD3AYKbWacyj3fs01wxey0pyEP+R8pWKWXoqtIZ0DDg5pbki9krEKOa6LVDQsdoXEsi46Zqh69KFz7B1u7Hb2yDV8firXDKBlZ4UFiswKGRhXTS93/ECK7yxnJ3+S3y/ThpO+cfSD017nqa18aasabU0/t7d+tk0/1oMEJ1NaD67iwdF68OabFSLn+eHb0+vjy+uk8br9fdrftH0O2menfd7+AQfYM/lNjoDHAAAAAElFTkSuQmCC": IMAGE_PATH+"/delete.png";Editor.plusImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDdCMTdENjVCOEM4MTFFNDlCRjVBNDdCODU5NjNBNUMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDdCMTdENjZCOEM4MTFFNDlCRjVBNDdCODU5NjNBNUMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowN0IxN0Q2M0I4QzgxMUU0OUJGNUE0N0I4NTk2M0E1QyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowN0IxN0Q2NEI4QzgxMUU0OUJGNUE0N0I4NTk2M0E1QyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PtjrjmgAAAAtSURBVHjaYvz//z8DMigvLwcLdHZ2MiKLMzEQCaivkLGsrOw/dU0cAr4GCDAARQsQbTFrv10AAAAASUVORK5CYII=": IMAGE_PATH+"/plus.png";Editor.spinImage=mxClient.IS_SVG?"data:image/gif;base64,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": @@ -2747,31 +2753,31 @@ dispName:"West"}]},{name:"portConstraintRotation",dispName:"Port Const. Rot.",ty dispName:"Lifeline"},{val:"orthogonalPerimeter",dispName:"Orthogonal"},{val:"backbonePerimeter",dispName:"Backbone"},{val:"calloutPerimeter",dispName:"Callout"},{val:"parallelogramPerimeter",dispName:"Parallelogram"},{val:"trapezoidPerimeter",dispName:"Trapezoid"},{val:"stepPerimeter",dispName:"Step"}]},{name:"fixDash",dispName:"Fixed Dash",type:"bool",defVal:!1},{name:"jiggle",dispName:"Jiggle",type:"float",min:0,defVal:1.5,isVisible:function(a){return"1"==mxUtils.getValue(a.style,"comic","0")}}, {name:"autosize",dispName:"Autosize",type:"bool",defVal:!1},{name:"collapsible",dispName:"Collapsible",type:"bool",defVal:!1},{name:"container",dispName:"Container",type:"bool",defVal:!1},{name:"recursiveResize",dispName:"Resize Children",type:"bool",defVal:!0},{name:"part",dispName:"Part",type:"bool",defVal:!1},{name:"editable",dispName:"Editable",type:"bool",defVal:!0},{name:"backgroundOutline",dispName:"Background Outline",type:"bool",defVal:!1},{name:"movable",dispName:"Movable",type:"bool",defVal:!0}, {name:"resizable",dispName:"Resizable",type:"bool",defVal:!0},{name:"resizeWidth",dispName:"Resize Width",type:"bool",defVal:!1},{name:"resizeHeight",dispName:"Resize Height",type:"bool",defVal:!1},{name:"rotatable",dispName:"Rotatable",type:"bool",defVal:!0},{name:"cloneable",dispName:"Cloneable",type:"bool",defVal:!0},{name:"deletable",dispName:"Deletable",type:"bool",defVal:!0}];Editor.defaultCsvValue='##\n## Example CSV import. Use ## for comments and # for configuration. Paste CSV below.\n## The following names are reserved and should not be used (or ignored):\n## id, tooltip, placeholder(s), link and label (see below)\n##\n#\n## Node label with placeholders and HTML.\n## Default is \'%name_of_first_column%\'.\n#\n# label: %name%<br><i style="color:gray;">%position%</i><br><a href="mailto:%email%">Email</a>\n#\n## Node style (placeholders are replaced once).\n## Default is the current style for nodes.\n#\n# style: label;image=%image%;whiteSpace=wrap;html=1;rounded=1;fillColor=%fill%;strokeColor=%stroke%;\n#\n## Parent style for nodes with child nodes (placeholders are replaced once).\n#\n# parentstyle: swimlane;whiteSpace=wrap;html=1;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;\n#\n## Uses the given column name as the identity for cells (updates existing cells).\n## Default is no identity (empty value or -).\n#\n# identity: -\n#\n## Uses the given column name as the parent reference for cells. Default is no parent (empty or -).\n## The identity above is used for resolving the reference so it must be specified.\n#\n# parent: -\n#\n## Adds a prefix to the identity of cells to make sure they do not collide with existing cells (whose\n## IDs are numbers from 0..n, sometimes with a GUID prefix in the context of realtime collaboration).\n## Default is csvimport-.\n#\n# namespace: csvimport-\n#\n## Connections between rows ("from": source colum, "to": target column).\n## Label, style and invert are optional. Defaults are \'\', current style and false.\n## In addition to label, an optional fromlabel and tolabel can be used to name the column\n## that contains the text for the label in the edges source or target (invert ignored).\n## The label is concatenated in the form fromlabel + label + tolabel if all are defined.\n## The target column may contain a comma-separated list of values.\n## Multiple connect entries are allowed.\n#\n# connect: {"from": "manager", "to": "name", "invert": true, "label": "manages", \\\n# "style": "curved=1;endArrow=blockThin;endFill=1;fontSize=11;"}\n# connect: {"from": "refs", "to": "id", "style": "curved=1;fontSize=11;"}\n#\n## Node x-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# left: \n#\n## Node y-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# top: \n#\n## Node width. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the width. Default is auto.\n#\n# width: auto\n#\n## Node height. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the height. Default is auto.\n#\n# height: auto\n#\n## Padding for autosize. Default is 0.\n#\n# padding: -12\n#\n## Comma-separated list of ignored columns for metadata. (These can be\n## used for connections and styles but will not be added as metadata.)\n#\n# ignore: id,image,fill,stroke\n#\n## Column to be renamed to link attribute (used as link).\n#\n# link: url\n#\n## Spacing between nodes. Default is 40.\n#\n# nodespacing: 40\n#\n## Spacing between levels of hierarchical layouts. Default is 100.\n#\n# levelspacing: 100\n#\n## Spacing between parallel edges. Default is 40.\n#\n# edgespacing: 40\n#\n## Name of layout. Possible values are auto, none, verticaltree, horizontaltree,\n## verticalflow, horizontalflow, organic, circle. Default is auto.\n#\n# layout: auto\n#\n## ---- CSV below this line. First line are column names. ----\nname,position,id,location,manager,email,fill,stroke,refs,url,image\nEvan Miller,CFO,emi,Office 1,,me@example.com,#dae8fc,#6c8ebf,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-9-2-128.png\nEdward Morrison,Brand Manager,emo,Office 2,Evan Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-10-3-128.png\nRon Donovan,System Admin,rdo,Office 3,Evan Miller,me@example.com,#d5e8d4,#82b366,"emo,tva",https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-2-128.png\nTessa Valet,HR Director,tva,Office 4,Evan Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-3-128.png\n'; -Editor.shadowOptionEnabled=!0;Editor.config=null;Editor.configVersion=null;Editor.configure=function(a,c){if(null!=a){Editor.config=a;Editor.configVersion=a.version;Menus.prototype.defaultFonts=a.defaultFonts||Menus.prototype.defaultFonts;ColorDialog.prototype.presetColors=a.presetColors||ColorDialog.prototype.presetColors;ColorDialog.prototype.defaultColors=a.defaultColors||ColorDialog.prototype.defaultColors;StyleFormatPanel.prototype.defaultColorSchemes=a.defaultColorSchemes||StyleFormatPanel.prototype.defaultColorSchemes; +Editor.shadowOptionEnabled=!0;Editor.config=null;Editor.configVersion=null;Editor.configure=function(a,d){if(null!=a){Editor.config=a;Editor.configVersion=a.version;Menus.prototype.defaultFonts=a.defaultFonts||Menus.prototype.defaultFonts;ColorDialog.prototype.presetColors=a.presetColors||ColorDialog.prototype.presetColors;ColorDialog.prototype.defaultColors=a.defaultColors||ColorDialog.prototype.defaultColors;StyleFormatPanel.prototype.defaultColorSchemes=a.defaultColorSchemes||StyleFormatPanel.prototype.defaultColorSchemes; Graph.prototype.defaultEdgeLength=a.defaultEdgeLength||Graph.prototype.defaultEdgeLength;null!=a.templateFile&&(EditorUi.templateFile=a.templateFile);a.customFonts&&(Menus.prototype.defaultFonts=a.customFonts.concat(Menus.prototype.defaultFonts));a.customPresetColors&&(ColorDialog.prototype.presetColors=a.customPresetColors.concat(ColorDialog.prototype.presetColors));null!=a.customColorSchemes&&(StyleFormatPanel.prototype.defaultColorSchemes=a.customColorSchemes.concat(StyleFormatPanel.prototype.defaultColorSchemes)); -if(null!=a.css){var b=document.createElement("style");b.setAttribute("type","text/css");b.appendChild(document.createTextNode(a.css));var d=document.getElementsByTagName("script")[0];d.parentNode.insertBefore(b,d)}null!=a.libraries&&(Sidebar.prototype.customEntries=a.libraries);null!=a.enabledLibraries&&(Sidebar.prototype.enabledLibraries=a.enabledLibraries);null!=a.defaultLibraries&&(Sidebar.prototype.defaultEntries=a.defaultLibraries);null!=a.defaultCustomLibraries&&(Editor.defaultCustomLibraries= +if(null!=a.css){var b=document.createElement("style");b.setAttribute("type","text/css");b.appendChild(document.createTextNode(a.css));var c=document.getElementsByTagName("script")[0];c.parentNode.insertBefore(b,c)}null!=a.libraries&&(Sidebar.prototype.customEntries=a.libraries);null!=a.enabledLibraries&&(Sidebar.prototype.enabledLibraries=a.enabledLibraries);null!=a.defaultLibraries&&(Sidebar.prototype.defaultEntries=a.defaultLibraries);null!=a.defaultCustomLibraries&&(Editor.defaultCustomLibraries= a.defaultCustomLibraries);null!=a.enableCustomLibraries&&(Editor.enableCustomLibraries=a.enableCustomLibraries);null!=a.defaultVertexStyle&&(Graph.prototype.defaultVertexStyle=a.defaultVertexStyle);null!=a.defaultEdgeStyle&&(Graph.prototype.defaultEdgeStyle=a.defaultEdgeStyle);a.emptyDiagramXml&&(EditorUi.prototype.emptyDiagramXml=a.emptyDiagramXml);a.thumbWidth&&(Sidebar.prototype.thumbWidth=a.thumbWidth);a.thumbHeight&&(Sidebar.prototype.thumbHeight=a.thumbHeight);a.emptyLibraryXml&&(EditorUi.prototype.emptyLibraryXml= -a.emptyLibraryXml);a.sidebarWidth&&(EditorUi.prototype.hsplitPosition=a.sidebarWidth);a.fontCss&&(b=document.createElement("style"),b.setAttribute("type","text/css"),b.appendChild(document.createTextNode(a.fontCss)),d=document.getElementsByTagName("script")[0],d.parentNode.insertBefore(b,d),Editor.prototype.fontCss=a.fontCss);if(null!=a.plugins&&!c)for(App.initPluginCallback(),b=0;b<a.plugins.length;b++)mxscript(a.plugins[b])}};Editor.GUID_ALPHABET="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_"; -Editor.GUID_LENGTH=20;Editor.guid=function(a){a=null!=a?a:Editor.GUID_LENGTH;for(var c=[],b=0;b<a;b++)c.push(Editor.GUID_ALPHABET.charAt(Math.floor(Math.random()*Editor.GUID_ALPHABET.length)));return c.join("")};Editor.prototype.useForeignObjectForMath=!1;Editor.prototype.editButtonLink=null!=urlParams.edit?decodeURIComponent(urlParams.edit):null;var a=Editor.prototype.setGraphXml;Editor.prototype.setGraphXml=function(c){c=null!=c&&"mxlibrary"!=c.nodeName?this.extractGraphModel(c):null;if(null!=c){var b= -c.getElementsByTagName("parsererror");if(null!=b&&0<b.length){var b=b[0],d=b.getElementsByTagName("div");null!=d&&0<d.length&&(b=d[0]);throw{message:mxUtils.getTextContent(b)};}if("mxGraphModel"==c.nodeName){b=c.getAttribute("style")||"default-style2";if("1"==urlParams.embed||null!=b&&""!=b)b!=this.graph.currentStyle&&(d=null!=this.graph.themes?this.graph.themes[b]:mxUtils.load(STYLE_PATH+"/"+b+".xml").getDocumentElement(),null!=d&&(g=new mxCodec(d.ownerDocument),g.decode(d,this.graph.getStylesheet()))); -else if(d=null!=this.graph.themes?this.graph.themes["default-old"]:mxUtils.load(STYLE_PATH+"/default-old.xml").getDocumentElement(),null!=d){var g=new mxCodec(d.ownerDocument);g.decode(d,this.graph.getStylesheet())}this.graph.currentStyle=b;this.graph.mathEnabled="1"==urlParams.math||"1"==c.getAttribute("math");b=c.getAttribute("backgroundImage");null!=b?(b=JSON.parse(b),this.graph.setBackgroundImage(new mxImage(b.src,b.width,b.height))):this.graph.setBackgroundImage(null);mxClient.NO_FO=this.graph.mathEnabled&& -!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();this.graph.setShadowVisible("1"==c.getAttribute("shadow"),!1)}a.apply(this,arguments)}else throw{message:mxResources.get("notADiagramFile")||"Invalid data",toString:function(){return this.message}};};var b=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=function(a){a=null!=a?a:!0;var c=b.apply(this, -arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&c.setAttribute("style",this.graph.currentStyle);null!=this.graph.backgroundImage&&c.setAttribute("backgroundImage",JSON.stringify(this.graph.backgroundImage));c.setAttribute("math",this.graph.mathEnabled?"1":"0");c.setAttribute("shadow",this.graph.shadowVisible?"1":"0");return c};Editor.prototype.isDataSvg=function(a){try{var c=mxUtils.parseXml(a).documentElement.getAttribute("content");if(null!=c&&(null!=c&&"<"!= -c.charAt(0)&&"%"!=c.charAt(0)&&(c=unescape(window.atob?atob(c):Base64.decode(cont,c))),null!=c&&"%"==c.charAt(0)&&(c=decodeURIComponent(c)),null!=c&&0<c.length)){var b=mxUtils.parseXml(c).documentElement;return"mxfile"==b.nodeName||"mxGraphModel"==b.nodeName}}catch(F){}return!1};Editor.prototype.extractGraphModel=function(a,c){if(null!=a&&"undefined"!==typeof pako){var b=a.ownerDocument.getElementsByTagName("div"),d=[];if(null!=b&&0<b.length)for(var g=0;g<b.length;g++)if("mxgraph"==b[g].getAttribute("class")){d.push(b[g]); -break}0<d.length&&(b=d[0].getAttribute("data-mxgraph"),null!=b?(d=JSON.parse(b),null!=d&&null!=d.xml&&(d=mxUtils.parseXml(d.xml),a=d.documentElement)):(d=d[0].getElementsByTagName("div"),0<d.length&&(b=mxUtils.getTextContent(d[0]),b=this.graph.decompress(b),0<b.length&&(d=mxUtils.parseXml(b),a=d.documentElement))))}if(null!=a&&"svg"==a.nodeName)if(b=a.getAttribute("content"),null!=b&&"<"!=b.charAt(0)&&"%"!=b.charAt(0)&&(b=unescape(window.atob?atob(b):Base64.decode(cont,b))),null!=b&&"%"==b.charAt(0)&& -(b=decodeURIComponent(b)),null!=b&&0<b.length)a=mxUtils.parseXml(b).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==a||c||(d=null,"diagram"==a.nodeName?d=a:"mxfile"==a.nodeName&&(b=a.getElementsByTagName("diagram"),0<b.length&&(d=b[Math.max(0,Math.min(b.length-1,urlParams.page||0))])),null!=d&&(b=this.graph.decompress(mxUtils.getTextContent(d)),null!=b&&0<b.length&&(a=mxUtils.parseXml(b).documentElement)));null==a||"mxGraphModel"==a.nodeName||c&&"mxfile"==a.nodeName|| -(a=null);return a};var f=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled="1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0=null;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();f.apply(this,arguments)};var d=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphComponents= -function(){d.apply(this,arguments);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath&&null!=Editor.MathJaxRender?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform()};Editor.initMath=function(a,c){a=null!=a?a:"https://math.draw.io/current/MathJax.js?config=TeX-MML-AM_HTMLorMML";Editor.mathJaxQueue=[];Editor.doMathJaxRender=function(a){window.setTimeout(function(){"hidden"!= -a.style.visibility&&MathJax.Hub.Queue(["Typeset",MathJax.Hub,a])},0)};window.MathJax={skipStartupTypeset:!0,showMathMenu:!1,messageStyle:"none",AuthorInit:function(){MathJax.Hub.Config(c||{jax:["input/TeX","input/MathML","input/AsciiMath","output/HTML-CSS"],extensions:["tex2jax.js","mml2jax.js","asciimath2jax.js"],"HTML-CSS":{imageFont:null},TeX:{extensions:["AMSmath.js","AMSsymbols.js","noErrors.js","noUndefined.js"]},tex2jax:{ignoreClass:"mxCellEditor"},asciimath2jax:{ignoreClass:"mxCellEditor"}}); +a.emptyLibraryXml);a.sidebarWidth&&(EditorUi.prototype.hsplitPosition=a.sidebarWidth);a.fontCss&&(b=document.createElement("style"),b.setAttribute("type","text/css"),b.appendChild(document.createTextNode(a.fontCss)),c=document.getElementsByTagName("script")[0],c.parentNode.insertBefore(b,c),Editor.prototype.fontCss=a.fontCss);if(null!=a.plugins&&!d)for(App.initPluginCallback(),b=0;b<a.plugins.length;b++)mxscript(a.plugins[b])}};Editor.GUID_ALPHABET="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_"; +Editor.GUID_LENGTH=20;Editor.guid=function(a){a=null!=a?a:Editor.GUID_LENGTH;for(var d=[],b=0;b<a;b++)d.push(Editor.GUID_ALPHABET.charAt(Math.floor(Math.random()*Editor.GUID_ALPHABET.length)));return d.join("")};Editor.prototype.useForeignObjectForMath=!1;Editor.prototype.editButtonLink=null!=urlParams.edit?decodeURIComponent(urlParams.edit):null;var a=Editor.prototype.setGraphXml;Editor.prototype.setGraphXml=function(d){d=null!=d&&"mxlibrary"!=d.nodeName?this.extractGraphModel(d):null;if(null!=d){var b= +d.getElementsByTagName("parsererror");if(null!=b&&0<b.length){var b=b[0],c=b.getElementsByTagName("div");null!=c&&0<c.length&&(b=c[0]);throw{message:mxUtils.getTextContent(b)};}if("mxGraphModel"==d.nodeName){b=d.getAttribute("style")||"default-style2";if("1"==urlParams.embed||null!=b&&""!=b)b!=this.graph.currentStyle&&(c=null!=this.graph.themes?this.graph.themes[b]:mxUtils.load(STYLE_PATH+"/"+b+".xml").getDocumentElement(),null!=c&&(f=new mxCodec(c.ownerDocument),f.decode(c,this.graph.getStylesheet()))); +else if(c=null!=this.graph.themes?this.graph.themes["default-old"]:mxUtils.load(STYLE_PATH+"/default-old.xml").getDocumentElement(),null!=c){var f=new mxCodec(c.ownerDocument);f.decode(c,this.graph.getStylesheet())}this.graph.currentStyle=b;this.graph.mathEnabled="1"==urlParams.math||"1"==d.getAttribute("math");b=d.getAttribute("backgroundImage");null!=b?(b=JSON.parse(b),this.graph.setBackgroundImage(new mxImage(b.src,b.width,b.height))):this.graph.setBackgroundImage(null);mxClient.NO_FO=this.graph.mathEnabled&& +!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();this.graph.setShadowVisible("1"==d.getAttribute("shadow"),!1)}a.apply(this,arguments)}else throw{message:mxResources.get("notADiagramFile")||"Invalid data",toString:function(){return this.message}};};var b=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=function(a){a=null!=a?a:!0;var d=b.apply(this, +arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&d.setAttribute("style",this.graph.currentStyle);null!=this.graph.backgroundImage&&d.setAttribute("backgroundImage",JSON.stringify(this.graph.backgroundImage));d.setAttribute("math",this.graph.mathEnabled?"1":"0");d.setAttribute("shadow",this.graph.shadowVisible?"1":"0");return d};Editor.prototype.isDataSvg=function(a){try{var d=mxUtils.parseXml(a).documentElement.getAttribute("content");if(null!=d&&(null!=d&&"<"!= +d.charAt(0)&&"%"!=d.charAt(0)&&(d=unescape(window.atob?atob(d):Base64.decode(cont,d))),null!=d&&"%"==d.charAt(0)&&(d=decodeURIComponent(d)),null!=d&&0<d.length)){var b=mxUtils.parseXml(d).documentElement;return"mxfile"==b.nodeName||"mxGraphModel"==b.nodeName}}catch(D){}return!1};Editor.prototype.extractGraphModel=function(a,d){if(null!=a&&"undefined"!==typeof pako){var b=a.ownerDocument.getElementsByTagName("div"),c=[];if(null!=b&&0<b.length)for(var f=0;f<b.length;f++)if("mxgraph"==b[f].getAttribute("class")){c.push(b[f]); +break}0<c.length&&(b=c[0].getAttribute("data-mxgraph"),null!=b?(c=JSON.parse(b),null!=c&&null!=c.xml&&(c=mxUtils.parseXml(c.xml),a=c.documentElement)):(c=c[0].getElementsByTagName("div"),0<c.length&&(b=mxUtils.getTextContent(c[0]),b=this.graph.decompress(b),0<b.length&&(c=mxUtils.parseXml(b),a=c.documentElement))))}if(null!=a&&"svg"==a.nodeName)if(b=a.getAttribute("content"),null!=b&&"<"!=b.charAt(0)&&"%"!=b.charAt(0)&&(b=unescape(window.atob?atob(b):Base64.decode(cont,b))),null!=b&&"%"==b.charAt(0)&& +(b=decodeURIComponent(b)),null!=b&&0<b.length)a=mxUtils.parseXml(b).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==a||d||(c=null,"diagram"==a.nodeName?c=a:"mxfile"==a.nodeName&&(b=a.getElementsByTagName("diagram"),0<b.length&&(c=b[Math.max(0,Math.min(b.length-1,urlParams.page||0))])),null!=c&&(b=this.graph.decompress(mxUtils.getTextContent(c)),null!=b&&0<b.length&&(a=mxUtils.parseXml(b).documentElement)));null==a||"mxGraphModel"==a.nodeName||d&&"mxfile"==a.nodeName|| +(a=null);return a};var e=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled="1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0=null;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();e.apply(this,arguments)};var c=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphComponents= +function(){c.apply(this,arguments);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath&&null!=Editor.MathJaxRender?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform()};Editor.initMath=function(a,d){a=null!=a?a:"https://math.draw.io/current/MathJax.js?config=TeX-MML-AM_HTMLorMML";Editor.mathJaxQueue=[];Editor.doMathJaxRender=function(a){window.setTimeout(function(){"hidden"!= +a.style.visibility&&MathJax.Hub.Queue(["Typeset",MathJax.Hub,a])},0)};window.MathJax={skipStartupTypeset:!0,showMathMenu:!1,messageStyle:"none",AuthorInit:function(){MathJax.Hub.Config(d||{jax:["input/TeX","input/MathML","input/AsciiMath","output/HTML-CSS"],extensions:["tex2jax.js","mml2jax.js","asciimath2jax.js"],"HTML-CSS":{imageFont:null},TeX:{extensions:["AMSmath.js","AMSsymbols.js","noErrors.js","noUndefined.js"]},tex2jax:{ignoreClass:"mxCellEditor"},asciimath2jax:{ignoreClass:"mxCellEditor"}}); MathJax.Hub.Register.StartupHook("Begin",function(){for(var a=0;a<Editor.mathJaxQueue.length;a++)Editor.doMathJaxRender(Editor.mathJaxQueue[a])})}};Editor.MathJaxRender=function(a){"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?Editor.doMathJaxRender(a):Editor.mathJaxQueue.push(a)};Editor.MathJaxClear=function(){Editor.mathJaxQueue=[]};var b=Editor.prototype.init;Editor.prototype.init=function(){b.apply(this,arguments);this.graph.addListener(mxEvent.SIZE,mxUtils.bind(this,function(a, -c){null!=this.graph.container&&this.graph.mathEnabled&&Editor.MathJaxRender(this.graph.container)}))};var d=document.getElementsByTagName("script");if(null!=d&&0<d.length){var g=document.createElement("script");g.type="text/javascript";g.src=a;d[0].parentNode.appendChild(g)}};Editor.prototype.csvToArray=function(a){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(a))return null; -var c=[];a.replace(/(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g,function(a,b,d,g){void 0!==b?c.push(b.replace(/\\'/g,"'")):void 0!==d?c.push(d.replace(/\\"/g,'"')):void 0!==g&&c.push(g);return""});/,\s*$/.test(a)&&c.push("");return c};if(window.ColorDialog){var k=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(a,c){k.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}; -var n=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){n.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&(EditDataDialog.getDisplayIdForCell=function(a,c){var b=null;null!=a.editor.graph.getModel().getParent(c)?b=c.getId():null!=a.currentPage&&(b=a.currentPage.getId());return b});if(null!=window.StyleFormatPanel){var p=Format.prototype.init;Format.prototype.init=function(){p.apply(this,arguments);this.editorUi.editor.addListener("fileLoaded", -this.update)};var q=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?q.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var a=this.editorUi.getCurrentFile();return"1"==urlParams.embed||null!=a&&a.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=function(a){return!1};var w=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView= -function(a){a=w.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var c=this.editorUi,b=c.editor.graph,d=this.createOption(mxResources.get("shadow"),function(){return b.shadowVisible},function(a){var d=new ChangePageSetup(c);d.ignoreColor=!0;d.ignoreImage=!0;d.shadowVisible=a;b.model.execute(d)},{install:function(a){this.listener=function(){a(b.shadowVisible)};c.addListener("shadowVisibleChanged",this.listener)},destroy:function(){c.removeListener(this.listener)}}); -Editor.shadowOptionEnabled||(d.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(d,60));a.appendChild(d)}return a};var c=DiagramFormatPanel.prototype.addOptions;DiagramFormatPanel.prototype.addOptions=function(a){a=c.apply(this,arguments);var b=this.editorUi,d=b.editor.graph;if(d.isEnabled()){var g=b.getCurrentFile();null!=g&&g.isAutosaveOptional()&&(g=this.createOption(mxResources.get("autosave"),function(){return b.editor.autosave},function(a){b.editor.setAutosave(a)}, -{install:function(a){this.listener=function(){a(b.editor.autosave)};b.editor.addListener("autosaveChanged",this.listener)},destroy:function(){b.editor.removeListener(this.listener)}}),a.appendChild(g))}if(this.isMathOptionVisible()&&d.isEnabled()&&"undefined"!==typeof MathJax){g=this.createOption(mxResources.get("mathematicalTypesetting"),function(){return d.mathEnabled},function(a){b.actions.get("mathematicalTypesetting").funct()},{install:function(a){this.listener=function(){a(d.mathEnabled)};b.addListener("mathEnabledChanged", -this.listener)},destroy:function(){b.removeListener(this.listener)}});g.style.paddingTop="5px";a.appendChild(g);var f=b.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000032875");f.style.position="relative";f.style.marginLeft="6px";f.style.top="2px";g.appendChild(f)}return a};mxCellRenderer.prototype.defaultVertexShape.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"absoluteArcSize",dispName:"Abs. Arc Size", +d){null!=this.graph.container&&this.graph.mathEnabled&&Editor.MathJaxRender(this.graph.container)}))};var c=document.getElementsByTagName("script");if(null!=c&&0<c.length){var f=document.createElement("script");f.type="text/javascript";f.src=a;c[0].parentNode.appendChild(f)}};Editor.prototype.csvToArray=function(a){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(a))return null; +var d=[];a.replace(/(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g,function(a,b,c,f){void 0!==b?d.push(b.replace(/\\'/g,"'")):void 0!==c?d.push(c.replace(/\\"/g,'"')):void 0!==f&&d.push(f);return""});/,\s*$/.test(a)&&d.push("");return d};if(window.ColorDialog){var k=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(a,d){k.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}; +var m=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){m.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&(EditDataDialog.getDisplayIdForCell=function(a,d){var b=null;null!=a.editor.graph.getModel().getParent(d)?b=d.getId():null!=a.currentPage&&(b=a.currentPage.getId());return b});if(null!=window.StyleFormatPanel){var q=Format.prototype.init;Format.prototype.init=function(){q.apply(this,arguments);this.editorUi.editor.addListener("fileLoaded", +this.update)};var r=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?r.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var a=this.editorUi.getCurrentFile();return"1"==urlParams.embed||null!=a&&a.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=function(a){return!1};var v=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView= +function(a){a=v.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var d=this.editorUi,b=d.editor.graph,c=this.createOption(mxResources.get("shadow"),function(){return b.shadowVisible},function(a){var c=new ChangePageSetup(d);c.ignoreColor=!0;c.ignoreImage=!0;c.shadowVisible=a;b.model.execute(c)},{install:function(a){this.listener=function(){a(b.shadowVisible)};d.addListener("shadowVisibleChanged",this.listener)},destroy:function(){d.removeListener(this.listener)}}); +Editor.shadowOptionEnabled||(c.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(c,60));a.appendChild(c)}return a};var z=DiagramFormatPanel.prototype.addOptions;DiagramFormatPanel.prototype.addOptions=function(a){a=z.apply(this,arguments);var d=this.editorUi,b=d.editor.graph;if(b.isEnabled()){var c=d.getCurrentFile();null!=c&&c.isAutosaveOptional()&&(c=this.createOption(mxResources.get("autosave"),function(){return d.editor.autosave},function(a){d.editor.setAutosave(a)}, +{install:function(a){this.listener=function(){a(d.editor.autosave)};d.editor.addListener("autosaveChanged",this.listener)},destroy:function(){d.editor.removeListener(this.listener)}}),a.appendChild(c))}if(this.isMathOptionVisible()&&b.isEnabled()&&"undefined"!==typeof MathJax){c=this.createOption(mxResources.get("mathematicalTypesetting"),function(){return b.mathEnabled},function(a){d.actions.get("mathematicalTypesetting").funct()},{install:function(a){this.listener=function(){a(b.mathEnabled)};d.addListener("mathEnabledChanged", +this.listener)},destroy:function(){d.removeListener(this.listener)}});c.style.paddingTop="5px";a.appendChild(c);var f=d.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000032875");f.style.position="relative";f.style.marginLeft="6px";f.style.top="2px";c.appendChild(f)}return a};mxCellRenderer.prototype.defaultVertexShape.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"absoluteArcSize",dispName:"Abs. Arc Size", type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.link.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:4}];mxCellRenderer.defaultShapes.flexArrow.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:10},{name:"startWidth",dispName:"Start Width",type:"float",min:0,defVal:20},{name:"endWidth",dispName:"End Width",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.process.prototype.customProperties=[{name:"size",dispName:"Indent", type:"float",min:0,max:.5,defVal:.1}];mxCellRenderer.defaultShapes.rhombus.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,max:50,defVal:mxConstants.LINE_ARCSIZE},{name:"double",dispName:"Double",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.partialRectangle.prototype.customProperties=[{name:"top",dispName:"Top Line",type:"bool",defVal:!0},{name:"bottom",dispName:"Bottom Line",type:"bool",defVal:!0},{name:"left",dispName:"Left Line",type:"bool",defVal:!0}, {name:"right",dispName:"Right Line",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.parallelogram.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.hexagon.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1, @@ -2792,610 +2798,610 @@ defVal:60,min:0},{name:"height",dispName:"Title Height",type:"float",defVal:30,m stroke:"#006EAF",font:"#ffffff"},{fill:"#0050ef",stroke:"#001DBC",font:"#ffffff"},{fill:"#6a00ff",stroke:"#3700CC",font:"#ffffff"},{fill:"#aa00ff",stroke:"#7700CC",font:"#ffffff"},{fill:"#d80073",stroke:"#A50040",font:"#ffffff"},{fill:"#a20025",stroke:"#6F0000",font:"#ffffff"}],[{fill:"#e51400",stroke:"#B20000",font:"#ffffff"},{fill:"#fa6800",stroke:"#C73500",font:"#ffffff"},{fill:"#f0a30a",stroke:"#BD7000",font:"#ffffff"},{fill:"#e3c800",stroke:"#B09500",font:"#ffffff"},{fill:"#6d8764",stroke:"#3A5431", font:"#ffffff"},{fill:"#647687",stroke:"#314354",font:"#ffffff"},{fill:"#76608a",stroke:"#432D57",font:"#ffffff"},{fill:"#a0522d",stroke:"#6D1F00",font:"#ffffff"}],[null,{fill:mxConstants.NONE,stroke:"#36393d"},{fill:"#fad7ac",stroke:"#b46504"},{fill:"#fad9d5",stroke:"#ae4132"},{fill:"#b0e3e6",stroke:"#0e8088"},{fill:"#b1ddf0",stroke:"#10739e"},{fill:"#d0cee2",stroke:"#56517e"},{fill:"#bac8d3",stroke:"#23445d"}],[null,{fill:"#f5f5f5",stroke:"#666666",gradient:"#b3b3b3"},{fill:"#dae8fc",stroke:"#6c8ebf", gradient:"#7ea6e0"},{fill:"#d5e8d4",stroke:"#82b366",gradient:"#97d077"},{fill:"#ffcd28",stroke:"#d79b00",gradient:"#ffa500"},{fill:"#fff2cc",stroke:"#d6b656",gradient:"#ffd966"},{fill:"#f8cecc",stroke:"#b85450",gradient:"#ea6b66"},{fill:"#e6d0de",stroke:"#996185",gradient:"#d5739d"}],[null,{fill:"#eeeeee",stroke:"#36393d"},{fill:"#f9f7ed",stroke:"#36393d"},{fill:"#ffcc99",stroke:"#36393d"},{fill:"#cce5ff",stroke:"#36393d"},{fill:"#ffff88",stroke:"#36393d"},{fill:"#cdeb8b",stroke:"#36393d"},{fill:"#ffcccc", -stroke:"#36393d"}]];StyleFormatPanel.prototype.customColorSchemes=null;StyleFormatPanel.prototype.findCommonProperties=function(a,c,b){if(null!=c){var d=function(a){if(null!=a)if(b)for(var d=0;d<a.length;d++)c[a[d].name]=a[d];else for(var g in c){for(var f=!1,d=0;d<a.length;d++)if(a[d].name==g&&a[d].type==c[g].type){f=!0;break}f||delete c[g]}},g=this.editorUi.editor.graph.view.getState(a);null!=g&&null!=g.shape&&(g.shape.commonCustomPropAdded||(g.shape.commonCustomPropAdded=!0,g.shape.customProperties= -g.shape.customProperties||[],g.cell.vertex?Array.prototype.push.apply(g.shape.customProperties,Editor.commonVertexProperties):Array.prototype.push.apply(g.shape.customProperties,Editor.commonEdgeProperties)),d(g.shape.customProperties));a=a.getAttribute("customProperties");if(null!=a)try{d(JSON.parse(a))}catch(G){}}};var g=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var a=this.format.createSelectionState();"image"!=a.style.shape&&this.container.appendChild(this.addStyles(this.createPanel())); -g.apply(this,arguments);if(Editor.enableCustomProperties){for(var c={},b=a.vertices,d=a.edges,f=0;f<b.length;f++)this.findCommonProperties(b[f],c,0==f);for(f=0;f<d.length;f++)this.findCommonProperties(d[f],c,0==b.length&&0==f);0<Object.getOwnPropertyNames(c).length&&this.container.appendChild(this.addProperties(this.createPanel(),c,a))}};var h=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(a){var c=mxUtils.button(mxResources.get("copyStyle"),mxUtils.bind(this, -function(a){this.editorUi.actions.get("copyStyle").funct()}));c.setAttribute("title",mxResources.get("copyStyle")+" ("+this.editorUi.actions.get("copyStyle").shortcut+")");c.style.marginBottom="2px";c.style.width="100px";c.style.marginRight="2px";a.appendChild(c);c=mxUtils.button(mxResources.get("pasteStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("pasteStyle").funct()}));c.setAttribute("title",mxResources.get("pasteStyle")+" ("+this.editorUi.actions.get("pasteStyle").shortcut+")"); -c.style.marginBottom="2px";c.style.width="100px";a.appendChild(c);mxUtils.br(a);return h.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=function(a,c,b){function d(a,c,b,d){v.getModel().beginUpdate();try{var g=[],f=[];if(null!=b.index){for(var h=[],l=b.parentRow.nextSibling;l&&l.getAttribute("data-pName")==a;)h.push(l.getAttribute("data-pValue")),l=l.nextSibling;b.index<h.length?null!=d?h.splice(d,1):h[b.index]=c:h.push(c);null!=b.size&&h.length> -b.size&&(h=h.slice(0,b.size));c=h.join(",");null!=b.countProperty&&(v.setCellStyles(b.countProperty,h.length,v.getSelectionCells()),g.push(b.countProperty),f.push(h.length))}v.setCellStyles(a,c,v.getSelectionCells());g.push(a);f.push(c);if(null!=b.dependentProps)for(a=0;a<b.dependentProps.length;a++){var m=b.dependentPropsDefVal[a],r=b.dependentPropsVals[a];if(r.length>c)r=r.slice(0,c);else for(var u=r.length;u<c;u++)r.push(m);r=r.join(",");v.setCellStyles(b.dependentProps[a],r,v.getSelectionCells()); -g.push(b.dependentProps[a]);f.push(r)}t.editorUi.fireEvent(new mxEventObject("styleChanged","keys",g,"values",f,"cells",v.getSelectionCells()))}finally{v.getModel().endUpdate()}}function g(c,b,d){var g=mxUtils.getOffset(a,!0),f=mxUtils.getOffset(c,!0);b.style.position="absolute";b.style.left=f.x-g.x+"px";b.style.top=f.y-g.y+"px";b.style.width=c.offsetWidth+"px";b.style.height=c.offsetHeight-(d?4:0)+"px";b.style.zIndex=5}function f(a,c,b){var g=document.createElement("div");g.style.width="32px";g.style.height= -"4px";g.style.margin="2px";g.style.border="1px solid black";g.style.background=c&&"none"!=c?c:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(t,function(f){this.editorUi.pickColor(c,function(c){g.style.background="none"==c?"url('"+Dialog.prototype.noColorImage+"')":c;d(a,c,b)});mxEvent.consume(f)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(g);return btn}function h(a,c,b,g,f,h,l){null!=c&&(c=c.split(","),u.push({name:a, -values:c,type:b,defVal:g,countProperty:f,parentRow:h,isDeletable:!0,flipBkg:l}));btn=mxUtils.button("+",mxUtils.bind(t,function(c){for(var m=h,t=0;null!=m.nextSibling;)if(m.nextSibling.getAttribute("data-pName")==a)m=m.nextSibling,t++;else break;var v={type:b,parentRow:h,index:t,isDeletable:!0,defVal:g,countProperty:f},t=r(a,"",v,0==t%2,l);d(a,g,v);m.parentNode.insertBefore(t,m.nextSibling);mxEvent.consume(c)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn} -function l(a,c,b,d,g,f,h){if(0<g){var l=Array(g);c=null!=c?c.split(","):[];for(var m=0;m<g;m++)l[m]=null!=c[m]?c[m]:null!=d?d:"";u.push({name:a,values:l,type:b,defVal:d,parentRow:f,flipBkg:h,size:g})}return document.createElement("div")}function m(a,c,b){var g=document.createElement("input");g.type="checkbox";g.checked="1"==c;mxEvent.addListener(g,"change",function(){d(a,g.checked?"1":"0",b)});return g}function r(c,b,r,v,u){var k=r.dispName,x=r.type,y=document.createElement("tr");y.className="gePropRow"+ -(u?"Dark":"")+(v?"Alt":"")+" gePropNonHeaderRow";y.setAttribute("data-pName",c);y.setAttribute("data-pValue",b);v=!1;null!=r.index&&(y.setAttribute("data-index",r.index),k=(null!=k?k:"")+"["+r.index+"]",v=!0);var n=document.createElement("td");n.className="gePropRowCell";n.innerHTML=mxUtils.htmlEntities(mxResources.get(k,null,k));v&&(n.style.textAlign="right");y.appendChild(n);n=document.createElement("td");n.className="gePropRowCell";if("color"==x)n.appendChild(f(c,b,r));else if("bool"==x||"boolean"== -x)n.appendChild(m(c,b,r));else if("enum"==x){var z=r.enumList;for(u=0;u<z.length;u++)if(k=z[u],k.val==b){n.innerHTML=mxUtils.htmlEntities(mxResources.get(k.dispName,null,k.dispName));break}mxEvent.addListener(n,"click",mxUtils.bind(t,function(){var f=document.createElement("select");g(n,f);for(var h=0;h<z.length;h++){var l=z[h],m=document.createElement("option");m.value=mxUtils.htmlEntities(l.val);m.innerHTML=mxUtils.htmlEntities(mxResources.get(l.dispName,null,l.dispName));f.appendChild(m)}f.value= -b;a.appendChild(f);mxEvent.addListener(f,"change",function(){var a=mxUtils.htmlEntities(f.value);d(c,a,r)});f.focus();mxEvent.addListener(f,"blur",function(){a.removeChild(f)})}))}else"dynamicArr"==x?n.appendChild(h(c,b,r.subType,r.subDefVal,r.countProperty,y,u)):"staticArr"==x?n.appendChild(l(c,b,r.subType,r.subDefVal,r.size,y,u)):(n.innerHTML=b,mxEvent.addListener(n,"click",mxUtils.bind(t,function(){function f(){var a=h.value,a=0==a.length&&"string"!=x?0:a;r.allowAuto&&("auto"==a.trim().toLowerCase()? -(a="auto",x="string"):(a=parseFloat(a),a=isNaN(a)?0:a));null!=r.min&&a<r.min?a=r.min:null!=r.max&&a>r.max&&(a=r.max);a=mxUtils.htmlEntities(("int"==x?parseInt(a):a)+"");d(c,a,r)}var h=document.createElement("input");g(n,h,!0);h.value=b;h.className="gePropEditor";"int"!=x&&"float"!=x||r.allowAuto||(h.type="number",h.step="int"==x?"1":"any",null!=r.min&&(h.min=parseFloat(r.min)),null!=r.max&&(h.max=parseFloat(r.max)));a.appendChild(h);mxEvent.addListener(h,"keypress",function(a){13==a.keyCode&&f()}); -h.focus();mxEvent.addListener(h,"blur",function(){f()})})));r.isDeletable&&(u=mxUtils.button("-",mxUtils.bind(t,function(a){d(c,"",r,r.index);mxEvent.consume(a)})),u.style.height="16px",u.style.width="25px",u.style["float"]="right",u.className="geColorBtn",n.appendChild(u));y.appendChild(n);return y}var t=this,v=this.editorUi.editor.graph,u=[];a.style.position="relative";a.style.padding="0";var k=document.createElement("table");k.style.whiteSpace="nowrap";k.style.width="100%";var x=document.createElement("tr"); -x.className="gePropHeader";var y=document.createElement("th");y.className="gePropHeaderCell";var n=document.createElement("img");n.src=Sidebar.prototype.expandedImage;y.appendChild(n);mxUtils.write(y,mxResources.get("property"));x.style.cursor="pointer";var A=function(){var c=k.querySelectorAll(".gePropNonHeaderRow"),b;if(t.editorUi.propertiesCollapsed){n.src=Sidebar.prototype.collapsedImage;b="none";for(var d=a.childNodes.length-1;0<=d;d--)try{var g=a.childNodes[d],f=g.nodeName.toUpperCase();"INPUT"!= -f&&"SELECT"!=f||a.removeChild(g)}catch(ca){}}else n.src=Sidebar.prototype.expandedImage,b="";for(d=0;d<c.length;d++)c[d].style.display=b};mxEvent.addListener(x,"click",function(){t.editorUi.propertiesCollapsed=!t.editorUi.propertiesCollapsed;A()});x.appendChild(y);y=document.createElement("th");y.className="gePropHeaderCell";y.innerHTML=mxResources.get("value");x.appendChild(y);k.appendChild(x);var p=!1,q=!1,D;for(D in c)if(x=c[D],"function"!=typeof x.isVisible||x.isVisible(b)){var w=null!=b.style[D]? -mxUtils.htmlEntities(b.style[D]+""):x.defVal;if("separator"==x.type)q=!q;else{if("staticArr"==x.type)x.size=parseInt(b.style[x.sizeProperty]||c[x.sizeProperty].defVal)||0;else if(null!=x.dependentProps){for(var U=x.dependentProps,L=[],P=[],y=0;y<U.length;y++){var R=b.style[U[y]];P.push(c[U[y]].subDefVal);L.push(null!=R?R.split(","):[])}x.dependentPropsDefVal=P;x.dependentPropsVals=L}k.appendChild(r(D,w,x,p,q));p=!p}}for(y=0;y<u.length;y++)for(x=u[y],c=x.parentRow,b=0;b<x.values.length;b++)D=r(x.name, -x.values[b],{type:x.type,parentRow:x.parentRow,isDeletable:x.isDeletable,index:b,defVal:x.defVal,countProperty:x.countProperty,size:x.size},0==b%2,x.flipBkg),c.parentNode.insertBefore(D,c.nextSibling),c=D;a.appendChild(k);A();return a};StyleFormatPanel.prototype.addStyles=function(a){function c(a){function c(a){var c=mxUtils.button("",function(c){d.getModel().beginUpdate();try{var b=d.getSelectionCells();for(c=0;c<b.length;c++){for(var g=d.getModel().getStyle(b[c]),h=0;h<f.length;h++)g=mxUtils.removeStylename(g, -f[h]);var l=d.getModel().isVertex(b[c])?d.defaultVertexStyle:d.defaultEdgeStyle;null!=a?(g=mxUtils.setStyle(g,mxConstants.STYLE_FILLCOLOR,a.fill||mxUtils.getValue(l,mxConstants.STYLE_FILLCOLOR,null)),g=mxUtils.setStyle(g,mxConstants.STYLE_STROKECOLOR,a.stroke||mxUtils.getValue(l,mxConstants.STYLE_STROKECOLOR,null)),g=mxUtils.setStyle(g,mxConstants.STYLE_GRADIENTCOLOR,a.gradient||mxUtils.getValue(l,mxConstants.STYLE_GRADIENTCOLOR,null)),d.getModel().isVertex(b[c])&&(g=mxUtils.setStyle(g,mxConstants.STYLE_FONTCOLOR, -a.font||mxUtils.getValue(l,mxConstants.STYLE_FONTCOLOR,null)))):(g=mxUtils.setStyle(g,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(l,mxConstants.STYLE_FILLCOLOR,"#ffffff")),g=mxUtils.setStyle(g,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(l,mxConstants.STYLE_STROKECOLOR,"#000000")),g=mxUtils.setStyle(g,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(l,mxConstants.STYLE_GRADIENTCOLOR,null)),d.getModel().isVertex(b[c])&&(g=mxUtils.setStyle(g,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(l,mxConstants.STYLE_FONTCOLOR, -null))));d.getModel().setStyle(b[c],g)}}finally{d.getModel().endUpdate()}});c.className="geStyleButton";c.style.width="36px";c.style.height="30px";c.style.margin="0px 6px 6px 0px";if(null!=a)null!=a.gradient?mxClient.IS_IE&&(mxClient.IS_QUIRKS||10>document.documentMode)?c.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+a.fill+"', EndColorStr='"+a.gradient+"', GradientType=0)":c.style.backgroundImage="linear-gradient("+a.fill+" 0px,"+a.gradient+" 100%)":a.fill==mxConstants.NONE? -c.style.background="url('"+Dialog.prototype.noColorImage+"')":c.style.backgroundColor=a.fill||mxUtils.getValue(d.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),c.style.border="1px solid "+(a.stroke||mxUtils.getValue(d.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000"));else{var b=mxUtils.getValue(d.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),h=mxUtils.getValue(d.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");c.style.backgroundColor=b;c.style.border="1px solid "+ -h}g.appendChild(c)}g.innerHTML="";for(var b=0;b<a.length;b++)0<b&&0==mxUtils.mod(b,4)&&mxUtils.br(g),c(a[b])}function b(a){mxEvent.addListener(a,"mouseenter",function(){a.style.opacity="1"});mxEvent.addListener(a,"mouseleave",function(){a.style.opacity="0.5"})}var d=this.editorUi.editor.graph,g=document.createElement("div");g.style.whiteSpace="nowrap";g.style.paddingLeft="24px";g.style.paddingRight="20px";a.style.paddingLeft="16px";a.style.paddingBottom="6px";a.style.position="relative";a.appendChild(g); -var f="plain-gray plain-blue plain-green plain-turquoise plain-orange plain-yellow plain-red plain-pink plain-purple gray blue green turquoise orange yellow red pink purple".split(" ");null==this.editorUi.currentScheme&&(this.editorUi.currentScheme=0);var h=document.createElement("div");h.style.cssText="position:absolute;left:10px;top:8px;bottom:8px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);"; -mxEvent.addListener(h,"click",mxUtils.bind(this,function(){this.editorUi.currentScheme=mxUtils.mod(this.editorUi.currentScheme-1,this.defaultColorSchemes.length);c(this.defaultColorSchemes[this.editorUi.currentScheme])}));var l=document.createElement("div");l.style.cssText="position:absolute;left:202px;top:8px;bottom:8px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYBuwCcAAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADZJREFUCNdjQAOMAmBKaiGY8loF5rKswsZlrVo8AUiFrTICcbIWK8A5DF1gDoMymMPApIAwHwCS0Qx/U7qCBQAAAABJRU5ErkJggg==);"; -1<this.defaultColorSchemes.length&&(a.appendChild(h),a.appendChild(l));mxEvent.addListener(l,"click",mxUtils.bind(this,function(){this.editorUi.currentScheme=mxUtils.mod(this.editorUi.currentScheme+1,this.defaultColorSchemes.length);c(this.defaultColorSchemes[this.editorUi.currentScheme])}));b(h);b(l);c(this.defaultColorSchemes[this.editorUi.currentScheme]);return a};StyleFormatPanel.prototype.addEditOps=function(a){var c=this.format.getSelectionState(),b=null;1==this.editorUi.editor.graph.getSelectionCount()&& -(b=mxUtils.button(mxResources.get("editStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("editStyle").funct()})),b.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),b.style.width="202px",b.style.marginBottom="2px",a.appendChild(b));var d=this.editorUi.editor.graph,g=d.view.getState(d.getSelectionCell());1==d.getSelectionCount()&&null!=g&&null!=g.shape&&null!=g.shape.stencil?(c=mxUtils.button(mxResources.get("editShape"),mxUtils.bind(this, -function(a){this.editorUi.actions.get("editShape").funct()})),c.setAttribute("title",mxResources.get("editShape")),c.style.marginBottom="2px",null==b?c.style.width="202px":(b.style.width="100px",c.style.width="100px",c.style.marginLeft="2px"),a.appendChild(c)):c.image&&(c=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,function(a){this.editorUi.actions.get("image").funct()})),c.setAttribute("title",mxResources.get("editImage")),c.style.marginBottom="2px",null==b?c.style.width="202px": -(b.style.width="100px",c.style.width="100px",c.style.marginLeft="2px"),a.appendChild(c));return a}}Graph.prototype.defaultThemeName="default-style2";Graph.prototype.lastPasteXml=null;Graph.prototype.pasteCounter=0;Graph.prototype.defaultScrollbars="0"!=urlParams.sb;Graph.prototype.defaultPageVisible="0"!=urlParams.pv;Graph.prototype.shadowId="dropShadow";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity="0.4";Graph.prototype.svgShadowBlur="1.7";Graph.prototype.svgShadowSize= -"3";Graph.prototype.edgeMode="move"!=urlParams.edge;var l=Graph.prototype.init;Graph.prototype.init=function(){function a(a){c=a;if(mxClient.IS_QUIRKS||7==document.documentMode||8==document.documentMode)c=mxUtils.clone(a)}l.apply(this,arguments);var c=null;mxEvent.addListener(this.container,"mouseenter",a);mxEvent.addListener(this.container,"mousemove",a);mxEvent.addListener(this.container,"mouseleave",function(a){c=null});this.isMouseInsertPoint=function(){return null!=c};var b=this.getInsertPoint; -this.getInsertPoint=function(){return null!=c?this.getPointForEvent(c):b.apply(this,arguments)};var d=this.layoutManager.getLayout;this.layoutManager.getLayout=function(a){var c=this.graph.view.getState(a),c=null!=c?c.style:this.graph.getCellStyle(a);if(null!=c){if("undefined"!=typeof mxRackContainer&&"rack"==c.childLayout){var b=new mxStackLayout(this.graph,!1);b.setChildGeometry=function(a,c){c.height=Math.max(c.height,20);if(1<c.height/20){var b=c.height%20;c.height+=10<b?20-b:-b}this.graph.getModel().setGeometry(a, -c)};b.fill=!0;b.unitSize=mxRackContainer.unitSize|20;b.marginLeft=c.marginLeft||0;b.marginRight=c.marginRight||0;b.marginTop=c.marginTop||0;b.marginBottom=c.marginBottom||0;b.resizeParent=!1;return b}if("undefined"!=typeof mxTableLayout&&"tableLayout"==c.childLayout)return b=new mxTableLayout(this.graph),b.rows=c.tableRows||2,b.columns=c.tableColumns||2,b.colPercentages=c.colPercentages,b.rowPercentages=c.rowPercentages,b.equalColumns="1"==mxUtils.getValue(c,"equalColumns",b.colPercentages?"0":"1"), -b.equalRows="1"==mxUtils.getValue(c,"equalRows",b.rowPercentages?"0":"1"),b.resizeParent="1"==mxUtils.getValue(c,"resizeParent","1"),b.border=c.tableBorder||b.border,b.marginLeft=c.marginLeft||0,b.marginRight=c.marginRight||0,b.marginTop=c.marginTop||0,b.marginBottom=c.marginBottom||0,b.autoAddCol="1"==mxUtils.getValue(c,"autoAddCol","0"),b.autoAddRow="1"==mxUtils.getValue(c,"autoAddRow",b.autoAddCol?"0":"1"),b.colWidths=c.colWidths||"100",b.rowHeights=c.rowHeights||"50",b}return d.apply(this,arguments)}}; -var t=Graph.prototype.isCssTransformsSupported;Graph.prototype.isCssTransformsSupported=function(){return t.apply(this,arguments)&&!mxClient.IS_SF};var m=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(a){var c=m.apply(this,arguments);if(null==c){if(null==this.globalUrlVars&&null!=urlParams.vars)try{this.globalUrlVars=JSON.parse(decodeURIComponent(urlParams.vars))}catch(A){null!=window.console&&console.log("Error in vars URL parameter: "+A)}null!=this.globalUrlVars&&(c= -this.globalUrlVars[a])}return c};var r=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){r.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var a=this.getDrawPane().parentNode;!this.graph.mathEnabled||mxClient.NO_FO||null!=this.webKitForceRepaintNode&&null!=this.webKitForceRepaintNode.parentNode||"svg"!=this.graph.container.firstChild.nodeName?null==this.webKitForceRepaintNode||this.graph.mathEnabled&&("svg"==this.graph.container.firstChild.nodeName|| -this.graph.container.firstChild==this.webKitForceRepaintNode)||(null!=this.webKitForceRepaintNode.parentNode&&this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",a.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,a.ownerSVGElement))}};var x=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet= -function(){x.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(a){if("data:action/json,"==a.substring(0,17)&&(a=JSON.parse(a.substring(17)),null!=a.actions)){for(var c=0;c<a.actions.length;c++)if(null!=a.actions[c].open)if(this.isCustomLink(a.actions[c].open)){if(!this.customLinkClicked(a.actions[c].open))return}else this.openLink(a.actions[c].open);this.model.beginUpdate();try{for(c=0;c<a.actions.length;c++)this.handleLinkAction(a.actions[c])}finally{this.model.endUpdate()}}}; -Graph.prototype.handleLinkAction=function(a){var c=[];null!=a.select&&this.isEnabled()&&(c=this.getCellsForAction(a.select),this.setSelectionCells(c));null!=a.highlight&&(c=this.getCellsForAction(a.highlight),this.highlightCells(c,a.highlight.color,a.highlight.duration,a.highlight.opacity));null!=a.toggle&&this.toggleCells(this.getCellsForAction(a.toggle));null!=a.show&&this.setCellsVisible(this.getCellsForAction(a.show),!0);null!=a.hide&&this.setCellsVisible(this.getCellsForAction(a.hide),!1);null!= -a.scroll&&(c=this.getCellsForAction(a.scroll));0<c.length&&this.scrollCellToVisible(c[0])};Graph.prototype.getCellsForAction=function(a){return this.getCellsById(a.cells).concat(this.getCellsForTags(a.tags))};Graph.prototype.getCellsById=function(a){var c=[];if(null!=a)for(var b=0;b<a.length;b++)if("*"==a[b])var d=this.getDefaultParent(),c=c.concat(this.model.filterDescendants(function(a){return a!=d},d));else{var g=this.model.getCell(a[b]);null!=g&&c.push(g)}return c};Graph.prototype.getCellsForTags= -function(a,c,b){var d=[];if(null!=a){c=null!=c?c:this.model.getDescendants(this.model.getRoot());b=null!=b?b:"tags";for(var g=0;g<c.length;g++)if(this.model.isVertex(c[g])||this.model.isEdge(c[g])){var f=null!=c[g].value&&"object"==typeof c[g].value?mxUtils.trim(c[g].value.getAttribute(b)||""):"",h=!0;if(0<f.length)for(var f=f.toLowerCase().split(" "),l=0;l<a.length&&h;l++)var m=mxUtils.trim(a[l]).toLowerCase(),h=h&&(0==m.length||0<=mxUtils.indexOf(f,m));else h=0==a.length;h&&d.push(c[g])}}return d}; -Graph.prototype.toggleCells=function(a){this.model.beginUpdate();try{for(var c=0;c<a.length;c++)this.model.setVisible(a[c],!this.model.isVisible(a[c]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(a,c){this.model.beginUpdate();try{for(var b=0;b<a.length;b++)this.model.setVisible(a[b],c)}finally{this.model.endUpdate()}};Graph.prototype.highlightCells=function(a,c,b,d){for(var g=0;g<a.length;g++)this.highlightCell(a[g],c,b,d)};Graph.prototype.highlightCell=function(a,c, -b,d){c=null!=c?c:mxConstants.DEFAULT_VALID_COLOR;b=null!=b?b:1E3;a=this.view.getState(a);if(null!=a){var g=Math.max(5,mxUtils.getValue(a.style,mxConstants.STYLE_STROKEWIDTH,1)+4),f=new mxCellHighlight(this,c,g,!1);null!=d&&(f.opacity=d);f.highlight(a);window.setTimeout(function(){null!=f.shape&&(mxUtils.setPrefixedStyle(f.shape.node.style,"transition","all 1200ms ease-in-out"),f.shape.node.style.opacity=0);window.setTimeout(function(){f.destroy()},1200)},b)}};Graph.prototype.addSvgShadow=function(a, -c,b){b=null!=b?b:!1;var d=a.ownerDocument,g=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG,"filter"):d.createElement("filter");g.setAttribute("id",this.shadowId);var f=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):d.createElement("feGaussianBlur");f.setAttribute("in","SourceAlpha");f.setAttribute("stdDeviation",this.svgShadowBlur);f.setAttribute("result","blur");g.appendChild(f);f=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG,"feOffset"): -d.createElement("feOffset");f.setAttribute("in","blur");f.setAttribute("dx",this.svgShadowSize);f.setAttribute("dy",this.svgShadowSize);f.setAttribute("result","offsetBlur");g.appendChild(f);f=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG,"feFlood"):d.createElement("feFlood");f.setAttribute("flood-color",this.svgShadowColor);f.setAttribute("flood-opacity",this.svgShadowOpacity);f.setAttribute("result","offsetColor");g.appendChild(f);f=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG, -"feComposite"):d.createElement("feComposite");f.setAttribute("in","offsetColor");f.setAttribute("in2","offsetBlur");f.setAttribute("operator","in");f.setAttribute("result","offsetBlur");g.appendChild(f);f=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG,"feBlend"):d.createElement("feBlend");f.setAttribute("in","SourceGraphic");f.setAttribute("in2","offsetBlur");g.appendChild(f);f=a.getElementsByTagName("defs");0==f.length?(d=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG, -"defs"):d.createElement("defs"),null!=a.firstChild?a.insertBefore(d,a.firstChild):a.appendChild(d)):d=f[0];d.appendChild(g);b||((c||a.getElementsByTagName("g")[0]).setAttribute("filter","url(#"+this.shadowId+")"),isNaN(parseInt(a.getAttribute("width")))||(a.setAttribute("width",parseInt(a.getAttribute("width"))+6),a.setAttribute("height",parseInt(a.getAttribute("height"))+6)));return g};Graph.prototype.setShadowVisible=function(a,c){mxClient.IS_SVG&&(c=null!=c?c:!0,(this.shadowVisible=a)?this.view.getDrawPane().setAttribute("filter", -"url(#"+this.shadowId+")"):this.view.getDrawPane().removeAttribute("filter"),c&&this.fireEvent(new mxEventObject("shadowVisibleChanged")))};Graph.prototype.selectUnlockedLayer=function(){if(null==this.defaultParent){var a=this.model.getChildCount(this.model.root),c,b=0;do c=this.model.getChildAt(this.model.root,b);while(b++<a&&"1"==mxUtils.getValue(this.getCellStyle(c),"locked","0"));null!=c&&this.setDefaultParent(c)}};mxStencilRegistry.libraries.mockup=[SHAPES_PATH+"/mockup/mxMockupButtons.js"]; -mxStencilRegistry.libraries.arrows2=[SHAPES_PATH+"/mxArrows.js"];mxStencilRegistry.libraries.atlassian=[STENCIL_PATH+"/atlassian.xml",SHAPES_PATH+"/mxAtlassian.js"];mxStencilRegistry.libraries.bpmn=[SHAPES_PATH+"/bpmn/mxBpmnShape2.js",STENCIL_PATH+"/bpmn.xml"];mxStencilRegistry.libraries.dfd=[SHAPES_PATH+"/mxDFD.js"];mxStencilRegistry.libraries.er=[SHAPES_PATH+"/er/mxER.js"];mxStencilRegistry.libraries.flowchart=[SHAPES_PATH+"/mxFlowchart.js",STENCIL_PATH+"/flowchart.xml"];mxStencilRegistry.libraries.ios= -[SHAPES_PATH+"/mockup/mxMockupiOS.js"];mxStencilRegistry.libraries.rackGeneral=[SHAPES_PATH+"/rack/mxRack.js",STENCIL_PATH+"/rack/general.xml"];mxStencilRegistry.libraries.rackF5=[STENCIL_PATH+"/rack/f5.xml"];mxStencilRegistry.libraries.lean_mapping=[SHAPES_PATH+"/mxLeanMap.js",STENCIL_PATH+"/lean_mapping.xml"];mxStencilRegistry.libraries.basic=[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/basic.xml"];mxStencilRegistry.libraries.ios7icons=[STENCIL_PATH+"/ios7/icons.xml"];mxStencilRegistry.libraries.ios7ui= -[SHAPES_PATH+"/ios7/mxIOS7Ui.js",STENCIL_PATH+"/ios7/misc.xml"];mxStencilRegistry.libraries.android=[SHAPES_PATH+"/mxAndroid.js",STENCIL_PATH+"/android/android.xml"];mxStencilRegistry.libraries["electrical/transmission"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/transmission.xml"];mxStencilRegistry.libraries["electrical/logic_gates"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/logic_gates.xml"];mxStencilRegistry.libraries["electrical/abstract"]=[SHAPES_PATH+"/mxElectrical.js", -STENCIL_PATH+"/electrical/abstract.xml"];mxStencilRegistry.libraries.infographic=[SHAPES_PATH+"/mxInfographic.js"];mxStencilRegistry.libraries["mockup/buttons"]=[SHAPES_PATH+"/mockup/mxMockupButtons.js"];mxStencilRegistry.libraries["mockup/containers"]=[SHAPES_PATH+"/mockup/mxMockupContainers.js"];mxStencilRegistry.libraries["mockup/forms"]=[SHAPES_PATH+"/mockup/mxMockupForms.js"];mxStencilRegistry.libraries["mockup/graphics"]=[SHAPES_PATH+"/mockup/mxMockupGraphics.js",STENCIL_PATH+"/mockup/misc.xml"]; -mxStencilRegistry.libraries["mockup/markup"]=[SHAPES_PATH+"/mockup/mxMockupMarkup.js"];mxStencilRegistry.libraries["mockup/misc"]=[SHAPES_PATH+"/mockup/mxMockupMisc.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/navigation"]=[SHAPES_PATH+"/mockup/mxMockupNavigation.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/text"]=[SHAPES_PATH+"/mockup/mxMockupText.js"];mxStencilRegistry.libraries.floorplan=[SHAPES_PATH+"/mxFloorplan.js",STENCIL_PATH+"/floorplan.xml"]; -mxStencilRegistry.libraries.bootstrap=[SHAPES_PATH+"/mxBootstrap.js",STENCIL_PATH+"/bootstrap.xml"];mxStencilRegistry.libraries.gmdl=[SHAPES_PATH+"/mxGmdl.js",STENCIL_PATH+"/gmdl.xml"];mxStencilRegistry.libraries.gcp2=[SHAPES_PATH+"/mxGCP2.js",STENCIL_PATH+"/gcp2.xml"];mxStencilRegistry.libraries.cabinets=[SHAPES_PATH+"/mxCabinets.js",STENCIL_PATH+"/cabinets.xml"];mxStencilRegistry.libraries.archimate=[SHAPES_PATH+"/mxArchiMate.js"];mxStencilRegistry.libraries.archimate3=[SHAPES_PATH+"/mxArchiMate3.js"]; -mxStencilRegistry.libraries.sysml=[SHAPES_PATH+"/mxSysML.js"];mxStencilRegistry.libraries.eip=[SHAPES_PATH+"/mxEip.js",STENCIL_PATH+"/eip.xml"];mxStencilRegistry.libraries.networks=[SHAPES_PATH+"/mxNetworks.js",STENCIL_PATH+"/networks.xml"];mxStencilRegistry.libraries.aws3d=[SHAPES_PATH+"/mxAWS3D.js",STENCIL_PATH+"/aws3d.xml"];mxStencilRegistry.libraries.aws4=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.veeam=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml", -STENCIL_PATH+"/veeam/veeam.xml"];mxStencilRegistry.libraries.pid2inst=[SHAPES_PATH+"/pid2/mxPidInstruments.js"];mxStencilRegistry.libraries.pid2misc=[SHAPES_PATH+"/pid2/mxPidMisc.js",STENCIL_PATH+"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"];mxMarker.getPackageForType=function(a){var c=null;null!=a&&0<a.length&&("ER"==a.substring(0,2)?c="mxgraph.er":"sysML"==a.substring(0, -5)&&(c="mxgraph.sysml"));return c};var v=mxMarker.createMarker;mxMarker.createMarker=function(a,c,b,d,g,f,h,l,m,r){if(null!=b&&null==mxMarker.markers[b]){var t=this.getPackageForType(b);null!=t&&mxStencilRegistry.getStencil(t)}return v.apply(this,arguments)};PrintDialog.prototype.create=function(a,c){function b(){x.value=Math.max(1,Math.min(l,Math.max(parseInt(x.value),parseInt(k.value))));k.value=Math.max(1,Math.min(l,Math.min(parseInt(x.value),parseInt(k.value))))}function d(c){function b(c,b,g){var f= -c.getGraphBounds(),h=0,l=0,m=X.get(),r=1/c.pageScale,t=y.checked;if(t)var r=parseInt(E.value),v=parseInt(ea.value),r=Math.min(m.height*v/(f.height/c.view.scale),m.width*r/(f.width/c.view.scale));else r=parseInt(p.value)/(100*c.pageScale),isNaN(r)&&(d=1/c.pageScale,p.value="100 %");m=mxRectangle.fromRectangle(m);m.width=Math.ceil(m.width*d);m.height=Math.ceil(m.height*d);r*=d;!t&&c.pageVisible?(f=c.getPageLayout(),h-=f.x*m.width,l-=f.y*m.height):t=!0;if(null==b){b=PrintDialog.createPrintPreview(c, -r,m,0,h,l,t);b.pageSelector=!1;b.mathEnabled=!1;c=a.getCurrentFile();null!=c&&(b.title=c.getTitle());var k=b.writeHead;b.writeHead=function(c){k.apply(this,arguments);null!=a.editor.fontCss&&(c.writeln('<style type="text/css">'),c.writeln(a.editor.fontCss),c.writeln("</style>"))};if("undefined"!==typeof MathJax){var x=b.renderPage;b.renderPage=function(a,c,b,d,g,f){var h=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;var l=x.apply(this, -arguments);mxClient.NO_FO=h;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:l.className="geDisableMathJax";return l}}b.open(null,null,g,!0)}else{m=c.background;if(null==m||""==m||m==mxConstants.NONE)m="#ffffff";b.backgroundColor=m;b.autoOrigin=t;b.appendGraph(c,r,h,l,g,!0)}return b}var d=parseInt(Z.value)/100;isNaN(d)&&(d=1,Z.value="100 %");var d=.75*d,f=k.value,h=x.value,l=!t.checked,r=null;l&&(l=f==m&&h==m);if(!l&&null!=a.pages&&a.pages.length){var v=0,l=a.pages.length-1;t.checked|| -(v=parseInt(f)-1,l=parseInt(h)-1);for(var u=v;u<=l;u++){var n=a.pages[u],f=n==a.currentPage?g:null;if(null==f){var f=a.createTemporaryGraph(g.getStylesheet()),h=!0,v=!1,z=null,A=null;null==n.viewState&&null==n.root&&a.updatePageRoot(n);null!=n.viewState&&(h=n.viewState.pageVisible,v=n.viewState.mathEnabled,z=n.viewState.background,A=n.viewState.backgroundImage);f.background=z;f.backgroundImage=null!=A?new mxImage(A.src,A.width,A.height):null;f.pageVisible=h;f.mathEnabled=v;var D=f.getGlobalVariable; -f.getGlobalVariable=function(a){return"page"==a?n.getName():"pagenumber"==a?u+1:D.apply(this,arguments)};document.body.appendChild(f.container);a.updatePageRoot(n);f.model.setRoot(n.root)}r=b(f,r,u!=l);f!=g&&f.container.parentNode.removeChild(f.container)}}else r=b(g);r.mathEnabled&&(l=r.wnd.document,l.writeln('<script type="text/x-mathjax-config">'),l.writeln("MathJax.Hub.Config({"),l.writeln("showMathMenu: false,"),l.writeln('messageStyle: "none",'),l.writeln('jax: ["input/TeX", "input/MathML", "input/AsciiMath", "output/HTML-CSS"],'), -l.writeln('extensions: ["tex2jax.js", "mml2jax.js", "asciimath2jax.js"],'),l.writeln('"HTML-CSS": {'),l.writeln("imageFont: null"),l.writeln("},"),l.writeln("TeX: {"),l.writeln('extensions: ["AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js"]'),l.writeln("},"),l.writeln("tex2jax: {"),l.writeln('\tignoreClass: "geDisableMathJax"'),l.writeln("},"),l.writeln("asciimath2jax: {"),l.writeln('\tignoreClass: "geDisableMathJax"'),l.writeln("}"),l.writeln("});"),c&&(l.writeln("MathJax.Hub.Queue(function () {"), -l.writeln("window.print();"),l.writeln("});")),l.writeln("\x3c/script>"),l.writeln('<script type="text/javascript" src="https://math.draw.io/current/MathJax.js">\x3c/script>'));r.closeDocument();!r.mathEnabled&&c&&PrintDialog.printPreview(r)}var g=a.editor.graph,f=document.createElement("div"),h=document.createElement("h3");h.style.width="100%";h.style.textAlign="center";h.style.marginTop="0px";mxUtils.write(h,c||mxResources.get("print"));f.appendChild(h);var l=1,m=1,r=document.createElement("div"); -r.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var t=document.createElement("input");t.style.cssText="margin-right:8px;margin-bottom:8px;";t.setAttribute("value","all");t.setAttribute("type","radio");t.setAttribute("name","pages-printdialog");r.appendChild(t);h=document.createElement("span");mxUtils.write(h,mxResources.get("printAllPages"));r.appendChild(h);mxUtils.br(r);var v=t.cloneNode(!0);t.setAttribute("checked","checked");v.setAttribute("value","range"); -r.appendChild(v);h=document.createElement("span");mxUtils.write(h,mxResources.get("pages")+":");r.appendChild(h);var k=document.createElement("input");k.style.cssText="margin:0 8px 0 8px;";k.setAttribute("value","1");k.setAttribute("type","number");k.setAttribute("min","1");k.style.width="50px";r.appendChild(k);h=document.createElement("span");mxUtils.write(h,mxResources.get("to"));r.appendChild(h);var x=k.cloneNode(!0);r.appendChild(x);mxEvent.addListener(k,"focus",function(){v.checked=!0});mxEvent.addListener(x, -"focus",function(){v.checked=!0});mxEvent.addListener(k,"change",b);mxEvent.addListener(x,"change",b);if(null!=a.pages&&(l=a.pages.length,null!=a.currentPage))for(h=0;h<a.pages.length;h++)if(a.currentPage==a.pages[h]){m=h+1;k.value=m;x.value=m;break}k.setAttribute("max",l);x.setAttribute("max",l);1<l&&f.appendChild(r);var u=document.createElement("div");u.style.marginBottom="10px";var n=document.createElement("input");n.style.marginRight="8px";n.setAttribute("value","adjust");n.setAttribute("type", -"radio");n.setAttribute("name","printZoom");u.appendChild(n);h=document.createElement("span");mxUtils.write(h,mxResources.get("adjustTo"));u.appendChild(h);var p=document.createElement("input");p.style.cssText="margin:0 8px 0 8px;";p.setAttribute("value","100 %");p.style.width="50px";u.appendChild(p);mxEvent.addListener(p,"focus",function(){n.checked=!0});f.appendChild(u);var r=r.cloneNode(!1),y=n.cloneNode(!0);y.setAttribute("value","fit");n.setAttribute("checked","checked");h=document.createElement("div"); -h.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";h.appendChild(y);r.appendChild(h);u=document.createElement("table");u.style.display="inline-block";var D=document.createElement("tbody"),q=document.createElement("tr"),w=q.cloneNode(!0),H=document.createElement("td"),U=H.cloneNode(!0),L=H.cloneNode(!0),P=H.cloneNode(!0),R=H.cloneNode(!0),ja=H.cloneNode(!0);H.style.textAlign="right";P.style.textAlign="right";mxUtils.write(H,mxResources.get("fitTo"));var E=document.createElement("input"); -E.style.cssText="margin:0 8px 0 8px;";E.setAttribute("value","1");E.setAttribute("min","1");E.setAttribute("type","number");E.style.width="40px";U.appendChild(E);h=document.createElement("span");mxUtils.write(h,mxResources.get("fitToSheetsAcross"));L.appendChild(h);mxUtils.write(P,mxResources.get("fitToBy"));var ea=E.cloneNode(!0);R.appendChild(ea);mxEvent.addListener(E,"focus",function(){y.checked=!0});mxEvent.addListener(ea,"focus",function(){y.checked=!0});h=document.createElement("span");mxUtils.write(h, -mxResources.get("fitToSheetsDown"));ja.appendChild(h);q.appendChild(H);q.appendChild(U);q.appendChild(L);w.appendChild(P);w.appendChild(R);w.appendChild(ja);D.appendChild(q);D.appendChild(w);u.appendChild(D);r.appendChild(u);f.appendChild(r);r=document.createElement("div");h=document.createElement("div");h.style.fontWeight="bold";h.style.marginBottom="12px";mxUtils.write(h,mxResources.get("paperSize"));r.appendChild(h);h=document.createElement("div");h.style.marginBottom="12px";var X=PageSetupDialog.addPageFormatPanel(h, -"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);r.appendChild(h);h=document.createElement("span");mxUtils.write(h,mxResources.get("pageScale"));r.appendChild(h);var Z=document.createElement("input");Z.style.cssText="margin:0 8px 0 8px;";Z.setAttribute("value","100 %");Z.style.width="60px";r.appendChild(Z);f.appendChild(r);h=document.createElement("div");h.style.cssText="text-align:right;margin:48px 0 0 0;";r=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()}); -r.className="geBtn";a.editor.cancelFirst&&h.appendChild(r);a.isOffline()||(u=mxUtils.button(mxResources.get("help"),function(){g.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),u.className="geBtn",h.appendChild(u));PrintDialog.previewEnabled&&(u=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();d(!1)}),u.className="geBtn",h.appendChild(u));u=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();d(!0)});u.className= -"geBtn gePrimaryBtn";h.appendChild(u);a.editor.cancelFirst||h.appendChild(r);f.appendChild(h);this.container=f};var D=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page=this.ui.currentPage);this.page!=this.ui.currentPage?null!=this.page.viewState&&(this.ignoreColor||(this.page.viewState.background=this.color),this.ignoreImage||(this.page.viewState.backgroundImage=this.image),null!=this.format&&(this.page.viewState.pageFormat=this.format),null!= -this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled),null!=this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)):(D.apply(this,arguments),null!=this.mathEnabled&&this.mathEnabled!=this.ui.isMathEnabled()&&(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled),null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=!this.shadowVisible))}})(); -var ErrorDialog=function(a,b,f,d,k,n,p,q,w,c,g){w=null!=w?w:!0;var h=document.createElement("div");h.style.textAlign="center";if(null!=b){var l=document.createElement("div");l.style.padding="0px";l.style.margin="0px";l.style.fontSize="18px";l.style.paddingBottom="16px";l.style.marginBottom="16px";l.style.borderBottom="1px solid #c0c0c0";l.style.color="gray";l.style.whiteSpace="nowrap";l.style.textOverflow="ellipsis";l.style.overflow="hidden";mxUtils.write(l,b);l.setAttribute("title",b);h.appendChild(l)}b= -document.createElement("div");b.style.padding="6px";b.innerHTML=f;h.appendChild(b);f=document.createElement("div");f.style.marginTop="16px";f.style.textAlign="center";null!=n&&(b=mxUtils.button(mxResources.get("tryAgain"),function(){a.hideDialog();n()}),b.className="geBtn",f.appendChild(b),f.style.textAlign="center");null!=c&&(c=mxUtils.button(c,function(){null!=g&&g()}),c.className="geBtn",f.appendChild(c));var t=mxUtils.button(d,function(){w&&a.hideDialog();null!=k&&k()});t.className="geBtn";f.appendChild(t); -null!=p&&(d=mxUtils.button(p,function(){w&&a.hideDialog();null!=q&&q()}),d.className="geBtn gePrimaryBtn",f.appendChild(d));this.init=function(){t.focus()};h.appendChild(f);this.container=h}; -(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,f,d){d.ui=a.ui;return f};a.afterDecode=function(a,f,d){d.previousColor=d.color;d.previousImage=d.image;d.previousFormat=d.format;null!=d.foldingEnabled&&(d.foldingEnabled=!d.foldingEnabled);null!=d.mathEnabled&&(d.mathEnabled=!d.mathEnabled);null!=d.shadowVisible&&(d.shadowVisible=!d.shadowVisible);return d};mxCodecRegistry.register(a)})();(function(){EditorUi.VERSION="@DRAWIO-VERSION@";EditorUi.compactUi="atlas"!=uiTheme;EditorUi.enableLogging="1"!=urlParams.stealth&&/.*\.draw\.io$/.test(window.location.hostname)&&"support.draw.io"!=window.location.hostname;EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.logError=function(a,b,d,f,t){if("1"==urlParams.dev)EditorUi.debug("logError",a,b,d,f,t);else if(EditorUi.enableLogging)try{if(a!=EditorUi.lastErrorMessage&&(null== -a||null==b||-1==a.indexOf("Script error")&&-1==a.indexOf("extension"))&&null!=a&&0>a.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=a;var c=0<=a.indexOf("NetworkError")||0<=a.indexOf("SecurityError")||0<=a.indexOf("NS_ERROR_FAILURE")||0<=a.indexOf("out of memory")?"CONFIG":"SEVERE",g=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=g+"/log?severity="+c+"&v="+encodeURIComponent(EditorUi.VERSION)+"&msg=clientError:"+encodeURIComponent(a)+":url:"+encodeURIComponent(window.location.href)+ -":lnum:"+encodeURIComponent(d)+(null!=f?":colno:"+encodeURIComponent(f):"")+(null!=t&&null!=t.stack?"&stack="+encodeURIComponent(t.stack):"")}}catch(x){}};EditorUi.logEvent=function(a){if("1"==urlParams.dev)EditorUi.debug("logEvent",a);else if(EditorUi.enableLogging)try{var c=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=c+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=a?"&data="+encodeURIComponent(JSON.stringify(a)):"")}catch(h){}};EditorUi.sendReport=function(a, -b){if("1"==urlParams.dev)EditorUi.debug("sendReport",a);else if(EditorUi.enableLogging)try{b=null!=b?b:5E4,a.length>b&&(a=a.substring(0,b)+"\n...[SHORTENED]"),mxUtils.post("/email","version="+encodeURIComponent(EditorUi.VERSION)+"&url="+encodeURIComponent(window.location.href)+"&data="+encodeURIComponent(a))}catch(h){}};EditorUi.debug=function(){if(null!=window.console&&"1"==urlParams.test){for(var a=[(new Date).toISOString()],b=0;b<arguments.length;b++)a.push(arguments[b]);console.log.apply(console, -a)}};EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.scratchpadHelpLink="https://desk.draw.io/support/solutions/articles/16000042367";EditorUi.prototype.emptyDiagramXml='<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/></root></mxGraphModel>';EditorUi.prototype.emptyLibraryXml="<mxlibrary>[]</mxlibrary>"; -EditorUi.prototype.mode=null;EditorUi.prototype.sidebarFooterHeight=36;EditorUi.prototype.defaultCustomShapeStyle="shape=stencil(tZRtTsQgEEBPw1+DJR7AoN6DbWftpAgE0Ortd/jYRGq72R+YNE2YgTePloEJGWblgA18ZuKFDcMj5/Sm8boZq+BgjCX4pTyqk6ZlKROitwusOMXKQDODx5iy4pXxZ5qTHiFHawxB0JrQZH7lCabQ0Fr+XWC1/E8zcsT/gAi+Subo2/3Mh6d/oJb5nU1b5tW7r2knautaa3T+U32o7f7vZwpJkaNDLORJjcu7t59m2jXxqX9un+tt022acsfmoKaQZ+vhhswZtS6Ne/ThQGt0IV0N3Yyv6P3CeT9/tHO0XFI5cAE=);whiteSpace=wrap;html=1;";EditorUi.prototype.svgBrokenImage=Graph.createSvgImage(10, -10,'<rect x="0" y="0" width="10" height="10" stroke="#000" fill="transparent"/><path d="m 0 0 L 10 10 L 0 10 L 10 0" stroke="#000" fill="transparent"/>');EditorUi.prototype.crossOriginImages=!mxClient.IS_IE;EditorUi.prototype.maxBackgroundSize=1600;EditorUi.prototype.maxImageSize=520;EditorUi.prototype.resampleThreshold=1E5;EditorUi.prototype.maxImageBytes=1E6;EditorUi.prototype.maxBackgroundBytes=25E5;EditorUi.prototype.currentFile=null;EditorUi.prototype.printPdfExport=!1;EditorUi.prototype.pdfPageExport= -!0;EditorUi.prototype.formatEnabled="0"!=urlParams.format;EditorUi.prototype.insertTemplateEnabled=!0;EditorUi.prototype.closableScratchpad=!0;(function(){EditorUi.prototype.useCanvasForExport=!1;EditorUi.prototype.jpgSupported=!1;try{var a=document.createElement("canvas");EditorUi.prototype.canvasSupported=!(!a.getContext||!a.getContext("2d"))}catch(t){}try{var b=document.createElement("canvas"),d=new Image;d.onload=function(){try{b.getContext("2d").drawImage(d,0,0);var a=b.toDataURL("image/png"); -EditorUi.prototype.useCanvasForExport=null!=a&&6<a.length}catch(m){}};d.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(t){}try{b=document.createElement("canvas");b.width=b.height=1;var f=b.toDataURL("image/jpeg");EditorUi.prototype.jpgSupported= -null!==f.match("image/jpeg")}catch(t){}})();EditorUi.prototype.openLink=function(a,b,d){return this.editor.graph.openLink(a,b,d)};EditorUi.prototype.showSplash=function(a){};EditorUi.prototype.getLocalData=function(a,b){b(localStorage.getItem(a))};EditorUi.prototype.setLocalData=function(a,b,d){localStorage.setItem(a,b);null!=d&&d()};EditorUi.prototype.removeLocalData=function(a,b){localStorage.removeItem(a);b()};EditorUi.prototype.setMathEnabled=function(a){this.editor.graph.mathEnabled=a;this.editor.updateGraphComponents(); -this.editor.graph.refresh();this.fireEvent(new mxEventObject("mathEnabledChanged"))};EditorUi.prototype.isMathEnabled=function(a){return this.editor.graph.mathEnabled};EditorUi.prototype.isAppCache=function(){return"1"==urlParams.appcache||this.isOfflineApp()};EditorUi.prototype.isOfflineApp=function(){return"1"==urlParams.offline};EditorUi.prototype.isOffline=function(){return this.isOfflineApp()||!navigator.onLine||"1"==urlParams.stealth};EditorUi.prototype.createSpinner=function(a,b,d){d=null!= -d?d:24;var c=new Spinner({lines:12,length:d,width:Math.round(d/3),radius:Math.round(d/2),rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),g=c.spin;c.spin=function(d,f){var h=!1;this.active||(g.call(this,d),this.active=!0,null!=f&&(h=document.createElement("div"),h.style.position="absolute",h.style.whiteSpace="nowrap",h.style.background="#4B4243",h.style.color="white",h.style.fontFamily="Helvetica, Arial",h.style.fontSize="9pt",h.style.padding="6px", -h.style.paddingLeft="10px",h.style.paddingRight="10px",h.style.zIndex=2E9,h.style.left=Math.max(0,a)+"px",h.style.top=Math.max(0,b+70)+"px",mxUtils.setPrefixedStyle(h.style,"borderRadius","6px"),mxUtils.setPrefixedStyle(h.style,"transform","translate(-50%,-50%)"),"dark"!=uiTheme&&mxUtils.setPrefixedStyle(h.style,"boxShadow","2px 2px 3px 0px #ddd"),"..."!=f.substring(f.length-3,f.length)&&(f+="..."),h.innerHTML=f,d.appendChild(h),c.status=h,mxClient.IS_VML&&(null==document.documentMode||8>=document.documentMode)&& -(h.style.left=Math.round(Math.max(0,a-h.offsetWidth/2))+"px",h.style.top=Math.round(Math.max(0,b+70-h.offsetHeight/2))+"px")),this.pause=mxUtils.bind(this,function(){var a=function(){};this.active&&(a=mxUtils.bind(this,function(){this.spin(d,f)}));this.stop();return a}),h=!0);return h};var f=c.stop;c.stop=function(){f.call(this);this.active=!1;null!=c.status&&(c.status.parentNode.removeChild(c.status),c.status=null)};c.pause=function(){return function(){}};return c};EditorUi.parsePng=function(a,b, -d){function c(a,c){var b=f;f+=c;return a.substring(b,f)}function g(a){a=c(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}var f=0;if(c(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=d&&d();else if(c(a,4),"IHDR"!=c(a,4))null!=d&&d();else{c(a,17);do{d=g(a);var h=c(a,4);if(null!=b&&b(f-8,h,d))break;value=c(a,d);c(a,4);if("IEND"==h)break}while(d)}};EditorUi.prototype.isCompatibleString=function(a){try{var c=mxUtils.parseXml(a), -b=this.editor.extractGraphModel(c.documentElement,!0);return null!=b&&0==b.getElementsByTagName("parsererror").length}catch(l){}return!1};var a=EditorUi.prototype.extractGraphModelFromHtml;EditorUi.prototype.extractGraphModelFromHtml=function(c){var b=a.apply(this,arguments);if(null==b)try{var d=c.indexOf("<mxfile ");if(0<=d){var f=c.lastIndexOf("</mxfile>");f>d&&(b=c.substring(d,f+15).replace(/>/g,">").replace(/</g,"<").replace(/\\"/g,'"').replace(/\n/g,""))}else var t=mxUtils.parseXml(c), -m=this.editor.extractGraphModel(t.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility),b=null!=m?mxUtils.getXml(m):""}catch(r){}return b};EditorUi.prototype.validateFileData=function(a){if(null!=a&&0<a.length){var c=a.indexOf('<meta charset="utf-8">');0<=c&&(a=a.slice(0,c)+'<meta charset="utf-8"/>'+a.slice(c+23-1,a.length));a=this.editor.graph.zapGremlins(a)}return a};EditorUi.prototype.replaceFileData=function(a){a=this.validateFileData(a);a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement: -null;var c=null!=a?this.editor.extractGraphModel(a,!0):null;null!=c&&(a=c);if(null!=a){c=this.editor.graph;c.model.beginUpdate();try{var b=null!=this.pages?this.pages.slice():null,d=a.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<d.length||1==d.length&&d[0].hasAttribute("name")){this.fileNode=a;this.pages=null!=this.pages?this.pages:[];for(var f=d.length-1;0<=f;f--){var m=this.updatePageRoot(new DiagramPage(d[f]));null==m.getName()&&m.setName(mxResources.get("pageWithNumber",[f+1])); -c.model.execute(new ChangePage(this,m,0==f?m:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),c.model.execute(new ChangePage(this,this.currentPage,this.currentPage,0))),this.editor.setGraphXml(a),null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=b)for(f=0;f<b.length;f++)c.model.execute(new ChangePage(this, -b[f],null))}finally{c.model.endUpdate()}}};EditorUi.prototype.createFileData=function(a,b,d,f,t,m,r,k,v,n){b=null!=b?b:this.editor.graph;t=null!=t?t:!1;v=null!=v?v:!0;var c,g=null;null==d||d.getMode()==App.MODE_DEVICE||d.getMode()==App.MODE_BROWSER?c="_blank":g=c=f;if(null==a)return"";var h=a;if("mxfile"!=h.nodeName.toLowerCase()){var l=b.zapGremlins(mxUtils.getXml(a)),h=b.compress(l);if(b.decompress(h)!=l)return l;l=a.ownerDocument.createElement("diagram");l.setAttribute("id",Editor.guid());mxUtils.setTextContent(l, -h);h=a.ownerDocument.createElement("mxfile");h.appendChild(l)}n?(h=h.cloneNode(!0),h.removeAttribute("userAgent"),h.removeAttribute("version"),h.removeAttribute("editor"),h.removeAttribute("type")):(h.removeAttribute("userAgent"),h.removeAttribute("version"),h.removeAttribute("editor"),h.removeAttribute("type"),h.setAttribute("modified",(new Date).toISOString()),h.setAttribute("host",window.location.hostname),h.setAttribute("agent",navigator.userAgent),h.setAttribute("version",EditorUi.VERSION),h.setAttribute("etag", -Editor.guid()),a=null!=d?d.getMode():this.mode,null!=a&&h.setAttribute("type",a));a=mxUtils.getXml(h);if(!m&&!t&&(r||null!=d&&/(\.html)$/i.test(d.getTitle())))a=this.getHtml2(mxUtils.getXml(h),b,null!=d?d.getTitle():null,c,g);else if(m||!t&&null!=d&&/(\.svg)$/i.test(d.getTitle()))null==d||d.getMode()!=App.MODE_DEVICE&&d.getMode()!=App.MODE_BROWSER||(f=null),a=this.getEmbeddedSvg(a,b,f,null,k,v,g);return a};EditorUi.prototype.getXmlFileData=function(a,b){a=null!=a?a:!0;b=null!=b?b:!1;var c=this.editor.getGraphXml(a); -if(a&&null!=this.fileNode&&null!=this.currentPage)if(c=this.editor.graph.compress(this.editor.graph.zapGremlins(mxUtils.getXml(c))),mxUtils.setTextContent(this.currentPage.node,c),c=this.fileNode.cloneNode(!1),b)c.appendChild(this.currentPage.node);else for(var d=0;d<this.pages.length;d++){if(this.currentPage!=this.pages[d]&&this.pages[d].needsUpdate){var g=(new mxCodec(mxUtils.createXmlDocument())).encode(new mxGraphModel(this.pages[d].root));this.editor.graph.saveViewState(this.pages[d].viewState, -g);mxUtils.setTextContent(this.pages[d].node,this.editor.graph.compressNode(g));delete this.pages[d].needsUpdate}c.appendChild(this.pages[d].node)}return c};EditorUi.prototype.anonymizeString=function(a,b){for(var c=[],d=0;d<a.length;d++){var g=a.charAt(d);0<=EditorUi.ignoredAnonymizedChars.indexOf(g)?c.push(g):isNaN(parseInt(g))?g.toLowerCase()!=g?c.push(String.fromCharCode(65+Math.round(25*Math.random()))):g.toUpperCase()!=g?c.push(String.fromCharCode(97+Math.round(25*Math.random()))):/\s/.test(g)? -c.push(" "):c.push("?"):c.push(b?"0":Math.round(9*Math.random()))}return c.join("")};EditorUi.prototype.anonymizePatch=function(a){if(null!=a[EditorUi.DIFF_INSERT])for(var c=0;c<a[EditorUi.DIFF_INSERT].length;c++)try{var b=mxUtils.parseXml(a[EditorUi.DIFF_INSERT][c].data).documentElement.cloneNode(!1);null!=b.getAttribute("name")&&b.setAttribute("name",this.anonymizeString(b.getAttribute("name")));a[EditorUi.DIFF_INSERT][c].data=mxUtils.getXml(b)}catch(m){a[EditorUi.DIFF_INSERT][c].data=m.message}if(null!= -a[EditorUi.DIFF_UPDATE]){for(var d in a[EditorUi.DIFF_UPDATE]){var f=a[EditorUi.DIFF_UPDATE][d];null!=f.name&&(f.name=this.anonymizeString(f.name));null!=f.cells&&(c=mxUtils.bind(this,function(a){var c=f.cells[a];if(null!=c){for(var b in c)null!=c[b].value&&(c[b].value="["+c[b].value.length+"]"),null!=c[b].style&&(c[b].style="["+c[b].style.length+"]"),null!=c[b].geometry&&(c[b].geometry="["+c[b].geometry.length+"]"),0==Object.keys(c[b]).length&&delete c[b];0==Object.keys(c).length&&delete f.cells[a]}}), -c(EditorUi.DIFF_INSERT),c(EditorUi.DIFF_UPDATE),0==Object.keys(f.cells).length&&delete f.cells);0==Object.keys(f).length&&delete a[EditorUi.DIFF_UPDATE][d]}0==Object.keys(a[EditorUi.DIFF_UPDATE]).length&&delete a[EditorUi.DIFF_UPDATE]}return a};EditorUi.prototype.anonymizeAttributes=function(a,b){if(null!=a.attributes)for(var c=0;c<a.attributes.length;c++)"as"!=a.attributes[c].name&&a.setAttribute(a.attributes[c].name,this.anonymizeString(a.attributes[c].value,b));if(null!=a.childNodes)for(c=0;c< -a.childNodes.length;c++)this.anonymizeAttributes(a.childNodes[c],b)};EditorUi.prototype.anonymizeNode=function(a,b){for(var c=a.getElementsByTagName("mxCell"),d=0;d<c.length;d++)null!=c[d].getAttribute("value")&&c[d].setAttribute("value","["+c[d].getAttribute("value").length+"]"),null!=c[d].getAttribute("style")&&c[d].setAttribute("style","["+c[d].getAttribute("style").length+"]"),null!=c[d].parentNode&&"root"!=c[d].parentNode.nodeName&&null!=c[d].parentNode.parentNode&&(c[d].setAttribute("id",c[d].parentNode.getAttribute("id")), -c[d].parentNode.parentNode.replaceChild(c[d],c[d].parentNode));c=a.getElementsByTagName("mxGeometry");for(d=0;d<c.length;d++)this.anonymizeAttributes(c[d],b);return a};EditorUi.prototype.synchronizeCurrentFile=function(a){var c=this.getCurrentFile();null!=c&&(c.savingFile?this.handleError({message:mxResources.get("busy")}):!a&&c.invalidChecksum?c.handleFileError(null,!0):this.spinner.spin(document.body,mxResources.get("updatingDocument"))&&(c.clearAutosave(),this.editor.setStatus(""),a?c.reloadFile(mxUtils.bind(this, -function(){c.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){c.handleFileError(a,!0)})):c.synchronizeFile(mxUtils.bind(this,function(){c.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){c.handleFileError(a,!0)}))))};EditorUi.prototype.getFileData=function(a,b,d,f,t,m,r,k,v){t=null!=t?t:!0;r=null!=r?r:this.getXmlFileData(t,null!=m?m:!1);v=null!=v?v:this.getCurrentFile();m=this.editor.graph;if(null!=this.pages&&this.currentPage!=this.pages[0]&& -(b||!a&&null!=v&&/(\.svg)$/i.test(v.getTitle()))){m=this.createTemporaryGraph(m.getStylesheet());var c=m.getGlobalVariable,g=this.pages[0];m.getGlobalVariable=function(a){return"page"==a?g.getName():"pagenumber"==a?1:c.apply(this,arguments)};document.body.appendChild(m.container);m.model.setRoot(g.root)}a=this.createFileData(r,m,v,window.location.href,a,b,d,f,t,k);m!=this.editor.graph&&m.container.parentNode.removeChild(m.container);return a};EditorUi.prototype.getHtml=function(a,b,d,f,t,m){m=null!= -m?m:!0;var c=null,g="https://www.draw.io/js/embed-static.min.js";if(null!=b){var c=m?b.getGraphBounds():b.getBoundingBox(b.getSelectionCells()),h=b.view.scale;m=Math.floor(c.x/h-b.view.translate.x);h=Math.floor(c.y/h-b.view.translate.y);c=b.background;null==t&&(b=this.getBasenames().join(";"),0<b.length&&(g="https://www.draw.io/embed.js?s="+b));a.setAttribute("x0",m);a.setAttribute("y0",h)}null!=a&&(a.setAttribute("pan","1"),a.setAttribute("zoom","1"),a.setAttribute("resize","0"),a.setAttribute("fit", -"0"),a.setAttribute("border","20"),a.setAttribute("links","1"),null!=f&&a.setAttribute("edit",f));null!=t&&(t=t.replace(/&/g,"&"));a=null!=a?this.editor.graph.zapGremlins(mxUtils.getXml(a)):"";f=this.editor.graph.compress(a);this.editor.graph.decompress(f)!=a&&(f=encodeURIComponent(a));return(null==t?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=t?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null== -t?null!=d?"<title>"+mxUtils.htmlEntities(d)+"</title>\n":"":"<title>Draw.io Diagram</title>\n")+(null!=t?'<meta http-equiv="refresh" content="0;URL=\''+t+"'\"/>\n":"")+"</head>\n<body"+(null==t&&null!=c&&c!=mxConstants.NONE?' style="background-color:'+c+';">':">")+'\n<div class="mxgraph" style="position:relative;overflow:auto;width:100%;">\n<div style="width:1px;height:1px;overflow:hidden;">'+f+"</div>\n</div>\n"+(null==t?'<script type="text/javascript" src="'+g+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+ -t+'" target="_blank"><img border="0" src="https://www.draw.io/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(a,b,d,f,t){null!=t&&(t=t.replace(/&/g,"&"));a={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,resize:!0,xml:this.editor.graph.zapGremlins(a),toolbar:"pages zoom layers lightbox"};null!=this.pages&&null!=this.currentPage&&(a.page=mxUtils.indexOf(this.pages,this.currentPage));return(null==t?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n': -"")+"<!DOCTYPE html>\n<html"+(null!=t?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==t?null!=d?"<title>"+mxUtils.htmlEntities(d)+"</title>\n":"":"<title>Draw.io Diagram</title>\n")+(null!=t?'<meta http-equiv="refresh" content="0;URL=\''+t+"'\"/>\n":"")+'<meta charset="utf-8"/>\n</head>\n<body>\n<div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(a))+'"></div>\n'+(null==t?'<script type="text/javascript" src="https://www.draw.io/js/viewer.min.js">\x3c/script>': -'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+t+'" target="_blank"><img border="0" src="https://www.draw.io/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.setFileData=function(a){a=this.validateFileData(a);this.pages=this.fileNode=this.currentPage=null;a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement:null;var c=null!=a?a.getElementsByTagName("parsererror"):null;if(null!=c&&0<c.length)throw a=mxResources.get("invalidOrMissingFile"), -c=c[0].getElementsByTagName("div"),0<c.length&&(a=mxUtils.getTextContent(c[0])),Error(a);c=null!=a?this.editor.extractGraphModel(a,!0):null;null!=c&&(a=c);if(null!=a&&"mxfile"==a.nodeName&&(c=a.getElementsByTagName("diagram"),"0"!=urlParams.pages||1<c.length||1==c.length&&c[0].hasAttribute("name"))){this.fileNode=a;this.pages=[];for(a=0;a<c.length;a++){null==c[a].getAttribute("id")&&c[a].setAttribute("id",a);var b=new DiagramPage(c[a]);null==b.getName()&&b.setName(mxResources.get("pageWithNumber", -[a+1]));this.pages.push(b)}this.currentPage=this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];a=this.currentPage.node}"0"!=urlParams.pages&&null==this.fileNode&&null!=a&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(a);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root)}; -EditorUi.prototype.getBaseFilename=function(a){var c=this.getCurrentFile(),c=null!=c&&null!=c.getTitle()?c.getTitle():this.defaultFilename;if(/(\.xml)$/i.test(c)||/(\.html)$/i.test(c)||/(\.svg)$/i.test(c)||/(\.png)$/i.test(c))c=c.substring(0,c.lastIndexOf("."));!a&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&0<this.currentPage.getName().length&&(c=c+"-"+this.currentPage.getName());return c};EditorUi.prototype.downloadFile=function(a, -b,d,f,t,m,r){try{f=null!=f?f:this.editor.graph.isSelectionEmpty();var c=this.getBaseFilename(!t),g=c+"."+a;if("xml"==a){var h='<?xml version="1.0" encoding="UTF-8"?>\n'+(b?mxUtils.getXml(this.editor.getGraphXml(f)):this.getFileData(!0,null,null,null,f,t));this.saveData(g,a,h,"text/xml")}else if("html"==a)h=this.getHtml2(this.getFileData(!0),this.editor.graph,c),this.saveData(g,a,h,"text/html");else if("svg"!=a&&"xmlsvg"!=a||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==a?g= -c+".png":"jpeg"==a&&(g=c+".jpg"),this.saveRequest(g,a,mxUtils.bind(this,function(c,b){try{var d=this.editor.graph.pageVisible;null!=m&&(this.editor.graph.pageVisible=m);var g=this.createDownloadRequest(c,a,f,b,r,t);this.editor.graph.pageVisible=d;return g}catch(z){this.handleError(z)}}));else{var l=null,k=mxUtils.bind(this,function(a){a.length<=MAX_REQUEST_SIZE?this.saveData(g,"svg",a,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this, -function(){mxUtils.popup(l)}))});if("svg"==a){var n=this.editor.graph.background;if(r||n==mxConstants.NONE)n=null;var p=this.editor.graph.getSvg(n,null,null,null,null,f);d&&this.editor.graph.addSvgShadow(p);this.convertImages(p,mxUtils.bind(this,mxUtils.bind(this,function(a){this.spinner.stop();k('<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a))})))}else g=c+".svg",l=this.getFileData(!1, -!0,null,mxUtils.bind(this,function(a){this.spinner.stop();k(a)}),f)}}catch(Q){this.handleError(Q)}};EditorUi.prototype.createDownloadRequest=function(a,b,d,f,t,m){var c=this.editor.graph.getGraphBounds();d=this.getFileData(!0,null,null,null,d,0==m?!1:"xmlpng"!=b);var g="",h="";if(c.width*c.height>MAX_AREA||d.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};c="0";"pdf"==b&&0==m&&(h="&allPages=1");if("xmlpng"==b&&(c="1",b="png",null!=this.pages&&null!=this.currentPage))for(m= -0;m<this.pages.length;m++)if(this.pages[m]==this.currentPage){g="&from="+m;break}m=this.editor.graph.background;"png"==b&&t&&(m=mxConstants.NONE);return new mxXmlRequest(EXPORT_URL,"format="+b+g+h+"&bg="+(null!=m?m:mxConstants.NONE)+"&base64="+f+"&embedXml="+c+"&xml="+encodeURIComponent(d)+(null!=a?"&filename="+encodeURIComponent(a):""))};EditorUi.prototype.setMode=function(a,b){this.mode=a};EditorUi.prototype.loadDescriptor=function(a,b,d){var c=window.location.hash,g=mxUtils.bind(this,function(d){var g= -null!=a.data?a.data:"";null!=d&&0<d.length&&(0<g.length&&(g+="\n"),g+=d);d=new LocalFile(this,"csv"!=a.format&&0<g.length?g:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);d.getHash=function(){return c};this.fileLoaded(d);"csv"==a.format&&this.importCsv(g,mxUtils.bind(this,function(a){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=a.update){var f=null!=a.interval?parseInt(a.interval):6E4,h=null, -l=mxUtils.bind(this,function(){var c=this.currentPage;mxUtils.post(a.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(a){c===this.currentPage&&(200<=a.getStatus()&&300>=a.getStatus()?(this.updateDiagram(a.getText()),m()):this.handleError({message:mxResources.get("error")+" "+a.getStatus()}))}),mxUtils.bind(this,function(a){this.handleError(a)}))}),m=mxUtils.bind(this,function(){window.clearTimeout(h);h=window.setTimeout(l,f)});this.editor.addListener("pageSelected", -mxUtils.bind(this,function(){m();l()}));m();l()}null!=b&&b()});if(null!=a.url&&0<a.url.length){var f=a.url;/^https?:\/\//.test(f)&&!this.isCorsEnabledForUrl(f)&&(f=PROXY_URL+"?url="+encodeURIComponent(f));this.loadUrl(f,mxUtils.bind(this,function(a){g(a)}),mxUtils.bind(this,function(a){null!=d&&d(a)}))}else g("")};EditorUi.prototype.updateDiagram=function(a){function c(a){var c=new mxCellOverlay(a.image||f.warningImage,a.tooltip,a.align,a.valign,a.offset);c.addListener(mxEvent.CLICK,function(c,b){d.alert(a.tooltip)}); -return c}var b=null,d=this;if(null!=a&&0<a.length&&(b=mxUtils.parseXml(a),a=null!=b?b.documentElement:null,null!=a&&"updates"==a.nodeName)){var f=this.editor.graph,m=f.getModel();m.beginUpdate();var r=null;try{for(a=a.firstChild;null!=a;){if("update"==a.nodeName){var k=m.getCell(a.getAttribute("id"));if(null!=k){try{var v=a.getAttribute("value");if(null!=v){var n=mxUtils.parseXml(v).documentElement;if(null!=n)if("1"==n.getAttribute("replace-value"))m.setValue(k,n);else for(var p=n.attributes,u=0;u< -p.length;u++)f.setAttributeForCell(k,p[u].nodeName,0<p[u].nodeValue.length?p[u].nodeValue:null)}}catch(B){null!=window.console&&console.log("Error in value for "+k.id+": "+B)}try{var q=a.getAttribute("style");null!=q&&f.model.setStyle(k,q)}catch(B){null!=window.console&&console.log("Error in style for "+k.id+": "+B)}try{var F=a.getAttribute("icon");if(null!=F){var w=0<F.length?JSON.parse(F):null;null!=w&&w.append||f.removeCellOverlays(k);null!=w&&f.addCellOverlay(k,c(w))}}catch(B){null!=window.console&& -console.log("Error in icon for "+k.id+": "+B)}try{var G=a.getAttribute("geometry");if(null!=G){var G=JSON.parse(G),I=f.getCellGeometry(k);if(null!=I){I=I.clone();for(key in G){var M=parseFloat(G[key]);"dx"==key?I.x+=M:"dy"==key?I.y+=M:"dw"==key?I.width+=M:"dh"==key?I.height+=M:I[key]=parseFloat(G[key])}f.model.setGeometry(k,I)}}}catch(B){null!=window.console&&console.log("Error in icon for "+k.id+": "+B)}}}else if("model"==a.nodeName){for(var z=a.firstChild;null!=z&&z.nodeType!=mxConstants.NODETYPE_ELEMENT;)z= -z.nextSibling;null!=z&&(new mxCodec(a.firstChild)).decode(z,m)}else if("view"==a.nodeName){if(a.hasAttribute("scale")&&(f.view.scale=parseFloat(a.getAttribute("scale"))),a.hasAttribute("dx")||a.hasAttribute("dy"))f.view.translate=new mxPoint(parseFloat(a.getAttribute("dx")||0),parseFloat(a.getAttribute("dy")||0))}else"fit"==a.nodeName&&(r=a.hasAttribute("max-scale")?parseFloat(a.getAttribute("max-scale")):1);a=a.nextSibling}}finally{m.endUpdate()}null!=r&&this.chromelessResize&&this.chromelessResize(!0, -r)}return b};EditorUi.prototype.getCopyFilename=function(a,b){var c=null!=a&&null!=a.getTitle()?a.getTitle():this.defaultFilename,d="",g=c.lastIndexOf(".");0<=g&&(d=c.substring(g),c=c.substring(0,g));if(b)var f=new Date,g=f.getFullYear(),r=f.getMonth()+1,k=f.getDate(),v=f.getHours(),n=f.getMinutes(),f=f.getSeconds(),c=c+(" "+(g+"-"+r+"-"+k+"-"+v+"-"+n+"-"+f));return c=mxResources.get("copyOf",[c])+d};EditorUi.prototype.fileLoaded=function(a){var c=this.getCurrentFile();this.fileLoadedError=null;this.setCurrentFile(null); -var b=!1;this.hideDialog();null!=c&&(c.removeListener(this.descriptorChangedListener),c.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var d=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=c&&this.updateDocumentTitle();this.editor.graph.model.clear();this.editor.undoManager.clear();this.setBackgroundImage(null);null!=window.location.hash&&0<window.location.hash.length&&(window.location.hash="");null!=this.fname&&(this.fnameWrapper.style.display= -"none",this.fname.innerHTML="",this.fname.setAttribute("title",mxResources.get("rename")));this.editor.setStatus("");this.updateUi();this.showSplash()});if(null!=a)try{mxClient.IS_SF&&"min"==uiTheme&&(this.diagramContainer.style.visibility="");this.setCurrentFile(a);a.addListener("descriptorChanged",this.descriptorChangedListener);a.addListener("contentChanged",this.descriptorChangedListener);a.open();this.setGraphEnabled(!0);this.setMode(a.getMode());this.editor.graph.model.prefix=Editor.guid()+ -"-";this.editor.undoManager.clear();this.descriptorChanged();this.updateUi();a.isEditable()?a.isModified()?(a.addUnsavedStatus(),null!=a.backupPatch&&a.patch([a.backupPatch])):this.editor.setStatus(""):this.editor.setStatus('<span class="geStatusAlert" style="margin-left:8px;">'+mxUtils.htmlEntities(mxResources.get("readOnly"))+"</span>");!this.editor.isChromelessView()||this.editor.editable?(this.editor.graph.selectUnlockedLayer(),this.showLayersDialog(),this.restoreLibraries(),window.self!==window.top&& -window.focus()):this.editor.graph.isLightboxView()&&this.lightboxFit();this.chromelessResize&&this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));b=!0;this.isOffline()||null==a.getMode()||EditorUi.logEvent({category:"File",action:"open",label:a.getMode()+"."+a.getSize()});if(this.editor.editable&&this.mode==a.getMode()&&a.getMode()!=App.MODE_DEVICE&&null!=a.getMode())try{this.addRecent({id:a.getHash(),title:a.getTitle(),mode:a.getMode()})}catch(t){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+ -1),mxSettings.save()}catch(t){}}catch(t){this.fileLoadedError=t;null!=window.console&&console.log("error in fileLoaded:",a,t);if(EditorUi.enableLogging&&!this.isOffline())try{(new Image).src=(null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"")+"/log?v="+encodeURIComponent(EditorUi.VERSION)+"&msg=errorInFileLoaded:url:"+encodeURIComponent(window.location.href)+(null!=t&&null!=t.message?":err:"+encodeURIComponent(t.message):"")+(null!=t&&null!=t.stack?"&stack="+encodeURIComponent(t.stack):"")}catch(m){}this.handleError(t, -mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=c?this.fileLoaded(c):d()}),!0)}else d();return b};EditorUi.prototype.isActive=function(){return this.editor.graph.isEditing()||this.editor.graph.isMouseDown||null!=this.dialog};EditorUi.prototype.runWhenIdle=function(a){if(this.isActive()){var c=mxUtils.bind(this,function(){this.isActive()||(this.editor.graph.removeMouseListener(b), -this.editor.removeListener("hideDialog",c),this.editor.graph.removeListener(c),null!=window.requestAnimationFrame?window.requestAnimationFrame(a):a())}),b={mouseDown:function(){},mouseMove:function(){},mouseUp:c};this.editor.graph.addListener(mxEvent.EDITING_STOPPED,c);this.editor.graph.addListener(mxEvent.ESCAPE,c);this.editor.graph.addMouseListener(b);this.editor.addListener("hideDialog",c)}else null!=window.requestAnimationFrame?window.requestAnimationFrame(a):a()};EditorUi.prototype.getHashValueForPages= -function(a,b){var c=0,d=new mxGraphModel,g=new mxCodec;null!=b&&(b.byteCount=0,b.attrCount=0,b.eltCount=0,b.nodeCount=0);for(var f=0;f<a.length;f++){this.updatePageRoot(a[f]);var r=a[f].node.cloneNode(!1);r.removeAttribute("name");d.root=a[f].root;var k=g.encode(d);this.editor.graph.saveViewState(a[f].viewState,k,!0);k.removeAttribute("pageWidth");k.removeAttribute("pageHeight");r.appendChild(k);null!=b&&(b.eltCount+=r.getElementsByTagName("*").length,b.nodeCount+=r.getElementsByTagName("mxCell").length); -c=(c<<5)-c+this.hashValue(r,function(a,c,b,d){return!d||"mxGeometry"!=a.nodeName&&"mxPoint"!=a.nodeName||"x"!=c&&"y"!=c&&"width"!=c&&"height"!=c?d&&"mxCell"==a.nodeName&&"previous"==c?null:b:Math.round(b)},b)<<0}return c};EditorUi.prototype.hashValue=function(a,b,d){var c=0;if(null!=a&&"object"===typeof a&&"number"===typeof a.nodeType&&"string"===typeof a.nodeName&&"function"===typeof a.getAttribute){null!=a.nodeName&&(c^=this.hashValue(a.nodeName,b,d));if(null!=a.attributes){null!=d&&(d.attrCount+= -a.attributes.length);for(var g=0;g<a.attributes.length;g++){var f=a.attributes[g].name,h=null!=b?b(a,f,a.attributes[g].value,!0):a.attributes[g].value;null!=h&&(c^=this.hashValue(f,b,d)+this.hashValue(h,b,d))}}if(null!=a.childNodes)for(g=0;g<a.childNodes.length;g++)c=(c<<5)-c+this.hashValue(a.childNodes[g],b,d)<<0}else if(null!=a&&"function"!==typeof a){a=String(a);b=0;null!=d&&(d.byteCount+=a.length);for(g=0;g<a.length;g++)b=(b<<5)-b+a.charCodeAt(g)<<0;c^=b}return c};EditorUi.prototype.descriptorChanged= -function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary=function(a,b,d,f,t,m,r){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||mxClient.IS_CHROMEAPP};EditorUi.prototype.toggleScratchpad=function(){this.isScratchpadEnabled()&&(null==this.scratchpad?this.getLocalData(".scratchpad",mxUtils.bind(this,function(a){null==a&&(a=this.emptyLibraryXml);this.loadLibrary(new StorageLibrary(this,a,".scratchpad"))})):this.closeLibrary(this.scratchpad))}; -EditorUi.prototype.createLibraryDataFromImages=function(a){var c=mxUtils.createXmlDocument(),b=c.createElement("mxlibrary");mxUtils.setTextContent(b,JSON.stringify(a));c.appendChild(b);return mxUtils.getXml(c)};EditorUi.prototype.closeLibrary=function(a){null!=a&&(this.removeLibrarySidebar(a.getHash()),a.constructor!=LocalLibrary&&mxSettings.removeCustomLibrary(a.getHash()),".scratchpad"==a.title&&(this.scratchpad=null))};EditorUi.prototype.removeLibrarySidebar=function(a){var c=this.sidebar.palettes[a]; -if(null!=c){for(var b=0;b<c.length;b++)c[b].parentNode.removeChild(c[b]);delete this.sidebar.palettes[a]}};EditorUi.prototype.repositionLibrary=function(a){var c=this.sidebar.container;if(null==a){var b=this.sidebar.palettes["L.scratchpad"];null==b&&(b=this.sidebar.palettes.search);null!=b&&(a=b[b.length-1].nextSibling)}a=null!=a?a:c.firstChild.nextSibling.nextSibling;var b=c.lastChild,d=b.previousSibling;c.insertBefore(b,a);c.insertBefore(d,b)};EditorUi.prototype.loadLibrary=function(a){var c=mxUtils.parseXml(a.getData()); -if("mxlibrary"==c.documentElement.nodeName){var b=JSON.parse(mxUtils.getTextContent(c.documentElement));this.libraryLoaded(a,b,c.documentElement.getAttribute("title"))}else throw{message:mxResources.get("notALibraryFile")};};EditorUi.prototype.getLibraryStorageHint=function(a){return""};EditorUi.prototype.libraryLoaded=function(a,b,d){if(null!=this.sidebar){a.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(a.getHash());".scratchpad"==a.title&&(this.scratchpad=a);var c=this.sidebar.palettes[a.getHash()], -c=null!=c?c[c.length-1].nextSibling:null;this.removeLibrarySidebar(a.getHash());var f=null,g=mxUtils.bind(this,function(c,b){0==c.length&&a.isEditable()?(null==f&&(f=document.createElement("div"),mxUtils.setPrefixedStyle(f.style,"borderRadius","6px"),f.style.border="3px dotted lightGray",f.style.textAlign="center",f.style.padding="8px",f.style.color="#B3B3B3",mxUtils.write(f,mxResources.get("dragElementsHere"))),b.appendChild(f)):this.addLibraryEntries(c,b)});if(null!=this.sidebar&&null!=b)for(var h= -0;h<b.length;h++)mxUtils.bind(this,function(a){var c=a.data;null!=c&&null!=a.title?this.sidebar.addEntry(a.title,mxUtils.bind(this,function(){c=this.convertDataUri(c);var b="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==a.aspect&&(b+="aspect=fixed;");return this.sidebar.createVertexTemplate(b+"image="+c,a.w,a.h,"",a.title||"",!1,!1,!0)})):null!=a.xml&&null!=a.title&&this.sidebar.addEntry(a.title,mxUtils.bind(this,function(){var c=this.stringToCells(this.editor.graph.decompress(a.xml)); -return this.sidebar.createVertexTemplateFromCells(c,a.w,a.h,a.title||"",!0,!1,!0)}))})(b[h]);d=null!=d&&0<d.length?d:a.getTitle();var k=this.sidebar.addPalette(a.getHash(),d,!0,mxUtils.bind(this,function(a){g(b,a)}));this.repositionLibrary(c);var v=k.parentNode.previousSibling;d=v.getAttribute("title");null!=d&&0<d.length&&".scratchpad"!=a.title&&v.setAttribute("title",this.getLibraryStorageHint(a)+"\n"+d);var n=document.createElement("div");n.style.position="absolute";n.style.right="0px";n.style.top= -"0px";n.style.padding="8px";mxClient.IS_QUIRKS||8==document.documentMode||(n.style.backgroundColor="inherit");v.style.position="relative";var p=document.createElement("img");p.setAttribute("src",Dialog.prototype.closeImage);p.setAttribute("title",mxResources.get("close"));p.setAttribute("valign","absmiddle");p.setAttribute("border","0");p.style.margin="0 3px";var u=null;if(".scratchpad"!=a.title||this.closableScratchpad)n.appendChild(p),mxEvent.addListener(p,"click",mxUtils.bind(this,function(c){if(!mxEvent.isConsumed(c)){var b= -mxUtils.bind(this,function(){this.closeLibrary(a)});null!=u?this.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b();mxEvent.consume(c)}}));if(a.isEditable()){var q=this.editor.graph,F=null,w=mxUtils.bind(this,function(c){this.showLibraryDialog(a.getTitle(),k,b,a,a.getMode());mxEvent.consume(c)}),G=mxUtils.bind(this,function(c){a.setModified(!0);a.isAutosave()?(null!=F&&null!=F.parentNode&&F.parentNode.removeChild(F),F=p.cloneNode(!1), -F.setAttribute("src",Editor.spinImage),F.setAttribute("title",mxResources.get("saving")),F.style.cursor="default",F.style.marginRight="2px",F.style.marginTop="-2px",n.insertBefore(F,n.firstChild),v.style.paddingRight=18*n.childNodes.length+"px",this.saveLibrary(a.getTitle(),b,a,a.getMode(),!0,!0,function(){null!=F&&null!=F.parentNode&&(F.parentNode.removeChild(F),v.style.paddingRight=18*n.childNodes.length+"px")})):null==u&&(u=p.cloneNode(!1),u.setAttribute("src",IMAGE_PATH+"/download.png"),u.setAttribute("title", -mxResources.get("save")),n.insertBefore(u,n.firstChild),mxEvent.addListener(u,"click",mxUtils.bind(this,function(c){this.saveLibrary(a.getTitle(),b,a,a.getMode(),a.constructor==LocalLibrary,!0,function(){null==u||a.isModified()||(v.style.paddingRight=18*n.childNodes.length+"px",u.parentNode.removeChild(u),u=null)});mxEvent.consume(c)})),v.style.paddingRight=18*n.childNodes.length+"px")}),I=mxUtils.bind(this,function(a,c,d,g){a=q.cloneCells(mxUtils.sortCells(q.model.getTopmostCells(a)));for(var h= -0;h<a.length;h++){var l=q.getCellGeometry(a[h]);null!=l&&l.translate(-c.x,-c.y)}k.appendChild(this.sidebar.createVertexTemplateFromCells(a,c.width,c.height,g||"",!0,!1,!1));a={xml:this.editor.graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(a))),w:c.width,h:c.height};null!=g&&(a.title=g);b.push(a);G(d);null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null)}),M=mxUtils.bind(this,function(a){if(q.isSelectionEmpty())q.getRubberband().isActive()?(q.getRubberband().execute(a), -q.getRubberband().reset()):this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var c=q.getSelectionCells(),b=q.view.getBounds(c),d=q.view.scale;b.x/=d;b.y/=d;b.width/=d;b.height/=d;b.x-=q.view.translate.x;b.y-=q.view.translate.y;I(c,b)}mxEvent.consume(a)});k.style.border="3px solid transparent";mxEvent.addGestureListeners(k,function(){},mxUtils.bind(this,function(a){q.isMouseDown&&null!=q.panningManager&&null!=q.graphHandler.shape&&(q.graphHandler.shape.node.style.visibility= -"hidden",null!=f?f.style.border="3px dotted rgb(254, 137, 12)":k.style.border="3px dotted rgb(254, 137, 12)",k.style.cursor="copy",q.panningManager.stop(),q.autoScroll=!1,null!=q.graphHandler.guide&&q.graphHandler.guide.setVisible(!1),null!=q.graphHandler.hint&&(q.graphHandler.hint.style.visibility="hidden"),mxEvent.consume(a))}),mxUtils.bind(this,function(a){q.isMouseDown&&null!=q.panningManager&&null!=q.graphHandler&&(k.style.border="3px solid transparent",null!=f&&(f.style.border="3px dotted lightGray"), -k.style.cursor="default",this.sidebar.showTooltips=!0,q.panningManager.stop(),q.graphHandler.reset(),q.isMouseDown=!1,q.autoScroll=!0,M(a),mxEvent.consume(a))}));mxEvent.addListener(k,"mouseleave",mxUtils.bind(this,function(a){q.isMouseDown&&null!=q.graphHandler.shape&&(q.graphHandler.shape.node.style.visibility="visible",k.style.border="3px solid transparent",k.style.cursor="",q.autoScroll=!0,null!=q.graphHandler.guide&&q.graphHandler.guide.setVisible(!0),null!=q.graphHandler.hint&&(q.graphHandler.hint.style.visibility= -"visible"),null!=f&&(f.style.border="3px dotted lightGray"))}));Graph.fileSupport&&(mxEvent.addListener(k,"dragover",mxUtils.bind(this,function(a){null!=f?f.style.border="3px dotted rgb(254, 137, 12)":k.style.border="3px dotted rgb(254, 137, 12)";a.dataTransfer.dropEffect="copy";k.style.cursor="copy";this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()})),mxEvent.addListener(k,"drop",mxUtils.bind(this,function(a){k.style.border="3px solid transparent";k.style.cursor="";null!=f&&(f.style.border= -"3px dotted lightGray");0<a.dataTransfer.files.length&&this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(c,d,h,l,m,r,t,v,n){if(null!=c&&"image/"==d.substring(0,6))c="shape=image;verticalLabelPosition=bottom;verticalAlign=top;aspect=fixed;image="+this.convertDataUri(c),c=[new mxCell("",new mxGeometry(0,0,m,r),c)],c[0].vertex=!0,I(c,new mxRectangle(0,0,m,r),a,mxEvent.isAltDown(a)?null:t.substring(0,t.lastIndexOf(".")).replace(/_/g," ")),null!=f&&null!=f.parentNode&& -0<b.length&&(f.parentNode.removeChild(f),f=null);else{var u=!1,x=mxUtils.bind(this,function(c,d){if(null!=c&&"text/xml"==d){var h=mxUtils.parseXml(c);if("mxlibrary"==h.documentElement.nodeName)try{var l=JSON.parse(mxUtils.getTextContent(h.documentElement));g(l,k);b=b.concat(l);G(a);this.spinner.stop();u=!0}catch(E){}else if("mxfile"==h.documentElement.nodeName)try{for(var m=h.documentElement.getElementsByTagName("diagram"),h=0;h<m.length;h++){var l=mxUtils.getTextContent(m[h]),r=this.stringToCells(this.editor.graph.decompress(l)), -t=this.editor.graph.getBoundingBoxFromGeometry(r);I(r,new mxRectangle(0,0,t.width,t.height),a)}u=!0}catch(E){null!=window.console&&console.log("error in drop handler:",E)}}u||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null)});null!=n&&null!=t&&(/(\.v(dx|sdx?))($|\?)/i.test(t)||/(\.vs(x|sx?))($|\?)/i.test(t))?this.importVisio(n,function(a){x(a,"text/xml")},null,t):!this.isOffline()&&(new XMLHttpRequest).upload&& -this.isRemoteFileFormat(c,t)&&null!=n?this.parseFile(n,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?x(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):x(c,d)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(k,"dragleave",function(a){null!=f?f.style.border="3px dotted lightGray":(k.style.border="3px solid transparent", -k.style.cursor="");a.stopPropagation();a.preventDefault()}));p=p.cloneNode(!1);p.setAttribute("src",Editor.editImage);p.setAttribute("title",mxResources.get("edit"));n.insertBefore(p,n.firstChild);mxEvent.addListener(p,"click",w);mxEvent.addListener(k,"dblclick",function(a){mxEvent.getSource(a)==k&&w(a)});d=p.cloneNode(!1);d.setAttribute("src",Editor.plusImage);d.setAttribute("title",mxResources.get("add"));n.insertBefore(d,n.firstChild);mxEvent.addListener(d,"click",M);this.isOffline()||".scratchpad"!= -a.title||null==EditorUi.scratchpadHelpLink||(d=document.createElement("span"),d.setAttribute("title",mxResources.get("help")),d.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;",mxUtils.write(d,"?"),mxEvent.addGestureListeners(d,mxUtils.bind(this,function(a){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(a)})),n.insertBefore(d,n.firstChild))}v.appendChild(n);v.style.paddingRight=18*n.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(a,b){for(var c= -0;c<a.length;c++){var d=a[c],f=d.data;if(null!=f){var f=this.convertDataUri(f),g="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==d.aspect&&(g+="aspect=fixed;");b.appendChild(this.sidebar.createVertexTemplate(g+"image="+f,d.w,d.h,"",d.title||"",!1,!1,!0))}else null!=d.xml&&(f=this.stringToCells(this.editor.graph.decompress(d.xml)),0<f.length&&b.appendChild(this.sidebar.createVertexTemplateFromCells(f,d.w,d.h,d.title||"",!0,!1,!0)))}};EditorUi.prototype.getResource= -function(a){return null!=a?a[mxLanguage]||a.main:null};EditorUi.prototype.footerHeight=0;"1"==urlParams.offline||EditorUi.isElectronApp||("1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64),EditorUi.prototype.createFooter=function(){return document.getElementById("geFooter")});EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground=mxClient.IS_QUIRKS? -"none":"linear-gradient(rgb(255, 255, 255) 0px, rgb(242, 242, 242) 100%)",Toolbar.prototype.selectedBackground="rgb(242, 242, 242)"),Editor.prototype.initialTopSpacing=3,EditorUi.prototype.menubarHeight=41,EditorUi.prototype.toolbarHeight=38,EditorUi.prototype.hsplitPosition=188,Sidebar.prototype.thumbWidth=46,Sidebar.prototype.thumbHeight=46,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2):"dark"==uiTheme&&(mxClient.link("stylesheet",STYLE_PATH+"/dark.css"), -Dialog.backdropColor="#2a2a2a",Graph.prototype.defaultThemeName="darkTheme",Graph.prototype.defaultPageBackgroundColor="#2a2a2a",Graph.prototype.defaultPageBorderColor="#505759",Graph.prototype.svgShadowColor="#e0e0e0",Graph.prototype.svgShadowOpacity="0.6",Graph.prototype.svgShadowSize="0.8",Graph.prototype.svgShadowBlur="1.4",Format.prototype.inactiveTabBackgroundColor="black",BaseFormatPanel.prototype.buttonBackgroundColor="#2a2a2a",Sidebar.prototype.dragPreviewBorder="1px dashed #cccccc",mxGraphHandler.prototype.previewColor= -"#cccccc",StyleFormatPanel.prototype.defaultStrokeColor="#cccccc",mxClient.IS_SVG&&(Editor.helpImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAP1BMVEUAAAD///////////////////////////////////////////////////////////////////////////////9Du/pqAAAAFXRSTlMAT30qCJRBboyDZyCgRzUUdF46MJlgXETgAAAAeklEQVQY022O2w4DIQhEQUURda/9/28tUO2+7CQS5sgQ4F1RapX78YUwRqQjTU8ILqQfKerTKTvACJ4nLX3krt+8aS82oI8aQC4KavRgtvEW/mDvsICgA03PSGRr79MqX1YPNIxzjyqtw8ZnnRo4t5a5undtJYRywau+ds4Cyza3E6YAAAAASUVORK5CYII=", -Editor.checkmarkImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAMAAACeyVWkAAAARVBMVEUAAACZmZkICAgEBASNjY2Dg4MYGBiTk5N5eXl1dXVmZmZQUFBCQkI3NzceHh4MDAykpKSJiYl+fn5sbGxaWlo/Pz8SEhK96uPlAAAAAXRSTlMAQObYZgAAAE5JREFUGNPFzTcSgDAQQ1HJGUfy/Y9K7V1qeOUfzQifCQZai1XHaz11LFysbDbzgDSSWMZiETz3+b8yNUc/MMsktxuC8XQBSncdLwz+8gCCggGXzBcozAAAAABJRU5ErkJggg=="))};EditorUi.initTheme();EditorUi.prototype.hideFooter=function(){var a=document.getElementById("geFooter");null!=a&&(this.footerHeight=0,a.style.display= -"none",this.refresh())};EditorUi.prototype.showFooter=function(a){var c=document.getElementById("geFooter");null!=c&&(this.footerHeight=a,c.style.display="inline",this.refresh())};EditorUi.prototype.showImageDialog=function(a,b,d,f,k){a=new ImageDialog(this,a,b,d,f,k);this.showDialog(a.container,Graph.fileSupport?440:360,Graph.fileSupport?200:90,!0,!0);a.init()};EditorUi.prototype.showBackgroundImageDialog=function(a){a=null!=a?a:mxUtils.bind(this,function(a){a=new ChangePageSetup(this,null,a);a.ignoreColor= -!0;this.editor.graph.model.execute(a)});var c=new BackgroundImageDialog(this,mxUtils.bind(this,function(c){a(c)}));this.showDialog(c.container,360,200,!0,!0);c.init()};EditorUi.prototype.showLibraryDialog=function(a,b,d,f,k){a=new LibraryDialog(this,a,b,d,f,k);this.showDialog(a.container,620,440,!0,!1,mxUtils.bind(this,function(a){a&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));a.init()};EditorUi.prototype.createSidebarFooterContainer=function(){var a=this.createDiv("geSidebarContainer"); -a.style.position="absolute";a.style.overflow="hidden";a.style.borderWidth="3px";var b=document.createElement("a");b.className="geTitle";b.style.height="100%";b.style.paddingTop="9px";b.innerHTML='<span style="font-size:18px;margin-right:5px;">+</span>';mxUtils.write(b,mxResources.get("moreShapes")+"...");mxEvent.addListener(b,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(b,"click",mxUtils.bind(this,function(a){this.actions.get("shapes").funct(); -mxEvent.consume(a)}));a.appendChild(b);return a};EditorUi.prototype.handleError=function(a,b,d,f){var c=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},g=null!=a&&null!=a.error?a.error:a;if(null!=g||null!=b){a=mxUtils.htmlEntities(mxResources.get("unknownError"));var h=mxResources.get("ok"),l=null;b=null!=b?b:mxResources.get("error");if(null!=g)if(null!=g.retry&&(h=mxResources.get("cancel"),l=function(){c();g.retry()}),404==g.code||404==g.status||403==g.code){a=403== -g.code?null!=g.message?mxUtils.htmlEntities(g.message):mxUtils.htmlEntities(mxResources.get("accessDenied")):mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied"));var k=window.location.hash;null!=k&&"#G"==k.substring(0,2)&&(k=k.substring(2),a+='<br><a href="https://drive.google.com/open?id='+k+'" target="_blank">'+mxUtils.htmlEntities(mxResources.get("tryOpeningViaThisPage"))+"</a>")}else null!=g.message?a=mxUtils.htmlEntities(g.message):null!=g.response&&null!=g.response.error?a=mxUtils.htmlEntities(g.response.error): -"undefined"!==window.App&&(g.code==App.ERROR_TIMEOUT?a=mxUtils.htmlEntities(mxResources.get("timeout")):g.code==App.ERROR_BUSY&&(a=mxUtils.htmlEntities(mxResources.get("busy"))));this.showError(b,a,h,d,l,null,null,null,null,null,null,null,f?d:null)}else null!=d&&d()};EditorUi.prototype.showError=function(a,b,d,f,k,m,r,n,v,p,q,u,A){a=new ErrorDialog(this,a,b,d||mxResources.get("ok"),f,k,m,r,u,n,v);this.showDialog(a.container,p||340,q||(null!=b&&120<b.length?180:150),!0,!1,A);a.init()};EditorUi.prototype.alert= -function(a,b){var c=new ErrorDialog(this,null,a,mxResources.get("ok"),b);this.showDialog(c.container,340,100,!0,!1);c.init()};EditorUi.prototype.confirm=function(a,b,d,f,k,m){var c=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){};a=new ConfirmDialog(this,a,function(){c();null!=b&&b()},function(){c();null!=d&&d()},f,k);this.showDialog(a.container,340,90,!0,m);a.init()};EditorUi.prototype.setCurrentFile=function(a){this.currentFile=a};EditorUi.prototype.getCurrentFile= -function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||!this.editor.graph.mathEnabled&&this.useCanvasForExport};EditorUi.prototype.createSvgDataUri=function(a){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(a)))};EditorUi.prototype.createImageDataUri=function(a,b,d){var c=a.toDataURL("image/"+d);if(6>=c.length||c==a.cloneNode(!1).toDataURL("image/"+d))throw{message:"Invalid image"};null!=b&&(c=this.writeGraphModelToPng(c, -"zTXt","mxGraphModel",atob(this.editor.graph.compress(b))));return c};EditorUi.prototype.saveCanvas=function(a,b,d){var c="jpeg"==d?"jpg":d,f=this.getBaseFilename()+"."+c;a=this.createImageDataUri(a,b,d);this.saveData(f,c,a.substring(a.lastIndexOf(",")+1),"image/"+d,!0)};EditorUi.prototype.isLocalFileSave=function(){return"remote"!=urlParams.save&&(mxClient.IS_IE||"undefined"!==typeof window.Blob&&"undefined"!==typeof window.URL)&&9!=document.documentMode&&8!=document.documentMode&&7!=document.documentMode&& -!mxClient.IS_QUIRKS||this.isOfflineApp()||mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(a,b){var c=new TextareaDialog(this,a,b,null,null,mxResources.get("close"));c.textarea.style.width="600px";c.textarea.style.height="380px";this.showDialog(c.container,620,460,!0,!0);c.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(a,b,d,f,k){if(window.Blob&&navigator.msSaveOrOpenBlob)a=f?this.base64ToBlob(a,d):new Blob([a],{type:d}),navigator.msSaveOrOpenBlob(a, -b);else if(mxClient.IS_IE)d=window.open("about:blank","_blank"),null==d?mxUtils.popup(a,!0):(d.document.write(a),d.document.close(),d.document.execCommand("SaveAs",!0,b),d.close());else{var c=document.createElement("a"),g=!mxClient.IS_SF&&0>navigator.userAgent.indexOf("PaleMoon/")&&"undefined"!==typeof c.download;if(mxClient.IS_GC)var h=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./),g=65==(h?parseInt(h[2],10):!1)?!1:g;if(g||this.isOffline()){c.href=URL.createObjectURL(f?this.base64ToBlob(a, -d):new Blob([a],{type:d}));g?c.download=b:c.setAttribute("target","_blank");document.body.appendChild(c);try{window.setTimeout(function(){URL.revokeObjectURL(c.href)},0),c.click(),c.parentNode.removeChild(c)}catch(v){}}else this.createEchoRequest(a,b,d,f,k).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(a,b,d,f,k,m){a="xml="+encodeURIComponent(a);return new mxXmlRequest(SAVE_URL,a+(null!=d?"&mime="+d:"")+(null!=k?"&format="+k:"")+(null!=m?"&base64="+m:"")+(null!=b?"&filename="+ -encodeURIComponent(b):"")+(f?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(a,b){b=b||"";for(var c=atob(a),d=c.length,f=Math.ceil(d/1024),g=Array(f),r=0;r<f;++r){for(var k=1024*r,v=Math.min(k+1024,d),n=Array(v-k),p=0;k<v;++p,++k)n[p]=c[k].charCodeAt(0);g[r]=new Uint8Array(n)}return new Blob(g,{type:b})};EditorUi.prototype.saveLocalFile=function(a,b,d,f,k,m,r){m=null!=m?m:!1;r=null!=r?r:"vsdx"!=k&&(!mxClient.IS_IOS||!navigator.standalone);k=this.getServiceCount(m);b=new CreateDialog(this, -b,mxUtils.bind(this,function(c,b){try{if("_blank"==b)if(null==d||"image/"!=d.substring(0,6)||"image/svg"==d.substring(0,9)&&!mxClient.IS_SVG){var g=window.open("about:blank");null==g?mxUtils.popup(a,!0):(g.document.write(mxUtils.htmlEntities(a,!1)),g.document.close())}else this.openInNewWindow(a,d,f);else b==App.MODE_DEVICE||"download"==b?this.doSaveLocalFile(a,c,d,f):null!=c&&0<c.length&&this.pickFolder(b,mxUtils.bind(this,function(g){try{this.exportFile(a,c,d,f,b,g)}catch(u){this.handleError(u)}}))}catch(y){this.handleError(y)}}), -mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,m,r,null,1<k,4<k&&(!m||6>k)?3:4,a,d,f);this.showDialog(b.container,420,1==k?160:4<k?390:270,!0,!0);b.init()};EditorUi.prototype.openInNewWindow=function(a,b,d){if(mxClient.IS_GC||mxClient.IS_EDGE||11==document.documentMode||10==document.documentMode){var c=window.open("about:blank");null==c?mxUtils.popup(a,!0):("image/svg+xml"==b?c.document.write("<html>"+a+"</html>"):c.document.write('<html><img src="data:'+ -b+(d?";base64,"+a:";charset=utf8,"+encodeURIComponent(a))+'"/></html>'),c.document.close())}else c=window.open("data:"+b+(d?";base64,"+a:";charset=utf8,"+encodeURIComponent(a))),null==c&&mxUtils.popup(a,!0)};var b=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.addChromelessToolbarItems=function(a){if(this.isExportToCanvas()){this.exportDialog=null;var c=a(mxUtils.bind(this,function(a){var b=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",b); -null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null)});if(null!=this.exportDialog)b.apply(this);else{this.exportDialog=document.createElement("div");var d=c.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";this.exportDialog.style.fontFamily="Helvetica,Arial";this.exportDialog.style.backgroundColor="#000000";this.exportDialog.style.width= -"50px";this.exportDialog.style.height="50px";this.exportDialog.style.padding="4px 2px 4px 2px";this.exportDialog.style.color="#ffffff";mxUtils.setOpacity(this.exportDialog,70);this.exportDialog.style.left=d.left+"px";this.exportDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";d=mxUtils.getCurrentStyle(this.editor.graph.container);this.exportDialog.style.zIndex=d.zIndex;var f=new Spinner({lines:8,length:6,width:5,radius:6,rotate:0,color:"#fff", -speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"28px",zIndex:2E9});f.spin(this.exportDialog);this.exportToCanvas(mxUtils.bind(this,function(a){f.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var c=this.createImageDataUri(a,null,"png");a=document.createElement("img");a.style.maxWidth="140px";a.style.maxHeight="140px";a.style.cursor="pointer";a.style.backgroundColor="white";a.setAttribute("title",mxResources.get("openInNewWindow")); -a.setAttribute("border","0");a.setAttribute("src",c);this.exportDialog.appendChild(a);mxEvent.addListener(a,"click",mxUtils.bind(this,function(){this.openInNewWindow(c.substring(c.indexOf(",")+1),"image/png",!0);b.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));mxEvent.addListener(this.editor.graph.container,"click",b);document.body.appendChild(this.exportDialog)}mxEvent.consume(a)}),Editor.cameraLargeImage,mxResources.get("export"))}b.apply(this, -arguments)};EditorUi.prototype.saveData=function(a,b,d,f,k){this.isLocalFileSave()?this.saveLocalFile(d,a,f,k,b):this.saveRequest(a,b,mxUtils.bind(this,function(a,c){return this.createEchoRequest(d,a,f,k,b,c)}),d,k,f)};EditorUi.prototype.saveRequest=function(a,b,d,f,k,m,r){r=null!=r?r:!mxClient.IS_IOS||!navigator.standalone;var c=this.getServiceCount(!1);a=new CreateDialog(this,a,mxUtils.bind(this,function(a,c){if("_blank"==c||null!=a&&0<a.length){var g=d("_blank"==c?null:a,c==App.MODE_DEVICE||"download"== -c||null==c||"_blank"==c?"0":"1");null!=g&&(c==App.MODE_DEVICE||"download"==c||"_blank"==c?g.simulate(document,"_blank"):this.pickFolder(c,mxUtils.bind(this,function(d){m=null!=m?m:"pdf"==b?"application/pdf":"image/"+b;if(null!=f)try{this.exportFile(f,a,m,!0,c,d)}catch(A){this.handleError(A)}else this.spinner.spin(document.body,mxResources.get("saving"))&&g.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=g.getStatus()&&299>=g.getStatus())try{this.exportFile(g.getText(),a,m,!0,c,d)}catch(A){this.handleError(A)}else this.handleError({message:mxResources.get("errorSavingFile")})}), -function(a){this.spinner.stop();this.handleError(a)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,r,null,1<c,4<c?3:4,f,m,k);this.showDialog(a.container,380,1==c?160:4<c?390:270,!0,!0);a.init()};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(a,b,d,f,k,m){};EditorUi.prototype.pickFolder=function(a,b,d){b(null)};EditorUi.prototype.exportSvg=function(a,b,d,f,k,m,r, -n,v,p){if(this.spinner.spin(document.body,mxResources.get("export"))){var c=this.editor.graph.isSelectionEmpty();d=null!=d?d:c;c=b?null:this.editor.graph.background;c==mxConstants.NONE&&(c=null);null==c&&0==b&&(c="#ffffff");var g=this.editor.graph.getSvg(c,a,r,n,null,d,null,null,"blank"==p?"_blank":"self"==p?"_top":null);f&&this.editor.graph.addSvgShadow(g,g);var h=this.getBaseFilename()+".svg",l=mxUtils.bind(this,function(a){this.spinner.stop();k&&a.setAttribute("content",this.getFileData(!0,null, -null,null,d,v));if(null!=this.editor.fontCss){var c=a.ownerDocument,c=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"style"):c.createElement("style");c.setAttribute("type","text/css");mxUtils.setTextContent(c,this.editor.fontCss);a.getElementsByTagName("defs")[0].appendChild(c)}var b='<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a);this.isLocalFileSave()||b.length<=MAX_REQUEST_SIZE?this.saveData(h,"svg",b,"image/svg+xml"): -this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});this.convertMath(this.editor.graph,g,!1,mxUtils.bind(this,function(){m?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.convertImages(g,l,this.thumbImageCache)):l(g)}))}};EditorUi.prototype.addRadiobox=function(a,b,d,f,k,m,r){return this.addCheckbox(a,d,f,k,m,r,!0,b)};EditorUi.prototype.addCheckbox=function(a,b,d,f,k,m,r,n){m=null!=m?m:!0;var c=document.createElement("input"); -c.style.marginRight="8px";c.style.marginTop="16px";c.setAttribute("type",r?"radio":"checkbox");r="geCheckbox-"+Editor.guid();c.id=r;null!=n&&c.setAttribute("name",n);d&&(c.setAttribute("checked","checked"),c.defaultChecked=!0);f&&c.setAttribute("disabled","disabled");m&&(a.appendChild(c),d=document.createElement("label"),mxUtils.write(d,b),d.setAttribute("for",r),a.appendChild(d),k||mxUtils.br(a));return c};EditorUi.prototype.addEditButton=function(a,b){var c=this.addCheckbox(a,mxResources.get("edit")+ -":",!0,null,!0);c.style.marginLeft="24px";var d=this.getCurrentFile(),f="";null!=d&&d.getMode()!=App.MODE_DEVICE&&d.getMode()!=App.MODE_BROWSER&&(f=window.location.href);var g=document.createElement("select");g.style.width="120px";g.style.marginLeft="8px";g.style.marginRight="10px";g.className="geBtn";d=document.createElement("option");d.setAttribute("value","blank");mxUtils.write(d,mxResources.get("makeCopy"));g.appendChild(d);d=document.createElement("option");d.setAttribute("value","custom");mxUtils.write(d, -mxResources.get("custom")+"...");g.appendChild(d);a.appendChild(g);mxEvent.addListener(g,"change",mxUtils.bind(this,function(){if("custom"==g.value){var a=new FilenameDialog(this,f,mxResources.get("ok"),function(a){null!=a?f=a:g.value="blank"},mxResources.get("url"),null,null,null,null,function(){g.value="blank"});this.showDialog(a.container,300,80,!0,!1);a.init()}}));mxEvent.addListener(c,"change",mxUtils.bind(this,function(){c.checked&&(null==b||b.checked)?g.removeAttribute("disabled"):g.setAttribute("disabled", -"disabled")}));mxUtils.br(a);return{getLink:function(){return c.checked?"blank"===g.value?"_blank":f:null},getEditInput:function(){return c},getEditSelect:function(){return g}}};EditorUi.prototype.addLinkSection=function(a,b){function c(){r.innerHTML='<div style="width:100%;height:100%;box-sizing:border-box;'+(null!=g&&g!=mxConstants.NONE?"border:1px solid black;background-color:"+g:"background-position:center center;background-repeat:no-repeat;background-image:url('"+Dialog.prototype.closeImage+ -"')")+';"></div>'}mxUtils.write(a,mxResources.get("links")+":");var d=document.createElement("select");d.style.width="100px";d.style.marginLeft="8px";d.style.marginRight="10px";d.className="geBtn";var f=document.createElement("option");f.setAttribute("value","auto");mxUtils.write(f,mxResources.get("automatic"));d.appendChild(f);f=document.createElement("option");f.setAttribute("value","blank");mxUtils.write(f,mxResources.get("openInNewWindow"));d.appendChild(f);f=document.createElement("option"); -f.setAttribute("value","self");mxUtils.write(f,mxResources.get("openInThisWindow"));d.appendChild(f);b&&(f=document.createElement("option"),f.setAttribute("value","frame"),mxUtils.write(f,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),d.appendChild(f));a.appendChild(d);mxUtils.write(a,mxResources.get("borderColor")+":");var g="#0000ff",r=null,r=mxUtils.button("",mxUtils.bind(this,function(a){this.pickColor(g||"none",function(a){g=a;c()});mxEvent.consume(a)}));c();r.style.padding= -mxClient.IS_FF?"4px 2px 4px 2px":"4px";r.style.marginLeft="4px";r.style.height="22px";r.style.width="22px";r.style.position="relative";r.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";r.className="geColorBtn";a.appendChild(r);mxUtils.br(a);return{getColor:function(){return g},getTarget:function(){return d.value},focus:function(){d.focus()}}};EditorUi.prototype.createLink=function(a,b,d,f,k,m,r,n){var c=this.getCurrentFile(),g=[];f&&(g.push("lightbox=1"),"auto"!=a&&g.push("target="+ -a),null!=b&&b!=mxConstants.NONE&&g.push("highlight="+("#"==b.charAt(0)?b.substring(1):b)),null!=k&&0<k.length&&g.push("edit="+encodeURIComponent(k)),m&&g.push("layers=1"),this.editor.graph.foldingEnabled&&g.push("nav=1"));d&&(a=this.getSelectedPageIndex(),0<a&&g.push("page="+a));a=!0;null!=r?d="#U"+encodeURIComponent(r):(c=this.getCurrentFile(),n||null==c||c.constructor!=window.DriveFile?d="#R"+encodeURIComponent(d?this.getFileData(!0,null,null,null,null,null,null,!0):this.editor.graph.compress(mxUtils.getXml(this.editor.getGraphXml()))): -(d="#"+c.getHash(),a=!1));a&&null!=c&&null!=c.getTitle()&&c.getTitle()!=this.defaultFilename&&g.push("title="+encodeURIComponent(c.getTitle()));return(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?"https://www.draw.io/":"https://"+window.location.host+"/")+(0<g.length?"?"+g.join("&"):"")+d};EditorUi.prototype.createHtml=function(a,b,d,f,k,m,r,n,v,p,q){this.getBasenames();var c={};""!=k&&k!=mxConstants.NONE&&(c.highlight=k);"auto"!==f&&(c.target=f); -v||(c.lightbox=!1);c.nav=this.editor.graph.foldingEnabled;d=parseInt(d);isNaN(d)||100==d||(c.zoom=d/100);d=[];r&&(d.push("pages"),c.resize=!0,null!=this.pages&&null!=this.currentPage&&(c.page=mxUtils.indexOf(this.pages,this.currentPage)));b&&(d.push("zoom"),c.resize=!0);n&&d.push("layers");0<d.length&&(v&&d.push("lightbox"),c.toolbar=d.join(" "));null!=p&&0<p.length&&(c.edit=p);null!=a?c.url=a:c.xml=this.getFileData(!0,null,null,null,null,!r);b='<div class="mxgraph" style="'+(m?"max-width:100%;": -"")+(""!=d?"border:1px solid transparent;":"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(c))+'"></div>';a=null!=a?"&fetch="+encodeURIComponent(a):"";q(b,'<script type="text/javascript" src="'+(0<a.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":"https://www.draw.io/embed2.js?")+a:"1"==urlParams.dev?"https://test.draw.io/js/viewer.min.js":"https://www.draw.io/js/viewer.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(a,b,d,f){var c=document.createElement("div"); -c.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,mxResources.get("html"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";c.appendChild(g);var h=document.createElement("div");h.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var l=document.createElement("input");l.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";l.setAttribute("value","url");l.setAttribute("type","radio");l.setAttribute("name", -"type-embedhtmldialog");g=l.cloneNode(!0);g.setAttribute("value","copy");h.appendChild(g);var k=document.createElement("span");mxUtils.write(k,mxResources.get("includeCopyOfMyDiagram"));h.appendChild(k);mxUtils.br(h);h.appendChild(l);k=document.createElement("span");mxUtils.write(k,mxResources.get("publicDiagramUrl"));h.appendChild(k);var n=this.getCurrentFile();null==d&&null!=n&&n.constructor==window.DriveFile&&(k=document.createElement("a"),k.style.paddingLeft="12px",k.style.color="gray",k.setAttribute("href", -"javascript:void(0);"),mxUtils.write(k,mxResources.get("share")),h.appendChild(k),mxEvent.addListener(k,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(n.getId())})));g.setAttribute("checked","checked");null==d&&l.setAttribute("disabled","disabled");c.appendChild(h);var p=this.addLinkSection(c),u=this.addCheckbox(c,mxResources.get("zoom"),!0,null,!0);mxUtils.write(c,":");var q=document.createElement("input");q.setAttribute("type","text");q.style.marginRight="16px"; -q.style.width="60px";q.style.marginLeft="4px";q.style.marginRight="12px";q.value="100%";c.appendChild(q);var F=this.addCheckbox(c,mxResources.get("fit"),!0),h=null!=this.pages&&1<this.pages.length,w=w=this.addCheckbox(c,mxResources.get("allPages"),h,!h),G=this.addCheckbox(c,mxResources.get("layers"),!0),I=this.addCheckbox(c,mxResources.get("lightbox"),!0),M=this.addEditButton(c,I),z=M.getEditInput();z.style.marginBottom="16px";mxEvent.addListener(I,"change",function(){I.checked?z.removeAttribute("disabled"): -z.setAttribute("disabled","disabled");z.checked&&I.checked?M.getEditSelect().removeAttribute("disabled"):M.getEditSelect().setAttribute("disabled","disabled")});a=new CustomDialog(this,c,mxUtils.bind(this,function(){f(l.checked?d:null,u.checked,q.value,p.getTarget(),p.getColor(),F.checked,w.checked,G.checked,I.checked,M.getLink())}),null,a,b);this.showDialog(a.container,340,384,!0,!0);g.focus()};EditorUi.prototype.showPublishLinkDialog=function(a,b,d,f,k,m){var c=document.createElement("div");c.style.whiteSpace= -"nowrap";var g=document.createElement("h3");mxUtils.write(g,a||mxResources.get("link"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";c.appendChild(g);var h=this.getCurrentFile(),g="https://desk.draw.io/support/solutions/articles/16000051941";a=0;if(null!=h&&h.constructor==window.DriveFile&&!b){a=80;var g="https://desk.draw.io/support/solutions/articles/16000039384",l=document.createElement("div");l.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;"; -var n=document.createElement("div");n.style.whiteSpace="normal";mxUtils.write(n,mxResources.get("linkAccountRequired"));l.appendChild(n);n=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(h.getId())}));n.style.marginTop="12px";n.className="geBtn";l.appendChild(n);c.appendChild(l);n=document.createElement("a");n.style.paddingLeft="12px";n.style.color="gray";n.style.fontSize="11px";n.setAttribute("href","javascript:void(0);");mxUtils.write(n,mxResources.get("check")); -l.appendChild(n);mxEvent.addListener(n,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(a){this.spinner.stop();a=new ErrorDialog(this,null,mxResources.get(null!=a?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(a.container,300,80,!0,!1);a.init()}))}))}var t=null,p=null;if(null!=d||null!=f)a+=30,mxUtils.write(c,mxResources.get("width")+":"),t=document.createElement("input"), -t.setAttribute("type","text"),t.style.marginRight="16px",t.style.width="50px",t.style.marginLeft="6px",t.style.marginRight="16px",t.style.marginBottom="10px",t.value="100%",c.appendChild(t),mxUtils.write(c,mxResources.get("height")+":"),p=document.createElement("input"),p.setAttribute("type","text"),p.style.width="50px",p.style.marginLeft="6px",p.style.marginBottom="10px",p.value=f+"px",c.appendChild(p),mxUtils.br(c);var q=this.addLinkSection(c,m);d=null!=this.pages&&1<this.pages.length;var w=null; -if(null==h||h.constructor!=window.DriveFile||b)w=this.addCheckbox(c,mxResources.get("allPages"),d,!d);var G=this.addCheckbox(c,mxResources.get("lightbox"),!0),I=this.addEditButton(c,G),M=I.getEditInput(),z=this.addCheckbox(c,mxResources.get("layers"),!0);z.style.marginLeft=M.style.marginLeft;z.style.marginBottom="16px";z.style.marginTop="8px";mxEvent.addListener(G,"change",function(){G.checked?(z.removeAttribute("disabled"),M.removeAttribute("disabled")):(z.setAttribute("disabled","disabled"),M.setAttribute("disabled", -"disabled"));M.checked&&G.checked?I.getEditSelect().removeAttribute("disabled"):I.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,c,mxUtils.bind(this,function(){k(q.getTarget(),q.getColor(),null==w?!0:w.checked,G.checked,I.getLink(),z.checked,null!=t?t.value:null,null!=p?p.value:null)}),null,mxResources.get("create"),g);this.showDialog(b.container,340,254+a,!0,!0);null!=t?(t.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?t.select(): -document.execCommand("selectAll",!1,null)):q.focus()};EditorUi.prototype.showRemoteExportDialog=function(a,b,d,f){var c=document.createElement("div");c.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,mxResources.get("image"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";c.appendChild(g);var h=this.addCheckbox(c,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),l=f?null:this.addCheckbox(c,mxResources.get("includeCopyOfMyDiagram"), -!0),g=this.editor.graph,k=f?null:this.addCheckbox(c,mxResources.get("transparentBackground"),g.background==mxConstants.NONE||null==g.background);null!=k&&(k.style.marginBottom="16px");a=new CustomDialog(this,c,mxUtils.bind(this,function(){d(!h.checked,null!=l?l.checked:!1,null!=k?k.checked:!1)}),null,a,b);this.showDialog(a.container,300,f?100:186,!0,!0)};EditorUi.prototype.showExportDialog=function(a,b,d,f,k,m,r,n){r=null!=r?r:!0;var c=document.createElement("div");c.style.whiteSpace="nowrap";var g= -this.editor.graph,h="jpeg"==n?196:300,l=document.createElement("h3");mxUtils.write(l,a);l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";c.appendChild(l);mxUtils.write(c,mxResources.get("zoom")+":");var t=document.createElement("input");t.setAttribute("type","text");t.style.marginRight="16px";t.style.width="60px";t.style.marginLeft="4px";t.style.marginRight="12px";t.value=this.lastExportZoom||"100%";c.appendChild(t);mxUtils.write(c,mxResources.get("borderWidth")+":"); -var p=document.createElement("input");p.setAttribute("type","text");p.style.marginRight="16px";p.style.width="60px";p.style.marginLeft="4px";p.value=this.lastExportBorder||"0";c.appendChild(p);mxUtils.br(c);var q=this.addCheckbox(c,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=n),x=this.addCheckbox(c,mxResources.get("selectionOnly"),!1,g.isSelectionEmpty()),w=document.createElement("input");w.style.marginTop="16px";w.style.marginRight="8px";w.style.marginLeft="24px";w.setAttribute("disabled", -"disabled");w.setAttribute("type","checkbox");m&&(c.appendChild(w),mxUtils.write(c,mxResources.get("crop")),mxUtils.br(c),h+=26,mxEvent.addListener(x,"change",function(){x.checked?w.removeAttribute("disabled"):w.setAttribute("disabled","disabled")}));g.isSelectionEmpty()||(w.setAttribute("checked","checked"),w.defaultChecked=!0);var M=this.addCheckbox(c,mxResources.get("shadow"),g.shadowVisible),z=document.createElement("input");z.style.marginTop="16px";z.style.marginRight="8px";z.setAttribute("type", -"checkbox");!this.isOffline()&&this.canvasSupported||z.setAttribute("disabled","disabled");b&&(c.appendChild(z),mxUtils.write(c,mxResources.get("embedImages")),mxUtils.br(c),h+=26);var B=this.addCheckbox(c,mxResources.get("includeCopyOfMyDiagram"),r,null,null,"jpeg"!=n),K=null!=this.pages&&1<this.pages.length,O=this.addCheckbox(c,K?mxResources.get("allPages"):"",K,!K,null,"jpeg"!=n);O.style.marginLeft="24px";O.style.marginBottom="16px";K||(O.style.display="none");mxEvent.addListener(B,"change",function(){B.checked&& -K?O.removeAttribute("disabled"):O.setAttribute("disabled","disabled")});r&&K||O.setAttribute("disabled","disabled");var T=document.createElement("select");T.style.maxWidth="260px";T.style.marginLeft="8px";T.style.marginRight="10px";T.className="geBtn";a=document.createElement("option");a.setAttribute("value","auto");mxUtils.write(a,mxResources.get("automatic"));T.appendChild(a);a=document.createElement("option");a.setAttribute("value","blank");mxUtils.write(a,mxResources.get("openInNewWindow"));T.appendChild(a); -a=document.createElement("option");a.setAttribute("value","self");mxUtils.write(a,mxResources.get("openInThisWindow"));T.appendChild(a);"svg"==n&&(mxUtils.write(c,mxResources.get("links")+":"),c.appendChild(T),mxUtils.br(c),mxUtils.br(c),h+=26);d=new CustomDialog(this,c,mxUtils.bind(this,function(){this.lastExportBorder=p.value;this.lastExportZoom=t.value;k(t.value,q.checked,!x.checked,M.checked,B.checked,z.checked,p.value,w.checked,!O.checked,T.value)}),null,d,f);this.showDialog(d.container,340, -h,!0,!0);t.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?t.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(a,b,d,f,k){var c=document.createElement("div");c.style.whiteSpace="nowrap";var g=this.editor.graph;if(null!=b){var h=document.createElement("h3");mxUtils.write(h,b);h.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";c.appendChild(h)}var l=this.addCheckbox(c,mxResources.get("fit"), -!0),n=this.addCheckbox(c,mxResources.get("shadow"),g.shadowVisible&&f,!f),t=this.addCheckbox(c,d),u=this.addCheckbox(c,mxResources.get("lightbox"),!0),p=this.addEditButton(c,u),q=p.getEditInput(),w=1<g.model.getChildCount(g.model.getRoot()),G=this.addCheckbox(c,mxResources.get("layers"),w,!w);G.style.marginLeft=q.style.marginLeft;G.style.marginBottom="12px";G.style.marginTop="8px";mxEvent.addListener(u,"change",function(){u.checked?(w&&G.removeAttribute("disabled"),q.removeAttribute("disabled")): -(G.setAttribute("disabled","disabled"),q.setAttribute("disabled","disabled"));q.checked&&u.checked?p.getEditSelect().removeAttribute("disabled"):p.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,c,mxUtils.bind(this,function(){a(l.checked,n.checked,t.checked,u.checked,p.getLink(),G.checked)}),null,mxResources.get("embed"),k);this.showDialog(b.container,280,280,!0,!0)};EditorUi.prototype.createEmbedImage=function(a,b,d,f,k,m,r,n){function c(c){var b=" ",h="";f&&(b=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('https://www.draw.io/?client=1&lightbox=1"+ -(k?"&edit=_blank":"")+(m?"&layers=1":"")+"');}})(this);\"",h+="cursor:pointer;");a&&(h+="max-width:100%;");var l="";d&&(l=' width="'+Math.round(g.width)+'" height="'+Math.round(g.height)+'"');r('<img src="'+c+'"'+l+(""!=h?' style="'+h+'"':"")+b+"/>")}var g=this.editor.graph.getGraphBounds();if(this.isExportToCanvas())this.exportToCanvas(mxUtils.bind(this,function(a){var b=f?this.getFileData(!0):null;a=this.createImageDataUri(a,b,"png");c(a)}),null,null,null,mxUtils.bind(this,function(a){n({message:mxResources.get("unknownError")})}), -null,!0,d?2:1,null,b);else if(b=this.getFileData(!0),g.width*g.height<=MAX_AREA&&b.length<=MAX_REQUEST_SIZE){var h="";d&&(h="&w="+Math.round(2*g.width)+"&h="+Math.round(2*g.height));var l=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(f?"1":"0")+h+"&xml="+encodeURIComponent(b));l.send(mxUtils.bind(this,function(){200<=l.getStatus()&&299>=l.getStatus()?c("data:image/png;base64,"+l.getText()):n({message:mxResources.get("unknownError")})}))}else n({message:mxResources.get("drawingTooLarge")})}; -EditorUi.prototype.createEmbedSvg=function(a,b,d,f,k,m,r){var c=this.editor.graph.getSvg(),g=c.getElementsByTagName("a");if(null!=g)for(var h=0;h<g.length;h++){var l=g[h].getAttribute("href");null!=l&&"#"==l.charAt(0)&&"_blank"==g[h].getAttribute("target")&&g[h].removeAttribute("target")}f&&c.setAttribute("content",this.getFileData(!0));b&&this.editor.graph.addSvgShadow(c);if(d){var n=" ",t="";f&&(n="onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('https://www.draw.io/?client=1&lightbox=1"+ -(k?"&edit=_blank":"")+(m?"&layers=1":"")+"');}})(this);\"",t+="cursor:pointer;");a&&(t+="max-width:100%;");this.convertImages(c,mxUtils.bind(this,function(a){r('<img src="'+this.createSvgDataUri(mxUtils.getXml(a))+'"'+(""!=t?' style="'+t+'"':"")+n+"/>")}))}else t="",f&&(c.setAttribute("onclick","(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&&src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&&!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('https://www.draw.io/?client=1&lightbox=1"+ -(k?"&edit=_blank":"")+(m?"&layers=1":"")+"');}}})(this);"),t+="cursor:pointer;"),a&&(a=parseInt(c.getAttribute("width")),b=parseInt(c.getAttribute("height")),c.setAttribute("viewBox","0 0 "+a+" "+b),t+="max-width:100%;max-height:"+b+"px;",c.removeAttribute("height")),""!=t&&c.setAttribute("style",t),r(mxUtils.getXml(c))};EditorUi.prototype.timeSince=function(a){a=Math.floor((new Date-a)/1E3);var c=Math.floor(a/31536E3);if(1<c)return c+" "+mxResources.get("years");c=Math.floor(a/2592E3);if(1<c)return c+ -" "+mxResources.get("months");c=Math.floor(a/86400);if(1<c)return c+" "+mxResources.get("days");c=Math.floor(a/3600);if(1<c)return c+" "+mxResources.get("hours");c=Math.floor(a/60);return 1<c?c+" "+mxResources.get("minutes"):1==c?c+" "+mxResources.get("minute"):null};EditorUi.prototype.convertMath=function(a,b,d,f){a.mathEnabled&&"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?(Editor.MathJaxRender(b),window.setTimeout(mxUtils.bind(this,function(){MathJax.Hub.Queue(mxUtils.bind(this, -function(){f()}))}),0)):f()};EditorUi.prototype.decodeNodeIntoGraph=function(a,b){if(null!=a){var c=null;if("diagram"==a.nodeName)c=a;else if("mxfile"==a.nodeName){var d=a.getElementsByTagName("diagram");if(0<d.length){var c=d[0],f=b.getGlobalVariable;b.getGlobalVariable=function(a){return"page"==a?c.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==a?1:f.apply(this,arguments)}}}null!=c&&(d=b.decompress(mxUtils.getTextContent(c)),null!=d&&0<d.length&&(a=mxUtils.parseXml(d).documentElement))}d= -this.editor.graph;try{this.editor.graph=b,this.editor.setGraphXml(a)}catch(m){}finally{this.editor.graph=d}return a};EditorUi.prototype.getEmbeddedPng=function(a,b,d){var c=this.editor.graph,f=null;if(null!=d&&0<d.length)c=this.createTemporaryGraph(this.editor.graph.getStylesheet()),document.body.appendChild(c.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(d).documentElement,!0),c),f=d;else if(null!=this.pages&&this.currentPage!=this.pages[0]){var c=this.createTemporaryGraph(c.getStylesheet()), -g=c.getGlobalVariable,h=this.pages[0];c.getGlobalVariable=function(a){return"page"==a?h.getName():"pagenumber"==a?1:g.apply(this,arguments)};document.body.appendChild(c.container);c.model.setRoot(h.root)}this.exportToCanvas(mxUtils.bind(this,function(d){try{null==f&&(f=this.getFileData(!0));var g=d.toDataURL("image/png"),g=this.writeGraphModelToPng(g,"zTXt","mxGraphModel",atob(this.editor.graph.compress(f)));a(g.substring(g.lastIndexOf(",")+1));c!=this.editor.graph&&c.container.parentNode.removeChild(c.container)}catch(D){null!= -b&&b(D)}}),null,null,null,mxUtils.bind(this,function(a){null!=b&&b(a)}),null,null,null,null,c.shadowVisible,null,c)};EditorUi.prototype.getEmbeddedSvg=function(a,b,d,f,k,m,r){r=b.background;r==mxConstants.NONE&&(r=null);b=b.getSvg(r,null,null,null,null,m);null!=a&&b.setAttribute("content",a);null!=d&&b.setAttribute("resource",d);if(null!=k)this.convertImages(b,mxUtils.bind(this,function(a){k((f?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+ -mxUtils.getXml(a))}));else return(f?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(b)};EditorUi.prototype.exportImage=function(a,b,d,f,k,m,r,n,v){v=null!=v?v:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var c=this.editor.graph.isSelectionEmpty();d=null!=d?d:c;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.exportToCanvas(mxUtils.bind(this,function(a){this.spinner.stop(); -try{this.saveCanvas(a,k?this.getFileData(!0,null,null,null,d,n):null,v)}catch(u){"Invalid image"==u.message?this.downloadFile(v):this.handleError(u)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),null,d,a||1,b,f,null,null,m,r)}catch(y){this.spinner.stop(),this.handleError(y)}}};EditorUi.prototype.loadFonts=function(a){if(null!=this.editor.fontCss&&null==this.editor.resolvedFontCss){var c=function(a){return a.replace(RegExp("^[\\s\"']+","g"), -"").replace(RegExp("[\\s\"']+$","g"),"")},b=this.editor.fontCss.split("url("),d=0,f={},m=mxUtils.bind(this,function(){if(0==d){for(var g=[b[0]],h=1;h<b.length;h++){var l=b[h].indexOf(")");g.push('url("');g.push(f[c(b[h].substring(0,l))]);g.push('"'+b[h].substring(l))}this.editor.resolvedFontCss=g.join("");a()}});if(0<b.length)for(var k=1;k<b.length;k++){var n=b[k].indexOf(")"),v=null,p=b[k].indexOf("format(",n);0<p&&(v=c(b[k].substring(p+7,b[k].indexOf(")",p))));mxUtils.bind(this,function(a){if(null== -f[a]){f[a]=a;d++;var c="application/x-font-ttf";if("svg"==v||/(\.svg)($|\?)/i.test(a))c="image/svg+xml";else if("otf"==v||"embedded-opentype"==v||/(\.otf)($|\?)/i.test(a))c="application/x-font-opentype";else if("woff"==v||/(\.woff)($|\?)/i.test(a))c="application/font-woff";else if("woff2"==v||/(\.woff2)($|\?)/i.test(a))c="application/font-woff2";else if("eot"==v||/(\.eot)($|\?)/i.test(a))c="application/vnd.ms-fontobject";else if("sfnt"==v||/(\.sfnt)($|\?)/i.test(a))c="application/font-sfnt";var b= -a;/^https?:\/\//.test(b)&&!this.isCorsEnabledForUrl(b)&&(b=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(b,mxUtils.bind(this,function(c){f[a]=c;d--;m()}),mxUtils.bind(this,function(a){d--;m()}),!0,null,"data:"+c+";charset=utf-8;base64,")}})(c(b[k].substring(0,n)),v)}}else a()};EditorUi.prototype.exportToCanvas=function(a,b,d,f,k,m,r,n,p,q,y,u,A,w){m=null!=m?m:!0;u=null!=u?u:this.editor.graph;A=null!=A?A:0;var c=p?null:u.background;c==mxConstants.NONE&&(c=null);null==c&&(c=f);null==c&&0==p&& -(c=this.editor.graph.defaultPageBackgroundColor);this.convertImages(u.getSvg(c,null,null,w,null,null!=r?r:!0,null,null,null,q),mxUtils.bind(this,function(d){var f=new Image;f.onload=mxUtils.bind(this,function(){try{var g=document.createElement("canvas"),h=parseInt(d.getAttribute("width")),l=parseInt(d.getAttribute("height"));n=null!=n?n:1;null!=b&&(n=m?Math.min(1,Math.min(3*b/(4*l),b/h)):b/h);h=Math.ceil(n*h)+2*A;l=Math.ceil(n*l)+2*A;g.setAttribute("width",h);g.setAttribute("height",l);var r=g.getContext("2d"); -null!=c&&(r.beginPath(),r.rect(0,0,h,l),r.fillStyle=c,r.fill());r.scale(n,n);mxClient.IS_SF?window.setTimeout(function(){r.drawImage(f,A/n,A/n);a(g)},0):(r.drawImage(f,A/n,A/n),a(g))}catch(T){null!=k&&k(T)}});f.onerror=function(a){null!=k&&k(a)};try{q&&this.editor.graph.addSvgShadow(d,d);var g=mxUtils.bind(this,function(){if(null!=this.editor.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.editor.resolvedFontCss;d.getElementsByTagName("defs")[0].appendChild(a)}this.convertMath(u, -d,!0,mxUtils.bind(this,function(){f.src=this.createSvgDataUri(mxUtils.getXml(d))}))});this.loadFonts(g)}catch(z){null!=k&&k(z)}}),d,y)};EditorUi.prototype.createImageUrlConverter=function(){var a=new mxUrlConverter;a.updateBaseUrl();var b=a.convert,d=this;a.convert=function(c){if(null!=c){var f="http://"==c.substring(0,7)||"https://"==c.substring(0,8);f&&!navigator.onLine?c=d.svgBrokenImage.src:!f||c.substring(0,a.baseUrl.length)==a.baseUrl||d.crossOriginImages&&d.isCorsEnabledForUrl(c)?"chrome-extension://"!= -c.substring(0,19)&&(c=b.apply(this,arguments)):c=PROXY_URL+"?url="+encodeURIComponent(c)}return c};return a};EditorUi.prototype.convertImages=function(a,b,d,f){null==f&&(f=this.createImageUrlConverter());var c=0,g=d||{};d=mxUtils.bind(this,function(d,h){for(var l=a.getElementsByTagName(d),m=0;m<l.length;m++)mxUtils.bind(this,function(d){var l=f.convert(d.getAttribute(h));if(null!=l&&"data:"!=l.substring(0,5)){var m=g[l];null==m?(c++,this.convertImageToDataUri(l,function(f){null!=f&&(g[l]=f,d.setAttribute(h, -f));c--;0==c&&b(a)})):d.setAttribute(h,m)}else null!=l&&d.setAttribute(h,l)})(l[m])});d("image","xlink:href");d("img","src");0==c&&b(a)};EditorUi.prototype.loadUrl=function(a,b,d,f,k,m){try{var c=f||/(\.png)($|\?)/i.test(a)||/(\.jpe?g)($|\?)/i.test(a)||/(\.gif)($|\?)/i.test(a);k=null!=k?k:!0;var g=mxUtils.bind(this,function(){mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=b){var f=a.getText();if(c){if((9==document.documentMode||10==document.documentMode)&& -"undefined"!==typeof window.mxUtilsBinaryToArray){a=mxUtilsBinaryToArray(a.request.responseBody).toArray();for(var f=Array(a.length),g=0;g<a.length;g++)f[g]=String.fromCharCode(a[g]);f=f.join("")}m=null!=m?m:"data:image/png;base64,";f=m+this.base64Encode(f)}b(f)}}else null!=d&&d({code:App.ERROR_UNKNOWN},a)}),function(){null!=d&&d({code:App.ERROR_UNKNOWN})},c,this.timeout,function(){k&&null!=d&&d({code:App.ERROR_TIMEOUT,retry:g})})});g()}catch(v){null!=d&&d(v)}};EditorUi.prototype.isCorsEnabledForUrl= +stroke:"#36393d"}]];StyleFormatPanel.prototype.customColorSchemes=null;StyleFormatPanel.prototype.findCommonProperties=function(a,d,b){if(null!=d){var c=function(a){if(null!=a)if(b)for(var c=0;c<a.length;c++)d[a[c].name]=a[c];else for(var f in d){for(var e=!1,c=0;c<a.length;c++)if(a[c].name==f&&a[c].type==d[f].type){e=!0;break}e||delete d[f]}},f=this.editorUi.editor.graph.view.getState(a);null!=f&&null!=f.shape&&(f.shape.commonCustomPropAdded||(f.shape.commonCustomPropAdded=!0,f.shape.customProperties= +f.shape.customProperties||[],f.cell.vertex?Array.prototype.push.apply(f.shape.customProperties,Editor.commonVertexProperties):Array.prototype.push.apply(f.shape.customProperties,Editor.commonEdgeProperties)),c(f.shape.customProperties));a=a.getAttribute("customProperties");if(null!=a)try{c(JSON.parse(a))}catch(S){}}};var d=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var a=this.format.createSelectionState();"image"!=a.style.shape&&this.container.appendChild(this.addStyles(this.createPanel())); +d.apply(this,arguments);if(Editor.enableCustomProperties){for(var b={},c=a.vertices,f=a.edges,e=0;e<c.length;e++)this.findCommonProperties(c[e],b,0==e);for(e=0;e<f.length;e++)this.findCommonProperties(f[e],b,0==c.length&&0==e);0<Object.getOwnPropertyNames(b).length&&this.container.appendChild(this.addProperties(this.createPanel(),b,a))}};var f=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(a){var d=mxUtils.button(mxResources.get("copyStyle"),mxUtils.bind(this, +function(a){this.editorUi.actions.get("copyStyle").funct()}));d.setAttribute("title",mxResources.get("copyStyle")+" ("+this.editorUi.actions.get("copyStyle").shortcut+")");d.style.marginBottom="2px";d.style.width="100px";d.style.marginRight="2px";a.appendChild(d);d=mxUtils.button(mxResources.get("pasteStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("pasteStyle").funct()}));d.setAttribute("title",mxResources.get("pasteStyle")+" ("+this.editorUi.actions.get("pasteStyle").shortcut+")"); +d.style.marginBottom="2px";d.style.width="100px";a.appendChild(d);mxUtils.br(a);return f.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=function(a,d,b){function c(a,d,b,c){k.getModel().beginUpdate();try{var f=[],e=[];if(null!=b.index){for(var g=[],l=b.parentRow.nextSibling;l&&l.getAttribute("data-pName")==a;)g.push(l.getAttribute("data-pValue")),l=l.nextSibling;b.index<g.length?null!=c?g.splice(c,1):g[b.index]=d:g.push(d);null!=b.size&&g.length> +b.size&&(g=g.slice(0,b.size));d=g.join(",");null!=b.countProperty&&(k.setCellStyles(b.countProperty,g.length,k.getSelectionCells()),f.push(b.countProperty),e.push(g.length))}k.setCellStyles(a,d,k.getSelectionCells());f.push(a);e.push(d);if(null!=b.dependentProps)for(a=0;a<b.dependentProps.length;a++){var n=b.dependentPropsDefVal[a],p=b.dependentPropsVals[a];if(p.length>d)p=p.slice(0,d);else for(var t=p.length;t<d;t++)p.push(n);p=p.join(",");k.setCellStyles(b.dependentProps[a],p,k.getSelectionCells()); +f.push(b.dependentProps[a]);e.push(p)}u.editorUi.fireEvent(new mxEventObject("styleChanged","keys",f,"values",e,"cells",k.getSelectionCells()))}finally{k.getModel().endUpdate()}}function f(d,b,c){var f=mxUtils.getOffset(a,!0),e=mxUtils.getOffset(d,!0);b.style.position="absolute";b.style.left=e.x-f.x+"px";b.style.top=e.y-f.y+"px";b.style.width=d.offsetWidth+"px";b.style.height=d.offsetHeight-(c?4:0)+"px";b.style.zIndex=5}function e(a,d,b){var f=document.createElement("div");f.style.width="32px";f.style.height= +"4px";f.style.margin="2px";f.style.border="1px solid black";f.style.background=d&&"none"!=d?d:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(u,function(e){this.editorUi.pickColor(d,function(d){f.style.background="none"==d?"url('"+Dialog.prototype.noColorImage+"')":d;c(a,d,b)});mxEvent.consume(e)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(f);return btn}function g(a,d,b,f,e,g,l){null!=d&&(d=d.split(","),t.push({name:a, +values:d,type:b,defVal:f,countProperty:e,parentRow:g,isDeletable:!0,flipBkg:l}));btn=mxUtils.button("+",mxUtils.bind(u,function(d){for(var n=g,u=0;null!=n.nextSibling;)if(n.nextSibling.getAttribute("data-pName")==a)n=n.nextSibling,u++;else break;var k={type:b,parentRow:g,index:u,isDeletable:!0,defVal:f,countProperty:e},u=p(a,"",k,0==u%2,l);c(a,f,k);n.parentNode.insertBefore(u,n.nextSibling);mxEvent.consume(d)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn} +function l(a,d,b,c,f,e,g){if(0<f){var l=Array(f);d=null!=d?d.split(","):[];for(var n=0;n<f;n++)l[n]=null!=d[n]?d[n]:null!=c?c:"";t.push({name:a,values:l,type:b,defVal:c,parentRow:e,flipBkg:g,size:f})}return document.createElement("div")}function n(a,d,b){var f=document.createElement("input");f.type="checkbox";f.checked="1"==d;mxEvent.addListener(f,"change",function(){c(a,f.checked?"1":"0",b)});return f}function p(d,b,p,k,t){var y=p.dispName,B=p.type,x=document.createElement("tr");x.className="gePropRow"+ +(t?"Dark":"")+(k?"Alt":"")+" gePropNonHeaderRow";x.setAttribute("data-pName",d);x.setAttribute("data-pValue",b);k=!1;null!=p.index&&(x.setAttribute("data-index",p.index),y=(null!=y?y:"")+"["+p.index+"]",k=!0);var A=document.createElement("td");A.className="gePropRowCell";A.innerHTML=mxUtils.htmlEntities(mxResources.get(y,null,y));k&&(A.style.textAlign="right");x.appendChild(A);A=document.createElement("td");A.className="gePropRowCell";if("color"==B)A.appendChild(e(d,b,p));else if("bool"==B||"boolean"== +B)A.appendChild(n(d,b,p));else if("enum"==B){var m=p.enumList;for(t=0;t<m.length;t++)if(y=m[t],y.val==b){A.innerHTML=mxUtils.htmlEntities(mxResources.get(y.dispName,null,y.dispName));break}mxEvent.addListener(A,"click",mxUtils.bind(u,function(){var e=document.createElement("select");f(A,e);for(var g=0;g<m.length;g++){var l=m[g],n=document.createElement("option");n.value=mxUtils.htmlEntities(l.val);n.innerHTML=mxUtils.htmlEntities(mxResources.get(l.dispName,null,l.dispName));e.appendChild(n)}e.value= +b;a.appendChild(e);mxEvent.addListener(e,"change",function(){var a=mxUtils.htmlEntities(e.value);c(d,a,p)});e.focus();mxEvent.addListener(e,"blur",function(){a.removeChild(e)})}))}else"dynamicArr"==B?A.appendChild(g(d,b,p.subType,p.subDefVal,p.countProperty,x,t)):"staticArr"==B?A.appendChild(l(d,b,p.subType,p.subDefVal,p.size,x,t)):(A.innerHTML=b,mxEvent.addListener(A,"click",mxUtils.bind(u,function(){function e(){var a=g.value,a=0==a.length&&"string"!=B?0:a;p.allowAuto&&("auto"==a.trim().toLowerCase()? +(a="auto",B="string"):(a=parseFloat(a),a=isNaN(a)?0:a));null!=p.min&&a<p.min?a=p.min:null!=p.max&&a>p.max&&(a=p.max);a=mxUtils.htmlEntities(("int"==B?parseInt(a):a)+"");c(d,a,p)}var g=document.createElement("input");f(A,g,!0);g.value=b;g.className="gePropEditor";"int"!=B&&"float"!=B||p.allowAuto||(g.type="number",g.step="int"==B?"1":"any",null!=p.min&&(g.min=parseFloat(p.min)),null!=p.max&&(g.max=parseFloat(p.max)));a.appendChild(g);mxEvent.addListener(g,"keypress",function(a){13==a.keyCode&&e()}); +g.focus();mxEvent.addListener(g,"blur",function(){e()})})));p.isDeletable&&(t=mxUtils.button("-",mxUtils.bind(u,function(a){c(d,"",p,p.index);mxEvent.consume(a)})),t.style.height="16px",t.style.width="25px",t.style["float"]="right",t.className="geColorBtn",A.appendChild(t));x.appendChild(A);return x}var u=this,k=this.editorUi.editor.graph,t=[];a.style.position="relative";a.style.padding="0";var y=document.createElement("table");y.style.whiteSpace="nowrap";y.style.width="100%";var B=document.createElement("tr"); +B.className="gePropHeader";var x=document.createElement("th");x.className="gePropHeaderCell";var A=document.createElement("img");A.src=Sidebar.prototype.expandedImage;x.appendChild(A);mxUtils.write(x,mxResources.get("property"));B.style.cursor="pointer";var m=function(){var d=y.querySelectorAll(".gePropNonHeaderRow"),b;if(u.editorUi.propertiesCollapsed){A.src=Sidebar.prototype.collapsedImage;b="none";for(var c=a.childNodes.length-1;0<=c;c--)try{var f=a.childNodes[c],e=f.nodeName.toUpperCase();"INPUT"!= +e&&"SELECT"!=e||a.removeChild(f)}catch(ha){}}else A.src=Sidebar.prototype.expandedImage,b="";for(c=0;c<d.length;c++)d[c].style.display=b};mxEvent.addListener(B,"click",function(){u.editorUi.propertiesCollapsed=!u.editorUi.propertiesCollapsed;m()});B.appendChild(x);x=document.createElement("th");x.className="gePropHeaderCell";x.innerHTML=mxResources.get("value");B.appendChild(x);y.appendChild(B);var q=!1,r=!1,v;for(v in d)if(B=d[v],"function"!=typeof B.isVisible||B.isVisible(b)){var z=null!=b.style[v]? +mxUtils.htmlEntities(b.style[v]+""):B.defVal;if("separator"==B.type)r=!r;else{if("staticArr"==B.type)B.size=parseInt(b.style[B.sizeProperty]||d[B.sizeProperty].defVal)||0;else if(null!=B.dependentProps){for(var I=B.dependentProps,aa=[],L=[],x=0;x<I.length;x++){var P=b.style[I[x]];L.push(d[I[x]].subDefVal);aa.push(null!=P?P.split(","):[])}B.dependentPropsDefVal=L;B.dependentPropsVals=aa}y.appendChild(p(v,z,B,q,r));q=!q}}for(x=0;x<t.length;x++)for(B=t[x],d=B.parentRow,b=0;b<B.values.length;b++)v=p(B.name, +B.values[b],{type:B.type,parentRow:B.parentRow,isDeletable:B.isDeletable,index:b,defVal:B.defVal,countProperty:B.countProperty,size:B.size},0==b%2,B.flipBkg),d.parentNode.insertBefore(v,d.nextSibling),d=v;a.appendChild(y);m();return a};StyleFormatPanel.prototype.addStyles=function(a){function d(a){function d(a){var d=mxUtils.button("",function(d){c.getModel().beginUpdate();try{var b=c.getSelectionCells();for(d=0;d<b.length;d++){for(var f=c.getModel().getStyle(b[d]),g=0;g<e.length;g++)f=mxUtils.removeStylename(f, +e[g]);var l=c.getModel().isVertex(b[d])?c.defaultVertexStyle:c.defaultEdgeStyle;null!=a?(f=mxUtils.setStyle(f,mxConstants.STYLE_FILLCOLOR,a.fill||mxUtils.getValue(l,mxConstants.STYLE_FILLCOLOR,null)),f=mxUtils.setStyle(f,mxConstants.STYLE_STROKECOLOR,a.stroke||mxUtils.getValue(l,mxConstants.STYLE_STROKECOLOR,null)),f=mxUtils.setStyle(f,mxConstants.STYLE_GRADIENTCOLOR,a.gradient||mxUtils.getValue(l,mxConstants.STYLE_GRADIENTCOLOR,null)),c.getModel().isVertex(b[d])&&(f=mxUtils.setStyle(f,mxConstants.STYLE_FONTCOLOR, +a.font||mxUtils.getValue(l,mxConstants.STYLE_FONTCOLOR,null)))):(f=mxUtils.setStyle(f,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(l,mxConstants.STYLE_FILLCOLOR,"#ffffff")),f=mxUtils.setStyle(f,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(l,mxConstants.STYLE_STROKECOLOR,"#000000")),f=mxUtils.setStyle(f,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(l,mxConstants.STYLE_GRADIENTCOLOR,null)),c.getModel().isVertex(b[d])&&(f=mxUtils.setStyle(f,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(l,mxConstants.STYLE_FONTCOLOR, +null))));c.getModel().setStyle(b[d],f)}}finally{c.getModel().endUpdate()}});d.className="geStyleButton";d.style.width="36px";d.style.height="30px";d.style.margin="0px 6px 6px 0px";if(null!=a)null!=a.gradient?mxClient.IS_IE&&(mxClient.IS_QUIRKS||10>document.documentMode)?d.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+a.fill+"', EndColorStr='"+a.gradient+"', GradientType=0)":d.style.backgroundImage="linear-gradient("+a.fill+" 0px,"+a.gradient+" 100%)":a.fill==mxConstants.NONE? +d.style.background="url('"+Dialog.prototype.noColorImage+"')":d.style.backgroundColor=a.fill||mxUtils.getValue(c.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),d.style.border="1px solid "+(a.stroke||mxUtils.getValue(c.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000"));else{var b=mxUtils.getValue(c.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),g=mxUtils.getValue(c.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");d.style.backgroundColor=b;d.style.border="1px solid "+ +g}f.appendChild(d)}f.innerHTML="";for(var b=0;b<a.length;b++)0<b&&0==mxUtils.mod(b,4)&&mxUtils.br(f),d(a[b])}function b(a){mxEvent.addListener(a,"mouseenter",function(){a.style.opacity="1"});mxEvent.addListener(a,"mouseleave",function(){a.style.opacity="0.5"})}var c=this.editorUi.editor.graph,f=document.createElement("div");f.style.whiteSpace="nowrap";f.style.paddingLeft="24px";f.style.paddingRight="20px";a.style.paddingLeft="16px";a.style.paddingBottom="6px";a.style.position="relative";a.appendChild(f); +var e="plain-gray plain-blue plain-green plain-turquoise plain-orange plain-yellow plain-red plain-pink plain-purple gray blue green turquoise orange yellow red pink purple".split(" ");null==this.editorUi.currentScheme&&(this.editorUi.currentScheme=0);var g=document.createElement("div");g.style.cssText="position:absolute;left:10px;top:8px;bottom:8px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);"; +mxEvent.addListener(g,"click",mxUtils.bind(this,function(){this.editorUi.currentScheme=mxUtils.mod(this.editorUi.currentScheme-1,this.defaultColorSchemes.length);d(this.defaultColorSchemes[this.editorUi.currentScheme])}));var l=document.createElement("div");l.style.cssText="position:absolute;left:202px;top:8px;bottom:8px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYBuwCcAAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADZJREFUCNdjQAOMAmBKaiGY8loF5rKswsZlrVo8AUiFrTICcbIWK8A5DF1gDoMymMPApIAwHwCS0Qx/U7qCBQAAAABJRU5ErkJggg==);"; +1<this.defaultColorSchemes.length&&(a.appendChild(g),a.appendChild(l));mxEvent.addListener(l,"click",mxUtils.bind(this,function(){this.editorUi.currentScheme=mxUtils.mod(this.editorUi.currentScheme+1,this.defaultColorSchemes.length);d(this.defaultColorSchemes[this.editorUi.currentScheme])}));b(g);b(l);d(this.defaultColorSchemes[this.editorUi.currentScheme]);return a};StyleFormatPanel.prototype.addEditOps=function(a){var d=this.format.getSelectionState(),b=null;1==this.editorUi.editor.graph.getSelectionCount()&& +(b=mxUtils.button(mxResources.get("editStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("editStyle").funct()})),b.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),b.style.width="202px",b.style.marginBottom="2px",a.appendChild(b));var c=this.editorUi.editor.graph,f=c.view.getState(c.getSelectionCell());1==c.getSelectionCount()&&null!=f&&null!=f.shape&&null!=f.shape.stencil?(d=mxUtils.button(mxResources.get("editShape"),mxUtils.bind(this, +function(a){this.editorUi.actions.get("editShape").funct()})),d.setAttribute("title",mxResources.get("editShape")),d.style.marginBottom="2px",null==b?d.style.width="202px":(b.style.width="100px",d.style.width="100px",d.style.marginLeft="2px"),a.appendChild(d)):d.image&&(d=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,function(a){this.editorUi.actions.get("image").funct()})),d.setAttribute("title",mxResources.get("editImage")),d.style.marginBottom="2px",null==b?d.style.width="202px": +(b.style.width="100px",d.style.width="100px",d.style.marginLeft="2px"),a.appendChild(d));return a}}Graph.prototype.defaultThemeName="default-style2";Graph.prototype.lastPasteXml=null;Graph.prototype.pasteCounter=0;Graph.prototype.defaultScrollbars="0"!=urlParams.sb;Graph.prototype.defaultPageVisible="0"!=urlParams.pv;Graph.prototype.shadowId="dropShadow";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity="0.4";Graph.prototype.svgShadowBlur="1.7";Graph.prototype.svgShadowSize= +"3";Graph.prototype.edgeMode="move"!=urlParams.edge;var l=Graph.prototype.init;Graph.prototype.init=function(){function a(a){d=a;if(mxClient.IS_QUIRKS||7==document.documentMode||8==document.documentMode)d=mxUtils.clone(a)}l.apply(this,arguments);var d=null;mxEvent.addListener(this.container,"mouseenter",a);mxEvent.addListener(this.container,"mousemove",a);mxEvent.addListener(this.container,"mouseleave",function(a){d=null});this.isMouseInsertPoint=function(){return null!=d};var b=this.getInsertPoint; +this.getInsertPoint=function(){return null!=d?this.getPointForEvent(d):b.apply(this,arguments)};var c=this.layoutManager.getLayout;this.layoutManager.getLayout=function(a){var d=this.graph.view.getState(a),d=null!=d?d.style:this.graph.getCellStyle(a);if(null!=d){if("undefined"!=typeof mxRackContainer&&"rack"==d.childLayout){var b=new mxStackLayout(this.graph,!1);b.setChildGeometry=function(a,d){d.height=Math.max(d.height,20);if(1<d.height/20){var b=d.height%20;d.height+=10<b?20-b:-b}this.graph.getModel().setGeometry(a, +d)};b.fill=!0;b.unitSize=mxRackContainer.unitSize|20;b.marginLeft=d.marginLeft||0;b.marginRight=d.marginRight||0;b.marginTop=d.marginTop||0;b.marginBottom=d.marginBottom||0;b.resizeParent=!1;return b}if("undefined"!=typeof mxTableLayout&&"tableLayout"==d.childLayout)return b=new mxTableLayout(this.graph),b.rows=d.tableRows||2,b.columns=d.tableColumns||2,b.colPercentages=d.colPercentages,b.rowPercentages=d.rowPercentages,b.equalColumns="1"==mxUtils.getValue(d,"equalColumns",b.colPercentages?"0":"1"), +b.equalRows="1"==mxUtils.getValue(d,"equalRows",b.rowPercentages?"0":"1"),b.resizeParent="1"==mxUtils.getValue(d,"resizeParent","1"),b.border=d.tableBorder||b.border,b.marginLeft=d.marginLeft||0,b.marginRight=d.marginRight||0,b.marginTop=d.marginTop||0,b.marginBottom=d.marginBottom||0,b.autoAddCol="1"==mxUtils.getValue(d,"autoAddCol","0"),b.autoAddRow="1"==mxUtils.getValue(d,"autoAddRow",b.autoAddCol?"0":"1"),b.colWidths=d.colWidths||"100",b.rowHeights=d.rowHeights||"50",b}return c.apply(this,arguments)}}; +var n=Graph.prototype.isCssTransformsSupported;Graph.prototype.isCssTransformsSupported=function(){return n.apply(this,arguments)&&!mxClient.IS_SF};var g=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(a){var d=g.apply(this,arguments);if(null==d){if(null==this.globalUrlVars&&null!=urlParams.vars)try{this.globalUrlVars=JSON.parse(decodeURIComponent(urlParams.vars))}catch(A){null!=window.console&&console.log("Error in vars URL parameter: "+A)}null!=this.globalUrlVars&&(d= +this.globalUrlVars[a])}return d};var p=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){p.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var a=this.getDrawPane().parentNode;!this.graph.mathEnabled||mxClient.NO_FO||null!=this.webKitForceRepaintNode&&null!=this.webKitForceRepaintNode.parentNode||"svg"!=this.graph.container.firstChild.nodeName?null==this.webKitForceRepaintNode||this.graph.mathEnabled&&("svg"==this.graph.container.firstChild.nodeName|| +this.graph.container.firstChild==this.webKitForceRepaintNode)||(null!=this.webKitForceRepaintNode.parentNode&&this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",a.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,a.ownerSVGElement))}};var B=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet= +function(){B.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(a){if("data:action/json,"==a.substring(0,17)&&(a=JSON.parse(a.substring(17)),null!=a.actions)){for(var d=0;d<a.actions.length;d++)if(null!=a.actions[d].open)if(this.isCustomLink(a.actions[d].open)){if(!this.customLinkClicked(a.actions[d].open))return}else this.openLink(a.actions[d].open);this.model.beginUpdate();try{for(d=0;d<a.actions.length;d++)this.handleLinkAction(a.actions[d])}finally{this.model.endUpdate()}}}; +Graph.prototype.handleLinkAction=function(a){var d=[];null!=a.select&&this.isEnabled()&&(d=this.getCellsForAction(a.select),this.setSelectionCells(d));null!=a.highlight&&(d=this.getCellsForAction(a.highlight),this.highlightCells(d,a.highlight.color,a.highlight.duration,a.highlight.opacity));null!=a.toggle&&this.toggleCells(this.getCellsForAction(a.toggle));null!=a.show&&this.setCellsVisible(this.getCellsForAction(a.show),!0);null!=a.hide&&this.setCellsVisible(this.getCellsForAction(a.hide),!1);null!= +a.scroll&&(d=this.getCellsForAction(a.scroll));0<d.length&&this.scrollCellToVisible(d[0])};Graph.prototype.getCellsForAction=function(a){return this.getCellsById(a.cells).concat(this.getCellsForTags(a.tags))};Graph.prototype.getCellsById=function(a){var d=[];if(null!=a)for(var b=0;b<a.length;b++)if("*"==a[b])var c=this.getDefaultParent(),d=d.concat(this.model.filterDescendants(function(a){return a!=c},c));else{var f=this.model.getCell(a[b]);null!=f&&d.push(f)}return d};Graph.prototype.getCellsForTags= +function(a,d,b){var c=[];if(null!=a){d=null!=d?d:this.model.getDescendants(this.model.getRoot());b=null!=b?b:"tags";for(var f=0;f<d.length;f++)if(this.model.isVertex(d[f])||this.model.isEdge(d[f])){var e=null!=d[f].value&&"object"==typeof d[f].value?mxUtils.trim(d[f].value.getAttribute(b)||""):"",g=!0;if(0<e.length)for(var e=e.toLowerCase().split(" "),l=0;l<a.length&&g;l++)var n=mxUtils.trim(a[l]).toLowerCase(),g=g&&(0==n.length||0<=mxUtils.indexOf(e,n));else g=0==a.length;g&&c.push(d[f])}}return c}; +Graph.prototype.toggleCells=function(a){this.model.beginUpdate();try{for(var d=0;d<a.length;d++)this.model.setVisible(a[d],!this.model.isVisible(a[d]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(a,d){this.model.beginUpdate();try{for(var b=0;b<a.length;b++)this.model.setVisible(a[b],d)}finally{this.model.endUpdate()}};Graph.prototype.highlightCells=function(a,d,b,c){for(var f=0;f<a.length;f++)this.highlightCell(a[f],d,b,c)};Graph.prototype.highlightCell=function(a,d, +b,c){d=null!=d?d:mxConstants.DEFAULT_VALID_COLOR;b=null!=b?b:1E3;a=this.view.getState(a);if(null!=a){var f=Math.max(5,mxUtils.getValue(a.style,mxConstants.STYLE_STROKEWIDTH,1)+4),e=new mxCellHighlight(this,d,f,!1);null!=c&&(e.opacity=c);e.highlight(a);window.setTimeout(function(){null!=e.shape&&(mxUtils.setPrefixedStyle(e.shape.node.style,"transition","all 1200ms ease-in-out"),e.shape.node.style.opacity=0);window.setTimeout(function(){e.destroy()},1200)},b)}};Graph.prototype.addSvgShadow=function(a, +d,b){b=null!=b?b:!1;var c=a.ownerDocument,f=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"filter"):c.createElement("filter");f.setAttribute("id",this.shadowId);var e=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):c.createElement("feGaussianBlur");e.setAttribute("in","SourceAlpha");e.setAttribute("stdDeviation",this.svgShadowBlur);e.setAttribute("result","blur");f.appendChild(e);e=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"feOffset"): +c.createElement("feOffset");e.setAttribute("in","blur");e.setAttribute("dx",this.svgShadowSize);e.setAttribute("dy",this.svgShadowSize);e.setAttribute("result","offsetBlur");f.appendChild(e);e=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"feFlood"):c.createElement("feFlood");e.setAttribute("flood-color",this.svgShadowColor);e.setAttribute("flood-opacity",this.svgShadowOpacity);e.setAttribute("result","offsetColor");f.appendChild(e);e=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG, +"feComposite"):c.createElement("feComposite");e.setAttribute("in","offsetColor");e.setAttribute("in2","offsetBlur");e.setAttribute("operator","in");e.setAttribute("result","offsetBlur");f.appendChild(e);e=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"feBlend"):c.createElement("feBlend");e.setAttribute("in","SourceGraphic");e.setAttribute("in2","offsetBlur");f.appendChild(e);e=a.getElementsByTagName("defs");0==e.length?(c=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG, +"defs"):c.createElement("defs"),null!=a.firstChild?a.insertBefore(c,a.firstChild):a.appendChild(c)):c=e[0];c.appendChild(f);b||(d=null!=d?d:a.getElementsByTagName("g")[0],null!=d&&(d.setAttribute("filter","url(#"+this.shadowId+")"),isNaN(parseInt(a.getAttribute("width")))||(a.setAttribute("width",parseInt(a.getAttribute("width"))+6),a.setAttribute("height",parseInt(a.getAttribute("height"))+6),d=a.getAttribute("viewBox"),null!=d&&0<d.length&&(d=d.split(" "),3<d.length&&(w=parseFloat(d[2])+6,h=parseFloat(d[3])+ +6,a.setAttribute("viewBox",d[0]+" "+d[1]+" "+w+" "+h))))));return f};Graph.prototype.setShadowVisible=function(a,d){mxClient.IS_SVG&&(d=null!=d?d:!0,(this.shadowVisible=a)?this.view.getDrawPane().setAttribute("filter","url(#"+this.shadowId+")"):this.view.getDrawPane().removeAttribute("filter"),d&&this.fireEvent(new mxEventObject("shadowVisibleChanged")))};Graph.prototype.selectUnlockedLayer=function(){if(null==this.defaultParent){var a=this.model.getChildCount(this.model.root),d,b=0;do d=this.model.getChildAt(this.model.root, +b);while(b++<a&&"1"==mxUtils.getValue(this.getCellStyle(d),"locked","0"));null!=d&&this.setDefaultParent(d)}};mxStencilRegistry.libraries.mockup=[SHAPES_PATH+"/mockup/mxMockupButtons.js"];mxStencilRegistry.libraries.arrows2=[SHAPES_PATH+"/mxArrows.js"];mxStencilRegistry.libraries.atlassian=[STENCIL_PATH+"/atlassian.xml",SHAPES_PATH+"/mxAtlassian.js"];mxStencilRegistry.libraries.bpmn=[SHAPES_PATH+"/bpmn/mxBpmnShape2.js",STENCIL_PATH+"/bpmn.xml"];mxStencilRegistry.libraries.dfd=[SHAPES_PATH+"/mxDFD.js"]; +mxStencilRegistry.libraries.er=[SHAPES_PATH+"/er/mxER.js"];mxStencilRegistry.libraries.flowchart=[SHAPES_PATH+"/mxFlowchart.js",STENCIL_PATH+"/flowchart.xml"];mxStencilRegistry.libraries.ios=[SHAPES_PATH+"/mockup/mxMockupiOS.js"];mxStencilRegistry.libraries.rackGeneral=[SHAPES_PATH+"/rack/mxRack.js",STENCIL_PATH+"/rack/general.xml"];mxStencilRegistry.libraries.rackF5=[STENCIL_PATH+"/rack/f5.xml"];mxStencilRegistry.libraries.lean_mapping=[SHAPES_PATH+"/mxLeanMap.js",STENCIL_PATH+"/lean_mapping.xml"]; +mxStencilRegistry.libraries.basic=[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/basic.xml"];mxStencilRegistry.libraries.ios7icons=[STENCIL_PATH+"/ios7/icons.xml"];mxStencilRegistry.libraries.ios7ui=[SHAPES_PATH+"/ios7/mxIOS7Ui.js",STENCIL_PATH+"/ios7/misc.xml"];mxStencilRegistry.libraries.android=[SHAPES_PATH+"/mxAndroid.js",STENCIL_PATH+"/android/android.xml"];mxStencilRegistry.libraries["electrical/transmission"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/transmission.xml"];mxStencilRegistry.libraries["electrical/logic_gates"]= +[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/logic_gates.xml"];mxStencilRegistry.libraries["electrical/abstract"]=[SHAPES_PATH+"/mxElectrical.js",STENCIL_PATH+"/electrical/abstract.xml"];mxStencilRegistry.libraries.infographic=[SHAPES_PATH+"/mxInfographic.js"];mxStencilRegistry.libraries["mockup/buttons"]=[SHAPES_PATH+"/mockup/mxMockupButtons.js"];mxStencilRegistry.libraries["mockup/containers"]=[SHAPES_PATH+"/mockup/mxMockupContainers.js"];mxStencilRegistry.libraries["mockup/forms"]= +[SHAPES_PATH+"/mockup/mxMockupForms.js"];mxStencilRegistry.libraries["mockup/graphics"]=[SHAPES_PATH+"/mockup/mxMockupGraphics.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/markup"]=[SHAPES_PATH+"/mockup/mxMockupMarkup.js"];mxStencilRegistry.libraries["mockup/misc"]=[SHAPES_PATH+"/mockup/mxMockupMisc.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/navigation"]=[SHAPES_PATH+"/mockup/mxMockupNavigation.js",STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/text"]= +[SHAPES_PATH+"/mockup/mxMockupText.js"];mxStencilRegistry.libraries.floorplan=[SHAPES_PATH+"/mxFloorplan.js",STENCIL_PATH+"/floorplan.xml"];mxStencilRegistry.libraries.bootstrap=[SHAPES_PATH+"/mxBootstrap.js",STENCIL_PATH+"/bootstrap.xml"];mxStencilRegistry.libraries.gmdl=[SHAPES_PATH+"/mxGmdl.js",STENCIL_PATH+"/gmdl.xml"];mxStencilRegistry.libraries.gcp2=[SHAPES_PATH+"/mxGCP2.js",STENCIL_PATH+"/gcp2.xml"];mxStencilRegistry.libraries.cabinets=[SHAPES_PATH+"/mxCabinets.js",STENCIL_PATH+"/cabinets.xml"]; +mxStencilRegistry.libraries.archimate=[SHAPES_PATH+"/mxArchiMate.js"];mxStencilRegistry.libraries.archimate3=[SHAPES_PATH+"/mxArchiMate3.js"];mxStencilRegistry.libraries.sysml=[SHAPES_PATH+"/mxSysML.js"];mxStencilRegistry.libraries.eip=[SHAPES_PATH+"/mxEip.js",STENCIL_PATH+"/eip.xml"];mxStencilRegistry.libraries.networks=[SHAPES_PATH+"/mxNetworks.js",STENCIL_PATH+"/networks.xml"];mxStencilRegistry.libraries.aws3d=[SHAPES_PATH+"/mxAWS3D.js",STENCIL_PATH+"/aws3d.xml"];mxStencilRegistry.libraries.aws4= +[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.veeam=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam.xml"];mxStencilRegistry.libraries.pid2inst=[SHAPES_PATH+"/pid2/mxPidInstruments.js"];mxStencilRegistry.libraries.pid2misc=[SHAPES_PATH+"/pid2/mxPidMisc.js",STENCIL_PATH+"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"]; +mxMarker.getPackageForType=function(a){var d=null;null!=a&&0<a.length&&("ER"==a.substring(0,2)?d="mxgraph.er":"sysML"==a.substring(0,5)&&(d="mxgraph.sysml"));return d};var x=mxMarker.createMarker;mxMarker.createMarker=function(a,d,b,c,f,e,g,l,n,p){if(null!=b&&null==mxMarker.markers[b]){var k=this.getPackageForType(b);null!=k&&mxStencilRegistry.getStencil(k)}return x.apply(this,arguments)};PrintDialog.prototype.create=function(a,d){function b(){B.value=Math.max(1,Math.min(l,Math.max(parseInt(B.value), +parseInt(u.value))));u.value=Math.max(1,Math.min(l,Math.min(parseInt(B.value),parseInt(u.value))))}function c(d){function b(d,b,f){var e=d.getGraphBounds(),g=0,l=0,n=ja.get(),p=1/d.pageScale,k=q.checked;if(k)var p=parseInt(Z.value),t=parseInt(G.value),p=Math.min(n.height*t/(e.height/d.view.scale),n.width*p/(e.width/d.view.scale));else p=parseInt(y.value)/(100*d.pageScale),isNaN(p)&&(c=1/d.pageScale,y.value="100 %");n=mxRectangle.fromRectangle(n);n.width=Math.ceil(n.width*c);n.height=Math.ceil(n.height* +c);p*=c;!k&&d.pageVisible?(e=d.getPageLayout(),g-=e.x*n.width,l-=e.y*n.height):k=!0;if(null==b){b=PrintDialog.createPrintPreview(d,p,n,0,g,l,k);b.pageSelector=!1;b.mathEnabled=!1;d=a.getCurrentFile();null!=d&&(b.title=d.getTitle());var u=b.writeHead;b.writeHead=function(d){u.apply(this,arguments);null!=a.editor.fontCss&&(d.writeln('<style type="text/css">'),d.writeln(a.editor.fontCss),d.writeln("</style>"))};if("undefined"!==typeof MathJax){var B=b.renderPage;b.renderPage=function(a,d,b,c,f,e){var g= +mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;var l=B.apply(this,arguments);mxClient.NO_FO=g;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:l.className="geDisableMathJax";return l}}b.open(null,null,f,!0)}else{n=d.background;if(null==n||""==n||n==mxConstants.NONE)n="#ffffff";b.backgroundColor=n;b.autoOrigin=k;b.appendGraph(d,p,g,l,f,!0)}return b}var c=parseInt(Q.value)/100;isNaN(c)&&(c=1,Q.value="100 %");var c=.75* +c,e=u.value,g=B.value,l=!k.checked,p=null;l&&(l=e==n&&g==n);if(!l&&null!=a.pages&&a.pages.length){var t=0,l=a.pages.length-1;k.checked||(t=parseInt(e)-1,l=parseInt(g)-1);for(var x=t;x<=l;x++){var m=a.pages[x],e=m==a.currentPage?f:null;if(null==e){var e=a.createTemporaryGraph(f.getStylesheet()),g=!0,t=!1,A=null,D=null;null==m.viewState&&null==m.root&&a.updatePageRoot(m);null!=m.viewState&&(g=m.viewState.pageVisible,t=m.viewState.mathEnabled,A=m.viewState.background,D=m.viewState.backgroundImage);e.background= +A;e.backgroundImage=null!=D?new mxImage(D.src,D.width,D.height):null;e.pageVisible=g;e.mathEnabled=t;var C=e.getGlobalVariable;e.getGlobalVariable=function(a){return"page"==a?m.getName():"pagenumber"==a?x+1:C.apply(this,arguments)};document.body.appendChild(e.container);a.updatePageRoot(m);e.model.setRoot(m.root)}p=b(e,p,x!=l);e!=f&&e.container.parentNode.removeChild(e.container)}}else p=b(f);null==p?a.handleError({message:mxResources.get("errorUpdatingPreview")}):(p.mathEnabled&&(l=p.wnd.document, +l.writeln('<script type="text/x-mathjax-config">'),l.writeln("MathJax.Hub.Config({"),l.writeln("showMathMenu: false,"),l.writeln('messageStyle: "none",'),l.writeln('jax: ["input/TeX", "input/MathML", "input/AsciiMath", "output/HTML-CSS"],'),l.writeln('extensions: ["tex2jax.js", "mml2jax.js", "asciimath2jax.js"],'),l.writeln('"HTML-CSS": {'),l.writeln("imageFont: null"),l.writeln("},"),l.writeln("TeX: {"),l.writeln('extensions: ["AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js"]'),l.writeln("},"), +l.writeln("tex2jax: {"),l.writeln('\tignoreClass: "geDisableMathJax"'),l.writeln("},"),l.writeln("asciimath2jax: {"),l.writeln('\tignoreClass: "geDisableMathJax"'),l.writeln("}"),l.writeln("});"),d&&(l.writeln("MathJax.Hub.Queue(function () {"),l.writeln("window.print();"),l.writeln("});")),l.writeln("\x3c/script>"),l.writeln('<script type="text/javascript" src="https://math.draw.io/current/MathJax.js">\x3c/script>')),p.closeDocument(),!p.mathEnabled&&d&&PrintDialog.printPreview(p))}var f=a.editor.graph, +e=document.createElement("div"),g=document.createElement("h3");g.style.width="100%";g.style.textAlign="center";g.style.marginTop="0px";mxUtils.write(g,d||mxResources.get("print"));e.appendChild(g);var l=1,n=1,p=document.createElement("div");p.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var k=document.createElement("input");k.style.cssText="margin-right:8px;margin-bottom:8px;";k.setAttribute("value","all");k.setAttribute("type","radio");k.setAttribute("name", +"pages-printdialog");p.appendChild(k);g=document.createElement("span");mxUtils.write(g,mxResources.get("printAllPages"));p.appendChild(g);mxUtils.br(p);var t=k.cloneNode(!0);k.setAttribute("checked","checked");t.setAttribute("value","range");p.appendChild(t);g=document.createElement("span");mxUtils.write(g,mxResources.get("pages")+":");p.appendChild(g);var u=document.createElement("input");u.style.cssText="margin:0 8px 0 8px;";u.setAttribute("value","1");u.setAttribute("type","number");u.setAttribute("min", +"1");u.style.width="50px";p.appendChild(u);g=document.createElement("span");mxUtils.write(g,mxResources.get("to"));p.appendChild(g);var B=u.cloneNode(!0);p.appendChild(B);mxEvent.addListener(u,"focus",function(){t.checked=!0});mxEvent.addListener(B,"focus",function(){t.checked=!0});mxEvent.addListener(u,"change",b);mxEvent.addListener(B,"change",b);if(null!=a.pages&&(l=a.pages.length,null!=a.currentPage))for(g=0;g<a.pages.length;g++)if(a.currentPage==a.pages[g]){n=g+1;u.value=n;B.value=n;break}u.setAttribute("max", +l);B.setAttribute("max",l);1<l&&e.appendChild(p);var x=document.createElement("div");x.style.marginBottom="10px";var m=document.createElement("input");m.style.marginRight="8px";m.setAttribute("value","adjust");m.setAttribute("type","radio");m.setAttribute("name","printZoom");x.appendChild(m);g=document.createElement("span");mxUtils.write(g,mxResources.get("adjustTo"));x.appendChild(g);var y=document.createElement("input");y.style.cssText="margin:0 8px 0 8px;";y.setAttribute("value","100 %");y.style.width= +"50px";x.appendChild(y);mxEvent.addListener(y,"focus",function(){m.checked=!0});e.appendChild(x);var p=p.cloneNode(!1),q=m.cloneNode(!0);q.setAttribute("value","fit");m.setAttribute("checked","checked");g=document.createElement("div");g.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";g.appendChild(q);p.appendChild(g);x=document.createElement("table");x.style.display="inline-block";var r=document.createElement("tbody"),v=document.createElement("tr"),z=v.cloneNode(!0), +H=document.createElement("td"),I=H.cloneNode(!0),aa=H.cloneNode(!0),L=H.cloneNode(!0),P=H.cloneNode(!0),da=H.cloneNode(!0);H.style.textAlign="right";L.style.textAlign="right";mxUtils.write(H,mxResources.get("fitTo"));var Z=document.createElement("input");Z.style.cssText="margin:0 8px 0 8px;";Z.setAttribute("value","1");Z.setAttribute("min","1");Z.setAttribute("type","number");Z.style.width="40px";I.appendChild(Z);g=document.createElement("span");mxUtils.write(g,mxResources.get("fitToSheetsAcross")); +aa.appendChild(g);mxUtils.write(L,mxResources.get("fitToBy"));var G=Z.cloneNode(!0);P.appendChild(G);mxEvent.addListener(Z,"focus",function(){q.checked=!0});mxEvent.addListener(G,"focus",function(){q.checked=!0});g=document.createElement("span");mxUtils.write(g,mxResources.get("fitToSheetsDown"));da.appendChild(g);v.appendChild(H);v.appendChild(I);v.appendChild(aa);z.appendChild(L);z.appendChild(P);z.appendChild(da);r.appendChild(v);r.appendChild(z);x.appendChild(r);p.appendChild(x);e.appendChild(p); +p=document.createElement("div");g=document.createElement("div");g.style.fontWeight="bold";g.style.marginBottom="12px";mxUtils.write(g,mxResources.get("paperSize"));p.appendChild(g);g=document.createElement("div");g.style.marginBottom="12px";var ja=PageSetupDialog.addPageFormatPanel(g,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);p.appendChild(g);g=document.createElement("span");mxUtils.write(g,mxResources.get("pageScale"));p.appendChild(g);var Q=document.createElement("input"); +Q.style.cssText="margin:0 8px 0 8px;";Q.setAttribute("value","100 %");Q.style.width="60px";p.appendChild(Q);e.appendChild(p);g=document.createElement("div");g.style.cssText="text-align:right;margin:48px 0 0 0;";p=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});p.className="geBtn";a.editor.cancelFirst&&g.appendChild(p);a.isOffline()||(x=mxUtils.button(mxResources.get("help"),function(){f.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),x.className="geBtn", +g.appendChild(x));PrintDialog.previewEnabled&&(x=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();c(!1)}),x.className="geBtn",g.appendChild(x));x=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();c(!0)});x.className="geBtn gePrimaryBtn";g.appendChild(x);a.editor.cancelFirst||g.appendChild(p);e.appendChild(g);this.container=e};var t=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page= +this.ui.currentPage);this.page!=this.ui.currentPage?null!=this.page.viewState&&(this.ignoreColor||(this.page.viewState.background=this.color),this.ignoreImage||(this.page.viewState.backgroundImage=this.image),null!=this.format&&(this.page.viewState.pageFormat=this.format),null!=this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled),null!=this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)):(t.apply(this,arguments),null!=this.mathEnabled&&this.mathEnabled!=this.ui.isMathEnabled()&& +(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled),null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=!this.shadowVisible))}})(); +var ErrorDialog=function(a,b,e,c,k,m,q,r,v,z,d){v=null!=v?v:!0;var f=document.createElement("div");f.style.textAlign="center";if(null!=b){var l=document.createElement("div");l.style.padding="0px";l.style.margin="0px";l.style.fontSize="18px";l.style.paddingBottom="16px";l.style.marginBottom="16px";l.style.borderBottom="1px solid #c0c0c0";l.style.color="gray";l.style.whiteSpace="nowrap";l.style.textOverflow="ellipsis";l.style.overflow="hidden";mxUtils.write(l,b);l.setAttribute("title",b);f.appendChild(l)}b= +document.createElement("div");b.style.padding="6px";b.innerHTML=e;f.appendChild(b);e=document.createElement("div");e.style.marginTop="16px";e.style.textAlign="center";null!=m&&(b=mxUtils.button(mxResources.get("tryAgain"),function(){a.hideDialog();m()}),b.className="geBtn",e.appendChild(b),e.style.textAlign="center");null!=z&&(z=mxUtils.button(z,function(){null!=d&&d()}),z.className="geBtn",e.appendChild(z));var n=mxUtils.button(c,function(){v&&a.hideDialog();null!=k&&k()});n.className="geBtn";e.appendChild(n); +null!=q&&(c=mxUtils.button(q,function(){v&&a.hideDialog();null!=r&&r()}),c.className="geBtn gePrimaryBtn",e.appendChild(c));this.init=function(){n.focus()};f.appendChild(e);this.container=f}; +(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,e,c){c.ui=a.ui;return e};a.afterDecode=function(a,e,c){c.previousColor=c.color;c.previousImage=c.image;c.previousFormat=c.format;null!=c.foldingEnabled&&(c.foldingEnabled=!c.foldingEnabled);null!=c.mathEnabled&&(c.mathEnabled=!c.mathEnabled);null!=c.shadowVisible&&(c.shadowVisible=!c.shadowVisible);return c};mxCodecRegistry.register(a)})();(function(){EditorUi.VERSION="@DRAWIO-VERSION@";EditorUi.compactUi="atlas"!=uiTheme;EditorUi.enableLogging="1"!=urlParams.stealth&&/.*\.draw\.io$/.test(window.location.hostname)&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost="https://www.draw.io";EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.logError=function(a,b,c,e,g){if("1"==urlParams.dev)EditorUi.debug("logError",a,b,c,e,g);else if(EditorUi.enableLogging)try{if(a!= +EditorUi.lastErrorMessage&&(null==a||null==b||-1==a.indexOf("Script error")&&-1==a.indexOf("extension"))&&null!=a&&0>a.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=a;var d=0<=a.indexOf("NetworkError")||0<=a.indexOf("SecurityError")||0<=a.indexOf("NS_ERROR_FAILURE")||0<=a.indexOf("out of memory")?"CONFIG":"SEVERE",f=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=f+"/log?severity="+d+"&v="+encodeURIComponent(EditorUi.VERSION)+"&msg=clientError:"+encodeURIComponent(a)+ +":url:"+encodeURIComponent(window.location.href)+":lnum:"+encodeURIComponent(c)+(null!=e?":colno:"+encodeURIComponent(e):"")+(null!=g&&null!=g.stack?"&stack="+encodeURIComponent(g.stack):"")}}catch(x){}};EditorUi.logEvent=function(a){if("1"==urlParams.dev)EditorUi.debug("logEvent",a);else if(EditorUi.enableLogging)try{var d=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=d+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=a?"&data="+encodeURIComponent(JSON.stringify(a)): +"")}catch(l){}};EditorUi.sendReport=function(a,b){if("1"==urlParams.dev)EditorUi.debug("sendReport",a);else if(EditorUi.enableLogging)try{b=null!=b?b:5E4,a.length>b&&(a=a.substring(0,b)+"\n...[SHORTENED]"),mxUtils.post("/email","version="+encodeURIComponent(EditorUi.VERSION)+"&url="+encodeURIComponent(window.location.href)+"&data="+encodeURIComponent(a))}catch(l){}};EditorUi.debug=function(){if(null!=window.console&&"1"==urlParams.test){for(var a=[(new Date).toISOString()],b=0;b<arguments.length;b++)a.push(arguments[b]); +console.log.apply(console,a)}};EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl="1"==urlParams.dev?"/cache":"https://rt.draw.io/cache";EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.scratchpadHelpLink="https://desk.draw.io/support/solutions/articles/16000042367";EditorUi.prototype.emptyDiagramXml='<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/></root></mxGraphModel>'; +EditorUi.prototype.emptyLibraryXml="<mxlibrary>[]</mxlibrary>";EditorUi.prototype.mode=null;EditorUi.prototype.sidebarFooterHeight=36;EditorUi.prototype.defaultCustomShapeStyle="shape=stencil(tZRtTsQgEEBPw1+DJR7AoN6DbWftpAgE0Ortd/jYRGq72R+YNE2YgTePloEJGWblgA18ZuKFDcMj5/Sm8boZq+BgjCX4pTyqk6ZlKROitwusOMXKQDODx5iy4pXxZ5qTHiFHawxB0JrQZH7lCabQ0Fr+XWC1/E8zcsT/gAi+Subo2/3Mh6d/oJb5nU1b5tW7r2knautaa3T+U32o7f7vZwpJkaNDLORJjcu7t59m2jXxqX9un+tt022acsfmoKaQZ+vhhswZtS6Ne/ThQGt0IV0N3Yyv6P3CeT9/tHO0XFI5cAE=);whiteSpace=wrap;html=1;"; +EditorUi.prototype.svgBrokenImage=Graph.createSvgImage(10,10,'<rect x="0" y="0" width="10" height="10" stroke="#000" fill="transparent"/><path d="m 0 0 L 10 10 L 0 10 L 10 0" stroke="#000" fill="transparent"/>');EditorUi.prototype.crossOriginImages=!mxClient.IS_IE;EditorUi.prototype.maxBackgroundSize=1600;EditorUi.prototype.maxImageSize=520;EditorUi.prototype.resampleThreshold=1E5;EditorUi.prototype.maxImageBytes=1E6;EditorUi.prototype.maxBackgroundBytes=25E5;EditorUi.prototype.currentFile=null;EditorUi.prototype.printPdfExport= +!1;EditorUi.prototype.pdfPageExport=!0;EditorUi.prototype.formatEnabled="0"!=urlParams.format;EditorUi.prototype.insertTemplateEnabled=!0;EditorUi.prototype.closableScratchpad=!0;(function(){EditorUi.prototype.useCanvasForExport=!1;EditorUi.prototype.jpgSupported=!1;try{var a=document.createElement("canvas");EditorUi.prototype.canvasSupported=!(!a.getContext||!a.getContext("2d"))}catch(g){}try{var b=document.createElement("canvas"),c=new Image;c.onload=function(){try{b.getContext("2d").drawImage(c, +0,0);var a=b.toDataURL("image/png");EditorUi.prototype.useCanvasForExport=null!=a&&6<a.length}catch(p){}};c.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(g){}try{b=document.createElement("canvas");b.width=b.height=1;var e= +b.toDataURL("image/jpeg");EditorUi.prototype.jpgSupported=null!==e.match("image/jpeg")}catch(g){}})();EditorUi.prototype.openLink=function(a,b,c){return this.editor.graph.openLink(a,b,c)};EditorUi.prototype.showSplash=function(a){};EditorUi.prototype.getLocalData=function(a,b){b(localStorage.getItem(a))};EditorUi.prototype.setLocalData=function(a,b,c){localStorage.setItem(a,b);null!=c&&c()};EditorUi.prototype.removeLocalData=function(a,b){localStorage.removeItem(a);b()};EditorUi.prototype.setMathEnabled= +function(a){this.editor.graph.mathEnabled=a;this.editor.updateGraphComponents();this.editor.graph.refresh();this.fireEvent(new mxEventObject("mathEnabledChanged"))};EditorUi.prototype.isMathEnabled=function(a){return this.editor.graph.mathEnabled};EditorUi.prototype.isAppCache=function(){return"1"==urlParams.appcache||this.isOfflineApp()};EditorUi.prototype.isOfflineApp=function(){return"1"==urlParams.offline};EditorUi.prototype.isOffline=function(){return this.isOfflineApp()||!navigator.onLine|| +"1"==urlParams.stealth};EditorUi.prototype.createSpinner=function(a,b,c){c=null!=c?c:24;var d=new Spinner({lines:12,length:c,width:Math.round(c/3),radius:Math.round(c/2),rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),f=d.spin;d.spin=function(c,e){var g=!1;this.active||(f.call(this,c),this.active=!0,null!=e&&(g=document.createElement("div"),g.style.position="absolute",g.style.whiteSpace="nowrap",g.style.background="#4B4243",g.style.color="white", +g.style.fontFamily="Helvetica, Arial",g.style.fontSize="9pt",g.style.padding="6px",g.style.paddingLeft="10px",g.style.paddingRight="10px",g.style.zIndex=2E9,g.style.left=Math.max(0,a)+"px",g.style.top=Math.max(0,b+70)+"px",mxUtils.setPrefixedStyle(g.style,"borderRadius","6px"),mxUtils.setPrefixedStyle(g.style,"transform","translate(-50%,-50%)"),"dark"!=uiTheme&&mxUtils.setPrefixedStyle(g.style,"boxShadow","2px 2px 3px 0px #ddd"),"..."!=e.substring(e.length-3,e.length)&&(e+="..."),g.innerHTML=e,c.appendChild(g), +d.status=g,mxClient.IS_VML&&(null==document.documentMode||8>=document.documentMode)&&(g.style.left=Math.round(Math.max(0,a-g.offsetWidth/2))+"px",g.style.top=Math.round(Math.max(0,b+70-g.offsetHeight/2))+"px")),this.pause=mxUtils.bind(this,function(){var a=function(){};this.active&&(a=mxUtils.bind(this,function(){this.spin(c,e)}));this.stop();return a}),g=!0);return g};var e=d.stop;d.stop=function(){e.call(this);this.active=!1;null!=d.status&&(d.status.parentNode.removeChild(d.status),d.status=null)}; +d.pause=function(){return function(){}};return d};EditorUi.parsePng=function(a,b,c){function d(a,d){var b=e;e+=d;return a.substring(b,e)}function f(a){a=d(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}var e=0;if(d(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=c&&c();else if(d(a,4),"IHDR"!=d(a,4))null!=c&&c();else{d(a,17);do{c=f(a);var l=d(a,4);if(null!=b&&b(e-8,l,c))break;value=d(a,c);d(a,4);if("IEND"==l)break}while(c)}}; +EditorUi.prototype.isCompatibleString=function(a){try{var d=mxUtils.parseXml(a),b=this.editor.extractGraphModel(d.documentElement,!0);return null!=b&&0==b.getElementsByTagName("parsererror").length}catch(n){}return!1};var a=EditorUi.prototype.extractGraphModelFromHtml;EditorUi.prototype.extractGraphModelFromHtml=function(d){var b=a.apply(this,arguments);if(null==b)try{var c=d.indexOf("<mxfile ");if(0<=c){var e=d.lastIndexOf("</mxfile>");e>c&&(b=d.substring(c,e+15).replace(/>/g,">").replace(/</g, +"<").replace(/\\"/g,'"').replace(/\n/g,""))}else var g=mxUtils.parseXml(d),p=this.editor.extractGraphModel(g.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility),b=null!=p?mxUtils.getXml(p):""}catch(B){}return b};EditorUi.prototype.validateFileData=function(a){if(null!=a&&0<a.length){var d=a.indexOf('<meta charset="utf-8">');0<=d&&(a=a.slice(0,d)+'<meta charset="utf-8"/>'+a.slice(d+23-1,a.length));a=this.editor.graph.zapGremlins(a)}return a};EditorUi.prototype.replaceFileData= +function(a){a=this.validateFileData(a);a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement:null;var d=null!=a?this.editor.extractGraphModel(a,!0):null;null!=d&&(a=d);if(null!=a){d=this.editor.graph;d.model.beginUpdate();try{var b=null!=this.pages?this.pages.slice():null,c=a.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<c.length||1==c.length&&c[0].hasAttribute("name")){this.fileNode=a;this.pages=null!=this.pages?this.pages:[];for(var e=c.length-1;0<=e;e--){var p=this.updatePageRoot(new DiagramPage(c[e])); +null==p.getName()&&p.setName(mxResources.get("pageWithNumber",[e+1]));d.model.execute(new ChangePage(this,p,0==e?p:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),d.model.execute(new ChangePage(this,this.currentPage,this.currentPage,0))),this.editor.setGraphXml(a),null!=this.currentPage&&(this.currentPage.root= +this.editor.graph.model.root);if(null!=b)for(e=0;e<b.length;e++)d.model.execute(new ChangePage(this,b[e],null))}finally{d.model.endUpdate()}}};EditorUi.prototype.createFileData=function(a,b,c,e,g,p,k,x,t,m){b=null!=b?b:this.editor.graph;g=null!=g?g:!1;t=null!=t?t:!0;var d,f=null;null==c||c.getMode()==App.MODE_DEVICE||c.getMode()==App.MODE_BROWSER?d="_blank":f=d=e;if(null==a)return"";var l=a;if("mxfile"!=l.nodeName.toLowerCase()){var n=b.zapGremlins(mxUtils.getXml(a)),l=b.compress(n);if(b.decompress(l)!= +n)return n;n=a.ownerDocument.createElement("diagram");n.setAttribute("id",Editor.guid());mxUtils.setTextContent(n,l);l=a.ownerDocument.createElement("mxfile");l.appendChild(n)}m?(l=l.cloneNode(!0),l.removeAttribute("userAgent"),l.removeAttribute("version"),l.removeAttribute("editor"),l.removeAttribute("type")):(l.removeAttribute("userAgent"),l.removeAttribute("version"),l.removeAttribute("editor"),l.removeAttribute("type"),l.setAttribute("modified",(new Date).toISOString()),l.setAttribute("host", +window.location.hostname),l.setAttribute("agent",navigator.userAgent),l.setAttribute("version",EditorUi.VERSION),l.setAttribute("etag",Editor.guid()),a=null!=c?c.getMode():this.mode,null!=a&&l.setAttribute("type",a));a=mxUtils.getXml(l);if(!p&&!g&&(k||null!=c&&/(\.html)$/i.test(c.getTitle())))a=this.getHtml2(mxUtils.getXml(l),b,null!=c?c.getTitle():null,d,f);else if(p||!g&&null!=c&&/(\.svg)$/i.test(c.getTitle()))null==c||c.getMode()!=App.MODE_DEVICE&&c.getMode()!=App.MODE_BROWSER||(e=null),a=this.getEmbeddedSvg(a, +b,e,null,x,t,f);return a};EditorUi.prototype.getXmlFileData=function(a,b){a=null!=a?a:!0;b=null!=b?b:!1;var d=this.editor.getGraphXml(a);if(a&&null!=this.fileNode&&null!=this.currentPage)if(d=this.editor.graph.compress(this.editor.graph.zapGremlins(mxUtils.getXml(d))),mxUtils.setTextContent(this.currentPage.node,d),d=this.fileNode.cloneNode(!1),b)d.appendChild(this.currentPage.node);else for(var c=0;c<this.pages.length;c++){if(this.currentPage!=this.pages[c]&&this.pages[c].needsUpdate){var f=(new mxCodec(mxUtils.createXmlDocument())).encode(new mxGraphModel(this.pages[c].root)); +this.editor.graph.saveViewState(this.pages[c].viewState,f);mxUtils.setTextContent(this.pages[c].node,this.editor.graph.compressNode(f));delete this.pages[c].needsUpdate}d.appendChild(this.pages[c].node)}return d};EditorUi.prototype.anonymizeString=function(a,b){for(var d=[],c=0;c<a.length;c++){var f=a.charAt(c);0<=EditorUi.ignoredAnonymizedChars.indexOf(f)?d.push(f):isNaN(parseInt(f))?f.toLowerCase()!=f?d.push(String.fromCharCode(65+Math.round(25*Math.random()))):f.toUpperCase()!=f?d.push(String.fromCharCode(97+ +Math.round(25*Math.random()))):/\s/.test(f)?d.push(" "):d.push("?"):d.push(b?"0":Math.round(9*Math.random()))}return d.join("")};EditorUi.prototype.anonymizePatch=function(a){if(null!=a[EditorUi.DIFF_INSERT])for(var d=0;d<a[EditorUi.DIFF_INSERT].length;d++)try{var b=mxUtils.parseXml(a[EditorUi.DIFF_INSERT][d].data).documentElement.cloneNode(!1);null!=b.getAttribute("name")&&b.setAttribute("name",this.anonymizeString(b.getAttribute("name")));a[EditorUi.DIFF_INSERT][d].data=mxUtils.getXml(b)}catch(p){a[EditorUi.DIFF_INSERT][d].data= +p.message}if(null!=a[EditorUi.DIFF_UPDATE]){for(var c in a[EditorUi.DIFF_UPDATE]){var e=a[EditorUi.DIFF_UPDATE][c];null!=e.name&&(e.name=this.anonymizeString(e.name));null!=e.cells&&(d=mxUtils.bind(this,function(a){var d=e.cells[a];if(null!=d){for(var b in d)null!=d[b].value&&(d[b].value="["+d[b].value.length+"]"),null!=d[b].xmlValue&&(d[b].xmlValue="["+d[b].xmlValue.length+"]"),null!=d[b].style&&(d[b].style="["+d[b].style.length+"]"),0==Object.keys(d[b]).length&&delete d[b];0==Object.keys(d).length&& +delete e.cells[a]}}),d(EditorUi.DIFF_INSERT),d(EditorUi.DIFF_UPDATE),0==Object.keys(e.cells).length&&delete e.cells);0==Object.keys(e).length&&delete a[EditorUi.DIFF_UPDATE][c]}0==Object.keys(a[EditorUi.DIFF_UPDATE]).length&&delete a[EditorUi.DIFF_UPDATE]}return a};EditorUi.prototype.anonymizeAttributes=function(a,b){if(null!=a.attributes)for(var d=0;d<a.attributes.length;d++)"as"!=a.attributes[d].name&&a.setAttribute(a.attributes[d].name,this.anonymizeString(a.attributes[d].value,b));if(null!=a.childNodes)for(d= +0;d<a.childNodes.length;d++)this.anonymizeAttributes(a.childNodes[d],b)};EditorUi.prototype.anonymizeNode=function(a,b){for(var d=a.getElementsByTagName("mxCell"),c=0;c<d.length;c++)null!=d[c].getAttribute("value")&&d[c].setAttribute("value","["+d[c].getAttribute("value").length+"]"),null!=d[c].getAttribute("xmlValue")&&d[c].setAttribute("xmlValue","["+d[c].getAttribute("xmlValue").length+"]"),null!=d[c].getAttribute("style")&&d[c].setAttribute("style","["+d[c].getAttribute("style").length+"]"),null!= +d[c].parentNode&&"root"!=d[c].parentNode.nodeName&&null!=d[c].parentNode.parentNode&&(d[c].setAttribute("id",d[c].parentNode.getAttribute("id")),d[c].parentNode.parentNode.replaceChild(d[c],d[c].parentNode));return a};EditorUi.prototype.synchronizeCurrentFile=function(a){var d=this.getCurrentFile();null!=d&&(d.savingFile?this.handleError({message:mxResources.get("busy")}):!a&&d.invalidChecksum?d.handleFileError(null,!0):this.spinner.spin(document.body,mxResources.get("updatingDocument"))&&(d.clearAutosave(), +this.editor.setStatus(""),a?d.reloadFile(mxUtils.bind(this,function(){d.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){d.handleFileError(a,!0)})):d.synchronizeFile(mxUtils.bind(this,function(){d.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){d.handleFileError(a,!0)}))))};EditorUi.prototype.getFileData=function(a,b,c,e,g,p,k,x,t){g=null!=g?g:!0;k=null!=k?k:this.getXmlFileData(g,null!=p?p:!1);t=null!=t?t:this.getCurrentFile();p=this.editor.graph; +if(null!=this.pages&&this.currentPage!=this.pages[0]&&(b||!a&&null!=t&&/(\.svg)$/i.test(t.getTitle()))){p=this.createTemporaryGraph(p.getStylesheet());var d=p.getGlobalVariable,f=this.pages[0];p.getGlobalVariable=function(a){return"page"==a?f.getName():"pagenumber"==a?1:d.apply(this,arguments)};document.body.appendChild(p.container);p.model.setRoot(f.root)}a=this.createFileData(k,p,t,window.location.href,a,b,c,e,g,x);p!=this.editor.graph&&p.container.parentNode.removeChild(p.container);return a}; +EditorUi.prototype.getHtml=function(a,b,c,e,g,p){p=null!=p?p:!0;var d=null,f=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=b){var d=p?b.getGraphBounds():b.getBoundingBox(b.getSelectionCells()),l=b.view.scale;p=Math.floor(d.x/l-b.view.translate.x);l=Math.floor(d.y/l-b.view.translate.y);d=b.background;null==g&&(b=this.getBasenames().join(";"),0<b.length&&(f=EditorUi.drawHost+"/embed.js?s="+b));a.setAttribute("x0",p);a.setAttribute("y0",l)}null!=a&&(a.setAttribute("pan","1"),a.setAttribute("zoom", +"1"),a.setAttribute("resize","0"),a.setAttribute("fit","0"),a.setAttribute("border","20"),a.setAttribute("links","1"),null!=e&&a.setAttribute("edit",e));null!=g&&(g=g.replace(/&/g,"&"));a=null!=a?this.editor.graph.zapGremlins(mxUtils.getXml(a)):"";e=this.editor.graph.compress(a);this.editor.graph.decompress(e)!=a&&(e=encodeURIComponent(a));return(null==g?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=g?' xmlns="http://www.w3.org/1999/xhtml">': +">")+"\n<head>\n"+(null==g?null!=c?"<title>"+mxUtils.htmlEntities(c)+"</title>\n":"":"<title>Draw.io Diagram</title>\n")+(null!=g?'<meta http-equiv="refresh" content="0;URL=\''+g+"'\"/>\n":"")+"</head>\n<body"+(null==g&&null!=d&&d!=mxConstants.NONE?' style="background-color:'+d+';">':">")+'\n<div class="mxgraph" style="position:relative;overflow:auto;width:100%;">\n<div style="width:1px;height:1px;overflow:hidden;">'+e+"</div>\n</div>\n"+(null==g?'<script type="text/javascript" src="'+f+'">\x3c/script>': +'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+g+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(a,b,c,e,g){b=EditorUi.drawHost+"/js/viewer.min.js";null!=g&&(g=g.replace(/&/g,"&"));a={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,resize:!0,xml:this.editor.graph.zapGremlins(a),toolbar:"pages zoom layers lightbox"};null!=this.pages&&null!= +this.currentPage&&(a.page=mxUtils.indexOf(this.pages,this.currentPage));return(null==g?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=g?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==g?null!=c?"<title>"+mxUtils.htmlEntities(c)+"</title>\n":"":"<title>Draw.io Diagram</title>\n")+(null!=g?'<meta http-equiv="refresh" content="0;URL=\''+g+"'\"/>\n":"")+'<meta charset="utf-8"/>\n</head>\n<body>\n<div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="'+ +mxUtils.htmlEntities(JSON.stringify(a))+'"></div>\n'+(null==g?'<script type="text/javascript" src="'+b+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+g+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.setFileData=function(a){a=this.validateFileData(a);this.pages=this.fileNode=this.currentPage=null;a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement: +null;var d=null!=a?a.getElementsByTagName("parsererror"):null;if(null!=d&&0<d.length)throw a=mxResources.get("invalidOrMissingFile"),d=d[0].getElementsByTagName("div"),0<d.length&&(a=mxUtils.getTextContent(d[0])),Error(a);d=null!=a?this.editor.extractGraphModel(a,!0):null;null!=d&&(a=d);if(null!=a&&"mxfile"==a.nodeName&&(d=a.getElementsByTagName("diagram"),"0"!=urlParams.pages||1<d.length||1==d.length&&d[0].hasAttribute("name"))){this.fileNode=a;this.pages=[];for(a=0;a<d.length;a++){null==d[a].getAttribute("id")&& +d[a].setAttribute("id",a);var b=new DiagramPage(d[a]);null==b.getName()&&b.setName(mxResources.get("pageWithNumber",[a+1]));this.pages.push(b)}this.currentPage=this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];a=this.currentPage.node}"0"!=urlParams.pages&&null==this.fileNode&&null!=a&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])), +this.pages=[this.currentPage]);this.editor.setGraphXml(a);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root)};EditorUi.prototype.getBaseFilename=function(a){var d=this.getCurrentFile(),d=null!=d&&null!=d.getTitle()?d.getTitle():this.defaultFilename;if(/(\.xml)$/i.test(d)||/(\.html)$/i.test(d)||/(\.svg)$/i.test(d)||/(\.png)$/i.test(d)||/(\.drawio)$/i.test(d))d=d.substring(0,d.lastIndexOf("."));!a&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&& +0<this.currentPage.getName().length&&(d=d+"-"+this.currentPage.getName());return d};EditorUi.prototype.downloadFile=function(a,b,c,e,g,p,k){try{e=null!=e?e:this.editor.graph.isSelectionEmpty();var d=this.getBaseFilename(!g),f=d+"."+a;if("xml"==a){var l='<?xml version="1.0" encoding="UTF-8"?>\n'+(b?mxUtils.getXml(this.editor.getGraphXml(e)):this.getFileData(!0,null,null,null,e,g));this.saveData(f,a,l,"text/xml")}else if("html"==a)l=this.getHtml2(this.getFileData(!0),this.editor.graph,d),this.saveData(f, +a,l,"text/html");else if("svg"!=a&&"xmlsvg"!=a||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==a?f=d+".png":"jpeg"==a&&(f=d+".jpg"),this.saveRequest(f,a,mxUtils.bind(this,function(d,b){try{var c=this.editor.graph.pageVisible;null!=p&&(this.editor.graph.pageVisible=p);var f=this.createDownloadRequest(d,a,e,b,k,g);this.editor.graph.pageVisible=c;return f}catch(C){this.handleError(C)}}));else{var n=null,B=mxUtils.bind(this,function(a){a.length<=MAX_REQUEST_SIZE?this.saveData(f, +"svg",a,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(n)}))});if("svg"==a){var m=this.editor.graph.background;if(k||m==mxConstants.NONE)m=null;var q=this.editor.graph.getSvg(m,null,null,null,null,e);c&&this.editor.graph.addSvgShadow(q);this.convertImages(q,mxUtils.bind(this,mxUtils.bind(this,function(a){this.spinner.stop();B('<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+ +mxUtils.getXml(a))})))}else f=d+".svg",n=this.getFileData(!1,!0,null,mxUtils.bind(this,function(a){this.spinner.stop();B(a)}),e)}}catch(S){this.handleError(S)}};EditorUi.prototype.createDownloadRequest=function(a,b,c,e,g,p){var d=this.editor.graph.getGraphBounds();c=this.getFileData(!0,null,null,null,c,0==p?!1:"xmlpng"!=b);var f="",l="";if(d.width*d.height>MAX_AREA||c.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};d="0";"pdf"==b&&0==p&&(l="&allPages=1");if("xmlpng"==b&& +(d="1",b="png",null!=this.pages&&null!=this.currentPage))for(p=0;p<this.pages.length;p++)if(this.pages[p]==this.currentPage){f="&from="+p;break}p=this.editor.graph.background;"png"==b&&g&&(p=mxConstants.NONE);return new mxXmlRequest(EXPORT_URL,"format="+b+f+l+"&bg="+(null!=p?p:mxConstants.NONE)+"&base64="+e+"&embedXml="+d+"&xml="+encodeURIComponent(c)+(null!=a?"&filename="+encodeURIComponent(a):""))};EditorUi.prototype.setMode=function(a,b){this.mode=a};EditorUi.prototype.loadDescriptor=function(a, +b,c){var d=window.location.hash,f=mxUtils.bind(this,function(c){var f=null!=a.data?a.data:"";null!=c&&0<c.length&&(0<f.length&&(f+="\n"),f+=c);c=new LocalFile(this,"csv"!=a.format&&0<f.length?f:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);c.getHash=function(){return d};this.fileLoaded(c);"csv"==a.format&&this.importCsv(f,mxUtils.bind(this,function(a){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")})); +if(null!=a.update){var e=null!=a.interval?parseInt(a.interval):6E4,g=null,l=mxUtils.bind(this,function(){var d=this.currentPage;mxUtils.post(a.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(a){d===this.currentPage&&(200<=a.getStatus()&&300>=a.getStatus()?(this.updateDiagram(a.getText()),p()):this.handleError({message:mxResources.get("error")+" "+a.getStatus()}))}),mxUtils.bind(this,function(a){this.handleError(a)}))}),p=mxUtils.bind(this,function(){window.clearTimeout(g); +g=window.setTimeout(l,e)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){p();l()}));p();l()}null!=b&&b()});if(null!=a.url&&0<a.url.length){var e=a.url;/^https?:\/\//.test(e)&&!this.isCorsEnabledForUrl(e)&&(e=PROXY_URL+"?url="+encodeURIComponent(e));this.loadUrl(e,mxUtils.bind(this,function(a){f(a)}),mxUtils.bind(this,function(a){null!=c&&c(a)}))}else f("")};EditorUi.prototype.updateDiagram=function(a){function d(a){var d=new mxCellOverlay(a.image||e.warningImage,a.tooltip,a.align, +a.valign,a.offset);d.addListener(mxEvent.CLICK,function(d,b){c.alert(a.tooltip)});return d}var b=null,c=this;if(null!=a&&0<a.length&&(b=mxUtils.parseXml(a),a=null!=b?b.documentElement:null,null!=a&&"updates"==a.nodeName)){var e=this.editor.graph,p=e.getModel();p.beginUpdate();var k=null;try{for(a=a.firstChild;null!=a;){if("update"==a.nodeName){var x=p.getCell(a.getAttribute("id"));if(null!=x){try{var t=a.getAttribute("value");if(null!=t){var m=mxUtils.parseXml(t).documentElement;if(null!=m)if("1"== +m.getAttribute("replace-value"))p.setValue(x,m);else for(var u=m.attributes,A=0;A<u.length;A++)e.setAttributeForCell(x,u[A].nodeName,0<u[A].nodeValue.length?u[A].nodeValue:null)}}catch(M){null!=window.console&&console.log("Error in value for "+x.id+": "+M)}try{var q=a.getAttribute("style");null!=q&&e.model.setStyle(x,q)}catch(M){null!=window.console&&console.log("Error in style for "+x.id+": "+M)}try{var r=a.getAttribute("icon");if(null!=r){var v=0<r.length?JSON.parse(r):null;null!=v&&v.append||e.removeCellOverlays(x); +null!=v&&e.addCellOverlay(x,d(v))}}catch(M){null!=window.console&&console.log("Error in icon for "+x.id+": "+M)}try{var z=a.getAttribute("geometry");if(null!=z){var z=JSON.parse(z),K=e.getCellGeometry(x);if(null!=K){K=K.clone();for(key in z){var E=parseFloat(z[key]);"dx"==key?K.x+=E:"dy"==key?K.y+=E:"dw"==key?K.width+=E:"dh"==key?K.height+=E:K[key]=parseFloat(z[key])}e.model.setGeometry(x,K)}}}catch(M){null!=window.console&&console.log("Error in icon for "+x.id+": "+M)}}}else if("model"==a.nodeName){for(var C= +a.firstChild;null!=C&&C.nodeType!=mxConstants.NODETYPE_ELEMENT;)C=C.nextSibling;null!=C&&(new mxCodec(a.firstChild)).decode(C,p)}else if("view"==a.nodeName){if(a.hasAttribute("scale")&&(e.view.scale=parseFloat(a.getAttribute("scale"))),a.hasAttribute("dx")||a.hasAttribute("dy"))e.view.translate=new mxPoint(parseFloat(a.getAttribute("dx")||0),parseFloat(a.getAttribute("dy")||0))}else"fit"==a.nodeName&&(k=a.hasAttribute("max-scale")?parseFloat(a.getAttribute("max-scale")):1);a=a.nextSibling}}finally{p.endUpdate()}null!= +k&&this.chromelessResize&&this.chromelessResize(!0,k)}return b};EditorUi.prototype.getCopyFilename=function(a,b){var d=null!=a&&null!=a.getTitle()?a.getTitle():this.defaultFilename,c="",f=d.lastIndexOf(".");0<=f&&(c=d.substring(f),d=d.substring(0,f));if(b)var e=new Date,f=e.getFullYear(),k=e.getMonth()+1,x=e.getDate(),t=e.getHours(),m=e.getMinutes(),e=e.getSeconds(),d=d+(" "+(f+"-"+k+"-"+x+"-"+t+"-"+m+"-"+e));return d=mxResources.get("copyOf",[d])+c};EditorUi.prototype.fileLoaded=function(a){var d= +this.getCurrentFile();this.fileLoadedError=null;this.setCurrentFile(null);var b=!1;this.hideDialog();null!=d&&(d.removeListener(this.descriptorChangedListener),d.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var c=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=d&&this.updateDocumentTitle();this.editor.graph.model.clear();this.editor.undoManager.clear();this.setBackgroundImage(null);null!=window.location.hash&&0<window.location.hash.length&& +(window.location.hash="");null!=this.fname&&(this.fnameWrapper.style.display="none",this.fname.innerHTML="",this.fname.setAttribute("title",mxResources.get("rename")));this.editor.setStatus("");this.updateUi();this.showSplash()});if(null!=a)try{mxClient.IS_SF&&"min"==uiTheme&&(this.diagramContainer.style.visibility="");this.openingFile=!0;this.setCurrentFile(a);a.addListener("descriptorChanged",this.descriptorChangedListener);a.addListener("contentChanged",this.descriptorChangedListener);a.open(); +delete this.openingFile;this.setGraphEnabled(!0);this.setMode(a.getMode());this.editor.graph.model.prefix=Editor.guid()+"-";this.editor.undoManager.clear();this.descriptorChanged();this.updateUi();a.isEditable()?a.isModified()?(a.addUnsavedStatus(),null!=a.backupPatch&&a.patch([a.backupPatch])):this.editor.setStatus(""):this.editor.setStatus('<span class="geStatusAlert" style="margin-left:8px;">'+mxUtils.htmlEntities(mxResources.get("readOnly"))+"</span>");!this.editor.isChromelessView()||this.editor.editable? +(this.editor.graph.selectUnlockedLayer(),this.showLayersDialog(),this.restoreLibraries(),window.self!==window.top&&window.focus()):this.editor.graph.isLightboxView()&&this.lightboxFit();this.chromelessResize&&this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));b=!0;this.isOffline()||null==a.getMode()||EditorUi.logEvent({category:"File",action:"open",label:a.getMode()+"."+a.getSize()});if(this.editor.editable&&this.mode==a.getMode()&&a.getMode()!=App.MODE_DEVICE&&null!=a.getMode())try{this.addRecent({id:a.getHash(), +title:a.getTitle(),mode:a.getMode()})}catch(g){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+1),mxSettings.save()}catch(g){}}catch(g){this.fileLoadedError=g;null!=window.console&&console.log("error in fileLoaded:",a,g);if(EditorUi.enableLogging&&!this.isOffline())try{(new Image).src=(null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"")+"/log?v="+encodeURIComponent(EditorUi.VERSION)+"&msg=errorInFileLoaded:url:"+encodeURIComponent(window.location.href)+(null!=g&&null!=g.message?":err:"+ +encodeURIComponent(g.message):"")+(null!=g&&null!=g.stack?"&stack="+encodeURIComponent(g.stack):"")}catch(p){}this.handleError(g,mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=d?this.fileLoaded(d):c()}),!0)}else c();return b};EditorUi.prototype.getHashValueForPages=function(a,b){var d=0,c=new mxGraphModel,f=new mxCodec;null!=b&&(b.byteCount=0, +b.attrCount=0,b.eltCount=0,b.nodeCount=0);for(var e=0;e<a.length;e++){this.updatePageRoot(a[e]);var k=a[e].node.cloneNode(!1);k.removeAttribute("name");c.root=a[e].root;var x=f.encode(c);this.editor.graph.saveViewState(a[e].viewState,x,!0);x.removeAttribute("pageWidth");x.removeAttribute("pageHeight");k.appendChild(x);null!=b&&(b.eltCount+=k.getElementsByTagName("*").length,b.nodeCount+=k.getElementsByTagName("mxCell").length);d=(d<<5)-d+this.hashValue(k,function(a,d,b,c){return!c||"mxGeometry"!= +a.nodeName&&"mxPoint"!=a.nodeName||"x"!=d&&"y"!=d&&"width"!=d&&"height"!=d?c&&"mxCell"==a.nodeName&&"previous"==d?null:b:Math.round(b)},b)<<0}return d};EditorUi.prototype.hashValue=function(a,b,c){var d=0;if(null!=a&&"object"===typeof a&&"number"===typeof a.nodeType&&"string"===typeof a.nodeName&&"function"===typeof a.getAttribute){null!=a.nodeName&&(d^=this.hashValue(a.nodeName,b,c));if(null!=a.attributes){null!=c&&(c.attrCount+=a.attributes.length);for(var f=0;f<a.attributes.length;f++){var e=a.attributes[f].name, +l=null!=b?b(a,e,a.attributes[f].value,!0):a.attributes[f].value;null!=l&&(d^=this.hashValue(e,b,c)+this.hashValue(l,b,c))}}if(null!=a.childNodes)for(f=0;f<a.childNodes.length;f++)d=(d<<5)-d+this.hashValue(a.childNodes[f],b,c)<<0}else if(null!=a&&"function"!==typeof a){a=String(a);b=0;null!=c&&(c.byteCount+=a.length);for(f=0;f<a.length;f++)b=(b<<5)-b+a.charCodeAt(f)<<0;d^=b}return d};EditorUi.prototype.descriptorChanged=function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary= +function(a,b,c,e,g,p,k){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||mxClient.IS_CHROMEAPP};EditorUi.prototype.toggleScratchpad=function(){this.isScratchpadEnabled()&&(null==this.scratchpad?this.getLocalData(".scratchpad",mxUtils.bind(this,function(a){null==a&&(a=this.emptyLibraryXml);this.loadLibrary(new StorageLibrary(this,a,".scratchpad"))})):this.closeLibrary(this.scratchpad))};EditorUi.prototype.createLibraryDataFromImages=function(a){var d=mxUtils.createXmlDocument(), +b=d.createElement("mxlibrary");mxUtils.setTextContent(b,JSON.stringify(a));d.appendChild(b);return mxUtils.getXml(d)};EditorUi.prototype.closeLibrary=function(a){null!=a&&(this.removeLibrarySidebar(a.getHash()),a.constructor!=LocalLibrary&&mxSettings.removeCustomLibrary(a.getHash()),".scratchpad"==a.title&&(this.scratchpad=null))};EditorUi.prototype.removeLibrarySidebar=function(a){var d=this.sidebar.palettes[a];if(null!=d){for(var b=0;b<d.length;b++)d[b].parentNode.removeChild(d[b]);delete this.sidebar.palettes[a]}}; +EditorUi.prototype.repositionLibrary=function(a){var d=this.sidebar.container;if(null==a){var b=this.sidebar.palettes["L.scratchpad"];null==b&&(b=this.sidebar.palettes.search);null!=b&&(a=b[b.length-1].nextSibling)}a=null!=a?a:d.firstChild.nextSibling.nextSibling;var b=d.lastChild,c=b.previousSibling;d.insertBefore(b,a);d.insertBefore(c,b)};EditorUi.prototype.loadLibrary=function(a){var d=mxUtils.parseXml(a.getData());if("mxlibrary"==d.documentElement.nodeName){var b=JSON.parse(mxUtils.getTextContent(d.documentElement)); +this.libraryLoaded(a,b,d.documentElement.getAttribute("title"))}else throw{message:mxResources.get("notALibraryFile")};};EditorUi.prototype.getLibraryStorageHint=function(a){return""};EditorUi.prototype.libraryLoaded=function(a,b,c){if(null!=this.sidebar){a.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(a.getHash());".scratchpad"==a.title&&(this.scratchpad=a);var d=this.sidebar.palettes[a.getHash()],d=null!=d?d[d.length-1].nextSibling:null;this.removeLibrarySidebar(a.getHash());var f=null, +e=mxUtils.bind(this,function(d,b){0==d.length&&a.isEditable()?(null==f&&(f=document.createElement("div"),mxUtils.setPrefixedStyle(f.style,"borderRadius","6px"),f.style.border="3px dotted lightGray",f.style.textAlign="center",f.style.padding="8px",f.style.color="#B3B3B3",mxUtils.write(f,mxResources.get("dragElementsHere"))),b.appendChild(f)):this.addLibraryEntries(d,b)});if(null!=this.sidebar&&null!=b)for(var l=0;l<b.length;l++)mxUtils.bind(this,function(a){var d=a.data;null!=d&&null!=a.title?this.sidebar.addEntry(a.title, +mxUtils.bind(this,function(){d=this.convertDataUri(d);var b="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==a.aspect&&(b+="aspect=fixed;");return this.sidebar.createVertexTemplate(b+"image="+d,a.w,a.h,"",a.title||"",!1,!1,!0)})):null!=a.xml&&null!=a.title&&this.sidebar.addEntry(a.title,mxUtils.bind(this,function(){var d=this.stringToCells(this.editor.graph.decompress(a.xml));return this.sidebar.createVertexTemplateFromCells(d,a.w,a.h,a.title||"",!0,!1,!0)}))})(b[l]); +c=null!=c&&0<c.length?c:a.getTitle();var k=this.sidebar.addPalette(a.getHash(),c,!0,mxUtils.bind(this,function(a){e(b,a)}));this.repositionLibrary(d);var t=k.parentNode.previousSibling;c=t.getAttribute("title");null!=c&&0<c.length&&".scratchpad"!=a.title&&t.setAttribute("title",this.getLibraryStorageHint(a)+"\n"+c);var m=document.createElement("div");m.style.position="absolute";m.style.right="0px";m.style.top="0px";m.style.padding="8px";mxClient.IS_QUIRKS||8==document.documentMode||(m.style.backgroundColor= +"inherit");t.style.position="relative";var u=document.createElement("img");u.setAttribute("src",Dialog.prototype.closeImage);u.setAttribute("title",mxResources.get("close"));u.setAttribute("valign","absmiddle");u.setAttribute("border","0");u.style.margin="0 3px";var q=null;if(".scratchpad"!=a.title||this.closableScratchpad)m.appendChild(u),mxEvent.addListener(u,"click",mxUtils.bind(this,function(d){if(!mxEvent.isConsumed(d)){var b=mxUtils.bind(this,function(){this.closeLibrary(a)});null!=q?this.confirm(mxResources.get("allChangesLost"), +null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b();mxEvent.consume(d)}}));if(a.isEditable()){var D=this.editor.graph,r=null,v=mxUtils.bind(this,function(d){this.showLibraryDialog(a.getTitle(),k,b,a,a.getMode());mxEvent.consume(d)}),z=mxUtils.bind(this,function(d){a.setModified(!0);a.isAutosave()?(null!=r&&null!=r.parentNode&&r.parentNode.removeChild(r),r=u.cloneNode(!1),r.setAttribute("src",Editor.spinImage),r.setAttribute("title",mxResources.get("saving")),r.style.cursor="default", +r.style.marginRight="2px",r.style.marginTop="-2px",m.insertBefore(r,m.firstChild),t.style.paddingRight=18*m.childNodes.length+"px",this.saveLibrary(a.getTitle(),b,a,a.getMode(),!0,!0,function(){null!=r&&null!=r.parentNode&&(r.parentNode.removeChild(r),t.style.paddingRight=18*m.childNodes.length+"px")})):null==q&&(q=u.cloneNode(!1),q.setAttribute("src",IMAGE_PATH+"/download.png"),q.setAttribute("title",mxResources.get("save")),m.insertBefore(q,m.firstChild),mxEvent.addListener(q,"click",mxUtils.bind(this, +function(d){this.saveLibrary(a.getTitle(),b,a,a.getMode(),a.constructor==LocalLibrary,!0,function(){null==q||a.isModified()||(t.style.paddingRight=18*m.childNodes.length+"px",q.parentNode.removeChild(q),q=null)});mxEvent.consume(d)})),t.style.paddingRight=18*m.childNodes.length+"px")}),K=mxUtils.bind(this,function(a,d,c,e){a=D.cloneCells(mxUtils.sortCells(D.model.getTopmostCells(a)));for(var g=0;g<a.length;g++){var l=D.getCellGeometry(a[g]);null!=l&&l.translate(-d.x,-d.y)}k.appendChild(this.sidebar.createVertexTemplateFromCells(a, +d.width,d.height,e||"",!0,!1,!1));a={xml:this.editor.graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(a))),w:d.width,h:d.height};null!=e&&(a.title=e);b.push(a);z(c);null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null)}),E=mxUtils.bind(this,function(a){if(D.isSelectionEmpty())D.getRubberband().isActive()?(D.getRubberband().execute(a),D.getRubberband().reset()):this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var d= +D.getSelectionCells(),b=D.view.getBounds(d),c=D.view.scale;b.x/=c;b.y/=c;b.width/=c;b.height/=c;b.x-=D.view.translate.x;b.y-=D.view.translate.y;K(d,b)}mxEvent.consume(a)});k.style.border="3px solid transparent";mxEvent.addGestureListeners(k,function(){},mxUtils.bind(this,function(a){D.isMouseDown&&null!=D.panningManager&&null!=D.graphHandler.shape&&(D.graphHandler.shape.node.style.visibility="hidden",null!=f?f.style.border="3px dotted rgb(254, 137, 12)":k.style.border="3px dotted rgb(254, 137, 12)", +k.style.cursor="copy",D.panningManager.stop(),D.autoScroll=!1,null!=D.graphHandler.guide&&D.graphHandler.guide.setVisible(!1),null!=D.graphHandler.hint&&(D.graphHandler.hint.style.visibility="hidden"),mxEvent.consume(a))}),mxUtils.bind(this,function(a){D.isMouseDown&&null!=D.panningManager&&null!=D.graphHandler&&(k.style.border="3px solid transparent",null!=f&&(f.style.border="3px dotted lightGray"),k.style.cursor="default",this.sidebar.showTooltips=!0,D.panningManager.stop(),D.graphHandler.reset(), +D.isMouseDown=!1,D.autoScroll=!0,E(a),mxEvent.consume(a))}));mxEvent.addListener(k,"mouseleave",mxUtils.bind(this,function(a){D.isMouseDown&&null!=D.graphHandler.shape&&(D.graphHandler.shape.node.style.visibility="visible",k.style.border="3px solid transparent",k.style.cursor="",D.autoScroll=!0,null!=D.graphHandler.guide&&D.graphHandler.guide.setVisible(!0),null!=D.graphHandler.hint&&(D.graphHandler.hint.style.visibility="visible"),null!=f&&(f.style.border="3px dotted lightGray"))}));Graph.fileSupport&& +(mxEvent.addListener(k,"dragover",mxUtils.bind(this,function(a){null!=f?f.style.border="3px dotted rgb(254, 137, 12)":k.style.border="3px dotted rgb(254, 137, 12)";a.dataTransfer.dropEffect="copy";k.style.cursor="copy";this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()})),mxEvent.addListener(k,"drop",mxUtils.bind(this,function(a){k.style.border="3px solid transparent";k.style.cursor="";null!=f&&(f.style.border="3px dotted lightGray");0<a.dataTransfer.files.length&&this.importFiles(a.dataTransfer.files, +0,0,this.maxImageSize,mxUtils.bind(this,function(d,c,g,l,p,n,t,u,m){if(null!=d&&"image/"==c.substring(0,6))d="shape=image;verticalLabelPosition=bottom;verticalAlign=top;aspect=fixed;image="+this.convertDataUri(d),d=[new mxCell("",new mxGeometry(0,0,p,n),d)],d[0].vertex=!0,K(d,new mxRectangle(0,0,p,n),a,mxEvent.isAltDown(a)?null:t.substring(0,t.lastIndexOf(".")).replace(/_/g," ")),null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null);else{var B=!1,x=mxUtils.bind(this,function(d, +c){if(null!=d&&"text/xml"==c){var g=mxUtils.parseXml(d);if("mxlibrary"==g.documentElement.nodeName)try{var l=JSON.parse(mxUtils.getTextContent(g.documentElement));e(l,k);b=b.concat(l);z(a);this.spinner.stop();B=!0}catch(G){}else if("mxfile"==g.documentElement.nodeName)try{for(var p=g.documentElement.getElementsByTagName("diagram"),g=0;g<p.length;g++){var l=mxUtils.getTextContent(p[g]),n=this.stringToCells(this.editor.graph.decompress(l)),t=this.editor.graph.getBoundingBoxFromGeometry(n);K(n,new mxRectangle(0, +0,t.width,t.height),a)}B=!0}catch(G){null!=window.console&&console.log("error in drop handler:",G)}}B||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null)});null!=m&&null!=t&&(/(\.v(dx|sdx?))($|\?)/i.test(t)||/(\.vs(x|sx?))($|\?)/i.test(t))?this.importVisio(m,function(a){x(a,"text/xml")},null,t):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,t)&&null!=m?this.parseFile(m, +mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?x(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):x(d,c)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(k,"dragleave",function(a){null!=f?f.style.border="3px dotted lightGray":(k.style.border="3px solid transparent",k.style.cursor="");a.stopPropagation();a.preventDefault()})); +u=u.cloneNode(!1);u.setAttribute("src",Editor.editImage);u.setAttribute("title",mxResources.get("edit"));m.insertBefore(u,m.firstChild);mxEvent.addListener(u,"click",v);mxEvent.addListener(k,"dblclick",function(a){mxEvent.getSource(a)==k&&v(a)});c=u.cloneNode(!1);c.setAttribute("src",Editor.plusImage);c.setAttribute("title",mxResources.get("add"));m.insertBefore(c,m.firstChild);mxEvent.addListener(c,"click",E);this.isOffline()||".scratchpad"!=a.title||null==EditorUi.scratchpadHelpLink||(c=document.createElement("span"), +c.setAttribute("title",mxResources.get("help")),c.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;",mxUtils.write(c,"?"),mxEvent.addGestureListeners(c,mxUtils.bind(this,function(a){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(a)})),m.insertBefore(c,m.firstChild))}t.appendChild(m);t.style.paddingRight=18*m.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(a,b){for(var d=0;d<a.length;d++){var c=a[d],f=c.data;if(null!=f){var f=this.convertDataUri(f), +e="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==c.aspect&&(e+="aspect=fixed;");b.appendChild(this.sidebar.createVertexTemplate(e+"image="+f,c.w,c.h,"",c.title||"",!1,!1,!0))}else null!=c.xml&&(f=this.stringToCells(this.editor.graph.decompress(c.xml)),0<f.length&&b.appendChild(this.sidebar.createVertexTemplateFromCells(f,c.w,c.h,c.title||"",!0,!1,!0)))}};EditorUi.prototype.getResource=function(a){return null!=a?a[mxLanguage]||a.main:null};EditorUi.prototype.footerHeight= +0;"1"==urlParams.offline||EditorUi.isElectronApp||("1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64),EditorUi.prototype.createFooter=function(){return document.getElementById("geFooter")});EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground=mxClient.IS_QUIRKS?"none":"linear-gradient(rgb(255, 255, 255) 0px, rgb(242, 242, 242) 100%)",Toolbar.prototype.selectedBackground= +"rgb(242, 242, 242)"),Editor.prototype.initialTopSpacing=3,EditorUi.prototype.menubarHeight=41,EditorUi.prototype.toolbarHeight=38,EditorUi.prototype.hsplitPosition=188,Sidebar.prototype.thumbWidth=46,Sidebar.prototype.thumbHeight=46,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2):"dark"==uiTheme&&(mxClient.link("stylesheet",STYLE_PATH+"/dark.css"),Dialog.backdropColor="#2a2a2a",Graph.prototype.defaultThemeName="darkTheme",Graph.prototype.defaultPageBackgroundColor= +"#2a2a2a",Graph.prototype.defaultPageBorderColor="#505759",Graph.prototype.svgShadowColor="#e0e0e0",Graph.prototype.svgShadowOpacity="0.6",Graph.prototype.svgShadowSize="0.8",Graph.prototype.svgShadowBlur="1.4",Format.prototype.inactiveTabBackgroundColor="black",BaseFormatPanel.prototype.buttonBackgroundColor="#2a2a2a",Sidebar.prototype.dragPreviewBorder="1px dashed #cccccc",mxGraphHandler.prototype.previewColor="#cccccc",StyleFormatPanel.prototype.defaultStrokeColor="#cccccc",mxClient.IS_SVG&&(Editor.helpImage= +"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAP1BMVEUAAAD///////////////////////////////////////////////////////////////////////////////9Du/pqAAAAFXRSTlMAT30qCJRBboyDZyCgRzUUdF46MJlgXETgAAAAeklEQVQY022O2w4DIQhEQUURda/9/28tUO2+7CQS5sgQ4F1RapX78YUwRqQjTU8ILqQfKerTKTvACJ4nLX3krt+8aS82oI8aQC4KavRgtvEW/mDvsICgA03PSGRr79MqX1YPNIxzjyqtw8ZnnRo4t5a5undtJYRywau+ds4Cyza3E6YAAAAASUVORK5CYII=",Editor.checkmarkImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAMAAACeyVWkAAAARVBMVEUAAACZmZkICAgEBASNjY2Dg4MYGBiTk5N5eXl1dXVmZmZQUFBCQkI3NzceHh4MDAykpKSJiYl+fn5sbGxaWlo/Pz8SEhK96uPlAAAAAXRSTlMAQObYZgAAAE5JREFUGNPFzTcSgDAQQ1HJGUfy/Y9K7V1qeOUfzQifCQZai1XHaz11LFysbDbzgDSSWMZiETz3+b8yNUc/MMsktxuC8XQBSncdLwz+8gCCggGXzBcozAAAAABJRU5ErkJggg=="))}; +EditorUi.initTheme();EditorUi.prototype.hideFooter=function(){var a=document.getElementById("geFooter");null!=a&&(this.footerHeight=0,a.style.display="none",this.refresh())};EditorUi.prototype.showFooter=function(a){var d=document.getElementById("geFooter");null!=d&&(this.footerHeight=a,d.style.display="inline",this.refresh())};EditorUi.prototype.showImageDialog=function(a,b,c,e,g){a=new ImageDialog(this,a,b,c,e,g);this.showDialog(a.container,Graph.fileSupport?440:360,Graph.fileSupport?200:90,!0, +!0);a.init()};EditorUi.prototype.showBackgroundImageDialog=function(a){a=null!=a?a:mxUtils.bind(this,function(a){a=new ChangePageSetup(this,null,a);a.ignoreColor=!0;this.editor.graph.model.execute(a)});var d=new BackgroundImageDialog(this,mxUtils.bind(this,function(d){a(d)}));this.showDialog(d.container,360,200,!0,!0);d.init()};EditorUi.prototype.showLibraryDialog=function(a,b,c,e,g){a=new LibraryDialog(this,a,b,c,e,g);this.showDialog(a.container,640,440,!0,!1,mxUtils.bind(this,function(a){a&&null== +this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));a.init()};var b=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(a){var d=b.apply(this,arguments);this.editor.graph.addListener("viewStateChanged",mxUtils.bind(this,function(a){this.editor.graph.isSelectionEmpty()&&d.refresh()}));return d};EditorUi.prototype.createSidebarFooterContainer=function(){var a=this.createDiv("geSidebarContainer");a.style.position="absolute";a.style.overflow="hidden";a.style.borderWidth= +"3px";var b=document.createElement("a");b.className="geTitle";b.style.height="100%";b.style.paddingTop="9px";b.innerHTML='<span style="font-size:18px;margin-right:5px;">+</span>';mxUtils.write(b,mxResources.get("moreShapes")+"...");mxEvent.addListener(b,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(b,"click",mxUtils.bind(this,function(a){this.actions.get("shapes").funct();mxEvent.consume(a)}));a.appendChild(b);return a};EditorUi.prototype.handleError= +function(a,b,c,e){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},f=null!=a&&null!=a.error?a.error:a;if(null!=f||null!=b){a=mxUtils.htmlEntities(mxResources.get("unknownError"));var l=mxResources.get("ok"),n=null;b=null!=b?b:mxResources.get("error");if(null!=f)if(null!=f.retry&&(l=mxResources.get("cancel"),n=function(){d();f.retry()}),404==f.code||404==f.status||403==f.code){a=403==f.code?null!=f.message?mxUtils.htmlEntities(f.message):mxUtils.htmlEntities(mxResources.get("accessDenied")): +mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied"));var k=window.location.hash;null!=k&&"#G"==k.substring(0,2)&&(k=k.substring(2),a+='<br><a href="https://drive.google.com/open?id='+k+'" target="_blank">'+mxUtils.htmlEntities(mxResources.get("tryOpeningViaThisPage"))+"</a>")}else null!=f.message?a=mxUtils.htmlEntities(f.message):null!=f.response&&null!=f.response.error?a=mxUtils.htmlEntities(f.response.error):"undefined"!==window.App&&(f.code==App.ERROR_TIMEOUT?a=mxUtils.htmlEntities(mxResources.get("timeout")): +f.code==App.ERROR_BUSY&&(a=mxUtils.htmlEntities(mxResources.get("busy"))));this.showError(b,a,l,c,n,null,null,null,null,null,null,null,e?c:null)}else null!=c&&c()};EditorUi.prototype.showError=function(a,b,c,e,g,p,k,m,t,q,u,A,r){a=new ErrorDialog(this,a,b,c||mxResources.get("ok"),e,g,p,k,A,m,t);this.showDialog(a.container,q||340,u||(null!=b&&120<b.length?180:150),!0,!1,r);a.init()};EditorUi.prototype.alert=function(a,b){var d=new ErrorDialog(this,null,a,mxResources.get("ok"),b);this.showDialog(d.container, +340,100,!0,!1);d.init()};EditorUi.prototype.confirm=function(a,b,c,e,g,p){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){};a=new ConfirmDialog(this,a,function(){d();null!=b&&b()},function(){d();null!=c&&c()},e,g);this.showDialog(a.container,340,90,!0,p);a.init()};EditorUi.prototype.setCurrentFile=function(a){this.currentFile=a};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP|| +!this.editor.graph.mathEnabled&&this.useCanvasForExport};EditorUi.prototype.createSvgDataUri=function(a){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(a)))};EditorUi.prototype.createImageDataUri=function(a,b,c){var d=a.toDataURL("image/"+c);if(6>=d.length||d==a.cloneNode(!1).toDataURL("image/"+c))throw{message:"Invalid image"};null!=b&&(d=this.writeGraphModelToPng(d,"zTXt","mxGraphModel",atob(this.editor.graph.compress(b))));return d};EditorUi.prototype.saveCanvas=function(a, +b,c){var d="jpeg"==c?"jpg":c,f=this.getBaseFilename()+"."+d;a=this.createImageDataUri(a,b,c);this.saveData(f,d,a.substring(a.lastIndexOf(",")+1),"image/"+c,!0)};EditorUi.prototype.isLocalFileSave=function(){return"remote"!=urlParams.save&&(mxClient.IS_IE||"undefined"!==typeof window.Blob&&"undefined"!==typeof window.URL)&&9!=document.documentMode&&8!=document.documentMode&&7!=document.documentMode&&!mxClient.IS_QUIRKS||this.isOfflineApp()||mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(a, +b){var d=new TextareaDialog(this,a,b,null,null,mxResources.get("close"));d.textarea.style.width="600px";d.textarea.style.height="380px";this.showDialog(d.container,620,460,!0,!0);d.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(a,b,c,e,g){if(window.Blob&&navigator.msSaveOrOpenBlob)a=e?this.base64ToBlob(a,c):new Blob([a],{type:c}),navigator.msSaveOrOpenBlob(a,b);else if(mxClient.IS_IE)c=window.open("about:blank","_blank"),null==c?mxUtils.popup(a,!0):(c.document.write(a), +c.document.close(),c.document.execCommand("SaveAs",!0,b),c.close());else{var d=document.createElement("a"),f=!mxClient.IS_SF&&0>navigator.userAgent.indexOf("PaleMoon/")&&"undefined"!==typeof d.download;if(mxClient.IS_GC)var l=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./),f=65==(l?parseInt(l[2],10):!1)?!1:f;if(f||this.isOffline()){d.href=URL.createObjectURL(e?this.base64ToBlob(a,c):new Blob([a],{type:c}));f?d.download=b:d.setAttribute("target","_blank");document.body.appendChild(d);try{window.setTimeout(function(){URL.revokeObjectURL(d.href)}, +0),d.click(),d.parentNode.removeChild(d)}catch(t){}}else this.createEchoRequest(a,b,c,e,g).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(a,b,c,e,g,p){a="xml="+encodeURIComponent(a);return new mxXmlRequest(SAVE_URL,a+(null!=c?"&mime="+c:"")+(null!=g?"&format="+g:"")+(null!=p?"&base64="+p:"")+(null!=b?"&filename="+encodeURIComponent(b):"")+(e?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(a,b){b=b||"";for(var d=atob(a),c=d.length,f=Math.ceil(c/1024),e=Array(f), +k=0;k<f;++k){for(var m=1024*k,t=Math.min(m+1024,c),q=Array(t-m),u=0;m<t;++u,++m)q[u]=d[m].charCodeAt(0);e[k]=new Uint8Array(q)}return new Blob(e,{type:b})};EditorUi.prototype.saveLocalFile=function(a,b,c,e,g,p,k){p=null!=p?p:!1;k=null!=k?k:"vsdx"!=g&&(!mxClient.IS_IOS||!navigator.standalone);g=this.getServiceCount(p);b=new CreateDialog(this,b,mxUtils.bind(this,function(d,b){try{if("_blank"==b)if(null==c||"image/"!=c.substring(0,6)||"image/svg"==c.substring(0,9)&&!mxClient.IS_SVG){var f=window.open("about:blank"); +null==f?mxUtils.popup(a,!0):(f.document.write(mxUtils.htmlEntities(a,!1)),f.document.close())}else this.openInNewWindow(a,c,e);else b==App.MODE_DEVICE||"download"==b?this.doSaveLocalFile(a,d,c,e):null!=d&&0<d.length&&this.pickFolder(b,mxUtils.bind(this,function(f){try{this.exportFile(a,d,c,e,b,f)}catch(A){this.handleError(A)}}))}catch(u){this.handleError(u)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,p,k,null,1<g,4<g&&(!p||6>g)?3:4, +a,c,e);this.showDialog(b.container,420,1==g?160:4<g?390:270,!0,!0);b.init()};EditorUi.prototype.openInNewWindow=function(a,b,c){if(mxClient.IS_GC||mxClient.IS_EDGE||11==document.documentMode||10==document.documentMode){var d=window.open("about:blank");null==d||null==d.document?mxUtils.popup(a,!0):("image/svg+xml"==b?d.document.write("<html>"+a+"</html>"):d.document.write('<html><img src="data:'+b+(c?";base64,"+a:";charset=utf8,"+encodeURIComponent(a))+'"/></html>'),d.document.close())}else d=window.open("data:"+ +b+(c?";base64,"+a:";charset=utf8,"+encodeURIComponent(a))),null!=d&&null!=d.document||mxUtils.popup(a,!0)};var e=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.addChromelessToolbarItems=function(a){if(this.isExportToCanvas()){this.exportDialog=null;var d=a(mxUtils.bind(this,function(a){var b=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",b);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog= +null)});if(null!=this.exportDialog)b.apply(this);else{this.exportDialog=document.createElement("div");var c=d.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";this.exportDialog.style.fontFamily="Helvetica,Arial";this.exportDialog.style.backgroundColor="#000000";this.exportDialog.style.width="50px";this.exportDialog.style.height="50px";this.exportDialog.style.padding="4px 2px 4px 2px"; +this.exportDialog.style.color="#ffffff";mxUtils.setOpacity(this.exportDialog,70);this.exportDialog.style.left=c.left+"px";this.exportDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";c=mxUtils.getCurrentStyle(this.editor.graph.container);this.exportDialog.style.zIndex=c.zIndex;var f=new Spinner({lines:8,length:6,width:5,radius:6,rotate:0,color:"#fff",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"28px",zIndex:2E9});f.spin(this.exportDialog); +this.exportToCanvas(mxUtils.bind(this,function(a){f.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var d=this.createImageDataUri(a,null,"png");a=document.createElement("img");a.style.maxWidth="140px";a.style.maxHeight="140px";a.style.cursor="pointer";a.style.backgroundColor="white";a.setAttribute("title",mxResources.get("openInNewWindow"));a.setAttribute("border","0");a.setAttribute("src",d);this.exportDialog.appendChild(a); +mxEvent.addListener(a,"click",mxUtils.bind(this,function(){this.openInNewWindow(d.substring(d.indexOf(",")+1),"image/png",!0);b.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));mxEvent.addListener(this.editor.graph.container,"click",b);document.body.appendChild(this.exportDialog)}mxEvent.consume(a)}),Editor.cameraLargeImage,mxResources.get("export"))}e.apply(this,arguments)};EditorUi.prototype.saveData=function(a,b, +c,e,g){this.isLocalFileSave()?this.saveLocalFile(c,a,e,g,b):this.saveRequest(a,b,mxUtils.bind(this,function(a,d){return this.createEchoRequest(c,a,e,g,b,d)}),c,g,e)};EditorUi.prototype.saveRequest=function(a,b,c,e,g,p,k){k=null!=k?k:!mxClient.IS_IOS||!navigator.standalone;var d=this.getServiceCount(!1);a=new CreateDialog(this,a,mxUtils.bind(this,function(a,d){if("_blank"==d||null!=a&&0<a.length){var f=c("_blank"==d?null:a,d==App.MODE_DEVICE||"download"==d||null==d||"_blank"==d?"0":"1");null!=f&&(d== +App.MODE_DEVICE||"download"==d||"_blank"==d?f.simulate(document,"_blank"):this.pickFolder(d,mxUtils.bind(this,function(c){p=null!=p?p:"pdf"==b?"application/pdf":"image/"+b;if(null!=e)try{this.exportFile(e,a,p,!0,d,c)}catch(D){this.handleError(D)}else this.spinner.spin(document.body,mxResources.get("saving"))&&f.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=f.getStatus()&&299>=f.getStatus())try{this.exportFile(f.getText(),a,p,!0,d,c)}catch(D){this.handleError(D)}else this.handleError({message:mxResources.get("errorSavingFile")})}), +function(a){this.spinner.stop();this.handleError(a)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,k,null,1<d,4<d?3:4,e,p,g);this.showDialog(a.container,380,1==d?160:4<d?390:270,!0,!0);a.init()};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(a,b,c,e,g,p){};EditorUi.prototype.pickFolder=function(a,b,c){b(null)};EditorUi.prototype.exportSvg=function(a,b,c,e,g,p,k, +m,t,q){if(this.spinner.spin(document.body,mxResources.get("export"))){var d=this.editor.graph.isSelectionEmpty();c=null!=c?c:d;d=b?null:this.editor.graph.background;d==mxConstants.NONE&&(d=null);null==d&&0==b&&(d="#ffffff");var f=this.editor.graph.getSvg(d,a,k,m,null,c,null,null,"blank"==q?"_blank":"self"==q?"_top":null);e&&this.editor.graph.addSvgShadow(f);var l=this.getBaseFilename()+".svg",n=mxUtils.bind(this,function(a){this.spinner.stop();g&&a.setAttribute("content",this.getFileData(!0,null, +null,null,c,t));if(null!=this.editor.fontCss){var d=a.ownerDocument,d=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG,"style"):d.createElement("style");d.setAttribute("type","text/css");mxUtils.setTextContent(d,this.editor.fontCss);a.getElementsByTagName("defs")[0].appendChild(d)}var b='<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a);this.isLocalFileSave()||b.length<=MAX_REQUEST_SIZE?this.saveData(l,"svg",b,"image/svg+xml"): +this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});this.convertMath(this.editor.graph,f,!1,mxUtils.bind(this,function(){p?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.convertImages(f,n,this.thumbImageCache)):n(f)}))}};EditorUi.prototype.addRadiobox=function(a,b,c,e,g,p,k){return this.addCheckbox(a,c,e,g,p,k,!0,b)};EditorUi.prototype.addCheckbox=function(a,b,c,e,g,p,k,m){p=null!=p?p:!0;var d=document.createElement("input"); +d.style.marginRight="8px";d.style.marginTop="16px";d.setAttribute("type",k?"radio":"checkbox");k="geCheckbox-"+Editor.guid();d.id=k;null!=m&&d.setAttribute("name",m);c&&(d.setAttribute("checked","checked"),d.defaultChecked=!0);e&&d.setAttribute("disabled","disabled");p&&(a.appendChild(d),c=document.createElement("label"),mxUtils.write(c,b),c.setAttribute("for",k),a.appendChild(c),g||mxUtils.br(a));return d};EditorUi.prototype.addEditButton=function(a,b){var d=this.addCheckbox(a,mxResources.get("edit")+ +":",!0,null,!0);d.style.marginLeft="24px";var c=this.getCurrentFile(),f="";null!=c&&c.getMode()!=App.MODE_DEVICE&&c.getMode()!=App.MODE_BROWSER&&(f=window.location.href);var e=document.createElement("select");e.style.width="120px";e.style.marginLeft="8px";e.style.marginRight="10px";e.className="geBtn";c=document.createElement("option");c.setAttribute("value","blank");mxUtils.write(c,mxResources.get("makeCopy"));e.appendChild(c);c=document.createElement("option");c.setAttribute("value","custom");mxUtils.write(c, +mxResources.get("custom")+"...");e.appendChild(c);a.appendChild(e);mxEvent.addListener(e,"change",mxUtils.bind(this,function(){if("custom"==e.value){var a=new FilenameDialog(this,f,mxResources.get("ok"),function(a){null!=a?f=a:e.value="blank"},mxResources.get("url"),null,null,null,null,function(){e.value="blank"});this.showDialog(a.container,300,80,!0,!1);a.init()}}));mxEvent.addListener(d,"change",mxUtils.bind(this,function(){d.checked&&(null==b||b.checked)?e.removeAttribute("disabled"):e.setAttribute("disabled", +"disabled")}));mxUtils.br(a);return{getLink:function(){return d.checked?"blank"===e.value?"_blank":f:null},getEditInput:function(){return d},getEditSelect:function(){return e}}};EditorUi.prototype.addLinkSection=function(a,b){function d(){k.innerHTML='<div style="width:100%;height:100%;box-sizing:border-box;'+(null!=e&&e!=mxConstants.NONE?"border:1px solid black;background-color:"+e:"background-position:center center;background-repeat:no-repeat;background-image:url('"+Dialog.prototype.closeImage+ +"')")+';"></div>'}mxUtils.write(a,mxResources.get("links")+":");var c=document.createElement("select");c.style.width="100px";c.style.marginLeft="8px";c.style.marginRight="10px";c.className="geBtn";var f=document.createElement("option");f.setAttribute("value","auto");mxUtils.write(f,mxResources.get("automatic"));c.appendChild(f);f=document.createElement("option");f.setAttribute("value","blank");mxUtils.write(f,mxResources.get("openInNewWindow"));c.appendChild(f);f=document.createElement("option"); +f.setAttribute("value","self");mxUtils.write(f,mxResources.get("openInThisWindow"));c.appendChild(f);b&&(f=document.createElement("option"),f.setAttribute("value","frame"),mxUtils.write(f,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),c.appendChild(f));a.appendChild(c);mxUtils.write(a,mxResources.get("borderColor")+":");var e="#0000ff",k=null,k=mxUtils.button("",mxUtils.bind(this,function(a){this.pickColor(e||"none",function(a){e=a;d()});mxEvent.consume(a)}));d();k.style.padding= +mxClient.IS_FF?"4px 2px 4px 2px":"4px";k.style.marginLeft="4px";k.style.height="22px";k.style.width="22px";k.style.position="relative";k.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";k.className="geColorBtn";a.appendChild(k);mxUtils.br(a);return{getColor:function(){return e},getTarget:function(){return c.value},focus:function(){c.focus()}}};EditorUi.prototype.createLink=function(a,b,c,e,g,k,m,x){var d=this.getCurrentFile(),f=[];e&&(f.push("lightbox=1"),"auto"!=a&&f.push("target="+ +a),null!=b&&b!=mxConstants.NONE&&f.push("highlight="+("#"==b.charAt(0)?b.substring(1):b)),null!=g&&0<g.length&&f.push("edit="+encodeURIComponent(g)),k&&f.push("layers=1"),this.editor.graph.foldingEnabled&&f.push("nav=1"));c&&(a=this.getSelectedPageIndex(),0<a&&f.push("page="+a));a=!0;null!=m?c="#U"+encodeURIComponent(m):(d=this.getCurrentFile(),x||null==d||d.constructor!=window.DriveFile?c="#R"+encodeURIComponent(c?this.getFileData(!0,null,null,null,null,null,null,!0):this.editor.graph.compress(mxUtils.getXml(this.editor.getGraphXml()))): +(c="#"+d.getHash(),a=!1));a&&null!=d&&null!=d.getTitle()&&d.getTitle()!=this.defaultFilename&&f.push("title="+encodeURIComponent(d.getTitle()));return(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host+"/")+(0<f.length?"?"+f.join("&"):"")+c};EditorUi.prototype.createHtml=function(a,b,c,e,g,k,m,x,t,q,u){this.getBasenames();var d={};""!=g&&g!=mxConstants.NONE&&(d.highlight=g);"auto"!==e&&(d.target=e);t||(d.lightbox= +!1);d.nav=this.editor.graph.foldingEnabled;c=parseInt(c);isNaN(c)||100==c||(d.zoom=c/100);c=[];m&&(c.push("pages"),d.resize=!0,null!=this.pages&&null!=this.currentPage&&(d.page=mxUtils.indexOf(this.pages,this.currentPage)));b&&(c.push("zoom"),d.resize=!0);x&&c.push("layers");0<c.length&&(t&&c.push("lightbox"),d.toolbar=c.join(" "));null!=q&&0<q.length&&(d.edit=q);null!=a?d.url=a:d.xml=this.getFileData(!0,null,null,null,null,!m);b='<div class="mxgraph" style="'+(k?"max-width:100%;":"")+(""!=c?"border:1px solid transparent;": +"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(d))+'"></div>';a=null!=a?"&fetch="+encodeURIComponent(a):"";u(b,'<script type="text/javascript" src="'+(0<a.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.drawHost+"/embed2.js?")+a:"1"==urlParams.dev?"https://test.draw.io/js/viewer.min.js":window.VIEWER_URL?window.VIEWER_URL:EditorUi.drawHost+"/js/viewer.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(a,b,c,e){var d=document.createElement("div"); +d.style.whiteSpace="nowrap";var f=document.createElement("h3");mxUtils.write(f,mxResources.get("html"));f.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(f);var l=document.createElement("div");l.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var k=document.createElement("input");k.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";k.setAttribute("value","url");k.setAttribute("type","radio");k.setAttribute("name", +"type-embedhtmldialog");f=k.cloneNode(!0);f.setAttribute("value","copy");l.appendChild(f);var n=document.createElement("span");mxUtils.write(n,mxResources.get("includeCopyOfMyDiagram"));l.appendChild(n);mxUtils.br(l);l.appendChild(k);n=document.createElement("span");mxUtils.write(n,mxResources.get("publicDiagramUrl"));l.appendChild(n);var m=this.getCurrentFile();null==c&&null!=m&&m.constructor==window.DriveFile&&(n=document.createElement("a"),n.style.paddingLeft="12px",n.style.color="gray",n.setAttribute("href", +"javascript:void(0);"),mxUtils.write(n,mxResources.get("share")),l.appendChild(n),mxEvent.addListener(n,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(m.getId())})));f.setAttribute("checked","checked");null==c&&k.setAttribute("disabled","disabled");d.appendChild(l);var u=this.addLinkSection(d),q=this.addCheckbox(d,mxResources.get("zoom"),!0,null,!0);mxUtils.write(d,":");var r=document.createElement("input");r.setAttribute("type","text");r.style.marginRight="16px"; +r.style.width="60px";r.style.marginLeft="4px";r.style.marginRight="12px";r.value="100%";d.appendChild(r);var v=this.addCheckbox(d,mxResources.get("fit"),!0),l=null!=this.pages&&1<this.pages.length,z=z=this.addCheckbox(d,mxResources.get("allPages"),l,!l),N=this.addCheckbox(d,mxResources.get("layers"),!0),K=this.addCheckbox(d,mxResources.get("lightbox"),!0),E=this.addEditButton(d,K),C=E.getEditInput();C.style.marginBottom="16px";mxEvent.addListener(K,"change",function(){K.checked?C.removeAttribute("disabled"): +C.setAttribute("disabled","disabled");C.checked&&K.checked?E.getEditSelect().removeAttribute("disabled"):E.getEditSelect().setAttribute("disabled","disabled")});a=new CustomDialog(this,d,mxUtils.bind(this,function(){e(k.checked?c:null,q.checked,r.value,u.getTarget(),u.getColor(),v.checked,z.checked,N.checked,K.checked,E.getLink())}),null,a,b);this.showDialog(a.container,340,384,!0,!0);f.focus()};EditorUi.prototype.showPublishLinkDialog=function(a,b,c,e,g,k){var d=document.createElement("div");d.style.whiteSpace= +"nowrap";var f=document.createElement("h3");mxUtils.write(f,a||mxResources.get("link"));f.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(f);var l=this.getCurrentFile(),f="https://desk.draw.io/support/solutions/articles/16000051941";a=0;if(null!=l&&l.constructor==window.DriveFile&&!b){a=80;var f="https://desk.draw.io/support/solutions/articles/16000039384",p=document.createElement("div");p.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;"; +var n=document.createElement("div");n.style.whiteSpace="normal";mxUtils.write(n,mxResources.get("linkAccountRequired"));p.appendChild(n);n=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(l.getId())}));n.style.marginTop="12px";n.className="geBtn";p.appendChild(n);d.appendChild(p);n=document.createElement("a");n.style.paddingLeft="12px";n.style.color="gray";n.style.fontSize="11px";n.setAttribute("href","javascript:void(0);");mxUtils.write(n,mxResources.get("check")); +p.appendChild(n);mxEvent.addListener(n,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(a){this.spinner.stop();a=new ErrorDialog(this,null,mxResources.get(null!=a?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(a.container,300,80,!0,!1);a.init()}))}))}var m=null,q=null;if(null!=c||null!=e)a+=30,mxUtils.write(d,mxResources.get("width")+":"),m=document.createElement("input"), +m.setAttribute("type","text"),m.style.marginRight="16px",m.style.width="50px",m.style.marginLeft="6px",m.style.marginRight="16px",m.style.marginBottom="10px",m.value="100%",d.appendChild(m),mxUtils.write(d,mxResources.get("height")+":"),q=document.createElement("input"),q.setAttribute("type","text"),q.style.width="50px",q.style.marginLeft="6px",q.style.marginBottom="10px",q.value=e+"px",d.appendChild(q),mxUtils.br(d);var r=this.addLinkSection(d,k);c=null!=this.pages&&1<this.pages.length;var v=null; +if(null==l||l.constructor!=window.DriveFile||b)v=this.addCheckbox(d,mxResources.get("allPages"),c,!c);var z=this.addCheckbox(d,mxResources.get("lightbox"),!0),K=this.addEditButton(d,z),E=K.getEditInput(),C=this.addCheckbox(d,mxResources.get("layers"),!0);C.style.marginLeft=E.style.marginLeft;C.style.marginBottom="16px";C.style.marginTop="8px";mxEvent.addListener(z,"change",function(){z.checked?(C.removeAttribute("disabled"),E.removeAttribute("disabled")):(C.setAttribute("disabled","disabled"),E.setAttribute("disabled", +"disabled"));E.checked&&z.checked?K.getEditSelect().removeAttribute("disabled"):K.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,mxUtils.bind(this,function(){g(r.getTarget(),r.getColor(),null==v?!0:v.checked,z.checked,K.getLink(),C.checked,null!=m?m.value:null,null!=q?q.value:null)}),null,mxResources.get("create"),f);this.showDialog(b.container,340,254+a,!0,!0);null!=m?(m.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?m.select(): +document.execCommand("selectAll",!1,null)):r.focus()};EditorUi.prototype.showRemoteExportDialog=function(a,b,c,e){var d=document.createElement("div");d.style.whiteSpace="nowrap";var f=document.createElement("h3");mxUtils.write(f,mxResources.get("image"));f.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(f);var l=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),k=e?null:this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"), +!0),f=this.editor.graph,n=e?null:this.addCheckbox(d,mxResources.get("transparentBackground"),f.background==mxConstants.NONE||null==f.background);null!=n&&(n.style.marginBottom="16px");a=new CustomDialog(this,d,mxUtils.bind(this,function(){c(!l.checked,null!=k?k.checked:!1,null!=n?n.checked:!1)}),null,a,b);this.showDialog(a.container,300,e?100:186,!0,!0)};EditorUi.prototype.showExportDialog=function(a,b,c,e,g,k,m,q){m=null!=m?m:!0;var d=document.createElement("div");d.style.whiteSpace="nowrap";var f= +this.editor.graph,l="jpeg"==q?196:300,p=document.createElement("h3");mxUtils.write(p,a);p.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";d.appendChild(p);mxUtils.write(d,mxResources.get("zoom")+":");var n=document.createElement("input");n.setAttribute("type","text");n.style.marginRight="16px";n.style.width="60px";n.style.marginLeft="4px";n.style.marginRight="12px";n.value=this.lastExportZoom||"100%";d.appendChild(n);mxUtils.write(d,mxResources.get("borderWidth")+":"); +var x=document.createElement("input");x.setAttribute("type","text");x.style.marginRight="16px";x.style.width="60px";x.style.marginLeft="4px";x.value=this.lastExportBorder||"0";d.appendChild(x);mxUtils.br(d);var B=this.addCheckbox(d,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=q),r=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,f.isSelectionEmpty()),v=document.createElement("input");v.style.marginTop="16px";v.style.marginRight="8px";v.style.marginLeft="24px";v.setAttribute("disabled", +"disabled");v.setAttribute("type","checkbox");k&&(d.appendChild(v),mxUtils.write(d,mxResources.get("crop")),mxUtils.br(d),l+=26,mxEvent.addListener(r,"change",function(){r.checked?v.removeAttribute("disabled"):v.setAttribute("disabled","disabled")}));f.isSelectionEmpty()||(v.setAttribute("checked","checked"),v.defaultChecked=!0);var E=this.addCheckbox(d,mxResources.get("shadow"),f.shadowVisible),C=document.createElement("input");C.style.marginTop="16px";C.style.marginRight="8px";C.setAttribute("type", +"checkbox");!this.isOffline()&&this.canvasSupported||C.setAttribute("disabled","disabled");b&&(d.appendChild(C),mxUtils.write(d,mxResources.get("embedImages")),mxUtils.br(d),l+=26);var z=this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),m,null,null,"jpeg"!=q),O=null!=this.pages&&1<this.pages.length,V=this.addCheckbox(d,O?mxResources.get("allPages"):"",O,!O,null,"jpeg"!=q);V.style.marginLeft="24px";V.style.marginBottom="16px";O||(V.style.display="none");mxEvent.addListener(z,"change",function(){z.checked&& +O?V.removeAttribute("disabled"):V.setAttribute("disabled","disabled")});m&&O||V.setAttribute("disabled","disabled");var T=document.createElement("select");T.style.maxWidth="260px";T.style.marginLeft="8px";T.style.marginRight="10px";T.className="geBtn";a=document.createElement("option");a.setAttribute("value","auto");mxUtils.write(a,mxResources.get("automatic"));T.appendChild(a);a=document.createElement("option");a.setAttribute("value","blank");mxUtils.write(a,mxResources.get("openInNewWindow"));T.appendChild(a); +a=document.createElement("option");a.setAttribute("value","self");mxUtils.write(a,mxResources.get("openInThisWindow"));T.appendChild(a);"svg"==q&&(mxUtils.write(d,mxResources.get("links")+":"),d.appendChild(T),mxUtils.br(d),mxUtils.br(d),l+=26);c=new CustomDialog(this,d,mxUtils.bind(this,function(){this.lastExportBorder=x.value;this.lastExportZoom=n.value;g(n.value,B.checked,!r.checked,E.checked,z.checked,C.checked,x.value,v.checked,!V.checked,T.value)}),null,c,e);this.showDialog(c.container,340, +l,!0,!0);n.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?n.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(a,b,c,e,g){var d=document.createElement("div");d.style.whiteSpace="nowrap";var f=this.editor.graph;if(null!=b){var l=document.createElement("h3");mxUtils.write(l,b);l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(l)}var k=this.addCheckbox(d,mxResources.get("fit"), +!0),n=this.addCheckbox(d,mxResources.get("shadow"),f.shadowVisible&&e,!e),m=this.addCheckbox(d,c),q=this.addCheckbox(d,mxResources.get("lightbox"),!0),r=this.addEditButton(d,q),v=r.getEditInput(),z=1<f.model.getChildCount(f.model.getRoot()),N=this.addCheckbox(d,mxResources.get("layers"),z,!z);N.style.marginLeft=v.style.marginLeft;N.style.marginBottom="12px";N.style.marginTop="8px";mxEvent.addListener(q,"change",function(){q.checked?(z&&N.removeAttribute("disabled"),v.removeAttribute("disabled")): +(N.setAttribute("disabled","disabled"),v.setAttribute("disabled","disabled"));v.checked&&q.checked?r.getEditSelect().removeAttribute("disabled"):r.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,mxUtils.bind(this,function(){a(k.checked,n.checked,m.checked,q.checked,r.getLink(),N.checked)}),null,mxResources.get("embed"),g);this.showDialog(b.container,280,280,!0,!0)};EditorUi.prototype.createEmbedImage=function(a,b,c,e,g,k,m,q){function d(d){var b=" ",l="";e&&(b=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+ +EditorUi.drawHost+"/?client=1&lightbox=1"+(g?"&edit=_blank":"")+(k?"&layers=1":"")+"');}})(this);\"",l+="cursor:pointer;");a&&(l+="max-width:100%;");var p="";c&&(p=' width="'+Math.round(f.width)+'" height="'+Math.round(f.height)+'"');m('<img src="'+d+'"'+p+(""!=l?' style="'+l+'"':"")+b+"/>")}var f=this.editor.graph.getGraphBounds();if(this.isExportToCanvas())this.exportToCanvas(mxUtils.bind(this,function(a){var b=e?this.getFileData(!0):null;a=this.createImageDataUri(a,b,"png");d(a)}),null,null,null, +mxUtils.bind(this,function(a){q({message:mxResources.get("unknownError")})}),null,!0,c?2:1,null,b);else if(b=this.getFileData(!0),f.width*f.height<=MAX_AREA&&b.length<=MAX_REQUEST_SIZE){var l="";c&&(l="&w="+Math.round(2*f.width)+"&h="+Math.round(2*f.height));var p=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(e?"1":"0")+l+"&xml="+encodeURIComponent(b));p.send(mxUtils.bind(this,function(){200<=p.getStatus()&&299>=p.getStatus()?d("data:image/png;base64,"+p.getText()):q({message:mxResources.get("unknownError")})}))}else q({message:mxResources.get("drawingTooLarge")})}; +EditorUi.prototype.createEmbedSvg=function(a,b,c,e,g,k,m){var d=this.editor.graph.getSvg(),f=d.getElementsByTagName("a");if(null!=f)for(var l=0;l<f.length;l++){var p=f[l].getAttribute("href");null!=p&&"#"==p.charAt(0)&&"_blank"==f[l].getAttribute("target")&&f[l].removeAttribute("target")}e&&d.setAttribute("content",this.getFileData(!0));b&&this.editor.graph.addSvgShadow(d);if(c){var n=" ",q="";e&&(n="onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+ +EditorUi.drawHost+"/?client=1&lightbox=1"+(g?"&edit=_blank":"")+(k?"&layers=1":"")+"');}})(this);\"",q+="cursor:pointer;");a&&(q+="max-width:100%;");this.convertImages(d,mxUtils.bind(this,function(a){m('<img src="'+this.createSvgDataUri(mxUtils.getXml(a))+'"'+(""!=q?' style="'+q+'"':"")+n+"/>")}))}else q="",e&&(d.setAttribute("onclick","(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&&src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&&!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('"+ +EditorUi.drawHost+"/?client=1&lightbox=1"+(g?"&edit=_blank":"")+(k?"&layers=1":"")+"');}}})(this);"),q+="cursor:pointer;"),a&&(a=parseInt(d.getAttribute("width")),b=parseInt(d.getAttribute("height")),d.setAttribute("viewBox","-0.5 -0.5 "+a+" "+b),q+="max-width:100%;max-height:"+b+"px;",d.removeAttribute("height")),""!=q&&d.setAttribute("style",q),m(mxUtils.getXml(d))};EditorUi.prototype.timeSince=function(a){a=Math.floor((new Date-a)/1E3);var d=Math.floor(a/31536E3);if(1<d)return d+" "+mxResources.get("years"); +d=Math.floor(a/2592E3);if(1<d)return d+" "+mxResources.get("months");d=Math.floor(a/86400);if(1<d)return d+" "+mxResources.get("days");d=Math.floor(a/3600);if(1<d)return d+" "+mxResources.get("hours");d=Math.floor(a/60);return 1<d?d+" "+mxResources.get("minutes"):1==d?d+" "+mxResources.get("minute"):null};EditorUi.prototype.convertMath=function(a,b,c,e){a.mathEnabled&&"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?(Editor.MathJaxRender(b),window.setTimeout(mxUtils.bind(this,function(){MathJax.Hub.Queue(mxUtils.bind(this, +function(){e()}))}),0)):e()};EditorUi.prototype.decodeNodeIntoGraph=function(a,b){if(null!=a){var d=null;if("diagram"==a.nodeName)d=a;else if("mxfile"==a.nodeName){var c=a.getElementsByTagName("diagram");if(0<c.length){var d=c[0],e=b.getGlobalVariable;b.getGlobalVariable=function(a){return"page"==a?d.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==a?1:e.apply(this,arguments)}}}null!=d&&(c=b.decompress(mxUtils.getTextContent(d)),null!=c&&0<c.length&&(a=mxUtils.parseXml(c).documentElement))}c= +this.editor.graph;try{this.editor.graph=b,this.editor.setGraphXml(a)}catch(p){}finally{this.editor.graph=c}return a};EditorUi.prototype.getEmbeddedPng=function(a,b,c){var d=this.editor.graph,e=null;if(null!=c&&0<c.length)d=this.createTemporaryGraph(this.editor.graph.getStylesheet()),document.body.appendChild(d.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(c).documentElement,!0),d),e=c;else if(null!=this.pages&&this.currentPage!=this.pages[0]){var d=this.createTemporaryGraph(d.getStylesheet()), +f=d.getGlobalVariable,l=this.pages[0];d.getGlobalVariable=function(a){return"page"==a?l.getName():"pagenumber"==a?1:f.apply(this,arguments)};document.body.appendChild(d.container);d.model.setRoot(l.root)}this.exportToCanvas(mxUtils.bind(this,function(c){try{null==e&&(e=this.getFileData(!0));var f=c.toDataURL("image/png"),f=this.writeGraphModelToPng(f,"zTXt","mxGraphModel",atob(this.editor.graph.compress(e)));a(f.substring(f.lastIndexOf(",")+1));d!=this.editor.graph&&d.container.parentNode.removeChild(d.container)}catch(y){null!= +b&&b(y)}}),null,null,null,mxUtils.bind(this,function(a){null!=b&&b(a)}),null,null,null,null,d.shadowVisible,null,d)};EditorUi.prototype.getEmbeddedSvg=function(a,b,c,e,g,k,m){m=b.background;m==mxConstants.NONE&&(m=null);k=b.getSvg(m,null,null,null,null,k);b.shadowVisible&&b.addSvgShadow(k);null!=a&&k.setAttribute("content",a);null!=c&&k.setAttribute("resource",c);if(null!=g)this.convertImages(k,mxUtils.bind(this,function(a){g((e?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+ +mxUtils.getXml(a))}));else return(e?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(k)};EditorUi.prototype.exportImage=function(a,b,c,e,g,k,m,q,t){t=null!=t?t:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var d=this.editor.graph.isSelectionEmpty();c=null!=c?c:d;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.exportToCanvas(mxUtils.bind(this,function(a){this.spinner.stop(); +try{this.saveCanvas(a,g?this.getFileData(!0,null,null,null,c,q):null,t)}catch(A){"Invalid image"==A.message?this.downloadFile(t):this.handleError(A)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),null,c,a||1,b,e,null,null,k,m)}catch(u){this.spinner.stop(),this.handleError(u)}}};EditorUi.prototype.loadFonts=function(a){if(null!=this.editor.fontCss&&null==this.editor.resolvedFontCss){var d=function(a){return a.replace(RegExp("^[\\s\"']+","g"), +"").replace(RegExp("[\\s\"']+$","g"),"")},b=this.editor.fontCss.split("url("),c=0,e={},k=mxUtils.bind(this,function(){if(0==c){for(var f=[b[0]],g=1;g<b.length;g++){var l=b[g].indexOf(")");f.push('url("');f.push(e[d(b[g].substring(0,l))]);f.push('"'+b[g].substring(l))}this.editor.resolvedFontCss=f.join("");a()}});if(0<b.length)for(var m=1;m<b.length;m++){var q=b[m].indexOf(")"),t=null,r=b[m].indexOf("format(",q);0<r&&(t=d(b[m].substring(r+7,b[m].indexOf(")",r))));mxUtils.bind(this,function(a){if(null== +e[a]){e[a]=a;c++;var d="application/x-font-ttf";if("svg"==t||/(\.svg)($|\?)/i.test(a))d="image/svg+xml";else if("otf"==t||"embedded-opentype"==t||/(\.otf)($|\?)/i.test(a))d="application/x-font-opentype";else if("woff"==t||/(\.woff)($|\?)/i.test(a))d="application/font-woff";else if("woff2"==t||/(\.woff2)($|\?)/i.test(a))d="application/font-woff2";else if("eot"==t||/(\.eot)($|\?)/i.test(a))d="application/vnd.ms-fontobject";else if("sfnt"==t||/(\.sfnt)($|\?)/i.test(a))d="application/font-sfnt";var b= +a;/^https?:\/\//.test(b)&&!this.isCorsEnabledForUrl(b)&&(b=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(b,mxUtils.bind(this,function(d){e[a]=d;c--;k()}),mxUtils.bind(this,function(a){c--;k()}),!0,null,"data:"+d+";charset=utf-8;base64,")}})(d(b[m].substring(0,q)),t)}}else a()};EditorUi.prototype.exportToCanvas=function(a,b,c,e,g,k,m,q,t,r,u,A,D,v){k=null!=k?k:!0;A=null!=A?A:this.editor.graph;D=null!=D?D:0;var d=t?null:A.background;d==mxConstants.NONE&&(d=null);null==d&&(d=e);null==d&&0==t&& +(d=this.editor.graph.defaultPageBackgroundColor);this.convertImages(A.getSvg(d,null,null,v,null,null!=m?m:!0,null,null,null,r),mxUtils.bind(this,function(c){var e=new Image;e.onload=mxUtils.bind(this,function(){try{var f=document.createElement("canvas"),l=parseInt(c.getAttribute("width")),p=parseInt(c.getAttribute("height"));q=null!=q?q:1;null!=b&&(q=k?Math.min(1,Math.min(3*b/(4*p),b/l)):b/l);l=Math.ceil(q*l)+2*D;p=Math.ceil(q*p)+2*D;f.setAttribute("width",l);f.setAttribute("height",p);var n=f.getContext("2d"); +null!=d&&(n.beginPath(),n.rect(0,0,l,p),n.fillStyle=d,n.fill());n.scale(q,q);mxClient.IS_SF?window.setTimeout(function(){n.drawImage(e,D/q,D/q);a(f)},0):(n.drawImage(e,D/q,D/q),a(f))}catch(T){null!=g&&g(T)}});e.onerror=function(a){null!=g&&g(a)};try{r&&this.editor.graph.addSvgShadow(c);var f=mxUtils.bind(this,function(){if(null!=this.editor.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.editor.resolvedFontCss;c.getElementsByTagName("defs")[0].appendChild(a)}this.convertMath(A, +c,!0,mxUtils.bind(this,function(){e.src=this.createSvgDataUri(mxUtils.getXml(c))}))});this.loadFonts(f)}catch(C){null!=g&&g(C)}}),c,u)};EditorUi.prototype.createImageUrlConverter=function(){var a=new mxUrlConverter;a.updateBaseUrl();var b=a.convert,c=this;a.convert=function(d){if(null!=d){var e="http://"==d.substring(0,7)||"https://"==d.substring(0,8);e&&!navigator.onLine?d=c.svgBrokenImage.src:!e||d.substring(0,a.baseUrl.length)==a.baseUrl||c.crossOriginImages&&c.isCorsEnabledForUrl(d)?"chrome-extension://"!= +d.substring(0,19)&&(d=b.apply(this,arguments)):d=PROXY_URL+"?url="+encodeURIComponent(d)}return d};return a};EditorUi.prototype.convertImages=function(a,b,c,e){null==e&&(e=this.createImageUrlConverter());var d=0,f=c||{};c=mxUtils.bind(this,function(c,g){for(var l=a.getElementsByTagName(c),k=0;k<l.length;k++)mxUtils.bind(this,function(c){var l=e.convert(c.getAttribute(g));if(null!=l&&"data:"!=l.substring(0,5)){var k=f[l];null==k?(d++,this.convertImageToDataUri(l,function(e){null!=e&&(f[l]=e,c.setAttribute(g, +e));d--;0==d&&b(a)})):c.setAttribute(g,k)}else null!=l&&c.setAttribute(g,l)})(l[k])});c("image","xlink:href");c("img","src");0==d&&b(a)};EditorUi.prototype.loadUrl=function(a,b,c,e,g,k){try{var d=e||/(\.png)($|\?)/i.test(a)||/(\.jpe?g)($|\?)/i.test(a)||/(\.gif)($|\?)/i.test(a);g=null!=g?g:!0;var f=mxUtils.bind(this,function(){mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=b){var e=a.getText();if(d){if((9==document.documentMode||10==document.documentMode)&& +"undefined"!==typeof window.mxUtilsBinaryToArray){a=mxUtilsBinaryToArray(a.request.responseBody).toArray();for(var e=Array(a.length),f=0;f<a.length;f++)e[f]=String.fromCharCode(a[f]);e=e.join("")}k=null!=k?k:"data:image/png;base64,";e=k+this.base64Encode(e)}b(e)}}else null!=c&&c({code:App.ERROR_UNKNOWN},a)}),function(){null!=c&&c({code:App.ERROR_UNKNOWN})},d,this.timeout,function(){g&&null!=c&&c({code:App.ERROR_TIMEOUT,retry:f})})});f()}catch(t){null!=c&&c(t)}};EditorUi.prototype.isCorsEnabledForUrl= function(a){null!=urlParams.cors&&null==this.corsRegExp&&(this.corsRegExp=new RegExp(decodeURIComponent(urlParams.cors)));return null!=this.corsRegExp&&this.corsRegExp.test(a)||"https://raw.githubusercontent.com/"===a.substring(0,34)||"https://cdn.rawgit.com/"===a.substring(0,23)||"https://rawgit.com/"===a.substring(0,19)||/^https?:\/\/[^\/]*\.iconfinder.com\//.test(a)||/^https?:\/\/[^\/]*\.draw\.io\/proxy/.test(a)||/^https?:\/\/[^\/]*\.github\.io\//.test(a)};EditorUi.prototype.convertImageToDataUri= -function(a,b){if(/(\.svg)$/i.test(a))mxUtils.get(a,mxUtils.bind(this,function(a){b(this.createSvgDataUri(a.getText()))}),function(){b(this.svgBrokenImage.src)});else{var c=new Image,d=this;this.crossOriginImages&&(c.crossOrigin="anonymous");c.onload=function(){var a=document.createElement("canvas"),f=a.getContext("2d");a.height=c.height;a.width=c.width;f.drawImage(c,0,0);try{b(a.toDataURL())}catch(r){b(d.svgBrokenImage.src)}};c.onerror=function(){b(d.svgBrokenImage.src)};c.src=a}};EditorUi.prototype.importXml= -function(a,b,d,f,k){b=null!=b?b:0;d=null!=d?d:0;var c=[];try{var g=this.editor.graph;if(null!=a&&0<a.length){var h=mxUtils.parseXml(a),l=this.editor.extractGraphModel(h.documentElement,null!=this.pages);if(null!=l&&"mxfile"==l.nodeName&&null!=this.pages){var n=l.getElementsByTagName("diagram");if(1==n.length)l=mxUtils.parseXml(g.decompress(mxUtils.getTextContent(n[0]))).documentElement;else if(1<n.length){g.model.beginUpdate();try{for(a=0;a<n.length;a++){n[a].removeAttribute("id");var t=this.updatePageRoot(new DiagramPage(n[a])), -p=this.pages.length;null==t.getName()&&t.setName(mxResources.get("pageWithNumber",[p+1]));g.model.execute(new ChangePage(this,t,t,p))}}finally{g.model.endUpdate()}}}null!=l&&"mxGraphModel"===l.nodeName&&(c=g.importGraphModel(l,b,d,f))}}catch(A){if(k)throw A;this.handleError(A)}return c};EditorUi.prototype.isRemoteVisioFormat=function(a){return/(\.v(sd|dx))($|\?)/i.test(a)||/(\.vs(s|x))($|\?)/i.test(a)};EditorUi.prototype.importVisio=function(a,b,d,f){f=null!=f?f:a.name;d=null!=d?d:mxUtils.bind(this, -function(a){this.handleError(a)});var c=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio)if(this.isRemoteVisioFormat(f)&&null!=VSD_CONVERT_URL){var c=new FormData;c.append("file1",a,f);var g=new XMLHttpRequest;g.open("POST",VSD_CONVERT_URL);g.responseType="blob";g.onreadystatechange=mxUtils.bind(this,function(){if(4==g.readyState)if(200<=g.status&&299>=g.status)try{g.response.name=f,this.doImportVisio(g.response,b,d)}catch(x){d(x)}else d({})});g.send(c)}else try{this.doImportVisio(a, -b,d)}catch(x){d(x)}});this.doImportVisio||this.loadingExtensions||this.isOffline()?c():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",c))};EditorUi.prototype.importGraphML=function(a,b,d){d=null!=d?d:mxUtils.bind(this,function(a){this.handleError(a)});var c=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(a,b,d)}catch(t){d(t)}});this.doImportGraphML||this.loadingExtensions||this.isOffline()?c():(this.loadingExtensions=!0,mxscript("js/extensions.min.js", -c))};EditorUi.prototype.exportVisio=function(){var a=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof VsdxExport)try{(new VsdxExport(this)).exportCurrentDiagrams()||this.handleError({message:mxResources.get("unknownError")})}catch(g){this.handleError(g)}});"undefined"!==typeof VsdxExport||this.loadingExtensions||this.isOffline()?a():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",a))};EditorUi.prototype.convertLucidChart=function(a,b,d){var c=mxUtils.bind(this, -function(){this.loadingExtensions=!1;if("undefined"!==typeof window.LucidImporter)try{b(LucidImporter.importState(JSON.parse(a)))}catch(t){d(t)}else d({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof window.LucidImporter||this.loadingExtensions||this.isOffline()?window.setTimeout(c,0):(this.loadingExtensions=!0,"1"==urlParams.dev?mxscript("js/diagramly/Extensions.js",c):mxscript("js/extensions.min.js",c))};EditorUi.prototype.insertAsPreText=function(a,b,d){var c=this.editor.graph, -f=null;c.getModel().beginUpdate();try{f=c.insertVertex(null,null,"<pre>"+a+"</pre>",b,d,1,1,"text;html=1;align=center;verticalAlign=middle;"),c.updateCellSize(f,!0)}finally{c.getModel().endUpdate()}return f};EditorUi.prototype.insertTextAt=function(a,b,d,f,k,m,r){m=null!=m?m:!0;r=null!=r?r:!0;if(null!=a)if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a))this.parseFile(new Blob([a.replace(/\s+/g," ")],{type:"application/octet-stream"}),mxUtils.bind(this, -function(a){4==a.readyState&&200<=a.status&&299>=a.status&&this.editor.graph.setSelectionCells(this.insertTextAt(a.responseText,b,d,!0))}));else if("data:"==a.substring(0,5)||!this.isOffline()&&(k||/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(a))){var c=this.editor.graph;if("data:image/png;base64,"==a.substring(0,22)){var g=this.extractGraphModelFromPng(a),h=this.importXml(g,b,d,m,!0);if(0<h.length)return h}if("data:image/svg+xml;"==a.substring(0,19))try{if(g=null,"data:image/svg+xml;base64,"==a.substring(0, -26)?(g=a.substring(a.indexOf(",")+1),g=window.atob&&!mxClient.IS_SF?atob(g):Base64.decode(g,!0)):g=decodeURIComponent(a.substring(a.indexOf(",")+1)),h=this.importXml(g,b,d,m,!0),0<h.length)return h}catch(y){}this.loadImage(a,mxUtils.bind(this,function(f){if("data:"==a.substring(0,5))this.resizeImage(f,a,mxUtils.bind(this,function(a,f,g){c.setSelectionCell(c.insertVertex(null,null,"",c.snap(b),c.snap(d),f,g,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+ -this.convertDataUri(a)+";"))}),r,this.maxImageSize);else{var g=Math.min(1,Math.min(this.maxImageSize/f.width,this.maxImageSize/f.height)),h=Math.round(f.width*g);f=Math.round(f.height*g);c.setSelectionCell(c.insertVertex(null,null,"",c.snap(b),c.snap(d),h,f,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+a+";"))}}),mxUtils.bind(this,function(){var g=null;c.getModel().beginUpdate();try{g=c.insertVertex(c.getDefaultParent(), -null,a,c.snap(b),c.snap(d),1,1,"text;"+(f?"html=1;":"")),c.updateCellSize(g),c.fireEvent(new mxEventObject("textInserted","cells",[g]))}finally{c.getModel().endUpdate()}c.setSelectionCell(g)}))}else{a=this.editor.graph.zapGremlins(mxUtils.trim(a));if(this.isCompatibleString(a))return this.importXml(a,b,d,m);if(0<a.length)if(this.isLucidChartData(a))this.convertLucidChart(a,mxUtils.bind(this,function(a){this.editor.graph.setSelectionCells(this.importXml(a,b,d,m))}),mxUtils.bind(this,function(a){this.handleError(a)})); -else{c=this.editor.graph;k=null;c.getModel().beginUpdate();try{k=c.insertVertex(c.getDefaultParent(),null,"",c.snap(b),c.snap(d),1,1,"text;"+(f?"html=1;":"")),c.fireEvent(new mxEventObject("textInserted","cells",[k])),"<"==a.charAt(0)&&a.indexOf(">")==a.length-1&&(a=mxUtils.htmlEntities(a)),k.value=a,c.updateCellSize(k),/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/i.test(k.value)&& -c.setLinkForCell(k,k.value),k.geometry.width+=c.gridSize,k.geometry.height+=c.gridSize}finally{c.getModel().endUpdate()}return[k]}}return[]};EditorUi.prototype.formatFileSize=function(a){var c=-1;do a/=1024,c++;while(1024<a);return Math.max(a,.1).toFixed(1)+" kB; MB; GB; TB;PB;EB;ZB;YB".split(";")[c]};EditorUi.prototype.convertDataUri=function(a){if("data:"==a.substring(0,5)){var c=a.indexOf(";");0<c&&(a=a.substring(0,c)+a.substring(a.indexOf(",",c+1)))}return a};EditorUi.prototype.isRemoteFileFormat= -function(a,b){return/(\"contentType\":\s*\"application\/gliffy\+json\")/.test(a)};EditorUi.prototype.isLucidChartData=function(a){return null!=a&&'{"state":"{\\"Properties\\":'==a.substring(0,26)};EditorUi.prototype.importLocalFile=function(a,b){if(a&&Graph.fileSupport&&(!mxClient.IS_IE&&!mxClient.IS_IE11||0>navigator.appVersion.indexOf("Windows NT 6.1"))){var c=document.createElement("input");c.setAttribute("type","file");mxEvent.addListener(c,"change",mxUtils.bind(this,function(){null!=c.files&& -this.importFiles(c.files,null,null,this.maxImageSize)}));c.click()}else{window.openNew=!1;window.openKey="import";if(!b){var d=Editor.useLocalStorage;Editor.useLocalStorage=!a}window.openFile=new OpenFile(mxUtils.bind(this,function(a){this.hideDialog(a)}));window.openFile.setConsumer(mxUtils.bind(this,function(a,c){if(null!=c&&Graph.fileSupport&&/(\.v(dx|sdx?))($|\?)/i.test(c)){var b=new Blob([a],{type:"application/octet-stream"});this.importVisio(b,mxUtils.bind(this,function(a){this.importXml(a)}), -null,c)}else this.editor.graph.setSelectionCells(this.importXml(a))}));this.showDialog((new OpenDialog(this)).container,360,220,!0,!0,function(){window.openFile=null});if(!b){var f=this.dialog,g=f.close;this.dialog.close=mxUtils.bind(this,function(a){Editor.useLocalStorage=d;g.apply(f,arguments);a&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};EditorUi.prototype.importFile=function(a,b,d,f,k,m,r,n,p,q,w){q=null!=q?q:!0;var c=!1,g=null,h=mxUtils.bind(this,function(a){var c= -null;null!=a&&"<mxlibrary"==a.substring(0,10)?this.loadLibrary(new LocalLibrary(this,a,r)):c=this.importXml(a,d,f,q);null!=n&&n(c)});"image"==b.substring(0,5)?(p=!1,"image/png"==b.substring(0,9)&&(b=w?null:this.extractGraphModelFromPng(a),null!=b&&0<b.length&&(g=this.importXml(b,d,f,q),p=!0)),p||(g=this.editor.graph,b=a.indexOf(";"),0<b&&(a=a.substring(0,b)+a.substring(a.indexOf(",",b+1))),q&&g.isGridEnabled()&&(d=g.snap(d),f=g.snap(f)),g=[g.insertVertex(null,null,"",d,f,k,m,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+ -a+";")])):/(\.*<graphml )/.test(a)?(c=!0,this.importGraphML(a,h)):null!=p&&null!=r&&(/(\.v(dx|sdx?))($|\?)/i.test(r)||/(\.vs(x|sx?))($|\?)/i.test(r))?(c=!0,this.importVisio(p,h)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a,r)?(c=!0,this.parseFile(null!=p?p:new Blob([a],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?h(a.responseText):null!=n&&n(null))}),r)):/(\.v(sd|dx))($|\?)/i.test(r)||/(\.vs(s|x))($|\?)/i.test(r)|| -(g=this.insertTextAt(this.validateFileData(a),d,f,!0,null,q));c||null==n||n(g);return g};EditorUi.prototype.base64Encode=function(a){for(var c="",b=0,d=a.length,f,k,r;b<d;){f=a.charCodeAt(b++)&255;if(b==d){c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>2);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&3)<<4);c+="==";break}k=a.charCodeAt(b++);if(b==d){c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>2); -c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&3)<<4|(k&240)>>4);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k&15)<<2);c+="=";break}r=a.charCodeAt(b++);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>2);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&3)<<4|(k&240)>>4);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k&15)<<2|(r&192)>>6);c+= -"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(r&63)}return c};EditorUi.prototype.importFiles=function(a,b,d,f,k,m,r,n,p,q,w,u){b=null!=b?b:0;d=null!=d?d:0;f=null!=f?f:this.maxImageSize;q=null!=q?q:this.maxImageBytes;var c=null!=b&&null!=d,g=!0,h=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var l=w||this.resampleThreshold,t=0;t<a.length;t++)if("image/"==a[t].type.substring(0,6)&&a[t].size>l){h=!0;break}var v=mxUtils.bind(this,function(){var h=this.editor.graph,l=h.gridSize; -k=null!=k?k:mxUtils.bind(this,function(a,b,d,f,g,h,l,k,m){return null!=a&&"<mxlibrary"==a.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,a,l)),null):this.importFile(a,b,d,f,g,h,l,k,m,c,u)});m=null!=m?m:mxUtils.bind(this,function(a){h.setSelectionCells(a)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var t=a.length,p=t,v=[],x=mxUtils.bind(this,function(a,b){v[a]=b;if(0==--p){this.spinner.stop();if(null!=n)n(v);else{var c=[];h.getModel().beginUpdate(); -try{for(var d=0;d<v.length;d++){var f=v[d]();null!=f&&(c=c.concat(f))}}finally{h.getModel().endUpdate()}}m(c)}}),A=0;A<t;A++)mxUtils.bind(this,function(c){var m=a[c],n=new FileReader;n.onload=mxUtils.bind(this,function(a){if(null==r||r(m))if("image/"==m.type.substring(0,6))if("image/svg"==m.type.substring(0,9)){var n=a.target.result,t=n.indexOf(","),p=decodeURIComponent(escape(atob(n.substring(t+1)))),v=mxUtils.parseXml(p),p=v.getElementsByTagName("svg");if(0<p.length){var p=p[0],z=u?null:p.getAttribute("content"); -null!=z&&"<"!=z.charAt(0)&&"%"!=z.charAt(0)&&(z=unescape(window.atob?atob(z):Base64.decode(z,!0)));null!=z&&"%"==z.charAt(0)&&(z=decodeURIComponent(z));null==z||"<mxfile "!==z.substring(0,8)&&"<mxGraphModel "!==z.substring(0,14)?x(c,mxUtils.bind(this,function(){try{if(n.substring(0,t+1),null!=v){var a=v.getElementsByTagName("svg");if(0<a.length){var g=a[0],r=parseFloat(g.getAttribute("width")),p=parseFloat(g.getAttribute("height")),q=g.getAttribute("viewBox");if(null==q||0==q.length)g.setAttribute("viewBox", -"0 0 "+r+" "+p);else if(isNaN(r)||isNaN(p)){var u=q.split(" ");3<u.length&&(r=parseFloat(u[2]),p=parseFloat(u[3]))}n=this.createSvgDataUri(mxUtils.getXml(g));var z=Math.min(1,Math.min(f/Math.max(1,r)),f/Math.max(1,p)),x=k(n,m.type,b+c*l,d+c*l,Math.max(1,Math.round(r*z)),Math.max(1,Math.round(p*z)),m.name);if(isNaN(r)||isNaN(p)){var A=new Image;A.onload=mxUtils.bind(this,function(){r=Math.max(1,A.width);p=Math.max(1,A.height);x[0].geometry.width=r;x[0].geometry.height=p;g.setAttribute("viewBox","0 0 "+ -r+" "+p);n=this.createSvgDataUri(mxUtils.getXml(g));var a=n.indexOf(";");0<a&&(n=n.substring(0,a)+n.substring(n.indexOf(",",a+1)));h.setCellStyles("image",n,[x[0]])});A.src=this.createSvgDataUri(mxUtils.getXml(g))}return x}}}catch(sa){}return null})):x(c,mxUtils.bind(this,function(){return k(z,"text/xml",b+c*l,d+c*l,0,0,m.name)}))}else x(c,mxUtils.bind(this,function(){return null}))}else{p=!1;if("image/png"==m.type){var A=u?null:this.extractGraphModelFromPng(a.target.result);if(null!=A&&0<A.length){var K= -new Image;K.src=a.target.result;x(c,mxUtils.bind(this,function(){return k(A,"text/xml",b+c*l,d+c*l,K.width,K.height,m.name)}));p=!0}}p||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"),mxResources.get("cancel"),mxUtils.bind(this,function(){}),null,mxResources.get("ok"),mxUtils.bind(this,function(){this.actions.get("import").funct()}))):this.loadImage(a.target.result,mxUtils.bind(this,function(h){this.resizeImage(h,a.target.result, -mxUtils.bind(this,function(h,r,n){x(c,mxUtils.bind(this,function(){if(null!=h&&h.length<q){var p=g&&this.isResampleImage(a.target.result,w)?Math.min(1,Math.min(f/r,f/n)):1;return k(h,m.type,b+c*l,d+c*l,Math.round(r*p),Math.round(n*p),m.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),g,f,w)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else k(a.target.result,m.type,b+c*l,d+c*l,240,160,m.name,function(a){x(c, -function(){return a})})});/(\.v(dx|sdx?))($|\?)/i.test(m.name)||/(\.vs(x|sx?))($|\?)/i.test(m.name)?k(null,m.type,b+c*l,d+c*l,240,160,m.name,function(a){x(c,function(){return a})},m):"image"==m.type.substring(0,5)?n.readAsDataURL(m):n.readAsText(m)})(A)});h?this.confirmImageResize(function(a){g=a;v()},p):v()};EditorUi.prototype.confirmImageResize=function(a,b){b=null!=b?b:!1;var c=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},d=isLocalStorage||mxClient.IS_CHROMEAPP? -mxSettings.getResizeImages():null,f=function(d,f){if(d||b)mxSettings.setResizeImages(d?f:null),mxSettings.save();c();a(f)};null==d||b?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(a){f(a,!0)},function(a){f(a,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage|| -mxClient.IS_CHROMEAPP?220:200,!0,!0):f(!1,d)};EditorUi.prototype.parseFile=function(a,b,d){d=null!=d?d:a.name;var c=new FormData;c.append("format","xml");c.append("upfile",a,d);var f=new XMLHttpRequest;f.open("POST",OPEN_URL);f.onreadystatechange=function(){b(f)};f.send(c)};EditorUi.prototype.isResampleImage=function(a,b){b=null!=b?b:this.resampleThreshold;return a.length>b};EditorUi.prototype.resizeImage=function(a,b,d,f,k,m){k=null!=k?k:this.maxImageSize;var c=Math.max(1,a.width),g=Math.max(1,a.height); -if(f&&this.isResampleImage(b,m))try{var h=Math.max(c/k,g/k);if(1<h){var l=Math.round(c/h),n=Math.round(g/h),p=document.createElement("canvas");p.width=l;p.height=n;p.getContext("2d").drawImage(a,0,0,l,n);var t=p.toDataURL();if(t.length<b.length){var q=document.createElement("canvas");q.width=l;q.height=n;var w=q.toDataURL();t!==w&&(b=t,c=l,g=n)}}}catch(G){}d(b,c,g)};EditorUi.prototype.crcTable=[];for(var f=0;256>f;f++)for(var d=f,k=0;8>k;k++)d=1==(d&1)?3988292384^d>>>1:d>>>1,EditorUi.prototype.crcTable[f]= -d;EditorUi.prototype.updateCRC=function(a,b,d,f){for(var c=0;c<f;c++)a=EditorUi.prototype.crcTable[(a^b[d+c])&255]^a>>>8;return a};EditorUi.prototype.crc32=function(a){this.crcTable=this.crcTable||this.createCrcTable();for(var b=-1,c=0;c<a.length;c++)b=b>>>8^this.crcTable[(b^a.charCodeAt(c))&255];return(b^-1)>>>0};EditorUi.prototype.writeGraphModelToPng=function(a,b,d,f,k){function c(a,b){var c=l;l+=b;return a.substring(c,l)}function g(a){a=c(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<< -16)+(a.charCodeAt(0)<<24)}function h(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,!0);var l=0;if(c(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=k&&k();else if(c(a,4),"IHDR"!=c(a,4))null!=k&&k();else{c(a,17);k=a.substring(0,l);do{var n=g(a);if("IDAT"==c(a,4)){k=a.substring(0,l-8);d=d+String.fromCharCode(0)+("zTXt"==b?String.fromCharCode(0):"")+f;f=4294967295;f=this.updateCRC(f, -b,0,4);f=this.updateCRC(f,d,0,d.length);k+=h(d.length)+b+d+h(f^4294967295);k+=a.substring(l-8,a.length);break}k+=a.substring(l-8,l-4+n);c(a,n);c(a,4)}while(n);return"data:image/png;base64,"+(window.btoa?btoa(k):Base64.encode(k,!0))}};EditorUi.prototype.extractGraphModelFromPng=function(a){var b=null;try{var c=a.substring(a.indexOf(",")+1),d=window.atob&&!mxClient.IS_SF?atob(c):Base64.decode(c,!0);EditorUi.parsePng(d,mxUtils.bind(this,function(a,c,f){a=d.substring(a+8,a+8+f);"zTXt"==c?(f=a.indexOf(String.fromCharCode(0)), -"mxGraphModel"==a.substring(0,f)&&(a=this.editor.graph.bytesToString(pako.inflateRaw(a.substring(f+2))).replace(/\+/g," "),null!=a&&0<a.length&&(b=a))):"tEXt"==c&&(a=a.split(String.fromCharCode(0)),1<a.length&&"mxGraphModel"==a[0]&&(b=a[1]));if(null!=b||"IDAT"==c)return!0}))}catch(t){}null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));return b};EditorUi.prototype.loadImage=function(a,b,d){var c=new Image;c.onload=function(){b(c)};null!=d&&(c.onerror= -d);c.src=a};var n=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=mxStencilRegistry.allowEval&&!this.isOfflineApp();"undefined"!==typeof window.mxSettings&&(this.formatWidth=mxSettings.getFormatWidth());var a=this,b=this.editor.graph;b.getLinkTitle=function(b){return a.getLinkTitle(b)};b.customLinkClicked=function(b){var c=!1;try{a.handleCustomLink(b),c=!0}catch(z){a.handleError(z)}return c};var d=this.clearDefaultStyle;this.clearDefaultStyle=function(){d.apply(this, -arguments)};this.isOffline()||"undefined"===typeof window.EditDataDialog||(EditDataDialog.placeholderHelpLink="https://desk.draw.io/support/solutions/articles/16000051979");var f=a.editor.getEditBlankUrl;this.editor.getEditBlankUrl=function(b){b=null!=b?b:"";if(null!=a.pages&&null!=a.currentPage)for(var c=0;c<a.pages.length;c++)if(a.pages[c]==a.currentPage){0<c&&(b+=(0<b.length?"&":"?")+"page="+c);break}"1"==urlParams.dev&&(b+=(0<b.length?"&":"?")+"dev=1&drawdev=1");return f.apply(this,arguments)}; -var k=b.addClickHandler;b.addClickHandler=function(a,c,d){var f=c;c=function(a,c){if(null==c){var d=mxEvent.getSource(a);"a"==d.nodeName.toLowerCase()&&(c=d.getAttribute("href"))}null!=c&&b.isCustomLink(c)&&(mxEvent.isTouchEvent(a)||!mxEvent.isPopupTrigger(a))&&b.customLinkClicked(c)&&mxEvent.consume(a);null!=f&&f(a,c)};k.call(this,a,c,d)};n.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(b.view.canvas.ownerSVGElement,null,!0);a.actions.get("print").funct=function(){a.showDialog((new PrintDialog(a)).container, -360,null!=a.pages&&1<a.pages.length?420:360,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var m=b.getGlobalVariable;b.getGlobalVariable=function(b){return"page"==b&&null!=a.currentPage?a.currentPage.getName():"pagenumber"==b?null!=a.currentPage&&null!=a.pages?mxUtils.indexOf(a.pages,a.currentPage)+1:1:m.apply(this,arguments)};var r=b.labelLinkClicked;b.labelLinkClicked=function(a,c,d){var f=c.getAttribute("href");if(null==f||!b.isCustomLink(f)||!mxEvent.isTouchEvent(d)&&mxEvent.isPopupTrigger(d))r.apply(this, -arguments);else{if(!b.isEnabled()||null!=a&&b.isCellLocked(a.cell))b.customLinkClicked(f),b.getRubberband().reset();mxEvent.consume(d)}};this.editor.getOrCreateFilename=function(){var b=a.defaultFilename,c=a.getCurrentFile();null!=c&&(b=null!=c.getTitle()?c.getTitle():b);return b};var p=this.actions.get("print");p.setEnabled(!mxClient.IS_IOS||!navigator.standalone);p.visible=p.isEnabled();if(!this.editor.chromeless||this.editor.editable){var q=function(){window.setTimeout(function(){w.innerHTML=" "; -w.focus();document.execCommand("selectAll",!1,null)},0)};this.keyHandler.bindAction(70,!0,"find");this.keyHandler.bindAction(67,!0,"copyStyle",!0);this.keyHandler.bindAction(86,!0,"pasteStyle",!0);this.keyHandler.bindAction(77,!0,"editGeometry",!0);this.keyHandler.bindAction(88,!0,"insertText",!0);this.keyHandler.bindAction(75,!0,"insertRectangle");this.keyHandler.bindAction(75,!0,"insertEllipse",!0);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(this.altShiftActions[83]="synchronize");mxClient.IS_IE|| -b.container.addEventListener("paste",mxUtils.bind(this,function(a){var b=this.editor.graph;if(!mxEvent.isConsumed(a))try{for(var c=a.clipboardData||a.originalEvent.clipboardData,d=!1,f=0;f<c.types.length;f++)if("text/"===c.types[f].substring(0,5)){d=!0;break}if(!d){var g=c.items;for(index in g){var h=g[index];if("file"===h.kind){if(b.isEditing())this.importFiles([h.getAsFile()],0,0,this.maxImageSize,function(a,c,d,f,g,h){b.insertImage(a,g,h)},function(){},function(a){return"image/"==a.type.substring(0, -6)},function(a){for(var b=0;b<a.length;b++)a[b]()});else{var k=this.editor.graph.getInsertPoint();this.importFiles([h.getAsFile()],k.x,k.y,this.maxImageSize);mxEvent.consume(a)}break}}}}catch(V){}}),!1);var w=document.createElement("div");w.style.position="absolute";w.style.whiteSpace="nowrap";w.style.overflow="hidden";w.style.display="block";w.contentEditable=!0;mxUtils.setOpacity(w,0);w.style.width="1px";w.style.height="1px";w.innerHTML=" ";var y=!1;this.keyHandler.bindControlKey(88,null); -this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(a){var c=mxEvent.getSource(a);null==b.container||!b.isEnabled()||b.isMouseDown||b.isEditing()||null!=this.dialog||"INPUT"==c.nodeName||"TEXTAREA"==c.nodeName||!(224==a.keyCode||!mxClient.IS_MAC&&17==a.keyCode||mxClient.IS_MAC&&91==a.keyCode)||y||(w.style.left=b.container.scrollLeft+10+"px",w.style.top=b.container.scrollTop+10+"px",b.container.appendChild(w), -y=!0,mxClient.IS_QUIRKS?window.setTimeout(function(){w.focus();document.execCommand("selectAll",!1,null)},0):(w.focus(),document.execCommand("selectAll",!1,null)))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(a){var c=a.keyCode;window.setTimeout(mxUtils.bind(this,function(){!y||224!=c&&17!=c&&91!=c||(y=!1,b.isEditing()||null!=this.dialog||null==b.container||b.container.focus(),w.parentNode.removeChild(w),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(w, -"copy",mxUtils.bind(this,function(a){b.isEnabled()&&(mxClipboard.copy(b),this.copyCells(w),q())}));mxEvent.addListener(w,"cut",mxUtils.bind(this,function(a){b.isEnabled()&&(mxClipboard.copy(b),this.copyCells(w,!0),q())}));mxEvent.addListener(w,"paste",mxUtils.bind(this,function(a){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&(w.innerHTML=" ",w.focus(),window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(a,w);w.innerHTML=" "}),0))}),!0);var u=this.isSelectionAllowed;this.isSelectionAllowed= -function(a){return mxEvent.getSource(a)==w?!0:u.apply(this,arguments)}}this.spinner=this.createSpinner(document.body.clientWidth/2-2,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,24);Graph.fileSupport&&this.editor.graph.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,function(a){var b=this.editor.graph,c=b.cellEditor.text2,d=null;null!=c&&(mxEvent.addListener(c,"dragleave",function(a){null!=d&&(d.parentNode.removeChild(d),d=null);a.stopPropagation();a.preventDefault()}), -mxEvent.addListener(c,"dragover",mxUtils.bind(this,function(a){null==d&&(!mxClient.IS_IE||10<document.documentMode)&&(d=this.highlightElement(c));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(c,"drop",mxUtils.bind(this,function(a){null!=d&&(d.parentNode.removeChild(d),d=null);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,function(a,c,d,f,g,h){b.insertImage(a,g,h)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b= -0;b<a.length;b++)a[b]()},mxEvent.isControlDown(a));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")){var c=a.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(c)?this.loadImage(decodeURIComponent(c),mxUtils.bind(this,function(a){var d=Math.max(1,a.width);a=Math.max(1,a.height);var f=this.maxImageSize,f=Math.min(1,Math.min(f/Math.max(1,d)),f/Math.max(1,a));b.insertImage(decodeURIComponent(c),d*f,a*f)})):document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/plain"))}else 0<= -mxUtils.indexOf(a.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/plain"));a.stopPropagation();a.preventDefault()})))}));if("1"==urlParams.ruler&&"undefined"!==typeof mxRuler){p=document.createElement("div");p.style.position="absolute";p.style.top="95px";p.style.left="250px";p.style.width="2000px";p.style.height="30px";p.style.background= -"whiteSmoke";document.body.appendChild(p);var A=document.createElement("div");A.style.position="absolute";A.style.top="125px";A.style.left="220px";A.style.width="30px";A.style.height="1000px";A.style.background="whiteSmoke";document.body.appendChild(A);var F=document.createElement("div");F.style.position="absolute";F.style.top="95px";F.style.left="220px";F.style.width="30px";F.style.height="30px";F.style.background="whiteSmoke";document.body.appendChild(F);this.vRuler=new mxRuler(this.editor.graph, -A,!0);this.hRuler=new mxRuler(this.editor.graph,p,!1)}if("1"==urlParams.styledev){p=document.getElementById("geFooter");null!=p&&(this.styleInput=document.createElement("input"),this.styleInput.setAttribute("type","text"),this.styleInput.style.position="absolute",this.styleInput.style.top="14px",this.styleInput.style.left="2px",this.styleInput.style.width="98%",this.styleInput.style.visibility="hidden",this.styleInput.style.opacity="0.9",mxEvent.addListener(this.styleInput,"change",mxUtils.bind(this, -function(){this.editor.graph.getModel().setStyle(this.editor.graph.getSelectionCell(),this.styleInput.value)})),p.appendChild(this.styleInput),this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(a,b){if(0<this.editor.graph.getSelectionCount()){var c=this.editor.graph.getSelectionCell(),c=this.editor.graph.getModel().getStyle(c);this.styleInput.value=c||"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var Q=this.isSelectionAllowed; -this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==this.styleInput?!0:Q.apply(this,arguments)}}p=document.getElementById("geInfo");null!=p&&p.parentNode.removeChild(p);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var G=null;mxEvent.addListener(b.container,"dragleave",function(a){b.isEnabled()&&(null!=G&&(G.parentNode.removeChild(G),G=null),a.stopPropagation(),a.preventDefault())});mxEvent.addListener(b.container,"dragover",mxUtils.bind(this,function(a){null== -G&&(!mxClient.IS_IE||10<document.documentMode)&&(G=this.highlightElement(b.container));null!=this.sidebar&&this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()}));mxEvent.addListener(b.container,"drop",mxUtils.bind(this,function(a){null!=G&&(G.parentNode.removeChild(G),G=null);if(b.isEnabled()){var c=mxUtils.convertPoint(b.container,mxEvent.getClientX(a),mxEvent.getClientY(a)),d=b.view.translate,f=b.view.scale,g=c.x/f-d.x,h=c.y/f-d.y;mxEvent.isAltDown(a)&&(h=g=0);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files, -g,h,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(a),null,null,mxEvent.isShiftDown(a));else{var k=0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):null,c=this.extractGraphModelFromEvent(a,null!=this.pages);if(null!=c)b.setSelectionCells(this.importXml(c,g,h,!0));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/html")){var l=a.dataTransfer.getData("text/html"),c=document.createElement("div");c.innerHTML=l;var m=null,d=c.getElementsByTagName("img"); -null!=d&&1==d.length?(l=d[0].getAttribute("src"),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(l)||(m=!0)):(c=c.getElementsByTagName("a"),null!=c&&1==c.length&&(l=c[0].getAttribute("href")));var r=!0,n=mxUtils.bind(this,function(){b.setSelectionCells(this.insertTextAt(l,g,h,!0,m,null,r))});m&&l.length>this.resampleThreshold?this.confirmImageResize(function(a){r=a;n()},mxEvent.isControlDown(a)):n()}else null!=k&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(k)?this.loadImage(decodeURIComponent(k),mxUtils.bind(this, -function(a){var c=Math.max(1,a.width);a=Math.max(1,a.height);var d=this.maxImageSize,d=Math.min(1,Math.min(d/Math.max(1,c)),d/Math.max(1,a));b.setSelectionCell(b.insertVertex(null,null,"",g,h,c*d,a*d,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+k+";"))}),mxUtils.bind(this,function(a){b.setSelectionCells(this.insertTextAt(k,g,h,!0))})):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&b.setSelectionCells(this.insertTextAt(a.dataTransfer.getData("text/plain"), -g,h,!0))}}a.stopPropagation();a.preventDefault()}),!1)}this.initPages();this.editUpdateListener=mxUtils.bind(this,function(a,b){var c=b.getProperty("edit");null!=c&&this.updateEditReferences(c)});this.editor.undoManager.addListener(mxEvent.BEFORE_UNDO,this.editUpdateListener);this.editor.undoManager.addListener(mxEvent.BEFORE_REDO,this.editUpdateListener);"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.getLinkTitle=function(a){var b=Graph.prototype.getLinkTitle.apply(this, -arguments);if("data:page/id,"==a.substring(0,13)){var c=a.indexOf(",");0<c&&(b=this.getPageById(a.substring(c+1)),b=null!=b?b.getName():mxResources.get("pageNotFound"))}else"data:"==a.substring(0,5)&&(b=mxResources.get("action"));return b};EditorUi.prototype.handleCustomLink=function(a){if("data:page/id,"==a.substring(0,13)){var b=a.indexOf(",");if(a=this.getPageById(a.substring(b+1)))this.selectPage(a);else throw Error(mxResources.get("pageNotFound")||"Page not found");}else this.editor.graph.handleCustomLink(a)}; +function(a,b){if(/(\.svg)$/i.test(a))mxUtils.get(a,mxUtils.bind(this,function(a){b(this.createSvgDataUri(a.getText()))}),function(){b(this.svgBrokenImage.src)});else{var d=new Image,c=this;this.crossOriginImages&&(d.crossOrigin="anonymous");d.onload=function(){var a=document.createElement("canvas"),e=a.getContext("2d");a.height=d.height;a.width=d.width;e.drawImage(d,0,0);try{b(a.toDataURL())}catch(B){b(c.svgBrokenImage.src)}};d.onerror=function(){b(c.svgBrokenImage.src)};d.src=a}};EditorUi.prototype.importXml= +function(a,b,c,e,g){b=null!=b?b:0;c=null!=c?c:0;var d=[];try{var f=this.editor.graph;if(null!=a&&0<a.length){var l=mxUtils.parseXml(a),k=this.editor.extractGraphModel(l.documentElement,null!=this.pages);if(null!=k&&"mxfile"==k.nodeName&&null!=this.pages){var n=k.getElementsByTagName("diagram");if(1==n.length)k=mxUtils.parseXml(f.decompress(mxUtils.getTextContent(n[0]))).documentElement;else if(1<n.length){f.model.beginUpdate();try{for(a=0;a<n.length;a++){n[a].removeAttribute("id");var m=this.updatePageRoot(new DiagramPage(n[a])), +q=this.pages.length;null==m.getName()&&m.setName(mxResources.get("pageWithNumber",[q+1]));f.model.execute(new ChangePage(this,m,m,q))}}finally{f.model.endUpdate()}}}null!=k&&"mxGraphModel"===k.nodeName&&(d=f.importGraphModel(k,b,c,e))}}catch(D){if(g)throw D;this.handleError(D)}return d};EditorUi.prototype.isRemoteVisioFormat=function(a){return/(\.v(sd|dx))($|\?)/i.test(a)||/(\.vs(s|x))($|\?)/i.test(a)};EditorUi.prototype.importVisio=function(a,b,c,e){e=null!=e?e:a.name;c=null!=c?c:mxUtils.bind(this, +function(a){this.handleError(a)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio)if(this.isRemoteVisioFormat(e)&&null!=VSD_CONVERT_URL){var d=new FormData;d.append("file1",a,e);var f=new XMLHttpRequest;f.open("POST",VSD_CONVERT_URL);f.responseType="blob";f.onreadystatechange=mxUtils.bind(this,function(){if(4==f.readyState)if(200<=f.status&&299>=f.status)try{f.response.name=e,this.doImportVisio(f.response,b,c)}catch(x){c(x)}else c({})});f.send(d)}else try{this.doImportVisio(a, +b,c)}catch(x){c(x)}});this.doImportVisio||this.loadingExtensions||this.isOffline()?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",d))};EditorUi.prototype.importGraphML=function(a,b,c){c=null!=c?c:mxUtils.bind(this,function(a){this.handleError(a)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(a,b,c)}catch(g){c(g)}});this.doImportGraphML||this.loadingExtensions||this.isOffline()?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js", +d))};EditorUi.prototype.exportVisio=function(){var a=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof VsdxExport)try{(new VsdxExport(this)).exportCurrentDiagrams()||this.handleError({message:mxResources.get("unknownError")})}catch(f){this.handleError(f)}});"undefined"!==typeof VsdxExport||this.loadingExtensions||this.isOffline()?a():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",a))};EditorUi.prototype.convertLucidChart=function(a,b,c){var d=mxUtils.bind(this, +function(){this.loadingExtensions=!1;if("undefined"!==typeof window.LucidImporter)try{b(LucidImporter.importState(JSON.parse(a)))}catch(g){c(g)}else c({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof window.LucidImporter||this.loadingExtensions||this.isOffline()?window.setTimeout(d,0):(this.loadingExtensions=!0,"1"==urlParams.dev?mxscript("js/diagramly/Extensions.js",d):mxscript("js/extensions.min.js",d))};EditorUi.prototype.insertAsPreText=function(a,b,c){var d=this.editor.graph, +e=null;d.getModel().beginUpdate();try{e=d.insertVertex(null,null,"<pre>"+a+"</pre>",b,c,1,1,"text;html=1;align=center;verticalAlign=middle;"),d.updateCellSize(e,!0)}finally{d.getModel().endUpdate()}return e};EditorUi.prototype.insertTextAt=function(a,b,c,e,g,k,m){k=null!=k?k:!0;m=null!=m?m:!0;if(null!=a)if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a))this.parseFile(new Blob([a.replace(/\s+/g," ")],{type:"application/octet-stream"}),mxUtils.bind(this, +function(a){4==a.readyState&&200<=a.status&&299>=a.status&&this.editor.graph.setSelectionCells(this.insertTextAt(a.responseText,b,c,!0))}));else if("data:"==a.substring(0,5)||!this.isOffline()&&(g||/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(a))){var d=this.editor.graph;if("data:image/png;base64,"==a.substring(0,22)){var f=this.extractGraphModelFromPng(a),l=this.importXml(f,b,c,k,!0);if(0<l.length)return l}if("data:image/svg+xml;"==a.substring(0,19))try{if(f=null,"data:image/svg+xml;base64,"==a.substring(0, +26)?(f=a.substring(a.indexOf(",")+1),f=window.atob&&!mxClient.IS_SF?atob(f):Base64.decode(f,!0)):f=decodeURIComponent(a.substring(a.indexOf(",")+1)),l=this.importXml(f,b,c,k,!0),0<l.length)return l}catch(u){}this.loadImage(a,mxUtils.bind(this,function(e){if("data:"==a.substring(0,5))this.resizeImage(e,a,mxUtils.bind(this,function(a,e,f){d.setSelectionCell(d.insertVertex(null,null,"",d.snap(b),d.snap(c),e,f,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+ +this.convertDataUri(a)+";"))}),m,this.maxImageSize);else{var f=Math.min(1,Math.min(this.maxImageSize/e.width,this.maxImageSize/e.height)),g=Math.round(e.width*f);e=Math.round(e.height*f);d.setSelectionCell(d.insertVertex(null,null,"",d.snap(b),d.snap(c),g,e,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+a+";"))}}),mxUtils.bind(this,function(){var f=null;d.getModel().beginUpdate();try{f=d.insertVertex(d.getDefaultParent(), +null,a,d.snap(b),d.snap(c),1,1,"text;"+(e?"html=1;":"")),d.updateCellSize(f),d.fireEvent(new mxEventObject("textInserted","cells",[f]))}finally{d.getModel().endUpdate()}d.setSelectionCell(f)}))}else{a=this.editor.graph.zapGremlins(mxUtils.trim(a));if(this.isCompatibleString(a))return this.importXml(a,b,c,k);if(0<a.length)if(this.isLucidChartData(a))this.convertLucidChart(a,mxUtils.bind(this,function(a){this.editor.graph.setSelectionCells(this.importXml(a,b,c,k))}),mxUtils.bind(this,function(a){this.handleError(a)})); +else{d=this.editor.graph;g=null;d.getModel().beginUpdate();try{g=d.insertVertex(d.getDefaultParent(),null,"",d.snap(b),d.snap(c),1,1,"text;"+(e?"html=1;":"")),d.fireEvent(new mxEventObject("textInserted","cells",[g])),"<"==a.charAt(0)&&a.indexOf(">")==a.length-1&&(a=mxUtils.htmlEntities(a)),g.value=a,d.updateCellSize(g),/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/i.test(g.value)&& +d.setLinkForCell(g,g.value),g.geometry.width+=d.gridSize,g.geometry.height+=d.gridSize}finally{d.getModel().endUpdate()}return[g]}}return[]};EditorUi.prototype.formatFileSize=function(a){var b=-1;do a/=1024,b++;while(1024<a);return Math.max(a,.1).toFixed(1)+" kB; MB; GB; TB;PB;EB;ZB;YB".split(";")[b]};EditorUi.prototype.convertDataUri=function(a){if("data:"==a.substring(0,5)){var b=a.indexOf(";");0<b&&(a=a.substring(0,b)+a.substring(a.indexOf(",",b+1)))}return a};EditorUi.prototype.isRemoteFileFormat= +function(a,b){return/(\"contentType\":\s*\"application\/gliffy\+json\")/.test(a)};EditorUi.prototype.isLucidChartData=function(a){return null!=a&&'{"state":"{\\"Properties\\":'==a.substring(0,26)};EditorUi.prototype.importLocalFile=function(a,b){if(a&&Graph.fileSupport&&(!mxClient.IS_IE&&!mxClient.IS_IE11||0>navigator.appVersion.indexOf("Windows NT 6.1"))){var d=document.createElement("input");d.setAttribute("type","file");mxEvent.addListener(d,"change",mxUtils.bind(this,function(){null!=d.files&& +this.importFiles(d.files,null,null,this.maxImageSize)}));d.click()}else{window.openNew=!1;window.openKey="import";if(!b){var c=Editor.useLocalStorage;Editor.useLocalStorage=!a}window.openFile=new OpenFile(mxUtils.bind(this,function(a){this.hideDialog(a)}));window.openFile.setConsumer(mxUtils.bind(this,function(a,b){if(null!=b&&Graph.fileSupport&&/(\.v(dx|sdx?))($|\?)/i.test(b)){var d=new Blob([a],{type:"application/octet-stream"});this.importVisio(d,mxUtils.bind(this,function(a){this.importXml(a, +0,0,!0)}),null,b)}else this.editor.graph.setSelectionCells(this.importXml(a,0,0,!0))}));this.showDialog((new OpenDialog(this)).container,360,220,!0,!0,function(){window.openFile=null});if(!b){var e=this.dialog,f=e.close;this.dialog.close=mxUtils.bind(this,function(a){Editor.useLocalStorage=c;f.apply(e,arguments);a&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};EditorUi.prototype.importFile=function(a,b,c,e,g,k,m,q,t,r,u){r=null!=r?r:!0;var d=!1,f=null,l=mxUtils.bind(this, +function(a){var b=null;null!=a&&"<mxlibrary"==a.substring(0,10)?this.loadLibrary(new LocalLibrary(this,a,m)):b=this.importXml(a,c,e,r);null!=q&&q(b)});"image"==b.substring(0,5)?(t=!1,"image/png"==b.substring(0,9)&&(b=u?null:this.extractGraphModelFromPng(a),null!=b&&0<b.length&&(f=this.importXml(b,c,e,r),t=!0)),t||(f=this.editor.graph,b=a.indexOf(";"),0<b&&(a=a.substring(0,b)+a.substring(a.indexOf(",",b+1))),r&&f.isGridEnabled()&&(c=f.snap(c),e=f.snap(e)),f=[f.insertVertex(null,null,"",c,e,g,k,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+ +a+";")])):/(\.*<graphml )/.test(a)?(d=!0,this.importGraphML(a,l)):null!=t&&null!=m&&(/(\.v(dx|sdx?))($|\?)/i.test(m)||/(\.vs(x|sx?))($|\?)/i.test(m))?(d=!0,this.importVisio(t,l)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a,m)?(d=!0,this.parseFile(null!=t?t:new Blob([a],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?l(a.responseText):null!=q&&q(null))}),m)):/(\.v(sd|dx))($|\?)/i.test(m)||/(\.vs(s|x))($|\?)/i.test(m)|| +(f=this.insertTextAt(this.validateFileData(a),c,e,!0,null,r));d||null==q||q(f);return f};EditorUi.prototype.base64Encode=function(a){for(var b="",d=0,c=a.length,e,k,m;d<c;){e=a.charCodeAt(d++)&255;if(d==c){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4);b+="==";break}k=a.charCodeAt(d++);if(d==c){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2); +b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(k&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k&15)<<2);b+="=";break}m=a.charCodeAt(d++);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(k&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k&15)<<2|(m&192)>>6);b+= +"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(m&63)}return b};EditorUi.prototype.importFiles=function(a,b,c,e,g,k,m,q,t,r,u,A){b=null!=b?b:0;c=null!=c?c:0;e=null!=e?e:this.maxImageSize;r=null!=r?r:this.maxImageBytes;var d=null!=b&&null!=c,f=!0,l=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var p=u||this.resampleThreshold,n=0;n<a.length;n++)if("image/"==a[n].type.substring(0,6)&&a[n].size>p){l=!0;break}var x=mxUtils.bind(this,function(){var l=this.editor.graph,p=l.gridSize; +g=null!=g?g:mxUtils.bind(this,function(a,b,c,e,f,g,l,k,p){return null!=a&&"<mxlibrary"==a.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,a,l)),null):this.importFile(a,b,c,e,f,g,l,k,p,d,A)});k=null!=k?k:mxUtils.bind(this,function(a){l.setSelectionCells(a)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var n=a.length,t=n,x=[],B=mxUtils.bind(this,function(a,b){x[a]=b;if(0==--t){this.spinner.stop();if(null!=q)q(x);else{var d=[];l.getModel().beginUpdate(); +try{for(var c=0;c<x.length;c++){var e=x[c]();null!=e&&(d=d.concat(e))}}finally{l.getModel().endUpdate()}}k(d)}}),E=0;E<n;E++)mxUtils.bind(this,function(d){var k=a[d];if(null!=k){var n=new FileReader;n.onload=mxUtils.bind(this,function(a){if(null==m||m(k))if("image/"==k.type.substring(0,6))if("image/svg"==k.type.substring(0,9)){var n=a.target.result,q=n.indexOf(","),t=decodeURIComponent(escape(atob(n.substring(q+1)))),x=mxUtils.parseXml(t),t=x.getElementsByTagName("svg");if(0<t.length){var t=t[0], +E=A?null:t.getAttribute("content");null!=E&&"<"!=E.charAt(0)&&"%"!=E.charAt(0)&&(E=unescape(window.atob?atob(E):Base64.decode(E,!0)));null!=E&&"%"==E.charAt(0)&&(E=decodeURIComponent(E));null==E||"<mxfile "!==E.substring(0,8)&&"<mxGraphModel "!==E.substring(0,14)?B(d,mxUtils.bind(this,function(){try{if(n.substring(0,q+1),null!=x){var a=x.getElementsByTagName("svg");if(0<a.length){var f=a[0],m=parseFloat(f.getAttribute("width")),t=parseFloat(f.getAttribute("height")),u=f.getAttribute("viewBox");if(null== +u||0==u.length)f.setAttribute("viewBox","0 0 "+m+" "+t);else if(isNaN(m)||isNaN(t)){var r=u.split(" ");3<r.length&&(m=parseFloat(r[2]),t=parseFloat(r[3]))}n=this.createSvgDataUri(mxUtils.getXml(f));var E=Math.min(1,Math.min(e/Math.max(1,m)),e/Math.max(1,t)),B=g(n,k.type,b+d*p,c+d*p,Math.max(1,Math.round(m*E)),Math.max(1,Math.round(t*E)),k.name);if(isNaN(m)||isNaN(t)){var A=new Image;A.onload=mxUtils.bind(this,function(){m=Math.max(1,A.width);t=Math.max(1,A.height);B[0].geometry.width=m;B[0].geometry.height= +t;f.setAttribute("viewBox","0 0 "+m+" "+t);n=this.createSvgDataUri(mxUtils.getXml(f));var a=n.indexOf(";");0<a&&(n=n.substring(0,a)+n.substring(n.indexOf(",",a+1)));l.setCellStyles("image",n,[B[0]])});A.src=this.createSvgDataUri(mxUtils.getXml(f))}return B}}}catch(ua){}return null})):B(d,mxUtils.bind(this,function(){return g(E,"text/xml",b+d*p,c+d*p,0,0,k.name)}))}else B(d,mxUtils.bind(this,function(){return null}))}else{t=!1;if("image/png"==k.type){var C=A?null:this.extractGraphModelFromPng(a.target.result); +if(null!=C&&0<C.length){var y=new Image;y.src=a.target.result;B(d,mxUtils.bind(this,function(){return g(C,"text/xml",b+d*p,c+d*p,y.width,y.height,k.name)}));t=!0}}t||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"),mxResources.get("cancel"),mxUtils.bind(this,function(){}),null,mxResources.get("ok"),mxUtils.bind(this,function(){this.actions.get("import").funct()}))):this.loadImage(a.target.result,mxUtils.bind(this,function(l){this.resizeImage(l, +a.target.result,mxUtils.bind(this,function(l,n,m){B(d,mxUtils.bind(this,function(){if(null!=l&&l.length<r){var q=f&&this.isResampleImage(a.target.result,u)?Math.min(1,Math.min(e/n,e/m)):1;return g(l,k.type,b+d*p,c+d*p,Math.round(n*q),Math.round(m*q),k.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),f,e,u)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else g(a.target.result,k.type,b+d*p,c+d*p,240,160,k.name, +function(a){B(d,function(){return a})})});/(\.v(dx|sdx?))($|\?)/i.test(k.name)||/(\.vs(x|sx?))($|\?)/i.test(k.name)?g(null,k.type,b+d*p,c+d*p,240,160,k.name,function(a){B(d,function(){return a})},k):"image"==k.type.substring(0,5)?n.readAsDataURL(k):n.readAsText(k)}})(E)});l?this.confirmImageResize(function(a){f=a;x()},t):x()};EditorUi.prototype.confirmImageResize=function(a,b){b=null!=b?b:!1;var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},c=isLocalStorage||mxClient.IS_CHROMEAPP? +mxSettings.getResizeImages():null,e=function(c,e){if(c||b)mxSettings.setResizeImages(c?e:null),mxSettings.save();d();a(e)};null==c||b?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(a){e(a,!0)},function(a){e(a,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage|| +mxClient.IS_CHROMEAPP?220:200,!0,!0):e(!1,c)};EditorUi.prototype.parseFile=function(a,b,c){c=null!=c?c:a.name;var d=new FormData;d.append("format","xml");d.append("upfile",a,c);var e=new XMLHttpRequest;e.open("POST",OPEN_URL);e.onreadystatechange=function(){b(e)};e.send(d)};EditorUi.prototype.isResampleImage=function(a,b){b=null!=b?b:this.resampleThreshold;return a.length>b};EditorUi.prototype.resizeImage=function(a,b,c,e,g,k){g=null!=g?g:this.maxImageSize;var d=Math.max(1,a.width),f=Math.max(1,a.height); +if(e&&this.isResampleImage(b,k))try{var l=Math.max(d/g,f/g);if(1<l){var p=Math.round(d/l),n=Math.round(f/l),m=document.createElement("canvas");m.width=p;m.height=n;m.getContext("2d").drawImage(a,0,0,p,n);var q=m.toDataURL();if(q.length<b.length){var r=document.createElement("canvas");r.width=p;r.height=n;var v=r.toDataURL();q!==v&&(b=q,d=p,f=n)}}}catch(N){}c(b,d,f)};EditorUi.prototype.crcTable=[];for(var c=0;256>c;c++)for(var k=c,m=0;8>m;m++)k=1==(k&1)?3988292384^k>>>1:k>>>1,EditorUi.prototype.crcTable[c]= +k;EditorUi.prototype.updateCRC=function(a,b,c,e){for(var d=0;d<e;d++)a=EditorUi.prototype.crcTable[(a^b[c+d])&255]^a>>>8;return a};EditorUi.prototype.crc32=function(a){this.crcTable=this.crcTable||this.createCrcTable();for(var b=-1,d=0;d<a.length;d++)b=b>>>8^this.crcTable[(b^a.charCodeAt(d))&255];return(b^-1)>>>0};EditorUi.prototype.writeGraphModelToPng=function(a,b,c,e,g){function d(a,b){var d=k;k+=b;return a.substring(d,k)}function f(a){a=d(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<< +16)+(a.charCodeAt(0)<<24)}function l(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,!0);var k=0;if(d(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=g&&g();else if(d(a,4),"IHDR"!=d(a,4))null!=g&&g();else{d(a,17);g=a.substring(0,k);do{var n=f(a);if("IDAT"==d(a,4)){g=a.substring(0,k-8);c=c+String.fromCharCode(0)+("zTXt"==b?String.fromCharCode(0):"")+e;e=4294967295;e=this.updateCRC(e, +b,0,4);e=this.updateCRC(e,c,0,c.length);g+=l(c.length)+b+c+l(e^4294967295);g+=a.substring(k-8,a.length);break}g+=a.substring(k-8,k-4+n);d(a,n);d(a,4)}while(n);return"data:image/png;base64,"+(window.btoa?btoa(g):Base64.encode(g,!0))}};EditorUi.prototype.extractGraphModelFromPng=function(a){var b=null;try{var d=a.substring(a.indexOf(",")+1),c=window.atob&&!mxClient.IS_SF?atob(d):Base64.decode(d,!0);EditorUi.parsePng(c,mxUtils.bind(this,function(a,d,e){a=c.substring(a+8,a+8+e);"zTXt"==d?(e=a.indexOf(String.fromCharCode(0)), +"mxGraphModel"==a.substring(0,e)&&(a=this.editor.graph.bytesToString(pako.inflateRaw(a.substring(e+2))).replace(/\+/g," "),null!=a&&0<a.length&&(b=a))):"tEXt"==d&&(a=a.split(String.fromCharCode(0)),1<a.length&&"mxGraphModel"==a[0]&&(b=a[1]));if(null!=b||"IDAT"==d)return!0}))}catch(g){}null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));return b};EditorUi.prototype.loadImage=function(a,b,c){var d=new Image;d.onload=function(){b(d)};null!=c&&(d.onerror= +c);d.src=a};var q=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=mxStencilRegistry.allowEval&&!this.isOfflineApp();"undefined"!==typeof window.mxSettings&&(this.formatWidth=mxSettings.getFormatWidth());var a=this,b=this.editor.graph;b.getLinkTitle=function(b){return a.getLinkTitle(b)};b.customLinkClicked=function(b){var d=!1;try{a.handleCustomLink(b),d=!0}catch(C){a.handleError(C)}return d};var c=this.clearDefaultStyle;this.clearDefaultStyle=function(){c.apply(this, +arguments)};this.isOffline()||"undefined"===typeof window.EditDataDialog||(EditDataDialog.placeholderHelpLink="https://desk.draw.io/support/solutions/articles/16000051979");var e=a.editor.getEditBlankUrl;this.editor.getEditBlankUrl=function(b){b=null!=b?b:"";if(null!=a.pages&&null!=a.currentPage)for(var d=0;d<a.pages.length;d++)if(a.pages[d]==a.currentPage){0<d&&(b+=(0<b.length?"&":"?")+"page="+d);break}"1"==urlParams.dev&&(b+=(0<b.length?"&":"?")+"dev=1&drawdev=1");return e.apply(this,arguments)}; +var g=b.addClickHandler;b.addClickHandler=function(a,d,c){var e=d;d=function(a,d){if(null==d){var c=mxEvent.getSource(a);"a"==c.nodeName.toLowerCase()&&(d=c.getAttribute("href"))}null!=d&&b.isCustomLink(d)&&(mxEvent.isTouchEvent(a)||!mxEvent.isPopupTrigger(a))&&b.customLinkClicked(d)&&mxEvent.consume(a);null!=e&&e(a,d)};g.call(this,a,d,c)};q.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(b.view.canvas.ownerSVGElement,null,!0);a.actions.get("print").funct=function(){a.showDialog((new PrintDialog(a)).container, +360,null!=a.pages&&1<a.pages.length?420:360,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var k=b.getGlobalVariable;b.getGlobalVariable=function(b){return"page"==b&&null!=a.currentPage?a.currentPage.getName():"pagenumber"==b?null!=a.currentPage&&null!=a.pages?mxUtils.indexOf(a.pages,a.currentPage)+1:1:k.apply(this,arguments)};var m=b.labelLinkClicked;b.labelLinkClicked=function(a,d,c){var e=d.getAttribute("href");if(null==e||!b.isCustomLink(e)||!mxEvent.isTouchEvent(c)&&mxEvent.isPopupTrigger(c))m.apply(this, +arguments);else{if(!b.isEnabled()||null!=a&&b.isCellLocked(a.cell))b.customLinkClicked(e),b.getRubberband().reset();mxEvent.consume(c)}};this.editor.getOrCreateFilename=function(){var b=a.defaultFilename,d=a.getCurrentFile();null!=d&&(b=null!=d.getTitle()?d.getTitle():b);return b};var r=this.actions.get("print");r.setEnabled(!mxClient.IS_IOS||!navigator.standalone);r.visible=r.isEnabled();if(!this.editor.chromeless||this.editor.editable){var t=function(){window.setTimeout(function(){y.innerHTML=" "; +y.focus();document.execCommand("selectAll",!1,null)},0)};this.keyHandler.bindAction(70,!0,"find");this.keyHandler.bindAction(67,!0,"copyStyle",!0);this.keyHandler.bindAction(86,!0,"pasteStyle",!0);this.keyHandler.bindAction(77,!0,"editGeometry",!0);this.keyHandler.bindAction(88,!0,"insertText",!0);this.keyHandler.bindAction(75,!0,"insertRectangle");this.keyHandler.bindAction(75,!0,"insertEllipse",!0);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(this.altShiftActions[83]="synchronize");mxClient.IS_IE|| +b.container.addEventListener("paste",mxUtils.bind(this,function(a){var b=this.editor.graph;if(!mxEvent.isConsumed(a))try{for(var d=a.clipboardData||a.originalEvent.clipboardData,c=!1,e=0;e<d.types.length;e++)if("text/"===d.types[e].substring(0,5)){c=!0;break}if(!c){var f=d.items;for(index in f){var g=f[index];if("file"===g.kind){if(b.isEditing())this.importFiles([g.getAsFile()],0,0,this.maxImageSize,function(a,d,c,e,f,g){b.insertImage(a,f,g)},function(){},function(a){return"image/"==a.type.substring(0, +6)},function(a){for(var b=0;b<a.length;b++)a[b]()});else{var l=this.editor.graph.getInsertPoint();this.importFiles([g.getAsFile()],l.x,l.y,this.maxImageSize);mxEvent.consume(a)}break}}}}catch(J){}}),!1);var y=document.createElement("div");y.style.position="absolute";y.style.whiteSpace="nowrap";y.style.overflow="hidden";y.style.display="block";y.contentEditable=!0;mxUtils.setOpacity(y,0);y.style.width="1px";y.style.height="1px";y.innerHTML=" ";var u=!1;this.keyHandler.bindControlKey(88,null); +this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(a){var d=mxEvent.getSource(a);null==b.container||!b.isEnabled()||b.isMouseDown||b.isEditing()||null!=this.dialog||"INPUT"==d.nodeName||"TEXTAREA"==d.nodeName||!(224==a.keyCode||!mxClient.IS_MAC&&17==a.keyCode||mxClient.IS_MAC&&91==a.keyCode)||u||(y.style.left=b.container.scrollLeft+10+"px",y.style.top=b.container.scrollTop+10+"px",b.container.appendChild(y), +u=!0,mxClient.IS_QUIRKS?window.setTimeout(function(){y.focus();document.execCommand("selectAll",!1,null)},0):(y.focus(),document.execCommand("selectAll",!1,null)))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(a){var d=a.keyCode;window.setTimeout(mxUtils.bind(this,function(){!u||224!=d&&17!=d&&91!=d||(u=!1,b.isEditing()||null!=this.dialog||null==b.container||b.container.focus(),y.parentNode.removeChild(y),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(y, +"copy",mxUtils.bind(this,function(a){b.isEnabled()&&(mxClipboard.copy(b),this.copyCells(y),t())}));mxEvent.addListener(y,"cut",mxUtils.bind(this,function(a){b.isEnabled()&&(mxClipboard.copy(b),this.copyCells(y,!0),t())}));mxEvent.addListener(y,"paste",mxUtils.bind(this,function(a){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&(y.innerHTML=" ",y.focus(),window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(a,y);y.innerHTML=" "}),0))}),!0);var A=this.isSelectionAllowed;this.isSelectionAllowed= +function(a){return mxEvent.getSource(a)==y?!0:A.apply(this,arguments)}}this.spinner=this.createSpinner(document.body.clientWidth/2-2,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,24);Graph.fileSupport&&this.editor.graph.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,function(a){var b=this.editor.graph,d=b.cellEditor.text2,c=null;null!=d&&(mxEvent.addListener(d,"dragleave",function(a){null!=c&&(c.parentNode.removeChild(c),c=null);a.stopPropagation();a.preventDefault()}), +mxEvent.addListener(d,"dragover",mxUtils.bind(this,function(a){null==c&&(!mxClient.IS_IE||10<document.documentMode)&&(c=this.highlightElement(d));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(d,"drop",mxUtils.bind(this,function(a){null!=c&&(c.parentNode.removeChild(c),c=null);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,function(a,d,c,e,f,g){b.insertImage(a,f,g)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b= +0;b<a.length;b++)a[b]()},mxEvent.isControlDown(a));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")){var d=a.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(d)?this.loadImage(decodeURIComponent(d),mxUtils.bind(this,function(a){var c=Math.max(1,a.width);a=Math.max(1,a.height);var e=this.maxImageSize,e=Math.min(1,Math.min(e/Math.max(1,c)),e/Math.max(1,a));b.insertImage(decodeURIComponent(d),c*e,a*e)})):document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/plain"))}else 0<= +mxUtils.indexOf(a.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/plain"));a.stopPropagation();a.preventDefault()})))}));if("1"==urlParams.ruler&&"undefined"!==typeof mxRuler){r=document.createElement("div");r.style.position="absolute";r.style.top="95px";r.style.left="250px";r.style.width="2000px";r.style.height="30px";r.style.background= +"whiteSmoke";document.body.appendChild(r);var D=document.createElement("div");D.style.position="absolute";D.style.top="125px";D.style.left="220px";D.style.width="30px";D.style.height="1000px";D.style.background="whiteSmoke";document.body.appendChild(D);var v=document.createElement("div");v.style.position="absolute";v.style.top="95px";v.style.left="220px";v.style.width="30px";v.style.height="30px";v.style.background="whiteSmoke";document.body.appendChild(v);this.vRuler=new mxRuler(this.editor.graph, +D,!0);this.hRuler=new mxRuler(this.editor.graph,r,!1)}if("1"==urlParams.styledev){r=document.getElementById("geFooter");null!=r&&(this.styleInput=document.createElement("input"),this.styleInput.setAttribute("type","text"),this.styleInput.style.position="absolute",this.styleInput.style.top="14px",this.styleInput.style.left="2px",this.styleInput.style.width="98%",this.styleInput.style.visibility="hidden",this.styleInput.style.opacity="0.9",mxEvent.addListener(this.styleInput,"change",mxUtils.bind(this, +function(){this.editor.graph.getModel().setStyle(this.editor.graph.getSelectionCell(),this.styleInput.value)})),r.appendChild(this.styleInput),this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(a,b){if(0<this.editor.graph.getSelectionCount()){var d=this.editor.graph.getSelectionCell(),d=this.editor.graph.getModel().getStyle(d);this.styleInput.value=d||"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var z=this.isSelectionAllowed; +this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==this.styleInput?!0:z.apply(this,arguments)}}r=document.getElementById("geInfo");null!=r&&r.parentNode.removeChild(r);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var N=null;mxEvent.addListener(b.container,"dragleave",function(a){b.isEnabled()&&(null!=N&&(N.parentNode.removeChild(N),N=null),a.stopPropagation(),a.preventDefault())});mxEvent.addListener(b.container,"dragover",mxUtils.bind(this,function(a){null== +N&&(!mxClient.IS_IE||10<document.documentMode)&&(N=this.highlightElement(b.container));null!=this.sidebar&&this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()}));mxEvent.addListener(b.container,"drop",mxUtils.bind(this,function(a){null!=N&&(N.parentNode.removeChild(N),N=null);if(b.isEnabled()){var d=mxUtils.convertPoint(b.container,mxEvent.getClientX(a),mxEvent.getClientY(a)),c=b.view.translate,e=b.view.scale,f=d.x/e-c.x,g=d.y/e-c.y;mxEvent.isAltDown(a)&&(g=f=0);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files, +f,g,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(a),null,null,mxEvent.isShiftDown(a));else{var l=0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):null,d=this.extractGraphModelFromEvent(a,null!=this.pages);if(null!=d)b.setSelectionCells(this.importXml(d,f,g,!0));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/html")){var k=a.dataTransfer.getData("text/html"),d=document.createElement("div");d.innerHTML=k;var p=null,c=d.getElementsByTagName("img"); +null!=c&&1==c.length?(k=c[0].getAttribute("src"),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(k)||(p=!0)):(d=d.getElementsByTagName("a"),null!=d&&1==d.length&&(k=d[0].getAttribute("href")));var n=!0,m=mxUtils.bind(this,function(){b.setSelectionCells(this.insertTextAt(k,f,g,!0,p,null,n))});p&&k.length>this.resampleThreshold?this.confirmImageResize(function(a){n=a;m()},mxEvent.isControlDown(a)):m()}else null!=l&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(l)?this.loadImage(decodeURIComponent(l),mxUtils.bind(this, +function(a){var d=Math.max(1,a.width);a=Math.max(1,a.height);var c=this.maxImageSize,c=Math.min(1,Math.min(c/Math.max(1,d)),c/Math.max(1,a));b.setSelectionCell(b.insertVertex(null,null,"",f,g,d*c,a*c,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+l+";"))}),mxUtils.bind(this,function(a){b.setSelectionCells(this.insertTextAt(l,f,g,!0))})):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&b.setSelectionCells(this.insertTextAt(a.dataTransfer.getData("text/plain"), +f,g,!0))}}a.stopPropagation();a.preventDefault()}),!1)}this.initPages();this.editUpdateListener=mxUtils.bind(this,function(a,b){var d=b.getProperty("edit");null!=d&&this.updateEditReferences(d)});this.editor.undoManager.addListener(mxEvent.BEFORE_UNDO,this.editUpdateListener);this.editor.undoManager.addListener(mxEvent.BEFORE_REDO,this.editUpdateListener);"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.getLinkTitle=function(a){var b=Graph.prototype.getLinkTitle.apply(this, +arguments);if("data:page/id,"==a.substring(0,13)){var d=a.indexOf(",");0<d&&(b=this.getPageById(a.substring(d+1)),b=null!=b?b.getName():mxResources.get("pageNotFound"))}else"data:"==a.substring(0,5)&&(b=mxResources.get("action"));return b};EditorUi.prototype.handleCustomLink=function(a){if("data:page/id,"==a.substring(0,13)){var b=a.indexOf(",");if(a=this.getPageById(a.substring(b+1)))this.selectPage(a);else throw Error(mxResources.get("pageNotFound")||"Page not found");}else this.editor.graph.handleCustomLink(a)}; EditorUi.prototype.isSettingsEnabled=function(){return"undefined"!==typeof window.mxSettings&&(isLocalStorage||mxClient.IS_CHROMEAPP)};EditorUi.prototype.installSettings=function(){if(this.isSettingsEnabled()){ColorDialog.recentColors=mxSettings.getRecentColors();this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]));this.editor.graph.connectionHandler.setCreateTarget(mxSettings.isCreateTarget());this.fireEvent(new mxEventObject("copyConnectChanged"));this.addListener("copyConnectChanged", mxUtils.bind(this,function(a,b){mxSettings.setCreateTarget(this.editor.graph.connectionHandler.isCreateTarget());mxSettings.save()}));this.editor.graph.pageFormat=mxSettings.getPageFormat();this.addListener("pageFormatChanged",mxUtils.bind(this,function(a,b){mxSettings.setPageFormat(this.editor.graph.pageFormat);mxSettings.save()}));this.editor.graph.view.gridColor=mxSettings.getGridColor();this.addListener("gridColorChanged",mxUtils.bind(this,function(a,b){mxSettings.setGridColor(this.editor.graph.view.gridColor); mxSettings.save()}));if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)this.editor.addListener("autosaveChanged",mxUtils.bind(this,function(a,b){mxSettings.setAutosave(this.editor.autosave);mxSettings.save()})),this.editor.autosave=mxSettings.getAutosave();null!=this.sidebar&&this.sidebar.showPalette("search",mxSettings.settings.search);this.editor.chromeless&&!this.editor.editable||null==this.sidebar||!(mxSettings.settings.isNew||8>=parseInt(mxSettings.settings.version||0))||(this.toggleScratchpad(), -mxSettings.save());this.addListener("formatWidthChanged",function(){mxSettings.setFormatWidth(this.formatWidth);mxSettings.save()})}};EditorUi.prototype.copyCells=function(a,b){var c=this.editor.graph;if(c.isSelectionEmpty())a.innerHTML="";else{var d=mxUtils.sortCells(c.model.getTopmostCells(c.getSelectionCells())),f=mxUtils.getXml(this.editor.graph.encodeCells(d));mxUtils.setTextContent(a,encodeURIComponent(f));b?(c.removeCells(d,!1),c.lastPasteXml=null):(c.lastPasteXml=f,c.pasteCounter=0);a.focus(); -document.execCommand("selectAll",!1,null)}};EditorUi.prototype.pasteCells=function(a,b){if(!mxEvent.isConsumed(a)){var c=b.getElementsByTagName("span");if(null!=c&&0<c.length&&"application/vnd.lucid.chart.objects"===c[0].getAttribute("data-lucid-type")){var d=c[0].getAttribute("data-lucid-content");null!=d&&0<d.length&&(this.convertLucidChart(d,mxUtils.bind(this,function(a){this.editor.graph.setSelectionCells(this.importXml(a,0,0))}),mxUtils.bind(this,function(a){this.handleError(a)})),mxEvent.consume(a))}else{var d= -this.editor.graph,f=mxUtils.trim(mxClient.IS_QUIRKS||8==document.documentMode?mxUtils.getTextContent(b):b.textContent),g=!1;try{var k=f.lastIndexOf("%3E");0<=k&&k<f.length-3&&(f=f.substring(0,k+3))}catch(v){}try{var c=b.getElementsByTagName("span"),n=null!=c&&0<c.length?mxUtils.trim(decodeURIComponent(c[0].textContent)):decodeURIComponent(f);this.isCompatibleString(n)&&(g=!0,f=n)}catch(v){}d.lastPasteXml==f?d.pasteCounter++:(d.lastPasteXml=f,d.pasteCounter=0);c=d.pasteCounter*d.gridSize;if(null!= -f&&0<f.length&&(g||this.isCompatibleString(f)?d.setSelectionCells(this.importXml(f,c,c)):(g=d.getInsertPoint(),d.isMouseInsertPoint()&&(c=0,d.lastPasteXml==f&&0<d.pasteCounter&&d.pasteCounter--),d.setSelectionCells(this.insertTextAt(f,g.x+c,g.y+c,!0))),!d.isSelectionEmpty())){d.scrollCellToVisible(d.getSelectionCell());null!=this.hoverIcons&&this.hoverIcons.update(d.view.getState(d.getSelectionCell()));try{mxEvent.consume(a)}catch(v){}}}}};EditorUi.prototype.addFileDropHandler=function(a){if(Graph.fileSupport)for(var b= -null,c=0;c<a.length;c++)mxEvent.addListener(a[c],"dragleave",function(a){null!=b&&(b.parentNode.removeChild(b),b=null);a.stopPropagation();a.preventDefault()}),mxEvent.addListener(a[c],"dragover",mxUtils.bind(this,function(a){(this.editor.graph.isEnabled()||"1"!=urlParams.embed)&&null==b&&(!mxClient.IS_IE||10<document.documentMode&&12>document.documentMode)&&(b=this.highlightElement());a.stopPropagation();a.preventDefault()})),mxEvent.addListener(a[c],"drop",mxUtils.bind(this,function(a){null!=b&& -(b.parentNode.removeChild(b),b=null);if(this.editor.graph.isEnabled()||"1"!=urlParams.embed)if(0<a.dataTransfer.files.length)this.hideDialog(),"1"==urlParams.embed?this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,null,null,null,null,!mxEvent.isControlDown(a)&&!mxEvent.isShiftDown(a)):this.openFiles(a.dataTransfer.files,!0);else{var c=this.extractGraphModelFromEvent(a);if(null==c){var d=null!=a.dataTransfer?a.dataTransfer:a.clipboardData;null!=d&&(10==document.documentMode||11==document.documentMode? -c=d.getData("Text"):(c=null,c=0<=mxUtils.indexOf(d.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):0<=mxUtils.indexOf(d.types,"text/html")?d.getData("text/html"):null,null!=c&&0<c.length?(d=document.createElement("div"),d.innerHTML=c,d=d.getElementsByTagName("img"),0<d.length&&(c=d[0].getAttribute("src"))):0<=mxUtils.indexOf(d.types,"text/plain")&&(c=d.getData("text/plain"))),null!=c&&("data:image/png;base64,"==c.substring(0,22)?(c=this.extractGraphModelFromPng(c),null!=c&&0<c.length&& -this.openLocalFile(c,null,!0)):!this.isOffline()&&this.isRemoteFileFormat(c)?(new mxXmlRequest(OPEN_URL,"format=xml&data="+encodeURIComponent(c))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()&&this.openLocalFile(a.getText(),null,!0)})):/^https?:\/\//.test(c)&&(null==this.getCurrentFile()?window.location.hash="#U"+encodeURIComponent(c):window.openWindow((mxClient.IS_CHROMEAPP?"https://www.draw.io/":"https://"+location.host+"/")+window.location.search+"#U"+encodeURIComponent(c)))))}else this.openLocalFile(c, -null,!0)}a.stopPropagation();a.preventDefault()}))};EditorUi.prototype.highlightElement=function(a){var b=0,c=0,d,f;if(null==a){f=document.body;var k=document.documentElement;d=(f.clientWidth||k.clientWidth)-3;f=Math.max(f.clientHeight||0,k.clientHeight)-3}else b=a.offsetTop,c=a.offsetLeft,d=a.clientWidth,f=a.clientHeight;k=document.createElement("div");k.style.zIndex=mxPopupMenu.prototype.zIndex+2;k.style.border="3px dotted rgb(254, 137, 12)";k.style.pointerEvents="none";k.style.position="absolute"; -k.style.top=b+"px";k.style.left=c+"px";k.style.width=Math.max(0,d-3)+"px";k.style.height=Math.max(0,f-3)+"px";null!=a&&a.parentNode==this.editor.graph.container?this.editor.graph.container.appendChild(k):document.body.appendChild(k);return k};EditorUi.prototype.stringToCells=function(a){a=mxUtils.parseXml(a);var b=this.editor.extractGraphModel(a.documentElement);a=[];if(null!=b){var c=new mxCodec(b.ownerDocument),d=new mxGraphModel;c.decode(b,d);b=d.getChildAt(d.getRoot(),0);for(c=0;c<d.getChildCount(b);c++)a.push(d.getChildAt(b, -c))}return a};EditorUi.prototype.openFiles=function(a,b){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var c=0;c<a.length;c++)mxUtils.bind(this,function(a){var c=new FileReader;c.onload=mxUtils.bind(this,function(c){try{var d=c.target.result,f=a.name;if(null!=f&&0<f.length){!this.useCanvasForExport&&/(\.png)$/i.test(f)&&(f=f.substring(0,f.length-4)+".xml");var g=mxUtils.bind(this,function(a){f=0<=f.lastIndexOf(".")?f.substring(0,f.lastIndexOf("."))+".xml":f+".xml";if("<mxlibrary"== -a.substring(0,10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,a,f))}catch(y){this.handleError(y,mxResources.get("errorLoadingFile"))}}else this.openLocalFile(a,f,b)});if(/(\.v(dx|sdx?))($|\?)/i.test(f)||/(\.vs(x|sx?))($|\?)/i.test(f))this.importVisio(a,mxUtils.bind(this,function(a){this.spinner.stop();g(a)}));else if(/(\.*<graphml )/.test(d))this.importGraphML(d,mxUtils.bind(this,function(a){this.spinner.stop(); -g(a)}));else if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,f))this.parseFile(a,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?g(a.responseText):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))}));else if(this.isLucidChartData(d))/(\.json)$/i.test(f)&&(f=f.substring(0,f.length-5)+".xml"),this.convertLucidChart(d, -mxUtils.bind(this,function(a){this.spinner.stop();this.openLocalFile(a,f,b)}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));else if("<mxlibrary"==c.target.result.substring(0,10)){this.spinner.stop();null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,c.target.result,a.name))}catch(D){this.handleError(D,mxResources.get("errorLoadingFile"))}}else"image/png"==a.type.substring(0, -9)&&(d=this.extractGraphModelFromPng(d)),this.spinner.stop(),this.openLocalFile(d,f,b)}}catch(D){this.handleError(D)}});c.onerror=mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a);window.openFile=null});"image"===a.type.substring(0,5)&&"image/svg"!==a.type.substring(0,9)?c.readAsDataURL(a):c.readAsText(a)})(a[c])};EditorUi.prototype.openLocalFile=function(a,b,d){var c=this.getCurrentFile(),f=mxUtils.bind(this,function(){window.openFile=null;if(null==b&&null!=this.getCurrentFile()&& -this.isDiagramEmpty()){var c=mxUtils.parseXml(a);null!=c&&(this.editor.setGraphXml(c.documentElement),this.editor.graph.selectAll())}else this.fileLoaded(new LocalFile(this,a,b||this.defaultFilename,d))});if(null!=a&&0<a.length)null==c||!c.isModified()&&(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)?f():(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&null!=c&&c.isModified()?this.confirm(mxResources.get("allChangesLost"),null,f,mxResources.get("cancel"),mxResources.get("discardChanges")):(window.openFile= -new OpenFile(function(){window.openFile=null}),window.openFile.setData(a,b),window.openWindow(this.getUrl(),null,mxUtils.bind(this,function(){null!=c&&c.isModified()?this.confirm(mxResources.get("allChangesLost"),null,f,mxResources.get("cancel"),mxResources.get("discardChanges")):f()})));else throw Error(mxResources.get("notADiagramFile"));};EditorUi.prototype.getBasenames=function(){var a={};if(null!=this.pages)for(var b=0;b<this.pages.length;b++)this.updatePageRoot(this.pages[b]),this.addBasenamesForCell(this.pages[b].root, -a);else this.addBasenamesForCell(this.editor.graph.model.getRoot(),a);var b=[],d;for(d in a)b.push(d);return b};EditorUi.prototype.addBasenamesForCell=function(a,b){function c(a){if(null!=a){var c=a.lastIndexOf(".");0<c&&(a=a.substring(c+1,a.length));null==b[a]&&(b[a]=!0)}}var d=this.editor.graph,f=d.getCellStyle(a);c(mxStencilRegistry.getBasenameForStencil(f[mxConstants.STYLE_SHAPE]));d.model.isEdge(a)&&(c(mxMarker.getPackageForType(f[mxConstants.STYLE_STARTARROW])),c(mxMarker.getPackageForType(f[mxConstants.STYLE_ENDARROW]))); -for(var f=d.model.getChildCount(a),g=0;g<f;g++)this.addBasenamesForCell(d.model.getChildAt(a,g),b)};EditorUi.prototype.setGraphEnabled=function(a){this.diagramContainer.style.visibility=a?"":"hidden";this.formatContainer.style.visibility=a?"":"hidden";this.sidebarFooterContainer.style.display=a?"":"none";this.sidebarContainer.style.display=a?"":"none";this.hsplit.style.display=a?"":"none";this.editor.graph.setEnabled(a);null!=this.tabContainer&&(this.tabContainer.style.visibility=a?"":"hidden");a|| +mxSettings.save());this.addListener("formatWidthChanged",function(){mxSettings.setFormatWidth(this.formatWidth);mxSettings.save()})}};EditorUi.prototype.copyCells=function(a,b){var d=this.editor.graph;if(d.isSelectionEmpty())a.innerHTML="";else{var c=mxUtils.sortCells(d.model.getTopmostCells(d.getSelectionCells())),e=mxUtils.getXml(this.editor.graph.encodeCells(c));mxUtils.setTextContent(a,encodeURIComponent(e));b?(d.removeCells(c,!1),d.lastPasteXml=null):(d.lastPasteXml=e,d.pasteCounter=0);a.focus(); +document.execCommand("selectAll",!1,null)}};EditorUi.prototype.pasteCells=function(a,b){if(!mxEvent.isConsumed(a)){var d=b.getElementsByTagName("span");if(null!=d&&0<d.length&&"application/vnd.lucid.chart.objects"===d[0].getAttribute("data-lucid-type")){var c=d[0].getAttribute("data-lucid-content");null!=c&&0<c.length&&(this.convertLucidChart(c,mxUtils.bind(this,function(a){this.editor.graph.setSelectionCells(this.importXml(a,0,0))}),mxUtils.bind(this,function(a){this.handleError(a)})),mxEvent.consume(a))}else{var c= +this.editor.graph,e=mxUtils.trim(mxClient.IS_QUIRKS||8==document.documentMode?mxUtils.getTextContent(b):b.textContent),f=!1;try{var k=e.lastIndexOf("%3E");0<=k&&k<e.length-3&&(e=e.substring(0,k+3))}catch(t){}try{var d=b.getElementsByTagName("span"),m=null!=d&&0<d.length?mxUtils.trim(decodeURIComponent(d[0].textContent)):decodeURIComponent(e);this.isCompatibleString(m)&&(f=!0,e=m)}catch(t){}c.lastPasteXml==e?c.pasteCounter++:(c.lastPasteXml=e,c.pasteCounter=0);d=c.pasteCounter*c.gridSize;if(null!= +e&&0<e.length&&(f||this.isCompatibleString(e)?c.setSelectionCells(this.importXml(e,d,d)):(f=c.getInsertPoint(),c.isMouseInsertPoint()&&(d=0,c.lastPasteXml==e&&0<c.pasteCounter&&c.pasteCounter--),c.setSelectionCells(this.insertTextAt(e,f.x+d,f.y+d,!0))),!c.isSelectionEmpty())){c.scrollCellToVisible(c.getSelectionCell());null!=this.hoverIcons&&this.hoverIcons.update(c.view.getState(c.getSelectionCell()));try{mxEvent.consume(a)}catch(t){}}}}};EditorUi.prototype.addFileDropHandler=function(a){if(Graph.fileSupport)for(var b= +null,d=0;d<a.length;d++)mxEvent.addListener(a[d],"dragleave",function(a){null!=b&&(b.parentNode.removeChild(b),b=null);a.stopPropagation();a.preventDefault()}),mxEvent.addListener(a[d],"dragover",mxUtils.bind(this,function(a){(this.editor.graph.isEnabled()||"1"!=urlParams.embed)&&null==b&&(!mxClient.IS_IE||10<document.documentMode&&12>document.documentMode)&&(b=this.highlightElement());a.stopPropagation();a.preventDefault()})),mxEvent.addListener(a[d],"drop",mxUtils.bind(this,function(a){null!=b&& +(b.parentNode.removeChild(b),b=null);if(this.editor.graph.isEnabled()||"1"!=urlParams.embed)if(0<a.dataTransfer.files.length)this.hideDialog(),"1"==urlParams.embed?this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,null,null,null,null,!mxEvent.isControlDown(a)&&!mxEvent.isShiftDown(a)):this.openFiles(a.dataTransfer.files,!0);else{var d=this.extractGraphModelFromEvent(a);if(null==d){var c=null!=a.dataTransfer?a.dataTransfer:a.clipboardData;null!=c&&(10==document.documentMode||11==document.documentMode? +d=c.getData("Text"):(d=null,d=0<=mxUtils.indexOf(c.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):0<=mxUtils.indexOf(c.types,"text/html")?c.getData("text/html"):null,null!=d&&0<d.length?(c=document.createElement("div"),c.innerHTML=d,c=c.getElementsByTagName("img"),0<c.length&&(d=c[0].getAttribute("src"))):0<=mxUtils.indexOf(c.types,"text/plain")&&(d=c.getData("text/plain"))),null!=d&&("data:image/png;base64,"==d.substring(0,22)?(d=this.extractGraphModelFromPng(d),null!=d&&0<d.length&& +this.openLocalFile(d,null,!0)):!this.isOffline()&&this.isRemoteFileFormat(d)?(new mxXmlRequest(OPEN_URL,"format=xml&data="+encodeURIComponent(d))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()&&this.openLocalFile(a.getText(),null,!0)})):/^https?:\/\//.test(d)&&(null==this.getCurrentFile()?window.location.hash="#U"+encodeURIComponent(d):window.openWindow((mxClient.IS_CHROMEAPP?EditorUi.drawHost+"/":"https://"+location.host+"/")+window.location.search+"#U"+encodeURIComponent(d)))))}else this.openLocalFile(d, +null,!0)}a.stopPropagation();a.preventDefault()}))};EditorUi.prototype.highlightElement=function(a){var b=0,d=0,c,e;if(null==a){e=document.body;var k=document.documentElement;c=(e.clientWidth||k.clientWidth)-3;e=Math.max(e.clientHeight||0,k.clientHeight)-3}else b=a.offsetTop,d=a.offsetLeft,c=a.clientWidth,e=a.clientHeight;k=document.createElement("div");k.style.zIndex=mxPopupMenu.prototype.zIndex+2;k.style.border="3px dotted rgb(254, 137, 12)";k.style.pointerEvents="none";k.style.position="absolute"; +k.style.top=b+"px";k.style.left=d+"px";k.style.width=Math.max(0,c-3)+"px";k.style.height=Math.max(0,e-3)+"px";null!=a&&a.parentNode==this.editor.graph.container?this.editor.graph.container.appendChild(k):document.body.appendChild(k);return k};EditorUi.prototype.stringToCells=function(a){a=mxUtils.parseXml(a);var b=this.editor.extractGraphModel(a.documentElement);a=[];if(null!=b){var d=new mxCodec(b.ownerDocument),c=new mxGraphModel;d.decode(b,c);b=c.getChildAt(c.getRoot(),0);for(d=0;d<c.getChildCount(b);d++)a.push(c.getChildAt(b, +d))}return a};EditorUi.prototype.openFiles=function(a,b){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var d=0;d<a.length;d++)mxUtils.bind(this,function(a){var d=new FileReader;d.onload=mxUtils.bind(this,function(d){try{var c=d.target.result,e=a.name;if(null!=e&&0<e.length){!this.useCanvasForExport&&/(\.png)$/i.test(e)&&(e=e.substring(0,e.length-4)+".xml");var f=mxUtils.bind(this,function(a){e=0<=e.lastIndexOf(".")?e.substring(0,e.lastIndexOf("."))+".xml":e+".xml";if("<mxlibrary"== +a.substring(0,10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,a,e))}catch(u){this.handleError(u,mxResources.get("errorLoadingFile"))}}else this.openLocalFile(a,e,b)});if(/(\.v(dx|sdx?))($|\?)/i.test(e)||/(\.vs(x|sx?))($|\?)/i.test(e))this.importVisio(a,mxUtils.bind(this,function(a){this.spinner.stop();f(a)}));else if(/(\.*<graphml )/.test(c))this.importGraphML(c,mxUtils.bind(this,function(a){this.spinner.stop(); +f(a)}));else if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(c,e))this.parseFile(a,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?f(a.responseText):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))}));else if(this.isLucidChartData(c))/(\.json)$/i.test(e)&&(e=e.substring(0,e.length-5)+".xml"),this.convertLucidChart(c, +mxUtils.bind(this,function(a){this.spinner.stop();this.openLocalFile(a,e,b)}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));else if("<mxlibrary"==d.target.result.substring(0,10)){this.spinner.stop();null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,d.target.result,a.name))}catch(y){this.handleError(y,mxResources.get("errorLoadingFile"))}}else"image/png"==a.type.substring(0, +9)&&(c=this.extractGraphModelFromPng(c)),this.spinner.stop(),this.openLocalFile(c,e,b)}}catch(y){this.handleError(y)}});d.onerror=mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a);window.openFile=null});"image"===a.type.substring(0,5)&&"image/svg"!==a.type.substring(0,9)?d.readAsDataURL(a):d.readAsText(a)})(a[d])};EditorUi.prototype.openLocalFile=function(a,b,c){var d=this.getCurrentFile(),e=mxUtils.bind(this,function(){window.openFile=null;if(null==b&&null!=this.getCurrentFile()&& +this.isDiagramEmpty()){var d=mxUtils.parseXml(a);null!=d&&(this.editor.setGraphXml(d.documentElement),this.editor.graph.selectAll())}else this.fileLoaded(new LocalFile(this,a,b||this.defaultFilename,c))});if(null!=a&&0<a.length)null==d||!d.isModified()&&(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)?e():(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&null!=d&&d.isModified()?this.confirm(mxResources.get("allChangesLost"),null,e,mxResources.get("cancel"),mxResources.get("discardChanges")):(window.openFile= +new OpenFile(function(){window.openFile=null}),window.openFile.setData(a,b),window.openWindow(this.getUrl(),null,mxUtils.bind(this,function(){null!=d&&d.isModified()?this.confirm(mxResources.get("allChangesLost"),null,e,mxResources.get("cancel"),mxResources.get("discardChanges")):e()})));else throw Error(mxResources.get("notADiagramFile"));};EditorUi.prototype.getBasenames=function(){var a={};if(null!=this.pages)for(var b=0;b<this.pages.length;b++)this.updatePageRoot(this.pages[b]),this.addBasenamesForCell(this.pages[b].root, +a);else this.addBasenamesForCell(this.editor.graph.model.getRoot(),a);var b=[],c;for(c in a)b.push(c);return b};EditorUi.prototype.addBasenamesForCell=function(a,b){function d(a){if(null!=a){var d=a.lastIndexOf(".");0<d&&(a=a.substring(d+1,a.length));null==b[a]&&(b[a]=!0)}}var c=this.editor.graph,e=c.getCellStyle(a);d(mxStencilRegistry.getBasenameForStencil(e[mxConstants.STYLE_SHAPE]));c.model.isEdge(a)&&(d(mxMarker.getPackageForType(e[mxConstants.STYLE_STARTARROW])),d(mxMarker.getPackageForType(e[mxConstants.STYLE_ENDARROW]))); +for(var e=c.model.getChildCount(a),f=0;f<e;f++)this.addBasenamesForCell(c.model.getChildAt(a,f),b)};EditorUi.prototype.setGraphEnabled=function(a){this.diagramContainer.style.visibility=a?"":"hidden";this.formatContainer.style.visibility=a?"":"hidden";this.sidebarFooterContainer.style.display=a?"":"none";this.sidebarContainer.style.display=a?"":"none";this.hsplit.style.display=a?"":"none";this.editor.graph.setEnabled(a);null!=this.tabContainer&&(this.tabContainer.style.visibility=a?"":"hidden");a|| (null!=this.actions.outlineWindow&&this.actions.outlineWindow.window.setVisible(!1),null!=this.actions.layersWindow&&this.actions.layersWindow.window.setVisible(!1),null!=this.menus.tagsWindow&&this.menus.tagsWindow.window.setVisible(!1),null!=this.menus.findWindow&&this.menus.findWindow.window.setVisible(!1))};EditorUi.prototype.initializeEmbedMode=function(){this.setGraphEnabled(!1);(window.opener||window.parent)!=window&&("1"!=urlParams.spin||this.spinner.spin(document.body,mxResources.get("loading")))&& -this.installMessageHandler(mxUtils.bind(this,function(a,b,d){this.spinner.stop();this.addEmbedButtons();this.setGraphEnabled(!0);null!=a&&0<a.length?(this.setFileData(a),this.editor.isChromelessView()?this.editor.graph.isLightboxView()&&this.lightboxFit():this.showLayersDialog(),this.chromelessResize&&this.chromelessResize()):(this.editor.graph.model.clear(),this.editor.fireEvent(new mxEventObject("resetGraphView")));this.editor.undoManager.clear();this.editor.modified=null!=d?d:!1;this.updateUi(); +this.installMessageHandler(mxUtils.bind(this,function(a,b,c){this.spinner.stop();this.addEmbedButtons();this.setGraphEnabled(!0);null!=a&&0<a.length?(this.setFileData(a),this.editor.isChromelessView()?this.editor.graph.isLightboxView()&&this.lightboxFit():this.showLayersDialog(),this.chromelessResize&&this.chromelessResize()):(this.editor.graph.model.clear(),this.editor.fireEvent(new mxEventObject("resetGraphView")));this.editor.undoManager.clear();this.editor.modified=null!=c?c:!1;this.updateUi(); window.self!==window.top&&window.focus();null!=this.format&&this.format.refresh()}))};EditorUi.prototype.showLayersDialog=function(){1<this.editor.graph.getModel().getChildCount(this.editor.graph.getModel().getRoot())&&(null==this.actions.layersWindow?this.actions.get("layers").funct():this.actions.layersWindow.window.setVisible(!0))};EditorUi.prototype.getPublicUrl=function(a,b){null!=a?a.getPublicUrl(b):b(null)};EditorUi.prototype.createLoadMessage=function(a){var b=this.editor.graph;return{event:a, -pageVisible:b.pageVisible,translate:b.view.translate,bounds:b.getGraphBounds(),currentPage:this.getSelectedPageIndex(),scale:b.view.scale,page:b.view.getBackgroundPageBounds()}};EditorUi.prototype.installMessageHandler=function(a){var b=null,c=!1,d=!1,f=null,k=mxUtils.bind(this,function(a,b){this.editor.modified&&"0"!=urlParams.modified?null!=urlParams.modified&&this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(urlParams.modified))):this.editor.setStatus("")});this.editor.graph.model.addListener(mxEvent.CHANGE, -k);mxEvent.addListener(window,"message",mxUtils.bind(this,function(g){if(g.source==(window.opener||window.parent)){var h=g.data,k=mxUtils.bind(this,function(a){if(null!=a&&"function"===typeof a.charAt&&"<"!=a.charAt(0))try{"data:image/png;base64,"==a.substring(0,22)?a=this.extractGraphModelFromPng(a):"data:image/svg+xml;base64,"==a.substring(0,26)?a=atob(a.substring(26)):"data:image/svg+xml;utf8,"==a.substring(0,24)&&(a=a.substring(24)),null!=a&&("%"==a.charAt(0)?a=decodeURIComponent(a):"<"!=a.charAt(0)&& -(a=this.editor.graph.decompress(a)))}catch(O){}return a});if("json"==urlParams.proto){try{h=JSON.parse(h)}catch(K){h=null}if(null==h)return;if("dialog"==h.action){this.showError(null!=h.titleKey?mxResources.get(h.titleKey):h.title,null!=h.messageKey?mxResources.get(h.messageKey):h.message,null!=h.buttonKey?mxResources.get(h.buttonKey):h.button);null!=h.modified&&(this.editor.modified=h.modified);return}if("prompt"==h.action){this.spinner.stop();k=new FilenameDialog(this,h.defaultValue||"",null!=h.okKey? -mxResources.get(h.okKey):null,function(a){null!=a&&n.postMessage(JSON.stringify({event:"prompt",value:a,message:h}),"*")},null!=h.titleKey?mxResources.get(h.titleKey):h.title);this.showDialog(k.container,300,80,!0,!1);k.init();return}if("draft"==h.action){var l=k(h.xml);this.spinner.stop();k=new DraftDialog(this,mxResources.get("draftFound",[h.name||this.defaultFilename]),l,mxUtils.bind(this,function(){this.hideDialog();n.postMessage(JSON.stringify({event:"draft",result:"edit",message:h}),"*")}), -mxUtils.bind(this,function(){this.hideDialog();n.postMessage(JSON.stringify({event:"draft",result:"discard",message:h}),"*")}),h.editKey?mxResources.get(h.editKey):null,h.discardKey?mxResources.get(h.discardKey):null,h.ignore?mxUtils.bind(this,function(){this.hideDialog();n.postMessage(JSON.stringify({event:"draft",result:"ignore",message:h}),"*")}):null);this.showDialog(k.container,640,480,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));try{k.init()}catch(K){n.postMessage(JSON.stringify({event:"draft", -error:K.toString(),message:h}),"*")}return}if("template"==h.action){this.spinner.stop();k=1==h.enableRecent;l=1==h.enableSearch;k=new NewDialog(this,!1,null!=h.callback,mxUtils.bind(this,function(b,c){b=b||this.emptyDiagramXml;null!=h.callback?n.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:c}),"*"):(a(b,g,b!=this.emptyDiagramXml),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,k?mxUtils.bind(this,function(a){this.recentReadyCallback= -a;n.postMessage(JSON.stringify({event:"recentDocs"}),"*")}):null,l?mxUtils.bind(this,function(a,b){this.searchReadyCallback=b;n.postMessage(JSON.stringify({event:"searchDocs",searchStr:a}),"*")}):null,function(a,b,c){n.postMessage(JSON.stringify({event:"template",docUrl:a,info:b,name:c}),"*")});this.showDialog(k.container,620,440,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));k.init();return}if("searchDocsList"==h.action)this.searchReadyCallback(h.list,h.errorMsg);else if("recentDocsList"== -h.action)this.recentReadyCallback(h.list,h.errorMsg);else{if("textContent"==h.action){this.editor.graph.setEnabled(!1);var m=this.editor.graph,k="";if(null!=this.pages)for(l=0;l<this.pages.length;l++){var r=m;this.currentPage!=this.pages[l]&&(r=this.createTemporaryGraph(m.getStylesheet()),r.model.setRoot(this.pages[l].root));k+=this.pages[l].getName()+" "+r.getIndexableText()+" "}else k=m.getIndexableText();this.editor.graph.setEnabled(!0);n.postMessage(JSON.stringify({event:"textContent",data:k, -message:h}),"*");return}if("status"==h.action){null!=h.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(h.messageKey))):null!=h.message&&this.editor.setStatus(mxUtils.htmlEntities(h.message));null!=h.modified&&(this.editor.modified=h.modified);return}if("spinner"==h.action){var p=null!=h.messageKey?mxResources.get(h.messageKey):h.message;null==h.show||h.show?this.spinner.spin(document.body,p):this.spinner.stop();return}if("export"==h.action){if("png"==h.format||"xmlpng"==h.format){if(null== -h.spin&&null==h.spinKey||this.spinner.spin(document.body,null!=h.spinKey?mxResources.get(h.spinKey):h.spin)){var q=null!=h.xml?h.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var m=this.editor.graph,t=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();var b=this.createLoadMessage("export");b.format=h.format;b.message=h;b.data=a;b.xml=encodeURIComponent(q);n.postMessage(JSON.stringify(b),"*")}),w=mxUtils.bind(this,function(a){null==a&&(a=Editor.blankImage); -"xmlpng"==h.format&&(a=this.writeGraphModelToPng(a,"zTXt","mxGraphModel",atob(this.editor.graph.compress(q))));m!=this.editor.graph&&m.container.parentNode.removeChild(m.container);t(a)});if(this.isExportToCanvas()){if(null!=this.pages&&this.currentPage!=this.pages[0]){var m=this.createTemporaryGraph(m.getStylesheet()),x=m.getGlobalVariable,z=this.pages[0];m.getGlobalVariable=function(a){return"page"==a?z.getName():"pagenumber"==a?1:x.apply(this,arguments)};document.body.appendChild(m.container); -m.model.setRoot(z.root)}this.exportToCanvas(mxUtils.bind(this,function(a){w(a.toDataURL("image/png"))}),null,null,null,mxUtils.bind(this,function(){w(null)}),null,null,null,null,null,null,m)}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==h.format?"1":"0")+"&base64=1&xml="+encodeURIComponent(encodeURIComponent(q)))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()?t("data:image/png;base64,"+a.getText()):w(null)}),mxUtils.bind(this,function(){w(null)}))}}else{null!= -h.xml&&0<h.xml.length&&this.setFileData(h.xml);p=this.createLoadMessage("export");if("html2"==h.format||"html"==h.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length))k=this.getXmlFileData(),p.xml=mxUtils.getXml(k),p.data=this.getFileData(null,null,!0,null,null,null,k),p.format=h.format;else if("html"==h.format)q=this.editor.getGraphXml(),p.data=this.getHtml(q,this.editor.graph),p.xml=mxUtils.getXml(q),p.format=h.format;else{mxSvgCanvas2D.prototype.foAltText=null;k=this.editor.graph.background; -k==mxConstants.NONE&&(k=null);p.xml=this.getFileData(!0);p.format="svg";if(h.embedImages||null==h.embedImages){if(null==h.spin&&null==h.spinKey||this.spinner.spin(document.body,null!=h.spinKey?mxResources.get(h.spinKey):h.spin))this.editor.graph.setEnabled(!1),"xmlsvg"==h.format?this.getEmbeddedSvg(p.xml,this.editor.graph,null,!0,mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();p.data=this.createSvgDataUri(a);n.postMessage(JSON.stringify(p),"*")})):this.convertImages(this.editor.graph.getSvg(k), -mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();p.data=this.createSvgDataUri(mxUtils.getXml(a));n.postMessage(JSON.stringify(p),"*")}));return}k="xmlsvg"==h.format?this.getEmbeddedSvg(this.getFileData(!0),this.editor.graph,null,!0):mxUtils.getXml(this.editor.graph.getSvg(k));p.data=this.createSvgDataUri(k)}n.postMessage(JSON.stringify(p),"*")}return}if("load"==h.action)d=1==h.autosave,this.hideDialog(),null!=h.modified&&null==urlParams.modified&&(urlParams.modified= -h.modified),null!=h.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=h.saveAndExit),null!=h.title&&null!=this.buttonContainer&&(l=document.createElement("span"),mxUtils.write(l,h.title),"atlas"==uiTheme?(this.buttonContainer.style.paddingRight="12px",this.buttonContainer.style.paddingTop="12px"):"min"!=uiTheme&&(this.buttonContainer.style.paddingRight="38px",this.buttonContainer.style.paddingTop="6px"),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan), -this.buttonContainer.appendChild(l),this.embedFilenameSpan=l),h=null!=h.xmlpng?this.extractGraphModelFromPng(h.xmlpng):h.xml;else{n.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(h)}),"*");return}}}var B=mxUtils.bind(this,function(g,h){c=!0;try{a(g,h)}catch(W){this.handleError(W)}c=!1;null!=urlParams.modified&&this.editor.setStatus("");var k=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}); -f=k();d&&null==b&&(b=mxUtils.bind(this,function(a,b){var d=k();if(d!=f&&!c){var g=this.createLoadMessage("autosave");g.xml=d;d=JSON.stringify(g);(window.opener||window.parent).postMessage(d,"*")}f=d}),this.editor.graph.model.addListener(mxEvent.CHANGE,b),this.editor.graph.addListener("gridSizeChanged",b),this.editor.graph.addListener("shadowVisibleChanged",b),this.addListener("pageFormatChanged",b),this.addListener("pageScaleChanged",b),this.addListener("backgroundColorChanged",b),this.addListener("backgroundImageChanged", -b),this.addListener("foldingEnabledChanged",b),this.addListener("mathEnabledChanged",b),this.addListener("gridEnabledChanged",b),this.addListener("guidesEnabledChanged",b),this.addListener("pageViewChanged",b));"1"!=urlParams.returnbounds&&"json"!=urlParams.proto||n.postMessage(JSON.stringify(this.createLoadMessage("load")),"*")});null!=h&&"function"===typeof h.substring&&"data:application/vnd.visio;base64,"==h.substring(0,34)?(k="0M8R4KGxGuE"==h.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(h.substring(h.indexOf(",")+ -1)),function(a){B(a,g)},mxUtils.bind(this,function(a){this.handleError(a)}),k)):null!=h&&"function"===typeof h.substring&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(h,"")?this.parseFile(new Blob([h],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&200<=a.status&&299>=a.status&&"<mxGraphModel"==a.responseText.substring(0,13)&&B(a.responseText,g)}),""):null!=h&&"function"===typeof h.substring&&this.isLucidChartData(h)?this.convertLucidChart(h, -mxUtils.bind(this,function(a){B(a)}),mxUtils.bind(this,function(a){this.handleError(a)})):(h=k(h),B(h,g))}}));var n=window.opener||window.parent,k="json"==urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";n.postMessage(k,"*")};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar){var a=document.createElement("div");a.style.display="inline-block";a.style.position="absolute";a.style.paddingTop="atlas"==uiTheme?"2px":"3px";a.style.paddingLeft="8px";a.style.paddingBottom= +pageVisible:b.pageVisible,translate:b.view.translate,bounds:b.getGraphBounds(),currentPage:this.getSelectedPageIndex(),scale:b.view.scale,page:b.view.getBackgroundPageBounds()}};EditorUi.prototype.installMessageHandler=function(a){var b=null,d=!1,c=!1,e=null,k=mxUtils.bind(this,function(a,b){this.editor.modified&&"0"!=urlParams.modified?null!=urlParams.modified&&this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(urlParams.modified))):this.editor.setStatus("")});this.editor.graph.model.addListener(mxEvent.CHANGE, +k);mxEvent.addListener(window,"message",mxUtils.bind(this,function(f){if(f.source==(window.opener||window.parent)){var g=f.data,k=mxUtils.bind(this,function(a){if(null!=a&&"function"===typeof a.charAt&&"<"!=a.charAt(0))try{"data:image/png;base64,"==a.substring(0,22)?a=this.extractGraphModelFromPng(a):"data:image/svg+xml;base64,"==a.substring(0,26)?a=atob(a.substring(26)):"data:image/svg+xml;utf8,"==a.substring(0,24)&&(a=a.substring(24)),null!=a&&("%"==a.charAt(0)?a=decodeURIComponent(a):"<"!=a.charAt(0)&& +(a=this.editor.graph.decompress(a)))}catch(V){}return a});if("json"==urlParams.proto){try{g=JSON.parse(g)}catch(O){g=null}if(null==g)return;if("dialog"==g.action){this.showError(null!=g.titleKey?mxResources.get(g.titleKey):g.title,null!=g.messageKey?mxResources.get(g.messageKey):g.message,null!=g.buttonKey?mxResources.get(g.buttonKey):g.button);null!=g.modified&&(this.editor.modified=g.modified);return}if("prompt"==g.action){this.spinner.stop();k=new FilenameDialog(this,g.defaultValue||"",null!=g.okKey? +mxResources.get(g.okKey):null,function(a){null!=a&&m.postMessage(JSON.stringify({event:"prompt",value:a,message:g}),"*")},null!=g.titleKey?mxResources.get(g.titleKey):g.title);this.showDialog(k.container,300,80,!0,!1);k.init();return}if("draft"==g.action){var l=k(g.xml);this.spinner.stop();k=new DraftDialog(this,mxResources.get("draftFound",[g.name||this.defaultFilename]),l,mxUtils.bind(this,function(){this.hideDialog();m.postMessage(JSON.stringify({event:"draft",result:"edit",message:g}),"*")}), +mxUtils.bind(this,function(){this.hideDialog();m.postMessage(JSON.stringify({event:"draft",result:"discard",message:g}),"*")}),g.editKey?mxResources.get(g.editKey):null,g.discardKey?mxResources.get(g.discardKey):null,g.ignore?mxUtils.bind(this,function(){this.hideDialog();m.postMessage(JSON.stringify({event:"draft",result:"ignore",message:g}),"*")}):null);this.showDialog(k.container,640,480,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));try{k.init()}catch(O){m.postMessage(JSON.stringify({event:"draft", +error:O.toString(),message:g}),"*")}return}if("template"==g.action){this.spinner.stop();k=1==g.enableRecent;l=1==g.enableSearch;k=new NewDialog(this,!1,null!=g.callback,mxUtils.bind(this,function(b,d){b=b||this.emptyDiagramXml;null!=g.callback?m.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:d}),"*"):(a(b,f,b!=this.emptyDiagramXml),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,k?mxUtils.bind(this,function(a){this.recentReadyCallback= +a;m.postMessage(JSON.stringify({event:"recentDocs"}),"*")}):null,l?mxUtils.bind(this,function(a,b){this.searchReadyCallback=b;m.postMessage(JSON.stringify({event:"searchDocs",searchStr:a}),"*")}):null,function(a,b,d){m.postMessage(JSON.stringify({event:"template",docUrl:a,info:b,name:d}),"*")});this.showDialog(k.container,620,440,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));k.init();return}if("searchDocsList"==g.action)this.searchReadyCallback(g.list,g.errorMsg);else if("recentDocsList"== +g.action)this.recentReadyCallback(g.list,g.errorMsg);else{if("textContent"==g.action){this.editor.graph.setEnabled(!1);var p=this.editor.graph,k="";if(null!=this.pages)for(l=0;l<this.pages.length;l++){var n=p;this.currentPage!=this.pages[l]&&(n=this.createTemporaryGraph(p.getStylesheet()),n.model.setRoot(this.pages[l].root));k+=this.pages[l].getName()+" "+n.getIndexableText()+" "}else k=p.getIndexableText();this.editor.graph.setEnabled(!0);m.postMessage(JSON.stringify({event:"textContent",data:k, +message:g}),"*");return}if("status"==g.action){null!=g.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(g.messageKey))):null!=g.message&&this.editor.setStatus(mxUtils.htmlEntities(g.message));null!=g.modified&&(this.editor.modified=g.modified);return}if("spinner"==g.action){var q=null!=g.messageKey?mxResources.get(g.messageKey):g.message;null==g.show||g.show?this.spinner.spin(document.body,q):this.spinner.stop();return}if("export"==g.action){if("png"==g.format||"xmlpng"==g.format){if(null== +g.spin&&null==g.spinKey||this.spinner.spin(document.body,null!=g.spinKey?mxResources.get(g.spinKey):g.spin)){var r=null!=g.xml?g.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var p=this.editor.graph,x=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();var b=this.createLoadMessage("export");b.format=g.format;b.message=g;b.data=a;b.xml=encodeURIComponent(r);m.postMessage(JSON.stringify(b),"*")}),B=mxUtils.bind(this,function(a){null==a&&(a=Editor.blankImage); +"xmlpng"==g.format&&(a=this.writeGraphModelToPng(a,"zTXt","mxGraphModel",atob(this.editor.graph.compress(r))));p!=this.editor.graph&&p.container.parentNode.removeChild(p.container);x(a)});if(this.isExportToCanvas()){if(null!=this.pages&&this.currentPage!=this.pages[0]){var p=this.createTemporaryGraph(p.getStylesheet()),E=p.getGlobalVariable,C=this.pages[0];p.getGlobalVariable=function(a){return"page"==a?C.getName():"pagenumber"==a?1:E.apply(this,arguments)};document.body.appendChild(p.container); +p.model.setRoot(C.root)}this.exportToCanvas(mxUtils.bind(this,function(a){B(a.toDataURL("image/png"))}),null,null,null,mxUtils.bind(this,function(){B(null)}),null,null,null,null,null,null,p)}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==g.format?"1":"0")+"&base64=1&xml="+encodeURIComponent(encodeURIComponent(r)))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()?x("data:image/png;base64,"+a.getText()):B(null)}),mxUtils.bind(this,function(){B(null)}))}}else{null!= +g.xml&&0<g.xml.length&&this.setFileData(g.xml);q=this.createLoadMessage("export");if("html2"==g.format||"html"==g.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length))k=this.getXmlFileData(),q.xml=mxUtils.getXml(k),q.data=this.getFileData(null,null,!0,null,null,null,k),q.format=g.format;else if("html"==g.format)r=this.editor.getGraphXml(),q.data=this.getHtml(r,this.editor.graph),q.xml=mxUtils.getXml(r),q.format=g.format;else{mxSvgCanvas2D.prototype.foAltText=null;k=this.editor.graph.background; +k==mxConstants.NONE&&(k=null);q.xml=this.getFileData(!0);q.format="svg";if(g.embedImages||null==g.embedImages){if(null==g.spin&&null==g.spinKey||this.spinner.spin(document.body,null!=g.spinKey?mxResources.get(g.spinKey):g.spin))this.editor.graph.setEnabled(!1),"xmlsvg"==g.format?this.getEmbeddedSvg(q.xml,this.editor.graph,null,!0,mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();q.data=this.createSvgDataUri(a);m.postMessage(JSON.stringify(q),"*")})):this.convertImages(this.editor.graph.getSvg(k), +mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();q.data=this.createSvgDataUri(mxUtils.getXml(a));m.postMessage(JSON.stringify(q),"*")}));return}k="xmlsvg"==g.format?this.getEmbeddedSvg(this.getFileData(!0),this.editor.graph,null,!0):mxUtils.getXml(this.editor.graph.getSvg(k));q.data=this.createSvgDataUri(k)}m.postMessage(JSON.stringify(q),"*")}return}if("load"==g.action)c=1==g.autosave,this.hideDialog(),null!=g.modified&&null==urlParams.modified&&(urlParams.modified= +g.modified),null!=g.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=g.saveAndExit),null!=g.title&&null!=this.buttonContainer&&(l=document.createElement("span"),mxUtils.write(l,g.title),"atlas"==uiTheme?(this.buttonContainer.style.paddingRight="12px",this.buttonContainer.style.paddingTop="12px"):"min"!=uiTheme&&(this.buttonContainer.style.paddingRight="38px",this.buttonContainer.style.paddingTop="6px"),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan), +this.buttonContainer.appendChild(l),this.embedFilenameSpan=l),g=null!=g.xmlpng?this.extractGraphModelFromPng(g.xmlpng):g.xml;else{m.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(g)}),"*");return}}}var v=mxUtils.bind(this,function(f,g){d=!0;try{a(f,g)}catch(W){this.handleError(W)}d=!1;null!=urlParams.modified&&this.editor.setStatus("");var k=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}); +e=k();c&&null==b&&(b=mxUtils.bind(this,function(a,b){var c=k();if(c!=e&&!d){var f=this.createLoadMessage("autosave");f.xml=c;c=JSON.stringify(f);(window.opener||window.parent).postMessage(c,"*")}e=c}),this.editor.graph.model.addListener(mxEvent.CHANGE,b),this.editor.graph.addListener("gridSizeChanged",b),this.editor.graph.addListener("shadowVisibleChanged",b),this.addListener("pageFormatChanged",b),this.addListener("pageScaleChanged",b),this.addListener("backgroundColorChanged",b),this.addListener("backgroundImageChanged", +b),this.addListener("foldingEnabledChanged",b),this.addListener("mathEnabledChanged",b),this.addListener("gridEnabledChanged",b),this.addListener("guidesEnabledChanged",b),this.addListener("pageViewChanged",b));"1"!=urlParams.returnbounds&&"json"!=urlParams.proto||m.postMessage(JSON.stringify(this.createLoadMessage("load")),"*")});null!=g&&"function"===typeof g.substring&&"data:application/vnd.visio;base64,"==g.substring(0,34)?(k="0M8R4KGxGuE"==g.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(g.substring(g.indexOf(",")+ +1)),function(a){v(a,f)},mxUtils.bind(this,function(a){this.handleError(a)}),k)):null!=g&&"function"===typeof g.substring&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(g,"")?this.parseFile(new Blob([g],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&200<=a.status&&299>=a.status&&"<mxGraphModel"==a.responseText.substring(0,13)&&v(a.responseText,f)}),""):null!=g&&"function"===typeof g.substring&&this.isLucidChartData(g)?this.convertLucidChart(g, +mxUtils.bind(this,function(a){v(a)}),mxUtils.bind(this,function(a){this.handleError(a)})):(g=k(g),v(g,f))}}));var m=window.opener||window.parent,k="json"==urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";m.postMessage(k,"*")};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar){var a=document.createElement("div");a.style.display="inline-block";a.style.position="absolute";a.style.paddingTop="atlas"==uiTheme?"2px":"3px";a.style.paddingLeft="8px";a.style.paddingBottom= "2px";var b=document.createElement("button");mxUtils.write(b,mxResources.get("save"));b.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)");b.className="geBigButton";b.style.fontSize="12px";b.style.padding="4px 6px 4px 6px";b.style.borderRadius="3px";mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()}));a.appendChild(b);"1"==urlParams.saveAndExit&&(b=document.createElement("a"),mxUtils.write(b,mxResources.get("saveAndExit")),b.setAttribute("title", mxResources.get("saveAndExit")),b.style.fontSize="12px",b.style.marginLeft="6px",b.style.padding="4px",b.style.cursor="pointer",mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b));b=document.createElement("a");mxUtils.write(b,mxResources.get("exit"));b.setAttribute("title",mxResources.get("exit"));b.style.fontSize="12px";b.style.marginLeft="6px";b.style.marginRight="20px";b.style.padding="4px";b.style.cursor="pointer";mxEvent.addListener(b, "click",mxUtils.bind(this,function(){this.actions.get("exit").funct()}));a.appendChild(b);this.toolbar.container.appendChild(a);this.toolbar.staticElements.push(a);a.style.right="atlas"!=uiTheme?"52px":"42px"}};EditorUi.prototype.showImportCsvDialog=function(){null==this.importCsvDialog&&(this.importCsvDialog=new TextareaDialog(this,mxResources.get("csv")+":",Editor.defaultCsvValue,mxUtils.bind(this,function(a){this.importCsv(a)}),null,null,620,430,null,!0,!0,mxResources.get("import")));this.showDialog(this.importCsvDialog.container, -640,520,!0,!0);this.importCsvDialog.init()};EditorUi.prototype.importCsv=function(a,b){try{var c=a.split("\n"),d=[];if(0<c.length){var f={},g=null,k=null,n=null,p=null,q="",w="auto",u="auto",A=null,F=null,Q=40,G=40,I=100,M=0,z=this.editor.graph;z.getGraphBounds();for(var B=function(){null!=b?b(fa):(z.setSelectionCells(fa),z.scrollCellToVisible(z.getSelectionCell()))},K=z.getFreeInsertPoint(),O=K.x,T=K.y,K=T,W=null,V="auto",p=null,J=[],ha=null,na=null,Y=0;Y<c.length&&"#"==c[Y].charAt(0);){a=c[Y];for(Y++;Y< -c.length&&"\\"==a.charAt(a.length-1)&&"#"==c[Y].charAt(0);)a=a.substring(0,a.length-1)+mxUtils.trim(c[Y].substring(1)),Y++;if("#"!=a.charAt(1)){var ba=a.indexOf(":");if(0<ba){var N=mxUtils.trim(a.substring(1,ba)),H=mxUtils.trim(a.substring(ba+1));"label"==N?W=z.sanitizeHtml(H):"style"==N?g=H:"parentstyle"==N?k=H:"identity"==N&&0<H.length&&"-"!=H?n=H:"parent"==N&&0<H.length&&"-"!=H?p=H:"namespace"==N&&0<H.length&&"-"!=H?q=H:"width"==N?w=H:"height"==N?u=H:"left"==N&&0<H.length?A=H:"top"==N&&0<H.length? -F=H:"ignore"==N?na=H.split(","):"connect"==N?J.push(JSON.parse(H)):"link"==N?ha=H:"padding"==N?M=parseFloat(H):"edgespacing"==N?Q=parseFloat(H):"nodespacing"==N?G=parseFloat(H):"levelspacing"==N?I=parseFloat(H):"layout"==N&&(V=H)}}}var U=this.editor.csvToArray(c[Y]),N=ba=null;if(null!=n||null!=p)for(var L=0;L<U.length;L++)n==U[L]&&(ba=L),p==U[L]&&(N=L);null==W&&(W="%"+U[0]+"%");if(null!=J)for(var P=0;P<J.length;P++)null==f[J[P].to]&&(f[J[P].to]={});z.model.beginUpdate();try{for(L=Y+1;L<c.length;L++){var R= -this.editor.csvToArray(c[L]);if(null==R){var ja=40<c[L].length?c[L].substring(0,40)+"...":c[L];throw Error(L+" ("+ja+") "+mxResources.get("containsValidationErrors"));}if(R.length==U.length){var E=null,ea=null!=ba?q+R[ba]:null;null!=ea&&(E=z.model.getCell(ea));null==E&&(E=new mxCell(W,new mxGeometry(O,K,0,0),g||"whiteSpace=wrap;html=1;"),E.vertex=!0,E.id=ea);for(var X=0;X<R.length;X++)z.setAttributeForCell(E,U[X],R[X]);z.setAttributeForCell(E,"placeholders","1");E.style=z.replacePlaceholders(E,E.style); -for(P=0;P<J.length;P++)f[J[P].to][E.getAttribute(J[P].to)]=E;null!=ha&&"link"!=ha&&(z.setLinkForCell(E,E.getAttribute(ha)),z.setAttributeForCell(E,ha,null));z.fireEvent(new mxEventObject("cellsInserted","cells",[E]));var Z=this.editor.graph.getPreferredSizeForCell(E);E.vertex&&(null!=A&&null!=E.getAttribute(A)&&(E.geometry.x=O+parseFloat(E.getAttribute(A))),null!=F&&null!=E.getAttribute(F)&&(E.geometry.y=T+parseFloat(E.getAttribute(F))),"@"==w.charAt(0)&&null!=E.getAttribute(w.substring(1))?E.geometry.width= -parseFloat(E.getAttribute(w.substring(1))):E.geometry.width="auto"==w?Z.width+M:parseFloat(w),"@"==u.charAt(0)&&null!=E.getAttribute(u.substring(1))?E.geometry.height=parseFloat(E.getAttribute(u.substring(1))):E.geometry.height="auto"==u?Z.height+M:parseFloat(u),K+=E.geometry.height+G);p=null!=N?z.model.getCell(q+R[N]):null;null!=p?(p.style=z.replacePlaceholders(p,k),z.addCell(E,p)):d.push(z.addCell(E))}}for(var ca=d.slice(),fa=d.slice(),P=0;P<J.length;P++)for(var aa=J[P],L=0;L<d.length;L++){var E= -d[L],qa=E.getAttribute(aa.from);if(null!=qa){z.setAttributeForCell(E,aa.from,null);for(var sa=qa.split(","),X=0;X<sa.length;X++){var la=f[aa.to][sa[X]];null!=la&&(W=aa.label,null!=aa.fromlabel&&(W=(E.getAttribute(aa.fromlabel)||"")+(W||"")),null!=aa.tolabel&&(W=(W||"")+(la.getAttribute(aa.tolabel)||"")),fa.push(z.insertEdge(null,null,W||"",aa.invert?la:E,aa.invert?E:la,aa.style||z.createCurrentEdgeStyle())),mxUtils.remove(aa.invert?E:la,ca))}}}if(null!=na)for(L=0;L<d.length;L++)for(E=d[L],X=0;X<na.length;X++)z.setAttributeForCell(E, -mxUtils.trim(na[X]),null);var oa=new mxParallelEdgeLayout(z);oa.spacing=Q;var va=function(){oa.execute(z.getDefaultParent());for(var a=0;a<d.length;a++){var b=z.getCellGeometry(d[a]);b.x=Math.round(z.snap(b.x));b.y=Math.round(z.snap(b.y));"auto"==w&&(b.width=Math.round(z.snap(b.width)));"auto"==u&&(b.height=Math.round(z.snap(b.height)))}};if("circle"==V){var ka=new mxCircleLayout(z);ka.resetEdges=!1;var ta=ka.isVertexIgnored;ka.isVertexIgnored=function(a){return ta.apply(this,arguments)||0>mxUtils.indexOf(d, -a)};this.executeLayout(function(){ka.execute(z.getDefaultParent());va()},!0,B);B=null}else if("horizontaltree"==V||"verticaltree"==V||"auto"==V&&fa.length==2*d.length-1&&1==ca.length){z.view.validate();var ia=new mxCompactTreeLayout(z,"horizontaltree"==V);ia.levelDistance=G;ia.edgeRouting=!1;ia.resetEdges=!1;this.executeLayout(function(){ia.execute(z.getDefaultParent(),0<ca.length?ca[0]:null)},!0,B);B=null}else if("horizontalflow"==V||"verticalflow"==V||"auto"==V&&1==ca.length){z.view.validate(); -var ga=new mxHierarchicalLayout(z,"horizontalflow"==V?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);ga.intraCellSpacing=G;ga.parallelEdgeSpacing=Q;ga.interRankCellSpacing=I;ga.disableEdgeStyle=!1;this.executeLayout(function(){ga.execute(z.getDefaultParent(),fa);z.moveCells(fa,O,T)},!0,B);B=null}else if("organic"==V||"auto"==V&&fa.length>d.length){z.view.validate();var da=new mxFastOrganicLayout(z);da.forceConstant=3*G;da.resetEdges=!1;var ya=da.isVertexIgnored;da.isVertexIgnored=function(a){return ya.apply(this, -arguments)||0>mxUtils.indexOf(d,a)};oa=new mxParallelEdgeLayout(z);oa.spacing=Q;this.executeLayout(function(){da.execute(z.getDefaultParent());va()},!0,B);B=null}this.hideDialog()}finally{z.model.endUpdate()}null!=B&&B()}}catch(wa){this.handleError(wa)}};EditorUi.prototype.getSearch=function(a){var b="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=a&&0<window.location.search.length){var c="?",d;for(d in urlParams)0>mxUtils.indexOf(a,d)&&null!=urlParams[d]&&(b+=c+d+"="+urlParams[d],c="&")}else b= -window.location.search;return b};EditorUi.prototype.getUrl=function(a){a=null!=a?a:window.location.pathname;var b=0<a.indexOf("?")?1:0;if("1"==urlParams.offline)a+=window.location.search;else{var c="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),d;for(d in urlParams)0>mxUtils.indexOf(c,d)&&(a=0==b?a+"?":a+"&",null!=urlParams[d]&&(a+=d+"="+urlParams[d],b++))}return a};EditorUi.prototype.showLinkDialog=function(a,b,d){a=new LinkDialog(this,a,b,d, -!0);this.showDialog(a.container,480,130,!0,!0);a.init()};var p=EditorUi.prototype.createOutline;EditorUi.prototype.createOutline=function(a){var b=p.apply(this,arguments),c=this.editor.graph,d=b.getSourceGraphBounds;b.getSourceGraphBounds=function(){if(mxUtils.hasScrollbars(c.container)&&c.pageVisible&&null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width-2*a.x/b),Math.ceil(this.source.minimumGraphSize.height- -2*a.y/b))}return d.apply(this,arguments)};var f=b.getSourceContainerSize;b.getSourceContainerSize=function(){if(mxUtils.hasScrollbars(c.container)&&null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width*b-2*a.x),Math.ceil(this.source.minimumGraphSize.height*b-2*a.y))}return f.apply(this,arguments)};b.getOutlineOffset=function(a){if(mxUtils.hasScrollbars(c.container)&&null!=this.source.minimumGraphSize){var d= -this.source.getPagePadding();return new mxPoint(Math.round(Math.max(0,(b.outline.container.clientWidth/a-(this.source.minimumGraphSize.width-2*d.x))/2)-d.x),Math.round(Math.max(0,(b.outline.container.clientHeight/a-(this.source.minimumGraphSize.height-2*d.y))/2)-d.y-5/a))}return new mxPoint(8/a,8/a)};var k=b.init;b.init=function(){k.apply(this,arguments);b.outline.view.getBackgroundPageBounds=function(){var a=c.getPageLayout(),b=c.getPageSize();return new mxRectangle(this.scale*(this.translate.x+ -a.x*b.width),this.scale*(this.translate.y+a.y*b.height),this.scale*a.width*b.width,this.scale*a.height*b.height)};b.outline.view.validateBackgroundPage()};this.editor.addListener("pageSelected",function(a,c){var d=c.getProperty("change"),f=b.source,g=b.outline;g.pageScale=f.pageScale;g.pageFormat=f.pageFormat;g.background=f.background;g.pageVisible=f.pageVisible;g.background=f.background;var h=mxUtils.getCurrentStyle(f.container);g.container.style.backgroundColor=h.backgroundColor;null!=f.view.backgroundPageShape&& -null!=g.view.backgroundPageShape&&(g.view.backgroundPageShape.fill=f.view.backgroundPageShape.fill);b.outline.view.clear(d.previousPage.root,!0);b.outline.view.validate()});return b};EditorUi.prototype.getServiceCount=function(a,b){var c=0;null==this.drive&&"function"!==typeof window.DriveClient||c++;b||null==this.dropbox&&"function"!==typeof window.DropboxClient||c++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||c++;b||null==this.gitHub||c++;b||null==this.trello&&"function"!==typeof window.TrelloClient|| -c++;c++;return c};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var a=this.getCurrentFile(),b=null!=a||"1"==urlParams.embed&&this.editor.graph.isEnabled();this.menus.get("viewPanels").setEnabled(b);this.menus.get("viewZoom").setEnabled(b);var d=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==a||a.isRestricted());this.actions.get("makeCopy").setEnabled(!d);this.actions.get("print").setEnabled(!d);this.menus.get("exportAs").setEnabled(!d); -this.menus.get("embed").setEnabled(!d);d="1"!=urlParams.embed||this.editor.graph.isEnabled();this.menus.get("extras").setEnabled(d);Editor.enableCustomLibraries&&(this.menus.get("openLibraryFrom").setEnabled(d),this.menus.get("newLibrary").setEnabled(d));a="1"==urlParams.embed&&this.editor.graph.isEnabled()||null!=a&&a.isEditable();this.actions.get("image").setEnabled(b);this.actions.get("zoomIn").setEnabled(b);this.actions.get("zoomOut").setEnabled(b);this.actions.get("resetView").setEnabled(b); -this.actions.get("undo").setEnabled(this.canUndo()&&a);this.actions.get("redo").setEnabled(this.canRedo()&&a);this.menus.get("edit").setEnabled(b);this.menus.get("view").setEnabled(b);this.menus.get("importFrom").setEnabled(a);this.menus.get("arrange").setEnabled(a);null!=this.toolbar&&(null!=this.toolbar.edgeShapeMenu&&this.toolbar.edgeShapeMenu.setEnabled(a),null!=this.toolbar.edgeStyleMenu&&this.toolbar.edgeStyleMenu.setEnabled(a));if(this.isAppCache()){var f=applicationCache;if(null!=f&&null== +640,520,!0,!0);this.importCsvDialog.init()};EditorUi.prototype.importCsv=function(a,b){try{var d=a.split("\n"),c=[];if(0<d.length){var e={},f=null,k=null,m=null,q=null,r="",u="auto",A="auto",v=null,z=null,S=40,N=40,K=100,E=0,C=this.editor.graph;C.getGraphBounds();for(var M=function(){null!=b?b(ga):(C.setSelectionCells(ga),C.scrollCellToVisible(C.getSelectionCell()))},O=C.getFreeInsertPoint(),V=O.x,T=O.y,O=T,W=null,J="auto",q=null,X=[],la=null,fa=null,Y=0;Y<d.length&&"#"==d[Y].charAt(0);){a=d[Y];for(Y++;Y< +d.length&&"\\"==a.charAt(a.length-1)&&"#"==d[Y].charAt(0);)a=a.substring(0,a.length-1)+mxUtils.trim(d[Y].substring(1)),Y++;if("#"!=a.charAt(1)){var ca=a.indexOf(":");if(0<ca){var H=mxUtils.trim(a.substring(1,ca)),I=mxUtils.trim(a.substring(ca+1));"label"==H?W=C.sanitizeHtml(I):"style"==H?f=I:"parentstyle"==H?k=I:"identity"==H&&0<I.length&&"-"!=I?m=I:"parent"==H&&0<I.length&&"-"!=I?q=I:"namespace"==H&&0<I.length&&"-"!=I?r=I:"width"==H?u=I:"height"==H?A=I:"left"==H&&0<I.length?v=I:"top"==H&&0<I.length? +z=I:"ignore"==H?fa=I.split(","):"connect"==H?X.push(JSON.parse(I)):"link"==H?la=I:"padding"==H?E=parseFloat(I):"edgespacing"==H?S=parseFloat(I):"nodespacing"==H?N=parseFloat(I):"levelspacing"==H?K=parseFloat(I):"layout"==H&&(J=I)}}}var aa=this.editor.csvToArray(d[Y]),H=ca=null;if(null!=m||null!=q)for(var L=0;L<aa.length;L++)m==aa[L]&&(ca=L),q==aa[L]&&(H=L);null==W&&(W="%"+aa[0]+"%");if(null!=X)for(var P=0;P<X.length;P++)null==e[X[P].to]&&(e[X[P].to]={});C.model.beginUpdate();try{for(L=Y+1;L<d.length;L++){var da= +this.editor.csvToArray(d[L]);if(null==da){var Z=40<d[L].length?d[L].substring(0,40)+"...":d[L];throw Error(L+" ("+Z+") "+mxResources.get("containsValidationErrors"));}if(da.length==aa.length){var G=null,ja=null!=ca?r+da[ca]:null;null!=ja&&(G=C.model.getCell(ja));null==G&&(G=new mxCell(W,new mxGeometry(V,O,0,0),f||"whiteSpace=wrap;html=1;"),G.vertex=!0,G.id=ja);for(var Q=0;Q<da.length;Q++)C.setAttributeForCell(G,aa[Q],da[Q]);C.setAttributeForCell(G,"placeholders","1");G.style=C.replacePlaceholders(G, +G.style);for(P=0;P<X.length;P++)e[X[P].to][G.getAttribute(X[P].to)]=G;null!=la&&"link"!=la&&(C.setLinkForCell(G,G.getAttribute(la)),C.setAttributeForCell(G,la,null));C.fireEvent(new mxEventObject("cellsInserted","cells",[G]));var ha=this.editor.graph.getPreferredSizeForCell(G);G.vertex&&(null!=v&&null!=G.getAttribute(v)&&(G.geometry.x=V+parseFloat(G.getAttribute(v))),null!=z&&null!=G.getAttribute(z)&&(G.geometry.y=T+parseFloat(G.getAttribute(z))),"@"==u.charAt(0)&&null!=G.getAttribute(u.substring(1))? +G.geometry.width=parseFloat(G.getAttribute(u.substring(1))):G.geometry.width="auto"==u?ha.width+E:parseFloat(u),"@"==A.charAt(0)&&null!=G.getAttribute(A.substring(1))?G.geometry.height=parseFloat(G.getAttribute(A.substring(1))):G.geometry.height="auto"==A?ha.height+E:parseFloat(A),O+=G.geometry.height+N);q=null!=H?C.model.getCell(r+da[H]):null;null!=q?(q.style=C.replacePlaceholders(q,k),C.addCell(G,q)):c.push(C.addCell(G))}}for(var ka=c.slice(),ga=c.slice(),P=0;P<X.length;P++)for(var ba=X[P],L=0;L< +c.length;L++){var G=c[L],wa=G.getAttribute(ba.from);if(null!=wa){C.setAttributeForCell(G,ba.from,null);for(var ua=wa.split(","),Q=0;Q<ua.length;Q++){var pa=e[ba.to][ua[Q]];null!=pa&&(W=ba.label,null!=ba.fromlabel&&(W=(G.getAttribute(ba.fromlabel)||"")+(W||"")),null!=ba.tolabel&&(W=(W||"")+(pa.getAttribute(ba.tolabel)||"")),ga.push(C.insertEdge(null,null,W||"",ba.invert?pa:G,ba.invert?G:pa,ba.style||C.createCurrentEdgeStyle())),mxUtils.remove(ba.invert?G:pa,ka))}}}if(null!=fa)for(L=0;L<c.length;L++)for(G= +c[L],Q=0;Q<fa.length;Q++)C.setAttributeForCell(G,mxUtils.trim(fa[Q]),null);var ta=new mxParallelEdgeLayout(C);ta.spacing=S;var va=function(){ta.execute(C.getDefaultParent());for(var a=0;a<c.length;a++){var b=C.getCellGeometry(c[a]);b.x=Math.round(C.snap(b.x));b.y=Math.round(C.snap(b.y));"auto"==u&&(b.width=Math.round(C.snap(b.width)));"auto"==A&&(b.height=Math.round(C.snap(b.height)))}};if("circle"==J){var ma=new mxCircleLayout(C);ma.resetEdges=!1;var ra=ma.isVertexIgnored;ma.isVertexIgnored=function(a){return ra.apply(this, +arguments)||0>mxUtils.indexOf(c,a)};this.executeLayout(function(){ma.execute(C.getDefaultParent());va()},!0,M);M=null}else if("horizontaltree"==J||"verticaltree"==J||"auto"==J&&ga.length==2*c.length-1&&1==ka.length){C.view.validate();var ia=new mxCompactTreeLayout(C,"horizontaltree"==J);ia.levelDistance=N;ia.edgeRouting=!1;ia.resetEdges=!1;this.executeLayout(function(){ia.execute(C.getDefaultParent(),0<ka.length?ka[0]:null)},!0,M);M=null}else if("horizontalflow"==J||"verticalflow"==J||"auto"==J&& +1==ka.length){C.view.validate();var ea=new mxHierarchicalLayout(C,"horizontalflow"==J?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);ea.intraCellSpacing=N;ea.parallelEdgeSpacing=S;ea.interRankCellSpacing=K;ea.disableEdgeStyle=!1;this.executeLayout(function(){ea.execute(C.getDefaultParent(),ga);C.moveCells(ga,V,T)},!0,M);M=null}else if("organic"==J||"auto"==J&&ga.length>c.length){C.view.validate();var sa=new mxFastOrganicLayout(C);sa.forceConstant=3*N;sa.resetEdges=!1;var xa=sa.isVertexIgnored; +sa.isVertexIgnored=function(a){return xa.apply(this,arguments)||0>mxUtils.indexOf(c,a)};ta=new mxParallelEdgeLayout(C);ta.spacing=S;this.executeLayout(function(){sa.execute(C.getDefaultParent());va()},!0,M);M=null}this.hideDialog()}finally{C.model.endUpdate()}null!=M&&M()}}catch(na){this.handleError(na)}};EditorUi.prototype.getSearch=function(a){var b="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=a&&0<window.location.search.length){var d="?",c;for(c in urlParams)0>mxUtils.indexOf(a,c)&& +null!=urlParams[c]&&(b+=d+c+"="+urlParams[c],d="&")}else b=window.location.search;return b};EditorUi.prototype.getUrl=function(a){a=null!=a?a:window.location.pathname;var b=0<a.indexOf("?")?1:0;if("1"==urlParams.offline)a+=window.location.search;else{var d="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),c;for(c in urlParams)0>mxUtils.indexOf(d,c)&&(a=0==b?a+"?":a+"&",null!=urlParams[c]&&(a+=c+"="+urlParams[c],b++))}return a};EditorUi.prototype.showLinkDialog= +function(a,b,c){a=new LinkDialog(this,a,b,c,!0);this.showDialog(a.container,480,130,!0,!0);a.init()};var r=EditorUi.prototype.createOutline;EditorUi.prototype.createOutline=function(a){var b=r.apply(this,arguments),d=this.editor.graph,c=b.getSourceGraphBounds;b.getSourceGraphBounds=function(){if(mxUtils.hasScrollbars(d.container)&&d.pageVisible&&null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width- +2*a.x/b),Math.ceil(this.source.minimumGraphSize.height-2*a.y/b))}return c.apply(this,arguments)};var e=b.getSourceContainerSize;b.getSourceContainerSize=function(){if(mxUtils.hasScrollbars(d.container)&&null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width*b-2*a.x),Math.ceil(this.source.minimumGraphSize.height*b-2*a.y))}return e.apply(this,arguments)};b.getOutlineOffset=function(a){if(mxUtils.hasScrollbars(d.container)&& +null!=this.source.minimumGraphSize){var c=this.source.getPagePadding();return new mxPoint(Math.round(Math.max(0,(b.outline.container.clientWidth/a-(this.source.minimumGraphSize.width-2*c.x))/2)-c.x),Math.round(Math.max(0,(b.outline.container.clientHeight/a-(this.source.minimumGraphSize.height-2*c.y))/2)-c.y-5/a))}return new mxPoint(8/a,8/a)};var k=b.init;b.init=function(){k.apply(this,arguments);b.outline.view.getBackgroundPageBounds=function(){var a=d.getPageLayout(),b=d.getPageSize();return new mxRectangle(this.scale* +(this.translate.x+a.x*b.width),this.scale*(this.translate.y+a.y*b.height),this.scale*a.width*b.width,this.scale*a.height*b.height)};b.outline.view.validateBackgroundPage()};this.editor.addListener("pageSelected",function(a,d){var c=d.getProperty("change"),e=b.source,f=b.outline;f.pageScale=e.pageScale;f.pageFormat=e.pageFormat;f.background=e.background;f.pageVisible=e.pageVisible;f.background=e.background;var g=mxUtils.getCurrentStyle(e.container);f.container.style.backgroundColor=g.backgroundColor; +null!=e.view.backgroundPageShape&&null!=f.view.backgroundPageShape&&(f.view.backgroundPageShape.fill=e.view.backgroundPageShape.fill);b.outline.view.clear(c.previousPage.root,!0);b.outline.view.validate()});return b};EditorUi.prototype.getServiceCount=function(a,b){var d=0;null==this.drive&&"function"!==typeof window.DriveClient||d++;b||null==this.dropbox&&"function"!==typeof window.DropboxClient||d++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||d++;b||null==this.gitHub||d++;b|| +null==this.trello&&"function"!==typeof window.TrelloClient||d++;d++;return d};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var a=this.getCurrentFile(),b=null!=a||"1"==urlParams.embed&&this.editor.graph.isEnabled();this.menus.get("viewPanels").setEnabled(b);this.menus.get("viewZoom").setEnabled(b);var c=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==a||a.isRestricted());this.actions.get("makeCopy").setEnabled(!c);this.actions.get("print").setEnabled(!c); +this.menus.get("exportAs").setEnabled(!c);this.menus.get("embed").setEnabled(!c);c="1"!=urlParams.embed||this.editor.graph.isEnabled();this.menus.get("extras").setEnabled(c);Editor.enableCustomLibraries&&(this.menus.get("openLibraryFrom").setEnabled(c),this.menus.get("newLibrary").setEnabled(c));a="1"==urlParams.embed&&this.editor.graph.isEnabled()||null!=a&&a.isEditable();this.actions.get("image").setEnabled(b);this.actions.get("zoomIn").setEnabled(b);this.actions.get("zoomOut").setEnabled(b);this.actions.get("resetView").setEnabled(b); +this.actions.get("undo").setEnabled(this.canUndo()&&a);this.actions.get("redo").setEnabled(this.canRedo()&&a);this.menus.get("edit").setEnabled(b);this.menus.get("view").setEnabled(b);this.menus.get("importFrom").setEnabled(a);this.menus.get("arrange").setEnabled(a);null!=this.toolbar&&(null!=this.toolbar.edgeShapeMenu&&this.toolbar.edgeShapeMenu.setEnabled(a),null!=this.toolbar.edgeStyleMenu&&this.toolbar.edgeStyleMenu.setEnabled(a));if(this.isAppCache()){var e=applicationCache;if(null!=e&&null== this.offlineStatus){this.offlineStatus=document.createElement("div");this.offlineStatus.className="geItem";this.offlineStatus.style.position="absolute";this.offlineStatus.style.fontSize="8pt";this.offlineStatus.style.top="2px";this.offlineStatus.style.right="12px";this.offlineStatus.style.color="#666";this.offlineStatus.style.margin="4px";this.offlineStatus.style.padding="2px";this.offlineStatus.style.verticalAlign="middle";this.offlineStatus.innerHTML="";this.menubarContainer.appendChild(this.offlineStatus); -mxEvent.addListener(this.offlineStatus,"click",mxUtils.bind(this,function(){var a=this.offlineStatus.getElementsByTagName("img");null!=a&&0<a.length&&this.alert(a[0].getAttribute("title"))}));var f=window.applicationCache,k=null,b=mxUtils.bind(this,function(){var a=f.status,b;a==f.CHECKING&&(a=f.DOWNLOADING);switch(a){case f.UNCACHED:b="";break;case f.IDLE:b="min"==uiTheme?"":'<img title="draw.io is up to date." border="0" src="'+IMAGE_PATH+'/checkmark.gif"/>';break;case f.DOWNLOADING:b='<img title="Downloading new version..." border="0" src="'+ -IMAGE_PATH+'/spin.gif"/>';break;case f.UPDATEREADY:b='<img title="'+mxUtils.htmlEntities(mxResources.get("restartForChangeRequired"))+'" border="0" src="'+IMAGE_PATH+'/download.png"/>';break;case f.OBSOLETE:b='<img title="Obsolete" border="0" src="'+IMAGE_PATH+'/clear.gif"/>';break;default:b='<img title="Unknown" border="0" src="'+IMAGE_PATH+'/clear.gif"/>'}a!=k&&(this.offlineStatus.innerHTML=b,k=a)});mxEvent.addListener(f,"checking",b);mxEvent.addListener(f,"noupdate",b);mxEvent.addListener(f,"downloading", -b);mxEvent.addListener(f,"progress",b);mxEvent.addListener(f,"cached",b);mxEvent.addListener(f,"updateready",b);mxEvent.addListener(f,"obsolete",b);mxEvent.addListener(f,"error",b);b()}}else this.updateUserElement()};EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=function(){};EditorUi.prototype.isDiagramActive=function(){var a=this.getCurrentFile();return null!=a&&a.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};var q=EditorUi.prototype.updateActionStates; -EditorUi.prototype.updateActionStates=function(){q.apply(this,arguments);var a=this.editor.graph,b=this.isDiagramActive(),d=this.getCurrentFile();this.actions.get("pageSetup").setEnabled(b);this.actions.get("autosave").setEnabled(null!=d&&d.isEditable()&&d.isAutosaveOptional());this.actions.get("guides").setEnabled(b);this.actions.get("editData").setEnabled(b);this.actions.get("shadowVisible").setEnabled(b);this.actions.get("connectionArrows").setEnabled(b);this.actions.get("connectionPoints").setEnabled(b); -this.actions.get("copyStyle").setEnabled(b&&!a.isSelectionEmpty());this.actions.get("pasteStyle").setEnabled(b&&!a.isSelectionEmpty());this.actions.get("editGeometry").setEnabled(a.getModel().isVertex(a.getSelectionCell()));this.actions.get("createShape").setEnabled(b);this.actions.get("createRevision").setEnabled(b);this.actions.get("moveToFolder").setEnabled(null!=d);this.actions.get("makeCopy").setEnabled(null!=d&&!d.isRestricted());this.actions.get("editDiagram").setEnabled(b&&(null==d||!d.isRestricted())); -this.actions.get("publishLink").setEnabled(null!=d&&!d.isRestricted());this.actions.get("tags").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("find").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("layers").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("outline").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("rename").setEnabled(null!=d&&d.isRenamable()||"1"==urlParams.embed); -this.actions.get("close").setEnabled(null!=d);this.menus.get("publish").setEnabled(null!=d&&!d.isRestricted());a=a.view.getState(a.getSelectionCell());this.actions.get("editShape").setEnabled(b&&null!=a&&null!=a.shape&&null!=a.shape.stencil)};var w=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){this.editUpdateListener&&(this.editor.undoManager.removeListener(this.editUpdateListener),this.editUpdateListener=null);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog), -this.exportDialog=null);w.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(a,b,d,f,k,m){var c=a.editor.graph;if("xml"==d)a.hideDialog(),a.saveData(b,"xml",mxUtils.getXml(a.editor.getGraphXml()),"text/xml");else if("svg"==d)a.hideDialog(),a.saveData(b,"svg",mxUtils.getXml(c.getSvg(f,k,m)),"image/svg+xml");else{var g=a.getFileData(!0,null,null,null,null,!0),h=c.getGraphBounds(),l=Math.floor(h.width*k/c.view.scale), -n=Math.floor(h.height*k/c.view.scale);g.length<=MAX_REQUEST_SIZE&&l*n<MAX_AREA?(a.hideDialog(),a.saveRequest(b,d,function(a,b){return new mxXmlRequest(EXPORT_URL,"format="+d+"&base64="+(b||"0")+(null!=a?"&filename="+encodeURIComponent(a):"")+"&bg="+(null!=f?f:"none")+"&w="+l+"&h="+n+"&border="+m+"&xml="+encodeURIComponent(g))})):mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.updateEditReferences=function(a){for(var b=0;b<a.changes.length;b++){var c=a.changes[b];if(null!=c&& -c.constructor==mxChildChange&&null!=c.child){var d=c.child;if(null!=d.source&&null!=d.source.id){var f=this.getFutureCellForEdit(c.model,a,d.source.id);f!=d.source&&(d.source=f)}null!=d.target&&null!=d.target.id&&(c=this.getFutureCellForEdit(c.model,a,d.target.id),c!=d.target&&(d.target=c))}}};EditorUi.prototype.getFutureCellForEdit=function(a,b,d){var c=a.getCell(d);if(null==c)for(var f=b.changes.length-1;0<=f;f--){var g=b.changes[f];if(g.constructor==mxChildChange&&null!=g.child&&g.child.id==d){a.contains(g.previous)&& -(c=g.child);break}}return c}})();function DiagramPage(a){this.node=a;null==this.getId()&&this.node.setAttribute("id",Editor.guid())}DiagramPage.prototype.node=null;DiagramPage.prototype.root=null;DiagramPage.prototype.viewState=null;DiagramPage.prototype.getId=function(){return this.node.getAttribute("id")};DiagramPage.prototype.getName=function(){return this.node.getAttribute("name")};DiagramPage.prototype.setName=function(a){null==a?this.node.removeAttribute("name"):this.node.setAttribute("name",a)}; -function RenamePage(a,b,f){this.ui=a;this.page=b;this.previous=this.name=f}RenamePage.prototype.execute=function(){var a=this.page.getName();this.page.setName(this.previous);this.name=this.previous;this.previous=a;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageRenamed"))};function MovePage(a,b,f){this.ui=a;this.oldIndex=b;this.newIndex=f} -MovePage.prototype.execute=function(){this.ui.pages.splice(this.newIndex,0,this.ui.pages.splice(this.oldIndex,1)[0]);var a=this.oldIndex;this.oldIndex=this.newIndex;this.newIndex=a;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageMoved"))};function SelectPage(a,b,f){this.ui=a;this.previousPage=this.page=b;this.neverShown=!0;null!=b&&(this.neverShown=null==b.viewState,this.ui.updatePageRoot(b),null!=f&&(b.viewState=f,this.neverShown=!1))} -SelectPage.prototype.execute=function(){var a=mxUtils.indexOf(this.ui.pages,this.previousPage);if(null!=this.page&&0<=a){var a=this.ui.currentPage,b=this.ui.editor,f=b.graph,d=b.graph.compress(f.zapGremlins(mxUtils.getXml(b.getGraphXml(!0))));mxUtils.setTextContent(a.node,d);a.viewState=f.getViewState();a.root=f.model.root;null!=a.model&&a.model.rootChanged(a.root);f.view.clear(a.root,!0);f.clearSelection();this.ui.currentPage=this.previousPage;this.previousPage=a;a=this.ui.currentPage;f.model.rootChanged(a.root); -f.setViewState(a.viewState);b.fireEvent(new mxEventObject("setViewState","change",this));f.gridEnabled=f.gridEnabled&&(!this.ui.editor.isChromelessView()||"1"==urlParams.grid);b.updateGraphComponents();f.view.validate();f.sizeDidChange();this.neverShown&&(this.neverShown=!1,f.selectUnlockedLayer());b.graph.fireEvent(new mxEventObject(mxEvent.ROOT));b.fireEvent(new mxEventObject("pageSelected","change",this))}}; -function ChangePage(a,b,f,d){SelectPage.call(this,a,f);this.relatedPage=b;this.index=d;this.previousIndex=null}mxUtils.extend(ChangePage,SelectPage); +mxEvent.addListener(this.offlineStatus,"click",mxUtils.bind(this,function(){var a=this.offlineStatus.getElementsByTagName("img");null!=a&&0<a.length&&this.alert(a[0].getAttribute("title"))}));var e=window.applicationCache,g=null,b=mxUtils.bind(this,function(){var a=e.status,b;a==e.CHECKING&&(a=e.DOWNLOADING);switch(a){case e.UNCACHED:b="";break;case e.IDLE:b="min"==uiTheme?"":'<img title="draw.io is up to date." border="0" src="'+IMAGE_PATH+'/checkmark.gif"/>';break;case e.DOWNLOADING:b='<img title="Downloading new version..." border="0" src="'+ +IMAGE_PATH+'/spin.gif"/>';break;case e.UPDATEREADY:b='<img title="'+mxUtils.htmlEntities(mxResources.get("restartForChangeRequired"))+'" border="0" src="'+IMAGE_PATH+'/download.png"/>';break;case e.OBSOLETE:b='<img title="Obsolete" border="0" src="'+IMAGE_PATH+'/clear.gif"/>';break;default:b='<img title="Unknown" border="0" src="'+IMAGE_PATH+'/clear.gif"/>'}a!=g&&(this.offlineStatus.innerHTML=b,g=a)});mxEvent.addListener(e,"checking",b);mxEvent.addListener(e,"noupdate",b);mxEvent.addListener(e,"downloading", +b);mxEvent.addListener(e,"progress",b);mxEvent.addListener(e,"cached",b);mxEvent.addListener(e,"updateready",b);mxEvent.addListener(e,"obsolete",b);mxEvent.addListener(e,"error",b);b()}}else this.updateUserElement()};EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=function(){};EditorUi.prototype.isDiagramActive=function(){var a=this.getCurrentFile();return null!=a&&a.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};var v=EditorUi.prototype.updateActionStates; +EditorUi.prototype.updateActionStates=function(){v.apply(this,arguments);var a=this.editor.graph,b=this.isDiagramActive(),c=this.getCurrentFile();this.actions.get("pageSetup").setEnabled(b);this.actions.get("autosave").setEnabled(null!=c&&c.isEditable()&&c.isAutosaveOptional());this.actions.get("guides").setEnabled(b);this.actions.get("editData").setEnabled(b);this.actions.get("shadowVisible").setEnabled(b);this.actions.get("connectionArrows").setEnabled(b);this.actions.get("connectionPoints").setEnabled(b); +this.actions.get("copyStyle").setEnabled(b&&!a.isSelectionEmpty());this.actions.get("pasteStyle").setEnabled(b&&!a.isSelectionEmpty());this.actions.get("editGeometry").setEnabled(a.getModel().isVertex(a.getSelectionCell()));this.actions.get("createShape").setEnabled(b);this.actions.get("createRevision").setEnabled(b);this.actions.get("moveToFolder").setEnabled(null!=c);this.actions.get("makeCopy").setEnabled(null!=c&&!c.isRestricted());this.actions.get("editDiagram").setEnabled(b&&(null==c||!c.isRestricted())); +this.actions.get("publishLink").setEnabled(null!=c&&!c.isRestricted());this.actions.get("tags").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("find").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("layers").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("outline").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("rename").setEnabled(null!=c&&c.isRenamable()||"1"==urlParams.embed); +this.actions.get("close").setEnabled(null!=c);this.menus.get("publish").setEnabled(null!=c&&!c.isRestricted());a=a.view.getState(a.getSelectionCell());this.actions.get("editShape").setEnabled(b&&null!=a&&null!=a.shape&&null!=a.shape.stencil)};var z=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){this.editUpdateListener&&(this.editor.undoManager.removeListener(this.editUpdateListener),this.editUpdateListener=null);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog), +this.exportDialog=null);z.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(a,b,c,e,g,k){var d=a.editor.graph;if("xml"==c)a.hideDialog(),a.saveData(b,"xml",mxUtils.getXml(a.editor.getGraphXml()),"text/xml");else if("svg"==c)a.hideDialog(),a.saveData(b,"svg",mxUtils.getXml(d.getSvg(e,g,k)),"image/svg+xml");else{var f=a.getFileData(!0,null,null,null,null,!0),l=d.getGraphBounds(),m=Math.floor(l.width*g/d.view.scale), +p=Math.floor(l.height*g/d.view.scale);f.length<=MAX_REQUEST_SIZE&&m*p<MAX_AREA?(a.hideDialog(),a.saveRequest(b,c,function(a,b){return new mxXmlRequest(EXPORT_URL,"format="+c+"&base64="+(b||"0")+(null!=a?"&filename="+encodeURIComponent(a):"")+"&bg="+(null!=e?e:"none")+"&w="+m+"&h="+p+"&border="+k+"&xml="+encodeURIComponent(f))})):mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.updateEditReferences=function(a){for(var b=0;b<a.changes.length;b++){var d=a.changes[b];if(null!=d&& +d.constructor==mxChildChange&&null!=d.child){var c=d.child;if(null!=c.source&&null!=c.source.id){var e=this.getFutureCellForEdit(d.model,a,c.source.id);e!=c.source&&(c.source=e)}null!=c.target&&null!=c.target.id&&(d=this.getFutureCellForEdit(d.model,a,c.target.id),d!=c.target&&(c.target=d))}}};EditorUi.prototype.getFutureCellForEdit=function(a,b,c){var d=a.getCell(c);if(null==d)for(var e=b.changes.length-1;0<=e;e--){var f=b.changes[e];if(f.constructor==mxChildChange&&null!=f.child&&f.child.id==c){a.contains(f.previous)&& +(d=f.child);break}}return d}})();function DiagramPage(a){this.node=a;null==this.getId()&&this.node.setAttribute("id",Editor.guid())}DiagramPage.prototype.node=null;DiagramPage.prototype.root=null;DiagramPage.prototype.viewState=null;DiagramPage.prototype.getId=function(){return this.node.getAttribute("id")};DiagramPage.prototype.getName=function(){return this.node.getAttribute("name")};DiagramPage.prototype.setName=function(a){null==a?this.node.removeAttribute("name"):this.node.setAttribute("name",a)}; +function RenamePage(a,b,e){this.ui=a;this.page=b;this.previous=this.name=e}RenamePage.prototype.execute=function(){var a=this.page.getName();this.page.setName(this.previous);this.name=this.previous;this.previous=a;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageRenamed"))};function MovePage(a,b,e){this.ui=a;this.oldIndex=b;this.newIndex=e} +MovePage.prototype.execute=function(){this.ui.pages.splice(this.newIndex,0,this.ui.pages.splice(this.oldIndex,1)[0]);var a=this.oldIndex;this.oldIndex=this.newIndex;this.newIndex=a;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageMoved"))};function SelectPage(a,b,e){this.ui=a;this.previousPage=this.page=b;this.neverShown=!0;null!=b&&(this.neverShown=null==b.viewState,this.ui.updatePageRoot(b),null!=e&&(b.viewState=e,this.neverShown=!1))} +SelectPage.prototype.execute=function(){var a=mxUtils.indexOf(this.ui.pages,this.previousPage);if(null!=this.page&&0<=a){var a=this.ui.currentPage,b=this.ui.editor,e=b.graph,c=b.graph.compress(e.zapGremlins(mxUtils.getXml(b.getGraphXml(!0))));mxUtils.setTextContent(a.node,c);a.viewState=e.getViewState();a.root=e.model.root;null!=a.model&&a.model.rootChanged(a.root);e.view.clear(a.root,!0);e.clearSelection();this.ui.currentPage=this.previousPage;this.previousPage=a;a=this.ui.currentPage;e.model.prefix= +Editor.guid()+"-";e.model.rootChanged(a.root);e.setViewState(a.viewState);e.gridEnabled=e.gridEnabled&&(!this.ui.editor.isChromelessView()||"1"==urlParams.grid);b.updateGraphComponents();e.view.validate();e.sizeDidChange();this.neverShown&&(this.neverShown=!1,e.selectUnlockedLayer());b.graph.fireEvent(new mxEventObject(mxEvent.ROOT));b.fireEvent(new mxEventObject("pageSelected","change",this))}}; +function ChangePage(a,b,e,c){SelectPage.call(this,a,e);this.relatedPage=b;this.index=c;this.previousIndex=null}mxUtils.extend(ChangePage,SelectPage); ChangePage.prototype.execute=function(){this.ui.editor.fireEvent(new mxEventObject("beforePageChange","change",this));this.previousIndex=this.index;if(null==this.index){var a=mxUtils.indexOf(this.ui.pages,this.relatedPage);this.ui.pages.splice(a,1);this.index=a}else this.ui.pages.splice(this.index,0,this.relatedPage),this.index=null;SelectPage.prototype.execute.apply(this,arguments)}; EditorUi.prototype.getSelectedPageIndex=function(){var a=null;if(null!=this.pages&&null!=this.currentPage)for(var b=0;b<this.pages.length;b++)if(this.pages[b]==this.currentPage){a=b;break}return a};EditorUi.prototype.getPageById=function(a){if(null!=this.pages)for(var b=0;b<this.pages.length;b++)if(this.pages[b].getId()==a)return this.pages[b];return null}; -EditorUi.prototype.initPages=function(){this.actions.addAction("previousPage",mxUtils.bind(this,function(){this.selectNextPage(!1)}));this.actions.addAction("nextPage",mxUtils.bind(this,function(){this.selectNextPage(!0)}));this.keyHandler.bindAction(33,!0,"previousPage",!0);this.keyHandler.bindAction(34,!0,"nextPage",!0);var a=this.editor.graph,b=a.view.validateBackground;a.view.validateBackground=mxUtils.bind(this,function(){if(null!=this.tabContainer){var d=this.tabContainer.style.height;this.tabContainer.style.height= -null==this.fileNode||null==this.pages||1==this.pages.length&&"0"==urlParams.pages?"0px":"30px";d!=this.tabContainer.style.height&&this.refresh(!1)}b.apply(a.view,arguments)});var f=null,d=mxUtils.bind(this,function(){this.updateTabContainer();var b=this.currentPage;null!=b&&b!=f&&(null==b.viewState||null==b.viewState.scrollLeft?(this.resetScrollbars(),a.isLightboxView()&&this.lightboxFit(),null!=this.chromelessResize&&(a.container.scrollLeft=0,a.container.scrollTop=0,this.chromelessResize())):(a.container.scrollLeft= -a.view.translate.x*a.view.scale+b.viewState.scrollLeft,a.container.scrollTop=a.view.translate.y*a.view.scale+b.viewState.scrollTop),f=b);null!=this.actions.layersWindow&&this.actions.layersWindow.refreshLayers();"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?1!=MathJax.Hub.queue.pending||null==this.editor||this.editor.graph.mathEnabled||MathJax.Hub.Queue(mxUtils.bind(this,function(){null!=this.editor&&this.editor.graph.refresh()})):"undefined"===typeof Editor.MathJaxClear||null!=this.editor&& -this.editor.graph.mathEnabled||Editor.MathJaxClear()});this.editor.graph.model.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(a,b){for(var f=b.getProperty("edit").changes,k=0;k<f.length;k++)if(f[k]instanceof SelectPage||f[k]instanceof RenamePage||f[k]instanceof MovePage||f[k]instanceof mxRootChange){d();break}}));null!=this.toolbar&&this.editor.addListener("pageSelected",this.toolbar.updateZoom)}; -EditorUi.prototype.restoreViewState=function(a,b,f){a=null!=a?this.getPageById(a.getId()):null;var d=this.editor.graph;null!=a&&null!=this.currentPage&&null!=this.pages&&(a!=this.currentPage?this.selectPage(a,!0,b):(d.setViewState(b),this.editor.updateGraphComponents(),d.view.revalidate(),d.sizeDidChange()),d.container.scrollLeft=d.view.translate.x*d.view.scale+b.scrollLeft,d.container.scrollTop=d.view.translate.y*d.view.scale+b.scrollTop,d.restoreSelection(f))}; -Graph.prototype.createViewState=function(a){var b=a.getAttribute("page"),f=parseFloat(a.getAttribute("pageScale")),d=parseFloat(a.getAttribute("pageWidth")),k=parseFloat(a.getAttribute("pageHeight")),n=a.getAttribute("background"),p=a.getAttribute("backgroundImage"),p=null!=p&&0<p.length?JSON.parse(p):null;return{gridEnabled:"0"!=a.getAttribute("grid"),gridSize:parseFloat(a.getAttribute("gridSize"))||mxGraph.prototype.gridSize,guidesEnabled:"0"!=a.getAttribute("guides"),foldingEnabled:"0"!=a.getAttribute("fold"), -shadowVisible:"1"==a.getAttribute("shadow"),pageVisible:this.isLightboxView()?!1:null!=b?"0"!=b:this.defaultPageVisible,background:null!=n&&0<n.length?n:null,backgroundImage:null!=p?new mxImage(p.src,p.width,p.height):null,pageScale:isNaN(f)?mxGraph.prototype.pageScale:f,pageFormat:isNaN(d)||isNaN(k)?mxSettings.getPageFormat():new mxRectangle(0,0,d,k),tooltips:"0"!=a.getAttribute("tooltips"),connect:"0"!=a.getAttribute("connect"),arrows:"0"!=a.getAttribute("arrows"),mathEnabled:"1"==a.getAttribute("math"), +EditorUi.prototype.initPages=function(){this.actions.addAction("previousPage",mxUtils.bind(this,function(){this.selectNextPage(!1)}));this.actions.addAction("nextPage",mxUtils.bind(this,function(){this.selectNextPage(!0)}));this.keyHandler.bindAction(33,!0,"previousPage",!0);this.keyHandler.bindAction(34,!0,"nextPage",!0);var a=this.editor.graph,b=a.view.validateBackground;a.view.validateBackground=mxUtils.bind(this,function(){if(null!=this.tabContainer){var c=this.tabContainer.style.height;this.tabContainer.style.height= +null==this.fileNode||null==this.pages||1==this.pages.length&&"0"==urlParams.pages?"0px":"30px";c!=this.tabContainer.style.height&&this.refresh(!1)}b.apply(a.view,arguments)});var e=null,c=mxUtils.bind(this,function(){this.updateTabContainer();var b=this.currentPage;null!=b&&b!=e&&(null==b.viewState||null==b.viewState.scrollLeft?(this.resetScrollbars(),a.isLightboxView()&&this.lightboxFit(),null!=this.chromelessResize&&(a.container.scrollLeft=0,a.container.scrollTop=0,this.chromelessResize())):(a.container.scrollLeft= +a.view.translate.x*a.view.scale+b.viewState.scrollLeft,a.container.scrollTop=a.view.translate.y*a.view.scale+b.viewState.scrollTop),e=b);null!=this.actions.layersWindow&&this.actions.layersWindow.refreshLayers();"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?1!=MathJax.Hub.queue.pending||null==this.editor||this.editor.graph.mathEnabled||MathJax.Hub.Queue(mxUtils.bind(this,function(){null!=this.editor&&this.editor.graph.refresh()})):"undefined"===typeof Editor.MathJaxClear||null!=this.editor&& +this.editor.graph.mathEnabled||Editor.MathJaxClear()});this.editor.graph.model.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(a,b){for(var e=b.getProperty("edit").changes,k=0;k<e.length;k++)if(e[k]instanceof SelectPage||e[k]instanceof RenamePage||e[k]instanceof MovePage||e[k]instanceof mxRootChange){c();break}}));null!=this.toolbar&&this.editor.addListener("pageSelected",this.toolbar.updateZoom)}; +EditorUi.prototype.restoreViewState=function(a,b,e){a=null!=a?this.getPageById(a.getId()):null;var c=this.editor.graph;null!=a&&null!=this.currentPage&&null!=this.pages&&(a!=this.currentPage?this.selectPage(a,!0,b):(c.setViewState(b),this.editor.updateGraphComponents(),c.view.revalidate(),c.sizeDidChange()),c.container.scrollLeft=c.view.translate.x*c.view.scale+b.scrollLeft,c.container.scrollTop=c.view.translate.y*c.view.scale+b.scrollTop,c.restoreSelection(e))}; +Graph.prototype.createViewState=function(a){var b=a.getAttribute("page"),e=parseFloat(a.getAttribute("pageScale")),c=parseFloat(a.getAttribute("pageWidth")),k=parseFloat(a.getAttribute("pageHeight")),m=a.getAttribute("background"),q=a.getAttribute("backgroundImage"),q=null!=q&&0<q.length?JSON.parse(q):null;return{gridEnabled:"0"!=a.getAttribute("grid"),gridSize:parseFloat(a.getAttribute("gridSize"))||mxGraph.prototype.gridSize,guidesEnabled:"0"!=a.getAttribute("guides"),foldingEnabled:"0"!=a.getAttribute("fold"), +shadowVisible:"1"==a.getAttribute("shadow"),pageVisible:this.isLightboxView()?!1:null!=b?"0"!=b:this.defaultPageVisible,background:null!=m&&0<m.length?m:null,backgroundImage:null!=q?new mxImage(q.src,q.width,q.height):null,pageScale:isNaN(e)?mxGraph.prototype.pageScale:e,pageFormat:isNaN(c)||isNaN(k)?mxSettings.getPageFormat():new mxRectangle(0,0,c,k),tooltips:"0"!=a.getAttribute("tooltips"),connect:"0"!=a.getAttribute("connect"),arrows:"0"!=a.getAttribute("arrows"),mathEnabled:"1"==a.getAttribute("math"), selectionCells:null,defaultParent:null,scrollbars:this.defaultScrollbars,scale:1}}; -Graph.prototype.saveViewState=function(a,b,f){f||(b.setAttribute("grid",null==a||a.gridEnabled?"1":"0"),b.setAttribute("gridSize",null!=a?a.gridSize:mxGraph.prototype.gridSize),b.setAttribute("guides",null==a||a.guidesEnabled?"1":"0"),b.setAttribute("tooltips",null==a||a.tooltips?"1":"0"),b.setAttribute("connect",null==a||a.connect?"1":"0"),b.setAttribute("arrows",null==a||a.arrows?"1":"0"),b.setAttribute("page",null==a&&this.defaultPageVisible||null!=a&&a.pageVisible?"1":"0"),b.setAttribute("fold", -null==a||a.foldingEnabled?"1":"0"));b.setAttribute("pageScale",null!=a&&null!=a.pageScale?a.pageScale:mxGraph.prototype.pageScale);f=null!=a?a.pageFormat:mxSettings.getPageFormat();null!=f&&(b.setAttribute("pageWidth",f.width),b.setAttribute("pageHeight",f.height));null!=a&&null!=a.background&&b.setAttribute("background",a.background);null!=a&&null!=a.backgroundImage&&b.setAttribute("backgroundImage",JSON.stringify(a.backgroundImage));b.setAttribute("math",null!=a&&a.mathEnabled?"1":"0");b.setAttribute("shadow", +Graph.prototype.saveViewState=function(a,b,e){e||(b.setAttribute("grid",null==a||a.gridEnabled?"1":"0"),b.setAttribute("gridSize",null!=a?a.gridSize:mxGraph.prototype.gridSize),b.setAttribute("guides",null==a||a.guidesEnabled?"1":"0"),b.setAttribute("tooltips",null==a||a.tooltips?"1":"0"),b.setAttribute("connect",null==a||a.connect?"1":"0"),b.setAttribute("arrows",null==a||a.arrows?"1":"0"),b.setAttribute("page",null==a&&this.defaultPageVisible||null!=a&&a.pageVisible?"1":"0"),b.setAttribute("fold", +null==a||a.foldingEnabled?"1":"0"));b.setAttribute("pageScale",null!=a&&null!=a.pageScale?a.pageScale:mxGraph.prototype.pageScale);e=null!=a?a.pageFormat:mxSettings.getPageFormat();null!=e&&(b.setAttribute("pageWidth",e.width),b.setAttribute("pageHeight",e.height));null!=a&&null!=a.background&&b.setAttribute("background",a.background);null!=a&&null!=a.backgroundImage&&b.setAttribute("backgroundImage",JSON.stringify(a.backgroundImage));b.setAttribute("math",null!=a&&a.mathEnabled?"1":"0");b.setAttribute("shadow", null!=a&&a.shadowVisible?"1":"0")}; Graph.prototype.getViewState=function(){return{defaultParent:this.defaultParent,currentRoot:this.view.currentRoot,gridEnabled:this.gridEnabled,gridSize:this.gridSize,guidesEnabled:this.graphHandler.guidesEnabled,foldingEnabled:this.foldingEnabled,shadowVisible:this.shadowVisible,scrollbars:this.scrollbars,pageVisible:this.pageVisible,background:this.background,backgroundImage:this.backgroundImage,pageScale:this.pageScale,pageFormat:this.pageFormat,tooltips:this.tooltipHandler.isEnabled(),connect:this.connectionHandler.isEnabled(), arrows:this.connectionArrowsEnabled,scale:this.view.scale,scrollLeft:this.container.scrollLeft-this.view.translate.x*this.view.scale,scrollTop:this.container.scrollTop-this.view.translate.y*this.view.scale,translate:this.view.translate.clone(),lastPasteXml:this.lastPasteXml,pasteCounter:this.pasteCounter,mathEnabled:this.mathEnabled}}; Graph.prototype.setViewState=function(a){null!=a?(this.lastPasteXml=a.lastPasteXml,this.pasteCounter=a.pasteCounter||0,this.mathEnabled=a.mathEnabled,this.gridEnabled=a.gridEnabled,this.gridSize=a.gridSize,this.graphHandler.guidesEnabled=a.guidesEnabled,this.foldingEnabled=a.foldingEnabled,this.setShadowVisible(a.shadowVisible,!1),this.scrollbars=a.scrollbars,this.pageVisible=a.pageVisible,this.background=a.background,this.backgroundImage=a.backgroundImage,this.pageScale=a.pageScale,this.pageFormat= a.pageFormat,this.view.currentRoot=a.currentRoot,this.defaultParent=a.defaultParent,this.connectionArrowsEnabled=a.arrows,this.setTooltips(a.tooltips),this.setConnectable(a.connect),this.view.scale=null!=a.scale?a.scale:1,null==this.view.currentRoot||this.model.contains(this.view.currentRoot)||(this.view.currentRoot=null),null==this.defaultParent||this.model.contains(this.defaultParent)||(this.setDefaultParent(null),this.selectUnlockedLayer()),null!=a.translate&&(this.view.translate=a.translate)): (this.view.currentRoot=null,this.view.scale=1,this.gridEnabled=!0,this.gridSize=mxGraph.prototype.gridSize,this.pageScale=mxGraph.prototype.pageScale,this.pageFormat=mxSettings.getPageFormat(),this.pageVisible=this.defaultPageVisible,this.backgroundImage=this.background=null,this.scrollbars=this.defaultScrollbars,this.foldingEnabled=this.graphHandler.guidesEnabled=!0,this.setShadowVisible(!1,!1),this.defaultParent=null,this.setTooltips(!0),this.setConnectable(!0),this.lastPasteXml=null,this.pasteCounter= -0,this.mathEnabled=!1,this.connectionArrowsEnabled=!0);this.preferPageSize=this.pageBreaksVisible=this.pageVisible}; -EditorUi.prototype.updatePageRoot=function(a){if(null==a.root){var b=this.editor.extractGraphModel(a.node);if(null!=b){a.graphModelNode=b;a.viewState=this.editor.graph.createViewState(b);var f=new mxCodec(b.ownerDocument);a.root=f.decode(b).root}else a.root=this.editor.graph.model.createRoot()}else null==a.viewState&&(null==a.graphModelNode&&(b=this.editor.extractGraphModel(a.node),null!=b&&(a.graphModelNode=b)),null!=a.graphModelNode&&(a.viewState=this.editor.graph.createViewState(a.graphModelNode))); -return a};EditorUi.prototype.selectPage=function(a,b,f){try{this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);b=null!=b?b:!1;this.editor.graph.isMouseDown=!1;this.editor.graph.reset();var d=this.editor.graph.model.createUndoableEdit();d.ignoreEdit=!0;var k=new SelectPage(this,a,f);k.execute();d.add(k);d.notify();this.editor.graph.tooltipHandler.hide();b||this.editor.graph.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",d))}catch(n){this.handleError(n)}}; -EditorUi.prototype.selectNextPage=function(a){var b=this.currentPage;null!=b&&null!=this.pages&&(b=mxUtils.indexOf(this.pages,b),a?this.selectPage(this.pages[mxUtils.mod(b+1,this.pages.length)]):a||this.selectPage(this.pages[mxUtils.mod(b-1,this.pages.length)]))};EditorUi.prototype.insertPage=function(a,b){if(this.editor.graph.isEnabled()){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);a=null!=a?a:this.createPage();b=null!=b?b:this.pages.length;var f=new ChangePage(this,a,a,b);this.editor.graph.model.execute(f)}return a}; -EditorUi.prototype.createPage=function(a){var b=new DiagramPage(this.fileNode.ownerDocument.createElement("diagram"));b.setName(null!=a?a:this.createPageName());return b};EditorUi.prototype.createPageName=function(){for(var a={},b=0;b<this.pages.length;b++){var f=this.pages[b].getName();null!=f&&0<f.length&&(a[f]=f)}b=this.pages.length;do f=mxResources.get("pageWithNumber",[++b]);while(null!=a[f]);return f}; -EditorUi.prototype.removePage=function(a){try{var b=this.editor.graph,f=mxUtils.indexOf(this.pages,a);if(b.isEnabled()&&0<=f){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);b.model.beginUpdate();try{var d=this.currentPage;d==a&&1<this.pages.length?(f==this.pages.length-1?f--:f++,d=this.pages[f]):1>=this.pages.length&&(d=this.insertPage(),b.model.execute(new RenamePage(this,d,mxResources.get("pageWithNumber",[1]))));b.model.execute(new ChangePage(this,a,d))}finally{b.model.endUpdate()}}}catch(k){this.handleError(k)}return a}; -EditorUi.prototype.duplicatePage=function(a,b){var f=this.editor.graph,d=null;f.isEnabled()&&(f.isEditing()&&f.stopEditing(),d=a.node.cloneNode(!1),d.removeAttribute("id"),d=new DiagramPage(d),d.root=f.cloneCell(f.model.root),d.viewState=f.getViewState(),d.viewState.scale=1,d.viewState.scrollLeft=null,d.viewState.scrollTop=null,d.viewState.currentRoot=null,d.viewState.defaultParent=null,d.setName(b),d=this.insertPage(d,mxUtils.indexOf(this.pages,a)+1));return d}; +0,this.mathEnabled=!1,this.connectionArrowsEnabled=!0);this.preferPageSize=this.pageBreaksVisible=this.pageVisible;this.fireEvent(new mxEventObject("viewStateChanged","state",a))}; +EditorUi.prototype.updatePageRoot=function(a){if(null==a.root){var b=this.editor.extractGraphModel(a.node);if(null!=b){a.graphModelNode=b;a.viewState=this.editor.graph.createViewState(b);var e=new mxCodec(b.ownerDocument);a.root=e.decode(b).root}else a.root=this.editor.graph.model.createRoot()}else null==a.viewState&&(null==a.graphModelNode&&(b=this.editor.extractGraphModel(a.node),null!=b&&(a.graphModelNode=b)),null!=a.graphModelNode&&(a.viewState=this.editor.graph.createViewState(a.graphModelNode))); +return a};EditorUi.prototype.selectPage=function(a,b,e){try{this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);b=null!=b?b:!1;this.editor.graph.isMouseDown=!1;this.editor.graph.reset();var c=this.editor.graph.model.createUndoableEdit();c.ignoreEdit=!0;var k=new SelectPage(this,a,e);k.execute();c.add(k);c.notify();this.editor.graph.tooltipHandler.hide();b||this.editor.graph.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",c))}catch(m){this.handleError(m)}}; +EditorUi.prototype.selectNextPage=function(a){var b=this.currentPage;null!=b&&null!=this.pages&&(b=mxUtils.indexOf(this.pages,b),a?this.selectPage(this.pages[mxUtils.mod(b+1,this.pages.length)]):a||this.selectPage(this.pages[mxUtils.mod(b-1,this.pages.length)]))};EditorUi.prototype.insertPage=function(a,b){if(this.editor.graph.isEnabled()){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);a=null!=a?a:this.createPage();b=null!=b?b:this.pages.length;var e=new ChangePage(this,a,a,b);this.editor.graph.model.execute(e)}return a}; +EditorUi.prototype.createPage=function(a){var b=new DiagramPage(this.fileNode.ownerDocument.createElement("diagram"));b.setName(null!=a?a:this.createPageName());return b};EditorUi.prototype.createPageName=function(){for(var a={},b=0;b<this.pages.length;b++){var e=this.pages[b].getName();null!=e&&0<e.length&&(a[e]=e)}b=this.pages.length;do e=mxResources.get("pageWithNumber",[++b]);while(null!=a[e]);return e}; +EditorUi.prototype.removePage=function(a){try{var b=this.editor.graph,e=mxUtils.indexOf(this.pages,a);if(b.isEnabled()&&0<=e){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);b.model.beginUpdate();try{var c=this.currentPage;c==a&&1<this.pages.length?(e==this.pages.length-1?e--:e++,c=this.pages[e]):1>=this.pages.length&&(c=this.insertPage(),b.model.execute(new RenamePage(this,c,mxResources.get("pageWithNumber",[1]))));b.model.execute(new ChangePage(this,a,c))}finally{b.model.endUpdate()}}}catch(k){this.handleError(k)}return a}; +EditorUi.prototype.duplicatePage=function(a,b){var e=null;try{var c=this.editor.graph;if(c.isEnabled()){c.isEditing()&&c.stopEditing();var k=a.node.cloneNode(!1);k.removeAttribute("id");e=new DiagramPage(k);e.root=c.cloneCell(c.model.root);e.viewState=c.getViewState();e.viewState.scale=1;e.viewState.scrollLeft=null;e.viewState.scrollTop=null;e.viewState.currentRoot=null;e.viewState.defaultParent=null;e.setName(b);e=this.insertPage(e,mxUtils.indexOf(this.pages,a)+1)}}catch(m){this.handleError(m)}return e}; EditorUi.prototype.renamePage=function(a){if(this.editor.graph.isEnabled()){var b=new FilenameDialog(this,a.getName(),mxResources.get("rename"),mxUtils.bind(this,function(b){null!=b&&0<b.length&&this.editor.graph.model.execute(new RenamePage(this,a,b))}),mxResources.get("rename"));this.showDialog(b.container,300,80,!0,!0);b.init()}return a};EditorUi.prototype.movePage=function(a,b){this.editor.graph.model.execute(new MovePage(this,a,b))}; EditorUi.prototype.createTabContainer=function(){var a=document.createElement("div");a.style.backgroundColor="dark"==uiTheme?"#2a2a2a":"#dcdcdc";a.style.position="absolute";a.style.whiteSpace="nowrap";a.style.overflow="hidden";a.style.height="0px";return a}; -EditorUi.prototype.updateTabContainer=function(){if(null!=this.tabContainer&&null!=this.pages){var a=this.editor.graph,b=document.createElement("div");b.style.position="relative";b.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";b.style.verticalAlign="top";b.style.height=this.tabContainer.style.height;b.style.whiteSpace="nowrap";b.style.overflow="hidden";b.style.fontSize="12px";b.style.marginLeft="30px";for(var f=this.editor.isChromelessView()?29:59,d=Math.min(140,Math.max(20,(this.tabContainer.clientWidth- -f)/this.pages.length)+1),k=null,n=0;n<this.pages.length;n++)mxUtils.bind(this,function(c,d){this.pages[c]==this.currentPage?(d.className="geActivePage",d.style.backgroundColor="dark"==uiTheme?"#2a2a2a":"#eeeeee",d.style.fontWeight="bold",d.style.borderTopStyle="none"):d.className="geInactivePage";d.setAttribute("draggable","true");mxEvent.addListener(d,"dragstart",mxUtils.bind(this,function(b){a.isEnabled()?(mxClient.IS_FF&&b.dataTransfer.setData("Text","<diagram/>"),k=c):mxEvent.consume(b)}));mxEvent.addListener(d, -"dragend",mxUtils.bind(this,function(a){k=null;a.stopPropagation();a.preventDefault()}));mxEvent.addListener(d,"dragover",mxUtils.bind(this,function(a){null!=k&&(a.dataTransfer.dropEffect="move");a.stopPropagation();a.preventDefault()}));mxEvent.addListener(d,"drop",mxUtils.bind(this,function(a){null!=k&&c!=k&&this.movePage(k,c);a.stopPropagation();a.preventDefault()}));b.appendChild(d)})(n,this.createTabForPage(this.pages[n],d,this.pages[n]!=this.currentPage));this.tabContainer.innerHTML="";this.tabContainer.appendChild(b); -d=this.createPageMenuTab();this.tabContainer.appendChild(d);d=null;this.isPageInsertTabVisible()&&(d=this.createPageInsertTab(),this.tabContainer.appendChild(d));if(b.clientWidth>this.tabContainer.clientWidth-f){null!=d&&(d.style.position="absolute",d.style.right="0px",b.style.marginRight="30px");var p=this.createControlTab(4," ❮ ");p.style.position="absolute";p.style.right=this.editor.chromeless?"29px":"55px";p.style.fontSize="13pt";this.tabContainer.appendChild(p);var q=this.createControlTab(4, -" ❯");q.style.position="absolute";q.style.right=this.editor.chromeless?"0px":"29px";q.style.fontSize="13pt";this.tabContainer.appendChild(q);var w=Math.max(0,this.tabContainer.clientWidth-(this.editor.chromeless?86:116));b.style.width=w+"px";mxEvent.addListener(p,"click",mxUtils.bind(this,function(a){b.scrollLeft-=Math.max(20,w-20);mxUtils.setOpacity(p,0<b.scrollLeft?100:50);mxUtils.setOpacity(q,b.scrollLeft<b.scrollWidth-b.clientWidth?100:50);mxEvent.consume(a)}));mxUtils.setOpacity(p, -0<b.scrollLeft?100:50);mxUtils.setOpacity(q,b.scrollLeft<b.scrollWidth-b.clientWidth?100:50);mxEvent.addListener(q,"click",mxUtils.bind(this,function(a){b.scrollLeft+=Math.max(20,w-20);mxUtils.setOpacity(p,0<b.scrollLeft?100:50);mxUtils.setOpacity(q,b.scrollLeft<b.scrollWidth-b.clientWidth?100:50);mxEvent.consume(a)}))}}};EditorUi.prototype.isPageInsertTabVisible=function(){return 1==urlParams.embed||null!=this.getCurrentFile()&&this.getCurrentFile().isEditable()}; +EditorUi.prototype.updateTabContainer=function(){if(null!=this.tabContainer&&null!=this.pages){var a=this.editor.graph,b=document.createElement("div");b.style.position="relative";b.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";b.style.verticalAlign="top";b.style.height=this.tabContainer.style.height;b.style.whiteSpace="nowrap";b.style.overflow="hidden";b.style.fontSize="12px";b.style.marginLeft="30px";for(var e=this.editor.isChromelessView()?29:59,c=Math.min(140,Math.max(20,(this.tabContainer.clientWidth- +e)/this.pages.length)+1),k=null,m=0;m<this.pages.length;m++)mxUtils.bind(this,function(c,d){this.pages[c]==this.currentPage?(d.className="geActivePage",d.style.backgroundColor="dark"==uiTheme?"#2a2a2a":"#eeeeee",d.style.fontWeight="bold",d.style.borderTopStyle="none"):d.className="geInactivePage";d.setAttribute("draggable","true");mxEvent.addListener(d,"dragstart",mxUtils.bind(this,function(b){a.isEnabled()?(mxClient.IS_FF&&b.dataTransfer.setData("Text","<diagram/>"),k=c):mxEvent.consume(b)}));mxEvent.addListener(d, +"dragend",mxUtils.bind(this,function(a){k=null;a.stopPropagation();a.preventDefault()}));mxEvent.addListener(d,"dragover",mxUtils.bind(this,function(a){null!=k&&(a.dataTransfer.dropEffect="move");a.stopPropagation();a.preventDefault()}));mxEvent.addListener(d,"drop",mxUtils.bind(this,function(a){null!=k&&c!=k&&this.movePage(k,c);a.stopPropagation();a.preventDefault()}));b.appendChild(d)})(m,this.createTabForPage(this.pages[m],c,this.pages[m]!=this.currentPage));this.tabContainer.innerHTML="";this.tabContainer.appendChild(b); +c=this.createPageMenuTab();this.tabContainer.appendChild(c);c=null;this.isPageInsertTabVisible()&&(c=this.createPageInsertTab(),this.tabContainer.appendChild(c));if(b.clientWidth>this.tabContainer.clientWidth-e){null!=c&&(c.style.position="absolute",c.style.right="0px",b.style.marginRight="30px");var q=this.createControlTab(4," ❮ ");q.style.position="absolute";q.style.right=this.editor.chromeless?"29px":"55px";q.style.fontSize="13pt";this.tabContainer.appendChild(q);var r=this.createControlTab(4, +" ❯");r.style.position="absolute";r.style.right=this.editor.chromeless?"0px":"29px";r.style.fontSize="13pt";this.tabContainer.appendChild(r);var v=Math.max(0,this.tabContainer.clientWidth-(this.editor.chromeless?86:116));b.style.width=v+"px";mxEvent.addListener(q,"click",mxUtils.bind(this,function(a){b.scrollLeft-=Math.max(20,v-20);mxUtils.setOpacity(q,0<b.scrollLeft?100:50);mxUtils.setOpacity(r,b.scrollLeft<b.scrollWidth-b.clientWidth?100:50);mxEvent.consume(a)}));mxUtils.setOpacity(q, +0<b.scrollLeft?100:50);mxUtils.setOpacity(r,b.scrollLeft<b.scrollWidth-b.clientWidth?100:50);mxEvent.addListener(r,"click",mxUtils.bind(this,function(a){b.scrollLeft+=Math.max(20,v-20);mxUtils.setOpacity(q,0<b.scrollLeft?100:50);mxUtils.setOpacity(r,b.scrollLeft<b.scrollWidth-b.clientWidth?100:50);mxEvent.consume(a)}))}}};EditorUi.prototype.isPageInsertTabVisible=function(){return 1==urlParams.embed||null!=this.getCurrentFile()&&this.getCurrentFile().isEditable()}; EditorUi.prototype.createTab=function(a){var b=document.createElement("div");b.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";b.style.whiteSpace="nowrap";b.style.boxSizing="border-box";b.style.position="relative";b.style.overflow="hidden";b.style.marginLeft="-1px";b.style.height=this.tabContainer.clientHeight+"px";b.style.padding="8px 4px 8px 4px";b.style.border="dark"==uiTheme?"1px solid #505759":"1px solid #c0c0c0";b.style.borderBottomStyle="solid";b.style.backgroundColor=this.tabContainer.style.backgroundColor; b.style.cursor="move";b.style.color="gray";a&&(mxEvent.addListener(b,"mouseenter",mxUtils.bind(this,function(a){this.editor.graph.isMouseDown||(b.style.backgroundColor="dark"==uiTheme?"black":"#d3d3d3",mxEvent.consume(a))})),mxEvent.addListener(b,"mouseleave",mxUtils.bind(this,function(a){b.style.backgroundColor=this.tabContainer.style.backgroundColor;mxEvent.consume(a)})));return b}; -EditorUi.prototype.createControlTab=function(a,b){var f=this.createTab(!0);f.style.paddingTop=a+"px";f.style.cursor="pointer";f.style.width="30px";f.style.lineHeight="30px";f.innerHTML=b;null!=f.firstChild&&null!=f.firstChild.style&&mxUtils.setOpacity(f.firstChild,40);return f}; -EditorUi.prototype.createPageMenuTab=function(){var a=this.createControlTab(3,'<div class="geSprite geSprite-dots" style="display:inline-block;width:21px;height:21px;"></div>');a.setAttribute("title",mxResources.get("pages"));a.style.position="absolute";a.style.top="0px";a.style.left="1px";mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){this.editor.graph.popupMenuHandler.hideMenu();var b=new mxPopupMenu(mxUtils.bind(this,function(a,b){for(var d=0;d<this.pages.length;d++)mxUtils.bind(this, -function(c){var d=a.addItem(this.pages[c].getName(),null,mxUtils.bind(this,function(){this.selectPage(this.pages[c])}),b);this.pages[c]==this.currentPage&&a.addCheckmark(d,Editor.checkmarkImage)})(d);if(this.editor.graph.isEnabled()){a.addSeparator(b);a.addItem(mxResources.get("insertPage"),null,mxUtils.bind(this,function(){this.insertPage()}),b);var f=this.currentPage;null!=f&&(a.addSeparator(b),a.addItem(mxResources.get("delete"),null,mxUtils.bind(this,function(){this.removePage(f)}),b),a.addItem(mxResources.get("rename"), -null,mxUtils.bind(this,function(){this.renamePage(f,f.getName())}),b),a.addSeparator(b),a.addItem(mxResources.get("duplicate"),null,mxUtils.bind(this,function(){this.duplicatePage(f,mxResources.get("copyOf",[f.getName()]))}),b))}}));b.div.className+=" geMenubarMenu";b.smartSeparators=!0;b.showDisabled=!0;b.autoExpand=!0;b.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(b,arguments);b.destroy()});var d=mxEvent.getClientX(a),k=mxEvent.getClientY(a);b.popup(d,k,null,a);this.setCurrentMenu(b); +EditorUi.prototype.createControlTab=function(a,b){var e=this.createTab(!0);e.style.paddingTop=a+"px";e.style.cursor="pointer";e.style.width="30px";e.style.lineHeight="30px";e.innerHTML=b;null!=e.firstChild&&null!=e.firstChild.style&&mxUtils.setOpacity(e.firstChild,40);return e}; +EditorUi.prototype.createPageMenuTab=function(){var a=this.createControlTab(3,'<div class="geSprite geSprite-dots" style="display:inline-block;width:21px;height:21px;"></div>');a.setAttribute("title",mxResources.get("pages"));a.style.position="absolute";a.style.top="0px";a.style.left="1px";mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){this.editor.graph.popupMenuHandler.hideMenu();var b=new mxPopupMenu(mxUtils.bind(this,function(a,b){for(var c=0;c<this.pages.length;c++)mxUtils.bind(this, +function(c){var d=a.addItem(this.pages[c].getName(),null,mxUtils.bind(this,function(){this.selectPage(this.pages[c])}),b);this.pages[c]==this.currentPage&&a.addCheckmark(d,Editor.checkmarkImage)})(c);if(this.editor.graph.isEnabled()){a.addSeparator(b);a.addItem(mxResources.get("insertPage"),null,mxUtils.bind(this,function(){this.insertPage()}),b);var e=this.currentPage;null!=e&&(a.addSeparator(b),a.addItem(mxResources.get("delete"),null,mxUtils.bind(this,function(){this.removePage(e)}),b),a.addItem(mxResources.get("rename"), +null,mxUtils.bind(this,function(){this.renamePage(e,e.getName())}),b),a.addSeparator(b),a.addItem(mxResources.get("duplicate"),null,mxUtils.bind(this,function(){this.duplicatePage(e,mxResources.get("copyOf",[e.getName()]))}),b))}}));b.div.className+=" geMenubarMenu";b.smartSeparators=!0;b.showDisabled=!0;b.autoExpand=!0;b.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(b,arguments);b.destroy()});var c=mxEvent.getClientX(a),k=mxEvent.getClientY(a);b.popup(c,k,null,a);this.setCurrentMenu(b); mxEvent.consume(a)}));return a};EditorUi.prototype.createPageInsertTab=function(){var a=this.createControlTab(4,'<div class="geSprite geSprite-plus" style="display:inline-block;width:21px;height:21px;"></div>');a.setAttribute("title",mxResources.get("insertPage"));mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){this.insertPage();mxEvent.consume(a)}));return a}; -EditorUi.prototype.createTabForPage=function(a,b,f){f=this.createTab(f);var d=a.getName()||mxResources.get("untitled"),k=a.getId();f.setAttribute("title",d+(null!=k?" ("+k+")":""));mxUtils.write(f,d);f.style.maxWidth=b+"px";f.style.width=b+"px";this.addTabListeners(a,f);42<b&&(f.style.textOverflow="ellipsis");return f}; -EditorUi.prototype.addTabListeners=function(a,b){mxEvent.disableContextMenu(b);var f=this.editor.graph;mxEvent.addListener(b,"dblclick",mxUtils.bind(this,function(b){this.renamePage(a);mxEvent.consume(b)}));var d=!1,k=!1;mxEvent.addGestureListeners(b,mxUtils.bind(this,function(b){d=null!=this.currentMenu;k=a==this.currentPage;f.isMouseDown||k||this.selectPage(a)}),null,mxUtils.bind(this,function(n){if(f.isEnabled()&&!f.isMouseDown&&(mxEvent.isTouchEvent(n)&&k||mxEvent.isPopupTrigger(n))){f.popupMenuHandler.hideMenu(); -this.hideCurrentMenu();if(!mxEvent.isTouchEvent(n)||!d){var p=new mxPopupMenu(this.createPageMenu(a));p.div.className+=" geMenubarMenu";p.smartSeparators=!0;p.showDisabled=!0;p.autoExpand=!0;p.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(p,arguments);this.resetCurrentMenu();p.destroy()});var q=mxEvent.getClientX(n),w=mxEvent.getClientY(n);p.popup(q,w,null,n);this.setCurrentMenu(p,b)}mxEvent.consume(n)}}))}; -EditorUi.prototype.createPageMenu=function(a,b){return mxUtils.bind(this,function(f,d){f.addItem(mxResources.get("insert"),null,mxUtils.bind(this,function(){this.insertPage(null,mxUtils.indexOf(this.pages,a)+1)}),d);f.addItem(mxResources.get("delete"),null,mxUtils.bind(this,function(){this.removePage(a)}),d);f.addItem(mxResources.get("rename"),null,mxUtils.bind(this,function(){this.renamePage(a,b)}),d);f.addSeparator(d);f.addItem(mxResources.get("duplicate"),null,mxUtils.bind(this,function(){this.duplicatePage(a, -mxResources.get("copyOf",[a.getName()]))}),d)})};(function(){var a=EditorUi.prototype.refresh;EditorUi.prototype.refresh=function(b){a.apply(this,arguments);this.updateTabContainer()}})();(function(){mxCodecRegistry.getCodec(ChangePageSetup).exclude.push("page")})();(function(){var a=new mxObjectCodec(new MovePage,["ui"]);a.beforeDecode=function(a,f,d){d.ui=a.ui;return f};a.afterDecode=function(a,f,d){a=d.oldIndex;d.oldIndex=d.newIndex;d.newIndex=a;return d};mxCodecRegistry.register(a)})(); -(function(){var a=new mxObjectCodec(new RenamePage,["ui","page"]);a.beforeDecode=function(a,f,d){d.ui=a.ui;return f};a.afterDecode=function(a,f,d){a=d.previous;d.previous=d.name;d.name=a;return d};mxCodecRegistry.register(a)})(); -(function(){var a=new mxObjectCodec(new ChangePage,"ui relatedPage index neverShown page previousPage".split(" ")),b="defaultParent currentRoot scrollLeft scrollTop scale translate lastPasteXml pasteCounter".split(" ");a.afterEncode=function(a,d,k){k.setAttribute("relatedPage",d.relatedPage.getId());null==d.index&&(k.setAttribute("name",d.relatedPage.getName()),null!=d.relatedPage.viewState&&k.setAttribute("viewState",JSON.stringify(d.relatedPage.viewState,function(a,d){return 0>mxUtils.indexOf(b, -a)?d:void 0})),null!=d.relatedPage.root&&a.encodeCell(d.relatedPage.root,k));return k};a.beforeDecode=function(a,b,k){k.ui=a.ui;k.relatedPage=k.ui.getPageById(b.getAttribute("relatedPage"));if(null==k.relatedPage){var d=b.ownerDocument.createElement("diagram");d.setAttribute("id",b.getAttribute("relatedPage"));d.setAttribute("name",b.getAttribute("name"));k.relatedPage=new DiagramPage(d);d=b.getAttribute("viewState");null!=d&&(k.relatedPage.viewState=JSON.parse(d),b.removeAttribute("viewState")); -b=b.cloneNode(!0);d=b.firstChild;if(null!=d)for(k.relatedPage.root=a.decodeCell(d,!1),k=d.nextSibling,d.parentNode.removeChild(d),d=k;null!=d;){k=d.nextSibling;if(d.nodeType==mxConstants.NODETYPE_ELEMENT){var f=d.getAttribute("id");null==a.lookup(f)&&a.decodeCell(d)}d.parentNode.removeChild(d);d=k}}return b};a.afterDecode=function(a,b,k){k.index=k.previousIndex;return k};mxCodecRegistry.register(a)})();(function(){var a=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAASFBMVEUAAAAAAAB/f3/9/f319fUfHx/7+/s+Pj69vb0AAAAAAAAAAAAAAAAAAAAAAAAAAAB2dnZ1dXUAAAAAAAAVFRX///8ZGRkGBgbOcI1hAAAAE3RSTlMA+vr9/f38+fb1893Bo00u+/tFvPJUBQAAAIRJREFUGNM0jEcSxCAQAxlydGqD///TNWxZBx1aXVIrWysplbapL3sFxgDq/idXBnHgBPK1nIxwc55vCXl6dRFtrV6svs/A/UjsPcpzA5tqyByD92HqQlMFh45BG6ND1DiKSoPDdm96N77bg5F+wyaEqRGb8ZiOwHQqdg9hehszcLAEIQB2lQ4p/sEpnAAAAABJRU5ErkJggg==":IMAGE_PATH+"/move.png";EditorUi.prototype.altShiftActions[68]= -"selectDescendants";var b=Graph.prototype.foldCells;Graph.prototype.foldCells=function(a,d,f,q,w){d=null!=d?d:!1;null==f&&(f=this.getFoldableCells(this.getSelectionCells(),a));this.stopEditing();this.model.beginUpdate();try{for(var c=f.slice(),g=[],h=0;h<f.length;h++){var k=this.view.getState(f[h]),n=null!=k?k.style:this.getCellStyle(f[h]);"1"==mxUtils.getValue(n,"treeFolding","0")&&(this.traverse(f[h],!0,mxUtils.bind(this,function(a,b){null!=b&&g.push(b);a!=f[h]&&g.push(a);return a==f[h]||!this.model.isCollapsed(a)})), -this.model.setCollapsed(f[h],a))}for(h=0;h<g.length;h++)this.model.setVisible(g[h],!a);f=c;f=b.apply(this,arguments)}finally{this.model.endUpdate()}return f};var f=EditorUi.prototype.init;EditorUi.prototype.init=function(){f.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function b(a){return r.isVertex(a)&&d(a)}function d(a){var b=!1;null!=a&&(a=r.getParent(a),b=m.view.getState(a),m.view.getState(a),b="tree"==(null!= -b?b.style:m.getCellStyle(a)).containerType);return b}function f(a){var b=!1;null!=a&&(a=r.getParent(a),b=m.view.getState(a),m.view.getState(a),b=null!=(null!=b?b.style:m.getCellStyle(a)).childLayout);return b}function q(a){a=m.view.getState(a);if(null!=a){var b=m.getIncomingEdges(a.cell);if(0<b.length&&(b=m.view.getState(b[0]),null!=b&&(b=b.absolutePoints,null!=b&&0<b.length&&(b=b[b.length-1],null!=b)))){if(b.y==a.y&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_SOUTH;if(b.y== -a.y+a.height&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_NORTH;if(b.x>a.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function w(a,b){b=null!=b?b:!0;m.model.beginUpdate();try{var c=m.model.getParent(a),d=m.getIncomingEdges(a),f=m.cloneCells([d[0],a]);m.model.setTerminal(f[0],m.model.getTerminal(d[0],!0),!0);var g=q(a),h=c.geometry;g==mxConstants.DIRECTION_SOUTH||g==mxConstants.DIRECTION_NORTH?f[1].geometry.x+=b?a.geometry.width+10:-f[1].geometry.width- -10:f[1].geometry.y+=b?a.geometry.height+10:-f[1].geometry.height-10;m.view.currentRoot!=c&&(f[1].geometry.x-=h.x,f[1].geometry.y-=h.y);var k=m.view.getState(a),l=m.view.scale;if(null!=k){var n=mxRectangle.fromRectangle(k);g==mxConstants.DIRECTION_SOUTH||g==mxConstants.DIRECTION_NORTH?n.x+=(b?a.geometry.width+10:-f[1].geometry.width-10)*l:n.y+=(b?a.geometry.height+10:-f[1].geometry.height-10)*l;var r=m.getOutgoingEdges(m.model.getTerminal(d[0],!0));if(null!=r){for(var p=g==mxConstants.DIRECTION_SOUTH|| -g==mxConstants.DIRECTION_NORTH,u=h=d=0;u<r.length;u++){var t=m.model.getTerminal(r[u],!1);if(g==q(t)){var v=m.view.getState(t);t!=a&&null!=v&&(p&&b!=v.getCenterX()<k.getCenterX()||!p&&b!=v.getCenterY()<k.getCenterY())&&mxUtils.intersects(n,v)&&(d=10+Math.max(d,(Math.min(n.x+n.width,v.x+v.width)-Math.max(n.x,v.x))/l),h=10+Math.max(h,(Math.min(n.y+n.height,v.y+v.height)-Math.max(n.y,v.y))/l))}}p?h=0:d=0;for(u=0;u<r.length;u++)if(t=m.model.getTerminal(r[u],!1),g==q(t)&&(v=m.view.getState(t),t!=a&&null!= -v&&(p&&b!=v.getCenterX()<k.getCenterX()||!p&&b!=v.getCenterY()<k.getCenterY()))){var z=[];m.traverse(v.cell,!0,function(a,b){null!=b&&z.push(b);z.push(a);return!0});m.moveCells(z,(b?1:-1)*d,(b?1:-1)*h)}}}return m.addCells(f,c)}finally{m.model.endUpdate()}}function c(a){m.model.beginUpdate();try{var b=q(a),c=m.getIncomingEdges(a),d=m.cloneCells([c[0],a]);m.model.setTerminal(c[0],d[1],!1);m.model.setTerminal(d[0],d[1],!0);m.model.setTerminal(d[0],a,!1);var f=m.model.getParent(a),g=f.geometry,h=[];m.view.currentRoot!= -f&&(d[1].geometry.x-=g.x,d[1].geometry.y-=g.y);m.traverse(a,!0,function(a,b){null!=b&&h.push(b);h.push(a);return!0});var k=a.geometry.width+40,l=a.geometry.height+40;b==mxConstants.DIRECTION_SOUTH?k=0:b==mxConstants.DIRECTION_NORTH?(k=0,l=-40):b==mxConstants.DIRECTION_WEST?(k=-40,l=0):b==mxConstants.DIRECTION_EAST&&(l=0);m.moveCells(h,k,l);return m.addCells(d,f)}finally{m.model.endUpdate()}}function g(a){m.model.beginUpdate();try{var b=m.model.getParent(a),c=m.getIncomingEdges(a),d=m.cloneCells([c[0], -a]);m.model.setTerminal(d[0],a,!0);var c=m.getOutgoingEdges(a),f=b.geometry,g=[];m.view.currentRoot==b&&(f=new mxRectangle);for(var h=0;h<c.length;h++){var k=m.model.getTerminal(c[h],!1);null!=k&&g.push(k)}var l=m.view.getBounds(g),n=q(a),r=m.view.translate,p=m.view.scale;n==mxConstants.DIRECTION_SOUTH?(d[1].geometry.x=null==l?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(l.x+l.width)/p-r.x-f.x+10,d[1].geometry.y+=a.geometry.height-f.y+40):n==mxConstants.DIRECTION_NORTH?(d[1].geometry.x= -null==l?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(l.x+l.width)/p-r.x+-f.x+10,d[1].geometry.y-=d[1].geometry.height-f.y+40):(d[1].geometry.x=n==mxConstants.DIRECTION_WEST?d[1].geometry.x-(d[1].geometry.width-f.x+40):d[1].geometry.x+(a.geometry.width-f.x+40),d[1].geometry.y=null==l?a.geometry.y+(a.geometry.height-d[1].geometry.height)/2:(l.y+l.height)/p-r.y+-f.y+10);return m.addCells(d,b)}finally{m.model.endUpdate()}}function h(a,b,c){a=m.getOutgoingEdges(a);c=m.view.getState(c);var d= -[];if(null!=c&&null!=a){for(var f=0;f<a.length;f++){var g=m.view.getState(m.model.getTerminal(a[f],!1));null!=g&&(!b&&Math.min(g.x+g.width,c.x+c.width)>=Math.max(g.x,c.x)||b&&Math.min(g.y+g.height,c.y+c.height)>=Math.max(g.y,c.y))&&d.push(g)}d.sort(function(a,c){return b?a.x+a.width-c.x-c.width:a.y+a.height-c.y-c.height})}return d}function l(a,b){var c=q(a),d=b==mxConstants.DIRECTION_EAST||b==mxConstants.DIRECTION_WEST;(c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST)==d&&c!=b?t.actions.get("selectParent").funct(): -c==b?(d=m.getOutgoingEdges(a),null!=d&&0<d.length&&m.setSelectionCell(m.model.getTerminal(d[0],!1))):(c=m.getIncomingEdges(a),null!=c&&0<c.length&&(d=h(m.model.getTerminal(c[0],!0),d,a),c=m.view.getState(a),null!=c&&(c=mxUtils.indexOf(d,c),0<=c&&(c+=b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_WEST?-1:1,0<=c&&c<=d.length-1&&m.setSelectionCell(d[c].cell)))))}var t=this,m=t.editor.graph,r=m.getModel();mxResources.parse("selectChildren=Select Children");mxResources.parse("selectSiblings=Select Siblings"); -mxResources.parse("selectDescendants=Select Descendants");mxResources.parse("selectParent=Select Parent");var x=t.menus.createPopupMenu;t.menus.createPopupMenu=function(a,c,d){x.apply(this,arguments);if(1==m.getSelectionCount()){c=m.getSelectionCell();var f=m.getOutgoingEdges(c);a.addSeparator();null!=f&&0<f.length&&(b(m.getSelectionCell())&&this.addMenuItems(a,["selectChildren"],null,d),this.addMenuItems(a,["selectDescendants"],null,d));b(m.getSelectionCell())&&(a.addSeparator(),0<m.getIncomingEdges(c).length&& -this.addMenuItems(a,["selectSiblings","selectParent"],null,d))}};t.actions.addAction("selectChildren",function(){if(m.isEnabled()&&1==m.getSelectionCount()){var a=m.getSelectionCell(),a=m.getOutgoingEdges(a);if(null!=a){for(var b=[],c=0;c<a.length;c++)b.push(m.model.getTerminal(a[c],!1));m.setSelectionCells(b)}}},null,null,"Alt+Shift+X");t.actions.addAction("selectSiblings",function(){if(m.isEnabled()&&1==m.getSelectionCount()){var a=m.getSelectionCell(),a=m.getIncomingEdges(a);if(null!=a&&0<a.length&& -(a=m.getOutgoingEdges(m.model.getTerminal(a[0],!0)),null!=a)){for(var b=[],c=0;c<a.length;c++)b.push(m.model.getTerminal(a[c],!1));m.setSelectionCells(b)}}},null,null,"Alt+Shift+S");t.actions.addAction("selectParent",function(){if(m.isEnabled()&&1==m.getSelectionCount()){var a=m.getSelectionCell(),a=m.getIncomingEdges(a);null!=a&&0<a.length&&m.setSelectionCell(m.model.getTerminal(a[0],!0))}},null,null,"Alt+Shift+P");t.actions.addAction("selectDescendants",function(){if(m.isEnabled()&&1==m.getSelectionCount()){var a= -m.getSelectionCell(),b=[];m.traverse(a,!0,function(a,c){null!=c&&b.push(c);b.push(a);return!0});m.setSelectionCells(b)}},null,null,"Alt+Shift+D");var v=m.removeCells;m.removeCells=function(a,c){c=null!=c?c:!0;null==a&&(a=this.getDeletableCells(this.getSelectionCells()));c&&(a=this.getDeletableCells(this.addAllEdges(a)));for(var f=[],g=0;g<a.length;g++){var h=a[g];r.isEdge(h)&&d(h)&&(f.push(h),h=r.getTerminal(h,!1));b(h)?(m.traverse(h,!0,function(a,b){null!=b&&f.push(b);f.push(a);return!0}),h=m.getIncomingEdges(a[g]), -a=a.concat(h)):f.push(a[g])}a=f;return v.apply(this,arguments)};t.hoverIcons.getStateAt=function(a,c,d){return b(a.cell)?null:this.graph.view.getState(this.graph.getCellAt(c,d))};var D=m.duplicateCells;m.duplicateCells=function(a,c){a=null!=a?a:this.getSelectionCells();for(var d=a.slice(0),f=0;f<d.length;f++){var g=m.view.getState(d[f]);if(null!=g&&b(g.cell))for(var h=m.getIncomingEdges(g.cell),g=0;g<h.length;g++)mxUtils.remove(h[g],a)}this.model.beginUpdate();try{var k=D.call(this,a,c);if(k.length== -a.length)for(f=0;f<a.length;f++)if(b(a[f])){var l=m.getIncomingEdges(k[f]),h=m.getIncomingEdges(a[f]);if(0==l.length&&0<h.length){var n=this.cloneCell(h[0]);this.addEdge(n,m.getDefaultParent(),this.model.getTerminal(h[0],!0),k[f])}}}finally{this.model.endUpdate()}return k};var y=m.moveCells;m.moveCells=function(a,c,d,f,g,h,k){var l=null;this.model.beginUpdate();try{var n=g,r=this.view.getState(g),p=null!=r?r.style:this.getCellStyle(g);if(null!=a&&b(g)&&"1"==mxUtils.getValue(p,"treeFolding","0")){for(var q= -0;q<a.length;q++)if(b(a[q])||m.model.isEdge(a[q])&&null==m.model.getTerminal(a[q],!0)){g=m.model.getParent(a[q]);break}if(null!=n&&g!=n&&null!=this.view.getState(a[0])){var u=m.getIncomingEdges(a[0]);if(0<u.length){var t=m.view.getState(m.model.getTerminal(u[0],!0));if(null!=t){var v=m.view.getState(n);null!=v&&(c=(v.getCenterX()-t.getCenterX())/m.view.scale,d=(v.getCenterY()-t.getCenterY())/m.view.scale)}}}}l=y.apply(this,arguments);if(null!=l&&null!=a&&l.length==a.length)for(q=0;q<l.length;q++)if(this.model.isEdge(l[q]))b(n)&& -0>mxUtils.indexOf(l,this.model.getTerminal(l[q],!0))&&this.model.setTerminal(l[q],n,!0);else if(b(a[q])&&(u=m.getIncomingEdges(a[q]),0<u.length))if(!f)b(n)&&0>mxUtils.indexOf(a,this.model.getTerminal(u[0],!0))&&this.model.setTerminal(u[0],n,!0);else if(0==m.getIncomingEdges(l[q]).length){r=n;if(null==r||r==m.model.getParent(a[q]))r=m.model.getTerminal(u[0],!0);f=this.cloneCell(u[0]);this.addEdge(f,m.getDefaultParent(),r,l[q])}}finally{this.model.endUpdate()}return l};if(null!=t.sidebar){var u=t.sidebar.dropAndConnect; -t.sidebar.dropAndConnect=function(a,c,d,f){var g=m.model,h=null;g.beginUpdate();try{if(h=u.apply(this,arguments),b(a))for(var k=0;k<h.length;k++)if(g.isEdge(h[k])&&null==g.getTerminal(h[k],!0)){g.setTerminal(h[k],a,!0);var l=m.getCellGeometry(h[k]);l.points=null;null!=l.getTerminalPoint(!0)&&l.setTerminalPoint(null,!0)}}finally{g.endUpdate()}return h}}var A={88:t.actions.get("selectChildren"),84:t.actions.get("selectSubtree"),80:t.actions.get("selectParent"),83:t.actions.get("selectSiblings")},F= -t.onKeyDown;t.onKeyDown=function(a){try{if(m.isEnabled()&&!m.isEditing()&&b(m.getSelectionCell())&&1==m.getSelectionCount()){var d=null;0<m.getIncomingEdges(m.getSelectionCell()).length&&(9==a.which?d=mxEvent.isShiftDown(a)?c(m.getSelectionCell()):g(m.getSelectionCell()):13==a.which&&(d=w(m.getSelectionCell(),!mxEvent.isShiftDown(a))));if(null!=d&&0<d.length)1==d.length&&m.model.isEdge(d[0])?m.setSelectionCell(m.model.getTerminal(d[0],!1)):m.setSelectionCell(d[d.length-1]),null!=t.hoverIcons&&t.hoverIcons.update(m.view.getState(m.getSelectionCell())), -m.startEditingAtCell(m.getSelectionCell()),mxEvent.consume(a);else if(mxEvent.isAltDown(a)&&mxEvent.isShiftDown(a)){var f=A[a.keyCode];null!=f&&(f.funct(a),mxEvent.consume(a))}else 37==a.keyCode?(l(m.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(a)):38==a.keyCode?(l(m.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(a)):39==a.keyCode?(l(m.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(a)):40==a.keyCode&&(l(m.getSelectionCell(),mxConstants.DIRECTION_SOUTH), -mxEvent.consume(a))}}catch(O){console.log("error",O)}mxEvent.isConsumed(a)||F.apply(this,arguments)};var Q=m.connectVertex;m.connectVertex=function(a,d,f,h,k,l){var n=m.getIncomingEdges(a);return b(a)&&0<n.length?(f=q(a),h=f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST,k=d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST,f==d?g(a):h==k?c(a):w(a,d!=mxConstants.DIRECTION_NORTH&&d!=mxConstants.DIRECTION_WEST)):Q.call(this,a,d,f,h,k,l)};m.getSubtree=function(a){var c=[a];b(a)&& -!f(a)&&m.traverse(a,!0,function(a,b){null!=b&&0>mxUtils.indexOf(c,b)&&c.push(b);0>mxUtils.indexOf(c,a)&&c.push(a);return!0});return c};var G=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){G.apply(this,arguments);b(this.state.cell)&&0<this.graph.getOutgoingEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(a),this.moveHandle.setAttribute("title","Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width= +EditorUi.prototype.createTabForPage=function(a,b,e){e=this.createTab(e);var c=a.getName()||mxResources.get("untitled"),k=a.getId();e.setAttribute("title",c+(null!=k?" ("+k+")":""));mxUtils.write(e,c);e.style.maxWidth=b+"px";e.style.width=b+"px";this.addTabListeners(a,e);42<b&&(e.style.textOverflow="ellipsis");return e}; +EditorUi.prototype.addTabListeners=function(a,b){mxEvent.disableContextMenu(b);var e=this.editor.graph;mxEvent.addListener(b,"dblclick",mxUtils.bind(this,function(b){this.renamePage(a);mxEvent.consume(b)}));var c=!1,k=!1;mxEvent.addGestureListeners(b,mxUtils.bind(this,function(b){c=null!=this.currentMenu;k=a==this.currentPage;e.isMouseDown||k||this.selectPage(a)}),null,mxUtils.bind(this,function(m){if(e.isEnabled()&&!e.isMouseDown&&(mxEvent.isTouchEvent(m)&&k||mxEvent.isPopupTrigger(m))){e.popupMenuHandler.hideMenu(); +this.hideCurrentMenu();if(!mxEvent.isTouchEvent(m)||!c){var q=new mxPopupMenu(this.createPageMenu(a));q.div.className+=" geMenubarMenu";q.smartSeparators=!0;q.showDisabled=!0;q.autoExpand=!0;q.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(q,arguments);this.resetCurrentMenu();q.destroy()});var r=mxEvent.getClientX(m),v=mxEvent.getClientY(m);q.popup(r,v,null,m);this.setCurrentMenu(q,b)}mxEvent.consume(m)}}))}; +EditorUi.prototype.createPageMenu=function(a,b){return mxUtils.bind(this,function(e,c){e.addItem(mxResources.get("insert"),null,mxUtils.bind(this,function(){this.insertPage(null,mxUtils.indexOf(this.pages,a)+1)}),c);e.addItem(mxResources.get("delete"),null,mxUtils.bind(this,function(){this.removePage(a)}),c);e.addItem(mxResources.get("rename"),null,mxUtils.bind(this,function(){this.renamePage(a,b)}),c);e.addSeparator(c);e.addItem(mxResources.get("duplicate"),null,mxUtils.bind(this,function(){this.duplicatePage(a, +mxResources.get("copyOf",[a.getName()]))}),c)})};(function(){var a=EditorUi.prototype.refresh;EditorUi.prototype.refresh=function(b){a.apply(this,arguments);this.updateTabContainer()}})();(function(){mxCodecRegistry.getCodec(ChangePageSetup).exclude.push("page")})();(function(){var a=new mxObjectCodec(new MovePage,["ui"]);a.beforeDecode=function(a,e,c){c.ui=a.ui;return e};a.afterDecode=function(a,e,c){a=c.oldIndex;c.oldIndex=c.newIndex;c.newIndex=a;return c};mxCodecRegistry.register(a)})(); +(function(){var a=new mxObjectCodec(new RenamePage,["ui","page"]);a.beforeDecode=function(a,e,c){c.ui=a.ui;return e};a.afterDecode=function(a,e,c){a=c.previous;c.previous=c.name;c.name=a;return c};mxCodecRegistry.register(a)})(); +(function(){var a=new mxObjectCodec(new ChangePage,"ui relatedPage index neverShown page previousPage".split(" ")),b="defaultParent currentRoot scrollLeft scrollTop scale translate lastPasteXml pasteCounter".split(" ");a.afterEncode=function(a,c,k){k.setAttribute("relatedPage",c.relatedPage.getId());null==c.index&&(k.setAttribute("name",c.relatedPage.getName()),null!=c.relatedPage.viewState&&k.setAttribute("viewState",JSON.stringify(c.relatedPage.viewState,function(a,c){return 0>mxUtils.indexOf(b, +a)?c:void 0})),null!=c.relatedPage.root&&a.encodeCell(c.relatedPage.root,k));return k};a.beforeDecode=function(a,b,k){k.ui=a.ui;k.relatedPage=k.ui.getPageById(b.getAttribute("relatedPage"));if(null==k.relatedPage){var c=b.ownerDocument.createElement("diagram");c.setAttribute("id",b.getAttribute("relatedPage"));c.setAttribute("name",b.getAttribute("name"));k.relatedPage=new DiagramPage(c);c=b.getAttribute("viewState");null!=c&&(k.relatedPage.viewState=JSON.parse(c),b.removeAttribute("viewState")); +b=b.cloneNode(!0);c=b.firstChild;if(null!=c)for(k.relatedPage.root=a.decodeCell(c,!1),k=c.nextSibling,c.parentNode.removeChild(c),c=k;null!=c;){k=c.nextSibling;if(c.nodeType==mxConstants.NODETYPE_ELEMENT){var e=c.getAttribute("id");null==a.lookup(e)&&a.decodeCell(c)}c.parentNode.removeChild(c);c=k}}return b};a.afterDecode=function(a,b,k){k.index=k.previousIndex;return k};mxCodecRegistry.register(a)})();(function(){var a=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAASFBMVEUAAAAAAAB/f3/9/f319fUfHx/7+/s+Pj69vb0AAAAAAAAAAAAAAAAAAAAAAAAAAAB2dnZ1dXUAAAAAAAAVFRX///8ZGRkGBgbOcI1hAAAAE3RSTlMA+vr9/f38+fb1893Bo00u+/tFvPJUBQAAAIRJREFUGNM0jEcSxCAQAxlydGqD///TNWxZBx1aXVIrWysplbapL3sFxgDq/idXBnHgBPK1nIxwc55vCXl6dRFtrV6svs/A/UjsPcpzA5tqyByD92HqQlMFh45BG6ND1DiKSoPDdm96N77bg5F+wyaEqRGb8ZiOwHQqdg9hehszcLAEIQB2lQ4p/sEpnAAAAABJRU5ErkJggg==":IMAGE_PATH+"/move.png";EditorUi.prototype.altShiftActions[68]= +"selectDescendants";var b=Graph.prototype.foldCells;Graph.prototype.foldCells=function(a,c,e,r,v){c=null!=c?c:!1;null==e&&(e=this.getFoldableCells(this.getSelectionCells(),a));this.stopEditing();this.model.beginUpdate();try{for(var k=e.slice(),d=[],f=0;f<e.length;f++){var l=this.view.getState(e[f]),m=null!=l?l.style:this.getCellStyle(e[f]);"1"==mxUtils.getValue(m,"treeFolding","0")&&(this.traverse(e[f],!0,mxUtils.bind(this,function(a,b){null!=b&&d.push(b);a!=e[f]&&d.push(a);return a==e[f]||!this.model.isCollapsed(a)})), +this.model.setCollapsed(e[f],a))}for(f=0;f<d.length;f++)this.model.setVisible(d[f],!a);e=k;e=b.apply(this,arguments)}finally{this.model.endUpdate()}return e};var e=EditorUi.prototype.init;EditorUi.prototype.init=function(){e.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function b(a){return p.isVertex(a)&&c(a)}function c(a){var b=!1;null!=a&&(a=p.getParent(a),b=g.view.getState(a),g.view.getState(a),b="tree"==(null!= +b?b.style:g.getCellStyle(a)).containerType);return b}function e(a){var b=!1;null!=a&&(a=p.getParent(a),b=g.view.getState(a),g.view.getState(a),b=null!=(null!=b?b.style:g.getCellStyle(a)).childLayout);return b}function r(a){a=g.view.getState(a);if(null!=a){var b=g.getIncomingEdges(a.cell);if(0<b.length&&(b=g.view.getState(b[0]),null!=b&&(b=b.absolutePoints,null!=b&&0<b.length&&(b=b[b.length-1],null!=b)))){if(b.y==a.y&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_SOUTH;if(b.y== +a.y+a.height&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_NORTH;if(b.x>a.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function v(a,b){b=null!=b?b:!0;g.model.beginUpdate();try{var c=g.model.getParent(a),d=g.getIncomingEdges(a),e=g.cloneCells([d[0],a]);g.model.setTerminal(e[0],g.model.getTerminal(d[0],!0),!0);var f=r(a),k=c.geometry;f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH?e[1].geometry.x+=b?a.geometry.width+10:-e[1].geometry.width- +10:e[1].geometry.y+=b?a.geometry.height+10:-e[1].geometry.height-10;g.view.currentRoot!=c&&(e[1].geometry.x-=k.x,e[1].geometry.y-=k.y);var l=g.view.getState(a),p=g.view.scale;if(null!=l){var m=mxRectangle.fromRectangle(l);f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH?m.x+=(b?a.geometry.width+10:-e[1].geometry.width-10)*p:m.y+=(b?a.geometry.height+10:-e[1].geometry.height-10)*p;var q=g.getOutgoingEdges(g.model.getTerminal(d[0],!0));if(null!=q){for(var n=f==mxConstants.DIRECTION_SOUTH|| +f==mxConstants.DIRECTION_NORTH,u=k=d=0;u<q.length;u++){var t=g.model.getTerminal(q[u],!1);if(f==r(t)){var A=g.view.getState(t);t!=a&&null!=A&&(n&&b!=A.getCenterX()<l.getCenterX()||!n&&b!=A.getCenterY()<l.getCenterY())&&mxUtils.intersects(m,A)&&(d=10+Math.max(d,(Math.min(m.x+m.width,A.x+A.width)-Math.max(m.x,A.x))/p),k=10+Math.max(k,(Math.min(m.y+m.height,A.y+A.height)-Math.max(m.y,A.y))/p))}}n?k=0:d=0;for(u=0;u<q.length;u++)if(t=g.model.getTerminal(q[u],!1),f==r(t)&&(A=g.view.getState(t),t!=a&&null!= +A&&(n&&b!=A.getCenterX()<l.getCenterX()||!n&&b!=A.getCenterY()<l.getCenterY()))){var v=[];g.traverse(A.cell,!0,function(a,b){null!=b&&v.push(b);v.push(a);return!0});g.moveCells(v,(b?1:-1)*d,(b?1:-1)*k)}}}return g.addCells(e,c)}finally{g.model.endUpdate()}}function z(a){g.model.beginUpdate();try{var b=r(a),d=g.getIncomingEdges(a),c=g.cloneCells([d[0],a]);g.model.setTerminal(d[0],c[1],!1);g.model.setTerminal(c[0],c[1],!0);g.model.setTerminal(c[0],a,!1);var e=g.model.getParent(a),f=e.geometry,k=[];g.view.currentRoot!= +e&&(c[1].geometry.x-=f.x,c[1].geometry.y-=f.y);g.traverse(a,!0,function(a,b){null!=b&&k.push(b);k.push(a);return!0});var l=a.geometry.width+40,m=a.geometry.height+40;b==mxConstants.DIRECTION_SOUTH?l=0:b==mxConstants.DIRECTION_NORTH?(l=0,m=-40):b==mxConstants.DIRECTION_WEST?(l=-40,m=0):b==mxConstants.DIRECTION_EAST&&(m=0);g.moveCells(k,l,m);return g.addCells(c,e)}finally{g.model.endUpdate()}}function d(a){g.model.beginUpdate();try{var b=g.model.getParent(a),c=g.getIncomingEdges(a),d=g.cloneCells([c[0], +a]);g.model.setTerminal(d[0],a,!0);var c=g.getOutgoingEdges(a),e=b.geometry,f=[];g.view.currentRoot==b&&(e=new mxRectangle);for(var k=0;k<c.length;k++){var l=g.model.getTerminal(c[k],!1);null!=l&&f.push(l)}var m=g.view.getBounds(f),p=r(a),q=g.view.translate,n=g.view.scale;p==mxConstants.DIRECTION_SOUTH?(d[1].geometry.x=null==m?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(m.x+m.width)/n-q.x-e.x+10,d[1].geometry.y+=a.geometry.height-e.y+40):p==mxConstants.DIRECTION_NORTH?(d[1].geometry.x= +null==m?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(m.x+m.width)/n-q.x+-e.x+10,d[1].geometry.y-=d[1].geometry.height-e.y+40):(d[1].geometry.x=p==mxConstants.DIRECTION_WEST?d[1].geometry.x-(d[1].geometry.width-e.x+40):d[1].geometry.x+(a.geometry.width-e.x+40),d[1].geometry.y=null==m?a.geometry.y+(a.geometry.height-d[1].geometry.height)/2:(m.y+m.height)/n-q.y+-e.y+10);return g.addCells(d,b)}finally{g.model.endUpdate()}}function f(a,b,d){a=g.getOutgoingEdges(a);d=g.view.getState(d);var c= +[];if(null!=d&&null!=a){for(var e=0;e<a.length;e++){var f=g.view.getState(g.model.getTerminal(a[e],!1));null!=f&&(!b&&Math.min(f.x+f.width,d.x+d.width)>=Math.max(f.x,d.x)||b&&Math.min(f.y+f.height,d.y+d.height)>=Math.max(f.y,d.y))&&c.push(f)}c.sort(function(a,d){return b?a.x+a.width-d.x-d.width:a.y+a.height-d.y-d.height})}return c}function l(a,b){var d=r(a),c=b==mxConstants.DIRECTION_EAST||b==mxConstants.DIRECTION_WEST;(d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST)==c&&d!=b?n.actions.get("selectParent").funct(): +d==b?(c=g.getOutgoingEdges(a),null!=c&&0<c.length&&g.setSelectionCell(g.model.getTerminal(c[0],!1))):(d=g.getIncomingEdges(a),null!=d&&0<d.length&&(c=f(g.model.getTerminal(d[0],!0),c,a),d=g.view.getState(a),null!=d&&(d=mxUtils.indexOf(c,d),0<=d&&(d+=b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_WEST?-1:1,0<=d&&d<=c.length-1&&g.setSelectionCell(c[d].cell)))))}var n=this,g=n.editor.graph,p=g.getModel();mxResources.parse("selectChildren=Select Children");mxResources.parse("selectSiblings=Select Siblings"); +mxResources.parse("selectDescendants=Select Descendants");mxResources.parse("selectParent=Select Parent");var B=n.menus.createPopupMenu;n.menus.createPopupMenu=function(a,d,c){B.apply(this,arguments);if(1==g.getSelectionCount()){d=g.getSelectionCell();var e=g.getOutgoingEdges(d);a.addSeparator();null!=e&&0<e.length&&(b(g.getSelectionCell())&&this.addMenuItems(a,["selectChildren"],null,c),this.addMenuItems(a,["selectDescendants"],null,c));b(g.getSelectionCell())&&(a.addSeparator(),0<g.getIncomingEdges(d).length&& +this.addMenuItems(a,["selectSiblings","selectParent"],null,c))}};n.actions.addAction("selectChildren",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a=g.getSelectionCell(),a=g.getOutgoingEdges(a);if(null!=a){for(var b=[],d=0;d<a.length;d++)b.push(g.model.getTerminal(a[d],!1));g.setSelectionCells(b)}}},null,null,"Alt+Shift+X");n.actions.addAction("selectSiblings",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a=g.getSelectionCell(),a=g.getIncomingEdges(a);if(null!=a&&0<a.length&& +(a=g.getOutgoingEdges(g.model.getTerminal(a[0],!0)),null!=a)){for(var b=[],d=0;d<a.length;d++)b.push(g.model.getTerminal(a[d],!1));g.setSelectionCells(b)}}},null,null,"Alt+Shift+S");n.actions.addAction("selectParent",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a=g.getSelectionCell(),a=g.getIncomingEdges(a);null!=a&&0<a.length&&g.setSelectionCell(g.model.getTerminal(a[0],!0))}},null,null,"Alt+Shift+P");n.actions.addAction("selectDescendants",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a= +g.getSelectionCell(),b=[];g.traverse(a,!0,function(a,d){null!=d&&b.push(d);b.push(a);return!0});g.setSelectionCells(b)}},null,null,"Alt+Shift+D");var x=g.removeCells;g.removeCells=function(a,d){d=null!=d?d:!0;null==a&&(a=this.getDeletableCells(this.getSelectionCells()));d&&(a=this.getDeletableCells(this.addAllEdges(a)));for(var e=[],f=0;f<a.length;f++){var k=a[f];p.isEdge(k)&&c(k)&&(e.push(k),k=p.getTerminal(k,!1));b(k)?(g.traverse(k,!0,function(a,b){null!=b&&e.push(b);e.push(a);return!0}),k=g.getIncomingEdges(a[f]), +a=a.concat(k)):e.push(a[f])}a=e;return x.apply(this,arguments)};n.hoverIcons.getStateAt=function(a,d,c){return b(a.cell)?null:this.graph.view.getState(this.graph.getCellAt(d,c))};var t=g.duplicateCells;g.duplicateCells=function(a,d){a=null!=a?a:this.getSelectionCells();for(var c=a.slice(0),e=0;e<c.length;e++){var f=g.view.getState(c[e]);if(null!=f&&b(f.cell))for(var k=g.getIncomingEdges(f.cell),f=0;f<k.length;f++)mxUtils.remove(k[f],a)}this.model.beginUpdate();try{var l=t.call(this,a,d);if(l.length== +a.length)for(e=0;e<a.length;e++)if(b(a[e])){var m=g.getIncomingEdges(l[e]),k=g.getIncomingEdges(a[e]);if(0==m.length&&0<k.length){var p=this.cloneCell(k[0]);this.addEdge(p,g.getDefaultParent(),this.model.getTerminal(k[0],!0),l[e])}}}finally{this.model.endUpdate()}return l};var y=g.moveCells;g.moveCells=function(a,d,c,e,f,k,l){var m=null;this.model.beginUpdate();try{var p=f,q=this.view.getState(f),n=null!=q?q.style:this.getCellStyle(f);if(null!=a&&b(f)&&"1"==mxUtils.getValue(n,"treeFolding","0")){for(var u= +0;u<a.length;u++)if(b(a[u])||g.model.isEdge(a[u])&&null==g.model.getTerminal(a[u],!0)){f=g.model.getParent(a[u]);break}if(null!=p&&f!=p&&null!=this.view.getState(a[0])){var r=g.getIncomingEdges(a[0]);if(0<r.length){var t=g.view.getState(g.model.getTerminal(r[0],!0));if(null!=t){var A=g.view.getState(p);null!=A&&(d=(A.getCenterX()-t.getCenterX())/g.view.scale,c=(A.getCenterY()-t.getCenterY())/g.view.scale)}}}}m=y.apply(this,arguments);if(null!=m&&null!=a&&m.length==a.length)for(u=0;u<m.length;u++)if(this.model.isEdge(m[u]))b(p)&& +0>mxUtils.indexOf(m,this.model.getTerminal(m[u],!0))&&this.model.setTerminal(m[u],p,!0);else if(b(a[u])&&(r=g.getIncomingEdges(a[u]),0<r.length))if(!e)b(p)&&0>mxUtils.indexOf(a,this.model.getTerminal(r[0],!0))&&this.model.setTerminal(r[0],p,!0);else if(0==g.getIncomingEdges(m[u]).length){q=p;if(null==q||q==g.model.getParent(a[u]))q=g.model.getTerminal(r[0],!0);e=this.cloneCell(r[0]);this.addEdge(e,g.getDefaultParent(),q,m[u])}}finally{this.model.endUpdate()}return m};if(null!=n.sidebar){var u=n.sidebar.dropAndConnect; +n.sidebar.dropAndConnect=function(a,d,c,e){var f=g.model,k=null;f.beginUpdate();try{if(k=u.apply(this,arguments),b(a))for(var l=0;l<k.length;l++)if(f.isEdge(k[l])&&null==f.getTerminal(k[l],!0)){f.setTerminal(k[l],a,!0);var m=g.getCellGeometry(k[l]);m.points=null;null!=m.getTerminalPoint(!0)&&m.setTerminalPoint(null,!0)}}finally{f.endUpdate()}return k}}var A={88:n.actions.get("selectChildren"),84:n.actions.get("selectSubtree"),80:n.actions.get("selectParent"),83:n.actions.get("selectSiblings")},D= +n.onKeyDown;n.onKeyDown=function(a){try{if(g.isEnabled()&&!g.isEditing()&&b(g.getSelectionCell())&&1==g.getSelectionCount()){var c=null;0<g.getIncomingEdges(g.getSelectionCell()).length&&(9==a.which?c=mxEvent.isShiftDown(a)?z(g.getSelectionCell()):d(g.getSelectionCell()):13==a.which&&(c=v(g.getSelectionCell(),!mxEvent.isShiftDown(a))));if(null!=c&&0<c.length)1==c.length&&g.model.isEdge(c[0])?g.setSelectionCell(g.model.getTerminal(c[0],!1)):g.setSelectionCell(c[c.length-1]),null!=n.hoverIcons&&n.hoverIcons.update(g.view.getState(g.getSelectionCell())), +g.startEditingAtCell(g.getSelectionCell()),mxEvent.consume(a);else if(mxEvent.isAltDown(a)&&mxEvent.isShiftDown(a)){var e=A[a.keyCode];null!=e&&(e.funct(a),mxEvent.consume(a))}else 37==a.keyCode?(l(g.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(a)):38==a.keyCode?(l(g.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(a)):39==a.keyCode?(l(g.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(a)):40==a.keyCode&&(l(g.getSelectionCell(),mxConstants.DIRECTION_SOUTH), +mxEvent.consume(a))}}catch(O){console.log("error",O)}mxEvent.isConsumed(a)||D.apply(this,arguments)};var U=g.connectVertex;g.connectVertex=function(a,c,e,f,k,l){var m=g.getIncomingEdges(a);return b(a)&&0<m.length?(e=r(a),f=e==mxConstants.DIRECTION_EAST||e==mxConstants.DIRECTION_WEST,k=c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST,e==c?d(a):f==k?z(a):v(a,c!=mxConstants.DIRECTION_NORTH&&c!=mxConstants.DIRECTION_WEST)):U.call(this,a,c,e,f,k,l)};g.getSubtree=function(a){var d=[a];b(a)&& +!e(a)&&g.traverse(a,!0,function(a,b){null!=b&&0>mxUtils.indexOf(d,b)&&d.push(b);0>mxUtils.indexOf(d,a)&&d.push(a);return!0});return d};var S=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){S.apply(this,arguments);b(this.state.cell)&&0<this.graph.getOutgoingEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(a),this.moveHandle.setAttribute("title","Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width= "18px",this.moveHandle.style.height="18px",this.graph.container.appendChild(this.moveHandle),mxEvent.addGestureListeners(this.moveHandle,mxUtils.bind(this,function(a){this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(a),mxEvent.getClientY(a));this.graph.graphHandler.cells=this.graph.getSubtree(this.state.cell);this.graph.graphHandler.bounds=this.state.view.getBounds(this.graph.graphHandler.cells);this.graph.graphHandler.pBounds=this.graph.graphHandler.getPreviewBounds(this.graph.graphHandler.cells); -this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(a);this.graph.isMouseDown=!0;mxEvent.consume(a)})))};var I=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){I.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.left=this.state.x+this.state.width+(40>this.state.width?10:0)+2+"px",this.moveHandle.style.top=this.state.y+this.state.height+(40>this.state.height?10:0)+2+"px")};var M=mxVertexHandler.prototype.destroy; -mxVertexHandler.prototype.destroy=function(a,b){M.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.parentNode.removeChild(this.moveHandle),this.moveHandle=null)}};if("undefined"!==typeof Sidebar){var d=Sidebar.prototype.createAdvancedShapes;Sidebar.prototype.createAdvancedShapes=function(){var a=d.apply(this,arguments),b=this.graph;return a.concat([this.addEntry("tree container",function(){var a=new mxCell("Tree Container",new mxGeometry(0,0,220,160),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;"); -a.vertex=!0;return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap central idea branch topic",function(){var a=new mxCell("Mindmap",new mxGeometry(0,0,420,126),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");a.vertex=!0;var b=new mxCell("Central Idea",new mxGeometry(160,60,100,40),"ellipse;whiteSpace=wrap;html=1;align=center;container=1;recursiveResize=0;treeFolding=1;");b.vertex=!0;var d=new mxCell("Topic",new mxGeometry(320, -40,80,20),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;");d.vertex=!0;var c=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");c.geometry.relative=!0;c.edge=!0;b.insertEdge(c,!0);d.insertEdge(c,!1);var f=new mxCell("Branch",new mxGeometry(320,80,72,26),"whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;"); -f.vertex=!0;var h=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");h.geometry.relative=!0;h.edge=!0;b.insertEdge(h,!0);f.insertEdge(h,!1);var k=new mxCell("Topic",new mxGeometry(20,40,80,20),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;");k.vertex=!0;var n=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;"); -n.geometry.relative=!0;n.edge=!0;b.insertEdge(n,!0);k.insertEdge(n,!1);var m=new mxCell("Branch",new mxGeometry(20,80,72,26),"whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;");m.vertex=!0;var r=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;"); -r.geometry.relative=!0;r.edge=!0;b.insertEdge(r,!0);m.insertEdge(r,!1);a.insert(c);a.insert(h);a.insert(n);a.insert(r);a.insert(b);a.insert(d);a.insert(f);a.insert(k);a.insert(m);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap central idea",function(){var a=new mxCell("Central Idea",new mxGeometry(0,0,100,40),"ellipse;whiteSpace=wrap;html=1;align=center;container=1;recursiveResize=0;treeFolding=1;");a.vertex=!0;return sb.createVertexTemplateFromCells([a], +this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(a);this.graph.isMouseDown=!0;mxEvent.consume(a)})))};var N=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){N.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.left=this.state.x+this.state.width+(40>this.state.width?10:0)+2+"px",this.moveHandle.style.top=this.state.y+this.state.height+(40>this.state.height?10:0)+2+"px")};var K=mxVertexHandler.prototype.destroy; +mxVertexHandler.prototype.destroy=function(a,b){K.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.parentNode.removeChild(this.moveHandle),this.moveHandle=null)}};if("undefined"!==typeof Sidebar){var c=Sidebar.prototype.createAdvancedShapes;Sidebar.prototype.createAdvancedShapes=function(){var a=c.apply(this,arguments),b=this.graph;return a.concat([this.addEntry("tree container",function(){var a=new mxCell("Tree Container",new mxGeometry(0,0,220,160),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;"); +a.vertex=!0;return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap central idea branch topic",function(){var a=new mxCell("Mindmap",new mxGeometry(0,0,420,126),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");a.vertex=!0;var b=new mxCell("Central Idea",new mxGeometry(160,60,100,40),"ellipse;whiteSpace=wrap;html=1;align=center;container=1;recursiveResize=0;treeFolding=1;");b.vertex=!0;var c=new mxCell("Topic",new mxGeometry(320, +40,80,20),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;");c.vertex=!0;var e=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");e.geometry.relative=!0;e.edge=!0;b.insertEdge(e,!0);c.insertEdge(e,!1);var d=new mxCell("Branch",new mxGeometry(320,80,72,26),"whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;"); +d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");f.geometry.relative=!0;f.edge=!0;b.insertEdge(f,!0);d.insertEdge(f,!1);var k=new mxCell("Topic",new mxGeometry(20,40,80,20),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;");k.vertex=!0;var m=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;"); +m.geometry.relative=!0;m.edge=!0;b.insertEdge(m,!0);k.insertEdge(m,!1);var g=new mxCell("Branch",new mxGeometry(20,80,72,26),"whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;");g.vertex=!0;var p=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;"); +p.geometry.relative=!0;p.edge=!0;b.insertEdge(p,!0);g.insertEdge(p,!1);a.insert(e);a.insert(f);a.insert(m);a.insert(p);a.insert(b);a.insert(c);a.insert(d);a.insert(k);a.insert(g);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap central idea",function(){var a=new mxCell("Central Idea",new mxGeometry(0,0,100,40),"ellipse;whiteSpace=wrap;html=1;align=center;container=1;recursiveResize=0;treeFolding=1;");a.vertex=!0;return sb.createVertexTemplateFromCells([a], a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap branch",function(){var a=new mxCell("Branch",new mxGeometry(0,0,80,20),"whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;");a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;"); b.geometry.setTerminalPoint(new mxPoint(-40,40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);return sb.createVertexTemplateFromCells([a,b],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap sub topic",function(){var a=new mxCell("Sub Topic",new mxGeometry(0,0,72,26),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;");a.vertex=!0;var b=new mxCell("",new mxGeometry(0, -0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");b.geometry.setTerminalPoint(new mxPoint(-40,40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);return sb.createVertexTemplateFromCells([a,b],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree orgchart organization division",function(){var a=new mxCell("Orgchart",new mxGeometry(0,0,280,220),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");a.vertex=!0;var d=new mxCell("Organization", -new mxGeometry(80,40,120,60),"whiteSpace=wrap;html=1;align=center;treeFolding=1;container=1;recursiveResize=0;");b.setAttributeForCell(d,"treeRoot","1");d.vertex=!0;var f=new mxCell("Division",new mxGeometry(20,140,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;");f.vertex=!0;var c=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");c.geometry.relative=!0;c.edge=!0; -d.insertEdge(c,!0);f.insertEdge(c,!1);var g=new mxCell("Division",new mxGeometry(160,140,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;");g.vertex=!0;var h=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");h.geometry.relative=!0;h.edge=!0;d.insertEdge(h,!0);g.insertEdge(h,!1);a.insert(c);a.insert(h);a.insert(d);a.insert(f);a.insert(g);return sb.createVertexTemplateFromCells([a], +0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");b.geometry.setTerminalPoint(new mxPoint(-40,40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);return sb.createVertexTemplateFromCells([a,b],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree orgchart organization division",function(){var a=new mxCell("Orgchart",new mxGeometry(0,0,280,220),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");a.vertex=!0;var c=new mxCell("Organization", +new mxGeometry(80,40,120,60),"whiteSpace=wrap;html=1;align=center;treeFolding=1;container=1;recursiveResize=0;");b.setAttributeForCell(c,"treeRoot","1");c.vertex=!0;var e=new mxCell("Division",new mxGeometry(20,140,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;");e.vertex=!0;var k=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");k.geometry.relative=!0;k.edge=!0; +c.insertEdge(k,!0);e.insertEdge(k,!1);var d=new mxCell("Division",new mxGeometry(160,140,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;");d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");f.geometry.relative=!0;f.edge=!0;c.insertEdge(f,!0);d.insertEdge(f,!1);a.insert(k);a.insert(f);a.insert(c);a.insert(e);a.insert(d);return sb.createVertexTemplateFromCells([a], a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree root",function(){var a=new mxCell("Organization",new mxGeometry(0,0,120,60),"whiteSpace=wrap;html=1;align=center;treeFolding=1;container=1;recursiveResize=0;");b.setAttributeForCell(a,"treeRoot","1");a.vertex=!0;return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree division",function(){var a=new mxCell("Division",new mxGeometry(20,40,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;"); a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");b.geometry.setTerminalPoint(new mxPoint(0,0),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);return sb.createVertexTemplateFromCells([a,b],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree sub sections",function(){var a=new mxCell("Sub Section",new mxGeometry(0,0,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;"); -a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");b.geometry.setTerminalPoint(new mxPoint(110,-40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);var d=new mxCell("Sub Section",new mxGeometry(120,0,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;");d.vertex=!0;var c=new mxCell("",new mxGeometry(0, -0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");c.geometry.setTerminalPoint(new mxPoint(110,-40),!0);c.geometry.relative=!0;c.edge=!0;d.insertEdge(c,!1);return sb.createVertexTemplateFromCells([b,c,a,d],220,60,"Sub Sections")})])}}})();EditorUi.initMinimalTheme=function(){function a(a){var b=a.editor.graph;b.popupMenuHandler.hideMenu();null==a.formatWindow?(a.formatWindow=new k(a,mxResources.get("format"),Math.max(20,a.diagramContainer.clientWidth-240-12),56,240,Math.min(566,b.container.clientHeight-10),function(b){b=a.createFormat(b);b.init();return b}),a.formatWindow.window.minimumSize=new mxRectangle(0,0,240,80),a.formatWindow.window.setVisible(!0)):a.formatWindow.window.setVisible(!a.formatWindow.window.isVisible());a.formatWindow.window.isVisible()&& -a.formatWindow.window.fit()}function b(a){var b=a.editor.graph;b.popupMenuHandler.hideMenu();new mxRectangle;if(null==a.sidebarWindow){var c=Math.min(b.container.clientWidth-10,266);a.sidebarWindow=new k(a,mxResources.get("shapes"),10,56,c-6,Math.min(650,b.container.clientHeight-30),function(b){function c(c,d){var g=a.menus.get(c),h=f.addMenu(d,mxUtils.bind(this,function(){g.funct.apply(this,arguments)}));h.style.cssText="position:absolute;border-top:1px solid lightgray;width:50%;height:24px;bottom:0px;text-align:center;cursor:pointer;padding:6px 0 0 0;cusor:pointer;"; -h.className="geTitle";b.appendChild(h);return h}var d=document.createElement("div");d.style.cssText="position:absolute;left:0;right:0;border-top:1px solid lightgray;height:24px;bottom:31px;text-align:center;cursor:pointer;padding:6px 0 0 0;";d.className="geTitle";d.innerHTML='<span style="font-size:18px;margin-right:5px;">+</span>';mxUtils.write(d,mxResources.get("moreShapes"));b.appendChild(d);mxEvent.addListener(d,"click",function(){a.actions.get("shapes").funct()});var f=new Menubar(a,b);if(!Editor.enableCustomLibraries|| -"1"==urlParams.embed&&"1"!=urlParams.libraries)d.style.bottom="0";else if(null!=a.actions.get("newLibrary")){d=document.createElement("div");d.style.cssText="position:absolute;left:0px;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;";d.className="geTitle";var g=document.createElement("span");g.style.cssText="position:relative;top:6px;";mxUtils.write(g,mxResources.get("newLibrary"));d.appendChild(g);b.appendChild(d);mxEvent.addListener(d, -"click",a.actions.get("newLibrary").funct);d=document.createElement("div");d.style.cssText="position:absolute;left:50%;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;border-left: 1px solid lightgray;";d.className="geTitle";g=document.createElement("span");g.style.cssText="position:relative;top:6px;";mxUtils.write(g,mxResources.get("openLibrary"));d.appendChild(g);b.appendChild(d);mxEvent.addListener(d,"click",a.actions.get("openLibrary").funct)}else d= -c("newLibrary",mxResources.get("newLibrary")),d.style.left="0",d=c("openLibraryFrom",mxResources.get("openLibraryFrom")),d.style.borderLeft="1px solid lightgray",d.style.left="50%";b.appendChild(a.sidebar.container);b.style.overflow="hidden";return b});a.sidebarWindow.window.minimumSize=new mxRectangle(0,0,90,90);a.sidebarWindow.window.setVisible(!0);a.getLocalData("sidebar",function(b){a.sidebar.showEntries(b,null,!0)});a.restoreLibraries()}else a.sidebarWindow.window.setVisible(!a.sidebarWindow.window.isVisible()); -a.sidebarWindow.window.isVisible()&&a.sidebarWindow.window.fit()}if("1"==urlParams.lightbox||"0"==urlParams.chrome||"undefined"===typeof window.Format||"undefined"===typeof window.Menus)window.uiTheme=null;else{var f=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;try{var d=document.createElement("style");d.type="text/css";d.innerHTML="* { -webkit-font-smoothing: antialiased; }html body .mxWindow button.geBtn { font-size:12px !important; margin-left: 0; }html body table.mxWindow td.mxWindowPane div.mxWindowPane * { font-size:9pt; }html body div.diagramContainer button, html body button.geBtn { font-size:14px; font-weight:700;border-radius: 5px; }html body button.geBtn:active { opacity: 0.6; }html body a.geMenuItem { opacity: 0.75; }html body a.geMenuItem[disabled] { opacity: 0.2; }html body a.geMenuItem[disabled]:active { opacity: 0.2; }html body div.geActivePage { opacity: 0.7; }html body a.geMenuItem:active { opacity: 0.2; }html body .geToolbarButton { opacity: 0.3; }html body .geToolbarButton:active { opacity: 0.15; }html body .geStatus:active { opacity: 0.5; }html table.mxPopupMenu tr.mxPopupMenuItemHover:active { opacity:0.7; }html body .geDialog input, html body .geToolbarContainer input, html body .mxWindow input {padding:2px;display:inline-block; }div.geDialog { border-radius: 5px; }html body div.geDialog button.geBigButton { color: #fff !important; }.mxWindow button, .geDialog select, .mxWindow select { display:inline-block; }html body .mxWindow .geColorBtn, html body .geDialog .geColorBtn { background: none; }html body div.diagramContainer button, html body .mxWindow button, html body .geDialog button { min-width: 0px; border-radius: 5px; color: #353535 !important; border-style: solid; border-width: 1px; border-color: rgb(216, 216, 216); }html body div.diagramContainer button:hover, html body .mxWindow button:hover, html body .geDialog button:hover { border-color: rgb(177, 177, 177); }html body div.diagramContainer button:active, html body .mxWindow button:active, html body .geDialog button:active { opacity: 0.6; }div.diagramContainer button.geBtn, .mxWindow button.geBtn, .geDialog button.geBtn { min-width:72px; font-weight: 600; background: none; }div.diagramContainer button.gePrimaryBtn, .mxWindow button.gePrimaryBtn, .geDialog button.gePrimaryBtn, html body .gePrimaryBtn { background: #29b6f2; color: #fff !important; border: none; box-shadow: none; }html body .gePrimaryBtn:hover { background: #29b6f2; border: none; box-shadow: inherit; }html body button.gePrimaryBtn:hover { background: #29b6f2; border: none; }.geBtn button { min-width:72px !important; }div.geToolbarContainer a.geButton { margin:2px; padding: 0 2px 4px 2px; } .geDialog, .mxWindow td.mxWindowPane *, div.geSprite, td.mxWindowTitle, .geDiagramContainer { box-sizing:content-box; }.mxWindow div button.geStyleButton { box-sizing: border-box; }table.mxWindow td.mxWindowPane button.geColorBtn { padding:0px; box-sizing: border-box; }td.mxWindowPane .geSidebarContainer button { padding:2px 0 2px 0; box-sizing: border-box; }html body .geMenuItem { font-size:14px; text-decoration: none; font-weight: normal; padding: 6px 10px 6px 10px; border: none; border-radius: 5px; color: #353535; box-shadow: inset 0 0 0 1px rgba(0,0,0,.11), inset 0 -1px 0 0 rgba(0,0,0,.08), 0 1px 2px 0 rgba(0,0,0,.04); }.geToolbarContainer { background:#fff !important; }div.mxWindow .geSidebarContainer .geTitle { background-color:#fdfdfd; }div.mxWindow .geSidebarContainer .geTitle:hover { background-color:#fafafa; }div.geSidebar { background-color: #fff !important;}div.mxWindow td.mxWindowPane button { background-image: none; float: none; }td.mxWindowTitle { height: 22px !important; background: none !important; font-size: 13px !important; text-align:center !important; border-bottom:1px solid lightgray; }div.mxWindow, div.mxWindowTitle { background-image: none !important; background-color:#fff !important; }div.mxWindow { border-radius:5px; box-shadow: 0px 0px 2px #C0C0C0 !important;}div.mxWindow * { font-family: inherit !important; }html div.geVerticalHandle { position:absolute;bottom:0px;left:50%;cursor:row-resize;width:11px;height:11px;background:white;margin-bottom:-6px; margin-left:-6px; border: none; border-radius: 6px; box-shadow: inset 0 0 0 1px rgba(0,0,0,.11), inset 0 -1px 0 0 rgba(0,0,0,.08), 0 1px 2px 0 rgba(0,0,0,.04); }html div.geInactivePage { background: rgb(249, 249, 249) !important; color:lightgray !important; } html div.geActivePage { background: white !important;color: #353535 !important; } html div.mxRubberband { border:1px solid; border-color: #29b6f2 !important; background:rgba(41,182,242,0.5) !important; } html body div.mxPopupMenu { border-radius:5px; border:1px solid #c0c0c0; padding:5px 0 5px 0; box-shadow: 0px 4px 17px -4px rgba(96,96,96,1); } html table.mxPopupMenu td.mxPopupMenuItem { color: #353535; font-size: 14px; padding-top: 4px; padding-bottom: 4px; }html table.mxPopupMenu tr.mxPopupMenuItemHover { background-color: #29b6f2; }html tr.mxPopupMenuItemHover td.mxPopupMenuItem, html tr.mxPopupMenuItemHover td.mxPopupMenuItem span { color: #fff !important; }html tr.mxPopupMenuItem, html td.mxPopupMenuItem { transition-property: none !important; }html table.mxPopupMenu hr { height: 2px; background-color: rgba(0,0,0,.07); margin: 5px 0; }"+ -(mxClient.IS_IOS?"html input[type=checkbox], html input[type=radio] { height:12px; }":"");document.getElementsByTagName("head")[0].appendChild(d)}catch(r){}var k=function(a,b,c,d,f,g,h){a=document.createElement("div");a.className="geSidebarContainer";a.style.position="absolute";a.style.width="100%";a.style.height="100%";a.style.border="1px solid whiteSmoke";a.style.overflowX="hidden";a.style.overflowY="auto";h(a);this.window=new mxWindow(b,a,c,d,f,g,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1); -this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.setLocation=function(a,b){var c=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)}};Editor.checkmarkImage= -Graph.createSvgImage(22,18,'<path transform="translate(4 0)" d="M7.181,15.007a1,1,0,0,1-.793-0.391L3.222,10.5A1,1,0,1,1,4.808,9.274L7.132,12.3l6.044-8.86A1,1,0,1,1,14.83,4.569l-6.823,10a1,1,0,0,1-.8.437H7.181Z" fill="#29b6f2"/>').src;mxWindow.prototype.closeImage=Graph.createSvgImage(18,10,'<path d="M 5 1 L 13 9 M 13 1 L 5 9" stroke="#C0C0C0" stroke-width="2"/>').src;mxWindow.prototype.minimizeImage=Graph.createSvgImage(14,10,'<path d="M 3 7 L 7 3 L 11 7" stroke="#C0C0C0" stroke-width="2" fill="#ffffff"/>').src; -mxWindow.prototype.normalizeImage=Graph.createSvgImage(14,10,'<path d="M 3 3 L 7 7 L 11 3" stroke="#C0C0C0" stroke-width="2" fill="#ffffff"/>').src;mxConstraintHandler.prototype.pointImage=Graph.createSvgImage(5,5,'<path d="m 0 0 L 5 5 M 0 5 L 5 0" stroke="#29b6f2"/>');mxOutline.prototype.sizerImage=null;mxConstants.VERTEX_SELECTION_COLOR="#C0C0C0";mxConstants.EDGE_SELECTION_COLOR="#C0C0C0";mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff";mxConstants.DEFAULT_VALID_COLOR="#29b6f2";mxConstants.GUIDE_COLOR= -"#C0C0C0";mxConstants.HIGHLIGHT_STROKEWIDTH=5;mxConstants.HIGHLIGHT_OPACITY=35;mxConstants.OUTLINE_COLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_FILLCOLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_STROKECOLOR="#fff";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity="0.4";Graph.prototype.svgShadowSize="0.6";Graph.prototype.svgShadowBlur="1.2";Format.prototype.inactiveTabBackgroundColor="#f0f0f0";mxGraphHandler.prototype.previewColor="#C0C0C0";mxRubberband.prototype.defaultOpacity=50; -HoverIcons.prototype.inactiveOpacity=25;Format.prototype.showCloseButton=!1;EditorUi.prototype.closableScratchpad=!1;EditorUi.prototype.toolbarHeight=46;EditorUi.prototype.footerHeight=0;Graph.prototype.editAfterInsert=!0;Editor.prototype.isChromelessView=function(){return!1};Graph.prototype.isLightboxView=function(){return!1};var n=EditorUi.prototype.updateTabContainer;EditorUi.prototype.updateTabContainer=function(){null!=this.tabContainer&&(this.tabContainer.style.right="70px",this.diagramContainer.style.bottom= -"30px");n.apply(this,arguments)};var p=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){p.apply(this,arguments);this.menus.get("save").setEnabled(null!=this.getCurrentFile()||"1"==urlParams.embed)};var q=Menus.prototype.addShortcut;Menus.prototype.addShortcut=function(a,b){null!=b.shortcut&&900>f&&!mxClient.IS_IOS?a.firstChild.nextSibling.setAttribute("title",b.shortcut):q.apply(this,arguments)};var w=App.prototype.updateUserElement;App.prototype.updateUserElement= -function(){w.apply(this,arguments);if(null!=this.userElement){var a=this.userElement;a.style.cssText="display:inline-block;position:relative;margin-right:4px;cursor:pointer;";a.className="geToolbarButton";a.innerHTML="";a.style.backgroundImage="url("+Editor.userImage+")";a.style.backgroundPosition="center center";a.style.backgroundRepeat="no-repeat";a.style.backgroundSize="24px 24px";a.style.height="24px";a.style.width="24px";a.style.cssFloat="right";a.setAttribute("title",mxResources.get("changeUser"))}}; -var c=App.prototype.updateButtonContainer;App.prototype.updateButtonContainer=function(){c.apply(this,arguments);if(null!=this.shareButton){var a=this.shareButton;a.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;cursor:pointer;";a.className="geToolbarButton";a.innerHTML="";a.style.backgroundImage="url("+Editor.shareImage+")";a.style.backgroundPosition="center center";a.style.backgroundRepeat="no-repeat";a.style.backgroundSize="24px 24px";a.style.height= -"24px";a.style.width="24px"}null!=this.syncButton&&(a=this.syncButton,a.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;cursor:pointer;",a.className="geToolbarButton",a.innerHTML="",a.style.backgroundImage="url("+Editor.syncImage+")",a.style.backgroundPosition="center center",a.style.backgroundRepeat="no-repeat",a.style.backgroundSize="24px 24px",a.style.height="24px",a.style.width="24px")};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.buttonContainer){var a= -document.createElement("div");a.style.display="inline-block";a.style.position="relative";a.style.marginTop="2px";var b=document.createElement("button");mxUtils.write(b,mxResources.get("save"));b.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)");b.className="1"==urlParams.saveAndExit?"geMenuItem":"geMenuItem gePrimaryBtn";b.style.fontSize="14px";b.style.padding="6px";b.style.borderRadius="3px";b.style.marginLeft="8px";b.style.cursor="pointer";mxEvent.addListener(b,"click",mxUtils.bind(this, -function(){this.actions.get("save").funct()}));a.appendChild(b);"1"==urlParams.saveAndExit&&(b=document.createElement("a"),mxUtils.write(b,mxResources.get("saveAndExit")),b.setAttribute("title",mxResources.get("saveAndExit")),b.className="geMenuItem gePrimaryBtn",b.style.fontSize="14px",b.style.marginLeft="6px",b.style.padding="6px",b.style.cursor="pointer",mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b));b=document.createElement("a"); -mxUtils.write(b,mxResources.get("exit"));b.setAttribute("title",mxResources.get("exit"));b.className="geMenuItem";b.style.fontSize="14px";b.style.marginLeft="6px";b.style.padding="6px";b.style.cursor="pointer";mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()}));a.appendChild(b);this.buttonContainer.appendChild(a);this.buttonContainer.style.top="6px"}};Sidebar.prototype.getTooltipOffset=function(){var a=mxUtils.getOffset(this.editorUi.sidebarWindow.window.div); -a.y+=40;return a};var g=Menus.prototype.createPopupMenu;Menus.prototype.createPopupMenu=function(a,b,c){var d=this.editorUi.editor.graph;a.smartSeparators=!0;g.apply(this,arguments);mxUtils.bind(this,function(a,b){var c=new FilenameDialog(this.editorUi,a,mxResources.get("apply"),function(a){b(parseFloat(a))},mxResources.get("spacing"));this.editorUi.showDialog(c.container,300,80,!0,!0);c.init()});1==d.getSelectionCount()?(this.addMenuItems(a,["editTooltip","-","editStyle","editGeometry","-"],null, -c),d.isCellFoldable(d.getSelectionCell())&&this.addMenuItems(a,d.isCellCollapsed(b)?["expand"]:["collapse"],null,c),this.addMenuItems(a,["collapsible","-","lockUnlock","enterGroup"],null,c),a.addSeparator(),this.addSubmenu("layout",a)):d.isSelectionEmpty()&&d.isEnabled()?(a.addSeparator(),this.addMenuItems(a,["editData"],null,c),a.addSeparator(),this.addSubmenu("layout",a),this.addSubmenu("view",a,null,mxResources.get("options")),this.addMenuItems(a,["-","exitGroup"],null,c)):d.isEnabled()&&this.addMenuItems(a, -["-","lockUnlock"],null,c)};EditorUi.prototype.toggleFormatPanel=function(b){null!=this.formatWindow?this.formatWindow.window.setVisible(b?!1:!this.formatWindow.window.isVisible()):a(this)};DiagramFormatPanel.prototype.isMathOptionVisible=function(){return!0};var h=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){null!=this.sidebarWindow&&(this.sidebarWindow.window.setVisible(!1),this.sidebarWindow.window.destroy(),this.sidebarWindow=null);null!=this.formatWindow&&(this.formatWindow.window.setVisible(!1), -this.formatWindow.window.destroy(),this.formatWindow=null);null!=this.actions.outlineWindow&&(this.actions.outlineWindow.window.setVisible(!1),this.actions.outlineWindow.window.destroy(),this.actions.outlineWindow=null);null!=this.actions.layersWindow&&(this.actions.layersWindow.window.setVisible(!1),this.actions.layersWindow.window.destroy(),this.actions.layersWindow=null);null!=this.menus.tagsWindow&&(this.menus.tagsWindow.window.setVisible(!1),this.menus.tagsWindow.window.destroy(),this.menus.tagsWindow= -null);null!=this.menus.findWindow&&(this.menus.findWindow.window.setVisible(!1),this.menus.findWindow.window.destroy(),this.menus.findWindow=null);h.apply(this,arguments)};var l=EditorUi.prototype.setGraphEnabled;EditorUi.prototype.setGraphEnabled=function(a){l.apply(this,arguments);a||(null!=this.sidebarWindow&&this.sidebarWindow.window.setVisible(!1),null!=this.formatWindow&&this.formatWindow.window.setVisible(!1))};EditorUi.prototype.chromelessWindowResize=function(){};var t=Menus.prototype.init; -Menus.prototype.init=function(){t.apply(this,arguments);var c=this.editorUi,d=c.editor.graph;c.actions.get("editDiagram").label=mxResources.get("formatXml")+"...";c.actions.get("createShape").label=mxResources.get("shape")+"...";c.actions.get("outline").label=mxResources.get("outline")+"...";c.actions.get("layers").label=mxResources.get("layers")+"...";c.actions.put("importFile",new Action("File...",function(){d.popupMenuHandler.hideMenu();var a=document.createElement("input");a.setAttribute("type", -"file");mxEvent.addListener(a,"change",function(){null!=a.files&&c.importFiles(a.files,null,null,c.maxImageSize)});a.click()}));c.actions.put("importCsv",new Action(mxResources.get("csv")+"...",function(){d.popupMenuHandler.hideMenu();c.showImportCsvDialog()}));c.actions.put("importText",new Action(mxResources.get("text")+"...",function(){var a=new ParseDialog(c,"Insert from Text");c.showDialog(a.container,620,420,!0,!1);a.init()}));c.actions.put("formatSql",new Action(mxResources.get("formatSql")+ -"...",function(){var a=new ParseDialog(c,"Insert from Text","formatSql");c.showDialog(a.container,620,420,!0,!1);a.init()}));c.actions.put("toggleShapes",new Action(mxResources.get("shapes")+"...",function(){b(c)}));c.actions.put("toggleFormat",new Action(mxResources.get("format")+"...",function(){a(c)}));EditorUi.enablePlantUml&&!c.isOffline()&&c.actions.put("plantUml",new Action(mxResources.get("plantUml")+"...",function(){var a=new ParseDialog(c,"Insert from Text","plantUml");c.showDialog(a.container, -620,420,!0,!1);a.init()}));this.put("diagram",new Menu(mxUtils.bind(this,function(a,b){var d=c.getCurrentFile();c.menus.addSubmenu("extras",a,b,mxResources.get("preferences"));a.addSeparator(b);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?(c.menus.addMenuItems(a,["new","open","-"],b),EditorUi.isElectronApp&&c.menus.addMenuItems(a,["synchronize","-"],b),c.menus.addMenuItems(a,["save","saveAs","-"],b)):"1"==urlParams.embed?(c.menus.addMenuItems(a,["-","save"],b),"1"==urlParams.saveAndExit&&c.menus.addMenuItems(a, -["saveAndExit"],b),a.addSeparator(b)):(c.menus.addMenuItems(a,["new"],b),c.menus.addSubmenu("openFrom",a,b),isLocalStorage&&this.addSubmenu("openRecent",a,b),a.addSeparator(b),null!=d&&d.constructor==DriveFile&&c.menus.addMenuItems(a,["share"],b),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null==d||d.constructor==LocalFile||c.menus.addMenuItems(a,["synchronize"],b),a.addSeparator(b),c.menus.addSubmenu("save",a,b));c.menus.addSubmenu("exportAs",a,b);c.menus.addMenuItems(a,"- outline layers - find tags".split(" "), -b);mxClient.IS_IOS&&navigator.standalone||c.menus.addMenuItems(a,["-","print","-"],b);c.menus.addSubmenu("help",a,b);"1"==urlParams.embed?c.menus.addMenuItems(a,["-","exit"],b):c.menus.addMenuItems(a,["-","close"])})));this.put("save",new Menu(mxUtils.bind(this,function(a,b){var d=c.getCurrentFile();null!=d&&d.constructor==DriveFile?c.menus.addMenuItems(a,["save","makeCopy","-","rename","moveToFolder"],b):(c.menus.addMenuItems(a,["save","saveAs","-","rename"],b),c.isOfflineApp()?navigator.onLine&& -"1"!=urlParams.stealth&&this.addMenuItems(a,["upload"],b):c.menus.addMenuItems(a,["makeCopy"],b));c.menus.addMenuItems(a,["-","autosave"],b);null!=d&&d.isRevisionHistorySupported()&&c.menus.addMenuItems(a,["-","revisionHistory"],b)})));var f=this.get("exportAs");this.put("exportAs",new Menu(mxUtils.bind(this,function(a,b){f.funct(a,b);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||c.menus.addMenuItems(a,["publishLink"],b);a.addSeparator(b);c.menus.addSubmenu("embed",a,b)})));var g=this.get("language"); -this.put("extras",new Menu(mxUtils.bind(this,function(a,b){"1"!=urlParams.embed&&c.menus.addSubmenu("theme",a,b);null!=g&&c.menus.addSubmenu("language",a,b);a.addSeparator(b);c.menus.addMenuItems(a,["scrollbars","tooltips"],b);"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&c.menus.addMenuItems(a,["-","search","scratchpad","-","showStartScreen"],b);!c.isOfflineApp()&&isLocalStorage&&(a.addSeparator(b),c.menus.addMenuItem(a,"plugins",b));a.addSeparator(b)})));this.put("insertAdvanced", -new Menu(mxUtils.bind(this,function(a,b){c.menus.addMenuItems(a,"importText plantUml - formatSql importCsv - createShape editDiagram".split(" "),b)})));mxResources.parse("insertLayout="+mxResources.get("layout"));mxResources.parse("insertAdvanced="+mxResources.get("advanced"));this.put("insert",new Menu(mxUtils.bind(this,function(a,b){c.menus.addMenuItems(a,"insertRectangle insertEllipse insertRhombus - insertText insertLink - insertImage".split(" "),b);c.insertTemplateEnabled&&!c.isOffline()&&c.menus.addMenuItems(a, -["insertTemplate"],b);a.addSeparator(b);c.menus.addSubmenu("insertLayout",a,b);c.menus.addSubmenu("insertAdvanced",a,b);a.addSeparator(b);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?c.menus.addMenuItems(a,["import"],b):c.menus.addSubmenu("importFrom",a,b)})));var h="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),k=function(a,b,d,f){a.addItem(d,null,mxUtils.bind(this,function(){var a=new CreateGraphDialog(c,d,f);c.showDialog(a.container,620,420, -!0,!1);a.init()}),b)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(a,b){for(var c=0;c<h.length;c++)"-"==h[c]?a.addSeparator(b):k(a,b,mxResources.get(h[c])+"...",h[c])})));this.put("view",new Menu(mxUtils.bind(this,function(a,b){c.menus.addMenuItems(a,"grid guides - connectionArrows connectionPoints -".split(" "),b);if("undefined"!==typeof MathJax){var d=c.menus.addMenuItem(a,"mathematicalTypesetting",b);c.menus.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000032875")}c.menus.addMenuItems(a, -["copyConnect","collapseExpand","-","pageScale"],b)})))};var m=EditorUi.prototype.init;EditorUi.prototype.init=function(){function a(a,b,c){var d=h.menus.get(a),f=p.addMenu(mxResources.get(a),mxUtils.bind(this,function(){d.funct.apply(this,arguments)}),n);f.className="geMenuItem";f.style.display="inline-block";f.style.boxSizing="border-box";f.style.top="6px";f.style.marginRight="6px";f.style.height="30px";f.style.paddingTop="6px";f.style.paddingBottom="6px";f.style.cursor="pointer";f.setAttribute("title", -mxResources.get(a));h.menus.menuCreated(d,f,"geMenuItem");null!=c?(f.style.backgroundImage="url("+c+")",f.style.backgroundPosition="center center",f.style.backgroundRepeat="no-repeat",f.style.backgroundSize="24px 24px",f.style.width="34px",f.innerHTML=""):b||(f.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",f.style.backgroundPosition="right 6px center",f.style.backgroundRepeat="no-repeat",f.style.paddingRight="22px");return f}function b(a,b,c,d,f,g){var k=document.createElement("a"); -k.className="geMenuItem";k.style.display="inline-block";k.style.boxSizing="border-box";k.style.height="30px";k.style.padding="6px";k.style.position="relative";k.style.verticalAlign="top";k.style.top="0px";null!=h.statusContainer?l.insertBefore(k,h.statusContainer):l.appendChild(k);null!=g?(k.style.backgroundImage="url("+g+")",k.style.backgroundPosition="center center",k.style.backgroundRepeat="no-repeat",k.style.backgroundSize="24px 24px",k.style.width="34px"):mxUtils.write(k,a);mxEvent.addListener(k, -mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(k,"click",function(a){"disabled"!=k.getAttribute("disabled")&&b(a);mxEvent.consume(a)});null==c&&(k.style.marginRight="4px");null!=d&&k.setAttribute("title",d);null!=f&&(a=function(){f.isEnabled()?(k.removeAttribute("disabled"),k.style.cursor="pointer"):(k.setAttribute("disabled","disabled"),k.style.cursor="default")},f.addListener("stateChanged",a),a());return k}function c(a,b){var c= -document.createElement("div");c.className="geMenuItem";c.style.display="inline-block";c.style.verticalAlign="top";c.style.marginRight="6px";c.style.padding="0 4px 0 4px";c.style.height="30px";c.style.position="relative";c.style.top="0px";for(var d=0;d<a.length;d++)null!=a[d]&&(a[d].style.margin="0px",a[d].style.boxShadow="none",c.appendChild(a[d]));null!=b&&mxUtils.setOpacity(c,b);null!=h.statusContainer?l.insertBefore(c,h.statusContainer):l.appendChild(c);return c}function d(){for(var d=l.firstChild;null!= -d;){var g=d.nextSibling;"geMenuItem"!=d.className&&"geItem"!=d.className||d.parentNode.removeChild(d);d=g}n=l.firstChild;f=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;(d=1E3>f)||a("diagram");c([d?a("diagram",null,IMAGE_PATH+"/drawlogo.svg"):null,b(mxResources.get("shapes"),h.actions.get("toggleShapes").funct,null,mxResources.get("shapes"),h.actions.get("image"),d?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTMgMTN2OGg4di04aC04ek0zIDIxaDh2LThIM3Y4ek0zIDN2OGg4VjNIM3ptMTMuNjYtMS4zMUwxMSA3LjM0IDE2LjY2IDEzbDUuNjYtNS42Ni01LjY2LTUuNjV6Ii8+PC9zdmc+": -null),b(mxResources.get("format"),h.actions.get("toggleFormat").funct,null,mxResources.get("format")+" ("+h.actions.get("formatPanel").shortcut+")",h.actions.get("image"),d?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIgM2MtNC45NyAwLTkgNC4wMy05IDlzNC4wMyA5IDkgOWMuODMgMCAxLjUtLjY3IDEuNS0xLjUgMC0uMzktLjE1LS43NC0uMzktMS4wMS0uMjMtLjI2LS4zOC0uNjEtLjM4LS45OSAwLS44My42Ny0xLjUgMS41LTEuNUgxNmMyLjc2IDAgNS0yLjI0IDUtNSAwLTQuNDItNC4wMy04LTktOHptLTUuNSA5Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNS42NyA5IDYuNSA5IDggOS42NyA4IDEwLjUgNy4zMyAxMiA2LjUgMTJ6bTMtNEM4LjY3IDggOCA3LjMzIDggNi41UzguNjcgNSA5LjUgNXMxLjUuNjcgMS41IDEuNVMxMC4zMyA4IDkuNSA4em01IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxMy42NyA1IDE0LjUgNXMxLjUuNjcgMS41IDEuNVMxNS4zMyA4IDE0LjUgOHptMyA0Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTYuNjcgOSAxNy41IDlzMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41eiIvPjwvc3ZnPg==": -null)],d?60:null);g=a("insert",!0,d?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgMTNoLTZ2NmgtMnYtNkg1di0yaDZWNWgydjZoNnYyeiIvPjwvc3ZnPg==":null);c([g,b(mxResources.get("delete"),h.actions.get("delete").funct,null,mxResources.get("delete"),h.actions.get("delete"),d?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek0xOSA0aC0zLjVsLTEtMWgtNWwtMSAxSDV2MmgxNFY0eiIvPjwvc3ZnPg==": -null)],d?60:null);if(411<=f&&(g=h.actions.get("undo"),d=h.actions.get("redo"),g=b("",g.funct,null,mxResources.get("undo")+" ("+g.shortcut+")",g,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIuNSA4Yy0yLjY1IDAtNS4wNS45OS02LjkgMi42TDIgN3Y5aDlsLTMuNjItMy42MmMxLjM5LTEuMTYgMy4xNi0xLjg4IDUuMTItMS44OCAzLjU0IDAgNi41NSAyLjMxIDcuNiA1LjVsMi4zNy0uNzhDMjEuMDggMTEuMDMgMTcuMTUgOCAxMi41IDh6Ii8+PC9zdmc+"),d=b("", -d.funct,null,mxResources.get("redo")+" ("+d.shortcut+")",d,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTguNCAxMC42QzE2LjU1IDguOTkgMTQuMTUgOCAxMS41IDhjLTQuNjUgMC04LjU4IDMuMDMtOS45NiA3LjIyTDMuOSAxNmMxLjA1LTMuMTkgNC4wNS01LjUgNy42LTUuNSAxLjk1IDAgMy43My43MiA1LjEyIDEuODhMMTMgMTZoOVY3bC0zLjYgMy42eiIvPjwvc3ZnPg=="),c([g,d],60),480<=f)){var d=h.actions.get("zoomIn"),g=h.actions.get("zoomOut"),m=h.actions.get("resetView"); -c([b("",function(){k.popupMenuHandler.hideMenu();var a=k.view.scale,b=k.view.translate.x,c=k.view.translate.y;h.actions.get("resetView").funct();1E-5>Math.abs(a-k.view.scale)&&b==k.view.translate.x&&c==k.view.translate.y&&h.actions.get(k.pageVisible?"fitPage":"fitWindow").funct()},!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",m,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMyA1djRoMlY1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnptMiAxMEgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6bTE0IDRoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6bTAtMTZoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yeiIvPjwvc3ZnPg=="), -640<=f?b("",d.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",d,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHptMi41LTRoLTJ2Mkg5di0ySDdWOWgyVjdoMXYyaDJ2MXoiLz48L3N2Zz4="): -null,640<=f?b("",g.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",g,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpNNyA5aDV2MUg3eiIvPjwvc3ZnPg=="): -null],60)}d=h.menus.get("language");null!=d&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=f?(null==O&&(g=p.addMenu("",d.funct),g.setAttribute("title",mxResources.get("language")),g.className="geToolbarButton",g.style.backgroundImage="url("+Editor.globeImage+")",g.style.backgroundPosition="center center",g.style.backgroundRepeat="no-repeat",g.style.backgroundSize="24px 24px",g.style.position="absolute",g.style.height="24px",g.style.width="24px",g.style.zIndex="1",g.style.top="11px",g.style.right= -"8px",g.style.cursor="pointer",l.appendChild(g),O=g),h.buttonContainer.style.paddingRight="34px"):(h.buttonContainer.style.paddingRight="4px",null!=O&&(O.parentNode.removeChild(O),O=null))}m.apply(this,arguments);var g=document.createElement("div");g.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";g.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(g);var h=this,k=h.editor.graph;h.toolbar=this.createToolbar(h.createDiv("geToolbar")); -h.defaultLibraryName=mxResources.get("untitledLibrary");var l=document.createElement("div");l.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;border-bottom:1px solid lightgray;background-color:#ffffff;text-align:left;white-space:nowrap;";var n=null,p=new Menubar(h,l);h.statusContainer=h.createStatusContainer();h.statusContainer.style.position="relative";h.statusContainer.style.maxWidth="";h.statusContainer.style.marginTop="7px";h.statusContainer.style.marginLeft= -"6px";h.statusContainer.style.color="gray";h.statusContainer.style.cursor="default";h.editor.addListener("statusChanged",mxUtils.bind(this,function(){h.setStatusText(h.editor.getStatus())}));var q=h.descriptorChanged;h.descriptorChanged=function(){q.apply(this,arguments);var a=h.getCurrentFile();if(null!=a&&null!=a.getTitle()){var b=a.getMode();"google"==b?b="googleDrive":"github"==b?b="gitHub":"onedrive"==b&&(b="oneDrive");b=mxResources.get(b);l.setAttribute("title",a.getTitle()+(null!=b?" ("+b+ -")":""))}else l.removeAttribute("title")};h.setStatusText(h.editor.getStatus());l.appendChild(h.statusContainer);h.buttonContainer=document.createElement("div");h.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";l.appendChild(h.buttonContainer);h.menubarContainer=h.buttonContainer;h.tabContainer=document.createElement("div");h.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;border-bottom:1px solid lightgray;background-color:#ffffff;border-top:1px solid lightgray;margin-bottom:-2px;visibility:hidden;"; -var g=h.diagramContainer.parentNode,t=document.createElement("div");t.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";h.diagramContainer.style.top="47px";var w=h.menus.get("viewZoom");if(null!=w){this.tabContainer.style.right="70px";var B=p.addMenu("100%",w.funct);B.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");B.style.whiteSpace="nowrap";B.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";B.style.backgroundPosition="right 6px center"; -B.style.backgroundRepeat="no-repeat";B.style.backgroundColor="#ffffff";B.style.paddingRight="10px";B.style.display="block";B.style.position="absolute";B.style.textDecoration="none";B.style.textDecoration="none";B.style.right="0px";B.style.bottom="0px";B.style.overflow="hidden";B.style.visibility="hidden";B.style.textAlign="center";B.style.color="#000";B.style.fontSize="12px";B.style.color="#707070";B.style.width="59px";B.style.borderTop="1px solid lightgray";B.style.borderLeft="1px solid lightgray"; -B.style.height=parseInt(h.tabContainer.style.height)-1+"px";B.style.lineHeight=parseInt(h.tabContainer.style.height)+1+"px";t.appendChild(B);w=mxUtils.bind(this,function(){B.innerHTML=Math.round(100*h.editor.graph.view.scale)+"%"});h.editor.graph.view.addListener(mxEvent.EVENT_SCALE,w);h.editor.addListener("resetGraphView",w);h.editor.addListener("pageSelected",w);var K=h.setGraphEnabled;h.setGraphEnabled=function(){K.apply(this,arguments);null!=this.tabContainer&&(B.style.visibility=this.tabContainer.style.visibility, -this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?"30px":"0px")}}t.appendChild(h.tabContainer);t.appendChild(l);t.appendChild(h.diagramContainer);g.appendChild(t);h.updateTabContainer();var O=null;d();mxEvent.addListener(window,"resize",function(){d();null!=h.sidebarWindow&&h.sidebarWindow.window.fit();null!=h.formatWindow&&h.formatWindow.window.fit();null!=h.actions.outlineWindow&&h.actions.outlineWindow.window.fit();null!=h.actions.layersWindow&&h.actions.layersWindow.window.fit(); -null!=h.menus.tagsWindow&&h.menus.tagsWindow.window.fit();null!=h.menus.findWindow&&h.menus.findWindow.window.fit()})}}};(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var b=EditorUi.initTheme;EditorUi.initTheme=function(){b.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();mxResources.parse("# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*\n# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE\naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\naddedFile=Added {1}\naddImages=Add Images\naddImageUrl=Add Image URL\naddLayer=Add Layer\naddProperty=Add Property\naddress=Address\naddToExistingDrawing=Add to Existing Drawing\naddWaypoint=Add Waypoint\nadjustTo=Adjust to\nadvanced=Advanced\nalign=Align\nalignment=Alignment\nallChangesLost=All changes will be lost!\nallPages=All Pages\nallProjects=All Projects\nallSpaces=All Spaces\nallTags=All Tags\nanchor=Anchor\nandroid=Android\nangle=Angle\narc=Arc\nareYouSure=Are you sure?\nensureDataSaved=Please ensure your data is saved before closing.\nallChangesSaved=All changes saved\nallChangesSavedInDrive=All changes saved in Drive\nallowPopups=Allow pop-ups to avoid this dialog.\nallowRelativeUrl=Allow relative URL\nalreadyConnected=Nodes already connected\napply=Apply\narchiMate21=ArchiMate 2.1\narrange=Arrange\narrow=Arrow\narrows=Arrows\nasNew=As New\natlas=Atlas\nauthor=Author\nauthorizationRequired=Authorization required\nauthorizeThisAppIn=Authorize this app in {1}:\nauthorize=Authorize\nauthorizing=Authorizing\nautomatic=Automatic\nautosave=Autosave\nautosize=Autosize\nattachments=Attachments\naws=AWS\naws3d=AWS 3D\nazure=Azure\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Borderwidth\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\nbrowser=Browser\nbulletedList=Bulleted List\nbusiness=Business\nbusy=Operation in progress\ncabinets=Cabinets\ncancel=Cancel\ncenter=Center\ncannotLoad=Load attempts failed. Please try again later.\ncannotLogin=Log in attempts failed. Please try again later.\ncannotOpenFile=Cannot open file\nchange=Change\nchangeOrientation=Change Orientation\nchangeUser=Change user\nchangesNotSaved=Changes have not been saved\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompressed=Compressed\ncommitMessage=Commit Message\ncsv=CSV\ndark=Dark\ndraftFound=A draft for '{1}' has been found. Load it into the editor or discard it to continue.\ndragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?\ndropboxCharsNotAllowed=The following characters are not allowed: / : ? * \" |\ncheck=Check\nchecksum=Checksum\ncircle=Circle\ncisco=Cisco\nclassic=Classic\nclearDefaultStyle=Clear Default Style\nclearWaypoints=Clear Waypoints\nclipart=Clipart\nclose=Close\ncollaborator=Collaborator\ncollaborators=Collaborators\ncollapse=Collapse\ncollapseExpand=Collapse/Expand\ncollapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size\ncollapsible=Collapsible\ncomic=Comic\ncomment=Comment\ncommentsNotes=Comments/Notes\ncompress=Compress\nconnect=Connect\nconnecting=Connecting\nconnectWithDrive=Connect with Google Drive\nconnection=Connection\nconnectionArrows=Connection Arrows\nconnectionPoints=Connection Points\nconstrainProportions=Constrain Proportions\ncontainsValidationErrors=Contains validation errors\ncopiedToClipboard=Copied to clipboard\ncopy=Copy\ncopyConnect=Copy on connect\ncopyOf=Copy of {1}\ncopyOfDrawing=Copy of Drawing\ncopySize=Copy Size\ncopyStyle=Copy Style\ncreate=Create\ncreateNewDiagram=Create New Diagram\ncreateRevision=Create Revision\ncreateShape=Create Shape\ncrop=Crop\ncurved=Curved\ncustom=Custom\ncurrent=Current\ncut=Cut\ndashed=Dashed\ndecideLater=Decide later\ndefault=Default\ndelete=Delete\ndeleteColumn=Delete Column\ndeleteLibrary401=Insufficient permissions to delete this library\ndeleteLibrary404=Selected library could not be found\ndeleteLibrary500=Error deleting library\ndeleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?\ndeleteRow=Delete Row\ndescription=Description\ndevice=Device\ndiagram=Diagram\ndiagramContent=Diagram Content\ndiagramLocked=Diagram has been locked to prevent further data loss.\ndiagramLockedBySince=The diagram is locked by {1} since {2} ago\ndiagramName=Diagram Name\ndiagramIsPublic=Diagram is public\ndiagramIsNotPublic=Diagram is not public\ndiamond=Diamond\ndiamondThin=Diamond (thin)\ndidYouKnow=Did you know...\ndirection=Direction\ndiscard=Discard\ndiscardChangesAndReconnect=Discard Changes and Reconnect\ngoogleDriveMissingClickHere=Google Drive missing? Click here!\ndiscardChanges=Discard Changes\ndisconnected=Disconnected\ndistribute=Distribute\ndone=Done\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Download draw.io Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\ndraftDiscarded=Draft discarded\ndraftSaved=Draft saved\ndragElementsHere=Drag elements here\ndragImagesHere=Drag images or URLs here\ndragUrlsHere=Drag URLs here\ndraw.io=draw.io\ndrawing=Drawing{1}\ndrawingEmpty=Drawing is empty\ndrawingTooLarge=Drawing is too large\ndrawioForWork=Draw.io for GSuite\ndropbox=Dropbox\nduplicate=Duplicate\nduplicateIt=Duplicate {1}\ndivider=Divider\ndx=Dx\ndy=Dy\neast=East\nedit=Edit\neditData=Edit Data\neditDiagram=Edit Diagram\neditGeometry=Edit Geometry\neditImage=Edit Image\neditImageUrl=Edit Image URL\neditLink=Edit Link\neditShape=Edit Shape\neditStyle=Edit Style\neditText=Edit Text\neditTooltip=Edit Tooltip\nglass=Glass\ngoogleImages=Google Images\nimageSearch=Image Search\neip=EIP\nembed=Embed\nembedImages=Embed Images\nmainEmbedNotice=Paste this into the page\nelectrical=Electrical\nellipse=Ellipse\nembedNotice=Paste this once at the end of the page\nenterGroup=Enter Group\nenterName=Enter Name\nenterPropertyName=Enter Property Name\nenterValue=Enter Value\nentityRelation=Entity Relation\nerror=Error\nerrorDeletingFile=Error deleting file\nerrorLoadingFile=Error loading file\nerrorRenamingFile=Error renaming file\nerrorRenamingFileNotFound=Error renaming file. File was not found.\nerrorRenamingFileForbidden=Error renaming file. Insufficient access rights.\nerrorSavingDraft=Error saving draft\nerrorSavingFile=Error saving file\nerrorSavingFileUnknown=Error authorizing with Google's servers. Please refresh the page to re-attempt.\nerrorSavingFileForbidden=Error saving file. Insufficient access rights.\nerrorSavingFileNameConflict=Could not save diagram. Current page already contains file named '{1}'.\nerrorSavingFileNotFound=Error saving file. File was not found.\nerrorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.\nerrorSavingFileSessionTimeout=Your session has ended. Please <a target='_blank' href='{1}'>{2}</a> and return to this tab to try to save again.\nerrorSendingFeedback=Error sending feedback.\nerrorUpdatingPreview=Error updating preview.\nexit=Exit\nexitGroup=Exit Group\nexpand=Expand\nexport=Export\nexporting=Exporting\nexportAs=Export as\nexportOptionsDisabled=Export options disabled\nexportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.\nexternalChanges=External Changes\nextras=Extras\nfacebook=Facebook\nfailedToSaveTryReconnect=Failed to save, trying to reconnect\nfeatureRequest=Feature Request\nfeedback=Feedback\nfeedbackSent=Feedback successfully sent.\nfloorplans=Floorplans\nfile=File\nfileChangedOverwriteDialog=The file has been modified. Do you want to save the file and overwrite those changes?\nfileChangedSyncDialog=The file has been modified. Do you want to synchronize those changes?\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\nfileNearlyFullSeeFaq=File nearly full, please see FAQ\nfileNotFound=File not found\nrepositoryNotFound=Repository not found\nfileNotFoundOrDenied=The file was not found. It does not exist or you do not have read access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\nfileWillBeSavedInAppFolder={1} will be saved in the app folder.\nfill=Fill\nfillColor=Fill Color\nfilterCards=Filter Cards\nfind=Find\nfit=Fit\nfitContainer=Resize Container\nfitIntoContainer=Fit into Container\nfitPage=Fit Page\nfitPageWidth=Fit Page Width\nfitTo=Fit to\nfitToSheetsAcross=sheet(s) across\nfitToBy=by\nfitToSheetsDown=sheet(s) down\nfitTwoPages=Two Pages\nfitWindow=Fit Window\nflip=Flip\nflipH=Flip Horizontal\nflipV=Flip Vertical\nflowchart=Flowchart\nfolder=Folder\nfont=Font\nfontColor=Font Color\nfontFamily=Font Family\nfontSize=Font Size\nforbidden=You are not authorized to access this file\nformat=Format\nformatPanel=Format Panel\nformatted=Formatted\nformattedText=Formatted Text\nformatPng=PNG\nformatGif=GIF\nformatJpg=JPEG\nformatPdf=PDF\nformatSql=SQL\nformatSvg=SVG\nformatHtmlEmbedded=HTML\nformatSvgEmbedded=SVG (with XML)\nformatVsdx=VSDX\nformatVssx=VSSX\nformatXmlPlain=XML (Plain)\nformatXml=XML\nforum=Discussion/Help Forums\nfromTemplate=From Template\nfromTemplateUrl=From Template URL\nfromText=From Text\nfromUrl=From URL\nfromThisPage=From this page\nfullscreen=Fullscreen\ngap=Gap\ngcp=GCP\ngeneral=General\ngithub=GitHub\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\ngradient=Gradient\ngradientColor=Color\ngrid=Grid\ngridColor=Grid Color\ngridSize=Grid Size\ngroup=Group\nguides=Guides\nhateApp=I hate draw.io\nheading=Heading\nheight=Height\nhelp=Help\nhelpTranslate=Help us translate this application\nhide=Hide\nhideIt=Hide {1}\nhidden=Hidden\nhome=Home\nhorizontal=Horizontal\nhorizontalFlow=Horizontal Flow\nhorizontalTree=Horizontal Tree\nhowTranslate=How good is the translation in your language?\nhtml=HTML\nhtmlText=HTML Text\nid=ID\niframe=IFrame\nignore=Ignore\nimage=Image\nimageUrl=Image URL\nimages=Images\nimagePreviewError=This image couldn't be loaded for preview. Please check the URL.\nimageTooBig=Image too big\nimgur=Imgur\nimport=Import\nimportFrom=Import from\nincludeCopyOfMyDiagram=Include a copy of my diagram\nincreaseIndent=Increase Indent\ndecreaseIndent=Decrease Indent\ninsert=Insert\ninsertColumnBefore=Insert Column Left\ninsertColumnAfter=Insert Column Right\ninsertEllipse=Insert Ellipse\ninsertImage=Insert Image\ninsertHorizontalRule=Insert Horizontal Rule\ninsertLink=Insert Link\ninsertPage=Insert Page\ninsertRectangle=Insert Rectangle\ninsertRhombus=Insert Rhombus\ninsertRowBefore=Insert Row Above\ninsertRowAfter=Insert Row After\ninsertText=Insert Text\ninserting=Inserting\ninvalidFilename=Diagram names must not contain the following characters: / | : ; { } < > & + ? = \"\ninvalidLicenseSeeThisPage=Your license is invalid, please see this <a target=\"_blank\" href=\"https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin\">page</a>.\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\nlayers=Layers\nlandscape=Landscape\nlanguage=Language\nleanMapping=Lean Mapping\nlastChange=Last change {1} ago\nlessThanAMinute=less than a minute\nlicensingError=Licensing Error\nlicenseHasExpired=The license for {1} has expired on {2}. Click here.\nlicenseWillExpire=The license for {1} will expire on {2}. Click here.\nlineJumps=Line jumps\nlinkAccountRequired=If the diagram is not public a Google account is required to view the link.\nlinkText=Link Text\nlist=List\nminute=minute\nminutes=minutes\nhours=hours\ndays=days\nmonths=months\nyears=years\nrestartForChangeRequired=Changes will take effect after page refresh.\nlaneColor=Lanecolor\nlastModified=Last modified\nlayout=Layout\nleft=Left\nleftAlign=Left Align\nleftToRight=Left to right\nlibraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.\nlightbox=Lightbox\nline=Line\nlineend=Line end\nlineheight=Line Height\nlinestart=Line start\nlinewidth=Linewidth\nlink=Link\nlinks=Links\nloading=Loading\nlockUnlock=Lock/Unlock\nloggedOut=Logged Out\nlogIn=log in\nloveIt=I love {1}\nlucidchart=Lucidchart\nmaps=Maps\nmathematicalTypesetting=Mathematical Typesetting\nmakeCopy=Make a Copy\nmanual=Manual\nmiddle=Middle\nminimal=Minimal\nmisc=Misc\nmockups=Mockups\nmodificationDate=Modification date\nmodifiedBy=Modified by\nmore=More\nmoreResults=More Results\nmoreShapes=More Shapes\nmove=Move\nmoveToFolder=Move to Folder\nmoving=Moving\nmoveSelectionTo=Move selection to {1}\nname=Name\nnavigation=Navigation\nnetwork=Network\nnetworking=Networking\nnew=New\nnewLibrary=New Library\nnextPage=Next Page\nno=No\nnoPickFolder=No, pick folder\nnoAttachments=No attachments found\nnoColor=No Color\nnoFiles=No Files\nnoFileSelected=No file selected\nnoLibraries=No libraries found\nnoMoreResults=No more results\nnone=None\nnoOtherViewers=No other viewers\nnoPlugins=No plugins\nnoPreview=No preview\nnoResponse=No response from server\nnoResultsFor=No results for '{1}'\nnoRevisions=No revisions\nnoSearchResults=No search results found\nnoPageContentOrNotSaved=No anchors found on this page or it hasn't been saved yet\nnormal=Normal\nnorth=North\nnotADiagramFile=Not a diagram file\nnotALibraryFile=Not a library file\nnotAvailable=Not available\nnotAUtf8File=Not a UTF-8 file\nnotConnected=Not connected\nnote=Note\nnotUsingService=Not using {1}?\nnumberedList=Numbered list\noffline=Offline\nok=OK\noneDrive=OneDrive\nonline=Online\nopacity=Opacity\nopen=Open\nopenArrow=Open Arrow\nopenExistingDiagram=Open Existing Diagram\nopenFile=Open File\nopenFrom=Open from\nopenLibrary=Open Library\nopenLibraryFrom=Open Library from\nopenLink=Open Link\nopenInNewWindow=Open in New Window\nopenInThisWindow=Open in This Window\nopenIt=Open {1}\nopenRecent=Open Recent\nopenSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy\noptions=Options\norganic=Organic\northogonal=Orthogonal\notherViewer=other viewer\notherViewers=other viewers\noutline=Outline\noval=Oval\npage=Page\npageContent=Page Content\npageNotFound=Page not found\npageWithNumber=Page-{1}\npages=Pages\npageView=Page View\npageSetup=Page Setup\npageScale=Page Scale\npan=Pan\npanTooltip=Space+Drag to pan\npaperSize=Paper Size\npattern=Pattern\npaste=Paste\npasteHere=Paste here\npasteSize=Paste Size\npasteStyle=Paste Style\nperimeter=Perimeter\npermissionAnyone=Anyone can edit\npermissionAuthor=Owner and admins can edit\npickFolder=Pick a folder\npickLibraryDialogTitle=Select Library\npublicDiagramUrl=Public URL of the diagram\nplaceholders=Placeholders\nplantUml=PlantUML\nplugins=Plugins\npluginUrl=Plugin URL\npluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n\nplusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).\nportrait=Portrait\nposition=Position\nposterPrint=Poster Print\npreferences=Preferences\npreview=Preview\npreviousPage=Previous Page\nprint=Print\nprintAllPages=Print All Pages\nprocEng=Proc. Eng.\nproject=Project\npriority=Priority\nproperties=Properties\npublish=Publish\nquickStart=Quick Start Video\nrack=Rack\nradialTree=Radial Tree\nreadOnly=Read-only\nreconnecting=Reconnecting\nrecentlyUpdated=Recently Updated\nrecentlyViewed=Recently Viewed\nrectangle=Rectangle\nredirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.\nrealtimeTimeout=It looks like you've made a few changes while offline. We're sorry, these changes cannot be saved.\nredo=Redo\nrefresh=Refresh\nregularExpression=Regular Expression\nrelative=Relative\nrelativeUrlNotAllowed=Relative URL not allowed\nrememberMe=Remember me\nrememberThisSetting=Remember this setting\nremoveFormat=Clear Formatting\nremoveFromGroup=Remove from Group\nremoveIt=Remove {1}\nremoveWaypoint=Remove Waypoint\nrename=Rename\nrenamed=Renamed\nrenameIt=Rename {1}\nrenaming=Renaming\nreplace=Replace\nreplaceIt={1} already exists. Do you want to replace it?\nreplaceExistingDrawing=Replace existing drawing\nrequired=required\nreset=Reset\nresetView=Reset View\nresize=Resize\nresizeLargeImages=Do you want to resize large images to make the application run faster?\nretina=Retina\nresponsive=Responsive\nrestore=Restore\nrestoring=Restoring\nretryingIn=Retrying in {1} second(s)\nretryingLoad=Load failed. Retrying...\nretryingLogin=Login time out. Retrying...\nreverse=Reverse\nrevision=Revision\nrevisionHistory=Revision History\nrhombus=Rhombus\nright=Right\nrightAlign=Right Align\nrightToLeft=Right to left\nrotate=Rotate\nrotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees\nrotation=Rotation\nrounded=Rounded\nsave=Save\nsaveAndExit=Save & Exit\nsaveAs=Save as\nsaveAsXmlFile=Save as XML file?\nsaved=Saved\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\nsaving=Saving\nscratchpad=Scratchpad\nscrollbars=Scrollbars\nsearch=Search\nsearchShapes=Search Shapes\nselectAll=Select All\nselectionOnly=Selection Only\nselectCard=Select Card\nselectEdges=Select Edges\nselectFile=Select File\nselectFolder=Select Folder\nselectFont=Select Font\nselectNone=Select None\nselectTemplate=Select Template\nselectVertices=Select Vertices\nsendMessage=Send\nsendYourFeedbackToDrawIo=Send your feedback to draw.io\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save. \nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareLink=Link for shared editing\nsharp=Sharp\nshow=Show\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsize=Size\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstarting=Starting\nstraight=Straight\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\nsysml=SysML\ntags=Tags\ntable=Table\ntables=Tables\ntakeOver=Take Over\ntargetSpacing=Target Spacing\ntemplate=Template\ntemplates=Templates\ntext=Text\ntextAlignment=Text Alignment\ntextOpacity=Text Opacity\ntheme=Theme\ntimeout=Timeout\ntitle=Title\nto=to\ntoBack=To Back\ntoFront=To Front\ntooltips=Tooltips\ntop=Top\ntopAlign=Top Align\ntopLeft=Top Left\ntopRight=Top Right\ntransparent=Transparent\ntransparentBackground=Transparent Background\ntrello=Trello\ntryAgain=Try again\ntryOpeningViaThisPage=Try opening via this page.\nturn=Rotate shape only by 90°\ntype=Type\ntwitter=Twitter\numl=UML\nunderline=Underline\nundo=Undo\nungroup=Ungroup\nunsavedChanges=Unsaved changes\nunsavedChangesClickHereToSave=Unsaved changes. Click here to save.\nuntitled=Untitled\nuntitledDiagram=Untitled Diagram\nuntitledLayer=Untitled Layer\nuntitledLibrary=Untitled Library\nunknownError=Unknown error\nupdateFile=Update {1}\nupdatingDocument=Updating Document. Please wait...\nupdatingPreview=Updating Preview. Please wait...\nupdatingSelection=Updating Selection. Please wait...\nupload=Upload\nurl=URL\nuseOffline=Use Offline\nuseRootFolder=Use root folder?\nuserManual=User Manual\nvertical=Vertical\nverticalFlow=Vertical Flow\nverticalTree=Vertical Tree\nview=View\nviewUrl=Link to view: {1}\nvoiceAssistant=Voice Assistant (beta)\nwarning=Warning\nwaypoints=Waypoints\nwest=West\nwidth=Width\nwiki=Wiki\nwordWrap=Word Wrap\nwritingDirection=Writing Direction\nyes=Yes\nyourEmailAddress=Your email address\nzoom=Zoom\nzoomIn=Zoom In\nzoomOut=Zoom Out\nbasic=Basic\nbusinessprocess=Business Processes\ncharts=Charts\nengineering=Engineering\nflowcharts=Flowcharts\ngmdl=Material Design\nmindmaps=Mindmaps\nmockups=Mockups\nnetworkdiagrams=Network Diagrams\nnothingIsSelected=Nothing is selected\nother=Other\nsoftwaredesign=Software Design\nvenndiagrams=Venn Diagrams\nwebEmailOrOther=Web, email or any other internet address\nwebLink=Web Link\nwireframes=Wireframes\nproperty=Property\nvalue=Value\nshowMore=Show More\nshowLess=Show Less\nmyDiagrams=My Diagrams\nallDiagrams=All Diagrams\nrecentlyUsed=Recently used\nlistView=List view\ngridView=Grid view\nresultsFor=Results for '{1}'\n");Graph.prototype.defaultThemes[Graph.prototype.defaultThemeName]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="#ffffff"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#ffffff"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="white"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="#ffffff"/></add></mxStylesheet>').documentElement; -Graph.prototype.defaultThemes.darkTheme=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="#2a2a2a"/><add as="strokeColor" value="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="#2a2a2a"/></add></mxStylesheet>').documentElement;GraphViewer=function(a,b,f){this.init(a,b,f)};mxUtils.extend(GraphViewer,mxEventSource);GraphViewer.prototype.editBlankUrl="https://www.draw.io/";GraphViewer.prototype.imageBaseUrl="https://www.draw.io/";GraphViewer.prototype.toolbarHeight="BackCompat"==document.compatMode?28:30;GraphViewer.prototype.lightboxChrome=!0;GraphViewer.prototype.lightboxZIndex=999;GraphViewer.prototype.toolbarZIndex=999;GraphViewer.prototype.autoFit=!0;GraphViewer.prototype.allowZoomIn=!1; -GraphViewer.prototype.showTitleAsTooltip=!1;GraphViewer.prototype.checkVisibleState=!0; -GraphViewer.prototype.init=function(a,b,f){this.graphConfig=null!=f?f:{};this.autoFit=null!=this.graphConfig["auto-fit"]?this.graphConfig["auto-fit"]:this.autoFit;this.allowZoomIn=null!=this.graphConfig["allow-zoom-in"]?this.graphConfig["allow-zoom-in"]:this.allowZoomIn;this.checkVisibleState=null!=this.graphConfig["check-visible-state"]?this.graphConfig["check-visible-state"]:this.checkVisibleState;this.toolbarItems=null!=this.graphConfig.toolbar?this.graphConfig.toolbar.split(" "):[];this.zoomEnabled= -0<=mxUtils.indexOf(this.toolbarItems,"zoom");this.layersEnabled=0<=mxUtils.indexOf(this.toolbarItems,"layers");this.lightboxEnabled=0<=mxUtils.indexOf(this.toolbarItems,"lightbox");this.lightboxClickEnabled=0!=this.graphConfig.lightbox;this.initialWidth=null!=a?a.style.width:null;this.widthIsEmpty=null!=this.initialWidth?""==this.initialWidth:!0;this.currentPage=parseInt(this.graphConfig.page)||0;this.editor=null;if(null!=b&&(this.xmlDocument=b.ownerDocument,this.xmlNode=b,this.xml=mxUtils.getXml(b), -null!=a)){var d=mxUtils.bind(this,function(){this.graph=new Graph(a);this.graph.transparentBackground=!1;this.graphConfig.move&&(this.graph.isMoveCellsEvent=function(a){return!0});this.lightboxClickEnabled&&(a.style.cursor="pointer");this.editor=new Editor(!0,null,null,this.graph);this.editor.editBlankUrl=this.editBlankUrl;this.graph.lightbox=!0;this.graph.centerZoom=!1;this.graph.autoExtend=!1;this.graph.autoScroll=!1;this.graph.setEnabled(!1);var d=this;this.graph.getImageFromBundles=function(a){return d.getImageUrl(a)}; -mxClient.IS_SVG&&this.editor.graph.addSvgShadow(this.graph.view.canvas.ownerSVGElement,null,!0);if("mxfile"==b.nodeName){var f=b.getElementsByTagName("diagram");if(0<f.length){var k=this.graph.getGlobalVariable,d=this;this.graph.getGlobalVariable=function(a){var b=f[d.currentPage];return"page"==a?b.getAttribute("name")||"Page-"+(d.currentPage+1):"pagenumber"==a?d.currentPage+1:k.apply(this,arguments)}}}this.diagrams=[];var c=null;this.selectPage=function(a){this.currentPage=mxUtils.mod(a,this.diagrams.length); -this.updateGraphXml(mxUtils.parseXml(this.graph.decompress(mxUtils.getTextContent(this.diagrams[this.currentPage]))).documentElement)};this.selectPageById=function(a){for(var b=!1,c=0;c<this.diagrams.length;c++)if(this.diagrams[c].getAttribute("id")==a){this.selectPage(c);b=!0;break}return b};var g=mxUtils.bind(this,function(){if(null==this.xmlNode||"mxfile"!=this.xmlNode.nodeName)this.diagrams=[];this.xmlNode!=c&&(this.diagrams=this.xmlNode.getElementsByTagName("diagram"),c=this.xmlNode)});this.addListener("xmlNodeChanged", -g);g();urlParams.page=d.currentPage;this.graph.getModel().beginUpdate();try{urlParams.nav=0!=this.graphConfig.nav?"1":"0",this.editor.setGraphXml(this.xmlNode),this.graph.border=null!=this.graphConfig.border?this.graphConfig.border:8,this.graph.view.scale=this.graphConfig.zoom||1}finally{this.graph.getModel().endUpdate()}this.graph.panningHandler.useLeftButtonForPanning=!0;this.graph.panningHandler.isForcePanningEvent=function(a){return!mxEvent.isPopupTrigger(a.getEvent())&&"auto"==this.graph.container.style.overflow}; -this.graph.panningHandler.usePopupTrigger=!1;this.graph.panningHandler.pinchEnabled=!1;this.graph.panningHandler.ignoreCell=!0;this.graph.setPanning(!1);this.addSizeHandler();this.showLayers(this.graph);this.addClickHandler(this.graph);this.graph.setTooltips(0!=this.graphConfig.tooltips);this.graph.initialViewState={translate:this.graph.view.translate.clone(),scale:this.graph.view.scale};d=this;this.graph.customLinkClicked=function(a){var b=!0;if("data:page/id,"==a.substring(0,13)){var c=a.indexOf(","); -d.selectPageById(a.substring(c+1))||(b=!1,alert(mxResources.get("pageNotFound")||"Page not found"))}else this.handleCustomLink(a);return b};null!=this.graphConfig.toolbar?this.addToolbar():null!=this.graphConfig.title&&this.showTitleAsTooltip&&a.setAttribute("title",this.graphConfig.title);this.fireEvent(new mxEventObject("render"))});f=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;if(this.checkVisibleState&&0==a.offsetWidth&&"undefined"!==typeof f){var k=this.getObservableParent(a), -n=new f(mxUtils.bind(this,function(b){0<a.offsetWidth&&(n.disconnect(),d())}));n.observe(k,{attributes:!0})}else d()}};GraphViewer.prototype.getObservableParent=function(a){for(a=a.parentNode;a!=document.body&&null!=a.parentNode&&"none"!==mxUtils.getCurrentStyle(a).display;)a=a.parentNode;return a}; -GraphViewer.prototype.getImageUrl=function(a){null!=a&&"http://"!=a.substring(0,7)&&"https://"!=a.substring(0,8)&&"data:image"!=a.substring(0,10)&&("/"==a.charAt(0)&&(a=a.substring(1,a.length)),a=this.imageBaseUrl+a);return a};GraphViewer.prototype.setXmlNode=function(a){this.xmlDocument=a.ownerDocument;this.xml=mxUtils.getXml(a);this.xmlNode=a;this.updateGraphXml(a);this.fireEvent(new mxEventObject("xmlNodeChanged"))}; -GraphViewer.prototype.setFileNode=function(a){null==this.xmlNode&&(this.xmlDocument=a.ownerDocument,this.xml=mxUtils.getXml(a),this.xmlNode=a);this.setGraphXml(a)};GraphViewer.prototype.updateGraphXml=function(a){this.setGraphXml(a);this.fireEvent(new mxEventObject("graphChanged"))}; +a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");b.geometry.setTerminalPoint(new mxPoint(110,-40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);var c=new mxCell("Sub Section",new mxGeometry(120,0,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;");c.vertex=!0;var e=new mxCell("",new mxGeometry(0, +0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");e.geometry.setTerminalPoint(new mxPoint(110,-40),!0);e.geometry.relative=!0;e.edge=!0;c.insertEdge(e,!1);return sb.createVertexTemplateFromCells([b,e,a,c],220,60,"Sub Sections")})])}}})();EditorUi.initMinimalTheme=function(){function a(a){var b=a.editor.graph;b.popupMenuHandler.hideMenu();null==a.formatWindow?(a.formatWindow=new k(a,mxResources.get("format"),Math.max(20,a.diagramContainer.clientWidth-240-12),56,240,Math.min(566,b.container.clientHeight-10),function(b){b=a.createFormat(b);b.init();return b}),a.formatWindow.window.minimumSize=new mxRectangle(0,0,240,80),a.formatWindow.window.setVisible(!0)):a.formatWindow.window.setVisible(!a.formatWindow.window.isVisible());a.formatWindow.window.isVisible()&& +a.formatWindow.window.fit()}function b(a){var b=a.editor.graph;b.popupMenuHandler.hideMenu();new mxRectangle;if(null==a.sidebarWindow){var d=Math.min(b.container.clientWidth-10,266);a.sidebarWindow=new k(a,mxResources.get("shapes"),10,56,d-6,Math.min(650,b.container.clientHeight-30),function(b){function d(c,d){var f=a.menus.get(c),g=e.addMenu(d,mxUtils.bind(this,function(){f.funct.apply(this,arguments)}));g.style.cssText="position:absolute;border-top:1px solid lightgray;width:50%;height:24px;bottom:0px;text-align:center;cursor:pointer;padding:6px 0 0 0;cusor:pointer;"; +g.className="geTitle";b.appendChild(g);return g}var c=document.createElement("div");c.style.cssText="position:absolute;left:0;right:0;border-top:1px solid lightgray;height:24px;bottom:31px;text-align:center;cursor:pointer;padding:6px 0 0 0;";c.className="geTitle";c.innerHTML='<span style="font-size:18px;margin-right:5px;">+</span>';mxUtils.write(c,mxResources.get("moreShapes"));b.appendChild(c);mxEvent.addListener(c,"click",function(){a.actions.get("shapes").funct()});var e=new Menubar(a,b);if(!Editor.enableCustomLibraries|| +"1"==urlParams.embed&&"1"!=urlParams.libraries)c.style.bottom="0";else if(null!=a.actions.get("newLibrary")){c=document.createElement("div");c.style.cssText="position:absolute;left:0px;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;";c.className="geTitle";var f=document.createElement("span");f.style.cssText="position:relative;top:6px;";mxUtils.write(f,mxResources.get("newLibrary"));c.appendChild(f);b.appendChild(c);mxEvent.addListener(c, +"click",a.actions.get("newLibrary").funct);c=document.createElement("div");c.style.cssText="position:absolute;left:50%;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;border-left: 1px solid lightgray;";c.className="geTitle";f=document.createElement("span");f.style.cssText="position:relative;top:6px;";mxUtils.write(f,mxResources.get("openLibrary"));c.appendChild(f);b.appendChild(c);mxEvent.addListener(c,"click",a.actions.get("openLibrary").funct)}else c= +d("newLibrary",mxResources.get("newLibrary")),c.style.left="0",c=d("openLibraryFrom",mxResources.get("openLibraryFrom")),c.style.borderLeft="1px solid lightgray",c.style.left="50%";b.appendChild(a.sidebar.container);b.style.overflow="hidden";return b});a.sidebarWindow.window.minimumSize=new mxRectangle(0,0,90,90);a.sidebarWindow.window.setVisible(!0);a.getLocalData("sidebar",function(b){a.sidebar.showEntries(b,null,!0)});a.restoreLibraries()}else a.sidebarWindow.window.setVisible(!a.sidebarWindow.window.isVisible()); +a.sidebarWindow.window.isVisible()&&a.sidebarWindow.window.fit()}if("1"==urlParams.lightbox||"0"==urlParams.chrome||"undefined"===typeof window.Format||"undefined"===typeof window.Menus)window.uiTheme=null;else{var e=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;try{var c=document.createElement("style");c.type="text/css";c.innerHTML="* { -webkit-font-smoothing: antialiased; }html body .mxWindow button.geBtn { font-size:12px !important; margin-left: 0; }html body table.mxWindow td.mxWindowPane div.mxWindowPane *:not(svg *) { font-size:9pt; }html body div.diagramContainer button, html body button.geBtn { font-size:14px; font-weight:700;border-radius: 5px; }html body button.geBtn:active { opacity: 0.6; }html body a.geMenuItem { opacity: 0.75; }html body a.geMenuItem[disabled] { opacity: 0.2; }html body a.geMenuItem[disabled]:active { opacity: 0.2; }html body div.geActivePage { opacity: 0.7; }html body a.geMenuItem:active { opacity: 0.2; }html body .geToolbarButton { opacity: 0.3; }html body .geToolbarButton:active { opacity: 0.15; }html body .geStatus:active { opacity: 0.5; }html table.mxPopupMenu tr.mxPopupMenuItemHover:active { opacity:0.7; }html body .geDialog input, html body .geToolbarContainer input, html body .mxWindow input {padding:2px;display:inline-block; }div.geDialog { border-radius: 5px; }html body div.geDialog button.geBigButton { color: #fff !important; }.mxWindow button, .geDialog select, .mxWindow select { display:inline-block; }html body .mxWindow .geColorBtn, html body .geDialog .geColorBtn { background: none; }html body div.diagramContainer button, html body .mxWindow button, html body .geDialog button { min-width: 0px; border-radius: 5px; color: #353535 !important; border-style: solid; border-width: 1px; border-color: rgb(216, 216, 216); }html body div.diagramContainer button:hover, html body .mxWindow button:hover, html body .geDialog button:hover { border-color: rgb(177, 177, 177); }html body div.diagramContainer button:active, html body .mxWindow button:active, html body .geDialog button:active { opacity: 0.6; }div.diagramContainer button.geBtn, .mxWindow button.geBtn, .geDialog button.geBtn { min-width:72px; font-weight: 600; background: none; }div.diagramContainer button.gePrimaryBtn, .mxWindow button.gePrimaryBtn, .geDialog button.gePrimaryBtn, html body .gePrimaryBtn { background: #29b6f2; color: #fff !important; border: none; box-shadow: none; }html body .gePrimaryBtn:hover { background: #29b6f2; border: none; box-shadow: inherit; }html body button.gePrimaryBtn:hover { background: #29b6f2; border: none; }.geBtn button { min-width:72px !important; }div.geToolbarContainer a.geButton { margin:2px; padding: 0 2px 4px 2px; } .geDialog, .mxWindow td.mxWindowPane *, div.geSprite, td.mxWindowTitle, .geDiagramContainer { box-sizing:content-box; }.mxWindow div button.geStyleButton { box-sizing: border-box; }table.mxWindow td.mxWindowPane button.geColorBtn { padding:0px; box-sizing: border-box; }td.mxWindowPane .geSidebarContainer button { padding:2px 0 2px 0; box-sizing: border-box; }html body .geMenuItem { font-size:14px; text-decoration: none; font-weight: normal; padding: 6px 10px 6px 10px; border: none; border-radius: 5px; color: #353535; box-shadow: inset 0 0 0 1px rgba(0,0,0,.11), inset 0 -1px 0 0 rgba(0,0,0,.08), 0 1px 2px 0 rgba(0,0,0,.04); }.geToolbarContainer { background:#fff !important; }div.mxWindow .geSidebarContainer .geTitle { background-color:#fdfdfd; }div.mxWindow .geSidebarContainer .geTitle:hover { background-color:#fafafa; }div.geSidebar { background-color: #fff !important;}div.mxWindow td.mxWindowPane button { background-image: none; float: none; }td.mxWindowTitle { height: 22px !important; background: none !important; font-size: 13px !important; text-align:center !important; border-bottom:1px solid lightgray; }div.mxWindow, div.mxWindowTitle { background-image: none !important; background-color:#fff !important; }div.mxWindow { border-radius:5px; box-shadow: 0px 0px 2px #C0C0C0 !important;}div.mxWindow * { font-family: inherit !important; }html div.geVerticalHandle { position:absolute;bottom:0px;left:50%;cursor:row-resize;width:11px;height:11px;background:white;margin-bottom:-6px; margin-left:-6px; border: none; border-radius: 6px; box-shadow: inset 0 0 0 1px rgba(0,0,0,.11), inset 0 -1px 0 0 rgba(0,0,0,.08), 0 1px 2px 0 rgba(0,0,0,.04); }html div.geInactivePage { background: rgb(249, 249, 249) !important; color:lightgray !important; } html div.geActivePage { background: white !important;color: #353535 !important; } html div.mxRubberband { border:1px solid; border-color: #29b6f2 !important; background:rgba(41,182,242,0.5) !important; } html body div.mxPopupMenu { border-radius:5px; border:1px solid #c0c0c0; padding:5px 0 5px 0; box-shadow: 0px 4px 17px -4px rgba(96,96,96,1); } html table.mxPopupMenu td.mxPopupMenuItem { color: #353535; font-size: 14px; padding-top: 4px; padding-bottom: 4px; }html table.mxPopupMenu tr.mxPopupMenuItemHover { background-color: #29b6f2; }html tr.mxPopupMenuItemHover td.mxPopupMenuItem, html tr.mxPopupMenuItemHover td.mxPopupMenuItem span { color: #fff !important; }html tr.mxPopupMenuItem, html td.mxPopupMenuItem { transition-property: none !important; }html table.mxPopupMenu hr { height: 2px; background-color: rgba(0,0,0,.07); margin: 5px 0; }"+ +(mxClient.IS_IOS?"html input[type=checkbox], html input[type=radio] { height:12px; }":"");document.getElementsByTagName("head")[0].appendChild(c)}catch(p){}var k=function(a,b,c,d,e,f,g){var k=document.createElement("div");k.className="geSidebarContainer";k.style.position="absolute";k.style.width="100%";k.style.height="100%";k.style.border="1px solid whiteSmoke";k.style.overflowX="hidden";k.style.overflowY="auto";g(k);this.window=new mxWindow(b,k,c,d,e,f,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1); +this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.setLocation=function(a,b){var c=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};mxClient.IS_SF&& +(this.window.div.onselectstart=mxUtils.bind(this,function(b){null==b&&(b=window.event);return null!=b&&a.isSelectionAllowed(b)}))};Editor.checkmarkImage=Graph.createSvgImage(22,18,'<path transform="translate(4 0)" d="M7.181,15.007a1,1,0,0,1-.793-0.391L3.222,10.5A1,1,0,1,1,4.808,9.274L7.132,12.3l6.044-8.86A1,1,0,1,1,14.83,4.569l-6.823,10a1,1,0,0,1-.8.437H7.181Z" fill="#29b6f2"/>').src;mxWindow.prototype.closeImage=Graph.createSvgImage(18,10,'<path d="M 5 1 L 13 9 M 13 1 L 5 9" stroke="#C0C0C0" stroke-width="2"/>').src; +mxWindow.prototype.minimizeImage=Graph.createSvgImage(14,10,'<path d="M 3 7 L 7 3 L 11 7" stroke="#C0C0C0" stroke-width="2" fill="#ffffff"/>').src;mxWindow.prototype.normalizeImage=Graph.createSvgImage(14,10,'<path d="M 3 3 L 7 7 L 11 3" stroke="#C0C0C0" stroke-width="2" fill="#ffffff"/>').src;mxConstraintHandler.prototype.pointImage=Graph.createSvgImage(5,5,'<path d="m 0 0 L 5 5 M 0 5 L 5 0" stroke="#29b6f2"/>');mxOutline.prototype.sizerImage=null;mxConstants.VERTEX_SELECTION_COLOR="#C0C0C0";mxConstants.EDGE_SELECTION_COLOR= +"#C0C0C0";mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff";mxConstants.DEFAULT_VALID_COLOR="#29b6f2";mxConstants.GUIDE_COLOR="#C0C0C0";mxConstants.HIGHLIGHT_STROKEWIDTH=5;mxConstants.HIGHLIGHT_OPACITY=35;mxConstants.OUTLINE_COLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_FILLCOLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_STROKECOLOR="#fff";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity="0.4";Graph.prototype.svgShadowSize="0.6";Graph.prototype.svgShadowBlur="1.2";Format.prototype.inactiveTabBackgroundColor= +"#f0f0f0";mxGraphHandler.prototype.previewColor="#C0C0C0";mxRubberband.prototype.defaultOpacity=50;HoverIcons.prototype.inactiveOpacity=25;Format.prototype.showCloseButton=!1;EditorUi.prototype.closableScratchpad=!1;EditorUi.prototype.toolbarHeight=46;EditorUi.prototype.footerHeight=0;Graph.prototype.editAfterInsert=!0;Editor.prototype.isChromelessView=function(){return!1};Graph.prototype.isLightboxView=function(){return!1};var m=EditorUi.prototype.updateTabContainer;EditorUi.prototype.updateTabContainer= +function(){null!=this.tabContainer&&(this.tabContainer.style.right="70px",this.diagramContainer.style.bottom="30px");m.apply(this,arguments)};var q=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){q.apply(this,arguments);this.menus.get("save").setEnabled(null!=this.getCurrentFile()||"1"==urlParams.embed)};var r=Menus.prototype.addShortcut;Menus.prototype.addShortcut=function(a,b){null!=b.shortcut&&900>e&&!mxClient.IS_IOS?a.firstChild.nextSibling.setAttribute("title", +b.shortcut):r.apply(this,arguments)};var v=App.prototype.updateUserElement;App.prototype.updateUserElement=function(){v.apply(this,arguments);if(null!=this.userElement){var a=this.userElement;a.style.cssText="display:inline-block;position:relative;margin-right:4px;cursor:pointer;";a.className="geToolbarButton";a.innerHTML="";a.style.backgroundImage="url("+Editor.userImage+")";a.style.backgroundPosition="center center";a.style.backgroundRepeat="no-repeat";a.style.backgroundSize="24px 24px";a.style.height= +"24px";a.style.width="24px";a.style.cssFloat="right";a.setAttribute("title",mxResources.get("changeUser"))}};var z=App.prototype.updateButtonContainer;App.prototype.updateButtonContainer=function(){z.apply(this,arguments);if(null!=this.shareButton){var a=this.shareButton;a.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;cursor:pointer;";a.className="geToolbarButton";a.innerHTML="";a.style.backgroundImage="url("+Editor.shareImage+")";a.style.backgroundPosition= +"center center";a.style.backgroundRepeat="no-repeat";a.style.backgroundSize="24px 24px";a.style.height="24px";a.style.width="24px"}};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.buttonContainer){var a=document.createElement("div");a.style.display="inline-block";a.style.position="relative";a.style.marginTop="2px";var b=document.createElement("button");mxUtils.write(b,mxResources.get("save"));b.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)");b.className="1"==urlParams.saveAndExit? +"geMenuItem":"geMenuItem gePrimaryBtn";b.style.fontSize="14px";b.style.padding="6px";b.style.borderRadius="3px";b.style.marginLeft="8px";b.style.cursor="pointer";mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()}));a.appendChild(b);"1"==urlParams.saveAndExit&&(b=document.createElement("a"),mxUtils.write(b,mxResources.get("saveAndExit")),b.setAttribute("title",mxResources.get("saveAndExit")),b.className="geMenuItem gePrimaryBtn",b.style.fontSize="14px",b.style.marginLeft= +"6px",b.style.padding="6px",b.style.cursor="pointer",mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b));b=document.createElement("a");mxUtils.write(b,mxResources.get("exit"));b.setAttribute("title",mxResources.get("exit"));b.className="geMenuItem";b.style.fontSize="14px";b.style.marginLeft="6px";b.style.padding="6px";b.style.cursor="pointer";mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})); +a.appendChild(b);this.buttonContainer.appendChild(a);this.buttonContainer.style.top="6px"}};Sidebar.prototype.getTooltipOffset=function(){var a=mxUtils.getOffset(this.editorUi.sidebarWindow.window.div);a.y+=40;return a};var d=Menus.prototype.createPopupMenu;Menus.prototype.createPopupMenu=function(a,b,c){var e=this.editorUi.editor.graph;a.smartSeparators=!0;d.apply(this,arguments);mxUtils.bind(this,function(a,b){var c=new FilenameDialog(this.editorUi,a,mxResources.get("apply"),function(a){b(parseFloat(a))}, +mxResources.get("spacing"));this.editorUi.showDialog(c.container,300,80,!0,!0);c.init()});1==e.getSelectionCount()?(this.addMenuItems(a,["editTooltip","-","editStyle","editGeometry","-"],null,c),e.isCellFoldable(e.getSelectionCell())&&this.addMenuItems(a,e.isCellCollapsed(b)?["expand"]:["collapse"],null,c),this.addMenuItems(a,["collapsible","-","lockUnlock","enterGroup"],null,c),a.addSeparator(),this.addSubmenu("layout",a)):e.isSelectionEmpty()&&e.isEnabled()?(a.addSeparator(),this.addMenuItems(a, +["editData"],null,c),a.addSeparator(),this.addSubmenu("layout",a),this.addSubmenu("view",a,null,mxResources.get("options")),this.addMenuItems(a,["-","exitGroup"],null,c)):e.isEnabled()&&this.addMenuItems(a,["-","lockUnlock"],null,c)};EditorUi.prototype.toggleFormatPanel=function(b){null!=this.formatWindow?this.formatWindow.window.setVisible(b?!1:!this.formatWindow.window.isVisible()):a(this)};DiagramFormatPanel.prototype.isMathOptionVisible=function(){return!0};var f=EditorUi.prototype.destroy;EditorUi.prototype.destroy= +function(){null!=this.sidebarWindow&&(this.sidebarWindow.window.setVisible(!1),this.sidebarWindow.window.destroy(),this.sidebarWindow=null);null!=this.formatWindow&&(this.formatWindow.window.setVisible(!1),this.formatWindow.window.destroy(),this.formatWindow=null);null!=this.actions.outlineWindow&&(this.actions.outlineWindow.window.setVisible(!1),this.actions.outlineWindow.window.destroy(),this.actions.outlineWindow=null);null!=this.actions.layersWindow&&(this.actions.layersWindow.window.setVisible(!1), +this.actions.layersWindow.window.destroy(),this.actions.layersWindow=null);null!=this.menus.tagsWindow&&(this.menus.tagsWindow.window.setVisible(!1),this.menus.tagsWindow.window.destroy(),this.menus.tagsWindow=null);null!=this.menus.findWindow&&(this.menus.findWindow.window.setVisible(!1),this.menus.findWindow.window.destroy(),this.menus.findWindow=null);f.apply(this,arguments)};var l=EditorUi.prototype.setGraphEnabled;EditorUi.prototype.setGraphEnabled=function(a){l.apply(this,arguments);a||(null!= +this.sidebarWindow&&this.sidebarWindow.window.setVisible(!1),null!=this.formatWindow&&this.formatWindow.window.setVisible(!1))};EditorUi.prototype.chromelessWindowResize=function(){};var n=Menus.prototype.init;Menus.prototype.init=function(){n.apply(this,arguments);var c=this.editorUi,d=c.editor.graph;c.actions.get("editDiagram").label=mxResources.get("formatXml")+"...";c.actions.get("createShape").label=mxResources.get("shape")+"...";c.actions.get("outline").label=mxResources.get("outline")+"..."; +c.actions.get("layers").label=mxResources.get("layers")+"...";c.actions.put("importFile",new Action("File...",function(){d.popupMenuHandler.hideMenu();var a=document.createElement("input");a.setAttribute("type","file");mxEvent.addListener(a,"change",function(){null!=a.files&&c.importFiles(a.files,null,null,c.maxImageSize)});a.click()}));c.actions.put("importCsv",new Action(mxResources.get("csv")+"...",function(){d.popupMenuHandler.hideMenu();c.showImportCsvDialog()}));c.actions.put("importText",new Action(mxResources.get("text")+ +"...",function(){var a=new ParseDialog(c,"Insert from Text");c.showDialog(a.container,620,420,!0,!1);a.init()}));c.actions.put("formatSql",new Action(mxResources.get("formatSql")+"...",function(){var a=new ParseDialog(c,"Insert from Text","formatSql");c.showDialog(a.container,620,420,!0,!1);a.init()}));c.actions.put("toggleShapes",new Action(mxResources.get("shapes")+"...",function(){b(c)}));c.actions.put("toggleFormat",new Action(mxResources.get("format")+"...",function(){a(c)}));EditorUi.enablePlantUml&& +!c.isOffline()&&c.actions.put("plantUml",new Action(mxResources.get("plantUml")+"...",function(){var a=new ParseDialog(c,"Insert from Text","plantUml");c.showDialog(a.container,620,420,!0,!1);a.init()}));this.put("diagram",new Menu(mxUtils.bind(this,function(a,b){var d=c.getCurrentFile();c.menus.addSubmenu("extras",a,b,mxResources.get("preferences"));a.addSeparator(b);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?(c.menus.addMenuItems(a,["new","open","-"],b),EditorUi.isElectronApp&&c.menus.addMenuItems(a, +["synchronize","-"],b),c.menus.addMenuItems(a,["save","saveAs","-"],b)):"1"==urlParams.embed?(c.menus.addMenuItems(a,["-","save"],b),"1"==urlParams.saveAndExit&&c.menus.addMenuItems(a,["saveAndExit"],b),a.addSeparator(b)):(c.menus.addMenuItems(a,["new"],b),c.menus.addSubmenu("openFrom",a,b),isLocalStorage&&this.addSubmenu("openRecent",a,b),a.addSeparator(b),null!=d&&d.constructor==DriveFile&&c.menus.addMenuItems(a,["share"],b),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null==d||d.constructor== +LocalFile||c.menus.addMenuItems(a,["synchronize"],b),a.addSeparator(b),c.menus.addSubmenu("save",a,b));c.menus.addSubmenu("exportAs",a,b);c.menus.addMenuItems(a,"- outline layers - find tags".split(" "),b);mxClient.IS_IOS&&navigator.standalone||c.menus.addMenuItems(a,["-","print","-"],b);c.menus.addSubmenu("help",a,b);"1"==urlParams.embed?c.menus.addMenuItems(a,["-","exit"],b):c.menus.addMenuItems(a,["-","close"])})));this.put("save",new Menu(mxUtils.bind(this,function(a,b){var d=c.getCurrentFile(); +null!=d&&d.constructor==DriveFile?c.menus.addMenuItems(a,["save","makeCopy","-","rename","moveToFolder"],b):(c.menus.addMenuItems(a,["save","saveAs","-","rename"],b),c.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&this.addMenuItems(a,["upload"],b):c.menus.addMenuItems(a,["makeCopy"],b));c.menus.addMenuItems(a,["-","autosave"],b);null!=d&&d.isRevisionHistorySupported()&&c.menus.addMenuItems(a,["-","revisionHistory"],b)})));var e=this.get("exportAs");this.put("exportAs",new Menu(mxUtils.bind(this, +function(a,b){e.funct(a,b);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||c.menus.addMenuItems(a,["publishLink"],b);a.addSeparator(b);c.menus.addSubmenu("embed",a,b)})));var f=this.get("language");this.put("extras",new Menu(mxUtils.bind(this,function(a,b){"1"!=urlParams.embed&&c.menus.addSubmenu("theme",a,b);null!=f&&c.menus.addSubmenu("language",a,b);a.addSeparator(b);c.menus.addMenuItems(a,["scrollbars","tooltips"],b);"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&c.menus.addMenuItems(a, +["-","search","scratchpad","-","showStartScreen"],b);!c.isOfflineApp()&&isLocalStorage&&(a.addSeparator(b),c.menus.addMenuItem(a,"plugins",b));a.addSeparator(b)})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,function(a,b){c.menus.addMenuItems(a,"importText plantUml - formatSql importCsv - createShape editDiagram".split(" "),b)})));mxResources.parse("insertLayout="+mxResources.get("layout"));mxResources.parse("insertAdvanced="+mxResources.get("advanced"));this.put("insert",new Menu(mxUtils.bind(this, +function(a,b){c.menus.addMenuItems(a,"insertRectangle insertEllipse insertRhombus - insertText insertLink - insertImage".split(" "),b);c.insertTemplateEnabled&&!c.isOffline()&&c.menus.addMenuItems(a,["insertTemplate"],b);a.addSeparator(b);c.menus.addSubmenu("insertLayout",a,b);c.menus.addSubmenu("insertAdvanced",a,b);a.addSeparator(b);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?c.menus.addMenuItems(a,["import"],b):c.menus.addSubmenu("importFrom",a,b)})));var g="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "), +k=function(a,b,d,e){a.addItem(d,null,mxUtils.bind(this,function(){var a=new CreateGraphDialog(c,d,e);c.showDialog(a.container,620,420,!0,!1);a.init()}),b)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(a,b){for(var c=0;c<g.length;c++)"-"==g[c]?a.addSeparator(b):k(a,b,mxResources.get(g[c])+"...",g[c])})));this.put("view",new Menu(mxUtils.bind(this,function(a,b){c.menus.addMenuItems(a,"grid guides - connectionArrows connectionPoints -".split(" "),b);if("undefined"!==typeof MathJax){var d= +c.menus.addMenuItem(a,"mathematicalTypesetting",b);c.menus.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000032875")}c.menus.addMenuItems(a,["copyConnect","collapseExpand","-","pageScale"],b)})))};var g=EditorUi.prototype.init;EditorUi.prototype.init=function(){function a(a,b,c){var d=l.menus.get(a),e=r.addMenu(mxResources.get(a),mxUtils.bind(this,function(){d.funct.apply(this,arguments)}),q);e.className="geMenuItem";e.style.display="inline-block";e.style.boxSizing="border-box"; +e.style.top="6px";e.style.marginRight="6px";e.style.height="30px";e.style.paddingTop="6px";e.style.paddingBottom="6px";e.style.cursor="pointer";e.setAttribute("title",mxResources.get(a));l.menus.menuCreated(d,e,"geMenuItem");null!=c?(e.style.backgroundImage="url("+c+")",e.style.backgroundPosition="center center",e.style.backgroundRepeat="no-repeat",e.style.backgroundSize="24px 24px",e.style.width="34px",e.innerHTML=""):b||(e.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",e.style.backgroundPosition= +"right 6px center",e.style.backgroundRepeat="no-repeat",e.style.paddingRight="22px");return e}function c(a,b,c,d,e,f){var g=document.createElement("a");g.className="geMenuItem";g.style.display="inline-block";g.style.boxSizing="border-box";g.style.height="30px";g.style.padding="6px";g.style.position="relative";g.style.verticalAlign="top";g.style.top="0px";null!=l.statusContainer?n.insertBefore(g,l.statusContainer):n.appendChild(g);null!=f?(g.style.backgroundImage="url("+f+")",g.style.backgroundPosition= +"center center",g.style.backgroundRepeat="no-repeat",g.style.backgroundSize="24px 24px",g.style.width="34px"):mxUtils.write(g,a);mxEvent.addListener(g,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(g,"click",function(a){"disabled"!=g.getAttribute("disabled")&&b(a);mxEvent.consume(a)});null==c&&(g.style.marginRight="4px");null!=d&&g.setAttribute("title",d);null!=e&&(a=function(){e.isEnabled()?(g.removeAttribute("disabled"),g.style.cursor= +"pointer"):(g.setAttribute("disabled","disabled"),g.style.cursor="default")},e.addListener("stateChanged",a),a());return g}function d(a,b){var c=document.createElement("div");c.className="geMenuItem";c.style.display="inline-block";c.style.verticalAlign="top";c.style.marginRight="6px";c.style.padding="0 4px 0 4px";c.style.height="30px";c.style.position="relative";c.style.top="0px";for(var d=0;d<a.length;d++)null!=a[d]&&(a[d].style.margin="0px",a[d].style.boxShadow="none",c.appendChild(a[d]));null!= +b&&mxUtils.setOpacity(c,b);null!=l.statusContainer?n.insertBefore(c,l.statusContainer):n.appendChild(c);return c}function f(){for(var b=n.firstChild;null!=b;){var f=b.nextSibling;"geMenuItem"!=b.className&&"geItem"!=b.className||b.parentNode.removeChild(b);b=f}q=n.firstChild;e=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;(b=1E3>e)||a("diagram");d([b?a("diagram",null,IMAGE_PATH+"/drawlogo.svg"):null,c(mxResources.get("shapes"),l.actions.get("toggleShapes").funct, +null,mxResources.get("shapes"),l.actions.get("image"),b?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTMgMTN2OGg4di04aC04ek0zIDIxaDh2LThIM3Y4ek0zIDN2OGg4VjNIM3ptMTMuNjYtMS4zMUwxMSA3LjM0IDE2LjY2IDEzbDUuNjYtNS42Ni01LjY2LTUuNjV6Ii8+PC9zdmc+":null),c(mxResources.get("format"),l.actions.get("toggleFormat").funct,null,mxResources.get("format")+" ("+l.actions.get("formatPanel").shortcut+")",l.actions.get("image"), +b?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIgM2MtNC45NyAwLTkgNC4wMy05IDlzNC4wMyA5IDkgOWMuODMgMCAxLjUtLjY3IDEuNS0xLjUgMC0uMzktLjE1LS43NC0uMzktMS4wMS0uMjMtLjI2LS4zOC0uNjEtLjM4LS45OSAwLS44My42Ny0xLjUgMS41LTEuNUgxNmMyLjc2IDAgNS0yLjI0IDUtNSAwLTQuNDItNC4wMy04LTktOHptLTUuNSA5Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNS42NyA5IDYuNSA5IDggOS42NyA4IDEwLjUgNy4zMyAxMiA2LjUgMTJ6bTMtNEM4LjY3IDggOCA3LjMzIDggNi41UzguNjcgNSA5LjUgNXMxLjUuNjcgMS41IDEuNVMxMC4zMyA4IDkuNSA4em01IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxMy42NyA1IDE0LjUgNXMxLjUuNjcgMS41IDEuNVMxNS4zMyA4IDE0LjUgOHptMyA0Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTYuNjcgOSAxNy41IDlzMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41eiIvPjwvc3ZnPg==": +null)],b?60:null);f=a("insert",!0,b?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgMTNoLTZ2NmgtMnYtNkg1di0yaDZWNWgydjZoNnYyeiIvPjwvc3ZnPg==":null);d([f,c(mxResources.get("delete"),l.actions.get("delete").funct,null,mxResources.get("delete"),l.actions.get("delete"),b?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek0xOSA0aC0zLjVsLTEtMWgtNWwtMSAxSDV2MmgxNFY0eiIvPjwvc3ZnPg==": +null)],b?60:null);if(411<=e&&(f=l.actions.get("undo"),b=l.actions.get("redo"),f=c("",f.funct,null,mxResources.get("undo")+" ("+f.shortcut+")",f,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIuNSA4Yy0yLjY1IDAtNS4wNS45OS02LjkgMi42TDIgN3Y5aDlsLTMuNjItMy42MmMxLjM5LTEuMTYgMy4xNi0xLjg4IDUuMTItMS44OCAzLjU0IDAgNi41NSAyLjMxIDcuNiA1LjVsMi4zNy0uNzhDMjEuMDggMTEuMDMgMTcuMTUgOCAxMi41IDh6Ii8+PC9zdmc+"),b=c("", +b.funct,null,mxResources.get("redo")+" ("+b.shortcut+")",b,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTguNCAxMC42QzE2LjU1IDguOTkgMTQuMTUgOCAxMS41IDhjLTQuNjUgMC04LjU4IDMuMDMtOS45NiA3LjIyTDMuOSAxNmMxLjA1LTMuMTkgNC4wNS01LjUgNy42LTUuNSAxLjk1IDAgMy43My43MiA1LjEyIDEuODhMMTMgMTZoOVY3bC0zLjYgMy42eiIvPjwvc3ZnPg=="),d([f,b],60),480<=e)){var b=l.actions.get("zoomIn"),f=l.actions.get("zoomOut"),g=l.actions.get("resetView"); +d([c("",function(){m.popupMenuHandler.hideMenu();var a=m.view.scale,b=m.view.translate.x,c=m.view.translate.y;l.actions.get("resetView").funct();1E-5>Math.abs(a-m.view.scale)&&b==m.view.translate.x&&c==m.view.translate.y&&l.actions.get(m.pageVisible?"fitPage":"fitWindow").funct()},!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",g,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMyA1djRoMlY1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnptMiAxMEgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6bTE0IDRoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6bTAtMTZoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yeiIvPjwvc3ZnPg=="), +640<=e?c("",b.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",b,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHptMi41LTRoLTJ2Mkg5di0ySDdWOWgyVjdoMXYyaDJ2MXoiLz48L3N2Zz4="): +null,640<=e?c("",f.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",f,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpNNyA5aDV2MUg3eiIvPjwvc3ZnPg=="): +null],60)}b=l.menus.get("language");null!=b&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=e?(null==O&&(f=r.addMenu("",b.funct),f.setAttribute("title",mxResources.get("language")),f.className="geToolbarButton",f.style.backgroundImage="url("+Editor.globeImage+")",f.style.backgroundPosition="center center",f.style.backgroundRepeat="no-repeat",f.style.backgroundSize="24px 24px",f.style.position="absolute",f.style.height="24px",f.style.width="24px",f.style.zIndex="1",f.style.top="11px",f.style.right= +"8px",f.style.cursor="pointer",n.appendChild(f),O=f),l.buttonContainer.style.paddingRight="34px"):(l.buttonContainer.style.paddingRight="4px",null!=O&&(O.parentNode.removeChild(O),O=null))}g.apply(this,arguments);var k=document.createElement("div");k.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";k.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(k);urlParams.clibs&&b(this);var l=this,m=l.editor.graph; +l.toolbar=this.createToolbar(l.createDiv("geToolbar"));l.defaultLibraryName=mxResources.get("untitledLibrary");var n=document.createElement("div");n.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;border-bottom:1px solid lightgray;background-color:#ffffff;text-align:left;white-space:nowrap;";var q=null,r=new Menubar(l,n);l.statusContainer=l.createStatusContainer();l.statusContainer.style.position="relative";l.statusContainer.style.maxWidth="";l.statusContainer.style.marginTop= +"7px";l.statusContainer.style.marginLeft="6px";l.statusContainer.style.color="gray";l.statusContainer.style.cursor="default";l.editor.addListener("statusChanged",mxUtils.bind(this,function(){l.setStatusText(l.editor.getStatus())}));var v=l.descriptorChanged;l.descriptorChanged=function(){v.apply(this,arguments);var a=l.getCurrentFile();if(null!=a&&null!=a.getTitle()){var b=a.getMode();"google"==b?b="googleDrive":"github"==b?b="gitHub":"onedrive"==b&&(b="oneDrive");b=mxResources.get(b);n.setAttribute("title", +a.getTitle()+(null!=b?" ("+b+")":""))}else n.removeAttribute("title")};l.setStatusText(l.editor.getStatus());n.appendChild(l.statusContainer);l.buttonContainer=document.createElement("div");l.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";n.appendChild(l.buttonContainer);l.menubarContainer=l.buttonContainer;l.tabContainer=document.createElement("div");l.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;border-bottom:1px solid lightgray;background-color:#ffffff;border-top:1px solid lightgray;margin-bottom:-2px;visibility:hidden;"; +var k=l.diagramContainer.parentNode,z=document.createElement("div");z.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";l.diagramContainer.style.top="47px";var E=l.menus.get("viewZoom");if(null!=E){this.tabContainer.style.right="70px";var C=r.addMenu("100%",E.funct);C.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");C.style.whiteSpace="nowrap";C.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";C.style.backgroundPosition="right 6px center"; +C.style.backgroundRepeat="no-repeat";C.style.backgroundColor="#ffffff";C.style.paddingRight="10px";C.style.display="block";C.style.position="absolute";C.style.textDecoration="none";C.style.textDecoration="none";C.style.right="0px";C.style.bottom="0px";C.style.overflow="hidden";C.style.visibility="hidden";C.style.textAlign="center";C.style.color="#000";C.style.fontSize="12px";C.style.color="#707070";C.style.width="59px";C.style.borderTop="1px solid lightgray";C.style.borderLeft="1px solid lightgray"; +C.style.height=parseInt(l.tabContainer.style.height)-1+"px";C.style.lineHeight=parseInt(l.tabContainer.style.height)+1+"px";z.appendChild(C);E=mxUtils.bind(this,function(){C.innerHTML=Math.round(100*l.editor.graph.view.scale)+"%"});l.editor.graph.view.addListener(mxEvent.EVENT_SCALE,E);l.editor.addListener("resetGraphView",E);l.editor.addListener("pageSelected",E);var M=l.setGraphEnabled;l.setGraphEnabled=function(){M.apply(this,arguments);null!=this.tabContainer&&(C.style.visibility=this.tabContainer.style.visibility, +this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?"30px":"0px")}}z.appendChild(l.tabContainer);z.appendChild(n);z.appendChild(l.diagramContainer);k.appendChild(z);l.updateTabContainer();var O=null;f();mxEvent.addListener(window,"resize",function(){f();null!=l.sidebarWindow&&l.sidebarWindow.window.fit();null!=l.formatWindow&&l.formatWindow.window.fit();null!=l.actions.outlineWindow&&l.actions.outlineWindow.window.fit();null!=l.actions.layersWindow&&l.actions.layersWindow.window.fit(); +null!=l.menus.tagsWindow&&l.menus.tagsWindow.window.fit();null!=l.menus.findWindow&&l.menus.findWindow.window.fit()})}}};(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var b=EditorUi.initTheme;EditorUi.initTheme=function(){b.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();mxResources.parse("# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*\n# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE\naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\naddedFile=Added {1}\naddImages=Add Images\naddImageUrl=Add Image URL\naddLayer=Add Layer\naddProperty=Add Property\naddress=Address\naddToExistingDrawing=Add to Existing Drawing\naddWaypoint=Add Waypoint\nadjustTo=Adjust to\nadvanced=Advanced\nalign=Align\nalignment=Alignment\nallChangesLost=All changes will be lost!\nallPages=All Pages\nallProjects=All Projects\nallSpaces=All Spaces\nallTags=All Tags\nanchor=Anchor\nandroid=Android\nangle=Angle\narc=Arc\nareYouSure=Are you sure?\nensureDataSaved=Please ensure your data is saved before closing.\nallChangesSaved=All changes saved\nallChangesSavedInDrive=All changes saved in Drive\nallowPopups=Allow pop-ups to avoid this dialog.\nallowRelativeUrl=Allow relative URL\nalreadyConnected=Nodes already connected\napply=Apply\narchiMate21=ArchiMate 2.1\narrange=Arrange\narrow=Arrow\narrows=Arrows\nasNew=As New\natlas=Atlas\nauthor=Author\nauthorizationRequired=Authorization required\nauthorizeThisAppIn=Authorize this app in {1}:\nauthorize=Authorize\nauthorizing=Authorizing\nautomatic=Automatic\nautosave=Autosave\nautosize=Autosize\nattachments=Attachments\naws=AWS\naws3d=AWS 3D\nazure=Azure\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Borderwidth\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\nbrowser=Browser\nbulletedList=Bulleted List\nbusiness=Business\nbusy=Operation in progress\ncabinets=Cabinets\ncancel=Cancel\ncenter=Center\ncannotLoad=Load attempts failed. Please try again later.\ncannotLogin=Log in attempts failed. Please try again later.\ncannotOpenFile=Cannot open file\nchange=Change\nchangeOrientation=Change Orientation\nchangeUser=Change user\nchangeStorage=Change storage\nchangesNotSaved=Changes have not been saved\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompressed=Compressed\ncommitMessage=Commit Message\ncsv=CSV\ndark=Dark\ndraftFound=A draft for '{1}' has been found. Load it into the editor or discard it to continue.\ndragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?\ndropboxCharsNotAllowed=The following characters are not allowed: / : ? * \" |\ncheck=Check\nchecksum=Checksum\ncircle=Circle\ncisco=Cisco\nclassic=Classic\nclearDefaultStyle=Clear Default Style\nclearWaypoints=Clear Waypoints\nclipart=Clipart\nclose=Close\ncollaborator=Collaborator\ncollaborators=Collaborators\ncollapse=Collapse\ncollapseExpand=Collapse/Expand\ncollapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size\ncollapsible=Collapsible\ncomic=Comic\ncomment=Comment\ncommentsNotes=Comments/Notes\ncompress=Compress\nconnect=Connect\nconnecting=Connecting\nconnectWithDrive=Connect with Google Drive\nconnection=Connection\nconnectionArrows=Connection Arrows\nconnectionPoints=Connection Points\nconstrainProportions=Constrain Proportions\ncontainsValidationErrors=Contains validation errors\ncopiedToClipboard=Copied to clipboard\ncopy=Copy\ncopyConnect=Copy on connect\ncopyOf=Copy of {1}\ncopyOfDrawing=Copy of Drawing\ncopySize=Copy Size\ncopyStyle=Copy Style\ncreate=Create\ncreateNewDiagram=Create New Diagram\ncreateRevision=Create Revision\ncreateShape=Create Shape\ncrop=Crop\ncurved=Curved\ncustom=Custom\ncurrent=Current\ncut=Cut\ndashed=Dashed\ndecideLater=Decide later\ndefault=Default\ndelete=Delete\ndeleteColumn=Delete Column\ndeleteLibrary401=Insufficient permissions to delete this library\ndeleteLibrary404=Selected library could not be found\ndeleteLibrary500=Error deleting library\ndeleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?\ndeleteRow=Delete Row\ndescription=Description\ndevice=Device\ndiagram=Diagram\ndiagramContent=Diagram Content\ndiagramLocked=Diagram has been locked to prevent further data loss.\ndiagramLockedBySince=The diagram is locked by {1} since {2} ago\ndiagramName=Diagram Name\ndiagramIsPublic=Diagram is public\ndiagramIsNotPublic=Diagram is not public\ndiamond=Diamond\ndiamondThin=Diamond (thin)\ndidYouKnow=Did you know...\ndirection=Direction\ndiscard=Discard\ndiscardChangesAndReconnect=Discard Changes and Reconnect\ngoogleDriveMissingClickHere=Google Drive missing? Click here!\ndiscardChanges=Discard Changes\ndisconnected=Disconnected\ndistribute=Distribute\ndone=Done\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Download draw.io Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\ndraftDiscarded=Draft discarded\ndraftSaved=Draft saved\ndragElementsHere=Drag elements here\ndragImagesHere=Drag images or URLs here\ndragUrlsHere=Drag URLs here\ndraw.io=draw.io\ndrawing=Drawing{1}\ndrawingEmpty=Drawing is empty\ndrawingTooLarge=Drawing is too large\ndrawioForWork=Draw.io for GSuite\ndropbox=Dropbox\nduplicate=Duplicate\nduplicateIt=Duplicate {1}\ndivider=Divider\ndx=Dx\ndy=Dy\neast=East\nedit=Edit\neditData=Edit Data\neditDiagram=Edit Diagram\neditGeometry=Edit Geometry\neditImage=Edit Image\neditImageUrl=Edit Image URL\neditLink=Edit Link\neditShape=Edit Shape\neditStyle=Edit Style\neditText=Edit Text\neditTooltip=Edit Tooltip\nglass=Glass\ngoogleImages=Google Images\nimageSearch=Image Search\neip=EIP\nembed=Embed\nembedImages=Embed Images\nmainEmbedNotice=Paste this into the page\nelectrical=Electrical\nellipse=Ellipse\nembedNotice=Paste this once at the end of the page\nenterGroup=Enter Group\nenterName=Enter Name\nenterPropertyName=Enter Property Name\nenterValue=Enter Value\nentityRelation=Entity Relation\nerror=Error\nerrorDeletingFile=Error deleting file\nerrorLoadingFile=Error loading file\nerrorRenamingFile=Error renaming file\nerrorRenamingFileNotFound=Error renaming file. File was not found.\nerrorRenamingFileForbidden=Error renaming file. Insufficient access rights.\nerrorSavingDraft=Error saving draft\nerrorSavingFile=Error saving file\nerrorSavingFileUnknown=Error authorizing with Google's servers. Please refresh the page to re-attempt.\nerrorSavingFileForbidden=Error saving file. Insufficient access rights.\nerrorSavingFileNameConflict=Could not save diagram. Current page already contains file named '{1}'.\nerrorSavingFileNotFound=Error saving file. File was not found.\nerrorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.\nerrorSavingFileSessionTimeout=Your session has ended. Please <a target='_blank' href='{1}'>{2}</a> and return to this tab to try to save again.\nerrorSendingFeedback=Error sending feedback.\nerrorUpdatingPreview=Error updating preview.\nexit=Exit\nexitGroup=Exit Group\nexpand=Expand\nexport=Export\nexporting=Exporting\nexportAs=Export as\nexportOptionsDisabled=Export options disabled\nexportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.\nexternalChanges=External Changes\nextras=Extras\nfacebook=Facebook\nfailedToSaveTryReconnect=Failed to save, trying to reconnect\nfeatureRequest=Feature Request\nfeedback=Feedback\nfeedbackSent=Feedback successfully sent.\nfloorplans=Floorplans\nfile=File\nfileChangedOverwriteDialog=The file has been modified. Do you want to save the file and overwrite those changes?\nfileChangedSyncDialog=The file has been modified. Do you want to synchronize those changes?\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\nfileNearlyFullSeeFaq=File nearly full, please see FAQ\nfileNotFound=File not found\nrepositoryNotFound=Repository not found\nfileNotFoundOrDenied=The file was not found. It does not exist or you do not have read access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\nfileWillBeSavedInAppFolder={1} will be saved in the app folder.\nfill=Fill\nfillColor=Fill Color\nfilterCards=Filter Cards\nfind=Find\nfit=Fit\nfitContainer=Resize Container\nfitIntoContainer=Fit into Container\nfitPage=Fit Page\nfitPageWidth=Fit Page Width\nfitTo=Fit to\nfitToSheetsAcross=sheet(s) across\nfitToBy=by\nfitToSheetsDown=sheet(s) down\nfitTwoPages=Two Pages\nfitWindow=Fit Window\nflip=Flip\nflipH=Flip Horizontal\nflipV=Flip Vertical\nflowchart=Flowchart\nfolder=Folder\nfont=Font\nfontColor=Font Color\nfontFamily=Font Family\nfontSize=Font Size\nforbidden=You are not authorized to access this file\nformat=Format\nformatPanel=Format Panel\nformatted=Formatted\nformattedText=Formatted Text\nformatPng=PNG\nformatGif=GIF\nformatJpg=JPEG\nformatPdf=PDF\nformatSql=SQL\nformatSvg=SVG\nformatHtmlEmbedded=HTML\nformatSvgEmbedded=SVG (with XML)\nformatVsdx=VSDX\nformatVssx=VSSX\nformatXmlPlain=XML (Plain)\nformatXml=XML\nforum=Discussion/Help Forums\nfromTemplate=From Template\nfromTemplateUrl=From Template URL\nfromText=From Text\nfromUrl=From URL\nfromThisPage=From this page\nfullscreen=Fullscreen\ngap=Gap\ngcp=GCP\ngeneral=General\ngithub=GitHub\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\ngradient=Gradient\ngradientColor=Color\ngrid=Grid\ngridColor=Grid Color\ngridSize=Grid Size\ngroup=Group\nguides=Guides\nhateApp=I hate draw.io\nheading=Heading\nheight=Height\nhelp=Help\nhelpTranslate=Help us translate this application\nhide=Hide\nhideIt=Hide {1}\nhidden=Hidden\nhome=Home\nhorizontal=Horizontal\nhorizontalFlow=Horizontal Flow\nhorizontalTree=Horizontal Tree\nhowTranslate=How good is the translation in your language?\nhtml=HTML\nhtmlText=HTML Text\nid=ID\niframe=IFrame\nignore=Ignore\nimage=Image\nimageUrl=Image URL\nimages=Images\nimagePreviewError=This image couldn't be loaded for preview. Please check the URL.\nimageTooBig=Image too big\nimgur=Imgur\nimport=Import\nimportFrom=Import from\nincludeCopyOfMyDiagram=Include a copy of my diagram\nincreaseIndent=Increase Indent\ndecreaseIndent=Decrease Indent\ninsert=Insert\ninsertColumnBefore=Insert Column Left\ninsertColumnAfter=Insert Column Right\ninsertEllipse=Insert Ellipse\ninsertImage=Insert Image\ninsertHorizontalRule=Insert Horizontal Rule\ninsertLink=Insert Link\ninsertPage=Insert Page\ninsertRectangle=Insert Rectangle\ninsertRhombus=Insert Rhombus\ninsertRowBefore=Insert Row Above\ninsertRowAfter=Insert Row After\ninsertText=Insert Text\ninserting=Inserting\ninvalidFilename=Diagram names must not contain the following characters: / | : ; { } < > & + ? = \"\ninvalidLicenseSeeThisPage=Your license is invalid, please see this <a target=\"_blank\" href=\"https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin\">page</a>.\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\nlayers=Layers\nlandscape=Landscape\nlanguage=Language\nleanMapping=Lean Mapping\nlastChange=Last change {1} ago\nlessThanAMinute=less than a minute\nlicensingError=Licensing Error\nlicenseHasExpired=The license for {1} has expired on {2}. Click here.\nlicenseWillExpire=The license for {1} will expire on {2}. Click here.\nlineJumps=Line jumps\nlinkAccountRequired=If the diagram is not public a Google account is required to view the link.\nlinkText=Link Text\nlist=List\nminute=minute\nminutes=minutes\nhours=hours\ndays=days\nmonths=months\nyears=years\nrestartForChangeRequired=Changes will take effect after page refresh.\nlaneColor=Lanecolor\nlastModified=Last modified\nlayout=Layout\nleft=Left\nleftAlign=Left Align\nleftToRight=Left to right\nlibraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.\nlightbox=Lightbox\nline=Line\nlineend=Line end\nlineheight=Line Height\nlinestart=Line start\nlinewidth=Linewidth\nlink=Link\nlinks=Links\nloading=Loading\nlockUnlock=Lock/Unlock\nloggedOut=Logged Out\nlogIn=log in\nloveIt=I love {1}\nlucidchart=Lucidchart\nmaps=Maps\nmathematicalTypesetting=Mathematical Typesetting\nmakeCopy=Make a Copy\nmanual=Manual\nmicrosoftExcel=Microsoft Excel\nmicrosoftPowerPoint=Microsoft PowerPoint\nmicrosoftWord=Microsoft Word\nmiddle=Middle\nminimal=Minimal\nmisc=Misc\nmockups=Mockups\nmodificationDate=Modification date\nmodifiedBy=Modified by\nmore=More\nmoreResults=More Results\nmoreShapes=More Shapes\nmove=Move\nmoveToFolder=Move to Folder\nmoving=Moving\nmoveSelectionTo=Move selection to {1}\nname=Name\nnavigation=Navigation\nnetwork=Network\nnetworking=Networking\nnew=New\nnewLibrary=New Library\nnextPage=Next Page\nno=No\nnoPickFolder=No, pick folder\nnoAttachments=No attachments found\nnoColor=No Color\nnoFiles=No Files\nnoFileSelected=No file selected\nnoLibraries=No libraries found\nnoMoreResults=No more results\nnone=None\nnoOtherViewers=No other viewers\nnoPlugins=No plugins\nnoPreview=No preview\nnoResponse=No response from server\nnoResultsFor=No results for '{1}'\nnoRevisions=No revisions\nnoSearchResults=No search results found\nnoPageContentOrNotSaved=No anchors found on this page or it hasn't been saved yet\nnormal=Normal\nnorth=North\nnotADiagramFile=Not a diagram file\nnotALibraryFile=Not a library file\nnotAvailable=Not available\nnotAUtf8File=Not a UTF-8 file\nnotConnected=Not connected\nnote=Note\nnotUsingService=Not using {1}?\nnumberedList=Numbered list\noffline=Offline\nok=OK\noneDrive=OneDrive\nonline=Online\nopacity=Opacity\nopen=Open\nopenArrow=Open Arrow\nopenExistingDiagram=Open Existing Diagram\nopenFile=Open File\nopenFrom=Open from\nopenLibrary=Open Library\nopenLibraryFrom=Open Library from\nopenLink=Open Link\nopenInNewWindow=Open in New Window\nopenInThisWindow=Open in This Window\nopenIt=Open {1}\nopenRecent=Open Recent\nopenSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy\noptions=Options\norganic=Organic\northogonal=Orthogonal\notherViewer=other viewer\notherViewers=other viewers\noutline=Outline\noval=Oval\npage=Page\npageContent=Page Content\npageNotFound=Page not found\npageWithNumber=Page-{1}\npages=Pages\npageView=Page View\npageSetup=Page Setup\npageScale=Page Scale\npan=Pan\npanTooltip=Space+Drag to pan\npaperSize=Paper Size\npattern=Pattern\npaste=Paste\npasteHere=Paste here\npasteSize=Paste Size\npasteStyle=Paste Style\nperimeter=Perimeter\npermissionAnyone=Anyone can edit\npermissionAuthor=Owner and admins can edit\npickFolder=Pick a folder\npickLibraryDialogTitle=Select Library\npublicDiagramUrl=Public URL of the diagram\nplaceholders=Placeholders\nplantUml=PlantUML\nplugins=Plugins\npluginUrl=Plugin URL\npluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n\nplusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).\nportrait=Portrait\nposition=Position\nposterPrint=Poster Print\npreferences=Preferences\npreview=Preview\npreviousPage=Previous Page\nprint=Print\nprintAllPages=Print All Pages\nprocEng=Proc. Eng.\nproject=Project\npriority=Priority\nproperties=Properties\npublish=Publish\nquickStart=Quick Start Video\nrack=Rack\nradialTree=Radial Tree\nreadOnly=Read-only\nreconnecting=Reconnecting\nrecentlyUpdated=Recently Updated\nrecentlyViewed=Recently Viewed\nrectangle=Rectangle\nredirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.\nrealtimeTimeout=It looks like you've made a few changes while offline. We're sorry, these changes cannot be saved.\nredo=Redo\nrefresh=Refresh\nregularExpression=Regular Expression\nrelative=Relative\nrelativeUrlNotAllowed=Relative URL not allowed\nrememberMe=Remember me\nrememberThisSetting=Remember this setting\nremoveFormat=Clear Formatting\nremoveFromGroup=Remove from Group\nremoveIt=Remove {1}\nremoveWaypoint=Remove Waypoint\nrename=Rename\nrenamed=Renamed\nrenameIt=Rename {1}\nrenaming=Renaming\nreplace=Replace\nreplaceIt={1} already exists. Do you want to replace it?\nreplaceExistingDrawing=Replace existing drawing\nrequired=required\nreset=Reset\nresetView=Reset View\nresize=Resize\nresizeLargeImages=Do you want to resize large images to make the application run faster?\nretina=Retina\nresponsive=Responsive\nrestore=Restore\nrestoring=Restoring\nretryingIn=Retrying in {1} second(s)\nretryingLoad=Load failed. Retrying...\nretryingLogin=Login time out. Retrying...\nreverse=Reverse\nrevision=Revision\nrevisionHistory=Revision History\nrhombus=Rhombus\nright=Right\nrightAlign=Right Align\nrightToLeft=Right to left\nrotate=Rotate\nrotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees\nrotation=Rotation\nrounded=Rounded\nsave=Save\nsaveAndExit=Save & Exit\nsaveAs=Save as\nsaveAsXmlFile=Save as XML file?\nsaved=Saved\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\nsaving=Saving\nscratchpad=Scratchpad\nscrollbars=Scrollbars\nsearch=Search\nsearchShapes=Search Shapes\nselectAll=Select All\nselectionOnly=Selection Only\nselectCard=Select Card\nselectEdges=Select Edges\nselectFile=Select File\nselectFolder=Select Folder\nselectFont=Select Font\nselectNone=Select None\nselectTemplate=Select Template\nselectVertices=Select Vertices\nsendMessage=Send\nsendYourFeedbackToDrawIo=Send your feedback to draw.io\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save. \nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareLink=Link for shared editing\nsharp=Sharp\nshow=Show\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsize=Size\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\nsysml=SysML\ntags=Tags\ntable=Table\ntables=Tables\ntakeOver=Take Over\ntargetSpacing=Target Spacing\ntemplate=Template\ntemplates=Templates\ntext=Text\ntextAlignment=Text Alignment\ntextOpacity=Text Opacity\ntheme=Theme\ntimeout=Timeout\ntitle=Title\nto=to\ntoBack=To Back\ntoFront=To Front\ntooltips=Tooltips\ntop=Top\ntopAlign=Top Align\ntopLeft=Top Left\ntopRight=Top Right\ntransparent=Transparent\ntransparentBackground=Transparent Background\ntrello=Trello\ntryAgain=Try again\ntryOpeningViaThisPage=Try opening via this page.\nturn=Rotate shape only by 90°\ntype=Type\ntwitter=Twitter\numl=UML\nunderline=Underline\nundo=Undo\nungroup=Ungroup\nunsavedChanges=Unsaved changes\nunsavedChangesClickHereToSave=Unsaved changes. Click here to save.\nuntitled=Untitled\nuntitledDiagram=Untitled Diagram\nuntitledLayer=Untitled Layer\nuntitledLibrary=Untitled Library\nunknownError=Unknown error\nupdateFile=Update {1}\nupdatingDocument=Updating Document. Please wait...\nupdatingPreview=Updating Preview. Please wait...\nupdatingSelection=Updating Selection. Please wait...\nupload=Upload\nurl=URL\nuseOffline=Use Offline\nuseRootFolder=Use root folder?\nuserManual=User Manual\nvertical=Vertical\nverticalFlow=Vertical Flow\nverticalTree=Vertical Tree\nview=View\nviewUrl=Link to view: {1}\nvoiceAssistant=Voice Assistant (beta)\nwarning=Warning\nwaypoints=Waypoints\nwest=West\nwidth=Width\nwiki=Wiki\nwordWrap=Word Wrap\nwritingDirection=Writing Direction\nyes=Yes\nyourEmailAddress=Your email address\nzoom=Zoom\nzoomIn=Zoom In\nzoomOut=Zoom Out\nbasic=Basic\nbusinessprocess=Business Processes\ncharts=Charts\nengineering=Engineering\nflowcharts=Flowcharts\ngmdl=Material Design\nmindmaps=Mindmaps\nmockups=Mockups\nnetworkdiagrams=Network Diagrams\nnothingIsSelected=Nothing is selected\nother=Other\nsoftwaredesign=Software Design\nvenndiagrams=Venn Diagrams\nwebEmailOrOther=Web, email or any other internet address\nwebLink=Web Link\nwireframes=Wireframes\nproperty=Property\nvalue=Value\nshowMore=Show More\nshowLess=Show Less\nmyDiagrams=My Diagrams\nallDiagrams=All Diagrams\nrecentlyUsed=Recently used\nlistView=List view\ngridView=Grid view\nresultsFor=Results for '{1}'\n");Graph.prototype.defaultThemes[Graph.prototype.defaultThemeName]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="#ffffff"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#ffffff"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="white"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="#ffffff"/></add></mxStylesheet>').documentElement; +Graph.prototype.defaultThemes.darkTheme=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="#2a2a2a"/><add as="strokeColor" value="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="#2a2a2a"/></add></mxStylesheet>').documentElement;GraphViewer=function(a,b,e){this.init(a,b,e)};mxUtils.extend(GraphViewer,mxEventSource);GraphViewer.prototype.editBlankUrl="https://www.draw.io/";GraphViewer.prototype.imageBaseUrl="https://www.draw.io/";GraphViewer.prototype.toolbarHeight="BackCompat"==document.compatMode?28:30;GraphViewer.prototype.lightboxChrome=!0;GraphViewer.prototype.lightboxZIndex=999;GraphViewer.prototype.toolbarZIndex=999;GraphViewer.prototype.autoFit=!0;GraphViewer.prototype.allowZoomIn=!1; +GraphViewer.prototype.showTitleAsTooltip=!1;GraphViewer.prototype.checkVisibleState=!0;GraphViewer.prototype.minHeight=28;GraphViewer.prototype.minWidth=100; +GraphViewer.prototype.init=function(a,b,e){this.graphConfig=null!=e?e:{};this.autoFit=null!=this.graphConfig["auto-fit"]?this.graphConfig["auto-fit"]:this.autoFit;this.allowZoomIn=null!=this.graphConfig["allow-zoom-in"]?this.graphConfig["allow-zoom-in"]:this.allowZoomIn;this.checkVisibleState=null!=this.graphConfig["check-visible-state"]?this.graphConfig["check-visible-state"]:this.checkVisibleState;this.toolbarItems=null!=this.graphConfig.toolbar?this.graphConfig.toolbar.split(" "):[];this.zoomEnabled= +0<=mxUtils.indexOf(this.toolbarItems,"zoom");this.layersEnabled=0<=mxUtils.indexOf(this.toolbarItems,"layers");this.lightboxEnabled=0<=mxUtils.indexOf(this.toolbarItems,"lightbox");this.lightboxClickEnabled=0!=this.graphConfig.lightbox;this.initialWidth=null!=a?a.style.width:null;this.widthIsEmpty=null!=this.initialWidth?""==this.initialWidth:!0;this.currentPage=parseInt(this.graphConfig.page)||0;this.editor=null;"inline"==this.graphConfig["toolbar-position"]&&(this.minHeight+=this.toolbarHeight); +if(null!=b&&(this.xmlDocument=b.ownerDocument,this.xmlNode=b,this.xml=mxUtils.getXml(b),null!=a)){var c=mxUtils.bind(this,function(){this.graph=new Graph(a);this.graph.transparentBackground=!1;this.graphConfig.move&&(this.graph.isMoveCellsEvent=function(a){return!0});this.lightboxClickEnabled&&(a.style.cursor="pointer");this.editor=new Editor(!0,null,null,this.graph);this.editor.editBlankUrl=this.editBlankUrl;this.graph.lightbox=!0;this.graph.centerZoom=!1;this.graph.autoExtend=!1;this.graph.autoScroll= +!1;this.graph.setEnabled(!1);1==this.graphConfig["toolbar-nohide"]&&(this.editor.defaultGraphOverflow="visible");this.xmlNode=this.editor.extractGraphModel(this.xmlNode,!0);var c=this;this.graph.getImageFromBundles=function(a){return c.getImageUrl(a)};mxClient.IS_SVG&&this.editor.graph.addSvgShadow(this.graph.view.canvas.ownerSVGElement,null,!0);if("mxfile"==b.nodeName){var e=b.getElementsByTagName("diagram");if(0<e.length){var k=this.graph.getGlobalVariable,c=this;this.graph.getGlobalVariable=function(a){var b= +e[c.currentPage];return"page"==a?b.getAttribute("name")||"Page-"+(c.currentPage+1):"pagenumber"==a?c.currentPage+1:k.apply(this,arguments)}}}this.diagrams=[];var m=null;this.selectPage=function(a){this.currentPage=mxUtils.mod(a,this.diagrams.length);this.updateGraphXml(mxUtils.parseXml(this.graph.decompress(mxUtils.getTextContent(this.diagrams[this.currentPage]))).documentElement)};this.selectPageById=function(a){for(var b=!1,c=0;c<this.diagrams.length;c++)if(this.diagrams[c].getAttribute("id")== +a){this.selectPage(c);b=!0;break}return b};var d=mxUtils.bind(this,function(){if(null==this.xmlNode||"mxfile"!=this.xmlNode.nodeName)this.diagrams=[];this.xmlNode!=m&&(this.diagrams=this.xmlNode.getElementsByTagName("diagram"),m=this.xmlNode)});this.addListener("xmlNodeChanged",d);d();urlParams.page=c.currentPage;this.graph.getModel().beginUpdate();try{urlParams.nav=0!=this.graphConfig.nav?"1":"0",this.editor.setGraphXml(this.xmlNode),this.graph.border=null!=this.graphConfig.border?this.graphConfig.border: +8,this.graph.view.scale=this.graphConfig.zoom||1}finally{this.graph.getModel().endUpdate()}this.graph.panningHandler.useLeftButtonForPanning=!0;this.graph.panningHandler.isForcePanningEvent=function(a){return!mxEvent.isPopupTrigger(a.getEvent())&&"auto"==this.graph.container.style.overflow};this.graph.panningHandler.usePopupTrigger=!1;this.graph.panningHandler.pinchEnabled=!1;this.graph.panningHandler.ignoreCell=!0;this.graph.setPanning(!1);this.addSizeHandler();this.showLayers(this.graph);this.addClickHandler(this.graph); +this.graph.setTooltips(0!=this.graphConfig.tooltips);this.graph.initialViewState={translate:this.graph.view.translate.clone(),scale:this.graph.view.scale};c=this;this.graph.customLinkClicked=function(a){var b=!0;if("data:page/id,"==a.substring(0,13)){var d=a.indexOf(",");c.selectPageById(a.substring(d+1))||(b=!1,alert(mxResources.get("pageNotFound")||"Page not found"))}else this.handleCustomLink(a);return b};null!=this.graphConfig.toolbar?this.addToolbar():null!=this.graphConfig.title&&this.showTitleAsTooltip&& +a.setAttribute("title",this.graphConfig.title);this.fireEvent(new mxEventObject("render"))});e=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;if(this.checkVisibleState&&0==a.offsetWidth&&"undefined"!==typeof e){var k=this.getObservableParent(a),m=new e(mxUtils.bind(this,function(b){0<a.offsetWidth&&(m.disconnect(),c())}));m.observe(k,{attributes:!0})}else c()}}; +GraphViewer.prototype.getObservableParent=function(a){for(a=a.parentNode;a!=document.body&&null!=a.parentNode&&"none"!==mxUtils.getCurrentStyle(a).display;)a=a.parentNode;return a};GraphViewer.prototype.getImageUrl=function(a){null!=a&&"http://"!=a.substring(0,7)&&"https://"!=a.substring(0,8)&&"data:image"!=a.substring(0,10)&&("/"==a.charAt(0)&&(a=a.substring(1,a.length)),a=this.imageBaseUrl+a);return a}; +GraphViewer.prototype.setXmlNode=function(a){this.xmlDocument=a.ownerDocument;this.xml=mxUtils.getXml(a);this.xmlNode=a;this.updateGraphXml(a);this.fireEvent(new mxEventObject("xmlNodeChanged"))};GraphViewer.prototype.setFileNode=function(a){null==this.xmlNode&&(this.xmlDocument=a.ownerDocument,this.xml=mxUtils.getXml(a),this.xmlNode=a);this.setGraphXml(a)};GraphViewer.prototype.updateGraphXml=function(a){this.setGraphXml(a);this.fireEvent(new mxEventObject("graphChanged"))}; GraphViewer.prototype.setGraphXml=function(a){null!=this.graph&&(this.graph.view.translate=new mxPoint,this.graph.view.scale=1,this.graph.getModel().clear(),this.editor.setGraphXml(a),this.widthIsEmpty?(this.graph.container.style.width="",this.graph.container.style.height=""):this.graph.container.style.width=this.initialWidth,this.positionGraph(),this.graph.initialViewState={translate:this.graph.view.translate.clone(),scale:this.graph.view.scale})}; -GraphViewer.prototype.addSizeHandler=function(){var a=this.graph.container,b=this.graph.getGraphBounds(),f=!1;a.style.overflow="hidden";var d=mxUtils.bind(this,function(){if(!f){f=!0;var b=this.graph.getGraphBounds();a.style.overflow=a.offsetWidth<=b.width+2*this.graph.border*this.graph.view.scale?"auto":"hidden";if(null!=this.toolbar){var b=a.getBoundingClientRect(),c=mxUtils.getScrollOrigin(document.body),c="relative"===document.body.style.position?document.body.getBoundingClientRect():{left:-c.x, -top:-c.y},b={left:b.left-c.left,top:b.top-c.top,bottom:b.bottom-c.top,right:b.right-c.left};this.toolbar.style.left=b.left+"px";"bottom"==this.graphConfig["toolbar-position"]?this.toolbar.style.top=b.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(this.toolbar.style.width=Math.max(this.minToolbarWidth,a.offsetWidth)+"px",this.toolbar.style.top=b.top+1+"px"):this.toolbar.style.top=b.top+"px"}f=!1}}),k=null,n=!1;this.fitGraph=function(b){var c=a.offsetWidth;c==k||n||(n=!0,this.graph.maxFitScale= -null!=b?b:this.graphConfig.zoom||(this.allowZoomIn?null:1),this.graph.fit(null,null,null,null,!1,!0),this.graph.maxFitScale=null,b=this.graph.getGraphBounds(),this.updateContainerHeight(a,b.height+2*this.graph.border+1),this.graph.initialViewState={translate:this.graph.view.translate.clone(),scale:this.graph.view.scale},k=c,window.setTimeout(function(){n=!1},0))};GraphViewer.useResizeSensor&&(mxClient.IS_QUIRKS||9>=document.documentMode?(mxEvent.addListener(window,"resize",d),this.graph.addListener("size", -d)):new ResizeSensor(this.graph.container,d));if(this.graphConfig.resize||(this.zoomEnabled||!this.autoFit)&&0!=this.graphConfig.resize)this.graph.minimumContainerSize=new mxRectangle(0,0,100,1),this.graph.resizeContainer=!0;else if(this.widthIsEmpty&&this.updateContainerWidth(a,b.width+2*this.graph.border),this.updateContainerHeight(a,b.height+2*this.graph.border+1),!this.zoomEnabled&&this.autoFit){var p=k=null,d=mxUtils.bind(this,function(){window.clearTimeout(p);n||(p=window.setTimeout(mxUtils.bind(this, -this.fitGraph),100))});GraphViewer.useResizeSensor&&(mxClient.IS_QUIRKS||9>=document.documentMode?mxEvent.addListener(window,"resize",d):new ResizeSensor(this.graph.container,d))}else mxClient.IS_QUIRKS||9>=document.documentMode||this.graph.addListener("size",d);var q=mxUtils.bind(this,function(){var d=a.style.minWidth;this.widthIsEmpty&&(a.style.minWidth="100%");if(0<a.offsetWidth&&(this.allowZoomIn||b.width+2*this.graph.border>a.offsetWidth||b.height+2*this.graph.border>this.graphConfig["max-height"])){var c= -null;null!=this.graphConfig["max-height"]&&(c=this.graphConfig["max-height"]/(b.height+2*this.graph.border));this.fitGraph(c)}else this.graph.view.setTranslate(Math.floor((this.graph.border-b.x)/this.graph.view.scale),Math.floor((this.graph.border-b.y)/this.graph.view.scale)),k=a.offsetWidth;a.style.minWidth=d});mxClient.IS_QUIRKS||8==document.documentMode?window.setTimeout(q,0):q();this.positionGraph=function(){b=this.graph.getGraphBounds();k=null;q()}}; -GraphViewer.prototype.updateContainerWidth=function(a,b){a.style.width=b+"px"};GraphViewer.prototype.updateContainerHeight=function(a,b){if(this.zoomEnabled||!this.autoFit||"BackCompat"==document.compatMode||mxClient.IS_QUIRKS||8==document.documentMode)a.style.height=b+"px"}; -GraphViewer.prototype.showLayers=function(a,b){var f=this.graphConfig.layers;if(null!=f||null!=b)if(f=null!=f?f.split(" "):null,null!=b||0<f.length){var d=null!=b?b.getModel():null,k=a.getModel();k.beginUpdate();try{for(var n=k.getChildCount(k.root),p=0;p<n;p++)k.setVisible(k.getChildAt(k.root,p),null!=b?d.isVisible(d.getChildAt(d.root,p)):!1);if(null==d)for(p=0;p<f.length;p++)k.setVisible(k.getChildAt(k.root,parseInt(f[p])),!0)}finally{k.endUpdate()}}}; -GraphViewer.prototype.addToolbar=function(){function a(a,b,c,d){var h=document.createElement("div");h.style.borderRight="1px solid #d0d0d0";h.style.padding="3px 6px 3px 6px";mxEvent.addListener(h,"click",a);null!=c&&h.setAttribute("title",c);h.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("src",b);null==d||d?(mxEvent.addListener(h,"mouseenter",function(){h.style.backgroundColor="#ddd"}),mxEvent.addListener(h,"mouseleave", -function(){h.style.backgroundColor="#eee"}),mxUtils.setOpacity(a,60),h.style.cursor="pointer"):mxUtils.setOpacity(h,30);h.appendChild(a);f.appendChild(h);g++;return h}var b=this.graph.container;"bottom"==this.graphConfig["toolbar-position"]?b.style.marginBottom=this.toolbarHeight+"px":"inline"!=this.graphConfig["toolbar-position"]&&(b.style.marginTop=this.toolbarHeight+"px");var f=b.ownerDocument.createElement("div");f.style.position="absolute";f.style.overflow="hidden";f.style.boxSizing="border-box"; -f.style.whiteSpace="nowrap";f.style.zIndex=this.toolbarZIndex;f.style.backgroundColor="#eee";f.style.height=this.toolbarHeight+"px";this.toolbar=f;if("inline"==this.graphConfig["toolbar-position"]){mxUtils.setPrefixedStyle(f.style,"transition","opacity 100ms ease-in-out");mxUtils.setOpacity(f,30);var d=null,k=null,n=mxUtils.bind(this,function(a){null!=d&&(window.clearTimeout(d),fadeThead=null);null!=k&&(window.clearTimeout(k),fadeThead2=null);d=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(f, -0);d=null;k=window.setTimeout(mxUtils.bind(this,function(){f.style.display="none";k=null}),100)}),a||200)}),p=mxUtils.bind(this,function(a){null!=d&&(window.clearTimeout(d),fadeThead=null);null!=k&&(window.clearTimeout(k),fadeThead2=null);f.style.display="";mxUtils.setOpacity(f,a||30)});mxEvent.addListener(this.graph.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||(p(30),n())}));mxEvent.addListener(f,mxClient.IS_POINTER?"pointermove": -"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(f,"mouseenter",mxUtils.bind(this,function(a){p(100)}));mxEvent.addListener(f,"mousemove",mxUtils.bind(this,function(a){p(100);mxEvent.consume(a)}));mxEvent.addListener(f,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||p(30)}));var q=this.graph,w=q.getTolerance();q.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(a,b){this.startX=b.getGraphX();this.startY=b.getGraphY();this.scrollLeft= -q.container.scrollLeft;this.scrollTop=q.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(a,b){mxEvent.isTouchEvent(b.getEvent())&&Math.abs(this.scrollLeft-q.container.scrollLeft)<w&&Math.abs(this.scrollTop-q.container.scrollTop)<w&&Math.abs(this.startX-b.getGraphX())<w&&Math.abs(this.startY-b.getGraphY())<w&&(0<parseFloat(f.style.opacity||0)?n():p(30))}})}for(var c=this.toolbarItems,g=0,h=null,l=null,t=0;t<c.length;t++){var m=c[t];if("pages"==m){l=b.ownerDocument.createElement("div"); -l.style.cssText="display:inline-block;position:relative;padding:3px 4px 0 4px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;";mxUtils.setOpacity(l,70);var r=a(mxUtils.bind(this,function(){this.selectPage(this.currentPage-1)}),Editor.previousImage,mxResources.get("previousPage")||"Previous Page");r.style.borderRightStyle="none";r.style.paddingLeft="0px";r.style.paddingRight="0px";f.appendChild(l);var x=a(mxUtils.bind(this,function(){this.selectPage(this.currentPage+ -1)}),Editor.nextImage,mxResources.get("nextPage")||"Next Page");x.style.paddingLeft="0px";x.style.paddingRight="0px";m=mxUtils.bind(this,function(){l.innerHTML="";mxUtils.write(l,this.currentPage+1+" / "+this.diagrams.length);l.style.display=1<this.diagrams.length?"inline-block":"none";r.style.display=l.style.display;x.style.display=l.style.display});this.addListener("graphChanged",m);m()}else if("zoom"==m)this.zoomEnabled&&(a(mxUtils.bind(this,function(){this.graph.zoomOut()}),Editor.zoomOutImage, -mxResources.get("zoomOut")||"Zoom Out"),a(mxUtils.bind(this,function(){this.graph.zoomIn()}),Editor.zoomInImage,mxResources.get("zoomIn")||"Zoom In"),a(mxUtils.bind(this,function(){this.graph.view.scaleAndTranslate(this.graph.initialViewState.scale,this.graph.initialViewState.translate.x,this.graph.initialViewState.translate.y)}),Editor.zoomFitImage,mxResources.get("fit")||"Fit"));else if("layers"==m){if(this.layersEnabled){var v=this.graph.getModel(),D=a(mxUtils.bind(this,function(a){if(null!=h)h.parentNode.removeChild(h), -h=null;else{h=this.graph.createLayersDialog();mxEvent.addListener(h,"mouseleave",function(){h.parentNode.removeChild(h);h=null});a=D.getBoundingClientRect();h.style.width="140px";h.style.padding="2px 0px 2px 0px";h.style.border="1px solid #d0d0d0";h.style.backgroundColor="#eee";h.style.fontFamily="Helvetica Neue,Helvetica,Arial Unicode MS,Arial";h.style.fontSize="11px";h.style.zIndex=this.toolbarZIndex+1;mxUtils.setOpacity(h,80);var b=mxUtils.getDocumentScrollOrigin(document);h.style.left=b.x+a.left+ -"px";h.style.top=b.y+a.bottom+"px";document.body.appendChild(h)}}),Editor.layersImage,mxResources.get("layers")||"Layers");v.addListener(mxEvent.CHANGE,function(){D.style.display=1<v.getChildCount(v.root)?"inline-block":"none"});D.style.display=1<v.getChildCount(v.root)?"inline-block":"none"}}else"lightbox"==m?this.lightboxEnabled&&a(mxUtils.bind(this,function(){this.showLightbox()}),Editor.maximizeImage,mxResources.get("show")||"Show"):null!=this.graphConfig["toolbar-buttons"]&&(m=this.graphConfig["toolbar-buttons"][m], -null!=m&&a(null==m.enabled||m.enabled?m.handler:function(){},m.image,m.title,m.enabled))}null!=this.graph.minimumContainerSize&&(this.graph.minimumContainerSize.width=34*g);null!=this.graphConfig.title&&(c=b.ownerDocument.createElement("div"),c.style.cssText="display:inline-block;position:relative;padding:3px 6px 0 6px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;",c.setAttribute("title",this.graphConfig.title),mxUtils.write(c,this.graphConfig.title),mxUtils.setOpacity(c, -70),f.appendChild(c));this.minToolbarWidth=34*g;var y=b.style.border,c=mxUtils.bind(this,function(){var a=b.getBoundingClientRect(),c=mxUtils.getScrollOrigin(document.body),c="relative"===document.body.style.position?document.body.getBoundingClientRect():{left:-c.x,top:-c.y},a={left:a.left-c.left,top:a.top-c.top,bottom:a.bottom-c.top,right:a.right-c.left};f.style.left=a.left+"px";f.style.width="inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,b.offsetWidth)+"px"; -f.style.border="1px solid #d0d0d0";"bottom"==this.graphConfig["toolbar-position"]?f.style.top=a.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(f.style.marginTop=-this.toolbarHeight+"px",f.style.top=a.top+1+"px"):f.style.top=a.top+"px";"1px solid transparent"==y&&(b.style.border="1px solid #d0d0d0");document.body.appendChild(f);var d=mxUtils.bind(this,function(){1!=this.graphConfig["toolbar-nohide"]&&(null!=f.parentNode&&f.parentNode.removeChild(f),null!=h&&(h.parentNode.removeChild(h), -h=null),b.style.border=y)});mxEvent.addListener(document,"mousemove",function(a){for(a=mxEvent.getSource(a);null!=a;){if(a==b||a==f||a==h)return;a=a.parentNode}d()});mxEvent.addListener(document,"mouseleave",function(a){d()})});mxEvent.addListener(b,"mouseenter",c)}; -GraphViewer.prototype.addClickHandler=function(a,b){a.linkPolicy=this.graphConfig.target||a.linkPolicy;a.addClickHandler(this.graphConfig.highlight,mxUtils.bind(this,function(f,d){if(null==d){var k=mxEvent.getSource(f);"a"==k.nodeName.toLowerCase()&&(d=k.getAttribute("href"))}null!=b?null==d||a.isExternalProtocol(d)||a.isBlankLink(d)||window.setTimeout(function(){b.destroy()},0):null!=d&&null==b&&a.isCustomLink(d)&&(mxEvent.isTouchEvent(f)||!mxEvent.isPopupTrigger(f))&&a.customLinkClicked(d)&&mxEvent.consume(f)}), +GraphViewer.prototype.addSizeHandler=function(){var a=this.graph.container,b=this.graph.getGraphBounds(),e=!1;a.style.overflow=1!=this.graphConfig["toolbar-nohide"]?"hidden":"visible";var c=mxUtils.bind(this,function(){if(!e){e=!0;var b=this.graph.getGraphBounds();a.style.overflow=1!=this.graphConfig["toolbar-nohide"]?a.offsetWidth<=b.width+2*this.graph.border*this.graph.view.scale?"auto":"hidden":"visible";if(null!=this.toolbar&&1!=this.graphConfig["toolbar-nohide"]){var b=a.getBoundingClientRect(), +c=mxUtils.getScrollOrigin(document.body),c="relative"===document.body.style.position?document.body.getBoundingClientRect():{left:-c.x,top:-c.y},b={left:b.left-c.left,top:b.top-c.top,bottom:b.bottom-c.top,right:b.right-c.left};this.toolbar.style.left=b.left+"px";"bottom"==this.graphConfig["toolbar-position"]?this.toolbar.style.top=b.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(this.toolbar.style.width=Math.max(this.minToolbarWidth,a.offsetWidth)+"px",this.toolbar.style.top=b.top+1+ +"px"):this.toolbar.style.top=b.top+"px"}e=!1}}),k=null,m=!1;this.fitGraph=function(b){var c=a.offsetWidth;c==k||m||(m=!0,this.graph.maxFitScale=null!=b?b:this.graphConfig.zoom||(this.allowZoomIn?null:1),this.graph.fit(null,null,null,null,!1,!0),this.graph.maxFitScale=null,b=this.graph.getGraphBounds(),this.updateContainerHeight(a,Math.max(this.minHeight,b.height+2*this.graph.border+1)),this.graph.initialViewState={translate:this.graph.view.translate.clone(),scale:this.graph.view.scale},k=c,window.setTimeout(function(){m= +!1},0))};GraphViewer.useResizeSensor&&(mxClient.IS_QUIRKS||9>=document.documentMode?(mxEvent.addListener(window,"resize",c),this.graph.addListener("size",c)):new ResizeSensor(this.graph.container,c));if(this.graphConfig.resize||(this.zoomEnabled||!this.autoFit)&&0!=this.graphConfig.resize)this.graph.minimumContainerSize=new mxRectangle(0,0,this.minWidth,this.minHeight),this.graph.resizeContainer=!0;else if(this.widthIsEmpty&&this.updateContainerWidth(a,b.width+2*this.graph.border),this.updateContainerHeight(a, +Math.max(this.minHeight,b.height+2*this.graph.border+1)),!this.zoomEnabled&&this.autoFit){var q=k=null,c=mxUtils.bind(this,function(){window.clearTimeout(q);m||(q=window.setTimeout(mxUtils.bind(this,this.fitGraph),100))});GraphViewer.useResizeSensor&&(mxClient.IS_QUIRKS||9>=document.documentMode?mxEvent.addListener(window,"resize",c):new ResizeSensor(this.graph.container,c))}else mxClient.IS_QUIRKS||9>=document.documentMode||this.graph.addListener("size",c);var r=mxUtils.bind(this,function(){var c= +a.style.minWidth;this.widthIsEmpty&&(a.style.minWidth="100%");if(0<a.offsetWidth&&(this.allowZoomIn||b.width+2*this.graph.border>a.offsetWidth||b.height+2*this.graph.border>this.graphConfig["max-height"])){var e=null;null!=this.graphConfig["max-height"]&&(e=this.graphConfig["max-height"]/(b.height+2*this.graph.border));this.fitGraph(e)}else this.graph.view.setTranslate(Math.floor((this.graph.border-b.x)/this.graph.view.scale),Math.floor((this.graph.border-b.y)/this.graph.view.scale)),k=a.offsetWidth; +a.style.minWidth=c});mxClient.IS_QUIRKS||8==document.documentMode?window.setTimeout(r,0):r();this.positionGraph=function(){b=this.graph.getGraphBounds();k=null;r()}};GraphViewer.prototype.updateContainerWidth=function(a,b){a.style.width=b+"px"};GraphViewer.prototype.updateContainerHeight=function(a,b){if(this.zoomEnabled||!this.autoFit||"BackCompat"==document.compatMode||mxClient.IS_QUIRKS||8==document.documentMode)a.style.height=b+"px"}; +GraphViewer.prototype.showLayers=function(a,b){var e=this.graphConfig.layers;if(null!=e||null!=b)if(e=null!=e?e.split(" "):null,null!=b||0<e.length){var c=null!=b?b.getModel():null,k=a.getModel();k.beginUpdate();try{for(var m=k.getChildCount(k.root),q=0;q<m;q++)k.setVisible(k.getChildAt(k.root,q),null!=b?c.isVisible(c.getChildAt(c.root,q)):!1);if(null==c)for(q=0;q<e.length;q++)k.setVisible(k.getChildAt(k.root,parseInt(e[q])),!0)}finally{k.endUpdate()}}}; +GraphViewer.prototype.addToolbar=function(){function a(a,b,c,f){var g=document.createElement("div");g.style.borderRight="1px solid #d0d0d0";g.style.padding="3px 6px 3px 6px";mxEvent.addListener(g,"click",a);null!=c&&g.setAttribute("title",c);g.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("src",b);null==f||f?(mxEvent.addListener(g,"mouseenter",function(){g.style.backgroundColor="#ddd"}),mxEvent.addListener(g,"mouseleave", +function(){g.style.backgroundColor="#eee"}),mxUtils.setOpacity(a,60),g.style.cursor="pointer"):mxUtils.setOpacity(g,30);g.appendChild(a);e.appendChild(g);d++;return g}var b=this.graph.container;"bottom"==this.graphConfig["toolbar-position"]?b.style.marginBottom=this.toolbarHeight+"px":"inline"!=this.graphConfig["toolbar-position"]&&(b.style.marginTop=this.toolbarHeight+"px");var e=b.ownerDocument.createElement("div");e.style.position="absolute";e.style.overflow="hidden";e.style.boxSizing="border-box"; +e.style.whiteSpace="nowrap";e.style.textAlign="left";e.style.zIndex=this.toolbarZIndex;e.style.backgroundColor="#eee";e.style.height=this.toolbarHeight+"px";this.toolbar=e;if("inline"==this.graphConfig["toolbar-position"]){mxUtils.setPrefixedStyle(e.style,"transition","opacity 100ms ease-in-out");mxUtils.setOpacity(e,30);var c=null,k=null,m=mxUtils.bind(this,function(a){null!=c&&(window.clearTimeout(c),fadeThead=null);null!=k&&(window.clearTimeout(k),fadeThead2=null);c=window.setTimeout(mxUtils.bind(this, +function(){mxUtils.setOpacity(e,0);c=null;k=window.setTimeout(mxUtils.bind(this,function(){e.style.display="none";k=null}),100)}),a||200)}),q=mxUtils.bind(this,function(a){null!=c&&(window.clearTimeout(c),fadeThead=null);null!=k&&(window.clearTimeout(k),fadeThead2=null);e.style.display="";mxUtils.setOpacity(e,a||30)});mxEvent.addListener(this.graph.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||(q(30),m())}));mxEvent.addListener(e,mxClient.IS_POINTER? +"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(e,"mouseenter",mxUtils.bind(this,function(a){q(100)}));mxEvent.addListener(e,"mousemove",mxUtils.bind(this,function(a){q(100);mxEvent.consume(a)}));mxEvent.addListener(e,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||q(30)}));var r=this.graph,v=r.getTolerance();r.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(a,b){this.startX=b.getGraphX();this.startY=b.getGraphY(); +this.scrollLeft=r.container.scrollLeft;this.scrollTop=r.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(a,b){mxEvent.isTouchEvent(b.getEvent())&&Math.abs(this.scrollLeft-r.container.scrollLeft)<v&&Math.abs(this.scrollTop-r.container.scrollTop)<v&&Math.abs(this.startX-b.getGraphX())<v&&Math.abs(this.startY-b.getGraphY())<v&&(0<parseFloat(e.style.opacity||0)?m():q(30))}})}for(var z=this.toolbarItems,d=0,f=null,l=null,n=0;n<z.length;n++){var g=z[n];if("pages"==g){l=b.ownerDocument.createElement("div"); +l.style.cssText="display:inline-block;position:relative;padding:3px 4px 0 4px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;";mxUtils.setOpacity(l,70);var p=a(mxUtils.bind(this,function(){this.selectPage(this.currentPage-1)}),Editor.previousImage,mxResources.get("previousPage")||"Previous Page");p.style.borderRightStyle="none";p.style.paddingLeft="0px";p.style.paddingRight="0px";e.appendChild(l);var B=a(mxUtils.bind(this,function(){this.selectPage(this.currentPage+ +1)}),Editor.nextImage,mxResources.get("nextPage")||"Next Page");B.style.paddingLeft="0px";B.style.paddingRight="0px";g=mxUtils.bind(this,function(){l.innerHTML="";mxUtils.write(l,this.currentPage+1+" / "+this.diagrams.length);l.style.display=1<this.diagrams.length?"inline-block":"none";p.style.display=l.style.display;B.style.display=l.style.display});this.addListener("graphChanged",g);g()}else if("zoom"==g)this.zoomEnabled&&(a(mxUtils.bind(this,function(){this.graph.zoomOut()}),Editor.zoomOutImage, +mxResources.get("zoomOut")||"Zoom Out"),a(mxUtils.bind(this,function(){this.graph.zoomIn()}),Editor.zoomInImage,mxResources.get("zoomIn")||"Zoom In"),a(mxUtils.bind(this,function(){this.graph.view.scaleAndTranslate(this.graph.initialViewState.scale,this.graph.initialViewState.translate.x,this.graph.initialViewState.translate.y)}),Editor.zoomFitImage,mxResources.get("fit")||"Fit"));else if("layers"==g){if(this.layersEnabled){var x=this.graph.getModel(),t=a(mxUtils.bind(this,function(a){if(null!=f)f.parentNode.removeChild(f), +f=null;else{f=this.graph.createLayersDialog();mxEvent.addListener(f,"mouseleave",function(){f.parentNode.removeChild(f);f=null});a=t.getBoundingClientRect();f.style.width="140px";f.style.padding="2px 0px 2px 0px";f.style.border="1px solid #d0d0d0";f.style.backgroundColor="#eee";f.style.fontFamily="Helvetica Neue,Helvetica,Arial Unicode MS,Arial";f.style.fontSize="11px";f.style.zIndex=this.toolbarZIndex+1;mxUtils.setOpacity(f,80);var b=mxUtils.getDocumentScrollOrigin(document);f.style.left=b.x+a.left+ +"px";f.style.top=b.y+a.bottom+"px";document.body.appendChild(f)}}),Editor.layersImage,mxResources.get("layers")||"Layers");x.addListener(mxEvent.CHANGE,function(){t.style.display=1<x.getChildCount(x.root)?"inline-block":"none"});t.style.display=1<x.getChildCount(x.root)?"inline-block":"none"}}else"lightbox"==g?this.lightboxEnabled&&a(mxUtils.bind(this,function(){this.showLightbox()}),Editor.maximizeImage,mxResources.get("show")||"Show"):null!=this.graphConfig["toolbar-buttons"]&&(g=this.graphConfig["toolbar-buttons"][g], +null!=g&&a(null==g.enabled||g.enabled?g.handler:function(){},g.image,g.title,g.enabled))}null!=this.graph.minimumContainerSize&&(this.graph.minimumContainerSize.width=34*d);null!=this.graphConfig.title&&(z=b.ownerDocument.createElement("div"),z.style.cssText="display:inline-block;position:relative;padding:3px 6px 0 6px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;",z.setAttribute("title",this.graphConfig.title),mxUtils.write(z,this.graphConfig.title),mxUtils.setOpacity(z, +70),e.appendChild(z));this.minToolbarWidth=34*d;var y=b.style.border,z=mxUtils.bind(this,function(){e.style.width="inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,b.offsetWidth)+"px";e.style.border="1px solid #d0d0d0";if(1!=this.graphConfig["toolbar-nohide"]){var a=b.getBoundingClientRect(),c=mxUtils.getScrollOrigin(document.body),c="relative"===document.body.style.position?document.body.getBoundingClientRect():{left:-c.x,top:-c.y},a={left:a.left-c.left,top:a.top- +c.top,bottom:a.bottom-c.top,right:a.right-c.left};e.style.left=a.left+"px";"bottom"==this.graphConfig["toolbar-position"]?e.style.top=a.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(e.style.marginTop=-this.toolbarHeight+"px",e.style.top=a.top+1+"px"):e.style.top=a.top+"px";"1px solid transparent"==y&&(b.style.border="1px solid #d0d0d0");document.body.appendChild(e);var d=mxUtils.bind(this,function(){null!=e.parentNode&&e.parentNode.removeChild(e);null!=f&&(f.parentNode.removeChild(f), +f=null);b.style.border=y});mxEvent.addListener(document,"mousemove",function(a){for(a=mxEvent.getSource(a);null!=a;){if(a==b||a==e||a==f)return;a=a.parentNode}d()});mxEvent.addListener(document,"mouseleave",function(a){d()})}else e.style.top=-this.toolbarHeight+"px",b.appendChild(e)});1!=this.graphConfig["toolbar-nohide"]?mxEvent.addListener(b,"mouseenter",z):z()}; +GraphViewer.prototype.addClickHandler=function(a,b){a.linkPolicy=this.graphConfig.target||a.linkPolicy;a.addClickHandler(this.graphConfig.highlight,mxUtils.bind(this,function(e,c){if(null==c){var k=mxEvent.getSource(e);"a"==k.nodeName.toLowerCase()&&(c=k.getAttribute("href"))}null!=b?null==c||a.isExternalProtocol(c)||a.isBlankLink(c)||window.setTimeout(function(){b.destroy()},0):null!=c&&null==b&&a.isCustomLink(c)&&(mxEvent.isTouchEvent(e)||!mxEvent.isPopupTrigger(e))&&a.customLinkClicked(c)&&mxEvent.consume(e)}), mxUtils.bind(this,function(a){null!=b||!this.lightboxClickEnabled||mxEvent.isTouchEvent(a)&&0!=this.toolbarItems.length||this.showLightbox()}))}; -GraphViewer.prototype.showLightbox=function(a,b,f){if("open"==this.graphConfig.lightbox||window.self!==window.top)if(null==this.lightboxWindow||this.lightboxWindow.closed){a=null!=a?a:null!=this.graphConfig.editable?this.graphConfig.editable:!0;f={client:1,lightbox:1,target:null!=f?f:"blank"};a&&(f.edit=this.graphConfig.edit||"_blank");if(null!=b?b:1)f.close=1;this.layersEnabled&&(f.layers=1);null!=this.graphConfig&&0!=this.graphConfig.nav&&(f.nav=1);null!=this.graphConfig&&null!=this.graphConfig.highlight&& -(f.highlight=this.graphConfig.highlight.substring(1));null!=this.currentPage&&0<this.currentPage&&(f.page=this.currentPage);"undefined"!==typeof window.postMessage&&(null==document.documentMode||10<=document.documentMode)?null==this.lightboxWindow&&mxEvent.addListener(window,"message",mxUtils.bind(this,function(a){"ready"==a.data&&a.source==this.lightboxWindow&&this.lightboxWindow.postMessage(this.xml,"*")})):f.data=encodeURIComponent(this.xml);a="www.draw.io";"1"==urlParams.dev&&(f.dev="1",f.drawdev= -"1",a="test.draw.io");this.lightboxWindow=window.open("https://"+a+"/#P"+encodeURIComponent(JSON.stringify(f)))}else this.lightboxWindow.focus();else this.showLocalLightbox()}; +GraphViewer.prototype.showLightbox=function(a,b,e){if("open"==this.graphConfig.lightbox||window.self!==window.top)if(null==this.lightboxWindow||this.lightboxWindow.closed){a=null!=a?a:null!=this.graphConfig.editable?this.graphConfig.editable:!0;e={client:1,lightbox:1,target:null!=e?e:"blank"};a&&(e.edit=this.graphConfig.edit||"_blank");if(null!=b?b:1)e.close=1;this.layersEnabled&&(e.layers=1);null!=this.graphConfig&&0!=this.graphConfig.nav&&(e.nav=1);null!=this.graphConfig&&null!=this.graphConfig.highlight&& +(e.highlight=this.graphConfig.highlight.substring(1));null!=this.currentPage&&0<this.currentPage&&(e.page=this.currentPage);"undefined"!==typeof window.postMessage&&(null==document.documentMode||10<=document.documentMode)?null==this.lightboxWindow&&mxEvent.addListener(window,"message",mxUtils.bind(this,function(a){"ready"==a.data&&a.source==this.lightboxWindow&&this.lightboxWindow.postMessage(this.xml,"*")})):e.data=encodeURIComponent(this.xml);a="www.draw.io";"1"==urlParams.dev&&(e.dev="1",e.drawdev= +"1",a="test.draw.io");this.lightboxWindow=window.open("https://"+a+"/#P"+encodeURIComponent(JSON.stringify(e)))}else this.lightboxWindow.focus();else this.showLocalLightbox()}; GraphViewer.prototype.showLocalLightbox=function(){var a=mxUtils.getDocumentScrollOrigin(document),b=document.createElement("div");mxClient.IS_QUIRKS?(b.style.position="absolute",b.style.left=a.x+"px",b.style.top=a.y+"px",b.style.width=document.body.offsetWidth+"px",b.style.height=document.body.offsetHeight+"px"):b.style.cssText="position:fixed;top:0;left:0;bottom:0;right:0;";b.style.zIndex=this.lightboxZIndex;b.style.backgroundColor="#000000";mxUtils.setOpacity(b,70);document.body.appendChild(b); -var f=document.createElement("img");f.setAttribute("border","0");f.setAttribute("src",Editor.closeImage);mxClient.IS_QUIRKS?(f.style.position="absolute",f.style.right="32px",f.style.top=a.y+32+"px"):f.style.cssText="position:fixed;top:32px;right:32px;";f.style.cursor="pointer";mxEvent.addListener(f,"click",function(){d.destroy()});urlParams.pages="1";urlParams.page=this.currentPage;urlParams.nav=0!=this.graphConfig.nav?"1":"0";urlParams.layers=this.layersEnabled?"1":"0";if(null==document.documentMode|| -10<=document.documentMode)Editor.prototype.editButtonLink=this.graphConfig.edit,Editor.prototype.editButtonFunc=this.graphConfig.editFunc;EditorUi.prototype.updateActionStates=function(){};EditorUi.prototype.addBeforeUnloadListener=function(){};EditorUi.prototype.addChromelessClickHandler=function(){};Graph.prototype.shadowId="lightboxDropShadow";var d=new EditorUi(new Editor(!0),document.createElement("div"),!0);d.editor.editBlankUrl=this.editBlankUrl;Graph.prototype.shadowId="dropShadow";d.refresh= -function(){};var k=mxUtils.bind(this,function(a){27==a.keyCode&&d.destroy()}),n=d.destroy;d.destroy=function(){mxEvent.removeListener(document.documentElement,"keydown",k);document.body.removeChild(b);document.body.removeChild(f);document.body.style.overflow="auto";GraphViewer.resizeSensorEnabled=!0;n.apply(this,arguments)};var p=d.editor.graph,q=p.container;q.style.overflow="hidden";this.lightboxChrome?(q.style.border="1px solid #c0c0c0",q.style.margin="40px",mxEvent.addListener(document.documentElement, -"keydown",k)):(b.style.display="none",f.style.display="none");var w=this;p.getImageFromBundles=function(a){return w.getImageUrl(a)};var c=d.createTemporaryGraph;d.createTemporaryGraph=function(){var a=c.apply(this,arguments);a.getImageFromBundles=function(a){return w.getImageUrl(a)};return a};this.graphConfig.move&&(p.isMoveCellsEvent=function(a){return!0});mxClient.IS_QUIRKS||(mxUtils.setPrefixedStyle(q.style,"border-radius","4px"),q.style.position="fixed");GraphViewer.resizeSensorEnabled=!1;document.body.style.overflow= -"hidden";mxClient.IS_SF||mxClient.IS_EDGE||(mxUtils.setPrefixedStyle(q.style,"transform","rotateY(90deg)"),mxUtils.setPrefixedStyle(q.style,"transition","all .25s ease-in-out"));this.addClickHandler(p,d);window.setTimeout(mxUtils.bind(this,function(){q.style.outline="none";q.style.zIndex=this.lightboxZIndex;f.style.zIndex=this.lightboxZIndex;document.body.appendChild(q);document.body.appendChild(f);d.setFileData(this.xml);mxUtils.setPrefixedStyle(q.style,"transform","rotateY(0deg)");d.chromelessToolbar.style.bottom= -"60px";d.chromelessToolbar.style.zIndex=this.lightboxZIndex;document.body.appendChild(d.chromelessToolbar);d.getEditBlankXml=mxUtils.bind(this,function(){return this.xml});mxClient.IS_QUIRKS&&(q.style.position="absolute",q.style.display="block",q.style.left=a.x+"px",q.style.top=a.y+"px",q.style.width=document.body.clientWidth-80+"px",q.style.height=document.body.clientHeight-80+"px",q.style.backgroundColor="white",d.chromelessToolbar.style.display="block",d.chromelessToolbar.style.position="absolute", -d.chromelessToolbar.style.bottom="",d.chromelessToolbar.style.top=a.y+document.body.clientHeight-100+"px");d.lightboxFit();d.chromelessResize();this.showLayers(p,this.graph);mxEvent.addListener(b,"click",function(){d.destroy()})}),0);return d};GraphViewer.processElements=function(a){mxUtils.forEach(GraphViewer.getElementsByClassName(a||"mxgraph"),function(a){try{a.innerHTML="",GraphViewer.createViewerForElement(a)}catch(f){throw a.innerHTML=f.message,f;}})}; -GraphViewer.getElementsByClassName=function(a){if(document.getElementsByClassName){var b=document.getElementsByClassName(a);a=[];for(var f=0;f<b.length;f++)a.push(b[f]);return a}for(var d=document.getElementsByTagName("*"),b=[],f=0;f<d.length;f++){var k=d[f].className;null!=k&&0<k.length&&(k=k.split(" "),0<=mxUtils.indexOf(k,a)&&b.push(d[f]))}return b}; -GraphViewer.createViewerForElement=function(a,b){var f=a.getAttribute("data-mxgraph");if(null!=f){var d=JSON.parse(f),k=function(f){f=mxUtils.parseXml(f);f=new GraphViewer(a,f.documentElement,d);null!=b&&b(f)};null!=d.url?GraphViewer.getUrl(d.url,function(a){k(a)}):k(d.xml)}}; +var e=document.createElement("img");e.setAttribute("border","0");e.setAttribute("src",Editor.closeImage);mxClient.IS_QUIRKS?(e.style.position="absolute",e.style.right="32px",e.style.top=a.y+32+"px"):e.style.cssText="position:fixed;top:32px;right:32px;";e.style.cursor="pointer";mxEvent.addListener(e,"click",function(){c.destroy()});urlParams.pages="1";urlParams.page=this.currentPage;urlParams.nav=0!=this.graphConfig.nav?"1":"0";urlParams.layers=this.layersEnabled?"1":"0";if(null==document.documentMode|| +10<=document.documentMode)Editor.prototype.editButtonLink=this.graphConfig.edit,Editor.prototype.editButtonFunc=this.graphConfig.editFunc;EditorUi.prototype.updateActionStates=function(){};EditorUi.prototype.addBeforeUnloadListener=function(){};EditorUi.prototype.addChromelessClickHandler=function(){};Graph.prototype.shadowId="lightboxDropShadow";var c=new EditorUi(new Editor(!0),document.createElement("div"),!0);c.editor.editBlankUrl=this.editBlankUrl;Graph.prototype.shadowId="dropShadow";c.refresh= +function(){};var k=mxUtils.bind(this,function(a){27==a.keyCode&&c.destroy()}),m=c.destroy;c.destroy=function(){mxEvent.removeListener(document.documentElement,"keydown",k);document.body.removeChild(b);document.body.removeChild(e);document.body.style.overflow="auto";GraphViewer.resizeSensorEnabled=!0;m.apply(this,arguments)};var q=c.editor.graph,r=q.container;r.style.overflow="hidden";this.lightboxChrome?(r.style.border="1px solid #c0c0c0",r.style.margin="40px",mxEvent.addListener(document.documentElement, +"keydown",k)):(b.style.display="none",e.style.display="none");var v=this;q.getImageFromBundles=function(a){return v.getImageUrl(a)};var z=c.createTemporaryGraph;c.createTemporaryGraph=function(){var a=z.apply(this,arguments);a.getImageFromBundles=function(a){return v.getImageUrl(a)};return a};this.graphConfig.move&&(q.isMoveCellsEvent=function(a){return!0});mxClient.IS_QUIRKS||(mxUtils.setPrefixedStyle(r.style,"border-radius","4px"),r.style.position="fixed");GraphViewer.resizeSensorEnabled=!1;document.body.style.overflow= +"hidden";mxClient.IS_SF||mxClient.IS_EDGE||(mxUtils.setPrefixedStyle(r.style,"transform","rotateY(90deg)"),mxUtils.setPrefixedStyle(r.style,"transition","all .25s ease-in-out"));this.addClickHandler(q,c);window.setTimeout(mxUtils.bind(this,function(){r.style.outline="none";r.style.zIndex=this.lightboxZIndex;e.style.zIndex=this.lightboxZIndex;document.body.appendChild(r);document.body.appendChild(e);c.setFileData(this.xml);mxUtils.setPrefixedStyle(r.style,"transform","rotateY(0deg)");c.chromelessToolbar.style.bottom= +"60px";c.chromelessToolbar.style.zIndex=this.lightboxZIndex;document.body.appendChild(c.chromelessToolbar);c.getEditBlankXml=mxUtils.bind(this,function(){return this.xml});mxClient.IS_QUIRKS&&(r.style.position="absolute",r.style.display="block",r.style.left=a.x+"px",r.style.top=a.y+"px",r.style.width=document.body.clientWidth-80+"px",r.style.height=document.body.clientHeight-80+"px",r.style.backgroundColor="white",c.chromelessToolbar.style.display="block",c.chromelessToolbar.style.position="absolute", +c.chromelessToolbar.style.bottom="",c.chromelessToolbar.style.top=a.y+document.body.clientHeight-100+"px");c.lightboxFit();c.chromelessResize();this.showLayers(q,this.graph);mxEvent.addListener(b,"click",function(){c.destroy()})}),0);return c};GraphViewer.processElements=function(a){mxUtils.forEach(GraphViewer.getElementsByClassName(a||"mxgraph"),function(a){try{a.innerHTML="",GraphViewer.createViewerForElement(a)}catch(e){throw a.innerHTML=e.message,e;}})}; +GraphViewer.getElementsByClassName=function(a){if(document.getElementsByClassName){var b=document.getElementsByClassName(a);a=[];for(var e=0;e<b.length;e++)a.push(b[e]);return a}for(var c=document.getElementsByTagName("*"),b=[],e=0;e<c.length;e++){var k=c[e].className;null!=k&&0<k.length&&(k=k.split(" "),0<=mxUtils.indexOf(k,a)&&b.push(c[e]))}return b}; +GraphViewer.createViewerForElement=function(a,b){var e=a.getAttribute("data-mxgraph");if(null!=e){var c=JSON.parse(e),k=function(e){e=mxUtils.parseXml(e);e=new GraphViewer(a,e.documentElement,c);null!=b&&b(e)};null!=c.url?GraphViewer.getUrl(c.url,function(a){k(a)}):k(c.xml)}}; GraphViewer.initCss=function(){try{var a=document.createElement("style");a.type="text/css";a.innerHTML="div.mxTooltip {\n-webkit-box-shadow: 3px 3px 12px #C0C0C0;\n-moz-box-shadow: 3px 3px 12px #C0C0C0;\nbox-shadow: 3px 3px 12px #C0C0C0;\nbackground: #FFFFCC;\nborder-style: solid;\nborder-width: 1px;\nborder-color: black;\nfont-family: Arial;\nfont-size: 8pt;\nposition: absolute;\ncursor: default;\npadding: 4px;\ncolor: black;}\ntd.mxPopupMenuIcon div {\nwidth:16px;\nheight:16px;}\nhtml div.mxPopupMenu {\n-webkit-box-shadow:2px 2px 3px #d5d5d5;\n-moz-box-shadow:2px 2px 3px #d5d5d5;\nbox-shadow:2px 2px 3px #d5d5d5;\n_filter:progid:DXImageTransform.Microsoft.DropShadow(OffX=2, OffY=2, Color='#d0d0d0',Positive='true');\nbackground:white;\nposition:absolute;\nborder:3px solid #e7e7e7;\npadding:3px;}\nhtml table.mxPopupMenu {\nborder-collapse:collapse;\nmargin:0px;}\nhtml td.mxPopupMenuItem {\npadding:7px 30px 7px 30px;\nfont-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;\nfont-size:10pt;}\nhtml td.mxPopupMenuIcon {\nbackground-color:white;\npadding:0px;}\ntd.mxPopupMenuIcon .geIcon {\npadding:2px;\npadding-bottom:4px;\nmargin:2px;\nborder:1px solid transparent;\nopacity:0.5;\n_width:26px;\n_height:26px;}\ntd.mxPopupMenuIcon .geIcon:hover {\nborder:1px solid gray;\nborder-radius:2px;\nopacity:1;}\nhtml tr.mxPopupMenuItemHover {\nbackground-color: #eeeeee;\ncolor: black;}\ntable.mxPopupMenu hr {\ncolor:#cccccc;\nbackground-color:#cccccc;\nborder:none;\nheight:1px;}\ntable.mxPopupMenu tr {\tfont-size:4pt;}\n.geDialog { font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;\nfont-size:10pt;\nborder:none;\nmargin:0px;}\n.geDialog {\tposition:absolute;\tbackground:white;\toverflow:hidden;\tpadding:30px;\tborder:1px solid #acacac;\t-webkit-box-shadow:0px 0px 2px 2px #d5d5d5;\t-moz-box-shadow:0px 0px 2px 2px #d5d5d5;\tbox-shadow:0px 0px 2px 2px #d5d5d5;\t_filter:progid:DXImageTransform.Microsoft.DropShadow(OffX=2, OffY=2, Color='#d5d5d5', Positive='true');\tz-index: 2;}.geDialogClose {\tposition:absolute;\twidth:9px;\theight:9px;\topacity:0.5;\tcursor:pointer;\t_filter:alpha(opacity=50);}.geDialogClose:hover {\topacity:1;}.geDialogTitle {\tbox-sizing:border-box;\twhite-space:nowrap;\tbackground:rgb(229, 229, 229);\tborder-bottom:1px solid rgb(192, 192, 192);\tfont-size:15px;\tfont-weight:bold;\ttext-align:center;\tcolor:rgb(35, 86, 149);}.geDialogFooter {\tbackground:whiteSmoke;\twhite-space:nowrap;\ttext-align:right;\tbox-sizing:border-box;\tborder-top:1px solid #e5e5e5;\tcolor:darkGray;}\n.geBtn {\tbackground-color: #f5f5f5;\tborder-radius: 2px;\tborder: 1px solid #d8d8d8;\tcolor: #333;\tcursor: default;\tfont-size: 11px;\tfont-weight: bold;\theight: 29px;\tline-height: 27px;\tmargin: 0 0 0 8px;\tmin-width: 72px;\toutline: 0;\tpadding: 0 8px;\tcursor: pointer;}.geBtn:hover, .geBtn:focus {\t-webkit-box-shadow: 0px 1px 1px rgba(0,0,0,0.1);\t-moz-box-shadow: 0px 1px 1px rgba(0,0,0,0.1);\tbox-shadow: 0px 1px 1px rgba(0,0,0,0.1);\tborder: 1px solid #c6c6c6;\tbackground-color: #f8f8f8;\tbackground-image: linear-gradient(#f8f8f8 0px,#f1f1f1 100%);\tcolor: #111;}.geBtn:disabled {\topacity: .5;}.gePrimaryBtn {\tbackground-color: #4d90fe;\tbackground-image: linear-gradient(#4d90fe 0px,#4787ed 100%);\tborder: 1px solid #3079ed;\tcolor: #fff;}.gePrimaryBtn:hover, .gePrimaryBtn:focus {\tbackground-color: #357ae8;\tbackground-image: linear-gradient(#4d90fe 0px,#357ae8 100%);\tborder: 1px solid #2f5bb7;\tcolor: #fff;}.gePrimaryBtn:disabled {\topacity: .5;}";document.getElementsByTagName("head")[0].appendChild(a)}catch(b){}}; -GraphViewer.cachedUrls={};GraphViewer.getUrl=function(a,b,f){if(null!=GraphViewer.cachedUrls[a])b(GraphViewer.cachedUrls[a]);else{var d=0<navigator.userAgent.indexOf("MSIE 9")?new XDomainRequest:new XMLHttpRequest;d.open("GET",a);d.onload=function(){b(null!=d.getText?d.getText():d.responseText)};d.onerror=f;d.send()}};GraphViewer.resizeSensorEnabled=!0;GraphViewer.useResizeSensor=!0; -(function(){var a=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(a){return window.setTimeout(a,20)},b=function(f,d){function k(){this.q=[];this.add=function(a){this.q.push(a)};var a,b;this.call=function(){a=0;for(b=this.q.length;a<b;a++)this.q[a].call()}}function n(a,b){return a.currentStyle?a.currentStyle[b]:window.getComputedStyle?window.getComputedStyle(a,null).getPropertyValue(b):a.style[b]}function p(b,c){if(!b.resizedAttached)b.resizedAttached= +GraphViewer.cachedUrls={};GraphViewer.getUrl=function(a,b,e){if(null!=GraphViewer.cachedUrls[a])b(GraphViewer.cachedUrls[a]);else{var c=0<navigator.userAgent.indexOf("MSIE 9")?new XDomainRequest:new XMLHttpRequest;c.open("GET",a);c.onload=function(){b(null!=c.getText?c.getText():c.responseText)};c.onerror=e;c.send()}};GraphViewer.resizeSensorEnabled=!0;GraphViewer.useResizeSensor=!0; +(function(){var a=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(a){return window.setTimeout(a,20)},b=function(e,c){function k(){this.q=[];this.add=function(a){this.q.push(a)};var a,b;this.call=function(){a=0;for(b=this.q.length;a<b;a++)this.q[a].call()}}function m(a,b){return a.currentStyle?a.currentStyle[b]:window.getComputedStyle?window.getComputedStyle(a,null).getPropertyValue(b):a.style[b]}function q(b,c){if(!b.resizedAttached)b.resizedAttached= new k,b.resizedAttached.add(c);else if(b.resizedAttached){b.resizedAttached.add(c);return}b.resizeSensor=document.createElement("div");b.resizeSensor.className="resize-sensor";b.resizeSensor.style.cssText="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;";b.resizeSensor.innerHTML='<div class="resize-sensor-expand" style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;"><div style="position: absolute; left: 0; top: 0; transition: 0s;"></div></div><div class="resize-sensor-shrink" style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;"><div style="position: absolute; left: 0; top: 0; transition: 0s; width: 200%; height: 200%"></div></div>'; -b.appendChild(b.resizeSensor);"static"==n(b,"position")&&(b.style.position="relative");var d=b.resizeSensor.childNodes[0],f=d.childNodes[0],g=b.resizeSensor.childNodes[1],h=function(){f.style.width="100000px";f.style.height="100000px";d.scrollLeft=1E5;d.scrollTop=1E5;g.scrollLeft=1E5;g.scrollTop=1E5};h();var l=!1,p=function(){b.resizedAttached&&(l&&(b.resizedAttached.call(),l=!1),a(p))};a(p);var q,u,w,F,Q=function(){if((w=b.offsetWidth)!=q||(F=b.offsetHeight)!=u)l=!0,q=w,u=F;h()},G=function(a,b,c){a.attachEvent? -a.attachEvent("on"+b,c):a.addEventListener(b,c)};G(d,"scroll",Q);G(g,"scroll",Q)}var q=function(){GraphViewer.resizeSensorEnabled&&d()},w=Object.prototype.toString.call(f),c="[object Array]"===w||"[object NodeList]"===w||"[object HTMLCollection]"===w||"undefined"!==typeof jQuery&&f instanceof jQuery||"undefined"!==typeof Elements&&f instanceof Elements;if(c)for(var w=0,g=f.length;w<g;w++)p(f[w],q);else p(f,q);this.detach=function(){if(c)for(var a=0,d=f.length;a<d;a++)b.detach(f[a]);else b.detach(f)}}; +b.appendChild(b.resizeSensor);"static"==m(b,"position")&&(b.style.position="relative");var d=b.resizeSensor.childNodes[0],e=d.childNodes[0],f=b.resizeSensor.childNodes[1],l=function(){e.style.width="100000px";e.style.height="100000px";d.scrollLeft=1E5;d.scrollTop=1E5;f.scrollLeft=1E5;f.scrollTop=1E5};l();var q=!1,r=function(){b.resizedAttached&&(q&&(b.resizedAttached.call(),q=!1),a(r))};a(r);var v,u,A,z,U=function(){if((A=b.offsetWidth)!=v||(z=b.offsetHeight)!=u)q=!0,v=A,u=z;l()},S=function(a,b,c){a.attachEvent? +a.attachEvent("on"+b,c):a.addEventListener(b,c)};S(d,"scroll",U);S(f,"scroll",U)}var r=function(){GraphViewer.resizeSensorEnabled&&c()},v=Object.prototype.toString.call(e),z="[object Array]"===v||"[object NodeList]"===v||"[object HTMLCollection]"===v||"undefined"!==typeof jQuery&&e instanceof jQuery||"undefined"!==typeof Elements&&e instanceof Elements;if(z)for(var v=0,d=e.length;v<d;v++)q(e[v],r);else q(e,r);this.detach=function(){if(z)for(var a=0,c=e.length;a<c;a++)b.detach(e[a]);else b.detach(e)}}; b.detach=function(a){a.resizeSensor&&(a.removeChild(a.resizeSensor),delete a.resizeSensor,delete a.resizedAttached)};window.ResizeSensor=b})(); (function(){Editor.initMath();GraphViewer.initCss();if(null!=window.onDrawioViewerLoad)window.onDrawioViewerLoad();else GraphViewer.processElements()})(); diff --git a/src/main/webapp/resources/dia.txt b/src/main/webapp/resources/dia.txt index 1e9fda6c..5ff31b89 100644 --- a/src/main/webapp/resources/dia.txt +++ b/src/main/webapp/resources/dia.txt @@ -84,6 +84,7 @@ cannotOpenFile=Cannot open file change=Change changeOrientation=Change Orientation changeUser=Change user +changeStorage=Change storage changesNotSaved=Changes have not been saved userJoined={1} has joined userLeft={1} has left @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Mathematical Typesetting makeCopy=Make a Copy manual=Manual +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Middle minimal=Minimal misc=Misc @@ -652,6 +656,7 @@ specialLink=Special Link standard=Standard starting=Starting straight=Straight +strikethrough=Strikethrough strokeColor=Line Color style=Style subscript=Subscript diff --git a/src/main/webapp/resources/dia_am.txt b/src/main/webapp/resources/dia_am.txt index e4a00ba7..9447f86c 100644 --- a/src/main/webapp/resources/dia_am.txt +++ b/src/main/webapp/resources/dia_am.txt @@ -84,6 +84,7 @@ cannotOpenFile=Cannot open file change=Change changeOrientation=Change Orientation changeUser=Change user +changeStorage=Change storage changesNotSaved=Changes have not been saved userJoined={1} has joined userLeft={1} has left @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Mathematical Typesetting makeCopy=Make a Copy manual=Manual +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Middle minimal=Minimal misc=Misc @@ -652,6 +656,7 @@ specialLink=Special Link standard=Standard starting=Starting straight=Straight +strikethrough=Strikethrough strokeColor=Line Color style=Style subscript=Subscript diff --git a/src/main/webapp/resources/dia_ar.txt b/src/main/webapp/resources/dia_ar.txt index 4afbefe5..d35f43aa 100644 --- a/src/main/webapp/resources/dia_ar.txt +++ b/src/main/webapp/resources/dia_ar.txt @@ -84,6 +84,7 @@ cannotOpenFile=تعذر فتح الملف change=تغيير changeOrientation=تغيير الاتجاه changeUser=تغيير المستخدم +changeStorage=Change storage changesNotSaved=لم يتم حفظ التغييرات userJoined=التحق {1} userLeft=غادر {1} @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=خيارات الإدخال الرياضي makeCopy=إنشاء نسخة manual=يدوي +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=وسط minimal=Minimal misc=متفرقات @@ -652,6 +656,7 @@ specialLink=رابط خاص standard=Standard starting=يتم البدء straight=مستقيم +strikethrough=Strikethrough strokeColor=لون الخط style=نمط subscript=خط صغير diff --git a/src/main/webapp/resources/dia_bg.txt b/src/main/webapp/resources/dia_bg.txt index 0c4cff87..bd15216a 100644 --- a/src/main/webapp/resources/dia_bg.txt +++ b/src/main/webapp/resources/dia_bg.txt @@ -84,6 +84,7 @@ cannotOpenFile=Файлът не може да бъде отворен change=Промяна changeOrientation=Промяна на ориентацията changeUser=Промяна на потребител +changeStorage=Change storage changesNotSaved=Промените не са запазени userJoined={1} се присъедини userLeft={1} напусна @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Математическа текстообработка makeCopy=Направи копие manual=Ръководство +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Среден minimal=Minimal misc=Разни @@ -652,6 +656,7 @@ specialLink=Специален линк standard=Стандартен starting=Стартиране straight=Прав +strikethrough=Strikethrough strokeColor=Цвят на линията style=Стил subscript=Долен индекс diff --git a/src/main/webapp/resources/dia_bn.txt b/src/main/webapp/resources/dia_bn.txt index f24105a9..9f1bd06a 100644 --- a/src/main/webapp/resources/dia_bn.txt +++ b/src/main/webapp/resources/dia_bn.txt @@ -84,6 +84,7 @@ cannotOpenFile=Cannot open file change=Change changeOrientation=Change Orientation changeUser=Change user +changeStorage=Change storage changesNotSaved=Changes have not been saved userJoined={1} has joined userLeft={1} has left @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Mathematical Typesetting makeCopy=Make a Copy manual=Manual +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Middle minimal=Minimal misc=Misc @@ -652,6 +656,7 @@ specialLink=Special Link standard=Standard starting=Starting straight=Straight +strikethrough=Strikethrough strokeColor=Line Color style=Style subscript=Subscript diff --git a/src/main/webapp/resources/dia_bs.txt b/src/main/webapp/resources/dia_bs.txt index 7643a026..daabc810 100644 --- a/src/main/webapp/resources/dia_bs.txt +++ b/src/main/webapp/resources/dia_bs.txt @@ -84,6 +84,7 @@ cannotOpenFile=Fajl se ne može otvoriti. change=Promijeni changeOrientation=Promijeni orijentaciju changeUser=Promijeni korisnika +changeStorage=Change storage changesNotSaved=Promjene nisu spašene. userJoined={1} se pridružio userLeft={1} je otišao @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Matematičke postavke pisanja makeCopy=Napravi kopiju manual=Ručno +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Sredina minimal=Minimal misc=Mješavina @@ -652,6 +656,7 @@ specialLink=Poseban link standard=Standard starting=Početak straight=Pravo +strikethrough=Strikethrough strokeColor=Boja linije style=Stil subscript=Pretplata diff --git a/src/main/webapp/resources/dia_ca.txt b/src/main/webapp/resources/dia_ca.txt index b37fea8e..7d4512de 100644 --- a/src/main/webapp/resources/dia_ca.txt +++ b/src/main/webapp/resources/dia_ca.txt @@ -84,6 +84,7 @@ cannotOpenFile=No es pot obrir el fitxer change=Canvia changeOrientation=Canvia l'orientació changeUser=Canvia d'usuari +changeStorage=Change storage changesNotSaved=No s'han desat els canvis userJoined={1} s'ha afegit userLeft={1} ha sortit @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Composició tipogràfica matemàtica makeCopy=Fes una còpia manual=Manual +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Mig minimal=Minimal misc=Diversos @@ -652,6 +656,7 @@ specialLink=Enllaç especial standard=Estàndard starting=Iniciant straight=Recte +strikethrough=Strikethrough strokeColor=Color de la línia style=Estil subscript=Subíndex diff --git a/src/main/webapp/resources/dia_cs.txt b/src/main/webapp/resources/dia_cs.txt index f8b8f4c2..b7e19dba 100644 --- a/src/main/webapp/resources/dia_cs.txt +++ b/src/main/webapp/resources/dia_cs.txt @@ -84,6 +84,7 @@ cannotOpenFile=Nelze otevřít soubor change=Změnit changeOrientation=Změnit orientaci changeUser=Změnit uživatele +changeStorage=Change storage changesNotSaved=Změny nebyly uloženy userJoined={1} se připojil userLeft={1} se odhlásil @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Matematické nastavení písma makeCopy=Udělat kopii manual=Manuál +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Střed minimal=Minimal misc=Různé @@ -652,6 +656,7 @@ specialLink=Speciální odkaz standard=Standardní starting=Začínám straight=Přímý +strikethrough=Strikethrough strokeColor=Barva čáry style=Styl subscript=Dolní index diff --git a/src/main/webapp/resources/dia_da.txt b/src/main/webapp/resources/dia_da.txt index db795dee..345c0252 100644 --- a/src/main/webapp/resources/dia_da.txt +++ b/src/main/webapp/resources/dia_da.txt @@ -84,6 +84,7 @@ cannotOpenFile=Kan ikke åbne fil change=Skift changeOrientation=Skift Orientering changeUser=Skift bruger +changeStorage=Change storage changesNotSaved=Ændringerne blev ikke gemt userJoined={1} deltager nu i chatten userLeft={1} har forladt chatten @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Matematisk tegnsætning makeCopy=Opret en kopi manual=Manual +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Midte minimal=Minimal misc=Div. @@ -652,6 +656,7 @@ specialLink=Specielt link standard=Standard starting=Startes straight=Lige +strikethrough=Strikethrough strokeColor=Linjefarve style=Typografi subscript=Sænket skrift diff --git a/src/main/webapp/resources/dia_de.txt b/src/main/webapp/resources/dia_de.txt index 16d4848a..f457605f 100644 --- a/src/main/webapp/resources/dia_de.txt +++ b/src/main/webapp/resources/dia_de.txt @@ -84,6 +84,7 @@ cannotOpenFile=Kann Datei nicht öffnen change=Ändern changeOrientation=Orientierung ändern changeUser=Benutzer ändern +changeStorage=Speicherort ändern changesNotSaved=Änderungen wurden nicht gespeichert userJoined={1} ist beigetreten userLeft={1} hat verlassen @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Mathematischer Formelsatz makeCopy=Kopie erstellen manual=Manuell +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Mitte minimal=Minimal misc=Verschiedenes @@ -652,6 +656,7 @@ specialLink=Besondere Verknüpfung standard=Standard starting=Wird gestartet straight=Gerade +strikethrough=Durchgestrichen strokeColor=Linienfarbe style=Style subscript=Tiefgestellt diff --git a/src/main/webapp/resources/dia_el.txt b/src/main/webapp/resources/dia_el.txt index f1cfe798..7c3de9ed 100644 --- a/src/main/webapp/resources/dia_el.txt +++ b/src/main/webapp/resources/dia_el.txt @@ -84,6 +84,7 @@ cannotOpenFile=Το αρχείο δεν μπορεί να ανοίξει change=Αλλαγή changeOrientation=Αλλαγή Προσανατολισμού changeUser=Αλλαγή χρήστη +changeStorage=Change storage changesNotSaved=Οι αλλαγές δεν έχουν αποθηκευτεί userJoined={1} έχει εισέρθει userLeft={1} έχει εξέρθει @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Μαθηματική ρύθμιση κειμένου προς εκτύπωση makeCopy=Δημιουργία αντιγράφου manual=Χειροκίνητα +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Μέσο minimal=Minimal misc=Misc @@ -652,6 +656,7 @@ specialLink=Ειδικός σύνδεσμος standard=Πρότυπο starting=Έναρξη straight=Ευθεία +strikethrough=Strikethrough strokeColor=Χρώμα γραμμής style=Εμφάνιση subscript=Δείκτης diff --git a/src/main/webapp/resources/dia_eo.txt b/src/main/webapp/resources/dia_eo.txt index 434c7cd7..fcf5b40e 100644 --- a/src/main/webapp/resources/dia_eo.txt +++ b/src/main/webapp/resources/dia_eo.txt @@ -84,6 +84,7 @@ cannotOpenFile=Cannot open file change=Ŝanĝi changeOrientation=Change Orientation changeUser=Ŝanĝi uzanton +changeStorage=Change storage changesNotSaved=Changes have not been saved userJoined={1} has joined userLeft={1} has left @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Mathematical Typesetting makeCopy=Make a Copy manual=Manual +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Middle minimal=Minimal misc=Misc @@ -652,6 +656,7 @@ specialLink=Special Link standard=Standard starting=Starting straight=Straight +strikethrough=Strikethrough strokeColor=Line Color style=Style subscript=Subscript diff --git a/src/main/webapp/resources/dia_es.txt b/src/main/webapp/resources/dia_es.txt index fed8aba9..7b1c31c4 100644 --- a/src/main/webapp/resources/dia_es.txt +++ b/src/main/webapp/resources/dia_es.txt @@ -84,6 +84,7 @@ cannotOpenFile=No se puede abrir el archivo change=Cambiar changeOrientation=Cambiar orientación changeUser=Cambiar usuario +changeStorage=Change storage changesNotSaved=Los cambios no han sido guardados userJoined={1} se ha unido userLeft={1} se ha ido @@ -435,6 +436,9 @@ maps=Mapas mathematicalTypesetting=Composición tipográfica matemática makeCopy=Hacer una copia manual=Manual +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Medio minimal=Minimal misc=Miscelánea @@ -652,6 +656,7 @@ specialLink=Enlace especial standard=Estándar starting=Iniciando straight=Recto +strikethrough=Strikethrough strokeColor=Color de línea style=Estilo subscript=Subíndice diff --git a/src/main/webapp/resources/dia_et.txt b/src/main/webapp/resources/dia_et.txt index cabf6dfe..36a6ea0f 100644 --- a/src/main/webapp/resources/dia_et.txt +++ b/src/main/webapp/resources/dia_et.txt @@ -84,6 +84,7 @@ cannotOpenFile=Faili ei saa avada change=Muuda changeOrientation=Muuda suunda changeUser=Muuda kasutajat +changeStorage=Change storage changesNotSaved=Muudatused on salvestamata userJoined={1} liitus userLeft={1} lahkus @@ -435,6 +436,9 @@ maps=Kaardid mathematicalTypesetting=Matemaatiline vormistus makeCopy=Tee koopia manual=Manuaalne +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Keskel minimal=Minimaalne misc=Erinevad @@ -652,6 +656,7 @@ specialLink=Erilink standard=Standard starting=Algab straight=Sirge +strikethrough=Strikethrough strokeColor=Joone värv style=Stiil subscript=Alaindeks diff --git a/src/main/webapp/resources/dia_fa.txt b/src/main/webapp/resources/dia_fa.txt index d1d7799b..4c5d551f 100644 --- a/src/main/webapp/resources/dia_fa.txt +++ b/src/main/webapp/resources/dia_fa.txt @@ -84,6 +84,7 @@ cannotOpenFile=باز نمون فایل امکانپذیر نیست change=تغییر changeOrientation=تغییر جهت changeUser=تغییر کاربر +changeStorage=Change storage changesNotSaved=تغییرات ذخیره نشدهاند. userJoined={1} پیوسته است. userLeft={1} خارج شده است. @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=حروف چینی ریاضی makeCopy=ایجاد یک کپی manual=دَستی +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=وسط minimal=Minimal misc=متفرقه @@ -652,6 +656,7 @@ specialLink=لینک مخصوص standard=استاندارد starting=شروع straight=مستقیم +strikethrough=Strikethrough strokeColor=رنگ خط style=سبک subscript=زیرنویس diff --git a/src/main/webapp/resources/dia_fi.txt b/src/main/webapp/resources/dia_fi.txt index 56891645..e3d1489b 100644 --- a/src/main/webapp/resources/dia_fi.txt +++ b/src/main/webapp/resources/dia_fi.txt @@ -84,6 +84,7 @@ cannotOpenFile=Tiedostoa ei voida avata change=Muuta changeOrientation=Vaihda suuntaa changeUser=Vaihda käyttäjää +changeStorage=Change storage changesNotSaved=Muutoksia ei tallennettu userJoined={1} liittyi keskusteluun userLeft={1} lähti pois keskustelusta @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Matemaattiset näppäilyasetukset makeCopy=Luo kopio manual=Manuaalinen +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Keskellä minimal=Minimal misc=Sekalaiset @@ -652,6 +656,7 @@ specialLink=Erityislinkki standard=Standardi starting=Käynnistys straight=Suora +strikethrough=Strikethrough strokeColor=Rivin väri style=Tyyli subscript=Alaindeksi diff --git a/src/main/webapp/resources/dia_fil.txt b/src/main/webapp/resources/dia_fil.txt index ba44a080..cccd730c 100644 --- a/src/main/webapp/resources/dia_fil.txt +++ b/src/main/webapp/resources/dia_fil.txt @@ -84,6 +84,7 @@ cannotOpenFile=Hindi mabuksan ang file change=Baguhin changeOrientation=Baguhin ang oryentasyon changeUser=Magpalit ng gumagamit +changeStorage=Change storage changesNotSaved=Ang mga pagbabago ay hindi nai-save userJoined={1} ay sumali userLeft={1} ay umalis @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Matematikong Typesetting makeCopy=Gumawa ng kopya manual=De-Mano +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Gitna minimal=Minimal misc=Sari-sari @@ -652,6 +656,7 @@ specialLink=Espesyal na paguugnay standard=Pamantayan starting=Nagsisimula straight=Diresto +strikethrough=Strikethrough strokeColor=Kulay ng linya style=Istilo subscript=Subscript diff --git a/src/main/webapp/resources/dia_fr.txt b/src/main/webapp/resources/dia_fr.txt index 0319324e..0a884c14 100644 --- a/src/main/webapp/resources/dia_fr.txt +++ b/src/main/webapp/resources/dia_fr.txt @@ -84,6 +84,7 @@ cannotOpenFile=Impossible d'ouvrir le fichier change=Modifier changeOrientation=Modifier l’orientation changeUser=Modifier l'utilisateur +changeStorage=Change storage changesNotSaved=Les modifcations n'ont pas été enregistrées userJoined={1} a rejoint userLeft={1} a quitté @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Paramètres d'entrée mathématique makeCopy=Faire une copie manual=Manuel +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Au milieu minimal=Minimal misc=Divers @@ -652,6 +656,7 @@ specialLink=Lien Spécial standard=Standard starting=Démarrage straight=Droit +strikethrough=Strikethrough strokeColor=Couleur de la ligne style=Style subscript=Texte miniaturisé diff --git a/src/main/webapp/resources/dia_gu.txt b/src/main/webapp/resources/dia_gu.txt index 70a9af92..4f7482cd 100644 --- a/src/main/webapp/resources/dia_gu.txt +++ b/src/main/webapp/resources/dia_gu.txt @@ -84,6 +84,7 @@ cannotOpenFile=Cannot open file change=Change changeOrientation=Change Orientation changeUser=Change user +changeStorage=Change storage changesNotSaved=Changes have not been saved userJoined={1} has joined userLeft={1} has left @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Mathematical Typesetting makeCopy=Make a Copy manual=Manual +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Middle minimal=Minimal misc=Misc @@ -652,6 +656,7 @@ specialLink=Special Link standard=Standard starting=Starting straight=Straight +strikethrough=Strikethrough strokeColor=Line Color style=Style subscript=Subscript diff --git a/src/main/webapp/resources/dia_he.txt b/src/main/webapp/resources/dia_he.txt index dfc6cc30..b833dd9c 100644 --- a/src/main/webapp/resources/dia_he.txt +++ b/src/main/webapp/resources/dia_he.txt @@ -84,6 +84,7 @@ cannotOpenFile=לא ניתן לפתוח את הקובץ change=שנה changeOrientation=שנה אוריינטציה changeUser=שנה משתמש +changeStorage=Change storage changesNotSaved=השינויים לא נשמרו userJoined={1} הצטרף userLeft={1} עזב @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=סידור דפוס מתמטי makeCopy=צור עותק manual=ידני +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=אמצע minimal=Minimal misc=שונות @@ -652,6 +656,7 @@ specialLink=קישור מיוחד standard=בסיס starting=מתחיל straight=ישר +strikethrough=Strikethrough strokeColor=צבע קו style=סגנון subscript=סקריפט משנה diff --git a/src/main/webapp/resources/dia_hi.txt b/src/main/webapp/resources/dia_hi.txt index 0ac761cd..8247b07a 100644 --- a/src/main/webapp/resources/dia_hi.txt +++ b/src/main/webapp/resources/dia_hi.txt @@ -84,6 +84,7 @@ cannotOpenFile=Cannot open file change=Change changeOrientation=Change Orientation changeUser=Change user +changeStorage=Change storage changesNotSaved=Changes have not been saved userJoined={1} has joined userLeft={1} has left @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Mathematical Typesetting makeCopy=Make a Copy manual=Manual +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Middle minimal=Minimal misc=Misc @@ -652,6 +656,7 @@ specialLink=Special Link standard=Standard starting=Starting straight=Straight +strikethrough=Strikethrough strokeColor=Line Color style=Style subscript=Subscript diff --git a/src/main/webapp/resources/dia_hr.txt b/src/main/webapp/resources/dia_hr.txt index a7ec69e7..f0be522d 100644 --- a/src/main/webapp/resources/dia_hr.txt +++ b/src/main/webapp/resources/dia_hr.txt @@ -84,6 +84,7 @@ cannotOpenFile=Cannot open file change=Change changeOrientation=Change Orientation changeUser=Change user +changeStorage=Change storage changesNotSaved=Changes have not been saved userJoined={1} has joined userLeft={1} has left @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Mathematical Typesetting makeCopy=Make a Copy manual=Manual +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Middle minimal=Minimal misc=Misc @@ -652,6 +656,7 @@ specialLink=Special Link standard=Standard starting=Starting straight=Straight +strikethrough=Strikethrough strokeColor=Line Color style=Style subscript=Subscript diff --git a/src/main/webapp/resources/dia_hu.txt b/src/main/webapp/resources/dia_hu.txt index 274284b6..15b06b75 100644 --- a/src/main/webapp/resources/dia_hu.txt +++ b/src/main/webapp/resources/dia_hu.txt @@ -84,6 +84,7 @@ cannotOpenFile=Fájl nem nyitható change=Változtat changeOrientation=Irányultságváltoztatás changeUser=Felhasználó váltás +changeStorage=Change storage changesNotSaved=A változtatások nincsenek mentve userJoined={1} csatlakozott userLeft={1} távozott @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Matematikai betűszedés makeCopy=Másolatot készít manual=Kézi +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Közép minimal=Minimal misc=Vegyes @@ -652,6 +656,7 @@ specialLink=Különleges link standard=Standard starting=Kezdés straight=Egyenes +strikethrough=Strikethrough strokeColor=Vonal szín style=Stílus subscript=Index diff --git a/src/main/webapp/resources/dia_i18n.txt b/src/main/webapp/resources/dia_i18n.txt index 2960b164..f3411f40 100644 --- a/src/main/webapp/resources/dia_i18n.txt +++ b/src/main/webapp/resources/dia_i18n.txt @@ -84,6 +84,7 @@ cannotOpenFile=cannotOpenFile change=change changeOrientation=changeOrientation changeUser=changeUser +changeStorage=changeStorage changesNotSaved=changesNotSaved userJoined=userJoined userLeft=userLeft @@ -435,6 +436,9 @@ maps=maps mathematicalTypesetting=mathematicalTypesetting makeCopy=makeCopy manual=manual +microsoftExcel=microsoftExcel +microsoftPowerPoint=microsoftPowerPoint +microsoftWord=microsoftWord middle=middle minimal=minimal misc=misc @@ -652,6 +656,7 @@ specialLink=specialLink standard=standard starting=starting straight=straight +strikethrough=strikethrough strokeColor=strokeColor style=style subscript=subscript diff --git a/src/main/webapp/resources/dia_id.txt b/src/main/webapp/resources/dia_id.txt index 12b27ec0..e09702f1 100644 --- a/src/main/webapp/resources/dia_id.txt +++ b/src/main/webapp/resources/dia_id.txt @@ -84,6 +84,7 @@ cannotOpenFile=Tidak dapat membuka berkas change=Ubah changeOrientation=Ubah Orientasi changeUser=Ubah pengguna +changeStorage=Change storage changesNotSaved=Perubahan belum tersimpan userJoined={1} bergabung userLeft={1} keluar @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Tata Cetak Matematis makeCopy=Buat Salinan manual=Manual +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Tengah minimal=Minimal misc=Lain-lain @@ -652,6 +656,7 @@ specialLink=Tautan Khusus standard=Standar starting=Memulai straight=Lurus +strikethrough=Strikethrough strokeColor=Warna Garis style=Gaya subscript=Subskrip diff --git a/src/main/webapp/resources/dia_it.txt b/src/main/webapp/resources/dia_it.txt index 2031de4b..d5cf3ecd 100644 --- a/src/main/webapp/resources/dia_it.txt +++ b/src/main/webapp/resources/dia_it.txt @@ -84,6 +84,7 @@ cannotOpenFile=Impossibile aprire il file change=Cambia changeOrientation=Cambia orientamento changeUser=Cambia utente +changeStorage=Change storage changesNotSaved=Le modifiche non sono state salvate userJoined={1} è entrato userLeft={1} è uscito @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Parametri di scrittura matematica makeCopy=Fai una copia manual=Manuale +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Al centro minimal=Minimal misc=Miscellanea @@ -652,6 +656,7 @@ specialLink=Link speciale standard=Normale starting=Avvio in corso straight=Diritta +strikethrough=Strikethrough strokeColor=Colore linea style=Stile subscript=Indice diff --git a/src/main/webapp/resources/dia_ja.txt b/src/main/webapp/resources/dia_ja.txt index 1892dce5..6d162731 100644 --- a/src/main/webapp/resources/dia_ja.txt +++ b/src/main/webapp/resources/dia_ja.txt @@ -84,6 +84,7 @@ cannotOpenFile=ファイルを開けません change=変更する changeOrientation=向きを変更する changeUser=ユーザーを変更する +changeStorage=Change storage changesNotSaved=変更は保存されませんでした。 userJoined={1} がチャットに参加しました。 userLeft={1} がチャットを去りました。 @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=数式組版 makeCopy=複製する manual=マニュアル +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=中央揃え minimal=Minimal misc=その他 @@ -652,6 +656,7 @@ specialLink=特別なリンク standard=標準 starting=起動中 straight=直線 +strikethrough=Strikethrough strokeColor=線の色 style=スタイル subscript=下付き文字 diff --git a/src/main/webapp/resources/dia_kn.txt b/src/main/webapp/resources/dia_kn.txt index 61cdf01a..7d30f979 100644 --- a/src/main/webapp/resources/dia_kn.txt +++ b/src/main/webapp/resources/dia_kn.txt @@ -84,6 +84,7 @@ cannotOpenFile=Cannot open file change=Change changeOrientation=Change Orientation changeUser=Change user +changeStorage=Change storage changesNotSaved=Changes have not been saved userJoined={1} has joined userLeft={1} has left @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Mathematical Typesetting makeCopy=Make a Copy manual=Manual +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Middle minimal=Minimal misc=Misc @@ -652,6 +656,7 @@ specialLink=Special Link standard=Standard starting=Starting straight=Straight +strikethrough=Strikethrough strokeColor=Line Color style=Style subscript=Subscript diff --git a/src/main/webapp/resources/dia_ko.txt b/src/main/webapp/resources/dia_ko.txt index cbe527f2..5580514d 100644 --- a/src/main/webapp/resources/dia_ko.txt +++ b/src/main/webapp/resources/dia_ko.txt @@ -84,6 +84,7 @@ cannotOpenFile=파일을 열 수 없습니다 change=변경 changeOrientation=방향 변경 changeUser=사용자 변경 +changeStorage=Change storage changesNotSaved=변경내용이 저장되지 않았습니다 userJoined={1}님이 대화에 참여했습니다 userLeft={1}님이 대화에서 나갔습니다 @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=수학 공식 입력 makeCopy=복사본 만들기 manual=수동 +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=중간 minimal=Minimal misc=기타 @@ -652,6 +656,7 @@ specialLink=특수 링크 standard=기본 starting=시작하는중 straight=직선 +strikethrough=Strikethrough strokeColor=선 색 style=스타일 subscript=아래 첨자 diff --git a/src/main/webapp/resources/dia_lt.txt b/src/main/webapp/resources/dia_lt.txt index be471ca4..f45470b5 100644 --- a/src/main/webapp/resources/dia_lt.txt +++ b/src/main/webapp/resources/dia_lt.txt @@ -84,6 +84,7 @@ cannotOpenFile=Cannot open file change=Change changeOrientation=Change Orientation changeUser=Change user +changeStorage=Change storage changesNotSaved=Changes have not been saved userJoined={1} has joined userLeft={1} has left @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Mathematical Typesetting makeCopy=Make a Copy manual=Manual +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Middle minimal=Minimal misc=Misc @@ -652,6 +656,7 @@ specialLink=Special Link standard=Standard starting=Starting straight=Straight +strikethrough=Strikethrough strokeColor=Line Color style=Style subscript=Subscript diff --git a/src/main/webapp/resources/dia_lv.txt b/src/main/webapp/resources/dia_lv.txt index 8e21df0b..50d26a42 100644 --- a/src/main/webapp/resources/dia_lv.txt +++ b/src/main/webapp/resources/dia_lv.txt @@ -84,6 +84,7 @@ cannotOpenFile=Cannot open file change=Change changeOrientation=Change Orientation changeUser=Change user +changeStorage=Change storage changesNotSaved=Changes have not been saved userJoined={1} has joined userLeft={1} has left @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Mathematical Typesetting makeCopy=Make a Copy manual=Manual +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Middle minimal=Minimal misc=Misc @@ -652,6 +656,7 @@ specialLink=Special Link standard=Standard starting=Starting straight=Straight +strikethrough=Strikethrough strokeColor=Line Color style=Style subscript=Subscript diff --git a/src/main/webapp/resources/dia_ml.txt b/src/main/webapp/resources/dia_ml.txt index 76fc99bc..5082adb8 100644 --- a/src/main/webapp/resources/dia_ml.txt +++ b/src/main/webapp/resources/dia_ml.txt @@ -84,6 +84,7 @@ cannotOpenFile=Cannot open file change=Change changeOrientation=Change Orientation changeUser=Change user +changeStorage=Change storage changesNotSaved=Changes have not been saved userJoined={1} has joined userLeft={1} has left @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Mathematical Typesetting makeCopy=Make a Copy manual=Manual +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Middle minimal=Minimal misc=Misc @@ -652,6 +656,7 @@ specialLink=Special Link standard=Standard starting=Starting straight=Straight +strikethrough=Strikethrough strokeColor=Line Color style=Style subscript=Subscript diff --git a/src/main/webapp/resources/dia_mr.txt b/src/main/webapp/resources/dia_mr.txt index dc91d449..34f914fc 100644 --- a/src/main/webapp/resources/dia_mr.txt +++ b/src/main/webapp/resources/dia_mr.txt @@ -84,6 +84,7 @@ cannotOpenFile=Cannot open file change=Change changeOrientation=Change Orientation changeUser=Change user +changeStorage=Change storage changesNotSaved=Changes have not been saved userJoined={1} has joined userLeft={1} has left @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Mathematical Typesetting makeCopy=Make a Copy manual=Manual +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Middle minimal=Minimal misc=Misc @@ -652,6 +656,7 @@ specialLink=Special Link standard=Standard starting=Starting straight=Straight +strikethrough=Strikethrough strokeColor=Line Color style=Style subscript=Subscript diff --git a/src/main/webapp/resources/dia_ms.txt b/src/main/webapp/resources/dia_ms.txt index cbec9633..8c8f6767 100644 --- a/src/main/webapp/resources/dia_ms.txt +++ b/src/main/webapp/resources/dia_ms.txt @@ -84,6 +84,7 @@ cannotOpenFile=Tidak dapat membuka fail change=Tukar changeOrientation=Tukar Orientasi changeUser=Tukar pengguna +changeStorage=Change storage changesNotSaved=Perubahan belum disimpan userJoined={1} telah menyertai userLeft={1} telah beredar @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Atur Huruf Matematik makeCopy=Buat satu Salinan manual=Manual +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Tengah minimal=Minimal misc=Pelbagai @@ -652,6 +656,7 @@ specialLink=Pautan Khas standard=Standard starting=Bermula straight=Lurus +strikethrough=Strikethrough strokeColor=Warna Garis style=Gaya subscript=Subskrip diff --git a/src/main/webapp/resources/dia_nl.txt b/src/main/webapp/resources/dia_nl.txt index 4d3c2703..b40b7206 100644 --- a/src/main/webapp/resources/dia_nl.txt +++ b/src/main/webapp/resources/dia_nl.txt @@ -84,6 +84,7 @@ cannotOpenFile=Kan bestand niet openen change=Wijzigen changeOrientation=Oriëntatie wijzigen changeUser=Gebruiker wijzigen +changeStorage=Change storage changesNotSaved=Wijzigingen niet opgeslagen userJoined={1} heeft zich aangesloten userLeft={1} is vertrokken @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Wiskundige notatie makeCopy=Een kopie maken manual=Handleiding +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Midden minimal=Minimaal misc=Overige @@ -652,6 +656,7 @@ specialLink=Speciale Link standard=Standaard starting=Opstarten straight=Recht +strikethrough=Strikethrough strokeColor=Lijnkleur style=Stijl subscript=Subscript diff --git a/src/main/webapp/resources/dia_no.txt b/src/main/webapp/resources/dia_no.txt index ebe4875b..c1c11b8b 100644 --- a/src/main/webapp/resources/dia_no.txt +++ b/src/main/webapp/resources/dia_no.txt @@ -84,6 +84,7 @@ cannotOpenFile=Kan ikke åpne fil change=Endre changeOrientation=Endre retning changeUser=Endre bruker +changeStorage=Change storage changesNotSaved=Endringer er ikke lagret userJoined={1} deltar userLeft={1} har dratt @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Matematisk tegnsetting makeCopy=Lag en kopi manual=Manual +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Midten minimal=Minimal misc=Øvrig @@ -652,6 +656,7 @@ specialLink=Spesial lenke standard=Standard starting=Starter straight=Rett +strikethrough=Strikethrough strokeColor=Linjefarge style=Stil subscript=Senket skrift diff --git a/src/main/webapp/resources/dia_pl.txt b/src/main/webapp/resources/dia_pl.txt index df918fa7..5d27fc54 100644 --- a/src/main/webapp/resources/dia_pl.txt +++ b/src/main/webapp/resources/dia_pl.txt @@ -84,6 +84,7 @@ cannotOpenFile=Nie można otworzyć pliku change=Zmień changeOrientation=Zmień orientację changeUser=Zmień użytkownika +changeStorage=Change storage changesNotSaved=Zmiany nie zostały zapisanie userJoined={1} dołączył userLeft={1} opuścił @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Matematyczny zestaw znaków makeCopy=Zrób kopię manual=Ręczny +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Środek minimal=Minimal misc=Różne @@ -652,6 +656,7 @@ specialLink=Łącze specjalne standard=Standardowe starting=Uruchamianie straight=Prosty +strikethrough=Strikethrough strokeColor=Kolor linii style=Styl subscript=Indeks dolny diff --git a/src/main/webapp/resources/dia_pt-br.txt b/src/main/webapp/resources/dia_pt-br.txt index 5460fb27..3b9e7988 100644 --- a/src/main/webapp/resources/dia_pt-br.txt +++ b/src/main/webapp/resources/dia_pt-br.txt @@ -84,6 +84,7 @@ cannotOpenFile=Não é possível abrir o arquivo change=Modificar changeOrientation=Modificar orientação changeUser=Modificar usuário +changeStorage=Change storage changesNotSaved=As alterações não foram salvas userJoined={1} se juntou userLeft={1} saiu @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Sistema tipográfico matemático makeCopy=Fazer uma cópia manual=Manual +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Meio minimal=Minimal misc=Miscelânea @@ -652,6 +656,7 @@ specialLink=Link especial standard=Padrão starting=Começando straight=Reto +strikethrough=Strikethrough strokeColor=Cor da linha style=Estilo subscript=Subscrito diff --git a/src/main/webapp/resources/dia_pt.txt b/src/main/webapp/resources/dia_pt.txt index eb28fccf..0c382523 100644 --- a/src/main/webapp/resources/dia_pt.txt +++ b/src/main/webapp/resources/dia_pt.txt @@ -84,6 +84,7 @@ cannotOpenFile=Não é possível abrir o ficheiro change=Alterar changeOrientation=Alterar orientação changeUser=Alterar o usuário +changeStorage=Change storage changesNotSaved=As alterações não foram guardadas userJoined={1} juntou-se userLeft={1} saiu @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Composição tipográfica matemática makeCopy=Fazer uma cópia manual=Manual +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Meio minimal=Minimal misc=Diversos @@ -652,6 +656,7 @@ specialLink=Link especial standard=Padrão starting=A iniciar straight=Reto +strikethrough=Strikethrough strokeColor=Cor da linha style=Estilo subscript=Subescrever diff --git a/src/main/webapp/resources/dia_ro.txt b/src/main/webapp/resources/dia_ro.txt index 362281b4..a32f0370 100644 --- a/src/main/webapp/resources/dia_ro.txt +++ b/src/main/webapp/resources/dia_ro.txt @@ -84,6 +84,7 @@ cannotOpenFile=Fişierul nu se poate deschide change=Schimbă changeOrientation=Schimbă orientarea changeUser=Schimbă utilizatorul +changeStorage=Change storage changesNotSaved=Schimbările nu au fost salvate userJoined={1} s-a alăturat userLeft={1} a plecat @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Sistem tipografic matematic makeCopy=Fă o copie manual=Manual +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Mijloc minimal=Minimal misc=Diverse @@ -652,6 +656,7 @@ specialLink=Link special standard=Standard starting=Începe straight=Drept +strikethrough=Strikethrough strokeColor=Culoarea liniei style=Stil subscript=Indice diff --git a/src/main/webapp/resources/dia_ru.txt b/src/main/webapp/resources/dia_ru.txt index cf34aca4..91404470 100644 --- a/src/main/webapp/resources/dia_ru.txt +++ b/src/main/webapp/resources/dia_ru.txt @@ -84,6 +84,7 @@ cannotOpenFile=Невозможно открыть файл change=Изменить changeOrientation=Изменить ориентацию changeUser=Сменить пользователя +changeStorage=Change storage changesNotSaved=Изменения не сохранены userJoined={1} присоединился userLeft={1} вышел @@ -435,6 +436,9 @@ maps=Карты mathematicalTypesetting=Математический набор makeCopy=Создать копию manual=Вручную +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Середина minimal=Минималистичная misc=Прочее @@ -652,6 +656,7 @@ specialLink=Специальная ссылка standard=Стандарт starting=Запуск straight=Прямая +strikethrough=Strikethrough strokeColor=Цвет линии style=Стиль subscript=Нижний индекс diff --git a/src/main/webapp/resources/dia_sk.txt b/src/main/webapp/resources/dia_sk.txt index 6ddda3a4..12c1b45e 100644 --- a/src/main/webapp/resources/dia_sk.txt +++ b/src/main/webapp/resources/dia_sk.txt @@ -84,6 +84,7 @@ cannotOpenFile=Cannot open file change=Change changeOrientation=Change Orientation changeUser=Change user +changeStorage=Change storage changesNotSaved=Changes have not been saved userJoined={1} has joined userLeft={1} has left @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Mathematical Typesetting makeCopy=Make a Copy manual=Manual +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Middle minimal=Minimal misc=Misc @@ -652,6 +656,7 @@ specialLink=Special Link standard=Standard starting=Starting straight=Straight +strikethrough=Strikethrough strokeColor=Line Color style=Style subscript=Subscript diff --git a/src/main/webapp/resources/dia_sl.txt b/src/main/webapp/resources/dia_sl.txt index 299adc38..1fd5d77d 100644 --- a/src/main/webapp/resources/dia_sl.txt +++ b/src/main/webapp/resources/dia_sl.txt @@ -84,6 +84,7 @@ cannotOpenFile=Cannot open file change=Change changeOrientation=Change Orientation changeUser=Change user +changeStorage=Change storage changesNotSaved=Changes have not been saved userJoined={1} has joined userLeft={1} has left @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Mathematical Typesetting makeCopy=Make a Copy manual=Manual +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Middle minimal=Minimal misc=Misc @@ -652,6 +656,7 @@ specialLink=Special Link standard=Standard starting=Starting straight=Straight +strikethrough=Strikethrough strokeColor=Line Color style=Style subscript=Subscript diff --git a/src/main/webapp/resources/dia_sr.txt b/src/main/webapp/resources/dia_sr.txt index a8110277..4c5d7317 100644 --- a/src/main/webapp/resources/dia_sr.txt +++ b/src/main/webapp/resources/dia_sr.txt @@ -84,6 +84,7 @@ cannotOpenFile=Neuspešno otvaranje dokumenta change=Promeni changeOrientation=Promena orijentacije changeUser=Promena korisnika +changeStorage=Change storage changesNotSaved=Promene nisu sačuvane userJoined={1} se pridružio userLeft={1} je otišao @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Matematički slog makeCopy=Kreiraj kopiju manual=Ručno +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Sredina minimal=Minimal misc=Misc @@ -652,6 +656,7 @@ specialLink=Posebna veza standard=Standard starting=Startovanje straight=Pravo +strikethrough=Strikethrough strokeColor=Boja linije style=Stil subscript=Potpis diff --git a/src/main/webapp/resources/dia_sv.txt b/src/main/webapp/resources/dia_sv.txt index 022993c0..dc42a0a7 100644 --- a/src/main/webapp/resources/dia_sv.txt +++ b/src/main/webapp/resources/dia_sv.txt @@ -84,6 +84,7 @@ cannotOpenFile=Kan inte öppna fil change=Ändra changeOrientation=Ändra riktning changeUser=Ändra användare +changeStorage=Change storage changesNotSaved=Ändringar har inte sparats userJoined={1} har anslutit userLeft={1} har lämnat @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Matematisk typsättning makeCopy=Gör en kopia manual=Manual +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Mitten minimal=Minimal misc=Övrigt @@ -652,6 +656,7 @@ specialLink=Särskild länk standard=Standard starting=Börjar straight=Rak +strikethrough=Strikethrough strokeColor=Linjefärg style=Stil subscript=Nedsänkt text diff --git a/src/main/webapp/resources/dia_sw.txt b/src/main/webapp/resources/dia_sw.txt index f7f22672..9f9cd824 100644 --- a/src/main/webapp/resources/dia_sw.txt +++ b/src/main/webapp/resources/dia_sw.txt @@ -84,6 +84,7 @@ cannotOpenFile=Cannot open file change=Change changeOrientation=Change Orientation changeUser=Change user +changeStorage=Change storage changesNotSaved=Changes have not been saved userJoined={1} has joined userLeft={1} has left @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Mathematical Typesetting makeCopy=Make a Copy manual=Manual +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Middle minimal=Minimal misc=Misc @@ -652,6 +656,7 @@ specialLink=Special Link standard=Standard starting=Starting straight=Straight +strikethrough=Strikethrough strokeColor=Line Color style=Style subscript=Subscript diff --git a/src/main/webapp/resources/dia_ta.txt b/src/main/webapp/resources/dia_ta.txt index b38f5587..f836c8b6 100644 --- a/src/main/webapp/resources/dia_ta.txt +++ b/src/main/webapp/resources/dia_ta.txt @@ -84,6 +84,7 @@ cannotOpenFile=Cannot open file change=Change changeOrientation=Change Orientation changeUser=Change user +changeStorage=Change storage changesNotSaved=Changes have not been saved userJoined={1} has joined userLeft={1} has left @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Mathematical Typesetting makeCopy=Make a Copy manual=Manual +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Middle minimal=Minimal misc=Misc @@ -652,6 +656,7 @@ specialLink=Special Link standard=Standard starting=Starting straight=Straight +strikethrough=Strikethrough strokeColor=Line Color style=Style subscript=Subscript diff --git a/src/main/webapp/resources/dia_te.txt b/src/main/webapp/resources/dia_te.txt index d9699749..c8254c13 100644 --- a/src/main/webapp/resources/dia_te.txt +++ b/src/main/webapp/resources/dia_te.txt @@ -84,6 +84,7 @@ cannotOpenFile=Cannot open file change=Change changeOrientation=Change Orientation changeUser=Change user +changeStorage=Change storage changesNotSaved=Changes have not been saved userJoined={1} has joined userLeft={1} has left @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Mathematical Typesetting makeCopy=Make a Copy manual=Manual +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Middle minimal=Minimal misc=Misc @@ -652,6 +656,7 @@ specialLink=Special Link standard=Standard starting=Starting straight=Straight +strikethrough=Strikethrough strokeColor=Line Color style=Style subscript=Subscript diff --git a/src/main/webapp/resources/dia_th.txt b/src/main/webapp/resources/dia_th.txt index 1b1fa9e2..6b17b1bd 100644 --- a/src/main/webapp/resources/dia_th.txt +++ b/src/main/webapp/resources/dia_th.txt @@ -84,6 +84,7 @@ cannotOpenFile=ไม่สามารถเปิดไฟล์ได้ change=เปลี่ยนแปลง changeOrientation=เปลี่ยนตำแหน่ง changeUser=เปลี่ยนผู้ใช้ +changeStorage=Change storage changesNotSaved=ยังไม่ได้บันทึกการเปลี่ยนแปลง userJoined={1} ได้เข้าร่วม userLeft={1} ได้ออกจากระบบ @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=การตั้งค่าการพิมพ์ทางคณิตศาสตร์ makeCopy=สร้างฉบับคัดลอก manual=คู่มือ +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=กลาง minimal=Minimal misc=เบ็ดเตล็ด @@ -652,6 +656,7 @@ specialLink=การเชื่อมโยงพิเศษ standard=มาตรฐาน starting=กำลังเริ่ม straight=ตรง +strikethrough=Strikethrough strokeColor=เส้นสี style=รูปแบบ subscript=ดรรชนีล่าง diff --git a/src/main/webapp/resources/dia_tr.txt b/src/main/webapp/resources/dia_tr.txt index 7e9a79f4..c272deaf 100644 --- a/src/main/webapp/resources/dia_tr.txt +++ b/src/main/webapp/resources/dia_tr.txt @@ -84,6 +84,7 @@ cannotOpenFile=Dosya açılamıyor change=Değiştir changeOrientation=Sayfa yönünü değiştir changeUser=Kullanıcıyı değiştir +changeStorage=Change storage changesNotSaved=Değişiklikler kaydedilmedi userJoined={1} sohbete katıldı userLeft={1} sohbeti terk etti @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Matematiksel dizgi makeCopy=Kopyasını yap manual=Elle +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Orta minimal=Minimal misc=Çeşitli @@ -652,6 +656,7 @@ specialLink=Özel link standard=Standart starting=Başlatılıyor straight=Düz +strikethrough=Strikethrough strokeColor=Çizgi rengi style=Stil subscript=Alt-simge diff --git a/src/main/webapp/resources/dia_uk.txt b/src/main/webapp/resources/dia_uk.txt index c777a451..247df1e4 100644 --- a/src/main/webapp/resources/dia_uk.txt +++ b/src/main/webapp/resources/dia_uk.txt @@ -84,6 +84,7 @@ cannotOpenFile=Неможливо відкрити файл change=Змінити changeOrientation=Змінити напрямок changeUser=Змінити користувача +changeStorage=Change storage changesNotSaved=Зміни не було збережено userJoined={1} приєднався userLeft={1} вийшов @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Математична верстка makeCopy=Зробити копію manual=Вручну +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Посередині minimal=Minimal misc=Різне @@ -652,6 +656,7 @@ specialLink=Спеціальне посилання standard=Стандартний starting=Запуск straight=Прямий +strikethrough=Strikethrough strokeColor=Колір лінії style=Стиль subscript=Нижній індекс diff --git a/src/main/webapp/resources/dia_vi.txt b/src/main/webapp/resources/dia_vi.txt index 1ac1fce8..5ce014c7 100644 --- a/src/main/webapp/resources/dia_vi.txt +++ b/src/main/webapp/resources/dia_vi.txt @@ -84,6 +84,7 @@ cannotOpenFile=Không thể mở tập tin change=Thay đổi changeOrientation=Đổi hướng changeUser=Đổi người dùng +changeStorage=Change storage changesNotSaved=Thay đổi chưa được lưu userJoined={1} đã tham gia userLeft={1} đã thoát @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=Sắp chữ kiểu toán học makeCopy=Tạo bản sao manual=Hướng dẫn +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=Giữa minimal=Minimal misc=Linh tinh @@ -652,6 +656,7 @@ specialLink=Đường dẫn đặc biệt standard=Tiêu chuẩn starting=Khởi động straight=Thẳng +strikethrough=Strikethrough strokeColor=Màu nét vẽ style=Phong cách subscript=Chỉ số dưới diff --git a/src/main/webapp/resources/dia_zh-tw.txt b/src/main/webapp/resources/dia_zh-tw.txt index 6f4dc12e..61dee695 100644 --- a/src/main/webapp/resources/dia_zh-tw.txt +++ b/src/main/webapp/resources/dia_zh-tw.txt @@ -84,6 +84,7 @@ cannotOpenFile=無法開啟檔案 change=變更 changeOrientation=變更方向 changeUser=變更使用者 +changeStorage=Change storage changesNotSaved=變更尚未儲存 userJoined={1}已加入 userLeft={1}已離開 @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=數學排版 makeCopy=建立副本 manual=手冊 +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=垂直置中 minimal=Minimal misc=其他 @@ -652,6 +656,7 @@ specialLink=特殊連結 standard=標準 starting=啟動中 straight=直線 +strikethrough=Strikethrough strokeColor=邊線顏色 style=物件樣式 subscript=下標 diff --git a/src/main/webapp/resources/dia_zh.txt b/src/main/webapp/resources/dia_zh.txt index 7727ebbe..e3a3214e 100644 --- a/src/main/webapp/resources/dia_zh.txt +++ b/src/main/webapp/resources/dia_zh.txt @@ -84,6 +84,7 @@ cannotOpenFile=无法打开文件 change=更改 changeOrientation=改变方向 changeUser=更改用户 +changeStorage=Change storage changesNotSaved=更改尚未保存 userJoined={1}已加入 userLeft={1}已离开 @@ -435,6 +436,9 @@ maps=Maps mathematicalTypesetting=数学排版 makeCopy=创建副本 manual=手册 +microsoftExcel=Microsoft Excel +microsoftPowerPoint=Microsoft PowerPoint +microsoftWord=Microsoft Word middle=垂直居中 minimal=Minimal misc=杂项 @@ -652,6 +656,7 @@ specialLink=特殊链接 standard=标准 starting=开启中 straight=直线 +strikethrough=Strikethrough strokeColor=线条颜色 style=样式 subscript=下标 diff --git a/src/main/webapp/shapes/mxArchiMate.js b/src/main/webapp/shapes/mxArchiMate.js index d40cd3d5..0861d4ab 100644 --- a/src/main/webapp/shapes/mxArchiMate.js +++ b/src/main/webapp/shapes/mxArchiMate.js @@ -64,6 +64,30 @@ mxArchiMateLocation.prototype.foreground = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMateLocation.prototype.cst.LOCATION, mxArchiMateLocation); +mxArchiMateLocation.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Business //********************************************************************************************************************************************************** @@ -202,6 +226,30 @@ mxArchiMateBusiness.prototype.foreground = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMateBusiness.prototype.cst.BUSINESS, mxArchiMateBusiness); +mxArchiMateBusiness.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, -2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -2.9, -2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, 2.9, -2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Business Object //********************************************************************************************************************************************************** @@ -258,6 +306,30 @@ mxArchiMateBusinessObject.prototype.foreground = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMateBusinessObject.prototype.cst.BUSINESS_OBJECT, mxArchiMateBusinessObject); +mxArchiMateBusinessObject.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, -2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -2.9, -2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, 2.9, -2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Representation //********************************************************************************************************************************************************** @@ -307,6 +379,30 @@ mxArchiMateRepresentation.prototype.background = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMateRepresentation.prototype.cst.REPRESENTATION, mxArchiMateRepresentation); +mxArchiMateRepresentation.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.85), false, null)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0.745), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0.955), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Product //********************************************************************************************************************************************************** @@ -660,6 +756,30 @@ mxArchiMateApplication.prototype.foreground = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMateApplication.prototype.cst.APPLICATION, mxArchiMateApplication); +mxArchiMateApplication.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Tech //********************************************************************************************************************************************************** @@ -761,6 +881,32 @@ mxArchiMateTech.prototype.foreground = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMateTech.prototype.cst.TECH, mxArchiMateTech); +mxArchiMateTech.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, 10)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 10, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, 0, -10)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -10, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Motivational //********************************************************************************************************************************************************** @@ -955,6 +1101,30 @@ mxArchiMateMotivational.prototype.foreground = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMateMotivational.prototype.cst.MOTIV, mxArchiMateMotivational); +mxArchiMateMotivational.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 5, 5)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, -5, 5)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -5, -5)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, 5, -5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Gap //********************************************************************************************************************************************************** @@ -979,8 +1149,6 @@ mxArchiMateGap.prototype.cst = { GAP : 'mxgraph.archimate.gap' }; - - /** * Function: paintVertexShape * @@ -1027,3 +1195,26 @@ mxArchiMateGap.prototype.foreground = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMateGap.prototype.cst.GAP, mxArchiMateGap); +mxArchiMateGap.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.85), false, null)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0.745), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0.955), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; diff --git a/src/main/webapp/shapes/mxArchiMate3.js b/src/main/webapp/shapes/mxArchiMate3.js index 7ba18564..71bb60db 100644 --- a/src/main/webapp/shapes/mxArchiMate3.js +++ b/src/main/webapp/shapes/mxArchiMate3.js @@ -470,6 +470,49 @@ mxArchiMate3Application.prototype.foreground = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMate3Application.prototype.cst.APPLICATION, mxArchiMate3Application); +mxArchiMate3Application.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var archiType = mxUtils.getValue(this.style, mxArchiMate3Application.prototype.cst.ARCHI_TYPE, 'square'); + + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + if (archiType === 'rounded') + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, -2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -2.9, -2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, 2.9, -2.9)); + } + else if ((archiType === 'oct') && w >= 20 && h >= 20) + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 5, 5)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, -5, 5)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -5, -5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, 5, -5)); + } + else + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + } + + return (constr); +}; + //********************************************************************************************************************************************************** //Component //********************************************************************************************************************************************************** @@ -494,8 +537,6 @@ mxArchiMate3Component.prototype.cst = { COMPONENT : 'mxgraph.archimate3.component' }; - - /** * Function: paintVertexShape * @@ -522,6 +563,23 @@ mxArchiMate3Component.prototype.background = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMate3Component.prototype.cst.COMPONENT, mxArchiMate3Component); +mxArchiMate3Component.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.625, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.625, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.325), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.675), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Collaboration //********************************************************************************************************************************************************** @@ -546,8 +604,6 @@ mxArchiMate3Collaboration.prototype.cst = { COLLABORATION : 'mxgraph.archimate3.collaboration' }; - - /** * Function: paintVertexShape * @@ -570,6 +626,26 @@ mxArchiMate3Collaboration.prototype.background = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMate3Collaboration.prototype.cst.COLLABORATION, mxArchiMate3Collaboration); +mxArchiMate3Collaboration.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.11, 0.11), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.125), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.89, 0.11), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.11, 0.89), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.875), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.89, 0.89), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.3, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.7, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.3, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.7, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Interface //********************************************************************************************************************************************************** @@ -594,8 +670,6 @@ mxArchiMate3Interface.prototype.cst = { INTERFACE : 'mxgraph.archimate3.interface' }; - - /** * Function: paintVertexShape * @@ -621,6 +695,18 @@ mxArchiMate3Interface.prototype.background = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMate3Interface.prototype.cst.INTERFACE, mxArchiMate3Interface); +mxArchiMate3Interface.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Process //********************************************************************************************************************************************************** @@ -645,8 +731,6 @@ mxArchiMate3Process.prototype.cst = { PROCESS : 'mxgraph.archimate3.process' }; - - /** * Function: paintVertexShape * @@ -675,6 +759,24 @@ mxArchiMate3Process.prototype.background = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMate3Process.prototype.cst.PROCESS, mxArchiMate3Process); +mxArchiMate3Process.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.3), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.3, 0.3), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.6, 0.3), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.6, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.6, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.6, 0.7), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.3, 0.7), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.7), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Function //********************************************************************************************************************************************************** @@ -699,8 +801,6 @@ mxArchiMate3Function.prototype.cst = { FUNCTION : 'mxgraph.archimate3.function' }; - - /** * Function: paintVertexShape * @@ -728,6 +828,22 @@ mxArchiMate3Function.prototype.background = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMate3Function.prototype.cst.FUNCTION, mxArchiMate3Function); +mxArchiMate3Function.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.2), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.6), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.8), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.6), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.2), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Interaction //********************************************************************************************************************************************************** @@ -752,8 +868,6 @@ mxArchiMate3Interaction.prototype.cst = { INTERACTION : 'mxgraph.archimate3.interaction' }; - - /** * Function: paintVertexShape * @@ -780,6 +894,22 @@ mxArchiMate3Interaction.prototype.background = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMate3Interaction.prototype.cst.INTERACTION, mxArchiMate3Interaction); +mxArchiMate3Interaction.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.86, 0.14), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.86, 0.86), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.14, 0.86), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.14, 0.14), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Service //********************************************************************************************************************************************************** @@ -804,8 +934,6 @@ mxArchiMate3Service.prototype.cst = { SERVICE : 'mxgraph.archimate3.service' }; - - /** * Function: paintVertexShape * @@ -820,17 +948,42 @@ mxArchiMate3Service.prototype.paintVertexShape = function(c, x, y, w, h) mxArchiMate3Service.prototype.background = function(c, x, y, w, h) { + var w1 = Math.max(w - h * 0.5, w * 0.5); + var w2 = Math.min(h * 0.5, w * 0.5); + c.begin(); - c.moveTo(w - h * 0.5, 0); - c.arcTo(h * 0.5, h * 0.5, 0, 0, 1, w - h * 0.5, h); - c.lineTo(h * 0.5, h); - c.arcTo(h * 0.5, h * 0.5, 0, 0, 1, h * 0.5, 0); + c.moveTo(w1, 0); + c.arcTo(h * 0.5, h * 0.5, 0, 0, 1, w1, h); + c.lineTo(w2, h); + c.arcTo(h * 0.5, h * 0.5, 0, 0, 1, w2, 0); c.close(); c.fillAndStroke(); }; mxCellRenderer.registerShape(mxArchiMate3Service.prototype.cst.SERVICE, mxArchiMate3Service); +mxArchiMate3Service.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var w1 = Math.max(w - h * 0.5, w * 0.5); + var w2 = Math.min(h * 0.5, w * 0.5); + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w1, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w1, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w1 + h * 0.355, h * 0.145)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w1 + h * 0.5, h * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w1 + h * 0.355, h * 0.855)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 - h * 0.355, h * 0.145)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 - h * 0.5, h * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 - h * 0.355, h * 0.855)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Requirement //********************************************************************************************************************************************************** @@ -855,8 +1008,6 @@ mxArchiMate3Requirement.prototype.cst = { REQUIREMENT : 'mxgraph.archimate3.requirement' }; - - /** * Function: paintVertexShape * @@ -882,6 +1033,28 @@ mxArchiMate3Requirement.prototype.background = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMate3Requirement.prototype.cst.REQUIREMENT, mxArchiMate3Requirement); +mxArchiMate3Requirement.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.9375, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.875, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.8125, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.0625, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.125, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.1875, 0.25), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Constraint //********************************************************************************************************************************************************** @@ -906,8 +1079,6 @@ mxArchiMate3Constraint.prototype.cst = { CONSTRAINT : 'mxgraph.archimate3.constraint' }; - - /** * Function: paintVertexShape * @@ -935,6 +1106,28 @@ mxArchiMate3Constraint.prototype.background = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMate3Constraint.prototype.cst.CONSTRAINT, mxArchiMate3Constraint); +mxArchiMate3Constraint.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.9375, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.875, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.8125, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.0625, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.125, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.1875, 0.25), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Event //********************************************************************************************************************************************************** @@ -959,8 +1152,6 @@ mxArchiMate3Event.prototype.cst = { EVENT : 'mxgraph.archimate3.event' }; - - /** * Function: paintVertexShape * @@ -987,6 +1178,24 @@ mxArchiMate3Event.prototype.background = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMate3Event.prototype.cst.EVENT, mxArchiMate3Event); +mxArchiMate3Event.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var w1 = Math.max(w - h * 0.5, w * 0.5); + var w2 = Math.min(h * 0.5, w * 0.5); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - h * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - h * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, h * 0.5, h * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - h * 0.5) * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - h * 0.5) * 0.5, h)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Event 2 //********************************************************************************************************************************************************** @@ -1011,8 +1220,6 @@ mxArchiMate3Event2.prototype.cst = { EVENT2 : 'mxgraph.archimate3.event2' }; - - /** * Function: paintVertexShape * @@ -1062,8 +1269,6 @@ mxArchiMate3Actor.prototype.cst = { ACTOR : 'mxgraph.archimate3.actor' }; - - /** * Function: paintVertexShape * @@ -1094,6 +1299,21 @@ mxArchiMate3Actor.prototype.background = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMate3Actor.prototype.cst.ACTOR, mxArchiMate3Actor); +mxArchiMate3Actor.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.2, 0.15), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.8, 0.15), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.45), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.45), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Role //********************************************************************************************************************************************************** @@ -1118,8 +1338,6 @@ mxArchiMate3Role.prototype.cst = { ROLE : 'mxgraph.archimate3.role' }; - - /** * Function: paintVertexShape * @@ -1147,6 +1365,22 @@ mxArchiMate3Role.prototype.background = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMate3Role.prototype.cst.ROLE, mxArchiMate3Role); +mxArchiMate3Role.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.2, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.8, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.8, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.2, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Business Object //********************************************************************************************************************************************************** @@ -1171,8 +1405,6 @@ mxArchiMate3BusinessObject.prototype.cst = { BUSINESS_OBJECT : 'mxgraph.archimate3.businessObject' }; - - /** * Function: paintVertexShape * @@ -1205,6 +1437,30 @@ mxArchiMate3BusinessObject.prototype.foreground = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMate3BusinessObject.prototype.cst.BUSINESS_OBJECT, mxArchiMate3BusinessObject); +mxArchiMate3BusinessObject.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Contract //********************************************************************************************************************************************************** @@ -1229,8 +1485,6 @@ mxArchiMate3Contract.prototype.cst = { CONTRACT : 'mxgraph.archimate3.contract' }; - - /** * Function: paintVertexShape * @@ -1272,6 +1526,30 @@ mxArchiMate3Contract.prototype.foreground = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMate3Contract.prototype.cst.CONTRACT, mxArchiMate3Contract); +mxArchiMate3Contract.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Product //********************************************************************************************************************************************************** @@ -1296,8 +1574,6 @@ mxArchiMate3Product.prototype.cst = { PRODUCT : 'mxgraph.archimate3.product' }; - - /** * Function: paintVertexShape * @@ -1331,6 +1607,30 @@ mxArchiMate3Product.prototype.foreground = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMate3Product.prototype.cst.PRODUCT, mxArchiMate3Product); +mxArchiMate3Product.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Representation //********************************************************************************************************************************************************** @@ -1355,8 +1655,6 @@ mxArchiMate3Representation.prototype.cst = { REPRESENTATION : 'mxgraph.archimate3.representation' }; - - /** * Function: paintVertexShape * @@ -1388,6 +1686,30 @@ mxArchiMate3Representation.prototype.background = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMate3Representation.prototype.cst.REPRESENTATION, mxArchiMate3Representation); +mxArchiMate3Representation.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0.745), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0.955), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Deliverable //********************************************************************************************************************************************************** @@ -1412,8 +1734,6 @@ mxArchiMate3Deliverable.prototype.cst = { DELIVERABLE : 'mxgraph.archimate3.deliverable' }; - - /** * Function: paintVertexShape * @@ -1439,6 +1759,30 @@ mxArchiMate3Deliverable.prototype.background = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMate3Deliverable.prototype.cst.DELIVERABLE, mxArchiMate3Deliverable); +mxArchiMate3Deliverable.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0.745), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0.955), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Location //********************************************************************************************************************************************************** @@ -1463,8 +1807,6 @@ mxArchiMate3Location.prototype.cst = { LOCATION : 'mxgraph.archimate3.location' }; - - /** * Function: paintVertexShape * @@ -1526,8 +1868,6 @@ mxArchiMate3Gap.prototype.cst = { GAP : 'mxgraph.archimate3.gap' }; - - /** * Function: paintVertexShape * @@ -1574,6 +1914,30 @@ mxArchiMate3Gap.prototype.foreground = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMate3Gap.prototype.cst.GAP, mxArchiMate3Gap); +mxArchiMate3Gap.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0.745), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0.955), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Tech //********************************************************************************************************************************************************** @@ -1604,8 +1968,6 @@ mxArchiMate3Tech.prototype.cst = { SYS_SW : 'sysSw' }; - - /** * Function: paintVertexShape * @@ -1773,6 +2135,32 @@ mxArchiMate3Tech.prototype.foreground = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMate3Tech.prototype.cst.TECH, mxArchiMate3Tech); +mxArchiMate3Tech.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 10, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, 0, -10)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -10, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, 10)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Distribution //********************************************************************************************************************************************************** @@ -1797,8 +2185,6 @@ mxArchiMate3Distribution.prototype.cst = { DISTRIBUTION : 'mxgraph.archimate3.distribution' }; - - /** * Function: paintVertexShape * @@ -1833,6 +2219,23 @@ mxArchiMate3Distribution.prototype.background = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMate3Distribution.prototype.cst.DISTRIBUTION, mxArchiMate3Distribution); +mxArchiMate3Distribution.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.2, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.8, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.8, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.2, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Resource //********************************************************************************************************************************************************** @@ -1857,8 +2260,6 @@ mxArchiMate3Resource.prototype.cst = { RESOURCE : 'mxgraph.archimate3.resource' }; - - /** * Function: paintVertexShape * @@ -1925,8 +2326,6 @@ mxArchiMate3Capability.prototype.cst = { CAPABILITY : 'mxgraph.archimate3.capability' }; - - /** * Function: paintVertexShape * @@ -1988,8 +2387,6 @@ mxArchiMate3Course.prototype.cst = { COURSE : 'mxgraph.archimate3.course' }; - - /** * Function: paintVertexShape * @@ -2049,8 +2446,6 @@ mxArchiMate3Node.prototype.cst = { NODE : 'mxgraph.archimate3.node' }; - - /** * Function: paintVertexShape * @@ -2083,6 +2478,32 @@ mxArchiMate3Node.prototype.background = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMate3Node.prototype.cst.NODE, mxArchiMate3Node); +mxArchiMate3Node.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Device //********************************************************************************************************************************************************** @@ -2107,8 +2528,6 @@ mxArchiMate3Device.prototype.cst = { DEVICE : 'mxgraph.archimate3.device' }; - - /** * Function: paintVertexShape * @@ -2136,6 +2555,30 @@ mxArchiMate3Device.prototype.background = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMate3Device.prototype.cst.DEVICE, mxArchiMate3Device); +mxArchiMate3Device.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.03, 0.03), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.97, 0.03), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //System Software //********************************************************************************************************************************************************** @@ -2160,8 +2603,6 @@ mxArchiMate3SysSw.prototype.cst = { SYS_SW : 'mxgraph.archimate3.sysSw' }; - - /** * Function: paintVertexShape * @@ -2209,8 +2650,6 @@ mxArchiMate3Artifact.prototype.cst = { ARTIFACT : 'mxgraph.archimate3.artifact' }; - - /** * Function: paintVertexShape * @@ -2243,6 +2682,30 @@ mxArchiMate3Artifact.prototype.background = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMate3Artifact.prototype.cst.ARTIFACT, mxArchiMate3Artifact); +mxArchiMate3Artifact.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.7, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.85, 0.11), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.22), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Communication Network //********************************************************************************************************************************************************** @@ -2267,8 +2730,6 @@ mxArchiMate3CommNetw.prototype.cst = { COMM_NETW : 'mxgraph.archimate3.commNetw' }; - - /** * Function: paintVertexShape * @@ -2297,6 +2758,16 @@ mxArchiMate3CommNetw.prototype.background = function(c, x, y, w, h) mxCellRenderer.registerShape(mxArchiMate3CommNetw.prototype.cst.COMM_NETW, mxArchiMate3CommNetw); +mxArchiMate3CommNetw.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Path //********************************************************************************************************************************************************** @@ -2321,8 +2792,6 @@ mxArchiMate3Path.prototype.cst = { PATH : 'mxgraph.archimate3.path' }; - - /** * Function: paintVertexShape * @@ -2354,3 +2823,13 @@ mxArchiMate3Path.prototype.background = function(c, x, y, w, h) }; mxCellRenderer.registerShape(mxArchiMate3Path.prototype.cst.PATH, mxArchiMate3Path); + +mxArchiMate3Path.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + + return (constr); +}; diff --git a/src/main/webapp/shapes/mxArrows.js b/src/main/webapp/shapes/mxArrows.js index 1e6f87cf..ddceed33 100644 --- a/src/main/webapp/shapes/mxArrows.js +++ b/src/main/webapp/shapes/mxArrows.js @@ -173,7 +173,7 @@ mxShapeArrows2Arrow.prototype.getConstraints = function(style, w, h) constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.5, h - dy)); return (constr); -} +}; //********************************************************************************************************************************************************** //Two Way Arrow @@ -310,7 +310,7 @@ mxShapeArrows2TwoWayArrow.prototype.getConstraints = function(style, w, h) constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, h - dy)); return (constr); -} +}; //********************************************************************************************************************************************************** //Stylised Arrow @@ -440,7 +440,7 @@ mxShapeArrows2StylisedArrow.prototype.getConstraints = function(style, w, h) constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.5, h - (dy + feather) * 0.5)); return (constr); -} +}; //********************************************************************************************************************************************************** //Sharp Arrow @@ -557,8 +557,7 @@ Graph.handleFactory[mxShapeArrows2SharpArrow.prototype.cst.SHARP_ARROW] = functi handles.push(handle3); return handles; - -} +}; mxShapeArrows2SharpArrow.prototype.getConstraints = function(style, w, h) { @@ -590,7 +589,7 @@ mxShapeArrows2SharpArrow.prototype.getConstraints = function(style, w, h) constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx1) * 0.5, h - dy1)); return (constr); -} +}; //********************************************************************************************************************************************************** //Sharp Arrow2 @@ -722,7 +721,7 @@ Graph.handleFactory[mxShapeArrows2SharpArrow2.prototype.cst.SHARP_ARROW2] = func handles.push(handle4); return handles; -} +}; mxShapeArrows2SharpArrow2.prototype.getConstraints = function(style, w, h) { @@ -750,7 +749,7 @@ mxShapeArrows2SharpArrow2.prototype.getConstraints = function(style, w, h) constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx1) * 0.5, h - dy1)); return (constr); -} +}; //********************************************************************************************************************************************************** //Callout Arrow @@ -864,7 +863,7 @@ Graph.handleFactory[mxShapeArrows2CalloutArrow.prototype.cst.CALLOUT_ARROW] = fu handles.push(handle3); return handles; -} +}; mxShapeArrows2CalloutArrow.prototype.getConstraints = function(style, w, h) { @@ -891,7 +890,7 @@ mxShapeArrows2CalloutArrow.prototype.getConstraints = function(style, w, h) constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, (notch + w - dx) * 0.5, dy)); return (constr); -} +}; //********************************************************************************************************************************************************** //Bend Arrow @@ -1028,7 +1027,7 @@ Graph.handleFactory[mxShapeArrows2BendArrow.prototype.cst.BEND_ARROW] = function handles.push(handle3); return handles; -} +}; mxShapeArrows2BendArrow.prototype.getConstraints = function(style, w, h) { @@ -1064,7 +1063,7 @@ mxShapeArrows2BendArrow.prototype.getConstraints = function(style, w, h) } return (constr); -} +}; //********************************************************************************************************************************************************** //Bend Double Arrow @@ -1186,8 +1185,7 @@ Graph.handleFactory[mxShapeArrows2BendDoubleArrow.prototype.cst.BEND_DOUBLE_ARRO handles.push(handle2); return handles; - -} +}; mxShapeArrows2BendDoubleArrow.prototype.getConstraints = function(style, w, h) { @@ -1223,7 +1221,7 @@ mxShapeArrows2BendDoubleArrow.prototype.getConstraints = function(style, w, h) } return (constr); -} +}; //********************************************************************************************************************************************************** //Callout Double Arrow @@ -1344,7 +1342,7 @@ Graph.handleFactory[mxShapeArrows2CalloutDoubleArrow.prototype.cst.CALLOUT_DOUBL handles.push(handle3); return handles; -} +}; mxShapeArrows2CalloutDoubleArrow.prototype.getConstraints = function(style, w, h) { @@ -1372,7 +1370,7 @@ mxShapeArrows2CalloutDoubleArrow.prototype.getConstraints = function(style, w, h constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w * 0.5 + dx - notch) * 0.5, h * 0.5 + dy)); return (constr); -} +}; //********************************************************************************************************************************************************** //Callout Quad Arrow @@ -1507,7 +1505,7 @@ Graph.handleFactory[mxShapeArrows2CalloutQuadArrow.prototype.cst.CALLOUT_QUAD_AR handles.push(handle3); return handles; -} +}; mxShapeArrows2CalloutQuadArrow.prototype.getConstraints = function(style, w, h) { @@ -1551,7 +1549,7 @@ mxShapeArrows2CalloutQuadArrow.prototype.getConstraints = function(style, w, h) constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + dy, h * 0.25 - (notch - dx) * 0.5)); return (constr); -} +}; //********************************************************************************************************************************************************** //Callout Double 90 Arrow @@ -1677,7 +1675,7 @@ Graph.handleFactory[mxShapeArrows2CalloutDouble90Arrow.prototype.cst.CALLOUT_DOU handles.push(handle3); return handles; -} +}; mxShapeArrows2CalloutDouble90Arrow.prototype.getConstraints = function(style, w, h) { @@ -1705,7 +1703,7 @@ mxShapeArrows2CalloutDouble90Arrow.prototype.getConstraints = function(style, w, constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy2)); return (constr); -} +}; //********************************************************************************************************************************************************** //Quad Arrow @@ -1818,7 +1816,7 @@ Graph.handleFactory[mxShapeArrows2QuadArrow.prototype.cst.QUAD_ARROW] = function handles.push(handle2); return handles; -} +}; mxShapeArrows2QuadArrow.prototype.getConstraints = function(style, w, h) { @@ -1849,7 +1847,7 @@ mxShapeArrows2QuadArrow.prototype.getConstraints = function(style, w, h) constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (dy - dx) * 0.5 + w * 0.75, h * 0.5 + dy)); return (constr); -} +}; //********************************************************************************************************************************************************** //Triad Arrow @@ -1954,7 +1952,7 @@ Graph.handleFactory[mxShapeArrows2TriadArrow.prototype.cst.TRIAD_ARROW] = functi handles.push(handle2); return handles; -} +}; mxShapeArrows2TriadArrow.prototype.getConstraints = function(style, w, h) { @@ -1981,7 +1979,7 @@ mxShapeArrows2TriadArrow.prototype.getConstraints = function(style, w, h) constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + arrowHead * 0.5 - dy, (dx + h - arrowHead + dy) * 0.5)); return (constr); -} +}; //********************************************************************************************************************************************************** //Tailed Arrow @@ -2121,7 +2119,7 @@ Graph.handleFactory[mxShapeArrows2TailedArrow.prototype.cst.TAILED_ARROW] = func handles.push(handle4); return handles; -} +}; mxShapeArrows2TailedArrow.prototype.getConstraints = function(style, w, h) { @@ -2151,7 +2149,7 @@ mxShapeArrows2TailedArrow.prototype.getConstraints = function(style, w, h) constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); return (constr); -} +}; //********************************************************************************************************************************************************** //Tailed Arrow with Notch @@ -2291,7 +2289,7 @@ Graph.handleFactory[mxShapeArrows2TailedNotchedArrow.prototype.cst.TAILED_NOTCHE handles.push(handle4); return handles; -} +}; mxShapeArrows2TailedNotchedArrow.prototype.getConstraints = function(style, w, h) { @@ -2321,7 +2319,7 @@ mxShapeArrows2TailedNotchedArrow.prototype.getConstraints = function(style, w, h constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); return (constr); -} +}; //********************************************************************************************************************************************************** //Striped Arrow @@ -2422,8 +2420,7 @@ Graph.handleFactory[mxShapeArrows2StripedArrow.prototype.cst.STRIPED_ARROW] = fu handles.push(handle2); return handles; - -} +}; mxShapeArrows2StripedArrow.prototype.getConstraints = function(style, w, h) { @@ -2444,7 +2441,7 @@ mxShapeArrows2StripedArrow.prototype.getConstraints = function(style, w, h) constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.5, h - dy)); return (constr); -} +}; //********************************************************************************************************************************************************** //Jump-In Arrow @@ -2537,7 +2534,7 @@ Graph.handleFactory[mxShapeArrows2JumpInArrow.prototype.cst.JUMP_IN_ARROW] = fun handles.push(handle2); return handles; -} +}; mxShapeArrows2JumpInArrow.prototype.getConstraints = function(style, w, h) { @@ -2552,7 +2549,7 @@ mxShapeArrows2JumpInArrow.prototype.getConstraints = function(style, w, h) constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, arrowHead)); return (constr); -} +}; //********************************************************************************************************************************************************** //U Turn Arrow @@ -2668,7 +2665,7 @@ Graph.handleFactory[mxShapeArrows2UTurnArrow.prototype.cst.U_TURN_ARROW] = funct handles.push(handle3); return handles; -} +}; mxShapeArrows2UTurnArrow.prototype.getConstraints = function(style, w, h) { @@ -2691,5 +2688,4 @@ mxShapeArrows2UTurnArrow.prototype.getConstraints = function(style, w, h) constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, arrowHead - 2 * dy, (h + arrowHead * 0.5 - dy) * 0.5)); return (constr); -} - +}; diff --git a/src/main/webapp/shapes/mxBasic.js b/src/main/webapp/shapes/mxBasic.js index 6b88f9c2..169de727 100644 --- a/src/main/webapp/shapes/mxBasic.js +++ b/src/main/webapp/shapes/mxBasic.js @@ -157,6 +157,26 @@ Graph.handleFactory[mxShapeBasicRectCallout.prototype.cst.RECT_CALLOUT] = functi return handles; }; +mxShapeBasicRectCallout.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx - dy, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dy) * 0.5)); + + return (constr); +} + //********************************************************************************************************************************************************** // Rounded Rectangular Callout //********************************************************************************************************************************************************** @@ -253,6 +273,43 @@ Graph.handleFactory[mxShapeBasicRoundRectCallout.prototype.cst.ROUND_RECT_CALLOU })]; }; +mxShapeBasicRoundRectCallout.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var r = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + + r = Math.min((h - dy) / 2, w / 2, r); + dx = Math.max(r + dy * 0.5, dx); + dx = Math.min(w - r - dy * 0.5, dx); + + if (r < w * 0.25) + { + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + } + + if (r < (h - dy) * 0.25) + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dy) * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dy) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dy) * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dy) * 0.75)); + } + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, r * 0.293, r * 0.293)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - r * 0.293, r * 0.293)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - r * 0.293, h - dy - r * 0.293)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, r * 0.293, h - dy - r * 0.293)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx - dy, h)); + + return (constr); +} + //********************************************************************************************************************************************************** // Wave //********************************************************************************************************************************************************** @@ -324,6 +381,32 @@ Graph.handleFactory[mxShapeBasicWave.prototype.cst.WAVE] = function(state) return handles; }; +mxShapeBasicWave.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dy = h * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var fy = 1.4 + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w / 6, h * 0.015)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w / 3, dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5, dy * 0.95)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.67, dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.83, h * 0.015)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h - dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.83, h - dy * 0.95)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.67, h - dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5, h - dy * 0.04)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w / 3, h - dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w / 6, h - dy * 0.95)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h * 0.5)); + + return (constr); +} + //********************************************************************************************************************************************************** //Octagon //********************************************************************************************************************************************************** @@ -396,6 +479,25 @@ Graph.handleFactory[mxShapeBasicOctagon.prototype.cst.OCTAGON] = function(state) return handles; }; +mxShapeBasicOctagon.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))) * 2; + + dx = Math.min(w * 0.5, h * 0.5, dx) * 0.5; + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h - dx)); + + return (constr); +} + //********************************************************************************************************************************************************** //Isometric Cube //********************************************************************************************************************************************************** @@ -476,6 +578,24 @@ Graph.handleFactory[mxShapeBasicIsoCube.prototype.cst.ISO_CUBE] = function(state return handles; }; +mxShapeBasicIsoCube.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var isoAngle = Math.max(0.01, Math.min(94, parseFloat(mxUtils.getValue(this.style, 'isoAngle', this.isoAngle)))) * Math.PI / 200 ; + var isoH = Math.min(w * Math.tan(isoAngle), h * 0.5); + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, isoH)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h - isoH)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - isoH)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, isoH)); + + return (constr); +} + //********************************************************************************************************************************************************** //Acute Triangle //********************************************************************************************************************************************************** @@ -541,6 +661,21 @@ Graph.handleFactory[mxShapeBasicTriangleAcute.prototype.cst.ACUTE_TRIANGLE] = fu return handles; }; +mxShapeBasicTriangleAcute.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx * 0.5, h * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - (w - dx) * 0.5, h * 0.5)); + + return (constr); +} + //********************************************************************************************************************************************************** //Obtuse Triangle //********************************************************************************************************************************************************** @@ -606,6 +741,21 @@ Graph.handleFactory[mxShapeBasicTriangleObtuse.prototype.cst.OBTUSE_TRIANGLE] = return handles; }; +mxShapeBasicTriangleObtuse.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5, h * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w + dx) * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx * 0.5, h * 0.5)); + + return (constr); +} + //********************************************************************************************************************************************************** //Drop //********************************************************************************************************************************************************** @@ -754,6 +904,21 @@ Graph.handleFactory[mxShapeBasicCone2.prototype.cst.CONE2] = function(state) return handles; }; +mxShapeBasicCone2.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = h * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var ry = h - dy; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h - ry)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - ry)); + + return (constr); +} + //********************************************************************************************************************************************************** //Pyramid //********************************************************************************************************************************************************** @@ -872,6 +1037,26 @@ Graph.handleFactory[mxShapeBasicPyramid.prototype.cst.PYRAMID] = function(state) return handles; }; +mxShapeBasicPyramid.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx1 = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dx2 = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var dy1 = h * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var dy2 = h * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy2', this.dy2)))); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx1, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w + dx1) * 0.5, dy2 * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dy2)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w + dx2) * 0.5, (h + dy2) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 * 0.5, (h + dy1) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx1 * 0.5, dy1 * 0.5)); + + return (constr); +} + //********************************************************************************************************************************************************** //4 Point Star 2 //********************************************************************************************************************************************************** @@ -942,6 +1127,23 @@ Graph.handleFactory[mxShapeBasic4PointStar2.prototype.cst.FOUR_POINT_STAR_2] = f return handles; }; +mxShapeBasic4PointStar2.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = 0.5 * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(dx, dx), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1 - dx, dx), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1 - dx, 1 - dx), false)); + constr.push(new mxConnectionConstraint(new mxPoint(dx, 1 - dx), false)); + + return (constr); +} + //********************************************************************************************************************************************************** //Diagonal Snip Rectangle //********************************************************************************************************************************************************** @@ -1012,6 +1214,24 @@ Graph.handleFactory[mxShapeBasicDiagSnipRect.prototype.cst.DIAG_SNIP_RECT] = fun return handles; }; +mxShapeBasicDiagSnipRect.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))) * 2; + + dx = Math.min(w * 0.5, h * 0.5, dx) * 0.5; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +} //********************************************************************************************************************************************************** //Diagonal Round Rectangle @@ -1084,6 +1304,20 @@ Graph.handleFactory[mxShapeBasicDiagRoundRect.prototype.cst.DIAG_ROUND_RECT] = f return handles; }; +mxShapeBasicDiagRoundRect.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +} + //********************************************************************************************************************************************************** //Corner Round Rectangle //********************************************************************************************************************************************************** @@ -1154,6 +1388,21 @@ Graph.handleFactory[mxShapeBasicCornerRoundRect.prototype.cst.CORNER_ROUND_RECT] return handles; }; +mxShapeBasicCornerRoundRect.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +} + //********************************************************************************************************************************************************** //Plaque //********************************************************************************************************************************************************** @@ -1226,6 +1475,18 @@ Graph.handleFactory[mxShapeBasicPlaque.prototype.cst.PLAQUE] = function(state) return handles; }; +mxShapeBasicPlaque.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +} + //********************************************************************************************************************************************************** //Frame //********************************************************************************************************************************************************** @@ -1299,6 +1560,48 @@ Graph.handleFactory[mxShapeBasicFrame.prototype.cst.FRAME] = function(state) return handles; }; +mxShapeBasicFrame.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + dx = Math.min(w * 0.5, h * 0.5, dx); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - 2 * dx)* 0.25 + dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w * 1.5 - dx) * 0.5, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, -dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, (h - 2 * dx)* 0.25 + dx)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, -dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, (h - 2 * dx) * 0.75 + dx)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -dx, -dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - 2 * dx) * 0.75 + dx, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false, null, 0, -dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - 2 * dx) * 0.25 + dx, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, dx, -dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, (h - 2 * dx) * 0.75 + dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, (h - 2 * dx) * 0.25 + dx)); + + return (constr); +} + //********************************************************************************************************************************************************** //Plaque Frame //********************************************************************************************************************************************************** @@ -1316,7 +1619,6 @@ function mxShapeBasicPlaqueFrame(bounds, fill, stroke, strokewidth) }; /** -* Extends mxShape. */ mxUtils.extend(mxShapeBasicPlaqueFrame, mxActor); @@ -1383,6 +1685,24 @@ Graph.handleFactory[mxShapeBasicPlaqueFrame.prototype.cst.PLAQUE_FRAME] = functi return handles; }; +mxShapeBasicPlaqueFrame.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + dx = Math.min(w * 0.5, h * 0.5, dx); + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, -dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false, null, 0, -dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, dx, 0)); + + return (constr); +} + //********************************************************************************************************************************************************** //Rounded Frame //********************************************************************************************************************************************************** @@ -1467,6 +1787,24 @@ Graph.handleFactory[mxShapeBasicRoundedFrame.prototype.cst.ROUNDED_FRAME] = func return handles; }; +mxShapeBasicRoundedFrame.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + dx = Math.min(w * 0.5, h * 0.5, dx); + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, -dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false, null, 0, -dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, dx, 0)); + + return (constr); +} + //********************************************************************************************************************************************************** //Frame Corner //********************************************************************************************************************************************************** @@ -1537,6 +1875,27 @@ Graph.handleFactory[mxShapeBasicFrameCorner.prototype.cst.FRAME_CORNER] = functi return handles; }; +mxShapeBasicFrameCorner.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + + dx = Math.min(w * 0.5, h * 0.5, dx); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, -dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - 2 * dx) * 0.5 + dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, (h - 2 * dx) * 0.5 + dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, dx, -dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +} + //********************************************************************************************************************************************************** //Diagonal Stripe //********************************************************************************************************************************************************** @@ -1605,6 +1964,24 @@ Graph.handleFactory[mxShapeBasicDiagStripe.prototype.cst.DIAG_STRIPE] = function return handles; }; +mxShapeBasicDiagStripe.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + dx = Math.min(w, h, dx); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, Math.min(dx * 100 / w, h) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, Math.min(dx * 100 / w, h))); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w + Math.min(dx * 100 / h, w)) * 0.5, (Math.min(dx * 100 / w, h) + h) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, Math.min(dx * 100 / h, w), h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, Math.min(dx * 100 / h, w) * 0.5, h)); + + return (constr); +} + //********************************************************************************************************************************************************** //Donut //********************************************************************************************************************************************************** @@ -1764,6 +2141,36 @@ Graph.handleFactory[mxShapeBasicLayeredRect.prototype.cst.LAYERED_RECT] = functi return handles; }; +mxShapeBasicLayeredRect.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + dx = Math.min(w * 0.5, h * 0.5, dx); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.25, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.75, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx * 0.5, dx * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dx) * 0.25 + dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dx) * 0.5 + dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dx) * 0.75 + dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.75 + dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.5 + dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.25 + dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx * 0.5, h - dx * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dx) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dx) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dx) * 0.25)); + + return (constr); +} + //********************************************************************************************************************************************************** //Button //********************************************************************************************************************************************************** @@ -2665,6 +3072,19 @@ Graph.handleFactory[mxShapeBasicThreeCornerRoundRect.prototype.cst.THREE_CORNER_ return handles; }; +mxShapeBasicThreeCornerRoundRect.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +} + //********************************************************************************************************************************************************** //Rectangle v2 //********************************************************************************************************************************************************** diff --git a/src/main/webapp/shapes/mxDFD.js b/src/main/webapp/shapes/mxDFD.js index e66c352c..899710f2 100644 --- a/src/main/webapp/shapes/mxDFD.js +++ b/src/main/webapp/shapes/mxDFD.js @@ -35,19 +35,42 @@ mxShapeDFDStart.prototype.paintVertexShape = function(c, x, y, w, h) var r = Math.min(h * 0.5, w * 0.5); c.begin(); - c.moveTo(w - r, 0); + c.moveTo(w - r, h * 0.5 - r); c.arcTo(r, r, 0, 0, 1, w, h * 0.5); - c.arcTo(r, r, 0, 0, 1, w - r, h); - c.lineTo(r, h); + c.arcTo(r, r, 0, 0, 1, w - r, h * 0.5 + r); + c.lineTo(r, h * 0.5 + r); c.arcTo(r, r, 0, 0, 1, 0, h * 0.5); - c.arcTo(r, r, 0, 0, 1, r, 0); + c.arcTo(r, r, 0, 0, 1, r, h * 0.5 - r); c.close(); c.fillAndStroke(); }; mxCellRenderer.registerShape(mxShapeDFDStart.prototype.cst.START, mxShapeDFDStart); -mxShapeDFDStart.prototype.constraints = null; +mxShapeDFDStart.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var r = Math.min(h * 0.5, w * 0.5); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.5), false, null, 0, -r)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.5), false, null, 0, r)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, r * 0.293, h * 0.5 - r * 0.707)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - r * 0.293, h * 0.5 - r * 0.707)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - r * 0.293, h * 0.5 + r * 0.707)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, r * 0.293, h * 0.5 + r * 0.707)); + + if (w >= 4 * h) + { + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + } + + return (constr); +} //********************************************************************************************************************************************************** //Archive @@ -79,7 +102,6 @@ mxShapeDFDArchive.prototype.cst = {ARCHIVE : 'mxgraph.dfd.archive'}; mxShapeDFDArchive.prototype.paintVertexShape = function(c, x, y, w, h) { c.translate(x, y); - var r = Math.min(h * 0.5, w * 0.5); c.begin(); c.moveTo(0,0); @@ -98,7 +120,25 @@ mxShapeDFDArchive.prototype.paintVertexShape = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeDFDArchive.prototype.cst.ARCHIVE, mxShapeDFDArchive); -mxShapeDFDArchive.prototype.constraints = null; +mxShapeDFDArchive.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.875, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.625, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.375, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.125, 0.25), false)); + + return (constr); +} //********************************************************************************************************************************************************** //Check2 @@ -154,7 +194,38 @@ mxShapeDFDCheck2.prototype.paintVertexShape = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeDFDCheck2.prototype.cst.CHECK2, mxShapeDFDCheck2); -mxShapeDFDCheck2.prototype.constraints = null; +mxShapeDFDCheck2.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var size = Math.min(h * 0.5, w * 0.5); + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, size * 0.5, h * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - size * 0.5, h * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, size * 0.5, h * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - size * 0.5, h * 0.75)); + + if (w > h) + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, size, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - size, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, size, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - size, h)); + } + + if(size * 4 <= w) + { + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + } + + return (constr); +} //********************************************************************************************************************************************************** //Data Store with ID @@ -289,7 +360,32 @@ mxShapeDFDExternalEntity.prototype.paintVertexShape = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeDFDExternalEntity.prototype.cst.EXTERNAL_ENTITY, mxShapeDFDExternalEntity); -mxShapeDFDExternalEntity.prototype.constraints = null; +mxShapeDFDExternalEntity.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var size = 10; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - size) * 0.25, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - size) * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - size) * 0.75, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - size, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, size, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - size) * 0.25 + size, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - size) * 0.5 + size, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - size) * 0.75 + size, h)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, size)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, size + (h - size) * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, size + (h - size) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, size + (h - size) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - size) * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - size) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - size) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - size)); + + return (constr); +} //********************************************************************************************************************************************************** //Loop @@ -334,5 +430,18 @@ mxShapeDFDLoop.prototype.paintVertexShape = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeDFDLoop.prototype.cst.LOOP, mxShapeDFDLoop); -mxShapeDFDLoop.prototype.constraints = null; +mxShapeDFDLoop.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var r = Math.min(h * 0.8, w * 0.8); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - r * 0.25, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - r * 0.25, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, r * 0.25, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, r * 0.25, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + + return (constr); +} diff --git a/src/main/webapp/shapes/mxEip.js b/src/main/webapp/shapes/mxEip.js index 6afc8f5e..563c5c1f 100644 --- a/src/main/webapp/shapes/mxEip.js +++ b/src/main/webapp/shapes/mxEip.js @@ -53,6 +53,22 @@ mxShapeEipMessageExpiration.prototype.background = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeEipMessageExpiration.prototype.cst.SHAPE_MESS_EXP, mxShapeEipMessageExpiration); +mxShapeEipMessageExpiration.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.145), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.145), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Return Address //********************************************************************************************************************************************************** @@ -122,6 +138,30 @@ mxShapeEipReturnAddress.prototype.foreground = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeEipReturnAddress.prototype.cst.SHAPE_RET_ADDR, mxShapeEipReturnAddress); +mxShapeEipReturnAddress.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Anchor //********************************************************************************************************************************************************** @@ -218,48 +258,26 @@ mxShapeEipMessageChannel.prototype.foreground = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeEipMessageChannel.prototype.cst.SHAPE_MESSAGE_CHANNEL, mxShapeEipMessageChannel); -mxShapeEipMessageChannel.prototype.constraints = [ - new mxConnectionConstraint(new mxPoint(0, 0.5), true), - new mxConnectionConstraint(new mxPoint(1, 0.5), true), - new mxConnectionConstraint(new mxPoint(0.05, 0), true), - new mxConnectionConstraint(new mxPoint(0.1, 0), true), - new mxConnectionConstraint(new mxPoint(0.15, 0), true), - new mxConnectionConstraint(new mxPoint(0.2, 0), true), - new mxConnectionConstraint(new mxPoint(0.25, 0), true), - new mxConnectionConstraint(new mxPoint(0.3, 0), true), - new mxConnectionConstraint(new mxPoint(0.35, 0), true), - new mxConnectionConstraint(new mxPoint(0.4, 0), true), - new mxConnectionConstraint(new mxPoint(0.45, 0), true), - new mxConnectionConstraint(new mxPoint(0.5, 0), true), - new mxConnectionConstraint(new mxPoint(0.55, 0), true), - new mxConnectionConstraint(new mxPoint(0.6, 0), true), - new mxConnectionConstraint(new mxPoint(0.65, 0), true), - new mxConnectionConstraint(new mxPoint(0.7, 0), true), - new mxConnectionConstraint(new mxPoint(0.75, 0), true), - new mxConnectionConstraint(new mxPoint(0.8, 0), true), - new mxConnectionConstraint(new mxPoint(0.85, 0), true), - new mxConnectionConstraint(new mxPoint(0.9, 0), true), - new mxConnectionConstraint(new mxPoint(0.95, 0), true), - new mxConnectionConstraint(new mxPoint(0.05, 1), true), - new mxConnectionConstraint(new mxPoint(0.1, 1), true), - new mxConnectionConstraint(new mxPoint(0.15, 1), true), - new mxConnectionConstraint(new mxPoint(0.2, 1), true), - new mxConnectionConstraint(new mxPoint(0.25, 1), true), - new mxConnectionConstraint(new mxPoint(0.3, 1), true), - new mxConnectionConstraint(new mxPoint(0.35, 1), true), - new mxConnectionConstraint(new mxPoint(0.4, 1), true), - new mxConnectionConstraint(new mxPoint(0.45, 1), true), - new mxConnectionConstraint(new mxPoint(0.5, 1), true), - new mxConnectionConstraint(new mxPoint(0.55, 1), true), - new mxConnectionConstraint(new mxPoint(0.6, 1), true), - new mxConnectionConstraint(new mxPoint(0.65, 1), true), - new mxConnectionConstraint(new mxPoint(0.7, 1), true), - new mxConnectionConstraint(new mxPoint(0.75, 1), true), - new mxConnectionConstraint(new mxPoint(0.8, 1), true), - new mxConnectionConstraint(new mxPoint(0.85, 1), true), - new mxConnectionConstraint(new mxPoint(0.9, 1), true), - new mxConnectionConstraint(new mxPoint(0.95, 1), true) - ]; + +mxShapeEipMessageChannel.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 2.7, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, -2.7, 0)); + + var currW = 10; + + while (currW < w) + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, currW, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, currW, 0)); + + currW = currW + 10; + } + + return (constr); +}; //********************************************************************************************************************************************************** //Datatype Channel @@ -331,49 +349,25 @@ mxShapeEipDatatypeChannel.prototype.foreground = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeEipDatatypeChannel.prototype.cst.SHAPE_DATATYPE_CHANNEL, mxShapeEipDatatypeChannel); -mxShapeEipDatatypeChannel.prototype.constraints = [ - new mxConnectionConstraint(new mxPoint(0, 0.5), true), - new mxConnectionConstraint(new mxPoint(1, 0.5), true), - new mxConnectionConstraint(new mxPoint(0.05, 0), true), - new mxConnectionConstraint(new mxPoint(0.1, 0), true), - new mxConnectionConstraint(new mxPoint(0.15, 0), true), - new mxConnectionConstraint(new mxPoint(0.2, 0), true), - new mxConnectionConstraint(new mxPoint(0.25, 0), true), - new mxConnectionConstraint(new mxPoint(0.3, 0), true), - new mxConnectionConstraint(new mxPoint(0.35, 0), true), - new mxConnectionConstraint(new mxPoint(0.4, 0), true), - new mxConnectionConstraint(new mxPoint(0.45, 0), true), - new mxConnectionConstraint(new mxPoint(0.5, 0), true), - new mxConnectionConstraint(new mxPoint(0.55, 0), true), - new mxConnectionConstraint(new mxPoint(0.6, 0), true), - new mxConnectionConstraint(new mxPoint(0.65, 0), true), - new mxConnectionConstraint(new mxPoint(0.7, 0), true), - new mxConnectionConstraint(new mxPoint(0.75, 0), true), - new mxConnectionConstraint(new mxPoint(0.8, 0), true), - new mxConnectionConstraint(new mxPoint(0.85, 0), true), - new mxConnectionConstraint(new mxPoint(0.9, 0), true), - new mxConnectionConstraint(new mxPoint(0.95, 0), true), - new mxConnectionConstraint(new mxPoint(0.05, 1), true), - new mxConnectionConstraint(new mxPoint(0.1, 1), true), - new mxConnectionConstraint(new mxPoint(0.15, 1), true), - new mxConnectionConstraint(new mxPoint(0.2, 1), true), - new mxConnectionConstraint(new mxPoint(0.25, 1), true), - new mxConnectionConstraint(new mxPoint(0.3, 1), true), - new mxConnectionConstraint(new mxPoint(0.35, 1), true), - new mxConnectionConstraint(new mxPoint(0.4, 1), true), - new mxConnectionConstraint(new mxPoint(0.45, 1), true), - new mxConnectionConstraint(new mxPoint(0.5, 1), true), - new mxConnectionConstraint(new mxPoint(0.55, 1), true), - new mxConnectionConstraint(new mxPoint(0.6, 1), true), - new mxConnectionConstraint(new mxPoint(0.65, 1), true), - new mxConnectionConstraint(new mxPoint(0.7, 1), true), - new mxConnectionConstraint(new mxPoint(0.75, 1), true), - new mxConnectionConstraint(new mxPoint(0.8, 1), true), - new mxConnectionConstraint(new mxPoint(0.85, 1), true), - new mxConnectionConstraint(new mxPoint(0.9, 1), true), - new mxConnectionConstraint(new mxPoint(0.95, 1), true) - ]; +mxShapeEipDatatypeChannel.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 2.7, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, -2.7, 0)); + var currW = 10; + + while (currW < w) + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, currW, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, currW, 0)); + + currW = currW + 10; + } + + return (constr); +}; //********************************************************************************************************************************************************** //Dead Letter Channel @@ -457,48 +451,25 @@ mxShapeEipDeadLetterChannel.prototype.foreground = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeEipDeadLetterChannel.prototype.cst.SHAPE_DEAD_LETTER_CHANNEL, mxShapeEipDeadLetterChannel); -mxShapeEipDeadLetterChannel.prototype.constraints = [ - new mxConnectionConstraint(new mxPoint(0, 0.5), true), - new mxConnectionConstraint(new mxPoint(1, 0.5), true), - new mxConnectionConstraint(new mxPoint(0.05, 0), true), - new mxConnectionConstraint(new mxPoint(0.1, 0), true), - new mxConnectionConstraint(new mxPoint(0.15, 0), true), - new mxConnectionConstraint(new mxPoint(0.2, 0), true), - new mxConnectionConstraint(new mxPoint(0.25, 0), true), - new mxConnectionConstraint(new mxPoint(0.3, 0), true), - new mxConnectionConstraint(new mxPoint(0.35, 0), true), - new mxConnectionConstraint(new mxPoint(0.4, 0), true), - new mxConnectionConstraint(new mxPoint(0.45, 0), true), - new mxConnectionConstraint(new mxPoint(0.5, 0), true), - new mxConnectionConstraint(new mxPoint(0.55, 0), true), - new mxConnectionConstraint(new mxPoint(0.6, 0), true), - new mxConnectionConstraint(new mxPoint(0.65, 0), true), - new mxConnectionConstraint(new mxPoint(0.7, 0), true), - new mxConnectionConstraint(new mxPoint(0.75, 0), true), - new mxConnectionConstraint(new mxPoint(0.8, 0), true), - new mxConnectionConstraint(new mxPoint(0.85, 0), true), - new mxConnectionConstraint(new mxPoint(0.9, 0), true), - new mxConnectionConstraint(new mxPoint(0.95, 0), true), - new mxConnectionConstraint(new mxPoint(0.05, 1), true), - new mxConnectionConstraint(new mxPoint(0.1, 1), true), - new mxConnectionConstraint(new mxPoint(0.15, 1), true), - new mxConnectionConstraint(new mxPoint(0.2, 1), true), - new mxConnectionConstraint(new mxPoint(0.25, 1), true), - new mxConnectionConstraint(new mxPoint(0.3, 1), true), - new mxConnectionConstraint(new mxPoint(0.35, 1), true), - new mxConnectionConstraint(new mxPoint(0.4, 1), true), - new mxConnectionConstraint(new mxPoint(0.45, 1), true), - new mxConnectionConstraint(new mxPoint(0.5, 1), true), - new mxConnectionConstraint(new mxPoint(0.55, 1), true), - new mxConnectionConstraint(new mxPoint(0.6, 1), true), - new mxConnectionConstraint(new mxPoint(0.65, 1), true), - new mxConnectionConstraint(new mxPoint(0.7, 1), true), - new mxConnectionConstraint(new mxPoint(0.75, 1), true), - new mxConnectionConstraint(new mxPoint(0.8, 1), true), - new mxConnectionConstraint(new mxPoint(0.85, 1), true), - new mxConnectionConstraint(new mxPoint(0.9, 1), true), - new mxConnectionConstraint(new mxPoint(0.95, 1), true) - ]; +mxShapeEipDeadLetterChannel.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 2.7, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, -2.7, 0)); + + var currW = 10; + + while (currW < w) + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, currW, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, currW, 0)); + + currW = currW + 10; + } + + return (constr); +}; //********************************************************************************************************************************************************** //Invalid Message Channel @@ -578,45 +549,22 @@ mxShapeEipInvalidMessageChannel.prototype.foreground = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeEipInvalidMessageChannel.prototype.cst.SHAPE_INVALID_MESSAGE_CHANNEL, mxShapeEipInvalidMessageChannel); -mxShapeEipInvalidMessageChannel.prototype.constraints = [ - new mxConnectionConstraint(new mxPoint(0, 0.5), true), - new mxConnectionConstraint(new mxPoint(1, 0.5), true), - new mxConnectionConstraint(new mxPoint(0.05, 0), true), - new mxConnectionConstraint(new mxPoint(0.1, 0), true), - new mxConnectionConstraint(new mxPoint(0.15, 0), true), - new mxConnectionConstraint(new mxPoint(0.2, 0), true), - new mxConnectionConstraint(new mxPoint(0.25, 0), true), - new mxConnectionConstraint(new mxPoint(0.3, 0), true), - new mxConnectionConstraint(new mxPoint(0.35, 0), true), - new mxConnectionConstraint(new mxPoint(0.4, 0), true), - new mxConnectionConstraint(new mxPoint(0.45, 0), true), - new mxConnectionConstraint(new mxPoint(0.5, 0), true), - new mxConnectionConstraint(new mxPoint(0.55, 0), true), - new mxConnectionConstraint(new mxPoint(0.6, 0), true), - new mxConnectionConstraint(new mxPoint(0.65, 0), true), - new mxConnectionConstraint(new mxPoint(0.7, 0), true), - new mxConnectionConstraint(new mxPoint(0.75, 0), true), - new mxConnectionConstraint(new mxPoint(0.8, 0), true), - new mxConnectionConstraint(new mxPoint(0.85, 0), true), - new mxConnectionConstraint(new mxPoint(0.9, 0), true), - new mxConnectionConstraint(new mxPoint(0.95, 0), true), - new mxConnectionConstraint(new mxPoint(0.05, 1), true), - new mxConnectionConstraint(new mxPoint(0.1, 1), true), - new mxConnectionConstraint(new mxPoint(0.15, 1), true), - new mxConnectionConstraint(new mxPoint(0.2, 1), true), - new mxConnectionConstraint(new mxPoint(0.25, 1), true), - new mxConnectionConstraint(new mxPoint(0.3, 1), true), - new mxConnectionConstraint(new mxPoint(0.35, 1), true), - new mxConnectionConstraint(new mxPoint(0.4, 1), true), - new mxConnectionConstraint(new mxPoint(0.45, 1), true), - new mxConnectionConstraint(new mxPoint(0.5, 1), true), - new mxConnectionConstraint(new mxPoint(0.55, 1), true), - new mxConnectionConstraint(new mxPoint(0.6, 1), true), - new mxConnectionConstraint(new mxPoint(0.65, 1), true), - new mxConnectionConstraint(new mxPoint(0.7, 1), true), - new mxConnectionConstraint(new mxPoint(0.75, 1), true), - new mxConnectionConstraint(new mxPoint(0.8, 1), true), - new mxConnectionConstraint(new mxPoint(0.85, 1), true), - new mxConnectionConstraint(new mxPoint(0.9, 1), true), - new mxConnectionConstraint(new mxPoint(0.95, 1), true) - ]; +mxShapeEipInvalidMessageChannel.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 2.7, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, -2.7, 0)); + + var currW = 10; + + while (currW < w) + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, currW, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, currW, 0)); + + currW = currW + 10; + } + + return (constr); +}; diff --git a/src/main/webapp/shapes/mxInfographic.js b/src/main/webapp/shapes/mxInfographic.js index b5d26684..b9b187e2 100644 --- a/src/main/webapp/shapes/mxInfographic.js +++ b/src/main/webapp/shapes/mxInfographic.js @@ -60,8 +60,6 @@ mxShapeInfographicNumEntryVert.prototype.paintVertexShape = function(c, x, y, w, mxCellRenderer.registerShape(mxShapeInfographicNumEntryVert.prototype.cst.NUM_ENTRY_VERT, mxShapeInfographicNumEntryVert); -mxShapeInfographicNumEntryVert.prototype.constraints = null; - Graph.handleFactory[mxShapeInfographicNumEntryVert.prototype.cst.NUM_ENTRY_VERT] = function(state) { var handles = [Graph.createHandle(state, ['dy'], function(bounds) @@ -77,6 +75,25 @@ Graph.handleFactory[mxShapeInfographicNumEntryVert.prototype.cst.NUM_ENTRY_VERT] return handles; }; +mxShapeInfographicNumEntryVert.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dy = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var inset = 5; + var d = Math.min(dy, w - 2 * inset, h - inset); + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, d * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, d * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 0, d * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, 0, d * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Bending Arch //********************************************************************************************************************************************************** @@ -276,8 +293,6 @@ mxShapeInfographicParallelogram.prototype.paintVertexShape = function(c, x, y, w mxCellRenderer.registerShape(mxShapeInfographicParallelogram.prototype.cst.PARALLELOGRAM, mxShapeInfographicParallelogram); -mxShapeInfographicParallelogram.prototype.constraints = null; - Graph.handleFactory[mxShapeInfographicParallelogram.prototype.cst.PARALLELOGRAM] = function(state) { var handles = [Graph.createHandle(state, ['dx'], function(bounds) @@ -293,6 +308,24 @@ Graph.handleFactory[mxShapeInfographicParallelogram.prototype.cst.PARALLELOGRAM] return handles; }; +mxShapeInfographicParallelogram.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w * 0.5, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var w2 = w - 2 * dx; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2 * dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2 * dx + w2 * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 2 * dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, w - dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 * 0.5, h)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Ribbon Rolled //********************************************************************************************************************************************************** @@ -376,8 +409,6 @@ mxShapeInfographicRibbonRolled.prototype.paintVertexShape = function(c, x, y, w, mxCellRenderer.registerShape(mxShapeInfographicRibbonRolled.prototype.cst.RIBBON_ROLLED, mxShapeInfographicRibbonRolled); -mxShapeInfographicRibbonRolled.prototype.constraints = null; - Graph.handleFactory[mxShapeInfographicRibbonRolled.prototype.cst.RIBBON_ROLLED] = function(state) { var handles = [Graph.createHandle(state, ['dx', 'dy'], function(bounds) @@ -395,6 +426,29 @@ Graph.handleFactory[mxShapeInfographicRibbonRolled.prototype.cst.RIBBON_ROLLED] return handles; }; +mxShapeInfographicRibbonRolled.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var h2 = h - dy; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h2)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, 0, h2)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, h2)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, 0, h2)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, 0, -dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Ribbon Double Folded //********************************************************************************************************************************************************** @@ -478,8 +532,6 @@ mxShapeInfographicRibbonDoubleFolded.prototype.paintVertexShape = function(c, x, mxCellRenderer.registerShape(mxShapeInfographicRibbonDoubleFolded.prototype.cst.RIBBON_DOUBLE_FOLDED, mxShapeInfographicRibbonDoubleFolded); -mxShapeInfographicRibbonDoubleFolded.prototype.constraints = null; - Graph.handleFactory[mxShapeInfographicRibbonDoubleFolded.prototype.cst.RIBBON_DOUBLE_FOLDED] = function(state) { var handles = [Graph.createHandle(state, ['dx', 'dy'], function(bounds) @@ -497,6 +549,28 @@ Graph.handleFactory[mxShapeInfographicRibbonDoubleFolded.prototype.cst.RIBBON_DO return handles; }; +mxShapeInfographicRibbonDoubleFolded.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Ribbon Front Folded //********************************************************************************************************************************************************** @@ -577,8 +651,6 @@ mxShapeInfographicRibbonFrontFolded.prototype.paintVertexShape = function(c, x, mxCellRenderer.registerShape(mxShapeInfographicRibbonFrontFolded.prototype.cst.RIBBON_FRONT_FOLDED, mxShapeInfographicRibbonFrontFolded); -mxShapeInfographicRibbonFrontFolded.prototype.constraints = null; - Graph.handleFactory[mxShapeInfographicRibbonFrontFolded.prototype.cst.RIBBON_FRONT_FOLDED] = function(state) { var handles = [Graph.createHandle(state, ['dx', 'dy'], function(bounds) @@ -609,6 +681,29 @@ Graph.handleFactory[mxShapeInfographicRibbonFrontFolded.prototype.cst.RIBBON_FRO return handles; }; +mxShapeInfographicRibbonFrontFolded.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var notch = Math.max(0, Math.min(w - dx, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - notch, (h + dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h + dy) * 0.5)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Ribbon Back Folded //********************************************************************************************************************************************************** @@ -688,8 +783,6 @@ mxShapeInfographicRibbonBackFolded.prototype.paintVertexShape = function(c, x, y mxCellRenderer.registerShape(mxShapeInfographicRibbonBackFolded.prototype.cst.RIBBON_BACK_FOLDED, mxShapeInfographicRibbonBackFolded); -mxShapeInfographicRibbonBackFolded.prototype.constraints = null; - Graph.handleFactory[mxShapeInfographicRibbonBackFolded.prototype.cst.RIBBON_BACK_FOLDED] = function(state) { var handles = [Graph.createHandle(state, ['dx', 'dy'], function(bounds) @@ -720,6 +813,29 @@ Graph.handleFactory[mxShapeInfographicRibbonBackFolded.prototype.cst.RIBBON_BACK return handles; }; +mxShapeInfographicRibbonBackFolded.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var notch = Math.max(0, Math.min(w - dx, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - notch, (h + dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h + dy) * 0.5)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Banner //********************************************************************************************************************************************************** @@ -821,8 +937,6 @@ mxShapeInfographicBanner.prototype.paintVertexShape = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeInfographicBanner.prototype.cst.BANNER, mxShapeInfographicBanner); -mxShapeInfographicBanner.prototype.constraints = null; - Graph.handleFactory[mxShapeInfographicBanner.prototype.cst.BANNER] = function(state) { var handles = [Graph.createHandle(state, ['dx', 'dy'], function(bounds) @@ -854,6 +968,34 @@ Graph.handleFactory[mxShapeInfographicBanner.prototype.cst.BANNER] = function(st return handles; }; +mxShapeInfographicBanner.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w / 2, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + dx = Math.min(w / 2 - 2 * dy, dx); + notch = Math.min(dx, notch); + var w2 = w - 2 * dx; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + w2 * 0.25, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + w2 * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + w2 * 0.75, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + w2, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + w2, (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + w2, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + w2 * 0.75, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + w2 * 0.5, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + w2 * 0.25, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, notch, (h + dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - notch, (h + dy) * 0.5)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Circular Callout //********************************************************************************************************************************************************** @@ -913,8 +1055,6 @@ mxShapeInfographicCircularCallout.prototype.paintVertexShape = function(c, x, y, mxCellRenderer.registerShape(mxShapeInfographicCircularCallout.prototype.cst.CIRCULAR_CALLOUT, mxShapeInfographicCircularCallout); -mxShapeInfographicCircularCallout.prototype.constraints = null; - Graph.handleFactory[mxShapeInfographicCircularCallout.prototype.cst.CIRCULAR_CALLOUT] = function(state) { var handles = [Graph.createHandle(state, ['dy'], function(bounds) @@ -930,6 +1070,25 @@ Graph.handleFactory[mxShapeInfographicCircularCallout.prototype.cst.CIRCULAR_CAL return handles; }; +mxShapeInfographicCircularCallout.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var rx = Math.max(0, Math.min(w * 0.5, w * 0.5 - dy)); + var ry = Math.max(0, Math.min(h * 0.5, h * 0.5 - dy)); + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.145), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Shaded triangle //********************************************************************************************************************************************************** @@ -999,7 +1158,19 @@ mxShapeInfographicShadedTriangle.prototype.paintVertexShape = function(c, x, y, mxCellRenderer.registerShape(mxShapeInfographicShadedTriangle.prototype.cst.SHADED_TRIANGLE, mxShapeInfographicShadedTriangle); -mxShapeInfographicShadedTriangle.prototype.constraints = null; +mxShapeInfographicShadedTriangle.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0.5), false)); + + return (constr); +}; //********************************************************************************************************************************************************** //Shaded pyramid @@ -1073,7 +1244,22 @@ mxShapeInfographicShadedPyramid.prototype.paintVertexShape = function(c, x, y, w mxCellRenderer.registerShape(mxShapeInfographicShadedPyramid.prototype.cst.SHADED_PYRAMID, mxShapeInfographicShadedPyramid); -mxShapeInfographicShadedPyramid.prototype.constraints = null; +mxShapeInfographicShadedPyramid.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var h1 = Math.max(h - w * 0.3, 0); + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75, h1 * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75, (h + h1) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25, (h + h1) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25, h1 * 0.5)); + + return (constr); +}; //********************************************************************************************************************************************************** //Pyramid step @@ -1151,7 +1337,29 @@ mxShapeInfographicPyramidStep.prototype.paintVertexShape = function(c, x, y, w, mxCellRenderer.registerShape(mxShapeInfographicPyramidStep.prototype.cst.PYRAMID_STEP, mxShapeInfographicPyramidStep); -mxShapeInfographicPyramidStep.prototype.constraints = null; +mxShapeInfographicPyramidStep.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var h1 = Math.max(w * 0.1, 0); + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75, h1 * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h1 + (h - h1) * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h1 + (h - h1) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h1 + (h - h1) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h1 + (h - h1) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h1 + (h - h1) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h1 + (h - h1) * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25, h1 * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h1)); + return (constr); +}; //********************************************************************************************************************************************************** //Cylinder @@ -1218,7 +1426,28 @@ mxShapeInfographicCylinder.prototype.paintVertexShape = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeInfographicCylinder.prototype.cst.CYLINDER, mxShapeInfographicCylinder); -mxShapeInfographicCylinder.prototype.constraints = null; +mxShapeInfographicCylinder.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dy = 20; + var rx = w * 0.5; + var ry = dy * 0.5; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dy * 0.5 + (h - dy) * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dy * 0.5 + (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dy * 0.5 + (h - dy) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h - dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy * 0.5 + (h - dy) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy * 0.5 + (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy * 0.5 + (h - dy) * 0.25)); + + return (constr); +}; //********************************************************************************************************************************************************** //Circular Callout 2 @@ -1329,7 +1558,18 @@ mxShapeInfographicCircularCallout2.prototype.paintVertexShape = function(c, x, y mxCellRenderer.registerShape(mxShapeInfographicCircularCallout2.prototype.cst.CIRCULAR_CALLOUT_2, mxShapeInfographicCircularCallout2); -mxShapeInfographicCircularCallout2.prototype.constraints = null; +mxShapeInfographicCircularCallout2.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var rx = Math.max(0, Math.min(w * 0.5, h * 0.4, h * 0.5 - 7)); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - rx, rx)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + rx, rx)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + + return (constr); +}; //********************************************************************************************************************************************************** //Banner Single Fold @@ -1434,8 +1674,6 @@ mxShapeInfographicBannerSingleFold.prototype.paintVertexShape = function(c, x, y mxCellRenderer.registerShape(mxShapeInfographicBannerSingleFold.prototype.cst.BANNER_SINGLE_FOLD, mxShapeInfographicBannerSingleFold); -mxShapeInfographicBannerSingleFold.prototype.constraints = null; - Graph.handleFactory[mxShapeInfographicBannerSingleFold.prototype.cst.BANNER_SINGLE_FOLD] = function(state) { var handles = [Graph.createHandle(state, ['dx', 'dy'], function(bounds) @@ -1485,6 +1723,42 @@ Graph.handleFactory[mxShapeInfographicBannerSingleFold.prototype.cst.BANNER_SING return handles; }; +mxShapeInfographicBannerSingleFold.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + dx = Math.min(w - 2 * dy, dx); + var dx2 = Math.max(0, Math.min(w - dx - 2 * dy, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + notch = Math.min(dx, notch); + var w2 = w - dx - dx2; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.25, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.75, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx * 0.25, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx * 0.5, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx * 0.75, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - notch, (h + dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx - 2 * dy, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - (dx + 2 * dy) * 0.75, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - (dx + 2 * dy) * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - (dx + 2 * dy) * 0.25, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.25, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.5, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.75, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2, h - dy)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Shaded Cube //********************************************************************************************************************************************************** @@ -1558,8 +1832,6 @@ mxShapeBasicShadedCube.prototype.paintVertexShape = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeBasicShadedCube.prototype.cst.SHADED_CUBE, mxShapeBasicShadedCube); -mxShapeBasicShadedCube.prototype.constraints = null; - Graph.handleFactory[mxShapeBasicShadedCube.prototype.cst.SHADED_CUBE] = function(state) { var handles = [Graph.createHandle(state, ['isoAngle'], function(bounds) @@ -1576,6 +1848,33 @@ Graph.handleFactory[mxShapeBasicShadedCube.prototype.cst.SHADED_CUBE] = function return handles; }; +mxShapeBasicShadedCube.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var isoAngle = Math.max(0.01, Math.min(94, parseFloat(mxUtils.getValue(this.style, 'isoAngle', this.isoAngle)))) * Math.PI / 200 ; + var isoH = Math.min(w * Math.tan(isoAngle), h * 0.5); + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75, isoH * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, isoH)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, isoH + (h - 2 * isoH) * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, isoH + (h - 2 * isoH) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, isoH + (h - 2 * isoH) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h - isoH)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75, h - isoH * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25, h - isoH * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - isoH)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - isoH)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, isoH + (h - 2 * isoH) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, isoH + (h - 2 * isoH) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, isoH + (h - 2 * isoH) * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, isoH)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25, isoH * 0.5)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Partial Concentric Ellipse //********************************************************************************************************************************************************** @@ -1706,8 +2005,6 @@ mxShapeBasicPartConcEllipse.prototype.paintVertexShape = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeBasicPartConcEllipse.prototype.cst.PART_CONC_ELLIPSE, mxShapeBasicPartConcEllipse); -mxShapeBasicPartConcEllipse.prototype.constraints = null; - Graph.handleFactory[mxShapeBasicPartConcEllipse.prototype.cst.PART_CONC_ELLIPSE] = function(state) { var handles = [Graph.createHandle(state, ['startAngle'], function(bounds) @@ -1768,6 +2065,22 @@ Graph.handleFactory[mxShapeBasicPartConcEllipse.prototype.cst.PART_CONC_ELLIPSE] return handles; }; +mxShapeBasicPartConcEllipse.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.145), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.145), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Banner Half Fold //********************************************************************************************************************************************************** @@ -1855,8 +2168,6 @@ mxShapeInfographicBannerHalfFold.prototype.paintVertexShape = function(c, x, y, mxCellRenderer.registerShape(mxShapeInfographicBannerHalfFold.prototype.cst.BANNER_HALF_FOLD, mxShapeInfographicBannerHalfFold); -mxShapeInfographicBannerHalfFold.prototype.constraints = null; - Graph.handleFactory[mxShapeInfographicBannerHalfFold.prototype.cst.BANNER_HALF_FOLD] = function(state) { var handles = [Graph.createHandle(state, ['dx'], function(bounds) @@ -1900,6 +2211,42 @@ Graph.handleFactory[mxShapeInfographicBannerHalfFold.prototype.cst.BANNER_HALF_F return handles; }; +mxShapeInfographicBannerHalfFold.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dx2 = Math.max(0, Math.min(w - dx, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var notch = Math.max(0, Math.min(h - dx, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var w2 = w - dx - dx2; + var h2 = h - dx; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dx * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.25, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.75, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx * 0.5, dx * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dx + h2 * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dx + h2 * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dx + h2 * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx * 0.5, h - notch)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, dx + h2 * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, dx + h2 * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, dx + h2 * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.25, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.5, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.75, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2, dx)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Circular Dial //********************************************************************************************************************************************************** @@ -1971,8 +2318,6 @@ mxShapeInfographicCircularDial.prototype.paintVertexShape = function(c, x, y, w, mxCellRenderer.registerShape(mxShapeInfographicCircularDial.prototype.cst.CIRCULAR_DIAL, mxShapeInfographicCircularDial); -mxShapeInfographicCircularDial.prototype.constraints = null; - Graph.handleFactory[mxShapeInfographicCircularDial.prototype.cst.CIRCULAR_DIAL] = function(state) { var handles = [Graph.createHandle(state, ['dy'], function(bounds) @@ -1988,6 +2333,28 @@ Graph.handleFactory[mxShapeInfographicCircularDial.prototype.cst.CIRCULAR_DIAL] return handles; }; +mxShapeInfographicCircularDial.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dy = Math.max(0, Math.min(h * 0.5 - 10, w * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var rx = Math.max(0, Math.min(w * 0.5, h * 0.5 - 10)); + var rx2 = rx - dy; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - rx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - rx, (rx + h) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - rx, rx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - rx * 0.71, rx * 0.29)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + rx * 0.71, rx * 0.29)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + rx, rx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + rx, (rx + h) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + rx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + rx * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - rx * 0.5, h)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Simple ribbon //********************************************************************************************************************************************************** @@ -2042,8 +2409,6 @@ mxShapeInfographicRibbonSimple.prototype.paintVertexShape = function(c, x, y, w, mxCellRenderer.registerShape(mxShapeInfographicRibbonSimple.prototype.cst.RIBBON_SIMPLE, mxShapeInfographicRibbonSimple); -mxShapeInfographicRibbonSimple.prototype.constraints = null; - Graph.handleFactory[mxShapeInfographicRibbonSimple.prototype.cst.RIBBON_SIMPLE] = function(state) { var handles = [Graph.createHandle(state, ['notch1'], function(bounds) @@ -2071,6 +2436,29 @@ Graph.handleFactory[mxShapeInfographicRibbonSimple.prototype.cst.RIBBON_SIMPLE] return handles; }; +mxShapeInfographicRibbonSimple.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var notch1 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch1', this.notch2)))); + var notch2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch2', this.notch2)))); + var w2 = w - notch2; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 * 0.25, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 * 0.75, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 * 0.75, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 * 0.25, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, notch1, h * 0.5)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Bar with callout //********************************************************************************************************************************************************** @@ -2148,6 +2536,29 @@ Graph.handleFactory[mxShapeInfographicBarCallout.prototype.cst.BAR_CALLOUT] = fu return handles; }; +mxShapeInfographicBarCallout.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var x1 = Math.max(dx - dy * 0.35, 0); + var x2 = Math.min(dx + dy * 0.35, w); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dy)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Flag //********************************************************************************************************************************************************** @@ -2214,8 +2625,6 @@ mxShapeInfographicFlag.prototype.paintVertexShape = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeInfographicFlag.prototype.cst.FLAG, mxShapeInfographicFlag); -mxShapeInfographicFlag.prototype.constraints = null; - Graph.handleFactory[mxShapeInfographicFlag.prototype.cst.FLAG] = function(state) { var handles = [Graph.createHandle(state, ['dx', 'dy'], function(bounds) @@ -2233,3 +2642,27 @@ Graph.handleFactory[mxShapeInfographicFlag.prototype.cst.FLAG] = function(state) return handles; }; +mxShapeInfographicFlag.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx * 0.5, 0)); + + return (constr); +}; + diff --git a/src/main/webapp/shapes/mxLeanMap.js b/src/main/webapp/shapes/mxLeanMap.js index 31bc1821..15a899d5 100644 --- a/src/main/webapp/shapes/mxLeanMap.js +++ b/src/main/webapp/shapes/mxLeanMap.js @@ -1096,6 +1096,16 @@ mxLeanProductionKanban.prototype.paintVertexShape = function(c, x, y, w, h) mxCellRenderer.registerShape('mxgraph.lean_mapping.production_kanban', mxLeanProductionKanban); +mxLeanProductionKanban.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 4, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, 25)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Withdrawal Kanban //********************************************************************************************************************************************************** @@ -1175,6 +1185,16 @@ mxLeanWithdrawalKanban.prototype.paintVertexShape = function(c, x, y, w, h) mxCellRenderer.registerShape('mxgraph.lean_mapping.withdrawal_kanban', mxLeanWithdrawalKanban); +mxLeanWithdrawalKanban.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 4, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, 25)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Signal Kanban //********************************************************************************************************************************************************** @@ -1231,6 +1251,16 @@ mxLeanSignalKanban.prototype.paintVertexShape = function(c, x, y, w, h) mxCellRenderer.registerShape('mxgraph.lean_mapping.signal_kanban', mxLeanSignalKanban); +mxLeanSignalKanban.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 4, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, 15)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Sequenced Pull Ball //********************************************************************************************************************************************************** diff --git a/src/main/webapp/shapes/mxSysML.js b/src/main/webapp/shapes/mxSysML.js index 7cc2bff7..54e0d790 100644 --- a/src/main/webapp/shapes/mxSysML.js +++ b/src/main/webapp/shapes/mxSysML.js @@ -17,8 +17,6 @@ mxShapeSysMLComposite.prototype.isHtmlAllowed = function() { return false; }; - - mxShapeSysMLComposite.prototype.paintForeground = function(c, x, y, w, h) { @@ -138,6 +136,30 @@ mxShapeSysMLPackage.prototype.customProperties = [ {name: 'labelX', dispName: 'Header Width', type: 'float', min:0, defVal:90} ]; +mxShapeSysMLPackage.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + /** * Function: paintVertexShape * @@ -303,8 +325,6 @@ mxShapeSysMLNone.prototype.cst = { NONE : 'mxgraph.sysml.none' }; - - /** * Function: paintVertexShape * @@ -340,8 +360,6 @@ mxShapeSysMLRect.prototype.cst = { RECT : 'mxgraph.sysml.rect' }; - - /** * Function: paintVertexShape * @@ -379,8 +397,6 @@ mxShapeSysMLPortOne.prototype.cst = { PORT1 : 'mxgraph.sysml.port1' }; - - /** * Function: paintVertexShape * @@ -394,6 +410,28 @@ mxShapeSysMLPortOne.prototype.paintVertexShape = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeSysMLPortOne.prototype.cst.PORT1, mxShapeSysMLPortOne); +mxShapeSysMLPortOne.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.05, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.95, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.95, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.95, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.95, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.05, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.05, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.05, 0.25), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Port2 //********************************************************************************************************************************************************** @@ -418,8 +456,6 @@ mxShapeSysMLPortTwo.prototype.cst = { PORT2 : 'mxgraph.sysml.port2' }; - - /** * Function: paintVertexShape * @@ -433,6 +469,28 @@ mxShapeSysMLPortTwo.prototype.paintVertexShape = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeSysMLPortTwo.prototype.cst.PORT2, mxShapeSysMLPortTwo); +mxShapeSysMLPortTwo.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.05, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.95, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.95, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.95, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.95, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.05, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.05, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.05, 0.25), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Port3 //********************************************************************************************************************************************************** @@ -457,8 +515,6 @@ mxShapeSysMLPortThree.prototype.cst = { PORT3 : 'mxgraph.sysml.port3' }; - - /** * Function: paintVertexShape * @@ -539,8 +595,6 @@ mxShapeSysMLPortFour.prototype.cst = { PORT4 : 'mxgraph.sysml.port4' }; - - /** * Function: paintVertexShape * @@ -766,8 +820,6 @@ mxShapeSysMLItemFlowLeft.prototype.cst = { ITEM_FLOW_LEFT : 'mxgraph.sysml.itemFlowLeft' }; - - /** * Function: paintVertexShape * @@ -820,8 +872,6 @@ mxShapeSysMLItemFlowRight.prototype.cst = { ITEM_FLOW_RIGHT : 'mxgraph.sysml.itemFlowRight' }; - - /** * Function: paintVertexShape * @@ -874,8 +924,6 @@ mxShapeSysMLNestedPort.prototype.cst = { NESTED_PORT : 'mxgraph.sysml.nestedPort' }; - - /** * Function: paintVertexShape * @@ -979,8 +1027,6 @@ mxShapeSysMLParametricDiagram.prototype.cst = { PARAM_DGM : 'mxgraph.sysml.paramDgm' }; - - /** * Function: paintVertexShape * @@ -1028,8 +1074,6 @@ mxShapeSysMLConstraintProperty.prototype.cst = { CONS_PROP : 'mxgraph.sysml.consProp' }; - - /** * Function: paintVertexShape * @@ -1077,8 +1121,6 @@ mxShapeSysMLCallBehaviorAction.prototype.cst = { CALL_BEH_ACT : 'mxgraph.sysml.callBehAct' }; - - /** * Function: paintVertexShape * @@ -1111,6 +1153,31 @@ mxShapeSysMLCallBehaviorAction.prototype.drawSymb = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeSysMLCallBehaviorAction.prototype.cst.CALL_BEH_ACT, mxShapeSysMLCallBehaviorAction); +mxShapeSysMLCallBehaviorAction.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, -2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -2.9, -2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, 2.9, -2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Accept Event Action //********************************************************************************************************************************************************** @@ -1135,8 +1202,6 @@ mxShapeSysMLAcceptEventAction.prototype.cst = { ACC_EVENT : 'mxgraph.sysml.accEvent' }; - - /** * Function: paintVertexShape * @@ -1156,6 +1221,28 @@ mxShapeSysMLAcceptEventAction.prototype.paintVertexShape = function(c, x, y, w, mxCellRenderer.registerShape(mxShapeSysMLAcceptEventAction.prototype.cst.ACC_EVENT, mxShapeSysMLAcceptEventAction); +mxShapeSysMLAcceptEventAction.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, h * 0.3, 0)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Time Event //********************************************************************************************************************************************************** @@ -1180,8 +1267,6 @@ mxShapeSysMLTimeEvent.prototype.cst = { TIME_EVENT : 'mxgraph.sysml.timeEvent' }; - - /** * Function: paintVertexShape * @@ -1200,6 +1285,21 @@ mxShapeSysMLTimeEvent.prototype.paintVertexShape = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeSysMLTimeEvent.prototype.cst.TIME_EVENT, mxShapeSysMLTimeEvent); +mxShapeSysMLTimeEvent.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.5), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Send Signal Action //********************************************************************************************************************************************************** @@ -1224,8 +1324,6 @@ mxShapeSysMLSendSignalAction.prototype.cst = { SEND_SIG_ACT : 'mxgraph.sysml.sendSigAct' }; - - /** * Function: paintVertexShape * @@ -1245,6 +1343,28 @@ mxShapeSysMLSendSignalAction.prototype.paintVertexShape = function(c, x, y, w, h mxCellRenderer.registerShape(mxShapeSysMLSendSignalAction.prototype.cst.SEND_SIG_ACT, mxShapeSysMLSendSignalAction); +mxShapeSysMLSendSignalAction.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, -h * 0.3, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -h * 0.3, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Activity Final //********************************************************************************************************************************************************** @@ -1269,8 +1389,6 @@ mxShapeSysMLActivityFinal.prototype.cst = { ACT_FINAL : 'mxgraph.sysml.actFinal' }; - - /** * Function: paintVertexShape * @@ -1290,6 +1408,22 @@ mxShapeSysMLActivityFinal.prototype.paintVertexShape = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeSysMLActivityFinal.prototype.cst.ACT_FINAL, mxShapeSysMLActivityFinal); +mxShapeSysMLActivityFinal.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.145), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.145), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Activity Parameter Node //********************************************************************************************************************************************************** @@ -1314,8 +1448,6 @@ mxShapeSysMLActivityParameterNode.prototype.cst = { ACT_PARAM_NODE : 'mxgraph.sysml.actParamNode' }; - - /** * Function: paintVertexShape * @@ -1366,6 +1498,17 @@ mxShapeSysMLActivityParameterNode.prototype.paintVertexShape = function(c, x, y, mxCellRenderer.registerShape(mxShapeSysMLActivityParameterNode.prototype.cst.ACT_PARAM_NODE, mxShapeSysMLActivityParameterNode); +mxShapeSysMLActivityParameterNode.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.35), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.65), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Control Operator //********************************************************************************************************************************************************** @@ -1390,8 +1533,6 @@ mxShapeSysMLControlOperator.prototype.cst = { CONT_OPER : 'mxgraph.sysml.contOper' }; - - /** * Function: paintVertexShape * @@ -1455,8 +1596,6 @@ mxShapeSysMLFlowFinal.prototype.cst = { FLOW_FINAL : 'mxgraph.sysml.flowFinal' }; - - /** * Function: paintVertexShape * @@ -1481,6 +1620,22 @@ mxShapeSysMLFlowFinal.prototype.paintVertexShape = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeSysMLFlowFinal.prototype.cst.FLOW_FINAL, mxShapeSysMLFlowFinal); +mxShapeSysMLFlowFinal.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.145), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.145), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Is Control //********************************************************************************************************************************************************** @@ -1505,8 +1660,6 @@ mxShapeSysMLIsControl.prototype.cst = { IS_CONTROL : 'mxgraph.sysml.isControl' }; - - /** * Function: paintVertexShape * @@ -1526,6 +1679,16 @@ mxShapeSysMLIsControl.prototype.paintVertexShape = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeSysMLIsControl.prototype.cst.IS_CONTROL, mxShapeSysMLIsControl); +mxShapeSysMLIsControl.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Is Stream //********************************************************************************************************************************************************** @@ -1550,8 +1713,6 @@ mxShapeSysMLIsStream.prototype.cst = { IS_STREAM : 'mxgraph.sysml.isStream' }; - - /** * Function: paintVertexShape * @@ -1579,6 +1740,16 @@ mxShapeSysMLIsStream.prototype.paintVertexShape = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeSysMLIsStream.prototype.cst.IS_STREAM, mxShapeSysMLIsStream); +mxShapeSysMLIsStream.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Is Activity Stream //********************************************************************************************************************************************************** @@ -1603,8 +1774,6 @@ mxShapeSysMLIsActStream.prototype.cst = { IS_ACT_STREAM : 'mxgraph.sysml.isActStream' }; - - /** * Function: paintVertexShape * @@ -1641,6 +1810,18 @@ mxShapeSysMLIsActStream.prototype.paintVertexShape = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeSysMLIsActStream.prototype.cst.IS_ACT_STREAM, mxShapeSysMLIsActStream); +mxShapeSysMLIsActStream.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Parameter Set //********************************************************************************************************************************************************** @@ -1665,8 +1846,6 @@ mxShapeSysMLParameterSet.prototype.cst = { PARAM_SET : 'mxgraph.sysml.paramSet' }; - - /** * Function: paintVertexShape * @@ -1697,8 +1876,28 @@ mxShapeSysMLParameterSet.prototype.paintVertexShape = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeSysMLParameterSet.prototype.cst.PARAM_SET, mxShapeSysMLParameterSet); +mxShapeSysMLParameterSet.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 0, -14)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 0, 14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, 0, -14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, 0, 14)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** -//Is Activity Stream +//Is Parameter Activity Set //********************************************************************************************************************************************************** /** * Extends mxShape. @@ -1721,8 +1920,6 @@ mxShapeSysMLParameterActivitySet.prototype.cst = { PARAM_ACT_SET : 'mxgraph.sysml.paramActSet' }; - - /** * Function: paintVertexShape * @@ -1775,6 +1972,26 @@ mxShapeSysMLParameterActivitySet.prototype.paintVertexShape = function(c, x, y, mxCellRenderer.registerShape(mxShapeSysMLParameterActivitySet.prototype.cst.PARAM_ACT_SET, mxShapeSysMLParameterActivitySet); +mxShapeSysMLParameterActivitySet.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 0, -14)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 0, 14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, 0, -14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, 0, 14)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Probability //********************************************************************************************************************************************************** @@ -1799,8 +2016,6 @@ mxShapeSysMLProbability.prototype.cst = { PROBABILITY : 'mxgraph.sysml.probability' }; - - /** * Function: paintVertexShape * @@ -1831,6 +2046,29 @@ mxShapeSysMLProbability.prototype.paintVertexShape = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeSysMLProbability.prototype.cst.PROBABILITY, mxShapeSysMLProbability); +mxShapeSysMLProbability.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false, null, 0, -14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false, null, 0, 14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false, null, 0, -14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false, null, 0, 14)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false, null, -5, 0)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Is Activity Stream //********************************************************************************************************************************************************** @@ -1855,8 +2093,6 @@ mxShapeSysMLActivityProbability.prototype.cst = { ACT_PROB : 'mxgraph.sysml.actProb' }; - - /** * Function: paintVertexShape * @@ -1909,6 +2145,29 @@ mxShapeSysMLActivityProbability.prototype.paintVertexShape = function(c, x, y, w mxCellRenderer.registerShape(mxShapeSysMLActivityProbability.prototype.cst.ACT_PROB, mxShapeSysMLActivityProbability); +mxShapeSysMLActivityProbability.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false, null, 0, -14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false, null, 0, 14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false, null, 0, -14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false, null, 0, 14)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false, null, -5, 0)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Object Flow Right //********************************************************************************************************************************************************** @@ -1933,8 +2192,6 @@ mxShapeSysMLObjectFlowRight.prototype.cst = { OBJ_FLOW_R : 'mxgraph.sysml.objFlowR' }; - - /** * Function: paintVertexShape * @@ -1952,8 +2209,20 @@ mxShapeSysMLObjectFlowRight.prototype.paintVertexShape = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeSysMLObjectFlowRight.prototype.cst.OBJ_FLOW_R, mxShapeSysMLObjectFlowRight); +mxShapeSysMLObjectFlowRight.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false, null, -5, 0)); + + return (constr); +}; + //********************************************************************************************************************************************************** -//Object Flow Right +//Object Flow Left //********************************************************************************************************************************************************** /** * Extends mxShape. @@ -1976,8 +2245,6 @@ mxShapeSysMLObjectFlowLeft.prototype.cst = { OBJ_FLOW_L : 'mxgraph.sysml.objFlowL' }; - - /** * Function: paintVertexShape * @@ -1995,6 +2262,18 @@ mxShapeSysMLObjectFlowLeft.prototype.paintVertexShape = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeSysMLObjectFlowLeft.prototype.cst.OBJ_FLOW_L, mxShapeSysMLObjectFlowLeft); +mxShapeSysMLObjectFlowLeft.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false, null, 5, 0)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Activity Partition //********************************************************************************************************************************************************** @@ -2019,8 +2298,6 @@ mxShapeSysMLActivityPartition.prototype.cst = { ACT_PART : 'mxgraph.sysml.actPart' }; - - /** * Function: paintVertexShape * @@ -2065,8 +2342,6 @@ mxShapeSysMLContinuation.prototype.cst = { CONT : 'mxgraph.sysml.cont' }; - - /** * Function: paintVertexShape * @@ -2104,6 +2379,48 @@ mxShapeSysMLContinuation.prototype.paintVertexShape = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeSysMLContinuation.prototype.cst.CONT, mxShapeSysMLContinuation); +mxShapeSysMLContinuation.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + + if (w > h) + { + var r = h * 0.5; + + if (w > 2 * h) + { + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + } + } + else + { + var r = w * 0.5; + + if (h > 2 * w) + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + } + } + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, r * 0.29, r * 0.29)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - r * 0.29, r * 0.29)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, r * 0.29, h - r * 0.29)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - r * 0.29, h - r * 0.29)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Coregion //********************************************************************************************************************************************************** @@ -2128,8 +2445,6 @@ mxShapeSysMLCoregion.prototype.cst = { COREGION : 'mxgraph.sysml.coregion' }; - - /** * Function: paintVertexShape * @@ -2201,8 +2516,6 @@ mxShapeSysMLDimension.prototype.cst = { DIMENSION : 'mxgraph.sysml.dimension' }; - - /** * Function: paintVertexShape * @@ -2302,8 +2615,6 @@ mxShapeSysMLCompositeState.prototype.cst = { COMP_STATE : 'mxgraph.sysml.compState' }; - - /** * Function: paintVertexShape * @@ -2327,6 +2638,45 @@ mxShapeSysMLCompositeState.prototype.background = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeSysMLCompositeState.prototype.cst.COMP_STATE, mxShapeSysMLCompositeState); +mxShapeSysMLCompositeState.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, 22.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 2.9, 22.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 2.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - 20) * 0.25 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - 20) * 0.5 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - 20) * 0.75 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, (h - 20) * 0.25 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, (h - 20) * 0.5 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, (h - 20) * 0.75 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 15, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 70, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 125, 0)); + + if (w * 0.75 > 125) + { + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, 0, 20)); + + if (w * 0.5 > 125) + { + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, 20)); + + if (w * 0.25 > 125) + { + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, 0, 20)); + } + } + } + + return (constr); +}; + //********************************************************************************************************************************************************** //Region //********************************************************************************************************************************************************** @@ -2351,8 +2701,6 @@ mxShapeSysMLRegion.prototype.cst = { REGION : 'mxgraph.sysml.region' }; - - /** * Function: paintVertexShape * @@ -2392,6 +2740,45 @@ mxShapeSysMLRegion.prototype.foreground = function(c, x, y, w, h, tabH, tabW) mxCellRenderer.registerShape(mxShapeSysMLRegion.prototype.cst.REGION, mxShapeSysMLRegion); +mxShapeSysMLRegion.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, 22.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 2.9, 22.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 2.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - 20) * 0.25 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - 20) * 0.5 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - 20) * 0.75 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, (h - 20) * 0.25 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, (h - 20) * 0.5 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, (h - 20) * 0.75 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 15, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 40, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 65, 0)); + + if (w * 0.75 > 65) + { + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, 0, 20)); + + if (w * 0.5 > 65) + { + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, 20)); + + if (w * 0.25 > 65) + { + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, 0, 20)); + } + } + } + + return (constr); +}; + //********************************************************************************************************************************************************** //Simple State //********************************************************************************************************************************************************** @@ -2416,8 +2803,6 @@ mxShapeSysMLSimpleState.prototype.cst = { SIMPLE_STATE : 'mxgraph.sysml.simpleState' }; - - /** * Function: paintVertexShape * @@ -2448,6 +2833,30 @@ mxShapeSysMLSimpleState.prototype.foreground = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeSysMLSimpleState.prototype.cst.SIMPLE_STATE, mxShapeSysMLSimpleState); +mxShapeSysMLSimpleState.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 2.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //State Machine //********************************************************************************************************************************************************** @@ -2472,8 +2881,6 @@ mxShapeSysMLStateMachine.prototype.cst = { STATE_MACHINE : 'mxgraph.sysml.stateMachine' }; - - /** * Function: paintVertexShape * @@ -2507,6 +2914,30 @@ mxShapeSysMLStateMachine.prototype.foreground = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeSysMLStateMachine.prototype.cst.STATE_MACHINE, mxShapeSysMLStateMachine); +mxShapeSysMLStateMachine.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 12.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 12.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false, null, -10, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false, null, -10, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** // X //********************************************************************************************************************************************************** @@ -2531,8 +2962,6 @@ mxShapeSysMLX.prototype.cst = { X : 'mxgraph.sysml.x' }; - - /** * Function: paintVertexShape * @@ -2552,6 +2981,18 @@ mxShapeSysMLX.prototype.paintVertexShape = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeSysMLX.prototype.cst.X, mxShapeSysMLX); +mxShapeSysMLX.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Submachine State //********************************************************************************************************************************************************** @@ -2576,8 +3017,6 @@ mxShapeSysMLSubmachineState.prototype.cst = { SUBMACHINE_STATE : 'mxgraph.sysml.submState' }; - - /** * Function: paintVertexShape * @@ -2611,6 +3050,30 @@ mxShapeSysMLSubmachineState.prototype.foreground = function(c, x, y, w, h) mxCellRenderer.registerShape(mxShapeSysMLSubmachineState.prototype.cst.SUBMACHINE_STATE, mxShapeSysMLSubmachineState); +mxShapeSysMLSubmachineState.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 12.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 12.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false, null, -10, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false, null, -10, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + + return (constr); +}; + //********************************************************************************************************************************************************** //Use Case with Extension Points //********************************************************************************************************************************************************** @@ -2635,8 +3098,6 @@ mxShapeSysMLUseCaseExtensionPoints.prototype.cst = { USE_CASE_EXT_PT : 'mxgraph.sysml.useCaseExtPt' }; - - /** * Function: paintVertexShape * @@ -2665,3 +3126,19 @@ mxShapeSysMLUseCaseExtensionPoints.prototype.foreground = function(c, x, y, w, h }; mxCellRenderer.registerShape(mxShapeSysMLUseCaseExtensionPoints.prototype.cst.USE_CASE_EXT_PT, mxShapeSysMLUseCaseExtensionPoints); + +mxShapeSysMLUseCaseExtensionPoints.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.145), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.145), false)); + + return (constr); +}; diff --git a/src/main/webapp/shortcuts.svg b/src/main/webapp/shortcuts.svg index d0c06126..063e5284 100644 --- a/src/main/webapp/shortcuts.svg +++ b/src/main/webapp/shortcuts.svg @@ -1,3 +1,3 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1428px" height="1140px" version="1.1" content="<mxfile userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="device"><diagram name="Page-1" id="150dc974-5404-6732-309c-fd6db42db779">7L1Zl6JKtwX6a/YY33m4Z9ALj/Si0gmi8EYnoHTSy6+/RHa7qrR27TtOSX43yxzVmEi71mTFmjNWRPyFstkgVm4Zy0UQpn8hUDD8hXJ/IchiQU3/gg3Xtw0Y/LohqpLgddM3G4xkDN82Qm9b2yQI69dtb5uaokibpKy/O9ov8jz0m++2uVVV9N/vdizS769aulF4s8Hw3fR26z4JmvhtK4Fjf3+xDJMofr80TLw9sef656gq2vztgn8hKP/y8/p15r6f7O2x6tgNiv6bTSj/F8pWRdG8fsoGNkyBbd/t9nqc8JNvP268CvPm3xyAvh7QuWkbvt/xy30113djvDxNCPaH/kKZPk6a0ChdH3zbT96ftsVNlk6/wdPHY5KmbJEW1cuxqPDyM22vm6o4h+/f5EUegp2LvPlm59efafvtQ7w9VxdWTTh8s+ntocSwyMKmuk67vH8LvRn4DYEY9vak/d/+RLG3feJvXIm+bXPfIBR9nPpvK04f3gx536jYn2LUBT6fUfE/xKg4Sv4v9e3PvzQx/H83MfGnmBhazIfbxZ9i1AUyn1HJP8SoBITNZ1TqTzEqQc4XU99T2q9vVZSYD6ow/IdYdQHBM1oV+VOsis7IBuA/hWMtiBnpAPynkKwF9W+T1d/RWv0pLIt8x+AsWP1TiBVJzMgB4D+FWZHUjCQA/lOoFYXgn6WzwH8K04JhZMYwi/wpVAuGyH/LYH+HWf8UrgVD+IwU9t2Kf4BZkX/Ltn5DbP1jerQoakZl4I/p0qLwf5sH/A6rflW2hRGf2Pv6ZbuxfrTqJ/YUftlerRsbz9mr9WW7tX606qzdWl+2X+vGqnP2a6FflWzdWHXOfi30q3Ktm7g6ZwkG+lWp1k2eNWdBFvpVmdaPVp21Dxb9qkzrxqpz9sGifwrTmrUPFv1TmNasfbDon8KtZu2DRf8UbjVrHyz6p3CrWftgsT+FW1HIv+VWvyGuYn8Kt5pVw8b+FG4F/+terN9h1T+FW8H4jPkq9qdwK5icUV3B/hRu9VG3M4tV/xRuheDQ971Y/zbR+h0pwZ9CtVB4RhEb+1OoFkLOSQr+FKqFYjMWt+FflWrdVGHNmb7iX5Vq3Vh1zvQV/6pU68aqc6av+FelWj9addb0Ff+qVOvGqp+YvuJflXndGHnORAv/qszrR6vOSgrwr0q1bqw6a/r6VakWiXxm+vpVqdaNVedMX4mvSrVurDpn+kp8Var1o1VnTV/f+9C/vlV/TF//pY1/Q/ZKfFXidWPjObNX4qsSrx+tOmv2SnxVpnVj1TmzV+LLMi2Y/EyzflmqdWPWWWPAV+VaN2adt8H6qmTr1qw4/L/QNz//dlTBb8i1Fl+Ve90aeU6asPiq5OvGrLNy2vcxt3+AWecUYBZflXDdmnVOtXDxpzCue7M4LKBHWfVPYVz3xmw+zqpflXH9aNV744sfZ9WvSrhurIpS32WwyL+08e/IYL8q+7qx8Z0ZRx6H3K9Kvn60KkGQn8W9yK/KvX608azj5MmvSr1urDrniG7yqzKvG6vOOfsA+VWJ141VqcV3UXbGeR/JP4WFzTpqnvxTWNiso+bJP4WFzTpqnvxTWNgnzlxO/iksbNYx9OSfwsLmnQqa+lOI16xTQVN/CvGadzp46k9hXvMuXkD9KdRr3qU2qK/Ktm66Ej9ROKS+Kvm6MfKsyiH1VdnXrVnnFLmor0q/bs06pyJLfVXGdWvWH8TDOSPtVyVgN0am5px5/2No5B9g1389S/xvgCsMfVUOdmtXYkYdBn4vaPj6doX/fXz9LYa9pWFGnBybvxCGz5uwurHy9FzT9Rk3TaJ82pKGR/AreODEd1P6bXNTAHvXk/mTPNq87MNhf2/Zvj0F2FRMxx7Top9+jZMgCKfDmapo3Mb1Xq4JnFkWSd68PCbOTH+mB2eh/8X/wqcbYqff4b9/n/6A3avJX/nkSzd58Uzo1k0f1s0/+BJsN94eE/4tjsW+9ytO/Go6iokoftfOvvvmW6e/z8v6f3P6LUn8R2fffym+eYPeNj1B8f8VFOT3ZVvwbW3cfKC4JbUC+B2cAYGe+PgMfCDIL+ewmQ8ft+z8G3yYrvc3Vmr/iZS5kYKj/3tLfmFsLnDcagxsU027MMwHLKQnKOYGBfl9fzR5qzrNFz5u5ZI3hOyeuJgZFyi8+O9pVm4Vnjdc/O9H5ACWfWJkZoy8T8D6GaCAb+UpeBYE/Dc5NxlffAv9DUMT3CP3/2C/SXp478b6SCGQW4/f0R3g3+LhW6FMCftpwyaZvDXtmE//CEWVuU0TBmC764Vp/QwD/xAGoN8ACuQ9Hn/IFreUFLk36OX3vPe3Mt8rKjS3cqPKLeMnNP57oEHeKsB3A8bvgcYdobJxqwbwzSBpJhe8I2H6vzhO/xhhGvqvCHk92RMfs+Lj4xTzhI5bTdMAPvkWHm4OwECXZQpu23rZ84mKmVFxV6h4IC5uZU2ziKIUJBlMkU6AEKRm8qIPwkb+fdgwARaeAJkZID+KFnOC5Vbj/ADLLg/CKn3NTp9A+S8ACgrPCo1bhdNoy7Cq/SopJ+cLRuu9f37i478CH3cUjI9JqH4/Pm71zf+896T/z0vvyNP9DxWwsMUPfasI/r1YdVsHRP0gZ8GPwsatxkmnABhPhHwqQu5oG/DDGhDkVtN89z5XudHT+3N7/458MVdA+Lj7HwPCExGfiIh7gsUD48Gt1vnW8fV3q0A/MTA3Bu7KE7PFhVuR8w0T75CQ/vqosnliY25skLcp5APjw62g+YqFN/+/I4JNE//8xMLMWLgnPnxUQf1+LNyKmK/5wtP5n+L8e7URD+v5Qm5FyVdpadqmvAhLbxFBq8IuKdpnT+ijlSb8h8qJj/fzWzy8TyD9+/FwR4l8xwMbJ6BL4x0Qrw/5hMPMcMAXv1KeHoiOWx2SDgAkmuJDk06APv0Exbyg+GGox7yguBUgt2E2WX7adqyK7ImMT0TGzSCPGYGB3hEl39sSOv2bbCjAt09gzAwMHP1f7Bdl2g/LOt+HQ99DhvXiurD+W4sIovCZds6Oj3t6BEY8ChC3euVHbcQ3jQdkTHZ+xoq5sfBvhnRgD2tF7tRmfjCS132ZEPjgiYqZUXFPqEAfFiFuFctXlUou2hqEiT4Ow2cd7sPVqvdlJj9WB8J+lV8SD4PErXD51qHxxMRnYgKH7qAAfVgueatgPt3/qe7H4O+YxZ2+jMeB4Y58+daV9QTFp4Jigf1iDakHguJWtXydu+mdYb76A4GyN4g8C2Q+ASEE9KvSfJh4GEJ+Ok78WTP1mZBAF79KLh8WNLBb8fIHSEzWyl9o6BMV86JiAd2bjeZxSLgVK5fTaZ5+n9nvizsLSz3Q67eKJA9GeD6dPq/T0Vlf9Z+WSC6fnp/b88SvJoZ+IA5+Vh750fg/8TA7Hijqf/HPwsNPlcbVEwcz44B87yucx/O36uIPkeCJgNkRQHyeloT9bC7K6YJgNsr/KG1WusH/PEExMygohPw01Rn72fST0P/zhMQnQoKYNUf4qYYIPT0/dwtB/Wqt1MfhAL8jHLp554KCNqd4KYeV8uksavuUDh9dskKgP1Yr3FETkEdVLuF3qhz9Kgzze0iA/iO7/rONmBsRd2sV3ucq/f2IuBUVP2KD9ear6eOEkuI5p+D8WMDgex0L+MNaijtq4zsalkWVjNPzPvHwiXhY3KlzfRwabjVHzQVNxTsmnt6f1fvEvUFUj8sa7yiMVfhS7P5epPI+puqtduUJh3nhgN5RFB4XDG5lRy6pXyw6BYTXwoNkstATBnPD4H7xweOAcKs3PosPPsHvd4sPHuf1W0FxGx6rsI6fjp/b8fcKEB7n+HtjqevwZVxkEj7HOM3u/V8XITwMC8StkCgkAAn7JA+e493mxwIoQJjT/7fy4av/NTd6JgBze/9u2cHjfH8rFL763uyLNwQ8c//ZIUDMqQcRd9TBtm5eug1eew+e7p/X/b/uVHwcGG7FwW96kJ5AmBUI/6LU5HFAuNUJ34Dw7E/+BCTcqzB5nO/v1CK+TtH5Ov+a/z4g6W0tKj99mVgJ+o//Wofi/70zi/xFv38/XXg6Mfq6FuRbUaN/57z/A9ZMfR0H9/cp3i/5cYb3iwUfO77dCDj8B3hWRZsHIXg8+BZ990H7zdqVyD85/hbcv8H92Pur/j7tGnRnbkbkvRrsW/+/b/u/+f9WC7wxaR27JfiYZIAkTEatS+AflDsmA7A08/YFF0zv4l8o/forIpRgDTM2sRh120NrMSro6UcxdjG/i8BHDPzjsrQ9/ccuOQT2wQbxsBX2y63pIQ4UIMLV0RnGEanEMZiVtxdyx1ql9n6L+36aauCA66q0hBja87CsZkrnGXj8uj+OeQf69YebqK0QLpnYRpo0YJnE2Qeld4KSxaIFC2olTOlwUGKNliLzcK8jVuHuYsLPLDM84zsbLSt7TM/SiQRTWnMDpuZx44twGoh8FIpw7eUyEU5nmO6ss7MdAX739hZkG2QiLSNi2qcPxJqSzsLZQ1apJMTKjmU4D50+c7tWZuGTzNm9xNnD5sSPCuejyrWP5BM9yCzZywk5yAk0KGMxyqeil1k6kt7/nrBIW67Ozqk0trz9cT9+ts00Y1UEy22vJmQXoAG6yf1xk1FX50oOqnnGNyN93YzSdXOYjk/gMdzjkH2Imun40zfn5Z2DcvKzdHqGtPMS5uqINmHvV11w0Ckpkf62wfSc315z2ta+2aS1EarZoHHss+T0jHQ3WR3z9kPrj+XkKUYxTShxl1vI54pug+DTfb7aavPiVQqzD3QnG1i/QeBmc/37mj66NZy9TUlZDAVLmthcqda/fqDg5IH3URT6zchPdqZGa5n2jkEZ0zNN9786AUQ5iTz5afIpV3KT1+NApK6WSHXe5FP99f6jnRh30/bRFale4hVTMRjF3iull287H4lej+dhRT2n7XRPsZcpqbGb7AOwwuKlu9cJxYw5ffTxrbnDlZMjyqYgKGaEK+aWU0a9l82oV7iU10f9m/NN10etxpl88835zt+fz/7l+bSEJoF/zB1EbEXr6h6c1OGd62Sf6M2GhLvHx0AUJl9Zq+307GD/TZZOb0cBq7wynTMV5PGMKGd7kHc7WOXOsMLLqMLRg8rRkLqbrstKH+ebfHAK9nA62eib822/O5/C/fJ8Hbj3DXoHiwCjLPWCx915K77u9/q+vbx/5vQ9R2G+KJxcxIIk0WrBm+4n0vTea9UyWJs7ECA4Y7dlrOXJzRWTYSNhK0jHQQ5N58qvzwljbAev3/KOmCiCs94beWcT6m7XEfkiSR13g+HUwTp0hIv7oKnbF50euoZzEQpx1Y+lVYyj7lwwMTQ4tlvQtr+i2AHqrDLghn21K4PNYG30aron7HTimNLmvJQrwnVwEbhSXW417GTUO6QarYhc55dL6XGCEBz886JLt+bBT1r1dDEXSFIU0OI8QaGlAmObC9ZyaqSEFSoyl4t2hI4DUnJez3DrKRIgcqDA7KZyjURQ/JxYraZbn0KqTE9vVQo3V07jyJfwaewsdbvGWVuSQJPw8zbydzSIC+KHBhG9TYiQe/kQ9Dvaw9tektnawxdbO3Qkg/bQVPDhCDawFiNb/OGlw/7HP+AIVqVkrX5x02FrmKlM66pnO+CMwvTO8cIuFHDreuLXEUfrW0XUtgaNkjRDrPh9vTtHUUPFG5HzgjTGzXKxxTltZGh+jRGqhOx8PQ4q0VkDGOU0jDKUjseXnk9OE1jcs5VM268CJ6+E04a00l3QT95iouXg7af/7TpKX26NWW13OF+dV1EUvUDo4Sha/C+J/v3zw9y2HwvafJdk38EU/jswdaeK+9tc+IXEgKSagkAGDFgLSG/9c5/U4fcJ8vvOt3nv76Vl2USwwJnvkq5/mzA/JDsm72TH71Nt/PZosPjJhA0o/RdYzwJ0mEBc4qZF9EJ5IDB73Mt3apVEYNlv9q/3dS9eNktRXlTA0wd586d68GPNmG89iN/hN7/Hg7cdHj+MtXu0I/7/rXD8jpEU5Ps8ix+rD2C/nPrzYavULG57QX4AhPoExNyAwH/ZI/44PPx0egb5iYO5cXBnhUNyppXMFr+cnkF74mFmPPyLhQYeFxd+Oj3Dx+SPTzzMjYd/sb7A4wBx21Py4gL/uaLZZ0CB/NXMjuTDgHDbZSLATwDMDAAUh34xYcfjAHCrEX4sLLFxr2EFBts9Cypn6T2n3tWEf1rZbvEwJNwqex9IUNsmTV76yp9Q+Bwo/MAq7+hOj0MGeasc8sFLtaUcNu5Lx8ATDzPjgSR/KTs9Dg+3OuRHpBCKKnNfi7Dz5zTys+PiX7DMx8HiVo18CxPW6/MgkPjteZ+4mBEXE9v8dnLIe2O3HweMO7Lk9LyvqyfLYd4+4TA3HH7JOB+3lgB5Z6Eqr3gW584Ognvrk1Hoo7x+K0G+Lk/2n3cJ8n/eKgPelsStkyD03OqJin9AxSO0CAzDf6FFIA+b5IO8lSW/B8nbVB9AvP4fsMLEW+XJy9KX7reggZImfI4Amh07C+IX2SeCPQw7P1/Z6gmT/y6Y4ND3q7HfmXTwgTHmzly0T3z8d+EDzDP3DT7u1Fg9Dh6/XOlKfp1lis+DF1M/0TE3On5YKW9OdFC3Sujf005VYZm+zDwGCiX/Hmv2ElWCavIjAv3n7f/GraKwqZ/TmT6a88AQ9WN6i/2C+SKLe/WbvwU9t7qplNfTs4A+trchia+wARuaGICqflnKOwyebdFnAWax+BUfephwRt0qqtvXIPMPAJlubbqz969fKjpevn0Zy/pEz7zo+THVnRU9d2XX9/DS5m+x5gUcIOMFGDl+j6gweM6k8wmg+WGB6Dv06HGguVVn3zKc+u/m6Tmz5qfA4ofE985IwsfB4ucVpE8g/AMQHkGAwBSr2D+qbNTDYPDL1b6ecJgbDgsI/QUffhwcfrbYF+M8YTA3DNDvie1iRhjcSqqv3TbvQYF+omFuNBDEp6HhVkFdFilgE29weEJhViiQ6L1VW+66f/F/dz8C3UqkP6QI4hMCc0OA+BVzeFQ0QN6vdQuH5xDE2WFAEZ+UKSLvwtctDOwnDGaGAZie858XCn8cDH46QP29cXgSh9nhcGeOzscB4Jcj0w9PAMwNAAr9RR/F4+DwU1lx/YTBzDAAk7X+Ytrmx+Hgl7riEw/z4wGfEwG3UiJf+0+nz+50kvpFfczjIPAzGfFtYMBr7Tf3UkH1hMW8sICR26wAfo/avx8JtxKi4b5UXT7XeX38MKGb/iXkV0NKH1XUP0HsJ0B4YmBWDLys6vmPksEDMXCrIO7yoHhiYO44gOK/mtjwcRi4Ix9+lCJN2+mqKvpn0zA7JH69+uPjIHErJb7OSAzq1GI3D14r1sACKtVf79WwWdHWz9ZjbpiQ6K8mpfgQhr+DyW9YE2YC4A1MPuYqiapptycYZgbDD32Rd6a4elzMuJUbteo5husTQPBDT+Qdcvk4ENyZ+zIE+ST0n9fJzZ7DsmbHw0uX5JwYuFUb3zGwSfJ2mE4gu/4TB7Pj4N56gY9Dwa3g+Doeb9pmvsxO9HT/vO6n7kxr+Dj336qMH+7fTtTSzV/SxCcGZsXASzck/km5AXKrN35Agk/TpHyyx08ABL74jj7OmSh83P43wpOb+2BmS4h+U5+eeJgZD+89kPMg4FZ6FIoKTPMAbVvPCyvvdeT+a+/kx6JYYlW0z37K2bFxr5/yg/H9fmzcapCvfdVPt//U7b+jexqGfxgaS92bzxSeZ7UdBLkjMbpglpfXwBC/DH55ImJmRKB3FYXZMHFHaUxyP34CYXYgLO5ICrPB4FZrfA0N38yx4b8c84TFvLCA7w1/mQ8Xt/rj27Ryb3u+ZpOaCzq3J8LRPeueHj/fBgr9i6TicTzjHxbiMV6ixWupwysyvqUeT1zMjAv0tgP7Y2aM34+LW5XSKYrnRHDzu/1eIoE8Khygt0rkc82EzwXA/ZThcQi4Iz22VT0999PzcyeL9xZiQ2bKFdFbAfJjYvMnHj4HDzjxy9W3ZoPHT4dUP9HxSej4cW22TwTHL4dbP0HyOSCZNv2qdHo2kPxsaZ4nRj4ZIz8s2vaZGPnZyjxPbHwSNsg74tRsaPjpvI/vIUMDA3Z3zw7w2XGBwuT3GLgLk0fh4s7aOndwwRX9s2xmfmRg1C9Jy8PUbfRWxTT8qvimr+Ot/+O1Nwz6D1wOz/Lrx0tcP9bP3BM6MOpBoMBuNc4fUPA6QguqkzF8omF+NOC308Y+EA23euc2BJ5/RoXPxgF5R8J4HA5u9c4bHDzjwmfi4eMc8+DhjsCZvixm9P2aWU8czI4DoE/MiYRbNfMjidTc50pFn4CAeyrE4/x/b/h22CVFWz8R8EkIQOHbGeLgR62/iWC3MqTyWhLx9P6neB+fcygO9kvZcfuEwD9A4CGyErG4AwHoYRD4qcLIP10/t+sX9+qhHuf6Wwnxh7efe0Jgdgigv1pO+XGAwG/lwx+LG56AmB0QPyw8NSsg7lRMfg8I6wmI2QFBUd8VMdwRDB4HiFspkU1Dt5o2ceHRbUEFA/T69E9cPJo6QP8ib3xYzzR+KyLyQfJ0/6e5/27u+Dj331EOw+b1rM9Y8PlgQO/W1z8KDHcWnSnK69P9n+Z+4k4/8+Pcf6shapMRwqf/P83/IEWcEwF3dMTd1lC3f30MvKZFfvpvzdvP9cz/mTG8/Q6656dfwW3+FhKxQL9DyL0ChMW9KaN/CzzujMRW1c0TCZ+ABBLGPhEId4oW+Q3PmpKqPMEwPxiw9zfzM8BA3KqNG5rhn2HhM5BAfWJUIO6ojLRi0U8gfAYQvs8TMPiOqPQ4JNzKi5bE7584+IymAftMINyqi4bE8Qz9N6NgVUWZMocnNj4/h5wZG3ekR9Pe8M/m4nOI5Q+9EO8FTfNg4VZ55FR2J/PKMzD8FwSGmcFwq0Ktw6tXuFUApMh4spnfNs95//5ZjvwOGCj0e4Dx4ZuPYXE3uJjAc4uLd8Hg/4aLW/npBgN17JbgY5KBste/vbpxvTDVijp5mSwQ5byiaYps2iEFXzCuf46qos2Db+x6fPn5KTLcugRjK1DumAzhdIvMyyXp963Q+5bpczAh4S+Ufv0VEco8mrydWIy67aG1GBX09KMYu5jfRdMnzga/QywN/ueYk9/tpw/yep9yOsysdEiOdstV52Rp7eg0bUiZZfWBvSPP+zxtjfOK0+mLILEestpdthvOQNhIMJntOWJZYy/GLJNsB9s60PVFuIzFpYibjU3XSjLYfDhShZ6s62RxsSMtNbcr2po8LqBod1QpEky5J4zwiJfj9CHn6hHte5poeL82ow2s09Ee16tEPysOj8tG5hp5JPGYRIsNzUX++pBE6qlgaSYlNFgLD6S3P6s4ZnAoddCmMx4HS1lOPhfWjM6u4lNirUBtSqajPU8rV2WNe2f6zBVxXo2ilyaJlOmrgN3rkqTvyXho49XiuhQv/NkvPHWV7Bk2p9cMix/oM6GzxfVwHsjFqYSk6RruroiCrXmNWVUSkyWC0xGmYTkhbREnN7HARnUnySizA/czNUNCjxwvNU+qKxSy16iyTfiLvmMrFatHUiO7obvuFsZo7/qhRy5n2hASTdtbBDqqeeyfr1Oyy0hSoZjS2u6i5dlp2LxehadTLdQVh+nHVjuw5w0cTSbl2VLjcV2VDZFftas6kU5MN/GnCaiSrtRGT2WJL6/8oByuGzIxTbv3qGK6x5R0D1zNq44kbJZnJdlfRy2hdWc61GMOI3KWp50I+iz4RSnlyPTXlBJ+T6NJTG1kRGOYDPcFOvXOZwnmpyfIOY3EmUY6S6awFsk+2Y+XHXgUO+U3012hAl8ldGty531GVul6cyp1Z2RSiJBFdbPCel9YT5fUWLbLElCNupz+2a/OmDIyGbQklirbEBCDV5gYCtfOyngu2JDIejl03rmvs2xk/CXWjMWUDqAHruXkK+5edRGlB5FmbInmyTgy+oOp67au5MdDUMudsyMljKZXBh2QGMcW4vayvajRtt/79ZqeAqGg1/oSaoUhsstQq5PpfWemuxO4fXswaVcvw07eSeOKWZGmIzHDuQfGd+xyW6hCwYa0DfclOMa/Lg8b5XQ+AoCUmVpyaib1sh3Z26iPkVYSWxDY2tPuSJcjVY9VtFyccp7Aa6pwNN3I43XLW4VEXb1Vct2B9bVYn/VdTqmjweHYBaxO1xl7Aoks2Cd5LQS3fxG6XOI9eno+Tup3kdYxyBrXwZ7wATlwIooUOCF1tcF7qzab2JZQ14jGKWYNC9dl50cVdYCadDMYMdEJYrvA5eloYT+1sMLh1B+O2An3bLvte7gwgiHBE86KGluU8tqsajZ3/FNxzIeTJkxhbi1ctOjc5xQLnLsehkxeuwCs8Gbp1n47HBe0hmub0Qe+38SmFWiCnJjM8SxHWuTVcF6fD/7OUJ2xwFWfCV+DzroKd4G+EHMJGzYoquNlz/UbabmmRJLgmit3ynesvnzhkYK5P05nF86LhaDTvjd9Xq5Xy3S9NKbcUuBpWrjIqlVMoZeRsQBP6VG5MtmCFqdvE87maHU7harptc36U7HBuKsVMWmkpBGdnPlyTy/3EQ1HLBWpQaFQGMMWjI5GChdpm0Le+3RNRks1pRc9q4U0RfCyHkumznOX5IRHUVpEFFYMmLTBJZlZMwPLTOi8GKci0kVT8vZ2spOyg8RkurcrDuQpHjgzkQ9nyzsvO4kndptQKqktt94nyCXausVe3Z5QneZ0/7RT80JNCy69TA+53EBLq1h5xaHaCVqBH7d7JALmiKpm0NksOfH9juwZkmTsPWPsT2sr5rO+tYq1ZeMH+3jpQSPVnr39FHJOB5RNzCgAAURS/Q0hYkceE6aWWGAmuzKrDamjmFf1ooZ1x34K10KkHeMDXcCRsaHzkFnasZTxgSzJ+kmM8w1r+qttz12IgKtXC6lcSpJQmGi4dI3rKuNFf5sOEsrrpG4OgpeEKH+I16uSny52BafP9OIc+buEKLONETarADrnRgDzS+KyXl/syyapmHVyvvTJLkl3a+voFOiKxb1q7ePT68XUkeec20E4JZvxymmrK3leXLXDGQBWV/2YEs7ISiHdJb8zpYK9nqq1Vpf4NdLWIbWzrINicbC1IqK1FYZVlcrUZVkylJ1fVkSxh+3FujgT2fVy2lw2bVESJ/SiUoWyKqwRGHFvyu2UjSgW5C/0ZTOFY+bSLK3tJRvgQ3whKf0Ci9WuurSUlYTVniiWF56yNjDdWSO4/eMZofaYWtvugYFaphiVfQFN+Y6/C08WrraEqzulkzWttR1PIGgJ4zZwVyxUVXu6yVN3C+duI8NVE0hDa2bHbXs0BIpBIR/ERdVz10hjOp4KqQtr2R6DSkFOGLEfp9SWWcFkrl8CbCwbThriYU+PdXzaiLZvN0N2DGwYolETb88NNKUKTBNOuaCARAq00Q4ThWA6i1ihOohoezQLqDIn+uMFgNPo4MkBws4Xp5AZ9LrBibrrcT7mBKCt1pctT0WnNnFkI+aPvrLbyYt+OHF72/M4l7SpuHBEbOcmNroXcWggTk4marXnDEmnnPAYFS1WAXEA5p1LrZzSkizXZd8PkXNaHmSfvIZQr5i+Ijuu55mrZtqZIa/1GG4UtobUjIOuJR4vsnXoVKPTKeAZBnnD2964nJLJKumSgwPVimFv8n1d59cI38OWu7GkS+NehuM+bJya6DeV27ZL5aR7Gl77GXTxsoXD7/vp1jxTaZQmgZHLCqlyn237yZfavuoc0G5CKGIe1VLqoVw9u6KZXrlatSSfjsfr0i38vBiSk3S2rdOlCKjDBRrC0xkymqUChgkzRHu6ZOoeAxcSmTPumeo6YEv0kjckjozpmLNt6G1OxoFfBfgm37Ue6dkAP6KGmGM2PV8QeGMlNYEIX6l2kWFGM50Lbg8htl8keStSaBeK8WK7rGvKO0XGkZap1ZgjIYdf/U5ZU8fqrARHNFqEWYAvOpBEyM12sVkumpO3abUMtEBLB2+07AoCukJa6AUBmUtOnI/DRC0FY0FkIDiB1lY7ElPEF8ie8yLpSne62NEDxK1sYUmDN6XvhHjcr0O2XnN6sVpHeMY2mHaKOF/UdHJgobN60dGSPeyUPHawtYQZQkxAckvKiJ1rjhVeQz9cnPCiX4gQppx69Mhr2ER2cJZPeXCzMRAxve56IXXytDEU4exZ2ynJCxqjuuy8LRzwC2g5qFMAl3KLH4vTUlxnW9QU+FbLt+4CRDSHOoicT06ZAWl6Q92dREbb81c9tdgtaUTDZsM3dXYqMQwEkE26kuTJz6tATs64dEhzv502nzE+rVa5JQcl7GtajghqDTIUS27N097OTgcYDAQxYdcZyhiWpyT0XIbwhlAt0TfOeLc+NbCNFFpKWsEVRUGIZ8IGzw/D8RiDnFwNSi1LU9cAfjgGq0N58MHt02YaZVhsLGIGjCywp3CgbIbiKF/kIch0xUms87JO91N2vNYSb8tn7nqEMCTHIaoTgnaTkFajWhjuoitipYpGbq149Wy5KVErHJUeHM69HpCtRubjuO4kkOScE9s346MMnml3RPYZ6vepjJOHmDFJJWqPg4NaqjJFoWLjmCBb5UfljAh45qlVMORdRhb5OSAhLV/AOL13WBwTL7E9OQMLyA0/va/CcLZGg7pMT3g9QKBWvkya/WpFOrCAFi2yke0DO/joBhWcOl+s4GEVXl3LGKjNFeqIFF3vD8f8QAQB0tFkZ6SnXRfAwFWhbg3x/iQsHAukS2h4cB3bSjf7TqxAc+CcrDHw80tHBfIeVYcjP+Jptd813hr2wjqBm33TwCBdtXMUNMS1KO6HPSPoPiJO6XvdLblVQ2QE3lEgjAFiZVdGGshdXvnrJliEgndpy2Zd1Ci08PMqpHzoyJ4u3lFbEhWSZX2NmnkKI8lhjyxs1D1Wh3V3acpTKwa4YhXNZBZm4apo2l0XRHQ8HBbLo9OpJI3tloW+XOnBUUsXV/C4KIftju5prP3DCURgvz6JGMDQlGHuJG43umh5YTyrCXYpXPlHcblvawqowyBC1GGhoTaccc5uqfh41/U8vjO3iS2ajBEsTCzVAodSNQoN1TU69E62chAizA8siBzWiLV6l+skcZyS+kLNcwaHNtwWNPab4Yrjh/WFWixdHC+mptxVDgeXDL2DU1VVnh0vSDt4atrlVk1geXVsAg3tE8I/YtmLWRkv3eMiugchaYku8IUDqGLQVC3ZggjWOgG88AFV7t6HYTE6ueKgOnTN/nJEprvTVsemIwlI9fZBN6yglVyZiHrUslPeVBSxytE9Ci93RljXR2Rx7dSLQGKtWJVsm5ahechdkq8AIyCuC/AygMConVyqOcTTR/z6asVueuPMcKxCQ8HkTkCJF1YbVOBIkD8rqD3Fb3CCJZhVmVlg2gqQBlgDv0x/cU0siYOWgJwvoACJLMG7HwIHI0tiijTCAMBLhQJN1SydsVo8BVRWFIdiHxe0h/qMzresg/l7esoo06U/xga3Bk2TzkYgdefTo4/GXsTUcn2MtBNO8yYtk2WGsH1c1msAdToK8Z7SBfwYK8nJUJggLw3y0m14XYumJ+NkNhJ0rWeOq57njmUhMpuxjpBDTedyuUWjPJXAbXKT53yfINxND9KLa0UygLqsumspCvpRBwrMyudjx+8n4pDs6IlqpvQuNVYa+Er0XGtrB0KsmFx58hCotffbzs52bSjCPf36Q4ZciXkHpnEO21haxo0n4qOaR5SUTc0EskrVbPo9g9NA5DspYTA1jxt/ua00Y2WbFh3pCHV1DBrenPRWZkHcYxM6krjh6og2sTtvxb/Pujo7Jyhxl1vI54pugwZocMXRiSt3fuZ3snnGVYPs5YS8ygkMjm98NG0DUcA2e3yUrh9nZ/++wla0RhtdldM9lR6CRX62zdRMSDzUgjRDSj72f//7fjeZhbl7e3rOGAqWNLGZ8gX/iseOSCWOgQN7dc4hLp2EHDYnupNOU9v7zXk08eV4YiemmLMf7K2YNs50l+6earXTDtJYKg3FNFNTpgxFq97z0/3trdZH0s7753M5P5zrenOu3f1zTfvds8mHT/ruxTrpit9OR017v3pTfPEu2Os8sFQmAVz47m6rWS8Qkej3HxEofyz4h3Y/fqcO+r5WUiADFruU161twYSDbRpxbW9j0A5OSWd+5cV10O9EzDKuDVkIpw0fVStTKA1rbaW6d05XehkKo0UXe0/Vhd3BqTfrcbdciFt7JMfVaxPROgs0uLgLWQsJLwtFBB1NeEoMx/yoduCFX2gqUP+OSYRkJMIBgk4X+p49npRdZIPAIMu07rDjBtFNSU9VaSlN2bOtG75sA7kQJ+1c4ba7aPp0XE3UN4k7plu6fUGzEnHKccTXY7lLozOR69CWj4UXAgPoAc0OUc+cYYRlMVJjhtFHFcmEQLy67k2WOu7hiC5W7OGMtpNRd/A5WSNCbJub5VC7fetlq7HGJ/e4ezarNa4HfHgLCAGXgxBHd44BdALmwOk7DszJJ4RY56ECGkABKmKoEPsH2QT+PnUVEXYmRLH0Qh2a7c7io1bze3wMIkdKzcrtQAJQL1o8cfaW4GhJRfsmP8gnuNv0pKHTJun5MD4EEaOB85iizjMbA+pstFmIIFoXRCW4lQArUDDxe66YUpJrVOgi1W2Q8uK2DNK6y0Kgl/nheF3y5BQ8t1tFOklXvgiXcb/KgqW+YwqZabw9fJVRJd2W7iFdiH29ZhXqWl6MdOKyu1i6Ktz5vM6y7QBiMYvWUzspp1uIK0qkqy5EUhAyd7IRxRXLi55NzWu3JbStZPKj0GQ7DzQSKDacJhM7acoZ4aJboG0gj1MulQuDb+FRN8qWaYvb9d490MrkqhMNWqkrJUKBt2cu2jZhO0/YTQk+kxNscaGjfdIfphAG2Utm4EO0XVyXTu70AXU8oDbSlKyL1BW7Sc4lb9jSFRAkhDrqAhOnBVnmfi4Z4lB7fMbAgXmog1M9pZkL8CIeNxPk+SkKburGMyBMPRyFcM17tAVt6VVUEaof2qhGxpV21FEl2oiIq+zUtlcAPm2RSXRJnhqPAz+MNciKsQNN6JvpJTMOMaYytL627V02NYK7KqpkDUBmeaoXIbo6Gu7KdHrDSerIXSzOF+bcBz61tNqEXgiilTr7QqZ2EwVp9xaEX05QqZqxc1I5aMqCm3PMLla9diZXlH9d7w2bdZcTFU63PMKRurcRKmWj7q2G0yHVBm2cy7CZKjB8NEUkgo0sISESzkyZgqkPSzMQVuYO2TUo2YEI0Juro3s4RiYfOd2hIPjTxUGdqZkfptvaGXsJtBD6/gJoj31moNNoQM1Gh5Sprcdrj3VOq11AcTRgjPv11c+3aOHxkFJectK6SOl2olEDnutEvwXikXZaiKTG9gsWnzDl6IcUa88XTblA/NSsaSC/qjesnpAnbtUrGRS05zazDxYcyKtOqUtXJpuJmkQkCI6vAiBIKc9UgE1b1NrYbRlLRfbqrj7vtoZgwoducTlhNDTurEjZMvxSVgTe4Xc9n0KRLpH8EVth9trdgHDQ+wpj7ga/7MWdKeg7Wh58P2xAvg4DztGMMWcrENEPULMD6V9ZtcQlJahgygIXVds18nE5DLGBiutBpNcMzfQqg+CdtxCvdbHZQpYgT+aPW+/sDP5BuMrV+pzmDoysh168wFEHPNgbHIuZDHRwgjEnydwmrmBWaUy6yidCHetUDbh+y9Vc3rCUU26nJK7z+kTQc9A6HGsPhDQzz/DW0XcCS+clFiqcjSRtXCjsJWHldVdm5z4jIdY4n6a3kHghzgczDg9TZp/gLdD6heNIufv0oucOohiszrYjqtiMSZBT3sKlHI2r+lnU9k62TadwGW6yxagei61+Zl3T0LlSSpaBd/InTuUPmokovS8wlHaAJdNHLZKWtq5vKjvZxyB9t/RJkd+dYwAvkak9HWmqNVouQlg4Hq6kWoNHi1k5EIEjoh3gFEeUok5HlDwCaHGDv4mDzEGOE/3eCzHmL9ndAOxxwuyENxWZY9eOp5eZmI3NIlxSRwvesH2dSATcmDss3y1sj7O3W2yZHFhjbXA6e6JabgEyYk9kIvus4dNbphQeQi3NHaTkJREybJ+vIJ89C3Zv1g48nA7ZxEf1yW5rNIADjiZBMBBMSKAhhdvHF/e8Cg5b6LK+doLmlbyCEeqpNuKTPZ1xhQRJSDSVgezSKVki2mIdSKXTr7k+203PMBlLDDQZiCK79ZK3ejQYA3QvjP4gT42NmgDyr3jM9eIL/mlzxZWxzYerH61ZcknhoZmLAxlspzYglTbDfi9EhWUKjphLkU6K9v5ylTfK9Ga0a5zxWAJyDlwPyf4UjyMHCZaFBliBu28qHYGbjXupLr21PvlWE11ypSiX8sbXGJVeHsQpM+qAGKgBbDUTj6WgKJwgP/gYiAJ4uE9budqVniJsd7tibZy38to+0iTIyDvZbyISKPi44Lj9Wo8GVbDhDjT92gI04yCdHxRBrkBHY+tOptxoeGzD1pmt1AuUIe16a6/bbD8iF9Y7poFCOON5oJidtZSNE1A2WN9XU0ICrRLNo4fVemcfrcOV3R8M05KczHf8EhriyC4WZWWzysG92nBFw6qZHKqrH5NSbOxeGWHQ8FtqWwHOtbhkPdIP16EWlu7eW3cH0D9hV2O5tWQ6kAKlusRKFsOnIHAENUo6zMSXVxBBAWW0UxuEonwoXzi0WcHdJVuXGGhfKdBrfrEiQQu35MSS8l4Ee8GkWhbGGUgVEWOgFn/aYh2Gn7b8DizRxTD5chfD24I8blTRgWJBpo61O1j8cUdo4JZp5xqb5z1pq1X9kpbyqWCejVbPWPYfCg9+S5ki9X1hAbS4Hfr2Plfyt5UF7zOu/98qC27HM3zFygIBVBQwCfvCOxgBXcgeYB2umO72y61t7nrCRqhm88ZPN4DBvPETjaMwXxROLmJBkrhKHSRtNWPTtQsykcT0PHHWg7KDevPAcM4+Lo1leXUshTCnhj/MmpO61xNtnJjRMiIAR544FmQbDObth9YfS2w6/pUfmiX4/YUzb65S9MahIXeEkj0P6xKvTPFkFykGNvFiOtGiItKWgP2Wxpa3o+nctZfLBGBj0zmLYLnt1YTspmQS3eT+uMkmHnclB3VixJuRvm4m7rs5TMcn8Bjuccg+RM10/OmNk5IvrO68TX1EuYIOF8AbpdfrxXZGTWEdSqTpHgBHfL/2C7f9lo0j+Phh00zpPOOVc25GfuL15BuP/rDFdA3nu3ufzvmhL7z4B92WTmZ3soH1k43Wt9zbEfbct9dXSl/kWzenv+fdP9z3lF5h/3hd5IVLv153SvvD93v/J75uSJiSvN7jq11K3T3EqSekvLuHUy9XAI+mpNMZe70f5uX51XPa2PsgNUWrddBtMZ0HV9nX8wST7abzrLy9kDtWUDrLl++/v87ZstXzAM6veMg29T78xMTBISLAef0JU1JCvnJ4coN+oAhsOfXdt/rNhDNSQ+Pe3iuVc9Cj6fkA5q/SCRzvNngIlCKOW5VTXqBPFhh9cYjD1/qc1ELf6nPgxjD2CcPy0arTcwOIy7qr79iLzcrnaKLKOrTSa1fdsBdMELZiTawvkmcg9IYtkuBs9BS5Z5NKaolsxeE7yNAF8N4DvoqD0dtCl6ExlY/lOKrXY86dZPqytjIfVc8XrqBVVyKNyUOS2LB+dNlQdDTFhQAq6DMdX2uLIU1+S0sFKCQA57wuag9iqrVltngFTp+D6pFgMkVsbCJG4uQtrrFn0AIw0p5e0miVJgbTc7FMGZ5Zk6YODWfd7dNI1+OgXJ44dqcCLV2GVg5xrqVM4+yVzdGsM7SCJEeMnusoXC2HlumMUxsJCTMI2lpaY8J+dawKjqMhVmE6schXQ+m3PVNbBzdAsRe9dTd6QZTHuDycVnt8Len+ZmWs6/E8AjFUOkcIHTGCFDFNRtOYZwFVY/p7duRWtMuK1ScS3WdaOiW3sLbq4c1urdrWQlItwbU4kyeZQKiiFGfzGj8mFz02fBkBNomMQok4fWqKV6aI9dulvu612j4X6rW87kBfobeJhlTv+wVTQAe8Wp7SfbPNs627WAP1JaCdoxhLaMydja1xxU2Pr9dXIYJUP6MdksI3aqwz7LFUjVXT+huekCOrOGD5Sa822UbHz3tGYuPLlbeTBLdGJZJpkElkBiQkKbe3EWQJ9ZsWVO2sT0wunPMEfH/YgLqdzWvdzmpcpRAhLV/qdsLlWnut2olfa3bWZ2wzMgi0JBYq12SgZgcXw+X1uMv4TbAC74Eqwp2X9aFj4kXNTdxf7laSV5WHlbhtT7jEeREf6YzWMsx+25eSUEqMLCFodQlb5ngtUx1hZeNML7FexHV5oSeGyZ+imsR2gOUxINi3SFkcXCZJIwDQ4rjY1IKHN7RWJk1KDnZRk4yZLBlQ5sPgvBb68SGx3dPKlvIdq5Frszj4NSLq4wI9Y0SqXPRTHLNcEi753VqCq+mUWINjq+VIgPxS5EMQD0J9cQUqw1YN+VMhnfrTgXUQHoFVIXakY7bRaFWhV6ptq055RI4HF2OO5iWJjonWgMySkqDRN+EoXnS0QYvYEhsbtjocfXyngH6Da5MWAChrGtul3JrFQB4HaEspMpcCuRAL+hC6oAypwvaGRZV9Y69FZ2rEATNPQDreLSNwhtXSQPpVEEUTf0P5MVOVPQNHthH24ZSkq1dv2S/QYavwnk4JiXC4XgsAwRh0qvJYNC5Ty5EJmIshFe3DnFbAm8+kOFmQqbsqsfJs2JIfnxj7JCCHfr8nDXhJWhPnZ3mV4MgjJlxdNN9Y6jiwE4YUGG75ng0Hi3XIHbqMDp0OuT4tKzgF4YDqR3uQrPEFc1pYV2cFUtES2H6n0ReaVY5JStArrl0GTm9PFIbpeqbDpvjTC5BBhytJLmsZY5G1b8gMKjNRQ/NGxKxJwd3RPBIhcCRQ0YYrJAKiYzU6aZGURUuYFAKEbQKMPRRMSNHa1AKtJEOVGSYY6GjYIv12ReocubPYMx+dhXMq7kpe3kqmdFZySb/o/Hq3u5zXsKQcpYUf63jiDEu15Lwrr55FNOOOvDSkknMpdLdgzMKlJiBDdAQtS0R2Lizu0iLBCoiaXhSLYAhIOCGrw9noChwtjIWu0Xi0HmpDls1OpvuOLSp+t2EQ016qg33p5Qu5QWwd7dMFsQ72EoXwoZ9wSi9kGHhpx51vkiweskCGEgAHEIGGwS5I4UK+KKtrjdwuSJcE93u0+a6XKnrF95ETqxkvnSXH1o8xq/Kgo3vpEiwAmLRl16bLp1BMUaF8Ek1VarHTJtm2oE/I3qp9pCUect5F54MjNVfb35nhWifPsVBq+7Pm6mbJtudNIy3rqHISdeC5ZJ+f+cNZzyUnNI+4qp2BHrnN8JxYqbIbYDtXKjW5lK9RtQ7OBYeb6zShVhrsMu4uR4qJzMpEtLqoh92RMk142e2njPyyTuxLfs2nYOmXZHpYW/S1yi2GuBzX2xLKhkL3tiuFSRt1D+WVnSJAzXH35iXwIA0t10cdBLZ8RShHaPdSiUJF15KDLcKq/NLM3cC9WJcqPB/gdFsKo9U3uois94XgZkExJdDNRQuLXaB3sLTcA+ulI2x0+xNxOgJXjLotFpgLbQtcrGsoyFofRpPWCNYQRI9bXDy3UHPNwl01yrpyyqbIIAqjqNcOMmSpmA7O9gqvN5WzLy13Pd1Wo1zgwNtRjaDCwiLO3ZQ6LRsz8cRGZK9ZkMuCf+XGiVmbV1neRoaMSZStZptjwtYntG1lWFsesLB+0WPHQ+suRsMJU5FYe6XXrBtogXYx0TqEjB7Ay0ugiUtBaEFJC2sidqA9PSV9GB648/IA71AIiP9WDpqQ6cPJo6wX9k5DKifT6tAfLtyut6n4PHBHUpH7cS8OPbI4bWOxOztsMVriChvCerN1aHeorVNWxYFVVSLpe0k/olnlO80wZamZYQurogZlKecuyS1YliH0YCiup5QVnm0RMxmRvQ07+VFeh3aIR5sxCJ18DKgplSzOe+OKXDYK5l3S09Wz66kBHjoxEMAJ1+O12l/qqsxMz0Rqmbii2SnwCs1tlULy2LLZNG3SZASiN63SxMiJXcvkFktFy0YIdxeO7ILbNEQ7hMhJa0DIhjYLo6tREkayAbq2sVW8NKEgj6kiouSaWkHj6qJmGHxa6vWUT46Bqpxxv4QuuUviEA5zeegv4PFCBZ6AYpuy8b3qfD3IIb7JnSbo0ARvscwPuhxu4RYvF5euXlJlEe632LiUC2rMI1PTZQrPCyRcLlC/09Ykl1fUYo/mebh/ERo6XJTrAShrS28YR0Q+LoEGJ44wcdyCZM71CK9bNhSngR4xIQa4NtEr6F45AL+DFLU/Dk60dGinZo+R5TJcwZq9oXILCbznkboTlN6K+/2SGXyhlZxzzBr8QYpg1oSkUc8aLpSVcGpsBAWzzT7RGAszjw6T9e2UmwYq5VCL1XXYbEUo2UxpfREvz6a7PdeJ6IcJVofK/rSoD87kkuRy2TDNsiaUw5ZC5NpGV0BEjGNtyZBjl29IaLI4omQDqLeRbd/STkEdUglokuTDABRRheQvuuPp+TrZq2w2qJ1A7XLGcK2JNSu8iZ+vWLa+Hjb8tTWvYrpae7WhZp7IrYaFb7SGS5hJ4gWZ2E/UwTuTsAaV2VZTTcfyjDInLsJOz0qDaBe7ER8KM97nGwwJmkRs0qHjD35AXY9aXoUCTKIoVh6HnDAXZRnmmoz2VysLIKB79LxjS6HtsL3eRYQ8Di81uN6iUpM6t84cssvBQ6KapLpnfAvt3SIZttfR5FxTzQI7bobdIRnTa4du9njnSNJVx0qphOoKlAuaUXFsrTKzFszR6dERFGTJFclRslmC3MUtTIFT1gpc1qhcmupRsHUQBTh7k5P7ADZHL9RcFgGVXzkjj44ah042umjoLMrpKce2dZdjALStaFNELimmenFkoRo0NEJiN54Qn2sRdBMWNYBZrMHGjti6KzYj2iBekKENEMps4nPlpuO5O2xAj5U7sqByYaeu9F3qXcNtiiK2dVweSPCyo1YUHqtrE1vtenSb1RrbVd51uIKmwarStQIVG2MgumXl4kEPl2anusfG0g55Qo3roCVPVak2F2LUNmvyWKHAwuWh0mBfWl/wA5N6LUoA79hhJlJDg4sEVYMrM5C30Bi83Cj5wpYaanTFyoWb+pJcst7zLdAp0FyOHr8IgaV99AQOKoLw1KyDfHTWQeW0RoNYUAuH6AH2OjRYI5UupqlC4fgqpCqUAQ/eoEiIguYfHI93hAG4AEsvZHaDwuC97VC+xzJulGwKJN494S0pvI+XU3PEuGVu5d7+GhYEMWhVS2Jq5xQ+pqA9zr90FINHQ/Ynf79MQYErlawxyjwlGKblbIRBgX/22gLPDsurf9R2eNXmq/JKwCcQCsoQhgY1HR1oo+Vc4fmax6sONZ7CkAI0jqGwpRgvLhtvCMo9TNmnFO675T4dXaKlFksC7xpk7FzhZMrHYY3iBzPFlC6vMrHr3CFstvDYtCvligUHzRh93OuETvOQ4/GYQ4DLQS+158ccZbVwvSC64wZtAdcguAuoJAOdfhQaEsEWX4jataespV8sWq21qaP2UqYMZOArTLA55QbnsUCO1ogjoYK6y6ACGM20JCGIA+YcKA2ySPeIwJhzPFxI5bVY57g4ImZ7asIExrUjkyFWFzQjKNjxj1neGoDWLUhxkS+P1AID90MsFzYVLE8YlWoGQFtI7V57xEytBO9pfSAMUjskYCgGyuSSyNS6z+6CQZC5SFc0k55ecr5nCPnULxpaoXM3IS/XM78LsE7QT6RCXMnxmvOczYIhAhF9Hmk/4kt8q9RCzJ14pWutJQkaBiHiigWHUczZtRfqNaWgkFXiIxPbKtvQOntmogn7jEHboK/75KvccnS4Og+ZC11aaLpM6Xqbdxm6ljE8hfpDBNqeVOtT1gcPK/rXRQ40SfbASPuD/FqbQ9P7lS6sdokJ6m90HXqpl8ByFfaNg+xeA0/JorBYFyVDR61O81TTDAgFBp4Ke42gFpDbhaq8QXwq2cfilWEK3WYvReG2+pQ9RSfusKCMbVK+JMAnASvYxL2QoOuUpCjq6iXeKfZ5EImO/asfc3xBa6ASFeHFPkb4Fd3ErL7Rt2e2Xzr6mX3ZxIj6hg7S6Qt72gTxDl0z0g50kjK83wpRh6z8AKzkIOTWy3u1pAoplagUfSnaOFBjEcJ0E0HlKk5IK6mtOOqdEETZvUhia56jddcEoxwUHx4gNSa0rSGIuyOHd8jCPhtuuzkSFEjSVrLuM2MeWgQKViZECKdUykbpR/psGJtjGFVLP9gqi0wjZXQrVbrEL6gXwAubwd0g+yuyv0CXpJJ2YhdcNPQ8kbcT7Cj+UYIyYyIw1Ah1ZqPALYut+3bRVMjCaRBCKs7RccUf/U1vgJI0yDsI2+24BN15uR9Y6CHYWdtchjOm95cKuypghdPQIliirMxPgXWzV9iDvT0RHXBAYObokQLrvwtEW1xYaVUrVYs2RHghaoUfJDve8+iV1Kan97hI3GiOx7kgHIIOUyFcxliw3ELHA6IoA7o87y0HRvchTnYpCY5n7bgQuw1yJiUjkKHkIkUs65rXfQSJBSxGpBDJTOwfYAptKaSbgBO+VN8ubSOSoiRZJ+SeBVc695zQNjA4JxgypMLHaz4MSw2EaA3vlLjW4uGlq+wgIEHqNFRNqWO76CocWcrBkLPJ2l+RRdJKWJBC6KlVl4l9UnSNAW0mih4ncMY9qHbsKuzIYYeIXIIMfQlSGaFXQa90pGnkxHwNRd2hSSFFnYCNmkpWbVvxB/542tAMu8GBW5D1QC5BRvjSBR5M9wWpJWpClGZCE2nwfVroWpDjTw/JrqXSXoE3gfM53R3DYMzb8CCd13vnUI1HnD9slOxYJik1TO69kt2mINTTCGYyEkDjtgBvwJHr/ckzmKXWxjVY1dGWESXPJLZGy+s6M6Ai4hnBSi/z9ED6AgiNtWbnvo+/9rRKILGYfAIdDgAM1PocsdIlWUsF6AXZh2bk56Dn7JiDnvIjA4l0S2bXXE7PgYB01qXR8tMATjY5oqbOdbq7XDeMwqrS4hQ6WC+GQne5XJeRyMCkfo5J7eXClIK0KEwelwMUsLqkX6bjGuvSWqOq8KipiJYjTM/CS+YJMHMZ9ShMZiJ5HblS0VrXdsdGUEb+v+292ZajyLIm/DTnsmsxD5eAQCDEPIo7RjHPiOHpf1yRtWuIrL1Pr67MOn93xMqMTCkIF7h9bvaZuZn5aZReY4/Hi187ozANx4sHaH1n/Y4VN11WfmSSosL9NgUYwQB0z7/1TmfnDSDkQi7ngmEhItEH2h06l+mEbhmGDszBUARue4L0tMHt/tyJkxc3aJSiM3l4EdBbgF/CH+tbrSAb9BYSykZdDSZ+Z4GDyR1YZ7KeWoZLTN5M+Ok0hGnbf/zWKb6K0PpeuY11TL78ET7HTt+J5bq3wN75rt1HtSYR9u0m1J57dWwuKK/8Y6l3jeekE5XJPUVPGveihU6QZqFdTmUI8cPzUcSHF4b9OVlasiAT3UwnYgObfxisNGq+1xY5uTN2hpsCDzUVOKdbAJUQMPJCDzxub7vUjUUHpTr9ihDi5RNgptb4yt74muWZUzpKvJ0Ik7ulIKK8uAZuRR3IEvbn9NEAognqnrJUeJ+T53TEEiecJySqn0sNLXU1BL1zY6vRszdj45hWbFJ2tUvKfPaTqveZjhKzK/fIPaKpxb8Hoxrc+3isnc5gVYaLzePQGWoGWu8eL1aQnCKIlfXaQUCZA1YWHXGwtadbnlzGORmnU14rBna29AOsIu2YxppaNAxixbDvvTsb+XNL05zwLMx7v4taNpHaUW4AgrQP4o0e7oXntMIemC2XAHgNRo2vtBq6Vu45k46jOpIUV0ZTYbyx3ZlJXo/LqfmvJlKE7gB7nCWQJ4Y6xW08F9T0+LGv36em8FmTmfrHRj4fF5V5FbjHrU21VqdKgsBsgj1b4QWQ84JB/ur50RdO5JME6opJWm+StfLySYQnuFHwWpnomqKXPYiSRe46M2/kB8hCfq4Grqs4x40xSkoTdFim/nRZhvEZea9tNJcFDdKZ21PGGJHkuBXTL4gbRKMblk5YQt75ffSS1kQ0DD582l713LiM7Lkuh6EfmibcvOuKNMe/ko7uWiGf8oRPnakwm+Cclt1yfdfniFZmBi/ZK9PplLx3gwPXHrnErCZfydaNES9LSNxd5865sOM2BoUUhNzJTDen5x2Z+XWWlaE0MdrgkwZpw0cP99Qame4gBN14rgS87NTQgK+OMVwNsGDjo3nshXwbGsZ6EAc9MbEdS3VnPOOXS+mvmCoh+Xku/yd3XrN6p29Y1VYzRI5juTfj6fXnHXP+Zgp+kvYeKRblQfpgJwjNYzGHE8Mj9BNfpzIeYa+js9eGBUjctmBNj0M10gA3QanA5BN9rOenSBXgYoC48KdX2JXqvjOeVJaeqkDQYdTWYyw1pgCE0F812OEeQqHVbcFI5qCbQKfhbzuAkvg3phHNCI4kbVZT42lJb3wT9gWcA3NHxwZzKlXmemdoyMoXoZgcFrtiD5bTyuJJmk+dhTrhxTReAfYSL3dTF4vUxBO3I8u7sgzuMFHHtlydcwXc44k77czdPNnHZBl6zQpdJwe9BlB2Grs0sIcMTLq9qQ7EMKjzyDGwxp/e1PWOFVQAIgZrC6d+y/Ow8s975aJrH7hFaE8eQp72gE5fjsw6zlLTClSGwVXXSESWV53xHnr9lPiRjRmm4o3q4uaSATsGw7octnZc9yz3ZjhpaaGtB+fclJNL6KaJKCdrPsqY5XkeJTfar3f7MtWqKZ8rTnuIKnuLmznkklsArUm1XZmdQL2T71EggcU6V8Hm3SwFYW77M4lNWKw0hXzbxrbGLSdnLx73MIvrIygazo2LC8UId/aEYGqT2akjnwznWbjMW4H6oiGsk8ZnemFOP3RESYL4kGDSBkj2QmGQ6yYr035ktKMP17mYPa0bSp8g4TetJNXmSPlKkHuXe5720wfbpS8wyMn0mLJHASleW17LObAvurO8wNDm1tzPMfmCn3uTEWgOPJeeD6revhmFEmfZYZxrfTi53PR67Rtr5o7jhjdT0H3yG/mg8OPjXj/+YKRkmLLmVBZ02CNt91yJjN5hZBzx5FjI9kXzJuZdcQIyYJPsCFuhe536k05Poiklj/Kcj2Kedx+qrG2ljkK7OQ3X8WwaXPQu8zyeTTTaVzeIGy7Uja84DZG9k1aupvmQ4Gq6SSfewdOfNpRwLSvJYGvwimEZLQzO7/I9z698YJ5eBKh5d9XnBMyvG1IRK3Owwb+e6gLSJK9gJ6p53u4N8A9uOs+99UaSvcSSRV7vTMbudG0UxfCfl6GyzBuMuh0vYSaspyNYpjlfxYdBjNJkwa57Ms5CFm9Jcs5pYEvB+fp5KcrLlAXgo0jmCPrURCp1efKPTelrxVdj9dldmuBlPzU51JMiiU6TwLZWyess0QxNB3wnIjYed5XS2D3sn3VvqKk4BzTsbr19v3rrhfJekqJ0rGBC65M382VfDg4VmymdGeYqZxBqR+qE2K5qCuezJZcuuTAnR7cMiVlsidyxV5TfRSV6qmsXhZNmCNYhKVZrueUt2ekGvbaGxvL59N4lliagR7RHwbG0JIiRiGcSiTt2/3x6nHuXIanucUH3HKRZoesTItoYrXEi6hbJsOi8lvtcfUTxzCYF5ZDpeh05npVODrYj4T4M52zeoGpvnP2J5qff40NvqqWE82E5u4KGaxf3sYXRBTHcVP50LM75SW+4yJ0mmTW58yFQkVX8OJv34C0ljjGkAYRLeKEYZGwsT250auM9dffwFnJT2Lzi4jW0iW8OGFXmMudiY7+ATD3hlVx634XT9PQyRjiSJ2MQnp4Z7azHD2P9Ita+C57eqbjYRIBsW7UGf8eVxj7dq1EVrgQaEgsB8+eDgtHck+dEN+Ulh75LKiALjluIyz1r3yzlZMrAvvQnR03HLb12XhPmzi0H6ZznLcvOeyNIoqIXa9wGndwcgXdPfnZcGMaybqJH+uaecYq2AnZH6WynYGWr4aJcRMdCv6YyxdjqCN6Zkm9SW67vABcJ/Ja3TvHfbAfyLcrhAPl2w/GcPYPxvEAjruslR61rR8LPZkU8onYyUFSnd88CtMxi9e1UcI9ZnWfAyjMTWdnA4DNroXlyJLorfeOZNaA/FMncjrTFqNB1HlV2XJnKCKI0sRWn96RmOvgbEzXXahZPD5UuV2UlTm0I8cZDBdcPeXOc3Eki9HLje/la5WEiZL253hbD30Dk5V3d26Hv8rpra+Pv3RkLt54yOfZN7Q20d3liqnfStN69mKqBeQh8W4g+Q3heu6IoSpAViKzeSfiStMOjTzrbwLHbynRZfqdBqVgeLE85tnZJfaxFcdcpKiqVVO5QD/94xvPuCO0k1mAVg2/oyaQghkVEAaju7F4fE6alsGXLlR+W5JzdIcbpbtTxZhG9trC4mENOoMvjQLy2VD9gAs7E+MTUOIyn0VwI3JcCzTzIAWXLgVMnW76p6Ak7G8JBeOYFStiwo0hxvGmaGG5A9ldI+oCNvsBGOWD553x0CBVstogO4zg+c7Jgkio2cpGPsW27dS6LUYtxo6XbyTj0G6vF9/vppq4HC4lyZhNu4Z0egXddEOhVDdZ28r/dM841fLznX+hUCWRYE7XMD72r3NmDD8tnDHdEhU6pyimT8Jxkppd2+rkfS3YgICSs4f5deORCW9pDUp7PCsYSwTd9ix3T8q5z1Uinf7h3GNbwkjQk7mB/kKSMpDSD7O8NrolSqXT6OGQF/7xw2n6Yq+IFwYwcD4XZkTkemylM+kopq7d9xLQc2WgzOFXpSMyt8cwJ1m7jsk7gU8vDtvW2vizqDZB/h4lHXzUPr1fhZzLbq0RzBluYFokwyJNFLopqOIFZTEk+zGZ4z88V/Z4RTO1f+cjWBFed2s9wd2dj+Ogu1nHZTp0weHO0kN5O+IiXmYeR89A2ECGjGE/JuEEwe3rvVhv6TbpRD7wW99nNF9Usi5sawFpsGaansvSmuMXTBLXIwkNBTFkw5JsrazKS7Z65ks3Ikpz2qgwHAemtpmGk5kOQr++4P5QQyJ1b3rROpTb/SZGvjNQk7VaRObNmCe2B5M4+UoNaqB/9XAVI2jpDRaUvS8KOnLCu7jYhLgfiwAJBD5TOZE1qX62TiJJIbh96tyIvlYfOKZ0cbhwWjFwZO28tDAnPNXhyOmKQW+/mni5E4u+rB5ZQ4zz2U0G+VohVwyvo9gIKJrvLk9aipy+5bK0xnVh3q6igG/DM6XNRvAJ2zusr3skIDzgrfeoR4YoNaxWFIGxpgdqd9E6cRgz4TffQSHJ5o+qiycE6D6YI066SXPSvNo369r4W3MmsII4gZ6Yx7Y1kel40xDrCdNaopEo/p56FaDUDFZWvJmdutoIx/SQo7OsxOX6LTEEZMQxXNg07cc4zMbLHZcUvmMN6F1DCcyTwK3lKohqLcwwJmN2nFuwkRSVs7FUTbminRyBJxfSJqug4t6hMo2HS0lcHXQMBb+sJ7CZ2Ms9Iv0Vy+Fqq0yv0rZNZh1ryAMxCQA63cajVokg+UpDFBlZjfFBiaiP8dnv1ju7xYcgspXbbUEhCVrnTdyK4tGQBOFX8zvc7x+mcqM2ZjutNYwml5LX75E4mp8nkxTLTNA9CxZdPu0CdercthgLmwWPsqErAKOMajciXgLznGXcv3KysR+7x4qAhexSEW6PH07i8bTcKuuyxNHbMILB0fxjj6b1f11wSJmlnH9zUeUzE8U9vLSXhKe/5g50ki4045ekxo3xeuyPA4l5IvQHhdhC8t18kQ0zli+KiLORHfiv0tnpn+VqOq5kyzj0kCWQqo2wHmt3NICebhH5wAjjx5wRw6nMzUuR7CeDw35AA/uuRW/+XJ4CnoDiK4z5ay3GMW7wu72JT3xQ80bQjJIASRNgDg2U/inXZb0m2t/rhmXgc1/W7/nnPe1fIIY+HFe2d0Pyv4l4s8r9ljIMaSyEV2fyBzHXCsUXgJX1UQgVJAsInFWwfXKDCPVxV4eHVQNwudHIiblw7rXDngfbj46irjwRb6bL9vqD2XynL6TnCtxRlArz+SCunCulbmnlynWip+ki9loRcdTj2EqHn/y/OohZwqZwqSrrE+L3kYc1+7iq3PpWS2dSCWjWL2lQOWhW7W7Xzr2L9rtS5xH5U2vmv4/KBr5ZxU5/PUL+ign2XHz+82yvxDVoqpN/m4HzOf58unucx9y3lu/gt5T7yWdW2/22aOvbwmW/p3vD8Tsf/9TlR0wr+Q4l3ehXWjxR3+nDFeg0s2jqf6bz/WwkQFRRKAdLW40t/OaWeJ1d6d0EB2ylT4+P+n841f53vH+GVXiVevUgX6ZRH/JR5+MQVKGA/f8ZVH+PwsKpV9XLeWx41am055zwBzHB4H3oGoV5iVHECTrkkgnE8z3EEQS2r3YAUzLCDq2JXmFEqiOI8fjfeeR+oC9LZod+NV/1xvPw/jqcXDAXkZDsQKCHfQz+oAz7Yz3l6fptLIvTwI7kKp8zcm3nOAbj+3tTnKukg9Yg3s5JW1XEv2oXZFMdBNPt2MY6cVavHiaucU47HZp64+HW8UxZl8k6xN383nvnH8ar/ON5L/y05/o+YBFj9VhYPmhF8XPe78g77/PkfykbcBaz4uAAEQR+4GSmpUw3dtnexpliG5A0SG8F2kTjLmqQNXuPlXgyMxJT88Hx2y96lT+dpTJZ1Qa6l54UXUygZB0q6KuGhyXrAZlFE/FOeIY6983nXPeVQMa7OmL2iW5s0KU0nFHlNbO1IP3Yo8ASJljYDm+s62CgnUckLgJtI4OeVYKtLzzBL4DeJfOo+EW5irHsVxDQTps5MsijV0uaJ9dQYhl0vB1YjtY5RhRmJIFPzsNY2HgvdSATGYJh7LizCAoPYVjSEdzMTMKcdkEe4pTItOucVT13fJggRQ3EKr6f7mb9bBlxQTs9MmYn0eN1loFzPN+KFYB46Q3nSKp0KaeGvH40njOjdRYBlFoZ/9xhQP95/ou9/OCZmlO9dx2DGu/EoZblhg/LFE98u8rUsQNGj4lx2NlNspA8hn5Ok3omG033fEmvPLDSVwEgsu3RYbuAbDYuIoza3C7EpWWJNUOQTkbFWc5ib4FZYCXhwS58l6fZ02wxu0soix9S/hM6U3jjqfTf5ZWJf81bIZZ6rr3ZPB7DbdMd3wE019fSyrJG9Us77mcSYiqsgtl5EoU8koLN+9gLXE3kNXyvkkaLv3gqSRUp0fTlaNm6fw7WFBhh3rvLMnx96zr5xB011dtQEmbEn3QT+6oJlV8+lOfeE5PlyQI12Y8FYGsivvZME13ak6hFcB/Iu5jVNUe0u9VdKktj3bN9VkDe+IdkMFceL9NtLxl/f8+0/bnePN0lk/yajAk0pO4LJ/nlJJRW8sy6QR3nkvlEGWYwf7SIwP1RTNWFfQG48h6GOejygneJ++52CCgkmBXKW2HXBgpWhjOg9q+oMYzkyHPyNfYNC5Mg8jAhGTynpXTrNKQztSgkwutFmvyqJ6l5RFeSLZO3TeQf+Gu60l41HHXb60J/wvUfHPVjgsHdt6zmfI/DappJoIXqMKb7InH3l64xUICqFTgF6cedDgLcXiJ2QOghRVJNHcYMjnrO69nCP1ZDPa0ijSwVaHY1GuvIFpeBaw+CZoSdVvnRMKSibBJdcTdWTQbdIr5ZSXR0zPAozSKZfpMgTb7TOifyVMNy8F14ibO4L6j2n23ob5z7nanYyhKc1Wu+4gxvO/bq8TmG+d/bcV0/KzEgmFuLxm1dpHcEjxdYPTPGUTo3km9kcA3wadzu6gvYYSKNmMhffZ1O/Lo/suuT+88JcDlEw+/w2is8LJqwgj8i6J6jjqY58Yu6SEh6kY8orbSZRNE4zLxF5SwWBEJ6IwBgRmTYW8dcChU5rF18Pr2sEktrC4dmC0Tf2ss75Al0x0SFOKSljoFjskCN5PfXqXMVR1eOobgTiKdrg4nddYx0xdLpD4UxC9aLvcFRu4qOD4MLP87qhZEwxopVlbo1WU8N+je8Ls7XZErvnEqwJUsWauQ5yUG/D8qfXwBlPf+uldCO4e3znQKwuA+VDAnwcTTtEJZEaPU1dbzuPiFu9qAzA2ZPZ+JfMCaoCum9cqfvMV7fjQBw2O96x/3erKDYZQRKh5PVWuKkvdsrRJ8ccslCl9VMjgqbmfUPIYUgFawloJqIJM6N1D3vQvAg+abmOXkeaKElQ0xWbyZTqvVbYIe+gZXHKoTrloJ1y4ILNtpAZgkFEEtEQhdw8iz11xLHJGDAHaZ8GOg6L5p0OrRf8ynIQBJx8nRHDVw4tofAA5qNLTM61o4rEUr8c2bnfYbSQzfkGyXzpmKQzoZ1XH4HlirGoiwZncBG6DF0XrI6OH4Qe9ONlPsgHmUVZMuDBfKWncB7r6Y5Kj+PUIs1xFUvNUhp16ENpfroUkT3s54c180ltvV2djOK22KZ0eh6i4omRJTGA9AfLUyMzyEIAd7JjTjW0coaSSic9r6jAYrSrLXpyJycx8mzvDVbeXZDwRmpeg+1Illnu6UVNdlbjFHlxHFld61eqqCfssBkz6fQ2nTrlwpHGqa9m+Poadiq/0T6wrZihesCR3UWLOmzA/3utB/eEWxilywRw3q/6WIFqXuExY2AXGFOcajo2djpBdokvRTqiG++IoslhE474du0e4xyAfGlS3vzEivcshaRO0wPQfItdcThvy9fzXHhAJyH09ZxfmSpsBXyGMwrWkRg3wervWK5K4fCIIbQAyaE55Ypj0YawDwyJRUnbqWqZi+QJO61xcIswjkPcWuyqhk1EB8ZhLiclINpo9g73YhO6MiYhbFMZsz6Mh3++E4U1wFDtk1uUCfYFq2HnugSIbZqvRZankT9Orm5Lq4BPrHfg0cWdPLr0RneAh3K4kDBMGcqrt/zb1A2HJiSp5RMjGVU5i7ToI9DcTgomCkQWMMfb0Lh7yXvtQe+dOzd6yS0TubbCaaQM6t3JYYa9jujDVRlqPxlPIdkS7Ws4jmVRXbv3BUsSIIIeSQ54axCEr6Yxn+l98eL9vQ8Fos1UNVWo05SqL536o+y5l+y3fvS8F2jGAGN5V5/FtbRM/ZFNBlKliEjNPUS1aHA5hoz0eK/iT8Ot08Ur3ycT6I6IH7crnBTdo13e3RzqQEB5BZeWCSn3YLRLzaXuVGu64IfmS6RDQ02DiAgYK4q0uHfoKAsv6OVcgCLgmRl0macoYibMp+cpLFfFMSBUjqeiyOFOsoKoMHsHaCxpnNsYP4KLepA3/uRXSOSge7SEQ6K5uNV2EXIhn/Ntnu165oNLGbULiIlOtEfeFFzrlj5BpiuyV5V624JLmJx0/b8+CimfkTTBCTuCTKyN3q8yJsc+XuW6UjZSNCYkbIQdVT4sN4F2ZHq0Np80/ut2OXxCq7NtD2QERLUFWV9AvtKW43u23ABNIdUrkiUhMZ9KPVXvKszBz+LU1KllOi9/WR7KqZ0T5Nor2Umu92e5zSne9bJMWDKCEs+0fxL7JXWGcSq9pCvJGd2D0JYXHZWo1+GCEwpYmceeIfJgk6z2kak6QFa/dduuO+1OMFHIyDMXY3u/q3y830Yt2S9BSofRbCz4yCXTJRIVAh0yEJRVKpJixsiQVNZkbQ0frXROazBJFzcjS3u9n6aAYCvi2AUWmbIDT6mmnaqk1R9uaAZT6D2pXXzIV3uabbbHA1SkZ4u4pXFvgaWdBESOoAOlR72Kq4irUDaCXBQ4RBdS2C8vg6jusnjLg7oJ4gUEUkWUBuaGWezEOjWCSenqgu1E81CoTJPDOJDxKJ1xs0SODe/GwboTEqLipREZAgIypQR9SlAZnrVrQ9bXTnFfj7W5aLjBzojbqXRnjOatdIiHnM40ouOK4sUg4RIxyKOJzGhYslMgjrG2XiyOpardsck43bZToyy01tDkVeQS3gtA4k+P2uFbl0JNS7X45fUMWspEtLx6hz4Vg/bnW9Fwhx/m16dn8mF+DzSom18UXSKaZQCO68XwVE/6AIjL5ZblHbnffBAmI/nTSYoXYYYF+VSyWB6ovEeddz5BDELbILtSrVK3zjO+2WfpnHmQtKwlRfFEbggN6lqC+2x5L3PYL03NQF1D0XU6y45SzoE0gX0AdlpIkX6CSK6cKDdnqNx+yE+Yirs8JPSyjYRaDa5Z92ScjyQSXFrKCvgFQ+leApmwLA8pilo/w/S19fhclDaHvDBl6nRanCzhXAnH0jzuJNrNqlBVM0ZaJClamD0WB30st+n1eNTZ5cBzKBr8EdQSOPX9hUSCRFsQEWs8wHestrM52INUkwr9oNwQlLVctQEOEAXLsAuiknXC4Gh6aaVKdzjY0E0pppnrlHb8A7Wr2vbMnNWtF7WenCcLh+DoeZQbz/FV2aPzctdosQz6l5bJtPnSaSfeXo8UP12Q7VmgdzhnllQFG1aCQeIxnUCnY6a8Uy8RmaAnvnl56JiVuf6iutUhSdqMrs+5icui6xzHw+1iZ3kR9p9BaF3DZ0FaFUuwhz55Wsp5fSqsJSW+XgAQcByMfAytYe7OrdfweGo+vR0+4HeFgRU0iOM8sqAFGwd3pZKxGAoSMyM51ARvvY38tm9muBwXoKC8Eot4fxRGgd8vO3qIMVkGj+aWYME0c/HmGYNP4TfHv1sSjlaQLBu5V4oetpfDLiYUVT6JuXLiRxUyp9M/h+w8OBH1eGueTnLR6UgyehbnezgJ+VB5ZOGkQoP2YQTzU+SEdsW9y460eKTV+J6ALZ2quzopVdTgtDFWnzszSumpT2n2GJcWksFiWCqCqIx7lpa5/VqeqxER5CNgy1F9yvs9da4giH7vw/xlOUwGggg0PHBw7x9qHD8j5tSv4tWY89OoGmiN1VOWzrXS5xPYZ77vzr1RUBbtV3GlN02ij7vPtTbQQffhpuVg5sb6wBnMQ7LeAhHUU+/C8cwnhTmFmuE6yuI0Jh7WrabPwUvwXsFVlB+qNpM609oRXY7zbqiX5JnFi37ehWXeljUeTq1Q3GkkEEwlGPJbg4azM9hHTz+uV4cMwMZITIzQZKOnHt221mdA1miBgboQ3U72+6jismvMi/2u+Rv6LDYpiHxVJZamItvDF+3JK7EXPgp0uMoPZRWArzMZ+X6rIW3zSHVY4NnnKjZS06tLboeMZKSoVjnGb26k7/3huflrz1zc9xGWrcqdapF7Ljav7TVsCqB0T+habnjOPe5d+3Reqp8jgUHZDQCfSJGvyWde2kfejrQcHXibTRf78RKnpsCe8ZC9sB7RgfS3gdatb8UaxeHHseHgsWAGC3bD0AJNWCvJ55eHkHkJdFpPP43OOGqay44VW4JNfyx6mQ3jKIRFzMS8t3pHCCc6qH8BgYDX7ZinWYpWPMGH+3Hxn2RFonPQpdllC1/BtqF5XKMJ83ELnuh3Ct8jXHsJQeeEevaRx2GEUUhjzt2snTS9CDngzWrY5Uv1hC9j6tkgxcaP531f5f2VLmkF7yd6IP5OuIcWJ6QYp/Sa+5f2AloJgXuTXfKGkuWrzm+zBSaoiSIqTyIFIKDX/eFKGZkgnnKuJlk2dVIXAnTYt8vs3AB5YUPKJj1pcbtncT8kkPLwCrVuEOsDCWbq3teHv0heOLuvc360YKNRPovu9xIkBzTe/ci5k0WaYwpPYobGhY+iOnDYYe22IVgordh+gB16rPiQ4y2+14G5ATIK+1oa2ff4yi5pnRz+w4iWYVd2EekRr9FuqIenfnyr3PhBWDyttJofb9c7ATzMOH4nZt92NyhOL3JTzCAJ4yPZj0BQSJiCoyKBX0Gh5eBm3iVqsujD8A1GU/kGvBPqmGUaMYE29FU/7mKCSoYUy+kMRntkhjVzPKcFe0r3h5ue6o5zYWnDdOfdxOpwpxdszae+C5yypsepnwSSQKXaYS3+hT0KzznZvtNZE6iXFARPVCbdxiImR+8xTzepYumhGPfp9Ym1YUKUVUBCyGaQpMJPPOpeGW8jkrK/0HZ/YKhCIzMoITjJMlZKUgyS/W9Uah9m+QQbgOS2vLtWyJnbbgUIfwj4pezT5XRJ0Xe6DanYkdm8srRbwxf6XkkR6o3m0gVLdeFO31LQ8NPJTFI7ZkJiZK5ohDoEXTWTw0Kwr1RJXEizYrZLdEi47MSHHpc5Vk6uHntBtjikwSO8EW3a7OvrlU+xPtrKKPDbBd7mgo/J3AI9RtlDuivZoS2tOhsYwospT7NhTzzKNr0taQsRpeHFUcNm7QylJjr1dAp8/RN5okcVmY55VmjTaR0VTT8Dmq8JKTHphdKlb6nyeJJmtuu+ROujBiZaUtYLh/qm8+iDjJi7fC8jSUq9uZm9QanWJSah8rmLrVK4NBqWjGvrlLnvu0fD176UaZTdXCpB9qZ2zCf5cuTEsxzasit72IBP827S7FmkE7WxBF6/e5i1Er1ejqigcHBjCCAlcxywJEOl8CA1SIDm9ax0CIDzpX57emIOg6ZignLThQQThVlxjobAxReuJTINpA4udtVGbQRHITuXy207tPK86AiNLnmRuLx1IL72zSb6orIi6jXEQhMNs0Hs2qHFiuhV7sRYy2SeAeoBabCsTVg7i5F2n+O16TahSTA98wiTsJV2SsDsb4t9KD2HkscELSebjiN4wr2jNiWiULy6RZr4wt131VsqXNzK3lvuiq5JE7es747TYn2qgWHwssAHASCPpHuoHTLxvumuRs646OiksRsWpLlGWV63cpnhYlnuOA41fq3ykzAHka/viooUvOIbXYH066hyEkrtxpygXORFmve2G3OVjbyJ+u9wcfcuBkk69or7hRqLCI6RN81xQTXVWxthDnJ9a4PFC32cAc70VB7LixX9c7GcWjSSai2BkiBNaAUVYQnyAT3yVIrxD1mf9CxsDUEAz2imglvSupZB5yI9xylp5Ha3cfymLzht4ue60bOBICagmDWoPfk4uaIg2jHf5V2p6xkVqJJg5GW6JAF5ra+aD588jxgRJ8aWW14Rel+oB9024f059Y8sx2uQyugBNS5Dtzop/E1T62bzq2PqE7pVYOExRGLkB3nT4JdtgRWYOdBCgAKMCZiacR/23JCOpWOKsAgasuhVYAJtrXvOnMYPa4lyI/ZFG+ja9AV5EAE/zmfxj6gh4fD2kKduJB39usEwyyLZdcZOXmlcBZ1oGy23XR2ynnAk5FfB31+l+ToZnqxHAOJqDLyT4MY9VV8Eng7uXfK6bDvoaLLEbNdRm9VivAYPmK3beZnWFQ2qfdIymuy7lu9ZUoTmqJqAw/40OxiZgWAur527XSaaSIW8n8qrEWoDPumItaFefuh50HOv5IlgkXzyXaWPpaMe2a4kXOfd9add6xbLkMwgZz3t1Z02i5jWnfqUZf063ZDeHO15casMT7Ejb0MyuQgw2MCgIhBpQh8JQ59kfDepsQHHZJ2eKOfbLnPT4EtN9+zFL3ZvVwrn9PgieBmyUtFexQOnRR/jOVXhTzMNOEDAz17Fe4Rxj+XklVFBfclOthUIQdryLUxzC0xiF8YlyQCBVM5crFjLfPxIXeCP3ZfGlg/XxPZrDRhtJNIOpysBCCrOjYg6ZdA2bSOxHiqQFiTefSSBl0DIQ1nn7jHgU6ffiEeRfsHvNynaBbyUusBIGtaRT0iPCnmn90u9hrH9YdZZ4Ed6JwGiFyuIx1VQBrRsThKg8xrSjplN36zXUay1bcVMR59+28VoXq2zm06TgiRlzTytrjbdel5TFliYwgaQ96KsSSJMJ5byrm3sW0RQa2nf+c1zPZwuLBdLeISYuoIyMVq1n8yx5EROP3LTHqeDxoJGIEIaiUIURXQIWndUclq8MsIYSUT+9C0EDX1JRHqSkCDwp/tGb2OElIqzFQNCkwlJzgxuaytQC34ZD7qeO0N9OrBrjhItPmH6zN0zYgviq7+ICvWs4Hg7xmBJ1DG6v49JSzLlgKkbRa98YDGiYZaJvZ9eVozw8T1OlGx8sdf6/kSKx27LD+JEguvH6ro8KjxN7qXN1HVLx16Gilp272+8+gzsxZc+9JfbZc1+DRC88CC+KtrH1LKyzou3oma3whru9+5B+Pe3S5e6aZcL0POJ0JFbYzQRyDqylUgTtgK5Ei8CJiuBdavXzR7NawO8Aidr7nSXgIOE2DY8Ct1dzX6D+KI9WfOT1gKUKOqK2dn7YtgGDoJnj61g0RSjXANe6FMj5P6iIvb9ir8mFiUv/WirdA/24aBWkGruNEoz67ahTanXgp88Hm5A5UfAYgf+LJulUDUvYzzOf5UsEW2dbdjT6RUGlwIAe4/9wyGIewS57SAWRgkOi9GImswwBCgGPX/c3fW+4U0W6jqgRcyI8lBpX/UbLXL70fie1x/VbWX2euXkVYjMdpD5gLhEJOTP6ivnwUyXvKZ5e4vV5kkPQa6YBzduBPYHfPAxIYQ/8gOFcpSv6sZGkOwGM2CfajetnLuudpTWpr6guz+eCiIPXgjum53Xb+WpZYrHa1rADknajXY0AINgpDoTeoO6CrbGsU4rlxBBqSa7YGwAHW275I18mKdTkXMdfrJ+G29MKBcnroYyMffY8iIFtB8gOzxHI2AWol9DSCXG1K1U65yqYxz1O/1FYfnhX27UaNUTGrb3bmJO14eIoVNfeDsi8WlU1510R+5wvvT53slIRNh+x/YlZeCzJ+NBF9SCKItS2PDAIYfb2pGkCxwhBt9eS+QYi9Ez/BlPri+rvPGhcvHEMgI+HbQuwNmICEqvloJgA3MOlCdxQwSnPH3v0xdgvOS2Cca9mGnyIVKaCx0pt5codgWBU2VSZ6eBqvcZYsi2hcqt3w1pm6D49CCfdtQ81i3Y+6s2ztu7EGIz+14nStny97I5UBIkFb+40V8eeWDDRGFXAcZeGwV6yM9keTzm66krBWyz5CO/t1WCh43+Cugm2dqre51VjTnGcKWfL6e8d+H4wH3K14NdXOhtMFeQgh4iMMoSPqGkUHxDdLpzFQwsRThjjh3tJBVl7lqJ04FLDBfebQtPgdfy0JiWvzUnp8ewejUh5HqNIXUdAyFtFCWv23R36riA9kp3cXxoXjSCAA34Pr4N7icKXjfEAd02Q21WOB9iMCPYneF9aJxEN9rllew5err86YkuGRny7an0T6y+l849y6RHMaZ0gsFXZwNk8mAWkQAW+nLED3x2Nb3Ujruzavsll44QiXxXBM6JBz9viX6Z6uAa0HbOaViOkAid3G7NosdPVGHmUXWUhNxUqX24TUDdE3vZdbqYZAr2PWZDFw1w3NkN/QEKVSjQGq3VNrl7VYd8QPUgEpJpRvI1djxL39WhM8mo54Um1Wa7yrQqJqMlum5HN9lPdcE8Zc8OjpdYos1H7fGSl0iRwKrNPfk+3vfrUY27DW9Yu99jGJkkmoyvL3hm23gri3V2sinhEYnargBjyoDPiRghz4oQCImk2DDmVCdCKeO8p4o7nWLPX/w6akZCf0hWcUcaGo/3wjqIU6o1VF1chVQmjk6Oxgnw/Aqp0QxMcr4xcPqUn2pCRejN6E7hkiAG3WlWxqcwf66Cy6ICZ/912+GX6lbXS61s6VM6BBkOyOk4lO0oD+lc2cFVSADlZRBvwKxd8ygDfZ06WQyvvEngez7K2HpzcBowuhVeaRB41sHW5+n0xDZcrxfSZGfZARJ9qA2lVmAlIomwkCYq1PEQnCrdiX2caI/T4j1yK4GBF0Z6VWOAgs+VU8b0hXT4tUv29ljG/bS3gNJQpt0E9fxwRBA6O0lLWeV6SogN8JiKmmoiZwyHODngLLJUSAZ3EFw5uC/XcjH2nXKX5WLBfnl6ZrvYKGx+KsTy4Xjri3DlTb0MKFtDphiB+GqrB8c6IZWMm315uUslgvjbDabEfXd3bE5MBoOu12akZec1FlMIWwqxQr04PC6cUqpmTNKhszQm4eXTbjfTVZwOpFhgTl2xWs8vEwShBE9txDVmVH8NPP0uk7h90U4fH45W7b5qZDjZk1mqikdlKiKh2OlSzdOlvISG1ttk7UpbH4lKkGLr1Qe93y8v6fS7/MCqUlK35EutKfSmixm+6EiXj1L5ytggX5EkpNDkQGRTS53jEIMM1n0a2KE19vr1iiqPF4QT+2UYXfJqLMJFup507XSgrPkyHZKTsnb0JlcFuTboITQR6k1EQc1ozwotYLM77cz+3V4WOfN5a0Ur0yVmZNyA7+YaqHDd/IXCoQKVB1aDn4fti7o32JroJ8WITjNIDanu732E6rDyKshooqw0Crmg7NyPZak8TJK5DlSmjAoIgtVjiaJgZR6ZMRashwuyPwaNZzdzf2QnzSm4Y/Km3HplMOxdtue2By+XFMXH4OOUBRO3zeSviBOgalK6AYWpyw3VbEnd7sfjSXmnRXAeqerrWBZi0WzQYVMMprjMJHDVhRKOQGgCcVTS6m7IMEqB4C242xc2N5TK6qgOnJTWc3xnICOCuJ3Quzw2JG6AB9aiFI47XRnYaykFK0feEkuIynctaXtzFR17nby1puqwNktWWBCg5XBXGMqktshTodfdfTjpgYCLOhxSvVvRwpgxu0UhNHLJTmfwhL7tn0uxDWyHstyGrnSdeCVQCNczcmk9UvCgG7LR/SaLEQ+jgJVP2zUqBLqlVITXA8OLQa7ONOcc7b6CPhtoEr7vDfJU4L6bEcTQtuNK6HGvSdCTRg9UiJqZgBGSkZb0TtcpPV3fLQBetzwCxRV0uz2EButQNxL9Br0nfuSz1/aeNcMpiNSYkKj3ls7bthrVtHzqQa9LYYHS9ISIL7xP8zq9kkf+si9I23QP6Apuu/W1DD4XXS771v28C0c7bsS0ktWCPlPv/Ggcghct4zgVRO5R3aX0NjpGyB/Rdg8YITAI2EO8QGoMEuloJ0+fdTDe6Op8LpV+PsUr5pC941Ck2bAgCH13j8cds6a5XygZJrPC6M2Co8pBDIx5SGitiLLnSbfyqB5JVhB5z9JEzELHQb/eEwTR34e+OcsNAY3bnbHdZV3pa+G2XGzjXSidiE0xs2NXwUMc1BNJN0FXGG/3V53TB9wvKlyrZaT4s9KFdA2iB1KvEoB2g0CpuqPe6dm2accIJ3Vgila36uMWtQmTNHa7r03cY1ZLwJVHVmVtNj2WEuGl5jYOj+kU8nvYTfbQvdPI/QA7O6wi28MADYutSijecHxo+/Q6a8Quja8eOzp5q+OkfQi6VfiNEW1pPdu0Sqvzs2oFevfv44H7kfqunUClB1mf3jYzdrLg5IF5qeASHU5vcDtabB3rmxRat3mf1WTZCaLsMSJOpKQjWxyX6XTxbxx0K9yXFUs3DCZgoi7GBq3y1JxwKsg1kbulB+K/iwGPeYqry+1JAFZbbXAIz5ItgCXs7sHzqF6tYdFFo10vL/JU/9tVFHZAi7A5skNLBDtX1+OSZZsjjZc+covTc3OUXjtNM/auxyXHJODNu9smrzIFIQFyNxk9mgRsRxytEBSi3o/akuGb1/YxF6ktzYNYEklyifdOpEirfnd7SxisoBwMpXgfddCmUJZE7ygRYPqkYSLCzSFlP+pWV4q6XBXZLd0LUzNThsbnR4MlCmaq9HsvDxuhDERLxvquVbdYf0xlaZS9T1NP+b6d9lrUM1oMdje7dutlnPWbuMQje6Iy1u/KeePToxDrRO8CGUeaCtU9KGCCvlLoghM9ggv6m0UiKUTKyOqRaxmBfaqj9d+ndt78Gb2OpmjXIQl8QkhsVeKFMOur0lX3YMoQGTsdNk3jcTKlWoVbjvHktL3bklhHW6jnbDP0yCwTmvzaCNrr0S2qKfh0vZFz7hGGZ6MRvdXUqqJ1bwZD33sPUvXg0FqR7D4k3YSidnaAeaz198l4Fl7aIzXI+2Jn0aUYnFxztL7pBuclxFzptMLdJom7erVMpKrOlf5syNqO6HG/uorTG9S0n3zpnmvpNI9vNe1LQ4Pvu8pfEsDI9tvFGvIB5mlXFBVJUUmbAhEOurScCTn6qlD1IDbL+60+4NcV5icgpsETsVQX0R7PD24DcyXwsYeYKB8G2kBotEuRAoL2s+Pf72Eqbc7I2geMo9ExD51TKJWaDqk7jO0UI1ed3ZQp0FCcLVV/6RKOvqA0nIowX4Cz5ICqBOq4A4kW8XGlZo54RlsEunmxO5SALF9Zhd+H/hWjFrP2/LIKxh2h5gLO8AWpRR1ZLiia0o+T+PSXW3MyNVek4HIVCv/Q03doW3VpGxbgfcS8bl6q6wKow6N+8WmSDvsV8sn5sY1YN3FzSj6MKSvukDAyJAo30Wlx3Bh7nH658FaEJDFQBW0xtdZ641GQTnF93lIytK8qQ83hNV/EYepPb9PP5xzWoNB+t5J8uRpM5FNEBZqm4Na7sYHD1D3vw6j4Sq4MlPrB05qaVHLtYJ9JHtpUIqDdWCNGT3ThgR2d6k7n0Q31QiCpKfRluwtA3EhYTh/1JmFGGD9SyWPnzScgpQeZvhTUaNMo8cLN4uXgGRlG9a6uKfNkKS7gIIXLU1mu1/Qj/3p5R94RrEdcEML7yAluwbqNo/T+3hj8yOddeA0bfP+ufMvhjaV5Ncj1nb9brzUKtgt4LeC1dw4zo8T3BJ8xAZI/XouxlBAzyLbdxfSd83td+OvvRt8xBFtQfSsF6J2FDHJYtxnkqCGVxUri+PFbmvY+1ISiSVpa31l5DLs+0dPQvPPHOZ/zE5LKgvadPnp+besLBei6J4cmq6z3/g0GKDQxJadCYUN5wFd0s1v8Xni9wYHcZpbMW8DwHgd/pRz4feTckkcy45xPwumx/t4uOZ3C01tkUi5t5w067Yrehblx3gaHmff83neZD5SrA83PsC3IWMcaBA0vsfCcBbATOmOu17XgAxmwHiysiF3yvalynUr0Ok+aeY0R2clFHtkjts+75YDcYE3BofepKJ7zAiSefiwMgTEejNjO0/gEnsvp13+/mO4HVs/R5B+L59BPpXMw/p3aOQz5O2rnkE+1c1zXtqBWDYHmDgx//hXepWwIpHfF+ZR/rq07H/O8JfbUr12V/jpHbdeCOrusqOs/vRV+K5er02z+yyq6CdQuts/7+5oL9ts75rcJAG915+9mdbeeL/MiSU4bjp7Maw7nMHrfG6i168Etv2cIZ88/0H8hHPQL/l8gMY47X8O/vcYv78vHU8zt+Sxh8RZoGk7zetqOfwMB8L71bTqgvwEPCI79ERDwrwWNf4AE9BkSCPF3QAL9BAmmBlvn/wLGl/z/Uv7w57rbvwERMPwJEfAv9O++qM/4wH4YPrDPKmN+h565uoirL3j8W3j8n4OBQv8IBhQm/wMWqB8GBfx71uMtcARSUkAGvsDwQ20FjaD/m2CAib8HDc6UjlpUfjCFd7X8x69qPfCloQJ8S8Zw/aXofvnll4/h66KtPq7K57k/P4v5iLGt6/rLt2vfHycsIxjt4yIEB5fh4EL8T5eer6f8lEK8zNMv0+v58Sm/wZP43dx9w+7vsPgu7Acl+m/h/wlq30cokF5xvFcy8lnKAkSREP4nKWPfR/bfYRUQCPuF+O3rTzQS/rXhwu+F/6sh+b3wYep/W/iAn/8m/7/SDuRfGQorLzLAKJRuAY3foTVPT/h86YofaziwPyEE+84pjT+QVlKf0RC2r3NMBAq6rjn/kUAQTlu+GOaPthoE+t9Awq+W5e9HwucDO7+5FqAHyzcvc/oCwY+mDn/ikSRN/4JDv30RP9Gn+JWhfvI5f7UU+hccfrB1+LNbAeCA/VsmSf8wNMCf0CC1J914x6Q+nItzOs4PSUBQKgQ6I01AC6VvPPQLKj84QAX9qd0Xgn8CBwL9MHR8DlleugVMKALF/y4C8X+1XP8OFfApzIRgf3Qmv+NQINAv0O+/fhRpoD5HJZGfstD/J8n6m+sJ/YZKG9zj5X9hPyTsiCDoLwiJUwQCERRN4Dj1JwvxnejCd1Y9/LfI/y+jjmY6gXlBoOxtFE7Z/q8xjZdxKl7gXdC/rz//Hb9ddt4M+p7Bb7+upHP4eZT4nLV0TJP/4pD/Yj6N8SfY/RZIgP+eQMJvUv8M2j+jtDlBWf99EQX8jxoAor+j2nH8O4uc/juE/Dme+JeL/C2Lv1yDYJmFy9xN3yb5f1P9/25Z/XcX5N+if2nqF/R3X3+SBfXZS0O+t96gv0MUxCdRwF/69vfA+DsETv3J4OI/U6P+VXgOegdloV9dLx5owneoFlLT9fx+L9r0X1cxfV+DJ3rHe60wC8fik47984BT/DEcF7YxoOsQnxRz0T7/n1Ks+Gf/+gcq1s/Bt79czf8PKlbs87L7cYr1O9GvDybi/xT9+v9fB+dn7KxjGP4Hfwb+rI9/WBCM/hwE+3Vj/QsZ/zwyvhcj/3FY+BwC+4YF9wsL/zgWcIj6x9Jv6M/hr2/IuH4h459HBgb/8tlj/oFo+BwW+9Meu/OFin8eFb/mzP0cTPxlqOz+m9v2h921+xdG/nGMED91w5X+TubeB0Y+3P1fcXL5QsY/jwz0jzl939mFwX7SLgz9OSoIzsgB0gIhoXfo/JLW6fw5SP6Fm5+OGxL6ww7+P4mbv0wF/ELL/xC0kNB36o5+Gj6+kxz4bXfvCxr/PDRQ7H+MAfocPf2VxJrf35z9gstPhwtB/lMxVBT6qxjqNz77p93+L6z801gBSac/Ex9/GVcVz9G+APGPA4JC4f9sa34UOP4ytMq3yRc2/nlsEOg/h43/GGj9UiD/M0BC/8Q4Ggr9Zaz1t/SZL9Xxz6OCRqj/HAv5URj5y1jrrxhhvxDyzyOEgP6pPV0U+hxW/RNChC+E/PMIob8bIftRmPgcMv3jph0Ywv6CxT8OCxhC8J/rw/5lsPRXaDy+YPE/ABbfS+b+caD4q7TSPyVfX8bwc571Fzp+PjroP0bMkZ+IFfg7QdKvrgs/va8bhn3Havyo/hso/J3IZ9fvX1L/2VInif/kZ/w4DHwOcOrnjHyFrX42CP4bCcQ/DgSfI5nXj/rWLxD8XBB8P1f4xwn+c6zSaZ9fov8nRP+9hOAfJ/jPAch7B/pkCE5bv//zzUkAdZj/9S7w/Grj+bMhQUDEf3IIfhxAPscfL0tfnwL74gY/HwjoT2UDn8OMv6ZkQtb5n3h+d/4Gv/bVku2nQ4GEfi5D+BxZ/BcY1uL8/BMI/+rU9wWHnw2H76bo/jgwfI4o2svY/ossmGCCATJoCHTJATMKcYBOrMX0ZTV+OjbQ7ymK7xwb8bdg49fuCL/DhgLmIny3AdHHDkzRl474J3BA/MSmvijyOahopSDh5ePsEFAb9IWAn4wAmvhOwvWPQ8DnkOL50HXYvxt7g9MAzpkBBYVfKPipKKDQn+lAIp9jivzWh29N8IWBfwwDxM+MMiGfw4v89o4nfYWX/xHpfy8R9sdJ/3OM8ddK8i/x/yM0AKF+auwA+RxDZMd3U78PLiiM3dfZcT8fBd/LWfxxGPhOmfevjXR/DRt80wbQVwneP+Mffr/g7sdB4jvJinUaArvghfu3Cf3T/pPddfVcfJmMn40NGEK+QxlI4kdB43OAkfm1s+iX6H+26L+XrfrDtAL6nQzEunu3FY7flwqXYor/dRDtx+keX5D4yZD4tSHpHyDxo7QB+jmUGDeANhTntKQh+F+XAXx8ZDV/tOlXwvgLFx+4IN9fn3CB/qGfMvVff0s287/SV75BBUG+wykQDP5RUPkcc/yEgj8e7rjmxZxa7y5V6GUdQyDTfG7AIZPwn2ABznF8f/0lhn7cSeAw/OtBWP+K4n1eguj38sJ/ve7/bF4/R/H+b51XAvkPLUq+P8vw3zHLn+Nkfyzs+uoD/u/rM/4OPNB/jpb/x/O0f9R5Vij6OXL2Rzx8dXz++XggsD+chfgdj/nH4eE7xcDvQg3I+vKMfjwNhv/V0+Hf7aR973iIv0f6n0No30o0vsT/z4gfqIIfBoDz5dh18+9+dj1ZVK50CThPnf//AA==</diagram></mxfile>" style="background-color: rgb(238, 238, 238);"><defs><clipPath id="mx-clip-25-150-112-26-0"><rect x="25" y="150" width="112" height="26"/></clipPath><clipPath id="mx-clip-25-182-112-26-0"><rect x="25" y="182" width="112" height="26"/></clipPath><clipPath id="mx-clip-25-214-112-26-0"><rect x="25" y="214" width="112" height="26"/></clipPath><clipPath id="mx-clip-25-247-132-26-0"><rect x="25" y="247" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-279-112-26-0"><rect x="25" y="279" width="112" height="26"/></clipPath><clipPath id="mx-clip-25-311-112-26-0"><rect x="25" y="311" width="112" height="26"/></clipPath><clipPath id="mx-clip-25-343-112-26-0"><rect x="25" y="343" width="112" height="26"/></clipPath><clipPath id="mx-clip-102-241-10-20-0"><rect x="102" y="241" width="10" height="20"/></clipPath><clipPath id="mx-clip-120-150-192-26-0"><rect x="120" y="150" width="192" height="26"/></clipPath><clipPath id="mx-clip-120-182-202-26-0"><rect x="120" y="182" width="202" height="26"/></clipPath><clipPath id="mx-clip-120-214-192-26-0"><rect x="120" y="214" width="192" height="26"/></clipPath><clipPath id="mx-clip-120-247-192-26-0"><rect x="120" y="247" width="192" height="26"/></clipPath><clipPath id="mx-clip-120-279-192-26-0"><rect x="120" y="279" width="192" height="26"/></clipPath><clipPath id="mx-clip-120-311-192-26-0"><rect x="120" y="311" width="192" height="26"/></clipPath><clipPath id="mx-clip-120-343-211-26-0"><rect x="120" y="343" width="211" height="26"/></clipPath><clipPath id="mx-clip-385-118-82-26-0"><rect x="385" y="118" width="82" height="26"/></clipPath><clipPath id="mx-clip-385-150-92-26-0"><rect x="385" y="150" width="92" height="26"/></clipPath><clipPath id="mx-clip-385-182-82-26-0"><rect x="385" y="182" width="82" height="26"/></clipPath><clipPath id="mx-clip-385-214-92-26-0"><rect x="385" y="214" width="92" height="26"/></clipPath><clipPath id="mx-clip-385-247-82-26-0"><rect x="385" y="247" width="82" height="26"/></clipPath><clipPath id="mx-clip-385-279-92-26-0"><rect x="385" y="279" width="92" height="26"/></clipPath><clipPath id="mx-clip-385-311-99-26-0"><rect x="385" y="311" width="99" height="26"/></clipPath><clipPath id="mx-clip-385-343-102-26-0"><rect x="385" y="343" width="102" height="26"/></clipPath><clipPath id="mx-clip-506-118-147-26-0"><rect x="506" y="118" width="147" height="26"/></clipPath><clipPath id="mx-clip-506-150-147-26-0"><rect x="506" y="150" width="147" height="26"/></clipPath><clipPath id="mx-clip-506-182-147-26-0"><rect x="506" y="182" width="147" height="26"/></clipPath><clipPath id="mx-clip-506-214-147-26-0"><rect x="506" y="214" width="147" height="26"/></clipPath><clipPath id="mx-clip-506-247-102-26-0"><rect x="506" y="247" width="102" height="26"/></clipPath><clipPath id="mx-clip-506-279-138-26-0"><rect x="506" y="279" width="138" height="26"/></clipPath><clipPath id="mx-clip-506-311-137-26-0"><rect x="506" y="311" width="137" height="26"/></clipPath><clipPath id="mx-clip-506-343-128-26-0"><rect x="506" y="343" width="128" height="26"/></clipPath><clipPath id="mx-clip-378-438-158-26-0"><rect x="378" y="438" width="158" height="26"/></clipPath><clipPath id="mx-clip-378-502-122-26-0"><rect x="378" y="502" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-534-122-26-0"><rect x="378" y="534" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-567-122-26-0"><rect x="378" y="567" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-599-152-26-0"><rect x="378" y="599" width="152" height="26"/></clipPath><clipPath id="mx-clip-378-631-122-26-0"><rect x="378" y="631" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-664-122-26-0"><rect x="378" y="664" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-696-122-26-0"><rect x="378" y="696" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-728-122-26-0"><rect x="378" y="728" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-760-122-26-0"><rect x="378" y="760" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-793-122-26-0"><rect x="378" y="793" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-825-122-26-0"><rect x="378" y="825" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-857-122-26-0"><rect x="378" y="857" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-921-122-26-0"><rect x="378" y="921" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-954-122-26-0"><rect x="378" y="954" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-889-122-26-0"><rect x="378" y="889" width="122" height="26"/></clipPath><clipPath id="mx-clip-548-438-117-26-0"><rect x="548" y="438" width="117" height="26"/></clipPath><clipPath id="mx-clip-548-502-144-26-0"><rect x="548" y="502" width="144" height="26"/></clipPath><clipPath id="mx-clip-548-535-142-26-0"><rect x="548" y="535" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-567-142-26-0"><rect x="548" y="567" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-599-122-26-0"><rect x="548" y="599" width="122" height="26"/></clipPath><clipPath id="mx-clip-548-631-142-26-0"><rect x="548" y="631" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-664-142-26-0"><rect x="548" y="664" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-696-142-26-0"><rect x="548" y="696" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-728-142-26-0"><rect x="548" y="728" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-760-142-26-0"><rect x="548" y="760" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-793-142-26-0"><rect x="548" y="793" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-825-142-26-0"><rect x="548" y="825" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-857-142-26-0"><rect x="548" y="857" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-889-142-26-0"><rect x="548" y="889" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-921-142-26-0"><rect x="548" y="921" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-954-142-26-0"><rect x="548" y="954" width="142" height="26"/></clipPath><clipPath id="mx-clip-405-1073-239-20-0"><rect x="405" y="1073" width="239" height="20"/></clipPath><clipPath id="mx-clip-405-1111-258-20-0"><rect x="405" y="1111" width="258" height="20"/></clipPath><clipPath id="mx-clip-745-118-92-26-0"><rect x="745" y="118" width="92" height="26"/></clipPath><clipPath id="mx-clip-745-150-92-26-0"><rect x="745" y="150" width="92" height="26"/></clipPath><clipPath id="mx-clip-745-182-72-26-0"><rect x="745" y="182" width="72" height="26"/></clipPath><clipPath id="mx-clip-745-214-92-26-0"><rect x="745" y="214" width="92" height="26"/></clipPath><clipPath id="mx-clip-745-247-92-26-0"><rect x="745" y="247" width="92" height="26"/></clipPath><clipPath id="mx-clip-745-279-72-26-0"><rect x="745" y="279" width="72" height="26"/></clipPath><clipPath id="mx-clip-745-343-72-26-0"><rect x="745" y="343" width="72" height="26"/></clipPath><clipPath id="mx-clip-834-118-162-26-0"><rect x="834" y="118" width="162" height="26"/></clipPath><clipPath id="mx-clip-834-150-162-26-0"><rect x="834" y="150" width="162" height="26"/></clipPath><clipPath id="mx-clip-834-182-162-26-0"><rect x="834" y="182" width="162" height="26"/></clipPath><clipPath id="mx-clip-834-214-162-26-0"><rect x="834" y="214" width="162" height="26"/></clipPath><clipPath id="mx-clip-834-247-162-26-0"><rect x="834" y="247" width="162" height="26"/></clipPath><clipPath id="mx-clip-834-279-152-26-0"><rect x="834" y="279" width="152" height="26"/></clipPath><clipPath id="mx-clip-834-343-85-26-0"><rect x="834" y="343" width="85" height="26"/></clipPath><clipPath id="mx-clip-745-438-222-26-0"><rect x="745" y="438" width="222" height="26"/></clipPath><clipPath id="mx-clip-745-470-232-26-0"><rect x="745" y="470" width="232" height="26"/></clipPath><clipPath id="mx-clip-745-502-222-26-0"><rect x="745" y="502" width="222" height="26"/></clipPath><clipPath id="mx-clip-745-535-222-26-0"><rect x="745" y="535" width="222" height="26"/></clipPath><clipPath id="mx-clip-745-567-222-26-0"><rect x="745" y="567" width="222" height="26"/></clipPath><clipPath id="mx-clip-1005-438-270-26-0"><rect x="1005" y="438" width="270" height="26"/></clipPath><clipPath id="mx-clip-1005-470-262-26-0"><rect x="1005" y="470" width="262" height="26"/></clipPath><clipPath id="mx-clip-1005-502-262-26-0"><rect x="1005" y="502" width="262" height="26"/></clipPath><clipPath id="mx-clip-1005-534-262-26-0"><rect x="1005" y="534" width="262" height="26"/></clipPath><clipPath id="mx-clip-1005-567-262-26-0"><rect x="1005" y="567" width="262" height="26"/></clipPath><clipPath id="mx-clip-745-664-82-26-0"><rect x="745" y="664" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-696-82-26-0"><rect x="745" y="696" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-728-82-26-0"><rect x="745" y="728" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-760-82-26-0"><rect x="745" y="760" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-825-82-27-0"><rect x="745" y="825" width="82" height="27"/></clipPath><clipPath id="mx-clip-745-857-82-26-0"><rect x="745" y="857" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-889-82-26-0"><rect x="745" y="889" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-922-82-26-0"><rect x="745" y="922" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-954-82-26-0"><rect x="745" y="954" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-986-82-26-0"><rect x="745" y="986" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-1018-82-26-0"><rect x="745" y="1018" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-1051-82-26-0"><rect x="745" y="1051" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-1083-82-26-0"><rect x="745" y="1083" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-1115-98-26-0"><rect x="745" y="1115" width="98" height="26"/></clipPath><clipPath id="mx-clip-845-696-132-26-0"><rect x="845" y="696" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-664-132-26-0"><rect x="845" y="664" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-728-132-26-0"><rect x="845" y="728" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-760-132-26-0"><rect x="845" y="760" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-824-195-28-0"><rect x="845" y="824" width="195" height="28"/></clipPath><clipPath id="mx-clip-845-857-132-26-0"><rect x="845" y="857" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-889-132-26-0"><rect x="845" y="889" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-922-132-26-0"><rect x="845" y="922" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-954-132-26-0"><rect x="845" y="954" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-986-132-26-0"><rect x="845" y="986" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-1019-132-26-0"><rect x="845" y="1019" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-1051-132-26-0"><rect x="845" y="1051" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-1083-132-26-0"><rect x="845" y="1083" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-1115-208-26-0"><rect x="845" y="1115" width="208" height="26"/></clipPath><clipPath id="mx-clip-1105-899-102-26-0"><rect x="1105" y="899" width="102" height="26"/></clipPath><clipPath id="mx-clip-1105-932-102-26-0"><rect x="1105" y="932" width="102" height="26"/></clipPath><clipPath id="mx-clip-1105-964-102-26-0"><rect x="1105" y="964" width="102" height="26"/></clipPath><clipPath id="mx-clip-1105-996-102-26-0"><rect x="1105" y="996" width="102" height="26"/></clipPath><clipPath id="mx-clip-1215-899-132-26-0"><rect x="1215" y="899" width="132" height="26"/></clipPath><clipPath id="mx-clip-1215-932-188-26-0"><rect x="1215" y="932" width="188" height="26"/></clipPath><clipPath id="mx-clip-1215-964-112-26-0"><rect x="1215" y="964" width="112" height="26"/></clipPath><clipPath id="mx-clip-1215-996-112-26-0"><rect x="1215" y="996" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-118-112-26-0"><rect x="1105" y="118" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-150-112-26-0"><rect x="1105" y="150" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-182-112-26-0"><rect x="1105" y="182" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-214-112-26-0"><rect x="1105" y="214" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-247-112-26-0"><rect x="1105" y="247" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-279-112-26-0"><rect x="1105" y="279" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-311-112-26-0"><rect x="1105" y="311" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-343-132-26-0"><rect x="1105" y="343" width="132" height="26"/></clipPath><clipPath id="mx-clip-1245-118-141-26-0"><rect x="1245" y="118" width="141" height="26"/></clipPath><clipPath id="mx-clip-1245-150-141-26-0"><rect x="1245" y="150" width="141" height="26"/></clipPath><clipPath id="mx-clip-1245-182-141-26-0"><rect x="1245" y="182" width="141" height="26"/></clipPath><clipPath id="mx-clip-1245-214-141-26-0"><rect x="1245" y="214" width="141" height="26"/></clipPath><clipPath id="mx-clip-1245-247-141-26-0"><rect x="1245" y="247" width="141" height="26"/></clipPath><clipPath id="mx-clip-1245-279-141-26-0"><rect x="1245" y="279" width="141" height="26"/></clipPath><clipPath id="mx-clip-1245-311-122-26-0"><rect x="1245" y="311" width="122" height="26"/></clipPath><clipPath id="mx-clip-1245-343-132-26-0"><rect x="1245" y="343" width="132" height="26"/></clipPath><clipPath id="mx-clip-1105-663-92-26-0"><rect x="1105" y="663" width="92" height="26"/></clipPath><clipPath id="mx-clip-1105-696-92-26-0"><rect x="1105" y="696" width="92" height="26"/></clipPath><clipPath id="mx-clip-1105-728-92-26-0"><rect x="1105" y="728" width="92" height="26"/></clipPath><clipPath id="mx-clip-1105-760-92-26-0"><rect x="1105" y="760" width="92" height="26"/></clipPath><clipPath id="mx-clip-1105-793-92-26-0"><rect x="1105" y="793" width="92" height="26"/></clipPath><clipPath id="mx-clip-1215-663-112-26-0"><rect x="1215" y="663" width="112" height="26"/></clipPath><clipPath id="mx-clip-1215-696-112-26-0"><rect x="1215" y="696" width="112" height="26"/></clipPath><clipPath id="mx-clip-1215-728-112-26-0"><rect x="1215" y="728" width="112" height="26"/></clipPath><clipPath id="mx-clip-1215-760-112-26-0"><rect x="1215" y="760" width="112" height="26"/></clipPath><clipPath id="mx-clip-1215-793-112-26-0"><rect x="1215" y="793" width="112" height="26"/></clipPath><clipPath id="mx-clip-1084-82-165-26-0"><rect x="1084" y="82" width="165" height="26"/></clipPath><clipPath id="mx-clip-725-82-165-26-0"><rect x="725" y="82" width="165" height="26"/></clipPath><clipPath id="mx-clip-369-82-165-26-0"><rect x="369" y="82" width="165" height="26"/></clipPath><clipPath id="mx-clip-5-82-165-26-0"><rect x="5" y="82" width="165" height="26"/></clipPath><clipPath id="mx-clip-4-403-165-26-0"><rect x="4" y="403" width="165" height="26"/></clipPath><clipPath id="mx-clip-365-403-165-26-0"><rect x="365" y="403" width="165" height="26"/></clipPath><clipPath id="mx-clip-725-403-165-26-0"><rect x="725" y="403" width="165" height="26"/></clipPath><clipPath id="mx-clip-1085-627-165-26-0"><rect x="1085" y="627" width="165" height="26"/></clipPath><clipPath id="mx-clip-725-627-165-26-0"><rect x="725" y="627" width="165" height="26"/></clipPath><clipPath id="mx-clip-178-5-273-59-0"><rect x="178" y="5" width="273" height="59"/></clipPath><clipPath id="mx-clip-165-1115-142-26-0"><rect x="165" y="1115" width="142" height="26"/></clipPath><clipPath id="mx-clip-25-1115-132-26-0"><rect x="25" y="1115" width="132" height="26"/></clipPath><clipPath id="mx-clip-745-311-72-26-0"><rect x="745" y="311" width="72" height="26"/></clipPath><clipPath id="mx-clip-834-311-152-26-0"><rect x="834" y="311" width="152" height="26"/></clipPath><clipPath id="mx-clip-378-470-142-26-0"><rect x="378" y="470" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-470-115-26-0"><rect x="548" y="470" width="115" height="26"/></clipPath><clipPath id="mx-clip-845-793-132-26-0"><rect x="845" y="793" width="132" height="26"/></clipPath><clipPath id="mx-clip-745-792-82-26-0"><rect x="745" y="792" width="82" height="26"/></clipPath><clipPath id="mx-clip-120-118-192-26-0"><rect x="120" y="118" width="192" height="26"/></clipPath><clipPath id="mx-clip-25-118-112-26-0"><rect x="25" y="118" width="112" height="26"/></clipPath><clipPath id="mx-clip-130-787-10-20-0"><rect x="130" y="787" width="10" height="20"/></clipPath><clipPath id="mx-clip-91-147-10-20-0"><rect x="91" y="147" width="10" height="20"/></clipPath><clipPath id="mx-clip-25-438-132-26-0"><rect x="25" y="438" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-470-132-26-0"><rect x="25" y="470" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-502-132-26-0"><rect x="25" y="502" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-535-132-26-0"><rect x="25" y="535" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-567-132-26-0"><rect x="25" y="567" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-599-132-26-0"><rect x="25" y="599" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-631-132-26-0"><rect x="25" y="631" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-664-132-26-0"><rect x="25" y="664" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-696-132-26-0"><rect x="25" y="696" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-728-132-26-0"><rect x="25" y="728" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-760-132-26-0"><rect x="25" y="760" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-793-132-26-0"><rect x="25" y="793" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-825-132-26-0"><rect x="25" y="825" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-857-132-26-0"><rect x="25" y="857" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-889-132-26-0"><rect x="25" y="889" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-922-132-26-0"><rect x="25" y="922" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-954-132-26-0"><rect x="25" y="954" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-986-132-26-0"><rect x="25" y="986" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-1019-132-26-0"><rect x="25" y="1019" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-1051-132-26-0"><rect x="25" y="1051" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-1083-132-26-0"><rect x="25" y="1083" width="132" height="26"/></clipPath><clipPath id="mx-clip-165-438-142-26-0"><rect x="165" y="438" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-470-142-26-0"><rect x="165" y="470" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-502-142-26-0"><rect x="165" y="502" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-535-142-26-0"><rect x="165" y="535" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-567-142-26-0"><rect x="165" y="567" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-599-142-26-0"><rect x="165" y="599" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-631-142-26-0"><rect x="165" y="631" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-664-142-26-0"><rect x="165" y="664" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-696-142-26-0"><rect x="165" y="696" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-728-151-26-0"><rect x="165" y="728" width="151" height="26"/></clipPath><clipPath id="mx-clip-165-760-142-26-0"><rect x="165" y="760" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-954-142-26-0"><rect x="165" y="954" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-825-142-26-0"><rect x="165" y="825" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-857-142-26-0"><rect x="165" y="857" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-889-142-26-0"><rect x="165" y="889" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-922-142-26-0"><rect x="165" y="922" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-986-142-26-0"><rect x="165" y="986" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-793-142-26-0"><rect x="165" y="793" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-1019-168-26-0"><rect x="165" y="1019" width="168" height="26"/></clipPath><clipPath id="mx-clip-165-1051-142-26-0"><rect x="165" y="1051" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-1083-148-26-0"><rect x="165" y="1083" width="148" height="26"/></clipPath><clipPath id="mx-clip-485-16-233-26-0"><rect x="485" y="16" width="233" height="26"/></clipPath><clipPath id="mx-clip-1105-825-92-26-0"><rect x="1105" y="825" width="92" height="26"/></clipPath><clipPath id="mx-clip-1105-858-92-26-0"><rect x="1105" y="858" width="92" height="26"/></clipPath><clipPath id="mx-clip-1215-825-112-26-0"><rect x="1215" y="825" width="112" height="26"/></clipPath><clipPath id="mx-clip-1215-858-112-26-0"><rect x="1215" y="858" width="112" height="26"/></clipPath></defs><g transform="translate(0.5,0.5)"><rect x="7" y="431" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="463" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="527" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="495" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="560" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="592" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="656" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="624" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="689" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="721" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="753" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="785" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="818" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="850" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="882" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="914" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="1108" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="1076" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="1044" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="1011" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="979" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="947" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="431" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="527" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="560" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="592" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="656" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="624" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="495" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="463" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="689" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="721" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="753" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="785" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="818" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="850" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="882" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="914" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="947" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="111" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="143" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="175" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="207" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="239" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="304" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="272" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="336" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="111" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="143" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="175" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="207" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="239" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="272" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="304" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="336" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="111" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="143" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="175" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="207" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="239" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="272" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="304" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="336" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="336" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="304" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="272" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="239" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="207" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="175" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="143" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="111" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="431" width="700" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="463" width="700" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="495" width="700" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="527" width="700" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="560" width="700" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="656" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="689" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="753" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="721" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="785" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="818" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="850" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="882" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="914" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="947" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="1011" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="979" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="1044" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="1076" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="1108" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="656" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="689" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="721" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="753" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="785" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="892" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="924" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="957" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="989" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-150-112-26-0)" font-size="12px"><text x="26.5" y="162.5">Shift+Enter</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-182-112-26-0)" font-size="12px"><text x="26.5" y="194.5">Enter</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-214-112-26-0)" font-size="12px"><text x="26.5" y="226.5">F2 / Enter</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-247-132-26-0)" font-size="12px"><text x="26.5" y="259">F2 / Tab / Esc</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-279-112-26-0)" font-size="12px"><text x="26.5" y="291.5">Ctrl+B / I</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-311-112-26-0)" font-size="12px"><text x="26.5" y="323.5">Ctrl+U</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-343-112-26-0)" font-size="12px"><text x="26.5" y="355.5">Ctrl+. / ,</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-102-241-10-20-0)" font-size="10px"><text x="103.5" y="251.5">1</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-120-150-192-26-0)" font-size="12px"><text x="121.5" y="162.5">New Line in Formatted Labels</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-120-182-202-26-0)" font-size="12px"><text x="121.5" y="194.5">New Paragraph in Formatted Labels</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-120-214-192-26-0)" font-size="12px"><text x="121.5" y="226.5">Start Editing Label of Selected Cell</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-120-247-192-26-0)" font-size="12px"><text x="121.5" y="259">Stop Editing and Apply Value</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-120-279-192-26-0)" font-size="12px"><text x="121.5" y="291.5">Toggle Bold/Italic on Selected Text</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-120-311-192-26-0)" font-size="12px"><text x="121.5" y="323.5">Toggle Underline on Selected Text</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-120-343-211-26-0)" font-size="12px"><text x="121.5" y="355.5">Superscript/Subscript on Selected Text</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-118-82-26-0)" font-size="12px"><text x="386.5" y="130.5">(Shift+)Tab</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-150-92-26-0)" font-size="12px"><text x="386.5" y="162.5">Alt+(Shift+)Tab</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-182-82-26-0)" font-size="12px"><text x="386.5" y="194.5">Shift+Drag</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-214-92-26-0)" font-size="12px"><text x="386.5" y="226.5">Alt+Shift+Drag</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-247-82-26-0)" font-size="12px"><text x="386.5" y="259">Ctrl+(Shift+)A</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-279-92-26-0)" font-size="12px"><text x="386.5" y="291.5">Ctrl+Shift+I / E</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-311-99-26-0)" font-size="12px"><text x="386.5" y="323.5">Ctrl / Shift+Click</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-343-102-26-0)" font-size="12px"><text x="386.5" y="355.5">Alt+Click</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-118-147-26-0)" font-size="12px"><text x="507.5" y="130.5">Select Next / Previous</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-150-147-26-0)" font-size="12px"><text x="507.5" y="162.5">Select Child / Parent</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-182-147-26-0)" font-size="12px"><text x="507.5" y="194.5">Add to Selection</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-214-147-26-0)" font-size="12px"><text x="507.5" y="226.5">Remove from Selection</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-247-102-26-0)" font-size="12px"><text x="507.5" y="259">Select All / None</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-279-138-26-0)" font-size="12px"><text x="507.5" y="291.5">Select Vertices / Edges</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-311-137-26-0)" font-size="12px"><text x="507.5" y="323.5">Toggle Selection State</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-343-128-26-0)" font-size="12px"><text x="507.5" y="355.5">Select Cell Below</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-438-158-26-0)" font-size="12px"><text x="379.5" y="450.5">Alt+Mouse wheel</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-502-122-26-0)" font-size="12px"><text x="379.5" y="514.5">Ctrl+Mouse wheel</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-534-122-26-0)" font-size="12px"><text x="379.5" y="547">Mouse wheel</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-567-122-26-0)" font-size="12px"><text x="379.5" y="579.5">Shift+Mouse wheel</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-599-152-26-0)" font-size="12px"><text x="379.5" y="611.5">Space / Right mouse Drag</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-631-122-26-0)" font-size="12px"><text x="379.5" y="643.5">Ctrl+Shift+Drag</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-664-122-26-0)" font-size="12px"><text x="379.5" y="676">Ctrl+Shift+Connect</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-696-122-26-0)" font-size="12px"><text x="379.5" y="708.5">Home</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-728-122-26-0)" font-size="12px"><text x="379.5" y="740.5">End</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-760-122-26-0)" font-size="12px"><text x="379.5" y="772.5">Ctrl+H</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-793-122-26-0)" font-size="12px"><text x="379.5" y="805">Ctrl+Shift+H</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-825-122-26-0)" font-size="12px"><text x="379.5" y="837.5">Ctrl+J</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-857-122-26-0)" font-size="12px"><text x="379.5" y="869.5">Ctrl+Shift+J</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-921-122-26-0)" font-size="12px"><text x="379.5" y="934">Ctrl + (Numpad)</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-954-122-26-0)" font-size="12px"><text x="379.5" y="966.5">Ctrl - (Numpad)</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-889-122-26-0)" font-size="12px"><text x="379.5" y="901.5">Ctrl+0</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-438-117-26-0)" font-size="12px"><text x="549.5" y="450.5">Canvas Zoom In/Out</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-502-144-26-0)" font-size="12px"><text x="549.5" y="514.5">Screen Zoom In/Out (Mac)</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-535-142-26-0)" font-size="12px"><text x="549.5" y="547">Canvas Vertical Scroll</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-567-142-26-0)" font-size="12px"><text x="549.5" y="579.5">Canvas Horizontal Scroll</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-599-122-26-0)" font-size="12px"><text x="549.5" y="611.5">Pan Canvas</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-631-142-26-0)" font-size="12px"><text x="549.5" y="643.5">Create / Remove Space</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-664-142-26-0)" font-size="12px"><text x="549.5" y="676">Disable Connections</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-696-142-26-0)" font-size="12px"><text x="549.5" y="708.5">Home</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-728-142-26-0)" font-size="12px"><text x="549.5" y="740.5">Refresh</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-760-142-26-0)" font-size="12px"><text x="549.5" y="772.5">Reset View</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-793-142-26-0)" font-size="12px"><text x="549.5" y="805">Fit Window</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-825-142-26-0)" font-size="12px"><text x="549.5" y="837.5">Fit Page</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-857-142-26-0)" font-size="12px"><text x="549.5" y="869.5">Fit Two Pages</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-889-142-26-0)" font-size="12px"><text x="549.5" y="901.5">Custom Zoom</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-921-142-26-0)" font-size="12px"><text x="549.5" y="934">Zoom In</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-954-142-26-0)" font-size="12px"><text x="549.5" y="966.5">Zoom Out</text></g><g fill="#333333" font-family="Helvetica" font-size="12px"><text x="406.5" y="1026.5">Click to connect and clone (ctrl+click to clone,</text><text x="406.5" y="1040.5">shift+click to connect). Drag to connect</text><text x="406.5" y="1054.5">(ctrl+drag to clone).</text></g><image x="382.5" y="1018.5" width="20" height="20" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAaCAYAAACHD21cAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NThDQzc5RTU5NjZGMTFFNTg5NTRDNzQwMTgwNDlEQzQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NThDQzc5RTY5NjZGMTFFNTg5NTRDNzQwMTgwNDlEQzQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1OENDNzlFMzk2NkYxMUU1ODk1NEM3NDAxODA0OURDNCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1OENDNzlFNDk2NkYxMUU1ODk1NEM3NDAxODA0OURDNCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PrHdKTUAAADDSURBVHjanNTBCgFRFIfxMeTZyEKkiBSRxbwREZGiNFZKWSnvY6OUUv6n7ilZaL459XVXv6a5c+cWovQeaSZqFoGJwzpVozzQZq4GeSDCv7AYcJ9Cx0vVpdDxWrUpdLxVLQr/4jjDBpYDblDoeKdqFDpOHRP4jSsU2rzVg8KnqqpbDFFdXck7vlRTXciuOjqT72ioo07k5Nju9dSRnFVHB/J3GBqqPf0fx2pDbwBDK3Ln2MdN1CLraSiFNcn6JJ+PAAMAbnMl1tyDPD8AAAAASUVORK5CYII=" pointer-events="none"/><image x="384.33" y="1108.5" width="15" height="25" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAZAgMAAACTN5xfAAAACVBMVEX///////8AAACO9MPsAAAAAXRSTlMAQObYZgAAAFRJREFUeF5VyjEKgDAQRNGPRSA38AB6JEWsUkggt9hLGDbdlh5Tp7R5DPzBAEK46OI2UcQhdrGZKB/nA13B9Q5hqwEij+akVi/yFDMJFjL8VlUdw1+gHxbW+YsglAAAAABJRU5ErkJggg==" pointer-events="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-405-1073-239-20-0)" font-size="12px"><text x="406.5" y="1086.5">Click to rotate 90° clockwise. Drag to rotate.</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-405-1111-258-20-0)" font-size="12px"><text x="406.5" y="1124.5">Ctrl: Show Dialog, Alt: Origin, Shift: Ignore XML</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-118-92-26-0)" font-size="12px"><text x="746.5" y="130.5">Ctrl+Shift+L</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-150-92-26-0)" font-size="12px"><text x="746.5" y="162.5">Ctrl+Shift+O</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-182-72-26-0)" font-size="12px"><text x="746.5" y="194.5">Ctrl+M</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-214-92-26-0)" font-size="12px"><text x="746.5" y="226.5">Ctrl+Shift+P</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-247-92-26-0)" font-size="12px"><text x="746.5" y="259">Ctrl+Shift+M</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-279-72-26-0)" font-size="12px"><text x="746.5" y="291.5">Rightclick</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-343-72-26-0)" font-size="12px"><text x="746.5" y="355.5">F1</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-834-118-162-26-0)" font-size="12px"><text x="835.5" y="130.5">Toggle Layers Window</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-834-150-162-26-0)" font-size="12px"><text x="835.5" y="162.5">Toggle Outline Window</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-834-182-162-26-0)" font-size="12px"><text x="835.5" y="194.5">Edit Metadata</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-834-214-162-26-0)" font-size="12px"><text x="835.5" y="226.5">Toggle Format Panel</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-834-247-162-26-0)" font-size="12px"><text x="835.5" y="259">Edit Vertex Geometry</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-834-279-152-26-0)" font-size="12px"><text x="835.5" y="291.5">Context Menu</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-834-343-85-26-0)" font-size="12px"><text x="835.5" y="355.5">About</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-438-222-26-0)" font-size="12px"><text x="746.5" y="450.5">Alt+(Shift+)Drag from sidebar</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-470-232-26-0)" font-size="12px"><text x="746.5" y="482.5">Alt+(Shift / Ctrl)+Click on a sidebar item</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-502-222-26-0)" font-size="12px"><text x="746.5" y="514.5">Shift+Click on a sidebar item</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-535-222-26-0)" font-size="12px"><text x="746.5" y="547">Click on a sidebar item</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-567-222-26-0)" font-size="12px"><text x="746.5" y="579.5">Ctrl+Shift+Move Endpoint</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1005-438-270-26-0)" font-size="12px"><text x="1006.5" y="450.5">Disable replace, connect on drop (drop targets)</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1005-470-262-26-0)" font-size="12px"><text x="1006.5" y="482.5">Inserts and connects the selected item</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1005-502-262-26-0)" font-size="12px"><text x="1006.5" y="514.5">Replaces the selected item with the clicked one</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1005-534-262-26-0)" font-size="12px"><text x="1006.5" y="547">Connects unconnected side of selected edge</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1005-567-262-26-0)" font-size="12px"><text x="1006.5" y="579.5">Disables connections</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-664-82-26-0)" font-size="12px"><text x="746.5" y="676">Ctrl+S</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-696-82-26-0)" font-size="12px"><text x="746.5" y="708.5">Ctrl+Shift+S</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-728-82-26-0)" font-size="12px"><text x="746.5" y="740.5">Ctrl+Z</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-760-82-26-0)" font-size="12px"><text x="746.5" y="772.5">Alt+Shift+A</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-825-82-27-0)" font-size="12px"><text x="746.5" y="837">Hold Shift</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-857-82-26-0)" font-size="12px"><text x="746.5" y="869.5">Ctrl+Shift+G</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-889-82-26-0)" font-size="12px"><text x="746.5" y="901.5">Ctrl+P</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-922-82-26-0)" font-size="12px"><text x="746.5" y="934">Ctrl+Y</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-954-82-26-0)" font-size="12px"><text x="746.5" y="966.5">Ctrl+Shift+Z</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-986-82-26-0)" font-size="12px"><text x="746.5" y="998.5">Ctrl+Shift+X</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-1018-82-26-0)" font-size="12px"><text x="746.5" y="1031">Ctrl+K</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-1051-82-26-0)" font-size="12px"><text x="746.5" y="1063.5">Ctrl+Shift+K</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-1083-82-26-0)" font-size="12px"><text x="746.5" y="1095.5">Esc</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-1115-98-26-0)" font-size="12px"><text x="746.5" y="1127.5">Alt+Drag / Drop</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-696-132-26-0)" font-size="12px"><text x="846.5" y="708.5">Save as</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-664-132-26-0)" font-size="12px"><text x="846.5" y="676">Save</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-728-132-26-0)" font-size="12px"><text x="846.5" y="740.5">Undo</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-760-132-26-0)" font-size="12px"><text x="846.5" y="772.5">Connection Arrows</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-824-195-28-0)" font-size="12px"><text x="846.5" y="836.5">Ignores handles under the mouse</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-857-132-26-0)" font-size="12px"><text x="846.5" y="869.5">Toggle grid</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-889-132-26-0)" font-size="12px"><text x="846.5" y="901.5">Print</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-922-132-26-0)" font-size="12px"><text x="846.5" y="934">Redo (Windows)</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-954-132-26-0)" font-size="12px"><text x="846.5" y="966.5">Redo (Linux/Mac)</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-986-132-26-0)" font-size="12px"><text x="846.5" y="998.5">Insert Text</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-1019-132-26-0)" font-size="12px"><text x="846.5" y="1031">Insert Rectangle</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-1051-132-26-0)" font-size="12px"><text x="846.5" y="1063.5">Insert Ellipse</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-1083-132-26-0)" font-size="12px"><text x="846.5" y="1095.5">Cancel Action</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-1115-208-26-0)" font-size="12px"><text x="846.5" y="1127.5">Force Rubberband / Ignore Group</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-899-102-26-0)" font-size="12px"><text x="1106.5" y="911.5">Drag</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-932-102-26-0)" font-size="12px"><text x="1106.5" y="944">Tap and hold</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-964-102-26-0)" font-size="12px"><text x="1106.5" y="976.5">Pinch</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-996-102-26-0)" font-size="12px"><text x="1106.5" y="1008.5">Tap selected cell</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-899-132-26-0)" font-size="12px"><text x="1216.5" y="911.5">Move Cell / Pan Canvas</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-932-188-26-0)" font-size="12px"><text x="1216.5" y="944.5">Toggle Selection / Rubberband</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-964-112-26-0)" font-size="12px"><text x="1216.5" y="976.5">Zoom</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-996-112-26-0)" font-size="12px"><text x="1216.5" y="1008.5">Context Menu</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-118-112-26-0)" font-size="12px"><text x="1106.5" y="130.5">Cursor</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-150-112-26-0)" font-size="12px"><text x="1106.5" y="162.5">Shift+Cursor</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-182-112-26-0)" font-size="12px"><text x="1106.5" y="194.5">Ctrl+Cursor</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-214-112-26-0)" font-size="12px"><text x="1106.5" y="226.5">Ctrl+Shift+Cursor</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-247-112-26-0)" font-size="12px"><text x="1106.5" y="259">Alt+Shift+Cursor</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-279-112-26-0)" font-size="12px"><text x="1106.5" y="291.5">Alt+Cursor</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-311-112-26-0)" font-size="12px"><text x="1106.5" y="323.5">Ctrl+Shift+Pg Up</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-343-132-26-0)" font-size="12px"><text x="1106.5" y="355.5">Ctrl+Shift+Pg Down</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-118-141-26-0)" font-size="12px"><text x="1246.5" y="130.5">Scroll / Move cell (1px)</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-150-141-26-0)" font-size="12px"><text x="1246.5" y="162.5">Move cell (grid size)</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-182-141-26-0)" font-size="12px"><text x="1246.5" y="194.5">Resize cell (1px)</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-214-141-26-0)" font-size="12px"><text x="1246.5" y="226.5">Resize cell (grid size)</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-247-141-26-0)" font-size="12px"><text x="1246.5" y="259">Clone and connect</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-279-141-26-0)" font-size="12px"><text x="1246.5" y="291.5">Scroll Page</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-311-122-26-0)" font-size="12px"><text x="1246.5" y="323.5">Previous Page</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-343-132-26-0)" font-size="12px"><text x="1246.5" y="355.5">Next Page</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-663-92-26-0)" font-size="12px"><text x="1106.5" y="675.5">Ctrl+Shift+R</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-696-92-26-0)" font-size="12px"><text x="1106.5" y="708.5">Ctrl+E</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-728-92-26-0)" font-size="12px"><text x="1106.5" y="740.5">Ctrl+Shift+D</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-760-92-26-0)" font-size="12px"><text x="1106.5" y="772.5">Ctrl+Shift+C</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-793-92-26-0)" font-size="12px"><text x="1106.5" y="805">Ctrl+Shift+V</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-663-112-26-0)" font-size="12px"><text x="1216.5" y="675.5">Clear Default Style</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-696-112-26-0)" font-size="12px"><text x="1216.5" y="708.5">Edit Style</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-728-112-26-0)" font-size="12px"><text x="1216.5" y="740.5">Set as Default Style</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-760-112-26-0)" font-size="12px"><text x="1216.5" y="772.5">Copy Style</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-793-112-26-0)" font-size="12px"><text x="1216.5" y="805">Paste Style</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1084-82-165-26-0)" font-size="14px"><text x="1085.5" y="96.5">CURSOR / PAGE KEYS</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-725-82-165-26-0)" font-size="14px"><text x="726.5" y="96.5">TOOLS</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-369-82-165-26-0)" font-size="14px"><text x="370.5" y="96.5">SELECTION</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-5-82-165-26-0)" font-size="14px"><text x="6.5" y="96.5">LABELS</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-4-403-165-26-0)" font-size="14px"><text x="5.5" y="417.5">CANVAS</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-365-403-165-26-0)" font-size="14px"><text x="366.5" y="417.5">VIEW</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-725-403-165-26-0)" font-size="14px"><text x="726.5" y="417.5">SIDEBAR / CONNECT</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1085-627-165-26-0)" font-size="14px"><text x="1086.5" y="641.5">STYLES</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-725-627-165-26-0)" font-size="14px"><text x="726.5" y="641.5">DOCUMENT</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-178-5-273-59-0)" font-size="30px"><text x="179.5" y="35.5">Keyboard Shortcuts</text></g><image x="365.5" y="1064.5" width="39" height="37" xlink:href="data:image/png;base64,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" preserveAspectRatio="none" pointer-events="none"/><image x="375.5" y="1067.5" width="29" height="31" xlink:href="data:image/png;base64,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" preserveAspectRatio="none" opacity="0.7" pointer-events="none"/><image x="3.5" y="0.5" width="159" height="42" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAe4AAACCCAYAAACAVivDAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDc3MUZCMDdFQzgwMTFFNjkyQ0M4QTZGMTk4QjM2MUYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDc3MUZCMDhFQzgwMTFFNjkyQ0M4QTZGMTk4QjM2MUYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NzcxRkIwNUVDODAxMUU2OTJDQzhBNkYxOThCMzYxRiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NzcxRkIwNkVDODAxMUU2OTJDQzhBNkYxOThCMzYxRiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqCt2j8AACJxSURBVHja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" preserveAspectRatio="none" pointer-events="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-1115-142-26-0)" font-size="12px"><text x="166.5" y="1127.5">Connect to a Fixed Point</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-1115-132-26-0)" font-size="12px"><text x="26.5" y="1127.5">Alt+Connect</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-311-72-26-0)" font-size="12px"><text x="746.5" y="323.5">Ctrl+Click</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-834-311-152-26-0)" font-size="12px"><text x="835.5" y="323.5">Context Menu</text></g><a xlink:href="https://www.draw.io/?url=https%3A%2F%2Fwww.draw.io%2Fshortcuts.svg"><rect x="1111.67" y="1117" width="114" height="18" fill="none" stroke="none"/><g fill="#F08705" font-family="Helvetica" text-decoration="underline" font-size="12px"><text x="1113.17" y="1129.5">Open in draw.io...</text></g></a><rect x="374" y="465" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-470-142-26-0)" font-size="12px"><text x="379.5" y="482.5">Ctrl+Shift+Mouse wheel</text></g><rect x="544" y="465" width="123" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-470-115-26-0)" font-size="12px"><text x="549.5" y="482.5">Canvas Zoom In/Out</text></g><rect x="841" y="787.5" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-793-132-26-0)" font-size="12px"><text x="846.5" y="805">Connection Points</text></g><rect x="741" y="787.5" width="90" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-792-82-26-0)" font-size="12px"><text x="746.5" y="805">Alt+Shift+P</text></g><rect x="116" y="113" width="200" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-120-118-192-26-0)" font-size="12px"><text x="121.5" y="130.5">Insert text or add an edge label</text></g><rect x="21" y="113" width="120" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-118-112-26-0)" font-size="12px"><text x="26.5" y="130.5">Double click</text></g><rect x="130.28" y="786" width="10" height="16" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-130-787-10-20-0)" font-size="10px"><text x="131.78" y="797.5">2</text></g><rect x="1112" y="1083" width="255" height="29" rx="4.35" ry="4.35" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-size="12px"><text x="1113.5" y="1094">Ctrl+Resize for non-recursive group resize</text><text x="1113.5" y="1108">Ctrl+Meta+Resize for centered group resize</text></g><rect x="1105.33" y="1075" width="20" height="10" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-size="10px"><text x="1106.83" y="1086.5">2</text></g><rect x="91" y="146" width="10" height="16" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-91-147-10-20-0)" font-size="10px"><text x="92.5" y="157.5">1</text></g><rect x="1112" y="1044" width="255" height="29" rx="4.35" ry="4.35" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-size="12px"><text x="1113.5" y="1055">Ctrl / Shift+Enter: New Line / Apply in Safari</text><text x="1113.5" y="1069">Ctrl / Shift+Esc: Cancel Editing</text></g><rect x="1105.33" y="1036" width="20" height="10" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-size="10px"><text x="1106.83" y="1047.5">1</text></g><rect x="21" y="433" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-438-132-26-0)" font-size="12px"><text x="26.5" y="450.5">Ctrl+X</text></g><rect x="21" y="465" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-470-132-26-0)" font-size="12px"><text x="26.5" y="482.5">Ctrl+C</text></g><rect x="21" y="497" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-502-132-26-0)" font-size="12px"><text x="26.5" y="514.5">Ctrl+V</text></g><rect x="21" y="529.5" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-535-132-26-0)" font-size="12px"><text x="26.5" y="547">Ctrl+G</text></g><rect x="21" y="562" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-567-132-26-0)" font-size="12px"><text x="26.5" y="579.5">Ctrl+Shift+U</text></g><rect x="21" y="594" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-599-132-26-0)" font-size="12px"><text x="26.5" y="611.5">Ctrl+L / Alt+Shift+L</text></g><rect x="21" y="626" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-631-132-26-0)" font-size="12px"><text x="26.5" y="643.5">Ctrl+Enter / D</text></g><rect x="21" y="658.5" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-664-132-26-0)" font-size="12px"><text x="26.5" y="676">Backspace or Delete</text></g><rect x="21" y="691" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-696-132-26-0)" font-size="12px"><text x="26.5" y="708.5">Ctrl+Delete</text></g><rect x="21" y="723" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-728-132-26-0)" font-size="12px"><text x="26.5" y="740.5">Ctrl+R</text></g><rect x="21" y="755" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-760-132-26-0)" font-size="12px"><text x="26.5" y="772.5">Shift+Resize</text></g><rect x="21" y="787.5" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-793-132-26-0)" font-size="12px"><text x="26.5" y="805">Ctrl / Meta+Resize</text></g><rect x="21" y="820" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-825-132-26-0)" font-size="12px"><text x="26.5" y="837.5">Ctrl+Home</text></g><rect x="21" y="852" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-857-132-26-0)" font-size="12px"><text x="26.5" y="869.5">Ctrl+End</text></g><rect x="21" y="884" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-889-132-26-0)" font-size="12px"><text x="26.5" y="901.5">Ctrl+Shift+Home</text></g><rect x="21" y="916.5" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-922-132-26-0)" font-size="12px"><text x="26.5" y="934">Ctrl+Shift+End</text></g><rect x="21" y="949" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-954-132-26-0)" font-size="12px"><text x="26.5" y="966.5">Ctrl+Shift+B</text></g><rect x="21" y="981" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-986-132-26-0)" font-size="12px"><text x="26.5" y="998.5">Ctrl+Shift+F</text></g><rect x="21" y="1013.5" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-1019-132-26-0)" font-size="12px"><text x="26.5" y="1031">Alt+Shift+C/T</text></g><rect x="21" y="1046" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-1051-132-26-0)" font-size="12px"><text x="26.5" y="1063.5">Ctrl+Shift+Y</text></g><rect x="21" y="1078" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-1083-132-26-0)" font-size="12px"><text x="26.5" y="1095.5">Ctrl / Shift+Drag</text></g><rect x="161" y="433" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-438-142-26-0)" font-size="12px"><text x="166.5" y="450.5">Cut</text></g><rect x="161" y="465" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-470-142-26-0)" font-size="12px"><text x="166.5" y="482.5">Copy</text></g><rect x="161" y="497" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-502-142-26-0)" font-size="12px"><text x="166.5" y="514.5">Paste</text></g><rect x="161" y="529.5" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-535-142-26-0)" font-size="12px"><text x="166.5" y="547">Group</text></g><rect x="161" y="562" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-567-142-26-0)" font-size="12px"><text x="166.5" y="579.5">Ungroup</text></g><rect x="161" y="594" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-599-142-26-0)" font-size="12px"><text x="166.5" y="611.5">Lock/Unlock / Edit Link</text></g><rect x="161" y="626" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-631-142-26-0)" font-size="12px"><text x="166.5" y="643.5">Duplicate</text></g><rect x="161" y="658.5" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-664-142-26-0)" font-size="12px"><text x="166.5" y="676">Delete Selected Cells</text></g><rect x="161" y="691" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-696-142-26-0)" font-size="12px"><text x="166.5" y="708.5">Delete with Connections</text></g><rect x="161" y="723" width="159" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-728-151-26-0)" font-size="12px"><text x="166.5" y="740.5">Turn / Rotate 90° Clockwise</text></g><rect x="161" y="755" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-760-142-26-0)" font-size="12px"><text x="166.5" y="772.5">Maintain Proportions</text></g><rect x="161" y="949" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-954-142-26-0)" font-size="12px"><text x="166.5" y="966.5">Send to Back</text></g><rect x="161" y="820" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-825-142-26-0)" font-size="12px"><text x="166.5" y="837.5">Collapse Container</text></g><rect x="161" y="852" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-857-142-26-0)" font-size="12px"><text x="166.5" y="869.5">Expand Container</text></g><rect x="161" y="884" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-889-142-26-0)" font-size="12px"><text x="166.5" y="901.5">Exit Group</text></g><rect x="161" y="916.5" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-922-142-26-0)" font-size="12px"><text x="166.5" y="934">Enter Group</text></g><rect x="161" y="981" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-986-142-26-0)" font-size="12px"><text x="166.5" y="998.5">Bring to Front</text></g><rect x="161" y="787.5" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-793-142-26-0)" font-size="12px"><text x="166.5" y="805">Centered / Group Resize</text></g><rect x="161" y="1014" width="176" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-1019-168-26-0)" font-size="12px"><text x="166.5" y="1031.5">Clear Waypoints / Edit Tooltip</text></g><rect x="161" y="1046" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-1051-142-26-0)" font-size="12px"><text x="166.5" y="1063.5">Autosize</text></g><rect x="161" y="1078" width="156" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-1083-148-26-0)" font-size="12px"><text x="166.5" y="1095.5">Clone cell/Disconnect edge</text></g><rect x="481" y="10.5" width="241" height="26" fill="none" stroke="none"/><g fill="#777777" font-family="Helvetica" clip-path="url(#mx-clip-485-16-233-26-0)" font-size="18px"><text x="486.5" y="34">cmd instead of ctrl for Mac</text></g><rect x="1087" y="818" width="340" height="30" fill="#ffffff" stroke="none"/><rect x="1087" y="850" width="340" height="31" fill="#ffffff" stroke="none"/><rect x="1101" y="820" width="100" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-825-92-26-0)" font-size="12px"><text x="1106.5" y="837.5">Alt+Shift+X</text></g><rect x="1101" y="852.5" width="100" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-858-92-26-0)" font-size="12px"><text x="1106.5" y="870">Alt+Shift+V</text></g><rect x="1211" y="820" width="120" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-825-112-26-0)" font-size="12px"><text x="1216.5" y="837.5">Copy Size</text></g><rect x="1211" y="852.5" width="120" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-858-112-26-0)" font-size="12px"><text x="1216.5" y="870">Paste Size</text></g></g></svg>
\ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1428px" height="1140px" viewBox="-0.5 -0.5 1428 1140" content="<mxfile modified="2019-01-25T00:41:01.152Z" host="www.draw.io" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36" version="10.1.3-16" etag="-WzVajs1CoFPbegjVir5"><diagram name="Page-1" id="150dc974-5404-6732-309c-fd6db42db779">7L1Zl6JKtwX6a/YY33m4Z9ALj/Si0gmi8EYnoHTSy6+/RHa7qrR27TtOSX43yxzVmEi71mTFmjNWRPyFstkgVm4Zy0UQpn8hUDD8hXJ/IQiModD0H9hyfd1CwtTrhqhKgred/t5gJGP4tvHtuKhNgrB+3fa2qSmKtEnK+ruj/SLPQ7/5bptbVUX//W7HIv3+qqUbhTcbDN9Nb7fuk6CJ37YSOPb3F8swieL3S8PE2wN6rn+OqqLN3y74F4LyLz+vX2fu+8neHquO3aDov9mE8n+hbFUUzeunbGDDFBj33W6vxwk/+fbjxqswb/7NAejrAZ2btuH7Hb/cV3N9N8bL04Rgf+gvlOnjpAmN0vXBt/3k/mlb3GTp9Bs8fTwmacoWaVG9HIsKLz/T9rqpinP4/k1e5CHYucibb3Z+/Zm23z7E23N1YdWEwzeb3h5KDIssbKrrtMv7t9Cbgd8QiGFvT9r/7U8Ue9sn/saV79B13yAUfZz6bytOH94Med+o2J9i1AU+n1HxP8SoOEr+L/Xtz780Mfx/NzHxp5gYWsyH28WfYtQFMp9RyT/EqASEzWdU6k8xKkHOF1PfU9qvb1WUmA+qMPyHWHUBwTNaFflTrIrOyAbgP4VjLYgZ6QD8p5CsBfVvk9Xf0Vr9KSyLfMfgLFj9U4gVSczIAeA/hVmR1IwkAP5TqBWF4J+ls8B/CtOCYWTGMIv8KVQLhsh/y2B/h1n/FK4FQ/iMFPbdin+AWZF/y7Z+Q2z9Y3q0KGpGZeCP6dKi8H+bB/wOq35VtoURn9j7+mW7sX606if2FH7ZXq0bG8/Zq/Vlu7V+tOqs3Vpftl/rxqpz9muhX5Vs3Vh1zn4t9KtyrZu4OmcJBvpVqdZNnjVnQRb6VZnWj1adtQ8W/apM68aqc/bBon8K05q1Dxb9U5jWrH2w6J/CrWbtg0X/FG41ax8s+qdwq1n7YLE/hVtRyL/lVr8hrmJ/CreaVcPG/hRuBf/rXqzfYdU/hVvB+Iz5KvancCuYnFFdwf4UbvVRtzOLVf8UboXg0Pe9WP820fodKcGfQrVQeEYRG/tTqBZCzkkK/hSqhWIzFrfhX5Vq3VRhzZm+4l+Vat1Ydc70Ff+qVOvGqnOmr/hXpVo/WnXW9BX/qlTrxqqfmL7iX5V53Rh5zkQL/6rM60erzkoK8K9KtW6sOmv6+lWpFol8Zvr6VanWjVXnTF+Jr0q1bqw6Z/pKfFWq9aNVZ01f3/vQv75Vf0xf/6WNf0P2SnxV4nVj4zmzV+KrEq8frTpr9kp8VaZ1Y9U5s1fiyzItmPxMs35ZqnVj1lljwFflWjdmnbfB+qpk69asOPy/0Dc//3ZUwW/ItRZflXvdGnlOmrD4quTrxqyzctr3Mbd/gFnnFGAWX5Vw3Zp1TrVw8acwrnuzOCygR1n1T2Fc98ZsPs6qX5Vx/WjVe+OLH2fVr0q4bqyKUt9lsMi/tPHvyGC/Kvu6sfGdGUceh9yvSr5+tCpBkJ/Fvcivyr1+tPGs4+TJr0q9bqw654hu8qsyrxurzjn7APlVideNVanFd1F2xnkfyT+Fhc06ap78U1jYrKPmyT+Fhc06ap78U1jYJ85cTv4pLGzWMfTkn8LC5p0KmvpTiNesU0FTfwrxmnc6eOpPYV7zLl5A/SnUa96lNqivyrZuuhI/UTikvir5ujHyrMoh9VXZ161Z5xS5qK9Kv27NOqciS31VxnVr1h/Ewzkj7VclYDdGpuacef9jaOQfYNd/PUv8b4ArDH1VDnZrV2JGHQZ+L2j4+naF/318/S2GvaVhRpwcm78Qhs+bsLqx8vRc0/UZN02ifNqShkfwK3jgxHdT+m1zUwB715P5kzzavOzDYX9v2b49BdhUTMce06Kffo2TIAinw5mqaNzG9V6uCZxZFknevDwmzkx/pgdnof/F/8KnG2Kn3+G/f5/+gN2ryV/55Es3efFM6NZNH9bNP/gSbDfeHhP+LY7FvvcrTvxqOoqJKH7Xzr775lunv8/L+n9z+i1J/Edn338pvnmD3jY9QfH/FRTk92Vb8G1t3HyguCW1AvgdnAGBnvj4DHwgyC/nsJkPH7fs/Bt8mK73N1Zq/4mUuZGCo/97S35hbC5w3GoMbFNNuzDMByykJyjmBgX5fX80eas6zRc+buWSN4TsnriYGRcovPjvaVZuFZ43XPzvR+QAln1iZGaMvE/A+hmggG/lKXgWBPw3OTcZX3wL/Q1DE9wj9/9gv0l6eO/G+kghkFuP39Ed4N/i4VuhTAn7acMmmbw17ZhP/whFlblNEwZgu+uFaf0MA/8QBqDfAArkPR5/yBa3lBS5N+jl97z3tzLfKyo0t3Kjyi3jJzT+e6BB3irAdwPG74HGHaGycasG8M0gaSYXvCNh+r84Tv8YYRr6rwh5PdkTH7Pi4+MU84SOW03TAD75Fh5uDsBAl2UKbtt62fOJiplRcVeoeCAubmVNs4iiFCQZTJFOgBCkZvKiD8JG/n3YMAEWngCZGSA/ihZzguVW4/wAyy4Pwip9zU6fQPkvAAoKzwqNW4XTaMuwqv0qKSfnC0brvX9+4uO/Ah93FIyPSah+Pz5u9c3/vPek/89L78jT/Q8VsLDFD32rCP69WHVbB0T9IGfBj8LGrcZJpwAYT4R8KkLuaBvwwxoQ5FbTfPc+V7nR0/tze/+OfDFXQPi4+x8DwhMRn4iIe4LFA+PBrdb51vH1d6tAPzEwNwbuyhOzxYVbkfMNE++QkP76qLJ5YmNubJC3KeQD48OtoPmKhTf/vyOCTRP//MTCzFi4Jz58VEH9fizcipiv+cLT+Z/i/Hu1EQ/r+UJuRclXaWnaprwIS28RQavCLinaZ0/oo5Um/IfKiY/381s8vE8g/fvxcEeJfMcDGyegS+MdEK8P+YTDzHDAF79Snh6Ijlsdkg4AJJriQ5NOgD79BMW8oPhhqMe8oLgVILdhNll+2nasiuyJjE9Exs0gjxmBgd4RJd/bEjr9m2wowLdPYMwMDBz9X+wXZdoPyzrfh0PfQ4b14rqw/luLCKLwmXbOjo97egRGPAoQt3rlR23EN40HZEx2fsaKubHwb4Z0YA9rRe7UZn4wktd9mRD44ImKmVFxT6hAHxYhbhXLV5VKLtoahIk+DsNnHe7D1ar3ZSY/VgfCfpVfEg+DxK1w+dah8cTEZ2ICh+6gAH1YLnmrYD7d/6nux+DvmMWdvozHgeGOfPnWlfUExaeCYoH9Yg2pB4LiVrV8nbvpnWG++gOBsjeIPAtkPgEhBPSr0nyYeBhCfjpO/Fkz9ZmQQBe/Si4fFjSwW/HyB0hM1spfaOgTFfOiYgHdm43mcUi4FSuX02mefp/Z74s7C0s90Ou3iiQPRng+nT6v09FZX/Wflkgun56f2/PEryaGfiAOflYe+dH4P/EwOx4o6n/xz8LDT5XG1RMHM+OAfO8rnMfzt+riD5HgiYDZEUB8npaE/WwuyumCYDbK/yhtVrrB/zxBMTMoKIT8NNUZ+9n0k9D/84TEJ0KCmDVH+KmGCD09P3cLQf1qrdTH4QC/Ixy6eeeCgjaneCmHlfLpLGr7lA4fXbJCoD9WK9xRE5BHVS7hd6oc/SoM83tIgP4ju/6zjZgbEXdrFd7nKv39iLgVFT9ig/Xmq+njhJLiOafg/FjA4HsdC/jDWoo7auM7GpZFlYzT8z7x8Il4WNypc30cGm41R80FTcU7Jp7en9X7xL1BVI/LGu8ojFX4Uuz+XqTyPqbqrXblCYd54YDeURQeFwxuZUcuqV8sOgWE18KDZLLQEwZzw+B+8cHjgHCrNz6LDz7B73eLDx7n9VtBcRseq7COn46f2/H3ChAe5/h7Y6nr8GVcZBI+xzjN7v1fFyE8DAvErZAoJAAJ+yQPnuPd5scCKECY0/+38uGr/zU3eiYAc3v/btnB43x/KxS++t7sizcEPHP/2SFAzKkHEXfUwbZuXroNXnsPnu6f1/2/7lR8HBhuxcFvepCeQJgVCP+i1ORxQLjVCd+A8OxP/gQk3KsweZzv79Qivk7R+Tr/mv8+IOltLSo/fZlYCfqP/1qH4v+9M4v8Rb9/P114OjH6uhbkW1Gjf+e8/wPWTH0dB/f3Kd4v+XGG94sFHzu+3Qg4/Ad4VkWbByF4PPgWffdB+83alcg/Of4W3L/B/dj7q/4+7Rp0Z25G5L0a7Fv/v2/7v/n/Vgu8MWkduyX4mGSAJExGrUvgH5Q7JgOwNPP2BRdM7+JfKP36KyKUYA0zNrEYddtDazEq6OlHMXYxv4vARwz847K0Pf3HLjkE9sEG8bAV9sut6SEOFCDC1dEZxhGpxDGYlbcXcsdapfZ+i/t+mmrggOuqtIQY2vOwrGZK5xl4/Lo/jnkH+vWHm6itEC6Z2EaaNGCZxNkHpXeCksWiBQtqJUzpcFBijZYi83CvI1bh7mLCzywzPOM7Gy0re0zP0okEU1pzA6bmceOLcBqIfBSKcO3lMhFOZ5jurLOzHQF+9/YWZBtkIi0jYtqnD8Saks7C2UNWqSTEyo5lOA+dPnO7Vmbhk8zZvcTZw+bEjwrno8q1j+QTPcgs2csJOcgJNChjMcqnopdZOpLe/56wSFuuzs6pNLa8/XE/frbNNGNVBMttryZkF6ABusn9cZNRV+dKDqp5xjcjfd2M0nVzmI5P4DHc45B9iJrp+NM35+Wdg3Lys3R6hrTzEubqiDZh71ddcNApKZH+tsH0nN9ec9rWvtmktRGq2aBx7LPk9Ix0N1kd8/ZD64/l5ClGMU0ocZdbyOeKboPg032+2mrz4lUKsw90JxtYv0HgZnP9+5o+ujWcvU1JWQwFS5rYXKnWv36g4OSB91EU+s3IT3amRmuZ9o5BGdMzTfe/OgFEOYk8+WnyKVdyk9fjQKSulkh13uRT/fX+o50Yd9P20RWpXuIVUzEYxd4rpZdvOx+JXo/nYUU9p+10T7GXKamxm+wDsMLipbvXCcWMOX308a25w5WTI8qmIChmhCvmllNGvZfNqFe4lNdH/ZvzTddHrcaZfPPN+c7fn8/+5fm0hCaBf8wdRGxF6+oenNThnetkn+jNhoS7x8dAFCZfWavt9Oxg/02WTm9HAau8Mp0zFeTxjChne5B3O1jlzrDCy6jC0YPK0ZC6m67LSh/nm3xwCvZwOtnom/Ntvzufwv3yfB249w16B4sAoyz1gsfdeSu+7vf6vr28f+b0PUdhviicXMSCJNFqwZvuJ9L03mvVMlibOxAgOGO3Zazlyc0Vk2EjYStIx0EOTefKr88JY2wHr9/yjpgogrPeG3lnE+pu1xH5Ikkdd4Ph1ME6dISL+6Cp2xedHrqGcxEKcdWPpVWMo+5cMDE0OLZb0La/otgB6qwy4IZ9tSuDzWBt9Gq6J+x04pjS5ryUK8J1cBG4Ul1uNexk1DukGq2IXOeXS+lxghAc/POiS7fmwU9a9XQxF0hSFNDiPEGhpQJjmwvWcmqkhBUqMpeLdoSOA1JyXs9w6ykSIHKgwOymco1EUPycWK2mW59CqkxPb1UKN1dO48iX8GnsLHW7xllbkkCT8PM28nc0iAvihwYRvU2IkHv5EPQ72sPbXpLZ2sMXWzt0JIP20FTw4Qg2sBYjW/zhpcP+xz/gCFalZK1+cdNha5ipTOuqZzvgjML0zvHCLhRw63ri1xFH61tF1LYGjZI0Q6z4fb07R1FDxRuR84I0xs1yscU5bWRofo0RqoTsfD0OKtFZAxjlNIwylI7Hl55PThNY3LOVTNuvAievhNOGtNJd0E/eYqLl4O2n/+06Sl9ujVltdzhfnVdRFL1A6OEoWvwvif7988Pcth8L2nyXZN/BFP47MHWnivvbXPiFxICkmoJABgxYC0hv/XOf1OH3CfL7zrd57++lZdlEsMCZ75Kuf5swPyQ7Ju9kx+9Tbfz2aLD4yYQNKP0XWM8CdJhAXOKmRfRCeSAwe9zLd2qVRGDZb/av93UvXjZLUV5UwNMHefOnevBjzZhvPYjf4Te/x4O3HR4/jLV7tCP+/61w/I6RFOT7PIsfqw9gv5z682Gr1Cxue0F+AIT6BMTcgMB/2SP+ODz8dHoG+YmDuXFwZ4VDcqaVzBa/nJ5Be+JhZjz8i4UGHhcXfjo9w8fkj088zI2Hf7G+wOMAcdtT8uIC/7mi2WdAgfzVzI7kw4Bw22UiwE8AzAwAFId+MWHH4wBwqxF+LCyxca9hBQbbPQsqZ+k9p97VhH9a2W7xMCTcKnsfSFDbJk1e+sqfUPgcKPzAKu/oTo9DBnmrHPLBS7WlHDbuS8fAEw8z44Ekfyk7PQ4PtzrkR6QQiipzX4uw8+c08rPj4l+wzMfB4laNfAsT1uvzIJD47XmfuJgRFxPb/HZyyHtjtx8HjDuy5PS8r6sny2HePuEwNxx+yTgft5YAeWehKq94FufODoJ765NR6KO8fitBvi5P9p93CfJ/3ioD3pbErZMg9NzqiYp/QMUjtAgMw3+hRSAPm+SDvJUlvwfJ21QfQLz+H7DCxFvlycvSl+63oIGSJnyOAJodOwviF9kngj0MOz9f2eoJk/8umODQ96ux35l08IEx5s5ctE98/HfhA8wz9w0+7tRYPQ4ev1zpSn6dZYrPgxdTP9ExNzp+WClvTnRQt0ro39NOVWGZvsw8Bgol/x5r9hJVgmryIwL95+3/xq2isKn/59uiyukyLxWVoMPFb6sXi70D64mxx1IjGKJusuAbWGHwoxbqpW4FVSmvp7sHWHgbq/iKJ7ChiQHa6pc1vsPgo5GC/vNLHD2nz50fSO897PMA6VaC3b5GpX8CTp9Md/b+9UsJyMu3L4Nfn3iZFy8/5sZ36PfDdFrqrk77Hnba/C0GvYADpMgAI8fvERUGz6l3PgE0P6wofYdPPQ40t3LuW0pU/91sPafi/BRY/JAp3xl6+DhY/Lzk9AmEfwDCIxgTmJMV+0dZjnoYDH65PNgTDnPDYQGhvyDQj4PDz1YHY5wnDOaGAfr9yLVbnvI4GNxqsK/9PO9BgX6iYW40EMSnoeFWcl0WafC3MPaEwqxQINF7y7zcdf/i/+5+BLrVVH9IEcQnBOaGAPEr5vCoaIC8X+sWDs8xi7PDgCI+KVNE3oWvWxjYTxjMDAMwn+c/ryz+OBj8dET7e+PwJA6zw+HOpJ6PA8Avh7IfngCYGwAU+os+isfB4aey4voJg5lhAGZ3/cU8z4/DwS91xSce5scDPicCbqVEvvafTp/d6ST1i6Ekj4PAz2TEt5EEr8Xi3EvJ1RMW88ICRm6zAhh6UN0LAt1KiIb7Uqb5XBj28eOKbvqXkF+NQX3UKIAJYj8BwhMDs2LgZRnQf5QMHoiBWwVxlwfFEwNzxwEU/9VMiI/DwB358KMUadpOV1XRP5uG2SHx6+UiHweJWylR+iiUjt08eK1YAyuuVH+9V8NmRVs/W4+5YUKiv5rF4kMY/g4mv2ERmQmANzD5mNwkqqbdnmCYGQw/9EXemRPrcTHjVm7Uquegr08AwQ89kXfI5eNAcGeyzBDkk9B/XmdDq5/jaubGw0uX5JwYuFUb3zGwSfJ2mE4gu/4TB7Pj4N4Cg49Dwa3g+DpOb9pmvkxn9HT/vO6n7syD+Dj336qMH+7fTtTSzaPnWN3ZMfDSDYl/Um6A3OqNH5Dg0zQpn+zxEwCBL76jj3MmCh+3/43w5OY+mAoTot/UpyceZsbDew/kPAi4lR6FogLzQkDb1vPCynsd0f/aO/mxipZYFe2zn3J2bNzrp0QeNT4fQW41yNe+6qfbf+r239E9DcM/DI2l7k2ACs+zPA+C3JEYXTAtzGtgiF8GvzwRMTMi0LuKwmyYuKM0JrkfP4EwOxAWdySF2WBwqzW+hoZv5tjwX455wmJeWMD3hr/Mh4tb/fFtHrq3PV+zSc0FndsT4eiedU+Pn28Dhf5FUvE4nvEPK/cYL9HitdThFRnfUo8nLmbGBXrbgf0xM8bvx8WtSukUxXMW0/ndfi+RQB4VDtBbJfK5yMLnAuB+yvA4BNyRHtuqnp776fm5k8V7K7chM+WK6K0A+TET+hMPn4MHnPjlcl2zweOnQ6qf6PgkdPy4mNsnguOXw62fIPkckEybflU6PRtIfraWzxMjn4yRH1Z5+0yM/Gwpnyc2Pgkb5B1xajY0/HTex/eQoYEBu7tnB/jsuEBh8nsM3IXJo3BxZzGeO7jgiv5ZNjM/MjDql6TlYeo2eqtiGn5VfNPX8db/8dobBv0HLodn+fXjJa4f62fuCR0Y9SBQYLca5w8oeB2hBdXJ+Fzs5BPQgN9OG/tANNzqndsQeP4ZFT4bB+QdCeNxOLjVO29w8IwLn4mHj3PMg4c7Amf6spjR92tpPXEwOw6APjEnEm7VzI8kUnOfKxV9AgLuqRCP8/+94dthlxRt/UTAJyEAhW9niIMftWAngt3KkMprScTT+5/ifXzOoTjYL2XH7RMC/wCBh8hKxOIOBKCHQeCnCiP/dP3crl/cq4d6nOtvJcQf3n7uCYHZIfDDqlN3koGHAQK/lQ9/LG54AmJ2QPyw8NSsgLhTMfk9IKwnIGYHBEV9V8RwRzB4HCBupUQ2Dd1q2sSFR7cFFQzQ69M/cfFo6gD9i7zxYT3T+K2IyAfJ0/2f5v67uePj3H9HOQyb17M+Y8HngwG9W1//KDDcWXSmKK9P93+a+4k7/cyPc/+thqhNRgif/v80/4MUcU4E3NERd1tD3f71MfCaFvnpvzVvP9cz/2fG8PY76J6ffgW3+VtIxAL9DiH3ChAW96aM/i3wuDMSW1U3TyR8AhJIGPtEINwpWuQ3PGtKqvIEw/xgwN7fzM8AA3GrNm5ohn+Ghc9AAvWJUYG4ozLSikU/gfAZQPg+T8DgO6LS45BwKy9aEr9/4uAzmgbsM4Fwqy4aEscz9N+MglUVZcocntj4/BxyZmzckR5Ne8M/m4vPIZY/9EK8FzTNg4Vb5ZFT2Z3MK8/A8F8QGGYGw60KtQ6vXuFWAZAi48lmfts85/37ZznyO2Cg0O8BxodvPobF3eBiAs8tLt4Fg/8bLm7lpxsM1LFbgo9JBspe//bqxvXCVCvq5GWyQJTziqYpsmmHFHzBuP45qoo2D76x6/Hl56fIcOsSjK1AuWMyhNMtMi+XpN+3Qu9bps/BhIS/UPr1V0Qo82jydmIx6raH1mJU0NOPYuxifhdNnzgb/A6xNPifY05+t58+yOt9yukws9IhOdotV52TpbWj07QhZZbVB/aOPO/ztDXOK06nL4LEeshqd9luOANhI8FktueIZY29GLNMsh1s60DXF+EyFpcibjY2XSvJYPPhSBV6sq6TxcWOtNTcrmhr8riAot1RpUgw5Z4wwiNejtOHnKtHtO9pouH92ow2sE5He1yvEv2sODwuG5lr5JHEYxItNjQX+etDEqmngqWZlNBgLTyQ3v6s4pjBodRBm854HCxlOflcWDM6u4pPibUCtSmZjvY8rVyVNe6d6TNXxHk1il6aJFKmrwJ2r0uSvifjoY1Xi+tSvPBnv/DUVbJn2JxeMyx+oM+EzhbXw3kgF6cSkqZruLsiCrbmNWZVSUyWCE5HmIblhLRFnNzEAhvVnSSjzA7cz9QMCT1yvNQ8qa5QyF6jyjbhL/qOrVSsHkmN7IbuulsYo73rhx65nGlDSDRtbxHoqOaxf75OyS4jSYViSmu7i5Znp2HzehWeTrVQVxymH1vtwJ43cDSZlGdLjcd1VTZEftWu6kQ6Md3EnyagSrpSGz2VJb688oNyuG7IxDTt3qOK6R5T0j1wNa86krBZnpVkfx21hNad6VCPOYzIWZ52Iuiz4BellCPTX1NK+D2NJjG1kRGNYTLcF+jUO58lmJ+eIOc0Emca6SyZwlok+2Q/XnbgUeyU30x3hQp8ldCtyZ33GVml682p1J2RSSFCFtXNCut9YT1dUmPZLktANepy+me/OmPKyGTQkliqbENADF5hYihcOyvjuWBDIuvl0Hnnvs6ykfGXWDMWUzqAHriWk6+4e9VFlB5EmrElmifjyOgPpq7bupIfD0Etd86OlDCaXhl0QGIcW4jby/aiRtt+79dregqEgl7rS6gVhsguQ61Opvedme5O4PbtwaRdvQw7eSeNK2ZFmo7EDOceGN+xy22hCgUb0jbcl+AY/7o8bJTT+QgAUmZqyamZ1Mt2ZG+jPkZaSWxBYGtPuyNdjlQ9VtFyccp5Aq+pwtF0I4/XLW8VEnX1Vsl1B9bXYn3WdzmljgaHYxewOl1n7AkksmCf5LUQ3P5F6HKJ9+jp+Tip30VaxyBrXAd7wgfkwIkoUuCE1NUG763abGJbQl0jGqeYNSxcl50fVdQBatLNYMREJ4jtApeno4X91MIKh1N/OGIn3LPttu/hwgiGBE84K2psUcprs6rZ3PFPxTEfTpowhbm1cNGic59TLHDuehgyee0CsMKbpVv77XBc0BqubUYf+H4Tm1agCXJiMsezHGmRV8N5fT74O0N1xgJXfSZ8DTrrKtwF+kLMJWzYoKiOlz3Xb6TlmhJJgmuu3CnfsfryhUcK5v44nV04LxaCTvve9Hm5Xi3T9dKYckuBp2nhIqtWMYVeRsYCPKVH5cpkC1qcvk04m6PV7RSqptc260/FBuOuVsSkkZJGdHLmyz293Ec0HLFUpAaFQmEMWzA6GilcpG0Kee/TNRkt1ZRe9KwW0hTBy3osmTrPXZITHkVpEVFYMWDSBpdkZs0MLDOh82KcikgXTcnb28lOyg4Sk+nerjiQp3jgzEQ+nC3vvOwknthtQqmkttx6nyCXaOsWe3V7QnWa0/3TTs0LNS249DI95HIDLa1i5RWHaidoBX7c7pEImCOqmkFns+TE9zuyZ0iSsfeMsT+trZjP+tYq1paNH+zjpQeNVHv29lPIOR1QNjGjAAQQSfU3hIgdeUyYWmKBmezKrDakjmJe1Ysa1h37KVwLkXaMD3QBR8aGzkNmacdSxgeyJOsnMc43rOmvtj13IQKuXi2kcilJQmGi4dI1rquMF/1tOkgor5O6OQheEqL8IV6vSn662BWcPtOLc+TvEqLMNkbYrALonBsBzC+Jy3p9sS+bpGLWyfnSJ7sk3a2to1OgKxb3qrWPT68XU0eec24H4ZRsxiunra7keXHVDmcAWF31Y0o4IyuFdJf8zpQK9nqq1lpd4tdIW4fUzrIOisXB1oqI1lYYVlUqU5dlyVB2flkRxR62F+viTGTXy2lz2bRFSZzQi0oVyqqwRmDEvSm3UzaiWJC/0JfNFI6ZS7O0tpdsgA/xhaT0CyxWu+rSUlYSVnuiWF54ytrAdGeN4PaPZ4TaY2ptuwcGapliVPYFNOU7/i48WbjaEq7ulE7WtNZ2PIGgJYzbwF2xUFXt6SZP3S2cu40MV00gDa2ZHbft0RAoBoV8EBdVz10jjel4KqQurGV7DCoFOWHEfpxSW2YFk7l+CbCxbDhpiIc9PdbxaSPavt0M2TGwYYhGTbw9N9CUKjBNOOWCAhIp0EY7TBSC6Sxiheogou3RLKDKnOiPFwBOo4MnBwg7X5xCZtDrBifqrsf5mBOAtlpftjwVndrEkY2YP/rKbicv+uHE7W3P41zSpuLCEbGdm9joXsShgTg5majVnjMknXLCY1S0WAXEAZh3LrVySkuyXJd9P0TOaXmQffIaQr1i+orsuJ5nrpppZ4a81mO4UdgaUjMOupZ4vMjWoVONTqeAZxjkDW9743JKJqukSw4OVCuGvcn3dZ1fI3wPW+7Gki6NexmO+7BxaqLfVG7bLpWT7ml47WfQxcsWDr/vp1vzTKVRmgRGLiukyn227Sdfavuqc0C7CaGIeVRLqYdy9eyKZnrlatWSfDoer0u38PNiSE7S2bZOlyKgDhdoCE9nyGiWChgmzBDt6ZKpewxcSGTOuGeq64At0UvekDgypmPOtqG3ORkHfhXgm3zXeqRnA/yIGmKO2fR8QeCNldQEInyl2kWGGc10Lrg9hNh+keStSKFdKMaL7bKuKe8UGUdaplZjjoQcfvU7ZU0dq7MSHNFoEWYBvuhAEiE328VmuWhO3qbVMtACLR280bIrCOgKaaEXBGQuOXE+DhO1FIwFkYHgBFpb7UhMEV8ge86LpCvd6WJHDxC3soUlDd6UvhPicb8O2XrN6cVqHeEZ22DaKeJ8UdPJgYXO6kVHS/awU/LYwdYSZggxAcktKSN2rjlWeA39cHHCi34hQphy6tEjr2ET2cFZPuXBzcZAxPS664XUydPGUISzZ22nJC9ojOqy87ZwwC+g5aBOAVzKLX4sTktxnW1RU+BbLd+6CxDRHOogcj45ZQak6Q11dxIZbc9f9dRit6QRDZsN39TZqcQwEEA26UqSJz+vAjk549Ihzf122nzG+LRa5ZYclLCvaTkiqDXIUCy5NU97OzsdYDAQxIRdZyhjWJ6S0HMZwhtCtUTfOOPd+tTANlJoKWkFVxQFIZ4JGzw/DMdjDHJyNSi1LE1dA/jhGKwO5cEHt0+baZRhsbGIGTCywJ7CgbIZiqN8kYcg0xUnsc7LOt1P2fFaS7wtn7nrEcKQHIeoTgjaTUJajWphuIuuiJUqGrm14tWz5aZErXBUenA493pAthqZj+O6k0CSc05s34yPMnim3RHZZ6jfpzJOHmLGJJWoPQ4OaqnKFIWKjWOCbJUflTMi4JmnVsGQdxlZ5OeAhLR8AeP03mFxTLzE9uQMLCA3/PS+CsPZGg3qMj3h9QCBWvkyafarFenAAlq0yEa2D+zgoxtUcOp8sYKHVXh1LWOgNleoI1J0vT8c8wMRBEhHk52RnnZdAANXhbo1xPuTsHAskC6h4cF1bCvd7DuxAs2Bc7LGwM8vHRXIe1QdjvyIp9V+13hr2AvrBG72TQODdNXOUdAQ16K4H/aMoPuIOKXvdbfkVg2REXhHgTAGiJVdGWkgd3nlr5tgEQrepS2bdVGj0MLPq5DyoSN7unhHbUlUSJb1NWrmKYwkhz2ysFH3WB3W3aUpT60Y4IpVNJNZmIWroml3XRDR8XBYLI9Op5I0tlsW+nKlB0ctXVzB46Ictju6p7H2DycQgf36JGIAQ1OGuZO43eii5YXxrCbYpXDlH8Xlvq0poA6DCFGHhYbacMY5u6Xi413X8/jO3Ca2aDJGsDCxVAscStUoNFTX6NA72cpBiDA/sCByWCPW6l2uk8RxSuoLNc8ZHNpwW9DYb4Yrjh/WF2qxdHG8mJpyVzkcXDL0Dk5VVXl2vCDt4Klpl1s1geXVsQk0tE8I/4hlL2ZlvHSPi+gehKQlusAXDqCKQVO1ZAsiWOsE8MIHVLl7H4bF6OSKg+rQNfvLEZnuTlsdm44kINXbB92wglZyZSLqUctOeVNRxCpH9yi83BlhXR+RxbVTLwKJtWJVsm1ahuYhd0m+AoyAuC7AywACo3ZyqeYQTx/x66sVu+mNM8OxCg0FkzsBJV5YbVCBI0H+rKD2FL/BCZZgVmVmgWkrQBpgDfwy/cU1sSQOWgJyvoACJLIE734IHIwsiSnSCAMALxUKNFWzdMZq8RRQWVEcin1c0B7qMzrfsg7m7+kpo0yX/hgb3Bo0TTobgdSdT48+GnsRU8v1MdJOOM2btEyWGcL2cVmvAdTpKMR7ShfwY6wkJ0Nhgrw0yEu34XUtmp6Mk9lI0LWeOa56njuWhchsxjpCDjWdy+UWjfJUArfJTZ7zfYJwNz1IL64VyQDqsuqupSjoRx0oMCufjx2/n4hDsqMnqpnSu9RYaeAr0XOtrR0IsWJy5clDoNbebzs727WhCPf06w8ZciXmHZjGOWxjaRk3noiPah5RUjY1E8gqVbPp9wxOA5HvpITB1Dxu/OW20oyVbVp0pCPU1TFoeHPSW5kFcY9N6Ejihqsj2sTuvBX/Puvq7JygxF1uIZ8rug0aoMEVRyeu3PmZ38nmGVcNspcT8ionMDi+8dG0DUQB2+zxUbp+nJ39+wpb0RptdFVO91R6CBb52TZTMyHxUAvSDCn52P/97/vdZBbm7u3pOWMoWNLEZsoX/CseOyKVOAYO7NU5h7h0EnLYnOhOOk1t7zfn0cSX44mdmGLOfrC3Yto40126e6rVTjtIY6k0FNNMTZkyFK16z0/3t7daH0k775/P5fxwruvNuXb3zzXtd88mHz7puxfrpCt+Ox017f3qTfHFu2Cv88BSmQRw4bu7rWa9QESi339EoPyx4B/a/fidOuj7WkmBDFjsUl63tgUTDrZpxLW9jUE7OCWd+ZUX10G/EzHLuDZkIZw2fFStTKE0rLWV6t45XellKIwWXew9VRd2B6ferMfdciFu7ZEcV69NROss0ODiLmQtJLwsFBF0NOEpMRzzo9qBF36hqUD9OyYRkpEIBwg6Xeh79nhSdpENAoMs07rDjhtENyU9VaWlNGXPtm74sg3kQpy0c4Xb7qLp03E1Ud8k7phu6fYFzUrEKccRX4/lLo3ORK5DWz4WXggMoAc0O0Q9c4YRlsVIjRlGH1UkEwLx6ro3Weq4hyO6WLGHM9pORt3B52SNCLFtbpZD7fatl63GGp/c4+7ZrNa4HvDhLSAEXA5CHN05BtAJmAOn7zgwJ58QYp2HCmgABaiIoULsH2QT+PvUVUTYmRDF0gt1aLY7i49aze/xMYgcKTUrtwMJQL1o8cTZW4KjJRXtm/wgn+Bu05OGTpuk58P4EESMBs5jijrPbAyos9FmIYJoXRCV4FYCrEDBxO+5YkpJrlGhi1S3QcqL2zJI6y4LgV7mh+N1yZNT8NxuFekkXfkiXMb9KguW+o4pZKbx9vBVRpV0W7qHdCH29ZpVqGt5MdKJy+5i6apw5/M6y7YDiMUsWk/tpJxuIa4oka66EElByNzJRhRXLC96NjWv3ZbQtpLJj0KT7TzQSKDYcJpM7KQpZ4SLboG2gTxOuVQuDL6FR90oW6Ytbtd790Ark6tONGilrpQIBd6euWjbhO08YTcl+ExOsMWFjvZJf5hCGGQvmYEP0XZxXTq50wfU8YDaSFOyLlJX7CY5l7xhS1dAkBDqqAtMnBZkmfu5ZIhD7fEZAwfmoQ5O9ZRmLsCLeNxMkOenKLipG8+AMPVwFMI179EWtKVXUUWofmijGhlX2lFHlWgjIq6yU9teAfi0RSbRJXlqPA78MNYgK8YONKFvppfMOMSYytD62rZ32dQI7qqokjUAmeWpXoTo6mi4K9PpDSepI3exOF+Ycx/41NJqE3ohiFbq7AuZ2k0UpN1bEH45QaVqxs5J5aApC27OMbtY9dqZXFH+db03bNZdTlQ43fIIR+reRqiUjbq3Gk6HVBu0cS7DZqrA8NEUkQg2soSESDgzZQqmPizNQFiZO2TXoGQHIkBvro7u4RiZfOR0h4LgTxcHdaZmfphua2fsJdBC6PsLoD32mYFOowE1Gx1SprYerz3WOa12AcXRgDHu11c/36KFx0NKeclJ6yKl24lGDXiuE/0WiEfaaSGSGtsvWHzClKMfUqw9XzTlAvFTs6aB/KresHpCnrhVr2RQ0J7bzD5YcCCvOqUuXZlsJmoSkSA4vgqAIKU8UwE2bVFrY7dlLBXZq7v6vNsaggkfusXlhNHQuLMiZcvwS1kReIff9XwKRbpE8kdshdlrdwPCQe8rjLkb/LIXd6ag72h58P2wAfk6DDhHM8acrUBEP0DNDqR/ZdUSl5SggikLXFRt18jH5TDEBiquB5FeMzTTqwyCd95CvNbFZgtZgjyZP269szP4B+EqV+tzmjswsh568QJHHfBgb3AsZjLQwQnGnCRzm7iCWaUx6SqfCHWsUzXg+i1Xc3nDUk65nZK4zusTQc9B63CsPRDSzDzDW0ffCSydl1iocDaStHGhsJeEldddmZ37jIRY43ya3kLihTgfzDg8TJl9grdA6xeOI+Xu04ueO4hisDrbjqhiMyZBTnkLl3I0rupnUds72TadwmW4yRajeiy2+pl1TUPnSilZBt7JnziVP2gmovS+wFDaAZZMH7VIWtq6vqnsZB+D9N3SJ0V+d44BvESm9nSkqdZouQhh4Xi4kmoNHi1m5UAEjoh2gFMcUYo6HVHyCKDFDf4mDjIHOU70ey/EmL9kdwOwxwmzE95UZI5dO55eZmI2NotwSR0teMP2dSIRcGPusHy3sD3O3m6xZXJgjbXB6eyJarkFyIg9kYnss4ZPb5lSeAi1NHeQkpdEyLB9voJ89izYvVk78HA6ZBMf1Se7rdEADjiaBMFAMCGBhhRuH1/c8yo4bKHL+toJmlfyCkaop9qIT/Z0xhUSJCHRVAayS6dkiWiLdSCVTr/m+mw3PcNkLDHQZCCK7NZL3urRYAzQvTD6gzw1NmoCyL/iMdeLL/inzRVXxjYfrn60ZsklhYdmLg5ksJ3agFTaDPu9EBWWKThiLkU6Kdr7y1XeKNOb0a5xxmMJyDlwPST7UzyOHCRYFhpgBe6+qXQEbjbupbr01vrkW010yZWiXMobX2NUenkQp8yoA2KgBrDVTDyWgqJwgvzgYyAK4OE+beVqV3qKsN3tirVx3spr+0iTICPvZL+JSKDg44Lj9ms9GlTBhjvQ9GsL0IyDdH5QBLkCHY2tO5lyo+GxDVtntlIvUIa06629brP9iFxY75gGCuGM54FidtZSNk5A2WB9X00JCbRKNI8eVuudfbQOV3Z/MExLcjLf8UtoiCO7WJSVzSoH92rDFQ2rZnKorn5MSrGxe2WEQcNvqW0FONfikvVIP1yHWli6e2/dHUD/hF2N5daS6UAKlOoSK1kMn4LAEdQo6TATX15BBAWU0U5tEIryoXzh0GYFd5dsXWKgfaVAr/nFigQt3JITS8p7EewFk2pZGGcgVUSMgVr8aYt1GH7a8juwRBfD5MtdDG8L8rhRRQeKBZk61u5g8ccdoYFbpp1rbJ73pK1W9UtayqeCeTZaPWPZfyg8+C1litT3hQXQ4nbo2/tcyd9WFrzPuP5/qyy4Hc/wFSsLBFBRwCTsC+9gBHQhe4B1uGK62y+3trnrCRuhms0bP90ABvPGTzSOwnxROLmIBUniKnWQtNWMTdcuyEQS0/PEWQ/KDurNA8M5+7g0luXVsRTCnBr+MGtO6l5PtHFiRsuIABx54liQbTCYtx9afyyx6fhXfmiW4PcXzry5StEbh4bcEUr2PKxLvDLFk12kGNjEi+lEi4pIWwL2Wxpb3o6mc9deLhOAjU3nLILltlcTspuSSXST++Mmm3jclRzUiRFvRvq6mbjv5jAdn8BjuMch+xA10/GnN05KvrC68zb1EeUKOlwAb5RerxfbGTWFdSiRpnsAHPH92i/c9ls2juDjh00zpfOMV865GfmJ15NvPPrDFtM1nO/ufTrnh77w4h90WzqZ3ckG1k82Wt9yb0fYc99eXyl9kW/dnP6ed/9w31N6hf3jdZEXLv163SntD9/v/Z/4uiFhSvJ6j692KXX3EKeekPLuHk69XAE8mpJOZ+z1fpiX51fPaWPvg9QUrdZBt8V0HlxlX88TTLabzrPy9kLuWEHpLF++//46Z8tWzwM4v+Ih29T78BMTB4eIAOf1J0xJCfnK4ckN+oEisOXUd9/qNxPOSA2Ne3uvVM5Bj6bnA5i/SidwvNvgIVCKOG5VTnmBPllg9MUhDl/rc1ILfavPgRvD2CcMy0erTs8NIC7rrr5jLzYrn6OJKuvQSq9ddcNeMEHYijWxvkiegdAbtkiCs9FT5J5NKqklshWH7yBDF8B7D/gqDkZvC12GxlQ+luOoXo85d5Lpy9rKfFQ9X7iCVl2JNCYPSWLD+tFlQ9HRFBcCqKDPdHytLYY0+S0tFaCQAJzzuqg9iKnWltniFTh9DqpHgskUsbGJGImTt7jGnkELwEh7ekmjVZoYTM/FMmV4Zk2aOjScdbdPI12Pg3J54tidCrR0GVo5xLmWMo2zVzZHs87QCpIcMXquo3C1HFqmM05tJCTMIGhraY0J+9WxKjiOhliF6cQiXw2l3/ZMbR3cAMVe9Nbd6AVRHuPycFrt8bWk+5uVsa7H8wjEUOkcIXTECFLENBlNY54FVI3p79mRW9EuK1afSHSfaemU3MLaqoc3u7VqWwtJtQTX4kyeZAKhilKczWv8mFz02PBlBNgkMgol4vSpKV6ZItZvl/q612r7XKjX8roDfYXeJhpSve8XTAEd8Gp5SvfNNs+27mIN1JeAdo5iLKExdza2xhU3Pb5eX4UIUv2MdkgK36ixzrDHUjVWTetveEKOrOKA5Se92mQbHT/vGYmNL1feThLcGpVIpkEmkRmQkKTc3kaQJdRvWlC1sz4xuXDOE/D9YQPqdjavdTurcZVChLR8qdsJl2vttWonfq3ZWZ+xzcgg0JJYqFyTgZodXAyX1+Mu4zfBCrwHqgh3XtaHjokXNTdxf7lbSV5VHlbitj3hEudFfKQzWssw+21fSkIpMbKEoNUlbJnjtUx1hJWNM73EehHX5YWeGCZ/imoS2wGWx4Bg3yJlcXCZJI0AQIvjYlMLHt7QWpk0KTnYRU0yZrJkQJkPg/Na6MeHxHZPK1vKd6xGrs3i4NeIqI8L9IwRqXLRT3HMckm45HdrCa6mU2INjq2WIwHyS5EPQTwI9cUVqAxbNeRPhXTqTwfWQXgEVoXYkY7ZRqNVhV6ptq065RE5HlyMOZqXJDomWgMyS0qCRt+Eo3jR0QYtYktsbNjqcPTxnQL6Da5NWgCgrGlsl3JrFgN5HKAtpchcCuRCLOhD6IIypArbGxZV9o29Fp2pEQfMPAHpeLeMwBlWSwPpV0EUTfwN5cdMVfYMHNlG2IdTkq5evWW/QIetwns6JSTC4XotAARj0KnKY9G4TC1HJmAuhlS0D3NaAW8+k+JkQabuqsTKs2FLfnxi7JOAHPr9njTgJWlNnJ/lVYIjj5hwddF8Y6njwE4YUmC45Xs2HCzWIXfoMjp0OuT6tKzgFIQDqh/tQbLGF8xpYV2dFUhFS2D7nUZfaFY5JilBr7h2GTi9PVEYpuuZDpviTy9ABh2uJLmsZYxF1r4hM6jMRA3NGxGzJgV3R/NIhMCRQEUbrpAIiI7V6KRFUhYtYVIIELYJMPZQMCFFa1MLtJIMVWaYYKCjYYv02xWpc+TOYs98dBbOqbgreXkrmdJZySX9ovPr3e5yXsOScpQWfqzjiTMs1ZLzrrx6FtGMO/LSkErOpdDdgjELl5qADNERtCwR2bmwuEuLBCsganpRLIIhIOGErA5noytwtDAWukbj0XqoDVk2O5nuO7ao+N2GQUx7qQ72pZcv5AaxdbRPF8Q62EsUwod+wim9kGHgpR13vkmyeMgCGUoAHEAEGga7IIUL+aKsrjVyuyBdEtzv0ea7XqroFd9HTqxmvHSWHFs/xqzKg47upUuwAGDSll2bLp9CMUWF8kk0VanFTptk24I+IXur9pGWeMh5F50PjtRcbX9nhmudPMdCqe3PmqubJdueN420rKPKSdSB55J9fuYPZz2XnNA84qp2BnrkNsNzYqXKboDtXKnU5FK+RtU6OBccbq7ThFppsMu4uxwpJjIrE9Hqoh52R8o04WW3nzLyyzqxL/k1n4KlX5LpYW3R1yq3GOJyXG9LKBsK3duuFCZt1D2UV3aKADXH3ZuXwIM0tFwfdRDY8hWhHKHdSyUKFV1LDrYIq/JLM3cD92JdqvB8gNNtKYxW3+gist4XgpsFxZRANxctLHaB3sHScg+sl46w0e1PxOkIXDHqtlhgLrQtcLGuoSBrfRhNWiNYQxA9bnHx3ELNNQt31SjryimbIoMojKJeO8iQpWI6ONsrvN5Uzr603PV0W41ygQNvRzWCCguLOHdT6rRszMQTG5G9ZkEuC/6VGydmbV5leRsZMiZRtpptjglbn9C2lWFtecDC+kWPHQ+tuxgNJ0xFYu2VXrNuoAXaxUTrEDJ6AC8vgSYuBaEFJS2sidiB9vSU9GF44M7LA7xDISD+WzloQqYPJ4+yXtg7DamcTKtDf7hwu96m4vPAHUlF7se9OPTI4rSNxe7ssMVoiStsCOvN1qHdobZOWRUHVlWJpO8l/Yhmle80w5SlZoYtrIoalKWcuyS3YFmG0IOhuJ5SVni2RcxkRPY27ORHeR3aIR5txiB08jGgplSyOO+NK3LZKJh3SU9Xz66nBnjoxEAAJ1yP12p/qasyMz0TqWXiimanwCs0t1UKyWPLZtO0SZMRiN60ShMjJ3Ytk1ssFS0bIdxdOLILbtMQ7RAiJ60BIRvaLIyuRkkYyQbo2sZW8dKEgjymioiSa2oFjauLmmHwaanXUz45Bqpyxv0SuuQuiUM4zOWhv4DHCxV4Aoptysb3qvP1IIf4JneaoEMTvMUyP+hyuIVbvFxcunpJlUW432LjUi6oMY9MTZcpPC+QcLlA/U5bk1xeUYs9mufh/kVo6HBRrgegrC29YRwR+bgEGpw4wsRxC5I51yO8btlQnAZ6xIQY4NpEr6B75QD8DlLU/jg40dKhnZo9RpbLcAVr9obKLSTwnkfqTlB6K+73S2bwhVZyzjFr8AcpglkTkkY9a7hQVsKpsREUzDb7RGMszDw6TNa3U24aqJRDLVbXYbMVoWQzpfVFvDyb7vZcJ6IfJlgdKvvToj44k0uSy2XDNMuaUA5bCpFrG10BETGOtSVDjl2+IaHJ4oiSDaDeRrZ9SzsFdUgloEmSDwNQRBWSv+iOp+frZK+y2aB2ArXLGcO1Jtas8CZ+vmLZ+nrY8NfWvIrpau3Vhpp5IrcaFr7RGi5hJokXZGI/UQfvTMIaVGZbTTUdyzPKnLgIOz0rDaJd7EZ8KMx4n28wJGgSsUmHjj/4AXU9ankVCjCJolh5HHLCXJRlmGsy2l+tLICA7tHzji2FtsP2ehcR8ji81OB6i0pN6tw6c8guBw+JapLqnvEttHeLZNheR5NzTTUL7LgZdodkTK8dutnjnSNJVx0rpRKqK1AuaEbFsbXKzFowR6dHR1CQJVckR8lmCXIXtzAFTlkrcFmjcmmqR8HWQRTg7E1O7gPYHL1Qc1kEVH7ljDw6ahw62eiiobMop6cc29ZdjgHQtqJNEbmkmOrFkYVq0NAIid14QnyuRdBNWNQAZrEGGzti667YjGiDeEGGNkAos4nPlZuO5+6wAT1W7siCyoWdutJ3qXcNtymK2NZxeSDBy45aUXisrk1stevRbVZrbFd51+EKmgarStcKVGyMgeiWlYsHPVyaneoeG0s75Ak1roOWPFWl2lyIUdusyWOFAguXh0qDfWl9wQ9M6rUoAbxjh5lIDQ0uElQNrsxA3kJj8HKj5AtbaqjRFSsXbupLcsl6z7dAp0BzOXr8IgSW9tETOKgIwlOzDvLRWQeV0xoNYkEtHKIH2OvQYI1UupimCoXjq5CqUAY8eIMiIQqaf3A83hEG4AIsvZDZDQqD97ZD+R7LuFGyKZB494S3pPA+Xk7NEeOWuZV7+2tYEMSgVS2JqZ1T+JiC9jj/0lEMHg3Zn/z9MgUFrlSyxijzlGCYlrMRBgX+2WsLPDssr/5R2+FVm6/KKwGfQCgoQxga1HR0oI2Wc4Xnax6vOtR4CkMK0DiGwpZivLhsvCEo9zBln1K475b7dHSJllosCbxrkLFzhZMpH4c1ih/MFFO6vMrErnOHsNnCY9OulCsWHDRj9HGvEzrNQ47HYw4BLge91J4fc5TVwvWC6I4btAVcg+AuoJIMdPpRaEgEW3whateespZ+sWi11qaO2kuZMpCBrzDB5pQbnMcCOVojjoQK6i6DCmA005KEIA6Yc6A0yCLdIwJjzvFwIZXXYp3j4oiY7akJExjXjkyGWF3QjKBgxz9meWsAWrcgxUW+PFILDNwPsVzYVLA8YVSqGQBtIbV77REztRK8p/WBMEjtkIChGCiTSyJT6z67CwZB5iJd0Ux6esn5niHkU79oaIXO3YS8XM/8LsA6QT+RCnElx2vOczYLhghE9Hmk/Ygv8a1SCzF34pWutZYkaBiEiCsWHEYxZ9deqNeUgkJWiY9MbKtsQ+vsmYkm7DMGbYO+7pOvcsvR4eo8ZC50aaHpMqXrbd5l6FrG8BTqDxFoe1KtT1kfPKzoXxc50CTZAyPtD/JrbQ5N71e6sNolJqi/0XXopV4Cy1XYNw6yew08JYvCYl2UDB21Os1TTTMgFBh4Kuw1glpAbheq8gbxqWQfi1eGKXSbvRSF2+pT9hSduMOCMrZJ+ZIAnwSsYBP3QoKuU5KiqKuXeKfY50EkOvavfszxBa2BSlSEF/sY4Vd0E7P6Rt+e2X7p6Gf2ZRMj6hs6SKcv7GkTxDt0zUg70EnK8H4rRB2y8gOwkoOQWy/v1ZIqpFSiUvSlaONAjUUI000Elas4Ia2ktuKod0IQZfciia15jtZdE4xyUHx4gNSY0LaGIO6OHN4hC/tsuO3mSFAgSVvJus+MeWgRKFiZECGcUikbpR/ps2FsjmFULf1gqywyjZTRrVTpEr+gXgAvbAZ3g+yvyP4CXZJK2oldcNHQ80TeTrCj+EcJyoyJwFAj1JmNArcstu7bRVMhC6dBCKk4R8cVf/Q3vQFK0iDvIGy34xJ05+V+YKGHYGdtcxnOmN5fKuyqgBVOQ4tgibIyPwXWzV5hD/b2RHTAAYGZo0cKrP8uEG1xYaVVrVQt2hDhhagVfpDseM+jV1Kbnt7jInGjOR7ngnAIOkyFcBljwXILHQ+Iogzo8ry3HBjdhzjZpSQ4nrXjQuw2yJmUjECGkosUsaxrXvcRJBawGJFCJDOxf4AptKWQbgJO+FJ9u7SNSIqSZJ2QexZc6dxzQtvA4JxgyJAKH6/5MCw1EKI1vFPiWouHl66yg4AEqdNQNaWO7aKrcGQpB0POJmt/RRZJK2FBCqGnVl0m9knRNQa0mSh6nMAZ96DasauwI4cdInIJMvQlSGWEXgW90pGmkRPzNRR1hyaFFHUCNmoqWbVtxR/442lDM+wGB25B1gO5BBnhSxd4MN0XpJaoCVGaCU2kwfdpoWtBjj89JLuWSnsF3gTO53R3DIMxb8ODdF7vnUM1HnH+sFGyY5mk1DC590p2m4JQTyOYyUgAjdsCvAFHrvcnz2CWWhvXYFVHW0aUPJPYGi2v68yAiohnBCu9zNMD6QsgNNaanfs+/trTKoHEYvIJdDgAMFDrc8RKl2QtFaAXZB+akZ+DnrNjDnrKjwwk0i2ZXXM5PQcC0lmXRstPAzjZ5IiaOtfp7nLdMAqrSotT6GC9GArd5XJdRiIDk/o5JrWXC1MK0qIweVwOUMDqkn6ZjmusS2uNqsKjpiJajjA9Cy+ZJ8DMZdSjMPn/be/NthxFljXhpzmXXYt5uAQEAiHmUdwxinlGDE//44qsXUNk7X16dWXW+bsjVmZkSkG4wO1zs8/MzczZpyI/Q6lb3H1xuCfUUKdReo09Hi9+7YzCNBwvHqD1nfU7Vtx0WfmRSYoK99sUYAQD0D3/1judnTeAkAu5nAuGhYhEH2h36FymE7plGDowB0MRuO0J0tMGt/tzJ05e3KBRis7k4UVAbwF+CX+sb7WCbNBbSCgbdTWY+J0FDiZ3YJ3JemoZLjF5M+Gn0xCmbf/xW6f4KkLre+U21jH58kf4HDt9J5br3gJ757t2H9WaRNi3m1B77tWxuaC88o+l3jWek05UJvcUPWncixY6QZqFdjmVIcQPz0cRH14Y9udkacmCTHQznYgNbP5hsNKo+V5b5OTO2BluCjzUVOCcbgFUQsDICz3wuL3tUjcWHZTq9CtCiJdPgJla4yt742uWZ07pKPF2IkzuloKI8uIauBV1IEvYn9NHA4gmqHvKUuF9Tp7TEUuccJ6QqH4uNbTU1RD0zo2tRs/ejI1jWrFJ2dUuKfPZT6reZzpKzK7cI/eIphb/HoxqcO/jsXY6g1UZLjaPQ2eoGWi9e7xYQXKKIFbWawcBZQ5YWXTEwdaebnlyGedknE55rRjY2dIPsIq0YxpratEwiBXDvvfubOTPLU1zwrMw7/0uatlEake5AQjSPog3ergXntMKe2C2XALgNRg1vtJq6Fq550w6jupIUlwZTYXxxnZnJnk9Lqfmv5pIEboD7HGWQJ4Y6hS38VxQ0+PHvn6fmsJnTWbqHxv5fFxU5lXgHrc21VqdKgkCswn2bIUXQM4LBvmr50dfOJFPEqgrJmm9SdbKyycRnuBGwWtlomuKXvYgSha568y8kR8gC/m5Griu4hw3xigpTdBhmfrTZRnGZ+S9ttFcFjRIZ25PGWNEkuNWTL8gbhCNblg6YQl55/fRS1oT0TD48Gl71XPjMrLnuhyGfmiacPOuK9Ic/0o6umuFfMoTPnWmwmyCc1p2y/VdnyNamRm8ZK9Mp1Py3g0OXHvkErOafCVbN0a8LCFxd50758KO2xgUUhByJzPdnJ53ZObXWVaG0sRog08apA0fPdxTa2S6gxB047kS8LJTQwO+OsZwNcCCjY/msRfybWgY60Ec9MTEdizVnfGMXy6lv2KqhOTnufyf3HnN6p2+YVVbzRA5juXejKfXn3fM+Zsp+Enae6RYlAfpg50gNI/FHE4Mj9BPfJ3KeIS9js5eGxYgcduCNT0O1UgD3ASlApNP9LGenyJVgIsB4sKfXmFXqvvOeFJZeqoCQYdRW4+x1JgCEEJ/1WCHewiFVrcFI5mDbgKdhr/tAEri35hGNCM4krRZTY2nJb3xTdgXcA7MHR0bzKlUmeudoSErX4Ricljsij1YTiuLJ2k+dRbqhBfTeAXYS7zcTV0sUhNP3I4s78oyuMNEHdtydc4VcI8n7rQzd/NkH5Nl6DUrdJ0c9BpA2Wns0sAeMjDp9qY6EMOgziPHwBp/elPXO1ZQAYgYrC2c+i3Pw8o/75WLrn3gFqE9eQh52gM6fTky6zhLTStQGQZXXSMRWV51xnvo9VPiRzZmmIo3qoubSwbsGAzrctjacd2z3JvhpKWFth6cc1NOLqGbJqKcrPkoY5bneZTcaL/e7ctUq6Z8rjjtIarsLW7mkEtuAbQm1XZldgL1Tr5HgQQW61wFm3ezFIS57c8kNmGx0hTybRvbGrecnL143MMsro+gaDg3Li4UI9zZE4KpTWanjnwynGfhMm8F6ouGsE4an+mFOf3QESUJ4kOCSRsg2QuFQa6brEz7kdGOPlznYva0bih9goTftJJUmyPlK0HuXe552k8fbJe+wCAn02PKHgWkeG15LefAvujO8gJDm1tzP8fkC37uTUagOfBcej6oevtmFEqcZYdxrvXh5HLT67VvrJk7jhveTEH3yW/kg8KPj3v9+IORkmHKmlNZ0GGPtN1zJTJ6h5FxxJNjIdsXzZuYd8UJyIBNsiNshe516k86PYmmlDzKcz6Ked59qLK2lToK7eY0XMezaXDRu8zzeDbRaF/dIG64UDe+4jRE9k5auZrmQ4Kr6SadeAdPf9pQwrWsJIOtwSuGZbQwOL/L9zy/8oF5ehGg5t1VnxMwv25IRazMwQb/eqoLSJO8gp2o5nm7N8A/uOk899YbSfYSSxZ5vTMZu9O1URTDf16GyjJvMOp2vISZsJ6OYJnmfBUfBjFKkwW77sk4C1m8Jck5p4EtBefr56UoL1MWgI8imSPoUxOp1OXJPzalrxVfjdVnd2mCl/3U5FBPiiQ6TQLbWiWvs0QzNB3wnYjYeNxVSmP3sH/WvaGm4hzQsLv19v3qrRfKe0mK0rGCCa1P3syXfTk4VGymdGaYq5xBqB2pE2K7qimcz5ZcuuTCnBzdMiRmsSVyx15RfheV6KmuXRROmiFYh6RYreWWt2SnG/TaGhrL59N7l1iagB7RHgXH0pIgRiKeSSTu2P3z6XHuXYakuscF3XOQZoWuT4hoY7TGiahbJMOi81ruc/URxTObFJRDput15HhWOjnYjoT7MJyzeYOqvXH2J5qffo8PvamWEs6H5ewKGq5d3McWRhfEcFP507E45ye94SJ3mmTW5M6HQEVW8eNs3oO3lDjGkAYQLuGFYpCxsTy50amN99Tdw1vITWHziovX0Ca+OWBUmcuci439AjL1hFdy6X0XTtPTyxjhSJ6MQXh6ZrSzHj+M9YtY+y54eqfiYhMBsm3VGvwdVxr7dK9GVbgSaEgsBMyfDwpGc0+eE92Ulxz6LqmALDhuIS73rH2zlJMpA/vSnxw1Hbf02nlNmDu3HKRznrcsO++NIImKXqxxG3RycwTePfnZcWEYy7qJHumbe8Yp2grYHaWznYKVrYaLchEdC/2ayhRjqyN4Z0q+SW25vgNcJPBb3jrFf7MdyLcohwPk2w3Hc/YMxvMCjbiulxy1rh0JP5sV8YjayUBRnd49C9Ayi9W3U8E9ZnWeASvPTGRlA4PPrIXmyZHorvSNZ9aA/lAkczvSFqNC13lU2XFlKiOI0sRWnN6Tmungb0zUXKtZPD1UulyVlTi1IcQbDxVcP+TNcXInidDLje/la5WHiZD15npbDH8DkZd3dW+Hvsvrrq2Nv3dnLNx6yuTYN7U30N7lianeSdN692KqBuYh8G0h+gzhee2KoihBViCyeifhS9IOjz7pbAPHbivTZfmdBqViebA85djaJfWxFsVdp6ioVFK5Qz384xnPuyO0k1iDVQy+oSeTghgWEQWgurN7fUyYlsKWLVd+WJJzdocYp7tRx5tF9NrC4mIOOYEujwPx2lL9gAk4E+MTU+MwnkZzIXBfCjTzIAeULQdOnWz5pqIn7GwIB+GZFyhhw44ixfGmaWK4AdlfIekDNvoCG+WA5Z/z0SFUsNkiOozj+MzJgkmq2MhFPsa27da5LEYtxo2Wbifj0G+sFt/vp5u6HiwkyplNuIV3egTedUGgVzVY28n/ds841/Dxnn+hUyWQYU3UMj/0rnJnDz4snzHcERU6pSqnTMJzkple2unnfizZgYCQsIb7d+GRC21pD0l5PisYSwTf9C12TMu7zlUjnf7h3mFYw0vSkLiD/UGSMpLSDLK/N7gmSqXS6eOQFfzzwmn7Ya6KFwQzcjwUZkfmeGymMOkrpaze9hHTcmSjzeBUpSMxt8YzJ1i7jcs6gU8tD9vW2/qyqDdA/h0mHn3VPLxehZ/JbK8SzRlsYVokwiBPFrkoquEEZjEl+TCb4T0/V/R7RjC1f+UjWxNcdWo/w92djeGju1jHZTt1wuDN0UJ6O+EjXmYeRs5D20CEjGI8JeMGwezpvVtt6DfpRj3wWtxnN19UsyxuagBrsWWYnsrSm+IWTxPUIgsPBTFlwZBvrqzJSLZ75ko2I0ty2qsyHASkt5qGkZoPQb6+4/5QQiB3bnnTOpXa/CdFvjJSk7RbRebMmiW0B5I7+0gNaqF+9HMVIGnrDBWVviwJO3LCurrbhLgciAMLBD1QOpM1qX21TiJKIrl96N2KvFQeOqd0crhxWDByZey8tTAkPNfgyemIQW69m3u6EIm/rx5YQo3z2E8F+VohVg2voNsLKJjsLk9ai56+5LK1xnRi3a2igm7AM6fPRfEK2Dmvr3gnIzzgrPSpR4QrNqxVFIKwpQVqd9I7cRox4DfdQyPJ5Y2qiyYH6zyYIky7SnLRv9o06tv7WnAns4I4gpyZxrQ3kul50RDrCNNZo5Iq/Zx6FqLVDFRUvpqcudkKxvSToLCvx+T4LTIFZcQwXNk07MQ5z8TIHpcVv2AO611ACc+RwK/kKYlqLM4xJGB2n1qwkxSVsLFXTbihnR6BJBXTJ6qi49yiMo2GSUtfHXQNBLytJ7Cb2Mk8I/0WyeFrqU6v0LdOZh1qyQMwCwE53MahVosi+UhBFhtYjfFBiamN8Nvt1Tu6x4chs5TabUMhCVnlTt+J4NKSBeBU8Tvf7xync6I2ZzquN40llJLX7pM7mZwmkxfLTNM8CBVfPu0CderdthgKmAePsaMqAaOMazQiXwLynmfcvXCzsh65x4uDhuxREG6NHk/j8rbdKOiyx9LYMYPA0v1hjKf3fl1zSZiknX1wU+cxEcc/vbWUhKe85w92kiw24pSnx4zyee2OAIt7IfUGhNtB8N5+kQwxlS+Ki7KQH/mt0NvqneVrOa5myjj3kCSQqYyyHWh2N4OcbBL6wQngxJ8TwKnPzUiR7yWAw39DAvivR279X54AnoLiKI77aC3HMW7xuryLTX1T8ETTjpAAShBhDwyW/SjWZb8l2d7qh2ficVzX7/rnPe9dIYc8Hla0d0Lzv4p7scj/ljEOaiyFVGTzBzLXCccWgZf0UQkVJAkIn1SwfXCBCvdwVYWHVwNxu9DJibhx7bTCnQfaj4+jrj4SbKXL9vuC2n+lLKfnCN9SlAnw+iOtnCqkb2nmyXWipeoj9VoSctXh2EuEnv+/OItawKVyqijpEuP3koc1+7mr3PpUSmZTC2rVLGpTOWhV7G7Vzr+K9btS5xL7UWnnv47LB75axk19PkP9igr2XX788G6vxDdoqZB+m4PzOf99uniex9y3lO/it5T7yGdV2/63aerYw2e+pXvD8zsd/9fnRE0r+A8l3ulVWD9S3OnDFes1sGjrfKbz/m8lQFRQKAVIW48v/eWUep5c6d0FBWynTI2P+3861/x1vn+EV3qVePUiXaRTHvFT5uETV6CA/fwZV32Mw8OqVtXLeW951Ki15ZzzBDDD4X3oGYR6iVHFCTjlkgjG8TzHEQS1rHYDUjDDDq6KXWFGqSCK8/jdeOd9oC5IZ4d+N171x/Hy/zieXjAUkJPtQKCEfA/9oA74YD/n6fltLonQw4/kKpwyc2/mOQfg+ntTn6ukg9Qj3sxKWlXHvWgXZlMcB9Hs28U4clatHieuck45Hpt54uLX8U5ZlMk7xd783XjmH8er/uN4L/235Pg/YhJg9VtZPGhG8HHd78o77PPnfygbcRew4uMCEAR94GakpE41dNvexZpiGZI3SGwE20XiLGuSNniNl3sxMBJT8sPz2S17lz6dpzFZ1gW5lp4XXkyhZBwo6aqEhybrAZtFEfFPeYY49s7nXfeUQ8W4OmP2im5t0qQ0nVDkNbG1I/3YocATJFraDGyu62CjnEQlLwBuIoGfV4KtLj3DLIHfJPKp+0S4ibHuVRDTTJg6M8miVEubJ9ZTYxh2vRxYjdQ6RhVmJIJMzcNa23gsdCMRGINh7rmwCAsMYlvREN7NTMCcdkAe4ZbKtOicVzx1fZsgRAzFKbye7mf+bhlwQTk9M2Um0uN1l4FyPd+IF4J56AzlSat0KqSFv340njCidxcBllkY/t1jQP14/4m+/+GYmFG+dx2DGe/Go5Tlhg3KF098u8jXsgBFj4pz2dlMsZE+hHxOknonGk73fUusPbPQVAIjsezSYbmBbzQsIo7a3C7EpmSJNUGRT0TGWs1hboJbYSXgwS19lqTb020zuEkrixxT/xI6U3rjqPfd5JeJfc1bIZd5rr7aPR3AbtMd3wE31dTTy7JG9ko572cSYyqugth6EYU+kYDO+tkLXE/kNXytkEeKvnsrSBYp0fXlaNm4fQ7XFhpg3LnKM39+6Dn7xh001dlRE2TGnnQT+KsLll09l+bcE5LnywE12o0FY2kgv/ZOElzbkapHcB3Iu5jXNEW1u9RfKUli37N9V0He+IZkM1QcL9JvLxl/fc+3/7jdPd4kkf2bjAo0pewIJvvnJZVU8M66QB7lkftGGWQxfrSLwPxQTdWEfQG58RyGOurxgHaK++13CiokmBTIWWLXBQtWhjKi96yqM4zlyHDwN/YNCpEj8zAiGD2lpHfpNKcwtCslwOhGm/2qJKp7RVWQL5K1T+cd+Gu40142HnXY6UN/wvceHfdggcPeta3nfI7Aa5tKooXoMab4InP2la8zUoGoFDoF6MWdDwHeXiB2QuogRFFNHsUNjnjO6trDPVZDPq8hjS4VaHU0GunKF5SCaw2DZ4aeVPnSMaWgbBJccjVVTwbdIr1aSnV1zPAozCCZfpEiT7zROifyV8Jw8154ibC5L6j3nG7rbZz7nKvZyRCe1mi94w5uOPfr8jqF+d7Zc189KTMjmViIx29epXUEjxRbPzDFUzo1km9mcwzwadzt6AraYyCNmslcfJ9N/bo8suuS+88LczlEwezz2yg+L5iwgjwi656gjqc68om5S0p4kI4pr7SZRNE4zbxE5C0VBEJ4IgJjRGTaWMRfCxQ6rV18PbyuEUhqC4dnC0bf2Ms65wt0xUSHOKWkjIFisUOO5PXUq3MVR1WPo7oRiKdog4vfdY11xNDpDoUzCdWLvsNRuYmPDoILP8/rhpIxxYhWlrk1Wk0N+zW+L8zWZkvsnkuwJkgVa+Y6yEG9DcufXgNnPP2tl9KN4O7xnQOxugyUDwnwcTTtEJVEavQ0db3tPCJu9aIyAGdPZuNfMieoCui+caXuM1/djgNx2Ox4x/7fraLYZARJhJLXW+GmvtgpR58cc8hCldZPjQiamvcNIYchFawloJmIJsyM1j3sQfMi+KTlOnodaaIkQU1XbCZTqvdaYYe8g5bFKYfqlIN2yoELNttCZggGEUlEQxRy8yz21BHHJmPAHKR9Gug4LJp3OrRe8CvLQRBw8nVGDF85tITCA5iPLjE5144qEkv9cmTnfofRQjbnGyTzpWOSzoR2Xn0ElivGoi4anMFF6DJ0XbA6On4QetCPl/kgH2QWZcmAB/OVnsJ5rKc7Kj2OU4s0x1UsNUtp1KEPpfnpUkT2sJ8f1swntfV2dTKK22Kb0ul5iIonRpbEANIfLE+NzCALAdzJjjnV0MoZSiqd9LyiAovRrrboyZ2cxMizvTdYeXdBwhupeQ22I1lmuacXNdlZjVPkxXFkda1fqaKesMNmzKTT23TqlAtHGqe+muHra9ip/Eb7wLZihuoBR3YXLeqwAf/vtR7cE25hlC4TwHm/6mMFqnmFx4yBXWBMcarp2NjpBNklvhTpiG68I4omh0044tu1e4xzAPKlSXnzEyvesxSSOk0PQPMtdsXhvC1fz3PhAZ2E0NdzfmWqsBXwGc4oWEdi3ASrv2O5KoXDI4bQAiSH5pQrjkUbwj4wJBYlbaeqZS6SJ+y0xsEtwjgOcWuxqxo2ER0Yh7mclIBoo9k73ItN6MqYhLBNZcz6MB7++U4U1gBDtU9uUSbYF6yGnesSILZpvhZZnkb+OLm6La0CPrHegUcXd/Lo0hvdAR7K4ULCMGUor97yb1M3HJqQpJZPjGRU5SzSoo9AczspmCgQWcAcb0Pj7iXvtQe9d+7c6CW3TOTaCqeRMqh3J4cZ9jqiD1dlqP1kPIVkS7Sv4TiWRXXt3hcsSYAIeiQ54K1BEL6axnym98WL9/c+FIg2U9VUoU5Tqr506o+y516y3/rR816gGQOM5V19FtfSMvVHNhlIlSIiNfcQ1aLB5Rgy0uO9ij8Nt04Xr3yfTKA7In7crnBSdI92eXdzqAMB5RVcWiak3IPRLjWXulOt6YIfmi+RDg01DSIiYKwo0uLeoaMsvKCXcwGKgGdm0GWeooiZMJ+ep7BcFceAUDmeiiKHO8kKosLsHaCxpHFuY/wILupB3viTXyGRg+7REg6J5uJW20XIhXzOt3m265kPLmXULiAmOtEeeVNwrVv6BJmuyF5V6m0LLmFy0vX/+iikfEbSBCfsCDKxNnq/ypgc+3iV60rZSNGYkLARdlT5sNwE2pHp0dp80viv2+XwCa3Otj2QERDVFmR9AflKW47v2XIDNIVUr0iWhMR8KvVUvaswBz+LU1Onlum8/GV5KKd2TpBrr2Qnud6f5TaneNfLMmHJCEo80/5J7JfUGcap9JKuJGd0D0JbXnRUol6HC04oYGUee4bIg02y2kem6gBZ/dZtu+60O8FEISPPXIzt/a7y8X4btWS/BCkdRrOx4COXTJdIVAh0yEBQVqlIihkjQ1JZk7U1fLTSOa3BJF3cjCzt9X6aAoKtiGMXWGTKDjylmnaqklZ/uKEZTKH3pHbxIV/tabbZHg9QkZ4t4pbGvQWWdhIQOYIOlB71Kq4irkLZCHJR4BBdSGG/vAyiusviLQ/qJogXEEgVURqYG2axE+vUCCalqwu2E81DoTJNDuNAxqN0xs0SOTa8GwfrTkiIipdGZAgIyJQS9ClBZXjWrg1ZXzvFfT3W5qLhBjsjbqfSnTGat9IhHnI604iOK4oXg4RLxCCPJjKjYclOgTjG2nqxOJaqdscm43TbTo2y0FpDk1eRS3gvAIk/PWqHb10KNS3V4pfXM2gpE9Hy6h36VAzan29Fwx1+mF+fnsmH+T3QoG5+UXSJaJYBOK4Xw1M96QMgLpdblnfkfvNBmIzkTycpXoQZFuRTyWJ5oPIedd75BDEIbYPsSrVK3TrP+GafpXPmQdKylhTFE7khNKhrCe6z5b3MYb80NQN1DUXX6Sw7SjkH0gT2AdhpIUX6CSK5cqLcnKFy+yE/YSru8pDQyzYSajW4Zt2TcT6SSHBpKSvgFwylewlkwrI8pChq/QzT19bjc1HaHPLClKnTaXGyhHMlHEvzuJNoN6tCVc0YaZGkaGH2WBz0sdym1+NRZ5cDz6Fo8EdQS+DU9xcSCRJtQUSs8QDfsdrO5mAPUk0q9INyQ1DWctUGOEAULMMuiErWCYOj6aWVKt3hYEM3pZhmrlPa8Q/UrmrbM3NWt17UenKeLByCo+dRbjzHV2WPzstdo8Uy6F9aJtPmS6edeHs9Uvx0QbZngd7hnFlSFWxYCQaJx3QCnY6Z8k69RGSCnvjm5aFjVub6i+pWhyRpM7o+5yYui65zHA+3i53lRdh/BqF1DZ8FaVUswR765Gkp5/WpsJaU+HoBQMBxMPIxtIa5O7dew+Op+fR2+IDfFQZW0CCO88iCFmwc3JVKxmIoSMyM5FATvPU28tu+meFyXICC8kos4v1RGAV+v+zoIcZkGTyaW4IF08zFm2cMPoXfHP9uSThaQbJs5F4petheDruYUFT5JObKiR9VyJxO/xyy8+BE1OOteTrJRacjyehZnO/hJORD5ZGFkwoN2ocRzE+RE9oV9y470uKRVuN7ArZ0qu7qpFRRg9PGWH3uzCilpz6l2WNcWkgGi2GpCKIy7lla5vZrea5GRJCPgC1H9Snv99S5giD6vQ/zl+UwGQgi0PDAwb1/qHH8jJhTv4pXY85Po2qgNVZPWTrXSp9PYJ/5vjv3RkFZtF/Fld40iT7uPtfaQAfdh5uWg5kb6wNnMA/JegtEUE+9C8cznxTmFGqG6yiL05h4WLeaPgcvwXsFV1F+qNpM6kxrR3Q5zruhXpJnFi/6eReWeVvWeDi1QnGnkUAwlWDIbw0azs5gHz39uF4dMgAbIzExQpONnnp021qfAVmjBQbqQnQ72e+jisuuMS/2u+Zv6LPYpCDyVZVYmopsD1+0J6/EXvgo0OEqP5RVAL7OZOT7rYa0zSPVYYFnn6vYSE2vLrkdMpKRolrlGL+5kb73h+fmrz1zcd9HWLYqd6pF7rnYvLbXsCmA0j2ha7nhOfe4d+3Teal+jgQGZTcAfCJFviafeWkfeTvScnTgbTZd7MdLnJoCe8ZD9sJ6RAfS3wZat74VaxSHH8eGg8eCGSzYDUMLNGGtJJ9fHkLmJdBpPf00OuOoaS47VmwJNv2x6GU2jKMQFjET897qHSGc6KD+BQQCXrdjnmYpWvEEH+7HxX+SFYnOQZdmly18BduG5nGNJszHLXii3yl8j3DtJQSdE+rZRx6HEUYhjTl3s3bS9CLkgDerYZcv1RO+jKlngxQbP573fZX3V7qkFbyf6IH4O+EeWpyQYpzSa+5f2gtoJQTuTXbJG0qWrzq/zRaYoCaKqDyJFICAXveHK2VkgnjKuZpk2dRJXQjQYd8us3MD5IUNKZv0pMXtnsX9kEDKwyvUukGsDySYqXtfH/4ieeHsvs750YKNRvksut9LkBzQePcj504WaY4pPIkZGhc+iurAYYe124ZgobRi+wF26LHiQ463+F4H5gbIKOxraWTf4yu7pHVy+A8jWoZd2UWkR7xGu6EenvrxrXLjB2HxtNJqfrxd7wTwMOP4nZh9292gOL3ITTGDJIyPZD8CQSFhCo6KBH4FhZaDm3mXqMmiD8M3GE3lG/BOqGOWacQE2tBX/biLCSoZUiynMxjtkRnWzPGcFuwp3R9ueqo7zoWlDdOddxOrw51esDWf+i5wypoep34SSAKVaoe1+Bf2KDznZPtOZ02gXlIQPFGZdBuLmBy9xzzdpIqlh2Lcp9cn1oYJUVYBCSGbQZIKP/Goe2W8jUjK/kLb/YGhCo3MoITgJMtYKUkxSPa/Ual9mOUTbACS2/LuWiFnbrsVIPwh4JeyT5fTJUXf6TakYkdm88rSbg1f6HslRag3mksXLNWFO31LQcNPJzNJ7ZgJiZG5ohHqEHTVTA4Lwb5SJXEhzYrZLtEh4bITH3pc5lg5uXrsBdnikAaP8Ea0abOvr1c+xfpoK6PAbxd4mws+JnML9BhlD+muZIe2tOpsYAgvpjzNhj3xKNv0tqQtRJSGF0cNm7UzlJro1NMp8PVP5IkeVWQ65lmhTad1VDT9DGi+JqTEpBdKl76lyuNJmtmu+xKtjxqYaElZLxzqm86jDzJi7vK9jCQp9eZm9galWpeYhMrnLrZK4dJoWDKurVPmvu8eDV/7UqZRdnOpBNmb2jGf5MuRE89yaMuu7GEDPs27SbNnkU7UxhJ4/e5h1kr0ejmigsLBjSGAlMxxwJIMlcKD1CABmtez0iEAzpf67emJOQyaignKTRcSTBRmxTkaAhdfuJbINJA6uNhVG7URHIXsXC637dDK86IjNLrkReLy1oH42jeb6IvKiqjXEAtNNMwGsWuHFiuiV7kTYy2TeQaoB6TBsjZh7SxG2n2O16bbhCbB9MwjTMJW2ikBs78t9qH0HEoeE7ScbDqO4An3jtqUiELx6hZp4gt331VvqXBxK3tvuSu6Jk3csr47Tov1qQaGwcsCHwSAPJLuoXbIxPumuxo546Kjk8ZuWJDmGmV53cplhotlueM41Pi1yk/CHES+visqUvCKb3QF0q+jykkotRtzgnKRF2ne227MVTbyJuq/w8Xduxgk6dgr7hdqLCI4Rt40xwXVVG9thDnI9a0NFi/0cQY401N5LC9W9M/FcmrRSKq1BEqCNKEVVIQlyAf0yFMpxj9kfdKzsDUEATyjmQpuSetaBp2L9BynpJHb3cbxm77gtImf60bPBoKYgGLWoPbk4+SKgmjHfJd3pa5nVKBKgpGX6ZIE5LW+aj588jxiRJwYW255Reh9oR5024T359Q/shyvQSqjB9S4DN3qpPA3Ta2bza+OqU/oVoGFxxCJkR/kTYNftgVWYOZACwEKMCZgasZ92HNDOpaOKcIiaMiiV4EJtLXuOXMaP6wlyo3YF22ga9MX5EEE/DifxT+ihoTD20OeupF09OsGwyyLZNcZO3mlcRV0om203HZ1yHrCkZBfBX9/lebrZHiyHgGIqzHwToIb91R9EXg6uHfJ67LtoKPJErNdR21Wi/EaPGC2budlWlc0qPZJy2iy71q+Z0kRmqNqAg770+xgZAaCubx27naZaCIV8n4qr0aoDfikI9aGevmh50HPvZIngkXyyXeVPpaOemS7knCdd9efdq1bLEMyg5z1tFd32ixiWnfqU5b163RDenO058WtMjzFjrwNyeQiwGADg4pApAl9JAx9kvHdpMYGHJN1eqKcb7vMTYMvNd2zF7/YvV0pnNPji+BlyEpFexUPnBZ9jOdUhT/NNOAAAT97Fe8Rxj2Wk1dGBfUlO9lWIARpy7cwzS0wiV0YlyQDBFI5c7FiLfPxI3WBP3ZfGls+XBPbrzVgtJFIO5yuBCCoODci6pRB27SNxHqoQFqQePeRBF4CIQ9lnbvHgE+dfiMeRfoFv9+kaBfwUuoCI2lYRz4hPSrknd4v9RrG9odZZ4Ef6Z0EiF6sIB5XQRnQsjlJgM5rSDtmNn2zXkex1rYVMx19+m0Xo3m1zm46TQqSlDXztLradOt5TVlgYQobQN6LsiaJMJ1Yyru2sW8RQa2lfec3z/VwurBcLOERYuoKysRo1X4yx5ITOf3ITXucDhoLGoEIaSQKURTRIWjdUclp8coIYyQR+dO3EDT0JRHpSUKCwJ/uG72NEVIqzlYMCE0mJDkzuK2tQC34ZTzoeu4M9enArjlKtPiE6TN3z4gtiK/+IirUs4Lj7RiDJVHH6P4+Ji3JlAOmbhS98oHFiIZZJvZ+elkxwsf3OFGy8cVe6/sTKR67LT+IEwmuH6vr8qjwNLmXNlPXLR17GSpq2b2/8eozsBdf+tBfbpc1+zVA8MKD+KpoH1PLyjov3oqa3QpruN+7B+Hf3y5d6qZdLkDPJ0JHbo3RRCDryFYiTdgK5Eq8CJisBNatXjd7NK8N8AqcrLnTXQIOEmLb8Ch0dzX7DeKL9mTNT1oLUKKoK2Zn74thGzgInj22gkVTjHINeKFPjZD7i4rY9yv+mliUvPSjrdI92IeDWkGqudMozazbhjalXgt+8ni4AZUfAYsd+LNslkLVvIzxOP9VskS0dbZhT6dXGFwKAOw99g+HIO4R5LaDWBglOCxGI2oywxCgGPT8cXfX+4Y3WajrgBYxI8pDpX3Vb7TI7Ufje15/VLeV2euVk1chMttB5gPiEpGQP6uvnAczXfKa5u0tVpsnPQS5Yh7cuBHYH/DBx4QQ/sgPFMpRvqobG0GyG8yAfardtHLuutpRWpv6gu7+eCqIPHghuG92Xr+Vp5YpHq9pATskaTfa0QAMgpHqTOgN6irYGsc6rVxCBKWa7IKxAXS07ZI38mGeTkXOdfjJ+m28MaFcnLgaysTcY8uLFNB+gOzwHI2AWYh+DSGVGFO3Uq1zqo5x1O/0F4Xlh3+5UaNVT2jY3ruJOV0fIoZOfeHtiMSnUV130h25w/nS53snIxFh+x3bl5SBz56MB11QC6IsSmHDA4ccbmtHki5whBh8ey2RYyxGz/BnPLm+rPLGh8rFE8sI+HTQugBnIyIovVoKgg3MOVCexA0RnPL0vU9fgPGS2yYY92KmyYdIaS50pNxeotgVBE6VSZ2dBqreZ4gh2xYqt343pG2C4tODfNpR81i3YO+v2jhv70KIzex7nShly9/L5kBJkFT84kZ/eeSBDROFXQUYe20U6CE/k+XxmK+nrhSwzZKP/N5WCR42+iugm2Rrr+51VjXmGMOVfr6c8t6F4wP3KV8PdnGht8FcQQp6iMAoS/iEkkLxDdHpzlUwsBThjDl2tJNUlLlrJU4HLjFceLctPAVey0NjWv7WnJwew+rVhJDrNYbUdQyEtFGUvG7T3anjAtor3cXxoXnRCAI04Pv4NrifKHjdEAd02wy1WeF8iMGMYHeG96FxEt1ol1ey5+jp8qcnumRkyLen0j+x+l469yyTHsWY0gkGX50NkMmDWUQCWOjLET/w2dX0Ujvuzqrtl1w6QiTyXRE4Jx78vCX6ZaqDa0DbOadhOUIidHK7NYseP1GFmUfVURJyU6X24TYBdU/sZdfpYpIp2PeYDV00wHFnN/QHKFShQGu0Vtvk7lUd8gHVg0hIphnJ19jxLH1Xh84ko54XmlSb7SrTqpiMlui6Hd1kP9UF85Q9OzheYok2H7XHS14iRQKrNvfk+3jfr0c17ja8Ye1+j2Fkkmgyvr7gmW3jrSzW2cmmhEckarsCjCkDPidihDwrQiAkkmLDmFOdCKWM854q7nSKPX/x66gZCf0hWcUdaWg83gvrIE6p1lB1cRVSmTg6ORonwPMrpEYzMMn5xsDpU36qCRWhN6M7hUuCGHSnWRmfwvy5Ci6LCpz9122HX6pbXS+1sqVP6RBkOCCn41C2ozykc2UHVyEBlJdBvAGzds2jDPR16mQxvPImge/5KGPrzcFpwOhWeKVB4FkHW5+n0xPbcL1eSJOdZQdI9KE2lFqBlYgkwkKaqFDHQ3CqdCf2caI9Tov3yK0EBl4Y6VWNAQo+V04Z0xfS4dcu2dtjGffT3gJKQ5l2E9TzwxFB6OwkLWWV6ykhNsBjKmqqiZwxHOLkgLPIUiEZ3EFw5eC+XMvF2HfKXZaLBfvl6ZntYqOw+akQy4fjrS/ClTf1MqBsDZliBOKrrR4c64RUMm725eUulQjibzeYEvfd3bE5MRkMul6bkZad11hMIWwpxAr14vC4cEqpmjFJh87SmISXT7vdTFdxOpBigTl1xWo9v0wQhBI8tRHXmFH9NfD0u0zi9kU7fXw4WrX7qpHhZE9mqSoelamIhGKnSzVPl/ISGlpvk7UrbX0kKkGKrVcf9H6/vKTT7/IDq0pJ3ZIvtabQmy5m+KIjXT5K5Stjg3xFkpBCkwORTS11jkMMMlj3aWCH1tjr1yuqPF4QTuyXYXTJq7EIF+l60rXTgbLmy3RITsra0ZtcFeTaoIfQRKg3EQU1oz0rtIDN7rQz+3d7WeTM560VrUyXmJFxA76ba6DCdfMXCocKVB5YDX4eti/q3mBrop8UIzrNIDWkur/3EarDyqsgo4my0ijkgrJzP5al8jBJ5jpQmTIqIAhWjyWKgpV5ZMZYsB4uyP4YNJ7dzP2RnTSn4I7Jm3LrlcGwd9me2x68XFIUH4OPUxZM3DaTvyJOgKpJ6QYUpi43VLMldbsfjyflnRbBeaSqr2NZiEWzQYdNMZjiMpPAVRdKOAKhCcRRSau7IcMoBYK34G5f2NxQKqujOnBSWs/xnYGMCOJ2Qu/y2JC4AR5Yi1I47nRlYK+lFKwceUssISrftaTtzVV07HXy1pqqw9osWWFBgJbDXWEok9oiT4Ved/fhpAcCLupwSPVuRQtjxuwWhdDIJTudwRP6tn8uxTawHcpyG7rSdeKVQCFcz8il9UjBg27IRvebLEY8jAJWPm3XqBDollIRXg8MLwa5OtOcc7T7CvpsoEn4vjfIU4H7bkYQQ9uOK6HHvSZBTxo9UCFqZgJGSEZa0jtdp/R0fbcAeN3yCBRX0O32EBqsQ91I9Bv0nviRz17be9YMpyBSY0Ki3ls6b9tqVNPyqQe9LoUFStMTIr7wPs3r9Eoe+cu+IG3TPaAruO3W1zL4XHS57Fv38y4c7bgR00pWC/pMvfOjcQhetIzjVBC5R3WX0tvoGCF/RNs9YITAIGAP8QKpMUiko508fdbBeKOr87lU+vkUr5hD9o5DkWbDgiD03T0ed8ya5n6hZJjMCqM3C44qBzEw5iGhtSLKnifdyqN6JFlB5D1LEzELHQf9ek8QRH8f+uYsNwQ0bnfGdpd1pa+F23KxjXehdCI2xcyOXQUPcVBPJN0EXWG83V91Th9wv6hwrZaR4s9KF9I1iB5IvUoA2g0CpeqOeqdn26YdI5zUgSla3aqPW9QmTNLY7b42cY9ZLQFXHlmVtdn0WEqEl5rbODymU8jvYTfZQ/dOI/cD7OywimwPAzQstiqheMPxoe3T66wRuzS+euzo5K2Ok/Yh6FbhN0a0pfVs0yqtzs+qFejdv48H7kfqu3YClR5kfXrbzNjJgpMH5qWCS3Q4vcHtaLF1rG9SaN3mfVaTZSeIsseIOJGSjmxxXKbTxb9x0K1wX1Ys3TCYgIm6GBu0ylNzwqkg10Tulh6I/y4GPOYpri63JwFYbbXBITxLtgCWsLsHz6N6tYZFF412vbzIU/1vV1HYAS3C5sgOLRHsXF2PS5ZtjjRe+sgtTs/NUXrtNM3Yux6XHJOAN+9um7zKFIQEyN1k9GgSsB1xtEJQiHo/akuGb17bx1yktjQPYkkkySXeO5Eirfrd7S1hsIJyMJTifdRBm0JZEr2jRIDpk4aJCDeHlP2oW10p6nJVZLd0L0zNTBkanx8NliiYqdLvvTxshDIQLRnru1bdYv0xlaVR9j5NPeX7dtprUc9oMdjd7Nqtl3HWb+ISj+yJyli/K+eNT49CrBO9C2QcaSpU96CACfpKoQtO9Agu6G8WiaQQKSOrR65lBPapjtZ/n9p582f0OpqiXYck8AkhsVWJF8Ksr0pX3YMpQ2TsdNg0jcfJlGoVbjnGk9P2bktiHW2hnrPN0COzTGjyayNor0e3qKbg0/VGzrlHGJ6NRvRWU6uK1r0ZDH3vPUjVg0NrRbL7kHQTitrZAeax1t8n41l4aY/UIO+LnUWXYnByzdH6phuclxBzpdMKd5sk7urVMpGqOlf6syFrO6LH/eoqTm9Q037ypXuupdM8vtW0Lw0Nvu8qf0kAI9tvF2vIB5inXVFUJEUlbQpEOOjScibk6KtC1YPYLO+3+oBfV5ifgJgGT8RSXUR7PD+4DcyVwMceYqJ8GGgDodEuRQoI2s+Of7+HqbQ5I2sfMI5Gxzx0TqFUajqk7jC2U4xcdXZTpkBDcbZU/aVLOPqC0nAqwnwBzpIDqhKo4w4kWsTHlZo54hltEejmxe5QArJ8ZRV+H/pXjFrM2vPLKhh3hJoLOMMXpBZ1ZLmgaEo/TuLTX27NydRckYLLVSj8Q0/foW3VpW1YgPcR87p5qa4LoA6P+sWnSTrsV8gn58c2Yt3EzSn5MKasuEPCyJAo3ESnxXFj7HH65cJbEZLEQBW0xdRa641HQTrF9XlLydC+qgw1h9d8EYepP71NP59zWINC+91K8uVqMJFPERVomoJb78YGDlP3vA+j4iu5MlDqB09ralLJtYN9JnloU4mAdmONGD3RhQd2dKo7nUc31AuBpKbQl+0uAHEjYTl91JuEGWH8SCWPnTefgJQeZPpSUKNNo8QLN4uXg2dkGNW7uqbMk6W4gIMULk9luV7Tj/zr5R15R7AecUEI7yMnuAXrNo7S+3tj8COfd+E1bPD9u/IthzeW5tUg13f+br3WKNgu4LWA1945zIwS3xN8xgRI/ngtxlJCzCDbdhfTd87vdeGvvxt9xxBsQfWtFKB3FjLIYd1mkKOGVBYriePHb2na+1ATiiZpaX1n5THs+kRPQ/POH+d8zk9IKgvad/ro+bWtLxSg654cmqyy3vs3GKDQxJScCoUN5QFf0c1u8Xvh9QYHcptZMm8Bw3sc/JVy4PeRc0seyYxzPgmnx/p7u+R0Ck9vkUm5tJ036LQrehfmxnkbHGbe83vfZT5Qrg40P8O2IGMdaxA0vMTCcxbATuiMuV7Xgg9kwHqwsCJ2yfemynUq0es8aeY1RmQnF3lkj9g+75YDcoM1BYfep6J4zguQePqxMATGeDBiO0/jE3gup1///WK6H1g9R5N/LJ5DP5XOwfh3aucw5O+onUM+1c5xXduCWjUEmjsw/PlXeJeyIZDeFedT/rm27nzM85bYU792VfrrHLVdC+rssqKu//RW+K1crk6z+S+r6CZQu9g+7+9rLthv75jfJgC81Z2/m9Xder7MiyQ5bTh6Mq85nMPofW+g1q4Ht/yeIZw9/0D/hXDQL/h/gcQ47nwN//Yav7wvH08xt+ezhMVboGk4zetpO/4NBMD71rfpgP4GPCA49kdAwL8WNP4BEtBnSCDE3wEJ9BMkmBpsnf8LGF/y/0v5w5/rbv8GRMDwJ0TAv9C/+6I+4wP7YfjAPquM+R165uoirr7g8W/h8X8OBgr9IxhQmPwPWKB+GBTw71mPt8ARSEkBGfgCww+1FTSC/m+CASb+HjQ4UzpqUfnBFN7V8h+/qvXAl4YK8C0Zw/WXovvll18+hq+Ltvq4Kp/n/vws5iPGtq7rL9+ufX+csIxgtI+LEBxchoML8T9der6e8lMK8TJPv0yv58en/AZP4ndz9w27v8Piu7AflOi/hf8nqH0foUB6xfFeychnKQsQRUL4n6SMfR/Zf4dVQCDsF+K3rz/RSPjXhgu/F/6vhuT3woep/23hA37+m/z/SjuQf2UorLzIAKNQugU0fofWPD3h86UrfqzhwP6EEOw7pzT+QFpJfUZD2L7OMREo6Lrm/EcCQTht+WKYP9pqEOh/Awm/Wpa/HwmfD+z85lqAHizfvMzpCwQ/mjr8iUeSNP0LDv32RfxEn+JXhvrJ5/zVUuhfcPjB1uHPbgWAA/ZvmST9w9AAf0KD1J504x2T+nAuzuk4PyQBQakQ6Iw0AS2UvvHQL6j84AAV9Kd2Xwj+CRwI9MPQ8TlkeekWMKEIFP+7CMT/1XL9O1TApzATgv3RmfyOQ4FAv0C///pRpIH6HJVEfspC/58k62+uJ/QbKm1wj5f/hf2QsCOCoL8gJE4RCERQNIHj1J8sxHeiC99Z9fDfIv+/jDqa6QTmBYGyt1E4Zfu/xjRexql4gXdB/77+/Hf8dtl5M+h7Br/9upLO4edR4nPW0jFN/otD/ov5NMafYPdbIAH+ewIJv0n9M2j/jNLmBGX990UU8D9qAIj+jmrH8e8scvrvEPLneOJfLvK3LP5yDYJlFi5zN32b5P9N9f+7ZfXfXZB/i/6lqV/Q3339SRbUZy8N+d56g/4OURCfRAF/6dvfA+PvEDj1J4OL/0yN+lfhOegdlIV+db14oAnfoVpITdfz+71o039dxfR9DZ7oHe+1wiwci0869s8DTvHHcFzYxoCuQ3xSzEX7/H9KseKf/esfqFg/B9/+cjX/P6hYsc/L7scp1u9Evz6YiP9T9Ov/fx2cn7GzjmH4H/wZ+LM+/mFBMPpzEOzXjfUvZPzzyPhejPzHYeFzCOwbFtwvLPzjWMAh6h9Lv6E/h7++IeP6hYx/HhkY/Mtnj/kHouFzWOxPe+zOFyr+eVT8mjP3czDxl6Gy+29u2x921+5fGPnHMUL81A1X+juZex8Y+XD3f8XJ5QsZ/zwy0D/m9H1nFwb7Sbsw9OeoIDgjB0gLhITeofNLWqfz5yD5F25+Om5I6A87+P8kbv4yFfALLf9D0EJC36k7+mn4+E5y4LfdvS9o/PPQQLH/MQboc/T0VxJrfn9z9gsuPx0uBPlPxVBR6K9iqN/47J92+7+w8k9jBSSd/kx8/GVcVTxH+wLEPw4ICoX/s635UeD4y9Aq3yZf2PjnsUGg/xw2/mOg9UuB/M8ACf0T42go9Jex1t/SZ75Uxz+PChqh/nMs5Edh5C9jrb9ihP1CyD+PEAL6p/Z0UehzWPVPCBG+EPLPI4T+boTsR2Hic8j0j5t2YAj7Cxb/OCxgCMF/rg/7l8HSX6Hx+ILF/wBYfC+Z+8eB4q/SSv+UfH0Zw8951l/o+PnooP8YMUd+Ilbg7wRJv7ou/PS+bhj2Havxo/pvoPB3Ip9dv39J/WdLnST+k5/x4zDwOcCpnzPyFbb62SD4byQQ/zgQfI5kXj/qW79A8HNB8P1c4R8n+M+xSqd9fon+nxD99xKCf5zgPwcg7x3okyE4bf3+zzcnAdRh/te7wPOrjefPhgQBEf/JIfhxAPkcf7wsfX0K7Isb/HwgoD+VDXwOM/6akglZ53/i+d35G/zaV0u2nw4FEvq5DOFzZPFfYFiL8/NPIPyrU98XHH42HL6bovvjwPA5omgvY/svsmCCCQbIoCHQJQfMKMQBOrEW05fV+OnYQL+nKL5zbMTfgo1fuyP8DhsKmIvw3QZEHzswRV864p/AAfETm/qiyOegopWChJePs0NAbdAXAn4yAmjiOwnXPw4Bn0OK50PXYf9u7A1OAzhnBhQUfqHgp6KAQn+mA4l8jinyWx++NcEXBv4xDBA/M8qEfA4v8ts7nvQVXv5HpP+9RNgfJ/3PMcZfK8m/xP+P0ACE+qmxA+RzDJEd3039PrigMHZfZ8f9fBR8L2fxx2HgO2XevzbS/TVs8E0bQF8leP+Mf/j9grsfB4nvJCvWaQjsghfu3yb0T/tPdtfVc/FlMn42NmAI+Q5lIIkfBY3PAUbm186iX6L/2aL/XrbqD9MK6HcyEOvu3VY4fl8qXIop/tdBtB+ne3xB4idD4teGpH+AxI/SBujnUGLcANpQnNOShuB/XQbw8ZHV/NGmXwnjL1x84IJ8f33CBfqHfsrUf/0t2cz/Sl/5BhUE+Q6nQDD4R0Hlc8zxEwr+eLjjmhdzar27VKGXdQyBTPO5AYdMwn+CBTjH8f31lxj6cSeBw/CvB2H9K4r3eQmi38sL//W6/7N5/RzF+791XgnkP7Qo+f4sw3/HLH+Ok/2xsOurD/i/r8/4O/BA/zla/h/P0/5R51mh6OfI2R/x8NXx+efjgcD+cBbidzzmH4eH7xQDvws1IOvLM/rxNBj+V0+Hf7eT9r3jIf4e6X8OoX0r0fgS/z8jfqAKfhgAzpdj182/+9n1ZFG50iXgPHX+/wM=</diagram></mxfile>" resource="https://www.draw.io/?url=https%3A%2F%2Fwww.draw.io%2Fshortcuts.svg#Uhttps%3A%2F%2Fwww.draw.io%2Fshortcuts.svg" style="background-color: rgb(238, 238, 238);"><defs><clipPath id="mx-clip-25-150-112-26-0"><rect x="25" y="150" width="112" height="26"/></clipPath><clipPath id="mx-clip-25-182-112-26-0"><rect x="25" y="182" width="112" height="26"/></clipPath><clipPath id="mx-clip-25-214-112-26-0"><rect x="25" y="214" width="112" height="26"/></clipPath><clipPath id="mx-clip-25-247-132-26-0"><rect x="25" y="247" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-279-112-26-0"><rect x="25" y="279" width="112" height="26"/></clipPath><clipPath id="mx-clip-25-311-112-26-0"><rect x="25" y="311" width="112" height="26"/></clipPath><clipPath id="mx-clip-25-343-112-26-0"><rect x="25" y="343" width="112" height="26"/></clipPath><clipPath id="mx-clip-102-241-10-20-0"><rect x="102" y="241" width="10" height="20"/></clipPath><clipPath id="mx-clip-120-150-192-26-0"><rect x="120" y="150" width="192" height="26"/></clipPath><clipPath id="mx-clip-120-182-202-26-0"><rect x="120" y="182" width="202" height="26"/></clipPath><clipPath id="mx-clip-120-214-192-26-0"><rect x="120" y="214" width="192" height="26"/></clipPath><clipPath id="mx-clip-120-247-192-26-0"><rect x="120" y="247" width="192" height="26"/></clipPath><clipPath id="mx-clip-120-279-192-26-0"><rect x="120" y="279" width="192" height="26"/></clipPath><clipPath id="mx-clip-120-311-192-26-0"><rect x="120" y="311" width="192" height="26"/></clipPath><clipPath id="mx-clip-120-343-211-26-0"><rect x="120" y="343" width="211" height="26"/></clipPath><clipPath id="mx-clip-385-118-82-26-0"><rect x="385" y="118" width="82" height="26"/></clipPath><clipPath id="mx-clip-385-150-92-26-0"><rect x="385" y="150" width="92" height="26"/></clipPath><clipPath id="mx-clip-385-182-82-26-0"><rect x="385" y="182" width="82" height="26"/></clipPath><clipPath id="mx-clip-385-214-92-26-0"><rect x="385" y="214" width="92" height="26"/></clipPath><clipPath id="mx-clip-385-247-82-26-0"><rect x="385" y="247" width="82" height="26"/></clipPath><clipPath id="mx-clip-385-279-92-26-0"><rect x="385" y="279" width="92" height="26"/></clipPath><clipPath id="mx-clip-385-311-99-26-0"><rect x="385" y="311" width="99" height="26"/></clipPath><clipPath id="mx-clip-385-343-102-26-0"><rect x="385" y="343" width="102" height="26"/></clipPath><clipPath id="mx-clip-506-118-147-26-0"><rect x="506" y="118" width="147" height="26"/></clipPath><clipPath id="mx-clip-506-150-147-26-0"><rect x="506" y="150" width="147" height="26"/></clipPath><clipPath id="mx-clip-506-182-147-26-0"><rect x="506" y="182" width="147" height="26"/></clipPath><clipPath id="mx-clip-506-214-147-26-0"><rect x="506" y="214" width="147" height="26"/></clipPath><clipPath id="mx-clip-506-247-102-26-0"><rect x="506" y="247" width="102" height="26"/></clipPath><clipPath id="mx-clip-506-279-138-26-0"><rect x="506" y="279" width="138" height="26"/></clipPath><clipPath id="mx-clip-506-311-137-26-0"><rect x="506" y="311" width="137" height="26"/></clipPath><clipPath id="mx-clip-506-343-128-26-0"><rect x="506" y="343" width="128" height="26"/></clipPath><clipPath id="mx-clip-378-438-158-26-0"><rect x="378" y="438" width="158" height="26"/></clipPath><clipPath id="mx-clip-378-502-122-26-0"><rect x="378" y="502" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-534-122-26-0"><rect x="378" y="534" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-567-122-26-0"><rect x="378" y="567" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-599-152-26-0"><rect x="378" y="599" width="152" height="26"/></clipPath><clipPath id="mx-clip-378-631-122-26-0"><rect x="378" y="631" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-664-122-26-0"><rect x="378" y="664" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-696-122-26-0"><rect x="378" y="696" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-728-122-26-0"><rect x="378" y="728" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-760-122-26-0"><rect x="378" y="760" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-793-122-26-0"><rect x="378" y="793" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-825-122-26-0"><rect x="378" y="825" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-857-122-26-0"><rect x="378" y="857" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-921-122-26-0"><rect x="378" y="921" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-954-122-26-0"><rect x="378" y="954" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-889-122-26-0"><rect x="378" y="889" width="122" height="26"/></clipPath><clipPath id="mx-clip-548-438-117-26-0"><rect x="548" y="438" width="117" height="26"/></clipPath><clipPath id="mx-clip-548-502-144-26-0"><rect x="548" y="502" width="144" height="26"/></clipPath><clipPath id="mx-clip-548-535-142-26-0"><rect x="548" y="535" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-567-142-26-0"><rect x="548" y="567" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-599-122-26-0"><rect x="548" y="599" width="122" height="26"/></clipPath><clipPath id="mx-clip-548-631-142-26-0"><rect x="548" y="631" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-664-142-26-0"><rect x="548" y="664" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-696-142-26-0"><rect x="548" y="696" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-728-142-26-0"><rect x="548" y="728" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-760-142-26-0"><rect x="548" y="760" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-793-142-26-0"><rect x="548" y="793" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-825-142-26-0"><rect x="548" y="825" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-857-142-26-0"><rect x="548" y="857" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-889-142-26-0"><rect x="548" y="889" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-921-142-26-0"><rect x="548" y="921" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-954-142-26-0"><rect x="548" y="954" width="142" height="26"/></clipPath><clipPath id="mx-clip-405-1073-239-20-0"><rect x="405" y="1073" width="239" height="20"/></clipPath><clipPath id="mx-clip-405-1111-258-20-0"><rect x="405" y="1111" width="258" height="20"/></clipPath><clipPath id="mx-clip-745-118-92-26-0"><rect x="745" y="118" width="92" height="26"/></clipPath><clipPath id="mx-clip-745-150-92-26-0"><rect x="745" y="150" width="92" height="26"/></clipPath><clipPath id="mx-clip-745-182-72-26-0"><rect x="745" y="182" width="72" height="26"/></clipPath><clipPath id="mx-clip-745-214-92-26-0"><rect x="745" y="214" width="92" height="26"/></clipPath><clipPath id="mx-clip-745-247-92-26-0"><rect x="745" y="247" width="92" height="26"/></clipPath><clipPath id="mx-clip-745-279-72-26-0"><rect x="745" y="279" width="72" height="26"/></clipPath><clipPath id="mx-clip-745-343-72-26-0"><rect x="745" y="343" width="72" height="26"/></clipPath><clipPath id="mx-clip-834-118-162-26-0"><rect x="834" y="118" width="162" height="26"/></clipPath><clipPath id="mx-clip-834-150-162-26-0"><rect x="834" y="150" width="162" height="26"/></clipPath><clipPath id="mx-clip-834-182-162-26-0"><rect x="834" y="182" width="162" height="26"/></clipPath><clipPath id="mx-clip-834-214-162-26-0"><rect x="834" y="214" width="162" height="26"/></clipPath><clipPath id="mx-clip-834-247-162-26-0"><rect x="834" y="247" width="162" height="26"/></clipPath><clipPath id="mx-clip-834-279-152-26-0"><rect x="834" y="279" width="152" height="26"/></clipPath><clipPath id="mx-clip-834-343-85-26-0"><rect x="834" y="343" width="85" height="26"/></clipPath><clipPath id="mx-clip-745-438-222-26-0"><rect x="745" y="438" width="222" height="26"/></clipPath><clipPath id="mx-clip-745-470-232-26-0"><rect x="745" y="470" width="232" height="26"/></clipPath><clipPath id="mx-clip-745-502-222-26-0"><rect x="745" y="502" width="222" height="26"/></clipPath><clipPath id="mx-clip-745-535-222-26-0"><rect x="745" y="535" width="222" height="26"/></clipPath><clipPath id="mx-clip-745-567-222-26-0"><rect x="745" y="567" width="222" height="26"/></clipPath><clipPath id="mx-clip-1005-438-408-26-0"><rect x="1005" y="438" width="408" height="26"/></clipPath><clipPath id="mx-clip-1005-470-408-26-0"><rect x="1005" y="470" width="408" height="26"/></clipPath><clipPath id="mx-clip-1005-502-262-26-0"><rect x="1005" y="502" width="262" height="26"/></clipPath><clipPath id="mx-clip-1005-534-262-26-0"><rect x="1005" y="534" width="262" height="26"/></clipPath><clipPath id="mx-clip-1005-567-262-26-0"><rect x="1005" y="567" width="262" height="26"/></clipPath><clipPath id="mx-clip-745-664-82-26-0"><rect x="745" y="664" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-696-82-26-0"><rect x="745" y="696" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-728-82-26-0"><rect x="745" y="728" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-760-82-26-0"><rect x="745" y="760" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-825-82-27-0"><rect x="745" y="825" width="82" height="27"/></clipPath><clipPath id="mx-clip-745-857-82-26-0"><rect x="745" y="857" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-889-82-26-0"><rect x="745" y="889" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-922-82-26-0"><rect x="745" y="922" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-954-82-26-0"><rect x="745" y="954" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-986-82-26-0"><rect x="745" y="986" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-1018-82-26-0"><rect x="745" y="1018" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-1051-82-26-0"><rect x="745" y="1051" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-1083-82-26-0"><rect x="745" y="1083" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-1115-98-26-0"><rect x="745" y="1115" width="98" height="26"/></clipPath><clipPath id="mx-clip-845-696-132-26-0"><rect x="845" y="696" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-664-132-26-0"><rect x="845" y="664" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-728-132-26-0"><rect x="845" y="728" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-760-132-26-0"><rect x="845" y="760" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-824-195-28-0"><rect x="845" y="824" width="195" height="28"/></clipPath><clipPath id="mx-clip-845-857-132-26-0"><rect x="845" y="857" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-889-132-26-0"><rect x="845" y="889" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-922-132-26-0"><rect x="845" y="922" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-954-132-26-0"><rect x="845" y="954" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-986-132-26-0"><rect x="845" y="986" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-1019-132-26-0"><rect x="845" y="1019" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-1051-132-26-0"><rect x="845" y="1051" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-1083-132-26-0"><rect x="845" y="1083" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-1115-208-26-0"><rect x="845" y="1115" width="208" height="26"/></clipPath><clipPath id="mx-clip-1105-899-102-26-0"><rect x="1105" y="899" width="102" height="26"/></clipPath><clipPath id="mx-clip-1105-932-102-26-0"><rect x="1105" y="932" width="102" height="26"/></clipPath><clipPath id="mx-clip-1105-964-102-26-0"><rect x="1105" y="964" width="102" height="26"/></clipPath><clipPath id="mx-clip-1105-996-102-26-0"><rect x="1105" y="996" width="102" height="26"/></clipPath><clipPath id="mx-clip-1215-899-132-26-0"><rect x="1215" y="899" width="132" height="26"/></clipPath><clipPath id="mx-clip-1215-932-188-26-0"><rect x="1215" y="932" width="188" height="26"/></clipPath><clipPath id="mx-clip-1215-964-112-26-0"><rect x="1215" y="964" width="112" height="26"/></clipPath><clipPath id="mx-clip-1215-996-112-26-0"><rect x="1215" y="996" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-118-112-26-0"><rect x="1105" y="118" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-150-112-26-0"><rect x="1105" y="150" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-182-112-26-0"><rect x="1105" y="182" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-214-112-26-0"><rect x="1105" y="214" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-247-112-26-0"><rect x="1105" y="247" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-279-112-26-0"><rect x="1105" y="279" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-311-112-26-0"><rect x="1105" y="311" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-343-132-26-0"><rect x="1105" y="343" width="132" height="26"/></clipPath><clipPath id="mx-clip-1245-118-141-26-0"><rect x="1245" y="118" width="141" height="26"/></clipPath><clipPath id="mx-clip-1245-150-141-26-0"><rect x="1245" y="150" width="141" height="26"/></clipPath><clipPath id="mx-clip-1245-182-141-26-0"><rect x="1245" y="182" width="141" height="26"/></clipPath><clipPath id="mx-clip-1245-214-141-26-0"><rect x="1245" y="214" width="141" height="26"/></clipPath><clipPath id="mx-clip-1245-247-141-26-0"><rect x="1245" y="247" width="141" height="26"/></clipPath><clipPath id="mx-clip-1245-279-141-26-0"><rect x="1245" y="279" width="141" height="26"/></clipPath><clipPath id="mx-clip-1245-311-122-26-0"><rect x="1245" y="311" width="122" height="26"/></clipPath><clipPath id="mx-clip-1245-343-132-26-0"><rect x="1245" y="343" width="132" height="26"/></clipPath><clipPath id="mx-clip-1105-663-92-26-0"><rect x="1105" y="663" width="92" height="26"/></clipPath><clipPath id="mx-clip-1105-696-92-26-0"><rect x="1105" y="696" width="92" height="26"/></clipPath><clipPath id="mx-clip-1105-728-92-26-0"><rect x="1105" y="728" width="92" height="26"/></clipPath><clipPath id="mx-clip-1105-760-92-26-0"><rect x="1105" y="760" width="92" height="26"/></clipPath><clipPath id="mx-clip-1105-793-92-26-0"><rect x="1105" y="793" width="92" height="26"/></clipPath><clipPath id="mx-clip-1215-663-112-26-0"><rect x="1215" y="663" width="112" height="26"/></clipPath><clipPath id="mx-clip-1215-696-112-26-0"><rect x="1215" y="696" width="112" height="26"/></clipPath><clipPath id="mx-clip-1215-728-112-26-0"><rect x="1215" y="728" width="112" height="26"/></clipPath><clipPath id="mx-clip-1215-760-112-26-0"><rect x="1215" y="760" width="112" height="26"/></clipPath><clipPath id="mx-clip-1215-793-112-26-0"><rect x="1215" y="793" width="112" height="26"/></clipPath><clipPath id="mx-clip-1084-82-165-26-0"><rect x="1084" y="82" width="165" height="26"/></clipPath><clipPath id="mx-clip-725-82-165-26-0"><rect x="725" y="82" width="165" height="26"/></clipPath><clipPath id="mx-clip-369-82-165-26-0"><rect x="369" y="82" width="165" height="26"/></clipPath><clipPath id="mx-clip-5-82-165-26-0"><rect x="5" y="82" width="165" height="26"/></clipPath><clipPath id="mx-clip-4-403-165-26-0"><rect x="4" y="403" width="165" height="26"/></clipPath><clipPath id="mx-clip-365-403-165-26-0"><rect x="365" y="403" width="165" height="26"/></clipPath><clipPath id="mx-clip-725-403-165-26-0"><rect x="725" y="403" width="165" height="26"/></clipPath><clipPath id="mx-clip-1085-627-165-26-0"><rect x="1085" y="627" width="165" height="26"/></clipPath><clipPath id="mx-clip-725-627-165-26-0"><rect x="725" y="627" width="165" height="26"/></clipPath><clipPath id="mx-clip-178-5-273-59-0"><rect x="178" y="5" width="273" height="59"/></clipPath><clipPath id="mx-clip-165-1115-142-26-0"><rect x="165" y="1115" width="142" height="26"/></clipPath><clipPath id="mx-clip-25-1115-132-26-0"><rect x="25" y="1115" width="132" height="26"/></clipPath><clipPath id="mx-clip-745-311-72-26-0"><rect x="745" y="311" width="72" height="26"/></clipPath><clipPath id="mx-clip-834-311-152-26-0"><rect x="834" y="311" width="152" height="26"/></clipPath><clipPath id="mx-clip-378-470-142-26-0"><rect x="378" y="470" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-470-115-26-0"><rect x="548" y="470" width="115" height="26"/></clipPath><clipPath id="mx-clip-845-793-132-26-0"><rect x="845" y="793" width="132" height="26"/></clipPath><clipPath id="mx-clip-745-792-82-26-0"><rect x="745" y="792" width="82" height="26"/></clipPath><clipPath id="mx-clip-120-118-192-26-0"><rect x="120" y="118" width="192" height="26"/></clipPath><clipPath id="mx-clip-25-118-112-26-0"><rect x="25" y="118" width="112" height="26"/></clipPath><clipPath id="mx-clip-130-787-10-20-0"><rect x="130" y="787" width="10" height="20"/></clipPath><clipPath id="mx-clip-91-147-10-20-0"><rect x="91" y="147" width="10" height="20"/></clipPath><clipPath id="mx-clip-25-438-132-26-0"><rect x="25" y="438" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-470-132-26-0"><rect x="25" y="470" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-502-132-26-0"><rect x="25" y="502" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-535-132-26-0"><rect x="25" y="535" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-567-132-26-0"><rect x="25" y="567" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-599-132-26-0"><rect x="25" y="599" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-631-132-26-0"><rect x="25" y="631" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-664-132-26-0"><rect x="25" y="664" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-696-132-26-0"><rect x="25" y="696" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-728-132-26-0"><rect x="25" y="728" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-760-132-26-0"><rect x="25" y="760" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-793-132-26-0"><rect x="25" y="793" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-825-132-26-0"><rect x="25" y="825" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-857-132-26-0"><rect x="25" y="857" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-889-132-26-0"><rect x="25" y="889" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-922-132-26-0"><rect x="25" y="922" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-954-132-26-0"><rect x="25" y="954" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-986-132-26-0"><rect x="25" y="986" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-1019-132-26-0"><rect x="25" y="1019" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-1051-132-26-0"><rect x="25" y="1051" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-1083-132-26-0"><rect x="25" y="1083" width="132" height="26"/></clipPath><clipPath id="mx-clip-165-438-142-26-0"><rect x="165" y="438" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-470-142-26-0"><rect x="165" y="470" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-502-142-26-0"><rect x="165" y="502" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-535-142-26-0"><rect x="165" y="535" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-567-142-26-0"><rect x="165" y="567" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-599-142-26-0"><rect x="165" y="599" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-631-142-26-0"><rect x="165" y="631" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-664-142-26-0"><rect x="165" y="664" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-696-142-26-0"><rect x="165" y="696" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-728-151-26-0"><rect x="165" y="728" width="151" height="26"/></clipPath><clipPath id="mx-clip-165-760-142-26-0"><rect x="165" y="760" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-954-142-26-0"><rect x="165" y="954" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-825-142-26-0"><rect x="165" y="825" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-857-142-26-0"><rect x="165" y="857" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-889-142-26-0"><rect x="165" y="889" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-922-142-26-0"><rect x="165" y="922" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-986-142-26-0"><rect x="165" y="986" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-793-142-26-0"><rect x="165" y="793" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-1019-168-26-0"><rect x="165" y="1019" width="168" height="26"/></clipPath><clipPath id="mx-clip-165-1051-142-26-0"><rect x="165" y="1051" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-1083-148-26-0"><rect x="165" y="1083" width="148" height="26"/></clipPath><clipPath id="mx-clip-485-16-233-26-0"><rect x="485" y="16" width="233" height="26"/></clipPath><clipPath id="mx-clip-1105-825-92-26-0"><rect x="1105" y="825" width="92" height="26"/></clipPath><clipPath id="mx-clip-1105-858-92-26-0"><rect x="1105" y="858" width="92" height="26"/></clipPath><clipPath id="mx-clip-1215-825-112-26-0"><rect x="1215" y="825" width="112" height="26"/></clipPath><clipPath id="mx-clip-1215-858-112-26-0"><rect x="1215" y="858" width="112" height="26"/></clipPath></defs><rect x="7" y="431" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="463" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="527" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="495" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="560" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="592" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="656" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="624" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="689" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="721" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="753" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="785" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="818" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="850" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="882" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="914" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="1108" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="1076" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="1044" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="1011" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="979" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="947" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="431" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="527" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="560" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="592" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="656" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="624" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="495" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="463" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="689" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="721" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="753" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="785" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="818" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="850" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="882" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="914" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="947" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="111" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="143" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="175" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="207" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="239" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="304" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="272" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="367" y="336" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="111" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="143" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="175" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="207" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="239" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="272" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="304" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="7" y="336" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="111" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="143" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="175" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="207" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="239" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="272" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="304" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="336" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="336" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="304" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="272" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="239" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="207" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="175" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="143" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="111" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="431" width="700" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="463" width="700" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="495" width="700" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="527" width="700" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="560" width="700" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="656" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="689" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="753" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="721" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="785" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="818" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="850" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="882" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="914" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="947" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="1011" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="979" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="1044" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="1076" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="727" y="1108" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="656" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="689" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="721" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="753" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="785" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="892" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="924" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="957" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><rect x="1087" y="989" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-150-112-26-0)" font-size="12px"><text x="26.5" y="162.5">Shift+Enter</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-182-112-26-0)" font-size="12px"><text x="26.5" y="194.5">Enter</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-214-112-26-0)" font-size="12px"><text x="26.5" y="226.5">F2 / Enter</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-247-132-26-0)" font-size="12px"><text x="26.5" y="259">F2 / Tab / Esc</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-279-112-26-0)" font-size="12px"><text x="26.5" y="291.5">Ctrl+B / I</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-311-112-26-0)" font-size="12px"><text x="26.5" y="323.5">Ctrl+U</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-343-112-26-0)" font-size="12px"><text x="26.5" y="355.5">Ctrl+. / ,</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-102-241-10-20-0)" font-size="10px"><text x="103.5" y="251.5">1</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-120-150-192-26-0)" font-size="12px"><text x="121.5" y="162.5">New Line in Formatted Labels</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-120-182-202-26-0)" font-size="12px"><text x="121.5" y="194.5">New Paragraph in Formatted Labels</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-120-214-192-26-0)" font-size="12px"><text x="121.5" y="226.5">Start Editing Label of Selected Cell</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-120-247-192-26-0)" font-size="12px"><text x="121.5" y="259">Stop Editing and Apply Value</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-120-279-192-26-0)" font-size="12px"><text x="121.5" y="291.5">Toggle Bold/Italic on Selected Text</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-120-311-192-26-0)" font-size="12px"><text x="121.5" y="323.5">Toggle Underline on Selected Text</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-120-343-211-26-0)" font-size="12px"><text x="121.5" y="355.5">Superscript/Subscript on Selected Text</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-118-82-26-0)" font-size="12px"><text x="386.5" y="130.5">(Shift+)Tab</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-150-92-26-0)" font-size="12px"><text x="386.5" y="162.5">Alt+(Shift+)Tab</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-182-82-26-0)" font-size="12px"><text x="386.5" y="194.5">Shift+Drag</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-214-92-26-0)" font-size="12px"><text x="386.5" y="226.5">Alt+Shift+Drag</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-247-82-26-0)" font-size="12px"><text x="386.5" y="259">Ctrl+(Shift+)A</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-279-92-26-0)" font-size="12px"><text x="386.5" y="291.5">Ctrl+Shift+I / E</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-311-99-26-0)" font-size="12px"><text x="386.5" y="323.5">Ctrl / Shift+Click</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-343-102-26-0)" font-size="12px"><text x="386.5" y="355.5">Alt+Click</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-118-147-26-0)" font-size="12px"><text x="507.5" y="130.5">Select Next / Previous</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-150-147-26-0)" font-size="12px"><text x="507.5" y="162.5">Select Child / Parent</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-182-147-26-0)" font-size="12px"><text x="507.5" y="194.5">Add to Selection</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-214-147-26-0)" font-size="12px"><text x="507.5" y="226.5">Remove from Selection</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-247-102-26-0)" font-size="12px"><text x="507.5" y="259">Select All / None</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-279-138-26-0)" font-size="12px"><text x="507.5" y="291.5">Select Vertices / Edges</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-311-137-26-0)" font-size="12px"><text x="507.5" y="323.5">Toggle Selection State</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-343-128-26-0)" font-size="12px"><text x="507.5" y="355.5">Select Cell Below</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-438-158-26-0)" font-size="12px"><text x="379.5" y="450.5">Alt+Mouse wheel</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-502-122-26-0)" font-size="12px"><text x="379.5" y="514.5">Ctrl+Mouse wheel</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-534-122-26-0)" font-size="12px"><text x="379.5" y="547">Mouse wheel</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-567-122-26-0)" font-size="12px"><text x="379.5" y="579.5">Shift+Mouse wheel</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-599-152-26-0)" font-size="12px"><text x="379.5" y="611.5">Space / Right mouse Drag</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-631-122-26-0)" font-size="12px"><text x="379.5" y="643.5">Ctrl+Shift+Drag</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-664-122-26-0)" font-size="12px"><text x="379.5" y="676">Ctrl+Shift+Connect</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-696-122-26-0)" font-size="12px"><text x="379.5" y="708.5">Home</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-728-122-26-0)" font-size="12px"><text x="379.5" y="740.5">End</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-760-122-26-0)" font-size="12px"><text x="379.5" y="772.5">Ctrl+H</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-793-122-26-0)" font-size="12px"><text x="379.5" y="805">Ctrl+Shift+H</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-825-122-26-0)" font-size="12px"><text x="379.5" y="837.5">Ctrl+J</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-857-122-26-0)" font-size="12px"><text x="379.5" y="869.5">Ctrl+Shift+J</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-921-122-26-0)" font-size="12px"><text x="379.5" y="934">Ctrl + (Numpad)</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-954-122-26-0)" font-size="12px"><text x="379.5" y="966.5">Ctrl - (Numpad)</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-889-122-26-0)" font-size="12px"><text x="379.5" y="901.5">Ctrl+0</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-438-117-26-0)" font-size="12px"><text x="549.5" y="450.5">Canvas Zoom In/Out</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-502-144-26-0)" font-size="12px"><text x="549.5" y="514.5">Screen Zoom In/Out (Mac)</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-535-142-26-0)" font-size="12px"><text x="549.5" y="547">Canvas Vertical Scroll</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-567-142-26-0)" font-size="12px"><text x="549.5" y="579.5">Canvas Horizontal Scroll</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-599-122-26-0)" font-size="12px"><text x="549.5" y="611.5">Pan Canvas</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-631-142-26-0)" font-size="12px"><text x="549.5" y="643.5">Create / Remove Space</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-664-142-26-0)" font-size="12px"><text x="549.5" y="676">Disable Connections</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-696-142-26-0)" font-size="12px"><text x="549.5" y="708.5">Home</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-728-142-26-0)" font-size="12px"><text x="549.5" y="740.5">Refresh</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-760-142-26-0)" font-size="12px"><text x="549.5" y="772.5">Reset View</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-793-142-26-0)" font-size="12px"><text x="549.5" y="805">Fit Window</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-825-142-26-0)" font-size="12px"><text x="549.5" y="837.5">Fit Page</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-857-142-26-0)" font-size="12px"><text x="549.5" y="869.5">Fit Two Pages</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-889-142-26-0)" font-size="12px"><text x="549.5" y="901.5">Custom Zoom</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-921-142-26-0)" font-size="12px"><text x="549.5" y="934">Zoom In</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-954-142-26-0)" font-size="12px"><text x="549.5" y="966.5">Zoom Out</text></g><g fill="#333333" font-family="Helvetica" font-size="12px"><text x="406.5" y="1026.5">Click to connect and clone (ctrl+click to clone,</text><text x="406.5" y="1040.5">shift+click to connect). Drag to connect</text><text x="406.5" y="1054.5">(ctrl+drag to clone).</text></g><image x="382.5" y="1018.5" width="20" height="20" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAaCAYAAACHD21cAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NThDQzc5RTU5NjZGMTFFNTg5NTRDNzQwMTgwNDlEQzQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NThDQzc5RTY5NjZGMTFFNTg5NTRDNzQwMTgwNDlEQzQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1OENDNzlFMzk2NkYxMUU1ODk1NEM3NDAxODA0OURDNCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1OENDNzlFNDk2NkYxMUU1ODk1NEM3NDAxODA0OURDNCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PrHdKTUAAADDSURBVHjanNTBCgFRFIfxMeTZyEKkiBSRxbwREZGiNFZKWSnvY6OUUv6n7ilZaL459XVXv6a5c+cWovQeaSZqFoGJwzpVozzQZq4GeSDCv7AYcJ9Cx0vVpdDxWrUpdLxVLQr/4jjDBpYDblDoeKdqFDpOHRP4jSsU2rzVg8KnqqpbDFFdXck7vlRTXciuOjqT72ioo07k5Nju9dSRnFVHB/J3GBqqPf0fx2pDbwBDK3Ln2MdN1CLraSiFNcn6JJ+PAAMAbnMl1tyDPD8AAAAASUVORK5CYII=" pointer-events="none"/><image x="384.33" y="1108.5" width="15" height="25" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAZAgMAAACTN5xfAAAACVBMVEX///////8AAACO9MPsAAAAAXRSTlMAQObYZgAAAFRJREFUeF5VyjEKgDAQRNGPRSA38AB6JEWsUkggt9hLGDbdlh5Tp7R5DPzBAEK46OI2UcQhdrGZKB/nA13B9Q5hqwEij+akVi/yFDMJFjL8VlUdw1+gHxbW+YsglAAAAABJRU5ErkJggg==" pointer-events="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-405-1073-239-20-0)" font-size="12px"><text x="406.5" y="1086.5">Click to rotate 90° clockwise. Drag to rotate.</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-405-1111-258-20-0)" font-size="12px"><text x="406.5" y="1124.5">Ctrl: Show Dialog, Alt: Origin, Shift: Ignore XML</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-118-92-26-0)" font-size="12px"><text x="746.5" y="130.5">Ctrl+Shift+L</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-150-92-26-0)" font-size="12px"><text x="746.5" y="162.5">Ctrl+Shift+O</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-182-72-26-0)" font-size="12px"><text x="746.5" y="194.5">Ctrl+M</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-214-92-26-0)" font-size="12px"><text x="746.5" y="226.5">Ctrl+Shift+P</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-247-92-26-0)" font-size="12px"><text x="746.5" y="259">Ctrl+Shift+M</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-279-72-26-0)" font-size="12px"><text x="746.5" y="291.5">Rightclick</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-343-72-26-0)" font-size="12px"><text x="746.5" y="355.5">F1</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-834-118-162-26-0)" font-size="12px"><text x="835.5" y="130.5">Toggle Layers Window</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-834-150-162-26-0)" font-size="12px"><text x="835.5" y="162.5">Toggle Outline Window</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-834-182-162-26-0)" font-size="12px"><text x="835.5" y="194.5">Edit Metadata</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-834-214-162-26-0)" font-size="12px"><text x="835.5" y="226.5">Toggle Format Panel</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-834-247-162-26-0)" font-size="12px"><text x="835.5" y="259">Edit Vertex Geometry</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-834-279-152-26-0)" font-size="12px"><text x="835.5" y="291.5">Context Menu</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-834-343-85-26-0)" font-size="12px"><text x="835.5" y="355.5">About</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-438-222-26-0)" font-size="12px"><text x="746.5" y="450.5">Alt+(Shift+)Drag from sidebar</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-470-232-26-0)" font-size="12px"><text x="746.5" y="482.5">Alt+(Shift / Ctrl)+Click on a sidebar item</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-502-222-26-0)" font-size="12px"><text x="746.5" y="514.5">Shift+Click on a sidebar item</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-535-222-26-0)" font-size="12px"><text x="746.5" y="547">Click on a sidebar item</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-567-222-26-0)" font-size="12px"><text x="746.5" y="579.5">Ctrl+Shift+Move Endpoint</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1005-438-408-26-0)" font-size="12px"><text x="1006.5" y="450.5">Disable replace, connect on drop (drop targets), Shift ignores current style</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1005-470-408-26-0)" font-size="12px"><text x="1006.5" y="482.5">Inserts and connects the selected item (Shift ignores current style)</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1005-502-262-26-0)" font-size="12px"><text x="1006.5" y="514.5">Replaces the selected item with the clicked one</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1005-534-262-26-0)" font-size="12px"><text x="1006.5" y="547">Connects unconnected side of selected edge</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1005-567-262-26-0)" font-size="12px"><text x="1006.5" y="579.5">Disables connections</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-664-82-26-0)" font-size="12px"><text x="746.5" y="676">Ctrl+S</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-696-82-26-0)" font-size="12px"><text x="746.5" y="708.5">Ctrl+Shift+S</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-728-82-26-0)" font-size="12px"><text x="746.5" y="740.5">Ctrl+Z</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-760-82-26-0)" font-size="12px"><text x="746.5" y="772.5">Alt+Shift+A</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-825-82-27-0)" font-size="12px"><text x="746.5" y="837">Hold Shift</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-857-82-26-0)" font-size="12px"><text x="746.5" y="869.5">Ctrl+Shift+G</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-889-82-26-0)" font-size="12px"><text x="746.5" y="901.5">Ctrl+P</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-922-82-26-0)" font-size="12px"><text x="746.5" y="934">Ctrl+Y</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-954-82-26-0)" font-size="12px"><text x="746.5" y="966.5">Ctrl+Shift+Z</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-986-82-26-0)" font-size="12px"><text x="746.5" y="998.5">Ctrl+Shift+X</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-1018-82-26-0)" font-size="12px"><text x="746.5" y="1031">Ctrl+K</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-1051-82-26-0)" font-size="12px"><text x="746.5" y="1063.5">Ctrl+Shift+K</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-1083-82-26-0)" font-size="12px"><text x="746.5" y="1095.5">Esc</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-1115-98-26-0)" font-size="12px"><text x="746.5" y="1127.5">Alt+Drag / Drop</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-696-132-26-0)" font-size="12px"><text x="846.5" y="708.5">Save as</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-664-132-26-0)" font-size="12px"><text x="846.5" y="676">Save</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-728-132-26-0)" font-size="12px"><text x="846.5" y="740.5">Undo</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-760-132-26-0)" font-size="12px"><text x="846.5" y="772.5">Connection Arrows</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-824-195-28-0)" font-size="12px"><text x="846.5" y="836.5">Ignores handles under the mouse</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-857-132-26-0)" font-size="12px"><text x="846.5" y="869.5">Toggle grid</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-889-132-26-0)" font-size="12px"><text x="846.5" y="901.5">Print</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-922-132-26-0)" font-size="12px"><text x="846.5" y="934">Redo (Windows)</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-954-132-26-0)" font-size="12px"><text x="846.5" y="966.5">Redo (Linux/Mac)</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-986-132-26-0)" font-size="12px"><text x="846.5" y="998.5">Insert Text</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-1019-132-26-0)" font-size="12px"><text x="846.5" y="1031">Insert Rectangle</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-1051-132-26-0)" font-size="12px"><text x="846.5" y="1063.5">Insert Ellipse</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-1083-132-26-0)" font-size="12px"><text x="846.5" y="1095.5">Cancel Action</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-1115-208-26-0)" font-size="12px"><text x="846.5" y="1127.5">Force Rubberband / Ignore Group</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-899-102-26-0)" font-size="12px"><text x="1106.5" y="911.5">Drag</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-932-102-26-0)" font-size="12px"><text x="1106.5" y="944">Tap and hold</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-964-102-26-0)" font-size="12px"><text x="1106.5" y="976.5">Pinch</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-996-102-26-0)" font-size="12px"><text x="1106.5" y="1008.5">Tap selected cell</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-899-132-26-0)" font-size="12px"><text x="1216.5" y="911.5">Move Cell / Pan Canvas</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-932-188-26-0)" font-size="12px"><text x="1216.5" y="944.5">Toggle Selection / Rubberband</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-964-112-26-0)" font-size="12px"><text x="1216.5" y="976.5">Zoom</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-996-112-26-0)" font-size="12px"><text x="1216.5" y="1008.5">Context Menu</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-118-112-26-0)" font-size="12px"><text x="1106.5" y="130.5">Cursor</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-150-112-26-0)" font-size="12px"><text x="1106.5" y="162.5">Shift+Cursor</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-182-112-26-0)" font-size="12px"><text x="1106.5" y="194.5">Ctrl+Cursor</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-214-112-26-0)" font-size="12px"><text x="1106.5" y="226.5">Ctrl+Shift+Cursor</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-247-112-26-0)" font-size="12px"><text x="1106.5" y="259">Alt+Shift+Cursor</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-279-112-26-0)" font-size="12px"><text x="1106.5" y="291.5">Alt+Cursor</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-311-112-26-0)" font-size="12px"><text x="1106.5" y="323.5">Ctrl+Shift+Pg Up</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-343-132-26-0)" font-size="12px"><text x="1106.5" y="355.5">Ctrl+Shift+Pg Down</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-118-141-26-0)" font-size="12px"><text x="1246.5" y="130.5">Scroll / Move cell (1px)</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-150-141-26-0)" font-size="12px"><text x="1246.5" y="162.5">Move cell (grid size)</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-182-141-26-0)" font-size="12px"><text x="1246.5" y="194.5">Resize cell (1px)</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-214-141-26-0)" font-size="12px"><text x="1246.5" y="226.5">Resize cell (grid size)</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-247-141-26-0)" font-size="12px"><text x="1246.5" y="259">Clone and connect</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-279-141-26-0)" font-size="12px"><text x="1246.5" y="291.5">Scroll Page</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-311-122-26-0)" font-size="12px"><text x="1246.5" y="323.5">Previous Page</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-343-132-26-0)" font-size="12px"><text x="1246.5" y="355.5">Next Page</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-663-92-26-0)" font-size="12px"><text x="1106.5" y="675.5">Ctrl+Shift+R</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-696-92-26-0)" font-size="12px"><text x="1106.5" y="708.5">Ctrl+E</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-728-92-26-0)" font-size="12px"><text x="1106.5" y="740.5">Ctrl+Shift+D</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-760-92-26-0)" font-size="12px"><text x="1106.5" y="772.5">Ctrl+Shift+C</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-793-92-26-0)" font-size="12px"><text x="1106.5" y="805">Ctrl+Shift+V</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-663-112-26-0)" font-size="12px"><text x="1216.5" y="675.5">Clear Default Style</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-696-112-26-0)" font-size="12px"><text x="1216.5" y="708.5">Edit Style</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-728-112-26-0)" font-size="12px"><text x="1216.5" y="740.5">Set as Default Style</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-760-112-26-0)" font-size="12px"><text x="1216.5" y="772.5">Copy Style</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-793-112-26-0)" font-size="12px"><text x="1216.5" y="805">Paste Style</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1084-82-165-26-0)" font-size="14px"><text x="1085.5" y="96.5">CURSOR / PAGE KEYS</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-725-82-165-26-0)" font-size="14px"><text x="726.5" y="96.5">TOOLS</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-369-82-165-26-0)" font-size="14px"><text x="370.5" y="96.5">SELECTION</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-5-82-165-26-0)" font-size="14px"><text x="6.5" y="96.5">LABELS</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-4-403-165-26-0)" font-size="14px"><text x="5.5" y="417.5">CANVAS</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-365-403-165-26-0)" font-size="14px"><text x="366.5" y="417.5">VIEW</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-725-403-165-26-0)" font-size="14px"><text x="726.5" y="417.5">SIDEBAR / CONNECT</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1085-627-165-26-0)" font-size="14px"><text x="1086.5" y="641.5">STYLES</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-725-627-165-26-0)" font-size="14px"><text x="726.5" y="641.5">DOCUMENT</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-178-5-273-59-0)" font-size="30px"><text x="179.5" y="35.5">Keyboard Shortcuts</text></g><image x="365.5" y="1064.5" width="39" height="37" xlink:href="data:image/png;base64,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" preserveAspectRatio="none" pointer-events="none"/><image x="375.5" y="1067.5" width="29" height="31" xlink:href="data:image/png;base64,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" preserveAspectRatio="none" opacity="0.7" pointer-events="none"/><image x="3.5" y="0.5" width="159" height="42" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAe4AAACCCAYAAACAVivDAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDc3MUZCMDdFQzgwMTFFNjkyQ0M4QTZGMTk4QjM2MUYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDc3MUZCMDhFQzgwMTFFNjkyQ0M4QTZGMTk4QjM2MUYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NzcxRkIwNUVDODAxMUU2OTJDQzhBNkYxOThCMzYxRiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NzcxRkIwNkVDODAxMUU2OTJDQzhBNkYxOThCMzYxRiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqCt2j8AACJxSURBVHja7J0HmFTV2cffmdnZvrDLiqAIAjEqggouyoegUgQsSSD2GjWWaDRFjAU0dokdE0sSY1RiibEgKt0CBLEhoogKaMQGUrfvbJndme99d87GdTOze++5d2bunfv/Pc/73IWZU+65d87/1Pf4SFExI7gPX6axHcPWk0Ams4NtAduMkunhdSgOAABwDz4l2lP48iRbHorEUzSwncriPQdFAQAALhFuFu19+bqaLRfF4Unq2YaxeK9HUQAAgPPxs02HaHsaGWWZhmIAAAD3CPfRKAbPcwyKAAAA3CPcu6AYPA8WIwIAgIuEGwAAAAAQbgAAAABAuAEAAAAINwAAAAAg3AAAAACAcAMAAAAQbgAAAABAuAEAAAAA4QYAAAA8SVam3Eig5xDKGjiR/MUDyBfMT2pa0XCIIpUbqfnzxdSyfS3eIgAAABBuo4hQ5x91H2UNmJD6xMfdSs0bX6bQwktahRwAAABIuu65upfdexgVnf1mekS7reXDaUseJC8AAAAAhDsBvtxiKjhhNvnyeqQ/L5yH/ONmUzSrBG8UAAAACHc8ckZcSv6iPs7p/XfvQ/6hl1Gk2Ye3CgAAAIS7I9lDznBcngqGn0q15UGKtEC8AQAAQLi/y3RBb/J36+u4fGWV9CVffm+q3QnxBgAAAOH+L76Cno7NW6CoZ+twee3OLIpG8IIBAACAcLNy+x2ft0izv7XnDfEGAAAA4XYJLWER72yINwAAAAi3e8Tb17pgDeINAAAAwu0W8W7yx8Q7irIAAAAA4XaNeNdBvAEAAEC43UNzY0y8CeINAAAAwu0i8a6AeAMAAIBwu4ZwA8QbAAAAhNt14h2qzEJBAAAAgHC7hab6APe8Id4AAACMA9VId8+bxTvkI8ovbkZhuISysrIAXway9WfrzlaoPqpnq2LbzLZu1apVTSgtAACEOxN73iHWARHv7hBvhwt2kC+3sZ3DVtzF1xv4+7P5+ksW8CqUHgAAwp1p4l0XEO2mPIi3kzmO7VKD381lO41tA9sNKDoAjFMxI1jCl8lsQ9n2pNjIlkzt1rFtZ/uIbWHJ9PCHEG6QVhpFvH1Ryu3WgsJwJrtphClBsQFgSrSn8+Vatpwuvno7f/dVvp7KAr7dS2WExWkOo6E2ixpqAigIAIAXRftcvtxiQLTbGM/2mNfKCcLtRPGuYfGuhXgDADzHFRphJrHgD4Fwg/SLd3UWNUK8AQDe6W0P4MvemsHHQbiBI6hn8ZZFawAA4AH2sxB2Xwi302lucGzWomF78xaqgngDADxBDwthu0G4HU6kZhMrZMSBqh2hlspNtkcbkp53PQZHAAAZDXoomSzc0aZaat70luPy1bjxHYo01iXhhlm8K4MQbwBAJmOl8qyGcLuAxnfucVyeql67N4mtlZh4y+EkAACQgXxpIex6CLcLCK+fQ+F1zzmnqbj6eQp98GJyE2HxluNAId4AgAxEvKCFNMP+G8LtEkJzz2UBfz79+Xj/Bdrx+IWpSaxNvBsh3gCAzKFkelgO6ZmlEXQFh10N4XYJ0XCI6mafQnVzTqOWb1elPP3Gr96j7Y+cRdsePpOiTaEU3jiLd3kWNUO8AQCZxTS2t018/2O2M7xWSBngqzxK4U+epeZP51HRL9aSv1vfhN+sXPAHavh0uaFYc/odRCVTbk74eXjrBtpy13iKRtJ0KEjUR7Us3oWlzZSVHcHPHQCQCb3uqooZwUP5z6PZprDtz7Y7fbfdq5ZtG9satrlsL3IYzx2fmzGHjOSMmNqpaItgV86fYTg++X7OwJGUf8CxcT8P9tqbig47j6qX/SWNbRZfa8+7oAfEGwCQMeItldk8ZSAOGTHWKoKdc2gnLm4jLVT+7OWm4y2ffSVFmxsTfl587DUUKNwlveMNkZh4t4R9eJsBAADC7Q7yxt1Gvqy8hJ9Xv/4QNW3+yHS8zTu/pOpX/5S48PK6U/GPrk37/Yt41+4MUkszxBsAACDcDier3xEUHHRC4s52XTlVzrtZO/7KxXdScyfe0IoOPZuy+w51hnjvgHgDAACE29G5z6K8iTM7/UrFSzdQJFSpL4hNIaqYc03iL/h8VHrina1Xp/S8IxBvAADIWFy9OC1n2AUU6Jn4GNamb9ZQzRuPWk6nbtWzVDT6PMrda1T8fAwYQYXDT6balU+lX7xbfFTD4l1UGuZ2TRRvuKKsrEzmUuTIwF5sBWz5bDVsW9jWrVq1qjqD7118QMvpSXJsoqzOFdeSX6r7bkhB2n3YZOVoIZs8h+4UWx3covKylW075+VbvKnAbVTMCO7Kl/7qt1Wo6pawMqlXdrJ9XTI9XO554fbllVLu4dd1+p2dz1xm22Eksrht9yuWcy8/vh/8ksk3UmjNXIo01jpCvKXnXbgLi3fAm+LNgiGjSRPYfsQ2ke2H8tp08n3ZDzqf7WEWkE8ckP9ivhysRK+bErxG1dioYnuf8/lZF3EM5Ius2jyZrTjOV8L8nRV8/RvH9aQNeZb6ZASbbOcpU9bfaD3D4eXHI/f0DtsbbAs4X9tsajwMUQ03Kcsiih1oISZbiRpUQ+Irtnc5zZDNz7JEPcu2bU3ybuaqdOV5Snob2D7gtJttTltEZDjbnuq+s9W7JM5Ooupd2sG2ykkNJxZDadwNU+9/gbIs1dBra+x9yGK4KcX5khPMjmIbrd71Qao8jYSVd0y2sYnTEdmXvJDzX6OlfxyZK2v2/KPup+xh5yfuJb/7NG2fda6taZaeNLN1C1giql6eSRUvXuuYMpIed2GpMfHmFygjxte5opKK6SK236gepg6yDeUqrsjWdoj7t3yZaTKuP3I8vzV5D+KE4ga2YBdflX2skzn+SJxGy9Vs16iK2ghHcTyLNEcyJrOdyDZe9abtQu5rCdsDbHM63qfB/Mk78ArbQINBRBTO5rSetel9/DVf7jTwLEkJ6Bk6zyFB2sfz5e8mnskdnPYVaRZsaWg8yHYKGTstTBp5Z3H9tS6JecpS7/dZ6h23q8PbpN5N2VM8T22DM1a3u7FyDvQ6kLKHJhZlmZcuf+H39j/AuTdSJFSR8PNu4y6mYM8fOKacZK5bet5Rj2zx5orqSL6I2N5jQbQF2bz/Psd3K1tOGm7lGoMVvYwmDO5QBt2VoN9oQrRJjU6YKet92P5MMWcY/2Q7zmbRbqufpKKUQwnWcHrjNOL4sQnRJtWzu9Om97GHCdEWZG/p3TaW3+0mn8n5DvgZn8R2Ohk/4vMQ9XtJimCzXahGgWREahLZO0otv89j2OSQi/Wc1slsPqM/DJfho7yJXC/7Eme9cuFt1FK52X4hZNEW8U6Ys0A29Tj+NkeVlhfEmytIH9tN/Odiig2J29I+ZLtSWvRqyDmlA0om89letKUMjtZIs4/Bsu7H9gT/KdMJUqkVpqhMpIHyKqd9uxr6NkqVRlp7chr72ZDn8SZEu439pIxt+E0MMNlgaevxp5tijTC2v4MsoP9HsSFtaZzumYL73otNFkkt47S77HS4Triz9zuJsvYYlfDz5h0bqXrJ/UlLv2bFI9S06cOEn+cNntRqTqIl7M9Y8VaV+GOq1Z2M4f4D2N7ldA53eDnIkPUC1QPRIc9AGseoEY3TklTWRhBPSv8wId4faqZzpE3CrcOENKW9hjyO9HjZpvOfK9RvP9UcxvYe52Fyxgi3L1hAueNv7/Q75c9d0am3M+td2K69sEmvW3rfjhPv8owU779RbGgtmcjiooUUW5TiyBEH1XgZaSGagi7SkB6BzPsWOeCWpeFwj8Hvvi/1cZrEc0wahVtnWmE5eRgWy1z1jt+SZm2UUYfZnJ+LMkK4c0ZdRf7C3RJ+Xv/xyxRauzDp+Wj4bEXrFrFEyDy3zHc7jZYmJd4ZstCcxWQqX85JUXLSI53k0KKQhWjHW4yjqyHd88jg6tkUcYkaAegUtaBtqUb8Yzn+oIV3szdf9tHtLasFhqkW7iUeFm3pab1EsbUaTkCe/wOcr9NcLdz+koGUe8ilCT+PtoRbe9spe9Bzrun0KM/uk66kQLfejhTvugwQb67YZBjrNgKyLeUGG+LpahvSUAfe+91qC1pXzNccgbAygjHGQthdrJQ3l4lsfetlMphsq/LyULmM3B3pwHw9xOI9zLXCnTf+LqJOhp+rlz5A4W2fpSw/4ga1ctEdiRsaOQVUMuUmR5alnOPtZvFWvZGHKYNOt7PAnTb9jrtyQNDdgfcuPdrJSRJuwcqQ9XiL92ZFRMZqhJm3atUqTzp9YGGU7Zo/c6r0sT3JecxxnXAHB06i4A+PTdyLrN5KVQtuTXm+qpfcR807vkj4eeHBp1DOgEMcWaYi3qGKYMwFg/sQhyJl0OxW7Nqu1tXCkBbNeGV7xzK2f7HNkh4ExVbPypzWVhvyfV5XX2BBkjy8n2LhHmvxvqxMy+g0Gjx5hCYLongUvNXh2ZQ8Tmv/H87vsXAvO+/Iuzov/BeuTYvHsmi4gcqfv4p2PT+xq9PSE++izXccQU5cFRZu4J43i3dBSdhtvW27hjI+p9gQoQzl9Cfzw4uZxPYuPjfqrrFaicAcEWwWza1dPE/Z+vJztstIbw5d5qLzDXg7k73tZoefDxavZxx3hcl3dA++WHXoMEp2CnDa9SbTltX2YzQaba94ULRlUeeDFhu/Naohukg1DreWTA/XctyywKyveuek1ylz50EL6VzOcd7Hce9whXDnDL+E/KV7J37jvlhJtSv/mbb8hdbMo/pPXqG8QfFHtuTksKKRP7PFZ3qyxDtUJa+Ba8T7WIuVogiLzI3/vaOoqHlz2Zt8LplzXuIWatVvPjfOZx93EfbLLj5/mWLzhC9yuRre1sHf3ciX33PZ/1OJx24aIw4yz7+4i+/JcLlZRx1+1XOebTLcGBueldzXYQbuqyMyH2p2WmOJ3W5eXcJkVcY6SE9MnOXcxGL6P+cc8P/JyVZish3xMRZdaczdyzZFM7181bid1vZiOhZ/QW/KHX11J13eKJU/8ztK92Rt+XNXcoc68dqe4h9f13p2t1ORrWIu4gILYVezHcCV1Ix4PUH+vzVsv1St5JUZUjl9rspsF763IlUBSEv4YiWUjWrUoSsXn/FWHMsPT4bAh3LcE9meMSPaHcpeGg4nad6jkZ702xQ77MEsE3VGAWx6djpD9Tpz43M92tu+TjO4jIIcw+J8eTzRjgd/7xu2n/KfVnxin8/5DjpeuHPH3kK+7MTbRmvfeowav3ov/b3WrRuoZukDCT8PFO5CxcdeTcAa6rAG3b3U69kmsUB01XMkdciItMRnubzI5KUczPcjh4jsVPcWZfuU7QE2EQbxOtXPwGEe4pbxjbZXnu1xtiEc7hS2D+zILMfzOunNtQ42EHeE9Bap6YjneJuen06jQWcbmBfnt0eR3sp9eY+OZxHW8ifP4WSaT9elbimptQ+OFe6sPiMoe/8zE5defTVVvHS9Y/JbueBWaqlJPE3Y7bALKLjbIIeWtmtWqMkwuc70jgyHnMiV93ajAVTP8RyyyW91GpjK93BxV8d2ymlURg7vUKdWSU9STkTqxf8+U/WS7UbncI8+Br+nI9wDzbi85e/2J/tcZB7A8e1qIm2Z3hltMo2P+Dl+4UHh1vX/MJPFd4HFtMUzm65Hv5OdK9w+P+VNmNmFUM7oVChTTaShhio6O9jEH6DSE+5wpmxHXHMw2NGa4aR3afqHonqn4ibvjy6rlK7hfM+0O1KOs4ntHbOLtcwmoxFmd4PfW6R6TMnsdY+xuTzMpC37zs0u8PNcb1s5WzlRI6iMWln2mcDCLyNWuk5HxjpWuLMPOIsCuw1P+Hl4yzqqWfZXx+W79p0nqfHLxPVO7t5HUP7QyQS0OVQjjGxjut1iuuL550mXlNEsFtZbXPyMN2iEMXQoi2pwrNCI38yQtd3CbWbOWmv/tkfrER3XvQ/onp+doBG5XiNcH2547JOUVeW+/J4U2GU/8uWaX5Al/sjzuvBHXvfebMobIlOd0dZed9M3H1I0XJ+WN8AXzKPsPfanQFFP+ReFVj9POf0O4j/j92JLT55JPu59R5ubzPfq66so/O0n1FK7w3O/tLKyMllt3F8j6AKusDdZ7GlGOX1ZaS6r2Uc4uJhk6PpiNz9nmaLgspYfh5lV/Wa+K0JldiXxONlmxXkzspd9nM1FYqbHbXZhmm5Dxu1M1Az3iF0Z4AZAlAVYTtm7USP4MFuFO2uPkZR7+PWUtecYSubhQcXHTP/ev0W061Y9R5Xzbm71aJYKsor7UPGx11BB2fGt4m2UQGFP6nmOhTVP0Sg1bFhGFXyvjRvf9tKPbX/NcC/ZJCgNXHk/5WDhljno0zmfdRnwrOtNirGZY1Blntusww3ZkysOf97ponEpB7H0tbks+sgRo12tJ+DvyCJDs96eFhpsjGQaOq5sP2Sx3WhzPhZpCvdg24bKc0ZMpcIzlrBoj6VUn/gnwln4f2fQ7tPepNy9Ric9PUlj92lvtaZpRrTtuVkf5e4zhna7dDF1H/8bL/3YdA9sWOyR8rmFK+H3CXTVAJO1Dl9pBDXiyWyMiUaW3b1uqfjMOviY59HX4ECNMEuTkA/ZEtWkEW6QLcKdvf8ZlDfu1tZFZenEn19Cu174DAV77Z20NCRuScOfX5zeV4/LumTKzVR4yGle+bH9UCPMZg+tmH3UjZnmnmIBW3F7S0HLX2d1uZFhaKPCLcPT/7E5bbPD5LJIbyF5jIoZQdmBUKLT5rM7L9yDlwacTi++j+Whcl9uSZcrwFMq3jmF1OPEO2nrfT9JSvziwlTScAo9TriDQmvnUyRUmem/OR13pOsJpEOMu1FsamM/ijl76aesB8WGncXS6ZlOepoXmgwzUoajuSFYa4NwS+9NTgAzuh6h9YhRTrsz94ZmF6a92ba332P00wy3IUn5kQac2dHE3paFO3vI6eTLcZZXsLx9xrb2jMUxiq297d77tA5TOwl/XjcqPPhUql72Zwh36n5s4PtCLf6xZcGXuHM8gk1cxzrZudNrbLK/PdfMz18J89wEZSAHQRjdTy7C3c2EcLcdMfrvBGlLg2iYyTKY69HXVXcNwuYk5edLjTAlln9cWf3HOfLpJENgZTuXI+/VofmyGZ25iW0EkinYsnBKPEHJilBxiSqLLoY6XLRJ+eVeohF0gg29bVl496ZKP2xj2manF7w6v617kFBVkvJTrRGmm+UfmL9od0c+naziPVwRpx0Einfzwg9OZ36ilkAyBLuQTQ5q+YxiB3e48VQ1u92fGhXuN2TLG5vsB37DprTN9p6+0nFIlCHontBVnaT8NGiEsWE1md+ZB4z5gjmuiNOWfAWCXvjB6bxoTQTsFm3ZDie+ycXzU66Lb0VnqHiQjDJYFO6l7f42s+PhYLVwLx5mfaPP8/Ar3E0jTGPJ9HCyzmXWWpzkJwAylwCKwFbRnqKEZ6Db70XtNvhEI+jEOOWyn4lRh9fa/W1mVbc/Xs+a05Yhz30h3EklmT22fJ1AEG6QyRShCGwTbelRPu3yXrYdAhZv25XRoWpxjtPeiYvsu9+eorTbqO/QePAaWqNwFTOCBUnKj068NRBu4BZ0znnuhmKzRbTlhCo5tSvT5mR0hHsCl0fHhWBjDIZ9XZ2y1tbrl+HXl02kHc8JjNlh8lc53XoPv84hzXDJ8rSls3anLosAcAc6c0H9UWy2IEeblloIL2L1huphyoK2b6TXoBpj8Q5tWK5ZoZlFHKHIamEz+1nlUIID1b2QEnGj2zrirWQXt5dGvSjJEaMDWHjbO+0wu3/b68Pkui6BZRtZMg6J2FUjzNcQbuAWdJxFQLit97YH8OV0zeCyj34G2/MsNtUm0kyJ/2xxaMJpyQIxs0c8TmgTbmYwxZypGOrtxvm/xRppP6jKSXyjmz372+vCrXuYhZT16iTkZ4BGmM0YKgduYYtGmH3F4xSKzhLnkd5amPvZ9mdxnGVGtNOAzraw9gvUjLoarY5X8XPZyHu9xqRw6/a213B6X6Me0cJ2P9oVM4J+1fAzy3oIN3ALOj59ZV6qDEVniWM1wjzOAnEJmxu244lwR02GGc0NwrZFemMMhlneyUlci0ykPV55qmv922S+5+J1ps81wx2UhLyIaOtMCX0A4QZyUqgb+I9mODvdyh3qpfeCBUK2qhxgMpg4lLjULffIYire9d41GUxE+zAuH6k/DzcY5tVOPjOzLUwOyDhIza2bXVHu+W1gJdPDslZGZ9ThCO4h2729dJJmuPcg3MAtrNUMd7xNInYVmZ8LdTuyP9isK81XWAx3uOw+tVaXq0aN0ZOmOnOxKovkzKz0lqH6IRRbKGcUWSPyNqoR7bpEFmeOtTkfOkc7bubGxzosTgNu4WMyfzCEIB6nhrOYvKubMIc/hWKLrLyGzkryT1x4nyLc12sI97cGv1tBncxjiwtUfsdE2I8xGJ/Mq5tdHb2gk6F6I78BacCNUb38QRRbkCfbLWXuXlbmr6PYISiL2m95cyiSz6M1wl0kDVM7MsC9dzmUZ5hG0Nbtg+hxA1egKgNd8b3JQoUlc7z/oOSfEe1EdJxDuNE/vJy1vNVkGDlMxegIzFK1Z7szzMxzjzIh8lZGFdp+A2Wq4SyOW8Q3vYxiHaGER65yhrK4wJU59P/w1w93+PN+VTPcT1lwD7RBtKUu+YNm8NkQbuA2dFu7R3FlcqZGhXUcX56nzHM8YhSd1Q+7WkmQy/wCMrev2o5GodynzurykQa/Z8RTmZltYUHq/NCRjkhPe6Hm8+il8mbUraqcdz1fbSN0Ku+ZGC1pjwjuQyy8VuuDS1XjyyyyHmMBhBu4jYUWwv6VKxNDq3Bl0RHb7/nPZzws2kK5RpjDLIj22XxJ18HyyVy4tdRA40GGmr9KUvrisa1SM6w0pHqYDCMjNRc79aUumR6WhsyTmsGHsz2iu1CNw4lPhDs0036E8x6GcANXwZWPLK75TDO4bA1bwOLwO7asTsRjNMW8fN2I34fW6tsDjDaQOpT7lVIxpbHMZe4wGXOzslDvI4PfXZSke7PSKDlOM9xPHf5uP2ohrIjvfBZhw2da83dz2KROeUzzHZf1PX9s+wcWpwG3MYv056yDqrV7GQuFDIGL9ytZbStDszIUeBTb/iji7wm3zFmb3Ws6i8t3pBFnH/y9UtXLTuuKfXESw3kRV6t2rxx+VQ3FGxXu850i3KqBO1gzTXHPWqTOHXdir3stC+kL/OdkzShkZf96jkO82D3BtprjjMYR7AGq8fMrMu/lrj33c/zfQriBW5FKXrZmWTmtpzfFVoiCzsWshSvf11WDxgxyZvV7HHYqX58S16JxREG2UZ3NdjVZ84NuJ3OTINxLzYg8W8TmUYeNXP4fa4btQ9amiqRHut7Br/j1bD+2UN7SoJ2qrIZFWu5VpiTCqjMwUNU1djSgr2//HxBu4DYx2cmV/n3855UojZTwjIZwC7JdSFbjz+TnJVMP4vlOel8lalRjBFu2w+5VFqjdlS7hlnloLqu3yF5HP1a8pVk9FrfAyS8292DfZ7GVuuTXNkQnZTU8SVm9kPP6vd0a1lt2DnW7FW0J2x9pxKHbE13i+sxGbiF9n8N2EPZQWcsZ3DsthC9VvZpfq971Lym2gM1pot22QOxzG6PcpOI0g93z3Fbmt6127AIueL9le9sGB+fvJhbt/9nxYFm4o3VbHXm3LdXbXBGnLfmq2UZeQs2bpWuoWxxl3OOhspaW/u0eer3sXF2+VCPMYhvTD2nmoY0Gi+nXOf1hsyhKXSLz3FUOzJ6sw7ku3geWhbt501uOfCCNG+3PV8Pnbzr0Xr3nyZAFZQ61W2WZImQ72o9UheglZrJ9kOI0N9ggHG4U7pUU87RmBy+LVzYL4Sstpu8K17fiQpRiC8jqHZQtqd9OibfgzRbhblr7BFHEWSOH4S3rqPGLd22PV+KUuJ2ETAnUrnyKPMplFJuDTQV/EdHmitBrok1qcZls79mZoiQ/ZJNteY1puN1lNjbMXtMoa9lj/IpN6c+1+Ny3WBDvneoAF1fAAinPSlzJbndAdmTnywmcp4Sn61kW7kjlRmp4e6aDlCxC5c9e0Xp1VdyaVL92LzXv+MKTqq0quTNI35mCEaTX9wtO6yIrvp4zoKxlcdnYFPSiXmQbxeltT9N9NtgknF9yXLrz5XbNc8+3IY7lFhpAroKFUhZRDk1j3qWhcxzn4wrlJIaSJtytNduy66jp46cdIdo7n55K9euXJC0JiVvScIJ41616lirm3kheRs58ZhOHCJez2X3+8ztsckDJg6l+kx1a1tITFr/VyZgzkvnQS9imOGDv7ws2xGHFy5+4tbTaSHyDy3GzDffxUIrDpbViZcGUMpODVM4l8/7rdZERLVndvjen/7yRAPbsF4y2UOiFM6lyzlSK1JWnpcCbNn9EW+77CdW8/vekpyVpSFqSZjqQMi5/5ne0fdbP+R+e7QR2FJU7KXbowVIbohNHBxeyiROReA95tYm4dM4RN9vi/4r0fC/rlLOkJcPYsjjQjpX98gKLx7RBHPf9HZyVfGowDrtPJHucrB2BKcPLMy2UsYiHldPoZK52mk3PW0ZAZpkM9iCHW6CZpJS72e07K2wW7wjbw/znXmy/JXt3GrRHTla7m+0HnN6v2AwvkPNVzAja2roP1RRQYI8xlN1nCAWKenLTIHlbxaPhBmqp2tK6OKvx69Wp3xbl81FO32GUM2AEBbr3Jl8wN3lpRZqppWY7NW1aSw2fLqdos33Tfz5/lPr/qS5jTr8qKyuTfbDiqUhOUOpmoqUvFcCjUnFLT76LNGSR2kkU87gm7lTb9ryGVMUpQ8syxzjLhOestrjz+XIqm5yyNEDdg+yJDSqhq1E9VHHMIMN7T8j+9jSUs2zpkiNPZcRjLJlz1vG1Esi/qWH4ePH3p5hzCxm+FEcW2R3EaZOq6O9V87F23ptUXLLaeIxUrBTz153bztqoUiMkNeqeVqrnsc2GPBxMsZO35BjNXuodC9D391eH1EiTVAgi+B+o9/czG8tC6gbxbCd+y0dR/KN1JR/irOcBTtvSiAVr0mD1/h+o7ju33e9Y0pHpDJmykQVH81jwFiXzPef8+NV9T1F1yr4WotukGub/YlvEedeqyG0X7tYxr4osCte7YQsfiL0FrA731mbcsZVc4YiQjFQV/76q8i9SAlOnWrzi7UiGgJe7aTGNA8taGhuHqsp2L1Xhth1O0aTK+gvVO16hsb8ZOOM5S8U+UAlpEX13HvdGA0eXZgSsmeIVTZyt7E0xN6Z9VcO6rWHV1qBrUkL9hbJ3Wai/saXKToZwS/uzriJI4QacYeIWBtxX60MpAACA80mOsrIEFJSEKZgbQQkDAAAAjhduiDcAAADgMuGGeAMAAAAuE+524p2VA/EGAAAAnC/cbeLdA+INAAAAuEO4qXXLM8QbAAAAcItwQ7wBAAAAlwl3e/EOZEO8AQAAAMcLd5t4F0K8AQAAAHcId6t4+yHeAAAAgGuEG+INAAAAuEy424u3PxjF0wAAAACcLtxt4l1U2kSBIHreAAAAgOOF+78979IwxBsAAABwg3BDvAEAAACXCXd78fZnQbwBAAAAxwv3d+LdzOKNBWsAAABAR+He7siMBaKq5w3xTn5LiWpQCAAA4B7hnu/YzEG8U1PO/uhbKAUAAHCPcP+Brd7x4h2AeCentx0Nc8PoahQEAAC4RLhLpofX8/U0tgani7cP4m23aDcFgtFL+t4VWonCAAAA9/S4icV7Dl+Gsj3GtsORGc2KUhHE2ybBphouz0VZwejofneHHkSBAACAe/h/AQYAHntsrga/5X8AAAAASUVORK5CYII=" preserveAspectRatio="none" pointer-events="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-1115-142-26-0)" font-size="12px"><text x="166.5" y="1127.5">Connect to a Fixed Point</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-1115-132-26-0)" font-size="12px"><text x="26.5" y="1127.5">Alt+Connect</text></g><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-311-72-26-0)" font-size="12px"><text x="746.5" y="323.5">Ctrl+Click</text></g><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-834-311-152-26-0)" font-size="12px"><text x="835.5" y="323.5">Context Menu</text></g><a xlink:href="https://www.draw.io/?url=https%3A%2F%2Fwww.draw.io%2Fshortcuts.svg"><rect x="1111.67" y="1117" width="114" height="18" fill="none" stroke="none"/><g fill="#F08705" font-family="Helvetica" text-decoration="underline" font-size="12px"><text x="1113.17" y="1129.5">Open in draw.io...</text></g></a><rect x="374" y="465" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-470-142-26-0)" font-size="12px"><text x="379.5" y="482.5">Ctrl+Shift+Mouse wheel</text></g><rect x="544" y="465" width="123" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-470-115-26-0)" font-size="12px"><text x="549.5" y="482.5">Canvas Zoom In/Out</text></g><rect x="841" y="787.5" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-793-132-26-0)" font-size="12px"><text x="846.5" y="805">Connection Points</text></g><rect x="741" y="787.5" width="90" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-792-82-26-0)" font-size="12px"><text x="746.5" y="805">Alt+Shift+P</text></g><rect x="116" y="113" width="200" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-120-118-192-26-0)" font-size="12px"><text x="121.5" y="130.5">Insert text or add an edge label</text></g><rect x="21" y="113" width="120" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-118-112-26-0)" font-size="12px"><text x="26.5" y="130.5">Double click</text></g><rect x="130.28" y="786" width="10" height="16" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-130-787-10-20-0)" font-size="10px"><text x="131.78" y="797.5">2</text></g><rect x="1112" y="1083" width="255" height="29" rx="4.35" ry="4.35" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-size="12px"><text x="1113.5" y="1094">Ctrl+Resize for non-recursive group resize</text><text x="1113.5" y="1108">Ctrl+Meta+Resize for centered group resize</text></g><rect x="1105.33" y="1075" width="20" height="10" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-size="10px"><text x="1106.83" y="1086.5">2</text></g><rect x="91" y="146" width="10" height="16" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-91-147-10-20-0)" font-size="10px"><text x="92.5" y="157.5">1</text></g><rect x="1112" y="1044" width="255" height="29" rx="4.35" ry="4.35" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-size="12px"><text x="1113.5" y="1055">Ctrl / Shift+Enter: New Line / Apply in Safari</text><text x="1113.5" y="1069">Ctrl / Shift+Esc: Cancel Editing</text></g><rect x="1105.33" y="1036" width="20" height="10" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-size="10px"><text x="1106.83" y="1047.5">1</text></g><rect x="21" y="433" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-438-132-26-0)" font-size="12px"><text x="26.5" y="450.5">Ctrl+X</text></g><rect x="21" y="465" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-470-132-26-0)" font-size="12px"><text x="26.5" y="482.5">Ctrl+C</text></g><rect x="21" y="497" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-502-132-26-0)" font-size="12px"><text x="26.5" y="514.5">Ctrl+V</text></g><rect x="21" y="529.5" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-535-132-26-0)" font-size="12px"><text x="26.5" y="547">Ctrl+G</text></g><rect x="21" y="562" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-567-132-26-0)" font-size="12px"><text x="26.5" y="579.5">Ctrl+Shift+U</text></g><rect x="21" y="594" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-599-132-26-0)" font-size="12px"><text x="26.5" y="611.5">Ctrl+L / Alt+Shift+L</text></g><rect x="21" y="626" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-631-132-26-0)" font-size="12px"><text x="26.5" y="643.5">Ctrl+Enter / D</text></g><rect x="21" y="658.5" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-664-132-26-0)" font-size="12px"><text x="26.5" y="676">Backspace or Delete</text></g><rect x="21" y="691" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-696-132-26-0)" font-size="12px"><text x="26.5" y="708.5">Ctrl+Delete</text></g><rect x="21" y="723" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-728-132-26-0)" font-size="12px"><text x="26.5" y="740.5">Ctrl+R</text></g><rect x="21" y="755" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-760-132-26-0)" font-size="12px"><text x="26.5" y="772.5">Shift+Resize</text></g><rect x="21" y="787.5" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-793-132-26-0)" font-size="12px"><text x="26.5" y="805">Ctrl / Meta+Resize</text></g><rect x="21" y="820" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-825-132-26-0)" font-size="12px"><text x="26.5" y="837.5">Ctrl+Home</text></g><rect x="21" y="852" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-857-132-26-0)" font-size="12px"><text x="26.5" y="869.5">Ctrl+End</text></g><rect x="21" y="884" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-889-132-26-0)" font-size="12px"><text x="26.5" y="901.5">Ctrl+Shift+Home</text></g><rect x="21" y="916.5" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-922-132-26-0)" font-size="12px"><text x="26.5" y="934">Ctrl+Shift+End</text></g><rect x="21" y="949" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-954-132-26-0)" font-size="12px"><text x="26.5" y="966.5">Ctrl+Shift+B</text></g><rect x="21" y="981" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-986-132-26-0)" font-size="12px"><text x="26.5" y="998.5">Ctrl+Shift+F</text></g><rect x="21" y="1013.5" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-1019-132-26-0)" font-size="12px"><text x="26.5" y="1031">Alt+Shift+C/T</text></g><rect x="21" y="1046" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-1051-132-26-0)" font-size="12px"><text x="26.5" y="1063.5">Ctrl+Shift+Y</text></g><rect x="21" y="1078" width="140" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-1083-132-26-0)" font-size="12px"><text x="26.5" y="1095.5">Ctrl / Shift+Drag</text></g><rect x="161" y="433" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-438-142-26-0)" font-size="12px"><text x="166.5" y="450.5">Cut</text></g><rect x="161" y="465" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-470-142-26-0)" font-size="12px"><text x="166.5" y="482.5">Copy</text></g><rect x="161" y="497" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-502-142-26-0)" font-size="12px"><text x="166.5" y="514.5">Paste</text></g><rect x="161" y="529.5" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-535-142-26-0)" font-size="12px"><text x="166.5" y="547">Group</text></g><rect x="161" y="562" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-567-142-26-0)" font-size="12px"><text x="166.5" y="579.5">Ungroup</text></g><rect x="161" y="594" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-599-142-26-0)" font-size="12px"><text x="166.5" y="611.5">Lock/Unlock / Edit Link</text></g><rect x="161" y="626" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-631-142-26-0)" font-size="12px"><text x="166.5" y="643.5">Duplicate</text></g><rect x="161" y="658.5" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-664-142-26-0)" font-size="12px"><text x="166.5" y="676">Delete Selected Cells</text></g><rect x="161" y="691" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-696-142-26-0)" font-size="12px"><text x="166.5" y="708.5">Delete with Connections</text></g><rect x="161" y="723" width="159" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-728-151-26-0)" font-size="12px"><text x="166.5" y="740.5">Turn / Rotate 90° Clockwise</text></g><rect x="161" y="755" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-760-142-26-0)" font-size="12px"><text x="166.5" y="772.5">Maintain Proportions</text></g><rect x="161" y="949" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-954-142-26-0)" font-size="12px"><text x="166.5" y="966.5">Send to Back</text></g><rect x="161" y="820" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-825-142-26-0)" font-size="12px"><text x="166.5" y="837.5">Collapse Container</text></g><rect x="161" y="852" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-857-142-26-0)" font-size="12px"><text x="166.5" y="869.5">Expand Container</text></g><rect x="161" y="884" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-889-142-26-0)" font-size="12px"><text x="166.5" y="901.5">Exit Group</text></g><rect x="161" y="916.5" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-922-142-26-0)" font-size="12px"><text x="166.5" y="934">Enter Group</text></g><rect x="161" y="981" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-986-142-26-0)" font-size="12px"><text x="166.5" y="998.5">Bring to Front</text></g><rect x="161" y="787.5" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-793-142-26-0)" font-size="12px"><text x="166.5" y="805">Centered / Group Resize</text></g><rect x="161" y="1014" width="176" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-1019-168-26-0)" font-size="12px"><text x="166.5" y="1031.5">Clear Waypoints / Edit Tooltip</text></g><rect x="161" y="1046" width="150" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-1051-142-26-0)" font-size="12px"><text x="166.5" y="1063.5">Autosize</text></g><rect x="161" y="1078" width="156" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-1083-148-26-0)" font-size="12px"><text x="166.5" y="1095.5">Clone cell/Disconnect edge</text></g><rect x="481" y="10.5" width="241" height="26" fill="none" stroke="none"/><g fill="#777777" font-family="Helvetica" clip-path="url(#mx-clip-485-16-233-26-0)" font-size="18px"><text x="486.5" y="34">cmd instead of ctrl for Mac</text></g><rect x="1087" y="818" width="340" height="30" fill="#ffffff" stroke="none"/><rect x="1087" y="850" width="340" height="31" fill="#ffffff" stroke="none"/><rect x="1101" y="820" width="100" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-825-92-26-0)" font-size="12px"><text x="1106.5" y="837.5">Alt+Shift+X</text></g><rect x="1101" y="852.5" width="100" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-858-92-26-0)" font-size="12px"><text x="1106.5" y="870">Alt+Shift+V</text></g><rect x="1211" y="820" width="120" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-825-112-26-0)" font-size="12px"><text x="1216.5" y="837.5">Copy Size</text></g><rect x="1211" y="852.5" width="120" height="26" fill="none" stroke="none"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-858-112-26-0)" font-size="12px"><text x="1216.5" y="870">Paste Size</text></g></svg>
\ No newline at end of file diff --git a/src/main/webapp/stencils/sitemap.xml b/src/main/webapp/stencils/sitemap.xml index 082da67c..30c2450d 100644 --- a/src/main/webapp/stencils/sitemap.xml +++ b/src/main/webapp/stencils/sitemap.xml @@ -10,8 +10,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -107,8 +108,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -182,8 +184,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -319,8 +322,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -397,8 +401,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -546,8 +551,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -607,8 +613,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -668,8 +675,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -721,8 +729,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -855,8 +864,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -913,8 +923,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -989,8 +1000,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -1053,8 +1065,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -1119,8 +1132,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -1209,8 +1223,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -1326,8 +1341,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -1416,8 +1432,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -1519,8 +1536,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -1587,8 +1605,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -1668,8 +1687,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -1747,8 +1767,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -1851,8 +1872,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -1956,8 +1978,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -2042,8 +2065,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -2161,8 +2185,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -2249,8 +2274,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -2296,8 +2322,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -2388,8 +2415,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -2457,8 +2485,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -2552,8 +2581,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -2630,8 +2660,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -2703,8 +2734,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -2795,8 +2827,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -2869,8 +2902,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -2935,8 +2969,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -3027,8 +3062,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -3095,8 +3131,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -3162,8 +3199,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -3233,8 +3271,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -3358,8 +3397,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -3460,8 +3500,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -3538,8 +3579,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -3627,8 +3669,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -3689,8 +3732,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -3776,8 +3820,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -3841,8 +3886,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -3922,8 +3968,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -3986,8 +4033,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -4052,8 +4100,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> @@ -4112,8 +4161,9 @@ <constraint name="S1" perimeter="0" x="0.25" y="1"/> <constraint name="S" perimeter="0" x="0.5" y="1"/> <constraint name="S2" perimeter="0" x="0.75" y="1"/> - <constraint name="W1" perimeter="0" x="0.25" y="1"/> - <constraint name="W" perimeter="0" x="0.5" y="1"/> + <constraint name="W1" perimeter="0" x="0" y="0.25"/> + <constraint name="W" perimeter="0" x="0" y="0.5"/> + <constraint name="W1" perimeter="0" x="0" y="0.75"/> <constraint name="NW" perimeter="0" x="0.005" y="0.005"/> <constraint name="NE" perimeter="0" x="0.995" y="0.005"/> <constraint name="SE" perimeter="0" x="0.995" y="0.995"/> diff --git a/src/main/webapp/templates/index.xml b/src/main/webapp/templates/index.xml index 8ab017c6..92e0f689 100644 --- a/src/main/webapp/templates/index.xml +++ b/src/main/webapp/templates/index.xml @@ -110,6 +110,7 @@ <template url="network/ibm_microservices.xml" libs="general;ibm"/> <template url="network/ibm_private_cloud.xml" libs="general;ibm"/> <template url="network/ibm_vcenter_server_platform.xml" libs="general;ibm"/> +<template url="network/ibm_vpc_architecture.xml" libs="general;ibm"/> <template url="network/internet.xml" libs="general;network"/> <template url="network/lan.xml" libs="general;network"/> <template url="network/telecomm.xml" libs="general;network"/> diff --git a/src/main/webapp/templates/network/ibm_vpc_architecture.png b/src/main/webapp/templates/network/ibm_vpc_architecture.png Binary files differnew file mode 100644 index 00000000..69d24b8d --- /dev/null +++ b/src/main/webapp/templates/network/ibm_vpc_architecture.png diff --git a/src/main/webapp/templates/network/ibm_vpc_architecture.xml b/src/main/webapp/templates/network/ibm_vpc_architecture.xml new file mode 100644 index 00000000..cc148cdb --- /dev/null +++ b/src/main/webapp/templates/network/ibm_vpc_architecture.xml @@ -0,0 +1 @@ +<mxfile modified="2019-01-31T13:10:12.511Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36" etag="TCEG_UZA3fjlfBtYo_nN" version="@DRAWIO-VERSION@" type="device"><diagram id="sqcldhInP1BjZdl1YZuS" name="Page-1">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</diagram></mxfile>
\ No newline at end of file |